Canadian Baseline, published by HL7 Canada - FHIR Implementation Work Group. This guide is not an authorized publication; it is the continuous build for version 1.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7-Canada/ca-baseline/ and changes regularly. See the Directory of published versions
Official URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/profile-location
Version:
1.2.0
Draft
as of 2024-08-09
Computable Name: LocationProfile
Proposed constraints and extensions on the Location resource
CA Baseline Location Profile
This Location profile sets minimum expectations for the Location resource to record, search and fetch details and position information for a physical place where services are provided.
This profile defines localization concepts for use in a Canadian context.
Mandatory Data Elements
All elements or attributes defined in FHIR have cardinality as part of their definition - a minimum number of required appearances and a maximum number.
Most elements in FHIR specification have a minimum cardinality of 0, which means that they may be missing from a resource when it is exchanged between systems.
In this Canadian Baseline Location Profile all elements are optional, i.e., there is no element with a minimum cardinality of 1. However, some optional elements (e.g., identifier) have required components that MUST be present if that optional element is provided.
Must Support Data Elements
Some elements are labeled as MustSupport meaning that implementations that produce or consume resources SHALL provide "support" for the element in some meaningful way (see Must Support definition).
Following elements are marked as Must Support in the Canadian Location profile to aid record matching in databases with many pediatric records.
Must Support elements:
an identifier
a location name
contact detail (e.g. a telephone number or an email address)
Details and position information for a physical place dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
Location
If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4
error
Location
If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5
error
Location
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
Location
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
The operational status of the location (typically only for a bed/room) Binding: hl7VS-bedStatus (preferred): The operational status if the location (where typically a bed/room).
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
Location
If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4
error
Location
If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5
error
Location
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
Location
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
Details and position information for a physical place dom-2: If the resource is contained in another resource, it SHALL NOT contain nested Resources dom-3: If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource dom-4: If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated dom-5: If a resource is contained in another resource, it SHALL NOT have a security label dom-6: A resource should have narrative for robust management
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
Location
If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4
error
Location
If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5
error
Location
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
Location
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
The operational status of the location (typically only for a bed/room) Binding: hl7VS-bedStatus (preferred): The operational status if the location (where typically a bed/room).
If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty()
dom-3
error
Location
If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource : contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4
error
Location
If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5
error
Location
If a resource is contained in another resource, it SHALL NOT have a security label : contained.meta.security.empty()
dom-6
best practice
Location
A resource should have narrative for robust management : text.`div`.exists()
ele-1
error
**ALL** elements
All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count())
ext-1
error
**ALL** extensions
Must have either extensions or value[x], not both : extension.exists() != value.exists()
Currently, there is no consensus or requirement for pan-Canadian method to identify a location using a business identifier. Location.identifier will remain unsliced until a requirement or rationale is put forth that supports the need to have unique constraints determined by the business identifier.
Service Language
The Location MAY have a Service Language extension. This extension is to identify languages that that services are provided in this particular location.
Address
The Location profile is provided for use in a Canadian context where some constraint on content is desirable to guarantee the quality of the Canadian address whilst still supporting other type of address (e.g., other countries or UNstructured addresses).
Canadian postal code
If an address in the Location resource instance represents Canadian address, it SHOULD follow Canadian postal code format.
The Canadian Postal Code SHOULD be a six-character uniformly structured uppercase alphanumeric code in the form of "ANA NAN", where "A" represents an alphabetic character and "N" represents a numeric character, with one space between the first three and the last three characters.
A hyphen SHOULD NOT be used (example of UNacceptable format: T0L-1K0).