Pan-Canadian eReferral-eConsult (CA:eReC)
DFT - The specification is currently in development and subject to change. For a full list of available versions, see the Directory of published versions
Many ValueSet and CodeSystem bindings in this guide link to resources hosted on the Canada Health Infoway Terminology Service (Ontoserver). If you are redirected to a login page: This is expected and you are being directed to Infoway’s secure environment. To access these resources: You’ll need an InfoCentral Account.
http://hl7.org/fhir/StructureDefinition/ServiceRequest
ServiceRequest is the main resource used to send all referral related information to the destination system.
Appointment, Communication, DocumentReference, MessageHeader, QuestionnaireResponse, ServiceRequest, Task
| ServiceRequest | C | ServiceRequest | |
| id | Σ | 0..1 | string |
| meta | S Σ | 0..1 | Meta |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| versionId | Σ | 0..1 | id |
| lastUpdated | Σ | 0..1 | instant |
| source | Σ | 0..1 | uri |
| profile | S Σ | 0..* | canonical(StructureDefinition) |
| security | Σ | 0..* | CodingBinding |
| tag | Σ | 0..* | Coding |
| implicitRules | Σ ?! | 0..1 | uri |
| language | 0..1 | codeBinding | |
| text | 0..1 | Narrative | |
| contained | 0..* | Resource | |
| extension | C | 0..* | Extension |
| RequestStatusReason | S C | 0..1 | Extension(CodeableConcept) |
| id | 0..1 | string | |
| extension | C | 0..0 | Extension |
| url | 1..1 | uriFixed Value | |
| value[x] | 1..1 | Binding | |
| valueCodeableConcept | CodeableConcept | ||
| PatientPresentLocation | S C | 0..* | Extension(Reference(Location)) |
| DARC | C | 0..* | Extension(Complex) |
| DART | C | 0..* | Extension(Complex) |
| RoutingOptions | C | 0..* | Extension(CodeableConcept) |
| CopiedParticipants | C | 0..* | Extension(Reference(PractitionerRole)) |
| ServiceProviderPreference | C | 0..* | Extension(Complex) |
| modifierExtension | ?! C | 0..* | Extension |
| identifier | S Σ | 0..* | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | S Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| instantiatesCanonical | Σ | 0..* | canonical(ActivityDefinition | PlanDefinition) |
| instantiatesUri | Σ | 0..* | uri |
| basedOn | Σ | 0..1 | Reference(ServiceRequest) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| replaces | Σ | 0..* | Reference(ServiceRequest) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| requisition | Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| status | S Σ ?! | 1..1 | codeBinding |
| intent | S Σ ?! | 1..1 | codeBindingFixed Value |
| category | S Σ | 0..* | CodeableConceptBinding |
| priority | Σ | 0..1 | codeBinding |
| doNotPerform | Σ ?! | 0..1 | boolean |
| code | S Σ | 0..1 | CodeableConceptBinding |
| orderDetail | Σ C | 0..* | CodeableConcept |
| quantity[x] | Σ | 0..1 | |
| quantityQuantity | Quantity | ||
| quantityRatio | Ratio | ||
| quantityRange | Range | ||
| subject | S Σ | 1..1 | Reference(Patient) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| encounter | Σ | 0..1 | Reference(Encounter) |
| occurrence[x] | Σ | 0..1 | |
| occurrenceDateTime | dateTime | ||
| occurrencePeriod | Period | ||
| occurrenceTiming | Timing | ||
| asNeeded[x] | Σ | 0..1 | |
| asNeededBoolean | boolean | ||
| asNeededCodeableConcept | CodeableConcept | ||
| authoredOn | S Σ | 1..1 | dateTime |
| requester | S Σ | 1..1 | Reference(PractitionerRole | Patient) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| ServiceRequesterDelegate | C | 0..* | Extension(Complex) |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| performerType | Σ | 0..1 | CodeableConcept |
| performer | S Σ | 1..* | Reference(PractitionerRole | HealthcareService) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| PerformerIdentifier | C | 0..1 | Extension(Identifier) |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| locationCode | Σ | 0..* | CodeableConcept |
| locationReference | Σ | 0..* | Reference(Location) |
| reasonCode | S Σ | 0..* | CodeableConceptBinding |
| reasonReference | Σ | 0..* | Reference(Condition | Observation | DiagnosticReport | DocumentReference) |
| insurance | 0..* | Reference(Coverage | ClaimResponse) | |
| supportingInfo | S | 0..* | Reference(Resource | DocumentReference | Communication | QuestionnaireResponse | ConditionCACore | AllergyIntoleranceCACore) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| specimen | Σ | 0..* | Reference(Specimen) |
| bodySite | Σ | 0..* | CodeableConcept |
| note | S | 0..* | Annotation |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| author[x] | Σ | 0..1 | |
| authorString | string | ||
| authorReference | Σ | 0..1 | Reference(Practitioner | Organization | Patient) |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| reference | S Σ C | 0..1 | string |
| type | Σ | 0..1 | uriBinding |
| identifier | S Σ | 0..1 | Identifier |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| use | Σ ?! | 0..1 | codeBinding |
| type | Σ | 0..1 | CodeableConceptBinding |
| system | S Σ | 1..1 | uri |
| value | S Σ | 1..1 | string |
| period | Σ | 0..1 | Period |
| assigner | Σ | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| time | Σ | 0..1 | dateTime |
| text | Σ | 1..1 | markdown |
| patientInstruction | Σ | 0..1 | string |
| relevantHistory | 0..* | Reference(Provenance) |
| ServiceRequest | ServiceRequest | ||
| meta | S | ||
| profile | S | ||
| extension | |||
| RequestStatusReason | S | Extension(CodeableConcept) | |
| value[x] | Binding | ||
| PatientPresentLocation | S | Extension(Reference(Location)) | |
| DARC | Extension(Complex) | ||
| DART | Extension(Complex) | ||
| RoutingOptions | Extension(CodeableConcept) | ||
| CopiedParticipants | Extension(Reference(PractitionerRole)) | ||
| ServiceProviderPreference | Extension(Complex) | ||
| identifier | S | ||
| use | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| basedOn | ..1 | Reference(ServiceRequest) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| replaces | Reference(ServiceRequest) | ||
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| requisition | |||
| system | S | 1.. | |
| value | S | 1.. | |
| status | S | Binding | |
| intent | S | Fixed Value | |
| category | S | Binding | |
| code | S | Binding | |
| subject | S | Reference(Patient) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| authoredOn | S | 1.. | |
| requester | S | 1.. | Reference(PractitionerRole | Patient) |
| extension | |||
| ServiceRequesterDelegate | 0..* | Extension(Complex) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| performer | S | 1..* | Reference(PractitionerRole | HealthcareService) |
| extension | |||
| PerformerIdentifier | 0..1 | Extension(Identifier) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| reasonCode | S | Binding | |
| supportingInfo | S | Reference(Resource | DocumentReference | Communication | QuestionnaireResponse | ConditionCACore | AllergyIntoleranceCACore) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| note | S | ||
| author[x] | |||
| authorReference | 0..1 | Reference(Practitioner | Organization | Patient) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. |
ServiceRequest is the main resource used to send all referral related information to the destination system.
Note: Systems that support Routing, Chaining or Splitting SHALL support .basedOn, .replaces, and .requisition
.extension:RequestStatusReason
.status.extension:PatientPresentLocation
.extension:DARC
.extension:DART
.extension:RoutingOptions
.extension:CopiedParticipants
.identifier
use SHALL be populated with the code "official"value and system:
value = a UUID and system = "urn:ietf:rfc:3986" when another existing and appropriate system doesn't existBundle.entry𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that create ServiceRequests to support Routing, Splitting, or Chaining workflows SHALL populate the official identifier as follows:
.identifier SHALL be the same for both the parent and child ServiceRequests.identifier assigned that is unique from the parent.identifier assigned that is unique from the parentWhere present, business identifiers provided in a ServiceRequest MAY be used to reference this resource in subsequent messages
identifier.system and identifier.value SHALL be mustSupport whenever there is a reference or identifier present
.basedOn
𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that support Chaining SHALL support this element
When a service provider performing a parent ServiceRequest creates child ServiceRequest using the Chaining workflow, .basedOn SHALL be populated on the new (child) ServiceRequest with a reference to the parent.
If the child ServiceRequest is being transmitted via messaging, this element SHALL be populated with a reference to the parent, as a reference to a resource within the message as a Bundle.entry
.replaces
𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that support Routing or Splitting SHALL support this element
When a service provider performing a parent ServiceRequest creates child ServiceRequest(s) using either the Routing or Splitting workflow, .replaces SHALL be populated on the new (child) ServiceRequest with a reference to the parent.
If the child ServiceRequest is being transmitted via messaging, this element SHALL be populated with a reference to the parent, as a reference to a resource within the message as a Bundle.entry
.requisition
𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that support Splitting SHALL support this element
Used in cases where multiple connected referrals are made simultaneously (i.e. a .requisition)
In these cases:
MessageHeader.focusMessageHeader.focus SHALL have the same identifier in ServiceRequest.requisitionWhen splitting a received parent ServiceRequest to create many child ServiceRequests, .requisition SHALL be copied from the official .identifier from the parent ServiceRequest
Note that additional business rules apply to requisitions
For eReferral usage: It is highly recommended that the common elements should match between multiple ServiceRequests (e.g., patient, requester, etc...) Requests are linked either by a .basedOn relationship (i.e. one request is fulfilling another) or by having a common requisition. Requests that are part of the same requisition are generally treated independently from the perspective of changing their state or maintaining them after initial creation.
.status
.intent
.category
.code
.subject
.reference a resource included in the message as a Bundle.entry.authoredOn
.authoredOn is the submission time of the sending system.requester
.reference a resource included in the message as a Bundle.entry.reference is mandatory and the referenced instance needs to be included in the Bundle.performer
.reference a resource included in the message as a Bundle.entry.reference is mandatory and the referenced instance needs to be included in the Bundle.reasonCode
.supportingInfo
.reference a resource included in the message as a Bundle.entry, or.identifier previously known to both systems.note
Used to communicate information that cannot be referenced in supportingInfo with a ServiceRequest
MAY be used when the referral source system has a custom data capture form with fields are not mapped to a resource (e.g., Food preference, home visit risk factors, etc...).
If note.author and note.time are not populated, these SHOULD be assumed to be the requester and authoredOn respectively (this is expected to be the normal use case)
FOR eREFERRAL USAGE:
note is used to include additional information in the referral that is not captured by an existing resource or in a DocumentReference. This is often used when the sending application has a custom data capture form with fields are not mapped to a resource (e.g., Food preference, home visit risk factors, etc...).
For systems that do not have structured annotations, they can simply communicate a single annotation with no author or time. This element may need to be included in narrative because of the potential for modifying information.
Annotations SHOULD NOT be used to communicate "modifying" information that could be computable. (This is a SHOULD because enforcing user behavior is nearly impossible).