2. Deploy OpenMRS to hundreds of facilities
…without hundreds of sysadmins
…“few moving parts”
Consistent configuration everywhere
…shared metadata
…never manually modify configuration
…centrally managed via modules
“Distribution” means a packaged, pre-configured
OpenMRS, with a custom UI for specific
workflows.
3. OpenMRS 1.9 (we want Visits)
MVP/CIEL Concept Dictionary
Metadata Sharing
HTML Form Entry
HTML Form Entry 1.9 Extensions
UI Framework
UI Library
App Framework
…and the Kenya EMR
module to tie it all together
4. MoH
Content
(Facility MVP/CIEL
Dictionary updates Dictionary
index, etc) (currently via SQL dump) Server*
Official Form
Final forms Devs
Metadata Development Devs
(via MDS) Devs
Server Server
github
Distribution
ZIP
VM
Packaging
Facilities ping Official
Metadata Server for
new distro versions
… Facilities
Facilities Facilities Facilities
5. Distribution “content” = MDS packages,
included in our
Also used to move completed forms from
Form Development server to Official Metadata
server
◦ Validate forms to ensure they only refer to
MVP/CIEL concepts before they are “final”
7. Works with Metadata Sharing, so it fits in our
distribution model
◦ Allows for distributed form development
Just HTML, so it’s easy to embed forms in our
UI workflows
8. We want simple UI workflows, custom-built
for our use case.
UI Framework makes these quick to develop
◦ good support for AJAX-y actions
◦ zero module redeployments
Widgets intended for reuse by others go in
the UI Library module
9. Lots of apps, each encapsulating a specific
limited workflow
◦ Front Desk Registration
◦ Vitals/Triage station
◦ Medical Encounter
◦ Medical Chart
◦ Lab Result Entry
◦ Reports
◦ Admin
Enable apps for specific users via privileges
10.
11. Activator that loads MDS packages at startup
MetadataConstants.java, defining all our
metadata by UUID
User Interface
◦ Lots of controllers and GSPs
◦ A bit of Javascript
Maven script for building the distribution
12. mvn package –DbuildDistro=true
◦ Builds the kenyaemromod project
◦ Fetches omod files from modules.openmrs.org
Using a snapshot version of a dependent module takes
extra work--which is good! Currently only MDS.
Could be more elegant, but it works.
13. Package a bunch of omod files in a ZIP
Load them all in one atomic action
Figures out the dependencies
14. Upload a new distribution zip file.
moduledistro figures out what to do.
Easy!
Next step:
automatic
downloads
15. 1. Start with
OpenMRS 1.9
◦ Remove bundled
modules
◦ Bundle just the
moduledistromodule
2. Get the MVP/CIEL
dictionary
16. 3. Upload our
distribution zip
The zip contains
just omod files.
◦ moduledistro figures
out how to start them
in the right order
◦ kenyaemr.omodhas
content as MDS
packages
17.
18. A few things absolutely
need to be managed locally
19. Demo -- not yet complete :-)
◦ https://69.91.227.205/openmrs
◦ User/pass = demo/demo
Code is on github:
◦ github.com/djazayeri/openmrs-module-kenyaemr
◦ github.com/djazayeri/openmrs-module-uiframework
◦ github.com/djazayeri/openmrs-module-uilibrary
◦ github.com/djazayeri/openmrs-module-appframework
◦ github.com/PIH/openmrs-module-moduledistro
Everything except the Kenya EMR module is in the
module repository
Follow our progress at openmrskenya.blogspot.com