<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="be5bdb50-149d-4f0a-b4a4-dcb0ce1dc69d" />
  <url value="https://cloudconnect.cognisantmd.com/fhir/StructureDefinition/Appointment" />
  <name value="Appointment" />
  <status value="draft" />
  <description value="Used for online booking, schedule synchronization, kiosks and reminders." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Appointment" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Appointment" />
  <derivation value="constraint" />
  <differential>
    <element id="Appointment.id">
      <path value="Appointment.id" />
      <min value="1" />
    </element>
    <element id="Appointment.description">
      <path value="Appointment.description" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.start">
      <path value="Appointment.start" />
      <min value="1" />
    </element>
    <element id="Appointment.end">
      <path value="Appointment.end" />
      <min value="1" />
    </element>
    <element id="Appointment.minutesDuration">
      <path value="Appointment.minutesDuration" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.created">
      <path value="Appointment.created" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.comment">
      <path value="Appointment.comment" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.slot">
      <path value="Appointment.slot" />
      <comment value="For online booking, if available, this will be a reference to the 'Slot/{ID} of the Slot that was selected, as originally provided by the Slot FHIR query. The Slot may be used to identify the matching Schedule." />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.patientInstruction">
      <path value="Appointment.patientInstruction" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.status">
      <path value="Appointment.status" />
      <comment value="The status is used to filter out 'cancelled' and 'entered-in-error' appointments during OAB. It is also used as part of a PUT update to change the status to 'booked', only when the appointment status is 'pending', when an appointment is confirmed via an Ocean Reminder. It is set to 'arrived' when the patient checks in via the Ocean kiosk." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.appointmentType">
      <path value="Appointment.appointmentType" />
      <mustSupport value="true" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://terminology.hl7.org/ValueSet/v2-0276" />
      </binding>
    </element>
    <element id="Appointment.appointmentType.coding">
      <path value="Appointment.appointmentType.coding" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.appointmentType.coding.system">
      <path value="Appointment.appointmentType.coding.system" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.appointmentType.coding.code">
      <path value="Appointment.appointmentType.coding.code" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.appointmentType.coding.display">
      <path value="Appointment.appointmentType.coding.display" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.actor">
      <path value="Appointment.participant.actor" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/ca/baseline/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/ca/baseline/StructureDefinition/Patient" />
        <aggregation value="referenced" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.status">
      <path value="Appointment.participant.status" />
      <comment value="" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.type">
      <path value="Appointment.participant.type" />
      <comment value="Use PPRF for the primary practitioner and PART for the patient. For secondary clinicians and assistants, consider using SPRF." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.actor.reference">
      <path value="Appointment.participant.actor.reference" />
      <min value="1" />
    </element>
    <element id="Appointment.participant.actor.display">
      <path value="Appointment.participant.actor.display" />
      <comment value="For practitioners, this should reflect the provider name as it ought to be displayed to the patient (e.g. 'Dr. Jane Jones')." />
      <min value="1" />
    </element>
    <element id="Appointment.type">
      <path value="Appointment.type" />
      <comment value="Textual representation of the appointment type as defined in the ValueSet/appointment-type" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.type.text">
      <path value="Appointment.type.text" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>