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: Hard / Complex

Summary:

  • An order set lets a clinician place a pre-defined bundle of orders - medications, labs, referrals - in a single action, instead of ordering each item one at a time.

  • The MVP targets a high-value clinical use case: Hypertension, where a thiazide diuretic combined with a calcium channel blocker or ACE inhibitor is the evidence-based standard of care.

  • The feature is surfaced within the existing O3 order basket, reusing familiar UI patterns and avoiding any new context switch for the clinician.

 

image-20260603-080843.png
Order Set Mock-up

 

1. Problem

Clinicians routinely place the same combination of orders for common conditions (e.g., hypertension, surgical prep, ART initiation). Placing each order one at a time is repetitive, slow, and creates room for omission errors. OpenMRS O3 has no mechanism 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 orders is presented to me in a single view - saving time and reducing the risk of missed or incorrect orders.

  • As a clinician, I want the orders within an order set grouped by clinical intent (e.g., first-line therapy, baseline workup), so I can choose the most appropriate option from each group.

  • As a clinician, I want each drug to be pre-filled with a standard default dose, frequency, route, and duration - and to be able to edit any of these in the basket if the patient's situation calls for it.

  • As a clinician, I want to deselect or clear any item the menu pre-selects if it isn't right for this patient, without being forced to keep it.

  • As an implementer, I want to configure order sets so that they reflect local clinical protocols and evidence-based guidelines.

3. Market Analysis

The OpenMRS Talk discussion surfaced the following real-world needs:

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

  • Hypertension (MVP target)

    • Thiazide diuretic: chlorthalidone, indapamide, or hydrochlorothiazide

    • Calcium channel blocker or ACE inhibitor: amlodipine, lisinopril

  • Sickle cell disease: hydroxycarbamide + folic acid

Other use cases raised by the community:

  • Surgical admission profile (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 inside the existing O3 order basket, alongside the existing Drug orders and Lab orders entry points. This avoids any context switch and reuses order-basket patterns clinicians already know.

  • The order set entry point opens the same search panel used for individual drugs - one input, results adapt to what the clinician types.

Clinician flow:

  1. The clinician opens the patient's chart. The order basket (right-hand panel) shows three empty entry points: Order set, Drug orders, and Lab orders, each with an "Add +" link.

  2. The clinician clicks Add + next to Order set. A search panel titled "Add orders" opens, with a "Back to order basket" link, the patient's allergies row, and a search input.

  3. The clinician types into the search input. The same input handles three patterns:

    • Typing menu lists every order set in the system (e.g., Hypertension New diagnosis, Hypertension Controlled, Hypertension Uncontrolled, Sepsis Admission, Sickle Cell Initiation).

    • Typing hy returns a mixed list: the three Hypertension menus, a Hyperthyroid lab panel, and the drug Hydroxyzine - menus, labs, and drugs whose names contain "hy" all surface in one combined list.

    • Typing am filters to drug names only (Amlodipine, Amoxicillin, Ambroxol).

  4. The clinician selects Hypertension - New diagnosis. The menu detail panel opens as a single flat list:

    • Inline guidance: "Start single-agent therapy. Add a second agent only if BP remains ≥ 140/90 after 4 weeks at maximum tolerated dose."

    • A radio group titled First-line antihypertensive (choose one), with Amlodipine pre-selected (preferred-first-line note shown), and Hydrochlorothiazide and Enalapril (pregnancy-warning note) as alternatives.

    • A Clear selection link below the radio group.

    • An optional Atorvastatin checkbox (unticked by default) with a CV-risk hint.

    • Inline guidance: "Baseline workup to screen for secondary causes and end-organ damage."

    • Five labs: Renal function panel (pre-ticked), Lipid profile, Fasting blood glucose, Urinalysis, and ECG - all visible, only Renal function panel pre-ticked.

  5. The clinician reviews the pre-selected items and adjusts as needed: switch the radio to a different drug, deselect it via "Clear selection," tick optional items, or leave the menu's defaults as-is.

  6. The clinician clicks Add to basket. Selected items flow into the basket - Amlodipine appears in the Drug orders group, Renal function panel appears in the Lab orders group.

  7. (Optional) The clinician clicks a basket row - say, the Amlodipine row - to review or edit. The standard O3 Add drug order form opens, pre-filled with the menu's defaults (Amlodipine 5mg, 1 tablet, oral, once daily, 30 days, quantity 30, indication Hypertension). The clinician can adjust dose, frequency, route, duration, quantity, patient instructions, or any other field. Clicking Save order returns to the basket with the row showing the edited values (e.g., quantity highlighted in amber if changed). Clicking Discard abandons the edits and returns to the basket with the menu's defaults preserved.

  8. The clinician clicks Sign and close. The basket closes, and the Orders app on the main pane refreshes - Amlodipine appears as (NEW) Amlodipine 5mg: 1.0 Tablet Oral Once daily 60 Days under Order type Drug order; Renal function panel appears under Order type Test order.

  9. The clinician can dismiss any single item before signing by clicking the trash icon on its row. To abandon everything in the basket, the clinician clicks Cancel in the basket foot.

Order Set Items

Item

CIEL Concept

Concept Type

Inline Note

Pre-fill metadata

Out of Scope (MVP)

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

5. Mockups: Hypertension - New Diagnosis

  1. ENTRY VIA DRUG ORDERS
image-20260603-065312.png
image-20260603-070251.png
image-20260603-070900.png
image-20260603-071343.png
image-20260603-071704.png
image-20260603-072202.png
  1. entry via lab orders
image-20260603-073056.png
image-20260603-080533.png

 

2. Hypertension - Controlled (Routine Review)

3. Hypertension - Uncontrolled