Fo-Dicom CMove SCP 良好实施
Fo-Dicom CMove SCP good implementation
我已经使用 fo-dicom 实现了一个超快的 PACS 服务器,此时我唯一真正的问题是处理 CMove 请求。
IDicomCMoveProvider 有一种方法 IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request);
但是我实现它的方式看起来不对而且速度很慢。
特别是在 CMove 方法中,我正在创建一个新的 CStore 请求,我将其发送到必须接收研究的模态,对于每个实例,我创建一个新的 CStore 请求,一个新的 DicomClient,然后我发送并等待对于响应。然后发生的是缓慢的部分,每个实例都执行整个 DICOM 通信 shebang、连接、关联、发送实例、分离、断开连接,并且发送整个研究需要很长时间。
我的问题是你应该如何正确地实现它,以便它只打开一个连接,发送所有图像并关闭。如何使用 fo-dicom 完成此操作的示例将是理想的。
当您在打开 C-STORE 关联之前收到 C-MOVE 请求时,可以:
- 确定受请求影响的匹配 SOP 实例(图像)列表
- 为所有匹配的实例构建一个展示上下文列表(即按 SOP Class UID 分组)
- 在对 C-MOVE 目标 AE 的单个关联请求中协商所有表示上下文
- 发送此关联中的每个图像
通过这种方式实现,您可以为每个受 C-MOVE 请求影响的单独图像摆脱 "DICOM communication shebang"。
我已经使用 fo-dicom 实现了一个超快的 PACS 服务器,此时我唯一真正的问题是处理 CMove 请求。
IDicomCMoveProvider 有一种方法 IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request);
但是我实现它的方式看起来不对而且速度很慢。
特别是在 CMove 方法中,我正在创建一个新的 CStore 请求,我将其发送到必须接收研究的模态,对于每个实例,我创建一个新的 CStore 请求,一个新的 DicomClient,然后我发送并等待对于响应。然后发生的是缓慢的部分,每个实例都执行整个 DICOM 通信 shebang、连接、关联、发送实例、分离、断开连接,并且发送整个研究需要很长时间。
我的问题是你应该如何正确地实现它,以便它只打开一个连接,发送所有图像并关闭。如何使用 fo-dicom 完成此操作的示例将是理想的。
当您在打开 C-STORE 关联之前收到 C-MOVE 请求时,可以:
- 确定受请求影响的匹配 SOP 实例(图像)列表
- 为所有匹配的实例构建一个展示上下文列表(即按 SOP Class UID 分组)
- 在对 C-MOVE 目标 AE 的单个关联请求中协商所有表示上下文
- 发送此关联中的每个图像
通过这种方式实现,您可以为每个受 C-MOVE 请求影响的单独图像摆脱 "DICOM communication shebang"。