OpenHMIS Pharmacy Module


The Pharmacy Module will provide interfaces for entering patient prescriptions, tracking orders to be filled in the pharmacy, and for dispensing drugs.  It will also interact with the OpenHMIS Inventory module if that module is being used.

High-Level Requirements

The features that will be included in the version 1 release are:

  • Prescription Entry

  • Prescription Fulfillment (Dispensing)

Version 1 if time:

  • Label Printing

  • Simplified Regimen Management

  • Drug management screen ? (improving upon existing admin screens)

  • Templates (i.e. standard frequency, duration, and instructions for a drug)

External Modules

OpenHMIS Commons Module

OpenHMIS Backboneforms Module

OpenHMIS Inventory Module

OpenHMIS Work Order Module

User Roles 

  • Pharmacist 

UI Pages

  • Prescription Entry
  • Pending Pharmacy Work Orders
  • Pharmacy Module Configuration

Functional Areas

Prescription Entry

A patient will come to a clerk in the pharmacy with handwritten prescriptions from a doctor, though later versions may support reviewing existing drug orders created by clinicians.  The clerk will access the Enter Prescription screen (via the Pharmacy menu in top gutter) and enter prescriptions for drugs into OpenMRS, one per line.  Once all of a patient’s prescriptions have been entered and validated, the clerk will save them.  The save operation will create Drug Orders associated with the patient, a group of Work Orders (one per drug) for the pharmacy to fulfill, and the inventory operations required to fulfill the request (if the OpenHMIS Inventory module is loaded); all based on the entered prescriptions.  An option will be available to mark the group of tasks urgent, in which case it will be displayed first in the list of tasks.


  • Patient identifier

  • Prescriptions:

    • Drugs names/identifiers: Concept Drugs will be looked up based on name or identifier.  Concept drugs include formulations which are concept drugs that specify the drug concept, the dosage form, the dose strength and dose unit, as well as if the drug is a combination.

    • Frequency: free text

    • Start & end date

    • Quantity: number of (drug-dependant) units to dispense (e.g. 30 tablets,  1 bottle)

    • Instructions: extra instructions about taking the drug

  • Urgent?


Prescriptions are validated, ensuring that all information necessary (i.e. dose, units, etc.) is given in either the concept drug or the input form.  Any drug-dependent fields (e.g. quantity type) are dynamically updated based on the currently selected drug. A work order is created in the work order module, with sub-orders for each drug to be filled.  Each sub-order will have the related DrugOrder as an attribute.  If an inventory module is available, inventory is checked to ensure that the entered prescriptions can be filled; a warning is shown if not.  If the Inventory module is loaded a stock operation is created and associated with the appropriate work order.


Drug orders are created and associated with the specified patient and the pharmacist work orders for filling the prescriptions are created.

Prescription Fulfillment

Once prescriptions have been entered into the system by a clerk, there will be pharmacy work orders for pharmacy staff to fulfill in order to prepare drugs for the patient (one work order per drug).  The list of pending pharmacy work orders will be available to authorized pharmacy users from the Pharmacy menu at the top of the screen.  This list will be ordered with oldest entries first and with urgent entries pushed to the top, but this sorting and optional groupings can be customized to support institution-specific workflows.  For example, some institutions require that patients pay for medications before they are dispensed and so grouping the work orders into Paid and Unpaid and then sorting by age would be very helpful. It will also be possible to filter the list by status (i.e. show completed/non-completed items).

The pharmacist will start with the highest-priority work order and complete the work of preparing the medication for the patient.  Once finished, the pharmacist will mark the work order as complete which may trigger other inventory and drug order actions, depending on the configuration.  Alternatively, if the work order can/should not be completed (e.g., the particular prescription will be filled by a third-party), the pharmacy tech can mark the work order as cancelled and give a reason.  Also, once completed, the pharmacist or clerk will be able to print a label for the prescription. When the work order is completed it is considered to be done from the perspective of the pharmacy; this may or may not indicate that the patient has actually received their medications, depending on the institution workflow.


  • Drug Order(s)

  • Pharmacy Work Order Task(s)


As the status of the pharmacy work order task is changed the associated actions such as inventory operations and updates to the drug order details will be executed. 


Pharmacy work orders will be completed or cancelled, the prescription label can be printed, the patient regimen may be updated with the prescription details, the patient drug order updated, and any inventory operations completed.