Skip to main content
Skip table of contents

PatientEnrollmentCredential

Feature

PatientEnrollmentCredential

Type

Subfeature

Versie

1.0.0

Systeemrolcode

-

Groep

Credentials

Gepubliceerd

Delta

Initiële versie van feature.

Met een PatientEnrollmentCredential wordt bewezen dat een bepaalde patient is ingeschreven bij een zorgaanbieder. Dit credential is de VC‑tegenhanger van het SAML AORTA‑inschrijftoken en wordt gebruikt om patiënt‑ en behandelrelatiecontext vast te stellen voorafgaand aan de uitgifte van een AORTA access token.

VCs worden gemodelleerd conform het W3C Verifiable Credentials Data Model en geserialiseerd als JWT (VC‑JWT). De VC heeft een JWT Header, JWT Payload en JWT Signature zoals hieronder gedefineerd.

JWT Header

De JWT header van deze VC bevat de volgende velden:

Veld

Cardinaliteit

Toelichting

alg

1..1

Het gehanteerde signing-algoritme.

Toegestane waarden:

  • RS256.

Enkel RS256 wordt gebruikt vanwege compatibiliteit met bestaande UZI-certificaten en t.b.v. hardware die RSASSA-PSS niet ondersteunt.

typ

1..1

Het type token. Vaste waarde: JWT.

kid

1..1

Volledige DID met fragment. De kid moet verwijzen naar exact één sleutel binnen de certificaatketen.

x5c

1..1

De volledige certificaatketen in DER-formaat, base64-encoded.

x5t#S256

0..1

De SHA-256 thumbprint van het leaf-certificaat.

Voorbeeld did:x509 JWT header

JSON
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "did:x509:0:sha256:WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk::subject:O:Autoriteit::san:otherName:00000000#0",
  "x5c": [
    "",
    "",
    ""
  ],
  "x5t#S256": "WE4P5dd8DnLHSkyHaIjhp4udlkF9LqoKwCvu9gl38jk"
}

JWT Payload

De JWT Payload van deze Verifiable Credential bevat de volgende velden:

Veld

Cardinaliteit

Toelichting en validatie

iss

1..1

DID van de issuer.

sub

1..1

DID van het subject.

nbf

1..1

Tijdstip vanaf wanneer het credential geldig is.

MOET in het verleden liggen.

exp

0..1

Verloopdatum als UNIX timestamp (indien van toepassing).

Indien aanwezig: MOET deze groter zijn dan nbf, en MOET in de toekomst liggen.

jti

1..1

Unieke identifier van het credential.

vc

1..1

Genest object met de volledige Verifiable Credential, bevat de semantische betekenis van de VC.

@context

1..1

JSON‑LD context conform het W3C Verifiable Credentials Data Model. Vaste waarde: ["https://www.w3.org/2018/credentials/v1", "https://[aorta-gbc-base-URL]/gbc/context/v1"].

id

0..1

Unieke identifier van het credential.

Indien aanwezig: MOET gelijk zijn aan de jti claim.

type

1..1

Bevat altijd VerifiableCredential, aangevuld met de naam van het specifieke type credential.

credentialSubject

1..1

Object dat de claims over het subject bevat. Het credentialSubject is apart gedefinieerd in de onderstaande tabel.

issuer

0..1

DID van de uitgevende partij (bijv. did:web of did:x509).

Indien aanwezig: MOET gelijk zijn aan de iss claim.

issuanceDate

0..1

Datum en tijdstip waarop het credential is uitgegeven.

Indien aanwezig: MOET overeenkomen met de nbf claim.

expirationDate

0..1

Datum en tijdstip waarop het credential verloopt.

Indien aanwezig: MOET overeenkomen met de exp claim.

credentialStatus

0..1

Optioneel object om de revocatiestatus van het credential vast te stellen.

Dit veld wordt vooralsnog niet gebruikt.

Het domein dat wordt gebruikt in een did:web identifier moet een top-level domain hebben met voldoende betrouwbaarheid en juridische afdwingbaarheid. Binnen AORTA is het gebruik van het .nl verplicht. Dit waarborgt dat domeinnamen vallen onder Nederlands recht en dat de SIDN als registerhouder voldoende garanties biedt ten aanzien van eigenaarschap en geschilbeslechting.

Voor de PatientEnrollmentCredential is het credentialSubject het object dat de claims bevat waarmee de inschrijving (behandelrelatie) van de patient wordt bewezen. Het subject van dit credential is de inschrijving (behandelrelatie) bij een zorgaanbieder en niet de patiënt als persoon en niet de zorgaanbieder als zelfstandige identiteit. Het credentialSubject bevat de volgende attributen:

Attribuut

Cardinaliteit

Toelichting

id

0..1

DID van het subject.

Indien aanwezig: MOET gelijk zijn aan de sub claim.

@type

1..1

Type subject, vaste waarde: HealthcareProvider.

hasEnrollment.@type

1..1

Vaste waarde: PatientEnrollment.

hasEnrollment.issuedTo.@type

1..1

Vaste waarde: HealthcareProvider.

hasEnrollment.issuedTo.identifier.@type

1..1

Vaste waarde: Identifier.

hasEnrollment.issuedTo.identifier.system

1..1

Identifier-stelsel, vaste waarde: http://fhir.nl/fhir/NamingSystem/ura.

hasEnrollment.issuedTo.identifier.value

1..1

URA-nummer, MOET overeenkomen met het URA-nummer in het san:otherName attribuut in de issuer DID.

hasEnrollment.patient.@type

1..1

Vaste waarde: Patient.

hasEnrollment.patient.identifier.@type

1..1

Vaste waarde: Identifier.

hasEnrollment.patient.identifier.system

1..1

Identifier‑stelsel van de patiënt, vaste waarde: http://fhir.nl/fhir/NamingSystem/bsn.

hasEnrollment.patient.identifier.value

1..1

BSN van de patiënt.

hasEnrollment.enrolledBy.@type

1..1

Vaste waarde: HealthcareWorker.

hasEnrollment.enrolledBy.identifier.@type

1..1

Vaste waarde Identifier.

hasEnrollment.enrolledBy.identifier.system

1..1

Identifier‑stelsel van de uitvoerder, vaste waarde: http://fhir.nl/fhir/NamingSystem/uzi-nr-pers.

hasEnrollment.enrolledBy.identifier.value

1..1

UZI‑nummer van de zorgprofessional of medewerker die de inschrijving heeft uitgevoerd. MOET overeenkomen met het UZI-nummer in de issuer DID.

Voorbeeld van de JWT body van een PatientEnrollmentCredential:

JSON
{
  "iss": "did:x509:0:sha256:YmFzZTY0...dHJ1c3Q=::san:otherName:2.16.528.1.1007.99.2110-1-12345678-Z-90001234-01.015-12345678",
  "sub": "did:web:huisarts-delinden.nl",
  "jti": "urn:uuid:a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "nbf": 1740000000,
  "exp": 1786320000,
  "vc": {
    "@context": [
      "https://www.w3.org/2018/credentials/v1",
      "http://gis-nl.example/"
    ],
    "type": [
      "VerifiableCredential",
      "PatientEnrollmentCredential"
    ],
    "issuanceDate": "2025-02-20T00:00:00Z",
    "expirationDate": "2026-08-08T00:00:00Z",
    "credentialSubject": {
      "id": "did:web:huisarts-delinden.nl",
      "@type": "HealthcareProvider",
      "hasEnrollment": {
        "@type": "PatientEnrollment",
        "issuedTo": {
          "@type": "HealthcareProvider",
          "identifier": {
            "@type": "Identifier",
            "system": "http://fhir.nl/fhir/NamingSystem/ura",
            "value": "12345678"
          }
        },
        "patient": {
          "@type": "Patient",
          "identifier": {
            "@type": "Identifier",
            "system": "http://fhir.nl/fhir/NamingSystem/bsn",
            "value": "999911234"
          }
        },
        "enrolledBy": {
          "@type": "HealthcareWorker",
          "identifier": {
            "@type": "Identifier",
            "system": "http://fhir.nl/fhir/NamingSystem/uzi-nr-pers",
            "value": "90001234"
          }
        }
      }
    }
  }
} 

JWT Signature

De JWT Signature van een Verifiable Credential borgt de integriteit en herkomst van de JWT en de daarin opgenomen VC. De JWT signature MOET worden geplaatst over de base64url‑gecodeerde JWT header en payload conform JWS (RFC 7515).

  • De JWT MOET worden ondertekend door de issuer van de VC.

  • De issuer van het credential wordt geïdentificeerd via de iss‑claim in de JWT payload.

  • De kid‑claim in de JWT header MOET verwijzen naar de signing key waarmee de JWT is ondertekend.

  • De signing key MOET overeenkomen met het leaf-certificaat waarmee de JWT is ondertekend.

  • De relatie tussen de signing key en de issuer MOET worden vastgesteld via validatie van de X.509-certificaatketen tegen geaccepteerde PKI-trust anchors (zoals PKIoverheid en UZI).

Verificaties van het PatientEnrollmentCredential

De credential MOET voldoen aan de specificaties van de betreffende credential, inclusief eventuele de normatieve structuur en inhoudelijke eisen zoals gedefinieerd.

Daarnaast moeten de volgende verificaties plaatsvinden. Indien één van de onderstaande verificaties faalt wordt de credential als ongeldig beschouwd. Het systeem MAG stoppen bij de eerste geconstateerde fout en hoeft niet alle verificaties uit te voeren.

  • Verificatie van de JWT-signature:

    • De JWT signature MOET cryptografisch correct zijn en succesvol valideren over de JWT header en payload.

    • De credential MOET zijn ondertekend door de issuer van de VC zoals geïdentificeerd in de iss claim van de JWT payload.

  • Verificatie van DID en sleutelbinding

    • Het DID‑document van de issuer van de credential MOET worden geresolveerd conform de toepasselijke DID‑methode.

    • De signing key waarmee de credential is ondertekend MOET via de kid‑claim herleidbaar zijn tot het DID‑document van de issuer.

    • De signing key MOET voorkomen in de assertionMethod van het DID‑document van de issuer.

    • De issuer DID van de credential MOET een geaccepteerde trust anchor bevatten, passend bij het type credential. Het type trust anchor is afhankelijk van het credential‑type.

  • Verificatie van sleutelgeldigheid:

    • De signing key MOET worden geresolveerd via key‑resolutie, waarbij de nbfvan het credential als referentietijdstip wordt gebruikt.

    • De signing key MOET geldig zijn geweest op het referentietijdstip en MAG NIET verlopen of ingetrokken zijn vóór de issuanceDate van het credential.

  • Verificatie van geldigheid in tijd:

    • De credential MOET geldig zijn op het moment van gebruik.

    • De credential MAG NIET herroepen zijn. Deze controle wordt vooralsnog niet uitgevoerd.

      • Indien vc.credentialStatus aanwezig is, MOET de revocatiestatus worden gecontroleerd.

  • Verificatie deelname GBC:

    • De identiteit van de credential issuer (iss) MOET worden vastgesteld als een vertrouwde GBC‑deelnemer. Op termijn zal deze controle uitgevoerd worden door een controle in ZORG-AB. Vooralsnog zal de controle worden uitgevoerd tegen een interne lijst van vertrouwde GBC deelnemers.

  • did:web specifieke validaties:

    • Het domein dat wordt gebruikt in een did:web identifier moet een top-level domain hebben met voldoende betrouwbaarheid en juridische afdwingbaarheid. Binnen AORTA is het gebruik van het .nl verplicht. Dit waarborgt dat domeinnamen vallen onder Nederlands recht en dat de SIDN als registerhouder voldoende garanties biedt ten aanzien van eigenaarschap en geschilbeslechting.

  • PatientEnrollmentCredentialspecifieke verificaties:

    • Het vc.type MOET PatientEnrollmentCredential bevatten.

    • Het pastype in de iss claim MOET gelijk zijn aan Z (zorgverlenerpas) of N (Medewerkerspas op naam).

    • De geldigheidsduur van het credential MAG maximaal 18 maanden bedragen.

    • Indien een verloopdatum is opgenomen, MOET deze voor de expires‑datum van de signing key zijn.

JavaScript errors detected

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

If this problem persists, please contact our support.