Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Beschrijving

Validatie is de controle of resource instanties voldoen aan de specificaties die zijn vastgelegd. Om te borgen dat dit gebeurt, wordt elke Koppeltaal interactie met content gevalideerd. 

Overwegingen

Validatie van FHIR resources is gewenst om ervoor te zorgen dat elke resource instantie voldoet aan de specificaties.

Toepassing en restricties

Binnen Koppeltaal valideert de FHIR Resource Provider de FHIR Resources middels:

  • Parser Error Handler-validatie is run-time validatie tijdens het valideren van een resource. Het kan bijvoorbeeld worden gebruikt om uitzonderingen te genereren of foutmeldingen weer te geven wanneer een resource die wordt gevalideerd, elementen bevat waarvoor geen geschikte velden in de gegevensstructuur beschikbaar zijn. Dit is handig om ervoor te zorgen dat er geen gegevens verloren gaan tijdens het valideren, maar is minder uitgebreid dan bronvalidatie tegen onbewerkte gegevens zoals "value sets" (codes die zijn ontleend aan een of meer CodeSystems ). De Parser validatie is snel en eist weinig performance omdat het binnen de lokale validatie plaatsvindt en niet afhankelijk is van externe bronnen, die tijdens de validatie opgehaald moeten worden.
  • Instance Validator is een validatie van de onbewerkte of gevalideerde resource tegen de officiële FHIR-validatieregels (d.w.z. de officiële FHIR-definities, uitgedrukt als profiles zoals StructureDefinition en ValueSet).
  • Schema/Schematron-validatie is validatie met behulp van XSD/SCH-schema validatiebestanden die door FHIR worden geleverd. Deze validator presteert goed maar geeft minder bruikbare foutmeldingen dan Instance Validation. Het wordt beschouwd als een verouderde functie, aangezien de Instance Validator nu volwassen is en de voorkeur verdiend.

Eisen

VAL - Eisen aan validatie

Voorbeelden

Niet van toepassing

Links naar gerelateerde onderwerpen

...

Beschrijving

Om interoperabiliteit te kunnen waarborgen is het van belang dat iedereen dezelfde taal spreekt. Deze taal wordt afgedwongen middels validatie. Wanneer resources niet valide bevonden worden, moet er ook een duidelijke set aan afspraken zijn om te herleiden wát er fout bevonden wordt.

Overwegingen

Centrale validatie

Validatie van de resources vindt plaats op de FHIR resource service. Wanneer er een resource aangemaakt of geüpdatet wordt, moet deze voldoen aan een set van eisen. Eén van deze eisen is conformiteit aan de officiële Koppeltaal profielen. Op deze manier kunnen enkel valide resources uitgewisseld worden. Validatie wordt door FHIR in de volgende categorieën opgedeeld (irrelevante categorieën voor Koppeltaal weggelaten):

EisBeschrijving
StructuurControleer of alle inhoud in de bron wordt beschreven door de specificatie en dat er niets extra's aanwezig is
KardinaliteitControleer of de kardinaliteit van alle eigenschappen correct is (min & max)
WaardedomeinenControleer of de waarden van alle eigenschappen voldoen aan de regels voor de opgegeven typen (inclusief controleren of de meegegeven codes geldig zijn)
Coding/CodeableConcept-bindingenControleer of de codes/displays in de Coding/CodeableConcept typen geldig zijn
InvariantenControleer of de invarianten (regels voor gelijktijdig voorkomen, etc.) correct zijn gevolgd
ProfielenControleer of alle regels in profielen zijn gevolgd (inclusief die vermeld in de Resource.meta.profile, of in CapabilityStatement, of in een ImplementationGuide, of anderszins vereist door de context)

Validatie-overzicht

De FHIR resource service MOET de volgende methoden uit de FHIR implementation guide implementeren:

MethodeXMLJSONStructuurKardinaliteitWaardedomeinenCoding/CodeableConcept-bindingenInvariantenProfielen
XML Schema + Schematron

JSON Schema


Validation Operation

Koppeltaal Profielen

Elke resource die gebruikt wordt binnen Koppeltaal kent een eigen profiel. Een profiel wordt opgeleverd middels een StructureDefinition resource. Deze resource beschrijft welke eigenschappen een resource heeft, en bijvoorbeeld ook wat de kardinaliteit van elk veld is. De officiële Koppeltaal profielen zijn hier te vinden.

De StructureDefinition resources MOETEN door de FHIR resource service ingeladen te worden. Applicatie-instanties mogen deze niet zelf aanmaken of bewerken.

Daarnaast MOET elke resource die aangemaakt wordt, verwijzen naar het bijbehorende Koppeltaal profiel. Indien dit niet gebeurd MOET de server de request afkeuren middels een HTTP 422 en de melding welk profiel verwacht wordt in een OperationOutcome.

Onderliggende bouwstenen

De Koppeltaal profielen zijn, waar mogelijk, gebaseerd op het nl-core profiel van Nictiz. Het nl-core project maakt weer gebruik van het zorginformatiebouwstenen (ZIB) profiel. Door het gebruik van deze zogenaamde “base definitions” wordt de kans op interoperabiliteit vergroot tussen andere standaarden en Koppeltaal die ook gebruik maken van nl-core en/of ZIBs.

Simplifier Releases

Koppeltaal voert releases uit in simplifier. Dit resulteer in packages op Node Package Manager (npm). Deze packages bevatten alle resources die nodig zijn voor de Koppeltaal-specifieke validatie. Ook bevat deze de resources uit de dependencies (nl-core en zib). Sommige FHIR resource services kunnen direct deze npm package downloaden en installeren.

Validatie

De FHIR resource service dwingt de bovenstaande profielen af. Zo MOET elke Resource - bij zowel een POST (Create) als een PUT, PATCH (Update) - naar het bijbehorende profiel verwijzen. De URI van het profiel voor elke ondersteunde resource is te vinden in simplifier:

Image Added

Deze URI moet meegegeven worden aan de Resource.meta.profile array.

Aangezien de StructureDefinition exact beschrijft waar een Resource aan moet voldoen, wordt dit gebruikt om de Resources te valideren.

Foutmeldingen

Wanneer een resource door de validatie komt, zal de FHIR resource service reageren met een HTTP 422 error code. De exacte reden waarom hiervoor wordt in de response body beschreven middels een OperationOutcome resource. Let op dat deze outcome verschillende “severities” heeft, enkel de severity error zal leiden tot een 422 response:

Code Block
{
  "resourceType": "OperationOutcome",
  "text": {
    "status": "generated",
    "div": "<div xmlns=\\"<http://www.w3.org/1999/xhtml\\>"><h1>Operation Outcome</h1><table border=\\"0\\"><tr><td style=\\"font-weight: bold;\\">WARNING</td><td>[Patient, Line 1, Col 2]</td><td><pre>dom-6: 'A resource should have narrative for robust management' Rule 'A resource should have narrative for robust management' Failed</pre></td>\\n\\t\\t\\t</tr>\\n\\t\\t\\t<tr>\\n\\t\\t\\t\\t<td style=\\"font-weight: bold;\\">INFORMATION</td>\\n\\t\\t\\t\\t<td>[Patient.identifier[0], Line 1, Col 179]</td>\\n\\t\\t\\t\\t<td><pre>This element does not match any known slice defined in the profile <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient></pre></td>\\n\\t\\t\\t</tr>\\n\\t\\t\\t<tr>\\n\\t\\t\\t\\t<td style=\\"font-weight: bold;\\">ERROR</td>\\n\\t\\t\\t\\t<td>[Patient, Line 1, Col 2]</td>\\n\\t\\t\\t\\t<td><pre>Patient.birthDate: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)</pre></td>\\n\\t\\t\\t</tr>\\n\\t\\t\\t<tr>\\n\\t\\t\\t\\t<td style=\\"font-weight: bold;\\">ERROR</td>\\n\\t\\t\\t\\t<td>[Patient.name[0], Line 1, Col 256]</td>\\n\\t\\t\\t\\t<td><pre>Patient.name:nameInformation.family: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)</pre></td>\\n\\t\\t\\t</tr>\\n\\t\\t\\t<tr>\\n\\t\\t\\t\\t<td style=\\"font-weight: bold;\\">ERROR</td>\\n\\t\\t\\t\\t<td>[Patient.name[0], Line 1, Col 256]</td>\\n\\t\\t\\t\\t<td><pre>Patient.name:nameInformation.given: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)</pre></td>\\n\\t\\t\\t</tr>\\n\\t\\t</table>\\n\\t</div>"
  },
  "issue": [ {
    "severity": "warning",
    "code": "processing",
    "diagnostics": "dom-6: 'A resource should have narrative for robust management' Rule 'A resource should have narrative for robust management' Failed",
    "location": [ "Patient", "Line 1, Col 2" ]
  }, {
    "severity": "information",
    "code": "processing",
    "diagnostics": "This element does not match any known slice defined in the profile <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>",
    "location": [ "Patient.identifier[0]", "Line 1, Col 179" ]
  }, {
    "severity": "error",
    "code": "processing",
    "diagnostics": "Patient.birthDate: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)",
    "location": [ "Patient", "Line 1, Col 2" ]
  }, {
    "severity": "error",
    "code": "processing",
    "diagnostics": "Patient.name:nameInformation.family: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)",
    "location": [ "Patient.name[0]", "Line 1, Col 256" ]
  }, {
    "severity": "error",
    "code": "processing",
    "diagnostics": "Patient.name:nameInformation.given: minimum required = 1, but only found 0 (from <http://koppeltaal.nl/fhir/StructureDefinition/KT2Patient>)",
    "location": [ "Patient.name[0]", "Line 1, Col 256" ]
  } ]
}

$validate operatie

Applicatie-instanties kunnen ook enkel resources valideren bij de FHIR resource service conform de specificatie.

Referentiële integriteit

De FHIR resource service dient referentiële integriteit af te dwingen. Dit is ook een vorm van validatie die uitgevoerd moet worden. De implementatiedetails en eisen zijn te vinden bij het topic [TODO: Header link] Logische ID, bedrijfsidentifier, referenties en referentie integriteit.

Links naar gerelateerde onderwerpen

Eisen

VAL - Eisen aan validatie