OpenMRS API and web application code
Switch branches/tags
Clone or download
mogoodrich Merge pull request #2713 from dsurrao/TRUNK-5424
TRUNK-5424: Post commit code review updates
Latest commit b9c5c04 Sep 18, 2018
Failed to load latest commit information.
.github add instructions to checklist in PR template Mar 22, 2017
.tx added Transifex configuration Feb 4, 2016
api TRUNK-5424: Post commit code review updates Sep 18, 2018
test TRUNK-5203 Remove unused dependency xmlunit Aug 10, 2017
tools GCI-142 for and while loop replaced with foreach (#2395) Dec 7, 2017
web Revert "TRUNK-5204 . Removed unused jstl dependency" Aug 10, 2018
webapp PLAT-30: Bundle the Add On manager OWA within the Platform (#2696) Aug 2, 2018
.editorconfig TRUNK-5298 Prevent editorconfig from trimming trailing whitespaces Dec 31, 2017
.gitattributes Converted to MPL 2.0 HD and standard line endings Mar 4, 2015
.gitignore TRUNK-5298 Add .editorconfig to force use of tabs in IDEs Dec 30, 2017
.travis.yml TRUNK-1916 Code coverage and Test report for OpenMRS Oct 9, 2016 GCI Identify typo or grammar errors in OpenMRS core Dec 27, 2016
LICENSE Converted to MPL 2.0 HD and standard line endings Mar 4, 2015 Removing empty line May 29, 2018 Remove unnecessary readme line before snyk badges Jan 4, 2018
checkstyle-suppressions.xml TRUNK-5301 Remove org.openmrs.arden resources Jan 4, 2018
checkstyle.xml TRUNK-5303 Use commons-lang3 instead of legacy commons-lang Jan 5, 2018
findbugs-include.xml add findbugs plugin (#2629) Jun 19, 2018
license-header.txt Converted to MPL 2.0 HD and standard line endings Mar 4, 2015
pom.xml Revert "TRUNK-5204 . Removed unused jstl dependency" Aug 10, 2018
ruleset.xml TRUNK-5091 Add PMD rules Mar 6, 2017


Build Status Coverage Status Codacy Badge

api: API test: test tools: tools web: web webapp: webapp

OpenMRS is a patient-based medical record system focusing on giving providers a free customizable electronic medical record system (EMR).

The mission of OpenMRS is to improve health care delivery in resource-constrained environments by coordinating a global community that creates a robust, scalable, user-driven, open source medical record system platform.

Table of Contents

  1. Build
    1. Prerequisites
    2. Build Command
    3. Deploy
  2. Navigating the repository
  3. Software Development Kit
  4. Extending OpenMRS with Modules
  5. Documentation
    1. Developer guides
    2. Wiki
    3. Website
  6. Contributing
    1. Code
    2. Code Reviews
    3. Translation
  7. Issues
  8. Community
  9. Support
  10. License




OpenMRS is a Java application which is why you need to install a Java JDK.

If you want to build the master branch you will need a Java JDK of minimum version 8.


Install the build tool Maven.

You need to ensure that Maven uses the Java JDK needed for the branch you want to build.

To do so execute

mvn -version

which will tell you what version Maven is using. Refer to the Maven docs if you need to configure Maven.


Install the version control tool git and clone this repository with

git clone

Build Command

After you have taken care of the Prerequisites

Execute the following

cd openmrs-core
mvn clean package

This will generate the OpenMRS application in webapp/target/openmrs.war which you will have to deploy into an application server like for example tomcat or jetty.


For development purposes you can simply deploy the openmrs.war into the application server jetty via

cd openmrs-core/webapp
mvn jetty:run

If all goes well (check the console output) you can access the OpenMRS application at localhost:8080/openmrs.

Refer to Getting Started as a Developer - Maven for some more information on useful Maven commands and build options.

Navigating the repository

The project tree is set up as follows:

api/ Java and resource files for building the java api jar file.
tools/ Meta code used during compiling and testing. Does not go into any released binary (like doclets).
web/ Java and resource files that are used in the webapp/war file.
webapp/ files used in building the war file (contains JSP files on older versions).
pom.xml The main maven file used to build and package OpenMRS.

Software Development Kit

For rapid development of modules and the OpenMRS Platform code check out the awesome SDK at

Extending OpenMRS with Modules

OpenMRS has a modular architecture that allows developers to extend the OpenMRS core functionality by creating modules that can easily be added or removed to meet the needs of a specific implementation.

Before creating your own module go to the OpenMRS Module Repository and see if there is already a module for your specific use case. If so deploy and try it and if a functionality is missing join the developers of the module to add a feature.

If you haven't found what you were looking for refer to the Module - wiki to learn how you can create a new module.


Developer guides

If you want to contribute please refer to these resources


If you are looking for detailed guides on how to install, configure, contribute and extend OpenMRS visit


If you are looking for more information regarding OpenMRS as an organization check


Contributions are very welcome, we can definitely use your help!

OpenMRS organizes the privileges of its contributors in developer stages which are documented here.

Read the following sections to find out where you could help.


Check out our contributing guidelines, read through the Developer guides.

After you've read up 👓 grab an introductory issue that is Ready For Work.

Code Reviews

You might not have the time to develop yourself but enough experience with OpenMRS and/or reviewing code, your help on code reviews will be much appreciated!


and get started with re-👀 pull requests!


We use

to manage our translations.

The file in this repository is our single source of truth. It contains key, value pairs for the English language which is the default.

Transifex fetches updates to this file every night which can then be translated by you and me on transifex website itself. At any time we can pull new translations from transifex back into this repository. Other languages like for ex. Spanish will then be in the file.

If you would like to know how to help with translations see


If you want help fix existing issues or you found a bug and want to tell us please go to


OpenMRS Talk OpenMRS IRC OpenMRS Telegram OpenMRS Wiki


Talk to us on OpenMRS Talk


MPL 2.0 w/ HD © OpenMRS Inc.