// the find
openmrs/openmrs-core
OpenMRS API and web application code
OpenMRS is a 20-year-old open-source EMR platform used in resource-constrained healthcare settings, primarily across Africa and Southeast Asia. It provides a Java/Spring/Hibernate core with a module system that lets implementers extend it without touching the core. This is infrastructure-grade medical software with real production deployments in clinics that have no alternative.
The module architecture is genuinely well-designed — you can add features, replace services, or swap authentication schemes without forking the core. The domain model is thorough and reflects real clinical workflows: encounters, observations, orders, programs, and patient identifiers all have the kind of nuance (voiding vs. deleting, concept hierarchies, order discontinuation rules) that you only get from people who've seen production data go wrong. Active community with real adoption means the issue tracker reflects real-world edge cases, not hypothetical ones. Liquibase for schema migrations with custom extensions (including Postgres/MySQL type handling) means schema changes are traceable and reversible.
The Travis CI badge still points to travis-ci.org (dead), and the README references Maven 3 and Java 8 minimums — small signals, but the documentation doesn't reflect where the project actually is today. Docker support is explicitly 'work in progress' with no hot-reload and a full rebuild required on any code change, which makes local development genuinely painful. The legacy UI layer (JSP-era) and the newer Microfrontends approach coexist uneasily; new contributors will hit both and it's not obvious which path to follow. The concept dictionary model — while powerful — has a steep learning curve; a wrong concept mapping in production can silently corrupt clinical data in ways that are hard to audit after the fact.