<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_VE_VZ" />
  <version value="1.1.0" />
  <name value="PR_OSC_Consent_VE_VZ" />
  <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 der Status auf active oder inactive steht, wird das Startdatum des Teilnahmezeitraums obligatroisch." />
        <severity value="error" />
        <human value="Wenn status=active|inactive, wird teilnahmeZeitraum.valuePeriod.start obligatroisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Zeitraum').extension.where(url = 'zeitraum').value.start.exists()) or (status in 'rejected' | 'proposed')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_VE_VZ" />
      </constraint>
      <constraint>
        <key value="req-02" />
        <requirements value="Wenn status=rejected, wird die Extensions für den Ablehnungsgrund obligatorisch." />
        <severity value="error" />
        <human value="Wenn status=rejected, wird die Extensions für den Ablehnungsgrund obligatorisch." />
        <expression value="(extension.where(url = 'https://fhir.gevko.de/StructureDefinition/EX_OSC_Ablehnung').exists()) or (status !='rejected')" />
        <source value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Consent_VE_VZ" />
      </constraint>
    </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_Versicherter" />
      </type>
    </element>
    <element id="Consent.extension:endegrund">
      <path value="Consent.extension" />
      <sliceName value="endegrund" />
    </element>
    <element id="Consent.extension:endegrund.extension:grund">
      <path value="Consent.extension.extension" />
      <sliceName value="grund" />
    </element>
    <element id="Consent.extension:endegrund.extension:grund.value[x].coding:leistungserbringer">
      <path value="Consent.extension.extension.value[x].coding" />
      <sliceName value="leistungserbringer" />
      <max value="0" />
    </element>
    <element id="Consent.extension:stornogrund">
      <path value="Consent.extension" />
      <sliceName value="stornogrund" />
    </element>
    <element id="Consent.extension:stornogrund.extension:grund">
      <path value="Consent.extension.extension" />
      <sliceName value="grund" />
    </element>
    <element id="Consent.extension:stornogrund.extension:grund.value[x].coding:leistungserbringer">
      <path value="Consent.extension.extension.value[x].coding" />
      <sliceName value="leistungserbringer" />
      <max value="0" />
    </element>
    <element id="Consent.extension:ablehungsgrund">
      <path value="Consent.extension" />
      <sliceName value="ablehungsgrund" />
    </element>
    <element id="Consent.extension:ablehungsgrund.extension:grund">
      <path value="Consent.extension.extension" />
      <sliceName value="grund" />
    </element>
    <element id="Consent.extension:ablehungsgrund.extension:grund.value[x].coding:leistungserbringer">
      <path value="Consent.extension.extension.value[x].coding" />
      <sliceName value="leistungserbringer" />
      <max value="0" />
    </element>
    <element id="Consent.extension:ablehungsgrund.extension:datum">
      <path value="Consent.extension.extension" />
      <sliceName value="datum" />
      <min value="1" />
    </element>
    <element id="Consent.extension:identifikation">
      <path value="Consent.extension" />
      <sliceName value="identifikation" />
    </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:bereinigungsrelevant">
      <path value="Consent.extension" />
      <sliceName value="bereinigungsrelevant" />
      <max value="0" />
    </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.extension:teilnahme_zeitraum.extension:leistungserbringer">
      <path value="Consent.extension.extension" />
      <sliceName value="leistungserbringer" />
      <max value="0" />
    </element>
    <element id="Consent.identifier:teilnahme_id_intern">
      <path value="Consent.identifier" />
      <sliceName value="teilnahme_id_intern" />
      <min value="1" />
    </element>
    <element id="Consent.identifier:dpcm_id">
      <path value="Consent.identifier" />
      <sliceName value="dpcm_id" />
      <max value="0" />
    </element>
    <element id="Consent.scope.coding.code">
      <path value="Consent.scope.coding.code" />
      <fixedCode value="research" />
    </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" />
      <max value="0" />
    </element>
    <element id="Consent.patient">
      <path value="Consent.patient" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://fhir.gevko.de/StructureDefinition/PR_OSC_Patient_VZ" />
      </type>
    </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_Patient_VZ" />
      </type>
    </element>
  </differential>
</StructureDefinition>