<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="featureconsent" />
  <url value="http://fhir.xt.dev/StructureDefinition/FeatureConsent" />
  <version value="3.1.0" />
  <name value="FeatureConsent" />
  <status value="active" />
  <experimental value="false" />
  <date value="2025-03-05T09:28:47.6874166+00:00" />
  <publisher value="x-tention Informationstechnologie GmbH" />
  <contact>
    <telecom>
      <system value="email" />
      <value value="fhir.profiling@x-tention.com" />
      <use value="work" />
    </telecom>
  </contact>
  <description value="This consent resource represents the user's agreement to a specific set of privacy rules and terms of service." />
  <copyright value="x-tention Informationstechnologie GmbH" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Consent" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Consent" />
  <derivation value="constraint" />
  <differential>
    <element id="Consent.meta">
      <path value="Consent.meta" />
    </element>
    <element id="Consent.meta.tag">
      <path value="Consent.meta.tag" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="code" />
        </discriminator>
        <discriminator>
          <type value="value" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Consent.meta.tag:policyTag">
      <path value="Consent.meta.tag" />
      <sliceName value="policyTag" />
      <short value="Policy Tag" />
      <definition value="Tag that mirrors the policyURI to allow searching by policy." />
    </element>
    <element id="Consent.meta.tag:policyTag.system">
      <path value="Consent.meta.tag.system" />
      <min value="1" />
      <fixedUri value="urn:ietf:rfc:3986" />
    </element>
    <element id="Consent.meta.tag:policyTag.code">
      <path value="Consent.meta.tag.code" />
      <min value="1" />
    </element>
    <element id="Consent.extension">
      <path value="Consent.extension" />
      <min value="1" />
    </element>
    <element id="Consent.extension:linkedFeature">
      <path value="Consent.extension" />
      <sliceName value="linkedFeature" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.xt.dev/StructureDefinition/LinkedFeature" />
      </type>
      <isModifier value="false" />
    </element>
    <element id="Consent.extension:linkedFeature.value[x]">
      <path value="Consent.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Consent.scope.coding.system">
      <path value="Consent.scope.coding.system" />
      <min value="1" />
      <fixedUri value="http://terminology.hl7.org/CodeSystem/consentscope" />
    </element>
    <element id="Consent.scope.coding.version">
      <path value="Consent.scope.coding.version" />
      <max value="0" />
    </element>
    <element id="Consent.scope.coding.code">
      <path value="Consent.scope.coding.code" />
      <min value="1" />
      <fixedCode value="patient-privacy" />
    </element>
    <element id="Consent.scope.coding.userSelected">
      <path value="Consent.scope.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Consent.scope.text">
      <path value="Consent.scope.text" />
      <max value="0" />
    </element>
    <element id="Consent.category">
      <path value="Consent.category" />
      <max value="1" />
    </element>
    <element id="Consent.category.coding">
      <path value="Consent.category.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Consent.category.coding.system">
      <path value="Consent.category.coding.system" />
      <min value="1" />
      <fixedUri value="http://fhir.xt.dev/CodeSystem/ConsentCategory" />
    </element>
    <element id="Consent.category.coding.version">
      <path value="Consent.category.coding.version" />
      <max value="0" />
    </element>
    <element id="Consent.category.coding.code">
      <path value="Consent.category.coding.code" />
      <min value="1" />
      <fixedCode value="feature" />
    </element>
    <element id="Consent.category.coding.userSelected">
      <path value="Consent.category.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="Consent.category.text">
      <path value="Consent.category.text" />
      <max value="0" />
    </element>
    <element id="Consent.dateTime">
      <path value="Consent.dateTime" />
      <definition value="The consent is only created after the user account has been created succesfully. This may not be the exact time that the user has checked the box agreeing to the privacy rules at the start of account creation." />
      <min value="1" />
    </element>
    <element id="Consent.performer">
      <path value="Consent.performer" />
      <min value="1" />
    </element>
    <element id="Consent.performer.reference">
      <path value="Consent.performer.reference" />
      <max value="0" />
    </element>
    <element id="Consent.performer.type">
      <path value="Consent.performer.type" />
      <max value="0" />
    </element>
    <element id="Consent.performer.identifier">
      <path value="Consent.performer.identifier" />
      <min value="1" />
    </element>
    <element id="Consent.performer.identifier.use">
      <path value="Consent.performer.identifier.use" />
      <max value="0" />
    </element>
    <element id="Consent.performer.identifier.type">
      <path value="Consent.performer.identifier.type" />
      <max value="0" />
    </element>
    <element id="Consent.performer.identifier.system">
      <path value="Consent.performer.identifier.system" />
      <min value="1" />
    </element>
    <element id="Consent.performer.identifier.value">
      <path value="Consent.performer.identifier.value" />
      <short value="consenting user's userID" />
      <definition value="The consenting user's userID is used as a logical reference, to enable searching FeatureConsents by user. The userID must exist as a userID of a UserAccount." />
      <min value="1" />
    </element>
    <element id="Consent.performer.identifier.period">
      <path value="Consent.performer.identifier.period" />
      <max value="0" />
    </element>
    <element id="Consent.performer.identifier.assigner">
      <path value="Consent.performer.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="Consent.performer.display">
      <path value="Consent.performer.display" />
      <max value="0" />
    </element>
    <element id="Consent.policy">
      <path value="Consent.policy" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Consent.policy.authority">
      <path value="Consent.policy.authority" />
      <max value="0" />
    </element>
    <element id="Consent.policy.uri">
      <path value="Consent.policy.uri" />
      <min value="1" />
    </element>
    <element id="Consent.policyRule">
      <path value="Consent.policyRule" />
      <max value="0" />
    </element>
    <element id="Consent.verification">
      <path value="Consent.verification" />
      <max value="0" />
    </element>
    <element id="Consent.provision">
      <path value="Consent.provision" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>