Overview

Bahmni is built for point-of-care use, and healthcare workers use it directly as they are seeing patients in resource-limited settings). This works for many workflows (e.g. seeing patients in the order they are queued), but adding a notification would allow for some improved workflows, by not requiring the doctor to actively remember to check on things.

For example:

  1. A doctor requests lab tests for a patients, and wants to be notified as soon as the results are ready (or perhaps only if there are abnormal results)


This week was mostly about continue the implementation of the Bahmni atom feed reader microservice. Currently, it polls the patients’ atom feed and triggers when a new event occurs.

Next week I’ll be working on a webhook to display notifications on the frontend of the application. This works as follows

  • Microservice reads a new event and call the relevant endpoint at Bahmni backend (this is a POST call with all event related information)
  • Backend triggers the webhook. If webhook is successfully triggered notification is displayed to the user. Otherwise, the event is stored in the DB while the user becomes active.

You can find the current implementation of the microservice here.


We had the 2nd evaluation this week. By the end of this week I was able to complete the first phase of the project which was to develop subscriptions management module which allows the user to create, modify & delete subscriptions made by the user.

In addition to that I was able to implement a module to read Bahmni atom feed. In the upcoming week I will integerate Java Spark microservice framework with the module so that it can be run as a service which expose endpoints to register and trigger subscriptions.


This week I involved in completing all frontend and backend operations related to the subscription management. In addition to adding new subscriptions, users can modify existing subscriptions as well.

Following are the UIs implemented related to subscription management.

View Subscriptions Created by the User

This week I worked on adding referential integrity constraints, other missing database tables and newly added privileges to liquibase file which will be take effect at the time of omod initialization.

In addition to that I worked on implementing omod operations and other backend operations to create and fetch subscriptions.

I have to work on writing test cases for the previous tickets as well. That’s all for this week… :)


This week I was involved in fixing some issues associated with database tables. In addition to that I worked on liquibase.xml file which create required tables, insert privilege data to tables enforce referential integrity.

At the time of installing omod, it checks whether all changes in liquibase.xml file are added to the platform. If not it add all changes to the OpenMRS platform.

In addition to above changes I created a seperate JIRA component for notifications module and create some tasks(some were already fixed). You can find all the task related to the project here.


This is the end of the 5th week of GSoC coding period. I got my first evaluation completed. I was really happy to have a poitive feesback from my mentor. I would like to make this a chance to thank him for the support and guidance provided so far.

This week I recieved JIRA & Trello boards for the project. In addition to that I was able to integrate Bahmni styling to the OWA module.


OpenMRS Modules

An OpenMRS module is composed of 3 major components.

  1. OWA — Application frontend
  2. API — Dao entities and service layer of the application. Expose a set of APIs
  3. OMOD — Expose endpoints to service layer operations. OWA deals with this component
Fig 1. Project Structure

Previous weeks I worked on an OWA which is the frontend of the OpenMRS module. From this week onwards I’ll be working on the backend of the application (omod & api).Even though the frontend of the application use Javascript based technologies backend only uses Java related technologies such as Spring & Hibernate.

API Component


During the 3rd week of the coding period I had to face several challenges related to ui implementation. I initially used Material-UI to implement components like tables. But the problem was when it comes to form design material ui’s text fields and selects are lot different than the styling used in Bahmni app. Because of that I had to use react-bootstrap libray to implement forms. Below is the subscription edit form implemented using react-bootstrap library.

I was able to complete all basic UIs including subscription management, edit subscriptions and add patients during this work using react & redux. However after discussing with the community they suggested to use Bahmni EMR UI look and feel instead of OpenMRS ref app style. Therefore will have to adapt these UIs to reflect above mentioned changes.


Today is the last day of the 2nd week of GSoC coding period. I was able to start the implementation of front end of the Bahmni Notification module with the help of my mentor Daniel. Eventhough I started development of frontend using Angular, I moved my development environment to React+Redux after digging through pros and cons of each approach.

However first half of week 2 spent to solve issue with the AngularJS boilerplate generated by the OpenMRS OWA Generator tool. After having a discussion on OpenMRS Talk we were able to confirm that it is a issue with the generated…

Isuranga Perera

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store