vpk:Vprepub-4.0 Handleiding Conformancelab

Uit informatiestandaarden
Ga naar: navigatie, zoeken


Introductie Conformancelab

Voor het testen en kwalificeren van FHIR-implementaties van informatiestandaarden biedt Nictiz het Conformancelab-platform aan van Interoplab. Nictiz stelt op dit platform testscripts beschikbaar die overeenkomen met de functionele testscripts bij een informatiestandaard.

Testopzet client

Bij testen waar de FHIR-client het testobject is ziet de testopstelling er als volgt uit:

Conformancelab client.jpg

De opzet is hier als volgt:

  • De client is het testobject van de leverancier.
  • Conformancelab staat in het midden en stelt testen/testscripts, logging, validatie en overzicht beschikbaar.
  • Daarachter staat een FHIR-server (HAPI FHIR) met de FHIR-profielen en testberichten passend bij de testscripts.

Testopzet server

Bij testen waar de FHIR-server het testobject is ziet de testopstelling er als volgt uit:

Conformancelab server.jpg

De opzet is hier als volgt:

  • Conformancelab stelt testen/testscripts, logging, validatie en overzicht beschikbaar. Daarnaast is Conformancelab ook een FHIR-client die interacties kan versturen volgens de testscripts.
  • De server is het testobject van de leverancier.

Conformancelab-account

Als je gebruik wilt maken van Conformancelab is het aanmaken van een account nodig, ga hiervoor naar https://my.interoplab.eu/auth/register

Uitvoeren van testen

Leveranciers kunnen zelfstandig de scripts die Nictiz publiceert uitvoeren en de resultaten bekijken. Hoe dit moet, wordt uitgelegd in de applicatie van Conformancelab zelf door middel van een in-app tutorial.

  • Om toegang te krijgen tot pre-kwalificatietesten moet de tegel "Conformance - Test" worden geselecteerd.
  • Om toegang te krijgen tot kwalificatietesten moet de tegel "Conformance - Cert" worden geselecteerd.

De materialen zijn als volgt georganiseerd:

Sending-XIS versus Receiving-XIS
De scripts om een zendend XIS te testen zijn te vinden in de tegels beginnend met 'Sending-XIS', de scripts om een ontvangend XIS te testen zijn te vinden in de tegels beginnend met 'Receiving-XIS'.
Receiving-XIS versus Receiving-XIS-NoManifest
De testscripts via de tegel 'Receiving-XIS' verwachten dat het ontvangende XIS de Composition-resources ophaalt met de $document-operation. Wanneer het ontvangende XIS dat niet doet, dienen de scripts via de tegel 'Receiving-XIS-NoManifest' gebruikt te worden. (Deze scripts missen de test op de allerlaatste update van de Task, dit houdt verband met een tekortkoming in FHIR TestScipt. Zie ticket EOVDR-201 voor details.)
-negotiation versus -handoff

eOverdracht kent een aanmeldfase en een overdrachtfase. De scripts die eindigen op '-negotiation' testen de aanmeldfase, de scripts die eindigen op '-handoff' testen de overdrachtfase.

De aanmeldfase-scripts voor het ontvangende XIS zijn bovendien opgeknipt in twee of drie delen, waarbij de 'knip' telkens zit na het ophalen van de Composition-resource en waar in de workflow typisch een handmatige actie verwacht wordt. Dit is gedaan vanwege een tekortkoming in FHIR TestScript, dat zou falen op het moment dat de resources opgehaald worden waarnaar de Composition verwijst (zie ticket EOVDR-201 voor details.) Door de scripts op te knippen, kan de tester het script starten op het moment dat de resources zijn opgehaald en de volgende stap in het proces vereist is.

Uitvoeren van testen voor het ontvangend XIS (receiving XIS)

Bij het starten van een test voor het ontvangend XIS moet de volgende informatie worden opgegeven:

  • variabele notificationEndpoint: Het endpoint voor de notificatie, als volwaardige URL (Conformancelab speelt de rol van client voor de notificatie). Let op: de URL mag niet afgesloten worden met '/'.

Uitvoeren van testen voor het zendend XIS (sending XIS)

Bij het testen van een zendend XIS wordt tijdens het starten van een test om twee Origin's (client in RESTful-termen) en twee Destination's (servers in RESTful-termen) gevraagd. Hier moet de volgende informatie worden gebruikt:

  • Variabele task-id: de Task.id van de eOverdracht-Task die is klaargezet bij het eigen Test System.

Mock-authenticatie met vaste tokens

De authenticatie-stap is geen onderdeel van de Conformancelab-test. Authenticatie van de FHIR-requests via een Bearer-token wordt op Conformancelab nagebootst door het gebruik van vaste, niet-verlopende tokens.

Het gebruik hiervan verschilt per rol die wil testen of kwalificeren:

  • Voor clients die getest worden, is er per testpatiënt uit het scenario een Bearer-token gedefinieerd. De client dient deze tokens te gebruiken in elke request naar kwalificatiesimulator.
  • Bij servers die getest worden, wordt er tijdens het aanmaken van de test gevraagd om een Bearer-token voor elke testpatiënt. Conformancelab zal deze tokens gebruiken in de requests naar de server die getest wordt. Standaard zijn hier dezelfde tokens ingevuld die ook voor client-testen gebruikt worden, het staat gebruikers vrij om deze tokens over te nemen.
    Let op: De tokens moeten gedefinieerd worden als Bearer<spatie>[token], bijvoorbeeld Bearer 0aed465d-aab0-4417-9b3c-e6f635892fea (zonder aanhalingstekens).

Conformancelab Bearer token.png

Aandachtspunten

Volgorde van tests

Het kwalificatiescript vraagt om een vaste volgorde voor het sturen van requests, waar de informatiestandaard mogelijk meer ruimte laat om dit ook in een andere volgorde te doorlopen. Het is daarom van belang om bij het uitvoeren van testen op de kwalificatiesimulator de interacties uit te voeren in dezelfde volgorde waarin ze worden gevraagd in de testscripts.

Ophalen van references

Antwoorden uit de kwalificatiesimulator bevatten soms references naar extra informatie. Een voorbeeld uit de BGZ: <reference value="Practitioner/medmij-bgz-practitioner-ts-02"/> Deze references zijn los op te halen bij de kwalificatiesimulator, maar omdat er een bepaalde volgorde van interacties wordt gevraagd, kan het tussendoor ophalen van references ervoor zorgen dat een test faalt. We raden in dat geval aan om: De references pas op te halen als de test op de kwalificatiesimulator is afgelopen. Het ophalen van references zal er dan niet meer voor zorgen dat testen falen.

Indien dat niet mogelijk is:

Testen 2 keer uit te voeren:

  • De test één keer uit te voeren zonder het ophalen van references. Het doel hierbij is om aan te tonen dat de applicatie de juiste interacties kan versturen die worden gevraagd in het testscript.
  • De test een tweede keer uit te voeren, maar dan zonder dat hiervoor een testrun is gestart op de kwalificatiesimulator. Tijdens deze test kunnen dan wel alle references tussendoor worden opgehaald. Het doel van deze test is om aan te tonen dat de applicatie goed om kan goed met de inhoud verstuurd tijdens de test, inclusief de los op te halen references.

Infrastructuur

Bij het gebruik van Conformancelab willen we de volgende punten onder de aandacht brengen:

  • Conformancelab maakt geen gebruik van tweezijdige TLS-authenticatie.

Vragen over uitvoer van testen

Indien er vragen zijn over uitgevoerde testen is het voor ons van belang om gericht te kunnen terugvinden welke interacties er uitgewisseld zijn. Bij contact hierover vragen wij daarom om (indien mogelijk) een testrun uit te voeren op de kwalificatiesimulator. Stuur bij vragen daarover altijd de link mee van de uitgevoerde testrun. Deze heeft het formaat: https://my.interoplab.eu/uc-nictiz/tests/instance/<unieke identifier>

Warnings tijdens profielvalidatie

In de testen voor Versturende XIS'en worden het Aanmeldbericht en Overdrachtbericht als FHIR document Bundle opgehaald. Op deze Bundle wordt vervolgens profielvalidatie toegepast. Op dit moment levert dat een groot aantal warnings op, het merendeel in de vorm van: Error in discriminator at Composition.section:[...]: no children, no type. Deze warnings lijken onterecht gegeven te worden en kunnen worden genegeerd.

Overige warnings moeten beschouwd worden als aanwijzing dat er een probleem is met de implementatie, maar dit hoeft niet daadwerkelijk het geval te zijn. De tester moet warnings dus kritisch bekijken en in staat zijn deze te verklaren.

Falende tests voor de "overlap BgZ"-testen

In de testen voor Versturende XIS'en worden de Composition resources voor het Aanmeldbericht en het Overdracht gevalideerd tegen de profielen voor de gehele eOverdracht. Dit betekent dat de validatie zal falen in situaties waarbij slechts de set van overlappende zibs met de BgZ wordt getest. Het resultaat van de validatiestap dient daarom kritisch geïnspecteerd te worden indien deze scenario's getest worden.

Variabele T-datum

Test- en kwalificatiescenario's werken vaak met relatieve datums, die ervoor zorgen dat scenario's niet gedateerd raken. Een datum 'volgende week' blijft zodoende altijd in de toekomst. Om dit te vertalen naar concrete datums die gebruikt worden tijdens het testen en kwalificeren wordt gewerkt met de zogenaamde T-datum. De betekenis van deze T-datum en waar een deelnemer rekening mee moet houden bij het gebruik hiervan verschilt per rol. Voor iedere rol volgt hierna verdere uitleg.

Server: beschikbaarstellen (serve) en client: sturen (send)

Leveranciers die de inhoudelijke gegevens van test- en kwalificatiescenario's in hun bronsysteem invoeren ter voorbereiding op de Conformancelab-tests voor beschikbaarstellen (serve) of sturen (send), bepalen een T-datum die zij hanteren bij het invoeren van alle gegevens.

Wanneer de bepaalde T-datum bijvoorbeeld '2022-01-01' is en de kwalificatiescripts spreken van 'T + 400D', berekent de leverancier de datum die 400 dagen ná de bepaalde T-datum ligt. Die datum wordt vervolgens in het bronsysteem ingevoerd bij het betreffende veld – in dit voorbeeld dus '2023-02-05'.

Mogelijke eenheden die gebruik worden bij het verrekenen van de T-datum zijn 'D' (dagen), 'M' (maanden) en 'Y' (jaren).

Wanneer er datums gebruikt worden in de testscenario's, die invloed hebben op de Conformancelab-scripts, bijvoorbeeld in de zoekparameters van het scenario "Persoon 1 vraagt alle meetwaarden op in een periode ('T – 30D t/m T')", wordt ook bij het uitvoeren van het betreffende Conformancelab-script gevraagd de bepaalde T-datum in te voeren. Conformancelab berekent vervolgens zelf de exact benodigde datums. Als de T-datum van het Conformancelab-script overeenkomt met die van de ingevoerde gegevens, worden de gevraagde resources opgeleverd.

De verwachting is dat een leverancier de gebruikte T-datum vermeldt bij het aanleveren van de materialen en dat deze datum correspondeert met de aangeleverde screenshots en Conformancelab-testrun(s).

Server: ontvangen (receive) en client: ophalen (retrieve)

Leveranciers die gegevens ophalen of ontvangen tijdens het gebruik van Conformancelab, ontvangen testberichten van HAPI FHIR. Elke maandag worden de gegevens op HAPI FHIR ververst, waarbij alle datums opnieuw worden berekend met de datum van die maandag als referentie.

Als een client gegevens ophaalt in de week van '2022-08-01', zal, indien het kwalificatiescript spreekt van een veld met als datum 'T + 400D', er een resource opgehaald worden waarin dat betreffende veld gevuld is met de datum '2023-09-05'.

Wanneer er datums gebruikt worden in de testscenario's, die invloed hebben op de Conformancelab-scripts, bijvoorbeeld in de zoekparameters van het scenario "Persoon 1 vraagt alle meetwaarden op in een periode ('T – 30D t/m T')", wordt ook bij het uitvoeren van het betreffende Conformancelab-script gevraagd de T-datum in te voeren. Hier dient dus de datum van de maandag uit de testweek te worden ingevuld. Conformancelabberekent vervolgens zelf de exact benodigde datums. Als de T-datum van het Conformancelab-script overeenkomt met de datum die gebruikt is tijdens het verversen van HAPI FHIR, worden de gevraagde resources opgeleverd.

De verwachting is dat een client tijdens kwalificatie in screenshots datums laat zien die corresponderen met gegevens die opgehaald zijn tijdens de aangeleverde Conformancelab-testrun(s).

Tijdzones

In de FHIR-datatypes dateTime (indien uren en minuten worden gebruikt) en instant is het verplicht om een tijdzone in te vullen. De tijdzone kan daarom niet worden weglaten uit de testgegevens. De testopzet heeft helaas de beperking dat de Nederlandse tijdzone niet berekend kan worden aan de hand van de T-datum. De tijdzone die nu in onze testgegevens staat is daarom de Nederlandse tijdzone bij de eerste keer invullen van dit scenario met concrete datums. Dit komt niet per definitie overeen met de geldende tijdzone in Nederland voor de (in een testrun gebruikte, uiteindelijke) datum. In productie moet gerekend worden op een juiste tijdzone en het is dan ook juist om deze tijdzone gewoon te interpreteren, dit betekent dat de gegevens mogelijk soms een uur later of vroeger zijn dan in het addendum staat. Dit is geen reden voor afkeuren tijdens kwalificatie.