我写了一个用于从内部服务器提取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方面没有很多经验。任何建议将不胜感激。
预先感谢您-灰色
答案 0 :(得分:0)
JörgRiesmeier说的对,DICOM不允许按登录号检索-它需要通过其研究实例UID(0020,000D)标识要检索的研究。
但是,您正在与之通信的服务器似乎通常支持按登录号进行检索。如果请求的时间很重要,则服务器一次只能接受一个关联。但是,错误消息应成为对第二个关联请求而不是对第二个C-FIND请求的响应的一部分,并指示超出了连接限制。服务器的DICOM实现似乎并不完全正确...
也许看一下DICOM一致性声明有助于回答您的问题。如果您愿意,可以公开您正在与之通信的特定产品,然后我们可以看看它。