What is FHIR Scheduling?
FHIR scheduling resources let you manage appointments, time slots, and healthcare-provider availability. In ESUS, the scheduling surface is:
| Resource | Purpose |
|---|---|
| Schedule | A container of slots for a specific actor (practitioner, room, equipment) |
| Slot | An individual time period that can be booked |
| Appointment | A booking linking a patient to one or more slots and participants |
| AppointmentResponse | A participant’s response (accepted, declined, tentative) to an appointment |
Typical Flow
Create Schedule → Create Slots (status=free) → POST /Appointment/$book (slotId) → Appointment booked + Slot flips to busy → arrived → fulfilled
Important: only the
$bookoperation flips the Slot tobusyatomically. A plainPOST /fhir/Appointmentthat carries aslot[]reference does NOT change the Slot’s status — see “Creating Appointments”.
Appointment Status Lifecycle
proposed → pending → booked → arrived → fulfilled
↘ cancelled
↘ noshow
Each status indicates a different state in the appointment lifecycle. The valid transitions are exactly: proposed → {pending, cancelled}, pending → {booked, cancelled}, booked → {arrived, cancelled, noshow}, arrived → {fulfilled, cancelled}.
The values checked-in and waitlist exist as enum literals but are NOT reachable via a status update — no transition leads to them. An appointment can be created directly with status: "waitlist", but it then has no valid outgoing transition (see “Waitlist Management”).
Use Cases
- Patient self-scheduling — patient books an available slot online.
- Call-center scheduling — staff schedules appointments on behalf of patients.
- Walk-in management — register patients without prior appointments.
- Resource scheduling — book rooms, equipment, or other resources.