Fo-Dicom CMove SCP 良好实施

Fo-Dicom CMove SCP good implementation

我已经使用 fo-dicom 实现了一个超快的 PACS 服务器,此时我唯一真正的问题是处理 CMove 请求。

IDicomCMoveProvider 有一种方法 IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request); 但是我实现它的方式看起来不对而且速度很慢。

Gist of my implementation

特别是在 CMove 方法中,我正在创建一个新的 CStore 请求,我将其发送到必须接收研究的模态,对于每个实例,我创建一个新的 CStore 请求,一个新的 DicomClient,然后我发送并等待对于响应。然后发生的是缓慢的部分,每个实例都执行整个 DICOM 通信 shebang、连接、关联、发送实例、分离、断开连接,并且发送整个研究需要很长时间。

我的问题是你应该如何正确地实现它,以便它只打开一个连接,发送所有图像并关闭。如何使用 fo-dicom 完成此操作的示例将是理想的。

当您在打开 C-STORE 关联之前收到 C-MOVE 请求时,可以:

  • 确定受请求影响的匹配 SOP 实例(图像)列表
  • 为所有匹配的实例构建一个展示上下文列表(即按 SOP Class UID 分组)
  • 在对 C-MOVE 目标 AE 的单个关联请求中协商所有表示上下文
  • 发送此关联中的每个图像

通过这种方式实现,您可以为每个受 C-MOVE 请求影响的单独图像摆脱 "DICOM communication shebang"。