Association 与 Presentation Context
约 494 字大约 2 分钟
PACSDICOMAssociationPresentation Context
2026-03-20
从代码表面看,DICOM 请求像是“创建客户端然后直接发命令”。但在协议层,真正先发生的是建立 Association,并协商双方支持哪些服务和传输语法。这个过程不通,后面的 C-ECHO、C-FIND、C-STORE 都不会正常执行。
1. 什么是 Association
Association 可以理解成一次 DICOM 会话。通信双方会先通过它确认:
- 谁在请求,谁在应答。
- 双方 AE Title 是否匹配。
- 当前连接允许执行哪些 SOP Class。
- 是否接受某些传输语法。
在 fo-dicom 里,这部分协商通常由 DicomClient 或 DicomServer 帮你处理,但理解其含义仍然很重要。
2. 什么是 Presentation Context
Presentation Context 可以理解成“某种服务能力 + 某组传输语法”的协商项。简单说,就是双方要先谈好:
- 这次连接要不要支持 Verification、Query/Retrieve、Storage 等服务。
- 对应的数据编码格式是否双方都能接受。
如果服务端不接受某个 Presentation Context,就会出现连接建立了,但某个具体请求不能执行的情况。
3. 它和实际开发有什么关系
出现下面这些问题时,通常都要回头考虑协商层:
- C-ECHO 能通,但 C-STORE 失败。
- 能建立连接,但发送请求后直接被拒绝。
- 某些类型的影像可以传,另一些不行。
- 接收端明明在线,但 PACS 仍然推送失败。
4. 排查建议
- 先确认 AE Title 和端口是否正确。
- 再确认对端是否启用了对应的 SOP Class。
- 如果是接收端,确认本地 SCP 是否声明并接受了需要的 Presentation Context。
- 必要时打开 fo-dicom 日志,区分“网络失败”和“协商失败”。