Canadian Baseline
1.2.0 - CI Build

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

## Resource Profile: Location Profile

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)

Usages:

- Refer to this Profile: DiagnosticReport Profile for Laboratory Results Reporting, Encounter Profile, Immunization Profile, MedicationDispense Profile... Show 3 more, OrganizationAffiliation Profile, Procedure Profile and ServiceRequest Profile for Results Reporting

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

- Key Elements Table
- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | Unique code or number identifying the location to its users
status | ?!Σ | 0..1 | code | active | suspended | inactive Binding: LocationStatus (required): Indicates whether the location is still in use.
name | S Σ | 0..1 | string | Name of the location as used by humans
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Location.status | Base | required | LocationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Location | 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()`

This structure is derived from Location

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
Slices for extension |  |  |  | Content/Rules for all slices
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
identifier | S | 0..* | Identifier | Unique code or number identifying the location to its users
name | S | 0..1 | string | Name of the location as used by humans
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
Documentation for this format

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | Unique code or number identifying the location to its users
status | ?!Σ | 0..1 | code | active | suspended | inactive Binding: LocationStatus (required): Indicates whether the location is still in use.
operationalStatus | Σ | 0..1 | Coding | 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).
name | S Σ | 0..1 | string | Name of the location as used by humans
alias |  | 0..* | string | A list of alternate names that the location is known as, or was known as, in the past
description | Σ | 0..1 | string | Additional details about the location that could be displayed as further information to identify the location beyond its name
mode | Σ | 0..1 | code | instance | kind Binding: LocationMode (required): Indicates whether a resource instance represents a specific location or a class of locations.
type | Σ | 0..* | CodeableConcept | Type of function performed Binding: ServiceDeliveryLocationRoleType (extensible): Indicates the type of function performed at the location.
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
physicalType | Σ | 0..1 | CodeableConcept | Physical form of the location Binding: LocationType (example): Physical form of the location.
position |  | 0..1 | BackboneElement | The absolute geographic location
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
longitude |  | 1..1 | decimal | Longitude with WGS84 datum
latitude |  | 1..1 | decimal | Latitude with WGS84 datum
altitude |  | 0..1 | decimal | Altitude with WGS84 datum
managingOrganization | Σ | 0..1 | Reference(Organization) | Organization responsible for provisioning and upkeep
partOf |  | 0..1 | Reference(Location) | Another Location this one is physically a part of
hoursOfOperation |  | 0..* | BackboneElement | What days/times during a week is this location usually open
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
daysOfWeek |  | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
allDay |  | 0..1 | boolean | The Location is open all day
openingTime |  | 0..1 | time | Time that the Location opens
closingTime |  | 0..1 | time | Time that the Location closes
availabilityExceptions |  | 0..1 | string | Description of availability exceptions
endpoint |  | 0..* | Reference(Endpoint) | Technical endpoints providing access to services operated for the location
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Location.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Location.status | Base | required | LocationStatus | 📍4.0.1 | FHIR Std.
Location.operationalStatus | Base | preferred | hl7VS-bedStatus | 📦2.0.0 | THO v6.5
Location.mode | Base | required | LocationMode | 📍4.0.1 | FHIR Std.
Location.type | Base | extensible | ServiceDeliveryLocationRoleType | 📦3.0.0 | THO v6.5
Location.physicalType | Base | example | Location type | 📍4.0.1 | FHIR Std.
Location.hoursOfOperation.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Location | 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()`

This structure is derived from Location

Summary

Must-Support: 3 elements

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
Slices for extension |  |  |  | Content/Rules for all slices
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | Unique code or number identifying the location to its users
status | ?!Σ | 0..1 | code | active | suspended | inactive Binding: LocationStatus (required): Indicates whether the location is still in use.
name | S Σ | 0..1 | string | Name of the location as used by humans
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Location.status | Base | required | LocationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Location | 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()`

Differential View

This structure is derived from Location

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
Slices for extension |  |  |  | Content/Rules for all slices
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
identifier | S | 0..* | Identifier | Unique code or number identifying the location to its users
name | S | 0..1 | string | Name of the location as used by humans
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
Documentation for this format

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Location |  | 0..* | Location | Details and position information for a physical place
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained |  | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:communication |  | 0..* | CodeableConcept | Languages used to provide services URL: http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage Binding: CommonLanguages (preferred): Common Languages
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | Unique code or number identifying the location to its users
status | ?!Σ | 0..1 | code | active | suspended | inactive Binding: LocationStatus (required): Indicates whether the location is still in use.
operationalStatus | Σ | 0..1 | Coding | 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).
name | S Σ | 0..1 | string | Name of the location as used by humans
alias |  | 0..* | string | A list of alternate names that the location is known as, or was known as, in the past
description | Σ | 0..1 | string | Additional details about the location that could be displayed as further information to identify the location beyond its name
mode | Σ | 0..1 | code | instance | kind Binding: LocationMode (required): Indicates whether a resource instance represents a specific location or a class of locations.
type | Σ | 0..* | CodeableConcept | Type of function performed Binding: ServiceDeliveryLocationRoleType (extensible): Indicates the type of function performed at the location.
telecom | S | 0..* | ContactPoint | Contact details of the location
address |  | 0..1 | Address | Physical location
physicalType | Σ | 0..1 | CodeableConcept | Physical form of the location Binding: LocationType (example): Physical form of the location.
position |  | 0..1 | BackboneElement | The absolute geographic location
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
longitude |  | 1..1 | decimal | Longitude with WGS84 datum
latitude |  | 1..1 | decimal | Latitude with WGS84 datum
altitude |  | 0..1 | decimal | Altitude with WGS84 datum
managingOrganization | Σ | 0..1 | Reference(Organization) | Organization responsible for provisioning and upkeep
partOf |  | 0..1 | Reference(Location) | Another Location this one is physically a part of
hoursOfOperation |  | 0..* | BackboneElement | What days/times during a week is this location usually open
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
daysOfWeek |  | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required): The days of the week.
allDay |  | 0..1 | boolean | The Location is open all day
openingTime |  | 0..1 | time | Time that the Location opens
closingTime |  | 0..1 | time | Time that the Location closes
availabilityExceptions |  | 0..1 | string | Description of availability exceptions
endpoint |  | 0..* | Reference(Endpoint) | Technical endpoints providing access to services operated for the location
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Location.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Location.status | Base | required | LocationStatus | 📍4.0.1 | FHIR Std.
Location.operationalStatus | Base | preferred | hl7VS-bedStatus | 📦2.0.0 | THO v6.5
Location.mode | Base | required | LocationMode | 📍4.0.1 | FHIR Std.
Location.type | Base | extensible | ServiceDeliveryLocationRoleType | 📦3.0.0 | THO v6.5
Location.physicalType | Base | example | Location type | 📍4.0.1 | FHIR Std.
Location.hoursOfOperation.​daysOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
dom-2 | error | Location | 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()`

This structure is derived from Location

Summary

Must-Support: 3 elements

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/ca/baseline/StructureDefinition/ext-servicelanguage

Other representations of profile: CSV, Excel, Schematron

### Notes:

## Identifiers

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).