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)

Specific Project:

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.

Technical Approach:

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

Project Breakdown:

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 subcentersWe already know of some implementation strategies from existing research done by BahmniMore requirements gathering to see if those strategies miss any high-value use case

Pull all of this together into the Sync solution

Short term goals:

FHIR/Sync module extensions to support additional entities

More control over the synchronization process, manual synchronization

Conflict resolution

Support for OpenMRS 1.X

Extensibility support to work with central repositories that are not OpenMRS - a MasterPatient Index, an SHR server and so on