Komponenter

Dette dokument dækker følgende komponenter på NSP:


Konfiguration

Servicekonfiguration

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.nameAnvendes 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.endpointEndpoint 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.endpointEndpoint 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.

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

Se yderligere opsætning i installationsvejledningen.

Overvågning

DROS udstiller en overvågningsside, som findes i listen af komponenter i afsnit 2.

5.1. Fortolkning af HTML overvågningsside

DROS-overvågningssiden returnerer enten:

5.2. 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'.

Eksempler på status-sider

200 OK

200 OK
---------------------------------------
STATUS

ITI41 backend alive: true
ITI42 backend alive: true
ITI57 backend alive: true
ITI61 backend alive: true
CprExistsServiceClient : "0 fejl"

Det fremgår for hver backend, om kaldene til den går godt eller ej.

203 Non-authoritative Information

203 Non-authoritative Information
---------------------------------------
STATUS

ITI41 backend alive: true
ITI42 backend alive: false
ITI57 backend alive: true
ITI61 backend alive: true
CprExistsServiceClient : "0 fejl"

Hvis kaldene til backend ikke kan udføres, så returneres statuskode 203.
Hvis kaldene (de sidste 50) til CprExists er fejlede, så vil HealthServlet ligeledes returnere kode 203.

Auditlogning

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

FeltTypeIndhold
DocumentIdRegularPersonalInformationDokumentId'et.
DocumentTypeRegularPersonalInformationDokumentets TypeCode
CitizenIdRegularPersonalInformationPatientId, som dokumentet omhandler.
FormatCodeRegularPersonalInformationFormatCode
SubmissionSetRegularPersonalInformationUniqueId fra SubmissionSet i request.
AssociationSourceIdRegularPersonalInformationSourceId fra association, hvis dokumentet er enten source eller target på association.
AssociationTargetIdRegularPersonalInformationTargetId fra association, hvis dokumentet er enten source eller target på association.
AssociationTypeRegularPersonalInformationAssociationType 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
      }
   }
}


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:

{
	"time":"2021-08-19T08:46:13.461Z",
	"category":"dk.sds.nsp.audit.log.dros",
	"audit":{
		"timestamp":"2021-08-19T10:46:13.081+02:00",
		"components":[
			{
				"component":"DROS",
				"contexts":[{
					"context":"iti-18",
					"information":[{
						"key":"dk.nsp.cpr.exists.false",
						"type":"SPI","value":"ABCDE"
					}]
				}]
			},
			{
				"component":"DROS/ProvideAndRegisterDocumentSetB",
				"contexts":[{
					"context":"urn:uuid:5e2abecf-a1aa-4059-bc67-789492ef5e49",
					"information":[{
						"key":"DocumentId",
						"type":"RPI",
						"value":"5776847426915191537.1243631302011472830.1629362773007"
					},
					{
						"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":"6382716294106427493.5756439411433255780.1629362773009"
					}]
				}]
			}
		]
	},
	"access":{
		"code":200,
		"duration":350,
		"httpHeaders":{
			"Content-Type":"multipart/related; type=\"application/xop+xml\"; boundary=\"uuid:40d856a8-1a44-4ab2-a26a-947c1c6ec09d\"; 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":"aXDKFJ7P6UQQDfAsWEen8Q==",
			"sosi:IDCardType":"system",
			"sosi:IDCardVersion":"1.0.1"
		},
		"method":"POST",
		"path":"/dros/iti41",
		"query":"",
		"port":8060,
		"protocol":"http",
		"reqSize":24881,
		"resSize":1420,
		"soapHeaders":{
			"Issuer":"TEST2-NSP-STS",
			"MessageID":"AAABe12W3BTo9p7lAx0WMVNPU0k=",
			"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:ee979460-f7e5-4432-8604-c345eba582f9",
			"w3To":"http://localhost:8060/dros/iti41"
		},
		"threadId":"default task-18",
		"time":"2021-08-19T10:46:13.08+02:00",
		"stats":{
			"handlerDuration":28,
			"RequestContentDuration":2,
			"ResponseContentDuration":0,
			"SecurityProtocolRequestDuration":22,
			"SecurityProtocolResponseDuration":0,
			"bufferAllocated":false,
			"usedBuffers":4,
			"activeBuffersInPool":4,
			"idleBuffersInPool":4
		}
	}
}