Page History
...
I produktion består Stamkortregister-servicen af et komponent to komponenter (war-arkivarkiver) der er deployet på en Wildfly applikationsserver:
- skr-service: Selve Stamkortregister-servicen. Denne afhænger af adgang til 2 MariaDB datasources. Desuden afhænger den af at kunne kalde (skrive til) MinLog-servicen og NAS.
- skr-operations: REST-service til baggrundsjobs, som kaldes af driften.
Ændringslog
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
1.0.0 | 2018-08-31 | Initialt dokument | Trifork |
1.0.11 | 2019-08-02 | Ændret WSDL-stier | Trifork |
1.0.12 | 2019-25-09 | Ajourført | Trifork |
1.0.17 | 2019-08-10 | Ændret SWDL | |
1.0.18 | 2020-10-07 | Opdateret slettejob | KIT |
1.0.19 | 2021-04-13 | Tilføjet NAS | KIT |
1.0.20 | 2021-04-27 | Tilføjet WSDL-sti | KIT |
1.0.21 | 2021-06-08 | Tilføjet WSDL-stier | KIT |
Funktionalitet
Servicen SKR servicen udstiller en række data som beskrevet i anvenderguiden. Komponenten kaldes af anvendere gennem NSP'ens DCC (afkoblingskomponenten), som viderestiller kaldet til servicens webservice-endpoint. Servicen udstiller derudover en række administrative og konfigurationsrelaterede funktionaliter.
...
URL | Funktionalitet |
---|---|
<server>/skr/isAlive | Status-side for servicen. Viser om servicen fungerer korrekt, se afsnittet Overvågning. |
<server>/skr/skr | Webservice-dispatcher (dispatcher videre til korrekt version baseret på SOAP Action) |
<server>/skr/20210602 | Webservice-endpoint (for 20210602 udgave) |
<server>/skr/20200728 | Webservice-endpoint (for 20200728 udgave) |
<server>/skr/20190801 | Webservice-endpoint (for 20190801 udgave) |
<server>/skr/20180501 | Webservice-endpoint (for 20180501 udgave) |
<server>/skr/dksconfig | DCC auto-konfigurations API. Anvendes til konfiguration af NSP'ens DCC. |
<server>/skr/wsdl | HTML-side med links til download af WSDL-filer i hhv. DGWS- og IDWS-udgave. |
<server>/skr/wsdl/dgws20200728 | DGWS WSDL |
<server>/skr/wsdl/idws20200728 | IDWS WSDL |
<server>/skr/wsdl/dgws20210602 | DGWS WSDL |
<server>/skr/wsdl/idws20210602 | IDWS WSDL |
<server>/skr/wsdl/dgws20210408 | DGWS WSDL for migreringssnitflade |
<server>/skr/syncjob/start | Slettejob startes ved kald af denne url. Returnerer tidspunkt for modtaget request og http status kode 200 |
<server>/skr/syncjob/status | Oplysninger om slettejob på den pågældende server. Oplysningerne gemmes i hukommelsen på serveren og fosvinder ved genstart. Der returneres http status kode 200 og følgende data: tidspunkt for sidste afvikling af slettejob på serveren (hvis værdien findes ellers tom værdi), status for sidste afvikling på serveren (true=ingen fejl, false=fejl, tom tekst=ikke afviklet) og fejlbesked ved sidste afvikling (hvis findes ellers er værdien udeladt) |
Daglig drift
Servicen kræver ingen daglig vedligeholdelse udover sædvanlig systemovervågning.
Alt data (inkl. historiske data) for en borger fjernes 1 år efter borgerens død ved hjælp af et slettejob.
Overvågning
Servicen udstiller en status-side (isAlive). På denne side fremgår servicens version, opstartstidspunkt mm. samt status for slettejob.
Eksempel på et response fra status-siden:
Code Block |
---|
200 OK
Title: skr-service
Deployed: 2018-08-10T10:55:17.777Z
Build-Date: 2018-08-10T10:52:22Z
Build-Version: 1.0.0-SNAPSHOT
Builder: A robot
Display time: 2018-08-10T12:57:43.577Z
Delete job: Enabled, Last successful deletion: 1900-01-01T00:00:00Z, Error count: 0 |
HTTP statuskode
Status-siden returnerer følgende HTTP statuskoder afhængig af servicens status:
Daglig drift
Servicen kræver ingen daglig vedligeholdelse udover sædvanlig systemovervågning.
Alt data (inkl. historiske data) for en borger fjernes 1 år efter borgerens død ved hjælp af et slettejob.
Overvågning
Servicen udstiller en status-side (isAlive). På denne side fremgår servicens version, opstartstidspunkt mm. samt status for slettejob.
Eksempel på et response fra status-siden:
Code Block |
---|
200 OK
Title: skr-service
Deployed: 2018-08-10T10:55:17.777Z
Build-Date: 2018-08-10T10:52:22Z
Build-Version: 1.0.0-SNAPSHOT
Builder: A robot
Display time: 2018-08-10T12:57:43.577Z
Delete job: Enabled, Last successful deletion: 1900-01-01T00:00:00Z, Error count: 0 |
HTTP statuskode
Status-siden returnerer følgende HTTP statuskoder afhængig af servicens status:
- 200: Applikationen kører i øjeblikket fint.
- 500: Der
- 200: Applikationen kører i øjeblikket fint.
- 500: Der er opstået en fejl, der kræver indgriben.
...
Følgende tabel over logfiler beskriver, hvilke komponenter der skriver til dem:
Logfilnavn | Indhold | ||||
---|---|---|---|---|---|
skr_service.accesshandler.log | Applikationslog for servicen, som indeholder de vigtigste systemhændelser. Root: WARN | ||||
nsputil-sla-skr.log | SLA-log. Indeholder SLA-logninger for alle kald på servicen. Indeholder desuden SLA-logninger for servicens kald til MinLog og NAS. | ||||
Log for accesshandler-biblioteket. | |||||
access.log | Access-log. | ||||
audit.log | Auditlog. Indeholder logning af, hvem der har kaldt, hvilken SOAP-action der | skr_audit.log | Auditlog. Indeholder logning af, hvem der har kaldt, hvilken SOAP-action der blev kaldt, hvilken person der blev kaldt for, hvordan der blev kaldt (DGWS/IDWS) | , og hvornår der blev kaldt | samt kaldets varighed. |
Whitelisting af anvendere
De enkelte anvendere skal whitelistes til at bruge SKR. Der findes en tabel whitelist til dette formål. Det er anvenders certifikat, der whitelistes.
Følgende eksempel er output fra openssl visning af et PEM encodet certifikat:
Code Block | ||
---|---|---|
| ||
$ openssl x509 -in example.pem -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1495058165 (0x591cc6f5)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=DK, O=TRUST2408, CN=TRUST2408 Systemtest XXII CA
Validity
Not Before: Aug 29 06:25:19 2018 GMT
Not After : Aug 29 06:24:05 2021 GMT
Subject: C=DK, O=Statens Serum Institut // CVR:46837428/serialNumber=CVR:46837428-UID:27910135, CN=Statens Serum Institut - Test VOCES
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:97:4a:f0:06:41:7a:8f:b5:bd:50:49:bf:68:24:
b6:3b:94:54:06:88:9b:78:8b:31:cf:59:19:ea:46:
9a:89:45:74:15:c4:98:2f:2f:4f:8f:dc:db:44:b6:
ce:f9:25:ff:d9:00:50:ef:0a:18:d7:c5:53:8f:ff:
66:ff:32:20:ae:f0:ad:c1:36:48:69:66:62:d0:c6:
45:35:7e:94:6d:c4:b3:ae:95:b6:1d:3d:7c:0d:17:
70:44:8d:05:8e:6d:d4:d0:5b:24:03:19:78:ec:f9:
de:2e:6a:77:64:39:59:5c:e2:c4:e0:74:4f:26:23:
45:06:f4:f8:50:9c:49:5b:de:af:60:29:38:df:fc:
2e:dc:27:c6:19:fc:54:ec:55:b6:77:b6:73:73:19:
86:d9:8f:1f:2f:36:e5:9b:de:ca:c7:d1:5d:a7:06:
8e:fb:cc:4c:cf:3b:d9:6b:79:c9:eb:80:6f:97:df:
c5:69:cd:28:ef:42:7c:84:1d:6a:af:82:38:46:2b:
7f:5c:21:71:1f:13:52:f0:a5:97:91:a2:75:98:4c:
91:90:0c:88:9b:76:d8:f9:4e:65:c2:54:04:7b:87:
a0:ae:c5:dc:12:3e:67:34:ac:59:f0:91:7b:fb:38:
76:d5:64:4c:50:96:2d:70:37:0f:41:cb:99:1d:c4:
06:43
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment, Data Encipherment, Key Agreement
Authority Information Access:
OCSP - URI:http://ocsp.systemtest22.trust2408.com/responder
CA Issuers - URI:http://v.aia.systemtest22.trust2408.com/systemtest22-ca.cer
X509v3 Certificate Policies:
Policy: 1.3.6.1.4.1.31313.2.4.6.3.4
CPS: http://www.trust2408.com/repository
User Notice:
Organization: DanID
Number: 1
Explicit Text: DanID test certifikater fra denne CA udstedes under OID 1.3.6.1.4.1.31313.2.4.6.3.4. DanID test certificates from this CA are issued under OID 1.3.6.1.4.1.31313.2.4.6.3.4.
X509v3 Subject Alternative Name:
email:testcertifikat@ssi.dk
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.systemtest22.trust2408.com/systemtest221.crl
Full Name:
DirName: C = DK, O = TRUST2408, CN = TRUST2408 Systemtest XXII CA, CN = CRL76
X509v3 Authority Key Identifier:
keyid:AB:A8:01:44:19:B0:B3:43:99:DA:FA:7C:CC:D2:00:18:03:E7:3C:BF
X509v3 Subject Key Identifier:
7F:C5:FF:5C:F1:AC:64:D4:08:1C:BB:65:78:01:D4:78:B6:57:71:0C
X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha256WithRSAEncryption
80:c1:84:cd:ea:4f:27:51:33:d5:61:6a:66:b5:5e:54:74:02:
d6:f8:a7:86:75:45:1a:e4:5a:3b:28:d5:3d:24:7b:cf:91:ef:
ce:2e:8d:f4:cf:61:1b:2b:ff:c9:54:12:92:a7:53:58:0d:45:
ba:6d:ec:23:b9:0c:1f:ab:90:d8:de:a6:35:f3:ed:46:63:a3:
06:a0:8b:53:3a:90:d3:d7:fd:4e:70:2e:fc:68:a4:65:d0:62:
0c:bd:21:e3:83:32:7b:2d:cf:82:95:53:c6:1e:24:45:62:b1:
a7:a4:aa:2c:39:60:c3:94:61:b5:ae:5d:30:e3:08:5b:33:89:
c2:44:59:f5:82:e0:62:73:62:9c:a9:c6:49:6a:a0:d7:a8:af:
ee:a2:45:fd:20:58:cf:85:5b:5a:b9:9f:49:78:4d:bb:e4:36:
0c:dc:a3:b0:52:e5:b9:5b:a6:46:0e:70:19:90:c1:96:c5:16:
d9:d1:52:63:df:a8:95:a4:0c:77:ca:e0:bc:c3:31:f4:1c:95:
42:0b:c5:17:e4:b5:d3:d7:ef:f7:5b:b0:ef:57:ac:04:ac:f0:
6c:4a:69:16:d2:ca:35:4a:8e:bb:df:9d:8b:41:80:59:0d:8d:
cb:e6:88:ce:11:b8:dd:6c:76:99:ac:0b:ed:a9:cb:c3:94:05:
1d:9c:84:22
-----BEGIN CERTIFICATE-----
MIIGRTCCBS2gAwIBAgIEWRzG9TANBgkqhkiG9w0BAQsFADBIMQswCQYDVQQGEwJE
SzESMBAGA1UECgwJVFJVU1QyNDA4MSUwIwYDVQQDDBxUUlVTVDI0MDggU3lzdGVt
dGVzdCBYWElJIENBMB4XDTE4MDgyOTA2MjUxOVoXDTIxMDgyOTA2MjQwNVowgY4x
CzAJBgNVBAYTAkRLMS8wLQYDVQQKDCZTdGF0ZW5zIFNlcnVtIEluc3RpdHV0IC8v
IENWUjo0NjgzNzQyODFOMCAGA1UEBRMZQ1ZSOjQ2ODM3NDI4LVVJRDoyNzkxMDEz
NTAqBgNVBAMMI1N0YXRlbnMgU2VydW0gSW5zdGl0dXQgLSBUZXN0IFZPQ0VTMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0rwBkF6j7W9UEm/aCS2O5RU
BoibeIsxz1kZ6kaaiUV0FcSYLy9Pj9zbRLbO+SX/2QBQ7woY18VTj/9m/zIgrvCt
wTZIaWZi0MZFNX6UbcSzrpW2HT18DRdwRI0Fjm3U0FskAxl47PneLmp3ZDlZXOLE
4HRPJiNFBvT4UJxJW96vYCk43/wu3CfGGfxU7FW2d7ZzcxmG2Y8fLzblm97Kx9Fd
pwaO+8xMzzvZa3nJ64Bvl9/Fac0o70J8hB1qr4I4Rit/XCFxHxNS8KWXkaJ1mEyR
kAyIm3bY+U5lwlQEe4egrsXcEj5nNKxZ8JF7+zh21WRMUJYtcDcPQcuZHcQGQwID
AQABo4IC7jCCAuowDgYDVR0PAQH/BAQDAgO4MIGXBggrBgEFBQcBAQSBijCBhzA8
BggrBgEFBQcwAYYwaHR0cDovL29jc3Auc3lzdGVtdGVzdDIyLnRydXN0MjQwOC5j
b20vcmVzcG9uZGVyMEcGCCsGAQUFBzAChjtodHRwOi8vdi5haWEuc3lzdGVtdGVz
dDIyLnRydXN0MjQwOC5jb20vc3lzdGVtdGVzdDIyLWNhLmNlcjCCASAGA1UdIASC
ARcwggETMIIBDwYNKwYBBAGB9FECBAYDBDCB/TAvBggrBgEFBQcCARYjaHR0cDov
L3d3dy50cnVzdDI0MDguY29tL3JlcG9zaXRvcnkwgckGCCsGAQUFBwICMIG8MAwW
BURhbklEMAMCAQEagatEYW5JRCB0ZXN0IGNlcnRpZmlrYXRlciBmcmEgZGVubmUg
Q0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMy42LjEuNC4xLjMxMzEzLjIuNC42LjMu
NC4gRGFuSUQgdGVzdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1
ZWQgdW5kZXIgT0lEIDEuMy42LjEuNC4xLjMxMzEzLjIuNC42LjMuNC4wIAYDVR0R
BBkwF4EVdGVzdGNlcnRpZmlrYXRAc3NpLmRrMIGsBgNVHR8EgaQwgaEwPaA7oDmG
N2h0dHA6Ly9jcmwuc3lzdGVtdGVzdDIyLnRydXN0MjQwOC5jb20vc3lzdGVtdGVz
dDIyMS5jcmwwYKBeoFykWjBYMQswCQYDVQQGEwJESzESMBAGA1UECgwJVFJVU1Qy
NDA4MSUwIwYDVQQDDBxUUlVTVDI0MDggU3lzdGVtdGVzdCBYWElJIENBMQ4wDAYD
VQQDDAVDUkw3NjAfBgNVHSMEGDAWgBSrqAFEGbCzQ5na+nzM0gAYA+c8vzAdBgNV
HQ4EFgQUf8X/XPGsZNQIHLtleAHUeLZXcQwwCQYDVR0TBAIwADANBgkqhkiG9w0B
AQsFAAOCAQEAgMGEzepPJ1Ez1WFqZrVeVHQC1vinhnVFGuRaOyjVPSR7z5Hvzi6N
9M9hGyv/yVQSkqdTWA1Fum3sI7kMH6uQ2N6mNfPtRmOjBqCLUzqQ09f9TnAu/Gik
ZdBiDL0h44Myey3PgpVTxh4kRWKxp6SqLDlgw5Rhta5dMOMIWzOJwkRZ9YLgYnNi
nKnGSWqg16iv7qJF/SBYz4VbWrmfSXhNu+Q2DNyjsFLluVumRg5wGZDBlsUW2dFS
Y9+olaQMd8rgvMMx9ByVQgvFF+S109fv91uw71esBKzwbEppFtLKNUqOu9+di0GA
WQ2Ny+aIzhG43Wx2mawL7anLw5QFHZyEIg==
-----END CERTIFICATE----- |
Det er oplysningen subject serialnumber der skal anvendes i til at indsætte i whitelisting tabellen.
Certifikatet whitelistes ved følgende SQL:
Code Block | ||
---|---|---|
| ||
INSERT INTO whitelist (cvr, function) VALUES ('CVR:46837428-UID:27910135', 'SKR'); |
Slettejob
Servicens slettejob bliver afviklet vha. en udstillet RestController, som kaldes vha. simpelt HTTP GET kald.
Dette gøres for at sikre afviklingen af slettejob i flere-node drift, hvor en loadbalancer sørger for fordeling af kald til bagvedliggende servere.
Driften vedligeholder en cron, som kalder slettejobbets url i et fast mønster vha. curl.
Følgende parametre til styring af slettejobbet kan ændres i application.properties:
jobs.delete.cpr-max-results=25
jobs.delete.cpr-max-loops=2
Hvor jobs.delete.cpr-max-results bestemmer antal af cpr numre, der skal udtrækkes til sletning. Og jobs.delete.cpr-max-loops bestemmer antal gange udtræk af cpr numre skal gennemføres.
Hvis tiden til afvikling af slettejob overskrider 20-25 sekunder, så bør ovenstående parametre gøres mindre.
Kommando til kald af slettejob:
curl <server>/skr-service/syncjob/start
Slettejobbet skal aktiveres hver dag, hvert 15. minut mellem 8-16 - startende kl. 8
Med mindre ovenstående parametre ændres, så vil slettejobbet behandle op til 1550 sletninger om dagen. (I gennemsnit er der 150 døde pr. døgn)
Backup
...
skr_service.log | Applikationslog for servicen, som indeholder de vigtigste systemhændelser. Root: WARN |
nsp-kafka.log | Log for kafka-produceren, som står for skrivning til MinLog. |
nsputil-sla-skr.log | SLA-log. Indeholder SLA-logninger for alle kald på servicen. Indeholder desuden SLA-logninger for servicens kald til MinLog og NAS. |
server.log | Log for Wildfly-serveren. |
Auditlog
Der er i SKR tre kategorier af audit logs; cpr, aktør og cpr validering
Følgende tabel viser hvilke kategorier der audit logges for hver operation i SKR.
Operation | Kontekst | Kategorier |
---|---|---|
GetPersonalDataCard | getPersonalDataCard | cpr, aktør, cpr validering |
UpdateContactInformation | updateContactInformation | cpr, aktør, cpr validering |
CreateRelatives | createRelatives | cpr, aktør, cpr validering |
UpdateRelatives | updateRelatives | cpr, aktør, cpr validering |
DeleteRelatives | deleteRelatives | cpr, aktør, cpr validering |
CreateTemporaryAddress | createTemporaryAddress | cpr, aktør, cpr validering |
UpdateTemporaryAddress | updateTemporaryAddress | cpr, aktør, cpr validering |
DeleteTemporaryAddress | deleteTemporaryAddress | cpr, aktør, cpr validering |
CreateLanguage | createLanguage | cpr, aktør, cpr validering |
UpdateLanguage | updateLanguage | cpr, aktør, cpr validering |
DeleteLanguage | deleteLanguage | cpr, aktør, cpr validering |
CreateHealthProvider | createHealthProvider | cpr, aktør, cpr validering |
UpdateHealthProvider | updateHealthProvider | cpr, aktør, cpr validering |
DeleteHealthProvider | deleteHealthProvider | cpr, aktør, cpr validering |
SaveDataCard | saveDataCard | cpr, aktør, cpr validering |
MigratePersonalDataCard | migratePersonalDataCard | cpr, aktør, cpr validering |
Følgende tabeller viser hvad der audit logges for hver af de tre kategorier.
cpr
Komponent | Kontekst | Type | Nøgle | Information |
---|---|---|---|---|
SKR | (afhængig af operation) | Følsomme | cpr | CPR på borgeren |
aktør
Komponent | Kontekst | Type | Nøgle | Information |
---|---|---|---|---|
SKR | (afhængig af operation) | Ikke Personlig | actor-pid | PID på aktør |
SKR | (afhængig af operation) | Følsomme | actor-person-id | ID på aktør |
SKR | (afhængig af operation) | Personlig | actor-person-id-source | Typen af ID på aktør |
SKR | (afhængig af operation) | Personlig | actor-usertype | Typen af aktør |
SKR | (afhængig af operation) | Personlig | actor-user-relation | Aktørens relation til borger |
cpr validering
Følgende logges kun hvis validerings mode er sat til WARNING.
Komponent | Kontekst | Type | Nøgle | Information |
---|---|---|---|---|
SKR | validateCpr | Følsomme | cpr-does-not-exist | Medsendt CPR nummer (hvis det ikke findes i CPR register) |
MinLog
Der er i SKR fire brugertyper: Borger, borger på vegne af borger, sundhedsfaglig og system bruger.
Følgende tabel viser for hvilke operationer og brugertype kombinationer, der logges til minlog (x=der logges).
Operation / brugertype | Borger | Borger på vegne af borger | Sundhedsfaglig | System bruger |
---|---|---|---|---|
getPersonalDataCard | x | x | ||
updateContactInformation | x | x | x | |
createRelatives, updateRelatives, markRelativesAsDeleted | x | x | x | |
createLanguage, updateLanguage, markLanguageAsDeleted | x | x | x | |
createTempAddress, updateTempAddress, markTempAddressAsDeleted | x | x | x | |
createHealthProvider, updateHealthProvider, markHealthProviderAsDeleted | x | x | x | |
saveDataCard | x | x | x |
Whitelisting af anvendere
De enkelte anvendere skal whitelistes til at bruge SKR. Der findes en tabel whitelist til dette formål. Det er anvenders certifikat, der whitelistes.
Det er oplysningen CVR der skal anvendes i til at indsætte i whitelisting tabellen.
Brugeren kan hvidlistes til forskellige funktioner: SKR og SaveDataCard. Funktionen "SaveDataCard" giver brugeren mulighed for at ringe til SaveDataCardService. Funktionen "SKR" giver brugeren mulighed for at kalde alle andre servicemetoder.
Certifikatet whitelistes ved følgende SQL:
Code Block | ||
---|---|---|
| ||
INSERT INTO whitelist (cvr, function) VALUES ('46837428', 'SKR'); |
Baggrundsjobs
Servicens baggrundsjobs bliver afviklet vha. udstillede REST services, som kaldes vha. simple HTTP GET kald.
Dette gøres for at sikre afviklingen af baggrundsjobs i flere-node drift, hvor en loadbalancer sørger for fordeling af kald til bagvedliggende servere.
For hvert baggrundsjob, vedligeholder driften en cron, som kalder jobbets url i et fast mønster vha. curl.
Slettejob
Slettejobbet ligger i skr-service komponenten.
Følgende parametre til styring af slettejobbet kan ændres i application.properties:
jobs.delete.cpr-max-results=25
jobs.delete.cpr-max-loops=2
Hvor jobs.delete.cpr-max-results bestemmer antal af cpr numre, der skal udtrækkes til sletning. Og jobs.delete.cpr-max-loops bestemmer antal gange udtræk af cpr numre skal gennemføres.
Hvis tiden til afvikling af slettejob overskrider 20-25 sekunder, så bør ovenstående parametre gøres mindre.
Endpoints til slettejob:
URL | Beskrivelse |
---|---|
<server>/skr/syncjob/start | Slettejob startes ved kald af denne url. Returnerer tidspunkt for modtaget request og http status kode 200 |
<server>/skr/syncjob/status | Oplysninger om slettejob på den pågældende server. Oplysningerne gemmes i hukommelsen på serveren og fosvinder ved genstart. Der returneres http status kode 200 og følgende data: tidspunkt for sidste afvikling af slettejob på serveren (hvis værdien findes ellers tom værdi), status for sidste afvikling på serveren (true=ingen fejl, false=fejl, tom tekst=ikke afviklet) og fejlbesked ved sidste afvikling (hvis findes ellers er værdien udeladt) |
Slettejobbet skal aktiveres hver dag, hvert 15. minut mellem 8-16 - startende kl. 8
Med mindre ovenstående parametre ændres, så vil slettejobbet behandle op til 1550 sletninger om dagen. (I gennemsnit er der 150 døde pr. døgn)
CPR oprydningsjob
URL | Beskrivelse |
---|---|
<server>/skr-operations/cpr-cleanup/start | Starter CPR oprydningsjobbet |
<server>/skr-operations/cpr-cleanup/status | Returnerer statuskoden for seneste kørsel af oprydningsjobbet. Har oprydningsjobbet ikke kørt endnu, returneres statuskode 200 |
CPR oprydningsjobbet ligger i skr-operations komponenten.
Implementationen følger husreglerne for baggrundsjobs og understøtter derfor samtidige kald.
Løsningen er en in-memory stak, hvorpå der løbende bliver påfyldt opgaver. Opgaver bliver altid lagt på stakken i tilfældig rækkefølge.
Ved hver kørsel, bliver der enten fyldt nye opgaver på stakken, eller der bliver taget en opgave fra stakken, som bliver udført.
Opgaver på stakken kan enten være en operation til at udføre en oprydning eller en supplier, der leverer flere opgaver til stakken.
Der benyttes tre typer af suppliers og en operation:
Supplier | Beskrivelse |
---|---|
Default supplier | Benyttes til at fylde opgaver på stakken, når stakken er tom. For hvert af tallene 0-9, oprettes en suffix baseret supplier |
Suffix baseret supplier | Givet et tal, hentes alle person id'er fra skr databasen, der slutter på dette tal. Opretter en mængde batch suppliers, hver med et konfigurerbart antal af disse person id'er |
Batch supplier | Givet en liste af person id'er, hentes for hvert id alle de cpr numre der er gemt i fritekstfelter i personens stamkort. For hvert person id og tilhørende liste af cpr numre, oprettes et cpr oprydningsjob. |
Operation | Beskrivelse |
---|---|
Cpr oprydningsjob | Givet et person id og en liste af cpr numre, erstattes alle disse cpr numre med X'er i personens stamkort. Der udsendes herefter en NAS notifikation. |
OBS: Loggen for dette job kommer til at indeholde maskerede cpr numre (cpr numre, hvor de sidste 4 cifre er udskiftet med X'er), og skal derfor behandles som en audit log.
Backup
Servicen indeholder ikke nogen backup-mekanismer, og dette skal derfor konfigureres på database-niveau. Der bør foretages backup af data på en forsvarlig måde, i tilfælde af behov for en genetablering af data. Disse data skal opbevares på en forsvarlig måde, jfr. regler om personhenførbare data.
Oprydning af ugyldige telefonnumre
Følgende 7 SQL statements skal afvikles et antal gang for at rydde op i ugyldige telefonnumre i SKR-databasen:
Code Block |
---|
update HealthProviders set Phone = NULL where Phone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update ContactInformations set MobilePhone = NULL where MobilePhone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update ContactInformations set HomePhone = NULL where HomePhone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update ContactInformations set WorkPhone = NULL where WorkPhone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update Relatives set MobilePhone = NULL where MobilePhone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update Relatives set HomePhone = NULL where HomePhone not RLIKE '^\\+?[-0-9().]+$' limit 1000;
update Relatives set WorkPhone = NULL where WorkPhone not RLIKE '^\\+?[-0-9().]+$' limit 1000; |
Det er vigtigt at alle 7 SQL statements bliver kørt et antal gange. Når resultatet af et SQL-statement returnerer 0 ændringer så kan man gå videre til næste SQL statement.