pynetdicom qyuery/retive使用研究日期和时间

2024-09-30 14:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试查询/检索示例(qrscu.py公司)来自pynetdicom但是 当我们搜索时,它与患者姓名一起工作。 但是我需要在studyDate和studyTime的基础上搜索研究。在

注意:这里有一些SOP's for DICOM,可以使用。所以我尝试使用StudyRootFindSOPClass

我试图使用:

print "DICOM FindSCU ... ",
d = dataset()
d.StudyDate = args.searchstring
d.QueryRetrieveLevel = "STUDY"
d.StudyID = "*"
study = [x[1] for x in assoc.StudyRootFindSOPClass.SCU(d, 1)][:-1]
print 'done with status "%s"' % st
print "\n\n\n Cont...", study

但它给出了错误

^{pr2}$

请帮我用研究日期和时间取研究报告。在


Tags: py患者示例for公司基础dicom姓名
1条回答
网友
1楼 · 发布于 2024-09-30 14:37:37

我不太熟悉python,也不太熟悉您正在使用的DICOM工具箱。我敢回答这个问题,因为这个异常看起来非常清楚——工具箱似乎不支持Study根查询信息模型。在

DICOM查询有四种类型,称为信息模型:

  • 模态工作列表(这是另一个故事)
  • 病人根
  • 研究根
  • 仅限患者研究(在商业产品中不太受欢迎,已退休)

来源:DICOM PS3.4

顾名思义,Patient-Root和Study-Root的根元素不同,您可以从哪个根元素开始在后续查询中向下搜索层次结构(Patient->;Study->;Series->;Image)。 Patient Root从患者级别开始,因此您首先在患者级别上搜索条件并获得患者级别的结果。使用从结果中获得的患者ID,您可以进入研究级别以查询特定患者的研究。在

Study Root将患者级别属性视为次要研究属性,即您请求研究,并且您收到每个研究属于每个研究的患者属性(这意味着您可能会为不同的研究接收同一个患者两次,这会对患者根产生影响)。在

我同意你的用例需要一个study root,但是不幸的是,你使用的工具箱显然只支持Patient root。根据错误消息,这是客户端(SCU)的一个问题,因此dcm4chee不应受到责备。在

如何解决这个问题?在

您可能会找到另一个支持StudyRoot的工具箱。实际上,对我来说,缺乏学习的根支持使我对实际使用的适合性产生了疑问。在

您可能希望走上肮脏的道路,尝试在Patient Root中形成一个不符合DICOM的查询,如下所示:

 - Q/R-Level = "STUDY"
 - Patient-ID = "*" or empty
 - Study Date = <your date range>

但是,请记住,这是不符合DICOM的,因此它取决于SCP的实现,并且可能在不同的产品之间有所不同。在

为了完整起见:您可以在患者级别上进行查询,对于接收到的每个患者,在研究级别上进行后续查询,将患者ID和您的研究日期范围作为匹配条件。不值得一提的是,这将失败的性能问题,但它将是解决问题的DICOM一致性方法。在

相关问题 更多 >