<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="VSDMCoverageGKV" />
  <url value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
  <version value="1.0.0" />
  <name value="VSDMCoverageGKV" />
  <title value="Versicherungsdaten GKV" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-17" />
  <publisher value="gematik GmbH" />
  <description value="Angaben zum GKV-Versicherungsverhältnis im Versichertenstammdatenmanagement (VSDM) 2.0" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Coverage" />
  <baseDefinition value="http://fhir.de/StructureDefinition/coverage-de-basis" />
  <derivation value="constraint" />
  <differential>
    <element id="Coverage">
      <path value="Coverage" />
      <short value="Versicherungsdaten GKV" />
      <definition value="Angaben zum GKV-Versicherungsverhältnis im Versichertenstammdatenmanagement (VSDM) 2.0" />
      <comment value="Zur Harmonisierung der Strukturen mit dem deutschen Basisprofil werden getrennte Profile für GKV und PKV gebildet." />
      <constraint>
        <key value="VSDMCoverageGKV-gender-1" />
        <severity value="error" />
        <human value="Für GKV-Versicherte ist die Angabe des Geschlechts erforderlich." />
        <expression value="beneficiary.resolve().gender.exists()" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <constraint>
        <key value="VSDMCoverageGKV-gender-2" />
        <severity value="error" />
        <human value="Für GKV-Versicherte ist die Geschlechtsangabe 'unknown' nicht erlaubt." />
        <expression value="beneficiary.resolve().gender != 'unknown'" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <constraint>
        <key value="VSDMCoverageGKV-address-1" />
        <severity value="error" />
        <human value="Für GKV-Versicherte ist die Angabe des Länderkennzeichens nach DEÜV Anlage 8 in Adressen des Patienten erforderlich." />
        <expression value="beneficiary.resolve().address.all(country.extension('http://hl7.org/fhir/StructureDefinition/iso21090-codedString').value.ofType(Coding).where(system = 'http://fhir.de/CodeSystem/deuev/anlage-8-laenderkennzeichen').exists())" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <constraint>
        <key value="VSDMCoverageGKV-address-2" />
        <severity value="error" />
        <human value="Für GKV-Versicherte ist die Angabe des Länderkennzeichens nach DEÜV Anlage 8 in Adressen des Kostenträgers erforderlich." />
        <expression value="payor.all(resolve().address.all(country.extension('http://hl7.org/fhir/StructureDefinition/iso21090-codedString').value.ofType(Coding).where(system = 'http://fhir.de/CodeSystem/deuev/anlage-8-laenderkennzeichen').exists()))" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
    </element>
    <element id="Coverage.extension">
      <path value="Coverage.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="2" />
    </element>
    <element id="Coverage.extension:WOP">
      <path value="Coverage.extension" />
      <sliceName value="WOP" />
      <short value="Wohnortprinzip (WOP)" />
      <definition value="Kennzeichen zur Umsetzung des Wohnortprinzips (WOP)." />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <requirements value="Das Kennzeichen WOP ist für GKV-Patienten gemäss § 2 Abs. 2 der Vereinbarung zur Festsetzung des Durchschnittsbetrages gemäss Artikel 2 § 2 Abs. 2 des Gesetzes zur Einführung des Wohnortprinzips bei Honorarvereinbarungen für Ärzte und Zahnärzte und zur Krankenversichertenkarte gemäss § 291 Abs. 2 Fünftes Sozialgesetzbuch (SGB V) erforderlich." />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/wop" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:WOP.value[x]">
      <path value="Coverage.extension.value[x]" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/vsdm2/ValueSet/VSDMWohnortprinzipVS" />
      </binding>
    </element>
    <element id="Coverage.extension:WOP.value[x].system">
      <path value="Coverage.extension.value[x].system" />
      <fixedUri value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ITA_WOP" />
    </element>
    <element id="Coverage.extension:besonderePersonengruppe">
      <path value="Coverage.extension" />
      <sliceName value="besonderePersonengruppe" />
      <short value="Besondere Personengruppe (GKV)" />
      <definition value="Gibt die Zugehörigkeit des GKV-Versicherten zu einer besonderen Personengruppe an." />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <requirements value="Die Kennzeichnung erfolgt gemäß der aktuellen Schlüsseltabelle." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/besondere-personengruppe" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:besonderePersonengruppe.value[x].system">
      <path value="Coverage.extension.value[x].system" />
      <fixedUri value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_PERSONENGRUPPE" />
    </element>
    <element id="Coverage.extension:zuzahlungsstatus">
      <path value="Coverage.extension" />
      <sliceName value="zuzahlungsstatus" />
      <short value="Zuzahlungsstatus" />
      <definition value="Kennzeichnet die Befreiung des Versicherten von der Zuzahlungspflicht nach § 62 Abs. 3 SGB V.&#xA;Achtung: Wenn keine Zuzahlungsbefreiung vorliegt, entfällt die gesamte Extension." />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <requirements value="Befreiung des Versicherten von der Zuzahlungspflicht nach § 62 Abs. 3 SGB V." />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/zuzahlungsstatus" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:zuzahlungsstatus.extension">
      <path value="Coverage.extension.extension" />
      <min value="2" />
    </element>
    <element id="Coverage.extension:zuzahlungsstatus.extension:status">
      <path value="Coverage.extension.extension" />
      <sliceName value="status" />
      <comment value="Wenn keine Zuzahlungsbefreiung vorliegt (der Wert also false wäre), entfällt die gesamte Extension." />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:zuzahlungsstatus.extension:status.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <patternBoolean value="true" />
    </element>
    <element id="Coverage.extension:zuzahlungsstatus.extension:gueltigBis">
      <path value="Coverage.extension.extension" />
      <sliceName value="gueltigBis" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:dmp">
      <path value="Coverage.extension" />
      <sliceName value="dmp" />
      <short value="DMP-Teilnahme" />
      <definition value="Angaben zur Teilnahme des Versicherten an Disease Management-Programmen." />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="Extension" />
        <profile value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMDMPTeilnahme" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung">
      <path value="Coverage.extension" />
      <sliceName value="kostenerstattung" />
      <short value="Kostenerstattung" />
      <definition value="Gibt die vom Versicherten gewählte Kostenerstattung für den jeweiligen Bereich an." />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/kostenerstattung" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension">
      <path value="Coverage.extension.extension" />
      <min value="4" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:aerztlicheVersorgung">
      <path value="Coverage.extension.extension" />
      <sliceName value="aerztlicheVersorgung" />
      <short value="Ärztliche Versorgung" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:aerztlicheVersorgung.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:zahnaerztlicheVersorgung">
      <path value="Coverage.extension.extension" />
      <sliceName value="zahnaerztlicheVersorgung" />
      <short value="Zahnärztliche Versorgung" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:zahnaerztlicheVersorgung.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:stationaererBereich">
      <path value="Coverage.extension.extension" />
      <sliceName value="stationaererBereich" />
      <short value="Stationärer Bereich" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:stationaererBereich.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:veranlassteLeistungen">
      <path value="Coverage.extension.extension" />
      <sliceName value="veranlassteLeistungen" />
      <short value="Veranlasste Leistungen" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:kostenerstattung.extension:veranlassteLeistungen.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch">
      <path value="Coverage.extension" />
      <sliceName value="ruhenderLeistungsanspruch" />
      <short value="Ruhender Leistungsanspruch" />
      <definition value="Angaben zum ruhenden Leistungsanspruch des Versicherten" />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/ruhender-leistungsanspruch" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:art">
      <path value="Coverage.extension.extension" />
      <sliceName value="art" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:art.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/vsdm2/ValueSet/VSDMRuhenderLeistungsanspruchArtVS" />
      </binding>
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:art.value[x].system">
      <path value="Coverage.extension.extension.value[x].system" />
      <fixedUri value="http://fhir.de/CodeSystem/gkv/RuhenderLeistungsanspruchGKV" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:dauer">
      <path value="Coverage.extension.extension" />
      <sliceName value="dauer" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:dauer.value[x]">
      <path value="Coverage.extension.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:dauer.value[x].start">
      <path value="Coverage.extension.extension.value[x].start" />
      <constraint>
        <key value="date-precision-1" />
        <severity value="error" />
        <human value="An dieser Stelle muss ein vollständiges Datum bestehend aus Jahr, Monat und Tag angegeben werden." />
        <expression value="toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}$')" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
    </element>
    <element id="Coverage.extension:ruhenderLeistungsanspruch.extension:dauer.value[x].end">
      <path value="Coverage.extension.extension.value[x].end" />
      <constraint>
        <key value="date-precision-1" />
        <severity value="error" />
        <human value="An dieser Stelle muss ein vollständiges Datum bestehend aus Jahr, Monat und Tag angegeben werden." />
        <expression value="toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}$')" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
    </element>
    <element id="Coverage.extension:versichertenart">
      <path value="Coverage.extension" />
      <sliceName value="versichertenart" />
      <short value="Art des Versicherten" />
      <definition value="Art des Versicherten" />
      <comment value="Hinweise zur Verwendung siehe auch [Extensions für Coverage](https://ig.fhir.de/basisprofile-de/stable/ig-markdown-ExtensionsfrCoverage.html) im deutschen Basisprofil" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://fhir.de/StructureDefinition/gkv/versichertenart" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.extension:versichertenart.value[x]">
      <path value="Coverage.extension.value[x]" />
      <min value="1" />
    </element>
    <element id="Coverage.type">
      <path value="Coverage.type" />
      <patternCodeableConcept>
        <coding>
          <system value="http://fhir.de/CodeSystem/versicherungsart-de-basis" />
          <code value="GKV" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="Coverage.beneficiary">
      <path value="Coverage.beneficiary" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMPatient" />
      </type>
    </element>
    <element id="Coverage.period">
      <path value="Coverage.period" />
      <short value="Gültigkeitszeitraum des Versicherungsschutzes" />
      <definition value="Gibt den Beginn und, sofern anwendbar, das Ende des Versicherungsschutzes an." />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.period.start">
      <path value="Coverage.period.start" />
      <short value="Beginn des Versicherungsschutzes" />
      <definition value="Gibt den Beginn des Versicherungsschutzes (Leistungsanspruchs) des Versicherten bei dem Kostenträger an." />
      <min value="1" />
      <constraint>
        <key value="date-precision-1" />
        <severity value="error" />
        <human value="An dieser Stelle muss ein vollständiges Datum bestehend aus Jahr, Monat und Tag angegeben werden." />
        <expression value="toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}$')" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.period.end">
      <path value="Coverage.period.end" />
      <short value="Ende des Versicherungsschutzes" />
      <definition value="Gibt das Ende des Versicherungsschutzes (Leistungsanspruchs) des Versicherten bei dem Kostenträger an, wenn ein Endedatum festgelegt ist." />
      <comment value="Hier kann nicht das Ende der Gültigkeit einer konkreten eGK angegeben werden, weil der VSDM 2.0 Resource Server keine Kenntnis davon erlangt, welche konkrete eGK verwendet wurde.&#xA;Für den Fall der Authentifikation mit einer elektronischen Identität liegt ohnehin kein eGK-Gültigkeitsdatum vor." />
      <constraint>
        <key value="date-precision-1" />
        <severity value="error" />
        <human value="An dieser Stelle muss ein vollständiges Datum bestehend aus Jahr, Monat und Tag angegeben werden." />
        <expression value="toString().matches('^[0-9]{4}-[0-9]{2}-[0-9]{2}$')" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.payor">
      <path value="Coverage.payor" />
      <short value="Kostenträger" />
      <definition value="Gibt den gesetzlichen Kostenträger des Versicherten an.&#xA;Der Haupt-Kostenträger ist verpflichtend in der ersten Position anzugeben.&#xA;Ein etwaiger abweichender abrechnender Kostenträger kann als zweite Referenz angegeben werden." />
      <comment value="Zur Kompatibilität mit den etablierten Profilen (z.B. ISIK) werden neben der Referenz innerhalb des Bundles auch der Identifier und der Name in der Referenz hinterlegt.&#xA;Innerhalb des VSDM-Bundles werden die Kostenträger als VSDMPayorOrganization-Ressourcen übermittelt; der Verweis erfolgt über die reference-Angabe." />
      <max value="2" />
      <type>
        <code value="Reference" />
        <targetProfile value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMPayorOrganization" />
      </type>
      <constraint>
        <key value="VSDMCoverageGKV-payor-1" />
        <severity value="error" />
        <human value="Die IK-Nummer in der Kostenträger-Referenz muss mit der IK-Nummer in der referenzierten Organisation übereinstimmen." />
        <expression value="resolve().identifier.exists(value = $this.value)" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <constraint>
        <key value="VSDMCoverageGKV-payor-2" />
        <severity value="error" />
        <human value="Der Anzeigetext der Kostenträger-Referenz muss mit dem Anzeigenamen der referenzierten Organisation übereinstimmen." />
        <expression value="resolve().name = $this.display" />
        <source value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMCoverageGKV" />
      </constraint>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.payor.reference">
      <path value="Coverage.payor.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Coverage.payor.identifier">
      <path value="Coverage.payor.identifier" />
      <min value="1" />
      <type>
        <code value="Identifier" />
        <profile value="http://fhir.de/StructureDefinition/identifier-iknr" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Coverage.payor.display">
      <path value="Coverage.payor.display" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>