Table of Contents |
---|
minLevel | 1 |
---|
maxLevel | 2 |
---|
include | |
---|
outline | false |
---|
indent | |
---|
exclude | |
---|
type | flat |
---|
separator | brackets |
---|
class | |
---|
printable | true |
---|
|
🔦 Key Points
📆 Release Date: 2025-01-
__🎉 Highlights:
Home Page Navigation: Nav Group’s are now in Styleguide → enables creating Nav groups in Home page (esm-core)
Patient Search: Enhanced search functionality → adds 23
⚠️ Breaking Changes:
Renamed esm-patient-labs-app to esm-patient-tests-app → we expect non-lab-type results (like microbi, radiology, and more) to be handled here as well). Details in #1935.
Retired the ConnectedExtension
concept. Details in #1154.
Migrate React Form Engine from Formik to React Hook Form. Details in #349.
Renamed the patientResultUrl
property in the Patient Search configuration schema from patientResultUrl
to patientChartUrl
. This property represents the URL to navigate to when a patient is selected from the search results. Details in #1345.
⬇️ Where to find it: Demo at o3.openmrs.org (admin/Admin123) or download here: openmrs.org/download/
👷 Contributors
🔦 Highlights for Implementers
Login Page Improvements: Redesigned single page flow. | Expand |
---|
title | Details: Redesigned Single-Page Login Flow |
---|
| Redesigned single-page login flowThe login experience has been redesigned as a single-page flow for better user experience. When a user first arrives, they see only the username field. After entering their username, the password field smoothly appears below it. The login page features a new attribution footer, positioned discretely in the bottom left corner. This footer contains four distinct elements in sequence: The text "Built with" The standard OpenMRS logo sprite The descriptive text "An open-source medical record system and global community A "Learn more" link that takes users to the OpenMRS website
|
|
Customizable Implementation Logos: Implementers can now add custom logos to the Login page footer via configuration for additional branding customization and attribution purposes. | Expand |
---|
title | Details: Customizable Implementation Logos |
---|
| Customizable implementation logosYou can now add custom logos for your implementation to the Login page through configuration. These logos appear in the footer, displayed sequentially after the default OpenMRS sprite. Configuration detailsAdd logos by including an additionalLogos array in the login page configuration: Code Block |
---|
{
"footer": {
"additionalLogos": [
{
"url": "path/to/logo.png",
"altText": "Organization Name",
"width": 100,
"height": 50
}
]
}
} |
These logos appear in the same orders as they are defined in the array. All the logos are positioned after the default OpenMRS sprite. Each logo maintains its specified dimensions while respecting responsive design principles. The list of logos is then displayed in the bottom right hand corner of the login page, opposite the attribution footer. These changes provide a balanced way for implementations to maintain both OpenMRS identity and their own individual branding on the login page. |
|
Patient Header Redesign: Clearer information hierarchy. | Expand |
---|
title | Details: Patient Header Redesign |
---|
| The Patient Header has been updated with improved visual elements and a clearer information hierarchy: Patient AvatarInteractive Elements |
|
Vitals Header Refinements: Refined to include a simplified overdue vitals indicator with more granular durations and clearer indicators for abnormal vitals. | Expand |
---|
title | Details: Vitals Header Refinements |
---|
| The Vitals Header has been refined to include the following design changes: Simplified overdue indicator: Improved contrast and readability for abnormal values: Improved spacing between elements in the header for improved readability.
|
|
Patient Search Enhancements: Added advanced filtering by attributes like strings, concepts, and locations; and, |
with configurable options for customizing search fields, restored recently searched patients functionality | Expand |
---|
title | Patient Search Enhancements |
---|
| Recently Searched PatientsWe’ve restored the ability to view recently searched patients in the Compact Patient Search UI. This logic is configurable and implementers can toggle it by setting the showRecentlySearchedPatients configuration property in the Patient Search app’s configuration schema. Advanced Search FilteringIt is now possible to filter search results based on multiple person attribute types including strings, concepts, and locations for more granular searches. |
|
Printable Prescriptions |
Print the ability to print prescriptions |
→ allows users to generate clear, legible prescriptions, minimizing the risk of misinterpretation associated with handwritten prescriptions.Location tags, so if drugs are not available at the site, the patient can seek them elsewhere. | Expand |
---|
title | Details: Printable Prescriptions |
---|
| It is now possible to print a patient's prescriptions from the Dispensing app. The Prescriptions table has been updated to include a Print button in the Prescription details tab. Clicking this button launches a modal that includes: |
|
Visit Location Tags: Added location tags → ensures |
that location as a login location has a visit location tag (for single-location sites) or has a visit location in its ancestor tree. |
Patient Lists: Added mutation to update patient lists → ensures new patients are added seamlessly by updating cohort data after submission.
Form Builder Concepts: Added the ability to manually add answer concepts → allows users to | Expand |
---|
title | Details: Visit Location Tags |
---|
| To align with the EMR-API module convention, every location tagged as a login location must also have a visit location tag (for single-location sites) or have a visit location in it’s ancestor tree. The O3 reference application now restricts visits to locations tagged as visit locations and defaults the visit location to the “nearest” visit location associated with the session location. Additionally, the Start Visit form has been augmented to support this concept of visit locations. |
|
Lab Frontend Module: Provides basic laboratory functionality for sites without a dedicated Lab Information System (LIS). | Expand |
---|
title | Details: Lab-Lite Functionality |
---|
| The Laboratory frontend module for O3 provides basic lab functionality for sites that don't have a dedicated Lab Information System (LIS). It supports: Managing test orders - including tracking order statuses (ordered, in progress, completed, declined) Managing test results - entering new test results and editing existing ones. Queue functionality - transitioning patients across queues.
|
|
React Form Engine: Performance and Stability Improvements: Migrated from Formik to React Hook Form and adopted the OpenMRS expression engine for evaluating expressions. | Expand |
---|
title | Details: Performance and Stability Improvements |
---|
| Migration from Formik to React Hook Form The React Form Engine (RFE) is now running React Hook Form under the hood. React Hook Form (RHF) is a lightweight form validation library that leverages React hooks to manage form state and validation with minimal re-renders and boilerplate code. All RFE form components now leverage RHF's hooks and methods for managing form state and validation. We’ve implemented a new form processing architecture to abstract the form engine from the underlying domain objects (e.g., Encounter, Patient). This paves the way for a world in which the RFE can be used in contexts beyond just the Encounter-driven domain, such as building registration forms.
New package nameWe’ve renamed the library from @openmrs/openmrs-form-engine-lib to @openmrs/esm-form-engine-lib to match the naming convention of other libraries in the O3 ecosystem. Implementers referencing the library using the old package name will need to switch to the new package name. Adoption of the OpenMRS global expression runnerRFE is now leveraging the OpenMRS expression runner for safer expression evaluation than the previous eval -based approach. This change fixes a whole host of issues related to expression evaluation. Read the linked PR description for a list of potential breaking changes and suggestions for how to overcome them. |
|
Form Builder Improvements: Reordering of questions is now possible across sections via drag-and-drop. Plus new field rendering types, and easier answer concepts. | Expand |
---|
title | Details: Form Builder Improvements |
---|
| Reordering questions across sectionsThe drag-and-drop functionality in the Interactive Builder has been improved so that it’s now possible to drag questions across different sections. New field rendering typesWe've added new rendering types to the Interactive Builder: Easier answer conceptsImplementers can now search for and add specific concepts as answers to |
|
coded questions, a concept of type `Coded`. This is similar to adding a backing concept. |
|
Form Builder Markdown: Added support for markdown-based questions → enables creation and editing of questions with rich text formatting, enhancing flexibility and clarity in forms.
Performance: …
Something else…
⚠️ Breaking Changes: BREAKING: O3-2563 Rename esm-patient-labs-app to esm-patient-tests-app by @brandones in #1935
⬇️ Where to find it: Demo at o3.openmrs.org (admin/Admin123) or download here: _______Left Panel Sub-menus: New reusable NavGroup component in the style guide. | |
Data Fetching Performance Improvements: Optimized data revalidation strategy that reduces the number of network requests sent to the backend. | Expand |
---|
title | Details: Data Fetching Performance Improvements |
---|
| We've implemented a more conservative caching approach by disabling most automatic data revalidations in the global SWR configuration. This change: Reduces unnecessary network requests for data that rarely changes. Improves development debugging by reducing network noise. Enhances UI responsiveness during data mutations.
Technical details: We've modified the global SWR configuration to disable most automatic revalidations by default. We've maintained the ability to override the default caching strategy through child SWRConfig components. The SWRConfig component merges configurations from child components with the parent configuration, meaning that any child component can override the default caching strategy by providing its own configuration options. This means that it's still possible to opt-in to more aggressive automatic revalidation if needed.
With this change, we're seeing a pretty significant performance improvement in loading the app and its perceived snappiness. |
|
Various i18n Improvements: More translations for French, Spanish, Portuguese, Quechua, Vietnamese, and Chinese! | Expand |
---|
title | Details: i18n Improvements |
---|
| 3.2.1 includes a slew of i18n improvements including: Improved translation support for French, Spanish, Portuguese, Quechua, Vietnamese, Chinese, etc. More locales added to RefApp - Portuguese, Chinese, Portuguese, Vietnamese.
This would be possible without our wonderful community of translators Get started with translating OpenMRS to your language by reading our translation guide! |
|
📸 Example Visual Changes
Image RemovedImage Removed PrintingCSaude: Yassin Nurmahomed Welcome CSaude-Mozambique team!
Health IT (UoN): Felix Kiprotich
Mekom: Kakumirizi Daud Vineet Sharma Usama Idriss Kakumba
Madiro: Pius Rubangakene Joshua Nsereko
OpenMRS Support: Dennis Kigen Brandon Istenes Samuel Male nethmi Veronica Muthee
Palladium-Kenya: itskios09 Kennedy Makombe Donald Kibet
PIH: Chi Bong Ho Mark Goodrich Fiona Anderson
UCSF: Jovan Ssebaggala Cynthia Kamau Hadijah Kyampeire JONATHAN AJAL ODORA Jamie Arodi
UW ITECH DIGI: Ian Bacher Reagan patrick Makoba
Independent Contributors: flosell Mujuzi Moses SSEBAANA Suubi Joshua amosmachora Mutagubya Jonathan Bhargav Kodali cnwadike D-matz Juliet Wamalwa Njidda Salifu vijaykv omosh twiine virajwathsalag williemutua McCarthy Mutebi Code:
👷 Contributors
Thank you so much to the following contributors - you make releases like this possible! Alphabetically by Organization affiliation: