GSoC 2017 - Data Integrity Module | Final Presentation

#Data Integrity Module

Primary Mentor: @ssmusoke Backup Mentor: @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.


  • Improved filtering and display of results page.

Result Page

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

  • 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 Webservices module.

Work done till now:

  • /rule - List of all rules (paginated)
  • /rule/{uuid} - Fetch rule by uuid
  • /rule/{uuid} - Update rule by uuid
  • /result/{uuid} - Delete rule by uuid
  • /result - Paginated list of results
  • /result/{uuid} - Fetch result by uuid
  • Unit tests of above APIs are written

Work In Progress:

  • /rulecategory/{rule-category} - Fetch all rules belong to a particular category (paginated)
  • /rule/{uuid}/runrequest - Run a single rule and generate results
  • /rule - Add new rule
  • /resultbypatient/{uuid} - List of all result for a particular patient given its uuid
  • /resultbypatientprogram/{uuid} - List of all result for a particular program given its uuid
  • 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.


###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 dataintegrity 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 dataintegrity module
  • RA-1382: Patient Dashboard - buttons shift below if text beside it is very long
  • DINT-79:Update README
  • DINT-78: Update Data Integrity Wiki Page to reflect latest updates
  • UICM-76: Need to update version of Datatables


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 @ssmusoke, @dkayiwa, @darius for you help. Thanks OpenMRS for such a wonderful summer :smiley:

Regards, Shivang Nagaria (@shivtej)


Thank you for your contributions @shivtej :). Keep up your good work.

1 Like

Thanks, @harsha89 and overall OpenMRS community for the wonderful opportunity.