Skip to main content

Skapa GIL-integration med Node

Som backend används hono. zod används för validering av data.

Paketet @cancercentrum/gil-dev innehåller en del hjälputils för gil-integrationer.

  • Webbserver med hono
  • Validering av data/schema med zod
  • Loggning till konsoll och OTEL med pino och pino-opentelemetry-transport
  • Autentisering mot INCA med SITHS-funktionscertifikat och systemkonto
  • Returnera fel i ProblemDetails-format
  • Skapa OpenAPI/Swagger vid behov (zod-openapi)

CanINCA är ett exempel på en integration skriven i node.

SITHS-certifikat​

För att kommunicera externt med INCA krävs SITHS-funktionscertifikat. För node är det enklast att ha dessa i PEM-format nyckeln inte har nåt lösten.

Om du har ett cert i p12 eller pfx kan du konvertera det till PEM med openssl.

openssl pkcs12 -in my_siths_cert.p12 -legacy -clcerts -nokeys -out cert.pem
openssl pkcs12 -in my_siths_cert.p12 -legacy -nocerts -nodes -out key.pem

Du behöver en node-version som klarar att köra .ts-filer utan transpilering

Du behöver också skapa ett systemkonto på INCA. Se wiki GIL-wikin.

Du hittar HSA-id:t i certets subject.

openssl x509 -in cert.pem -noout -subject

Filstruktur​

Förslag på filstruktur är:

ext-my-integration/
├─ src/
│ ├─ routes/
| | ├─ health.ts
| | ├─ ...
│ ├─ main.ts
│ ├─ instrumentation.ts
│ ├─ appsettings.ts
│ ├─ types.ts
│ ├─ ...
├─ .gitignore
├─ .env
├─ bitbucket-pipelines.yml
├─ Containerfile
├─ package.json
├─ README.md

OBS! .env ska ignoreras i .gitignore eftersom den innehåller personlig sökväg till certifikat.

Open Telemetry​

Se till att OTEL_SERVICE_NAME och OTEL_EXPORTER_OTLP_ENDPOINT är satta.

OTEL_SERVICE_NAME sätts förslagsvis i Containerfile vid bygge. OTEL_EXPORTER_OTLP_ENDPOINT sätts av ITS när de konfigureras containern.

Konfigurera integrationen i GIL​

Se wiki för GIL.