GSoC 2022 : OpenMRS Android Client Project 3.0.x



Primary mentor

@Rohit Sharma

Primary mentor

@Rohit Sharma

Backup mentor



Assigned to

@Amr Salah



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.

The potential goals for this year could be (but are not limited to) :

  1. An upgrade to the Architecture Model of the app. As Android apps grow in size, it's important to define an architecture that allows the app to scale, increases the app's robustness, and makes the app easier to test. The present architecture model of the app is MVP.  However, Android now recommends using MVVM (Model View ViewModel) model as It can be integrated with the latest Architecture components. This indeed will reduce so much of the boilerplate code and will help newcomers to understand and contribute more to the Android client.

  2. Dependency Injections: Classes in the app depend on other classes in order to function properly. Android now recommends following dependency injection patterns and using the Hilt library in Android apps. This will help to automatically inject required classes' objects in the constructors. This indeed will again reduce the boilerplate code and makes the code more understandable and manageable.

  3. Testing: The status quo or the present test coverage status of the app is very low. There is a stack of classes that have had never been tested. Testing is an integral part of the app development process. More tests should be added to increase the test coverage of the project.

  4. Replace the remaining Java code with Kotlin. Both Java and Kotlin can be used to build performant, useful applications, but Google's libraries, tooling, documentation, and learning resources continue to embrace a Kotlin-first approach; making it the better language for Android today.

Objectives :

  1. Migrate the architecture of the app from MVP to MVVM.

  2. Integrate dependency injection using Hilt.

  3. Migrate the remaining codebase from Java to Kotlin.

  4. Increase test coverage in the project.

  5. Make the app more stable, and reduce bugs and crashes.

Project Rating and length

Medium

350 hours

Skills Needed :

  1. Android 

  2. Java

  3. Kotlin

  4. MVVM Architecture

  5. JUnit Testing

  6. Architecture Components

  7. Android Jetpack Libraries

Completed Objectives:

  1. Migrate the architecture of the app from MVP to MVVM.

  2. Integrate dependency injection using Hilt.

  3. Migrate codebase from Java to Kotlin. (Completed 60% of the codebase)

  4. Make the app more stable, and reduce bugs and crashes.

Remaining Objectives:

  1. Migrate codebase from Java to Kotlin. (The remaining 40% of the codebase)

  2. Increase test coverage in the project.

Project Final Report: https://github.com/amrsalah3/GSoC22-OpenMRS/edit/main/README.md

Project Final Presentation Video: https://drive.google.com/file/d/1JEWYtm7teTkSrFvExKU68obWo2rqqJ0q

Contributions & Work Done

Week 1

Issue Number

Issue Link

Status

Week 2-3-4

Issue Number

PR Link

Status

Week 5

Issue Number

PR Link

Status

Week 6-7-8

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1033

openmrs/openmrs-contrib-android-client#952

Merged

Week 9

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1034

openmrs/openmrs-contrib-android-client#955

Merged

Week 10-11

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1035

openmrs/openmrs-contrib-android-client#956

Merged

Week 12

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1036

openmrs/openmrs-contrib-android-client#957

Merged

Week 13

Issue Number

PR Link

Status

Week 14

Week 15

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1043

openmrs/openmrs-contrib-android-client#964

Merged

Week 16

Issue Number

PR Link

Status

Week 17

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1047

openmrs/openmrs-contrib-android-client#968

Merged

Week 18

Issue Number

PR Link

Status

Week 19

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1050

openmrs/openmrs-contrib-android-client#971

Merged

Week 20

Issue Number

PR Link

Status

Issue Number

PR Link

Status

AC-1046

openmrs/openmrs-contrib-android-client#973

Merged

Week 21

Issue Number

PR Link

Status

Week 22



Weekly Blogs (Updates)

Week

Article Link

Week

Article Link

Week 0

https://medium.com/@amrsalah3/week-0-gsoc-with-openmrs-2022-9ddb49ec4934

Week 1

https://medium.com/@amrsalah3/week-1-gsoc-with-openmrs-2022-4b8fee5ce258

Week 2

https://medium.com/@amrsalah3/week-2-gsoc-with-openmrs-2022-6619596c6499

Week 3

https://medium.com/@amrsalah3/week-3-gsoc-with-openmrs-2022-87b6f8267c2c

Week 4

https://medium.com/@amrsalah3/week-4-gsoc-with-openmrs-2022-3b88c2f0feaf

Week 5

https://medium.com/@amrsalah3/week-5-gsoc-with-openmrs-2022-903ff6160150

Week 6

https://medium.com/@amrsalah3/week-6-gsoc-with-openmrs-2022-c56f303d86cb

Week 7

https://medium.com/@amrsalah3/week-7-gsoc-with-openmrs-2022-de1997f195db

Week 8

https://medium.com/@amrsalah3/week-8-gsoc-with-openmrs-2022-c9a7745dd5a7

Week 9

https://medium.com/@amrsalah3/week-9-gsoc-with-openmrs-2022-bbbe1ba3a6fb

Week 10

https://medium.com/@amrsalah3/week-10-gsoc-with-openmrs-2022-19827e8adff5

Week 11

https://medium.com/@amrsalah3/week-11-gsoc-with-openmrs-2022-2f92c2ff31ed

Week 12

https://medium.com/@amrsalah3/week-12-gsoc-with-openmrs-2022-b28f87002561

Week 13

https://medium.com/@amrsalah3/week-13-gsoc-with-openmrs-2022-a15bd01424f1

Week 14

https://medium.com/@amrsalah3/week-14-gsoc-with-openmrs-2022-577e9531dc07

Week 15

https://medium.com/@amrsalah3/week-15-gsoc-with-openmrs-2022-111e2229938c

Week 16

https://medium.com/@amrsalah3/week-16-gsoc-with-openmrs-2022-535d3b5034f7

Week 17

https://medium.com/@amrsalah3/week-17-gsoc-with-openmrs-2022-212cb413dc9a

Week 18

https://medium.com/@amrsalah3/week-18-gsoc-with-openmrs-2022-d6ee21efe651

Week 19

https://medium.com/@amrsalah3/week-19-gsoc-with-openmrs-2022-737b7d5e5116

Week 20

https://medium.com/@amrsalah3/week-20-gsoc-with-openmrs-2022-898501aeed28

Week 21

https://medium.com/@amrsalah3/week-21-gsoc-with-openmrs-2022-b19b6aae04b9

Week 22

https://medium.com/@amrsalah3/week-22-gsoc-with-openmrs-2022-b6761d3e4432



Resources :