Dcmtk 在 PACS 开发中的应用

第一章 与影像设备互连 
       PACS(Picture Archiving and Communication System) ,译为医学影像归档与通讯系统,关于该名词更多详细的解释,请参考网络。

一、接收影像

1 、目的:接收影像设备发送的影像,并显示。

2 、实验平台: Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

       在您的电脑上新建文件夹如下

C:\PACS ,用于存放相关文档

C:\DCMTK ,用于存放 dcmtk 工具包及源代码

C:\DICOM ,
C:\DICOM\Source 用于存放实验过程中用到的源图片

C:\DICOM\Dest ,用于存放实验过程中接收到的图片,如接收的图片

4 、所需工具:

1 ) dcmtk 中 storescp.exe 、 storescu.exe 、 dcm2pnm.exe

       已编译的 dcmtk 工具包下载链接:

ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/bin/dcmtk-3.5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:\DCMTK ,并解压,解压后的目录为 C:\DCMTK\dcmtk-3.5.4-win32-i386 。

       2 ) DICOM ( Digital Imaging and Communication in Medicine )图片,链接为本人的资源,不需积分:

http://download.csdn.net/source/2218931

       将下载到图片拷贝至 C:\DICOM\Source 文件夹并解压,解压后的目录为 C:\DICOM\Source\CT01 ,包含文件 CT.dcm 和 ct.bmp 。

5 、前置知识

       要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好,当然不具备后者的使用经验也没关系,跟着笔者的脚步我们一起来学习它,没想象中的那么难 ;-) 。在本文中,新手朋友们可能会遇到很多不熟悉的名词, Take it easy ,我们的宗旨是【应用为王】 ,先撇开它们,书读百遍,其义自现嘛。

6 、实验步骤

       1 )将 C:\DCMTK\dcmtk-3.5.4-win32-i386\bin 目录下的所有 exe 文件拷贝至 %windir%( 一般为您的硬盘中 C:\Windows 文件夹 ) 。这样我们的命令行解释器(下文简称 cmd.exe ,可以通过“开始” à 运行 à 输入 ”cmd.exe” à 确定来启动)启动后,处于任何一个当前目录,都可以使用 dcmtk 工具包。

       2 )启动 storescp

       启动 cmd.exe ,依次键入以下命令

C:>cd C:\DICOM\Dest

C:\DICOM\Dest >storescp.exe 104

       3 )发送影像

       再启动一个 cmd.exe ,键入

C:\>storescu.exe 127.0.0.1 104 C:\DICOM\Source\CT1\CT.dcm

如果一切正常,在目录 C:\DICOM\Dest 将出现文件 CT.1.2.840.113704.9.4021.3.1.1.200927949440 ,文件名有点长,不是吗?

       4 )启动 cmd.exe ,依次键入以下命令,将 DICOM 文件转换为 bmp 文件。

       C:>cd C:\DICOM\Dest

C:\DICOM\Dest> dcm2pnm.exe +ob CT.1.2.840.113704.9.4021.3.1.1.200927949440 CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp

       然后,双击打开 CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp ,将看到一张典型的肺部平扫的 CT 图片。

7 、与影像设备互连初步

       有读者朋友问了,到此为止,你都没有提到影像设备的事,你做了以上一大堆事情到底有什么意义呢?笔者想说的是意义太大了,通过以上实验,您已经跨入 PACS 开发的大门,列位看官莫急,且听笔者慢慢道来。

       让我们在 6 中的实验基础上学习一个稍微复杂点的命令先。

       启动 cmd.exe ,键入

C:>storescp.exe –aet myaet 104

下面,笔者对这个命令做点解释:

1 )如名称所示, storescp.exe 是 Dcmtk 工具包中用于接收 DICOM 影像并进行保存的服务端程序, store 是个英文单词(废话一句 ;- )),表保存; scp 是指 Service Class Provider ,字面意思为服务类提供者,即 DICOM 标准中所说的服务端程序。

2 ) -aet myaet 中的 aet 为 Application Entity Title ,翻译为中文:应用程序实体标题,有点生硬,呵呵; -aet myaet 意即设置 storescp.exe 的 AET 为 myaet 。

3 ) 104 ,指该服务程序监听的端口,具备网络基础的朋友们可能会了解端口的意义,不清楚的朋友可以先跳过,【应用为王】嘛。

这个稍微复杂点的命令先解释到这,如果您有点云里雾里,没关系,多看几遍,或者先放过意义的理解,随着后面和笔者一起学习,一定会理解的,自信和耐心是我们学习的首要条件。

到此,有机会实际接触医院影像科设备的朋友已经可以自信的说:我可以接收影像设备发送的影像了!

8 、与影像设备互连

       1 )按照 3 和 4 的描述,在您的电脑上部署好目录和工具,通过交换机或者 HUB 将您的电脑和影像设备进行连接,并将您电脑的 IP 设置为与影像设备在同一个网段,比如:

       影像设备 IP : 192.168.1.10

       则您电脑 IP : 192.168.1.11

       具体如何设置可以上网查询,或者联系系统管理员。

       2 )将您电脑的 IP (此处假定为 192.168.1.11 ,请根据实际情况)、端口( 104 )、 AET ( myaet )告知影像设备维护人员(什么?您就是影像设备维护人员,那太好了),并请影像设备维护人员在影像设备上添加到您电脑的接收节点。

       3 )在您的电脑上启动 cmd.exe ,依次键入命令

       C:\DICOM\Dest

C:\DICOM\Dest>storescp.exe –aet myaet 104 ,然后请影像医师手工发送一幅影像到您的电脑节点。

OK ,在 C:\DICOM\Dest 目录有新的影像吗?恭喜你!什么,还没有?仔细检查上述步骤,细心点,你会成功的

 

第二章 打印影像(胶片)
1 、目的:将 DICOM 影像提交至相机(干式胶片打印机),并打印。

2 、实验平台: Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

    在您的电脑上新建文件夹如下

C:\PACS ,用于存放相关文档

C:\DCMTK ,用于存放 dcmtk 工具包及源代码

C:\DICOM ,

C:\DICOM\Source 用于存放实验过程中用到的源图片
       以下 3 个文件夹用于存放“提交影像”过程中的产生的临时文件,注意大小写,并确认为其属性为“可写”。

C:\DICOM\Source\database

C:\DICOM\Source\spool

C:\DICOM\Source\log

C:\DICOM\Dest ,用于存放实验过程中接收到的图片,

       以下 3 个文件夹用于存放“模拟影像打印”过程中的产生的临时文件,注意大小写,并确认为其属性为“可写”。

C:\DICOM\Dest\database

C:\DICOM\Dest\spool

C:\DICOM\Dest\log

4 、所需工具:
1 ) dcmtk 中 dcmprscp.exe 、 dcmprscu.exe 、 dcmpsprt.exe 、 dcmpstat.cfg

       已编译的 dcmtk 工具包下载链接:
ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/bin/dcmtk-3.5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:\DCMTK ,并解压,解压后的目录为 C:\DCMTK\dcmtk-3.5.4-win32-i386 。
2 )请至以下链接下载测试用的 DICOM 图片,不需积分:
http://download.csdn.net/source/2218931

    将下载到图片拷贝至 C:\DICOM\Source 文件夹并解压,解压后的目录为 C:\DICOM\Source\CT01 ,包含文件 CT.dcm 和 ct.bmp 。
5 、前置知识

    要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好。

6 、实验步骤
       1 )将 dcmpstat.cfg 分别拷贝至 C:\DICOM\Source 目录和 C:\DICOM\Dest 目录

    2 )启动 dcmprscp

    启动 cmd.exe ,依次键入以下命令
C:>cd C:\DICOM\Dest

C:\DICOM\Dest >dcmprscp.exe -c dcmpstat.cfg -p IHEFULL   ( 命令到此结束,注意大小写 ) ,将出现类似如下的提示,否则,请检查您的操作步骤:

$dcmtk: dcmprscp v3.5.4 2005-12-20 $

2010-08-0517:30:43

started

    3 )提交影像

再启动一个 cmd.exe ,依次键入

C:\>cd C:\DICOM\Source

C:\DICOM\Source>dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL C:\DICOM\Source\CT01\CT.dcm --filmsize 8INX10IN  (命令到此结束,注意大小写,另外 8IN 和 10IN 之间的字符为字母 x,y,z 中的 x 的大写)

如果一切正常,在目录 C:\DICOM\Dest\database 将出现文件名类似 HG_4c5a89d3397d8c09.dcm 和 SP_4c5a89d3397d8c09.dcm 的文件,你的电脑上文件名应该稍有区别,但是开头的 HG_ 和 SP_ 应是一致的,其中 HG_4c5a89d3397d8c09.dcm 的大小较大,在我的电脑上约为 2049KB 。

4 )查看影像

启动 cmd.exe ,依次键入以下命令,将 DICOM 文件转换为 bmp 文件。
C:>cd C:\DICOM\Dest\database

C:\DICOM\Dest\database>dcm2pnm.exe +ob HG_4c5a89d3397d8c09.dcm HG_4c5a89d3397d8c09.bmp

    双击打开 HG_4c5a89d3397d8c09.bmp ,将看到一张典型的肺部平扫的 CT 图片,与第一章中的图片一致。
7 、提交影像至相机

1 )按照 3 和 4 的描述,在您的电脑上部署好目录和工具,通过交换机或者 HUB 将您的电脑和相机进行连接,并将您电脑的 IP 设置为与相机在同一个网段,比如:

相机 IP : 192.168.1.12

则您电脑 IP : 192.168.1.11

具体如何设置可以上网查询,或者联系系统管理员。
2 )咨询您的系统管理员,得到相机的 IP 地址、打印胶片的端口号、 AE Title 和相机支持的胶片尺寸(如 8INX10IN , 10INX12IN 等)

3 )用“写字板”打开 C:\DICOM\Source\dcmpstat.cfg ,按 Ctrl+F ,搜索定位至如下所示:

[IHEFULL]

Aetitle = IHEFULL

Description = IHE Full Print SCP

Hostname = localhost

Port = 10005

将 Aetitle= 后面的 IHEFULL 修改为 2) 中得到的相机的 aetitle ,

将 Hostname= 后面的 localhost 修改为 2 )中得到的相机的 IP 地址,

将 Port= 后面的 10005 修改为 2 )中得到的相机打印胶片的端口号。

保存后退出。

4 )在您的电脑上启动 cmd.exe ,依次键入命令

C:\>cd C:\DICOM\Source

C:\DICOM\Source>dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL  C:\DICOM\Source\CT01\CT.dcm --filmsize 8INX10IN       (命令到此结束, 8INX10IN 修改您的相机支持的胶片尺寸。)

 

如无意外,您的相机应该根据您的指示打印出了一张胶片,内容为 6 中显示的图片。如果还没有,仔细检查上述步骤,细心点,相信自己,你会成功的。

 

8 、总结

       1 、命令解释

       1 ) dcmprscp.exe -c dcmpstat.cfg -p IHEFULL

       -c dcmpstat.cfg 表 dcmprscp.exe 引用的配置文件;

       -p IHEFULL 表 dcmprscp.exe 引用的相机

 

       2 ) dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL  C:\DICOM\Source\CT01\CT.dcm --filmsize 8INX10IN

       -s 表生成待打印的 DICOM 文件的临时文件后,提交至相机, s 即 spool ;

       -c dcmpstat.cfg 表 dcmpsprt.exe 引用的配置文件;

       -p IHEFULL 表 dcmpsprt.exe 引用的相机;

       C:\DICOM\Source\CT01\CT.dcm 为待打印的 DICOM 文件;

       --filmsize 8INX10IN 表打印的胶片的尺寸。

 

       2 、 dcmpstat.cfg 为打印引用的配置文件,打印胶片所需的参数都在该文件中,待您熟悉后可以自定义很多参数。

 

       3 、应用为王,如果过程中有不懂的地方,可以先跳过,实验成功就是胜利

 

第三章 工作列表( Work List )(一)
1 、目的

在工作站上登记患者,影像设备通过 DICOM 标准中的 Work List 获取登记的患者信息。

2 、实验平台

Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

    在您的电脑上新建文件夹如下

C:\PACS ,用于存放相关文档

C:\DCMTK ,用于存放 dcmtk 工具包及源代码

C:\DICOM ,

C:\DICOM\Worklist ,用于存放工作列表测试所需的文件。

C:\DICOM\Worklist\wlistdb\OFFIS ,用于存放工作列表文件数据库;

C:\DICOM\Worklist\wlistqry ,用于存放工作列表查询文件。

4 、所需工具

1 ) dcmtk 中 wlmscpfs.exe 、 findscu.exe 、 dcmdump.exe , dump2dcm.exe

       已编译的 dcmtk 工具包下载链接:

ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/bin/dcmtk-3.5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:\DCMTK ,并解压,解压后的目录为 C:\DCMTK\dcmtk-3.5.4-win32-i386 。

2 )请至以下链接下载测试用的工作列表文件,不需积分:
       http://download.csdn.net/source/2608448

解压后,将 wlistqry.wl 拷贝至 C:\DICOM\Worklist\wlistqry ;

将 wklist.wl 拷贝至 C:\DICOM\Worklist\wlistdb\OFFIS 。

5 、前置知识

    要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好。

6 、实验步骤

       1 )启动 wlmscpfs

    启动 cmd.exe ,依次键入以下命令
C:>cd C:\DICOM\Worklist

C:\DICOM\Worklist>wlmscpfs.exe -dfr -dfp   wlistdb 104 ( 命令到此结束,注意大小写 ) ,将出现类似如下的提示,否则,请检查您的操作步骤:

$dcmtk: wlmscpfs v3.5.4 2005-12-20 $

 

(notice: dcmdata auto correction disabled.)   

2 )查询患者信息

再启动一个 cmd.exe ,依次键入

C:\>cd C:\DICOM\Worklist

C:\DICOM\Worklist>findscu 127.0.0.1 104 wlistqry\wlistqry.wl -aec OFFIS (命令到此结束,注意大小写)

如果一切正常,在将出现类似如下的提示

RESPONSE: 1 (Pending)

 

# Dicom-Data-Set

# Used TransferSyntax: LittleEndianExplicit

(0008,0050) SH [00009 ]                                 #   6, 1 AccessionNumber

 

(0010,0010) PN [MOZART^WOLFGANG^AMADEUS ]               #  24, 1 PatientsName

(0010,0020) LO [MWA484763 ]                              #  10, 1 PatientID

(0010,0030) DA [17911205]                               #   8, 1 PatientsBirthDa

te 。

……

这些显示内容应该比较好懂, # 号后的内容为注释。

比如 (0010,0010) PN [MOZART^WOLFGANG^AMADEUS ]               #  24, 1 PatientsName

其中, (0010,0010) PN 为 DICOM 标准中“患者姓名”字段的字段名, MOZART^WOLFGANG^AMADEUS 为患者姓名。 #  24, 1 PatientsName 是这个字段的注释。

7 、影像设备查询工作列表

1 )按照 3 和 4 的描述,在您的电脑上部署好目录和工具,通过交换机或者 HUB 将您的电脑和相机进行连接,并将您电脑的 IP 设置为与相机在同一个网段,比如:

影像设备 IP : 192.168.1.10

则您电脑 IP : 192.168.1.11

具体如何设置可以上网查询,或者联系系统管理员。
2 )咨询您的系统管理员或者设备维护厂商,在影像设备上添加 Worklist 节点,节点属性如下:

IP:192.168.1.11( 根据您电脑的实际情况修改 )

Port:104

AETitle:OFFIS

3 )在您的电脑上启动 cmd.exe ,依次键入命令

C:>cd C:\DICOM\Worklist

C:\DICOM\Worklist>wlmscpfs.exe -dfr -dfp   wlistdb 104 (命令到此结束)

咨询系统管理员如何在影像设备上获取工作列表,如无意外,您的影像设备应获取到“姓名”为 MOZART^WOLFGANG^AMADEUS 的患者信息。如果还没有,仔细检查上述步骤。

8 、总结

       1 、命令解释

       wlmscpfs.exe -dfr -dfp   wlistdb 104

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

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

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

       wlistdb 文件夹下的 OFFIS 表 AETITLE 。

       2 、应用为王,如果过程中有不懂的地方,可以先跳过,实验成功就是胜利,如有不清楚,欢迎讨论,共同提高。

 

第四章 工作列表( Work List )(二)
1 、目的

书接前文:http://blog.csdn.net/pachleng/archive/2010/08/10/5800513.aspx,自定义患者信息,影像设备通过 DICOM 标准中的 Work List 获取登记的患者信息,并能对影像设备与“工作列表”服务器通讯过程进行诊断。

2 、实验平台

Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

    在您的电脑上新建文件夹如下

C:\PACS ,用于存放相关文档

C:\DCMTK ,用于存放 dcmtk 工具包及源代码

C:\DICOM ,

C:\DICOM\Worklist ,用于存放工作列表测试所需的文件。

C:\DICOM\Worklist\wlistdb\OFFIS ,用于存放工作列表文件数据库;

C:\DICOM\Worklist\wlistqry ,用于存放工作列表查询文件。

4 、所需工具

1 ) dcmtk 中 wlmscpfs.exe 、 findscu.exe 、 dcmdump.exe , dump2dcm.exe

       已编译的 dcmtk 工具包下载链接:

ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/bin/dcmtk-3.5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:\DCMTK ,并解压,解压后的目录为 C:\DCMTK\dcmtk-3.5.4-win32-i386 。

2 )请至以下链接下载测试用的“工作列表文件”,不需积分:
       http://download.csdn.net/source/2608448

解压后,将 wlistqry.wl 拷贝至 C:\DICOM\Worklist\wlistqry ;

将 wklist.wl 拷贝至 C:\DICOM\Worklist\wlistdb\OFFIS 。

请至以下链接下载测试用的工作列表“文本文件”,不需积分:

http://download.csdn.net/source/2635124


解压后,将 wklist-2.dump 拷贝至 C:\DICOM\Worklist\wlistdb\OFFIS ,该文件来自于 dcmtk ,你也可以自己下载 dcmtk ,并获得相似文件。

5 、前置知识

    要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好。

6 、实验步骤

       1 )启动 wlmscpfs

    启动 cmd.exe ,依次键入以下命令
C:>cd C:\DICOM\Worklist

C:\DICOM\Worklist>wlmscpfs.exe -v -dfr -dfp   wlistdb 104   ( 命令到此结束,注意大小写 ) ,将出现类似如下的提示,否则,请检查您的操作步骤:

$dcmtk: wlmscpfs v3.5.4 2005-12-20 $

 

(notice: dcmdata auto correction disabled.)   

2 )生成患者信息

用“写字板”打开 wklist.dump ,会看到如下所示的文本行:

(0008,0050) SH  00009

(0008,0005) CS  [ISO_IR 100]

(0010,0010) PN  A^B^C

(0010,0020) LO  123456

(0010,0030) DA  20000101

……

对于应用来讲,为了使影像设备能够获取到我们登记的患者信息,我们需要将注意力集中于以下几个字段:

(0010,0010)(患者编号)、(0010,0020)(患者姓名)、(0010,0030)(出生日期)、(0010,0040) (性别)、(0020,000d)(检查号)、(0008,0060)(设备Modality)、(0040,0001)(AE Title)、

(0040,0002)(检查、预约日期)和(0040,0003)(检查、预约时间)。

    注意:

(1)、对于影像检查来说,(0020,000d)(检查号)是唯一标识符,任意2次检查的检查号必须不同;

(2)、(0010,0030)(出生日期)和(0040,0002)(检查、预约日期)必须是8位前导格式,即如果是2000年1月1日,须表示为20000101;

    (3)、(0040,0003)(检查、预约时间)必须是6位前导格式,即8时3分3秒,须表示为080303;

( 4 )、 重点 : (0040,0002)(检查、预约日期)必须与影像设备上设置的时间范围一致,否则可能造成登记的患者,影像设备上检索不到;一般来说,该字段填写当天的日期;

(5) 重点 : (0008,0060)(设备Modality)必须与影像设备的Modality一致,如果设备是CT,则该字段应填CT,如果设备是磁共振(MR),则该字段应填MR,其他更多的Modality请查阅DICOM标准;

(6) 重点: (0040,0001)(AE Title)应与设备上访问工作列表服务的AE Title一致,可以联系影像设备的系统管理员;

3 )生成患者信息 dicom 文件;

启动 cmd.exe ,依次键入

C:\>cd C:\DICOM\Worklist\wlistdb\OFFIS

              C:\DICOM\Worklist\wlistdb\OFFIS>dump2dcm.exe wklist-2.dump wklist-2.wl

       4 )模拟影像设备检索登记的患者信息

C:\DICOM\Worklist>findscu 127.0.0.1 104 wlistqry\wlistqry.wl -aec OFFIS (命令到此结束,注意大小写)

如果一切正常,在将出现类似如下的提示

RESPONSE: 1 (Pending)

(0008,0050) SH [00009 ]                                 #   6, 1 AccessionNumber

 

(0010,0010) PN [A^B^C ]                                  #   6, 1 PatientsName

(0010,0020) LO [123456]                                 #   6, 1 PatientID

(0010,0030) DA [20000101]                               #   8, 1 PatientsBirthDa

te ……

同时,启动 wlmscpfs.exe 的命令行界面将出现类似如下的提示:

RESPONSE: 1 (Pending)

 

# Dicom-Data-Set

# Used TransferSyntax: LittleEndianExplicit

(0008,0050) SH [00009 ]                                 #   6, 1 AccessionNumber

 

(0010,0010) PN [MOZART^WOLFGANG^AMADEUS ]               #  24, 1 PatientsName

(0010,0020) LO [MWA484763 ]                             #  10, 1 PatientID

(0010,0030) DA [17911205]                               #   8, 1 PatientsBirthDa

te

(0010,0040) CS [M ]                                     #   2, 1 PatientsSex

(0010,2000) LO [ABZESS]                                 #   6, 1 MedicalAlerts

(0010,2110) LO [BARIUMSULFAT]                           #  12, 1

……

说明我们登记的患者信息已被检索到。

7 、影像设备查询工作列表

参照第三章 工作列表( Work List )(一)的第 7 节,完成本节实验。

8 、总结

       1 、命令解释

       wlmscpfs.exe -v -dfr -dfp   wlistdb 104

       多出来的 -v 选项是向用户显示详细的通讯过程信息, v 即 verbose 。

       2 、标注重点 的地方是影像设备能否正确检索到登记的患者信息的关键所在


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pachleng/archive/2010/08/20/5827232.aspx

posted @ 2010-12-21 16:23  微笑的艾米  阅读(2722)  评论(0编辑  收藏  举报