Skip to main content

GET /Appointment

Returns the patient’s next upcoming appointment. Past and cancelled appointments aren’t returned. Query parameter patient (required): Patient/{id}. Missing returns 400.

Response

200 OK, a FHIR Bundle with total of 0 (empty entry) or 1:
status is one of booked, cancelled, or fulfilled.

POST /Appointment/$book

Books an open slot.

Request body

A FHIR Parameters resource wrapping an Appointment:
serviceType[0].text defaults to Follow-up consultation if omitted. start, and both a Patient/ and Practitioner/ participant reference, are required. Missing any of them returns 400.

Response

200 OK, the booked Appointment resource (same shape as above).
On a double-booking conflict, this returns HTTP 409 with a genuine FHIR OperationOutcome, not a generic error body, matching real Epic’s own error style:

POST /Appointment/{id}/$reschedule

Moves an existing appointment to a new time.
Epic itself frequently models a reschedule as cancel-then-rebook rather than a dedicated operation. This sandbox exposes reschedule as one convenience call instead.

Request body

start is required. Missing or invalid returns 400.

Response

200 OK, the updated Appointment, status: "booked". 404 Not Found for an unknown or cross-clinic appointment id:

POST /Appointment/{id}/$cancel

Cancels an existing appointment. No request body.

Response

200 OK, the Appointment, status: "cancelled". Same 404 behavior as $reschedule for an unknown or cross-clinic id.

Example request