python 实现dcmtk关联pacs功能 推送下拉影像
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
- [DCMTK开发笔记模拟PACS调试(Win10环境)文档] https://blog.csdn.net/Qinyimin001/article/details/103512575
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) # 所有的服务都需添加该参数
echoscu.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)
1.4.1:单个dcm文件推送
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,端口,设置AE4.影像拉取功能需要添加本机端口参数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进行影像拉取
- 运行时占用的内存比较大添加链接描述
- 上传,存储,不支持选择文件(仅支持目录),手动输入都支持
6、收获:
- dcmtk的命令基本配置
- subprocess的常用方法
- tkinter的组件布局,日志打印
- pyinstaller本地资源打包
- 打包后的资源如何访问
dcmtk下载地址:https://download.csdn.net/download/EXIxiaozhou/86724433
python 实现dcmtk关联pacs功能 推送下拉影像相关推荐
- Python Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...
- python http2_实战 | Python使用HTTP2实现苹果原生推送
原标题:实战 | Python使用HTTP2实现苹果原生推送 本文约 4405 字,读完可能需要 6 分钟. 作者:风中纸鸢 原文: 说起苹果的推送,可能很多开发人员就开始头疼了,因为实现苹果推送服务 ...
- python 阿里云短信群发推送
python 阿里云短信群发推送 本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻.申请短信服务.创建应用和模板等步骤请参考:阿里云短信 ...
- Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取
1. 高频命令 git add 将工作文件修改提交到本地暂存区. git add . 将所有修改过的工作文件提交暂存区(常用). git commit -m "XXX" 为本次修改 ...
- 程序猿推送利器:使用Python+Server酱打造微信通知推送利器
你是否经历过服务器挂掉却浑然不知的彷徨?你是否感受过服务停止很久后才发现事情的严重的感觉?是的,你急需一款轻量级的推送通知系统! Server酱正是这么一款程序猿的好帮手,她通过提供一个超轻量级的AP ...
- python server酱_程序猿推送利器:使用Python+Server酱打造微信通知推送利器
你是否经历过服务器挂掉却浑然不知的彷徨?你是否感受过服务停止很久后才发现事情的严重的感觉?是的,你急需一款轻量级的推送通知系统! Server酱正是这么一款程序猿的好帮手,她通过提供一个超轻量级的AP ...
- Win11重磅新功能推送!
微软宣布现已开始向 Windows 11 正式版用户推出全新表情符号( emoji ),被称为"大眼夹"的经典 Office 助手(Clippy)现已回归! 全新表情符号基于流畅设 ...
- python: 企业微信 机器人定制化推送
需要实现的是: 1.企微推送 定制化消息 思路: (1)把需要推送的内容处理好 (2)调用企微api (3)推送时间的设置触发--可利用jekins的Build Triggers定时构建 上具体实现: ...
- Python操作kafka实现数据定时推送和获取,并解决中文乱码问题
上篇介绍了kafka环境的搭建以及实现了Python如何简单操作kafka.本篇实现如何定时向kafka推送和接收数据,并解决了中文乱码问题. 设置Producer每隔5秒推送一次数据,Consume ...
- 小程序关联公众号推送公众号消息
最近项目有个需求要把小程序和公众号关联到一起,发布商品,下单的时候的时候给用户推送消息 小程序要跟微信公众号(服务号认证300块,订阅号不行)绑定到一起,要先绑定到微信开放平台(需要认证300块) 绑 ...
最新文章
- Idea不能新建package的解决
- 事务消息大揭秘!RocketMQ、Kafka、Pulsar全方位对比
- LeetCode 121. Best Time to Buy and Sell Stock--Java,Python,C++解法
- 概率论快速学习03:概率公理补充
- Qt状态机框架介绍(二)
- 自然常数 e 的理解与应用
- 解读我所认知的网络营销根源
- php 四舍五入百位,php取整函数ceil,floor,round,intval函数的区别
- Readhat中升级openssh
- github开源库(三)
- java程序的开发工具是jdk,分享面经
- 功能强大的云打印组件-开始使用
- java毕业设计美发门店管理系统Mybatis+系统+数据库+调试部署
- google人体浏览器+android,google人体浏览器
- 汽车域控制器架构和OTA的心脏:网关的四大豪门(上)
- PEEK薄膜特性与各型号性能特征分析
- caj转换word转换器怎么操作?
- 独享带宽和共享带宽的区别
- 《纵向领导力》的四个维度
- mybatis的常用标签用法总结