学习使用DCMTK工具

学习使用DCMTK工具

一、了解DICOM

1、DICOM语法

       DICOM维护一个所有标准属性(超过2000个)的列表,即所谓的DICOM数据字典(DICOM Data Dictionary)。DICOM依靠数据字典来保证属性命名和处理的一致性。

       把这些超过2000个的项目按照一定顺序排列,所有项目首先被分成编号的项目组(group)(如果项目内容的大概相似就分为一组)。项目组是由单独的元素组合在一起的。因此,每个项目都有其自己的编号“(项目组,元素)”,这就是所谓的元素“标签(tag)”。 所有进行标签的元素都称作“属性(attribute)”,或 者DICOM“数据元素(data element)” 或简称为DICOM“元素”。项目组和元素都是用十六进制数字编号的,“(项目组,元素)”标签唯一地对应属性名称。

摘录

(Group,Element) tag

(项目组,元素)标

Attribute(data element) name

属性(数据元素)名称

VR

VM

(0008,0001)

Length to End

到结尾的长度

 

 

(0008,0005)

Specific Character Set特定的字符集

CS

1-N

(0010,0010)

Patient Name

病人姓名

PN

 

(0010,0020)

Patient ID

病人ID

LO

1

(0010,0030)

Patient’s Birth Date

病人出生日期

DA

1

(0010,0032)

Patient’s Birth Time

病人出生时间

TM

1

 

 

 

 

 

VR:值表现,DICOM标准在PS 3.5中定义了27个基本数据类型,每个VR都有他自己两个字母的缩写;表示内容的定义;数据中允许出现的字母描述;以及规定的数据长度。

VM:数据元素值多样性。

 

2、DICOM服务命令

处理复合(composite)数据的DIMSE服务称作“DIMSE-C”服务;而处理常规数据的DIMSE服务称为“DIMSE-N”服务。“C”和“N”这种标记经常会作为服务名称的前缀,放在服务名称之前。

例子:

C-Echo:用来校验一个DICOM AE是否与另一个AE建立了连接。

C-Store:承载着要存储的数据。

C-Find:在C-Find服务提供者(如数字归档)那里进行匹配的查询参数。

C-Move:在服务者那边下载匹配参数的文档。

 

3、DICOM通信

       连接建立的两端都成为AE,为了区分服务请求者和服务提供者,DICOM称前者为服务类用户(Service Class Users,SCU),称后者为服务类提供者(Service Class Providers,SCP)。

       请求连接(呼叫)的AE建立并发送一个A-Associate-RQ消息,即向接收(被呼叫)的AE发出请求,要求其开启一个连接。这个消息由多个呈现上下文(我们的名片),以及附加的用户信息数据打包而成,其中用户信息数据描述了AE初始化连接的能力(用户所用的请求AE)。接收AE会查看所有建议的通讯参数,如果连接被接受,它会选择最合适的参数,并返回一个A-Assciate-AC消息。

 

二、了解DCMTK

1、DCMTK编译

http://blog.csdn.net/YiLooks/article/details/7867855

http://blog.csdn.net/ancewer/article/details/74408441

2、DCMTK工具介绍

scu -->  scp  发送dcm文件

scp: storescp.exe  104  –aet myaet

scu: storescu.exe 127.0.0.1 104 C:/DICOM/Source/CT1/CT.dcm

 

storescp.exe是Dcmtk工具包中用于接收DICOM影像并进行保存的服务端程序

-aet myaet中的aet为Application Entity Title

 

scu -->  scp  查询内容

scp: wlmscpfs.exe-dfr -dfp wlistdb 104

scu: findscu 127.0.0.1 104 wlistqry/wlistqry.wl -aec OFFIS

     findscu 192.168.1.7 4007 -aec "myonly" -v -k0008,0052="STUDY" query.dcm -S

         findscu.exe -v -W -k 0008,0060=DR -aecDicomworklist -X 127.0.0.1 3000 worklist.dcm

 

如果需要查多个值,只需要重复写-k 0008,0060=DR 这个参数,当然你需要查出来你所需要的属性所对应的两个4位码。

 

         -k 0010,0020="123456"   PatientID字段为123456的患者数据

        

       -dfr表接受字段不完整的DICOM文件作为查询内容;

 

      -dfpwlistdb 表wlmscpfs.exe搜索的文件夹的路径,可以为绝对路径;

 

      104  为工作列表程序的端口号;

 

scu -->  scp  下载内容

       movescu192.168.1.7 4008 -aec "myonly" -v -k0020,000d="1.2.840.113619.2.67.2158294438.15745010109084247.20000"move.dcm -S

 

 

3、模拟pacs实现上传下载

scp接受多项服务

D:\DCMTK\bin\dcmqrscp.exe -d --configdcmqrscp.cfg   

 

scu:测试是否能连接

D:\DCMTK\bin\echoscu.exe -d localhost 11110-aec ACME_STORE -aet ACME1

D:\DCMTK\bin\echoscu.exe -d 192.168.1.65104 -aec ACME_STORE

 

scu:传输dcm文件

D:\DCMTK\bin\storescu.exe -d localhost11110 D:\CT.dcm -aec ACME_STORE

scu:查询dcm文件

D:\DCMTK\bin\findscu.exe -d 127.0.0.1 11110-k QueryRetrieveLevel=STUDY -k 0010,0010 -k 0010,0020 -k 0020,0010 -aecACME_STORE -v -S

scu:下载

D:\DCMTK\bin\movescu.exe -d 192.168.1.65104 +P 5003 -aec ACME_STORE -k QueryRetrieveLevel=STUDY -k 0010,0020=7637 -odD:\DICOM\Worklist\

 

dcm -->  bmp  转换文件

dcm2pnm.exe +obCT.1.2.840.113704.9.4021.3.1.1.200927949440CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp

解析数据

dcmdump.exe D:\CT.dcm

 

dcmqrscp.cfg:

NetworkTCPPort  = 104

MaxPDUSize      = 16384

MaxAssociations =16

 

HostTable BEGIN

 

echoscu            = (ECHOSCU, ywu-PC, 5000)

findscu            = (FINDSCU, ywu-PC, 5001)

storescu           = (STORESCU, ywu-PC, 5002)

movescu             = (MOVESCU, ywu-PC, 5003)

acmeCTcompany   = echoscu, findscu, storescu, movescu

HostTable END

 

VendorTable BEGIN

"Acme CTCompany"   = acmeCTcompany

VendorTable END

 

AETable BEGIN

ACME_STORE    D:\DICOM\DcmScuScp   RW (9, 1024mb)   acmeCTcompany

AETable END

要在命令行中使用 DCMTK 工具向 Worklist 服务发送病人信息,你可以按照以下步骤进行操作: 1. 打开命令提示符(cmd)。 2. 导航到 DCMTK 工具的安装目录。DCMTK 提供了多个可用的工具,其中包括 `movescu` 和 `findscu`,你可以根据自己的需求选择适当的工具。 3. 使用以下命令行格式来发送病人信息: ``` <工具名称> -v -aet <本地AE标题> -aec <服务端AE标题> -a <服务端IP地址> -p <服务端端口号> -k "<标签1>=<值1>" -k "<标签2>=<值2>" ... ``` - `<工具名称>`:替换为你选择的 DCMTK 工具的名称,例如 `movescu` 或 `findscu`。 - `-v`:可选参数,用于启用详细的日志输出。 - `-aet <本地AE标题>`:替换为你的应用程序在 DICOM 网络中的 AE 标题。 - `-aec <服务端AE标题>`:替换为 Worklist 服务的 AE 标题。 - `-a <服务端IP地址>`:替换为 Worklist 服务的 IP 地址。 - `-p <服务端端口号>`:替换为 Worklist 服务的端口号。 - `<标签1>, <标签2>, ...`:替换为你要发送的病人信息的 DICOM 标签。例如,患者姓名是 `PatientName`,患者ID 是 `PatientID`,你可以使用 `-k "PatientName=John Doe" -k "PatientID=12345"` 来发送这些信息。 举个例子,假设你选择使用 `movescu` 工具,本地 AE 标题是 `MY_APP`,Worklist 服务的 AE 标题是 `WL_SERVER`,IP 地址是 `192.168.0.100`,端口号是 `1234`,你要发送的病人姓名是 John Doe,患者ID 是 12345,你可以使用以下命令: ``` movescu -v -aet MY_APP -aec WL_SERVER -a 192.168.0.100 -p 1234 -k "PatientName=John Doe" -k "PatientID=12345" ``` 此命令将连接到指定的 Worklist 服务并发送病人信息。确保提供正确的参数和标签值以发送准确的病人信息。 请注意,这只是一个基本示例,实际操作中可能需要根据工具的文档或帮助指南提供其他参数和查询条件。确保按照工具的要求进行操作,并根据需要处理返回的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值