Appointment
Overview
The Appointment resource represents 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).
Purpose:
- Schedule healthcare appointments
- Coordinate patient and provider availability
- Track appointment status and participation
- Support appointment workflows (booking, confirmation, cancellation)
Use Cases:
- Scheduling patient visits (office visits, telehealth, procedures)
- Managing appointment requests and confirmations
- Tracking appointment status changes (booked, arrived, fulfilled, cancelled)
- Coordinating multiple participants for appointments
Relationships:
- References Patient resources for appointment subjects
- References Practitioner/PractitionerRole for healthcare providers
- References Location for appointment venues
- May reference Slot resources for scheduling
- Can create Encounter resources when appointments are fulfilled
Resource Schema
Key Fields
| Field | Type | Description |
|---|---|---|
resourceType | string | Always "Appointment" |
id | string | Unique identifier for the appointment |
status | code | proposed | pending | booked | arrived | fulfilled | cancelled | noshow | entered-in-error | checked-in | waitlist |
appointmentType | CodeableConcept | The style of appointment or patient that has been booked |
serviceType | CodeableReference[] | The specific service to be performed |
specialty | CodeableConcept[] | The specialty of a practitioner required |
description | string | Shown on a subject line in a meeting request |
start | instant | When appointment is to take place |
end | instant | When appointment is to conclude |
minutesDuration | positiveInt | Duration in minutes |
participant | BackboneElement[] | Participants involved in appointment |
participant.actor | Reference | Individual, device, location, or service participating |
participant.required | boolean | Whether participant is required to attend |
participant.status | code | accepted | declined | tentative | needs-action |
JSON Example
{
"resourceType": "Appointment",
"id": "appointment-123",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-appointment"
]
},
"status": "booked",
"appointmentType": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0276",
"code": "ROUTINE",
"display": "Routine appointment"
}
]
},
"serviceType": [
{
"concept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "11429006",
"display": "Consultation"
}
]
}
}
],
"description": "Follow-up appointment",
"start": "2024-03-15T10:00:00Z",
"end": "2024-03-15T10:30:00Z",
"minutesDuration": 30,
"participant": [
{
"actor": {
"reference": "Patient/patient-123",
"display": "John Smith"
},
"required": true,
"status": "accepted"
},
{
"actor": {
"reference": "Practitioner/practitioner-456",
"display": "Dr. Jane Doe"
},
"required": true,
"status": "accepted"
},
{
"actor": {
"reference": "Location/location-789",
"display": "Clinic Room 101"
},
"required": true,
"status": "accepted"
}
]
}
Operations
The Appointment resource supports Read and Search operations. Note: No CareRecord solutions currently support this resource.
| CareRecord / Solution | Create | Read | Update | Search |
|---|---|---|---|---|
| GEHRIMED | - | Yes | - | Yes |
| myAvatar | - | Yes | - | Yes |
| myEvolv | - | Yes | - | Yes |
| myUnity | - | Yes | - | Yes |
| TheraOffice | - | Yes | - | Yes |
Read
Retrieve a specific Appointment resource by its ID.
- Production
- Preview
GET /Appointment/{id}
GET /Appointment/{id}
Search
The Appointment resource supports searching by patient, date, status, and other parameters.
Patient-based Search:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
patient | reference | Yes | The patient for whom the appointment is scheduled | patient=Patient/patient-123 |
date | date | No | Appointment date/time | date=ge2024-01-01 |
status | token | No | The overall status of the appointment | status=booked |
_lastUpdated | date | No | Only return resources which were last updated as specified by the given range | _lastUpdated=ge2024-01-01 |
_revinclude | special | No | Include Provenance resource(s) that reference the matched search results. Allowed: "Provenance:target" | _revinclude=Provenance:target |
ID-based Search:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
_id | token | Yes | The ID of the resource | _id=appointment-123 |
_lastUpdated | date | No | Only return resources which were last updated as specified by the given range | _lastUpdated=ge2024-01-01 |
_revinclude | special | No | Include Provenance resource(s) that reference the matched search results. Allowed: "Provenance:target" | _revinclude=Provenance:target |
Examples
Read
Retrieve a specific Appointment resource by its ID.
- Production
- Preview
GET /Appointment/{id}
GET /Appointment/{id}
Search
Via POST (Recommended)
- Production
- Preview
Search by Patient
curl -X POST https://fhir.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123"
Search by Patient and Status
curl -X POST https://fhir.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123&status=booked"
Search by Patient
curl -X POST https://fhir-preview.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123"
Search by Patient and Status
curl -X POST https://fhir-preview.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123&status=booked"
Via GET
- Production
- Preview
Search by Patient
curl https://fhir.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment?patient=Patient/patient-123 \
-H "Accept: application/fhir+json"
Search by Patient and Date
curl https://fhir.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment?patient=Patient/patient-123&date=ge2024-01-01 \
-H "Accept: application/fhir+json"
Search by Patient
curl https://fhir-preview.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment?patient=Patient/patient-123 \
-H "Accept: application/fhir+json"
Search by Patient and Date
curl https://fhir-preview.netsmartcloud.com/payer/patient-access/v2/{tenant-id}/Appointment?patient=Patient/patient-123&date=ge2024-01-01 \
-H "Accept: application/fhir+json"
Integration Patterns
Common Workflows
-
Appointment Scheduling
- Search for available slots
- Create appointment with proposed status
- Update to booked when confirmed
-
Appointment Check-in
- Update status to arrived when patient checks in
- Update status to fulfilled when appointment is completed
-
Appointment Cancellation
- Update status to cancelled
- Include cancellation reason if applicable
Related Resources
- Patient - Subject of the appointment
- Practitioner - Healthcare provider
- Location - Where the appointment takes place
- Provenance - Audit trail for appointment creation and updates
Error Handling
For common error scenarios and troubleshooting guidance, see Common Errors.