Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2
include
outlinefalse
indent
exclude
typeflat
separatorbrackets
class
printabletrue

🔦 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:

    1. 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.

    2. Retired the ConnectedExtension concept. Details in #1154.

    3. Migrate React Form Engine from Formik to React Hook Form. Details in #349.

    4. 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

    Contributor Metrics

    image-20250123-061754.pngImage Added

    # PRs included: 243

    # of Orgs involved: 9

    % from OpenMRS Inc. Global Support: 33%


    🔦 Highlights for Implementers

    Login Page Improvements: Redesigned single page flow.

    Expand
    titleDetails: Redesigned Single-Page Login Flow

    Redesigned single-page login flow

    • The 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
    titleDetails: Customizable Implementation Logos

    Customizable implementation logos

    You 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 details

    Add 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
          }
        ]
      }
    }
    • Each logo object includes:

      • url - direct path to the logo image

      • altText - accessible description of the logo for screen readers

      • width - logo width in pixels

      • height - logo height in pixels

    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
    titleDetails: Patient Header Redesign

    The Patient Header has been updated with improved visual elements and a clearer information hierarchy:

    Patient Avatar

    • Has three distinct states:

      • Loading: Shows while the avatar image is being fetched

      • Empty state: Displays a placeholder when an image source exists but fails to load (possibly due to a server issue)

      • Loaded state: Presents the patient image in a consistent 56px × 56px format

    Patient Information

    • Improved gender representation through the following elements:

      • Icon matching patient's gender

      • Abbreviated gender text beside the icon

      • Refined identifier display:

      • Primary identifier shown in a gray pill container

      • Secondary identifiers presented in a clean, middot-separated list

    Interactive Elements

    • Updated details panel toggle that now reads "Show more" and "Show less". Previously, the toggle button label read as "Show details" and "Hide details".

    Vitals Header Refinements: Refined to include a simplified overdue vitals indicator with more granular durations and clearer indicators for abnormal vitals.

    Expand
    titleDetails: Vitals Header Refinements

    The Vitals Header has been refined to include the following design changes:

    • Simplified overdue indicator:

      • Removed the "Overdue" text and Time icon.

      • Replaced those with a pill with a red background and text showing the number of days overdue. The overdue durations are now based on the following thresholds:

        • 1-7 days overdue: "These vitals are X days old"

        • Up to two weeks overdue: "These vitals are over one week old"

        • Over two weeks overdue: "These vitals are out of date"

    • Improved contrast and readability for abnormal values:

      • Changed the color and font weight of arrow icons used to flag abnormal values to align more closely with the designs.

    • 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
    titlePatient Search Enhancements

    Recently Searched Patients

    We’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 Filtering

    It 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

    : Added

    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
    titleDetails: 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:

    • Checkboxes for selecting which prescriptions to print

    • A print preview of the selected prescriptions that includes:

      • The patient's name

      • Medication details:

        • Drug name

        • Dosage

        • Quantity

        • Refill count

        • Administration frequency

        • Any additional instructions

      • The prescribing facility's name

    Visit Location Tags: Added location tags → ensures

    that

    every

    location

    designated

    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
    titleDetails: 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
    titleDetails: 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
    titleDetails: 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 name

    We’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 runner

    RFE 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
    titleDetails: Form Builder Improvements

    Reordering questions across sections

    The 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 types

    We've added new rendering types to the Interactive Builder:

    Easier answer concepts

    Implementers 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.

  • Platform Upgrade: Released version 2.7 → includes security fixes and boosts developer performance with improved boot-up speed.

  • 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.

    Expand
    titleDetails: Left Panel Sub-menus

    We’ve added a reusable NavGroup component to the styleguide that allows implementers to add sub-menus and sub-links to the Left Panel.

    Data Fetching Performance Improvements: Optimized data revalidation strategy that reduces the number of network requests sent to the backend.

    Expand
    titleDetails: 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
    titleDetails: 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 (smile) Get started with translating OpenMRS to your language by reading our translation guide!


    📸 Example Visual Changes

    Lab Tests Management

    image-20250116-223541.png

    Printing Prescriptions Printing

    image-20250117-024221.png

    Patient Search

    image-20250117-025825.png


    🔍 Detailed Changelog

  • CSaude: 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

    👷 Contributors

    Thank you so much to the following contributors - you make releases like this possible! Alphabetically by Organization affiliation: