Have you implemented OpenMRS? Please participate in the Implementation Site Survey. If you already have, thank you!
Skip to end of metadata
Go to start of metadata

Initial Statement:
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.

  1. Publish an event feed from OpenMRS
    • can leverage existing ICT4H and Bahmni code for this
  2. 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
  3. 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
  4. 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
  5. 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

  • No labels