用于检索 dicom 图像的基本 movescu 示例
A basic movescu example for retrieving dicom images
我正在尝试使用 dcm4che for downloading images from the free http://www.dicomserver.co.uk/。我已经克隆并检查了 5.13.2 版本并使用 mvn install
构建了它。现在,当我进入 dcm4che-assembly/target/dcm4che-5.13.2-bin/dcm4che-5.13.2/bin
目录并尝试下载 StudyInstanceUID 时:
./movescu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
我收到错误:
...
(0000,0902) LO [Unknown Move Destination: STORESCP] ErrorComment
...
错误表示无法连接到接收器。我试过 运行:
./storescp -b STORESCP:11112
没有太大的成功。我也尝试过 运行 和 dcmqrscp
类似的结果。
我的拙见:请提供movescu
的工作示例。
详情
我可以让 findscu
正常工作,例如:
./findscu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 -r PatientID
给出:
(0008,0005) CS [] SpecificCharacterSet
(0008,0052) CS [STUDY] QueryRetrieveLevel
(0008,0054) AE [DCMQRSCP] RetrieveAETitle
(0010,0020) LO [PAT004] PatientID
(0020,000D) UI [1.2.826.0.1.3680043.11.105] StudyInstanceUID
同样,getscu
命令似乎有效:
>./getscu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105
创建以下 DICOM 文件:
ls 1* -lh
-rw-rw-r-- 1 max max 12M jul 7 12:16 1.2.276.0.7230010.3.1.4.39332053.7432.1527748041.31
-rw-rw-r-- 1 max max 150K jul 7 12:17 1.2.276.0.7230010.3.1.4.8323329.11391.1527939718.955155
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.100
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.104
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.108
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.112
-rw-rw-r-- 1 max max 6,0M jul 7 12:16 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.80
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.84
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.88
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.92
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.96
最后,如果这个问题属于重复类别,我很抱歉。在花了好几天都没有在 Whosebug 或 dcm4che-forum 上找到有效的 movescu
示例后,我放弃了搜索。目标是有一个示例可供使用,以便我可以根据自己的目的修改基础 Java 代码。如果您对整个 movescu
转储感兴趣,也请告诉我。
更新
在 Tarmo 的有用提示之后,我尝试 (1) 使用正确的 AE 和端口 (2) 更改为 Orthanc。不幸的是,我仍然无法从 dicomserver.co.uk 检索图像,但 Orthanc 解决方案有效。
以下是结果摘要:
替代。 1:端口和端口合规性
我的部分问题似乎是 RTFM-related:
Use any calling and called AE titles you like (making them specific to you will assist if logs need to be examined), but if you wish to use C-MOVE, ensure that the calling and destination AETs are the same, and that you listen on port 104.
我的第一次尝试是对齐两个 AE-titles:
./movescu -c STORESCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
这不起作用,事实证明目标端口是随机的。在两端(服务器日志+本地)可以发现端口是:
14:23:47,539 INFO - MOVESCU->APA(1): close Socket
[addr=www.dicomserver.co.uk/88.202.185.144,port=104,localport=57985]
localport
在每次尝试之间发生变化。到目前为止我尝试过的事情:
--dest
的变体 (1) STORESCP:104
, (2) STORESCP$localhost:104
, (3) 其他 AE-titles
- 通过
sudo ./dcmqrscp -b STORESCP:104 --dicomdir /home/max/tmp/dcm
启动一个SCP(sudo
是因为端口号低)并且只用AE-title作为dest 调用
- 与上面相同,但带有
-b
选项:./movescu -c STORESCP@www.dicomserver.co.uk:104 -b STORESCP@localhost:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
- 与上面相同,没有 SCP 和我的本地 IP/external IP(未更改防火墙)
- 我也尝试过 USB-tethering 通过我的 phone 来绕过路由器,但是 phone 在 IPv6 而不是 v4
上运行
如果知道如何设置它仍然会很好,因为它可能非常有用。我的猜测是,由于 C-MOVE 向 dicomserver 提供原始 IP-address,因此需要将 104 端口转发到当前机器。作为 DICOM-protocol 的新手,我发现其中许多功能有些神秘...
备选方案 2:本地 Orthanc 服务器(可行!)
这里是完整的 set-up,供任何想要启动测试系统和 运行ning(使用 Ubuntu 18.04)的人使用:
sudo apt install orthanc
&检查服务是否启动systemsctl status orthanc.service
- 在
/etc/orthanc/orthanc.json
中取消注释行:"sample" : [ "STORESCP", "localhost", 2000 ]
并重新启动服务器systemsctl restart orthanc.service
- 转到 http://localhost:8042(除非您更改了
/etc/orthanc/orthanc.json
处的 web-port)
- 导航到上传并找到用于上传的 dcm-file(您可以在此处找到 dcm-file 下载:https://www.dicomlibrary.com/ 或者您可以使用上面的
getscu
)
- 将 dcm-file 拖放到 http://localhost:8042/app/explorer.html#upload + 按 "Start the upload"
- 去找患者并为上传的图像获取新的 StudyInstanceUID
- 使用您在
/etc/orthanc/orthanc.json
中允许的 STORESCP
和 2000
端口启动 SCP-service,例如./dcmqrscp -b STORESCP:2000 --dicomdir /home/max/tmp/dcm
使用新的 StudyInstanceUID(为了便于阅读,在下面缩短)将带有 -b
的 movescu
调用到上述 SCP,例如:
./movescu
-c ORTHANC@localhost:4242
-m StudyInstanceUID=1.2.826.0.1.3680043.8.....
-b STORESCP@localhost:2000
--dest STORESCP
就是这样!
请再次阅读 http://www.dicomserver.co.uk/ 主页上的 C-MOVE 信息,了解如何设置您的查询。您的命令语法正确,但某些细节有误。
基本上你需要两件事:
- 您的调用 AE 标题必须与目标 AE 标题相同。你现在有不同的
- 你的 storescp 必须可以从 public 互联网上的相同端口访问,你曾经连接到 dicomserver.co.uk,在你的例子中是 104。他们的服务器需要建立一个新的 TCP连接回您的计算机以使其正常工作。
我认为在本地计算机上安装轻量级 PACS 来测试您的应用程序会更容易(例如 Orthanc)。让 DICOM C-MOVE 在 public 互联网上工作在我看来是自找麻烦。
我正在尝试使用 dcm4che for downloading images from the free http://www.dicomserver.co.uk/。我已经克隆并检查了 5.13.2 版本并使用 mvn install
构建了它。现在,当我进入 dcm4che-assembly/target/dcm4che-5.13.2-bin/dcm4che-5.13.2/bin
目录并尝试下载 StudyInstanceUID 时:
./movescu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
我收到错误:
...
(0000,0902) LO [Unknown Move Destination: STORESCP] ErrorComment
...
错误表示无法连接到接收器。我试过 运行:
./storescp -b STORESCP:11112
没有太大的成功。我也尝试过 运行 和 dcmqrscp
类似的结果。
我的拙见:请提供movescu
的工作示例。
详情
我可以让 findscu
正常工作,例如:
./findscu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 -r PatientID
给出:
(0008,0005) CS [] SpecificCharacterSet
(0008,0052) CS [STUDY] QueryRetrieveLevel
(0008,0054) AE [DCMQRSCP] RetrieveAETitle
(0010,0020) LO [PAT004] PatientID
(0020,000D) UI [1.2.826.0.1.3680043.11.105] StudyInstanceUID
同样,getscu
命令似乎有效:
>./getscu -c DCMQRSCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105
创建以下 DICOM 文件:
ls 1* -lh
-rw-rw-r-- 1 max max 12M jul 7 12:16 1.2.276.0.7230010.3.1.4.39332053.7432.1527748041.31
-rw-rw-r-- 1 max max 150K jul 7 12:17 1.2.276.0.7230010.3.1.4.8323329.11391.1527939718.955155
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.100
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.104
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.108
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.112
-rw-rw-r-- 1 max max 6,0M jul 7 12:16 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.80
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.84
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.88
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.92
-rw-rw-r-- 1 max max 6,0M jul 7 12:17 1.2.826.0.1.3680043.9.6384.2.2087.20180322152557.400.96
最后,如果这个问题属于重复类别,我很抱歉。在花了好几天都没有在 Whosebug 或 dcm4che-forum 上找到有效的 movescu
示例后,我放弃了搜索。目标是有一个示例可供使用,以便我可以根据自己的目的修改基础 Java 代码。如果您对整个 movescu
转储感兴趣,也请告诉我。
更新
在 Tarmo 的有用提示之后,我尝试 (1) 使用正确的 AE 和端口 (2) 更改为 Orthanc。不幸的是,我仍然无法从 dicomserver.co.uk 检索图像,但 Orthanc 解决方案有效。
以下是结果摘要:
替代。 1:端口和端口合规性
我的部分问题似乎是 RTFM-related:
Use any calling and called AE titles you like (making them specific to you will assist if logs need to be examined), but if you wish to use C-MOVE, ensure that the calling and destination AETs are the same, and that you listen on port 104.
我的第一次尝试是对齐两个 AE-titles:
./movescu -c STORESCP@www.dicomserver.co.uk:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
这不起作用,事实证明目标端口是随机的。在两端(服务器日志+本地)可以发现端口是:
14:23:47,539 INFO - MOVESCU->APA(1): close Socket
[addr=www.dicomserver.co.uk/88.202.185.144,port=104,localport=57985]
localport
在每次尝试之间发生变化。到目前为止我尝试过的事情:
--dest
的变体 (1)STORESCP:104
, (2)STORESCP$localhost:104
, (3) 其他 AE-titles- 通过
sudo ./dcmqrscp -b STORESCP:104 --dicomdir /home/max/tmp/dcm
启动一个SCP(sudo
是因为端口号低)并且只用AE-title作为dest 调用
- 与上面相同,但带有
-b
选项:./movescu -c STORESCP@www.dicomserver.co.uk:104 -b STORESCP@localhost:104 -m StudyInstanceUID=1.2.826.0.1.3680043.11.105 --dest STORESCP
- 与上面相同,没有 SCP 和我的本地 IP/external IP(未更改防火墙)
- 我也尝试过 USB-tethering 通过我的 phone 来绕过路由器,但是 phone 在 IPv6 而不是 v4 上运行
如果知道如何设置它仍然会很好,因为它可能非常有用。我的猜测是,由于 C-MOVE 向 dicomserver 提供原始 IP-address,因此需要将 104 端口转发到当前机器。作为 DICOM-protocol 的新手,我发现其中许多功能有些神秘...
备选方案 2:本地 Orthanc 服务器(可行!)
这里是完整的 set-up,供任何想要启动测试系统和 运行ning(使用 Ubuntu 18.04)的人使用:
sudo apt install orthanc
&检查服务是否启动systemsctl status orthanc.service
- 在
/etc/orthanc/orthanc.json
中取消注释行:"sample" : [ "STORESCP", "localhost", 2000 ]
并重新启动服务器systemsctl restart orthanc.service
- 转到 http://localhost:8042(除非您更改了
/etc/orthanc/orthanc.json
处的 web-port) - 导航到上传并找到用于上传的 dcm-file(您可以在此处找到 dcm-file 下载:https://www.dicomlibrary.com/ 或者您可以使用上面的
getscu
) - 将 dcm-file 拖放到 http://localhost:8042/app/explorer.html#upload + 按 "Start the upload"
- 去找患者并为上传的图像获取新的 StudyInstanceUID
- 使用您在
/etc/orthanc/orthanc.json
中允许的STORESCP
和2000
端口启动 SCP-service,例如./dcmqrscp -b STORESCP:2000 --dicomdir /home/max/tmp/dcm
使用新的 StudyInstanceUID(为了便于阅读,在下面缩短)将带有
-b
的movescu
调用到上述 SCP,例如:./movescu -c ORTHANC@localhost:4242 -m StudyInstanceUID=1.2.826.0.1.3680043.8..... -b STORESCP@localhost:2000 --dest STORESCP
就是这样!
请再次阅读 http://www.dicomserver.co.uk/ 主页上的 C-MOVE 信息,了解如何设置您的查询。您的命令语法正确,但某些细节有误。
基本上你需要两件事:
- 您的调用 AE 标题必须与目标 AE 标题相同。你现在有不同的
- 你的 storescp 必须可以从 public 互联网上的相同端口访问,你曾经连接到 dicomserver.co.uk,在你的例子中是 104。他们的服务器需要建立一个新的 TCP连接回您的计算机以使其正常工作。
我认为在本地计算机上安装轻量级 PACS 来测试您的应用程序会更容易(例如 Orthanc)。让 DICOM C-MOVE 在 public 互联网上工作在我看来是自找麻烦。