我正在尝试查询/检索示例(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}$请帮我用研究日期和时间取研究报告。在
我不太熟悉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的查询,如下所示:
但是,请记住,这是不符合DICOM的,因此它取决于SCP的实现,并且可能在不同的产品之间有所不同。在
为了完整起见:您可以在患者级别上进行查询,对于接收到的每个患者,在研究级别上进行后续查询,将患者ID和您的研究日期范围作为匹配条件。不值得一提的是,这将失败的性能问题,但它将是解决问题的DICOM一致性方法。在
相关问题 更多 >
编程相关推荐