Koble en konsument (EPJ) til MyHealth-portalen
Dette dokumentet beskriver hvordan et fagsystem/EPJ kobler seg til MyHealth-portalen. Dokumentet forklarer autentisering, krav til HelseID-klient og hvordan EPJ etablerer en sesjon i portalen.
Kort oppsummert
Autentiseringen av helsepersonell skjer i EPJ mot HelseID (ikke i portalen).
EPJ henter et gyldig DPoP-access token fra HelseID og bruker det for å opprette sesjon i MyHealth.
For å knytte EPJ-sesjon og nettleser-sesjon brukes PKCE (code_challenge / code_verifier).
EPJ åpner portalen i nettleser med engangskoden (code) fra MyHealth.
1. Forutsetninger
EPJ må ha en registrert HelseID-klient (client_id) som støtter: Les mer om helseId
DPoP
PKCE (public client)
Tokenet som sendes til MyHealth må oppfylle følgende krav:
| Krav | Verdi |
|---|---|
| aud | nhn:myhealth |
| scope | må inkludere nhn:myhealth/api |
| type | DPoP access token |
EPJ må også kunne:
Generere og signere DPoP-bevis
Generere PKCE code_verifier og code_challenge (S256)
Sette nødvendige claims ved opprettelse av sesjon
2. Flyt (høynivå)
1. Helsepersonell logger inn i EPJ.
2. EPJ gjennomfører autorisasjonsflyten mot HelseID og henter et DPoP-access token.
3. EPJ kaller POST /api/session/create i MyHealth med token, DPoP-bevis, PKCE challenge og claims.
4. MyHealth returnerer sessionId og en engangskode (code).
5. EPJ åpner nettleser på:
/start-session?code=<code>&ehr-code-verifier=<code_verifier>
6. MyHealth validerer PKCE og etablerer sesjonen.
Sekvensdiagram
3. Endepunkt for å opprette sesjon
| Navn | Beskrivelse | Påkrevd |
|---|---|---|
| Authorization | DPoP <HelseID Access Token> med aud=nhn:myhealth og scope nhn:myhealth/api |
Ja |
| DPoP | DPoP-bevis (JWS) | Ja |
| X-SOURCE-SYSTEM | Navn og versjon på EPJ (3–512 tegn) | Ja |
| Content-Type | application/json |
Ja |
Body (eksempel)
{
"ehrCodeChallenge": "<base64url(SHA256(code_verifier))>",
"claims": {
"authorization": {
"code": "LE",
"system": "urn:oid:2.16.578.1.12.4.1.1.9060",
"assigner": "https://www.helsedirektoratet.no/"
},
"healthCareFacilityType": {
"code": "KA02",
"system": "urn:oid:2.16.578.1.12.4.1.1.8663"
}
}
}
svar
{
"sessionId": "<uuid>",
"code": "<engangskode>"
}
4. Starte portalen i nettleser
/start-session?code=<engangskode>&ehr-code-verifier=<code_verifier>
Portalen validerer PKCE, oppretter sesjonen og videresender brukeren til:
/myhealth-portal/search_patient
5. Krav til claims
"code": "LE",
"system": "urn:oid:2.16.578.1.12.4.1.1.9060",
"assigner": "https://www.helsedirektoratet.no/"
}
Godkjente roller LE, SP
healthCareFacilityType
{
"code": "KA02",
"system": "urn:oid:2.16.578.1.12.4.1.1.8663"
}
6. Eksempel med cURL
curl -X POST \
"https://<myhealth-host>/api/session/create" \
-H "Authorization: DPoP <HelseID_access_token>" \
-H "DPoP: <dpop-proof-jws>" \
-H "X-SOURCE-SYSTEM: EPJ-System (v1.2.3)" \
-H "Content-Type: application/json" \
-d '{
"ehrCodeChallenge": "<challenge>",
"claims": {
"authorization": {
"code": "LE",
"system": "urn:oid:2.16.578.1.12.4.1.1.9060",
"assigner": "https://www.helsedirektoratet.no/"
},
"healthCareFacilityType": {
"code": "KA02",
"system": "urn:oid:2.16.578.1.12.4.1.1.8663"
}
}
}'