Skip to main content

What is FHIR Scheduling?

FHIR scheduling resources let you manage appointments, time slots, and healthcare-provider availability. In ESUS, the scheduling surface is:

ResourcePurpose
ScheduleA container of slots for a specific actor (practitioner, room, equipment)
SlotAn individual time period that can be booked
AppointmentA booking linking a patient to one or more slots and participants
AppointmentResponseA 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 $book operation flips the Slot to busy atomically. A plain POST /fhir/Appointment that carries a slot[] 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

  1. Patient self-scheduling — patient books an available slot online.
  2. Call-center scheduling — staff schedules appointments on behalf of patients.
  3. Walk-in management — register patients without prior appointments.
  4. Resource scheduling — book rooms, equipment, or other resources.