RFC media-dicom-001 — PACS / DICOM Gateway

* status: draft * created: 2026-06-27 * sector: servicesmediadicom * parent: servicesaiimaging#021 (Koder Iris PACS, Macaé 15-jul) · decision #022

Summary

A medical-imaging service that speaks DICOM to radiology gear (MRICTX-ray) and exposes a DICOMweb REST surface to Koder consumers, archiving studies to infra/data/kdb-blob. The service behind Koder Iris (the PACS product).

Why a new services/media/ sector (not services/ai/imaging)

DICOM is a wire protocol + object model, not generative AI. Its peers are services/media/{capture,transcode}. The generative imaging foundation stays clean; the only AI coupling (per-modality/disease model routing, #026) lives in services/ai/imaging and is called over the gateway. See #022 for the full topology.

House pattern (from discovery)

Crescer's existing device-integration component lab-link = a single Go binary with an embedded web UI that connects clinical analyzers to the central system via the device protocol (ASTM E1381/E1394 for lab). koder-dicom mirrors this exactly, swapping ASTM→DICOM. Integration target = Crescer/saude-core/pep-api (the Prontuário Eletrônico). Gear sits on the municipal health LAN → on-prem/edge deploy at Macaé reporting to the central (cloud) system.

Surface

  • DIMSE SCP (TCP): C-ECHO (verification), C-STORE (receive). C-FINDC-MOVEMWL deferred.
  • DICOMweb (HTTP): QIDO-RS (query), WADO-RS (retrieve), STOW-RS (store).
  • Archive: studyseriesinstance index, kdb-blob objects, multi-tenant (RLS).

Status

v0.0.1 skeleton landed + verified against pynetdicom (C-ECHO/C-STORE 0x0000, WADO round-trip, tenant isolation). Roadmap: #023 (gateway), #024 (archive/kdb-blob),

025 (render), #026 (model routing), #027 (Crescer integration), #028 (Macaé deploy).