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
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.focus
MessageHeader.focus
SHALL have the same identifier in ServiceRequest.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
.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).