Overblik over servicen

Nedstående diagram viser opbygningen af FGVHR-servicen:

FGVHR-Overblik

Sikkerhed

Brugertyper

Der findes følgende brugertyper i FGVHR:

  • Borger
  • Administrativ
  • System

De enkelte brugertyper bestemmes udfra modellen, der udstilles i Security API. Disse regler er opsummeret i tabellerne nedenfor.

Brugertypen: BorgerVerifikationMapning til FgvhrActor
SecurityContextTicketAudienceMatche audience som findes som konfiguration
 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være CitizenactorType


IdentifierFormatSkal være CPR


IdentifierSkal være satactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


CredentialsVerificeres ikke - må gerne være der


PersistentUniqueKeyVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

Organisation
Må ikke være der

Client
Verificeres ikke - må gerne være der


Brugertypen: AdministrativVerifikationMapning til FgvhrActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthcareProfessionalactorType


IdentifierFormatSkal være CPR


IdentifierSkal være satactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


Credentials.NationalRoleSkal være der - og skal matche config variable i FGVHR


PersistentUniqueKeyVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være derorganisationIdentifier


identifierFormatSkal være der og skal være CVR


nameSkal være derorganisationName

Client
Verificeres ikke - må gerne være der
Brugertypen: SystemVerifikationMapning til FgvhrActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUser
Må ikke være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være deractorId


IdentifierFormatSkal være der og skal være CVRactorIdType


persistentUniqueKeySkal være der ved kald gennem FSK snitflade.
Bruges til whitelisting af de anvendersystemer der skal hente status for en borger. FGVHR skal konfigureres med de certifikater der har adgang.
clientKey

Database model

Datamodel

Datamodellen består af en tabel der hedder 'citizen_consent' og den har følgende kolonner:

kolonneTypebeskrivelse
idINT(11)Tabellens primære nøgle (ikke relevant for scenarierne).
uuid
Unik ID for rækken
patient_idVARCHAR(64)Patientens cpr nummer
patient_id_sourceVARCHAR(64)Typen af patient_id. Dvs. kun 'CPR' lige nu
created_dateDATETIME(3)Tidspunktet hvor rækken oprettes i databasen. Bemærk at for dette tidstempel er præcisionen millisekunder.
citizen_signing_dateDATEDatoen borgeren har angivet på blanketten (tom hvis den ikke kommer fra en blanket)
valid_fromDATEDatoen hvor registreringen er gældende  (= created_date + 7 dage). Bemærk dette felt indeholder ikke noget tidsstempel, da fravalget er gældende fra denne dato.
statusVARCHAR(20)Nuværende status for borgerens fravalg ('ACTIVE', 'INACTIVE', 'ENTERED-IN-ERROR')
actor_roleVARCHAR(20)Angiver hvem der har foretaget registreringen. Mulige værdier: 'CITIZEN' eller 'ADM' (Borger eller Administrativ medarb. vha. blanket)
actor_idVARCHAR(64)Angiver id for den der har foretaget registreringen. Dvs. enten et cpr nummer eller en SOR kode
actor_id_sourceVARCHAR(64)Typen af actor_id. Dvs. enten 'CPR' eller 'SOR'

Scenarier

I det følgende beskrives en række scenarier og hvordan de tilhørende data ser ud. Rækker bliver aldrig slettet eller rettet - der bliver altid kun tilføjet nye rækker. Så fordelen ved denne løsninger er at historikken bevares.

Der er anvendt forsimplede uuid'er for læsbarhedens skyld.

NrScenarieuuidpatient_idpatient_id_sourcecreated_datecitizen_signing_datevalid_fromstatusactor_roleactor_idactor_id_source
Registrering
1Borger over 60år opretter selv registreringdab09aa6fec0101611234

'CPR'

09/08/2023 12:00:00.000NULL15/08/2023

'ACTIVE'

'CITIZEN'0101611234'CPR'












2Borger under 60år opretter selv registreringOprettes ikke





















3Adm opretter registrering for borger over 60 årb5636bd8d16c0101611234'CPR'09/08/2023 12:00:00.00001/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'












4Borger over 60år opretter selv registrering55e8864cb06d0101611234

'CPR'

09/08/2023 12:00:00.000NULL15/08/2023

'ACTIVE'

'CITIZEN'0101611234'CPR'

Borger sletter registreringenf265453da1240101611234

'CPR'

07/09/2023 12:00:00.000NULL07/09/2023

'INACTIVE'

'CITIZEN'0101611234'CPR'
Sletning
5Adm opretter registrering for borger over 60 år03c2aed5b8560101611234'CPR'09/08/2023 12:00:00.00001/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'

Adm sletter registreringen8b3eed7ed6c80101611234'CPR'07/09/2023 12:00:00.00027/08/202307/09/2023'INACTIVE''ADM'275421000016009'SOR'












6Adm opretter registrering for borger over 60 år12a97d33c3610101611234'CPR'09/08/2023 12:00:00.00001/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'

Adm sletter registreringen der markere som fejlregistrering40215a3ef2c90101611234'CPR'07/09/2023 12:00:00.000
NULL'ENTERED-IN-ERROR''ADM'275421000016009'SOR'












7Adm opretter registrering for borger over 60 årb893fa943e450101611234'CPR'09/08/2023 12:00:00.00001/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'

Adm sletter registreringen17b18c1720be0101611234'CPR'07/09/2023 12:00:00.00027/08/202307/09/2023'INACTIVE''ADM'275421000016009'SOR'

Adm sletter registreringen der markere som fejlregistrering8c20aaef3f080101611234'CPR'08/09/2023 12:00:00.000
NULL'ENTERED-IN-ERROR''ADM'275421000016009'SOR'
Opdatering
8Adm opretter registrering for borger over 60 år817db31e97d30101611234'CPR'09/08/2023 12:00:00.00001/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'

Adm sletter registreringen der markere som fejlregistreringba8c620ba79d0101611234'CPR'09/08/2023 13:00:00.000
NULL'ENTERED-IN-ERROR''ADM'275421000016009'SOR'

Adm opretter registrering for borger over 60 årcd2dcc3c1b540101611234'CPR'09/08/2023 13:05:00.54604/08/202315/08/2023'ACTIVE''ADM'275421000016009'SOR'


Modellen skal læses på følgende måde:

Indenfor et givent CPR nummer er det altid rækken med den seneste 'created_date' der er gældende.

Hvis status er 'ENTERED-IN-ERROR', så er denne og den foregående række ikke gyldige. Dvs. i scenarie nr. 6 har borgeren ikke et aktivt fravalg, mens i scenarie nr. 7 har borgeren et aktivt fravalg.

Integrationer

MinLog

Der er lavet en integration til MinLog der anvendes, når der ændres i en borgers fravalg. Se detaljerne under afsnittet "Beslutninger" længere nede på siden.

Ved manglende adgang til MinLog-servicen vil servicekaldet fejle.

FGVHR anvender MinLog Producer-biblioteket til at registrere i Minlog2.

NAS

Alle ændringer af aktive fravalg afstedkommer adviseringer til NAS. Dog sendes advisering kun straks ved sletninger. Ved fravalg der først bliver aktive i fremtiden, opsamles adviseringer og afsendes af et baggrundsjob, på den dato hvor fravalget bliver aktivt.

Bemærk, der sendes ikke adviseringer ved sletning af fravalg, der ikke er aktive.

Ved manglende adgang til NAS-servicen vil servicekaldet til sletning fejle.

Beskedformat

Det anvendte topic kan konfigureres (se driftsvejledningen).

Indholdet i notifikationen består af et ConsentUpdatedNotification-objekt, som blot indeholder dags dato. Borgerens ID sættes på NotifyContent i id-attributten.

Se følgende schema for ConsentUpdatedNotification:

ConsentUpdatedNotification Schema
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://sundhedsdatastyrelsen.dk/Fravalg-Af-Genoplivning/2023/06/01/"
           targetNamespace="http://sundhedsdatastyrelsen.dk/Fravalg-Af-Genoplivning/2023/06/01/"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           version="1.0">

    <xs:complexType name="ConsentUpdatedNotification">
        <xs:annotation>
            <xs:documentation>
                NAS Notification request
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="date" type="tns:DateType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="DateType">
        <xs:attribute name="value" type="xs:date" use="required"/>
    </xs:complexType>
</xs:schema>

Her ses et eksempel på en advisering til NAS:

Notify eksempel
 <ns3:Notify xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:ns3="http://docs.oasis-open.org/wsn/b-2"
            xmlns:ns4="http://docs.oasis-open.org/wsn/t-1"
            xmlns:ns5="http://www.w3.org/2005/08/addressing"
            xmlns:ns6="http://docs.oasis-open.org/wsrf/bf-2"
            xmlns:ns7="http://docs.oasis-open.org/wsrf/rp-2" xmlns:ns8="http://nsi.dk/advis/v10"
            xmlns:ns9="http://sundhedsdatastyrelsen.dk/Fravalg-Af-Genoplivning/2023/06/01/">
            <ns3:NotificationMessage>
                <ns3:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
                    TESTNAS-TOPIC1</ns3:Topic>
                <ns3:Message>
                    <ns8:NotifyContent id="1010109999" idType="cpr">
                        <ns9:ConsentUpdatedNotification>
                            <ns9:date value="2023-10-30" />
                        </ns9:ConsentUpdatedNotification>
                    </ns8:NotifyContent>
                </ns3:Message>
            </ns3:NotificationMessage>
        </ns3:Notify>

Person Information Service.

Gennem kald til "person information service" foretages validering af CPR-nummer og en persons alder. Minimumsalderen for fravalg er konfigurerbart (se driftsvejledningen).

Beslutninger ift. arkitektur og jura

Følgende tabel er beslutninger, som har indvirkning på arkitekturen bag FGVHR

DatoEmneProblem, beskrivelse og beslutningAfklaret med
14.08.2023Optimistisk låsning ved skrivning til registeret

Problem: Er der behov for optimistisk låsning, således der ikke sker en oprettelse/ændring af data bagom ryggen på den visning man nu ser?

Beskrivelse: Der er kun to klienter som kan skrive data til register for fravalg. Den ene er borgeren selv via sundhed.dk, den anden er en administrativ medarbejder via NADM snitfladen. Administrative medarbejdere indtaster borgerens data fra papirblanketter indsendt fra de borgere som ikke er kyndige med det digitale. Sandsynligheden for at en borger skriver egne data via sundhed.dk på samme tid en administrativ medarbejder skriver borgerens data via NADM er defor minimal.

At indføre optimistisk låsning på nuværende tidspunkt, kræver en ændring til læse- og registreringssnitfladen, da der skal indføres en ekstra kolonne i databasen, eksempelvis "replaces_uuid" som fortæller hvilken række som erstattes. Derved kan registeret se om der er kommet ny data ind i mellemtiden for borgeren inden der skrives.
Problemstillingen er at snitfladerne er udsendt (pr. 1/7-2023) og en ændring af snitfladen på nuværende tidspunkt kan resultere i en samlet forsinkelse af projektet. Risikoen for at der skrives data bag om ryggen på enten borgeren eller den administrative medarbejder er så lille at vi ikke skal indføre ændringen ift. optimistisk låsning for borgerens registrering af fravalg.

Beslutning: Der indføres ikke optimistisk låsning ved skrivning ift nuværende snitflade

NSP
14.08.2023Historik på data i FGVHR

Problem: Må borgerens historiske registrering af fravalg samt tilbagetrækninger opbevares i FGVHR?

Beskrivelse: "Fravalgs-registeret" er lige nu designet til at opbevare al historik på borgerens registrerede fravalg, og ikke kun den aktuelle registrering. Data slettes først et år efter borgeren er registreret som afdød i CPR-registeret.

Det betyder at for en borger som har registreret fravalg, og senere trækker registreringen tilbage, vil man kunne se i registeret hvornår disse transaktioner er foretaget.
Det er muligt at se alle historiske registreringer via den administrative brugergrænsefladen (NADM)

Årsagen til at historik bør være tilgængelig i FGVHR er oplysningernes følsomhed, således der aldrig kan dannes tvivl om hvad borgerens registrering har været på et hvilket som helst tidspunkt.
Et scenarie som skal tænkes ind er borgere som registrerer et fravalg, fortryder registreringen, for derefter at registrere sig igen o.s.v. Der vil det være vigtigt at kunne dokumentere at disse handlinger er foretaget.

Beslutning: Juridisk afdeling godkender at historikken opbevares omkring fravalg af genoplivningsforsøg. De mener derfor, at der ikke er et problem med hjemlen til opbevaring af disse data. Der har tidligere været henvendelser på VAR og Organdonor omkring dette, hvor de også kom frem til, at fravalg og tilvalg er vigtig historisk. Særligt ift. klagesager hos STPK - hvis fx en pårørende påstår, at deres familiemedlem ikke var registeret på tidspunktet, fordi de havde overbevist dem, om ikke lade sig registrere og bede om genoplivningsforsøg ved hjertestop, men så har familiemedlemmet ændret valget igen lige op til dødsfaldet.

Om data skal vises for borgeren er ikke givet. Derfor skal historik udelukkende udstilles til den administrative brugergrænseflade for nuværende.

SDS's Juridiske afdeling
25.05.2023Version af FHIR profil

Problem:  Den 26.03.2023 blev FHIR release 5 frigivet, skal FGVHR's snitflade opdateres tilsvarende?

Beskrivelse: Oprindeligt er snitfladen til FGVHR profileret efter version 4: http://hl7.org/fhir/R4/consent.html  i mellemtiden 26/3 er FHIR release 5 blevet frigivet http://hl7.org/fhir/R5/consent.html

Der er nogle mindre forskelle, bl.a. på kardinaliteter og på datatyper og konstantværdier, så spørgsmålet er om SDS vil understøtte Release 4 af modellen, eller den Release 5?

Beslutning: Da der er tale om mindre justeringer baseret på en R4-R5 sammenligning, og vi samtidig kan sige, at hvis R5 havde været til rådighed, da vi lavede den første modellering, så havde vi vel valgt R5 uden at blinke ret meget, så peger de to ting tilsammen på, at vi skal basere os på version 5.
Eneste argument for at blive på R4 ville være, hvis vi allerede havde noget andet, der anvendte/refererede til Consent i R4, ifølge NSP er det dem ikke bekendt.

Beslutning: Snitfladen opdateres til FHIR release version 5

NSP
27.03.2023Skrivning til Minlog

Problem: I hvilke situationer skal FGVHR skrive til Minlog?

Beslutning:

  1. Der skrives til borgerens Minlog når registrereringen oprettes/slettes - uanset om det er borgeren selv der ændrer via sundhed.dk, eller om det er en administrativ medarbejder som behandler en papirblanket.
  2. Der skrives til borgerens Minlog når en administrativ medarbejder henter oplysninger om en borgers registrering i FGVHR
  3. Der skrives ikke til Minlog når registreringen læses af borgeren selv.
  4. Der skrives ikke til Minlog når status hentes via Fælles Stamkort grænsefladen

Det vil forventeligt være meget få logninger, og desuden vil enhver tvivl om hvornår noget er ændret, derfor udvides den sædvanlige logning med retistreringer fra borgeren selv.

SDS's Juridiske afdeling
23.01.2023Sundhedsfaglig adgang til borgerens registrering

Problem: Der er efterspurgt adgang til borgerens registrering uden om Fælles Stamkort, eksempelvis via replikering - kan det tillades?

Beslutning: Status om borgerens fravalg for genoplivningsforsøg ved hjertestop udestilles kun til sundhedsfaglige systemer via Fælles Stamkort.

NSP
SDS's juridiske afdeling
  • No labels