使用“ findscu”,“ movescu”然后在多个登录号上重复重复的过程很困难

时间:2019-06-28 19:56:46

标签: python dicom dcmtk

我写了一个用于从内部服务器提取DICOM文件的代码,但是我很难为不同的登录号重复运行它。

工作流程摘要:给定特定的登录号,

  1. 使用findscu获取有关登录号的信息,
  2. 将输出文件解析为数据框以组织信息,
  3. 从数据框中选择特定的系列描述,
  4. 使用movescu下载扫描文件
  5. 对下载的DICOM扫描进行处理

然后重复一个新的登录号。

该问题在第二次执行findscu时发生,它将告诉我数据库上没有登录号信息,就好像登录号不存在一样。但这是不可能的,因为当我停止代码并手动进行迭代时,数据库中确实存在下一个登录号。

findscu命令:

'findscu -v -S  -k 0008,0052=SERIES -k 0010,0010="" -k 0010,0020="" -k 0008,0050=<acc_num> -k 0008,1030="" -k 0020,000D="" -k 0008,0020="" -k 0008,103e="" -k 0020,0011="" -k 0020,000E="" -k 0020,1002="" -aet <my_aet> -aec <remote_aet> <remote_ip> <remote_port> > F:\\FGTCategoryQuantification_mhas\\findscu_acc_num_SERIES.txt'

movescu命令:

'movescu -S +P 4006 -k 0008,0052=IMAGE -k 0010,0010="" -k 0010,0020="" -k 0008,0050=<acc_num> -k 0008,1030="" -k 0020,000D=1.2.826.0.1.3680043.2.1009.1465932691.20300.142.76.30.2008137300 -k 0008,0020="" -k 0008,103e="" -k 0020,0011="" -k 0020,000E=1.2.826.0.1.3680043.2.1009.1465932803.545000130.20070116 -k 0020,1002="" -aet <my_Aet> -aec <remote_aet> <remote_ip> <remote_port> -od F:\\FGTCategoryQuantification_mhas\\DICOMacc_numX01 > F:\\FGTCategoryQuantification_mhas\\DICOMacc_numX01\\movescu_acc_numPh1SagVIBRANTMPH.txt'

我认为某些连接可能仍在打开,从而中断了第二个findscu执行?或其他问题?我在dcmtlk方面没有很多经验。任何建议将不胜感激。

预先感谢您-灰色

1 个答案:

答案 0 :(得分:0)

JörgRiesmeier说的对,DICOM不允许按登录号检索-它需要通过其研究实例UID(0020,000D)标识要检索的研究。

但是,您正在与之通信的服务器似乎通常支持按登录号进行检索。如果请求的时间很重要,则服务器一次只能接受一个关联。但是,错误消息应成为对第二个关联请求而不是对第二个C-FIND请求的响应的一部分,并指示超出了连接限制。服务器的DICOM实现似乎并不完全正确...

也许看一下DICOM一致性声明有助于回答您的问题。如果您愿意,可以公开您正在与之通信的特定产品,然后我们可以看看它。