前言
个人最近在玩DCMTK工具包,发现网上都是源码的帖子,折腾了半天,整理下。主要分两部分:服务端搭建和客户端的使用。
服务端搭建
- dcmprscp
1.1 这个运行程序就是一个小的PACS服务,使用他需要提供一个config文件(在工具包中有dcmprscp.cfg),config的配置如下(#后面为说明):
a.配置端口号:
NetworkTCPPort = 10086 # 这个是服务端口
b.配置访问客户端信息:
acme1 = (ACME1, localhost, 20086)
acme2 = (ACME2, localhost, 20087)
#这个是配置一个可访问的客户端信息,其中ACME1是客户端的AET,localhost是本地地址,这里需要注意下,如果是非本地访问,需要设置为IP,如果链接有报错,看报错改地址(后面会说明),20086这是客户端的端口号,其实无所谓。
c.配置储存地址:
LOCAL2 /test_data RW (9, 1024mb) acmeCTcompany **加粗样式** #LOCAL2是服务端的AET
1.2 命令参数:
./dcmqrscp -d -v --config /dcmqrscp.cfg
客户端搭建
-
echoscu
运行dcmprscp后服务就启动了,接下来需要使用echo确定是否能联通服务端,命令如下:
./echoscu -aet ACME1 -aec LOCAL2 -d 172.16.119.129 10086 #aec是服务的aet, 172.16.119.129是服务端地址,如果是本地的话可以输入127.0.0.1 -
storescu
服务端启动后,没有数据,可以使用该命令上传DICOM文件,命令如下:
./storescu -v -d -aec LOCAL2 -aet ACME1 172.16.119.129 10086 /00004.dcm #参数基本上跟echoscu很像,最后一个是上传文件地址 -
findscu
上传完数据才能查询,不然没有数据查询也没有意义,查询的命令如下:
./findscu -d -v -P -aec LOCAL2 -aet ACME1 172.16.119.129 10086 -k QueryRetrieveLevel=PATIENT -k PatientID #其他参数都如上,-P表示查询patient模式,-k表示要查询的内容,要想跟深入了解,可以参考DICOM协议。 -
movescu
如果只使用这个命令没法完成下载的功能,还需要使用storescu命令启动一个服务端,接受PACS推送的待下载文件,启动接受服务的命令如下:
./storescp.exe 20087 -d -aet ACME2 -od /test_move
然后使用move命令,如下:
./movescu -v -S -aec LOCAL2 -aet ACME1 -aem ACME3 --port 20012 172.16.119.129 20086 -k QueryRetrieveLevel=STUDY -k 0008,0020=20150128 #这个命令的参数和查询基本一致,aem就是上面的储存服务的aet以上就是DICOM提供的通讯c-echo、c-store、c-find、c-move。