Smart Notification Feature
Status: READY FOR WORK
Technical Complexity: HARD / COMPLEX
Summary:
Clinicians who order lab tests have no automated way to know when results come back, and thus they must keep reopening the patient chart to check.
This feature surfaces new results through a notification feature so providers stop polling manually.
V1 covers the lab-based use case:
STAT Orders
Opt-In notifications
Notification when the lab result is rejected
Location-scoped routing.
V2 covers the prescription-based workflow and use case:
Notifying the clinician when safety concerns like drug interactions are discovered during medication dispensing.
1. Problem
When a clinician orders laboratory tests during a consultation, the burden of tracking those orders falls on the clinician rather than the system. Without this feature, they must:
Manually track which patients have pending lab orders.
Periodically reopen the chart to check for new results.
Interrupt the current consultation to check a previous patient's results.
Risk missing follow-up on ordered tests during busy sessions.
Patients feel the same gap: they don't know when results are ready, may not know whether to wait or leave, and face delayed diagnosis when results are time-sensitive.
The core tension: clinicians want to focus on care, not on chasing status updates — yet notifying on every result creates the opposite problem, alert fatigue, where important findings are buried, and critical alerts are ignored. The design has to notify enough to be useful without becoming noise - hence defeating the entire purpose of the notification system.
Solution Overview
V1 — Notification inbox with STAT/urgent gating (what's prototyped)
A header bell with an unread count. Clicking it opens a list of new results; selecting one opens a detail view where the provider marks it reviewed or clicks through to the patient's Results (resulting panel highlighted). "Mark as reviewed" clears the item from the active list, records who reviewed it and when, and archives it — a mailbox. Gating is by order priority: STAT/urgent orders raise a notification on the bell; routine orders post silently to the Results viewer with no alert. This uses the STAT flag already on the order, so no critical-value thresholds are needed.V2 — Opt-in notification for any order, regardless of priority
Lets a provider explicitly request to be notified when a result comes back for an order regardless of its criticality — including routine/non-urgent orders — for example to confirm a value is normal. In V1, the ordering provider is only notified for STAT/urgent orders; there is no way to say "tell me when this routine result is back" or to follow an order someone else placed. That capability is anticipated for a future version, and when it lands, non-urgent notification should be opt-in rather than default, so the feature doesn't reintroduce the alert-fatigue problem it's meant to solve.
What clinicians actually need is an intelligent "push" model that automatically notifies them when priority results become available, while keeping routine results accessible without causing interruption.
Smart Notification Filtering Based on Clinical Priority:
✅ DO Notify (Requires Attention)
STAT/URGENT Orders → Always notify
Reason: Clinician is actively waiting for the result/s to make treatment decisions
Critical/Dangerous Values → Immediate notification
Reason: Life-threatening findings require immediate action
❌ DON’T Notify (Can Wait)
Routine Normal Results → No interruption needed
Slightly Abnormal Results → No interruption needed
Expected Abnormal Results → → No interruption needed. For example, a patient with kidney disease always has elevated creatinine.
2. User Stories
USE CASE 1: STAT Lab Order → Results Notification
Scenario: A clinician is notified when a result comes back for an order they marked STAT/urgent; routine results post to the chart without an alert.
Dr. Smith orders a lab test for John Doe and marks the order STAT/urgent (routine orders will not notify).
The EMR sends the order to the laboratory queue.
The lab technician processes the sample and enters the final result in the EMR.
On result entry, the system checks the order priority:
STAT/urgent: a notification is posted to the ordering provider's bell (unread count increments).
Routine: the result posts silently to the Results viewer; no notification is raised.
Dr. Smith opens the bell, reviews the item, and either clicks through to the patient's Results (resulting panel highlighted) or marks it reviewed — which clears it from her list and records who reviewed it and when. Routine results she views during her normal rounding or admin time.
User Story: STAT Lab Order
As a clinician, when I mark a lab order STAT/urgent, I want a notification on the bell as soon as the result is entered, so I can act without repeatedly reopening the chart.
As a clinician, I want routine results to post to the chart with no alert, so I can review them during rounding without being interrupted.
As a lab technician, I want the ordering provider notified automatically when I finalise the result of a STAT/urgent order, so my work leads to the fastest clinical response.
As a patient, I want urgent findings brought to my clinician's attention quickly, so I'm treated promptly, and nothing is missed.
USE CASE 2: Prescription Changes
Scenario: Patient arrives at pharmacy with prescription that requires modification.
The patient presents a prescription to the pharmacy.
The pharmacist identifies an issue with Jane Doe’s prescription (Metformin 1000mg) and requests a modification through the system. (e.g., dosage concern, drug interaction, or out-of-stock)
IF Reason = "Drug Interaction Detected" or "Allergy Conflict" or Dosage concern, THEN the system Trigger Immediate Push Notification.
Alert: "⚠️ SAFETY ALERT: Jane Doe - Metformin interaction with [New Med]. Action required."
The system immediately sends a notification alert to the prescribing clinician. Dr. Smith sees the pop-up immediately, reviews the interaction, and sends a safe alternative to the pharmacy in real-time.
Message: Prescription modification requested by Pharmacy for Jane Doe - Metformin 1000mg. Reason: Drug interaction detected.
Approves modification → System notifies pharmacy immediately
Rejects/modifies differently → System sends alternative prescription to pharmacy
User Story:
As a Pharmacist, I want the system to automatically escalate (notify the clinician immediately) high-priority safety concerns (like drug interactions or allergies) to the prescribing clinician so that I can resolve medication safety issues quickly and reduce patient wait time at the pharmacy.
As a Clinician, I want the EMR to interrupt me for clinical safety risks or urgent medication changes, so that I can prevent medical errors, ensuring my patient receives safe and appropriate medication without delay.
As a Patient, I want the most urgent issues with my medication to be prioritized for my doctor's immediate attention, so that I am protected from dangerous drug conflicts.
As a Pharmacist, I want to be notified when a clinician has resolved a pending modification, so that I can finalize the dispensing process as soon as the clinical 'block' is removed.
3. Market Analysis
System | Features | Remarks |
|---|---|---|
PIH |
O3 header with notifications icon
Notifications list When lab results are entered, add a results banner (similar to the existing Lab Order banner) The Review link would open the patient’s workspace and show lab results The “x” icon would dismiss the alert. Clicking “x” should warn users the alert will be dismissed for everyone.
| Requestor: Sierra Leone and Haiti Problem: Clinicians don’t have easy way to know when a patient’s lab test results are entered in to the EMR and available to view. They currently need to navigate to the patient chart and continuously check the Lab Results page. Proposal: When lab results are entered, notify the ordering clinician in the EMR. Details:
|
Prognosis: https://youtu.be/0d4QXIU07uc |
| |
OpenEMR: https://demo.openemr.io/openemr/interface/login/login.php?site=default (admin/pass) |
| |
DrChrono: https://youtu.be/3PT1ViGDnss |
|
|
|
|
|
|
|
|
4. Technical Considerations & Dependencies
@tendo kiiza Martyn @tendo kiiza Martyn @Samuel Lubwama @Wikum Weerakutti @Dennis Kigen @Daniel Kayiwa. Please validate if this is accurate - I used Claude Code to check out the technical considerations and current gaps that would need to be bridged for the feature to work as expected.
Spec step | Reality in the codebase | Gap/work |
|---|---|---|
Dr marks order STAT/urgent | ✅ | None — done today. |
Lab tech enters final result | ✅ Result-entry workspace exists ( | None. |
On result entry, system checks priority & notifies | ❌ fhir2 has zero eventing — no | Build the backend trigger — a new module (or |
↳ check STAT flag | ⚠️ | If the trigger works at the Java/API layer, no change needed. If any consumer reads STAT over FHIR, add urgency→priority mapping to |
↳ correlate result → order | ✅ | None — the result→order association already exists. |
↳ identify recipient | ✅ | Small — resolve orderer → Provider/User in the trigger. |
↳ post to bell / increment unread count | ❌ No persistent notification store, no unread concept ( | Net-new: notification data model + REST endpoint (paginated) + recipient wiring. |
5a. Dr opens bell (cross-patient inbox) | ⚠️ Bell UI buildable, but the sticky-note template lives in | Placement decision first, then build: global bell → work in |
5b. Mark reviewed → clears, records who + when, archives | ❌ No review-state concept on orders or results. | Net-new: |
5c. Routine posts silently to Results | ✅ With no notification path, a routine result simply appears in the Results viewer. | None. |
Real-time delivery ("push") | ❌ No websocket/ | MVP = SWR polling of the notifications endpoint ( |
|
|
|
5. O3 Sketches/Mockups
V1 Scenarios:
Lab Order Priority = STAT
Opt-In by the Clinician Ordering the Lab/s
Notification when the Lab rejects the Lab test
Notify when resulted, order = stat/urgentNotification PanelReview Actions
Opt-In: Notify even if the value isn't criticalNotification ModalResults Viewer
@Veronica Muthee Are notifications like email notification are considered here ?
For instance if a user is not in his/her system and emergency notification comes up