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.

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

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

500 Internal Server Error

500 Internal Server Error
---------------------------------------
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 500.

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

Audit-loggens indhold kan f.eks. se således ud:

{
  "time": "2021-04-22T09:19:17.849Z",
  "category": "dk.sds.nsp.audit.log.dros/provideandregisterdocumentsetb",
  "audit": {
    "timestamp": "2021-04-22T11:19:17.349+02:00",
    "components": [
      {
        "component": "DROS/ProvideAndRegisterDocumentSetB",
        "contexts": [
          {
            "context": "4782730166889980929.642387763907611323.1619083157334",
            "information": [
              {
                "key": "DocumentId",
                "type": "RPI",
                "value": "4782730166889980929.642387763907611323.1619083157334"
              },
              {
                "key": "DocumentType",
                "type": "RPI",
                "value": "39289-4"
              },
              {
                "key": "CitizenId",
                "type": "RPI",
                "value": "ABCDE"
              },
              {
                "key": "FormatCode",
                "type": "RPI",
                "value": "urn:ad:dk:medcom:appointment"
              }
            ]
          }
        ]
      }
    ]
  },
  "access": {
    "code": 200,
    "duration": 466,
    "httpHeaders": {
      "Content-Type": "multipart/related; type=\"application/xop+xml\"; boundary=\"uuid:574b00c3-614c-480e-8e53-fabf30483826\"; start=\"<root.message@cxf.apache.org>\"; start-info=\"application/soap+xml\""
    },
    "httpHost": "localhost",
    "idCardAttributes": {
      "medcom:CareProviderID": "25450442",
      "medcom:CareProviderName": "LAKESIDE A/S",
      "medcom:ITSystemName": "Test",
      "medcom:UserAuthorizationCode": "CBNH1",
      "medcom:UserOccupation": "Læge",
      "medcom:UserRole": "7170",
      "sosi:AuthenticationLevel": "4",
      "sosi:IDCardID": "AIeHms5lTO3yjiA6nyYZ/A==",
      "sosi:IDCardType": "user",
      "sosi:IDCardVersion": "1.0.1"
    },
    "method": "POST",
    "path": "/dros/iti41",
    "query": "",
    "port": 8060,
    "protocol": "http",
    "reqSize": 25897,
    "resSize": 699,
    "soapHeaders": {
      "Issuer": "TEST2-NSP-STS",
      "MessageID": "AAABePjgX2EQDhOrnwEA8FNPU0k=",
      "NameID": "SubjectDN={CN=Casper Rasmussen + SERIALNUMBER=CVR:25450442-RID:40252666, O=LAKESIDE A/S // CVR:25450442, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXII CA, O=TRUST2408, C=DK},CertSerial={1495058808}",
      "w3Action": "urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b",
      "w3MessageID": "urn:uuid:11c90b96-41c9-464e-99c4-82e0bcac3937",
      "w3To": "http://localhost:8060/dros/iti41"
    },
    "threadId": "default task-22",
    "time": "2021-04-22T11:19:17.349+02:00",
    "stats": {
      "handlerDuration": 30,
      "RequestContentDuration": 2,
      "ResponseContentDuration": 0,
      "SecurityProtocolRequestDuration": 22,
      "SecurityProtocolResponseDuration": 0,
      "bufferAllocated": false,
      "usedBuffers": 4,
      "activeBuffersInPool": 4,
      "idleBuffersInPool": 4
    }
  }
}