ABOUT: Michael Bontyes & Grace Potma are collaborating here to assemble the ideal How-To outline, so we can improve / evolve what is currently at om.rs/o3setup. Michael's guide: How to implement EMRs using OpenMRS 3.x https://michaelbontyes.github.io/implementing-openmrs3/ (work in progress, mainly an initial outline until steps get validated)
Implementation Team, trying to decide:
...
- Run O3 on Docker (as the web server approach is suggested rather than OpenMRS SDK)
- Use the Demo version - ok
- Use a fresh installation without demo data - how to?
- How to specify the O3 version and where to find the WAR file - how to?
- How to fork O3 and build your custom Docker images (recommended approach by Ian and Raff, rather than using host volumes)
- Fork O3
- Modify Dockerfiles
- CD/CI pipelines
- Commit images
- Update docker-compose.yml
- Configure the backend modules
- Find modules and generate OMODS https://addons.openmrs.org/search
- Add modules in the configuration file - ok
- Configure the frontend modules
- Find modules and generate their packages (distro.properties) - ok
- Add modules in the configuration file (import-map.json or spa-build-config.json) - ok
- Create or modify frontend modules (https://github.com/openmrs/openmrs-esm-template-app for example)
- Yarn Install, dev, and build
- Npx assemble - local package option: http://%22@openmrs/esm-template-app%22:%20%22file:///User/ibacher/openmrs-esm-template-app/dist%22,,
Source Assemble: https://github.com/openmrs/openmrs-esm-core/blob/304fd2e7d7f20e85cf8151453e67baddf84794ab/packages/tooling/openmrs/src/commands/assemble.ts#L124 - Yarn Publish or use
- Configure the frontend UI
- Modify the UI (navigation, slots, widgets) using a custom-config.json - ok
- Modify the style of the UI using a custom-style.css - how to?
- Modify the logo and images of the UI - how to?
- Configure the content
- How to manage metadata?
- Where to define the content of the modules - in progress
- Registration (field mapping + configuration)
https://github.com/openmrs/openmrs-esm-patient-management/tree/main/packages/esm-patient-registration-app- Basic info
- Identifiers
- Address hierarchy
- Relationships
- Registration (field mapping + configuration)
- How to manage forms + validation + calculated field - how to in O3 UI or Ampath? Form bank > Form Bank
- How to use field validation (for email and phone number for example) - how to?
- How to use Initializer configuration files - ok - how to reload? run startup.sh
- How to use OpenConceptLab for concept management - bugs/errors to investigate
- How to populate a source
- How to create collections
- How to reuse existing concepts from other sources
- How to map concepts to standardized concepts (CIEL, ICD, SNOMED)
- How to sync concepts in OpenMRS 3
- Using the Initializer module
- Using the sync module
- How to use Liquibase - how to? Using a module or iniz extend?
- Configure the language
- Administration language - how to?
- UI language - how to?
- Form language - how to?
- Manage O3 and patient data
- How to manage backups - how to?
- How to sync data across environments - how to?
- How to anonymize data - how to?
...
What is the recommended practice to modify and reload configuration files within Docker infra (initiated with the 3.x docker-compose) for:
Config Scope Path Existing documentation File example OpenMRS WAR files OpenMRS Core /openmrs/distribution/openmrs_core path for war file? needed for distro Initializer files Locations, Programs, Concepts, etc. /openmrs/distribution/openmrs_config configuration
reload without restart O3?Modules + OMOD files ID Gen, Appointments, Cohort, OCL, etc.
Data filter?
/openmrs/distribution/openmrs_modules distro.properties
Repos for OMODs? Or OMOD generation best practice?OWAs files /openmrs/distribution/openmrs_owas SPA modules esm-patient-chart-app
form builderspa-build-config.json? import-map.json
/usr/share/nginx/html/importmap.json ? > web app config modulesmodules minified?
/etc/nginx/nginx.conf > server config
SPA UI config Patient chart order JSON path? to overwrite default config or customize one? https://spa-modules.nyc3.digitaloceanspaces.com/@openmrs/config/config.json
in /usr/share/nginx/html/config.jsonLocalization files for OpenMRS Admin translations /openmrs/l18n ? locale_en.json Localization files for O3 UI Transifex? path? ? Liquibase files Create users? path? ? Runtime properties path? openmrs-distro.properties Theming files like logos and icons openmrs_logo_white.gif path? startup.sh OMRS home, config folder, modules, database config, catalina options, server startup /usr/local/tomcat/startup.sh
in backend containerImage layers? path? config? - VIM in container? > -u root
- OCL org and source creation
...