Rollevelger i Bliksund - EWA Innsynsklient
Dette dokumentet gjelder problemstilling hos kunder der datastrukturen for brukerne ikke kan gi oss strukturert kobling mellom brukerens avdelinger og tildelte rolle(r) i OpenIdConnect tokenet.
Hvorfor trenger vi (Bliksund systemet) denne koblingen?
Pasientjournaler ført i Bliksund EWA appen blir koblet til en avdelings ID basert på ressursen (f.eks. ambulansen) som førte den via ressursens stasjon og en organisjons id basert på helseforetaket stasjonen tilhører.
Det skal være mulig å gi en bruker rettigheter, via rolletilhørlighet, til å se journaler ført på en spesifikk avdeling eller organisasjon.
Systemet må vite hvilken avdeling en bruker har en slik rolle fra for å kunne gjøre filtrering av journaler basert på avdeling/organisasjon.
Løsning
Det blir implementert en rollevelger i Innsynsklienten som brukeren blir redirigert til når de logger inn.
Rollevelgeren leser alle avdelingene (RESH-IDer) fra claims i brukerens token. Disse blir sjekket opp mot en konfigurert mapping for å presentere brukeren med en liste brukervennlige avdelinger de kan velge mellom.
Rollevelgeren leser også alle roller fra tokenet, henter ut brukervennlige navn via konfigurert mapping og presenterer disse som valg for brukeren.
Brukeren må velge både avdeling og rolle før de kan gå videre. Dersom brukeren kun har 1 RESH-id med mapping og en rolle med mapping vil disse være forhåndsvalgt slik at brukeren kan klikke seg videre med ett trykk.
Når brukeren har valgt avdeling og rolle vil det kun være disse valgene som ligger til grunn for all filtrering av journaler og andre objekter i EWA systemet.
RESH-ID mapping
Systemet må inneholde en konfigurasjon for å kunne kartlegge RESH-IDer til brukervennlige avdelingsnavn. Denne kartleggingen må også inneholde IDen til organisasjonen avdelingen tilhører.
Eksempel:
reshid | departmentName | organizationId |
---|---|---|
5432 | Bergen, Sentrum sør-vest | 983974724 |
5678 | Haukeland akuttmottak | 983974724 |
Denne kartleggingen vil lagres i EWA databasen via Migration and Seeding Tool som leser den fra en importerbar JSON fil.
Eksempel JSON struktur:
[{
"reshid": "5432",
"departmentName": "Bergen, sentrum sør-vest",
"organizationId": "983974724"
},
{
"reshid": "5678",
"departmentName": "Haukeland akuttmottak",
"organizationId": "983974724"
}]
Rollenavn mapping
For å kunne presentere brukeren med lett lesbare rollenavn må den eksisterende kartleggingskonfigurasjonen av rolle til aksessrettigheter utvides med et DisplayName.
Denne utvidete konfigurasjonen er valgfritt, men sterkt anbefalt i systemoppsett som skal ta i bruk rollevelgeren.
RoleToAccessRights.json eksempel med ny verdi:
[{
"Role": "sys_hbe_journalregistrering",
"DisplayName": "Ambulansemedarbeider, Bergen",
"AccessRights": [
"OrganizationClient",
"UserJournalView",
"UserJournalEdit",
"UserJournalComplete"
]
},
{
"Role": "sys_akuttmottak",
"DisplayName": "Akuttmottaksmedarbeider",
"AccessRights": [
"LiveView"
]
}]
Flytbeskrivelse
Forutsettelser:
- Bliksund EWA systemet er konfigurert til å bruke OpenIdConnect.
- Innsynsklienten er konfigurert til å bruke rollevelgeren.
- EWA databasen inneholder konfigurasjon for RESH-ID mapping.
Start: En bruker navigerer til Bliksund EWA Innsynsklienten
- Brukeren blir omdirigert til federert påloggingsløsning
- Brukeren logger inn via federert påloggingsløsning
- Federert påloggingsløsning omdirigerer brukeren tilbake til Innsynsklienten
- Innsynklienten omdirigerer brukeren til rollevelgeren
- Rollevelgeren gjør oppslag i RESH-ID mapping med brukerens RESH-IDer for å presentere brukervennlig avdelingsliste.
- Rollevelgeren gjør oppslag i rolle til aksessrettighets mapping med brukerens roller for å presentere brukervennlig rolleliste.
- Brukeren velger riktig kombinasjon av avdeling og rolle basert på det tjenestlige behov for sesjonen.
- Brukeren bekrefter at valgene er riktige ved å trykke "Forsett".
- Brukeren blir omdirigert til den opprinnelige siden brukeren prøvde å aksessere.
Teknisk flyt
Vi kommer til å bruke en Cookie for å lagre valgt avdeling og rolle for sesjonen.
Dersom brukeren er logget inn vil den alltid bli omdirigert til rollevelgeren så lenge denne cookien ikke er satt uansett hvilket Insight endepunkt brukeren prøver å aksessere.
Forutsettelser:
- Bliksund EWA systemet er konfigurert til å bruke OpenIdConnect.
- Innsynsklienten er konfigurert til å bruke rollevelgeren.
- EWA databasen inneholder konfigurasjon for RESH-ID mapping.
Start: En bruker navigerer til Bliksund EWA Innsynsklienten.
- Før brukeren blir omdirigert til federert påloggingsløsning blir cookie ugyldiggjort ut dersom den eksisterer.
- Se punkt 1-3 av Flytbeskrivelse ovenfor.
- Brukeren har nå et gyldig token for sesjonen.
- Et filter sjekker om cookie er gyldig før forespørseler blir utført av Innsynsklienten.
- Filteret omdirigerer brukeren til rollevelgeren dersom cookie ikke er gyldig.
- Når brukeren trykker fortsett etter å ha valgt avdeling og rolle i rollevelgeren:
- Valgene blir lagret i cookie med utløp når sesjonen utløper.
- Brukeren blir omdirigert til den opprinnelige siden brukeren prøvde å aksessere.