DCMTK movescu 不适用于文件检索
DCMTK movescu not working for file retrieval
我是 DICOM 和 DCMTK 的新手。我试图使用 movescu 命令从 public 测试服务器 (http://www.dicomserver.co.uk) 检索 dcm 文件。但它不起作用。我能够 运行 成功找到 findscu,但这只是为了获取数据。这是我尝试过的:
findscu -v -P --call COMMON --patient --key 0008,0052=PATIENT --key 0010,0020="PAT004" www.dicomserver.co.uk 104
它可以工作,但同样的事情对像这样的 movescu 不起作用:
movescu -v -P --call COMMON +P 104 --patient --key 0008,0052=PATIENT --key 0010,0020="PAT004" www.dicomserver.co.uk 104
输出:
I: Requesting Association
I: Association Accepted (Max Send PDV: 65524)
I: Sending Move Request (MsgID 1)
I: Request Identifiers:
I:
I: # Dicom-Data-Set
I: # Used TransferSyntax: Little Endian Explicit
I: (0008,0052) CS [PATIENT] # 8, 1 QueryRetrieveLevel
I: (0010,0020) LO [PAT004] # 6, 1 PatientID
I:
W: Move response with error status (Failed: UnableToProcess)
I: Received Final Move Response (Failed: UnableToProcess)
I: Releasing Association
我没有运行任何本地 DICOM 服务器或其他任何东西。实现这一目标的正确方法是什么?
根据DICOM标准(PS3.4),您必须为C-MOVE请求指定PATIENT级别的唯一键。患者姓名 (0010,0010) 不应为“*”(在查询阶段为 "Wild Card Matching"),但患者 ID (0010,0020) 应具有实际值,即您拥有的那些患者 ID 之一使用 "findscu".
查询
顺便问一下,您是否也在您的系统上启动了一个 Storage SCP 来侦听端口 104?请参阅 http://dicomserver.co.uk/ 的联机文档。如果没有,您可以使用额外的命令行选项“+P 104”启动 "movescu"(因为此工具内置了一个)。
如果有人仍然遇到此问题:
- 每个查询都必须包含 StudyInstanceUID + SeriesInstanceUID + PatientID
- 因为检索过程使 PACS 创建一个 SCP 会话来处理运行正在移动的内容,所以它需要知道如何处理它。 AE 是正在发送的(机器的)名称,默认为 MOVESCU(可以使用 aec/aet flags flags 进行更改,但 PACS 主机文件必须具有 ip-to-name 映射)
- 默认情况下,此协议 运行 在端口 104 上,这是受限制的。您可以使用 +P 标志将其更改为高于 1024 的端口(尚未尝试验证 PACS 是否收到此端口号)或者只是 运行 movescu with sudo/root
- 我不知道默认存储目录是什么,但这可以用 -od 标志定义。
工作示例:
sudo /usr/bin/movescu -v -od /path/to/dir PACS_IP 104 -k StudyInstanceUID=1.2.3.4.5 -k SeriesInstanceUID=1.2.3.4.5 -k PatientID=12345 +第 104 页
我是 DICOM 和 DCMTK 的新手。我试图使用 movescu 命令从 public 测试服务器 (http://www.dicomserver.co.uk) 检索 dcm 文件。但它不起作用。我能够 运行 成功找到 findscu,但这只是为了获取数据。这是我尝试过的:
findscu -v -P --call COMMON --patient --key 0008,0052=PATIENT --key 0010,0020="PAT004" www.dicomserver.co.uk 104
它可以工作,但同样的事情对像这样的 movescu 不起作用:
movescu -v -P --call COMMON +P 104 --patient --key 0008,0052=PATIENT --key 0010,0020="PAT004" www.dicomserver.co.uk 104
输出:
I: Requesting Association
I: Association Accepted (Max Send PDV: 65524)
I: Sending Move Request (MsgID 1)
I: Request Identifiers:
I:
I: # Dicom-Data-Set
I: # Used TransferSyntax: Little Endian Explicit
I: (0008,0052) CS [PATIENT] # 8, 1 QueryRetrieveLevel
I: (0010,0020) LO [PAT004] # 6, 1 PatientID
I:
W: Move response with error status (Failed: UnableToProcess)
I: Received Final Move Response (Failed: UnableToProcess)
I: Releasing Association
我没有运行任何本地 DICOM 服务器或其他任何东西。实现这一目标的正确方法是什么?
根据DICOM标准(PS3.4),您必须为C-MOVE请求指定PATIENT级别的唯一键。患者姓名 (0010,0010) 不应为“*”(在查询阶段为 "Wild Card Matching"),但患者 ID (0010,0020) 应具有实际值,即您拥有的那些患者 ID 之一使用 "findscu".
查询顺便问一下,您是否也在您的系统上启动了一个 Storage SCP 来侦听端口 104?请参阅 http://dicomserver.co.uk/ 的联机文档。如果没有,您可以使用额外的命令行选项“+P 104”启动 "movescu"(因为此工具内置了一个)。
如果有人仍然遇到此问题:
- 每个查询都必须包含 StudyInstanceUID + SeriesInstanceUID + PatientID
- 因为检索过程使 PACS 创建一个 SCP 会话来处理运行正在移动的内容,所以它需要知道如何处理它。 AE 是正在发送的(机器的)名称,默认为 MOVESCU(可以使用 aec/aet flags flags 进行更改,但 PACS 主机文件必须具有 ip-to-name 映射)
- 默认情况下,此协议 运行 在端口 104 上,这是受限制的。您可以使用 +P 标志将其更改为高于 1024 的端口(尚未尝试验证 PACS 是否收到此端口号)或者只是 运行 movescu with sudo/root
- 我不知道默认存储目录是什么,但这可以用 -od 标志定义。
工作示例:
sudo /usr/bin/movescu -v -od /path/to/dir PACS_IP 104 -k StudyInstanceUID=1.2.3.4.5 -k SeriesInstanceUID=1.2.3.4.5 -k PatientID=12345 +第 104 页