GSoC’17 — Final Blog Post

GSoC’17 — Data Integrity Module

Hello Everyone,

This post is the summery of what I did during GSoC 2017 and how you can use it along with other useful resources.

Primary Mentor: Stephen S. Musoke (@ssmusoke)
Backup Mentor: Mayank Sharma (@maany)

OpenMRS receives data from various sources which have a different implementation. It is not always possible to check the validity of the data immediately, thus the Data Integrity Module is very helpful to check the validation of the data and alert the administration if something wrong. It helps to maintain data quality.

Summary

  • Improved filtering and display of results page.

Added multiple filters, upgraded the datatables versions. Arranged various components in intuitive way.

Result Page
  • Added feature which exports filtered list of results into CSV, Excel or PDF.
Export Buttons
Exported List

Added this feature using the datatables library. Adding icons in OpenMRS was a tough task.

  • Create and Expose Module’s APIs

Most of the APIs are written but some APIs are left along with their unit tests. Learned about Test Driven Development here. Used OpenMRS Web-Services module.

  • Externalize all Labels, messages, and errors into the module

There was lots of hard-coded string in the module. Moved them to a particular file which can also be used for localization.

  • Others

Updated ReadMe of the project and few wiki pages. Added an example module which is already integrated to Data Integrity Module.
Minor fixed in patient dashboard — took me a lot of time to understood the working of widgets within OpenMRS.

What’s left

  • DINT-82: Create and Expose Data Integrity Module APIs
  • DINT-70 — Add the ability to run SQL based rules

There are the two major work left I couldn’t complete during GSoC period. Anyways, I’ll keep contributing in OpenMRS with the focus of completing these tasks first.

Contributions

Pull Requests

  • DINT-73: Improve filtering of results of results from running the rules
  • DINT-79: Update README
  • DINT-77: Add dashboard widget definition
  • DINT-76: Add capability to export rule violations to CSV and/or Excel
  • DINT-80: Externalize all Labels, messages, and errors into the module
  • DINT-82: create and expose API of the Data Integrity module — Work in progress
  • UICM-76: Need to update version of Datatables.
  • DINT-77: Dashboard Widget — Should show the note for the result by default
  • AC-408: Write Introduction (Android Client User Guide)
  • Android Client User Guide Readme updated.

Issue I’ve opened

  • DINT-82: create and expose API of the Data Integrity module.
  • RA-1382: Patient Dashboard — buttons shift below if text beside it is very long
  • DINT-79:Update Data Integrity Github README
  • DINT-78: Update Data Integrity Wiki Page to reflect latest updates
  • UICM-76: Need to update version of Datatables

Video

After last midterm evaluation there wasn’t much visual addition so I’ve used the same video.

Experience

I have learned lots of things that I couldn’t even count. From Webpack to sass, Hibernate to Test driven development, etc. I found mentors and OpenMRS Community is very helpful whenever I got stuck somewhere or whenever I need any feedback.

Before GSoC, I haven’t contributed to any OpenMRS module and it took me a lot of time to understand the architecture and working of OpenMRS. During the community bonding, I was struggling to set-up data integrity module on my machine. Mentors and especially, @ssmusoke was very patient and encouraging. He helped me in every way possible in each and every time I asked for help or guidance. Overall it was a great fun and learning experience.

There is a lot of work needs to be done and I really love contributing to OpenMRS so I will keep contributing.

Thanks Stephen(@ssmusoke), Daniel(@dkayiwa), Darius(@darius) for you help. Thanks OpenMRS for such a wonderful summer :D

Resource