• Stars
    star
    1,234
  • Rank 38,045 (Top 0.8 %)
  • Language
    Java
  • License
    Other
  • Created over 12 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OpenMRS API and web application code

OpenMRS

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. Docker build
  3. Navigating the repository
  4. Software Development Kit
  5. Extending OpenMRS with Modules
  6. Documentation
    1. Developer guides
    2. Wiki
    3. Website
  7. Contributing
    1. Code
    2. Code Reviews
    3. Translation
  8. Issues
  9. Community
  10. Support
  11. License

Build

Prerequisites

Java

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.

Maven

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.

Git

Install the version control tool git and clone this repository with

git clone https://github.com/openmrs/openmrs-core.git

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.

Deploy

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.

Docker build

Docker builds are still work in progress. We appreciate any feedback and improvements to the process.

The only prerequisite needed is Docker.

In order to build a development version run:

docker-compose build

It calls mvn install by default. If you would like to customize mvn build arguments you can do so by running:

docker-compose build --build-arg MVN_ARGS='install -DskipTests'

It is also possible to use the built dev image to run jetty:

docker-compose up

In order to build a production version run:

docker-compose -f docker-compose.yml build

It first builds the dev image and then an image with Tomcat and openmrs.war. It has no dev dependencies.

The production version can be run with:

docker-compose -f docker-compose.yml up

If you want to debug, you need to run a development version and connect your debugger to port 8000, which is exposed by default.

Unfortunately, at this point any code changes require full restart and rebuild of the docker container. To speed up the process, please use:

docker-compose build --build-arg MVN_ARGS='install -DskipTests'
docker-compose up

We are working towards providing support for Spring Boot auto-reload feature, which will be documented here once ready.

It is also possible to deploy an image built by our CI, which is published at https://hub.docker.com/r/openmrs/openmrs-core

You can run any tag available with:

TAG=nightly docker-compose -f docker-compose.yml up

It is also possible to run a development version of an image with:

TAG=dev docker-compose up

All development versions contain dev suffix. The cache suffix is for use by our CI.

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

https://wiki.openmrs.org/display/docs/OpenMRS+SDK

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.

Documentation

Developer guides

If you want to contribute please refer to these resources

Wiki

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

http://wiki.openmrs.org

Website

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

http://openmrs.org

Contributing

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.

Code

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!

Read

https://wiki.openmrs.org/display/docs/Code+Review

and get started with re-๐Ÿ‘€ pull requests!

Translation

We use

https://www.transifex.com/openmrs/OpenMRS/

to manage our translations.

The messages.properties 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 messages_es.properties file.

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

http://openmrs.org/join-the-community/translate/

Issues

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

https://issues.openmrs.org

Community

OpenMRS Talk OpenMRS IRC OpenMRS Telegram OpenMRS Wiki

Support

Talk to us on OpenMRS Talk

License

MPL 2.0 w/ HD ยฉ OpenMRS Inc.

More Repositories

1

openmrs-contrib-android-client

Android client for OpenMRS
Kotlin
175
star
2

openmrs-module-webservices.rest

Provides RESTful web services for OpenMRS (REST API)
Java
84
star
3

openmrs-module-fhir2

The FHIR REST API and related services for OpenMRS
Java
66
star
4

openmrs-esm-core

The core modules of the OpenMRS 3.0 Frontend system
TypeScript
59
star
5

openmrs-esm-patient-chart

This repo houses all EMR patient chart components for OpenMRS v3
TypeScript
44
star
6

openmrs-module-radiology

๐Ÿฅ OpenMRS Radiology Module
Java
41
star
7

openmrs-module-fhir

Implements REST and Java APIs to access OpenMRS via FHIR Specification.
Java
41
star
8

openmrs-module-htmlformentry

HTML Form Entry module
Java
40
star
9

openmrs-distro-referenceapplication

The reference distribution of the OpenMRS EMR application (v3)
Shell
40
star
10

openmrs-esm-patient-management

Microfrontends for the management of patients (appointments, patient lists, patient search, registration, and service queues).
TypeScript
38
star
11

openmrs-module-hl7query

An OpenMRS module to export HL7 messages
Java
22
star
12

openmrs-module-reporting

Reporting module in openmrs
Java
20
star
13

openmrs-react-components

Common React UI components
JavaScript
20
star
14

openmrs-ocl-client

OCL Client for OpenMRS
TypeScript
19
star
15

openmrs-contrib-telemedicine-app

The Nigeria Telemedicine App is light weight, easy to use telemedicine mobile app developed to make health services more accessible to the Nigerian population.
Kotlin
19
star
16

openmrs-sdk

OpenMRS SDK is a toolset which facilitates OpenMRS development
PLpgSQL
17
star
17

openmrs-module-uiframework

OpenMRS UI Framework
Java
16
star
18

openmrs-module-cdagenerator

User-requested generation of HL7 Clinical Document Architecture (CDA) documents
Java
16
star
19

openmrs-esm-home

The homepage microfrontend for the OpenMRS SPA
TypeScript
15
star
20

openmrs-rfc-frontend

Request For Comments: A modular frontend for OpenMRS
14
star
21

openmrs-module-emrapi

Higher-level APIs to support building EMR functionality in OpenMRS, to supplement the data-level APIs in the OpenMRS core.
Java
14
star
22

openmrs-module-xforms

A browser based forms module which adds XForms support and related services to XForms clients, like user and patient download.
HTML
13
star
23

openmrs-module-appointmentscheduling

Module for scheduling patient appointments
Java
13
star
24

openmrs-module-coreapps

Provides apps for performing the common tasks
Java
12
star
25

openmrs-module-dhisreport

Openmrs module to
Java
12
star
26

openmrs-eip

An EIP toolbox for OpenMRS: the OpenMRS Camel Component and a Spring Boot app to launch it.
Java
12
star
27

openmrs-standalone

A simplified, all-inclusive installation option with both an embedded database and web server.
Java
12
star
28

openmrs-contrib-ansible-docker-compose

An OpenMRS ansible role responsible for deploying all the docker-compose files required by OpenMRS infrastructure.
Shell
12
star
29

openmrs-esm-template-app

A "Hello World" app you can use as a template for creating new microfrontend apps in OpenMRS v3
TypeScript
12
star
30

openmrs-esm-form-engine-lib

React Form Engine library for O3
TypeScript
10
star
31

openmrs-module-spa

The OpenMRS Java module that allows Tomcat to serve a Single-SPA
Java
10
star
32

openmrs-contrib-qaframework

The end-to-end automated tests for OpenMRS 2.x Reference Application.
Java
9
star
33

openmrs-module-patientmatching

OpenMRS Patient Matching Module
Java
9
star
34

openmrs-contrib-rest-api-docs

OpenMRS REST API documentation
9
star
35

openmrs-module-smartonfhir

SMART-on-FHIR App Launch for OpenMRS and FHIR2
Java
9
star
36

openmrs-module-metadatasharing

Metadata Sharing Module allows all kinds of metadata (concepts, locations, roles, etc.) to be exchanged between different OpenMRS installations.
Java
9
star
37

openmrs-esm-api

Moved to openmrs-esm-core
TypeScript
8
star
38

openmrs-module-openconceptlab

Java
8
star
39

openmrs-contrib-id

A self-service management system for the OpenMRS ID single sign on identity.
JavaScript
8
star
40

openmrs-module-bedmanagement

The Bed Management module brings in the data model, DAO entities, services and REST API layers for managing beds, admission locations and all other backend entities that relates to IPD Ward Management.
JavaScript
8
star
41

openmrs-module-sync2

A new implementation Sync module that uses FHIR and atom feed. Supports parent-child synchronization of multiple OpenMRS servers in one enterprise, where most (technical) management is done at a central site, but patients are seen at many clinics in a hospital network.
Java
8
star
42

openmrs-module-legacyui

The legacy user interface for OpenMRS Platform 2.x is chiefly comprised of administrative functions and the patient dashboard. Apparently, a new and more contemporary UI has been introduced via a UI framework and the legacy UI is kept around for administrative functions that are not yet implemented in the new UI. To retire the Legacy UI as planned, it is required to move the implementations and modules that still rely on it in order to maintain backwards compatibility. The main idea behind this project is to move legacy UI functions into an OpenMRS module that these implementations can install until they are able to migrate away from it, since most of the implementations of OpenMRS around the world are running OpenMRS 1.9.
Java
8
star
43

openmrs-esm-form-builder

OpenMRS Form Builder microfrontend
TypeScript
7
star
44

openmrs-ngx-formentry

Form Engine for OpenMRS 3.0. Built in Angular.
TypeScript
7
star
45

openmrs-module-basicmodule

Parent project for Basic Module
Java
7
star
46

openmrs-contrib-itsmresources

Configuration management code for OpenMRS Infra team
Puppet
7
star
47

openmrs-module-attachments

UI components and backend web services to upload, view and manage attachments within OpenMRS.
Java
7
star
48

openmrs-module-appframework

Application development framework for OpenMRS
Java
7
star
49

openmrs-module-oncology

Oncology module for OpenMRS
Python
7
star
50

openmrs-module-uicommons

UI Library that has common JS/CSS/HTML/templates/fragments etc.
JavaScript
7
star
51

openmrs-esm-cohortbuilder-app

The Cohort Builder is a tool in OpenMRS 3.0 in the Reporting Compatibility module that lets the user perform ad-hoc queries for patients with defined characteristics, and combines multiple queries into more complex ones.
TypeScript
7
star
52

openmrs-contrib-addonindex

Web application that indexes Add-Ons for OpenMRS
Java
6
star
53

openmrs-module-patientflags

Provides a mechanism for marking patient records with important messages within OpenMRS
Java
6
star
54

openmrs-module-mysqletl

This is the OpenMRS Module that will perform ETL from MySQL database to datawarehouse.
Java
6
star
55

openmrs-owa-cohortbuilder

JavaScript
6
star
56

openmrs-module-referenceapplication

A module that provides the basic web features
SCSS
6
star
57

openmrs-module-insuranceclaims

For checking patient insurance enrolment on registration (in external Insurance Management Information System) status and submitting claims (managing patient billing)
Java
6
star
58

openmrs-android-client-user-guide

User guide for OpenMRS Android Client
6
star
59

openmrs-contrib-atlas

OpenMRS Atlas Server
JavaScript
5
star
60

openmrs-module-sync

Synchronizes data across multiple instances of OpenMRS
Java
5
star
61

openmrs-module-omodreloader

Reloads modules whenever respective omods change in specified paths
Java
5
star
62

openmrs-esm-stock-management

TypeScript
5
star
63

openmrs-esm-login

Moved to https://github.com/openmrs/openmrs-esm-core/tree/master/packages/apps/esm-login-app
TypeScript
5
star
64

openmrs-contrib-metadatarepository

Central repository of OpenMRS meta data
Java
5
star
65

openmrs-module-radiologyapp

Radiology App
Java
5
star
66

openmrs-esm-patient-chart-widgets

Patient dashboard widgets microfrontend for the OpenMRS SPA
TypeScript
5
star
67

openmrs-module-idgen

Provides patient identifier generation for other OpenMRS modules
Java
5
star
68

openmrs-module-addresshierarchy

Allows OpenMRS address fields to be constrained and provides selectors for constrained address fields
Java
5
star
69

openmrs-module-event

Provides an event bus for OpenMRS
Java
5
star
70

openmrs-module-chartsearch

liquibase.xml
JavaScript
5
star
71

openmrs-esm-root-config

A javascript module for setting up and configuring your SPA
JavaScript
5
star
72

openmrs-module-dataimporttool

A system to migrate from SQL-based databases into OpenMRS
Java
5
star
73

openmrs-owa-sysadmin

OpenMRS System Administration Open Web App
JavaScript
5
star
74

openmrs-test-3refapp

JavaScript
4
star
75

openmrs-owa-labworkflow

JavaScript
4
star
76

openmrs-module-ebolaexample

Demonstrates Ebola-related functionality on top of OpenMRS 2.x
Java
4
star
77

openmrs-module-allergyapi

Java
4
star
78

openmrs-book-guide

OpenMRS Guide
4
star
79

openmrs-module-orderentryui

JavaScript
4
star
80

openmrs-book-developer-manual

OpenMRS Developers Manual
4
star
81

openmrs-esm-patient-registration

Moved to https://github.com/openmrs/openmrs-esm-patient-management
TypeScript
4
star
82

openmrs-owa-obsadmin

Open Web Application for managing patient observations data
JavaScript
4
star
83

openmrs-module-dhisconnector

Java
4
star
84

openmrs-module-uilibrary

Library of useful widgets, decorators, and fragments for the UI Framework module
JavaScript
4
star
85

openmrs-module-oauth2login

Delegates user authentication to an OAuth 2.0 authentication provider.
Java
4
star
86

openmrs-module-adminui

Administration tools for OpenMRS Reference Application
Groovy
4
star
87

openmrs-module-htmlformentry19ext

Extensions to the HTML Form Entry module to support OpenMRS 1.9 changes
Java
4
star
88

openmrs-module-registrationapp

Registration UI for the Reference Application
Java
4
star
89

openmrs-contrib-keycloak-auth

A plugin for Keycloak to authenticate users against the OpenMRS data store
Java
4
star
90

openmrs-module-casereport

Provides functionality for generating and submitting case reports for patients
Java
4
star
91

openmrs-module-queue

Outpatient queue management OpenMRS module.
Java
4
star
92

openmrs-esm-styleguide

Moved to https://github.com/openmrs/openmrs-esm-core/tree/master/packages/esm-styleguide
HTML
4
star
93

openmrs-contrib-uicommons

CSS
3
star
94

openmrs-contrib-planet

OpenMRS Planet
3
star
95

openmrs-contrib-fhir2-ig

Implementation Guide for the FHIR2 module
GLSL
3
star
96

openmrs-esm-user-dashboard-widgets

TypeScript
3
star
97

cbr-docker-ohie

Dockerization of the OpenMRS instance hosting the casereport module, DHIS2 and the OpenHIE components required for case based surveillance
PLpgSQL
3
star
98

cbr-docker-openempi

Dockerization of OpenEMPI
Shell
3
star
99

openmrs-module-printer

Provides basic services for managing printers with OpenMRS and printing to network printers via sockets
Java
3
star
100

openmrs-distro-platform

This project is used to package the core OpenMRS war file with bundled modules
Dockerfile
3
star