FHIR Complete

Appointment

Appointment scheduling, slots, and schedules

Search Appointments

GET /Appointment?date={date}&practitioner={id}&patient={id}&status={status}&_count={limit}&_offset={offset}

Parameters

ParameterTypeDescription
datedateFilter by date
practitionerstringFilter by practitioner resource_id
patientstringFilter by patient resource_id
statusstringproposed, pending, booked, arrived, fulfilled, cancelled, noshow
_countnumberPage size
_offsetnumberPagination offset

Create Appointment

POST /Appointment
Content-Type: application/json
{
  "resourceType": "Appointment",
  "status": "booked",
  "start": "2026-03-03T09:00:00Z",
  "end": "2026-03-03T09:30:00Z",
  "participant": [
    {
      "actor": { "reference": "Patient/ZCT_patient_001" },
      "status": "accepted"
    },
    {
      "actor": { "reference": "Practitioner/ZCT_doctor_001" },
      "status": "accepted"
    }
  ]
}

Update / Read / Delete

GET /Appointment/{resource_id}
PUT /Appointment/{resource_id}
DELETE /Appointment/{resource_id}

Slots

Manage available time slots for scheduling:

GET /Slot?schedule={scheduleId}&start={date}&status={status}
POST /Slot
PUT /Slot/{resource_id}
DELETE /Slot/{resource_id}

Slot Status Values

  • free — Available for booking
  • busy — Already booked
  • busy-unavailable — Blocked/unavailable
  • busy-tentative — Tentatively held

Schedules

Define recurring availability patterns:

GET /Schedule?actor={practitionerId}
POST /Schedule
PUT /Schedule/{resource_id}
DELETE /Schedule/{resource_id}

Queue System

The appointment queue system auto-assigns queue numbers:

  • N-prefixed: Normal queue numbers assigned at slot creation
  • U-prefixed: Urgent queue numbers assigned on demand
GET /queue-status?date={date}&practitioner={id}

Returns current queue state including patients checked in, being seen, and waiting.