GSoC 2017 - Built-In reports for Reference Application | Final Presentation

Built-In reports for Reference Application

Primary Mentor : Rafal Korytkowski / @raff Backup Mentor: Stephen Senkomago Musoke / @ssmusoke Student: Jude Niroshan / @judeniroshan Project Wiki: Built-In reports project


Reference Application comes with many cool modules together. It also includes the reporting module which enchance the capability of creating customized reports for the users. However, there are no built-in reports which comes with the Reference Application bundle. With built-in reports for reference application, new reports will be available by default with reference application. These reports will give an overview about the data in the OpenMRS system while enriched with new OWA which includes more user oriented data visualizations.


  • Reach out to implementations to determine the most useful reports to include in the module

  • Implement various reports using the Reporting module API

  • Access those reports through Reporting REST API

  • Create a new Basic Reports Open Web App UI

  • Add charts to visualize data for some of the implemented reports

##Basic Reports

  1. Number or Visits
  2. Number of Patient Registrations
  3. Number of Admissions per service area
  4. Number of Discharges per service area
  5. Number of Discharges per service area
  6. Number of Visit Notes
  7. List of Diagnosis’s made and quantity
  8. List of Providers (grouped by active/retired)
  9. List of Users (grouped by active/retired)
  10. List of new Patient Registrations


I have implemented the report definitions inside the Reference Metadata module including the test coverage for all 10 basic reports.

Reference Metadata module commits:✓&q=is%3Apr%20author%3Ajudeniroshan

There is a new OWA created to show those reports as mentioned under the project objectives. This OWA is developed using ReactJS framework.

##Implementation in brief Before starting any work, knowledge about the reporting module is essential to this project. The best time for this was the Community Bonding period. Within this period, basic reports were created by simply using the reporting module. This is purely a functional task which involved no coding work. This led the developer to get a clear picture of the existing module functionalities and how it should be used in order to achieve the project goals.

This was communicated in the first meeting with the mentors.

Defining reports inside the server would give a clear idea on what needs to be achieved. Therefore, development work was started by defining the reports inside reference application module. Once the module has deployed into a OpenMRS server, those defined reports has to be created automatically. It was realized that those report definitions actually needs to resides within the Reference MetaData module rather than Reference Application module. So, those developments were moved to this module.

##Issues encountered during development:

  • I faced a build problem while writing the unit tests.

  • I have spent some weeks struggling on getting the created_date into a cohort definition. Finally with the help from Mike Seaton (@mseaton ) I was able to find a solution

  • When I was fetching the report data through Reporting REST API, I was facing some other problems to get the proper report data.

  • Passing Location as a parameter to some of my reports through Reporting REST had an issue. My mentor Rafal helped me to get through this problem.

##Basic Reports:

Report definitions inside Reference Metadata module (shown in Report Administration):

List of Users report:

List of Providers report:

List of Diagnosis report:

List of New Patient Registrations report:

Number of Admissions report:

Number of Discharges report:

Number of Transfers report:

Number of Patient Registrations report:

Number of Visit Notes report:

Number of Visits report:

##Planned work It is clear that these reports can be improved a lot. But with the limited timeslot, I had to stick with some limitations on designing these reports. Following improvements can be implemented to make this app more user friendly and valuable.

  • Break downs by more parameters
  • New reports which shows data about specific patients
  • Warnings indicators

##Weekly blog posts

Week 1 — Implement reports inside reference application module Week 2 — Integration of Cohorts into reports Week 3 — Unit tests coverage for reports Week 4 — Create the Open Web App skeleton in ReactJS Week 5 — Fetch report data through Reporting REST API Week 6 — Issue in fetching report data in Reporting REST API Week 7 — Move server development to Reference MetaData module Week 8 — Create specialized React components for reports Week 9 — More React components Week 10 — React component unit test coverage Week 11 — CSS style modifications, improve code quality Week 12 — Improve code quality, write documentation

##Project Documentation Wiki

##My experience with OpenMRS during Google Summer of Code 2017

This is the first time that I participated in a GSoC program. I am so thrilled that I was selected to work on one of the projects with OpenMRS. There are so many people willing to help each other which makes this community standout from the rest of the open source world. Community which never sleeps, yet stronger! :openmrs: This is a matured community which welcomes any newbie to the party.

Throughout the program, my mentor never missed a single weekly conversation. When he was busy, he rescheduled it to a different date. I’m so glad to work under a community which has full of such dedicated contributors. IRC is always active and @dkayiwa is always there to light up the chat-room.

@harsha89 has organized everything perfectly sending all the guidelines and never let us to miss a thing.

I feel I’m so lucky to take part my GSoC with such a perfect community. :blush:

##Sugesstion to improve the program

  • It would be better if an experienced developer could spend some time to see whether the documentation pages are up-to date.

  • I think the program administration and management is brilliant. These processes are better to continue up for the coming years as well :slight_smile:

##Final words First of all my dedicated mentor @raff who was there for me to help whenever i was stuck on any issue. You are a great example for being a mentor and your advises are priceless. Thank you for trusting me and hand over this project to work on.

Next, my fellow GSoC colleagues who helped me in various ways, personally I thankful to you. It’s my pleasure that I was able to work with brilliant students like you. @suthagar23 @jtatia @choxmi @lahiruj @reubenv @merovingienne @hao555sky @nipun @ankitkumar @gayanw

Finally, without you @akshika47 , I wouldn’t be able to write a post like this. Thanks for guiding me from the very first day. Thank you!


Loved it mate. And happy to see that you have improved a lot in these few months. Good luck for your future endeavours and make sure to be part of OpenMRS Family through out your journey.


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

1 Like