<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="ISiKTermin" />
  <url value="https://gematik.de/fhir/isik/v2/Terminplanung/StructureDefinition/ISiKTermin" />
  <version value="2.0.6" />
  <name value="ISiKTermin" />
  <status value="active" />
  <experimental value="false" />
  <date value="2024-11-12" />
  <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/v2/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/v2/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/v2/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" />
      <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="Conditional Must Support - 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 2 spät 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/) 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 (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" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <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/v2/Terminplanung/StructureDefinition/ISiKTerminPriorityExtension" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Appointment.start">
      <path value="Appointment.start" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Appointment.end">
      <path value="Appointment.end" />
      <min value="1" />
      <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>
      <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" />
      <min value="1" />
      <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" />
      <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" />
      <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>