Skip to end of metadata
Go to start of metadata

Inleiding

Op deze pagina staan de stroomdiagrammen behorende bij de functie Delen. De functie is een spiegelbeeld van de functie Verzamelen. Daarom is er een aantal wezenlijke verschillen. Op het niveau van de usecase zijn dat de volgende:

  • Voor de start van de usecase zou de Persoon moeten kunnen volstaan met het aanwijzen van die informatie in zijn Dossier die hij zou willen delen met een nader te benoemen Persoon, en er daarbij vanuit mogen gaan dat de Dienstverlener persoon daarbij weet welke Gegevensdienst daarbij aan de orde is.
  • In tegenstelling tot in de functie Verzamelen moet de Aanbieder in de gelegenheid worden gesteld om zich al dan niet open te stellen voor ontvangst van de betreffende informatie. De Dienstverlener aanbieder moet na authenticatie van de Persoon kunnen bepalen of de betreffende informatie welkom is bij de betreffende Aanbieder. Deze controle op de ontvankelijkheid zal geautomatiseerd plaatsvinden, met het oog op de synchrone gebruikservaring, maar de wijze van implementatie wordt vrijgelaten.
  • Juridisch gezien is er geen expliciete toestemming van de Persoon vereist aan de Aanbieder voor het mogen ontvangen van de gezondheidsinformatie; die volgt uit de verstrekking door de Persoon. Er zijn wel toestemmingsvereisten in de relatie Persoon-Dienstverlener persoon (inzake het mogen verstrekken van de gezondheidsinformatie), maar daarop ziet reguliere wet- en regelgeving toe. Niettemin wordt er, net als in de functie Verzamelen, om een bevestiging gevraagd van de Persoon.
  • Aan het eind van de usecase wordt, indien de Aanbieder ervoor ontvankelijk bleek, de betreffende informatie door de Dienstverlener persoon geplaatst bij de Aanbieder, via de Dienstverlener aanbieder. Net zoals in de functie Verzamelen geen nadere eisen worden gesteld aan hoe het ophalen van de informatie door de Dienstverlener aanbieder bij de Aanbieder geschiedt, geldt dat in de functie Delen ook voor de plaatsing. Van belang is slechts dat de Persoon ervan kan uitgaan dat de Aanbieder kennis kan hebben genomen van de betreffende informatie. Hoe dat wordt geborgd is niet triviaal, maar wordt gelaten aan de voorzieningen die de Dienstverlener aanbieder treft en de Dienstverleningsovereenkomst die hij dienaangaande aangaat met de Aanbieder.

In de platen hieronder staat het stroomdiagram van de functie Delen:

  • De happy flow van de usecase Delen;
  • De implementatie van de usecase Delen;
  • De implementatie van het front- en backchannelverkeer.

De stroomdiagrammen tonen alleen de situatie waarin alle acties slagen tot en met het uiteindelijke verzamelen van de gezondheidsinformatie (de zogenaamde happy flow). De oranje banen horen, conform de MedMij-huisstijl tot het Persoonsdomein, de blauwe tot het Aanbiedersdomein.

Businesslaag

Menige actie in het stroomdiagram is gekleurd weergegeven. De lichtgrijs gekleurde acties vormen samen de autorisatieflow; de zachtgeel gekleurde acties vormen samen de authenticatieflow.

Omdat het stroomdiagram alleen de happy flow bevat, worden zijn daarna de uitzonderingen beschreven.

Stroomdiagram

In elke voltrekking van de in het diagram beschreven flow is steeds sprake van één van elk van de bovenaan genoemde rollen.

De totale procesgang van de UC Delen kent de volgende stappen:

De ontvankelijkheidsvoorwaarde is een aspect van de regie, niet van de uitwisseling. De voorwaarde geeft de Aanbieder ruimte om deel te nemen in aan de Persoon gegeven regie. Omdat echter bestaande implementatie-architecturen veelal uitwisseling centraal zetten, en niet regie, hebben zij moeite de beschikbaarheidsvoorwaarde in de regiefase te implementeren. Daarom biedt het MedMij Afsprakenstelsel vooralsnog de gelegenheid om deze in de uitwisselingsfase te implementeren. Deelnemers wordt echter aangeraden om, met het oog op de toekomst, in hun implementatie-architecturen een passend onderscheid tussen regie en uitwisseling te maken en de eerste geleding de tweede te laten sturen.

Uitzonderingen op de Happy flow van de usecase

In onderstaande tabel staan de uitzonderingssituaties beschreven. Alle worden door de Dienstverlener aanbieder ontdekt. Om te voorkomen dat de Dienstverlener persoon informatie over het bestaan van behandelrelaties verkrijgt zonder dat (al) bevestiging is gegeven, moet het onderscheid tussen de uitzonderingen 2, 3 en 4 niet te maken zijn door de Dienstverlener persoon.

nr.uitzonderingactievervolg
nr.uitzonderingactievervolg
UC Delen 1Dienstverlener aanbieder vindt het ontvangen verzoek ongeldig.Dienstverlener aanbieder informeert Dienstverlener persoon over deze uitzondering. Dienstverlener persoon informeert daarop Persoon hierover.Allen stoppen de flow onmiddellijk na geïnformeerd te zijn over de uitzondering.
UC Delen 2Dienstverlener aanbieder kan de identiteit van de Persoon niet vaststellen.Dienstverlener aanbieder informeert Dienstverlener persoon dat delen niet toegelaten wordt.


Allen stoppen de flow onmiddellijk na geïnformeerd te zijn over de uitzondering.

UC Delen 3Dienstverlener aanbieder stelt op enig moment vast dat betreffende informatie van Persoon bij Aanbieder niet welkom is. Hiervan is in elk geval sprake indien hetzij:
  • er geen behandelrelatie is aan te wijzen als grondslag voor het delen;
  • Persoon nog geen zestien jaar oud is.

Zie de toelichting op Beschikbaarheids- en ontvankelijkheidsvoorwaarde.

UC Delen 4De bevestiging wordt niet gegeven.
UC Delen 5Dienstverlener aanbieder kan het antwoord op de bevestigingsvraag niet vaststellen.Dienstverlener aanbieder informeert Dienstverlener persoon over deze uitzondering. Dienstverlener persoon informeert daarop Persoon hierover.Allen stoppen de flow onmiddellijk na geïnformeerd te zijn over de uitzondering.
UC Delen 6Dienstverlener persoon kan, zelfs na bevestiging, de gezondheidsinformatie alsnog niet plaatsen bij Dienstverlener aanbieder.Dienstverlener persoon informeert daarop Persoon hierover, met opgave van oorzaak.Mocht gezondheidsinformatie deels wel (geautoriseerd) geplaatst kunnen worden, dan kan de flow dat nog verzorgen.
UC Delen 7Persoon annuleert het inloggen.Dienstverlener aanbieder presenteert een annuleringspagina en biedt Persoon de optie om toch in te loggen.Indien Persoon kiest niet in te willen loggen, kan het scherm gesloten worden. Persoon kan er ook voor kiezen toch in te loggen. In dat geval vraagt Dienstverlener aanbieder weer om credentials.

Of de Aanbieder, in de controle op ontvankelijkheid, zich ontvankelijk verklaart voor de door de Persoon aangeboden gezondheidsinformatie, is om te beginnen een zaak tussen de Aanbieder en Persoon, die daarvoor een behandelrelatie moeten hebben. Gegeven zo'n behandelrelatie is er wetgeving van toepassing op deze ontvankelijkheid. Daarbinnen is eigen beslisruimte voor de Aanbieder. Omdat Aanbieder en Persoon evenwel geen Deelnemers in het MedMij Afsprakenstelsel zijn, specificeert het MedMij Afsprakenstelsel niet de exacte logica van de beslissing om al dan niet ontvankelijk te zijn voor de gezondheidsinformatie. Om privacy-redenen vereist het MedMij Afsprakenstelsel echter wel dat er een behandelrelatie moet (hebben) bestaan waarbij de betreffende gezondheidsinformatie hoort én dat de Persoon minstens zestien jaar oud is (zie uitzondering UC Delen 3).

Voor het laten delen van gegevens door een minder dan zestienjarige moet toestemming of een machtiging tot toestemming worden verleend door degene die de ouderlijke verantwoordelijkheid of de wettelijke verantwoordelijkheid voor de minder dan zestienjarige draagt. Omdat in dergelijke toestemmingen of machtigingen nog niet is voorzien in deze versie van het MedMij Afsprakenstelsel, kan deze controle vooralsnog als onderdeel van de ontvankelijkheidsvoorwaarde worden opgevat. Wanneer een toekomstige release van het MedMij Afsprakenstelsel wel zulke toestemmingen of machtigingen omvat, zal de leeftijdsvoorwaarde gescheiden moeten worden van de ontvankelijkheidsvoorwaarde.

Applicatielaag

Menige actie in het stroomdiagram is gekleurd weergegeven. De lichtgrijs gekleurde acties vormen samen de autorisatieflow volgens OAuth 2; de zachtgeel gekleurde acties vormen samen de authenticatieflow. Deze kleuren verwijzen dus alleen maar naar de gebruikte standaarden en zeggen niets over welke component de stap zou moeten uitvoeren. Authenticatie is dus ingebed in autorisatie.

Verantwoordelijkheden inzake uitzonderingen op de happy flow zijn opgenomen bij de respectievelijke interface, waar de uitzonderingen bij de usecases zijn genoemd.

Stroomdiagram

In elke voltrekking van de in het diagram beschreven flow is steeds sprake van één van elk van de bovenaan genoemde rollen.

De flow kent de volgende stappen:

  1. De DVP Server start de flow door in de User Agent van de Persoon de mogelijkheid te presenteren om een bepaalde Gegevensdienst met een zekere Aanbieder te delen. Het gaat altijd om precies één Gegevensdienst (één scope, in OAuth-termen). Uit de Aanbiederslijst weet de DVP Server welke Gegevensdiensten door een Aanbieder.
  2. aangeboden worden. Desgewenst worden de Gegevensdienstnamen uit de Gegevensdienstnamenlijst gebruikt.
  3. De Persoon maakt expliciet zijn selectie en laat de User Agent een deel-verzoek sturen naar de Authorization Server. Het adres van het authorization endpoint komt uit de Aanbiederslijst. De redirect URI geeft aan waarnaartoe de Authorization Server de User Agent verderop moet redirecten (met de authorization code).
  4. Daarop begint de Authorization Server de OAuth-flow (in zijn rol als OAuth Authorization Server) door een sessie te creëren.
  5. De Authorization Server vraagt de Persoon via zijn User Agent in te loggen.
  6. Dan start de Authorization Server (nu in de rol van Authentication Client) de authenticatieflow door de User Agent naar de Authentication Server te redirecten, onder meegeven van een redirect URI, die aangeeft waarnaartoe de Authentication Server straks de User Agent moet terugsturen, na het inloggen van de Persoon.
  7. De Authentication Server vraagt van de Persoon via zijn User Agent om inloggegevens.
  8. Wanneer deze juist zijn, redirect de Authentication Server de User Agent terug naar de Authorization Server, onder meegeven van een ophaalbewijs. Wanneer het inloggen is afgebroken geeft de Authorization Server de Persoon alsnog de mogelijkheid via zijn User Agent in te loggen.
  9. Met dit ophaalbewijs haalt de Authorization Server rechtstreeks bij de Authentication Server het BSN op.
  10. Dan breekt het vroegste moment aan waarop de Authorization Server ervoor instaat dat de Aanbieder voor de betreffende Gegevensdienst überhaupt ontvankelijk is voor de gezondheidsinformatie van die Persoon, of anders de happy flow afbreekt. Daarvan maakt deel uit dat de Persoon daarvoor minstens 16 jaar oud moet zijn.
  11. Zo ja, dan presenteert de Authorization Server via de User Agent aan Persoon de vraag of laatstgenoemde bevestigt de gevraagde persoonlijke gezondheidsinformatie door de DVP Server (als OAuth Client) te laten aanbieden. Onder het stroomdiagram staat gespecificeerd welke informatie, waarvandaan, de OAuth Authorization Server verwerkt in de aan Persoon voor te leggen bevestigingsvraag.
  12. Bij akkoord logt de Authorization Server dit als bevestiging, genereert een authorization code en stuurt dit als ophaalbewijs, door middel van een browser redirect met de in stap 1 ontvangen redirect URI, naar de DVP Server. De Authorization Server stuurt daarbij de local state-informatie mee die hij in de eerste stap van de DVP Server heeft gekregen. Laatstgenoemde herkent daaraan het verzoek waarmee hij de authorization code moet associëren.
  13. De DVP Server vat niet alleen deze authorization code op als ophaalbewijs, maar leidt er ook uit af dat de bevestiging is gegeven en logt het verkrijgen van het ophaalbewijs.
  14. Met dit ophaalbewijs wendt de DVP Server zich weer tot de Authorization Server, maar nu zonder tussenkomst van de User Agent, voor een access token.
  15. Daarop genereert de Authorization Server een access token. Dan breekt het uiterste moment aan waarop de Authorization Server ervoor moet instaan dat voor de betreffende Gegevensdienst de Aanbieder ontvankelijk is voor de gezondheidsgegevens van de betreffende Persoon. Is dat zo, dan verstuurt de Authorization Server het access token naar de DVP Server. Is dat niet zo, dan breekt de Authorization Server de happy flow af en stuurt zij geen access token naar de DVP Server.
  16. Nu is de DVP Server gereed om de gezondheidsinformatie aan de Resource Server aan te bieden, nadat hij de gebruiker eventueel nog nadere keuzes heeft laten maken. Het adres van het resource endpoint haalt hij uit de ZAL. Hij plaatst het access token in het bericht en zorgt ervoor dat in het bericht geen BSN is opgenomen.
  17. De Resource Server controleert of het ontvangen token recht geeft op het aanbieden van de informatie, plaatst deze (al dan niet) bij achterliggende bestemmingen en verstuurt een antwoord in een FHIR-response naar de DVP Server.
  18. Deze maakt hierover een aantekeningen bij de aangeboden gezondheidsinformatie in het persoonlijke dossier. Mocht de Gegevensdienst waartoe de Persoon heeft geautoriseerd uit meerdere Transacties bestaan (zie hiervoor de Catalogus), plaatst de DVP Server daarna mogelijk opnieuw bij de Resource Server voor de nog resterende Transacties, eventueel na nieuwe interactie met de Persoon. Dat geldt ook voor de situatie waarin één Transactie, blijkens de betreffende Informatiestandaard, uit meerdere FHIR creates bestaat. Zolang het access token geldig is, kan dat.

In de regel worden bij een eenmalig gebruik van de functie Delen het authorization interface, het token interface en het resource interface allemaal aangesproken, in die volgorde. Mocht de DVP Server echter nog beschikken over een nog niet verlopen access token voor de betreffende Aanbieder-Gegevensdienst-combinatie, dan kan het onmiddellijk het resource interface aanspreken.

Het MedMij Afsprakenstelsel adviseert de ontvankelijkheidsvoorwaarde op het vroegst aangegeven moment van kracht te laten zijn. In release 1.1.1 staat het MedMij Afsprakenstelsel toe die voorwaarde op een later moment van kracht te laten zijn, maar niet later dan het laatste in het figuur aangegeven moment.

Bij de implementatie van de toets op ontvankelijkheid van de Aanbieder voor de te delen gezondheidsgegevens is het zaak rekening te houden met privacy-vereisten. Wanneer de Dienstverlener aanbieder ten behoeve van de ontvankelijkheidstoets nieuwe gegevensverzamelingen zou aanleggen, vindt een verwerking altijd onder de verantwoordelijkheid van één Aanbieder plaats. Het combineren van verwerkingen of het onvoldoende segregeren moet worden vermeden. Afwijking hiervan is alleen mogelijk onder expliciete instructie van de Aanbieder(s) en vereist een zorgvuldige voorafgaande afweging, vanwege de daaraan verbonden privacyrisico's.

Technologielaag

In bovenstaand stroomschema geven de dikke pijlen het MedMij-verkeer weer en zijn daarbinnen de vijf gevallen van frontchannel-verkeer (open pijlpunt) en vier gevallen van backchannel-verkeer (gesloten pijlpunt) aangegeven.


  • No labels