By David Asaolu, July 11, 2024
OpenMRS is a digital health global good that began in 2004 in Eldoret, Kenya, with the initial aim of managing patient information at AMPATH healthcare facilities to combat the HIV/AIDS outbreak. Since then, OpenMRS has developed into a world-leading community and electronic medical record system that improves patient care for any health service, supports research, and optimizes the delivery of quality healthcare services worldwide.
Through the efforts and contributions of our global community, implementers, and partners, OpenMRS has become a reliable medical record platform that meets the diverse needs of users globally.
True to the natural lifecycle of any longstanding software, OpenMRS has undergone multiple major iterations and improvements to meet the evolving requirements of the community that utilizes it in their healthcare programs. Just like any healthcare software, the OpenMRS of today is built upon many years of prior code, knowledge, and experience by the community with earlier versions.
OpenMRS v1, the first version of OpenMRS, was launched in 2004. It introduced a modular backend with extension points for modules to add their frontend pages. OpenMRS v1 was built on Java Server Page (JSP) technology, which was one of the few options available at the time for building Java-based web applications.
JSP pages made the development of web pages slow and cumbersome but did have the benefit of ensuring all implementations used the same frontend technology. JSP has since become obsolete for developing web applications.
OpenMRS v2 was launched in 2011, introducing new features to the OpenMRS Reference Application (“RefApp”) frontend and UI. At this time, modern frontend technologies like React, Vue, and Angular were relatively new and yet to be adopted as best practices.
OpenMRS v2 used Groovy Server Page (GSP) technology, which enabled implementers to build new frontends for modules, easily debug frontend pages, and improve development time.
However, OpenMRS v2 had its shortcomings. Server-side rendering of web pages requires the server to build the views for every client, limiting the application’s scalability. Additionally, this outdated technology demanded greater development efforts to support different browsers and small screen sizes, such as tablets and mobile devices.
As OpenMRS v2 was adopted, newer frontend web technologies like React and Angular matured and became the preferred technologies for web application development. Consequently, several implementations began developing their own custom frontends for OpenMRS.
Some OpenMRS (OMRS) community members created Bahmni using the Angular web framework, in response to the urgent need for a more comprehensive point-of-care EMR system. Bahmni bundled OpenMRS together with other open source software that also provides essential tools for clinics, such as a Lab System (OpenELIS), Pharmacy/Dispensing System (Odoo), and RIS/PACS (DCM4CHEE). The name “Bahmni” was inspired by a remote village in India situated in the middle of a tiger sanctuary, serving as a reminder of the resource-constrained settings it addresses.
The Medical Record component of Bahmni was built on the OpenMRS platform but added separate technical layers of abstraction and a different UI/UX. As a result, frontend features developed for Bahmni cannot be used by v2 RefApp users, and vice versa.
Other implementations took a similar approach to Bahmni, by creating their own custom frontends. This unique-to-organization approach meant independent teams could leverage a frontend technology of their preference; however, this left each organization alone to maintain their own frontend. This fragmentation also made it even harder to share feature work across different implementations.
OpenMRS v3 (aka O3) leverages modern technologies and tools to eliminate the drawbacks encountered in previous versions and deliver exceptional software that meets the needs of its users. It is the most advanced version of the OpenMRS framework designed to aptly address the prior challenges by providing a modern and improved development, implementer, and user experience.
O3 offers a comprehensive suite of tools, components, APIs, and templates that empower you to create frontend applications for OpenMRS. Unlike previous versions, O3 is also optimized for small screen sizes like tablets, ensuring a smooth user experience across devices.
O3 runs on top of your existing OpenMRS database. It uses the OpenMRS Platform v2.6 and requires implementations to have at least Platform v2.3 or higher. O3 provides a smooth Point of Care user experience and promotes shared and efficient development practices.
O3 was created by community members, and is being improved and maintained by a growing network of contributor organizations and individuals. It is currently being used in production across multiple healthcare facilities in various countries worldwide, including:
We welcome newcomers to the O3 community! Here are some helpful starting resources:
David Asaolu is a Technical Writer, Developer Advocate, and Frontend Software Engineer based in Lagos Nigeria. As part of his Technical Writing Fellowship with the OpenMRS community in 2024, David contributes numerous articles about OpenMRS.