OpenMRS Server

The Intelehealth platform uses OpenMRS as a backend to store data in a MySQL database, use OpenMRS’s business logic to perform functions such as access control and to use its REST-ful API. This section provides an overview of OpenMRS, it describes specific features and modules that are used in the Intelehealth platform. To learn more about OpenMRS, please refer to the documentation on the OpenMRS Wiki. Several useful pages from the OpenMRS wiki have been linked in this wiki, every effort has been made to fill in any gaps in documentation.

About OpenMRS

OpenMRS is an open source medical record system which has been widely used as an electronic health record system all over the world. OpenMRS is a flexible, modular, multi-layered system, and can be used in many different configurations. It was primarily built as an EHR system for hospitals and clinics, but works well even for community health applications.

Why OpenMRS

OpenMRS is modular, flexible and with a robust data model. Several digital health platforms use OpenMRS such as Bahmni and OpenSRP. Some of the key advantages provided by using OpenMRS as a backend instead of building a custom server-side backend for the Intelehealth platform are,

  • A flexible and robust data and information model, this has allowed for easy extensibility of the platform as new features are added

  • OpenMRS already has a number of basic features that are required for healthcare service delivery operations such as location based login, access control privileges, reports

  • A strong concept dictionary for robust data and information management

  • Interoperability using a FHIR API and an HL7 API. In addition, OpenMRS is an active member of OpenHIE

  • A number of national level health systems use OpenMRS, this has allowed for an easier adoption of the platform

  • Ease of hosting on a cloud and is scalable

The key features of OpenMRS that the Intelehealth platform uses are,

  1. Central Concept Dictionary: Definitions of all data (both questions and answers) are defined in a centralized dictionary, allowing for robust, coded data which can be mapped to multiple reference terminologies like ICD-10, SNOMED, LOINC, RxNorm etc.

  2. Security: User authentication with complex password support. Support for roles, privileges to separate what user can and cannot do.

  3. Patient Repository: Creation and maintenance of patient data, including demographics, clinical observations, encounter data, orders, etc.

  4. Multiple identifiers per patient: A single patient may have single or multiple identifier numbers like passport number, national id, medical record number etc. Intelehealth uses the OpenMRS ID as the main patient identifier, but additional identifiers such as a national ID like Adhaar may also be used.

  5. Flexible Data entry: The OpenMRS Platform allows multiple ways to build UIs for data entry such as the HTML FormEntry module or the XForms module. The Intelehealth platform uses a custom web application and a custom Android application for data entry supported by the REST API module that provides webservices.

  6. Data export: Data can be exported into a spreadsheet format for use in other tools (Excel, Access, etc.), including aggregation HMIS systems like DHIS2.

  7. Modular architecture: An OpenMRS Module can extend and add any type of functionality to the existing API and web application. 200+ available modules. Currently the Intelehealth platform uses the core OpenMRS platform and over 15 addon modules coupled together.

  8. Support for complex data: Radiology images, sound files, etc. can be stored as “complex” observations. Images captured by the Android application are stored as complex observations.

  9. Cohort management: The cohort builder allows you to create groups of patients that match a “criteria” for data exports, reporting, analysis etc. They can ma

  10. Localization / internationalization: Multiple language support and the possibility to extend to other languages with full UTF-8 support.

  11. Data reporting: Data can easily be extracted from the database and presented in the form of pre-built reports using the Reporting module.

Architecture & Tech Stack

The core of OpenMRS is the OpenMRS Platform which consists of the core database and the business logic as well as the OpenMRS Core API. In addition you can include addon Modules along with the platform. This results in the addition of more module-specific tables into the database. Modules add more functionality to the base Platform, for example the REST API Module adds a REST-ful webservices API for web and mobile clients to interface with the platform. A group of modules and the platform are bundled together and delivered as a Distribution. Modules are tightly coupled with the platform. A database of addon modules can be accessed here.

Some distributions may build Open Web Apps or Native Client Apps on top of the platform. Examples of distributions include Bahmni, KenyaEMR, OpenHMIS and the Reference Application. OpenMRS is a Java application and has restful webservices to enable building of web clients in AngularJS. More details about the tech stack and technologies used can be found here.

OpenMRS Reference Application (RefApp)

The OpenMRS Reference Application is a sample EMR application running atop the OpenMRS Core API. The OpenMRS Platform has always had a web application component; however, the web application focused primarily on basic administrative features and lacked most content, leaving it up to modules and administrators to provide EHR functionality and content. The Reference Application, on the other hand, strives to provide more of a starter set of content along with basic EHR functionality (e.g., registration, basic reports, etc.). The Reference Application comprises a handful of modules that run within the Java web application and provides a Groovy (a scripting language)-based framework for web development. This distribution is commonly referred to as the “RefApp”. The RefApp distribution provides a starting point for implementations to build on top of. The Intelehealth platform uses the RefApp as the base for the backend.

Tools to learn more about OpenMRS

The OpenMRS Wiki contains documentation about the platform. However, the documentation may not always be complete or available. If that is the case, you can ask a question on the OpenMRS Talk forum. The community is very active and questions are usually responded to within a few hours. In addition the IRC channel is a chat channel to interact with other developers as well as a community managers. OpenMRS also hosts an Implementer conference every year where you can interact with other implementing organizations, learn about best practices and participate in the growth of the platform. The Issues section provides a forum to create new Jira tickets with feature requests or bugs and for developers to pick up issues to solve and contribute to the development of the platform.

Watch an introductory webinar about OpenMRS

https://connect.johnshopkins.edu/p90p1ug59k4/?proto=true