<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="VSDMOperationOutcome" />
  <url value="https://gematik.de/fhir/vsdm2/StructureDefinition/VSDMOperationOutcome" />
  <version value="1.0.0" />
  <name value="VSDMOperationOutcome" />
  <title value="Fehlermeldung des VSDM Resource Servers" />
  <status value="active" />
  <experimental value="false" />
  <date value="2026-04-17" />
  <publisher value="gematik GmbH" />
  <description value="Strukturierte Fehlermeldung im Versichertenstammdatenmanagement (VSDM) 2.0" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="OperationOutcome" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/OperationOutcome" />
  <derivation value="constraint" />
  <differential>
    <element id="OperationOutcome">
      <path value="OperationOutcome" />
      <short value="Fehlermeldung des VSDM Resource Servers" />
      <definition value="Strukturierte Fehlermeldung im Versichertenstammdatenmanagement (VSDM) 2.0" />
    </element>
    <element id="OperationOutcome.text">
      <path value="OperationOutcome.text" />
      <short value="Fehlerbeschreibung zur Anzeige" />
      <definition value="Dieser Beschreibungstext wird vom Clientsystem zur Anzeige gebracht, wenn keine anderweitige Fehlerbehandlung auf Grundlage der strukturierten Informationen möglich ist.&#xA;Die Beschreibung soll so formuliert sein, dass sie für den Anwender des Clientsystems verständlich ist." />
      <comment value="Der Beschreibungstext darf identisch zum Anzeigetext in issue.details.text sein." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.text.status">
      <path value="OperationOutcome.text.status" />
      <patternCode value="generated" />
    </element>
    <element id="OperationOutcome.text.div">
      <path value="OperationOutcome.text.div" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue">
      <path value="OperationOutcome.issue" />
      <short value="Strukturierte Fehlerbeschreibung" />
      <definition value="Diese strukturierte Fehlerbeschreibung kann zur Behandlung innerhalb des Clientsystems ausgewertet werden." />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.severity">
      <path value="OperationOutcome.issue.severity" />
      <short value="Schweregrad der Fehlermeldung" />
      <definition value="Beschreibt die Kritikalität (den Schweregrad) der Fehlermeldung mit Bezug auf die Ausführung der gesamten Anfrage." />
      <comment value="Für VSDM-spezifische Fehlermeldungen kann der Schweregrad anhand der ConceptMap VSDMErrorcodeIssueSeverity abgeleitet werden." />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.code">
      <path value="OperationOutcome.issue.code" />
      <short value="Klassifizierung der Fehlermeldung" />
      <definition value="Ordnet die Fehlermeldung einem standardisierten Fehlertyp zu." />
      <comment value="Für VSDM-spezifische Fehlermeldungen kann der Schweregrad anhand der ConceptMap VSDMErrorcodeIssueType abgeleitet werden." />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.details">
      <path value="OperationOutcome.issue.details" />
      <short value="Fehlerbeschreibung" />
      <definition value="Diese Struktur beschreibt die aufgetretene Fehlersituation." />
      <min value="1" />
    </element>
    <element id="OperationOutcome.issue.details.coding">
      <path value="OperationOutcome.issue.details.coding" />
      <short value="Fehlercode aus den Wertetabellen gemäß Spezifikation" />
      <definition value="Es sind grundsätzlich die VSDM-spezifischen Fehlercodes aus dem CodeSystem VSDMErrorcodeCS zu verwenden.&#xA;Falls keiner der Fehlercodes fachlich zutreffend ist, kann ein allgemeiner Fehlercode aus den Standard-FHIR-CodeSystemen verwendet werden." />
      <min value="1" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="https://gematik.de/fhir/vsdm2/ValueSet/VSDMErrorcodeVS" />
      </binding>
    </element>
    <element id="OperationOutcome.issue.details.coding.system">
      <path value="OperationOutcome.issue.details.coding.system" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.details.coding.code">
      <path value="OperationOutcome.issue.details.coding.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.details.coding.display">
      <path value="OperationOutcome.issue.details.coding.display" />
      <short value="Meldungstext laut Katalog" />
      <definition value="Dieses Feld nimmt den unverarbeiteten Meldungstext gemäß CodeSystem/ValueSet auf." />
    </element>
    <element id="OperationOutcome.issue.details.text">
      <path value="OperationOutcome.issue.details.text" />
      <short value="Aufbereiteter Meldungstext" />
      <definition value="Dieses Feld nimmt den aufbereiteten Meldungstext aus dem CodeSystem/ValueSet mit ersetzten Platzhaltern auf." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.diagnostics">
      <path value="OperationOutcome.issue.diagnostics" />
      <short value="Diagnostik- und Lösungsmöglichkeiten" />
      <definition value="Dieses Feld liefert Hinweise zur Fehlerbehebung durch das Clientsystem in Anlehnung an Anforderung A_27014. &#xA;Dieser Text richtet sich primär an Entwickler und technische Betreuer des Clientsystems und soll dem Anwender in der Regel nicht zur Anzeige gebracht werden." />
      <comment value="Dieses Feld darf keine technischen Interna des Fachdienstes (stack traces o.ä.) enthalten." />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="OperationOutcome.issue.expression">
      <path value="OperationOutcome.issue.expression" />
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>