<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKTermin" />
  <url value="https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin" />
  <version value="3.1.1" />
  <name value="ISiKTermin" />
  <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="Appointment" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Appointment" />
  <derivation value="constraint" />
  <differential>
    <element id="Appointment">
      <path value="Appointment" />
      <constraint>
        <key value="ISiK-app-1" />
        <severity value="error" />
        <human value="Der Endzeitpunkt eines Termins MUSS nach dem Startzeitpunkt liegen" />
        <expression value="start &lt;= end" />
        <source value="https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTermin" />
      </constraint>
    </element>
    <element id="Appointment.meta">
      <path value="Appointment.meta" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.meta.tag">
      <path value="Appointment.meta.tag" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.meta.tag:Source">
      <path value="Appointment.meta.tag" />
      <sliceName value="Source" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://fhir.de/ValueSet/common-meta-tag-de" />
      </binding>
    </element>
    <element id="Appointment.extension">
      <path value="Appointment.extension" />
      <definition value="Bedingtes Must Support - Einschränkung der übergreifenden MS-Definition: Falls ein bestätigungsrelevantes System das ISiK-Profil ISiKNachricht implementiert, MUSS das System auch dieses Element unterstützten. Andernfalls KANN das System dieses Element unterstützen." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.extension:Nachricht">
      <path value="Appointment.extension" />
      <sliceName value="Nachricht" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKNachrichtExtension" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.extension:replaces">
      <path value="Appointment.extension" />
      <sliceName value="replaces" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://hl7.org/fhir/5.0/StructureDefinition/extension-Appointment.replaces" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.status">
      <path value="Appointment.status" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.cancelationReason">
      <path value="Appointment.cancelationReason" />
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/isik/v3/Terminplanung/ValueSet/ISiKTerminCancelationReason" />
      </binding>
    </element>
    <element id="Appointment.serviceType">
      <path value="Appointment.serviceType" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.serviceType.text">
      <path value="Appointment.serviceType.text" />
      <comment value="Must-Support-Flag: Aufgrund der Bandbreite möglicher Codierungen, soll in jedem Fall der serviceType als Text implementiert werden." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.specialty">
      <path value="Appointment.specialty" />
      <comment value="Optionale Angabe aller Fachbereiche aus denen ein oder mehrere Akteure für die Durchführung des Termins benötigt werden. KANN auch anhand des Kalenders, in dem ein Termin gebucht wird, ermittelt werden." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.specialty.coding">
      <path value="Appointment.specialty.coding" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.specialty.coding:Fachrichtung">
      <path value="Appointment.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="Appointment.specialty.coding:Fachspezialisierung">
      <path value="Appointment.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="Appointment.specialty.coding:ErweiterterFachabteilungsschluessel">
      <path value="Appointment.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="Appointment.priority">
      <path value="Appointment.priority" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.priority.extension">
      <path value="Appointment.priority.extension" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.priority.extension:Priority">
      <path value="Appointment.priority.extension" />
      <sliceName value="Priority" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKTerminPriorityExtension" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.start">
      <path value="Appointment.start" />
      <comment value="Begründung zu Kardinalität und Must Support: Der Startzeitpunkt eines Termins ist von entscheidender Bedeutung, um die Verfügbarkeit und Planung des Termins zu gewährleisten. Daher muss dieses Feld unterstützt werden (MS). Das Feld ist in den meisten Fällen verpflichtend, nur für die Status 'proposed', 'cancelled', 'waitlist' existiert kein Wert." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.end">
      <path value="Appointment.end" />
      <comment value="Begründung zu Kardinalität und Must Support: Der Endzeitpunkt eines Termins ist von entscheidender Bedeutung, um die Verfügbarkeit und Planung des Termins zu gewährleisten. Daher muss dieses Feld unterstützt werden (MS). Das Feld ist in den meisten Fällen verpflichtend, nur für die Status 'proposed', 'cancelled', 'waitlist' existiert kein Wert." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.slot">
      <path value="Appointment.slot" />
      <comment value="Zur Referenzierung auf eine Slot-Ressource MUSS eine Reference.reference mit einer URL verwendet werden. Das Termin-Repository muss so gestaltet sein, dass es aus Perspektive des Clients nur eine Service-BaseUrl gibt." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.slot.reference">
      <path value="Appointment.slot.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.patientInstruction">
      <path value="Appointment.patientInstruction" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant">
      <path value="Appointment.participant" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="actor.resolve()" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="Die Kardinalität von actor.display und das MS-Flag von .status wird an die Slices vererbt und diese sind entsprechend zu implementieren." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.actor">
      <path value="Appointment.participant.actor" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.actor.display">
      <path value="Appointment.participant.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 für einen am Termin teilnehmenden Akteur zu verarbeiten und zu persistieren." />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant.status">
      <path value="Appointment.participant.status" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurPatient">
      <path value="Appointment.participant" />
      <sliceName value="AkteurPatient" />
      <comment value="Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein." />
      <min value="1" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurPatient.actor">
      <path value="Appointment.participant.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
      </type>
    </element>
    <element id="Appointment.participant:AkteurPatient.actor.reference">
      <path value="Appointment.participant.actor.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurPersonImGesundheitsberuf">
      <path value="Appointment.participant" />
      <sliceName value="AkteurPersonImGesundheitsberuf" />
      <comment value="Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein." />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurPersonImGesundheitsberuf.actor">
      <path value="Appointment.participant.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
      </type>
    </element>
    <element id="Appointment.participant:AkteurPersonImGesundheitsberuf.actor.reference">
      <path value="Appointment.participant.actor.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurMedizinischeBehandlungseinheit">
      <path value="Appointment.participant" />
      <sliceName value="AkteurMedizinischeBehandlungseinheit" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.participant:AkteurMedizinischeBehandlungseinheit.actor">
      <path value="Appointment.participant.actor" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/HealthcareService" />
      </type>
    </element>
    <element id="Appointment.participant:AkteurMedizinischeBehandlungseinheit.actor.reference">
      <path value="Appointment.participant.actor.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>