openmrs/openmrs-core
DataGives developers a free, modular Java platform to build patient-centred electronic medical record systems.
OpenMRS Core is the API and web-application code behind a free, customizable patient-based electronic medical record system, aimed at improving care in resource-constrained settings. It matters most to teams that want to run or extend an EMR rather than use a finished hospital product: the core is a platform, and domain features are added through modules.
What you get and how it works
The repository builds a Java API jar plus a deployable openmrs.war web application, intended to run on a servlet container such as Tomcat or Jetty. The source tree separates api, web, webapp, and build-only tools code, so the core data and service layer can be consumed independently of the packaged web UI.
Extensibility is the distinguishing mechanism. The modular architecture lets implementations add or remove functionality per deployment; the project points developers to an existing module repository first and to module-authoring docs if no module fits extending with modules. That is what turns a generic EMR core into an implementation-specific record system.
Ways to run it
- Local Maven build: requires a Java JDK (minimum version 8 for the master branch), Maven, and Git. The build produces
webapp/target/openmrs.war, which can be deployed to Tomcat or Jetty; Jetty and Cargo can also run it directly for development build and deploy. - Docker: the only prerequisite is Docker. Development and production compose files are provided, and CI-published images are available; the README still describes Docker builds as work in progress, and notes that code changes require rebuilding and restarting the container Docker build.
- Optional backends: ElasticSearch can replace the built-in Lucene index, which requires rebuilding the search index after switching, and Grafana can be attached for log monitoring through extra compose files README.
Practical conditions
This is an on-premises-style Java application: you need your own application server or container runtime and the matching JDK. The Docker path lowers the tooling barrier but is explicitly not presented as stable tooling for rapid iteration. The core is a platform; expect to assemble domain functionality from modules rather than get a ready-made clinical configuration.
The repository is licensed under MPL 2.0 with a health disclaimer license. Stars and forks are not evidence of clinical suitability; assess modules, data handling, and your own deployment context against the project documentation OpenMRS wiki.
Written by AI from the project's README, updated October 30, 2026. The project's own docs are the source of truth.