{
  "resourceType": "StructureDefinition",
  "id": "KBV-PR-PTV-Organization",
  "url": "https://fhir.kbv.de/StructureDefinition/KBV_PR_PTV_Organization",
  "version": "1.3.1",
  "name": "KBV_PR_PTV_Organization",
  "status": "draft",
  "date": "2026-01-09",
  "publisher": "Kassenärztliche Bundesvereinigung (KBV)",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Organization",
  "baseDefinition": "https://fhir.kbv.de/StructureDefinition/KBV_PR_Base_Organization",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Organization",
        "path": "Organization",
        "constraint": [
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-1",
            "severity": "error",
            "human": "Falls die erste Adresszeile einen Straßennamen und eine Hausnummer besitzt, sind diese zusammen im Element 'line' mit mindestens einem Leerzeichen getrennt anzugeben.",
            "expression": "(address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists() and (address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string)!='N/A' and address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists()) implies (address.line[0].indexOf(%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').value as string)=0 and address.line[0].substring(%context.address.line[0].length()-(%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string).length(), (%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string).length())=(%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string) and address.line[0].substring((%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').value as string).length(), %context.address.line[0].length()-(%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').value as string).length()-(%context.address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string).length()).matches('^ +$'))"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-2",
            "severity": "error",
            "human": "Falls die zweite Adresszeile einen Adresszusatz besitzt, ist dieser im Element 'line' anzugeben.",
            "expression": "address.line[1].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').exists() implies address.line[1] = (address.line[1].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').value as string)"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-3",
            "severity": "error",
            "human": "Die erste Adresszeile muss einen Straßennamen besitzen und muss sie auch eine Hausnummer enthalten oder über den Nullwert 'N/A' deren Fehlen anzeigen.",
            "expression": "address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists() and address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists()"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-4",
            "severity": "error",
            "human": "Falls die erste Adresszeile eine Hausnummer besitzt oder über den Nullwert 'N/A' deren Fehlen anzeigt, muss sie auch einen Straßennamen enthalten.",
            "expression": "address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists() implies address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists()"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-5",
            "severity": "error",
            "human": "Die erste Adresszeile darf keinen Adresszusatz enthalten.",
            "expression": "address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').exists().not()"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-6",
            "severity": "error",
            "human": "Falls eine zweite Adresszeile existiert, darf sie weder einen Straßennamen oder eine Hausnummer enthalten und muss einen Adresszusatz enthalten.",
            "expression": "address.line[1].exists() implies address.line[1].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists().not() and address.line[1].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists().not() and address.line[1].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').exists()"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-7",
            "severity": "error",
            "human": "Falls eine zweite Adresszeile existiert, muss die erste Adresszeile einen Straßennamen und eine Hausnummer enthalten und darf keinen Adresszusatz besitzen.",
            "expression": "address.line[1].exists() implies address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists() and address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists() and address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator').exists().not()"
          },
          {
            "key": "-for-adresszeilenAufbauOrganizationRessource-8",
            "severity": "error",
            "human": "Falls die erste Adresszeile einen Straßennamen und keine Hausnummer besitzt, ist der Straßenname im Element 'line' anzugeben.",
            "expression": "(address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').exists() and (address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').value as string)='N/A' and address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').exists()) implies (address.line[0].extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').value as string)=address.line[0]"
          },
          {
            "key": "-for-anzahlIdentifikatorOrganizationRessource",
            "severity": "error",
            "human": "Falls ein Identifikator existiert, muss entweder ein Institutskennzeichen, eine Betriebsstättennummer, eine KZV-Abrechnungsnummer oder eine Standortnummer vorhanden sein.",
            "expression": "identifier.exists() implies (identifier.where(type.coding.code='BSNR').count()+identifier.where(type.coding.code='XX').count()+identifier.where(type.coding.code='KZVA').count()+identifier.where(type.coding.code='KSN').count()=1)"
          }
        ]
      },
      {
        "id": "Organization.id",
        "path": "Organization.id",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Organization.meta",
        "path": "Organization.meta",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Organization.meta.versionId",
        "path": "Organization.meta.versionId",
        "min": 1,
        "mustSupport": true
      },
      {
        "id": "Organization.meta.lastUpdated",
        "path": "Organization.meta.lastUpdated",
        "max": "0"
      },
      {
        "id": "Organization.meta.source",
        "path": "Organization.meta.source",
        "max": "0"
      },
      {
        "id": "Organization.meta.profile",
        "path": "Organization.meta.profile",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.meta.security",
        "path": "Organization.meta.security",
        "max": "0"
      },
      {
        "id": "Organization.meta.tag",
        "path": "Organization.meta.tag",
        "max": "0"
      },
      {
        "id": "Organization.implicitRules",
        "path": "Organization.implicitRules",
        "max": "0"
      },
      {
        "id": "Organization.language",
        "path": "Organization.language",
        "max": "0"
      },
      {
        "id": "Organization.text",
        "path": "Organization.text",
        "max": "0"
      },
      {
        "id": "Organization.contained",
        "path": "Organization.contained",
        "max": "0"
      },
      {
        "id": "Organization.extension",
        "path": "Organization.extension",
        "max": "0"
      },
      {
        "id": "Organization.extension:ergaenzende_Angaben",
        "path": "Organization.extension",
        "sliceName": "ergaenzende_Angaben",
        "max": "0"
      },
      {
        "id": "Organization.identifier",
        "path": "Organization.identifier",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "type"
            }
          ],
          "rules": "closed"
        },
        "min": 2,
        "max": "3",
        "mustSupport": true
      },
      {
        "id": "Organization.identifier.extension",
        "path": "Organization.identifier.extension",
        "max": "0"
      },
      {
        "id": "Organization.identifier:Institutionskennzeichen",
        "path": "Organization.identifier",
        "sliceName": "Institutionskennzeichen",
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.identifier:Betriebsstaettennummer",
        "path": "Organization.identifier",
        "sliceName": "Betriebsstaettennummer",
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.identifier:VKNR",
        "path": "Organization.identifier",
        "sliceName": "VKNR",
        "max": "0"
      },
      {
        "id": "Organization.identifier:KZV-Abrechnungsnummer",
        "path": "Organization.identifier",
        "sliceName": "KZV-Abrechnungsnummer",
        "max": "0"
      },
      {
        "id": "Organization.identifier:Telematik-ID",
        "path": "Organization.identifier",
        "sliceName": "Telematik-ID",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.identifier:Telematik-ID.system",
        "path": "Organization.identifier.system",
        "mustSupport": true
      },
      {
        "id": "Organization.identifier:Telematik-ID.value",
        "path": "Organization.identifier.value",
        "mustSupport": true
      },
      {
        "id": "Organization.active",
        "path": "Organization.active",
        "max": "0"
      },
      {
        "id": "Organization.type",
        "path": "Organization.type",
        "max": "0"
      },
      {
        "id": "Organization.name",
        "path": "Organization.name",
        "min": 1,
        "maxLength": 60,
        "mustSupport": true
      },
      {
        "id": "Organization.alias",
        "path": "Organization.alias",
        "max": "0"
      },
      {
        "id": "Organization.telecom",
        "path": "Organization.telecom",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.telecom.system",
        "path": "Organization.telecom.system",
        "fixedCode": "phone",
        "mustSupport": true
      },
      {
        "id": "Organization.telecom.value",
        "path": "Organization.telecom.value",
        "mustSupport": true
      },
      {
        "id": "Organization.address",
        "path": "Organization.address",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "type"
            }
          ],
          "rules": "open"
        },
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift",
        "path": "Organization.address",
        "sliceName": "Strassenanschrift",
        "min": 1,
        "max": "1",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.extension",
        "path": "Organization.address.extension",
        "max": "0"
      },
      {
        "id": "Organization.address:Strassenanschrift.extension:Stadtteil",
        "path": "Organization.address.extension",
        "sliceName": "Stadtteil",
        "max": "0"
      },
      {
        "id": "Organization.address:Strassenanschrift.use",
        "path": "Organization.address.use",
        "max": "0"
      },
      {
        "id": "Organization.address:Strassenanschrift.type",
        "path": "Organization.address.type",
        "fixedCode": "both",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.text",
        "path": "Organization.address.text",
        "max": "0"
      },
      {
        "id": "Organization.address:Strassenanschrift.line",
        "path": "Organization.address.line",
        "definition": "Diese Komponente kann Straßennamen, Hausnummer, Appartmentnummer, Postfach, c/o sowie weitere Zustellungshinweise enthalten. Die Informationen können in mehrere line-Komponenten aufgeteilt werden.\nBei Verwendung der Extensions, um Straße, Hausnnummer und Postleitzahl strukturiert zu übermitteln, müssen diese Informationen stets vollständig auch in der line-Komponente, die sie erweitern, enthalten sein, um es Systemen, die diese Extensions nicht verwenden zu ermöglichen, auf diese Informationen zugreifen zu können. Es wird empfohlen, dass die erste Zeile für Straße und Hausnummer und die zweite Zeile für den Zusatz verwendet wird.",
        "min": 1,
        "max": "2",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension",
        "path": "Organization.address.line.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "closed"
        },
        "max": "3"
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Strasse",
        "path": "Organization.address.line.extension",
        "sliceName": "Strasse",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Strasse.value[x]",
        "path": "Organization.address.line.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "closed"
        }
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Strasse.value[x]:valueString",
        "path": "Organization.address.line.extension.value[x]",
        "sliceName": "valueString",
        "maxLength": 46,
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Hausnummer",
        "path": "Organization.address.line.extension",
        "sliceName": "Hausnummer",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Hausnummer.value[x]",
        "path": "Organization.address.line.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "closed"
        }
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Hausnummer.value[x]:valueString",
        "path": "Organization.address.line.extension.value[x]",
        "sliceName": "valueString",
        "maxLength": 9,
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Adresszusatz",
        "path": "Organization.address.line.extension",
        "sliceName": "Adresszusatz",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Adresszusatz.value[x]",
        "path": "Organization.address.line.extension.value[x]",
        "slicing": {
          "discriminator": [
            {
              "type": "type",
              "path": "$this"
            }
          ],
          "ordered": false,
          "rules": "closed"
        }
      },
      {
        "id": "Organization.address:Strassenanschrift.line.extension:Adresszusatz.value[x]:valueString",
        "path": "Organization.address.line.extension.value[x]",
        "sliceName": "valueString",
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.city",
        "path": "Organization.address.city",
        "min": 1,
        "maxLength": 40,
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.state",
        "path": "Organization.address.state",
        "max": "0"
      },
      {
        "id": "Organization.address:Strassenanschrift.postalCode",
        "path": "Organization.address.postalCode",
        "maxLength": 10,
        "mustSupport": true
      },
      {
        "id": "Organization.address:Strassenanschrift.country",
        "path": "Organization.address.country",
        "mustSupport": true,
        "binding": {
          "strength": "required"
        }
      },
      {
        "id": "Organization.address:Strassenanschrift.period",
        "path": "Organization.address.period",
        "max": "0"
      },
      {
        "id": "Organization.address:Postfach",
        "path": "Organization.address",
        "sliceName": "Postfach",
        "max": "0"
      },
      {
        "id": "Organization.partOf",
        "path": "Organization.partOf",
        "max": "0"
      },
      {
        "id": "Organization.contact",
        "path": "Organization.contact",
        "max": "0"
      },
      {
        "id": "Organization.endpoint",
        "path": "Organization.endpoint",
        "max": "0"
      }
    ]
  }
}