Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootSundhedsadresseringsservicen (EAS) - Leverancebeskrivelse
includeroottrue


Table of Contents

Indledning

Nærværende dokument udgør udviklervejledningen for EAS (EHMI AdresseringsService). EAS fungerer som opslagsservice, som baseret på forskellige parametre kan fremsøge modtagere på EHMI-netværket.
Komponenten er udviklet som en Java-applikation baseret på HAPI FHIR Plain Server og understøttes på JBoss Application Server version 8 (Wildfly). Komponenten integrerer til PersonInformation, SikredeInformation, SORES og EER.

Opsætning af udviklingsmiljø

Projektet bygges ved at udføre en af disse:

...

docker-compose up --build

IntelliJ IDEA

Hvis IntelliJ IDEA anvendes som IDE, så er der tilføjet to run configurations under .run mappen i roden af projektet.

  • Start EAS Development - Bygger java moduler og docker images, samt opstarter development compose.
  • Attach HAPI - Development compose konfiguration udstiller port 5005 som debugging port for HAPI FHIR servlet. Denne run konfiguration tilknytter debuggeren via. IntelliJ IDEA

Test

Når EAS-servicen er startet lokalt, kan servicens operationer (jf. OperationDefinitions i EAS implementation guiden) tilgås på følgende URL'er:

...

curl -X POST 'http://localhost:8081/eas/fhir/Organization/$getReceivingOrganizationBySORId' \
  -H 'Content-Type: application/fhir+json' \
  -H 'Accept: application/fhir+json' \
  -d '{
    "resourceType" : "Parameters",
    "id" : "EX-GetReceivingOrganizationBySORId-Request",
    "parameter" : [
      { "name" : "sorId", "valueString" : "12345678" },
      { "name" : "messageType", "valueString" : "XDIS92" }
    ]
  }'

Ingress/Egress

Hele servicelandskabet i EHMI, (EHMI-SIK), er tiltænkt at køre med mutual TLS - fremover mTLS.  
For at abstrahere håndteringen af dette væk fra selve kerneservicen anvendes dedikerede ingress og egress services til mTLS.

...

De 2 scripts kan udføres via nspbuilder fra og med version 4.0.5:

docker run --rm -it -v "$PWD":/workspace -w /workspace -e revision="snapshot" registry.nspop.dk/tools/nspbuilder:4.0.5 ./setup_keycloak_trust.sh
docker run --rm -it -v "$PWD":/workspace -w /workspace -e revision="snapshot" registry.nspop.dk/tools/nspbuilder:4.0.5 ./setup_client_certificate.sh


Ingress

Udover at TLS terminerer, forwarder den hhv. klientcertifikatet og JWT token mod EAS kerneservicen.
Derved opnåes, at selve kompleksiteten med mTLS er håndteret i ingress laget, mens applikationen selv kan håndtere authentication og validere Proof of Possession af JWT token.
Dette gøres i applikationen ved at sammenholde SHA256 thumbprint af det forwarded klientcertifikat mod cnf claim i JWT token.

...

For at nginx kan validere det anvendte klientcertifikat ved mTLS skal den offentlige del af den udstedende certifikatmyndighed mountes ind i følgende mappe i nginx:

  • /etc/ssl/ca.pem

Egress

Samme princip gør sig gældende for egress service som ingress. At abstrahere håndtering og kompleksiteten af mTLS væk fra kerneapplikationen og ud i et andet lag.

...

Alternativt en anden placering for ikke at overskrive eksisterende CA bundle. Så skal config dog rettes.
Dette er dog ikke nødvendigt for nu, da certifikatmyndighed for KIT Test Keycloak er at finde i standard CA bundle.

Tilføjelse af Operation Definitions

EAS implementation guiden indeholder "operation definitions" svarende til FHIR-operationerne i EAS-servicen. Når der tilføjes nye services i EAS, vil der optræde automatisk genererede operation definitions i /fhir/metadata-endpointet. Der findes ikke funktionalitet (annotations) til at berige de auto-genererede operation definitions med alle elementer, der normalt er ønskelige i implementation guiden. Derfor bør der ske følgende berigelser før tilføjelse til IG'en:

...