DCMTK的Worklist初探

作为一个非医学相关专业的程序员,要实现通过DCMTK实现相关通讯还是得兜些圈子。在这里记录一下比较绕,实际却很简单的Worklist吧。

首先我们需要一个查询的SCP,DCMTK为我们提供了wlmscpfs用于测试:

usage: wlmscpfs [options] port

比较绕的点在于,仅提供ip与port是不够的的,中间的options需要什么呢,实际可用的如下:

wlmscpfs.exe -dfr -dfp wlistdb/OFFIS 104

-dfr为--disable-file-reject,-dfp代指--data-files-path。问题就在dfp的介绍比较笼统,查阅资料后发现,要实现worklist查询,SCP和SCU都需要有worklist文件,后缀为.wl。其实这种文件就是dcm文件,只是文件中一般不存储像素信息,主要用于存取患者信息。SCP和SCU所用的wl文件区别在于,一个有值域,一个没有。

worklist文件是以二进制形式存储的,DCMTK为我们提供了工具可将wl文件转换为dump文件,这是一种可逆向转换的ASCII文件,我们可使用dcmdump.exe将wl转换为dump文件后,查看或修改dump文件。然后再将dump文件通过dump2dcm.exe转换回wl文件。

问题来了,wl文件从哪儿获取呢?其实DCMTK源码包中就有。SCP所需的wl文件位置在${dcmtk_dir}\dcmwlm\data\wlistdb\OFFIS下(${dcmtk_dir}表示dcmtk源码目录),SCU所需的wl文件位置在${dcmtk_dir}\dcmwlm\data\wlistqry。通过之前提到的工具可将dump文件转化为wl文件。

光有文件还不行,还得将文件以一定形式组织起来。新建文件夹结构如下,然后将SCP所需文件放入OFFIS下,SCU所需文件放入wlistqry下。同时我们还需要将原OFFIS目录下的lockfile文件放入新OFFIS目录下

Root_Folder
├─wlistdb
│  └─OFFIS
└─wlistqry

如此,可以使用上述指令开始SCP服务。

接下来使用

usage: findscu [options] peer port [dcmfile-in...]

findscu -aec . 127.0.0.1 104 wlistqry/wlistqry.wl -k 0010,0020

你可能感兴趣的:(DCMTK)