DRAFT - The specification is currently in development and subject to significant change. It is not ready for limited roll-out or production level use.
Routing, Splitting, Chaining
The following sections address use of messaging for more advanced workflows. The diagrams in this section illustrate the use of messaging for service request routing and splitting. Systems illustrated have Level 3 capabilities.
Tracking eReferrals
Generally, when tracking eReferrals, the information is captured as of what happens to the eReferral throughout its lifetime – from the time the eReferral request is first submitted, until all the work and related work is complete. Along the way it is possible that the eReferral goes through multiple systems (e.g. Central Intake), organizations and/or providers and additional related referrals could be generated (as a result of routing, splitting and chaining activities. All this information is captured and linked back to the original eReferral request.
To track the eReferral and related information, there are specific attributes available in the ServiceRequest and Task FHIR resources, that are used specifically to identify the resources and capture the relationship between them, including but not limited to:
ServiceRequest.identifier
ServiceRequest.basedOn
ServiceRequest.replaces
ServiceRequest.requisition
Task.basedOn
Task.output
Please refer to L3: Advanced Workflows for a description on how each of these elements are used in the flows.
The diagrams below show how each of the attributes are used to track the information and link it back to the original eReferral.
Note: This section is not diving deeply into FHIR Resources, it rather aims to highlight specific information tailored to the topics described.
Tracking the eReferral when Routing
This section illustrates the message creation and the message interpretation on receipt, including the most important data elements that are used to track an eReferral when it is passed through the Routing mechanism.
Note:
- ServiceRequest 2 can have its own identifier, in addition to the ServiceRequest 1 identifier
Message Creation when Routing
- An eReC Requester (Central System) SHALL create and send copies of a ServiceRequest when ServiceRequest.performer is changed, where:
.replaces
SHALL reference the original ServiceRequest received/copied- an
.id
is local to each system where the resource is stored and MAY be different from the ServiceRequest.id received from the requester - references in ServiceRequest.supportingInfo MAY be added to include additional information when needed SHALL be subject to the same constraints as the original ServiceRequest
- other elements of the parent ServiceRequest – including
.requester
and.identifier
– SHALL be copied to the new child ServiceRequest - the child ServiceRequest MAY add a new
.identifier
in addition to the parent.identifier
- the parent ServiceRequest information referenced in
.replaces
SHALL always be included in the message Bundle exchanged
- After routing a referral, a Central System SHALL mirror any ServiceRequest updates received from the eReC Requester (Source System) in the child ServiceRequest and transmit to downstream recipients
Message Interpretation on Receipt when Routing
- The eReC Recipient (Source System) can recognize that a previously sent referral has been routed by the receiver when it receives a notify-add-service-record message from the eReC Informer (Central System) where
MessageHeader.focus
includes a single (child) ServiceRequest with:- an .identifier that already exists in the local system
.replaces
references an existing (parent) ServiceRequest with the same.identifier
- performer is different between the parent and child
- The eReC Performer (Target System) processing a routed message MAY choose to ignore information in
ServiceRequest.replaces
when processing referrals as all information is in the ServiceRequest referenced inMessageHeader.focus
Tracking the eReferral when Splitting
This section illustrates the message creation and the message interpretation on receipt, including the most important data elements that are used to track an eReferral when it is passed through the Splitting mechanism.
Note:
- Status updates that are coming back from eReC performer to Recipient is the status of the original referral/ServiceRequest
- Status updates from the informer will reflect the status of the split referrals
- Implementaters may filter these based off what they are using and the workflow they are trying to achieve
- For additional information, please see Business Rules
Message Creation when Splitting
- When splitting, an eReC System (Central Intake) SHALL create and send multiple ServiceRequest where:
.replaces
SHALL reference the original ServiceRequest received.requisition
SHALL be copied from an.identifier
on the original ServiceRequest Note: multiple.identifiers
with different systems may be present on the message, requiring a consistent rule to be defined by implementers..id
,.identifier
SHALL be assigned by the system used to create the child ServiceRequest- a parent ServiceRequest information referenced in
.replaces
SHALL always be included in the message Bundle exchanged
- After routing a referral, a Central System SHALL mirror any ServiceRequest updates received from the eReC Requester (Source System) in the child ServiceRequest and SHOULD transmit to downstream recipients
- After the ServiceRequest is replaced by splitting, the eReC Requester (Source System) can consider the original ServiceRequest status as closed.
Message Interpretation on Receipt when Splitting
- An eReC Recipient (Source System) can recognize that a previously sent referral has been split by the receiver when it receives a notify-add-service-record message from the eReC Informer (Central System) where MessageHeader.focus includes multiple (child) ServiceRequests, each with:
- a
.requisition
that matches with an existing.identifier
in the local system .replaces
references an existing (parent) ServiceRequest
- a
Tracking the eReferral when Chaining
This section illustrates the message creation and the message interpretation on receipt, including the most important data elements that are used to track an eReferral when it is passed through the Chaining mechanism.
The diagram below describes the generic chaining flow which includes both Point-to-Point and Central System integrations. i.e. Target Systems with Level 3 capability with the eReC Informer actor SHOULD be able to chain referrals.
Message Creation when Chaining
- New ServiceRequests created as a result of services performed by the receiver SHALL only be shared with the requester using the chaining pattern where the downstream request is required to complete the requested service and the requester needs to know about downstream services or related events and information. In these cases:
.basedOn
SHALL reference the original ServiceRequest received.requester
SHALL reference the person or organization that initiated the child ServiceRequest (not the initial requester)- all identifiers including:
.id
,.identifier
,.requisition
should be assigned by the system used to create the child ServiceRequest - a (parent) ServiceRequest is referenced in
.basedOn
SHALL always be included in the message Bundle exchanged
- After sharing a ServiceRequest with downstream systems, an eReC System SHOULD also transmit ServiceRequest updates received from the eReC Requester (Source System) to downstream recipients
Message Interpretation on Receipt when Chaining
- An eReC Recipient (Source System) can recognize that a previously sent referral has been chained by the receiver when it receives a notify-add-service-record message from an eReC Informer (Central System) where
MessageHeader.focus
includes a ServiceRequest with:.basedOn
referencing an existing (parent) ServiceRequest with an unknown.identifier
Distinguishing between cases when receiving eReferrals
The eReC Recipient will need to recognize whether an eReferral has been Routed on to a new receiver, Split into multiple referrals or Chained to take appropriate action when processing a notification of a new service request received from eReC Informer. The following table summarizes the use of elements that can be used to distinguish between cases.
Case | Required Elements |
---|---|
Routing | 1:1 relationship between parent and child ServiceRequests where: - ServiceRequest.identifier: There is a shared business identifier between parent and child - ServiceRequest.requisition: not used - ServiceRequest.replaces: populated in child with a reference to the parent - ServiceRequest.basedOn: not used |
Splitting | Always a 1:* relationship between parent and child ServiceRequests where: -ServiceRequest.identifier: new business identifier assigned for child - ServiceRequest.requisition: Populated in child with the ServiceRequest.identifier received from the parent - ServiceRequest.replaces: populated in child with a reference to the parent - ServiceRequest.basedOn: not used |
Chaining | 1:1 or 1:* relationship between parent and child ServiceRequests where: - ServiceRequest.identifier: new business identifier assigned for child - ServiceRequest.requisition: Populated in child with the ServiceRequest.identifier received from the parent when there is a 1:* relationship between parent and child - ServiceRequest.replaces: not used - ServiceRequest.basedOn: populated in child with a reference to the parent |