Skip to main content

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

CommandDescription
pnpm devStart with hot reload
pnpm test:unitUnit tests
pnpm test:integrationIntegration tests (docker required)
pnpm seed:pacs-endpointsRegister local Orthanc endpoint
pnpm drizzle-kit migrateApply 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"