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
- Number or Visits
- Number of Patient Registrations
- Number of Admissions per service area
- Number of Discharges per service area
- Number of Discharges per service area
- Number of Visit Notes
- List of Diagnosis’s made and quantity
- List of Providers (grouped by active/retired)
- List of Users (grouped by active/retired)
- 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:
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.
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:
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! 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.
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
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!