测试远程DICOM Q / R服务器的黑盒子

时间:2014-05-18 08:19:02

标签: dicom dcmtk

我想知道是否有人试图解决以下问题。我需要在远程DICOM Q / R服务器上执行一系列测试。这将允许一些简单的DICOM一致性声明检查。

作为测试套件的实现细节,我运行以下命令(DCMTK样式命令):

$ findscu --study --cancel 1 --key 0020,0010=* --key 8,52=STUDY --aetitle MINE --call THEIR dicom.example.com 11112 

此处的目标是找到有效的 StudyID (稍后我将使用 StudyID 执行较低的关键级别C-FIND,以及一些相关的C -MOVE查询)。当然,如果我可以上传我自己的数据集并尝试将其取回,那将会容易得多,但我无法在临床环境中对付正在运行的PACS。我需要使用最少数量的查询来定义如何查找有效的 StudyID

但是我担心某些DICOM实现可能会policies禁止查询整个数据库。

所以我想知道是否有人编写了policies的列表,并且可能描述了一种从具有最少数量的C-FIND查询的远程服务器检索有效StudyID的方法。

2 个答案:

答案 0 :(得分:4)

我想我可以简单地选择:

TODAY=`date +"%Y%m%d"`
findscu --study --key 0008,0020="$TODAY-" --key 0020,0010=* --key 8,52=STUDY --aetitle MINE --call THEIR dicom.example.com 11112

如果这不起作用(返回空),我会检查yesterday结果。

答案 1 :(得分:4)

欢迎来到DICOM-wonderland。

你是对的,你应该非常,非常,非常小心地在临床PACS上运行随机查询。我已经看到商业PAC发送他们的整个(!)数据库作为一个它不理解的查询的结果。不是很好看。这(以及隐私)是全世界许多医院PACS管理员非常害怕通过DICOM直接访问其PACS的原因之一。

总的来说,我会说标准化不会对你有所帮助。所以你必须找到适合你的东西,哪些不会让PACS失效。这里不保证。

只是查询医院PACS的观察清单:

  • 有些在匹配时区分大小写,有些则不是。
  • 大多数支持某种外卡。这通常是'*'。但我也看到'%'(因为那是一个SQL通配符,查询只是作为SQL字符串传递)。我认为这个定义不明确。
  • 您将获得的列表可能仅限于前500个条目。或1000.或500至1000之间的随机数。或整个PACS。你只是不知道。
  • DICOM和取消效果不佳。取消查询的效果不佳。通常,PACS将其视为失败的传输,并将在一段时间后重试。并且重试队列的大小有限,因此它可能会忽略新查询。所以总是让你的STORE-SCP服务器运行以排空这个队列。
  • 有时查询需要几分钟,尤其是检索。下次它可能被检索(从磁带?)并且快一段时间。
  • DICOM查询可能会从PACS中获取大量资源,具体取决于PACS。如果你的实验有点太多,PACS管理员就会出现,不要惊讶。
  • 支持的查询差别很大。所有人都支持基本查询:患者列表,患者的研究ID /研究实例列表,每个研究的系列列表,检索研究或系列。除非你得到一个使用Osirix的时髦研究部门,它不支持患者级别的查询,但只支持学习级别的查询。

所以,如果您想在任何随机PACS上工作,我会建议:

  • 使用empty-return-key而不是'*'。这是DICOM检索信息的方式。
  • 请勿使用'-cancel'。如果确实需要取消,只需关闭TCP连接(DCMTK不支持)
  • 对PatientId,PatientName,Birthdate,StudyDate使用查询以获取StudyIDs / StudyInstanceUids列表。

最简单的是使用固定的StudyID,假设它在PACS中保留的时间足够长。如果没有,请考虑限制查询以不使PACS超载(“TODAY”建议您使用该描述)。

祝你好运!