<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="Profile-nNGM-Patient-Patient" />
  <url value="http://uk-koeln.de/fhir/StructureDefinition/Patient/nNGM/patient" />
  <version value="1.0.0" />
  <name value="Profile_nNGM_Patient_Patient" />
  <title value="Profile - nNGM - Patient - Patient" />
  <status value="active" />
  <description value="Dieses Profil beschreibt einen Patienten innerhalb des nNGM-Projektes." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Patient" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient" />
  <derivation value="constraint" />
  <differential>
    <element id="Patient">
      <path value="Patient" />
      <constraint>
        <key value="pat-nngm-1" />
        <severity value="error" />
        <human value="Falls die Geschlechtsangabe 'other' gewählt wird, muss die amtliche Differenzierung per Extension angegeben werden" />
        <expression value="gender.exists() and gender='other' implies gender.extension('http://fhir.de/StructureDefinition/gender-amtlich-de').exists()" />
      </constraint>
    </element>
    <element id="Patient.name">
      <path value="Patient.name" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <comment value="In order to maintain the differntiations of name parts as given in the VSDM dataset or qualify prefixes as academic titles, vendors can opt to support the extensions specified in the German HumanName Base Profile https://simplifier.net/basisprofil-de-r4/humannamedebasis&#xA;This is however not required within the scope of this specification." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name">
      <path value="Patient.name" />
      <sliceName value="Name" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="HumanName" />
        <profile value="http://fhir.de/StructureDefinition/humanname-de-basis" />
      </type>
      <patternHumanName>
        <use value="official" />
      </patternHumanName>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.use">
      <path value="Patient.name.use" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.family">
      <path value="Patient.name.family" />
      <label value="Name" />
      <short value="Nur der aktuellen Name ist gefordert. Die Erfassung und Übermittelung des Geburtsnamen ist optional. Teil des Patienten-Matching der nNGM-Patientenliste." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.family.extension">
      <path value="Patient.name.family.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.name:Name.family.extension:namenszusatz">
      <path value="Patient.name.family.extension" />
      <sliceName value="namenszusatz" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.family.extension:nachname">
      <path value="Patient.name.family.extension" />
      <sliceName value="nachname" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.family.extension:vorsatzwort">
      <path value="Patient.name.family.extension" />
      <sliceName value="vorsatzwort" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.given">
      <path value="Patient.name.given" />
      <label value="Vorname" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.prefix">
      <path value="Patient.name.prefix" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.prefix.extension">
      <path value="Patient.name.prefix.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.name:Name.prefix.extension:prefix-qualifier">
      <path value="Patient.name.prefix.extension" />
      <sliceName value="prefix-qualifier" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Name.prefix.extension:prefix-qualifier.value[x]">
      <path value="Patient.name.prefix.extension.value[x]" />
      <fixedCode value="AC" />
    </element>
    <element id="Patient.name:Geburtsname">
      <path value="Patient.name" />
      <sliceName value="Geburtsname" />
      <max value="1" />
      <type>
        <code value="HumanName" />
        <profile value="http://fhir.de/StructureDefinition/humanname-de-basis" />
      </type>
      <patternHumanName>
        <use value="maiden" />
      </patternHumanName>
      <mustSupport value="true" />
    </element>
    <element id="Patient.name:Geburtsname.use">
      <path value="Patient.name.use" />
      <min value="1" />
    </element>
    <element id="Patient.name:Geburtsname.family">
      <path value="Patient.name.family" />
      <min value="1" />
    </element>
    <element id="Patient.name:Geburtsname.given">
      <path value="Patient.name.given" />
      <max value="0" />
    </element>
    <element id="Patient.name:Geburtsname.prefix">
      <path value="Patient.name.prefix" />
      <max value="0" />
    </element>
    <element id="Patient.gender">
      <path value="Patient.gender" />
      <label value="Geschlecht" />
      <short value="Die Extension 'other-amtlich' und der Constraint pat-nngm-1 ist bei der Erfassung eines administrativen Geschlechts mit der Ausprägung 'divers' zu beachten." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.gender.extension">
      <path value="Patient.gender.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.gender.extension:other-amtlich">
      <path value="Patient.gender.extension" />
      <sliceName value="other-amtlich" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gender-amtlich-de" />
      </type>
    </element>
    <element id="Patient.gender.extension:other-amtlich.value[x]">
      <path value="Patient.gender.extension.value[x]" />
      <label value="Anderes Geschlecht" />
      <short value="Gibt an ob das Geschlecht des Patienten divers oder unbestimmt ist" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.gender.extension:other-amtlich.value[x].system">
      <path value="Patient.gender.extension.value[x].system" />
      <min value="1" />
    </element>
    <element id="Patient.gender.extension:other-amtlich.value[x].code">
      <path value="Patient.gender.extension.value[x].code" />
      <min value="1" />
    </element>
    <element id="Patient.birthDate">
      <path value="Patient.birthDate" />
      <label value="Geburtsdatum" />
      <short value="Teil des Patienten-Matching der nNGM-Patientenliste." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.deceased[x]">
      <path value="Patient.deceased[x]" />
      <slicing>
        <discriminator>
          <type value="type" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Patient.deceased[x]:deceasedBoolean">
      <path value="Patient.deceased[x]" />
      <sliceName value="deceasedBoolean" />
      <label value="Verstorben" />
      <short value="Ob der Patient verstorben ist" />
      <type>
        <code value="boolean" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Patient.deceased[x]:deceasedDateTime">
      <path value="Patient.deceased[x]" />
      <sliceName value="deceasedDateTime" />
      <label value="Todesdatum" />
      <short value="Kodierung des Todeszeitpunkts" />
      <definition value="Kodierung des Todeszeitpunkts. Optional kann auch die Informationsquelle zum Todesdatum angeben werden. deceasedBoolean ist wo möglich durch deceasedDateTime zu ersetzen, wenn PatientIn verstorben ist." />
      <type>
        <code value="dateTime" />
      </type>
    </element>
    <element id="Patient.deceased[x]:deceasedDateTime.extension">
      <path value="Patient.deceased[x].extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.deceased[x]:deceasedDateTime.extension:informationsquelleTod">
      <path value="Patient.deceased[x].extension" />
      <sliceName value="informationsquelleTod" />
      <min value="0" />
      <type>
        <code value="Extension" />
        <profile value="http://uk-koeln.de/fhir/StructureDefinition/Extension/nNGM/izt" />
      </type>
    </element>
    <element id="Patient.deceased[x]:deceasedDateTime.extension:informationsquelleTod.value[x]">
      <path value="Patient.deceased[x].extension.value[x]" />
      <label value="Informationsquelle des Todes" />
      <short value="Informationsquelle des Todes des Patienten" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address">
      <path value="Patient.address" />
      <label value="Adresse" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <short value="Teil des Patienten-Matching der nNGM-Patientenliste." />
      <comment value="In order to differentiate between post box addresses and physical addresses, street names and house numbers, and to add city district names, vendors can opt to support the extensions as suggested in the German Address Base Profile http://fhir.de/StructureDefinition/address-de-basis.&#xA;Such differentiations are however not required within the scope of this specification." />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift">
      <path value="Patient.address" />
      <sliceName value="Strassenanschrift" />
      <type>
        <code value="Address" />
        <profile value="http://fhir.de/StructureDefinition/address-de-basis" />
      </type>
      <patternAddress>
        <type value="both" />
      </patternAddress>
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.extension">
      <path value="Patient.address.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.address:Strassenanschrift.extension:Stadtteil">
      <path value="Patient.address.extension" />
      <sliceName value="Stadtteil" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.type">
      <path value="Patient.address.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.line">
      <path value="Patient.address.line" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.line.extension">
      <path value="Patient.address.line.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.address:Strassenanschrift.line.extension:Strasse">
      <path value="Patient.address.line.extension" />
      <sliceName value="Strasse" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.line.extension:Hausnummer">
      <path value="Patient.address.line.extension" />
      <sliceName value="Hausnummer" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.line.extension:Adresszusatz">
      <path value="Patient.address.line.extension" />
      <sliceName value="Adresszusatz" />
      <min value="0" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.line.extension:Postfach">
      <path value="Patient.address.line.extension" />
      <sliceName value="Postfach" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Patient.address:Strassenanschrift.city">
      <path value="Patient.address.city" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.postalCode">
      <path value="Patient.address.postalCode" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Strassenanschrift.country">
      <path value="Patient.address.country" />
      <min value="1" />
      <constraint>
        <key value="pat-cnt-2or3-char" />
        <severity value="warning" />
        <human value="The content of the country element (if present) SHALL be selected EITHER from ValueSet ISO Country Alpha-2 http://hl7.org/fhir/ValueSet/iso3166-1-2 OR MAY be selected from ISO Country Alpha-3 Value Set http://hl7.org/fhir/ValueSet/iso3166-1-3, IF the country is not specified in value Set ISO Country Alpha-2 http://hl7.org/fhir/ValueSet/iso3166-1-2." />
        <expression value="country.empty() or (country.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-2') or country.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-3'))" />
        <source value="http://gematik.de/fhir/ISiK/StructureDefinition/ISiKPatient" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Patient.address:Postfach">
      <path value="Patient.address" />
      <sliceName value="Postfach" />
      <type>
        <code value="Address" />
        <profile value="http://fhir.de/StructureDefinition/address-de-basis" />
      </type>
      <patternAddress>
        <type value="postal" />
      </patternAddress>
    </element>
    <element id="Patient.address:Postfach.type">
      <path value="Patient.address.type" />
      <min value="1" />
    </element>
    <element id="Patient.address:Postfach.line">
      <path value="Patient.address.line" />
      <min value="1" />
    </element>
    <element id="Patient.address:Postfach.line.extension">
      <path value="Patient.address.line.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="Patient.address:Postfach.line.extension:Strasse">
      <path value="Patient.address.line.extension" />
      <sliceName value="Strasse" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Patient.address:Postfach.line.extension:Hausnummer">
      <path value="Patient.address.line.extension" />
      <sliceName value="Hausnummer" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Patient.address:Postfach.line.extension:Adresszusatz">
      <path value="Patient.address.line.extension" />
      <sliceName value="Adresszusatz" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="Patient.address:Postfach.city">
      <path value="Patient.address.city" />
      <min value="1" />
    </element>
    <element id="Patient.address:Postfach.postalCode">
      <path value="Patient.address.postalCode" />
      <min value="1" />
    </element>
    <element id="Patient.address:Postfach.country">
      <path value="Patient.address.country" />
      <min value="1" />
      <constraint>
        <key value="pat-cnt-2or3-char" />
        <severity value="warning" />
        <human value="The content of the country element (if present) SHALL be selected EITHER from ValueSet ISO Country Alpha-2 http://hl7.org/fhir/ValueSet/iso3166-1-2 OR MAY be selected from ISO Country Alpha-3 Value Set http://hl7.org/fhir/ValueSet/iso3166-1-3, IF the country is not specified in value Set ISO Country Alpha-2 http://hl7.org/fhir/ValueSet/iso3166-1-2." />
        <expression value="country.empty() or (country.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-2') or country.memberOf('http://hl7.org/fhir/ValueSet/iso3166-1-3'))" />
        <source value="http://gematik.de/fhir/ISiK/StructureDefinition/ISiKPatient" />
      </constraint>
    </element>
  </differential>
</StructureDefinition>