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
pinoochpino-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!
.envska ignoreras i.gitignoreeftersom 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.