Radiology Service — Local Dev Setup
Status: populated Owner: TBD Last updated: 2026-04-18 Companion: Service Template · 03 platform-services · 02 DDD
1. Prerequisites
- Docker Desktop ≥ 4.x, Node 22, pnpm 9
- Keycloak local dev realm
- Optional: Orthanc DICOM server (lightweight PACS for local testing)
2. docker-compose recipe
services:
radiology-db:
image: postgres:16
environment:
POSTGRES_DB: radiology
POSTGRES_USER: rad_user
POSTGRES_PASSWORD: rad_pass
ports:
- "5439:5432"
orthanc:
image: jodogne/orthanc-plugins:latest
ports:
- "8042:8042" # REST API
- "4242:4242" # DICOM
environment:
ORTHANC__DICOM_WEB__ENABLE: "true"
radiology-service:
build:
context: .
dockerfile: services/radiology-service/Dockerfile.dev
environment:
DATABASE_URL: postgresql://rad_user:rad_pass@radiology-db:5432/radiology
NATS_URL: nats://nats:4222
KEYCLOAK_JWKS_URI: http://keycloak:8080/realms/ghasi/protocol/openid-connect/certs
FHIR_GATEWAY_URL: http://interop-service:3000
ABAC_SERVICE_URL: http://access-policy-service:3000
VIEWER_TOKEN_SECRET: dev-secret-32chars-placeholder
MODULE_LICENSE_KEY: dev-diag-radiology
ports:
- "3009:3000"
3. Initial Setup
pnpm install
pnpm --filter @ghasi/radiology-service drizzle-kit migrate
pnpm --filter @ghasi/radiology-service seed:pacs-endpoints # registers Orthanc as PACS
pnpm --filter @ghasi/radiology-service dev
4. Common Commands
| Command | Description |
|---|---|
pnpm dev | Start with hot reload |
pnpm test:unit | Unit tests |
pnpm test:integration | Integration tests (docker required) |
pnpm seed:pacs-endpoints | Register local Orthanc endpoint |
pnpm drizzle-kit migrate | Apply migrations |
5. Testing with Orthanc
Upload a test DICOM file to Orthanc and verify the radiology-service QIDO-RS sync:
# Upload test DICOM
curl -X POST http://localhost:8042/instances \
--data-binary @test/fixtures/sample-ct.dcm
# Trigger QIDO-RS sync in radiology-service
curl -X POST http://localhost:3009/v1/radiology/studies/sync \
-H "Authorization: Bearer $DEV_TOKEN"