Pan-Canadian eReferral-eConsult (CA:eReC) v1.3.0-DFT-preBallot
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(HealthcareService | 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| instantiatesCanonical | Σ | 0..* | canonical(ActivityDefinition | PlanDefinition) |
| instantiatesUri | Σ | 0..* | uri |
| basedOn | Σ C | 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| replaces | Σ C | 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| status | S Σ ?! | 1..1 | codeBinding |
| intent | S Σ ?! | 1..1 | codeBindingFixed Value |
| category | S Σ | 1..* | CodeableConcept |
| referralType | S Σ | 1..1 | CodeableConceptBinding |
| serviceType | S Σ | 0..* | CodeableConceptBinding |
| priority | Σ | 0..1 | codeBinding |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| SubPriority | C | 0..1 | Extension(code) |
| value | 0..1 | System.String | |
| doNotPerform | Σ ?! | 0..1 | boolean |
| code | S Σ | 0..1 | CodeableConceptBinding |
| orderDetail | Σ C | 0..* | CodeableConcept |
| quantity[x] | Σ | 0..1 | |
| quantityQuantity | Quantity | ||
| quantityRange | Range | ||
| quantityRatio | Ratio | ||
| subject | S Σ C | 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| encounter | Σ C | 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 Σ C | 1..1 | Reference(Patient | PractitionerRole) |
| 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| performerType | Σ | 0..1 | CodeableConcept |
| performer | S Σ C | 1..* | Reference(HealthcareService | PractitionerRole) |
| 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| locationCode | Σ | 0..* | CodeableConcept |
| locationReference | Σ C | 0..* | Reference(Location) |
| reasonCode | S Σ | 0..* | CodeableConceptBinding |
| reasonReference | Σ C | 0..* | Reference(Condition | DiagnosticReport | DocumentReference | Observation) |
| insurance | C | 0..* | Reference(ClaimResponse | Coverage) |
| supportingInfo | S C | 0..* | Reference(AllergyIntoleranceCACore | ConditionCACore | Communication | Consent | DocumentReference | QuestionnaireResponse | Resource) |
| 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| specimen | Σ C | 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(Organization | Patient | Practitioner) |
| 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 | Σ C | 0..1 | Period |
| assigner | Σ C | 0..1 | Reference(Organization) |
| display | Σ | 0..1 | string |
| time | Σ | 0..1 | dateTime |
| text | Σ | 1..1 | markdown |
| patientInstruction | Σ | 0..1 | string |
| relevantHistory | C | 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(HealthcareService | 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 | 1.. | |
| referralType | S | 1..1 | Binding |
| serviceType | S | 0..* | Binding |
| priority | |||
| extension | |||
| SubPriority | 0..1 | Extension(code) | |
| code | S | Binding | |
| subject | S | Reference(Patient) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| authoredOn | S | 1.. | |
| requester | S | 1.. | Reference(Patient | PractitionerRole) |
| extension | |||
| ServiceRequesterDelegate | 0..* | Extension(Complex) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| performer | S | 1..* | Reference(HealthcareService | PractitionerRole) |
| extension | |||
| PerformerIdentifier | 0..1 | Extension(Identifier) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| reasonCode | S | Binding | |
| supportingInfo | S | Reference(AllergyIntoleranceCACore | ConditionCACore | Communication | Consent | DocumentReference | QuestionnaireResponse | Resource) | |
| reference | S | ||
| identifier | S | ||
| system | S | 1.. | |
| value | S | 1.. | |
| note | S | ||
| author[x] | |||
| authorReference | 0..1 | Reference(Organization | Patient | Practitioner) | |
| 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
Note: see "Slimming Rules", for how references to ServiceRequest within messages sent from Target Systems (eReC Performer and eReC Informer) may be simplified
.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 received from the parent SHALL be included on the child ServiceRequest.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, either as:
.reference to a resource within the message as a Bundle.entry, or.identifier with the use, system and value elements populated with the official ServiceRequest.identifier of the parent.replaces
𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that support Routing and/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, either as:
.reference to a resource within the message as a Bundle.entry, or.identifier with the use, system and value elements populated with the official ServiceRequest.identifier of the parent.requisition
𝗨𝗦𝗘 𝗖𝗔𝗦𝗘 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: Systems that support Splitting SHALL support this element
Used in cases where multiple connected referrals are made simultaneously (i.e. a .requisition)
When 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
.priority
.extension:SubPriority
extension.SubPriority is valued with "semi-urgent", .priority SHALL be valued as "urgent".category
.category serve different purposes:
referralType is a coded value used to specify whether the request is for an eReferral (SNOMED-CT code 3457005) vs an eConsult (SNOMED-CT code 598511000087105) (required)serviceType refers to the type of service being requested from http://fhir.infoway-inforoute.ca/ValueSet/referralservicecategorycode (required) e.g. Gastroenterology, Cardiovascular surgery.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 to a PractitionerRole resource or, for self-referrals, a Patient resource.reference a resource included in the message as a Bundle.entry.performer
.reference a PractitionerRole or HealthcareService included in the message as a Bundle.entry.reasonCode
.text.text SHALL be used to populate the eConsult 'question' description for the specialist.supportingInfo
.reference a resource included in the message as a Bundle.entry..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).