Skip to end of metadata
Go to start of metadata


Description: This workflow describes the process that the Shared Health Record will go through to save an inbound encounter.

Sponsor:  SHR community

Status:  Completed

Last Modified:  12th March 2015

Interfaces that an SHR should support

A Shared Health Record should support receiving of clinical document using an XDS.b interface. The document that is receives are expected to be IHE profiled CDA templates.

Another option for an interface into the SHR was to parse the document at the IL and pass the document in object form to the SHR for storage using a custom interface. We decided against doing this as the cons out weighed the pros. The pros and cons of this approach are listed below:


  • The IL needs to process the CDA document for validation reasons, if we were to parse the CDA documents at both the IL and the SHR this is an inefficiency. It would be better if this was just done in a single place.


  • To uphold the architectural principles of OpenHIE we should support a standardised message exchange format such that SHR implementation can be swapped out as needed.
  • Even an object model would have to be persisted to some format so that it can be sent across the wire, these may only be slightly more efficient than just persisting the document back to its CDA format.
  • Parsing the document was found to occur very quickly, the part that takes time is the validation that the document conforms to a particular template. We could configure the systems such that the IL does the validation and therefore the SHR can skip the validation step for efficiency.
  • The SHR can be setup so that it processes the CDA document asynchronously, this allows it to respond to a save document request as quickly as possible (see the workflow below, steps 8 - 10).


Technical details

For a more detailed design of how this can be implemented in the OpenMRS SHR reference application see: OpenMRS as the SHR design document.

RefInteractionEndpointDataTransaction Specification
1Send clinical documentXDS.b provide and register  
2Register document metadataXDS.b specified transaction  
4Forward clinical documentInternal system function  
5Store document as-is   
7Send clinical documentInternal system function  
8Parse and extract understood discrete data from the document   
9Persist understood discrete data   
11Acknowledgement that document was storedXDS.b provide and register response