This page is part of the Hybrid / Intermediary Exchange (v0.1.0: STU1 Ballot 1) based on FHIR R4. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions
This guide supports scenarios where intermediaries take part in RESTful FHIR exchanges between an initiating system (the “originator”) and the desired endpoint system (the “destination”).
Potential applications of this initial IG include use by implementers of payer/provider use cases such as Da Vinci value-based care use case in which intermediaries may bridge connectivity between actors. . Other HL7 accelerators (CARIN, Gravity, etc.) are developing disparate actor use cases in which intermediaries may be involved.
Specifically, it focuses on scenarios where:
the originator directs the exchange to the destination’s public FHIR service base URL, for example as retrieved from an endpoint directory
but the destination has an arrangement where an intermediary accepts the request on the destination’s behalf and then routes it to the destination’s system – either directly or through another intermediary.
This page defines the roles that intermediaries play in the scenarios addressed in this guide and then describes those scenarios more fully.
Intermediary Role | Description | Benefit provided | Notes |
---|---|---|---|
Supported in this guide: | |||
Inbound Gateway | This intermediary role receives requests intended for the destination and forwards them to the destination system or another intermediary | The inbound gateway assumes the responsibility of establishing transport security with submitters to the public URL and potentially performing other work on behalf of the destination such as cloud-scale infrastructure, technical support, business/operational onboarding and support, actor agnosticism, and attack protection such as denial of service. | Public DNS entries are used to “point” the destination’s public URL to this intermediary |
Delegated Intermediary | This intermediary role assists in routing from a different intermediary to the destination system | This intermediary may serve as a public network to which the destination system is connected | Intermediaries share non-public routing information to pre-arrange for delivery to the ultimate destination |
While there are many potential exchange scenarios in which an intermediary could play a part, this guide focuses on a specific set where:
This initial release of the Hybrid/Intermediary Exchange IG focuses on current best practices covering a range of typical intermediary routing scenarios in which exchange happens over the public internet using RESTful interactions, originators address requests directly to destinations' public FHIR service URLs, and authentication and authorization are negotiated between the originator and ultimate destination. Additional scenarios and environments may be addressed in future enhancements to the IG.
This implementation guide does not support environments or scenarios where:
In addition, this guide does not provide guidance for the use of FHIR Messaging, which also includes routing features that can be used to exchange message content through intermediaries.
This guide assumes that the destination and intermediary participants have established business arrangements and performed the following configuration steps prior to processing requests:
Scenarios are separated into two groups below:
This scenario supports a situation where the destination delegates the responsibility of securing a public endpoint–and potentially performing other functions such as registering clients–to an intermediary. A single intermediary participates in this exchange, forwarding requests directly from the originator to the destination. The destination processes the request and synchronously returns its response.
Exchange flows and additional details
This scenario supports a situation where one or more intermediaries participate in delivering the exchange to the destination system.
Steps
Originator obtains the destination’s public FHIR service address
Originator initiates a RESTful interaction using the destination’s public FHIR service address
The exchange is received by the inbound gateway intermediary
The inbound gateway intermediary routes the exchange to a second intermediary. Based on its arrangement with the destination owner or other intermediary(ies), the inbound gateway intermediary determines that the exchange must be directed to a different intermediary for delivery to the endpoint used by the destination organization
The delegated intermediary routes the exchange to the destination endpoint. (Optionally, one or more intermediaries may also participate in the exchange prior to delivery to the destination)
The destination processes the request and returns its response to the last intermediary
The delegated intermediary passes through the response to the inbound gateway intermediary
The inbound gateway intermediary, which is holding a synchronous connection with the originator, passes through the response
The originator receives the response
Exchange flows and additional details
In this scenario, the originator uses the FHIR Asynchronous Pattern to retrieve data from a destination that uses an inbound gateway intermediary as described above.
Steps
Originator obtains the destination’s public FHIR service address
Originator initiates a RESTful interaction using the destination’s public FHIR service address. In this scenario, the originator populates the Prefer
HTTP header with respond-async
to notify the destination that it want to obtain the response data asynchronously
The exchange is received by the inbound gateway intermediary
The intermediary routes the exchange to the destination. The Prefer: respond-async
header is also forwarded to the destination
The destination processes the request and returns its response to the intermediary. The destination responds with an HTTP status code of 202 Accepted
, and an HTTP header containing a Content-Location
parameter that specifies the URL at which the response data will be available
The intermediary passes through the response to the originator
The originator receives the response
The originator later retrieves the response data using the address previously returned in the Content-Location
parameter of the initial response from the destination
Exchange flows and additional details