Page History
...
Flowet set fra en datakilde, der skal kunne pseudonymisere oplysninger, er relativt simpelt:
Figur 5: Flow services, der skal kunne pseudonymisere oplysninger.
- Dataservicen modtager OIOIDWS billetten, afkoder den, og løber igennem listen af data, som skal afleveres til borgervisningssystemet for at kontrollere, om der skulle være medarbejdere med tilknytning til de CVR-numre, der skal sløres for. Hvis der er sådan nogle, skal der beregnes et pseudonym og navnet skal udskiftes med pseudonymet. Til at skabe sikre og tværgående ensrettede pseudonymer, skal dataservicen bruge et ”salt”. Det skifter periodisk, og skal derfor hentes periodisk, f.eks. en gang i timen, via getCurrentSalt() servicen på IDSAS på NSP.er også indlejret i billetten.
- Med sløringsinformationerne fra billetten, saltet og listen over afdelinger, er det nu muligt at foretage sløring/pseudonymiseringPseudonymer beregnes lokalt gennem en national standardiseret algoritme. Det gør det super-effektivt at beregne pseudonymer.
- Det i fornødent omfang pseudonymiserede data returneres til borgerinterfacesystemet.
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml
skinparam sequence {
LifeLineBackgroundColor #FF4E26
ParticipantBackgroundColor #72BEDB
}
participant Borgervendtapp
participant STS
participant IDSAS
participant Datakilde
Activate Borgervendtapp
Borgervendtapp-> STS: BST2IDWS
Activate STS
group #EAEAEA Skab Identitytoken
'Her henter STS'en borgerspecifikke sløringer
STS -> IDSAS: getBlurredOrganisations()
Activate IDSAS
return [orgId*]
'Her henter STS'en alle afdelingssløringer
STS -> IDSAS: listAllBlurredOrgs()
Activate IDSAS
return [org-id*]
end
return IdentityToken
Borgervendtapp -> Datakilde: HentData(IdentityToken)
Activate Datakilde
Datakilde -> Datakilde: Pseudonymisér data
return Pseudonymiseret data
Deactivate Borgervendtapp
@enduml |
Typiske skridt hvis du skal tilrette
...
en datakilde til at kunne pseudonymisere
A – Aftaler og whitelisting
Der er en række ting, der skal være på plads inden du kan få adgang til alt det, du skal bruge til opgaven.
...
Figur 6: Screenshot fra whitelist-siden.
Beskriv at det drejer sig om whitelistning ift. IDSAS (kun getCurrentSalt() metoden). Du skal i processen være klar til at give oplysninger om det kaldende system mv.
Step 2: Systemcertifikat (FOCES3)
Du skal bruge et (eller to) systemcertifikat ift.
- ”trust / audiencerestriction” i OIOIDWS billetten. Certifikatet skal indmeldes ifm. anmodningen om at kunne anvende STS til OIOIDWS billetomveksling.
- til at skabe DGWS tokens, som skal anvendes i det periodiske kald til getCurrentSalt().
...
B - Afkodning af OIOIDWS billet (hvis I ikke allerede gør det)
...
- Se en indflyvning til anvendelse af OIOIDWS her: Anvendelsen af OIOIDWS i nationale tjenester på sundhedsområdet
- Mere om Blurring Instructions Profile og Subject Relation profile findes her: Identitetssløring
For nogle er der måske hjælp at hente ved at bruge Det kan klart anbefales at anvende SEAL.Java eller SEAL.NET til dette, hvis I arbejder i enten Java eller .NET.Se Se mere her:
- Java: https://www.nspop.dk/display/public/web/SEAL.JAVA+-+Guide+til+udviklere
- .NET: https://www.nspop.dk/display/public/web/SEAL.NET+-+Guide+til+anvendere
Trin 4: Kald af DGWS snitflade getCurrentSalt() hos IDSAS
- Først skal man have et ’SystemIDkort’ hos STS’en. Det kan du læse lidt mere om her:
https://www.nspop.dk/display/public/web/STS+-+Guide+til+anvendere
...
- Kald af getCurrentSalt() Se vejledning her:
https://www.nspop.dk/display/NDPV/IDSAS+-+Guide+til+anvendere%3A+Opslag
...
C - Beregning af pseudonymer
Hvis der er registreret sløringer for borgeren, bør du nu have alt det, der er nødvendigt for at pseudonymisere:
- Fra OIOIDWS billetten:
CVR-numre på de organisationer, der vil have deres medarbejdere pseudonymiseret overfor denne borger - SOR og SHAK koder for de afdelinger, der vil have alle registreringer fra disse afdelinger pseudonymiseret (uanset hvilken borger, der er logget ind)
- Borgerens ID (CPR-nummer)
Bemærk: hvis brugeren er en befuldmægtiget eller forældre, der ser data for en anden person, skal man bruge ID'et for den, man ser data på (fuldmagtsgiverens eller barnets). - For- og efternavne på de sundhedsfaglige, der skal sløres
- "Salt” Fra getCurrentSalt():
”salt” som du skal bruge til at beregne pseudonymer. (Se eksempel mv. "Appendiks 1 – Test af identitestsløring" samt "Appendiks 3 – Test af afdelingssløring")
Pseudonymer skal være UUID type 5. Hvis du koder i Java, kan du finde et godt eksempel her: https://stackoverflow.com/questions/40230276/how-to-make-a-type-5-uuid-in-java
...
- UUID type 5 namespacet skal være ns:OID ("6ba7b812-9dad-11d1-80b4-00c04fd430c8”)
- Input til UUID generatoren skal være ”FORNAVN(E)+EFTERNAVN(E)+BORGER_ID+SALT” (BORGER_ID er indtil videre CPR)
- Alle navne skal være Uppercase og alle mellemrum i fornavn(e) og efternavn(e) skal erstattes med ’+’
- Saltet modtages BASE64 encoded fra getCurrentSalt(). Det skal appendes til navnene som tekst inden der konverteres til bytes i selve UUID genereringen (husk ’+’ mellem sidste efternavn og salt).
- Alle konverteringer fra strenge til bytes skal være baseret på UTF8
- ’plusserne’ (også de med rødt angivne i b) skal ’Plusserne’ (angivet i inputtet i punkt 2) skal også inkluderes i inputtet
Se korrekte også ”Appendiks B 2 – Eksempler på korrekte pseudonymer”
I kan også teste jeres kode op mod pseudonymer på dette site: https://www.javainuse.com/uidv5, husk at anvende OID namespacet.
Ændringslog
| 1.0 | 2023-09-21 | Side oprettet | SDS |
| 1.1 | 2024-01-03 | Ændret med sekvensdiagram mv. | JRI |
| 1.2 | 2024-01-29 | Pseudonymiseringsalgoritme fejl ændret | JRI |
| 1.3 | 2024-08-28 | Fjernelse af værge | Anni |
| 1.4 | 2024-10-16 | Fjernet link til ældre udgave af BIP profil | Anni |



