Introduction to OpenMRS

OpenMRS is both a software and a community. As a software, it serves as an electronic medical record system (EMR) originally designed for developing countries. Through its open source community it has grown into a medical informatics platform used on every continent. This page will provide an introduction to the OpenMRS software: our electronic medical record and the platform supporting it.  If you are interested in learning more about the OpenMRS community and how we work, you may try starting here.

Why OpenMRS?

Everyday millions of people are infected with diseases such as HIV/AIDS, multi-drug resistant tuberculosis, and malaria. In developing countries, lack of education and resources raises the number of preventable deaths. To handle the needs of treatment an efficient information management system is needed but many developing countries still use paper records. OpenMRS was created as a response to these challenges in developing countries.

Initially, OpenMRS was built to support HIV care in a couple of settings (in Kenya and Rwanda); however, from the very beginning we knew that it would be artificial to create a vertical HIV-specific solution, since patients with HIV also have other medical problems.  We also knew that the same programs trying to treat HIV were simultaneously confronting malaria, tuberculosis, maternal health, primary care needs, and many other issues.  Therefore, we designed OpenMRS to be a generic medical record system that can support the care of patients, gathering observations, encounters, notes, and other data from the healthcare system and rendering those in summaries, reports, and data views that would improve the effectiveness of the people using the system.

What is OpenMRS?

OpenMRS is a Java-based, web-based electronic medical record.  We started from a simple (at least it used to be simple) data model, wrapped that into an API, and then built a web-based application that uses the API.  The OpenMRS API works like a "black box," hiding the complexities of the data model beneath it and ensuring that applications and modules using the API work with a similar set of business rules for managing the electronic medical record system data.  See our technical overview page for more details.

At the heart of OpenMRS is a concept dictionary.  This dictionary, much like a typical dictionary, defines all of the unique concepts (both questions and answers) used throughout the system.  Using combinations of questions and answers, we can define observations (observable data) as well as forms that gather multiple observations within a single encounter.  Our first systems were built by taking very carefully considered paper forms and turning them into electronic forms by cataloging all of the concepts on the forms (questions and answers) and then organizing these into an electronic schema (hierarchy) that represented all the data on the paper forms.  By doing this, we could easily capture all of the data from the paper forms into the computer system as discrete, coded data that the computer could understand and then begin using those data to improve patient care.  Over time, we are seeing more cases where data are being directly entered into the system through web-based forms or mobile solutions.

OpenMRS is constructed to support modules. Using modules, implementations are able to modify the behaviour of the system to meet their local needs without everyone having to agree on a single approach (i.e., allowing us to avoid the failure-prone "one hammer to fit all nails" approach). You can see the list of available modules in our module repository. Modules have full access to the system, so they can add tables in the database, alter behavior of the API, and/or add or change web pages in the web application as needed to meet their needs.

OpenMRS has grown from few organizations to a massive collaborative effort. It has always been based on the principles of openness and sharing ideas, software and strategies for deployment and use. OpenMRS is now in use in clinics in Argentina, Botswana, Cambodia, Congo, Ethiopia, Gabon, Ghana, Haiti, Honduras, India, Indonesia, Kenya, Lesotho, Malawi, Malaysia, Mali, Mozambique, Nepal, Nicaragua, Nigeria, Pakistan, Peru, Philippines, Rwanda, Senegal, South Africa, Sri Lanka, Tanzania, The Gambia, Uganda, United States, Zanzibar, Zimbabwe, and many other places. It is supported by individuals, organizations, government aid groups, NGOs, and for-profit and non-profit corporations.

Feel free to browse our wiki and don't hesitate to let us know where things can be improved. More importantly, consider rolling up your sleeves and help us improve. Join a mailing list or hop into IRC or discover our Q&A site and share your questions/concerns. If you're a developer, check out our New Developers' Guide. If you are interested in implementing OpenMRS, check out our Implementors' Guide and How to get support.  We're all in this together!