How did my keyboard save lives during the COVID-19 Pandemic?

Code to Save lives from COVID-19!

Jayasanka Weerasinghe
3 min readAug 10, 2020

This is the 10th week of my Google Summer of Code project; “Improving OpenMRS DHIS2 integration”. One of the big turning points in the project was joining the OpenMRS’ Analytics Engine Squad. The main purpose of the squad is to shorten the time and improve the quality of using OpenMRS data in indicator reporting, reduce unplanned technical team members over time, and make it easy to drill down to patient-level data to confirm the numbers are correct. DHIS2 integration plays a major role in the outcome of this squad. To address the work I’ve done so far, Grace Potma, the Director of Product at OpenMRS organized a call along with my mentor Akshika Wijesundara from Open University, UK and with key members of the team; Daniel Kayiwa from Makerere University, UG and Ian Bacher from Brown University, USA.

The summary of the call is as follows,

  • The past: Implementations who want to send data to DHIS2 didn’t have a great solution, so some have been using the OMRS Reporting module to adapt reports based on DHIS2 report templates, and then send those reports through to DHIS2.
  • The present: This DHIS2 Reporting Module upgrade work gives Implementers one place to connect DHIS2 and OpenMRS with a UI for mapping any indicators, and posts data to DHIS2 in ADX. It also includes fixes to match the latest updates to the DHIS2 API. Because of these mappings and additional metadata storage, the data can later be dis-aggregated as needed — and the approach is very flexible (applies to HIV, COVID, etc).
  • In the future: The module could automate data posting to DHIS2 so manual pushes would not be required.

Here’s the overview of the improvement work done so far:

OpenMRS is actively working on the COVID-19 pandemic and the DHIS2 integration is an essential part of it. So, the focus topic for the COVID Squad call for this week was the DHIS2 integration. The call was with some major implementations of OpenMRS and had a discussion about their work done so far regarding the DHIS2 integration. You can access the meeting notes here: https://notes.openmrs.org/covidsquad2020

Meanwhile, I have completed end to end the flow of the module with posting data to DHIS2. I’ve figured that there’s a way to send data using DHIS2’s Category Option Combinations. The Category Option Combinations are automatically generated within DHIS2 and it contains the possible Category and Category Option combinations. By using it we can replace the Category and Category option mappings from the module with Category Option Combos. Therefore, I changed the DB structure as well as the ADX payload according to that. It makes the module much cleaner.

The next thing is, the metadata of DHIS2 has two special attributes named UID and CODE. UIDs are auto-generated within DHIS2. And The CODE value can be entered manually and not a compulsory attribute. The current module uses the CODE values of metadata when generating the payload. Since the CODE values can be changed after importing the dataset into the module; it might lead to unexpected behaviors. Therefore I decided to use UIDs instead of CODE attributes. With that change, the users no longer need to be worried about CODE values.

Next week I’m planning to make the module compatible with all DHIS2 Period Types and starting to write test cases for the code. Also, I’m planning to have a call with James Kariuki, one of the co-authors of the ADX standards. It would be a great opportunity to clarify the technical next steps of the module.

I feel so proud by thinking that my code is ready to save lives in this COVID-19 pandemic as well as in the possible upcoming pandemics. Thanks, Google and OpenMRS for this wonderful opportunity!

Let’s get connected

Follow/connect with me anytime.

Github: https://github.com/jayasanka-sack
Linkedin: https://www.linkedin.com/in/jayasanka-sack
Facebook: https://www.facebook.com/jayasanka.sack

--

--

Jayasanka Weerasinghe

A professional key presser who turns characters into interesting web things 🙂