<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKTerminblock" />
  <url value="https://gematik.de/fhir/isik/StructureDefinition/ISiKTerminblock" />
  <version value="6.0.0-rc" />
  <name value="ISiKTerminblock" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-02" />
  <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.implicitRules">
      <path value="Slot.implicitRules" />
      <short value="Verweis auf die Regeln, nach denen die Ressource erstellt wurde" />
      <comment value="Begründung Constraint: In ISiK existiert kein Use-Case für dieses Element. Da es sich um ein Modifying Element handelt, wird es daher ausgeschlossen.&#xA;  Darüber hinaus werden die Regeln als URI vorgehalten. Dies führt dazu, dass sich hinter der URI eine beliebige Menge an Regeln befinden kann; wodurch  nicht sichergestellt werden kann, dass alle Clients die Regeln korrekt interpretieren können." />
      <max value="0" />
    </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>