Document toolboxDocument toolbox

TOP-KT-010 - Validatie

Ā Versiegeschiedenis...
VersieDatumStatusWijzigingen
1.0.0

Ā 

definitief

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:

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 niet 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:

{
  "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 Logische ID, bedrijfsidentifier, referenties en referentie integriteit#Referentie integriteit.

Links naar gerelateerde onderwerpen

Eisen

VAL - Eisen aan validatie