Page History
...
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Sikkerhed
Brugertyper
Der findes følgende brugertyper i FGVHR:
...
| Brugertypen: System | Verifikation | Mapning til FgvhrActor | ||
| SecurityContext | Ticket | Audience | Verificeres ikke - må gerne være der | |
| Validity | Er valid | |||
| Message | Verificeres ikke - må gerne være der | |||
| ActingUser | Må ikke være der | |||
| PrincipalUser | Må ikke være der | |||
| Organisation | Identifier | Skal være der | actorId | |
| IdentifierFormat | Skal være der og skal være CVR | actorIdType | ||
| persistentUniqueKey | Skal 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:
| kolonne | Type | beskrivelse |
|---|---|---|
| id | INT(11) | Tabellens primære nøgle (ikke relevant for scenarierne). |
| uuid | Unik ID for rækken | |
| patient_id | VARCHAR(64) | Patientens cpr nummer |
| patient_id_source | VARCHAR(64) | Typen af patient_id. Dvs. kun 'CPR' lige nu |
| created_date | DATETIME(3) | Tidspunktet hvor rækken oprettes i databasen. Bemærk at for dette tidstempel er præcisionen millisekunder. |
| citizen_signing_date | DATE | Datoen borgeren har angivet på blanketten (tom hvis den ikke kommer fra en blanket) |
| valid_from | DATE | Datoen 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. |
| status | VARCHAR(20) | Nuværende status for borgerens fravalg ('ACTIVE', 'INACTIVE', 'ENTERED-IN-ERROR') |
| actor_role | VARCHAR(20) | Angiver hvem der har foretaget registreringen. Mulige værdier: 'CITIZEN' eller 'ADM' (Borger eller Administrativ medarb. vha. blanket) |
| actor_id | VARCHAR(64) | Angiver id for den der har foretaget registreringen. Dvs. enten et cpr nummer eller en SOR kode |
| actor_id_source | VARCHAR(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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<?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:
| kolonne | Type | beskrivelse |
|---|---|---|
| id | BIGINT(20) | Tabellens primære nøgle |
| uuid | VARCHAR(128) | Unik ID for rækken |
| patient_id | VARCHAR(64) | Patientens cpr nummer |
| patient_id_source | VARCHAR(64) | Typen af patient_id. |
| digital_template_id | VARCHAR(256) | Template ID for digitalt brev |
| physical_template_id | VARCHAR(256) | template ID for fysisk brev |
| period | VARCHAR(64) | perioden mellem hver afsendelse af brevet |
| send_at | DATETIME(3) | tidspunkt for næste afsendelse af brevet |
| last_error | DATETIME(3) | tidspunkt for sidste fejl |
| error_counter | INT | antal fejl |
| send_status | VARCHAR(64) | status på forsendelsen: imens letter behandles sættes værdien til IN_PROGRESS, ellers er den null |
| created_date | DATETIME(3) | Tidspunktet hvor rækken oprettes i databasen. |
recipient_details:
| kolonne | Type | beskrivelse |
|---|---|---|
| id | BIGINT(20) | Tabellens primære nøgle |
| letter_id | BIGINT(20) | Fremmednøgle til letter tabellen |
| recipient_key | VARCHAR(256) | Nøgle til brevskabelon |
| recipient_value | VARCHAR(256) | Værdi til brevskabelon |
| created_date | DATETIME(3) | Tidspunktet hvor rækken oprettes i databasen. |
substitution_values:
| kolonne | Type | beskrivelse |
|---|---|---|
| id | BIGINT(20) | Tabellens primære nøgle |
| letter_id | BIGINT(20) | Fremmednøgle til letter tabellen |
| substitution_key | VARCHAR(256) | Nøgle til brevskabelon |
| substitution_value | VARCHAR(512) | Værdi til brevskabelon |
| created_date | DATETIME(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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<?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 | ||||||||
| ||||||||
<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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
<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
...