Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Gliffy Diagram
macroIdb3d2a3f5-05db-4e36-8dad-bf88e6e539d8
displayNameFGVHR-Overblik
nameFGVHR-Overblik
pagePin1314

Sikkerhed

Brugertyper

Der findes følgende brugertyper i FGVHR:

...

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

...

Citizen Content

Database design

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.

...

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:

Code Block
languagexml
titleConsentUpdatedNotification Schema
linenumberstrue
collapsetrue
<?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:

Digital post

Digital post har følgende tabeller

Letter:

kolonneTypebeskrivelse
idBIGINT(20)Tabellens primære nøgle
uuidVARCHAR(128)Unik ID for rækken
patient_idVARCHAR(64)Patientens cpr nummer
patient_id_sourceVARCHAR(64)Typen af patient_id. 
digital_template_idVARCHAR(256)Template ID for digitalt brev
physical_template_idVARCHAR(256)template ID for fysisk brev
periodVARCHAR(64)perioden mellem hver afsendelse af brevet
send_atDATETIME(3)tidspunkt for næste afsendelse af brevet
last_errorDATETIME(3)tidspunkt for sidste fejl
error_counterINTantal fejl
send_statusVARCHAR(64)status på forsendelsen: imens letter behandles sættes værdien til IN_PROGRESS, ellers er den null
created_dateDATETIME(3)Tidspunktet hvor rækken oprettes i databasen.

recipient_details:

kolonneTypebeskrivelse
idBIGINT(20)Tabellens primære nøgle
letter_idBIGINT(20)Fremmednøgle til letter tabellen
recipient_keyVARCHAR(256)Nøgle til brevskabelon
recipient_valueVARCHAR(256)Værdi til brevskabelon
created_dateDATETIME(3)Tidspunktet hvor rækken oprettes i databasen.


substitution_values:

kolonneTypebeskrivelse
idBIGINT(20)Tabellens primære nøgle
letter_idBIGINT(20)Fremmednøgle til letter tabellen
substitution_keyVARCHAR(256)Nøgle til brevskabelon
substitution_valueVARCHAR(512)Værdi til brevskabelon
created_dateDATETIME(3)Tidspunktet hvor rækken oprettes i databasen.


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:

Code Block
languagexml
titleConsentUpdatedNotification Schema
linenumberstrue
collapsetrue
<?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
Code Block
languagexml
titleNotify eksempel
linenumberstrue
collapsetrue
 <ns3:Notify xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:ns3="http://docs.oasis-open.org/wsn/b-2"attributeFormDefault="unqualified"
            xmlns:ns4="http://docs.oasis-open.org/wsn/t-1"version="1.0">

    <xs:complexType name="ConsentUpdatedNotification">
        <xs:annotation>
            xmlns:ns5="http://www.w3.org/2005/08/addressing"<xs:documentation>
            xmlns:ns6="http://docs.oasis-open.org/wsrf/bf-2"    NAS Notification request
            xmlns:ns7="http://docs.oasis-open.org/wsrf/rp-2" xmlns:ns8="http://nsi.dk/advis/v10"
   </xs:documentation>
        </xs:annotation>
         xmlns:ns9="http://sundhedsdatastyrelsen.dk/Fravalg-Af-Genoplivning/2023/06/01/"><xs:sequence>
            <ns3:NotificationMessage><xs:element name="date" type="tns:DateType"/>
        </xs:sequence>
    </xs:complexType>

    <ns3<xs:TopiccomplexType Dialectname="http://docs.oasis-open.org/wsn/t-1/TopicExpression/SimpleDateType">
        <xs:attribute    name="value" type="xs:date" use="required"/>
    </xs:complexType>
</xs:schema>

Her ses et eksempel på en advisering til NAS:

Code Block
languagexml
titleNotify eksempel
linenumberstrue
collapsetrue
 <ns3:Notify xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
    TESTNAS-TOPIC1</ns3:Topic>
                <ns3:Message>xmlns:ns3="http://docs.oasis-open.org/wsn/b-2"
                    <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). Desuden bruges "deceased" kaldet af slettejobbet, til at afgøre om en person er død, og de gemte fravalg derfor skal slettes.

Slettejob

Servicen indeholder et slettejob, som kan slette fravalg for afdøde personer. Fravalg for en afdød skal slettes et år efter (kan konfigureres til noget andet end et år) efter personen er afgået ved døden.  Registreringen bliver slettet fra databasen.

Sletningen foregår overordnet ved, at der opbygges en arbejdskø der indeholder alle cpr numre for de personer der er død for 1 år siden. PersonInformation Service bruges til at finde disse personer,

     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). Desuden bruges "deceased" kaldet af slettejobbet, til at afgøre om en person er død, og de gemte fravalg derfor skal slettes.

Trifork Digital Post Komponent

For ændringer i borgers aktive fravalg (oprettelse og sletning), laves der et bekræftigelsesbrev til borgeren om det foretrukne valg. Ligeledes laves der et årligt notifikationsbrev tll påmindelse om det foretrukne valg. Brevene oprettes i forbindelse med ændringen og sendes asynkront vha. en Digital Post komponent, som sørger for korrekt udformning for henholdsvis Digital Post for digitale breve og Straalfors for fysiske breve.

Se iøvrigt  beskrivelsen af digitalt post baggrundsjob nedenfor.

Slettejob

Servicen indeholder et slettejob, som kan slette fravalg for afdøde personer. Fravalg for en afdød skal slettes et år efter (kan konfigureres til noget andet end et år) efter personen er afgået ved døden.  Registreringen bliver slettet fra databasen ligesom scheduleret post slettes.

Sletningen foregår overordnet ved, at der opbygges en arbejdskø der indeholder alle cpr numre for de personer der er død for 1 år siden. PersonInformation Service bruges til at finde disse personer,

 

Jobbet består af følgende operationer:


Operation

Beskrivelse

Default operation

Formål: Benyttes til at fylde operationer på stakken, når stakken er tom.

Java klasse: FgvhrDeceasedCleanupSupplier

Batching: For hvert af tallene 00-99, oprettes en "prefix baseret operation"

Shuffles: nej

Andet: -

Prefix baseret operation

Formål: Givet et tal mellem 00 og 99, hentes alle borger id'er af typen cpr fra  som starter med disse cifre.

Java klasse: FgvhrDeceasedPatientIdPrefixCleanupSupplier

Batching: Opretter en mængde "borger id baseret operation", hver med et konfigurerbart antal af disse borger id'er

Shuffles: ja

Andet: -

Borger id baseret operation

Formål: Givet en liste af borger id'er, tages de id'er der tilhører afdøde borgere. Dette afgøres ved kald til PersonInformation.

Java klasse: FgvhrDeceasedPatientIdBatchCleanupSupplier

Batching: Opretter eet "oprydningsjob" med de afdøde borgers id

Shuffles: nej

Andet: -

Oprydningsjob

Formål: Givet en liste af borger id'er slettes i databasen fravalg (citizen_consent, letter, substitution_values og recipient_details) for denne liste af id'er af typen cpr

Java klasse: FgvhrCleanupOperation

Batching: na

Shuffles: na

Andet: -


Digital Post baggrundsjob

Servicen indeholder et baggrundsjob, som sender digital post fra fravalgs servicens til trifork Digital Post Komponent. 

Jobbet består af følgende operationer:


Operation

Beskrivelse

Default operation

Formål: Benyttes til at fylde operationer på stakken, når stakken er tom.

Java klasse: FgvhrDeceasedCleanupSupplier

Batching: For hvert af tallene 00-99, oprettes en "prefix baseret operation"

Shuffles: nej

Andet: -

Prefix baseret operation

Formål: Givet et tal mellem 00 og 99, hentes alle borger id'er af typen cpr fra  som starter med disse cifre.

Java klasse: FgvhrDeceasedPatientIdPrefixCleanupSupplier

Batching: Opretter en mængde "borger id baseret operation", hver med et konfigurerbart antal af disse borger id'er

Shuffles: ja

Andet: -

Borger id baseret operation

Formål: Givet en liste af borger id'er, tages de id'er der tilhører afdøde borgere. Dette afgøres ved kald til PersonInformation.

Java klasse: FgvhrDeceasedPatientIdBatchCleanupSupplier

Batching: Opretter eet "oprydningsjob" med de afdøde borgers id

Shuffles: nej

Andet: -

Oprydningsjob

Formål: Givet en liste af borger id'er slettes i databasen fravalg (citizen_consent, letter, substitution_values og recipient_details) for denne liste af id'er af typen cpr

Java klasse: FgvhrCleanupOperation

Batching: na

Shuffles: na

Andet: -


Se iøvrigt  driftvejledning.

Beslutninger ift. arkitektur og jura

...