<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKAppointmentBookOperation" />
  <url value="https://gematik.de/fhir/isik/v2/Terminplanung/OperationDefinition/AppointmentBook" />
  <version value="2.0.6" />
  <name value="book" />
  <status value="active" />
  <kind value="operation" />
  <experimental value="false" />
  <date value="2024-11-12" />
  <publisher value="gematik GmbH" />
  <description value="OperationDefinition für die Buchung eines Termins. Die Operation überprüft ob der Termin noch verfügbar ist im Termin-Repository." />
  <affectsState value="true" />
  <code value="book" />
  <resource value="Appointment" />
  <system value="false" />
  <type value="true" />
  <instance value="false" />
  <parameter>
    <name value="appt-resource" />
    <use value="in" />
    <min value="1" />
    <max value="1" />
    <documentation value="Eine Appointment-Ressource entsprechend dem dazugehörigen ISiK-Profil MUSS übergeben werden. Falls das Parameter-Element 'Appointment' als einziges Parameter-Element verwendet wird, SOLL die Appointment-Ressource direkt im HTTP Body übergeben werden, alternativ zu einer Parameter-Ressource inklusive dem eingebetteten Appointment-Element. Invalide Ressourcen MÜSSEN abgelehnt werden durch das Termin Repository (zur Form der Ablehnung s.u.). Das Appointment MUSS den Status 'proposed' enthalten." />
    <type value="Appointment" />
  </parameter>
  <parameter>
    <name value="cancelled-appt-id" />
    <use value="in" />
    <min value="0" />
    <max value="1" />
    <documentation value="Für die vorliegende Spezifikation ist die Verschiebung eines Termin eins zwei-stufiger Prozess, bei dem ein Termin storniert und ein neuer Termin neu gebucht wird. Dieser Parameter repräsentiert die Ressourcen-Id des stornierten Appointments. Der uri-Parameter kann eine absoulte URL enthalten, Server SOLLEN jedoch nur Termine für ihre eigene Domäne verwalten. Im neu-angelegten Appointment MUSS eine Reference auf den abgesagten Termin hinterlegt werden (vgl. Appointment.extension:replaces). Der Status der abgesagten Ressource MUSS durch den Server angepasst werden." />
    <type value="uri" />
  </parameter>
  <parameter>
    <name value="schedule" />
    <use value="in" />
    <min value="0" />
    <max value="1" />
    <documentation value="Im Falle dass ein Appointment keine Referenz auf ein oder mehrere Slots enthält, MUSS der Server die benötigten Slots auf Basis der Referenz auf Schedule, sowie dem Start- und Endzeitpunkt im Appointment ermitteln." />
    <type value="Reference" />
    <targetProfile value="https://gematik.de/fhir/isik/v2/Terminplanung/StructureDefinition/ISiKKalender" />
  </parameter>
  <parameter>
    <name value="return" />
    <use value="out" />
    <min value="0" />
    <max value="1" />
    <documentation value="Als Return-Parameter MUSS ein Bundle vom Typ 'searchset' zurückgegeben werden, welches eine aktualisierte Appointment- oder eine OperationOutcome-Ressource enthält. Falls die Terminbuchung akzeptiert wird, MUSS das Appointment persistiert werden. Das id-Element der Ressource MUSS korrekt gefüllt werden. Der Status der Appointment-Ressource MUSS auf 'booked' geändert werden. Der Server MUSS die verwendeten Slot-Ressourcen als Referenz im Appointment angeben." />
    <type value="Bundle" />
  </parameter>
</OperationDefinition>