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
| Official URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/smart-scheduling-slot | Version: 1.0.0 | ||||
| Standards status: Trial-use | Maturity Level: 2 | Computable Name: SmartSchedulingSlot | |||
| Other Identifiers: OID:2.16.840.1.113883.4.642.40.91.42.10 | |||||
Each line of the Slot File is a minified JSON object that conveys information about an appointment slot. Slots may carry fine-grained timing details (e.g. representing appointments at specific times of the day) or coarse-grained timing (e.g., "between 9 a.m. and 5 p.m." or "between noon and five p.m."). See Quick Start Guide in the specification for the normative expectations on timing granularity.
Example Usage Scenarios
The following are example usage scenarios for the SMART Scheduling Links Slot profile:
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 Slot Must Have:
Each Slot Must Support:
Profile Specific Implementation Guidance:
A Slot published with "status": "free" is expected to be available for booking under the publisher's current business rules. Where a provider requires prerequisites to be met before an appointment can be booked — such as referrals, prior authorization, or specific patient eligibility criteria — a slot that does not satisfy those requirements is not a good candidate for publication as available. See Graceful Handling of Slot Invalidity in the specification for the normative expectations placed on Slot Publishers and Provider Booking Portals.
Usages:
You can also check for usages in the FHIR IG Statistics
Description Differentials, Snapshots, and other representations.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |
![]() ![]() |
SΣ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link |
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone |
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information |
![]() ![]() |
SΣ | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error Binding: SlotStatus (required): The free/busy status of the slot. |
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to begin |
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to conclude |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.status | Base | required | SlotStatus | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Slot | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Slot | 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 | Slot | 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 | Slot | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Slot | 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()
|
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |
![]() ![]() |
S | 1..1 | id | Logical id of this artifact |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link |
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone |
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type |
![]() ![]() |
S | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information |
![]() ![]() |
S | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error |
![]() ![]() |
S | 1..1 | instant | Date/Time that the slot is to begin |
![]() ![]() |
S | 1..1 | instant | Date/Time that the slot is to conclude |
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |||||
![]() ![]() |
SΣ | 1..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | ||||
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | ||||
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type | ||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | External Ids for this item | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: ServiceCategory (example) | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the availability resource Binding: ServiceType (example) | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred): Additional details about where the content was created (e.g. clinical specialty). | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred) | ||||
![]() ![]() |
SΣ | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information | ||||
![]() ![]() |
SΣ | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error Binding: SlotStatus (required): The free/busy status of the slot. | ||||
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to begin | ||||
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to conclude | ||||
![]() ![]() |
0..1 | boolean | This slot has already been overbooked, appointments are unlikely to be accepted for this time | |||||
![]() ![]() |
0..1 | string | Comments on the slot to describe any extended information. Such as custom constraints on the slot | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Slot.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std. |
| Slot.serviceType | Base | example | Service type | 📍4.0.1 | FHIR Std. |
| Slot.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std. |
| Slot.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦3.0.0 | THO v7.4 |
| Slot.status | Base | required | SlotStatus | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Slot | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Slot | 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 | Slot | 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 | Slot | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Slot | 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()
|
Summary
Mandatory: 3 elements
Must-Support: 8 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Maturity: 2
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |
![]() ![]() |
SΣ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link |
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone |
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information |
![]() ![]() |
SΣ | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error Binding: SlotStatus (required): The free/busy status of the slot. |
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to begin |
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to conclude |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.status | Base | required | SlotStatus | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Slot | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Slot | 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 | Slot | 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 | Slot | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Slot | 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
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |
![]() ![]() |
S | 1..1 | id | Logical id of this artifact |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link |
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone |
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type |
![]() ![]() |
S | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information |
![]() ![]() |
S | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error |
![]() ![]() |
S | 1..1 | instant | Date/Time that the slot is to begin |
![]() ![]() |
S | 1..1 | instant | Date/Time that the slot is to conclude |
Documentation for this format | ||||
Snapshot ViewView
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |||||
![]() ![]() |
SΣ | 1..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
S | 0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | ||||
![]() ![]() ![]() |
S | 0..1 | ContactPoint | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | ||||
![]() ![]() ![]() |
S | 1..1 | Coding | Patient Type URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/patient-type | ||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | External Ids for this item | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: ServiceCategory (example) | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | The type of appointments that can be booked into this slot (ideally this would be an identifiable service - which is at a location, rather than the location itself). If provided then this overrides the value provided on the availability resource Binding: ServiceType (example) | ||||
![]() ![]() |
Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred): Additional details about where the content was created (e.g. clinical specialty). | ||||
![]() ![]() |
Σ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred) | ||||
![]() ![]() |
SΣ | 1..1 | Reference(Schedule) | The schedule resource that this slot defines an interval of status information | ||||
![]() ![]() |
SΣ | 1..1 | code | busy | free | busy-unavailable | busy-tentative | entered-in-error Binding: SlotStatus (required): The free/busy status of the slot. | ||||
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to begin | ||||
![]() ![]() |
SΣ | 1..1 | instant | Date/Time that the slot is to conclude | ||||
![]() ![]() |
0..1 | boolean | This slot has already been overbooked, appointments are unlikely to be accepted for this time | |||||
![]() ![]() |
0..1 | string | Comments on the slot to describe any extended information. Such as custom constraints on the slot | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Slot.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std. |
| Slot.serviceType | Base | example | Service type | 📍4.0.1 | FHIR Std. |
| Slot.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std. |
| Slot.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦3.0.0 | THO v7.4 |
| Slot.status | Base | required | SlotStatus | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Slot | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Slot | 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 | Slot | 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 | Slot | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Slot | 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()
|
Summary
Mandatory: 3 elements
Must-Support: 8 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Maturity: 2
Other representations of profile: CSV, Excel, Schematron
Discussed extensively in February 2026 as captured in these confluence notes, but also during the 2026 CMS Connectathon in July. General options included:
In all scenarios discussed, the group agreed that slot.appointmentType was not ideal given the 0..1 cardinality and the fact that patient type is orothogonal to appointmentType as it could represent a variety of other things.
After discussions on 8/3/2026, we decided to use the simple extension for patient type. Opinions weren't overtly strong either way, but the fact that "patient type" was a concept used in a lot of places, we decided to keep our simple extension.