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