This page is part of the FHIR Specification (v0.0.82: DSTU 1). 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

5.26 Resource Appointment - Content

This resource maintained by the Patient Administration Work Group

A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s).

5.26.1 Scope and Usage

Appointment resources are used to provide information about a planned meeting that may be in the future or past. The resource only describes a single meeting, a series of repeating visits would require multiple appointment resources be created for each instance. Examples include a scheduled surgery, a follow-up for a clinical visit, a scheduled conference call between clinicians to discuss a case, the reservation of a piece of diagnostic equipment for a particular use, etc. The visit scheduled by an appointment may be in person or remote (by phone, video conference, etc.) All that matters is that the time and usage of one or more individuals, locations and/or pieces of equipment is being fully or partially reserved for a designated period of time.

This definition takes the concepts of appointments in a clinical setting and also extends them to be relevant in the community healthcare space, and also ease exposure to other appointment / calendar standards widely used outside of healthcare.

5.26.1.1 The basic workflow to create an appointment

5.26.1.2 There are 2 typical workflows that occur with appointments

5.26.2 Boundaries and Relationships

5.26.2.1 Appointment Statuses and Encounters

Appointments can be considered as Administrative only, and the Encounter is expected to have Clinical implications.

In general it is expected that appointments will result in the creation of an Encounter. The encounter is typically created when the service starts, not when the patient arrives. When the patient arrives, an appointment can be marked with a status of Arrived.

In an Emergency Room context, this appointment resource is probably not appropriate to be used. In these cases an encounter should be created.

The Appointment request pattern used is different to the order-response pattern used elsewhere in FHIR.
This is due to the close relationship to the iCAL standard. Many non-clinical systems use generic non health appointment systems which implement this standard, and the desire to integrate with the consumer who has no access to health based software is highly desirable.
The mappings to the iCAL standard has been provided to guide implementation of gateways between FHIR servers and iCAL systems.

5.26.2.2 Appointment Locations and Participation

The Location of the appointment is to be defined by using a participant that references a location or HealthcareService.
This permits the location to also have its availability checked via a schedule and any conflicts more easily managed.

This resource is referenced by AppointmentResponse, ClinicalImpression and Encounter

5.26.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Appointment DomainResourceA booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s)
... identifier Σ0..*IdentifierExternal Ids for this item
... status ?! Σ1..1codepending | booked | arrived | fulfilled | cancelled | noshow
AppointmentStatus (Required)
... type Σ0..1CodeableConceptThe type of appointment that is being booked
DocumentC80PracticeSetting (Preferred)
... reason Σ0..1CodeableConceptThe reason that this appointment is being scheduled, this is more clinical than administrative
ApptReason (Required)
... priority 0..1integerThe priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
... description 0..1stringThe brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
... start Σ1..1instantDate/Time that the appointment is to take place
... end Σ1..1instantDate/Time that the appointment is to conclude
... slot 0..*SlotThe slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
... comment 0..1stringAdditional comments about the appointment
... order 0..1OrderAn Order that lead to the creation of this appointment
... participant 1..*ElementList of participants involved in the appointment
.... type Σ0..*CodeableConceptRole of participant in the appointment
ParticipantType (Required)
.... actor Σ0..1Patient | Practitioner | RelatedPerson | Device | HealthcareService | LocationA Person, Location/HealthcareService or Device that is participating in the appointment
.... required Σ0..1coderequired | optional | information-only
ParticipantRequired (Required)
.... status 1..1codeaccepted | declined | tentative | needs-action
ParticipationStatus (Required)

UML Diagram

Appointment (DomainResource)This records identifiers associated with this appointment concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)identifier : Identifier 0..*The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status (this element modifies the meaning of other elements)status : code 1..1 « The free/busy status of an appointmentAppointmentStatus »The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)type : CodeableConcept 0..1 « Additional details about where the content was created (e.g. clinical specialty)DocumentC80PracticeSetting+ »The reason that this appointment is being scheduled, this is more clinical than administrativereason : CodeableConcept 0..1 « The Reason for the appointment to take placeApptReason »The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)priority : integer 0..1The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment fielddescription : string 0..1Date/Time that the appointment is to take placestart : instant 1..1Date/Time that the appointment is to concludeend : instant 1..1The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slotslot : Reference(Slot) 0..*Additional comments about the appointmentcomment : string 0..1An Order that lead to the creation of this appointmentorder : Reference(Order) 0..1ParticipantRole of participant in the appointmenttype : CodeableConcept 0..* « Role of participant in encounterParticipantType »A Person, Location/HealthcareService or Device that is participating in the appointmentactor : Reference(Patient|Practitioner| RelatedPerson|Device|HealthcareService| Location) 0..1Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be presentrequired : code 0..1 « Is the Participant required to attend the appointmentParticipantRequired »Participation status of the Patientstatus : code 1..1 « The Participation status of an appointmentParticipationStatus »List of participants involved in the appointmentparticipant1..*

XML Template

<Appointment 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>
 <status value="[code]"/><!-- 1..1 pending | booked | arrived | fulfilled | cancelled | noshow -->
 <type><!-- 0..1 CodeableConcept The type of appointment that is being booked --></type>
 <reason><!-- 0..1 CodeableConcept The reason that this appointment is being scheduled, this is more clinical than administrative --></reason>
 <priority value="[integer]"/><!-- 0..1 
     The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority) -->
 <description value="[string]"/><!-- 0..1 
     The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field -->
 <start value="[instant]"/><!-- 1..1 Date/Time that the appointment is to take place -->
 <end value="[instant]"/><!-- 1..1 Date/Time that the appointment is to conclude -->
 <slot><!-- 0..* Reference(Slot) 
     The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot --></slot>
 <comment value="[string]"/><!-- 0..1 Additional comments about the appointment -->
 <order><!-- 0..1 Reference(Order) An Order that lead to the creation of this appointment --></order>
 <participant>  <!-- 1..* List of participants involved in the appointment -->
  <type><!-- 0..* CodeableConcept Role of participant in the appointment --></type>
  <actor><!-- 0..1 Reference(Patient|Practitioner|RelatedPerson|Device|
    HealthcareService|Location) 
      A Person, Location/HealthcareService or Device that is participating in the appointment --></actor>
  <required value="[code]"/><!-- 0..1 required | optional | information-only -->
  <status value="[code]"/><!-- 1..1 accepted | declined | tentative | needs-action -->
 </participant>
</Appointment>

JSON Template

{doco
  "resourceType" : "Appointment",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External Ids for this item
  "status" : "<code>", // R!  pending | booked | arrived | fulfilled | cancelled | noshow
  "type" : { CodeableConcept }, // The type of appointment that is being booked
  "reason" : { CodeableConcept }, // The reason that this appointment is being scheduled, this is more clinical than administrative
  "priority" : <integer>, // 
     The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
  "description" : "<string>", // 
     The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
  "start" : "<instant>", // R!  Date/Time that the appointment is to take place
  "end" : "<instant>", // R!  Date/Time that the appointment is to conclude
  "slot" : [{ Reference(Slot) }], // 
     The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
  "comment" : "<string>", // Additional comments about the appointment
  "order" : { Reference(Order) }, // An Order that lead to the creation of this appointment
  "participant" : [{ // R!  List of participants involved in the appointment
    "type" : [{ CodeableConcept }], // Role of participant in the appointment
    "actor" : { Reference(Patient|Practitioner|RelatedPerson|Device|
    HealthcareService|Location) }, // 
      A Person, Location/HealthcareService or Device that is participating in the appointment
    "required" : "<code>", // required | optional | information-only
    "status" : "<code>" // R!  accepted | declined | tentative | needs-action
  }]
}

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. Appointment DomainResourceA booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s)
... identifier Σ0..*IdentifierExternal Ids for this item
... status ?! Σ1..1codepending | booked | arrived | fulfilled | cancelled | noshow
AppointmentStatus (Required)
... type Σ0..1CodeableConceptThe type of appointment that is being booked
DocumentC80PracticeSetting (Preferred)
... reason Σ0..1CodeableConceptThe reason that this appointment is being scheduled, this is more clinical than administrative
ApptReason (Required)
... priority 0..1integerThe priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
... description 0..1stringThe brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
... start Σ1..1instantDate/Time that the appointment is to take place
... end Σ1..1instantDate/Time that the appointment is to conclude
... slot 0..*SlotThe slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
... comment 0..1stringAdditional comments about the appointment
... order 0..1OrderAn Order that lead to the creation of this appointment
... participant 1..*ElementList of participants involved in the appointment
.... type Σ0..*CodeableConceptRole of participant in the appointment
ParticipantType (Required)
.... actor Σ0..1Patient | Practitioner | RelatedPerson | Device | HealthcareService | LocationA Person, Location/HealthcareService or Device that is participating in the appointment
.... required Σ0..1coderequired | optional | information-only
ParticipantRequired (Required)
.... status 1..1codeaccepted | declined | tentative | needs-action
ParticipationStatus (Required)

UML Diagram

Appointment (DomainResource)This records identifiers associated with this appointment concern that are defined by business processed and/ or used to refer to it when a direct URL reference to the resource itself is not appropriate (e.g. in CDA documents, or in written / printed documentation)identifier : Identifier 0..*The overall status of the Appointment. Each of the participants has their own participation status which indicates their involvement in the process, however this status indicates the shared status (this element modifies the meaning of other elements)status : code 1..1 « The free/busy status of an appointmentAppointmentStatus »The type of appointment that is being booked (This may also be associated with participants for location, and/or a HealthcareService)type : CodeableConcept 0..1 « Additional details about where the content was created (e.g. clinical specialty)DocumentC80PracticeSetting+ »The reason that this appointment is being scheduled, this is more clinical than administrativereason : CodeableConcept 0..1 « The Reason for the appointment to take placeApptReason »The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)priority : integer 0..1The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment fielddescription : string 0..1Date/Time that the appointment is to take placestart : instant 1..1Date/Time that the appointment is to concludeend : instant 1..1The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slotslot : Reference(Slot) 0..*Additional comments about the appointmentcomment : string 0..1An Order that lead to the creation of this appointmentorder : Reference(Order) 0..1ParticipantRole of participant in the appointmenttype : CodeableConcept 0..* « Role of participant in encounterParticipantType »A Person, Location/HealthcareService or Device that is participating in the appointmentactor : Reference(Patient|Practitioner| RelatedPerson|Device|HealthcareService| Location) 0..1Is this participant required to be present at the meeting. This covers a use-case where 2 doctors need to meet to discuss the results for a specific patient, and the patient is not required to be presentrequired : code 0..1 « Is the Participant required to attend the appointmentParticipantRequired »Participation status of the Patientstatus : code 1..1 « The Participation status of an appointmentParticipationStatus »List of participants involved in the appointmentparticipant1..*

XML Template

<Appointment 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>
 <status value="[code]"/><!-- 1..1 pending | booked | arrived | fulfilled | cancelled | noshow -->
 <type><!-- 0..1 CodeableConcept The type of appointment that is being booked --></type>
 <reason><!-- 0..1 CodeableConcept The reason that this appointment is being scheduled, this is more clinical than administrative --></reason>
 <priority value="[integer]"/><!-- 0..1 
     The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority) -->
 <description value="[string]"/><!-- 0..1 
     The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field -->
 <start value="[instant]"/><!-- 1..1 Date/Time that the appointment is to take place -->
 <end value="[instant]"/><!-- 1..1 Date/Time that the appointment is to conclude -->
 <slot><!-- 0..* Reference(Slot) 
     The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot --></slot>
 <comment value="[string]"/><!-- 0..1 Additional comments about the appointment -->
 <order><!-- 0..1 Reference(Order) An Order that lead to the creation of this appointment --></order>
 <participant>  <!-- 1..* List of participants involved in the appointment -->
  <type><!-- 0..* CodeableConcept Role of participant in the appointment --></type>
  <actor><!-- 0..1 Reference(Patient|Practitioner|RelatedPerson|Device|
    HealthcareService|Location) 
      A Person, Location/HealthcareService or Device that is participating in the appointment --></actor>
  <required value="[code]"/><!-- 0..1 required | optional | information-only -->
  <status value="[code]"/><!-- 1..1 accepted | declined | tentative | needs-action -->
 </participant>
</Appointment>

JSON Template

{doco
  "resourceType" : "Appointment",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "identifier" : [{ Identifier }], // External Ids for this item
  "status" : "<code>", // R!  pending | booked | arrived | fulfilled | cancelled | noshow
  "type" : { CodeableConcept }, // The type of appointment that is being booked
  "reason" : { CodeableConcept }, // The reason that this appointment is being scheduled, this is more clinical than administrative
  "priority" : <integer>, // 
     The priority of the appointment. Can be used to make informed decisions if needing to re-prioritize appointments. (The iCal Standard specifies 0 as undefined, 1 as highest, 9 as lowest priority)
  "description" : "<string>", // 
     The brief description of the appointment as would be shown on a subject line in a meeting request, or appointment list. Detailed or expanded information should be put in the comment field
  "start" : "<instant>", // R!  Date/Time that the appointment is to take place
  "end" : "<instant>", // R!  Date/Time that the appointment is to conclude
  "slot" : [{ Reference(Slot) }], // 
     The slot that this appointment is filling. If provided then the schedule will not be provided as slots are not recursive, and the start/end values MUST be the same as from the slot
  "comment" : "<string>", // Additional comments about the appointment
  "order" : { Reference(Order) }, // An Order that lead to the creation of this appointment
  "participant" : [{ // R!  List of participants involved in the appointment
    "type" : [{ CodeableConcept }], // Role of participant in the appointment
    "actor" : { Reference(Patient|Practitioner|RelatedPerson|Device|
    HealthcareService|Location) }, // 
      A Person, Location/HealthcareService or Device that is participating in the appointment
    "required" : "<code>", // required | optional | information-only
    "status" : "<code>" // R!  accepted | declined | tentative | needs-action
  }]
}

 

Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire

5.26.3.1 Terminology Bindings

PathDefinitionTypeReference
Appointment.status The free/busy status of an appointmentRequiredhttp://hl7.org/fhir/appointmentstatus
Appointment.type Additional details about where the content was created (e.g. clinical specialty)Preferredhttp://hl7.org/fhir/vs/c80-practice-codes
Appointment.reason The Reason for the appointment to take placeRequiredhttp://hl7.org/fhir/vs/encounter-reason
Appointment.participant.type Role of participant in encounterRequiredhttp://hl7.org/fhir/vs/encounter-participant-type
Appointment.participant.required Is the Participant required to attend the appointmentRequiredhttp://hl7.org/fhir/participantrequired
Appointment.participant.status The Participation status of an appointmentRequiredhttp://hl7.org/fhir/participationstatus

5.26.4 Typical Status Transition Examples:

5.26.4.1 Typical Flow of statuses for an appointment:

Slot.freeBusyType = FREE

(An appointment request is created)
Appointment.status = pending
Appointment.participant.status = needs-action
Slot.freeBusyType = BUSY-TENTATIVE

(The appointment is accepted as described – by all participants)
AppointmentResponse.participantStatus = accepted

(The appointment is confirmed as accepted by all participants)
Appointment.participant.status = accepted
Appointment.status = booked
Slot.freeBusyType = BUSY

(Optional: Preparation for the appointment begins – could be preparing a room for the appointment etc.)
Encounter.status = planned (optional)
Encounter.location.status = planned

(The patient arrives for the appointment, often sitting in a waiting room)
Appointment.status = arrived
Encounter.status = arrived
Encounter.location.status = present

(The practitioner and the patient meet and the provision of the service begins, appointment is finished with now)
Encounter.status = in-progress
Appointment.status = fulfilled

(The encounter concludes)
Encounter.status = finished

5.26.4.2 Flow for the rejection/cancellation of an appointment

Slot.freeBusyType = FREE

Appointment.status = pending
Appointment.participant.status = needs-action
Slot.freeBusyType = BUSY-TENTATIVE

AppointmentResponse.participantStatus = declined

Appointment.participant.status = declined
Appointment.status = cancelled
Slot.freeBusyType = FREE

5.26.4.3 Flow for re-negotiation:

Slot.freeBusyType = FREE

Appointment.status = pending
Appointment.participant(Brian).status = needs-action
Appointment.participant(Peter).status = needs-action
Slot.freeBusyType = BUSY-TENTATIVE

AppointmentResponse(Brian).participantStatus = accepted

Appointment.participant(Brian).status = accepted

AppointmentResponse(Peter).participantStatus = tentative (with new time)

Appointment (new time details updated)
Appointment.participant(Brian).status = needs-action
Appointment.participant(Peter).status = needs-action

AppointmentResponse(Brian).participantStatus = accepted

Appointment.participant(Brian).status = accepted

AppointmentResponse(Peter).participantStatus = accepted

Appointment.participant(Peter).status = accepted
Appointment.participantstatus = accepted
Appointment.status = booked
Slot.freeBusyType = BUSY

5.26.4.4 Flow for a patient no-show:

… (from typical status flow)
Appointent.participant.status = accepted
Appointment.status = booked
Slot.freeBusyType = BUSY

Appointment.status = noshow
(Note that no encounter is created)

5.26.5 Notes:

5.26.6 Search Parameters

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

NameTypeDescriptionPaths
actorreferenceAny one of the individuals participating in the appointmentAppointment.participant.actor
(Device, Location, HealthcareService, Patient, Practitioner, RelatedPerson)
datedateAppointment date/time.Appointment.start
locationreferenceThis location is listed in the participants of the appointmentAppointment.participant.actor
(Location)
partstatustokenThe Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests.Appointment.participant.status
patientreferenceOne of the individuals of the appointment is this patientAppointment.participant.actor
(Patient)
practitionerreferenceOne of the individuals of the appointment is this practitionerAppointment.participant.actor
(Practitioner)
statustokenThe overall status of the appointmentAppointment.status