Nigeria Telemedicine App is a lightweight, easy to use telemedicine mobile app developed to make health services more accessible to the Nigerian population. Users can register themselves on the OpenMRS server providing basic details like their name, phone number. All this can be done within a minute as there is no wasting time in login and verification etc. After successful registration, the user will receive a call from a doctor as early as possible.
The project involved me developing an Android application as well as a reverse proxy for the app. Both of these tasks were successfully completed.
1. To develop an android app from scratch that allows the user to register himself/herself on the OpenMRS server.
- Devising suitable architecture for the app that makes it easy to maintain the app in the long run and is also easier for other contributors to understand and contribute. (COMPLETED)
- Using the latest jetpack components with Kotlin. The app uses ViewModel, LiveData, View and Data binding. (COMPLETED)
- Implementing the dashboard, register patient and help functionalities into the app. (COMPLETED)
- Creating a new user role on the OpenMRS that had the minimum possible privileges required to register a patient on the server. All patient registrations via the app are made by this user. (COMPLETED)
- Adding Firebase Crash analytics for monitoring app crashes. (COMPLETED)
- Adding suitable Unit tests to the app. (PENDING)
2. Implementing a proxy server that serves as a mediator between our app and the OpenMRS server to improve the security of our servers.
- Learning about python, Flask, Gunicorn, and Docker. (COMPLETED)
- Developed the Flask app and served it using Gunicorn. (COMPLETED)
- Created the docker image for the app. (COMPLETED)
- Adding the docker container to the main infrastructure’s docker-compose. (COMPLETED)
- Deploying the app on AWS (COMPLETED).
Sample Use Cases
A user enters his/her name, gender, DOB, and phone number in a simple form. If the information is correct, the user taps the "Request Consult" button and the information entered is sent to the OpenMRS API. In the background, the app checks if the information was successfully received by the API. If the information was not successfully received (due to network errors, etc.) the app displays an appropriate and helpful error message. If the information was successfully received, the app displays a success message. The app also includes a help section which explains how to use the app and how the telemedicine process works.
- Build a "Frontend-only" version of the application
- Data-entry page
- Verification page
- Successful transaction page
- Unsuccessful transaction page
- Integrate the application with the OpenMRS API backend
- Set-Up a reverse proxy for the app.
- Publish app on an appropriate platform
- Android development experience using Kotlin.
- Experience interacting with APIs programmatically (REST)
- REST Web Services API For Clients
- Project Repo
- Proxy Repo
- Playstore Link
Android Development Tips
(thanks to suggestions from Fawwaz Yusran)
- Use the new Android Jetpack architecture
- Write in Kotlin
- Don't reinvent the wheel (use 3rd party libraries when possible)