1. 课程导入与DICOMweb定位
在传统PACS(影像归档与通信系统)中,影像调阅依赖DICOM协议在局域网内完成,客户端与服务器之间通过C-ECHO、C-FIND、C-MOVE、C-STORE等DIMSE服务交互。这套机制在院内网络稳定可靠,但一旦要面向互联网、移动端、多租户云环境,就会遇到端口开放、状态保持、防火墙穿透、并发扩展等一系列问题。DICOMweb正是为解决这类问题而提出的标准:它把DICOM的检索、取回、存储、渲染等能力映射到HTTP/HTTPS之上,用REST风格接口替代DIMSE,使影像服务可以像普通Web API一样被浏览器、移动App和云端微服务调用。
本课程的目标不是简单介绍DICOMweb的接口列表,而是围绕“如何用DICOMweb构建一个可用的云影像平台”展开。学完本课程后,你应当能够:理解DICOMweb在云影像平台中的位置与边界;掌握QIDO-RS、WADO-RS、STOW-RS、WADO-URI、WADO-RS Rendering等核心服务的语义与调用方式;能够设计并实现影像检索、调阅、上传、缩略图与渲染链路;理解鉴权、分页、批量、异步、缓存、跨域等工程问题;并能够把DICOMweb与前端Viewer、对象存储、数据库、消息队列组合成完整平台。
DICOMweb在云影像平台中的角色
一个典型的云影像平台可以粗略分为四层:接入层、服务层、数据层和展示层。接入层负责HTTPS、鉴权、限流与路由;服务层承载DICOMweb服务、业务服务与任务调度;数据层包括对象存储(存放DICOM文件)、元数据数据库(存放Study/Series/Instance索引)以及缓存;展示层则是Web Viewer、移动端和第三方系统。DICOMweb位于服务层的最前端,是外部系统与平台影像能力之间的标准接口。它不负责长期存储,也不负责业务规则,而是把“找影像、取影像、存影像、渲染影像”这四件事标准化。
需要特别区分的是:DICOMweb不是DICOM的替代品,而是DICOM在Web环境下的传输与访问方式。DICOM文件本身、SOP Class、Tag语义、传输语法都没有改变,改变的是“怎么问、怎么答”。例如,传统C-FIND返回的是DIMSE消息,而QIDO-RS返回的是JSON或XML;传统C-MOVE把影像推到指定AE,而WADO-RS由客户端主动通过HTTP GET拉取。理解这一点,才能在设计平台时正确划分“标准接口”与“业务接口”的边界。
整体开发路线
本课程按“先通链路、再补能力、后做优化”的顺序推进。第一阶段聚焦最小可用链路:搭建一个能响应QIDO-RS查询Study列表、能通过WADO-RS取回单个Instance、能通过STOW-RS接收上传的服务。这个阶段的关键不是功能多,而是把URL结构、路径参数、Accept头、返回格式、状态码这些基础约定跑通。例如,QIDO-RS查询某患者检查列表的典型请求是:
GET /studies?PatientID=MRN10086&limit=20&offset=0
Accept: application/dicom+json
返回体是JSON数组,每个元素包含0020000D(StudyInstanceUID)、00100010(PatientName)、00080020(StudyDate)等Tag。这里要注意:DICOMweb的JSON编码使用“8位十六进制Tag”作为键,值对象中带vr字段,这与普通业务JSON不同,前端解析时需要按标准处理。
第二阶段补齐调阅与渲染能力:实现WADO-RS取回完整Study、Series或Instance,支持multipart/related响应;实现WADO-RS Rendering,把DICOM像素数据转成JPEG/PNG,供浏览器直接显示缩略图或预览图。第三阶段处理工程问题:分页、批量、异步任务、缓存、跨域、鉴权、审计、限流、失败重试。第四阶段面向平台化:多租户隔离、对象存储生命周期、与AI推理服务对接、与HL7/FHIR系统联动。
典型应用场景
场景一:区域影像云。多家医院把影像上传到云端,基层医院通过浏览器调阅上级医院影像。此时STOW-RS负责上传,QIDO-RS负责按患者、检查日期、模态检索,WADO-RS负责取回影像,WADO-RS Rendering负责生成预览图。场景二:互联网医院与患者端。患者通过手机查看自己的报告和影像,平台需要用短期Token限制访问范围,只允许访问指定Study,并对下载行为做审计。场景三:AI辅助诊断。AI服务通过QIDO-RS拉取待分析检查列表,通过WADO-RS取回像素数据,推理完成后把结构化结果写回业务库,必要时通过STOW-RS回写标注后的Secondary Capture影像。场景四:科研与教学。研究者按模态、部位、序列参数批量检索脱敏影像,平台需要支持大分页、断点续传和导出任务。
学习本课程需要的基础
你不需要先成为DICOM专家,但需要了解基本概念:Study、Series、Instance的层级关系,SOP Class UID与SOP Instance UID的区别,患者ID与StudyInstanceUID的用途。技术侧需要能读写HTTP请求、理解JSON、会用至少一种后端语言(Java、Python、Node.js、Go均可)和一种前端框架。如果你已经做过REST API开发,那么DICOMweb的学习曲线主要在于DICOM数据模型和Tag语义,而不是HTTP本身。
本课程后续章节会逐步展开:先讲DICOM数据模型与Tag,再讲QIDO-RS的查询参数与分页,然后讲WADO-RS的取回与multipart解析,接着讲STOW-RS的上传与校验,再讲渲染与前端Viewer集成,最后讲鉴权、缓存、部署与排障。每一节都会给出可运行的请求示例、参数说明和结果判断依据,帮助你把标准落到代码和配置上。