dicom worklist、pacs环境搭建

article/2025/9/16 14:01:14

dcmtk的安装和使用

OFFIS DICOM 工具包 官网:dicom.offis.de - DICOM Software made by OFFIS - DCMTK - DICOM Toolkit

windows版本下载地址:https://dicom.offis.de/download/dcmtk/dcmtk366/bin/dcmtk-3.6.6-win64-dynamic.zip

部分工具包使用方法记录

wlmscpfs .exe

启动worklist管理的SCP服务工具🔗

相关命令:

wlmscpfs.exe -d -dfr -dfp wlistdb 104-d 可以查看一些输出信息
-dfr 表示接受字段不完整的 DICOM 文件作为查询内容;
-dfp wlistdb 表明 wlmscpfs.exe 搜索的文件夹的路径,可以为绝对路径;
104  为工作列表程序的端口号;
wlistdb 文件夹下的 OFFIS 表示 AETITLE (AETITLE作为文件夹命名,文件夹下存放查询的wl文件,在该目录下新建一个lockfile的空文件)。

dump2dcm.exe

将ascii dump文件转换成dicom文件工具🔗

用于测试的dump文件可以拉dcmtk的源码 :GitHub - DCMTK/dcmtk: Official DCMTK Github Mirror,然后在目录dcmwlm/data/wlistdb/OFFIS中查看,

 

这里选择wlist1.dump

对于dump文件,用记事本打开,可以看到一部分信息,其中比较重要的:

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

相关命令:

dump2dcm.exe wlist1.dump wlist1.wl --write-xfer-little

.wl 文件就是.dcm文件,但文件中并不包含真实的像素信息,只包含头部信息。

最终可以将生成的.wl文件放到wlmscpfs所对应的AE(AE_WYJ)目录下去。

findscu.exe

dicom查询SCU工具🔗

通过findscu.exe查询文件需要对应的模板文件,查出来的wl信息会根据模板信息展示,所以前提需要准备一个模板的wl文件。

在dcmtk源码文件夹dcmwlm/data/wlistqry目录下,找到对应的模板dump文件,

 

这里选择wlistqry1.dump

相关命令:

# 将wlistqry1.dump转换为将wlistqry1.wl
dcmp2dcm.exe 将wlistqry0.dump 将wlistqry0.wl --write-xfer-little
# 通过findscu查询wl
findscu.exe 10.150.2.78 104 -aec AE_WYJ wlistqry1.wl
-aec 被请求或者说被呼叫的应用端的名称,即命名的AE文件夹AE_WYJ
AE_WYJ 查询的AE
wlistqry1.wl 模板文件wl

 

storescu.exe

dicom存储SCU(c-store)工具🔗

storescu.exe -aec DCM4CHEE 10.150.1.98 11112 -v  1.dcm
-aec 即pacs的AE DCM4CHEE

dcmdump.exe

转储 DICOM 文件和数据集,可以查看.dcm等文件🔗

相关命令:

dcmdump.exe 1.dcm

worklist服务搭建

debain环境下,dcmtk的使用

  1. 安装dcmtk

    apt install dcmtk
  2. 准备测试数据

    数据文件wlist1.dump、查询文件wlistqry1.dump
  3. dump转换成wl(本地执行)

    dcmp2dcm.exe wlist1.dump wlist1.wl --write-xfer-little
    dcmp2dcm.exe wlistqry1.dump wlistqry1.wl --write-xfer-little
  4. 服务器目录结构

    /home/dicom --主文件夹
    /home/dicom/wlistdb -- worklist数据文件夹,存放所有AE文件夹
    /home/dicom/wlistdb/AE_WYJ  -- 此处新建一个AE_WYJ文件夹,表示有一个名为AE_WYJ的AE,里面存放所有对应的wl文件
    /home/dicom/wlistdb/AE_WYJ/lockfile -- 每个目录下需要存放一个空的lockfile文件,touch lockfile命令创建
    /home/dicom/wlistdb/AE_WYJ/wlist1.wl -- 将步骤3中的wlist1.wl放到此目录
  5. 启动worklist服务

    # 启动端口为104的worklist服务 
    wlmscpfs -d -dfr -dfp wlistdb 104 

    后台运行可以用nohup启动

    nohup wlmscpfs -d -dfr -dfp wlistdb 104 &

    关闭直接杀掉进程

    ps -ef|grep wlmscpfs
    kill -9 进程号

pacs服务搭建

采用docker搭建的方式,确保环境下已经安装了docker,debain环境安装docker方式参见官网:Install Docker Engine on Debian | Docker Documentation

docker pacs的搭建方式主要参考了官网https://github.com/dcm4che/dcm4chee-arc-light/wiki/Run-minimum-set-of-archive-services-on-a-single-host,此处安装最新版本的dcm4chee-arc-light 5.25.0,记录关键步骤:

  1. 创建一个docker的默认桥接

    docker network create dcm4chee_network
  2. 开启openldap 服务

    docker run --network=dcm4chee_network --name ldap \-p 389:389 \-v /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data \-v /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d \-d dcm4che/slapd-dcm4chee:2.6.0-25.0
  3. 开启PostgreSQL服务

    docker run --network=dcm4chee_network --name db \-p 5432:5432 \-e POSTGRES_DB=pacsdb \-e POSTGRES_USER=pacs \-e POSTGRES_PASSWORD=pacs \-v /etc/localtime:/etc/localtime:ro \-v /etc/timezone:/etc/timezone:ro \-v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \-d dcm4che/postgres-dcm4chee:14.1-25
  4. 用已部署的 dcm4che Archive 5 应用程序启动 Wildfly

    docker run --network=dcm4chee_network --name arc \-p 8080:8080 \-p 8443:8443 \-p 9990:9990 \-p 9993:9993 \-p 11112:11112 \-p 2762:2762 \-p 2575:2575 \-p 12575:12575 \-e POSTGRES_DB=pacsdb \-e POSTGRES_USER=pacs \-e POSTGRES_PASSWORD=pacs \-e WILDFLY_WAIT_FOR="ldap:389 db:5432" \-v /etc/localtime:/etc/localtime:ro \-v /etc/timezone:/etc/timezone:ro \-v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \-d dcm4che/dcm4chee-arc-psql:5.25.0

    相关命令执行完毕后,直接打开网页:

    http://10.150.2.78:8080/dcm4chee-arc/ui2/

    如果可以成功打开,则说明已经安装成功了。

  5.  使用本地storescu.exe进行测试

    storescu.exe -aec DCM4CHEE 10.150.1.98 11112 -v 1.dcm

     可以确定已经上传成功,上传成功的dcm可以在series下点击submit查看

 

                   

 

 


http://chatgpt.dhexx.cn/article/hCugnDWl.shtml

相关文章

dcmtk在PACS开发中的应用(基础篇) 第三章 工作列表(Work List)(一)( BY 冷家锋)

觉得对您有帮助,欢迎打赏(打赏码在文末),欢迎切磋。 博客不常来,评论不一定都能看到,看到了我会尽力回复(更新于2019年7月26日) 第三章 工作列表(Work List&#xff09…

WorkManager

WorkManager对比AsyncTask, ThreadPool的优势:WorkManager里面的任务在应用退出之后还可以继续执行。AsyncTask, ThreadPool里面的任务在应用退出之后不会执行。WorkManager自动选用JobScheduler, 或是AlarmManager来实现后台任务。 使用WorkManager的一些任务示例…

【SimpleList】

list_item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:orientation"vertical"android:l…

java dcm4che findscu实现workList通讯——客户端SCU

全网实现workList服务的,要么是基于C的DCMTK、要么是基于C#的fo-dicom。想用dcm4che实现 找了好几个月都没有一个例子。无奈只能通过DCMTK和fo-dicom 实现方式并查看dcm4che源码自己实现了。经过不懈的努力总算是实现了并实际跟设备测试成功&#xff01; 首先得先了解 DICOM wo…

GE LIGHTSPEED VCT型CT机怎样修改WORKLIST参数

一、 打开维修界面&#xff1a;点击“Service”按钮。 在弹出的service desktop界面中选Utilities----点击Utilities----点击 Shell。 在弹出的界面中直接输入命令&#xff1a;installhisris 回车。 在弹出的界面中&#xff0c;修改完worklist的网络参数后&#xff0c;点击Acce…

DICOM获取worklist患者列表抓包分析

笔者刚学习DICOM协议&#xff0c;笔者比较喜欢从最基础的二进制数据去理解整个协议 这里用到了功能强大的wireshark抓包工具 wireshark下载地址&#xff1a;Wireshark中文版下载-Wireshark(网络抓包工具)下载v3.4.7 官方最新版-西西软件下载 基础知识&#xff1a; DICOM简述…

DICOM worklist工作原理?

文章转自&#xff1a;https://zhidao.baidu.com/question/254262863.html 一、关于Worklist 在RIS与PACS的系统集成中。Wordlist的连接为其主要工作之一。Wordlist成像设备工作列表&#xff0c;它是DICOM协议中众多服务类别中的一个.它的功能是实现设备操作台与登记台之间的通…

DICOM医学图像处理:基于DCMTK工具包学习和分析worklist

背景&#xff1a; DICOM3.0协议中有介绍关于worklist的部分。简而言之&#xff0c;worklist可以看做是放射科设备从医院RIS系统中自动读取患者信息的一种“通信协议”&#xff0c;可以指存储在RIS系统中的患者数据库&#xff0c;主要包括患者的基本信息&#xff08;如年龄、性别…

【转】DICOM医学图像处理:基于DCMTK工具包学习和分析worklist

转自&#xff1a;https://blog.csdn.net/zssureqh/article/details/38775315 背景&#xff1a; DICOM3.0协议中有介绍关于worklist的部分。简而言之&#xff0c;worklist可以看做是放射科设备从医院RIS系统中自动读取患者信息的一种“通信协议”&#xff0c;可以指存储在RIS系…

数学建模之MATLAB编程

EverydayOneCat 🌈 🐱🐱🐱 🍣🍣🍣🍣🍣✖️N 🌈📖📜 🥢 🐱 🐱 「Sushi shop!」 知识点 1.下载 链接:https://pan.baidu.com/s/1DbfysOOwIoSvt8HQUw0jhw 提取码:75mz 2.基本数学运算 2.1变量与数据操作 变量定义注意事项: 变量名区分字母…

数学建模-如何用matlab画出漂亮的图(一)

1 画图基本指令 hold on :保持打开的命令关闭图形保持功能hold off: title ( xx)命名 xlabel (xx’ ) x轴标注 ylabel (xx’ ) y轴标注 figure (x) 创建图窗 hidden on 将网格设为不透明 hidden off 将网格设为透明 legend (xx)加图例 grid on加网格线 subplot (2,2.4).显示第4…

数学建模-数学规划(Matlab)

目录 一、线性规划求解 二、非线性规划问题 三、整数规划&#xff08;包括0-1规划&#xff09; 四、最大最小化模型 五、多目标规划模型 注意&#xff1a;代码文件仅供参考&#xff0c;一定不要直接用于自己的数模论文中国赛对于论文的查重要求非常严格&#xff0c;代码雷同…

【数学建模】MATLAB

MATLAB 一、基本介绍二、矩阵运算三、编程基础四、常见函数以及其他五、二维图形绘制六、三维图形绘制七、运算符八、流程控制语句九、自定义函数十、画图进阶 一、基本介绍 MATLAB 是美国MathWorks公司出品的商业数学软件&#xff0c;用于算法开发、数据可视化、数据分析以及…

【数学建模】数学建模学习1---线性规划(例题+matlab代码实现)

1 线性规划 在人们的生产实践中&#xff0c;经常会遇到如何利用现有资源来安排生产&#xff0c;以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划&#xff0c;而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。自从 1947 年 G. B. …

数学建模之matlab入门篇

随着美赛的推进&#xff0c;数学建模用到matlab的越来越多&#xff0c;然而对matlab不熟悉的还很多&#xff0c;在此写下matlab基础篇&#xff0c;一是帮助没有了解过matlab的同学入门&#xff0c;二是帮助自己巩固知识。 时间紧迫&#xff0c;直接开始&#xff01;此篇文章包…

数学建模-MATLAB三维作图

导出图片用无压缩tif会更清晰 帮助文档&#xff1a;doc 函数名 matlab代码导出为PDF 新建实时脚本或右键文件转换为实时脚本实时编辑器-全部运行-内嵌显示保存为PDF

数学建模专栏 | 开篇:如何备战数学建模竞赛之 MATLAB 编程

作 者 简 介 卓金武&#xff0c;MathWorks中国高级工程师&#xff0c;教育业务经理&#xff0c;在数据分析、数据挖掘、机器学习、数学建模、量化投资和优化等科学计算方面有多年工作经验&#xff0c;现主要负责MATLAB校园版业务。曾2次获全国大学生数学建模竞赛一等奖&#x…

MATLAB数学建模:常用建模函数

常用建模函数 本文将对常用于 MATLAB 建模的函数&#xff0c;如曲线拟合函数、参数估计函数、插值函数等&#xff0c;作详细介绍。 文章目录 常用建模函数1. 曲线拟合函数1.1 多项式拟合1.2 加权最小方差拟合1.3 非线性曲线拟合 2. 参数估计函数2.1 点估计2.1.1 最大似然法2.1…

【数学建模】数学建模学习2---整数规划(例题+matlab代码实现)

文章目录 1 概论1.1 定义1.2 整数规划的分类1.3 整数规划特点1.4 求解方法分类 2 分枝定界法3 0 −1型整数规划3.1 引入0 −1变量的实际问题3.1.1 投资场所的选定——相互排斥的计划3.1.2 相互排斥的约束条件3.1.3 关于固定费用的问题&#xff08;Fixed Cost Problem&#xff0…

Matlab数学建模(五):优化模型之标准模型

一、学习目标 &#xff08;1&#xff09;了解最优化模型。 &#xff08;2&#xff09;掌握线性规划的优化求解。 &#xff08;3&#xff09;掌握整数规划的优化求解。 &#xff08;4&#xff09;了解Matlab的图形化应用。 二、实例演练 1、谈谈你对最优化模型的了解。 最优…