<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKTerminblock" />
  <url value="https://gematik.de/fhir/isik/StructureDefinition/ISiKTerminblock" />
  <version value="5.1.2" />
  <name value="ISiKTerminblock" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-30" />
  <publisher value="gematik GmbH" />
  <description value="Die Slot-Ressource repräsentiert die Verbindung eines Termins (Appointment) und den dazugehörigen Ressourcen (z.B. HealthcareService, Device, Practitioner). Für diese Ressourcen können separate Kalender (Schedules) verwaltet werden. Der Slot agiert als Verbindungsstück zwischen diesen Ressourcen." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Slot" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Slot" />
  <derivation value="constraint" />
  <differential>
    <element id="Slot">
      <path value="Slot" />
      <constraint>
        <key value="ISiK-slot-1" />
        <severity value="error" />
        <human value="Der Endzeitpunkt eines Terminsblocks MUSS nach dem Startzeitpunkt liegen" />
        <expression value="start &lt;= end" />
        <source value="https://gematik.de/fhir/isik/StructureDefinition/ISiKTerminblock" />
      </constraint>
    </element>
    <element id="Slot.id">
      <path value="Slot.id" />
      <short value="serverseitige, interne ID des Datensatzes" />
      <comment value="**bedingtes Pflichtfeld/bedingtes MS:** Alle von einem Server bereitgestellten Ressourcen MÜSSEN über eine `id` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `id`verfügen." />
      <mustSupport value="true" />
    </element>
    <element id="Slot.meta.versionId">
      <path value="Slot.meta.versionId" />
      <short value="Eindeutiger Name der serverseitigen Version des Datensatzes" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über eine `versionID` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über eine `versionID`verfügen." />
    </element>
    <element id="Slot.meta.lastUpdated">
      <path value="Slot.meta.lastUpdated" />
      <short value="Zeitpunkt der letzten Änderung" />
      <comment value="Alle von einem Server bereitgestellten Ressourcen SOLLEN über ein `lastUpdate` verfügen.&#xA;  Von Clients erzeugte Ressourcen, die im Kontext einer CREATE-Interaktion übermittelt werden, MÜSSEN NICHT über ein `lastUpdate`verfügen." />
    </element>
    <element id="Slot.schedule">
      <path value="Slot.schedule" />
      <short value="Der Kalender dem dieser Terminblock zugeordnet ist" />
      <comment value="Begründung Kardinalität und MS: Die Kardinalität der reference-Eigenschaft wird auf 1..* festgelegt, um sicherzustellen, dass ein Kalender eindeutig referenziert und identifiziert werden kann." />
      <mustSupport value="true" />
    </element>
    <element id="Slot.schedule.reference">
      <path value="Slot.schedule.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Slot.status">
      <path value="Slot.status" />
      <short value="Der Status des Terminblocks" />
      <comment value="Begründung Must Support: Dies ist wichtig, um die Verfügbarkeit von Terminen zu gewährleisten, eine Überbuchung zu verhindern und zudem einem Termin-Requestor die Möglichkeit zu bieten nur freie Termine bei der Terminbuchung anzuzeigen." />
      <mustSupport value="true" />
    </element>
    <element id="Slot.start">
      <path value="Slot.start" />
      <short value="Der Startzeitpunkt des Terminblocks" />
      <comment value="Begründung Must Support: Dies ist wichtig, um den Zeitpunkt des Termins an einen Termin-Requestor / Termin-Consumer zu kommunizieren." />
      <mustSupport value="true" />
    </element>
    <element id="Slot.end">
      <path value="Slot.end" />
      <short value="Der Endzeitpunkt des Terminblocks" />
      <comment value="Begründung Must Support: Dies ist wichtig, um die Länge des Termins an einen Termin-Requestor / Termin-Consumer zu kommunizieren." />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>