Skip to content

Distribution Package Structure

Michael Seaton edited this page May 4, 2020 · 3 revisions

Structure of distribution artifact packages

As described in the page describing the distribution project layout, this project contains various packages of the RwandaEMR. For example, the (imb-butaro and imb-rwinkwavu packages represent a specific set of deployment artifacts that make up the distributions installed at the Butaro and Rwinkwavu hospitals, respectively.

In OpenMRS, standard distribution artifacts include the OpenMRS core web application (openmrs.war), multiple modules (omods) that are installed to extend the capabilities of OpenMRS core, various front-end applications that are installed and communicate with the web application via web services (owas, esms, etc), and configuration files that OpenMRS loads in to set up metadata, execute data migrations, and perform maintenance.

Although various packaging options exist, the approach taken within the RwandaEMR is to build upon the latest community standards to package a distribution zip artifact that contains each of these distinct components in a standard, comprehensive, flexible directory structure.

The benefits of this approach are the following:

  • Comprehensive: All artifacts making up the OpenMRS distribution are present
  • Understandable: Artifacts are clearly organized
  • Componentized: Each consituent component is easily identifiable.
  • Updateable: Updates possible without full deployments. Tools can incrementally update.
  • Flexible: Deployment agnostic - can be installed to Docker, SDK, VM, etc as appropriate

This directory structure is as follows:

openmrs_webapps

This is where the core "openmrs.war" webapp file will be located. If desired, this is also where additional webapps could be located, if they were intended to run within the same Tomcat instance as OpenMRS, though this is generally discouraged.

openmrs_modules

All modules for the distribution will be located in this folder. These will all have an "omod" extension.

openmrs_owas

Any "owa" artifacts will be located here. These typically are "zip" packages of HTML/JavaScript

openmrs_config

This folder represents a set of configuration files that are deployed into the .OpenMRS/configuration directory and used to configure the OpenMRS application, typically by the Initializer module. This is typically used to deliver and deploy metadata configurations for a distribution as CSV files and other text-based artifacts.

openmrs_migrations

This remains TBD and conceptual. This may be where migration code is located that would execute prior to starting up the OpenMRS application.

openmrs_esm

This is also TBD and conceptual, as no ESMs are currently packaged within any distributions like this, though with the growth of Microfrontend ESMs in the community, this is likely needed.

openmrs_xyz

TBD - all folders prefixed with openmrs_ should be reserved for future possible adoption by the OpenMRS community. Anything without an "openmrs_" prefix is available for extension as needed. As an example, many implementations use "bahmni_config", "bahmni_apps", "odoo_config", etc for artifacts related to their Bahmni-based distributions.