What is O3?

If you’ve signed up for most of our communication channels, you might get a bit confused when you see the word “O3“. Well, we thought of that and wanted to give you a soft landing into what it’s all about.

On this page, you’ll understand O3 and its architecture. You’ll also get a hindsight view of what came before it—O1 and O2.

O1

O1, or OpenMRS 1, marks the beginning of our journey. This initial version was built to address the urgent need for a reliable EMR system in resource-limited settings.

Back then, our focus was on creating a foundational platform that could support various healthcare needs across different locations. We prioritized flexibility and adaptability, ensuring that the core system could be customized to fit diverse medical environments.

O2

In 2012 however, we moved on from O1 and decided to switch up the front end of our Ref app to something more user-friendly. However, one challenge we faced in this version was the technology stack we used in building it.

Most of the technology used in building this was quickly deprecated and not suitable for our use case - point of care.

Back then, we had a vision where multiple organizations could have the same platform and reference application interface but have custom modules and add-ons.

Screenshot 2024-08-17 at 12.26.09.png
The intended O2 architecture

However, over time, these organizations wanted to customize the front end of their application. So much so that in COVID, we had multiple organizations using the OpenMRS platform, each using a different UI.

Screenshot 2024-08-17 at 12.25.38.png
The outcome of the O2 architecture

We encountered this issue because we were trying to quickly build features for the pandemic and were unable to share these front-end features with our community. We were simply duplicating efforts at a global scale.

O3

“OpenMRS 3”, “3.x”, or “O3” is a more modular, responsive, and user-friendly version of the OpenMRS reference application. While building it, some ideas we had in mind included focusing on using modern technology such as JavaScript, ensuring interoperability, and implementing carbon design.

With O3, we had to decide on a unified skeleton that would be used across all OpenMRS applications so we wouldn’t have to create duplicates. That means you can simply integrate your micro frontend with the existing OpenMRS skeleton. So long as we share the same design pattern, you’re good.

To learn more about O3, watch the OpenMRS Open Source Software & Products Overview video at the OpenMRS Fundamentals Academy.

O3 System

The O3 ref app was built with modularity as one of our guiding principles. The system is structured around apps that exist within a system and communicate with one another.

The Base app is the foundation of the entire user experience. Other apps are built around it, but they need the base app to function.

Each app contains a number of functionalities, and data visualization features that enhance the app experience. Some features are integral to the system's functioning, while others can be turned on and off.

The community can develop new features and attach them to apps, and some features have functionalities that span multiple applications.

The O3 System Structure

The diagram below shows an example of how OpenMRS is structured within this framework. The Outpatients app gathers key features needed in a clinic, such as Appointment and patient priority management.

The Pharmacy app has functionalities like Medication Inventory and Drug Order tracking, while The Offline app makes key patient information available for mobile care without an internet connection.

All apps have access to and reference data from the Patient Chart, which is the main point of contact between our users (healthcare professionals) and all patient data.

Another important layer of OMRS 3 functionality is the Implementer tools app, which allows non-technical system administrators to configure the frontend application through a visual interface.

Within that layer, there's also the Concepts Dictionary - a database that defines data points to be collected and displayed in the Patient chart and across apps.

O3 Architecture

Each of the OpenMRS 3 apps has its own homepage and navigation structure, which are described in the Architecture diagram below.

If your organisation needs to add new functionality to your OpenMRS Distribution, use this diagram as a constant point of reference to help you understand how it may fit into this structure.

If all this feels a bit confusing, don’t fret; in the next section, we’ll get you started quickly, and you can start getting your hands dirty as easily as possible.