Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

log4j konfiguration

Log4j konfiguration for begge alle services findes i samme wildfly modul bibliotek som servicekonfigurationen

Se yderligere opsætning i installationsvejledningen.

Salt til hashing af patientId'ere

Til hashing af patientId'ere i databasen, anvendes den salt som er angivet i konfigurations-filen "idsas-patient-id-salt.properties". Salten angives som to tekststrenge; en prefix og en postfix. 

Det er vigtigt, at denne salt er stabil og aldrig ændrer sig, efter at den er blevet valgt.

Servicen kan ikke starten op, hvis salten ikke er korrekt angivet.

Der er ingen særlige krav til salten, ud over at den er stabil.

Følgende SQL kan bruges til at genskabe hash-værdien givet de to salt-værdier og patientId'et (som her i eksemplet er sat til "1111111118").

Code Block
languagejava
titleSQL-query med patientId til at genskabe hash
linenumberstrue
collapsetrue
select sha2(concat('saltprefix', '1111111118', 'saltpostfix'), 256);

Overvågning

Alle IDSAS services udstiller en overvågningsside, som findes i listen af komponenter.

Fortolkning af overvågningsside

Overvågningssiderne returnerer enten:

  • HTTP 200, hvis servicen i øjeblikket kører fint.
  • HTTP 503, hvis der er opstået en fejl der kræver indgriben.

Audit-logning

Hvert servicekald medfører en ny indgang i auditloggen, som kan være udfyldt med følgende komponenter, afhængig af konteksten:

Overvågning

Alle DDTV services udstiller en overvågningsside, som findes i listen af komponenter.

Fortolkning af overvågningsside

Overvågningssiderne returnerer enten:

  • HTTP 200, hvis servicen i øjeblikket kører fint.
  • HTTP 503, hvis der er opstået en fejl der kræver indgriben.

Audit-logning

Hvert servicekald medfører en ny indgang i auditloggen, som kan være udfyldt med følgende komponenter, afhængig af konteksten:

createBlurringIkke personligexpirydatetime

Komponent

Kontekst

Type

Nøgle

Information

DDTVcreateBlurringPersonligpatient-idId på borgeren
DDTVcreateBlurringPersonligpatient-id-sourceTypen af id (fx "cpr")
DDTVcreateBlurringPersonlig
hashed-patient-idHashed id på borgeren
DDTVcreateBlurringIkke personligactor-idId på organisationen
DDTVcreateBlurringIkke personligactor-id-sourceTypen af id (fx "cvr")
DDTVcreateBlurringIkke personligexpiry-date-timeUdløbsdato for slørring
DDTVgetCurrentSaltIkke personligactor-idId på organisationen
DDTVgetCurrentSaltIkke personlig
actor

Komponent

Kontekst

Type

Nøgle

Information

IDSAScreateBlurringPersonligpatient-idId på borgeren
IDSAScreateBlurringPersonligpatient-id-sourceTypen af id (fx "cprcvr")
IDSASDDTVcreateBlurringgetCurrentSaltIkke personligPersonlig
hashedbase64-patientencoded-idsaltEn base64 encoded string der indeholder den salt, der er returneret.
DDTVgetBlurredOrganisationsPersonligpatientHashed id på borgerenIDSAScreateBlurringIkke personligactor-idId på organisationenborgeren
IDSASDDTVcreateBlurringgetBlurredOrganisationsIkke personligPersonlig
actorpatient-id-sourceTypen af id (fx "cvrcpr")IDSAS
DDTV
getBlurredOrganisations
Personlig
active-
blurrings-
Udløbsdato for slørring
IDSASgetCurrentSaltIkke personligactor-idId på organisationen
IDSASgetCurrentSaltIkke personlig
actor-id-sourceTypen af id (fx "cvr")
IDSASgetCurrentSaltIkke personlig
base64-encoded-saltEn base64 encoded string der indeholder den salt, der er returneret.
IDSASgetBlurredOrganisationsPersonligpatient-idId på borgeren
IDSASgetBlurredOrganisationsPersonlig
patient-id-sourceTypen af id (fx "cpr")
IDSASgetBlurredOrganisationsPersonligactive-blurrings-foundHvorvidt der blev fundet sløringer for borgeren eller ej, i det pågældende opslag. Kan være "true" eller "false".
foundHvorvidt der blev fundet sløringer for borgeren eller ej, i det pågældende opslag. Kan være "true" eller "false".


Code Block
languagetext
titleCreateBlurring eksempel
collapsetrue
{
  "time": "2023-06-12T11:42:23.664Z",
  "category": "dk.sds.nsp.audit.log.idsas",
  "audit": {
    "timestamp": "2023-06-12T13:42:22.972+02:00",
    "components": [
      {
        "component": "IDSAS",
        "contexts": [
          {
            "context": "createBlurring",
    
Code Block
languagetext
titleCreateBlurring eksempel
collapsetrue
{
  "time": "2023-06-12T11:42:23.664Z",
  "category": "dk.sds.nsp.audit.log.idsas",
  "audit": {
    "timestamp": "2023-06-12T13:42:22.972+02:00",
    "components": [
      {
        "componentinformation": "IDSAS",[
        "contexts": [
      {
    {
            "contextkey": "createBlurringcpr",
                "informationtype": ["RPI",
              {
    "value": "1234567890"
              },
              {
                "key": "cprcvr",
                "type": "RPINPI",
                "value": "123456789033257872"
              },
            ]
   {
       }
        ]
 "key": "cvr",
     }
    ]
  },
  "access": {
    "typecode": "NPI"200,
    "duration": 95,
    "httpHeaders": {
      "valueContent-Type": "33257872"text/xml;charset=UTF-8",
      "SOAPAction": "CreateBlurring"
    },
   } "httpHost": "localhost",
    "idCardAttributes": {
       ]"medcom:CareProviderID": "33257872",
      "medcom:CareProviderName": "Sundhedsdatastyrelsen",
   }
   "medcom:ITSystemName": "Service    ]Consumer Test",
      }
    ]
  },
  "access": {
"medcom:UserAuthorizationCode": "6QF17",
      "medcom:UserRole": "7170",
      "codesosi:AuthenticationLevel": 200"4",
      "durationsosi:IDCardID": 95"SIjvZBkfZ1yAWSpYFcLpvw==",
      "httpHeaderssosi:IDCardType": {"user",
      "Content-Typesosi:IDCardVersion": "text/xml;charset=UTF-8",
  1.0.1"
    },
    "SOAPActionmethod": "CreateBlurringPOST",
     }"path": "/idsas/20230601/service",
    "httpHostquery": "localhost",
    "idCardAttributesport": {8080,
      "medcom:CareProviderIDprotocol": "33257872http",
      "medcom:CareProviderNamereqSize": "Sundhedsdatastyrelsen"7204,
      "medcom:ITSystemName": "Service Consumer Test",
  "resSize": 211,
    "medcom:UserAuthorizationCodesoapHeaders": "6QF17",{
      "medcom:UserRoleFlowID": "717072111931-fe3b-4956-bea3-20e8c5be9ce0",
      "sosi:AuthenticationLevelIssuer": "4TEST1-NSP-STS",
      "sosi:IDCardIDMessageID": "SIjvZBkfZ1yAWSpYFcLpvw==76315a15-0fb2-4df7-9e3e-53a3b28fb700",
      "sosi:IDCardTypeNameID": "user",
  urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
    },
    "sosi:IDCardVersionthreadId": "1.0.default task-1"
    },
    "methodtime": "POST2023-06-12T13:42:22.968+02:00",
    "pathstats": "/idsas/20230601/service",
{
      "queryhandlerDuration": ""583,
      "portRequestContentDuration": 808041,
      "protocolResponseContentDuration": "http"0,
      "reqSizeSecurityProtocolRequestDuration": 7204368,
      "resSizeSecurityProtocolResponseDuration": 2110,
      "soapHeadersbufferAllocated": {true,
      "FlowIDusedBuffers": "72111931-fe3b-4956-bea3-20e8c5be9ce0"1,
      "IssueractiveBuffersInPool": "TEST1-NSP-STS"1,
      "MessageIDidleBuffersInPool": "76315a15-0fb2-4df7-9e3e-53a3b28fb700",0
      "NameID": "urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
  }
  },
    "threadId": "default task-1",
    "time": "2023-06-12T13:42:22.968+02:00",
    "stats": {
      "handlerDuration": 583,
      "RequestContentDuration": 41,
      "ResponseContentDuration": 0,
      "SecurityProtocolRequestDuration": 368,
      "SecurityProtocolResponseDuration": 0,
      "bufferAllocated": true,
      "usedBuffers": 1,
      "activeBuffersInPool": 1,
      "idleBuffersInPool": 0
    }
  }
}

Whitelisting af anvendere

De enkelte anvenderes ID skal whitelistes til at bruge IDSAS. Et ID vil typisk være et CVR.

Der er pt. en type af whitelisting, BLURRING, med mulighed for at der tilføjes flere i fremtiden. For at kunne oprette en sløring, skal anvenderens CVR være whitelistet med netop denne type.

Der findes en tabel whitelist i databasen til dette formål.

SQL til at indsætte whitelisting af anvender kan se ud på følgende måde:

INSERT INTO whitelist (actor_id, type, note) VALUES ('46837428', 'BLURRING', 'Oprettet fra supportsag ASCP00155779');

Note-feltet kan fx anvendes til at referere en supportsag eller lignende for sporingshensyn. Kun actor_id og type er obligatorisk.

Oprettelse/fornyelse af salt

Oprettelse/fornyelse af salt sker via et HTTP GET kald til <serverurl>/idsas-operations/renew-salt

...


}


Baggrundsjobs

Overvågning af baggrundsjobs

...