O3 Medication Dispensing

Summary of the Problem

  • Implementers are looking for a simple tool to track medication dispensed, within OpenMRS. 
  • Larger sites tend to handle dispensing by integrating OpenMRS with dedicated external supply chain/ERP systems, such as Odoo - inventory is a core competency for those systems. But we need a solution for smaller sites where you don't want to deal with implementing a whole other system - all you want is help with tracking what needs to be dispensed vs what has already been dispensed.
  • The primary target users for this functionality are implementations and facilities that have an on-site pharmacy and which don't charge the patient/customer for the services, who want to dispense medications based on orders within the same OpenMRS instance. Billing and inventory are out of scope.

Links to Know

In this page: 

In this wiki:

Sample Visual


Specifically, PIH has already had a very lightweight Dispensing feature available via a 2.x RefApp model for a while (see screenshot below); however, it's not well connected to e-prescribing. 

User Stories

More detailed use cases documented here: https://openmrs.atlassian.net/wiki/x/jSpUAQ 

  1. As a Pharmacy staff, I need to see all medications prescribed for a patient, so I can see what medications I need to prepare for them. 
    1. I need to see: Drug type and strength, dose, duration, quantity to dispense at a time, and how many refills are available.
  2. As a Pharmacy staff, to be able to indicate what/how much is dispensed (at point of dispensing), so that we can track what the patient has and has not received. 
    1. e.g.: Partial Dispensing problem: Only had 20 tablets available but patient is owed an additional 100. 
    2. e.g. Seems Partial but wasn't: e.g. Have doubled strength tablets so not as many were needed to be dispensed.
  3. As a Clinician, I need to be able to see what was prescribed/dispensed in a convenient, consolidated place, so that the patient's active drug regimens are more obvious, and we can have a more informed conversation about adherence and other active medical conditions they are receiving treatment for. This also helps prevent me from prescribing medications that may react poorly with other medications the patient is taking. 


We will build a new OpenMRS Module "Medication Dispense" that will have the following components

Initial Sketches

Final designs: in Zeplin here; accountless view here

First draft mockups here: Pharmacy page mockup


  • (question) Better name for the module?  Should it be called "Pharmacy" or "Dispensing"? Should we repurpose or deprecate the existing RefApp 2.x Dispensing module?
  • (question) Or do we want to consider building this in OpenMRS Core directly? (probably in the above module for now)
  • (question) Should we build out RESTful API in OpenMRS REST or FHIR (or some combination) (probably FHIR)
  • (question) The API and display we've been coming up with to-date has been very "Order" specific... do we need a way to dispense drugs without  an order?
  • (question) Do have a means/pattern for deploying a MFE via a Module?  Do we even want this?  If not, how do we "bundle" the MFE with the OpenMRS module?  Or is it okay (or even beter) to keep these two things separate?

Examples from IQCare: