SMART Scheduling Links
1.0.0 - STU 1 International flag

SMART Scheduling Links, published by HL7 International / Patient Administration. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/smart-scheduling-links/ and changes regularly. See the Directory of published versions

Resource Profile: Location

Official URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/smart-scheduling-location Version: 1.0.0
Standards status: Trial-use Maturity Level: 2 Computable Name: SmartSchedulingLocation
Other Identifiers: OID:2.16.840.1.113883.4.642.40.91.42.6

Each line of the Location File is a minified JSON object that conveys a physical location where appointments are available.

Example Usage Scenarios

The following are example usage scenarios for the SMART Scheduling Links Location profile:

  • Find physical or virtual locations where appointments are available
  • Find physical & virtual locations where appointments are available

Mandatory and Must Support Data Elements

The following data elements must always be present or must be supported if the data is present in the sending system. They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Views below provides the formal summary, definitions, and terminology requirements.

Each Location Must Have:

  • id
  • name
  • telecom

Each Location Must Support:

  • status
  • description
  • address
  • physical type
  • position

Profile Specific Implementation Guidance:

The visit modality is represented using Location.physicalType data element (Location.form in R5). Implementers can use this data element to represent a virtual (#vi) or physical (#ph). To convey a slot that can be both virtual OR physical, implementers should model it as two separate location resources: one virtual and one physical.

Each identifier object includes a system and a value

  • If a Location is associated with organization-specific identifiers (such as facility numbers, site codes, or store numbers), Slot Publishers SHOULD include these.§sched-22 The system should be a URL that identifies the identifier system, preferably a page on the publisher's web site (e.g. {"system": "https://healthsystem.example.com/facility-directory", "value": "FAC-123"})
  • If a Location participates in external registry programs that assign location identifiers, Slot Publishers MAY include these identifiers using the appropriate system URL for the registry.§sched-23
  • Any number of additional identifiers MAY be included.§sched-24 Each should populate system and value as appropriate, following FHIR identifier conventions.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. This element is included in summaries. 1..1 id Logical id of this artifact
Location.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Constraints: ext-1
Location.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Location.status This element is a modifier element. This element is included in summaries. 0..1 code active | suspended | inactive
Binding: LocationStatus (required): Indicates whether the location is still in use.
Location.name This element must be supported. This element is included in summaries. 1..1 string Name of the location as used by humans
Location.description This element must be supported. This element is included in summaries. 0..1 string Additional details about the location that could be displayed as further information to identify the location beyond its name
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.system This element must be supported. This element is included in summaries. C 1..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
Location.telecom.value This element must be supported. This element is included in summaries. 1..1 string The actual contact point details
Location.telecom.use This element is a modifier element. This element is included in summaries. 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. This element is included in summaries. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Location.status Base required LocationStatus 📍4.0.1 FHIR Std.
Location.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
Location.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG

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

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. 1..1 id Logical id of this artifact
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Location.name This element must be supported. 1..1 string Name of the location as used by humans
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.system This element must be supported. 1..1 code phone | fax | email | pager | url | sms | other
Location.telecom.value This element must be supported. 1..1 string The actual contact point details
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. This element is included in summaries. 1..1 id Logical id of this artifact
Location.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Location.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Location.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Location.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
Location.contained 0..* Resource Contained, inline Resources
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Constraints: ext-1
Location.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Location.identifier This element is included in summaries. 0..* Identifier Unique code or number identifying the location to its users
Location.status This element is a modifier element. This element is included in summaries. 0..1 code active | suspended | inactive
Binding: LocationStatus (required): Indicates whether the location is still in use.
Location.operationalStatus This element is included in summaries. 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).
Location.name This element must be supported. This element is included in summaries. 1..1 string Name of the location as used by humans
Location.alias 0..* string A list of alternate names that the location is known as, or was known as, in the past
Location.description This element must be supported. This element is included in summaries. 0..1 string Additional details about the location that could be displayed as further information to identify the location beyond its name
Location.mode This element is included in summaries. 0..1 code instance | kind
Binding: LocationMode (required): Indicates whether a resource instance represents a specific location or a class of locations.
Location.type This element is included in summaries. 0..* CodeableConcept Type of function performed
Binding: ServiceDeliveryLocationRoleType (extensible): Indicates the type of function performed at the location.
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.id 0..1 string Unique id for inter-element referencing
Location.telecom.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Location.telecom.system This element must be supported. This element is included in summaries. C 1..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
Location.telecom.value This element must be supported. This element is included in summaries. 1..1 string The actual contact point details
Location.telecom.use This element is a modifier element. This element is included in summaries. 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
Location.telecom.rank This element is included in summaries. 0..1 positiveInt Specify preferred order of use (1 = highest)
Location.telecom.period This element is included in summaries. 0..1 Period Time period when the contact point was/is in use
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. This element is included in summaries. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.id 0..1 string Unique id for inter-element referencing
Location.position.extension 0..* Extension Additional content defined by implementations
Location.position.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum
Location.position.altitude 0..1 decimal Altitude with WGS84 datum
Location.managingOrganization This element is included in summaries. 0..1 Reference(Organization) Organization responsible for provisioning and upkeep
Location.partOf 0..1 Reference(Location) Another Location this one is physically a part of
Location.hoursOfOperation 0..* BackboneElement What days/times during a week is this location usually open
Location.hoursOfOperation.id 0..1 string Unique id for inter-element referencing
Location.hoursOfOperation.extension 0..* Extension Additional content defined by implementations
Location.hoursOfOperation.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.hoursOfOperation.daysOfWeek 0..* code mon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required): The days of the week.
Location.hoursOfOperation.allDay 0..1 boolean The Location is open all day
Location.hoursOfOperation.openingTime 0..1 time Time that the Location opens
Location.hoursOfOperation.closingTime 0..1 time Time that the Location closes
Location.availabilityExceptions 0..1 string Description of availability exceptions
Location.endpoint 0..* Reference(Endpoint) Technical endpoints providing access to services operated for the location

doco 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 📦3.0.0 THO v7.4
Location.mode Base required LocationMode 📍4.0.1 FHIR Std.
Location.type Base extensible ServiceDeliveryLocationRoleType 📦3.0.0 THO v7.4
Location.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
Location.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG
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

Mandatory: 5 elements
Must-Support: 11 elements

Extensions

This structure refers to these extensions:

Maturity: 2

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. This element is included in summaries. 1..1 id Logical id of this artifact
Location.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Constraints: ext-1
Location.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Location.status This element is a modifier element. This element is included in summaries. 0..1 code active | suspended | inactive
Binding: LocationStatus (required): Indicates whether the location is still in use.
Location.name This element must be supported. This element is included in summaries. 1..1 string Name of the location as used by humans
Location.description This element must be supported. This element is included in summaries. 0..1 string Additional details about the location that could be displayed as further information to identify the location beyond its name
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.system This element must be supported. This element is included in summaries. C 1..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
Location.telecom.value This element must be supported. This element is included in summaries. 1..1 string The actual contact point details
Location.telecom.use This element is a modifier element. This element is included in summaries. 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. This element is included in summaries. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Location.status Base required LocationStatus 📍4.0.1 FHIR Std.
Location.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
Location.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG

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

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. 1..1 id Logical id of this artifact
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Location.name This element must be supported. 1..1 string Name of the location as used by humans
Location.description This element must be supported. 0..1 string Additional details about the location that could be displayed as further information to identify the location beyond its name
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.system This element must be supported. 1..1 code phone | fax | email | pager | url | sms | other
Location.telecom.value This element must be supported. 1..1 string The actual contact point details
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG

Snapshot ViewView

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Location 0..* Location Details and position information for a physical place
Location.id This element must be supported. This element is included in summaries. 1..1 id Logical id of this artifact
Location.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Location.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Location.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Location.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
Location.contained 0..* Resource Contained, inline Resources
Location.Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url

Slicing Note: The rules on this element (including its children) apply to all the slices, but are not repeated in them
Location.Slices for extension.extension:virtualService 0..* (Complex) R5: Connection details of a virtual service (e.g. conference call) (new)
URL: http://hl7.org/fhir/5.0/StructureDefinition/extension-Location.virtualService
Constraints: ext-1
Location.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Location.identifier This element is included in summaries. 0..* Identifier Unique code or number identifying the location to its users
Location.status This element is a modifier element. This element is included in summaries. 0..1 code active | suspended | inactive
Binding: LocationStatus (required): Indicates whether the location is still in use.
Location.operationalStatus This element is included in summaries. 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).
Location.name This element must be supported. This element is included in summaries. 1..1 string Name of the location as used by humans
Location.alias 0..* string A list of alternate names that the location is known as, or was known as, in the past
Location.description This element must be supported. This element is included in summaries. 0..1 string Additional details about the location that could be displayed as further information to identify the location beyond its name
Location.mode This element is included in summaries. 0..1 code instance | kind
Binding: LocationMode (required): Indicates whether a resource instance represents a specific location or a class of locations.
Location.type This element is included in summaries. 0..* CodeableConcept Type of function performed
Binding: ServiceDeliveryLocationRoleType (extensible): Indicates the type of function performed at the location.
Location.telecom This element must be supported. 1..* ContactPoint Contact details of the location
Location.telecom.id 0..1 string Unique id for inter-element referencing
Location.telecom.extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
Location.telecom.system This element must be supported. This element is included in summaries. C 1..1 code phone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required): Telecommunications form for contact point.
Location.telecom.value This element must be supported. This element is included in summaries. 1..1 string The actual contact point details
Location.telecom.use This element is a modifier element. This element is included in summaries. 0..1 code home | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required): Use of contact point.
Location.telecom.rank This element is included in summaries. 0..1 positiveInt Specify preferred order of use (1 = highest)
Location.telecom.period This element is included in summaries. 0..1 Period Time period when the contact point was/is in use
Location.address This element must be supported. 0..1 Address Physical location
Location.physicalType This element must be supported. This element is included in summaries. 0..1 CodeableConcept Physical form of the location
Binding: Location Physical Type ValueSet (preferred)
Location.position This element must be supported. 0..1 BackboneElement The absolute geographic location
Location.position.id 0..1 string Unique id for inter-element referencing
Location.position.extension 0..* Extension Additional content defined by implementations
Location.position.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.position.longitude This element must be supported. 1..1 decimal Longitude with WGS84 datum
Location.position.latitude This element must be supported. 1..1 decimal Latitude with WGS84 datum
Location.position.altitude 0..1 decimal Altitude with WGS84 datum
Location.managingOrganization This element is included in summaries. 0..1 Reference(Organization) Organization responsible for provisioning and upkeep
Location.partOf 0..1 Reference(Location) Another Location this one is physically a part of
Location.hoursOfOperation 0..* BackboneElement What days/times during a week is this location usually open
Location.hoursOfOperation.id 0..1 string Unique id for inter-element referencing
Location.hoursOfOperation.extension 0..* Extension Additional content defined by implementations
Location.hoursOfOperation.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Location.hoursOfOperation.daysOfWeek 0..* code mon | tue | wed | thu | fri | sat | sun
Binding: DaysOfWeek (required): The days of the week.
Location.hoursOfOperation.allDay 0..1 boolean The Location is open all day
Location.hoursOfOperation.openingTime 0..1 time Time that the Location opens
Location.hoursOfOperation.closingTime 0..1 time Time that the Location closes
Location.availabilityExceptions 0..1 string Description of availability exceptions
Location.endpoint 0..* Reference(Endpoint) Technical endpoints providing access to services operated for the location

doco 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 📦3.0.0 THO v7.4
Location.mode Base required LocationMode 📍4.0.1 FHIR Std.
Location.type Base extensible ServiceDeliveryLocationRoleType 📦3.0.0 THO v7.4
Location.telecom.system Base required ContactPointSystem 📍4.0.1 FHIR Std.
Location.telecom.use Base required ContactPointUse 📍4.0.1 FHIR Std.
Location.physicalType Base preferred Location Physical Type ValueSet 📦1.0.0 This IG
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

Mandatory: 5 elements
Must-Support: 11 elements

Extensions

This structure refers to these extensions:

Maturity: 2

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Discussed modeling approaches within the SSL Workgroup. See notes in confluence that discusses the modeling approaches and pro/cons for choosing this modeling direction

Representing virtual locations that are licensed

In the Location resource, address has a 0..1 cardinality. Within that data element, state is also 0..1. A use case we need to account for is the concept of showing available slots that patients can book for, usually, the state that they live in. Usually, the superset of states here is based on the practitioner's license. However, that concept is orthogonal to which slot is available because a practitioner may not necessarily want to offer appointments in a given state. There are multiple ways of modeling this with some of them described below:

  • Option 1: extend the native Location.address.state data element to have a 0..* cardinality
  • Option 2: use multiple Location resources to represent the available slots for a particular state
  • Option 3: introduce an extension on Location that denotes the states in which this slot can be offered.

For this PR, we're opting for Option 3 since Location.address semantically represents a physical location and this use case primarily addresses virtual visits. Thus, favor an extension that explicitly describes this use case.

Discussed on 8/3/26 to do the following:

  • remove combined code for physical & virtual; encourage implementers to use two locations instead of one when modeling a location that can be both virtual & location.
  • for licensed states, an alternative data model was proposed to use PractitionerRole.location instead of modeling multiple states directly in location as licensedStates extension. However, in doing the modeling, the concepts likely should be a bit more coupled as slot discovery clients would want to filter on a state, but also whether or not that location is virtual. Suggestion to keep on Location. Options thus are:
    • Option 1: keep existing licensedStates extension on Location. Slot discovery clients can use that to filter on states, but also the visit modaility to further filter on whether a slot is virtual or physical or both
    • Option 2: model multiple states on PractitionerRole.location[]. Slot discovery clients will need to reconcile PractitionerRole.location[] with Schedule.location[] to determine which slots are available in which states and what modalilities. We could also use the same location A in that PractitionerRole.locationA and Schedule.locationA to make that easier.

    Discussed 8/13/26 - internally w/ stakeholders. We agreed to remove the licensed state extension, which also allows us to remove the virtual location sub profile, given that this is a universal realm (UV) FHIR IG. Licensed state is a US-centric concept. We discussed an extension that may be more applicable like licensedJurisdiction, but ultimately landed on removing it entirely and considering a future US-centric SMART Scheduling Links FHIR IG to profile the extension against a state-specific binding like the US Core 2-letter state value set. In the interim, we'll defer constraints to US-centric groups that are working on scheduling to define an extension that can be used to represent US-states.