Page History
Navitabs | ||
---|---|---|
| ||
Table of Contents
Komponenter
Dette dokument dækker følgende komponenter på NSP:
...
For felt migrerings servicen, se "NXRG - driftvejledning til felt migrering".
Konfiguration
Servicekonfiguration
Grundlæggende konfiguration foregår ved redigering i filen nxrg.properties, der placeres i følgende WildFly modul:
...
Property | Beskrivelse |
---|---|
datasource.jndi.name | JNDI navnet på den datasource der giver adgang til NXRG databasen. |
liquibase.changelog.file | Angiver den changelog fil som liquibase skal anvende. Property er ikke krævet. Hvis der skal afvikles integrationstest mod det miljø der installeres skal denne sættes til liquibase-changelog-test.xml. Denne kan også sættes via en environmentvariabel i formen liquibase_changelog_file. |
nxrg.allowed.mimetype | Tilladt MimeType på DocumentEntries i requests til ITI-42, ITI-57 og ITI-61. |
iti18.request.validation.enabled | Angiver om der skal foretages openehealth-validering af requestet. |
iti18.response.validation.enabled | Angiver om der skal foretages openehealth-validering af responset. |
iti42.request.validation.enabled | Angiver om der skal foretages openehealth-validering af requestet. |
iti42.response.validation.enabled | Angiver om der skal foretages openehealth-validering af responset. |
iti57.request.validation.enabled | Angiver om der skal foretages openehealth-validering af requestet. |
iti57.response.validation.enabled | Angiver om der skal foretages openehealth-validering af responset. |
iti61.request.validation.enabled | Angiver om der skal foretages openehealth-validering af requestet. |
iti61.response.validation.enabled | Angiver om der skal foretages openehealth-validering af responset. |
iti18.request.max.documents.leafclass | Angiver, hvor mange dokumenter en iti 18 søgning må hente. Overskrides antal gives en warning og status er partial success. |
iti18.request.max.documents.objectref | Angiver, hvor mange dokumentreferencer en iti 18 søgning må hente. Overskrides antal gives en warning og status er partial success. |
handled.type.codes | Angiver en liste af, hvilke type codes NXRG håndterer. Er listen tom (property findes, men ingen værdi efter =) accepteres alle type codes. Eksempel på liste: 39289-4,39290-2,53576-5,52460-3,81215-6 |
iti57.cpr.validation.enabled | Angiver, om der ved ITI-57 kald (opdateringskald) skal laves validering på at patientid matcher det tidligere patientid |
log4j konfiguration
Log4j konfiguration findes i samme wildfly modul som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
Overvågning
NXRG udstiller en overvågningsside, som findes i listen af komponenter i afsnit 2.
5.1. Fortolkning af HTML overvågningsside
NXRG-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.
5.2. Overvågningstyper
Det overvåges om der kan opnås forbindelse til databasen.
Eksempler på status-sider
200 OK
TODO
203 Non-authoritative Information
TODO
Audit log
NXRG laver audit log ved hvert kald af de udbudte ITI-services. I det følgende gennemgåes formaterne for hver service.
...
*1) Er nøglen null tildeles et tilfældigt uuid
Logning for ITI-42
Succesfuldt kald til service iti-42 giver anledning til en logningslinje på følgende format:
Code Block | ||
---|---|---|
| ||
{ "time": "2021-12-01T05:41:34.053Z", "category": "dk.sds.nsp.audit.log.nxrg/iti-42", "audit": { "timestamp": "2021-12-01T06:41:33.552+01:00", "components": [ { "component": "NXRG/ITI-42", "contexts": [ { "context": "5829933881450595335.691505562960183089.1638337293227", "information": [ { "key": "CitizenId", "type": "SPI", "value": "0101" }, { "key": "SubmissionSetInformation", "type": "RPI", "value": "{\"uniqueId\":\"5829933881450595335.691505562960183089.1638337293227\"}" }, { "key": "DoucmentEntryInformation", "type": "RPI", "value": "{\"entryUUid\":\"urn:uuid:ef04ddc0-b086-436f-a7db-37d4bbef8af6\", \"uniqueId\":\"4654430528298460003.324281175136550912.1638337293167\", \"replacesEntryUuid\":null}" }, { "key": "Status", "type": "NPI", "value": "OK" } ] } ] } ] }, "access": { "code": 200, "duration": 360, "httpHeaders": { "Content-Type": "application/soap+xml; charset=UTF-8" }, "httpHost": "localhost", "method": "POST", "path": "/nxrg/iti42", "query": "", "port": 8060, "protocol": "http", "reqSize": 8528, "resSize": 919, "soapHeaders": { "w3Action": "urn:ihe:iti:2007:RegisterDocumentSet-b", "w3MessageID": "urn:uuid:5d2b8ccb-3a7f-4b0b-becc-4330999c1021", "w3To": "http://localhost:8060/nxrg/iti42" }, "threadId": "default task-1", "time": "2021-12-01T06:41:33.544+01:00", "stats": { "handlerDuration": 121, "RequestContentDuration": 19, "ResponseContentDuration": 0, "SecurityProtocolRequestDuration": 5, "SecurityProtocolResponseDuration": 0, "bufferAllocated": true, "usedBuffers": 2, "activeBuffersInPool": 2, "idleBuffersInPool": 0 } } } |
Logning for ITI-61
Succesfuldt kald til service iti-61 giver anledning til en logningslinje på følgende format:
Code Block | ||
---|---|---|
| ||
{ "time": "2021-12-01T05:44:20.01Z", "category": "dk.sds.nsp.audit.log.nxrg/iti-61", "audit": { "timestamp": "2021-12-01T06:44:19.821+01:00", "components": [ { "component": "NXRG/ITI-61", "contexts": [ { "context": "6943690717325663174.4847763071154435223.1638337459544", "information": [ { "key": "CitizenId", "type": "SPI", "value": "0101" }, { "key": "SubmissionSetInformation", "type": "RPI", "value": "{\"uniqueId\":\"6943690717325663174.4847763071154435223.1638337459544\"}" }, { "key": "DoucmentEntryInformation", "type": "RPI", "value": "{\"entryUUid\":\"urn:uuid:92ee0d66-a9e0-4931-a90d-d5d708fa80c5\", \"uniqueId\":\"6284022344789100604.4104933276600124364.1638337459491\", \"replacesEntryUuid\":null}" }, { "key": "Status", "type": "NPI", "value": "OK" } ] } ] } ] }, "access": { "code": 200, "duration": 165, "httpHeaders": { "Content-Type": "application/soap+xml; charset=UTF-8" }, "httpHost": "localhost", "method": "POST", "path": "/nxrg/iti61", "query": "", "port": 8060, "protocol": "http", "reqSize": 8211, "resSize": 922, "soapHeaders": { "w3Action": "urn:ihe:iti:2010:RegisterOnDemandDocumentEntry", "w3MessageID": "urn:uuid:af796d78-361d-457e-89ba-df01bca340d0", "w3To": "http://localhost:8060/nxrg/iti61" }, "threadId": "default task-1", "time": "2021-12-01T06:44:19.82+01:00", "stats": { "handlerDuration": 18, "RequestContentDuration": 1, "ResponseContentDuration": 0, "SecurityProtocolRequestDuration": 0, "SecurityProtocolResponseDuration": 0, "bufferAllocated": false, "usedBuffers": 2, "activeBuffersInPool": 2, "idleBuffersInPool": 0 } } } |
Logning for ITI-57 - slette markering
Succesfuldt kald til service iti-57 for at slette markere et dokument, giver anledning til en logningslinje på følgende format:
Code Block | ||
---|---|---|
| ||
{ "time": "2021-12-01T05:46:05.636Z", "category": "dk.sds.nsp.audit.log.nxrg/iti-57", "audit": { "timestamp": "2021-12-01T06:46:05.406+01:00", "components": [ { "component": "NXRG/ITI-57", "contexts": [ { "context": "urn:uuid:d324c3e0-68b4-4c3e-8988-bff2325f2edb", "information": [ { "key": "CitizenId", "type": "SPI", "value": "0102" }, { "key": "updatedObjectUuid", "type": "RPI", "value": "urn:uuid:d324c3e0-68b4-4c3e-8988-bff2325f2edb" }, { "key": "writeUpdateOperationName", "type": "NPI", "value": "UpdateDocumentEntryAvailabilityStatus" }, { "key": "Status", "type": "NPI", "value": "OK" } ] } ] } ] }, "access": { "code": 200, "duration": 205, "httpHeaders": { "Content-Type": "application/soap+xml; charset=UTF-8" }, "httpHost": "localhost", "method": "POST", "path": "/nxrg/iti57", "query": "", "port": 8060, "protocol": "http", "reqSize": 3524, "resSize": 915, "soapHeaders": { "w3Action": "urn:ihe:iti:2010:UpdateDocumentSet", "w3MessageID": "urn:uuid:8cd0fb3a-cc48-4706-8b6f-025d7dd891fd", "w3To": "http://localhost:8060/nxrg/iti57" }, "threadId": "default task-1", "time": "2021-12-01T06:46:05.405+01:00", "stats": { "handlerDuration": 4, "RequestContentDuration": 0, "ResponseContentDuration": 0, "SecurityProtocolRequestDuration": 0, "SecurityProtocolResponseDuration": 0, "bufferAllocated": false, "usedBuffers": 1, "activeBuffersInPool": 1, "idleBuffersInPool": 1 } } } |
Logning for ITI-18
Succesfuldt kald til service iti-18 giver anledning til en logningslinje på følgende format:
Code Block | ||
---|---|---|
| ||
{ "time": "2021-12-01T05:48:42.821Z", "category": "dk.sds.nsp.audit.log.nxrg/iti-18", "audit": { "timestamp": "2021-12-01T06:48:42.772+01:00", "components": [ { "component": "NXRG/ITI-18", "contexts": [ { "context": "urn:uuid:36358982-bfa1-4ad9-ba86-9b5ea33196c2", "information": [ { "key": "CitizenId", "type": "SPI", "value": "22222222" }, { "key": "queryType", "type": "NPI", "value": "urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d" }, { "key": "returnType", "type": "NPI", "value": "LeafClass" }, { "key": "numberOfResults", "type": "NPI", "value": "2" }, { "key": "DoucmentEntryInformation", "type": "RPI", "value": "{\"entryUUid\":\"urn:uuid:268cd839-11e2-4121-8fea-3f184e5f3efa\", \"uniqueId\":\"5766156196412876102.2822196146951899395.1638337675198\", \"replacesEntryUuid\":null}" }, { "key": "DoucmentEntryInformation", "type": "RPI", "value": "{\"entryUUid\":\"urn:uuid:ccff6d0e-c2bd-4b9d-81d6-874726e9bba4\", \"uniqueId\":\"7402593388400441251.2665840693284483189.1638337722275\", \"replacesEntryUuid\":null}" }, { "key": "Status", "type": "NPI", "value": "OK" } ] } ] } ] }, "access": { "code": 200, "duration": 31, "httpHeaders": { "Content-Type": "application/soap+xml; charset=UTF-8" }, "httpHost": "localhost", "method": "POST", "path": "/nxrg/iti18", "query": "", "port": 8060, "protocol": "http", "reqSize": 2123, "resSize": 11289, "soapHeaders": { "w3Action": "urn:ihe:iti:2007:RegistryStoredQuery", "w3MessageID": "urn:uuid:accc136e-1ca4-4a04-bfe1-4caef4e31328", "w3To": "http://localhost:8060/nxrg/iti18" }, "threadId": "default task-1", "time": "2021-12-01T06:48:42.772+01:00", "stats": { "handlerDuration": 13, "RequestContentDuration": 0, "ResponseContentDuration": 0, "SecurityProtocolRequestDuration": 0, "SecurityProtocolResponseDuration": 0, "bufferAllocated": false, "usedBuffers": 1, "activeBuffersInPool": 1, "idleBuffersInPool": 1 } } } |
Logning for ITI-18 når ugyldige frasorterede dokumenter
Succesfuldt kald til service iti-18 giver anledning til en logningslinje på følgende format. Her ses at der er returneret 2 dokumenter, samt et er sorteret fra pga. manglende hash værdi (der er en fejl, hvor "location" er det frasorterede documententry (entryuuid)
Code Block | ||
---|---|---|
| ||
{ "time":"2022-04-27T08:50:38.171Z", "category":"dk.sds.nsp.audit.log.nxrg/iti-18", "audit":{ "timestamp":"2022-04-27T10:50:37.985+02:00", "components":[ { "component":"NXRG/ITI-18", "contexts":[ { "context":"urn:uuid:4c50a699-c757-4d72-bce0-ef0e4284d5ff", "information":[ { "key":"CitizenId", "type":"SPI", "value":"27272727" }, { "key":"queryType", "type":"NPI", "value":"urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d" }, { "key":"returnType", "type":"NPI", "value":"LeafClass" }, { "key":"numberOfResults", "type":"NPI", "value":"2" }, { "key":"DoucmentEntryInformation", "type":"RPI", "value":"{\"entryUUid\":\"urn:uuid:b263be94-8ae8-428c-a08e-07e815e9c4f3\", \"uniqueId\":\"8232413550820834039.3966522250150692715.1651049436633\", \"replacesEntryUuid\":null}" }, { "key":"DoucmentEntryInformation", "type":"RPI", "value":"{\"entryUUid\":\"urn:uuid:3632b062-c449-4d80-9f17-92ffe033985b\", \"uniqueId\":\"8463246857834336090.1917624010876404532.1651049437586\", \"replacesEntryUuid\":null}" }, { "key":"DoucmentEntryInformation", "type":"RPI", "value":"{\"entryUUid\":\"urn:uuid:2f9ec238-55a6-48ad-baae-ca3f02783892\", \"uniqueId\":\"7463408028766553712.8751492382280798024.1651049437729\", \"replacesEntryUuid\":null}" }, { "key":"Status", "type":"NPI", "value":"WARNING" }, { "key":"Errors", "type":"RPI", "value":"{\"errorCode\":\"XDSRegistryMetadataError\", \"errorMessage\":null, \"codeContext\":\"XDSRegistryMetadataError Slot contains incorrect amount of values. Slot = hash, allowed = [ 1- 1], Was = 0\", \"location\":\"Entryuuid: urn:uuid:2f9ec238-55a6-48ad-baae-ca3f02783892\", \"severity\":\"urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Error\"}" } ] } ] } ] }, "access":{ "code":200, "duration":164, "httpHeaders":{ "Content-Type":"application/soap+xml; charset=UTF-8" }, "httpHost":"localhost", "method":"POST", "path":"/nxrg/iti18", "query":"", "port":8060, "protocol":"http", "reqSize":2123, "resSize":11645, "soapHeaders":{ "w3Action":"urn:ihe:iti:2007:RegistryStoredQuery", "w3MessageID":"urn:uuid:b8abf188-a545-4388-ab2d-01593c51e7ff", "w3To":"http://localhost:8060/nxrg/iti18" }, "threadId":"default task-1", "time":"2022-04-27T10:50:37.985+02:00", "stats":{ "handlerDuration":5, "RequestContentDuration":0, "ResponseContentDuration":0, "SecurityProtocolRequestDuration":0, "SecurityProtocolResponseDuration":0, "bufferAllocated":false, "usedBuffers":1, "activeBuffersInPool":1, "idleBuffersInPool":1 } } } |
Logning når fejl
Følgende er et eksempel på et ITI-42 kald med, fejl. Konkret mangler CPR numret i kaldet.
Code Block | ||
---|---|---|
| ||
{ "time": "2021-12-01T05:50:00.92Z", "category": "dk.sds.nsp.audit.log.nxrg/iti-42", "audit": { "timestamp": "2021-12-01T06:50:00.894+01:00", "components": [ { "component": "NXRG/ITI-42", "contexts": [ { "context": "5912107379890312866.8220644980724288715.1638337800700", "information": [ { "key": "CitizenId", "type": "SPI", "value": "" }, { "key": "SubmissionSetInformation", "type": "RPI", "value": "{\"uniqueId\":\"5912107379890312866.8220644980724288715.1638337800700\"}" }, { "key": "DoucmentEntryInformation", "type": "RPI", "value": "{\"entryUUid\":\"urn:uuid:5ea9015e-75f7-4cc5-85ff-079b56f36499\", \"uniqueId\":\"6660232118599018558.1142303413219772882.1638337800625\", \"replacesEntryUuid\":null}" }, { "key": "Status", "type": "NPI", "value": "ERROR" }, { "key": "Errors", "type": "RPI", "value": "{\"errorCode\":\"XDSRegistryMetadataError\", \"errorMessage\":null, \"codeContext\":\"External identifier value is missing: urn:uuid:6b5aea1a-874d-4603-a4bc-96a0a7b3844 (patientId)\", \"location\":null, \"severity\":\"urn:oasis:names:tc:ebxml-regrep:ErrorSeverityType:Error\"}" } ] } ] } ] }, "access": { "code": 200, "duration": 17, "httpHeaders": { "Content-Type": "application/soap+xml; charset=UTF-8" }, "httpHost": "localhost", "method": "POST", "path": "/nxrg/iti42", "query": "", "port": 8060, "protocol": "http", "reqSize": 8518, "resSize": 1221, "soapHeaders": { "w3Action": "urn:ihe:iti:2007:RegisterDocumentSet-b", "w3MessageID": "urn:uuid:215c930a-73c0-4a6f-84fe-0c24e3725ba7", "w3To": "http://localhost:8060/nxrg/iti42" }, "threadId": "default task-1", "time": "2021-12-01T06:50:00.894+01:00", "stats": { "handlerDuration": 4, "RequestContentDuration": 0, "ResponseContentDuration": 0, "SecurityProtocolRequestDuration": 0, "SecurityProtocolResponseDuration": 0, "bufferAllocated": false, "usedBuffers": 2, "activeBuffersInPool": 2, "idleBuffersInPool": 0 } } } |
Migrering af data
Den oprindelige data migrering fra openText registry er ikke længere aktuel, og indholdet der indeholder migreringstool - og relaterede tools til verification etc - er flyttet til "Yderligere dokumentation - Migration"
...