JavaScript Ecosystem

This page will be used to document the progress of the currently active project to manage and develop JavaScript tooling for OpenMRS.

Project Lead

@Pascal Brandt

Contributors

All feature requests and code contributions welcome!

Overview

This project aims to curate and harmonise the JavaScript work being done in the OpenMRS community and facilitate the development of broadly useful tooling.

Projects

The following projects exist in the OpenMRS JavaScript ecosystem.

General Tooling

The JavaScripts projects below are supported by the OpenMRS community and are intended to be general enough to be usable by anyone wanting to build OpenMRS applications using JavaScript. You can also us the OpenMRS SDK to create and deploy an OpenMRS Open Web App.

Open Web Apps Module

The Open Web Apps Module allows developers to build JavaScript/HTML/CSS-only apps that interact with the OpenMRS REST API and have them be statically served using the OpenMRS web application.

Yeoman Generator

The OpenMRS Open Web App Yeoman Generator is able to scaffold out the required boilerplate code and build tooling for an OpenMRS Open Web App. This allows you to get up and running almost instantaneously with building pure JavaScript/HTML/CSS applications on top of the OpenMRS platform.

JavaScript Library

The openmrs.js JavaScript library aims to be a JavaScript wrapper to the REST API with added functionality for common tasks.

Community Contributions

Many community members have already built excellent applications using JavaScript on top of the OpenMRS platform. Please feel free to add your work to this list:

  • Bahmni: OpenMRS distribution that integrates with other tools that aims to be an out-of-the-box hospital system

  • KenyaEMR: OpenMRS distribution for Kenya

  • eSaude EMR PoC: OpenMRS Point of Care application for Mozambique

  • ng-amrs: Angular.JS based UI application that is used by Clinicians, Patient care providers and other users

  • Concept Dictionary OWA: Concept dictionary functionality implemented as an OWA

  • Reference Application UI LibraryIt contains common utilities for developing OpenMRS UI

  • add your work here

Style Guide

OpenMRS uses the following JavaScript style guides.

Linter

Right now we are using ESLint for linting, since it's widely used, the project is highly active and it's very configurable. We recommend that you configure the build to fail on linting errors in order to keep code consistent and of high quality.

Vanilla JavaScript/Other

If you are using plain JS, React or some other framework, we recommend using the Airbnb JavaScript style guide. Airbnb provides ESLint configs for ES2015, as well as ES5 (see eslint-config-angular/legacy).

See the openmrs.js repo for an example usage in an ES2015 environement.

AngularJS

If you are developing an AngularJS application, please use John Papa's Angular Style Guide

This ESLint plugin implements the recommended style guide. See the concept dictionary OWA repo for an example of how to use the plugin with Gulp.

Resources

The following links may be useful for JavaScript application developers.

Documentation

JIRA Projects

Calls