Publisert - 01.12.2025

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
sequenceDiagram actor Helsepersonell participant EPJ participant HelseID participant MyHealth rect gray Note over EPJ: Autentisering i EPJ Helsepersonell ->> EPJ: Klikk «Logg inn» EPJ ->> HelseID: Autorisasjonsflyt (DPoP) HelseID -->> EPJ: DPoP access token EPJ ->> HelseID: GET /connect/userinfo HelseID -->> EPJ: Userinfo end EPJ ->> EPJ: Generer PKCE (code_verifier + code_challenge) EPJ ->> MyHealth: POST /api/session/create Note right of EPJ: Headers: Authorization: DPoP <token>, DPoP: <proof>. Body: ehrCodeChallenge + claims (authorization, healthCareFacilityType). MyHealth -->> EPJ: { sessionId, code } EPJ ->> Helsepersonell: Åpner nettleser med URL Helsepersonell ->> MyHealth: GET /start-session?code=...&ehr-code-verifier=... MyHealth ->> MyHealth: Valider PKCE og opprett sesjon MyHealth -->> Helsepersonell: Redirect til /myhealth-portal/search_patient

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"
      }
    }
  }'

Søk i Utviklerportalen

Søket er fullført!