Derick
We have managed to push the forms, the app loads but the CIF form is not loading. I’m also seeing a lot of browser errors when loading the app using the IP, it takes many attempts to load
Finally, we have seen that some fields are not being pushed to the back-end i.e. ID and gender, want to review the form and see if we can identify the problem
Hey @oyierphil, looking at the screenshot shared by @antony, there is a logic error on the calculation if(true, format-date-time(now), '%Y%m%d%H%M%S'). Did you mean format-date-time(now(), '%Y%m%d%H%M%S')? Try that.
In addition to that, another concern raised is that contacts you create do not have the name showing neither does the age show. CHT defaults to the name field for display. Ensure you have that field in your contact form. The same applies to age that is calculated based on the default date_of_birth field. Ensure you include it in your form, and age will display as expected.
Kitsao
Our CIF form doesn’t pick the ID number, age and sex, and not sure why, we added the age and date fields to the form, thus the registered cases cant be seen, although you see placeholders for the same
Thus after registering a patient, we see placeholders with no data, and if you select any of the cases, we cant fill the CIF form doesn’t load
Update
We managed to have a technical working session on 08/10/2021; during the session the VisorTech Solutions team supported the JKUAT team to fix most of the tech support issues that the JKUAT team had logged on the CHT forum. Thanks VisorTech solutions team (@vchelule and @KiharaSimon) for supporting the JKUAT team to fix the issues. @oyierphil I hope your team should be able to train the users this week.
Dear Anthony
Yes, we actually trained on Friday and yesterday and have received feedback on the tool. Making the final corrections on the forms today, then moving to final testing and configuration of the mobile phones. We appreciate the support
Providing the URL of the server, the domain name at the custom menu option on the CHT Android App brings the error ‘Unable to contact Server’, trying to figure it out so that we load the app on the tablets today in readiness for the pilot study, will appreciate any suggestions
This is from my handset where I downloaded the Medic app from app store, then selected the custom option and provided the URL. Let me run from Android Studio on my machine and use an emulator to see the difference
Running adb logcat | grep -i MedicMobile when the phone is connected to a computer (with usb debugging enabled)
10-12 13:44:33.623 27370 32596 D MedicMobile: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:362)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.convertException(ConscryptEngine.java:1134)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1089)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:876)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:747)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:712)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:849)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.access$100(ConscryptEngineSocket.java:722)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:238)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:217)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:106)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:30)
10-12 13:44:33.623 27370 32596 D MedicMobile: at org.medicmobile.webapp.mobile.SimpleJsonClient2.get(SimpleJsonClient2.java:50)
10-12 13:44:33.623 27370 32596 D MedicMobile: at org.medicmobile.webapp.mobile.SimpleJsonClient2.get(SimpleJsonClient2.java:38)
10-12 13:44:33.623 27370 32596 D MedicMobile: at org.medicmobile.webapp.mobile.AppUrlVerifier.verify(AppUrlVerifier.java:23)
10-12 13:44:33.623 27370 32596 D MedicMobile: at org.medicmobile.webapp.mobile.SettingsDialogActivity$AppUrlVerificationTask.doInBackground(SettingsDialogActivity.java:44)
10-12 13:44:33.623 27370 32596 D MedicMobile: at org.medicmobile.webapp.mobile.SettingsDialogActivity$AppUrlVerificationTask.doInBackground(SettingsDialogActivity.java:37)
10-12 13:44:33.623 27370 32596 D MedicMobile: at android.os.AsyncTask$3.call(AsyncTask.java:394)
10-12 13:44:33.623 27370 32596 D MedicMobile: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
10-12 13:44:33.623 27370 32596 D MedicMobile: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
10-12 13:44:33.623 27370 32596 D MedicMobile: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
10-12 13:44:33.623 27370 32596 D MedicMobile: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
10-12 13:44:33.623 27370 32596 D MedicMobile: at java.lang.Thread.run(Thread.java:923)
10-12 13:44:33.623 27370 32596 D MedicMobile: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:661)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:510)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:428)
10-12 13:44:33.623 27370 32596 D MedicMobile: at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:356)
10-12 13:44:33.623 27370 32596 D MedicMobile: at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
10-12 13:44:33.623 27370 32596 D MedicMobile: at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:90)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngineSocket$2.checkServerTrusted(ConscryptEngineSocket.java:161)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:250)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.verifyCertificateChain(ConscryptEngine.java:1644)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(Native Method)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:568)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:1095)
10-12 13:44:33.624 27370 32596 D MedicMobile: at com.android.org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1079)
10-12 13:44:33.624 27370 32596 D MedicMobile: ... 31 more
I have run a test of the SSL chain and I realise that although your SSL cert is valid, you have chained the SSL certificate in the wrong way. SSL labs reports that here.
Derick
The issue was SSH configuration, medic-os uses the default ssh certificates, and we finally replaced with our own, we now can access the app on the phone