3.6 Ontvangen launch-context
Aanbiedermodule ontvangt zorggebruiker met een launch-code en wisselt deze in voor een launch-context. Met deze informatie (taak, patient) opent aanbiedermodule de digitale activiteit.
Processtappen
De stappen in het uitlezen van launch-context volgen HL7 SMART App Launch.
Processtap | Toelichting |
---|---|
1. Ontvangen gebruiker | Aanbiedermodule ontvangt de gebruiker met een browserverzoek op de launch-url. De module leest de issuer en launch-code uit. |
2. Uitlezen smart-config | Aanbiedermodule leest .well-known/smart-configuration van issuer. In deze discovery verzamelt module het Na het bepalen van de endpoints begint module een SMART on FHIR authorization code flow met gebruikersidentificatie bij issuer (DVA). De volgende processtappen lichten dit toe. |
3. Doorsturen gebruiker naar DVA voor autorisatie-flow | Module stuurt gebruiker door naar het
Specifiek vraagt module niet om scopes Aanvullende uitwerking volgt. In gesprek met ontwikkel- |
4. Verifiëren toestemming | DVA valideert de launch-code (ook wel launch_token) na ontvangst van het verzoek op authorization-endpoint. DVA gaf de launch-code in 3.4 Aanvragen launch-code af en correleert dit met het originele DVA verifieert of gebruikerstoestemming is gegeven op het starten en uitwisselen met module. Als nodig start DVA gebruikersidentificatie langs DigiD en toestemmingsverklaring voor gegevensdeling met specifieke module. |
5. Uitwisselen auth-code | Na succesvolle identificatie en toestemming volgt een redirect van gebruiker naar module met de authorization code. Bij voortijdig afbreken of fouten in de aanvraag volgt een error-respons als beschreven in RFC 6749 OAuth 2.0 Error Response. |
6. Uitwisselen launch-context | Omwisselen van code voor context gebeurt met een OIDC Token Request bij de opgegeven issuer. De issuer (DVA) en aanbieder- Module doet een Token response bevat de launch_context met deze velden in JSON:
|
7. Starten module | Aanbiedermodule gebruikt de launch-context om applicatie op te zetten voor de bezoekende gebruiker. Aanbiedermodule kan de verwijzingen naar taak gebruiken om met zorgaanbieder meer gegevens uit te wisselen en resultaten te bewaren. Bij een module met vragenlijst kan bijvoorbeeld een voornaam getoond, tussentijds resultaten bewaard en een gereedmelding opgeslagen bij zorgaanbieder. |
8. Bijwerken taak | Aanbiedermodule wijzigt taakstatus bij zorgaanbieder. |
Taakstatusopties uitwerken in FHIR-profiel na overleg met ontwikkelpartners.
Procesdiagram

Procesdialoog
2. Uitlezen discoverydocument .well-known/smart-configuration
HTTP/1.1 200 OK
Content-Type: application/json
{
"authorization_endpoint": "https://dvauth/connect/authorize",
"capabilities": [
"launch-ehr",
"client-public",
"sso-openid-connect",
"context-ehr-patient",
"permission-patient"
],
"code_challenge_methods_supported": ["S256"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"introspection_endpoint": "https://dvauth/connect/introspect",
"issuer": "https://dvauth",
"jwks_uri": "https://dvauth/.well-known/openid-configuration/jwks",
"response_types_supported": [
"code"
],
"revocation_endpoint": "https://dvauth/connect/revocation",
"scopes_supported": [
"openid",
"profile",
"launch",
"patient/*.read"
],
"token_endpoint": "https://dvauth/connect/token",
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post"
]
}
3.Doorsturen gebruiker naar DVA met launch-code voor autorisation code flow
HTTP 302 REDIRECT
https://dvauth/connect/authorize?
launch=9c22a827e63e4139bcf3a03d7e787d71&
response_type=code&
client_id=module_client_id&
redirect_uri=https://module_redirect_uri&
state=module_state&
scope=launch+fhirUser+patient/*.read%20patient/Task.*&
aud=https://dva/fhir
5. Uitwisselen auth-code
HTTP 302 REDIRECT
https://module_redirect_uri?code=SplxlOBeZQQYbYS6WxSbIA&state=module_state
6. Uitwisselen launch-context
POST https://dvauth/connect/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https://module_redirect_uri&
client_id=module_client_id&
client_secret=module_client_secret
HTTP 200 OK
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6...",
"token_type": "Bearer",
"expires_in": 500,
"scope": "launch fhirUser patient/*.read patient/Task.*",
"patient": "Patient/XXX_Patient",
"fhirUser": "Patient/XXX_Patient",
...
}
Bespreken: Ondersteunen van grant_types
-support op refresh_token
optioneel?