This page is part of the FHIR Specification v6.0.0-ballot1: Release 6 Ballot (1st Draft) (see Ballot Notes). The current version is 5.0.0. For a full list of available versions, see the Directory of published versions
Patient Administration Work Group | Maturity Level: 3 | Trial Use | Security Category: Patient | Compartments: Device, Patient, Practitioner, RelatedPerson |
A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection.
Appointment resources are used to provide information about a planned meeting that may be in the future or past. They may be for a single meeting or for a series of repeating visits. 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.
When an appointment is required, a requester creates new Appointment resource with the Appointment.status="proposed".
All included participants (optional or mandatory) should have the status="needs-action" to allow filtering and displaying
appointments to user-participants for accepting or rejecting new and updated requests. Based on internal system business rules,
certain statuses may be automatically updated, for example: "reject because the requested participant is on vacation" or
"this type of user is not allowed to request those specific appointments".
The reply process is simply performed by the person/system handling the requests updating the participant statuses as needed. If there are multiple systems involved, then these will create AppointmentResponse entries with the desired statuses.
Once all participants have their participation status created/updated (and the main system marking the appointment participant records with the AppointmentResponse statuses) then the overall status of the Appointment is updated.
To "invalidate" an appointment response it should have the status changed to entered-in-error, or simply delete the resource.
When a recurring appointment is requested, the participant may choose to respond to each individual
occurrence, in which case AppointmentResponse.recurring
should be false
. If the participant chooses
to respond the same way for all occurrences, they may instead use a single AppointmentResponse with
recurring set to true
. These may be combined as the participant chooses. For example, they may
accept all occurrences of a series (recurring = true), but then send a decline for a specific
occurrence (recurring = false).
For more general information on recurring appointments, refer to the appointment page.
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
AppointmentResponse | TU | DomainResource | A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection + Rule: Either the participantType or actor must be specified Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | External Ids for this item |
appointment | Σ | 1..1 | Reference(Appointment) | Appointment this response relates to |
proposedNewTime | Σ | 0..1 | boolean | Indicator for a counter proposal |
start | 0..1 | instant | Time from appointment, or requested new start time | |
end | 0..1 | instant | Time from appointment, or requested new end time | |
participantType | ΣC | 0..* | CodeableConcept | Role of participant in the appointment Binding: Participant Type (Extensible) |
actor | ΣC | 0..1 | Reference(Patient | Group | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person(s), Location, HealthcareService, or Device |
participantStatus | ?!Σ | 1..1 | code | accepted | declined | tentative | needs-action | entered-in-error Binding: Appointment Response Status (Required) |
comment | 0..1 | markdown | Additional comments | |
recurring | 0..1 | boolean | This response is for all occurrences in a recurring request | |
occurrenceDate | 0..1 | date | Original date within a recurring request | |
recurrenceId | 0..1 | positiveInt | The recurrence ID of the specific recurring request | |
Documentation for this format |
See the Extensions for this resource
UML Diagram (Legend)
XML Template
<AppointmentResponse xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier External Ids for this item --></identifier> <appointment><!-- 1..1 Reference(Appointment) Appointment this response relates to --></appointment> <proposedNewTime value="[boolean]"/><!-- 0..1 Indicator for a counter proposal --> <start value="[instant]"/><!-- 0..1 Time from appointment, or requested new start time --> <end value="[instant]"/><!-- 0..1 Time from appointment, or requested new end time --> <participantType><!-- I 0..* CodeableConcept Role of participant in the appointment --></participantType> <actor><!-- I 0..1 Reference(Device|Group|HealthcareService|Location|Patient| Practitioner|PractitionerRole|RelatedPerson) Person(s), Location, HealthcareService, or Device --></actor> <participantStatus value="[code]"/><!-- 1..1 accepted | declined | tentative | needs-action | entered-in-error --> <comment value="[markdown]"/><!-- 0..1 Additional comments --> <recurring value="[boolean]"/><!-- 0..1 This response is for all occurrences in a recurring request --> <occurrenceDate value="[date]"/><!-- 0..1 Original date within a recurring request --> <recurrenceId value="[positiveInt]"/><!-- 0..1 The recurrence ID of the specific recurring request --> </AppointmentResponse>
JSON Template
{ "resourceType" : "AppointmentResponse", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // External Ids for this item "appointment" : { Reference(Appointment) }, // R! Appointment this response relates to "proposedNewTime" : <boolean>, // Indicator for a counter proposal "start" : "<instant>", // Time from appointment, or requested new start time "end" : "<instant>", // Time from appointment, or requested new end time "participantType" : [{ CodeableConcept }], // I Role of participant in the appointment "actor" : { Reference(Device|Group|HealthcareService|Location|Patient| Practitioner|PractitionerRole|RelatedPerson) }, // I Person(s), Location, HealthcareService, or Device "participantStatus" : "<code>", // R! accepted | declined | tentative | needs-action | entered-in-error "comment" : "<markdown>", // Additional comments "recurring" : <boolean>, // This response is for all occurrences in a recurring request "occurrenceDate" : "<date>", // Original date within a recurring request "recurrenceId" : "<positiveInt>" // The recurrence ID of the specific recurring request }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:AppointmentResponse; 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:identifier ( [ Identifier ] ... ) ; # 0..* External Ids for this item fhir:appointment [ Reference(Appointment) ] ; # 1..1 Appointment this response relates to fhir:proposedNewTime [ boolean ] ; # 0..1 Indicator for a counter proposal fhir:start [ instant ] ; # 0..1 Time from appointment, or requested new start time fhir:end [ instant ] ; # 0..1 Time from appointment, or requested new end time fhir:participantType ( [ CodeableConcept ] ... ) ; # 0..* I Role of participant in the appointment fhir:actor [ Reference(Device|Group|HealthcareService|Location|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ; # 0..1 I Person(s), Location, HealthcareService, or Device fhir:participantStatus [ code ] ; # 1..1 accepted | declined | tentative | needs-action | entered-in-error fhir:comment [ markdown ] ; # 0..1 Additional comments fhir:recurring [ boolean ] ; # 0..1 This response is for all occurrences in a recurring request fhir:occurrenceDate [ date ] ; # 0..1 Original date within a recurring request fhir:recurrenceId [ positiveInt ] ; # 0..1 The recurrence ID of the specific recurring request ]
Changes from both R4 and R4B
AppointmentResponse | |
AppointmentResponse.proposedNewTime |
|
AppointmentResponse.actor |
|
AppointmentResponse.participantStatus |
|
AppointmentResponse.comment |
|
AppointmentResponse.recurring |
|
AppointmentResponse.occurrenceDate |
|
AppointmentResponse.recurrenceId |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
AppointmentResponse | TU | DomainResource | A reply to an appointment request for a patient and/or practitioner(s), such as a confirmation or rejection + Rule: Either the participantType or actor must be specified Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension | |
identifier | Σ | 0..* | Identifier | External Ids for this item |
appointment | Σ | 1..1 | Reference(Appointment) | Appointment this response relates to |
proposedNewTime | Σ | 0..1 | boolean | Indicator for a counter proposal |
start | 0..1 | instant | Time from appointment, or requested new start time | |
end | 0..1 | instant | Time from appointment, or requested new end time | |
participantType | ΣC | 0..* | CodeableConcept | Role of participant in the appointment Binding: Participant Type (Extensible) |
actor | ΣC | 0..1 | Reference(Patient | Group | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person(s), Location, HealthcareService, or Device |
participantStatus | ?!Σ | 1..1 | code | accepted | declined | tentative | needs-action | entered-in-error Binding: Appointment Response Status (Required) |
comment | 0..1 | markdown | Additional comments | |
recurring | 0..1 | boolean | This response is for all occurrences in a recurring request | |
occurrenceDate | 0..1 | date | Original date within a recurring request | |
recurrenceId | 0..1 | positiveInt | The recurrence ID of the specific recurring request | |
Documentation for this format |
See the Extensions for this resource
XML Template
<AppointmentResponse xmlns="http://hl7.org/fhir"> <!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension --> <identifier><!-- 0..* Identifier External Ids for this item --></identifier> <appointment><!-- 1..1 Reference(Appointment) Appointment this response relates to --></appointment> <proposedNewTime value="[boolean]"/><!-- 0..1 Indicator for a counter proposal --> <start value="[instant]"/><!-- 0..1 Time from appointment, or requested new start time --> <end value="[instant]"/><!-- 0..1 Time from appointment, or requested new end time --> <participantType><!-- I 0..* CodeableConcept Role of participant in the appointment --></participantType> <actor><!-- I 0..1 Reference(Device|Group|HealthcareService|Location|Patient| Practitioner|PractitionerRole|RelatedPerson) Person(s), Location, HealthcareService, or Device --></actor> <participantStatus value="[code]"/><!-- 1..1 accepted | declined | tentative | needs-action | entered-in-error --> <comment value="[markdown]"/><!-- 0..1 Additional comments --> <recurring value="[boolean]"/><!-- 0..1 This response is for all occurrences in a recurring request --> <occurrenceDate value="[date]"/><!-- 0..1 Original date within a recurring request --> <recurrenceId value="[positiveInt]"/><!-- 0..1 The recurrence ID of the specific recurring request --> </AppointmentResponse>
JSON Template
{ "resourceType" : "AppointmentResponse", // from Resource: id, meta, implicitRules, and language // from DomainResource: text, contained, extension, and modifierExtension "identifier" : [{ Identifier }], // External Ids for this item "appointment" : { Reference(Appointment) }, // R! Appointment this response relates to "proposedNewTime" : <boolean>, // Indicator for a counter proposal "start" : "<instant>", // Time from appointment, or requested new start time "end" : "<instant>", // Time from appointment, or requested new end time "participantType" : [{ CodeableConcept }], // I Role of participant in the appointment "actor" : { Reference(Device|Group|HealthcareService|Location|Patient| Practitioner|PractitionerRole|RelatedPerson) }, // I Person(s), Location, HealthcareService, or Device "participantStatus" : "<code>", // R! accepted | declined | tentative | needs-action | entered-in-error "comment" : "<markdown>", // Additional comments "recurring" : <boolean>, // This response is for all occurrences in a recurring request "occurrenceDate" : "<date>", // Original date within a recurring request "recurrenceId" : "<positiveInt>" // The recurrence ID of the specific recurring request }
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> . [ a fhir:AppointmentResponse; 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:identifier ( [ Identifier ] ... ) ; # 0..* External Ids for this item fhir:appointment [ Reference(Appointment) ] ; # 1..1 Appointment this response relates to fhir:proposedNewTime [ boolean ] ; # 0..1 Indicator for a counter proposal fhir:start [ instant ] ; # 0..1 Time from appointment, or requested new start time fhir:end [ instant ] ; # 0..1 Time from appointment, or requested new end time fhir:participantType ( [ CodeableConcept ] ... ) ; # 0..* I Role of participant in the appointment fhir:actor [ Reference(Device|Group|HealthcareService|Location|Patient|Practitioner|PractitionerRole| RelatedPerson) ] ; # 0..1 I Person(s), Location, HealthcareService, or Device fhir:participantStatus [ code ] ; # 1..1 accepted | declined | tentative | needs-action | entered-in-error fhir:comment [ markdown ] ; # 0..1 Additional comments fhir:recurring [ boolean ] ; # 0..1 This response is for all occurrences in a recurring request fhir:occurrenceDate [ date ] ; # 0..1 Original date within a recurring request fhir:recurrenceId [ positiveInt ] ; # 0..1 The recurrence ID of the specific recurring request ]
Changes from both R4 and R4B
AppointmentResponse | |
AppointmentResponse.proposedNewTime |
|
AppointmentResponse.actor |
|
AppointmentResponse.participantStatus |
|
AppointmentResponse.comment |
|
AppointmentResponse.recurring |
|
AppointmentResponse.occurrenceDate |
|
AppointmentResponse.recurrenceId |
|
See the Full Difference for further information
This analysis is available for R4 as XML or JSON and for R4B as XML or JSON.
See R4 <--> R5 Conversion Maps (status = See Conversions Summary.)
Additional definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) + see the extensions, the spreadsheet version & the dependency analysis
Path | ValueSet | Type | Documentation |
---|---|---|---|
AppointmentResponse.participantType | ParticipantType | Extensible | This value set defines a set of codes that can be used to indicate how an individual participates in an encounter. |
AppointmentResponse.participantStatus | AppointmentResponseStatus | Required | The Participation status for a participant in response to a request for an appointment. |
UniqueKey | Level | Location | Description | Expression |
apr-1 | Rule | (base) | Either the participantType or actor must be specified | participantType.exists() or actor.exists() |
Recurring appointments need to have the timezone defined in which the values were entered. Knowing that the start time was at 9:00:00Z+10 does not mean that the same time in 2 weeks is actually the same.
For example, if this was a time in Brisbane Australia, this time would be the same (in respect to its offset from UTC), however if this was for Melbourne Australia, during the daylight savings period Melbourne timezone becomes +11. So, without the additional information as to which timezone it was created in, scheduling a 9am appointment every Wednesday would not be possible.
Search parameters for this resource. See also the full list of search parameters for this resource, and check the Extensions registry for search parameters on extensions related to this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.
Name | Type | Description | Expression | In Common |
actor | reference | The Person, Location/HealthcareService or Device that this appointment response replies for | AppointmentResponse.actor (Practitioner, Group, Device, Patient, HealthcareService, PractitionerRole, RelatedPerson, Location) | |
appointment | reference | The appointment that the response is attached to | AppointmentResponse.appointment (Appointment) | |
group | reference | This Response is for this Group | AppointmentResponse.actor.where(resolve() is Group) (Group) | |
identifier | token | An Identifier in this appointment response | AppointmentResponse.identifier | 65 Resources |
location | reference | This Response is for this Location | AppointmentResponse.actor.where(resolve() is Location) (Location) | |
part-status | token | The participants acceptance status for this appointment | AppointmentResponse.participantStatus | |
patient | reference | This Response is for this Patient | AppointmentResponse.actor.where(resolve() is Patient) (Patient) | 66 Resources |
practitioner | reference | This Response is for this Practitioner | AppointmentResponse.actor.where(resolve() is Practitioner) (Practitioner) |