DCMTK开发笔记(三):模拟PACS调试(Ubuntu环境)

前言

上一篇博客记录了Windows10环境下Dcmtk工具dcmqrscp模拟PACS的调试过程,这篇博客将记录Linux(Ubuntu 18.04.2)环境下Dcmtk模拟PACS的配置和测试方法。

服务端配置(SCP)

  1. 打开Ubuntu Terminal,输入
su root

输入密码切换到超级用户root(这一步不是必要的,但为了使用方便进行切换)
2. 使用apt安装Dcmtk(如果速度过慢请参考 Ubuntu换源 更改设置)

apt install dcmtk
  1. 配置文件dcmqrscp.cfg 默认存放在 /etc/dcmtk 下,进入该目录,对该文件备份后,使用 vim 或 gedit 编辑器更改该配置文件
cd /etc/dcmtk
cp dcmqrscp.cfg dcmqrscp.bak
vim dcmqrscp.cfg
或
gedit dcmqrscp.cfg

在这里插入图片描述
编辑后的文件内容如下(去掉注释以后):

NetworkTCPPort  = 11112
MaxPDUSize      = 16384
MaxAssociations = 16

HostTable BEGIN
acme1           = (ACME1, 192.168.141.1, 1234)
acme2           = (ACME2, localhost, 5678)
acmeCTcompany   = acme1, acme2
HostTable END

VendorTable BEGIN
"Acme CT Company"   = acmeCTcompany
VendorTable END

AETable BEGIN
ACME_STORE   /var/lib/dcmtk/db/ACME_STORE   RW (100, 1024mb)   acmeCTcompany
AETable END

改动的地方在下图中标出:
在这里插入图片描述
第一个红框内是SCP(PACS)监听的端口号。
第二个红框内是SCP 可识别的Application Entity信息,用三元组(AE Title,IP地址/主机名,端口号)表示。
第三个红框标出的位置是模拟PACS存放数据的位置,可以自由设置,图中使用的是默认位置。

注:虽然该配置文件中强调 “NOTE: in the current implementation you cannot substitute an IP address for a hostname.” 但经实际测试IP地址可用,与hostname相比更好用,所以这里选择用IP地址。

  1. 上一步中设置的ACME_STORE 存放数据的位置的目录还没有建立,需要手动创建该目录
cd /var/lib/dcmtk/db
mkdir ACME_STORE
  1. 启动dcmqrscp工具,这里使用–debug选项查看详细的连接日志
dcmqrscp -d -c dcmqrscp.cfg

在这里插入图片描述
没有错误信息就表明SCP启动成功。

前置条件

在进行以下连接操作之前,必须保证

  1. 将要连接的客户机信息写入dcmqrscp.cfg 中HOSTTABLE区域内
  2. 连接时使用正确的 IP地址/主机名、端口号、 AEC (Application Entity Called)和 AET (Application Entity Title)

使用命令行工具验证配置(Unnecessary)

== 以下内容是在客户机上使用命令行工具验证服务端配置的过程,如果使用程序进行连接可以忽略以下内容。==

客户端配置(SCU)

客户端需要的设置与上一篇博客 Dcmtk开发笔记(二):模拟PACS调试(Win10环境)中的一致,流程如下:

  1. 为了方便地在windows环境下使用DCMTK命令行工具,首先将 DCMTK\bin 添加到系统的环境变量中。
    在这里插入图片描述
  2. 然后在 E:\DCMTK\PACS 目录下创建文件夹: E:\DCMTK\PACS\SCU 用来模拟DICOM网络通讯中的客户端(Service Class User),并在其目录下创建文件夹database,用来存放数据。
  3. Dcmtk Wiki 下载示例图片 ct.dcm 存放到E:\DCMTK\PACS\SCU 目录下

C-ECHO

  1. 在Windows10 上打开命令行,输入
ping Ubuntu-Qin

测试你的主机到Ubuntu的网络连接是否正常。
2. 输入

e:
cd E:\DCMTK\PACS\SCU
echoscu -d Ubuntu-Qin 11112 -aec ACME_STORE -aet ACME1

在这里插入图片描述
表明C-ECHO 成功。

C-STORE

storescu -d Ubuntu-Qin 11112 ct.dcm -aec ACME_STORE -aet ACME1

在这里插入图片描述

C-FIND

findscu -v -S -aec ACME_STORE -aet ACME1 Ubuntu-Qin 11112 -k QueryRetrieveLevel=STUDY -k StudyDate -k StudyDescription -k StudyInstanceUID

在这里插入图片描述

C-MOVE

movescu Ubuntu-Qin 11112 -d -S -aec ACME_STORE -aet ACME1 -aem ACME1 --port 1234 -od E:\DCMTK\PACS\SCU\database -k QueryRetrieveLevel=STUDY -k StudyDate=20140101

常见问题和解决方案

所有问题可以根据SCP(PACS)输出的日志查明原因,下面列出根据客户端反馈信息定位问题:

  1. TCP Initialization Error
    在这里插入图片描述
    请确保你的主机到服务器的网络连接正常,其次请检查 IP/hostname端口号 设置是否正确。
  2. Called AE Title Not Recongnized在这里插入图片描述
    TCP连接可以建立,但连接使用的 AEC 或 AET 不正确,或者你的AET没有添加到dcmqrscp.cfg 的配置中。

用到的命令总结

服务端

su root
apt install dcmtk
cd /etc/dcmtk
cp dcmqrscp.cfg dcmqrscp.bak
vim dcmqrscp.cfg
gedit dcmqrscp.cfg
cd /var/lib/dcmtk/db
mkdir ACME_STORE
dcmqrscp -d -c dcmqrscp.cfg

客户端

ping Ubuntu-Qin
e:
cd E:\DCMTK\PACS\SCU
echoscu -d Ubuntu-Qin 11112 -aec ACME_STORE -aet ACME1
storescu -d Ubuntu-Qin 11112 ct.dcm -aec ACME_STORE -aet ACME1
findscu -v -S -aec ACME_STORE -aet ACME1 Ubuntu-Qin 11112 -k QueryRetrieveLevel=STUDY -k StudyDate -k StudyDescription -k StudyInstanceUID
movescu Ubuntu-Qin 11112 -v -S -aec ACME_STORE -aet ACME1 -aem ACME1 --port 1234 -od E:\DCMTK\PACS\SCU\database -k QueryRetrieveLevel=STUDY -k StudyInstanceUID=2.16.840.1.113662.2.1.1519.11582.1990505.1105152

2020.02.16更新

VMware Workstation 版本由15.1升级到15.5以后,Ubuntu虚拟机原来的配置不能运行。研究发现是虚拟机和主机的网络通信方式发生了变化。
版本升级后,由Windows主机向Ubuntu发送的请求会被Ubuntu虚拟机解析为来自localhost的请求,所以dcmqrscp.cfg 配置文件需要作如下更改:

NetworkTCPPort  = 11112
MaxPDUSize      = 16384
MaxAssociations = 16

HostTable BEGIN
acme1           = (ACME1, localhost, 1234)
acme2           = (ACME2, 127.0.0.1, 5678)
acme3           = (ACME3, 192.168.1.105, 1235)
acmeCTcompany   = acme1, acme2,acme3
HostTable END

VendorTable BEGIN
"Acme CT Company"   = acmeCTcompany
VendorTable END

AETable BEGIN
ACME_STORE   /var/lib/dcmtk/db/ACME_STORE   RW (100, 1024mb)   acmeCTcompany
AETable END
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值