Vdraft Handleiding Kardinaliteiten en conformance: verschil tussen versies
(→Gebruik in de praktijk) |
(→Samenhang tussen kardinaliteit en conformance) |
||
| Regel 107: | Regel 107: | ||
Alleen bij coding strength “CNE” (Coded with No Exceptions: alléén waarden uit de betreffende waardelijst zijn toegestaan) is het gebruik van een NullFlavor toegestaan. | Alleen bij coding strength “CNE” (Coded with No Exceptions: alléén waarden uit de betreffende waardelijst zijn toegestaan) is het gebruik van een NullFlavor toegestaan. | ||
In latere versies van HL7 is coding strength vervangen door ‘binding strength’. In FHIR zijn de NullFlavors vervangen door DataAbsentReason. | In latere versies van HL7 is coding strength vervangen door ‘binding strength’. In FHIR zijn de NullFlavors vervangen door DataAbsentReason. | ||
| − | |||
| − | |||
=Conditional conformance= | =Conditional conformance= | ||
Versie van 2 okt 2026 om 09:32
Inhoud
- 1 Introductie
- 2 Gegevens uitwisselen: wat moet, wat mag en wat als een waarde ontbreekt?
- 3 Kardinaliteit
- 4 Conditional conformance
- 5 Toepassingsvoorbeeld: Gebruik in combinatie met hiërarchieën van elementen (zoals containers of groepen)
- 6 NullFlavor
- 7 Gebruik in de praktijk
- 8 Versie geschiedenis/ Release notes
Introductie
Bij informatiestandaarden spelen de begrippen kardinaliteit, conformance en NullFlavor een belangrijke rol voor de eisen die gesteld worden in een functioneel ontwerp (in art-decor) en technisch ontwerp (zoals FHIR implementation guide of CDA-templates). Afhankelijk van de context en de mogelijke combinaties gelden andere eisen en afspraken voor de gegevensuitwisseling en systeemrollen. In deze handleiding kun je lezen hoe kardinaliteit, conformance en nullFlavor moeten worden geïnterpreteerd voor de informatiestandaarden van Nictiz. Dit vanuit een generiek en praktisch perspectief. Het kan voorkomen dat informatiestandaarden aanvullende eisen stellen aan de gegevensuitwisseling.
Scope en reikwijdte handleiding:
- Deze handleiding is alleen van toepassing op versies van informatiestandaarden die gemaakt zijn zonder de zibs 2.0 methodiek en niet opgebouwd zijn met generieke bouwblokken (GBB). Hoe conformance, kardinaliteiten en meer zal gaan werken voor informatiestandaarden die opgebouwd zijn met de GBB valt buiten scope van deze handleiding.
- Het is belangrijk om onderscheid te maken tussen eisen bij het uitwisselen en registreren van gegevens. Voor beide situaties kunnen andere afspraken gelden omtrent de kardinaliteit en conformance. Deze handleiding is primair gericht op uitwisseling van gegevens van een usecase. Wanneer binnen een informatiestandaard aanvullende afspraken zijn gemaakt over registratie, zoals een registratiescenario, zijn deze terug te vinden bij de usecases in het desbetreffende functionele ontwerp.
Eerst wordt uitgelegd waarom kardinaliteit, conformance en nullFlavor nodig zijn. Vervolgens worden deze begrippen afzonderlijk behandeld.
Daarna wordt aan de hand van praktijkvoorbeelden toegelicht hoe deze begrippen worden toegepast en hoe ze zich tot elkaar verhouden.
Gegevens uitwisselen: wat moet, wat mag en wat als een waarde ontbreekt?
Wanneer applicaties berichten met elkaar uitwisselen, gelden er afspraken over welke gegevens wel en niet in een bericht moeten of mogen staan. Dit wordt door de kardinaliteit en conformance van de elementen bepaald. De kardinaliteit geeft aan hoe vaak een element voor moet of mag komen. De conformance geeft aan of een element moet of mag worden meegestuurd en of er een waarde meegestuurd moet worden.
Aanvullend kan voor een element bepaald zijn of een reden voor ontbrekende gegevens is toegestaan. Dat kan met o.a. een NullFlavor, deze geeft de reden aan waarom er geen waarde wordt doorgegeven. NullFlavor komt voor in de HL7v3. In FHIR komt dit ook voor, maar vaker gebruiken ze hier DataAbsentReason in de plaats. In deze handleiding bespreken we alleen het gebruik van nullFlavor in relatie tot ontbrekende gegevens.
Kardinaliteit
Een algemene definitie van kardinaliteit is: "een maat voor het aantal toegestane instanties van een element in een verzameling". Dit specificeert het minimale en maximale aantal keer dat een element in een bericht mag voorkomen.
| kardinaliteit | betekenis |
|---|---|
| 0..* | Het gegevenselement mag 0, 1 of meerdere malen voorkomen |
| 1..* | Het gegevenselement moet minimaal 1 keer en mag meerdere malen voorkomen |
| 0..1 | Het gegevenselement mag 0 of 1 keer voorkomen |
| 1..1 | Het gegevenselement moet precies 1 keer voorkomen |
Conformance
Conformance geeft aan welke verplichtingen er gelden voor de aanwezigheid van een element in een bericht. In de onderstaande tabel worden de verschillende types conformance beschreven.
| Conformance | Opstellen bericht (sturen/beschikbaarstellen) |
Verwerken bericht (ontvangen/raadplegen) | |
|---|---|---|---|
| M | Mandatory / vereist |
Element moet aanwezig zijn in bericht. Moet ingevoerde waarde bevatten; zonder waarde is bericht ongeldig. |
Element moet verwerkt worden. |
| R | Required / verplicht |
Systeem moet in staat zijn element en waarde te ondersteunen. Bericht: Indien waarde aanwezig in systeem, moet bericht het element en waarde bevatten. Indien toegestaan in de definitie van het element, kan hierbij een NullFlavor in het bericht staan. |
Als element aanwezig, moet deze verwerkt worden. |
| O | Optional / optioneel |
Systeem mag element en waarde ondersteunen. Element mag aanwezig zijn in het bericht. |
Het element mag verwerkt worden. |
| NP | Not Permitted / niet toegestaan |
Niet toegestaan, het element mag niet in het bericht voorkomen | NVT |
| C | Conditional / voorwaardelijk |
Conformance op het element is afhankelijk van (tekstuele) voorwaarden. De voorwaarden bepalen welke van bovenstaande conformances van toepassing is voor het bericht. | |
Verwerken: Betreft het zonder problemen overweg kunnen gaan van het systeem met de aanwezigheid van een element. De exacte vorm van verwerken is niet eenduidig gedefinieerd, maar denk bijvoorbeeld aan tonen, opslaan, hergebruiken, etc. Het kan voorkomen dat informatiestandaarden aanvullende eisen over verwerken bevatten.
Ondersteunen: Betreft het in staat zijn van het systeem om een element te voorzien van een waarde in een bericht.
In FHIR wordt geen gebruik gemaakt van conformance. De rol van conformance wordt in FHIR afgedekt met obligations, mustSupport flags en constraints. Deze zijn buiten scope van deze handleiding.
NullFlavor
NullFlavors worden gebruikt om aan te geven waarom een element zonder waarde verstuurd wordt. Of het gebruik van een NullFlavor is toegestaan is afhankelijk van de conformance en eventueel de coding strength. Een bericht kan per element een apart attribuut bevatten om een NullFlavor-waarde te versturen.
Een NullFlavor kan gebruikt worden om aan te geven
- dat er geen waarde beschikbaar is in het bronsysteem (waarde NoInformation/NI)
- dat er een waarde aanwezig is in het bronsysteem die niet doorgegeven kan of mag worden (bijv. de waarde Masked/MSK of Invalid/INV)
- als er een NullFlavor-waarde is vastgelegd in het bronsysteem (bijv. de waarde Other/OTH).
In dit overzicht zijn alle beschikbare NullFlavor-waarden te vinden. Als uitzondering voor de NullFlavor-waarden Other/OTH en Un-encoded/UNC geldt dat in een aanvullend tekstveld de nadere specificatie van deze waarde meegestuurd kan worden (de waarden Other en Un-encoded impliceren dat er wel een waarde bekend is, maar dat deze waarde niet voorkomt in de gedefinieerde waardelijst van het element).
NullFlavor in relatie tot coding strength
HL7 V3 wordt ‘coding strength’ gebruikt om bij een element met een waardelijst aan te geven of alleen de waarden uit de waardelijst gebruikt mogen worden, of ook andere waarden. Alleen bij coding strength “CNE” (Coded with No Exceptions: alléén waarden uit de betreffende waardelijst zijn toegestaan) is het gebruik van een NullFlavor toegestaan. In latere versies van HL7 is coding strength vervangen door ‘binding strength’. In FHIR zijn de NullFlavors vervangen door DataAbsentReason.
Conditional conformance
Toepassingsvoorbeeld: Gebruik in combinatie met hiërarchieën van elementen (zoals containers of groepen)
NullFlavor
Voorbeelden
0..1 of 0..* Required:
- Element gevuld met waarde -> element met waarde wordt doorgestuurd.
- Element bewust leeg gelaten (nullFlavor) -> element met nullFlavor wordt doorgestuurd. Dit is indien de gebruiker bewust niks invult omdat het bijvoorbeeld onbekend is.
- Element in zijn geheel niet gebruiken -> het element wordt in zijn geheel niet doorgestuurd. Dit is indien het element niet van toepassing is. Deze optie is dus niet mogelijk in geval van 1..1 of 1..* kardinaliteit.
| Conformance / Kardinaliteit | Optioneel | Required | Mandatory |
|---|---|---|---|
| 0..1 |
Invoer MAG mogelijk zijn 0 → GEEN XML element |
Invoer MOET mogelijk zijn 0 → GEEN XML element |
NVT |
| 0..* |
Invoer MAG mogelijk zijn 0 → GEEN XML element |
Invoer MOET mogelijk zijn 0 → GEEN XML element |
NVT |
| 1..1 |
Invoer MAG mogelijk zijn 0 → LEEG XML element |
Invoer MOET mogelijk zijn 0 → 1 XML element (nullFlavor) |
Invoer MOET VERPLICHT zijn 0 → NIET toegestaan |
| 1..* |
Invoer MAG mogelijk zijn 0 → LEEG XML element |
Invoer MOET mogelijk zijn 0 → 1 XML element (nullFlavor) |
Invoer MOET VERPLICHT zijn 0 → NIET toegestaan |
Gebruik in de praktijk
Samenhang tussen kardinaliteit, conformance en nullFlavor
Een conformance “required” betekent dat applicaties het data-element verplicht moeten implementeren. Bij deze conformance moet een data-element altijd meegestuurd en verwerkt worden ALS er een waarde is.
Bij een conformance “mandatory” moeten applicaties het data-element verplicht implementeren én moet er altijd een waarde in het bericht staan. Het kan hier niet voorkomen dat een data-element ontbreekt, ook niet als nullFlavor. Vandaar dat de kardinaliteit bij mandatory alleen 1..1 of 1..* moet zijn.
De onderstaande tabel vertaalt de meest voorkomende combinaties naar functionele afspraken. Daarbij is onderscheid gemaakt tussen het ontbreken van een element en het ontbreken van een inhoudelijke waarde.
| Kardinaliteit + conformance | Functionele betekenis | Voorbeeld |
|---|---|---|
|
0..1 / 0..* Optional |
Het element mag ontbreken of één keer voorkomen. Ondersteuning en verzending zijn niet vereist. Als het element wordt meegestuurd, moet het aan de overige afspraken van de standaard voldoen. |
Toelichting bij een verrichting: de toelichting mag worden meegestuurd, maar systemen hoeven deze niet te ondersteunen. |
|
0..1 Required |
Verzender en ontvanger moeten het element ondersteunen. Een bekende waarde wordt één keer meegestuurd en verwerkt. Bij een bewust ontbrekende waarde kan, indien toegestaan, een NullFlavor worden gebruikt. Als het element niet van toepassing is, mag het ontbreken. |
E-mailadres patiënt: bekend betekent meesturen; onbekend betekent een reden voor ontbreken meesturen indien toegestaan. Heeft de patiënt geen e-mailadres, dan mag het element ontbreken. |
|
1..1 Required |
Het element moet precies één keer voorkomen in het bericht en door verzender en ontvanger worden ondersteund. Bij een bekende waarde bevat het de inhoudelijke waarde; anders bevat het, indien toegestaan, een NullFlavor. |
Geboortedatum: bekend betekent de datum meesturen; onbekend betekent het element met een toegestane reden voor ontbreken meesturen. |
|
1..1 Mandatory |
Het element moet precies één keer voorkomen en een inhoudelijke waarde bevatten. Het mag niet ontbreken en NullFlavor is niet toegestaan. |
BSN: alleen voor een usecase waarin is gegarandeerd dat iedere betrokken patiënt een BSN heeft. Er wordt precies één geldig BSN meegestuurd. |
|
0..* Optional / Required |
Het element mag nul, één of meerdere keren voorkomen. De verplichtingen van Optional en Required zijn gelijk aan die bij 0..1, maar gelden voor alle beschikbare en relevante voorkomens. |
Contactgegevens: er kunnen geen, één of meerdere telefoonnummers of e-mailadressen worden uitgewisseld, afhankelijk van de usecase en conformance. |
|
1..* Required / Mandatory |
Het element moet minimaal één keer voorkomen en mag vaker voorkomen. Bij Required mag een verplicht voorkomen, indien toegestaan, een reden voor ontbreken bevatten. Bij Mandatory moet ieder voorkomen een inhoudelijke waarde bevatten. |
Resultaten: de usecase vereist ten minste één resultaat en staat meerdere resultaten toe; per resultaat geldt de gekozen conformance. |
Conditional conformance
Voorbeeld MedicatieafspraakStopType:
In de informatiestandaard Medicatieproces bevat de medicatieafspraak een conditional conformance voor het element MedicatieafspraakStopType (0..1C).
Het stoptype wordt uitsluitend in het bericht ingevuld wanneer een medicatieafspraak wordt gestopt of geannuleerd. In deze gevallen geldt kardinaliteit van 1..1 en conformance R.
|
In het geval een |
➜ |
1..1 R |
Indien een medicatieafspraak niet wordt gestopt of geannuleerd is het niet toegestaan om het stoptype in te vullen. Hier geldt kardinaliteit van 0..0 en conformance NP.
|
In alle andere |
➜ |
0..0 |
Gebruik in combinatie met hiërarchieën van elementen (zoals containers of groepen)
Om elementen hiërarchisch te kunnen rangschikken wordt een container (ook wel groep genoemd) gebruikt. Een container kan een of meerdere elementen, containers en/of verwijzingen bevatten.
Containers kunnen voor verschillende doeleinden worden toegepast.
Cluster van elementen definiëren
Een container kan een aantal elementen bevatten die elkaar betekenis verlenen; los van elkaar hebben deze elementen veelal onvoldoende betekenis.
Een typisch voorbeeld is container Adresgegevens. Meerdere elementen moeten ingevuld zijn om een volledig adres vast te leggen; los van elkaar hebben de elementen onvoldoende betekenis. Alleen als deze gegevens in relatie tot elkaar worden weergegeven, kan een adres betekenisvol geïnterpreteerd worden.
Context toevoegen
Alleen als de container Adresgegevens binnen een andere container wordt geplaatst, wordt duidelijk op wie het adres betrekking heeft. Zo verleent de container Patiënt in het onderstaande voorbeeld context aan de container Adresgegevens. Bij het weergeven van de adresgegevens moet deze context ook getoond worden om ze betekenisvol te laten zijn.Toepassen van specifieke kardinaliteiten en/of conformance
Voorbeeld element: Patiënt
Door aan een container een bepaalde kardinaliteit en conformance toe te kennen, hebben deze effect op alle elementen binnen de container.
In het onderstaande voorbeeld zorgt de kardinaliteit van de container Adresgegevens ervoor dat je meerdere adressen voor een patiënt vast kunt leggen.
Een Patiënt heeft maar één set Naamgegevens, maar kan meerdere adressen hebben. Ook kan een Patiënt meerdere telefoonnummers en emailadressen hebben. Door deze structuur van containers met kardinaliteiten, kun je voor een Patiënt een keer de Naamgegevens invullen en meerdere clusters van Adresgegevens, Telefoonnummers en EmailAdressen.
Zou de kardinaliteit van Naamgegevens niet 1..1 maar 0..1 zijn, dan hoeft Naamgegevens niet ingevuld te worden. Als je Naamgegevens wel invult, dan moet tenminste de container Geslachtsnaam een waarde bevatten.
NullFlavor
Tijdstip: Voor het sturen van een bericht is het verplicht gesteld dat het voorschrijftijdstip aanwezig is met conformance en kardinaliteit 1..1R. Helaas weet de verzender tijdens het opstellen van het bericht niet meer wanneer de medicatie is voorgeschreven en kan daardoor het voorschrijftijdstip niet invullen. Vanwege 1..1R zal dit element geen waarde bevatten en moet de NullFlavor “unknown” worden meegestuurd in het bericht.
Opleidingsniveau: Het element opleidingsniveau met kardinaliteit en conformance 1..1R bevat een waardelijst. Van een persoon is bekend dat deze de huishoudschool heeft gevolgd, maar deze waarde komt niet voor in deze lijst. In dit geval kan gebruik worden gemaakt van de NullFlavor “OTH”. In combinatie met <originalText> kan de opleiding als vrije tekst ingevuld worden en kan de informatie alsnog met het bericht mee worden gestuurd.
BSN: Een patiënt heeft zorg nodig maar het is niet mogelijk de BSN te achterhalen. Doordat de identificatie mandatory (1..1 M) is en daarom een waarde moet hebben, is het NIET toegestaan om een NullFlavor in te vullen. Er kan daarom geen bericht uitgestuurd worden totdat het BSN bekend is.
Versie geschiedenis/ Release notes