Appointments and Slots

Appointments

Base profile: http://hl7.org/fhir/StructureDefinition/Appointment

When scheduling an appointment, it’s essential to understand that an appointment can only be booked if there is a valid Slot available. Slots are configured based on the practice’s calendar settings. Different providers may have varying appointment durations for the same appointment type.

To successfully book an appointment, the following details are required:

  • Appointment Type
  • Location
  • Provider
  • Patient
  • Date/Time
  • Duration

When querying available slots, providing just the Appointment Type is the minimum requirement. However, because each practice may configure its calendar differently, it’s recommended to include additional details like at least one Practitioner, one Location, and a date/time range for more accurate results.


Appointment API Information

Base URL: {base_url}/{firm_url_prefix}/ema/fhir/v2/Appointment

Appointment Type ValueSet:
{base_url}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-type

  • Appointment types are configured at the firm level and can be found by referencing the firm-specific appointment-type ValueSet.
  • This ValueSet only returns active appointment types. If an expected type is missing, it may have been set to inactive.

Reportable Reason ValueSet:
{base_url}/{firm_url_prefix}/ema/fhir/v2/ValueSet/reportable-reason

  • Similarly, reportable reasons are configured at the firm level. Use the firm-specific reportable-reason ValueSet to find these reasons.

Cancellation Reason ValueSet:
{base_url}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-cancellation-reason


Common Use Cases

  • Retrieve all appointments for a practice
  • Find a specific appointment
  • Create a new appointment
  • Update the status of an appointment

The following attributes are supported:

Field NameNotes
idThe MMI-specific unique identifier for the Appointment
status

FHIR supports the following statuses:
pending|booked|arrived|fulfilled|cancelled|noshow|entered-in-error|checked-in|waitlist

These statuses are mapped as follows in ModMed’s Practice Management System UI:
pending = pending
booked = confirmed
arrived = arrived
fulfilled = checked-out
cancelled = cancelled
noshow = no show
entered-in-error = NOT SUPPORTED in MMPM
checked-in = checked in
waitlist = NOT SUPPORTED in MMPM

cancelationReason{baseurl}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-cancellation-reason
appointment typeAppointment Type ValueSet: {baseurl}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-type
reasonCodeReportable Reason Value Set: {baseurl}/{firm_url_prefix}/ema/fhir/v2/ValueSet/reportable-reason
descriptionFree text field that is mapped to the “Reason for Visit” field in MMPM. Max length for description is 100 characters
supportingInformationidentifier: NEW_PATIENT (true/false) boolean
commentFree Text field that is mapped to the “Appointment Notes” field in MMPM
Max length for comment is 2048 characters
startStart Time and Date for the appointment
endEnd time and date for the appointment
minutesDurationDuration of the appointment in minutes
createdDate and time the appointment was created
participantReferences to the Actors for the appointment:
  • Location
  • Practitioner
  • Patient

The Following Operations are supported:

  • Appointment READ
  • Appointment SEARCH
  • Appointment CREATE
  • Appointment UPDATE

Appointment CREATE

The minimum attributes for creating an appointment are:


NameTypeDescription
participantreference
  • Patient
  • Location
  • Practitioner
appointmentTypeValueSetAppointment Type ValueSet: {baseurl}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-type
startdatetimestart time and date for the appointment
enddatetimeend time and date for the appointment
minutesDurationintegerDuration of the appointment in minutes
statuscode

FHIR supports the following statuses:
pending|booked|arrived|fulfilled|cancelled|noshow|entered-in-error|checkedin|waitlist

These statuses are mapped as follows in Modernizing Medicine’s Practice Management System UI:
pending = pending
booked = confirmed
arrived = arrived
fulfilled = checked-out
cancelled = cancelled
noshow = no show
entered-in-error = NOT SUPPORTED in MMPM
checked-in = checked in
waitlist = NOT SUPPORTED in MMPM

The payload of appointment create would generate this experience when someone at the practice went to view the created appointment:

When creating Appointments users will also be able to push ‘Referring Provider’ as well as ‘Referral Source’ data within the context of the Appointment. This data would be sent within the ‘supportingInformation’ field.

NameDescription
supportingInformation

identifier: NEW_PATIENT (true/false) boolean

Reference to Practitioner(referring Provider) or Reference to Organization(Referring Institution).
This is optional data.

Referral-Source identifier which is a ValueSet
{firm_url_prefix}/ema/fhir/v2/ValueSet/referral-source


Appointment UPDATE

Fields accepted for updating an appointment are:


NameTypeDescription
descriptionstringupdates the “reason for visit” field in MMPM
minutesDurationstringupdates the duration of an appointment
startdatetime
enddatetime
statuscode

FHIR supports the following statuses:
pending|booked|arrived|fulfilled|cancelled|noshow|entered-in-error|checkedin|waitlist

These statuses are mapped as follows in Modernizing Medicine’s Practice Management System UI:
pending = pending
booked = confirmed
arrived = arrived
fulfilled = checked-out
cancelled = cancelled
noshow = no show
entered-in-error = NOT SUPPORTED in MMPM
checked-in = checked in
waitlist = NOT SUPPORTED in MMPM

reportableReasonstring
descriptionstring
supportingInformationidentifieridentifier: NEW_PATIENT (true/false) boolean
commentstring
cancelationReasoncode{baseurl}/{firm_url_prefix}/ema/fhir/v2/ValueSet/appointment-cancellation-reason