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

Python pynetdicom qyuery/retrive使用研究日期和时间,python,python-2.7,dicom,pynetdicom,Python,Python 2.7,Dicom,Pynetdicom,我正在尝试来自but的查询/检索示例(qrscu.py) 搜索时,它与患者姓名配合良好。 但我需要在研究日期和研究时间的基础上搜索研究 注意:这里有一些,是可用的。因此,我尝试使用StudyRootFindSOPClass 我试着使用: print "DICOM FindSCU ... ", d = Dataset() d.StudyDate = args.searchstring d.QueryRetrieveLevel = "STUDY" d.StudyID = "*" study = [x

我正在尝试来自but的查询/检索示例(qrscu.py) 搜索时,它与患者姓名配合良好。 但我需要在研究日期和研究时间的基础上搜索研究

注意:这里有一些,是可用的。因此,我尝试使用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
但它给出了错误

Request association
Association response received
DICOM Echo ...  done with status "Success "
DICOM FindSCU ... 
Traceback (most recent call last):
  File "studyqrscu.py", line 104, in <module>
    study = [x[1] for x in assoc.StudyRootFindSOPClass.SCU(d, 1)][:-1]
  File "/usr/local/lib/python2.7/dist-packages/pynetdicom-0.8.1-py2.7.egg/netdicom/applicationentity.py", line 90, in __getattr__
    raise Exception("SOP Class %s not supported as SCU" % attr)
Exception: SOP Class StudyRootFindSOPClass not supported as SCU
请求关联
收到协会的答复
DICOM回声。。。以“成功”状态完成
DICOM FindSCU。。。
回溯(最近一次呼叫最后一次):
文件“studyqrscu.py”,第104行,在
研究=[x[1]代表assoc.StudyRootFindSOPClass.SCU(d,1)][:-1]
文件“/usr/local/lib/python2.7/dist packages/pynetdicom-0.8.1-py2.7.egg/netdicom/applicationentity.py”,第90行,在__
引发异常(“SOP类%s不支持作为SCU”%attr)
例外:SOP类StudyRootFindSOPClass不支持作为SCU

请帮助我使用研究日期和时间获取研究。

我不太熟悉python,也不太熟悉您使用的特定DICOM工具包。我敢回答这个问题,因为例外情况似乎很清楚——工具箱似乎不支持研究根查询信息模型

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

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

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

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

我同意研究根目录是您想要为您的用例提供的,但不幸的是,您正在使用的工具包显然只支持Patient根目录。根据错误消息,这是客户端(SCU)的一个问题,因此不应归咎于dcm4chee

如何解决这个问题

您可能会发现支持StudyRoot的不同工具包。事实上,对我来说,缺乏学习根源的支持使我对实际使用的适合性产生了疑问

您可能想走捷径,尝试在Patient Root中形成一个不符合DICOM的查询,如下所示:

 - Q/R-Level = "STUDY"
 - Patient-ID = "*" or empty
 - Study Date = <your date range>
-Q/R-Level=“研究”
-患者ID=“*”或为空
-研究日期=
这很有可能会起作用,但是请记住,它不符合DICOM,因此它取决于SCP实现,并且可能在不同的产品之间有所不同


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

是的,确实如此,但在官方文件中,他们没有明确提到这一点。。。。所以我正在努力实现这一点,感谢:搜索层次结构(患者->研究->系列->图像)。这对我真的很有帮助