GSoC 2021 : OpenMRS Android Client Project 3.0.x
Primary mentor | @Rishabh Agarwal |
Backup mentor | @Juliet Wamalwa |
Assigned to | @Saurabh Kumar |
Abstract
The goal of the Android client is to provide an alternative to access a hospital's OpenMRS instance by just using the provider's Android devices. See the full Android client guide for more info.
Considering the services offered by a hospital, an Android application can help doctors, patients, and other staff a lot with its mobility and ease of use, without them having to start the OpenMRS web app on a desktop computer. This will improve the productivity and efficiency of the hospital workflow.
This year, we will work on making the Android client more extendable and implementing the offline first architecture in the app, the Android app must be extendable and easy for the implementers to deploy and implement by encapsulating common functionalities of the app using Jitpack library, so that the android client is properly utilized and really solves some heathcare problems.
The offline-first solution needs to be developed and extended further, where a provider cannot connect to the internet and needs to work offline temporarily. Data should be synced again when back online.
Moreover, the Android app should integrate more of the features of the refapp so that doctors and staff can expect to see the same functionalities in the web app implemented in the client (To be discussed further). An additional request is to migrate the Java source code to Android's now recommended Kotlin, to increase readability and reduce a thousand lines of code present in the GitHub repository.
Project Champions
@Fawwaz Yusran
@Rishabh Agarwal
Objectives
Making the app easily extendable, i.e. Abstracting out common functionalities which almost all implementers would require into a jitpack library, for detailed information this Talk post might be useful which presents the problem which we want to solve by making the app more easily extendable for the implementers.
Creating a small module ( lets say hello world module ), Using the encapsulated library depicting clearly how to use that jitapack library from scratch, for e.g. the module could be anything like fetching the list of patients or providers.
Implementing a robust offline structure for the various functionalities of the app (which covers currently only the provider module).
Make the app more stable and reduce crashes checking backward compatibility issues testing on lower API devices.
Integrate more components of the web app to the client (to be discussed further).
Extra Credits
Additional : Continue Migrating the remaining 80% codebase to kotlin.
Additional : Start converting MVP pattern to MVVM as it follows the new standard guideline brought by Google.
Additional : Re-design Home screen with a better UI.
Examples
A doctor does not have access to a PC, but his Android phone is available to use during office hours.
No internet connectivity and a doctor needs to work offline temporarily.
Skills Needed
Android
Java
Kotlin
Jitpack libraries
MVVM Architecture
Documentation
The features added or modified must be documented in the hosted at OpenMRS client user guide with the github repository here.
Getting Started with openmrs-android-sdk - documentation created for openmrs-android-sdk introduction.
Detailed Project Report
Weekly Reports
Week 0 - https://lug0.medium.com/week-0-gsoc-with-openmrs-4d94ccd6c648
Week 1 - https://lug0.medium.com/week-1-gsoc-with-openmrs-ad16f5b02f4a
Week 2 - https://lug0.medium.com/week-2-gsoc-with-openmrs-93199d874801
Week 3 - https://lug0.medium.com/week-3-gsoc-with-openmrs-2c884a097376
Week 4 - https://lug0.medium.com/week-4-gsoc-with-openmrs-99ed4b143899
Week 5 - https://lug0.medium.com/week-5-gsoc-with-openmrs-72e60142ed7d
Week 6 - https://lug0.medium.com/week-6-gsoc-with-openmrs-32cb581a0f2b
Week 7 - https://lug0.medium.com/week-7-gsoc-with-openmrs-51d0b58a0e00
Week 8 - https://lug0.medium.com/week-8-gsoc-with-openmrs-4f71f01e05f1
Week 9 - https://lug0.medium.com/week-9-gsoc-with-openmrs-aa2adedc0fc6
Week 10 - https://lug0.medium.com/week-10-gsoc-with-openmrs-6473f5f29f8
Outstanding work
Integrating more modules into the client.
UI overhaul (Need some work on the already opened PR here)
Final Presentation
Resources
https://github.com/openmrs/openmrs-contrib-android-client/releases/tag/v3.0.0 - Release page for the 3.0.0 version.
OpenMRS Android Client Project 2.9.x - Previous year's GSoC page for this project
https://github.com/openmrs/openmrs-contrib-android-client - main repo
https://openmrs.github.io/openmrs-android-client-user-guide/introduction.html - User guide
https://talk.openmrs.org/t/gsoc-2018-openmrs-android-client-3-x-project/18035?source_topic_id=19471