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-ballot 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-ballot | ||||
| Standards status: Trial-use Active as of 2026-04-01 | Maturity Level: 2 | Computable Name: SmartSchedulingSlot | |||
Each line of the Slot File is a minified JSON object that conveys information about an appointment slot. Publishers are encouraged to represent slots with fine-grained timing details (e.g. representing appointments at specific times of the day), but MAY represent slots with coarse grained timing (e.g., "between 9 a.m. and 5 p.m." or "between noon and five p.m.").
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:
When publishing a Slot with "status": "free", Publishers should ensure that the Slot is in fact available for booking, given current business rules. For example, if a provider requires certain prerequisites to be met before an appoinmtnet can be booked (such as referrals, prior authorization, or specific patient elgibility criteria), then the provider SHOULD NOT advertise the slot as available unless those requirements are satisfied.
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 | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.appointmentType | Base | preferred | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
| 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 | |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |
![]() ![]() |
S | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 |
![]() ![]() |
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.appointmentType | Base | preferred | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Slot | A slot of time on a schedule that may be available for booking appointments | |||||
![]() ![]() |
Σ | 0..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 | |||||
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |||||
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |||||
![]() ![]() |
?! | 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). | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
| 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
Must-Support: 5 elements
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 | |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Slot.appointmentType | Base | preferred | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
| 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 | |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |
![]() ![]() |
S | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 |
![]() ![]() |
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.appointmentType | Base | preferred | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
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 | |||||
![]() ![]() |
Σ | 0..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 | |||||
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
0..1 | url | Booking Deep Link URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-deep-link | |||||
![]() ![]() ![]() |
0..1 | string | Booking Phone URL: http://hl7.org/fhir/uv/smart-scheduling-links/StructureDefinition/booking-phone | |||||
![]() ![]() |
?! | 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). | ||||
![]() ![]() |
SΣ | 0..1 | CodeableConcept | The style of appointment or patient that may be booked in the slot (not service type) Binding: Appointment Type and Reasons (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 | Appointment Type and Reasons | 📦1.0.0-ballot | This IG |
| 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
Must-Support: 5 elements
Extensions
This structure refers to these extensions:
Maturity: 2
Other representations of profile: CSV, Excel, Schematron