Release 5 Ballot

This page is part of the FHIR Specification (v5.0.0-ballot: FHIR R5 Ballot Preview). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

12.17 Resource Slot - Content

Patient Administration Work GroupMaturity Level: 3 Trial UseSecurity Category: Business Compartments: Not linked to any defined compartments

A slot of time on a schedule that may be available for booking appointments.

Slot resources are used to provide time-slots that can be booked using an appointment. They do not provide any information about appointments that are available, just the time, and optionally what the time can be used for. These are effectively spaces of free/busy time.
Slots can also be marked as busy without having appointments associated.

A slot can have more than one appointment allocated to it. A scheduling system may permit multiple allocations up to a specific number of places. An example of this type of usage could be where the slot is being used for a group service that permits 5 participants at the same time.

A slot can be marked as over-booked indicating that there are too many appointments allocated to it.

In some situations a service may have a specific set of slots reserved for specific uses, such as "walk-ins" or a specific organization has a "standing booking" for Thursday mornings. These should be represented using the appointmentType field with a specified and agreed value.
Security Permissions or specific business rules on the system could enforce that only eligible appointments are allocated to them.

If a service had a weekly schedule created that permitted eight 1 hour appointments each day of a working week (Monday - Friday), this would be constructed by a single Schedule resource with the dates for the start and end of the week set, and then 40 (5x8) Slot resources associated with it.
As appointments fill up the schedule, these slots would individually be marked as busy as the appointments are filled into the slots.
The slots in a schedule do not need to be the same size, and can be different for different days of the week.

Slot instances do not have any recurrence information included. If recurring information is desired, this will be managed outside these resources, or included as extensions.

Note that booking an appointment does not necessarily require that slot resources be identified. When attempting to book an appointment, if the requestor knows ahead of time which schedulable resources are required, then identifying individual slots from the resources' schedules prior to creating the appointment is appropriate. However, in some medical scheduling scenarios, determining which resources are required for an appointment is very complex, and options other than using schedule+slot may be a better solution.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Slot TUDomainResourceA slot of time on a schedule that may be available for booking appointments

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierExternal Ids for this item

... serviceCategory Σ0..*CodeableConceptA broad categorization of the service that is to be performed during this appointment
ServiceCategory (Example)

... serviceType Σ0..*CodeableReference(HealthcareService)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 Schedule resource
ServiceType (Example)

... appointmentType Σ0..*CodeableConceptThe style of appointment or patient that may be booked in the slot (not service type)
hl7VS-appointmentReasonCodes (Preferred)

... schedule Σ1..1Reference(Schedule)The schedule resource that this slot defines an interval of status information
... status Σ1..1codebusy | free | busy-unavailable | busy-tentative | entered-in-error
SlotStatus (Required)
... start Σ1..1instantDate/Time that the slot is to begin
... end Σ1..1instantDate/Time that the slot is to conclude
... overbooked 0..1booleanThis slot has already been overbooked, appointments are unlikely to be accepted for this time
... comment 0..1stringComments on the slot to describe any extended information. Such as custom constraints on the slot

doco Documentation for this format

See the Extensions for this resource

UML Diagram (Legend)

Slot (DomainResource)External Ids for this itemidentifier : Identifier [0..*]A broad categorization of the service that is to be performed during this appointmentserviceCategory : CodeableConcept [0..*] « null (Strength=Example)ServiceCategory?? »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 Schedule resourceserviceType : CodeableReference [0..*] « HealthcareService; null (Strength=Example) ServiceType?? »The specialty of a practitioner that would be required to perform the service requested in this appointmentspecialty : CodeableConcept [0..*] « null (Strength=Preferred)PracticeSettingCodeValueSet? »The style of appointment or patient that may be booked in the slot (not service type)appointmentType : CodeableConcept [0..*] « null (Strength=Preferred) Hl7VSAppointmentReasonCodes? »The schedule resource that this slot defines an interval of status informationschedule : Reference [1..1] « Schedule »busy | free | busy-unavailable | busy-tentative | entered-in-errorstatus : code [1..1] « null (Strength=Required)SlotStatus! »Date/Time that the slot is to beginstart : instant [1..1]Date/Time that the slot is to concludeend : instant [1..1]This slot has already been overbooked, appointments are unlikely to be accepted for this timeoverbooked : boolean [0..1]Comments on the slot to describe any extended information. Such as custom constraints on the slotcomment : string [0..1]

XML Template

<Slot xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External Ids for this item --></identifier>
 <serviceCategory><!-- 0..* CodeableConcept A broad categorization of the service that is to be performed during this appointment --></serviceCategory>
 <serviceType><!-- 0..* CodeableReference(HealthcareService) 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 Schedule resource --></serviceType>
 <specialty><!-- 0..* CodeableConcept The specialty of a practitioner that would be required to perform the service requested in this appointment --></specialty>
 <appointmentType><!-- 0..* CodeableConcept The style of appointment or patient that may be booked in the slot (not service type)  --></appointmentType>
 <schedule><!-- 1..1 Reference(Schedule) The schedule resource that this slot defines an interval of status information --></schedule>
 <status value="[code]"/><!-- 1..1 busy | free | busy-unavailable | busy-tentative | entered-in-error -->
 <start value="[instant]"/><!-- 1..1 Date/Time that the slot is to begin -->
 <end value="[instant]"/><!-- 1..1 Date/Time that the slot is to conclude -->
 <overbooked value="[boolean]"/><!-- 0..1 This slot has already been overbooked, appointments are unlikely to be accepted for this time -->
 <comment value="[string]"/><!-- 0..1 Comments on the slot to describe any extended information. Such as custom constraints on the slot -->
</Slot>

JSON Template

{doco
  "resourceType" : "Slot",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External Ids for this item
  "serviceCategory" : [{ CodeableConcept }], // A broad categorization of the service that is to be performed during this appointment
  "serviceType" : [{ CodeableReference(HealthcareService) }], // 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 Schedule resource
  "specialty" : [{ CodeableConcept }], // The specialty of a practitioner that would be required to perform the service requested in this appointment
  "appointmentType" : [{ CodeableConcept }], // The style of appointment or patient that may be booked in the slot (not service type) 
  "schedule" : { Reference(Schedule) }, // R!  The schedule resource that this slot defines an interval of status information
  "status" : "<code>", // R!  busy | free | busy-unavailable | busy-tentative | entered-in-error
  "start" : "<instant>", // R!  Date/Time that the slot is to begin
  "end" : "<instant>", // R!  Date/Time that the slot is to conclude
  "overbooked" : <boolean>, // This slot has already been overbooked, appointments are unlikely to be accepted for this time
  "comment" : "<string>" // Comments on the slot to describe any extended information. Such as custom constraints on the slot
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Slot;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:Slot.identifier [ Identifier ], ... ; # 0..* External Ids for this item
  fhir:Slot.serviceCategory [ CodeableConcept ], ... ; # 0..* A broad categorization of the service that is to be performed during this appointment
  fhir:Slot.serviceType [ CodeableReference(HealthcareService) ], ... ; # 0..* 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 Schedule resource
  fhir:Slot.specialty [ CodeableConcept ], ... ; # 0..* The specialty of a practitioner that would be required to perform the service requested in this appointment
  fhir:Slot.appointmentType [ CodeableConcept ], ... ; # 0..* The style of appointment or patient that may be booked in the slot (not service type)
  fhir:Slot.schedule [ Reference(Schedule) ]; # 1..1 The schedule resource that this slot defines an interval of status information
  fhir:Slot.status [ code ]; # 1..1 busy | free | busy-unavailable | busy-tentative | entered-in-error
  fhir:Slot.start [ instant ]; # 1..1 Date/Time that the slot is to begin
  fhir:Slot.end [ instant ]; # 1..1 Date/Time that the slot is to conclude
  fhir:Slot.overbooked [ boolean ]; # 0..1 This slot has already been overbooked, appointments are unlikely to be accepted for this time
  fhir:Slot.comment [ string ]; # 0..1 Comments on the slot to describe any extended information. Such as custom constraints on the slot
]

Changes since R4

Slot
Slot.serviceType
  • Type changed from CodeableConcept to CodeableReference
  • Type changed from CodeableConcept to CodeableReference
Slot.appointmentType
  • Max Cardinality changed from 1 to *
  • Max Cardinality changed from 1 to *

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 4 tests that all execute ok. All tests pass round-trip testing and all r3 resources are valid.)

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Slot TUDomainResourceA slot of time on a schedule that may be available for booking appointments

Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... identifier Σ0..*IdentifierExternal Ids for this item

... serviceCategory Σ0..*CodeableConceptA broad categorization of the service that is to be performed during this appointment
ServiceCategory (Example)

... serviceType Σ0..*CodeableReference(HealthcareService)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 Schedule resource
ServiceType (Example)

... appointmentType Σ0..*CodeableConceptThe style of appointment or patient that may be booked in the slot (not service type)
hl7VS-appointmentReasonCodes (Preferred)

... schedule Σ1..1Reference(Schedule)The schedule resource that this slot defines an interval of status information
... status Σ1..1codebusy | free | busy-unavailable | busy-tentative | entered-in-error
SlotStatus (Required)
... start Σ1..1instantDate/Time that the slot is to begin
... end Σ1..1instantDate/Time that the slot is to conclude
... overbooked 0..1booleanThis slot has already been overbooked, appointments are unlikely to be accepted for this time
... comment 0..1stringComments on the slot to describe any extended information. Such as custom constraints on the slot

doco Documentation for this format

See the Extensions for this resource

UML Diagram (Legend)

Slot (DomainResource)External Ids for this itemidentifier : Identifier [0..*]A broad categorization of the service that is to be performed during this appointmentserviceCategory : CodeableConcept [0..*] « null (Strength=Example)ServiceCategory?? »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 Schedule resourceserviceType : CodeableReference [0..*] « HealthcareService; null (Strength=Example) ServiceType?? »The specialty of a practitioner that would be required to perform the service requested in this appointmentspecialty : CodeableConcept [0..*] « null (Strength=Preferred)PracticeSettingCodeValueSet? »The style of appointment or patient that may be booked in the slot (not service type)appointmentType : CodeableConcept [0..*] « null (Strength=Preferred) Hl7VSAppointmentReasonCodes? »The schedule resource that this slot defines an interval of status informationschedule : Reference [1..1] « Schedule »busy | free | busy-unavailable | busy-tentative | entered-in-errorstatus : code [1..1] « null (Strength=Required)SlotStatus! »Date/Time that the slot is to beginstart : instant [1..1]Date/Time that the slot is to concludeend : instant [1..1]This slot has already been overbooked, appointments are unlikely to be accepted for this timeoverbooked : boolean [0..1]Comments on the slot to describe any extended information. Such as custom constraints on the slotcomment : string [0..1]

XML Template

<Slot xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <identifier><!-- 0..* Identifier External Ids for this item --></identifier>
 <serviceCategory><!-- 0..* CodeableConcept A broad categorization of the service that is to be performed during this appointment --></serviceCategory>
 <serviceType><!-- 0..* CodeableReference(HealthcareService) 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 Schedule resource --></serviceType>
 <specialty><!-- 0..* CodeableConcept The specialty of a practitioner that would be required to perform the service requested in this appointment --></specialty>
 <appointmentType><!-- 0..* CodeableConcept The style of appointment or patient that may be booked in the slot (not service type)  --></appointmentType>
 <schedule><!-- 1..1 Reference(Schedule) The schedule resource that this slot defines an interval of status information --></schedule>
 <status value="[code]"/><!-- 1..1 busy | free | busy-unavailable | busy-tentative | entered-in-error -->
 <start value="[instant]"/><!-- 1..1 Date/Time that the slot is to begin -->
 <end value="[instant]"/><!-- 1..1 Date/Time that the slot is to conclude -->
 <overbooked value="[boolean]"/><!-- 0..1 This slot has already been overbooked, appointments are unlikely to be accepted for this time -->
 <comment value="[string]"/><!-- 0..1 Comments on the slot to describe any extended information. Such as custom constraints on the slot -->
</Slot>

JSON Template

{doco
  "resourceType" : "Slot",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External Ids for this item
  "serviceCategory" : [{ CodeableConcept }], // A broad categorization of the service that is to be performed during this appointment
  "serviceType" : [{ CodeableReference(HealthcareService) }], // 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 Schedule resource
  "specialty" : [{ CodeableConcept }], // The specialty of a practitioner that would be required to perform the service requested in this appointment
  "appointmentType" : [{ CodeableConcept }], // The style of appointment or patient that may be booked in the slot (not service type) 
  "schedule" : { Reference(Schedule) }, // R!  The schedule resource that this slot defines an interval of status information
  "status" : "<code>", // R!  busy | free | busy-unavailable | busy-tentative | entered-in-error
  "start" : "<instant>", // R!  Date/Time that the slot is to begin
  "end" : "<instant>", // R!  Date/Time that the slot is to conclude
  "overbooked" : <boolean>, // This slot has already been overbooked, appointments are unlikely to be accepted for this time
  "comment" : "<string>" // Comments on the slot to describe any extended information. Such as custom constraints on the slot
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:Slot;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:Slot.identifier [ Identifier ], ... ; # 0..* External Ids for this item
  fhir:Slot.serviceCategory [ CodeableConcept ], ... ; # 0..* A broad categorization of the service that is to be performed during this appointment
  fhir:Slot.serviceType [ CodeableReference(HealthcareService) ], ... ; # 0..* 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 Schedule resource
  fhir:Slot.specialty [ CodeableConcept ], ... ; # 0..* The specialty of a practitioner that would be required to perform the service requested in this appointment
  fhir:Slot.appointmentType [ CodeableConcept ], ... ; # 0..* The style of appointment or patient that may be booked in the slot (not service type)
  fhir:Slot.schedule [ Reference(Schedule) ]; # 1..1 The schedule resource that this slot defines an interval of status information
  fhir:Slot.status [ code ]; # 1..1 busy | free | busy-unavailable | busy-tentative | entered-in-error
  fhir:Slot.start [ instant ]; # 1..1 Date/Time that the slot is to begin
  fhir:Slot.end [ instant ]; # 1..1 Date/Time that the slot is to conclude
  fhir:Slot.overbooked [ boolean ]; # 0..1 This slot has already been overbooked, appointments are unlikely to be accepted for this time
  fhir:Slot.comment [ string ]; # 0..1 Comments on the slot to describe any extended information. Such as custom constraints on the slot
]

Changes since Release 4

Slot
Slot.serviceType
  • Type changed from CodeableConcept to CodeableReference
  • Type changed from CodeableConcept to CodeableReference
Slot.appointmentType
  • Max Cardinality changed from 1 to *
  • Max Cardinality changed from 1 to *

See the Full Difference for further information

This analysis is available as XML or JSON.

See R3 <--> R4 Conversion Maps (status = 4 tests that all execute ok. All tests pass round-trip testing and all r3 resources are valid.)

 

Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis

PathDefinitionTypeReference
Slot.serviceCategory

This value set defines an example set of codes that can be used to classify groupings of service-types/specialties.

ExampleServiceCategory
Slot.serviceType

This value set defines an example set of codes of service-types.

ExampleServiceType
Slot.specialty

This is the code representing the clinical specialty of the clinician or provider who interacted with, treated, or provided a service to/for the patient. The value set used for clinical specialty has been limited by HITSP to the value set reproduced from HITSP C80 Table 2-149 Clinical Specialty Value Set Definition.

PreferredPracticeSettingCodeValueSet
Slot.appointmentType

Value Set of codes that describe the kind of appointment or the reason why an appointment has been scheduled.

PreferredHl7VSAppointmentReasonCodes
Slot.status

The free/busy status of the slot.

RequiredSlotStatus

  • Interaction with other Standards
  • There is a strong desire that implementers of this resource should consider providing the resource in the iCalendar format as an alternative representation. Many 3rd party applications and component providers have parsers and user interface controls to display this information. This may lower the entry point to integrate outside the health-care specific applications, and into the consumer space. This would permit the easier creation of a mobile application that creates appointments in the devices native calendar.
    The iCalendar specification can be found at http://www.ietf.org/rfc/rfc2445.txt .

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
appointment-typetokenThe style of appointment or patient that may be booked in the slot (not service type)Slot.appointmentType
identifiertokenA Slot IdentifierSlot.identifier
schedulereferenceThe Schedule Resource that we are seeking a slot withinSlot.schedule
(Schedule)
service-categorytokenA broad categorization of the service that is to be performed during this appointmentSlot.serviceCategory
service-typetokenThe type (by coding) of appointments that can be booked into the slotSlot.serviceType.concept
service-type-referencereferenceThe type (by HealthcareService) of appointments that can be booked into the slotSlot.serviceType.reference
specialtytokenThe specialty of a practitioner that would be required to perform the service requested in this appointmentSlot.specialty
start NdateAppointment date/time.Slot.start
status NtokenThe free/busy status of the appointmentSlot.status