<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
  <version value="1.1.0" />
  <name value="PR_OSC_Consent_LE_TE" />
  <status value="active" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Consent" />
  <baseDefinition value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent" />
  <derivation value="constraint" />
  <differential>
    <element id="Consent">
      <path value="Consent" />
      <constraint>
        <key value="req-01" />
        <requirements value="Wenn es sich um eine Anlage oder Korrektur handelt (Verarbeitungskennzeichen = 1|2), dann muss die Extension für Bereinigungsrelevant gesetzt werden." />
        <severity value="error" />
        <human value="Wenn Verarbeitungskennz. = 1|2, dann wird 'Consent:extension:bereinigungsrelevant' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Bereinigungsrelevant').exists()) or (category.coding.where(system = 'https://fhir.gevko.de/CodeSystem/CS_OSC_Vertrag_Verarbeitungskennzeichen_LE').code in '3' | '4')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
      <constraint>
        <key value="req-02" />
        <requirements value="Wenn es sich um eine Stornierung handelt (Verarbeitungskennzeichen = 3), dann muss die Extension für den Stornogrund gesetzt werden." />
        <severity value="error" />
        <human value="Wenn Verarbeitungskennz. = 3, dann wird 'Consent:extension:stornogrund' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Stornierung').exists()) or (category.coding.where(system = 'https://fhir.gevko.de/CodeSystem/CS_OSC_Vertrag_Verarbeitungskennzeichen_LE').code != '3')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
      <constraint>
        <key value="req-03" />
        <requirements value="Wenn es sich um eine Anlage oder Korrektur handelt (Verarbeitungskennzeichen = 1|2), dann muss der Teilnahmebeginn in der Extension für den Zeitraum gesetzt werden." />
        <severity value="error" />
        <human value="Wenn Verarbeitungskennz. = 1|2, dann wird 'Consent.extension:teilnahme_zeitraum.extension:zeitraum.valuePeriod.start' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Zeitraum').extension.where(url = 'zeitraum').value.start.exists()) or (category.coding.where(system = 'https://fhir.gevko.de/CodeSystem/CS_OSC_Vertrag_Verarbeitungskennzeichen_LE').code in '3' | '4')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
      <constraint>
        <key value="req-04" />
        <requirements value="Wenn es sich um eine Anlage oder Korrektur handelt (Verarbeitungskennzeichen = 1|2), dann muss der Direktabrechner in der Unterextension für den Zeitraum gesetzt werden." />
        <severity value="error" />
        <human value="Wenn Verarbeitungskennz. = 1|2, dann wird 'Consent.extension:teilnahme_zeitraum.extension:leistungserbringer' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Zeitraum').extension.where(url = 'leistungserbringer').exists()) or (category.coding.where(system = 'https://fhir.gevko.de/CodeSystem/CS_OSC_Vertrag_Verarbeitungskennzeichen_LE').code in '3' | '4')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
      <constraint>
        <key value="req-05" />
        <requirements value="Wenn ein Teilnahme-Ende gesetzt wurde, muss auch ger Teilnahmegrund gesetzt werden." />
        <severity value="error" />
        <human value="Wenn 'Consent.extension:teilnahme_zeitraum.extension:zeitraum.valuePeriod.end' gesetzt, dann wird 'Consent.extension:endegrund' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/Extension/EX_OSC_Beendigung').exists()) or (extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Zeitraum').extension.where(url = 'zeitraum').value.end.empty())" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
      <constraint>
        <key value="req-06" />
        <requirements value="Wenn es sich um eine Beendigung handelt (Verarbeitungskennzeichen = 4), dann muss das Teilnahme-Ende in der Extension für den Zeitraum gesetzt werden." />
        <severity value="error" />
        <human value="Wenn Verarbeitungskennz. = 4, dann wird 'Consent.extension:teilnahme_zeitraum.extension:zeitraum.valuePeriod.end' obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Zeitraum').extension.where(url = 'zeitraum').value.end.exists()) or (category.coding.where(system = 'https://fhir.gevko.de/CodeSystem/CS_OSC_Vertrag_Verarbeitungskennzeichen_LE').code != '4')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_LE_TE" />
      </constraint>
    </element>
    <element id="Consent.extension:ersteinschreibung">
      <path value="Consent.extension" />
      <sliceName value="ersteinschreibung" />
      <max value="0" />
    </element>
    <element id="Consent.extension:vertrag">
      <path value="Consent.extension" />
      <sliceName value="vertrag" />
    </element>
    <element id="Consent.extension:vertrag.value[x]">
      <path value="Consent.extension.value[x]" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Contract_LE" />
      </type>
    </element>
    <element id="Consent.extension:betreuung">
      <path value="Consent.extension" />
      <sliceName value="betreuung" />
      <max value="0" />
    </element>
    <element id="Consent.extension:identifikation">
      <path value="Consent.extension" />
      <sliceName value="identifikation" />
      <max value="0" />
    </element>
    <element id="Consent.extension:identifikation.extension:versichertennr_egk_te">
      <path value="Consent.extension.extension" />
      <sliceName value="versichertennr_egk_te" />
    </element>
    <element id="Consent.extension:identifikation.extension:versichertennr_egk_te.value[x].type.coding">
      <path value="Consent.extension.extension.value[x].type.coding" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="Consent.extension:abgelehnte_meldung">
      <path value="Consent.extension" />
      <sliceName value="abgelehnte_meldung" />
      <max value="0" />
    </element>
    <element id="Consent.extension:teilnahme_zeitraum">
      <path value="Consent.extension" />
      <sliceName value="teilnahme_zeitraum" />
      <max value="1" />
    </element>
    <element id="Consent.identifier:teilnahme_id_extern">
      <path value="Consent.identifier" />
      <sliceName value="teilnahme_id_extern" />
      <min value="1" />
    </element>
    <element id="Consent.identifier:teilnahme_id_intern">
      <path value="Consent.identifier" />
      <sliceName value="teilnahme_id_intern" />
      <max value="0" />
    </element>
    <element id="Consent.category:verarbeitungskennzeichen_versicherter">
      <path value="Consent.category" />
      <sliceName value="verarbeitungskennzeichen_versicherter" />
      <max value="0" />
    </element>
    <element id="Consent.category:verarbeitungskennzeichen_le">
      <path value="Consent.category" />
      <sliceName value="verarbeitungskennzeichen_le" />
      <min value="1" />
    </element>
    <element id="Consent.patient">
      <path value="Consent.patient" />
      <max value="0" />
    </element>
    <element id="Consent.performer">
      <path value="Consent.performer" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Practitioner" />
      </type>
    </element>
  </differential>
</StructureDefinition>