【问题标题】:How can I do a DICOM query and retrieve from a Ginkgo PACS (or any other) using dcm4che如何使用 dcm4che 从 Ginkgo PACS(或任何其他)进行 DICOM 查询和检索
【发布时间】:2020-07-24 22:19:00
【问题描述】:

我正在编写一个“简单”的 HL7 侦听器,然后使用 dcm4che 二进制实用程序 movescu 从远程 PACS 进行查询和检索操作

我需要检索一项研究,并且我从 HL7 数据中获得了 (00080050) AccessionNumber,然后我执行以下操作:

./movescu -b LOCALAET@{local_ip}:044 -c REMOTEAET@{remote_ip}:104 --dest LOCALAET@{local_ip}:104 -m 00080050={known_accession_number}

使用远程 PACS 我得到了这个:

(0000,0002) UI [1.2.840.10008.5.1.4.1.2.2.2] AffectedSOPClassUID
(0000,0100) US [32801] CommandField
(0000,0120) US [1] MessageIDBeingRespondedTo
(0000,0800) US [257] CommandDataSetType
(0000,0900) US [49152] Status
(0000,0902) LO [Error querying db (ImageRetrieve)] ErrorComment
(0000,1020) US [0] NumberOfRemainingSuboperations
(0000,1021) US [0] NumberOfCompletedSuboperations
(0000,1022) US [0] NumberOfFailedSuboperations
(0000,1023) US [0] NumberOfWarningSuboperations

我得到了当地的银杏:

17:12:58,906 DEBUG - LOCALAET->REMOTEAET(1): enter state: Sta6 - Association established and ready for data transfer
17:12:58,946 INFO  - LOCALAET->REMOTEAET(1) >> A-ABORT[source: 0 - service-user, reason: 0]
17:12:58,946 INFO  - LOCALAET->REMOTEAET(1): close Socket[addr=/XXX.XXX.X.XX,port=8080,localport=36105]
17:12:58,947 DEBUG - LOCALAET->REMOTEAET(1): enter state: Sta1 - Idle
movescu: Sta1 - Idle
org.dcm4che3.net.AssociationStateException: Sta1 - Idle
    at org.dcm4che3.net.State.writeAReleaseRQ(State.java:223)
    at org.dcm4che3.net.Association.release(Association.java:326)
    at org.dcm4che3.tool.movescu.MoveSCU.close(MoveSCU.java:331)
    at org.dcm4che3.tool.movescu.MoveSCU.main(MoveSCU.java:268)

(在 Ginkgo 上使用不同的端口)

那么我错过了什么?

【问题讨论】:

    标签: dicom dcm4che


    【解决方案1】:

    我不知道 Ginkgo PACS,但很可能您的检索失败,因为您的请求格式不正确。

    参见 PS3.4,C.4.2.1.4.1 请求标识符结构

    您的请求必须包含属性 Query Retrieve Level (0008,0052),在您的情况下我假设该属性为“STUDY”,因为入藏号是一个研究级别的属性。

    此外它必须包含

    "唯一关键属性,可能包括患者 ID (0010,0020), 研究实例 UID (0020,000D)、系列实例 UID (0020,000E) 和 SOP 实例 UID (0008,0018)"

    也就是说,您必须通过为您要移动的患者/研究/系列/图像提供唯一标识符来指定检索请求的范围 - 仅此而已! p>

    因此登录号可用于查询 (C-FIND) 以获取 C-MOVE 所需的相应研究实例 UID。但在 C-MOVE-Request 中是不允许的。

    警告:您是否必须在 C-MOVE 请求中包含或省略患者 ID (0010,0020) 取决于您在关联建立期间协商的信息模型以及您通过为您的消息选择演示上下文来进行选择。您必须将其包含在 Patient Root 中,不得将其包含在 Study Root 中。

    【讨论】:

    • 这部分正确,我首先使用 C-FIND 解决了这个问题以获取 Study UID,然后使用 C-GET 而不是 C-MOVE... 是的,我正在发送 STUDY 级别我的命令
    • 你是对的,为了使 C-GET 工作,我必须在请求中发送 (0020, 000D) 标签和 (0008, 0050) 以使其有效,而不仅仅是(0020, 000D)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多