Skip to main content
Skip table of contents

Technisch ontwerp (1.0.0-alpha)

Samenvatting

De PGO-overstapservice bestaat uit het overbrengen van een overstapdocument tussen twee PGO’s.

PGO’s implementeren de functie Verzamelen voor gegevensdienst 51: Verzamelen Documenten 3.0 waarin een beschikbaarstellend PGO de rol neemt als aanbieder, vastgelegd op de aanbiederslijst.

Voor de volledigheid schrijven wij de processtappen bij functies kort uit met een voorbeeld. Dit zijn geen nieuwe afspraken, de deelnemers passen functies en gegevens in het afsprakenstelsel al toe als Dienstverlener aanbieder (DVA) en Dienstverlener persoon (DVP).

Wel nieuw is dat PGO nu naast gegevens raadplegen ook gegevens beschikbaar stelt als aanbieder.

Proces

Voorafgaand aan het verzamelen zijn er de bekende stappen met functies en verantwoordelijkheden om uitwisseling tussen deelnemers tot stand te brengen. Denk daarbij aan het opvragen van stelsel-
lijsten en autoriseren van het raadplegen. Zie de interfacebeschrijvingen in Afsprakenstelsel.

Functie

Beschrijving

1. Registreren

MedMij valideert en registreert PGO voor functies op gegevensdienst 51.

2. Lokaliseren

PGO biedt een overstapscherm aan met een keuzelijst PGO’s voor gebruiker.

3. Autoriseren

PGO stuurt gebruiker naar PGO, gebruiker logt in en geeft eenmalig toestemming.

4. Verzamelen

PGO start de functie Verzamelen en ontvangt een overstapdocument.

5. Raadplegen

Persoon kan overstapdocument na uitwisseling bekijken in raadplegend PGO.

Diagram zonder titel-1738161508822.drawio.png

De functies Lokaliseren, Autoriseren en Verzamelen in het afsprakenstelsel

Procesdiagram

Onderstaand diagram toont het proces van functies voor gegevensoverdracht. Afsprakenstelsel beschrijft elke functie in detail. In dit document herhalen we de processtappen als overzicht met voorbeelden om relevante acties voor het overbrengen van een overstapdocument te verduidelijken.

1. Registreren DVP als aanbieder in het persoonsdomein

PGO is een Dienstverlener persoon (DVP). In die rol communiceert het doorgaans als client met de servers van DVA bij zorgaanbieders. Nieuw is dat DVP nu naast gegevens raadplegen ook gegevens beschikbaar stelt in de rol van aanbieder voor een persoon. PGO’s gaan naast client ook als server communiceren. De aanbiedende PGO komt als een nieuw type aanbieder op de ZAL. Op de ZAL wordt ook geregistreerd voor welke gegevensdiensten de PGO gekwalificeerd id als aanbieder. Voor nu is gekozen voor de typeaanduiding ‘aanbieder in het persoonsdomein’ (APD) .

MedMij registreert DVP als aanbiedertype APD wanneer bewezen in staat om een overstapdocument beschikbaar te stellen volgens gegevensdienst 51 (Verzamelen Documenten 3.0). Dit ziet er als volgt uit op ZAL.
Specifiek gaat het in gegevensdienst 51 om systeemrolcodes MM-3.0-PLB-FHIR (Raadplegen PDF/A) en MM-3.0-PDB-FHIR (Beschikbaarstellen PDF/A DocumentReference):

XML
    <Zorgaanbiederslijst>
      <Zorgaanbieders>
        <Aanbiedertype>APD</Aanbiedertype>
        <Interfaceversies>
          <Interfaceversie>
            <Gegevensdiensten>
              <Gegevensdienst>
                <GegevensdienstId>51<GegevensdienstId>

2. Lokaliseren beschikbaarstellend PGO

In de processtappen op lokaliseren maakt PGO een overstapscherm beschikbaar met hierin een selectie in de aanbiederslijst van PGO’s die ook als aanbieder beschikbaarstellen (APD). Gebruiker maakt een handmatig een keuze voor het PGO om daar een overstapdocument te verzamelen. Zie de begeleidende instructies beschikbaarstellende PGO’s voor een voorbeeld van het overstapscherm.

Processtap

Toelichting

1. Persoon opent overstapscherm

Initiatief voor uitwisseling van een overstapdocument ligt bij de gebruiker. Deze logt in op een PGO en kiest een beschikbaarstellend PGO om gegevens op te halen.

2. PGO vraagt aanbiederlijst op

Raadplegend PGO vraagt lijsten met aanbieders en gegevensdiensten bij MedMij Register. Register stuurt stelselnodelijsten ZAL en WHL, PGO houdt deze in cache.

3. PGO toont keuzelijst ADP

Raadplegend PGO filtert in ZAL op aanbiederstype ADP  
met ondersteuning voor gegevensdienst 51 (Verzamelen Documenten 3.0). ADP ondersteunen overstapdocument.

4. Persoon kiest een PGO

PGO toont overstapscherm met keuzelijst. Persoon kiest een PGO voor verzamelen overstapdocument.

pgok_localisatie.png

Initiatief voor uitwisseling van een overstap-
document ligt bij een PGO-gebruiker. De gebruiker logt in op een raadplegend PGO en
kiest een beschikbaarstellend PGO om overstap-
document op te halen. Het scherm mag er bijvoorbeeld uit zien als hiernaast getoond.

3. Autoriseren raadplegend PGO

Functies Autoriseren en Authenticeren in het afsprakenstelsel beschrijven hoe deelnemers met auth-code-flow de persoon toestemming vragen om gegevens te delen. In overstapservice autoriseren wij zonder langdurige toestemming (geen refresh_token). Communicatie tussen PGO’s is kortdurend.

Processtap

Toelichting

5. PGO start auth-code-flow

PGO redirect browser van Persoon naar het authorization-endpoint van gekozen beschikbaarstellend APD.

6. Persoon logt in en stemt toe

Persoon logt in met account van beschikbaarstellend PGO en geeft toestemming gegevensdeling.

7. ADP controleert PGO in lijsten

Autorisatieserver verifieert PGO-client deelnemer in OCL.

8. Token exchange met code

Beschikbaarstellend PGO redirect de browser van persoon naar return_uri met een autorisatiecode. Raadplegend PGO wisselt deze in op token_endpoint voor access_token.

Voorbeelden autoriseren en token-exchange na toesteming geven:
CODE
5. PGO start auth-code-flow met redirect persoon voor autoriseren
 
HTTP 302 GET https://deoudepgo.nl/login/auth
  ?response_type=code
  &client_id=medmij.deenigeechtepgo.nl
  &redirect_uri=https://medmij.deenigeechtepgo.nl/importeren/auth_callback
  &scope=deenigeechtepgo
  &state=xcoivjuywkdkhvusuye3kch
  &MedMij-Request-ID=57510be1-73e6-4a75-9db8-ee005cced48f
  &X-Correlation-ID=c0e7b545-9606-4eef-bea7-75d8addaa54b

7. Redirect met respons bij succes of weigering autoriseren

  https://medmij.deenigeechtepgo.nl/importeren/auth_callback?code=jhgRtpO12D3qR5tU9
  https://medmij.deenigeechtepgo.nl/importeren/auth_callback?error=access_denied


8. Token-respons met access_token (zonder refresh_token)

200 OK
  Content-Type: application/json
  {
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "token_type": "Bearer",
    "expires_in": 900
    "scope": "openid deenigeechtepgo"
  }

Gedetailleerde uitleg over de opmaak van Toestemmingsverklaring in Afsprakenstelsel Core.

pgok_autorisatie.png
pgok_toestemmingsverklaring.png

4. Verzamelen overstapdocument

Raadplegend PGO gebruikt het verkregen access_token voor Verzamelen Documenten 3.0 (PDF/A). De PGO-overstapservice vraagt één overstapdocument over te nemen. Zie begeleidende voorbeelden. Het overstapdocument heeft een DocumentReference.type http://snomed.info/sct|371535009.

Beschikbaarstellend PGO genereert tijdens het verzamelen of vooraf het overstapdocument met medische gegevens bekend bij het PGO. De inhoud is hier naar eigen inzicht en zo volledig mogelijk. Informatie die leidt tot overmatig veel pagina’s tekst of buitenproportionele bestandsgrootte vatten we leesbaar samen (denk aan: zeer gedetailleerd metingenoverzicht of zware radiogrambeelden).

Processtap

Toelichting

9. PGO vraagt lijst documenten

PGO vraagt lijst beschikbare documenten op met FHIR STU3 (status = current) en ontvangt FHIR-bundle met DocumentReference resources

10. PGO filtert op SNOMED-type

PGO doorzoekt lijst op verslag van overdracht (type = http://snomed.info/sct|371535009).

11. PGO vraagt overstapdocument

PGO vraagt specifiek overstapdocument op. Beschikbaarstellend PGO stuurt overstapdocument

12. Document genereren

Resourceserver genereert als nodig PDF/A-document.

Voorbeelden verzamelen lijst en hieruit een specifiek overstapdocument:
JSON
9. PGO vraagt lijst beschikbare documenten bij ADP

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
HTTP GET [base-url]/DocumentReference?status=current

9. Respons met een documentverwijzing (als JSON of XML)

Content-Type: application/fhir+json
  200 OK
  {
    "resourceType": "Bundle",
    "type": "searchset",
    "total": 1,
    "entry": [
     {
      "resource": {
        "resourceType": "DocumentReference",
        "type": {
          "coding": [{
            "system": "http://snomed.info/sct",
            "code": "371535009",
            "display": "Verslag van overdracht"
          }]
        },
        "subject": { "reference": "Patient/123" },
        "content": [
          {
            "attachment": {
              "contentType": "application/pdf",
              "url": "[base-url]/genereer_overstapdocument?patient=123"
            }
          }
        ]
      }
    }
  }

11. PGO vraagt overstapdocument

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
HTTP GET [base-url]/genereer_overstapdocument?patient=123

HTTP/2 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="export_overstapdocument.pdf"

%PDF-1.4
...
stream
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<rdf:RDF ...>
  <rdf:Description ... pdfaid:part="1" pdfaid:conformance="B"/>
</rdf:RDF>
<?xpacket end='w'?>
endstream
...

Invoegen van een Patient-verwijzing (subject) in DocumentReference is optioneel in de gegevensstandaard. Voegt beschikbaarstellend PGO de referenties in voor bijvoorbeeld subject of author, dan moet het ook het ophalen van die verwijzingen mogelijk maken.

5. Raadplegen dossier

image-20250324-182127.png

Voorbeeld overstapdocument_patient123.pdf

Persoon ontvangt een bevestiging van succesvolle overdracht. Raadplegend PGO bewaart het overstapdocument.

Bij voorkeur kan persoon het PDF-document in PGO bekijken. Als alternatief zijn instructies om in te zien met een aparte viewer mogelijk.

Advies voor PGO’s in deze use-case

De use-case ‘Overstapservice met PGO-koppelvlak’ past bestaande functies in het afsprakenstelsel toe met uitwisseling de gegevensdienst op het verzamelen van documenten. De stappen voor beschikbaarstellende aanbieders zijn uitvoerig beschreven in het stelsel en gegevensdienst.
Kort enkele suggesties, verduidelijking en advies bij het toepassen van de overstapservice.

Aandachtspunten Beschikbaarstellend PGO

Voor een PGO dat overstapservice beschikbaar maakt zijn alle processtappen nieuw. Op functies Autoriseren en Verzamelen is inrichting nodig met een OAuth2-server en resourceserver. Daarnaast is aandacht vereist voor het genereren van het overstapdocument.


A1. Inrichten authenticatie en toestemmingen

MedMij-deelnemers passen OAUTH2 toe met hieromheen afspraken over het verifiëren van autorisatieverzoeken tegen stelselnodelijsten. In de praktijk is een OIDC-identityprovider nuttig.

Persoon logt in met tweefactorauthenticatie, zie https://afsprakenstelsel.medmij.nl/asverplicht/mmverplicht/a-9-4-1-beperking-toegang-tot-informatie.

In de autorisatieflow vraagt raadplegend PGO om toestemming voor uitwisseling. Het beschikbaar-
stellend PGO implementeert een autorisatieserver die dit ondersteunt. Persoon ziet na inloggen een toestemmingsverklaring zonder langdurige toestemming (d.w.z: zonder refresh_tokens). Verkeer met autorisatieserver is gebonden aan https://afsprakenstelsel.medmij.nl/asverplicht/mmverplicht/verantwoordelijkheden-core#id-(MedMijAfsprakenstelsel2.2.6d)Verantwoordelijkheden,Core-Autorisatie en deelnemers voldoen aan het normenkader informatiebeveiliging waarin het valideren van client op OCL-stelsellijst, PKI-Overheid.

A2. Inrichten resourceserver

Voor de functie Verzamelen richt beschikbaarstellend PGO een resourceserver in met ondersteuning voor FHIR STU3. Dit kan een volledige FHIR-server zijn of een façade met minimaal endpoints om de bundel met één document uit te leveren. Houd rekening met:

  • Endpoint voor Bundel-resource met DocumentReference-resource.

  • Endpoint voor Patient-resource waarnaar verwezen wordt in DocumentReference.

  • Endpoint ophalen document in bijvoorbeeld DocumentReference.content.attachment.url.

De resourceserver ontvangt een HTTP-request voor de lijst met document-references en kan aanvullend alle resources opvragen waar de DocumentReference-bundle naar verwijst.

CODE
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
HTTP GET [base-url]/DocumentReference?status=current

In FHIR staat normatief beschreven dat alle referenties in deze lijst door de client op te vragen zijn.
Raadplegend PGO haalt alleen het overstapdocument op.

A3. DocumentReference opmaken met type-code

Geef het overstapdocument in DocumentReference-resource een type-code http://snomed.info/sct|371535009 (Verslag van overdracht) mee. Hiermee herkennen raadplegende PGO’s het overstapdocument.

Beschikbaarstellend PGO heeft met de gegevensdienst de keuze om documenten op verschillende manieren mee te sturen in DocumentReference.content.attachment: als base64-encoded data, als Binary-resource of als een verwijzing naar een url. Zie opties: IHE.MHD.Minimal.DocumentReference.

Het levensloopdossier van een PGO-gebruiker verandert regelmatig, om nuttig te zijn moet het overstapdocument relevant en bijgewerkt zijn. Een wijze om dat te bereiken is het regelmatig te verversen in de FHIR-resourceserver. Een andere manier is het document buiten een resourceserver te genereren op het moment van opvragen. Het kan dan nuttig zijn met attachment.url te werken.

Tip: veld content.attachment.contentType verwijst altijd naar application/pdf, ook als we een Binary-resource gebruiken. Bij het uitlezen van resources geeft de Content-Type header pas aan dat het gaat om Content-Type: application/pdf of Content-Type: application/fhir+json.

A4. Voorbeeldaanpak genereren overstapdocument

In het voorbeeld bij 4. Verzamelen overstapdocument verwijst de document-reference naar een endpoint waar een PDF-document met samenvatting op aanvraag genereert, in aanvraag of vooraf.

Dit overstapdocument bevat de inhoud van een medisch levensloopdossier bij een PGO en de informatie plaatsen we in één overstapdocument. Het is aan het PGO om een vorm te vinden
die past. Raadplegend PGO bewaart het overstapdocument onder bronvermelding zoals met alle informatie die PGO verzamelt op gegevensdiensten.

Een werkbare opzet om het overstapdocument te genereren is door een webpagina op te bouwen zoals in PGO al meerdere pagina’s aanwezig zijn en daarop te converteren naar PDF/A-document. Het is mogelijk om conversiesoftware de inhoud van webpagina’s snel om te laten zetten naar PDF. Eenvoudig voorbeeld met de software van Gotenberg:

CODE
HTTP POST [documentservice] /forms/chromium/convert/url

  url= https://deoudepgo.nl/portal/volledig_overzicht_patient.html&
  pdfa=PDF/A-1b


Uiteraard is iets dergelijks ook mogelijk met een PDF-template of een template in markdown, zolang de inhoud gelijkwaardig is aan de inhoud zoals dat te zien in op de website van het PGO. Zoals beschreven in de gegevensdienst voldoet het resultaat aan minimale vereisten voor PDF/A: bijvoorbeeld PDF/A-1 en daarbinnen is PDF/A-b ook toegestaan.

A5. Gebruik lettertypen en grafisch werk geschikt voor onbeperkt delen

Patiëntgebruikers houden de beschikking over PDF-documenten die een PGO voor hen maakt. Het doel is om de documenten ook in de toekomst te downloaden en mee te nemen naar een ander PGO. Gebruik daarom bij het ontwikkelen alleen materialen die ingesloten mogen en onbeperkt gedeeld.

Alle in de PDF/A-documenten gebruikte lettertypen dienen over een ‘permissive licence’ te beschikken met minimale restricties die het insluiten (embedding), reproduceren en verspreiden van het lettertype toestaat, in overeenstemming met de vereisten van de PDF/A-standaard (ISO 19005). We gebruiken geen lettertypen of beeldmateriaal waarvan de licentie dergelijke toepassingen beperkt of uitsluit. Houd daar rekening mee wanneer je bijvoorbeeld het logo of de huisstijl van een PGO toepast op het document. Soms liggen hierop beperkingen in verveelvuldiging, bijvoorbeeld van een ontwerpbureau.

A6. Gegevens plaatsen in document op basis van beschikbaarheid

Het doel van uitwisselen documenten langs koppelvlak is om meerwaarde te bieden aan
een patiëntgebruiker die verzamelde informatie in levensloopdossier wil meenemen naar
een ander PGO. Het is aan beschikbaarstellend PGO om daar namens gebruiker een afweging in te maken.

Zo bewaren PGO’s sommige medische gegevens deels in het dossier. Goed voorbeeld daarvan zijn (radiologische) beelden die op aanvraag opgehaald worden bij zorgaanbieders en een reeks met veel beelden opleveren. Als gegevens niet beschikbaar zijn of de presentatie ervan in een samenvatting overweldigend veel inhoud oplevert, dan laat de beschikbaarstellend PGO deze buiten het document.

A7. Ketenlogging

De normale logging voor de use case Verzamelen, zoals op https://afsprakenstelsel.medmij.nl/asverplicht/mmverplicht/logging-interface uiteengezet dient ook geïmplementeerd te worden voor de APD Auth Server & Resource bevragingen. Met de deelnemende ontwikkelpartners kijken wij naar een uitbreiding om het gebruik van overstapservice beter te loggen, aangezien DocumentReference?status=current alle documenten bevraagt.

Nog te onderzoeken in fase ‘Ontwikkelen en geïsoleerd testen
Bespreken met Register en PGO-ontwikkelpartners: logging interface of software aanpassen
om logging op overstapservice te verbeteren bij DVP als aanbieder in persoonsdomein?

Aandachtspunten Raadplegend PGO

Voor een PGO dat overstapservice gebruikt zijn alle processtappen bekend. Bijzonder is dat voor use-case ‘Overstapservice met PGO-koppelvlak’ een overstapscherm beschikbaar komt en een overstapdocument bewaard wordt na uitiwisseling. Hier komt een klein stukje filtering te pas.

B1. Filteren

Gegevensdienst Documenten Verzamelen 3.0 ondersteunt alleen het verzamelen van alle documenten langs een volledige lijst van DocumentReference?status=current. Uit de lijst die terugkomt (FHIR STU3 Bundle) is het goed mogelijk het overstapdocument te vinden. Het hoort het enige document te zijn dat voldoet aan http://snomed.info/sct|371535009.

B2. Bewaren en tonen

Zoals dat geldt voor ander documenten, maken we het bij voorkeur mogelijk een PDF-document in de browser of applicatie te tonen. Anders een uitleg hoe document te gebruiken op apparaat. We vragen PGO’s duidelijk weer te geven dat het gaat om een overstapdocument. Bijvoorbeeld door de Nederlandse vertaling te tonen: “verslag van overdracht“ met bron.

Vragen en suggesties

Wij werken dit initiatief met deelnemers uit tot nieuwe afspraken in het stelsel. Vragen, ideeën of suggesties? Deel ze vooral. Dat kan bijvoorbeeld in een expertsessie of via MedMij Loket.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.