Replacement for openmrs sync module based on FHIR (as much as possible) and atom feeds
- LOE: 6+ months
- Customers: of interest to many existing OpenMRS implementations (many are desperate for a usable & reliable sync solution)
Support 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.
- one Parent OpenMRS server, and multiple Child OpenMRS servers.
- Parent defines all metadata and configuration (and children synchronize this).
- Children synchronize a subset of patients with Parent (e.g. those in the catchment area of one clinic) and push data on these patients
- Children initiate all synchronization, based on:
- reading an atom feed published by Parent, pulling more data for any events of interest
- pushing data that is entered on the Child
There are several independently-useful parts of this project that can be done before pulling everything together.
- Publish an event feed from OpenMRS
- can leverage existing ICT4H and Bahmni code for this
- Update the OpenMRS FHIR module
- Update from DSTU2 to STU3 (released April 2017)
- Refactor module to be more extensible
- support for plugging in processors & resources
- use a Strategy Pattern, and extract current hardcoded implementations as "default strategy"
- Ensure we can import/export all relevant OpenMRS transactional data
- Implement one-way sync of domain objects that can't be fully represented using FHIR (e.g. some kinds of metadata)
- ThoughtWorks wrote a module for Bangladesh that synchronizes concepts; may be ready to use as-is
- Mechanism to define patient subsets / catchment areas for subcenters
We already know of some implementation strategies from existing research done by Bahmni
More requirements gathering to see if those strategies miss any high-value use case
- Pull all of this together into the Sync solution
Sync 2.0 will use atom feeds for notifications on what needs to be synchronized. More on the approach: Atomfeed for Sync 2.0
Changes required to the FHIR module: Changes to the FHIR module
Architecture of the module is available here: Sync 2.0 Architecture Overview
Dealing with errors and keeping an audit log: Auditing and error handling
Methods of transferring objects: FHIR Resource List for Sync, Non-FHIR resource list for Sync