VNG-Realisatie / StUF-Standaarden

Repository met de issues uit en in de oude Drupal community omgeving en de nieuwe issues
https://vng-realisatie.github.io/StUF-Standaarden/
6 stars 3 forks source link

Semantiek van het element tijdsvakgeldigheid #28

Closed melsk-r closed 4 months ago

melsk-r commented 1 year ago

Van een van de leveranciers ontving ik de volgende vraag:

Wat is de semantiek van het element tijdsvakgeldigheid in de relatie VBOPND en wat is de semantiek van het element tijdsvakgeldigheid op de gerelateerde PND entiteit?

Mijn antwoord ...

Hier gaat de volgende alinea van paragraaf 2.3 van de StUF standaard op in:

image

Zoals je ziet speelt bij relaties het element 'tijdvakRelatie' nog een belangrijke rol waardoor je eigenlijk 2 elementen hebt waarmee iets wordt gezegd over de geldigheid:

image

Met 'tijdvakGeldigheid' zeg je iets over de geldigheid van de elementen van een entiteit of relatie entiteit (hier bijv. brondocument) en met 'tijdvakRelatie' zeg je iets over de geldigheid van de relatie tussen de fundamentele entiteit en zijn gerelateerde entiteit.

... leidde bij hen toch nog tot wat onduidelijkheid:

"Met 'tijdvakGeldigheid' zeg je iets over de geldigheid van de elementen van een entiteit of relatie entiteit (hier bijv. brondocument) en met 'tijdvakRelatie' zeg je iets over de geldigheid van de relatie tussen de fundamentele entiteit en zijn gerelateerde entiteit."

Ik heb de (één van de twee) relaties bij een verblijfsobject er bij gepakt om het helder te krijgen. Ik zie niet hoe in de afbeelding 'tijdvakGeldigheid' op brondocument werkt. Stel dat ik een verblijfsobject aan een pand koppel, dan noemt het deze type-relatie TGOPND met de hieronderstaande XSD.

<complexType name="TGOPND-kennisgeving">
<complexContent>
<restriction base="BG:TGOPND-basis">
<sequence>
<element name="gerelateerde" type="BG:PND-kerngegevensKennisgeving" nillable="true"/>
<element name="inOnderzoek" type="StUF:StatusMetagegevenNoValue" nillable="true" minOccurs="0"/>
<element name="brondocument" type="BG:BrondocumentBGR" minOccurs="0"/>
<element ref="StUF:tijdvakRelatie" minOccurs="0"/>
<element ref="StUF:tijdvakGeldigheid" minOccurs="0"/>
<element ref="StUF:tijdstipRegistratie" minOccurs="0"/>
<element ref="StUF:extraElementen" minOccurs="0"/>
</sequence>
<attribute ref="StUF:entiteittype" use="required" fixed="VBOPND"/>
<attribute ref="StUF:scope" use="prohibited"/>
<attribute ref="StUF:verwerkingssoort" use="required"/>
</restriction>
</complexContent>
</complexType>

Dan lees ik met jouw snippet 'alinea van paragraaf 2.3' uit de standaard 'tijdvakRelatie' als de de levensduur van de relatie (geboortedatum tot een eventuele sterfdag) en 'tijdvakGeldigheid' als begin- en einddatum van dit voorkomen. Verder zijn er geen kenmerken die kunnen aanwijzen wat dit voorkomen van de relatie-entiteit dan is (geen volgnummer etc.). (Toch?) Het probleem dat wij ervaren bij het ontbreken van een datum, dat het StUF-testplatform deze melding heeft:

STV0000069: BeginGeldigheid van een relatie in oude situatie en EindRelatie van een relatie in oude situatie moeten gelijk zijn. -- Bij het beeindigen van een relatie entiteit mag alleen het element <StUF:eindRelatie> een nieuwe waarde krijgen in het eerste <object> element, In tweede <object> element wordt een relatie-entiteit opgenomen met de attributes StUF:entiteittype, StUF:verwerkingssoort=”E” en StUF:noValue=”geenWaarde” en een lege elementinhoud.

In onze WAS staat:

<q1:vbo.maaktDeelUitVan d2p1:entiteittype="VBOPND" d2p1:verwerkingssoort="E">
<q1:gerelateerde d2p1:entiteittype="PND" d2p1:verwerkingssoort="I" d2p1:sleutelVerzendend="1111300000000123">
<q1:identificatie>1111300000000123</q1:identificatie>
...
<d2p1:tijdvakGeldigheid>
<d2p1:beginGeldigheid d2p1:noValue="geenWaarde" xsi:nil="true"/>
<d2p1:eindGeldigheid d2p1:noValue="geenWaarde" xsi:nil="true"/>
</d2p1:tijdvakGeldigheid>
<d2p1:tijdstipRegistratie d2p1:noValue="geenWaarde" xsi:nil="true"/>
</q1:vbo.maaktDeelUitVan>

In onze WORDT staat:

<q1:vbo.maaktDeelUitVan d2p1:entiteittype="VBOPND" d2p1:verwerkingssoort="E" d2p1:noValue="geenWaarde" xsi:nil="true"/>

Dus blijkbaar miste ik ergens al een referentie voor 'tijdvakGeldigheid' want die is leeg, maar beide tijdvakken (-Relatie en -Geldigheid) zijn optioneel volgens de XSD. Het weglaten van deze optionele-nodes mag niet (lees: de foutmelding blijft dan hetzelfde in het StUF-testplatform). Ik heb nu wel een beter idee wat de twee tijdvakken in de relatie betekenen, maar waarom treedt deze melding op terwijl:de 'tijdvakRelatie' helemaal niet genoemd wordt in onze WAS;de tijdvakken optioneel zijn;er geen identificerende kenmerken voor een relatie zijn.

Daarom nog het volgende ter verduidelijking:

Ik zie een hoop verwarring en ik grijp even terug op een wat sprekender voorbeeld, de relatie ‘BG:heeftAlsNationalitiet’ in de entiteit ‘NPS’ (Natuurlijk Persoon), om het goed uit te kunnen leggen. Vergeef me, ik bouw het verhaal beetje bij beetje vanaf de basis op.

Ik heb de relatie even in de image hieronder gevisualiseerd samen met enkele van de elementen van de entiteit waartoe de relatie behoort zodat de context duidelijk is:

image

Je ziet hier de elementen ‘BG:inp.bsn’, ‘BG:authentiek’, ‘BG:anp.identificatie’, ‘BG:sub.typering’, ‘BG:inp.a-nummer’, ‘BG:geslachtsnaam’, ‘BG:voorvoegselGeslachtsnaam’, ‘BG:voorletters’ en ‘BG:voornamen’ van de entiteit NPS. De elementen ‘StUF:tijdvakGeldigheid’ en ‘StUF:tijdstipRegistratie’ zeggen iets over deze elementen. Namelijk in welk tijdvak de waarde die ze hebben geldig was en het tijdstip waarop die waarde is ingegeven. De huidig geldende waarde van de genoemde elementen heeft daarbij nog geen waarde voor ‘StUF:tijdvakGeldigheid/StUF:eindGeldigheid’ deze zijn immers nog geldig. Stel de waarde van het element ‘BG:geslachtsnaam’ wijzigt dan wordt er aan die waarde ook een nieuwe waarde voor ‘StUF:tijdvakGeldigheid’ en ‘StUF:tijdstipRegistratie’ gekoppeld. Die hebben dan dus betrekking op de nieuwe waarde van ‘BG:geslachtsnaam’. Aan de oude waarde van ‘BG:geslachtsnaam’ is nog steeds dezelfde waarde voor ‘StUF:tijdvakGeldigheid/StUF:beginGeldigheid’ en ‘StUF:tijdstipRegistratie’ gekoppeld maar nu krijgt ‘StUF:tijdvakGeldigheid//StUF:eindGeldigheid’ ook een waarde en wel dezelfde waarde als ‘StUF:tijdvakGeldigheid/StUF:beginGeldigheid’ die aan de nieuwe waarde van ‘BG:geslachtsnaam’ is gekoppeld.

Volgens mij is het tot nu toe nog wel duidelijk.

Nu de relatie ‘BG:heeftAlsNationaliteit’. Deze heeft een aantal attributen die geen metadata zijn en echt informatie toevoegen aan de relatie, zoals ‘BG:inp.redenVerkrijging’ en ‘BG:inp.redenVerlies’. Ook hier zeggen de elementen ‘StUF:tijdvakGeldigheid’ en ‘StUF:tijdstipRegistratie’ in welk tijdvak de waarde die ze hebben geldig was en het tijdstip waarop die waarde is ingegeven. ‘BG:inp.redenVerkrijging’ zal niet gauw een andere waarde krijgen denk ik tenzij het een correctie betreft. In eerste instantie zal ‘BG:inp.redenVerlies’ niet vlug een waarde hebben maar een persoon kan op een gegeven moment een nationaliteit verliezen waarbij dit element een waarde krijgt. Op dat moment zullen de elementen ‘StUF:tijdvakGeldigheid/StUF:beginGeldigheid’ en ‘StUF:tijdstipRegistratie’ voor dat element een waarde krijgen.

Ook dit lijkt me redelijk duidelijk en ook dat we op deze wijze een overzicht kunnen maken van wanneer welke elementen welke waarde hebben gekregen en wanneer deze is gewijzigd.

Nu het element ‘StUF:tijdvakRelatie’. Sommige relaties van entiteiten zijn eindig andere niet. Als je kijkt naar de relatie ‘BG:inp.heeftAlsKinderen’ dan lijkt me duidelijk dat die relatie nooit zal eindigen. De kinderen van de betreffende persoon zullen altijd zijn kinderen blijven of de persoon of diens kinderen nu overlijden of niet. Dat is ook de reden waarom de relatie ‘BG:inp.heeftAlsKinderen’ niet beschikt over het element ‘StUF:tijdvakRelatie’. De relatie ‘BG:inp.heeftAlsNationaliteit’ is echter wel eindig. Op het moment dat een persoon een nationaliteit verliest moet ook de relatie worden beëindigd. Dat is precies waar het element ‘StUF:tijdvakRelatie’ om de hoek komt kijken. Zolang de relatie niet is beëindigd heeft alleen het element ‘StUF:tijdvakrelatie/StUF:beginRelatie’ een waarde. Zodra de relatie is beëindigd krijgt ook ‘StUF:tijdvakrelatie/StUF:eindRelatie’ een waarde. In de snippet die ik je stuurde stond:

‘StUF:beginRelatie‘ (ontstaansdatum) en ‘StUF:eindRelatie‘ (beëindigingsdatum) zijn geen metagegevens, maar gewone eigenschappen van de relatie, …

Dat betekent dat als deze elementen een waarde krijgen ook moet worden aangegeven wanneer ze die waarde hebben gekregen en in welk tijdvak die waarde die ze hebben geldig is. ‘StUF:tijdvakGeldigheid/StUF:beginGeldigheid’ en ‘StUF:tijdstipRegistratie’ moeten dus weer een waarde krijgen.

Dan even terug naar jouw voorbeeld. De WAS situatie roept bij mij met het bovenstaande in mijn achterhoofd al vragen op:

<q1:vbo.maaktDeelUitVan d2p1:entiteittype="VBOPND" d2p1:verwerkingssoort="E">
<q1:gerelateerde d2p1:entiteittype="PND" d2p1:verwerkingssoort="I" d2p1:sleutelVerzendend="1111300000000123">
<q1:identificatie>1111300000000123</q1:identificatie>
...
<d2p1:tijdvakGeldigheid>
<d2p1:beginGeldigheid d2p1:noValue="geenWaarde" xsi:nil="true"/>
<d2p1:eindGeldigheid d2p1:noValue="geenWaarde" xsi:nil="true"/>
</d2p1:tijdvakGeldigheid>
<d2p1:tijdstipRegistratie d2p1:noValue="geenWaarde" xsi:nil="true"/>
</q1:vbo.maaktDeelUitVan>

Waarom hebben ‘StUF:tijdvakGeldigheid/StUF:beginGeldigheid’ en ‘StUF:tijdstipRegistratie’ hier geen waarde? Waarom ontbreekt het element ‘StUF:tijdvakRelatie’ met een ‘StUF:beginRelatie’ en een ‘StUF:eindRelatie’ met waarde?

De melding die de STP geeft

STV0000069: BeginGeldigheid van een relatie in oude situatie en EindRelatie van een relatie in oude situatie moeten gelijk zijn. -- Bij het beeindigen van een relatie entiteit mag alleen het element <StUF:eindRelatie> een nieuwe waarde krijgen in het eerste <object> element, In tweede <object> element wordt een relatie-entiteit opgenomen met de attributes StUF:entiteittype, StUF:verwerkingssoort=”E” en StUF:noValue=”geenWaarde” en een lege elementinhoud.

is om die reden wel verklaarbaar. Eerlijk gezegd had ik iets verwacht als

<BG:vbo.maaktDeelUitVan StUF:entiteittype="VBOPND" StUF:verwerkingssoort="E">
<BG:gerelateerde StUF:entiteittype="PND" StUF:verwerkingssoort="I" StUF:sleutelVerzendend="1111300000000123">
<BG:identificatie>1111300000000123</BG:identificatie>
...
</BG:gerelateerde>
<StUF:tijdvakRelatie>
<StUF:beginRelatie>19960303</StUF:beginRelatie>
<StUF:eindRelatie>20230110</StUF:eindRelatie>
</StUF:tijdvakRelatie>
<StUF:tijdvakGeldigheid>
<StUF:beginGeldigheid>20230110</StUF:beginGeldigheid>
<StUF:eindGeldigheid StUF:noValue="geenWaarde" xsi:nil="true"/>
</StUF:tijdvakGeldigheid>
<StUF:tijdstipRegistratie>20230112</StUF:tijdstipRegistratie>
</BG:vbo.maaktDeelUitVan>

Ik heb hem niet tegen de STP aan gehouden dus er zou nog een foutje in kunnen staan en natuurlijk zijn de gekozen datums verzonnen maar het geeft wel aan wat het ongeveer zou moeten zijn. De WORDT situatie lijkt mij trouwens in orde.

Ik adviseer je om paragraaf 5.2.6 van de StUF standaard nog eens heel goed door te nemen. Met name de tabel is voor mij altijd heel behulpzaam. De andere tabellen in dit hoofdstuk trouwens ook.