Order Sets in OpenMRS O3

Order Sets in OpenMRS O3

4 Must-Do’s

1. Problem Description: Have you clearly defined the user problem(s) you intend to solve, and what value this creates? Write down a story, user insight, or quote about this problem (this is important because (1) this will motivate your team, and (2) without this your problem might not actually be a big problem for the users themselves).
2. User Stories: Have you clearly written at least 3 user stories and use cases
3. Market Analysis: Have you surveyed what the market is doing here (e.g. comparison to other EMRs, or paper approaches; and don’t forget about learning from historic/existing OMRS instances)? Have you written down any possible gaps in your understanding of your users or their workflows? Have you reviewed the topic in FHIR to see what requirements or fields the global community references? (Eg if working on insurance, should look here)
4. Technical Considerations & Dependencies: Have you outlined what you need from cross-functional areas for success of the feature? E.g. do you need the platform to support a new API call? Have you explained how you’ve addressed dev concerns, such as designs that may not be feasible, or will be extra time-intensive to implement? 

Optional/Encouraged

Sketches: Have you added a drawing or description of how the feature could work to solve the problem at hand? (Pictures of sketches are ok!) 
Project Management: Have you created the Epic and JIRA tasks so you can share work clearly? Roll-out plan: Do you have an idea whether this will be an experiment, gradual roll out, and when? Have you added this to the timeline view? Have you planned how you will promote and/or work with communications folks in order to help this feature reach the widest audience and have the biggest impact it can?

Later but should do

QA Plan: Have you mentioned the plan for QA, such as how you will discover and address edge cases? Does your team/squad have a plan for automated tests to be added to new components (unit tests) or workflows (e2e tests)?
Safety & Tech Risks: Is there any reason you could regret rolling out this feature? (e.g. possible patient harm, heavy tech debt like introducing an unsupported library) Have you thought through the risks for this particular solution? And, how to reduce/address those? 

This checklist was inspired by this article. Additional Business Analyst Resources here.

Status: Requirements In Progress In Progress

Technical Complexity: Easy Medium Hard / Complex

Summary:

  • An Order Set allows a clinician to place a pre-defined bundle of orders (medications, labs, referrals) in a single action, rather than ordering each item individually.

  • The MVP targets the most basic, high-value clinical use case: Hypertension, where two drugs (Thiazide Diuretic Option) combined with a Calcium channel blocker or ACE inhibitor is the evidence-based standard of care.

  • The feature will be surfaced within the existing O3 Order Basket to avoid context switching and reuse familiar UI patterns.

 

Picture showing what this project is about (e.g. a key mockup, drawing; anything visual)

image-20260513-090002.png

 

1. Problem

Clinicians routinely place the same combination of orders for common conditions (e.g., hypertension, surgical prep, ART initiation). Placing each order individually is repetitive, time-consuming, and prone to omission errors. There is no mechanism in OpenMRS O3 today to bundle and place a set of orders in a single action.

2. User Stories

  • As a clinician, I want to search for and select an Order Set (e.g., "Hypertension") so that a guided set of drug-group choices is presented to me in a single view, saving me time and reducing the risk of missed or incorrect orders.

  • As a clinician, I want to see the drug options within an Order Set grouped by drug class, so I can select the most appropriate drug from each group before placing the order.

  • As a clinician, I want each drug option to be pre-filled with standard dose, frequency, route, and duration metadata, so I don't have to enter these manually.

  • As a clinician, I want to be able to clear a drug group selection entirely if none of the options are appropriate for this patient, without being forced to pick one.

  • As an implementer, I want to configure Order Sets (define the bundle of orders and their default metadata) so that they reflect local clinical protocols and evidence-based guidelines.

3. Market Analysis

Based on the OpenMRS Talk discussion, the following real-world needs were surfaced:

  1. Confirmed high-value use cases (from PIH implementation data):

  • Hypertension (MVP target)

    • Thiazide Diuretic Options: Chlorthalidone, Indapamide, Hydrochlorothiazide

    • Calcium channel blocker or ACE inhibitor: Amlodipine, Lisinopril

  • Sickle Cell: Hydroxycarbamide + Folic acid

  1. Other use cases raised by the community:

  • Surgical Admission Profile (labs: CBC, LFTs, RFTs, viral screen, blood grouping, ECG, X-ray, etc.)

  • Myocardial Infarction protocol (Aspirin, Clopidogrel, Beta-blocker, Statin, ACE inhibitor/ARB)

  • Diabetic Ketoacidosis (IV Fluids, ABG, IV Potassium, IV Insulin, IV Dextrose, hourly monitoring)

  • ART initiation bundles

  • Pre-operative order sets

4. Technical Considerations & Dependencies

UI Integration:

  • Order Sets are surfaced as a dedicated tab within the existing O3 Order Basket panel, alongside the current Drugs tab. This avoids context switching and reuses familiar order-basket patterns that clinicians already know.

  • The Order Sets tab is accessible from the same search bar used for individual drugs.

Clinician flow:

  1. Open the order basket and select the "Order sets" tab.

  2. Instead of searching for individual drugs one by one, the clinician searches for the "Hypertension" Order Set.

  3. The order set displays drug groups, each with selectable options. Each group has a default pre-selected, but the clinician can switch to another option or clear the selection entirely if none of the drugs in that group are appropriate for this patient. Selecting the Menu acts as a shortcut that pre-loads all relevant drug classes (ACE inhibitors, Diuretics, etc.) into the basket area simultaneously.

  4. The clinician reviews the "Drug Options".

  5. Optionally, the clinician clicks on any drug to edit dose, frequency, route, or duration. This opens the standard O3 drug order entry form, pre-filled with the order set defaults. After editing, clicking "Update order" returns to the order set view.

  6. Clicking "Save orders" submits the selected drugs to the patient's active orders list.

  7. Clicking "Discard" cancels the entire order set selection.

Data / Concepts Required (per MVP Hypertension use case)

Field

Details

Field

Details

Order Set Name

e.g., "Hypertension Menu."

Order Set Instructions

Optional free-text field for clinical guidance displayed above drug groups (e.g., “Prefer two drugs at lower doses over one drug at a higher dose”)

Order Set Items

Thiazide Diuretic Options:

  • Chlorthalidone, Indapamide, Hydrochlorothiazide

Calcium channel blocker or ACE inhibitor:

  • Amlodipine, Lisinopril

Order Type

Drug Order

Per Item Metadata

Dose, dose units, frequency, route, duration, duration units

Patient Eligibility Constraints

None for MVP. (Post- MVP → age/gender/LMP filters as raised by Dr. Andrew Kanter)

Out of Scope (MVP)

  • Patient eligibility constraints (age/gender/LMP filtering)

  • Order sets for surgical profile, Myocardial Infarction (MI), Diabetic Ketoacidosis (DKA)

5. Sketches

1. Hypertension - New Diagnosis

image-20260513-082412.png
Empty Order Basket
image-20260514-125212.png
Search & Discovery
image-20260514-113137.png
Menu Details (Selection)
image-20260513-082909.png
Editing of drug details (Optional)
image-20260513-083031.png
After Edits (Review)
image-20260514-113729.png

 

2. Hypertension - Controlled (Routine Review)

3. Hypertension - Uncontrolled