Release Notes 3.4 (2025-05)
🔦 Key Points
Release Information
Cut Date: April 21, 2025
Release Date: May 22, 2025
Release Manager: @Dennis Kigen
Key Features
Visit Context Switching: Retrospective data entry with visit context headers (implemented behind a feature flag)
Carbon v1.76.0 Upgrade: Updated design system across all apps
Standardized Date Pickers: OpenmrsDatePicker component implemented consistently
Age-Based Vitals Ranges: Smart clinical alerts based on patient age (requires Core updates)
Ward Management v1: New ADT workflow with bed assignment support
Deferred to Next Release
React v19 upgrade
⚠️ Breaking Changes:
Patient Chart data flow: Refactored how patient data flows through Patient Chart components. The
usePatienthook now only runs once at the root level instead of multiple times throughout the component tree. This improves performance by eliminating redundant data fetching, but may break extensions that directly callusePatientinstead of receiving patient data as props.Migration: Extensions should receive patient data through props rather than calling
usePatientdirectly. See @Ian Bacher's PR for implementation details.
Where to find it: Demo at o3.openmrs.org (credentials: username: admin, password: Admin123) or download here: openmrs.org/download/
👷 Contributors
Special thanks to the following community PR reviewers:
DIGI: @Ian Bacher
OpenMRS: @Dennis Kigen, @Jayasanka Weerasinghe, @nethmi, @Rafal Korytkowski, @Samuel Male
PIH: @Chi Bong Ho, @Mark Goodrich, @Mike Seaton
Palladium: @Donald Kibet, @Kennedy Makombe
METS: @jabahum, @Samuel Lubwama
MSF Madiro: @Joshua Nsereko, @Pius Rubangakene, @Vineet Sharma
Contributors
🙏 Thank you to all our amazing contributors - you make releases like this one possible! Listed by organization:
CSaude: @Yassin Nurmahomed
SolDevelo: @Oliver Lewandowski
ICRC: @Pedro Sousa @José Francisco @parthfloyd
Madiro: @Pius Rubangakene@Vineet Sharma
Mekom: @Brandon Istenes @Siddharth Vaish
METS: @jabahum @Isaac Akileng @JONATHAN AJAL ODORA
OpenMRS Support: @Dennis Kigen @nethmi @Daniel Kayiwa@Samuel Male @Veronica Muthee @Wikum Weerakutti @herman muhereza
Palladium-Kenya: @Kennedy Makombe @amosmachora @Donald Kibet @itskios09 @omosh
PIH: @Chi Bong Ho @Mark Goodrich @Mike Seaton
Thoughtworks: @rahu1ramesh
UW ITECH DIGI: @Ian Bacher @CLIFF GITA
Independent Contributors: @Juliet Wamalwa @Elisha Bantana @Wyclif Luyima @shettybharath @harshthkkr @chintu @mohamedalimefteh @atulyadav745 @Mutagubya Jonathan@Bawantha Rathnayaka @yugalkaushik @joseph kagimu @EDSONZ-WASSWA @jayg @xprlgjf @shivarm @vinayaksharma @dhruvchandak30 @siddhant singh @sarang @capernix
Contributor Metrics
# PRs included: 266
# of Orgs involved: 10
% from OpenMRS Inc. Global Support: 27%
(Source)
🔦 Highlights for Implementers
📈 Smarter vitals alerts for Children / Pediatrics: Vitals like heart rate and respiratory rate now use age-appropriate thresholds for clinical alerts. A heart rate of 100 might be normal for a child but concerning for an adult patient—the system now knows the difference and can be further configured. This feature requires Platform 2.7; older versions will continue using the previous fixed thresholds. | Platform 2.7 introduced backend support for flexible concept ranges (thanks to @isaiahmuli's work in 3.3.0). Version 3.5.0 builds on this foundation by implementing age-based reference ranges for temperature, pulse, oxygen saturation, and respiratory rate. See the config file here: https://github.com/openmrs/openmrs-content-referenceapplication-demo/blob/main/configuration/backend_configuration/conceptreferencerange/conceptreferenceranges.csv For Platform 2.7+ implementations: Use the new For Platform 2.6 and below: @Daniel Kayiwa added fallback behavior so you'll continue receiving the previous hardcoded reference ranges—no changes needed.
|
🏥 Streamlined visit workflow: Redesigned how you navigate between patient visits with a new visit history table, context switching within workspaces, and support for creating visits with past dates. The interface is cleaner with visit controls moved to more logical locations. | @Chi Bong Ho delivered comprehensive visit workflow improvements: Cleaner navigation: Consolidated visit controls into the patient header (removing the separate visit header) and moved the location picker to the main navbar for easier access. Better visit history: Replaced static summary cards with an interactive table that shows visit details in expandable rows with customizable columns. Flexible visit context: Added the ability to switch between different patient visits while working in charts and forms—especially useful for entering historical data when the Retrospective data entry feature is enabled. Enhanced visit creation: The visit form now supports creating new visits, continuing existing ones, or adding past visits with proper date validation. |
📝 Easier form creation: Users can now set concept mappings directly in the interface (previously required manual JSON editing), add helpful tooltips to questions, and control whether form sections start expanded or collapsed. | Concept mapping selection: Form builders can now choose their preferred concept mapping (like CIEL:5090 instead of 5090AAAAA) directly in the Create/Edit question modal, eliminating the need to manually edit form JSON. Only SAME-AS type mappings are available for selection (courtesy of @jayg). Section expansion control: Set whether form sections start expanded or collapsed by default when creating or editing forms (courtesy of@jayg). Restored tooltip functionality: Re-added the ability to enter tooltip text that appears when users hover over question info icons (courtesy of @mohamedalimefteh). |
⚡Performance improvements: Smoother patient data updates and patient registration edit flow. | Faster patient data loading: @Ian Bacher fixed a performance issue where patient information was being fetched multiple times simultaneously, causing slow page loads and UI lag in the Patient Chart. Patient data now loads once and gets shared across all chart components, making navigation noticeably faster. |
⬆️ Updated design system: Upgraded to the latest Carbon design components for better consistency and visual polish across all apps. | Upgraded Carbon design components to |
✏️ Edit and delete vitals and biometrics: You can now modify or remove incorrect vitals and biometrics readings directly from the data tables. Important: Deleting removes both vitals AND biometrics from that encounter since they're recorded together. | @Samuel Male delivered a major clinical workflow improvement that was previously missing from O3: Edit vitals and biometrics: Click the overflow menu on any existing record to modify values directly. The form pre-populates with current data for easy correction, and changes update in place without creating duplicate entries. Delete erroneous data: Remove bad readings through the overflow menu with confirmation prompts to prevent accidental deletion. Critical behavior: Editing or deleting affects both vitals AND biometrics together since they're recorded as a single encounter, even though they appear in separate tables. This allows clinicians to correct data entry mistakes and remove erroneous readings that could impact clinical |
🗓️ Consistent date pickers: All date input fields now use the same standardized date picker component, ensuring consistent behaviour and better support for different languages and calendar systems. | @Ian Bacher Building on @Ian Bacher's custom OpenMRS datepicker from 3.1.0, this release standardizes all date input fields to use the same component. Users now get consistent date picker behavior across the entire system, with improved internationalization support and better handling of different calendar systems. This foundation enables future enhancements like enhanced input validation and expanded localization features. |
🛏️ New ward management: Added a complete ward app for managing patient admissions, discharges, and transfers between locations. Includes optional bed assignment features and a separate bed management interface for configuring ward layouts. | Setup requirements: See the Ward app’s README for installation prerequisites and the Bed Management app README for configuration details. |
📸 Example Visual Changes
🔍 Changelogs
Code
Distro RefApp
Frontend Modules
Cohort Builder v4.0.3 (patch)
Core v6.3.0 (minor)
Dispensing v1.7.0 (minor)
Fast Data Entry v1.3.0 (minor)
Form Builder v3.1.0 (minor)
Home v5.6.3 (patch)
Laboratory v1.1.0 (minor)
Patient Chart v10.0.0 ⚠️ (major - breaking change)
Patient Management v8.4.0 (minor)
React Form Engine v3.1.4 (patch)
Backend Modules