<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKKalender" />
  <url value="https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKKalender" />
  <version value="3.1.1" />
  <name value="ISiKKalender" />
  <status value="active" />
  <experimental value="false" />
  <date value="2025-12-01" />
  <publisher value="gematik GmbH" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Schedule" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Schedule" />
  <derivation value="constraint" />
  <differential>
    <element id="Schedule.extension">
      <path value="Schedule.extension" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.extension.extension">
      <path value="Schedule.extension.extension" />
      <max value="0" />
    </element>
    <element id="Schedule.extension.value[x]">
      <path value="Schedule.extension.value[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Schedule.extension.value[x]:valueString">
      <path value="Schedule.extension.value[x]" />
      <sliceName value="valueString" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Schedule.extension:KalenderName">
      <path value="Schedule.extension" />
      <sliceName value="KalenderName" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/5.0/StructureDefinition/extension-Schedule.name" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Schedule.active">
      <path value="Schedule.active" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.serviceType">
      <path value="Schedule.serviceType" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.serviceType.text">
      <path value="Schedule.serviceType.text" />
      <comment value="Must-Support-Flag: Aufgrund der Bandbreite möglicher Kodierungen, soll in jedem Fall der serviceType als Text implementiert werden." />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.specialty">
      <path value="Schedule.specialty" />
      <comment value="Ein Kalender kann für einen Akteur gepflegt werden. Dieser Akteur kann in einer oder mehreren Fachrichtungen agieren. Für die Ressourcenplanung (z.B. welche Akteure sind für einen Termin verfügbar) sollte auch auf die Speciality des Akteurs zurückgegriffen werden für den Fall, dass ein Kalender pro Fachbereich gepflegt wird." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.specialty.coding">
      <path value="Schedule.specialty.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.specialty.coding:Fachrichtung">
      <path value="Schedule.specialty.coding" />
      <sliceName value="Fachrichtung" />
      <definition value="Einschränkung der übergreifenden MS-Definition: ein bestätigungsrelevantes System SOLL das ValueSet (http://ihe-d.de/ValueSets/IHEXDSpracticeSettingCode) implementieren, MUSS es jedoch NICHT." />
      <comment value="Hintergrund zum MS: die MS-Änderung erfolgt als Technical Correction in Stufe 3 während der Implementierungsphase, daher ist die Abbildung dieses ValueSets nicht verpflichtend.&#xA;&#xA;  Hintergrund zum ValueSet: Die Wahl des hinterlegten ValueSets (http://ihe-d.de/ValueSets/IHEXDSpracticeSettingCode) wurde mit einem Mitglied der IHE Deutschland Arbeitsgruppe XDS ValueSets (https://www.ihe-d.de/projekte/xds-value-sets-fuer-deutschland/) sowie mit der KBV abgestimmt (Stand:13.06.2024)." />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ihe-d.de/ValueSets/IHEXDSpracticeSettingCode" />
      </binding>
    </element>
    <element id="Schedule.specialty.coding:Fachspezialisierung">
      <path value="Schedule.specialty.coding" />
      <sliceName value="Fachspezialisierung" />
      <comment value="Dieses Slice SOLL NICHT genutzt werden und ist nur aufgrund der Kompatibilität beibehalten worden. Es SOLL dagegen das  ValueSet durch den Slice 'Fachrichtung' (http://ihe-d.de/ValueSets/IHEXDSpracticeSettingCode) umgesetzt werden (Stand:13.06.2024)." />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://ihe-d.de/ValueSets/IHEXDSauthorSpeciality" />
      </binding>
    </element>
    <element id="Schedule.specialty.coding:ErweiterterFachabteilungsschluessel">
      <path value="Schedule.specialty.coding" />
      <sliceName value="ErweiterterFachabteilungsschluessel" />
      <comment value="Dieses ValueSet KANN über ein Mapping (siehe Abschnitt https://wiki.hl7.de/index.php?title=IG:Value_Sets_f%C3%BCr_XDS#DocumentEntry.practiceSettingCode) mit dem ValueSet der Fachrichtung verknüpft werden und darüber ggf. die Integration von Systemen erleichtern." />
      <min value="0" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.de/ValueSet/dkgev/Fachabteilungsschluessel-erweitert" />
      </binding>
    </element>
    <element id="Schedule.actor">
      <path value="Schedule.actor" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="Ein dezidierter Kalender ist für jeden Akteur zu pflegen." />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.actor.identifier">
      <path value="Schedule.actor.identifier" />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.actor.display">
      <path value="Schedule.actor.display" />
      <comment value="Begründung zu Must Support: Dieses Feld ist optional (0..1), muss jedoch implementiert werden (MS), um die Möglichkeit zu bieten, einen Display-Wert (z.B. Namen) für einen Akteur zu verarbeiten und zu persistieren, dem der Kalender zugewiesen ist.&#xA;    &#xA;    Hinweis: Für alle Target-Ressourcen SOLL ein Displaywert für die Referenz angegeben werden, sodass Systeme eine Übersicht der am Termin beteiligten Akteure anzeigen können ohne die Referenzen auflösen zu müssen." />
      <mustSupport value="true" />
    </element>
    <element id="Schedule.actor:Akteur">
      <path value="Schedule.actor" />
      <sliceName value="Akteur" />
      <comment value="Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein. Dieses Element dient dazu, um alle Akteure zu gruppieren, sodass für diese Einheit von Terminressourcen ein Terminblock herausgegeben werden kann. Unter 'Akteure' fallen hier auch Standorte und Dienstleistungen." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/HealthcareService" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Location" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Schedule.actor:Akteur.reference">
      <path value="Schedule.actor.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>