C-GET
约 707 字大约 2 分钟
PACSDICOMfo-dicomC-GET
2026-03-20
C-GET 和 8.C-MOVE 一样,都属于 Query/Retrieve 里的检索命令,但它的工作方式不同。C-MOVE 是让 PACS 把影像推送到另一个目标 AE,而 C-GET 是让 PACS 在当前关联上直接把影像回传给请求方。
1. 先理解它和 C-MOVE 的区别
两者最核心的区别在于影像回传路径:
- C-MOVE:PACS 把影像发送到单独的目标接收端 AE。
- C-GET:PACS 在当前这条关联上,通过后续 C-STORE 子操作把影像回传给当前请求方。
因此,发起 C-GET 的一方虽然最开始是请求方,但在接收影像时,也必须具备处理 C-STORE 子操作的能力。
2. 什么时候更适合用 C-GET
C-GET 更适合下面这些情况:
- 当前客户端不方便暴露一个可被 PACS 反向访问的监听端口。
- 网络策略比较严格,不能让 PACS 主动反连本地。
- 希望查询和接收都收敛在一条会话里完成。
但它也有一个明显前提:请求方必须支持接收同一关联里的 C-STORE 子操作。
3. 请求内容通常包括什么
C-GET 和 C-MOVE 一样,也要指定检索级别和检索键。常见内容包括:
- Query/Retrieve Level,例如 Study、Series、Image。
- StudyInstanceUID、SeriesInstanceUID 等定位字段。
- 当前关联允许的相关 Presentation Context。
一个示意写法如下:
var request = new DicomCGetRequest(studyInstanceUid);
request.OnResponseReceived += (req, response) =>
{
Console.WriteLine($"C-GET status: {response.Status}");
};如果需要更精细的检索条件,也可以手动构建 Dataset。
4. 和 C-STORE 的关系
C-GET 成功与否,常常不只看 GET 请求本身,还要看本地是否能正确处理回传的 C-STORE 子操作。也就是说:
- 请求方先发起 C-GET。
- PACS 根据检索结果回传一个或多个实例。
- 这些实例会以 C-STORE 子操作的形式在同一关联上传回。
- 请求方需要正确接收并保存这些对象。
这一点和 9.C-STORE 直接相关。
5. 排查重点
- 检索键是否正确,尤其是 StudyInstanceUID、SeriesInstanceUID。
- 请求方是否具备接收并处理 C-STORE 子操作的能力。
- 协商阶段是否接受了对应的 Storage Presentation Context。
- PACS 是否真的支持 C-GET,而不是只开放 C-MOVE。
6. 使用建议
- 如果网络环境允许 PACS 反连独立接收端,C-MOVE 通常更符合传统部署方式。
- 如果不方便暴露接收端端口,可以优先评估 C-GET。
- 真正落地前,先确认目标 PACS 对 C-GET 的支持情况,不同系统差异很大。