python 实现dcmtk关联pacs功能推送下拉影像(推荐)

作者:EXI-小洲 时间:2021-10-15 15:58:43 

python 实现pacs功能 推送下拉影像

dcmtk关联pacs技术笔记:

简介

  • 1、dcmtk关联pacs的参数介绍

  • 2、dcmtk命令介绍

  • 3、演示工具的功能

  • 4、说明使用的技术

  • 5、遇到的问题

  • 6、工具目前存在的缺点

dcmtk关联pacs的参数介绍:远程pacs说明参数如何添加
需关联的PACS系统信息参数
[被呼叫主机ip] 192.168.10.19
[被呼叫主机pacs系统AE] ebm-pacs
[被呼叫主机pacs系统port] 105
[pacs系统电脑账号] dn
[pacs系统电脑密码] ZAQ12wsxCDE3

1、dcmtk命令介绍,ehoscu,findscu,movescu,storescu

命令参数说明参考实例文档
[dcmtk命令参数文档] https://support.dcmtk.org/docs/echoscu.html
[DICOM医学图像处理:DCMTK的wiki资料学习之PACS调试文档] https://www.pianshen.com/article/97151392057
python 实现dcmtk关联pacs功能 推送下拉影像 https://www.jb51.net/article/264742.htm
DCMTK 常用参数介绍

参数说明
-v详细模式,打印处理细节
-d调试模式,打印调试信息
ip被呼叫主机ip,如(192.168.10.19)
port被呼叫主机port,如(105)
-aet设置我的呼叫(本机)AE标题,pacs给本机添加的AE title,如(zs-find-scu)
-aec设置称为对等方(被呼叫主机) 的AE标题,pacs系统的AE title,如(ebm-pacs)
-P使用患者根信息模型(默认)
-S使用研究根信息模型
-k指定检索条件(key=value)
-od指定输出目录
QueryRetrieveLevel指定检索级别
-aem设置移动目的地AE标题(movescu时使用),如(zs-move-scu)
+f输入文件格式(默认单个dcm文件路径),推送影像时使用
+sd支持目录路径下所有文件输入,推送影像时使用
-su study指按studyinstanceuid命名目的文件夹,本机接收远程服务器影像时使用
-fe .dcm是指收到的文件以.dcm为文件后缀,本机接收远程服务器影像时使用

1.1:echoscu.exe 连接,接收答复回应(相当于ping),测试本机与pacs是否关联成功

  • 参数介绍

  • pacs系统ip,端口(192.168.10.19 105) # 所有的服务都需添加该参数

choscu.exe -v -d -aet zs-move-scu -aec ebm-pacs 192.168.10.19 105

1.2:findscu.exe 查询

  • 参数介绍

  • 本机AE(-aet zs-find-scu)

  • 被呼叫机AE(-aec ebm-pacs)

  • 研究信息模型(-S)

  • 查询条件=(key=value)

  • 检索级别(-k QueryRetrieveLevel=STUDY)

  • 查询字段(-k PatientName)

  • 打印处理详情(-v)

  • 打印debug日志(-d)

findscu.exe -v -d -S 192.168.10.19 105 -aet zs-find-scu -aec ebm-pacs -k QueryRetrieveLevel=STUDY -k StudyDate=20170918 -k PatientName -k PatientID -k StudyTime -k StudyID

1.3:movescu.exe 影像拉取

  • 参数介绍

  • 打印处理详情(-v)

  • 打印debug日志(-d)

  • 本机AE(-aet zs-move-scu)

  • 被呼叫机AE(-aec ebm-pacs)

  • 设置移动目的地AE以及端口(-aem zs-move-scu --port 8090(此端口在pacs给本机设置AE时一起添加)

  • 患者信息模型(-P(默认))

  • 输出目录(-od)

  • 检索级别(-k QueryRetrieveLevel=PATIENT)

  • 筛选条件(-k PatientID=0017063006)

movescu.exe -v -d -aet zs-move-scu -aec ebm-pacs -aem zs-move-scu --port 8090 -od D:\image_test\dcmtk_scp_storage\CHEN_XIA_DI 192.168.10.19 105 -k QueryRetrieveLevel=PATIENT -k PatientID=0017063006

1.4:storescu.exe 影像推送

参数介绍
打印处理详情(-v)
打印debug日志(-d)
本机AE(-aet zs-move-scu)
被呼叫机AE(-aec ebm-pacs)
单个文件路径输入(D:\image_test\dcmtk_test\1.2.dcm)
目录下所有文件输入(D:\image_test\dcmtk_test\1.2.dcm +sd)

storescu.exe -d 192.168.10.19 105 D:\image_test\dcmtk_test\1.2.dcm -aet zs-move-scu -aec ebm-pacs

1.4.2、目录下所有文件推送

storescu.exe -v -d 192.168.10.19 105 D:\image_test\dcmtk_input\138 -aet zs-move-scu -aec ebm-pacs +sd  

1.5、storescp.exe 接收pacs系统发送的影像

  • 参数介绍

  • 打印处理详情(-v)

  • 打印debug日志(-d)

  • 本机scp的AE,端口(-aet zs-store-scp 8090)

  • 输出目录(-od)

  • 保存格式(-su study)

  • 文件后缀(-fe.dcm))

storescp.exe -d -v 8090 -aet zs-store-scp -od D:\image_test\dcmtk_scp_storage -su study -fe .dcm --fork

2、演示工具的功能:关联测试,查询,拉取,推送

2.1:影像上传路径:D:\image_test\dcmtk_input\test_0000915367
2.2:影像存储路径:D:\image_test\dcmtk_scp_storage
2.3:本机-AET:zs-movescu
2.4:PACS-AEC:ebm-pacs
2.5:PACS系统IP:192.168.10.19
2.6:PACS系统PORT:105
2.7:本机PORT:8090
2.8:注意事项:
   1.路径中不允许出现中文
   2.PACS-AEC,PACS系统IP,PACS系统PORT,为关联pacs系统固定参数
   3.本机-AET,本机PORT,需要在远程pacs脚本中添加本机ip,端口,设置AE
   4.影像拉取功能需要添加本机端口参数
   5.目前影像拉取不支持PatientName检索条件,仅支持PatientID

3、说明使用的技术:

  • dcmtk命令拼接

  • subprocess(执行命令)

  • tkinter(Gui工具设计)

  • ctypes(隐藏控制台)

  • sys(访问pyinstaller打包的临时资源)

  • pyinstaller(程序打包)

4、遇到的问题:

1.pyinstaller:如何打包本地资源

解决方法一:pyinstaller -F --add-data dcmtk-3.6.6-win64-dynamic;dcmtk-3.6.6-win64-dynamic dcmtk_gui.py
   解决方法二:修改pyinstaller生成的spec文件,修改datas=[("本地资源路径","打包后生成的临时资源目录")]

2.pyinstaller:-w 去除控制台,无法执行cmd命令:

解决方法一:设置subprocess.Popen(stdout, stderr, stdin)
   解决方法二:隐藏控制台, ctypes.windll.user32.ShowWindow(whnd, 0)

3.sys:如何访问临时资源:

解决方法:通过getattr(sys, 'frozen', False)判断是否为打包环境,获取资源的相对路径:sys._MEIPASS

4.使用资源:

相对路径(dcmtk../bin) + dcmtk服务的exe + dcmtk命令即可 使用subprocess.Popen(),使用subprocess.getoutput()

5.tkinter 组件切换电脑打开则组件布局位置不一致:

解决方法:添加容器对象,frame

6.tkinter Entry输入框与选择路径按钮同时支持:

如果选择路径按钮,entry组件=选择路径

7.tkinter Text实时显示 dcmtk命令产生的日志:

代码介绍

5、工具目前存在的缺点:

  • 不能根据患者的name进行影像拉取

  • 运行时占用的内存比较大

  • 上传,存储,不支持选择文件(仅支持目录),手动输入都支持

6、收获:

  • dcmtk的命令基本配置

  • subprocess的常用方法

  • tkinter的组件布局,日志打印

  • pyinstaller本地资源打包

  • 打包后的资源如何访问

前存在的缺点:

  • 不能根据患者的name进行影像拉取

  • 运行时占用的内存比较大添加链接描述

  • 上传,存储,不支持选择文件(仅支持目录),手动输入都支持

7、收获:

  • dcmtk的命令基本配置

  • subprocess的常用方法

  • tkinter的组件布局,日志打印

  • pyinstaller本地资源打包

  • 打包后的资源如何访问

dcmtk应用程序Windows 64位,免费下载,解压即可使用

dcmtk下载地址:http://xiazai.jb51.net/202210/yuanma/dcmtkdynamic_jb51.rar

来源:https://blog.csdn.net/exixiaozhou/article/details/126988575

标签:python,dcmtk,pacs,影像
0
投稿

猜你喜欢

  • 看看那些名牌LOGO的成长史

    2009-03-24 20:37:00
  • python turtle 绘制太极图的实例

    2022-12-31 13:15:12
  • Python中的基本数据类型介绍

    2023-07-21 22:26:26
  • 利用tcpdump对mysql进行抓包操作技巧

    2024-01-23 04:52:50
  • Python os库常用操作代码汇总

    2021-04-17 04:07:51
  • Tensorflow--取tensorf指定列的操作方式

    2021-06-25 21:21:02
  • 详解Go语言中make和new的区别

    2024-04-27 15:37:11
  • python使用PIL模块获取图片像素点的方法

    2022-07-28 10:57:57
  • css实现简单圆角效果

    2008-11-27 13:11:00
  • MySQL 如何修改root用户的密码

    2024-01-23 19:34:31
  • Windows Server 2008之数据安全保护

    2008-12-04 12:49:00
  • Python超细致探究面向对象

    2023-05-28 17:02:56
  • django解决跨域请求的问题详解

    2021-07-21 14:45:45
  • Spring Batch读取txt文件并写入数据库的方法教程

    2024-01-27 03:59:32
  • 行转列之SQL SERVER PIVOT与用法详解

    2024-01-28 10:41:37
  • 用好FrontPage2003的九大功能

    2008-02-21 14:29:00
  • 查看 MySQL 已经运行多长时间的方法

    2024-01-14 09:57:05
  • KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定

    2023-08-13 03:12:44
  • MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

    2024-01-14 03:16:56
  • 空行不空格式排版组织原理

    2010-05-03 14:46:00
  • asp之家 网络编程 m.aspxhome.com