Page History
| Table of Contents |
|---|
Komponenter
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
Konfiguration
Servicekonfiguration
Grundlæggende konfiguration foregår ved redigering i filen dros.properties, der placeres i følgende WildFly modul:
...
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 |
| iti41.service.xds.validationlevel | Angiver hvordan requestet valideres inden der kaldes videre til det bagvedliggende registry. Skal have en af værdierne OFF, WARNING og REJECT. Se dokumentet 'Design og Arkitektur' for en beskrivelse af disse værdier. |
| 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 |
| iti42.service.xds.validationlevel | Angiver hvordan requestet valideres inden der kaldes videre til det bagvedliggende registry. Skal have en af værdierne OFF, WARNING og REJECT. Se dokumentet 'Design og Arkitektur' for en beskrivelse af disse værdier. |
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 |
| iti57.service.xds.validationlevel | Angiver hvordan requestet valideres inden der kaldes videre til det bagvedliggende registry. Skal have en af værdierne OFF, WARNING og REJECT. Se dokumentet 'Design og Arkitektur' for en beskrivelse af disse værdier. |
| 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 |
| iti61.service.xds.validationlevel | Angiver hvordan requestet valideres inden der kaldes videre til det bagvedliggende registry. Skal have en af værdierne OFF, WARNING og REJECT. Se dokumentet 'Design og Arkitektur' for en beskrivelse af disse værdier. |
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. |
| dros.backend.failure.interval.minutes | Angiver antal minutter hvorefter fejlkald 'forældes'. Dermed er det kun fejlkald, der er nyere end dette, der medregnes, når det vurderes om backenden fejler. |
| cprexists.validationlevel | Valideringsniveau for CPR validering Eksempel: WARNING, REJECT, OFF |
| cprexists.url | URL for CPR exist service Eksempel: http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-cprexists |
| cprexists.maxTotalConnections | Konfiguration af client pool til kald af CPRExists service Default: 200 |
| cprexists.defaultMaxConnectionsPerRoute | Konfiguration af client pool til kald af CPRExists service Default: 20 |
log4j konfiguration
Log4j konfiguration findes i samme wildfly modul som servicekonfigurationen
...
DROS udstiller en overvågningsside, som findes i listen af komponenter i afsnit 2.
...
Fortolkning af HTML overvågningsside
DROS-overvågningssiden returnerer enten:
- HTTP 200, hvis servicen i øjeblikket kører fint.
- HTTP 203, hvis der er opstået en fejl der kræver indgriben.
...
Overvågningstyper
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'.
...
Hvis CPR validering kører i WARNING mode, så vil ugyldige (ifølge CPRExits service) CPR numre give anledning til en linje i auditloggen. Logninger af denne type ser således ud:
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
{
"time": "2022-12-13T07:28:59.135Z",
"category": "dk.sds.nsp.audit.log.dros/provideandregisterdocumentsetb",
"audit": {
"timestamp": "2022-12-13T08:28:58.815+01:00",
"components": [
{
"component": "DROS/ProvideAndRegisterDocumentSetB",
"contexts": [
{
"context": "8808456705936797445.7367161746361332136.1670916538706",
"information": [
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Source patient id i det leverede CDA dokument matcher ikke souce patient id i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Patient id i det leverede CDA dokument matcher ikke patient id i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Service stop time i det leverede CDA dokument matcher ikke service stop time i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Author institution i det leverede CDA dokument matcher ikke author institution i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Cda dokumentet har ikke lovlig type,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Creationtime i det leverede CDA dokument matcher ikke creationtime i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Title i det leverede CDA dokument matcher ikke title i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Confidentiality code i det leverede CDA dokument matcher ikke code i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Coded value i det leverede CDA dokument matcher ikke type code i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Source patient birth i det leverede CDA dokument matcher ikke source patient birth i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Service start time i det leverede CDA dokument matcher ikke service start time i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Author person i det leverede CDA dokument matcher ikke author institution i document entry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "Warning",
"type": "RPI",
"value": "ErrorInfo[errorCode=REGISTRY_METADATA_ERROR,codeContext=Author.Person skal være angivet i documententry,severity=WARNING,location=,customErrorCode=]"
},
{
"key": "StatusCode",
"type": "RPI",
"value": "urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Source patient id i det leverede CDA dokument matcher ikke souce patient id i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Patient id i det leverede CDA dokument matcher ikke patient id i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Service stop time i det leverede CDA dokument matcher ikke service stop time i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Author institution i det leverede CDA dokument matcher ikke author institution i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Cda dokumentet har ikke lovlig type,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Creationtime i det leverede CDA dokument matcher ikke creationtime i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Title i det leverede CDA dokument matcher ikke title i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Confidentiality code i det leverede CDA dokument matcher ikke code i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Coded value i det leverede CDA dokument matcher ikke type code i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Source patient birth i det leverede CDA dokument matcher ikke source patient birth i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Service start time i det leverede CDA dokument matcher ikke service start time i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Author person i det leverede CDA dokument matcher ikke author institution i document entry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
},
{
"key": "ResponseError",
"type": "RPI",
"value": "RegistryError[value=<null>,codeContext=Author.Person skal være angivet i documententry,errorCode=XDSRegistryMetadataError,severity=urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Warning,location=]"
}
]
},
{
"context": "urn:uuid:dfae887b-d846-4f2d-88b0-fd11a603e03e",
"information": [
{
"key": "DocumentId",
"type": "RPI",
"value": "5345652789622024422.1649135652318592037.1670916538701"
},
{
"key": "DocumentType",
"type": "RPI",
"value": "39289-4"
},
{
"key": "CitizenId",
"type": "RPI",
"value": "ABCDE"
},
{
"key": "FormatCode",
"type": "RPI",
"value": "urn:ad:dk:medcom:appointmentsummary:full"
},
{
"key": "SubmissionSetId",
"type": "RPI",
"value": "8808456705936797445.7367161746361332136.1670916538706"
},
{
"key": "AuthorInstitutionAssigningAuthority",
"type": "RPI",
"value": "1.2.208.176.1.1"
},
{
"key": "AuthorInstitutionId",
"type": "RPI",
"value": "12345679999"
}
]
}
]
}
]
},
"access": {
"code": 200,
"duration": 289,
"httpHeaders": {
"Content-Type": "multipart/related; type=\"application/xop+xml\"; boundary=\"uuid:c16b15ce-c994-4ac7-8ed0-d949fa6099d5\"; 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": "91WKulz0p7X1tHDPo1MqAA==",
"sosi:IDCardType": "system",
"sosi:IDCardVersion": "1.0.1"
},
"method": "POST",
"path": "/dros/iti41",
"query": "",
"port": 8060,
"protocol": "http",
"reqSize": 25133,
"resSize": 4268,
"soapHeaders": {
"Issuer": "TEST2-NSP-STS",
"MessageID": "AAABhQpjAVUdbZI6x+gtGFNPU0k=",
"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 XXXIV CA, O=TRUST2408, C=DK},CertSerial={1604144225}",
"w3Action": "urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b",
"w3MessageID": "urn:uuid:d8bf3c51-b16a-42af-b4ef-023dbc52051f",
"w3To": "http://localhost:8060/dros/iti41"
},
"threadId": "default task-9",
"time": "2022-12-13T08:28:58.815+01:00",
"stats": {
"handlerDuration": 28,
"RequestContentDuration": 2,
"ResponseContentDuration": 0,
"SecurityProtocolRequestDuration": 22,
"SecurityProtocolResponseDuration": 0,
"bufferAllocated": false,
"usedBuffers": 4,
"activeBuffersInPool": 4,
"idleBuffersInPool": 4
}
}
} |
...
Whitelisting af anvendere
De enkelte anvendere skal whitelistes til at bruge DROS. Der findes en tabel whitelist til dette formål. Det er anvenders CVR, der whitelistes.
...