Appointments

An appointment is a time booked with a provider to receive a service. These actions write to the health record system:

  • Creating an appointment (POST /appointments), on every system
  • Confirming or cancelling it (PATCH with confirmed or cancelled)
  • Checking the patient in (PATCH with checkin_at), on seven systems
  • Rescheduling it, or changing its room or note (PATCH with start_time and end_time, operatory_id or note), on five systems

Which systems take which write is on Testing writes, per system.

📘

Reading blocks

Schedule blocks are times when a practice does not want anyone to book an appointment. NexHealth reads them as appointments with the unavailable property set to true.

Appointment creation

POST /appointments writes a new appointment, along with its patient, to the health record system. If the patient does not exist in the health record system at that point, NexHealth creates the patient there.

🚧

Appointments in the past

You can only create appointments in the future. Send a start_time later than today.

Before you create an appointment, make sure you have:

❗️

Monitor appointment creation

The API answers before it writes the appointment to the health record system. Subscribe to the appointment insertion webhook. It fires when the integration returns complete, failed or timed_out for the write to the health record system.

Appointment duration

Set the duration yourself by sending an end_time. If you send an appointment_type_id instead, NexHealth works out the end time from the type's minutes. See Appointment types.

Appointment updates

PATCH /appointments/{id} changes an appointment in NexHealth and, where the system takes the change, sends it to the health record system.

  • confirmed: true is sent to every system, confirmed: false only to the five systems that take appointment updates. cancelled: true is sent to 13 of the 15 systems; on OrthoTrac and PracticeWorks it stays in NexHealth.
  • checkin_at is sent to Denticon, Dentrix, Dentrix Enterprise, Eaglesoft, ModMed, NextGen Office and Open Dental. On the rest it stays in NexHealth.
  • start_time and end_time, operatory_id and note are sent to Denticon, Dentrix, Dentrix Enterprise, Eaglesoft and Open Dental. Other systems return 400 EMR does not support appointment update for a time or note change; a change to operatory_id alone is accepted and stays in NexHealth.
  • Any other field you change is overwritten by the next sync from the health record system.

On a live practice, a PATCH is accepted only once the appointment has reached the system (foreign_id set). The exception is cancelled: true, which is always accepted so you can free the slot after a failed insertion. A cancelled appointment and a scheduling block cannot be patched.

When one of these writes finishes in the system, an appointment_updated webhook fires: appointment_updated on success, appointment_updated.failed, appointment_updated.timed_out or appointment_updated.incomplete otherwise, with previous_attributes showing the field you changed.

ChangelogMCP serverErrorsdevelopers@nexhealth.com