Pre-defined Health Schedule tracker and notifier

Hi all,

We have an application that requires scheduled alerts for OpenMRS entities (beneficiary like patient and/or provider like doctor/nurse/health worker). Examples are below:

  • For vaccinations child have predefined schedules those have to be fulfilled on certain age limit i.e. referenced from Date of Birth. When enrolled into the schedule child`s caregiver and/or service provider should be alerted (via any means) about the status (due, done etc) of that particular schedule.
  • Similarly, for ANC visits mother has to be enrolled into 4 scheduled ANC visits. So for each ANC visits there must be some mean of alerts to mother and/or health worker about the due visit. The action to be taken on alert is dependent on application or user app of the alert.

An example of the schedule is http://modules.motechproject.org/en/latest/schedule_tracking/sample_schedule.html#sample-schedule-definition . Our application generates the data and we want to push it into OpenMRS and we also want to build this capacity into OpenMRS.

Do we have any system that already handles this? And do we have any existing system that we can extend to achieve our goal. We have good understanding of OpenMRS core and module development so any suggestions are welcome.

Is what you are looking for, in any way, related to this? https://wiki.openmrs.org/display/docs/Patient+Flags+Module

Not really! We want to enroll patients into specific Health Schedules those generate automatic alerts and then we can respond to the alert. Based on the response Alert/Patient Schedule status gets updated. And we can track the activity and every detail back at any point of time. Ex: A Child was enrolled into Penta1 schedule with 5 alerts to be generated when he turns 6 weeks. The alert dates would calculated from his Date of Birth+6 Weeks. Child would be alerted 5 times about the Due vaccination. The alert intervals would be -3 , -1 , 0 , 1 , 7 Days from his 6th Week. When child gets vaccinated we would stop alerts onwards and update the status of all alerts like On 1 day before his 6th Week status would be sent, sent, due, due, due. If child gets vaccinated on the day the status would be updated to sent, sent, sent, closed, closed. And we enroll child into next schedule i.e Penta2 for alerts triggered based on his 10th week age. For any child we want to track down at any point of time about the status of schedule, alerts, the dates of fulfillment or closing.

I think that the main user of OpenMRS to have built such a schedule is MoTeCH, which you already know about. I don’t know of others (well, PIH did some scheduling around expected form completion for a study, but this was >5 years ago and would not be a helpful starting point).

Note that as part of the EndTB project there’s some scheduling functionality planned (the driver being: ensure that certain things happen on the correct timeline for patients in a study).

I suggest talking with @ahabib about whether the timeline of these projects is compatible, and whether you could leverage the same eventual back end for the application you’re asking about now.

Unfortunately for this we have a tight deadline of 1 week (or at max 2) to store data into openmrs for scheduling and alerts. The data has to be pushed from external system (opensrp). The datastore and rest webservice is a priority. But for ui and schedule generation it can wait.

I was going to raise the question of how to model the endTB requirements at some point, because it is not immediately in our timelines (around 2-3 months). In any case it is not that far off either so we would get started now.

The requirement which seems quite generic is as follows:

  • when a patient is enrolled in a program, there should be a calendar created which captures this like expected dates of visits, expected dates of sample collection for lab tests and perhaps few other things.
  • the system should be able to present the actual events (visits, sample collection) along with the expected dates in helpful ways to allow for assessment of how “well” a patient is being managed according the treatment protocol
  • perhaps some reports which also allows for assessment of the overall program across patients

This could be done in two ways.

  1. Without capturing the schedule in the database This would be problematic for two reasons and hence wouldn’t work. a) performance when there are many patients b) ability to do reporting without needing to write non-SQL code

  2. By capturing the schedule in the database How should this be modelled? Are there existing mechanisms to model this, e.g. using orders and order-set?

I forgot about Darius’s reply on this thread related to order/order-set not being a right solution for this:

Assuming that we would call for a discussion on this design call at the right time, unless Maimoona would like to schedule this earlier - in which case we would also join the discussion. But seems like she doesn’t have a lot of time in her hand.