Dette dokument dækker følgende komponenter på NSP:
Dokumentregistrerings- og oprettelsesservice
Type: Webservice
Filnavn: dros.war
Url: <serverurl>/dros
Servicecheckurl: <serverurl>/drs/status
Versionurl: <serverurl>/dros/health returnerer en json struktur med denne
Grundlæggende konfiguration foregår ved redigering i filen dros.properties, der placeres i følgende WildFly modul:
/pack/wildfly8/modules/sds/dros/configuration/main/
Moduldefinitionen er at finde i sourcekoden til dros under:
/dros-war/etc/modules/sds/dros/configuration/main/module.xml
I filen skal følgende properties være definerede:
Property | Beskrivelse |
dros.url.prefix | URL prefix der indsættes i wsdl'er og bruges af dks-servlet. |
dros.app.name | Anvendes af dks-servlet |
iti41.service.endpoint | Endpoint på ITI41-backend. |
iti41.service.security.require.person | Angiver, om der skal anvendes personlige sikkerhedsbillet i.e UserIdCard eller det er nok med SystemIdCard (true/false) Default: false |
iti42.service.endpoint | Endpoint på ITI42-backend. |
iti42.service.security.require.person | Angiver, om der skal anvendes personlige sikkerhedsbillet i.e UserIdCard eller det er nok med SystemIdCard (true/false) Default: false |
iti57.service.endpoint | Endpoint på ITI57-backend. |
iti57.service.security.require.person | Angiver, om der skal anvendes personlige sikkerhedsbillet i.e UserIdCard eller det er nok med SystemIdCard (true/false) Default: false |
iti61.service.endpoint | Endpoint på ITI61-backend. |
iti61.service.security.require.person | Angiver, om der skal anvendes personlige sikkerhedsbillet i.e UserIdCard eller det er nok med SystemIdCard (true/false) Default: false |
dros.backend.failure.threshold | Tærskel for, hvor mange gang i træk et kald til en backend må fejle, før denne backend betragtes som 'død' af status-siden. |
Log4j konfiguration findes i samme wildfly modul som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
DROS udstiller en overvågningsside, som findes i listen af komponenter i afsnit 2.
DROS-overvågningssiden returnerer enten:
Det overvåges for hver backend, om kaldene til backenden går galt. Det kan konfigureres, hvor mange kald i træk der må gå galt, før en backend betragtes som 'død'.
200 OK
---------------------------------------
STATUS
ITI41 backend alive: true
ITI42 backend alive: true
ITI57 backend alive: true
ITI61 backend alive: true
Det fremgår for hver backend, om kaldene til den går godt eller ej.
203 Non-authoritative Information
---------------------------------------
STATUS
ITI41 backend alive: true
ITI42 backend alive: false
ITI57 backend alive: true
ITI61 backend alive: true
Hvis kaldene til backend ikke kan udføres, så returneres statuskode 203.
Hvert servicekald medfører en ny indgang i auditloggen, som er udfyldt som følger:
* Component: DROS/<operation>, hvor <operation> er navnet på den operation der kaldes, f.eks. ProvideAndRegisterDocumentSetB.
* Context: Udfyldes med DocumentId. Hvis requestet indeholder flere dokumenter, oprettes en context for hvert dokument.
For hver context skrives følgende informationer
Felt | Type | Indhold |
---|---|---|
DocumentId | RegularPersonalInformation | DokumentId'et. |
DocumentType | RegularPersonalInformation | Dokumentets TypeCode |
CitizenId | RegularPersonalInformation | PatientId, som dokumentet omhandler. |
FormatCode | RegularPersonalInformation | FormatCode |
SubmissionSet | RegularPersonalInformation | UniqueId fra SubmissionSet i request. |
AssociationSourceId | RegularPersonalInformation | SourceId fra association, hvis dokumentet er enten source eller target på association. |
AssociationTargetId | RegularPersonalInformation | TargetId fra association, hvis dokumentet er enten source eller target på association. |
AssociationType | RegularPersonalInformation | AssociationType fra association, hvis dokumentet er enten source eller target på association. Den fulde URI logges. |
Nedenfor ses eksempler fra auditloggen ved kald af de forskellige snitflader.
{ "time":"2021-05-03T21:04:01.676Z", "category":"dk.sds.nsp.audit.log.dros/registerondemanddocumententry", "audit":{ "timestamp":"2021-05-03T23:03:59.454+02:00", "components":[ { "component":"DROS/RegisterOnDemandDocumentEntry", "contexts":[ { "context":"urn:uuid:5544575c-8cc6-45de-9db5-3059131670a2", "information":[ { "key":"DocumentId", "type":"RPI", "value":"7943305690136181220.5733255671233166403.1620075838248" }, { "key":"DocumentType", "type":"RPI", "value":"39289-4" }, { "key":"CitizenId", "type":"RPI", "value":"010101010101" }, { "key":"FormatCode", "type":"RPI", "value":"urn:ad:dk:medcom:appointment" }, { "key":"SubmissionSetId", "type":"RPI", "value":"4755022980679903663.6588331163711420386.1620075838319" } ] } ] } ] }, "access":{ "code":200, "duration":1216, "httpHeaders":{ "Content-Type":"application/soap+xml; charset=UTF-8" }, "httpHost":"localhost", "idCardAttributes":{ "medcom:CareProviderID":"46837428", "medcom:CareProviderName":"Statens Serum Institut", "medcom:ITSystemName":"Test", "sosi:AuthenticationLevel":"3", "sosi:IDCardID":"m/a4UIUpkKPnk/My7ueRsw==", "sosi:IDCardType":"system", "sosi:IDCardVersion":"1.0.1" }, "method":"POST", "path":"/dros/iti61", "query":"", "port":8060, "protocol":"http", "reqSize":14130, "resSize":460, "soapHeaders":{ "Issuer":"TEST2-NSP-STS", "MessageID":"AAABeTQLfBBVLIDLtfEB2VNPU0k=", "NameID":"SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058165}", "w3Action":"urn:ihe:iti:2010:RegisterOnDemandDocumentEntry", "w3MessageID":"urn:uuid:9ebc494f-a276-462a-b6e9-3ee6c69a1bc7", "w3To":"http://localhost:8060/dros/iti61" }, "threadId":"default task-1", "time":"2021-05-03T23:03:59.443+02:00", "stats":{ "handlerDuration":965, "RequestContentDuration":70, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":587, "SecurityProtocolResponseDuration":0, "bufferAllocated":true, "usedBuffers":2, "activeBuffersInPool":2, "idleBuffersInPool":0 } } } |
{ "time":"2021-05-03T21:04:04.485Z", "category":"dk.sds.nsp.audit.log.dros/provideandregisterdocumentsetb", "audit":{ "timestamp":"2021-05-03T23:04:02.429+02:00", "components":[ { "component":"DROS/ProvideAndRegisterDocumentSetB", "contexts":[ { "context":"urn:uuid:db9d8684-e06c-4c65-af58-0137e6646733", "information":[ { "key":"DocumentId", "type":"RPI", "value":"6687982596253355541.8162358355401787246.1620075842168" }, { "key":"DocumentType", "type":"RPI", "value":"39289-4" }, { "key":"CitizenId", "type":"RPI", "value":"ABCDE" }, { "key":"FormatCode", "type":"RPI", "value":"urn:ad:dk:medcom:appointment" }, { "key":"SubmissionSetId", "type":"RPI", "value":"5335953767189358702.7648709839978447749.1620075842178" } ] } ] } ] }, "access":{ "code":200, "duration":1878, "httpHeaders":{ "Content-Type":"multipart/related; type=\"application/xop+xml\"; boundary=\"uuid:06457de8-0189-4a1e-ba98-66da58d79ce7\"; start=\"<root.message@cxf.apache.org>\"; start-info=\"application/soap+xml\"" }, "httpHost":"localhost", "idCardAttributes":{ "medcom:CareProviderID":"46837428", "medcom:CareProviderName":"Statens Serum Institut", "medcom:ITSystemName":"Test", "sosi:AuthenticationLevel":"3", "sosi:IDCardID":"P0OgWK2GAfYY6IhdSoPMRg==", "sosi:IDCardType":"system", "sosi:IDCardVersion":"1.0.1" }, "method":"POST", "path":"/dros/iti41", "query":"", "port":8060, "protocol":"http", "reqSize":24833, "resSize":699, "soapHeaders":{ "Issuer":"TEST2-NSP-STS", "MessageID":"AAABeTQLioY3nvNwrBEcjVNPU0k=", "NameID":"SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058165}", "w3Action":"urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b", "w3MessageID":"urn:uuid:cd7f3bdb-647b-4766-864a-0070a8168e73", "w3To":"http://localhost:8060/dros/iti41" }, "threadId":"default task-3", "time":"2021-05-03T23:04:02.429+02:00", "stats":{ "handlerDuration":174, "RequestContentDuration":17, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":140, "SecurityProtocolResponseDuration":0, "bufferAllocated":false, "usedBuffers":4, "activeBuffersInPool":4, "idleBuffersInPool":3 } } } |
{ "time":"2021-05-03T21:04:09.776Z", "category":"dk.sds.nsp.audit.log.dros/provideandregisterdocumentsetb", "audit":{ "timestamp":"2021-05-03T23:04:08.786+02:00", "components":[ { "component":"DROS/ProvideAndRegisterDocumentSetB", "contexts":[ { "context":"urn:uuid:7e8274fc-bee7-46e8-995d-8a1ec518ce62", "information":[ { "key":"DocumentId", "type":"RPI", "value":"7371703074493874590.8623536501958069031.1620075848759" }, { "key":"DocumentType", "type":"RPI", "value":"39289-4" }, { "key":"CitizenId", "type":"RPI", "value":"ABCDE" }, { "key":"FormatCode", "type":"RPI", "value":"urn:ad:dk:medcom:appointment" }, { "key":"SubmissionSetId", "type":"RPI", "value":"6073800182764791022.8734924007446367108.1620075848770" }, { "key":"AssociationSourceId", "type":"RPI", "value":"urn:uuid:7e8274fc-bee7-46e8-995d-8a1ec518ce62" }, { "key":"AssociationTargetId", "type":"RPI", "value":"urn:uuid:90a33869-727b-4af7-9a6a-ef030107e341" }, { "key":"AssociationType", "type":"RPI", "value":"urn:ihe:iti:2007:AssociationType:RPLC" } ] } ] } ] }, "access":{ "code":200, "duration":912, "httpHeaders":{ "Content-Type":"multipart/related; type=\"application/xop+xml\"; boundary=\"uuid:5f90d79b-d113-4884-a9ce-1c4434a79f39\"; start=\"<root.message@cxf.apache.org>\"; start-info=\"application/soap+xml\"" }, "httpHost":"localhost", "idCardAttributes":{ "medcom:CareProviderID":"46837428", "medcom:CareProviderName":"Statens Serum Institut", "medcom:ITSystemName":"Test", "sosi:AuthenticationLevel":"3", "sosi:IDCardID":"rvUKALhPjCol2nJTJqDt+A==", "sosi:IDCardType":"system", "sosi:IDCardVersion":"1.0.1" }, "method":"POST", "path":"/dros/iti41", "query":"", "port":8060, "protocol":"http", "reqSize":25071, "resSize":699, "soapHeaders":{ "Issuer":"TEST2-NSP-STS", "MessageID":"AAABeTQLpEik3TDY2H298VNPU0k=", "NameID":"SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058165}", "w3Action":"urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b", "w3MessageID":"urn:uuid:f44dfe0a-c002-4a72-8e89-80b3df6b2370", "w3To":"http://localhost:8060/dros/iti41" }, "threadId":"default task-8", "time":"2021-05-03T23:04:08.786+02:00", "stats":{ "handlerDuration":73, "RequestContentDuration":6, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":51, "SecurityProtocolResponseDuration":0, "bufferAllocated":false, "usedBuffers":4, "activeBuffersInPool":4, "idleBuffersInPool":4 } } } |
{ "time":"2021-05-03T21:04:07.307Z", "category":"dk.sds.nsp.audit.log.dros/registerdocumentsetb", "audit":{ "timestamp":"2021-05-03T23:04:07.03+02:00", "components":[ { "component":"DROS/RegisterDocumentSetB", "contexts":[ { "context":"urn:uuid:ac0ce91a-320d-4370-839f-25598dd0bfab", "information":[ { "key":"DocumentId", "type":"RPI", "value":"9139873772290913932.1273906388098236954.1620075847000" }, { "key":"DocumentType", "type":"RPI", "value":"39289-4" }, { "key":"CitizenId", "type":"RPI", "value":"010101010101" }, { "key":"FormatCode", "type":"RPI", "value":"urn:ad:dk:medcom:appointment" }, { "key":"SubmissionSetId", "type":"RPI", "value":"8587115512321077717.2026797048612801310.1620075847001" } ] } ] } ] }, "access":{ "code":200, "duration":250, "httpHeaders":{ "Content-Type":"application/soap+xml; charset=UTF-8" }, "httpHost":"localhost", "method":"POST", "path":"/dros/iti42noDgws", "query":"", "port":8060, "protocol":"http", "reqSize":8696, "resSize":919, "soapHeaders":{ "w3Action":"urn:ihe:iti:2007:RegisterDocumentSet-b", "w3MessageID":"urn:uuid:c270fc64-56f2-4b6b-b65b-4caf7623d19a", "w3To":"http://localhost:8060/dros/iti42noDgws" }, "threadId":"default task-6", "time":"2021-05-03T23:04:07.03+02:00", "stats":{ "handlerDuration":22, "RequestContentDuration":1, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":0, "SecurityProtocolResponseDuration":0, "bufferAllocated":false, "usedBuffers":2, "activeBuffersInPool":2, "idleBuffersInPool":6 } } } |
{ "time":"2021-05-03T21:54:21.875Z", "category":"dk.sds.nsp.audit.log.dros/updatedocumentset", "audit":{ "timestamp":"2021-05-03T23:54:21.673+02:00", "components":[ { "component":"DROS/UpdateDocumentSet", "contexts":[ { "context":"8bee75d3-9e1e-4646-b440-ffb6e13f8099", "information":[ { "key":"AssociationSourceId", "type":"RPI", "value":"8bee75d3-9e1e-4646-b440-ffb6e13f8099" }, { "key":"AssociationTargetId", "type":"RPI", "value":"urn:uuid:bf963b2e-7fd0-4b25-9c1b-b9762af656f7" }, { "key":"AssociationType", "type":"RPI", "value":"urn:ihe:iti:2010:AssociationType:UpdateAvailabilityStatus" }, { "key":"AssociationStatus", "type":"RPI", "value":"Deprecated" } ] } ] } ] }, "access":{ "code":200, "duration":166, "httpHeaders":{ "Content-Type":"application/soap+xml; charset=UTF-8" }, "httpHost":"localhost", "idCardAttributes":{ "medcom:CareProviderID":"46837428", "medcom:CareProviderName":"Statens Serum Institut", "medcom:ITSystemName":"Test", "sosi:AuthenticationLevel":"3", "sosi:IDCardID":"sTLZT4F425EnY6GleFiNcA==", "sosi:IDCardType":"system", "sosi:IDCardVersion":"1.0.1" }, "method":"POST", "path":"/dros/iti57", "query":"", "port":8060, "protocol":"http", "reqSize":9253, "resSize":460, "soapHeaders":{ "Issuer":"TEST2-NSP-STS", "MessageID":"AAABeTQ5nWIfoju4xRpdM1NPU0k=", "NameID":"SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058165}", "w3Action":"urn:ihe:iti:2010:UpdateDocumentSet", "w3MessageID":"urn:uuid:e81108e0-603e-4662-8320-689c1e64a2f9", "w3To":"http://localhost:8060/dros/iti57" }, "threadId":"default task-12", "time":"2021-05-03T23:54:21.673+02:00", "stats":{ "handlerDuration":33, "RequestContentDuration":1, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":27, "SecurityProtocolResponseDuration":0, "bufferAllocated":false, "usedBuffers":2, "activeBuffersInPool":2, "idleBuffersInPool":6 } } } |