基于fo-dicom 的 Worklist & CStore 我的学习实现路线

2023-05-16

学习了三个周的DICOM协议,主要进行了Worklist、CStore应用测试,下面总结一下过程中收获的心得

刚开始接触DICOM这个东西领导提出两个需求测试实现Worklist和DICOM文件下载,后面又加了压缩DCM文件,而且他说网上有代码,让我下下来马上在机器上测试,我当时还是一头雾水,不知从何下手,先没管代码的事,最直接的入手材料就是DICOM协议

[DICOM标准网站](https://www.dicomstandard.org/ - https://www.dicomstandard.org/current/),在CSDN下了中文版的协议,三个文件讲到第十章,应该不全,不过了解基本内容是够了,陆续看了两天协议,医学影像领域算是入门了,知道医学影像按照DICOM协议规定的数据格式、含义、条目存储为二进制文件,收集各种概念HIS、RIS、PACS,对协议的基本元素、组成、含义有了大致的了解,但对于自己接下来的任务还不明确,要怎么做。

之前无医疗行业开发经验,表示连HIS都不知道,了解正常的就医流程是把我开发方向的重要支持。

病人在HIS上注册,经hl7消息传至RIS,RIS上便有了病人的登记信息。做检查时,成像设备通过DICOM Worklist来从RIS上取得需做检查的病人列表,选择后做检查。检查完成后,图像便可以传到PACS中进行存储。在这个过程中,病人信息仅在HIS端输入一遍,但它流经RIS,Modality以及PACS。可以节省时间,减少错误,规范流程,互联互通,形成数据共享。理想的情况下,让医生专注于检查及诊断,而缩短的时间,也会提高病人的满意度。

第一个任务是实现worklist,我在各个地方找关于worklist的信息,协议里其实讲的很清楚

A worklist is the structure to present information related to a particular set of tasks. It specifies particular details for each task. The information supports the selection of the task to be performed first, and supports the perfomance of that task.

简单理解就是把数据库中的客户信息上传至设备界面,免去手动输入客户信息可能录入错误的问题。 

如何实现呢?

有了点基础只是就可以看代码了,一开始搜到关于Worklist的都提到了DCMTK,这是什么东东,也不管三七二十一,

跟着教程就开始愉快的操作啦,就是参考下面这两个博客

[dcmtk在PACS开发中的应用(基础篇) 第三章 工作列表(Work List)(一)](https://blog.csdn.net/pachleng/article/details/5800513)

[dcmtk在PACS开发中的应用(基础篇) 第四章 工作列表(Work List)(二)](https://blog.csdn.net/pachleng/article/details/5827232)

经过DCMTK的编译和配置(也没管这个是DICOM的C++支持库,就跟着做,在一抹黑的时候尽量不去管是什么,先弄出来再说)、准备dump文件,执行指令,整个过程还比较顺利,命令窗口展示如下

亲眼看到了协议中提到信息,比如病人姓名PN,这应该是设备机需要的数据吧,一下和DICOM拉近了距离,这些和worklist有什么关系?看到指令中有wlistqry 应该是worklist query

wlmscpfs指令指定了wlistdb和端口信息,应该是提供数据的服务端,findscu指令执行完就看到了查询的数据,明白了大概的过程,但是怎么测试设备机呢,需要说明的是在没接触设备前我一直没搞清楚服务端和客户端的问题。。

继续搜索,终于遇到了DICOM大神的博客(https://blog.csdn.net/zssureqh),他的博客应该是我们学习DICOM最佳参考,我后面的很多疑问都是看了他的博客才清楚了,收获很大。

然后就看到了这篇[DICOM:fo-dicom、dcm4che14、dcm4chee等开源库持续自我维护](https://blog.csdn.net/zssureqh/article/details/51926908),原来有基于.net的DICOM库,喜极而泣,终于要跑上正轨了

基于.net 4.5 [fo-dicom](https://github.com/fo-dicom/fo-dicom)

和示例程序[fo-dicom-samples](https://github.com/fo-dicom/fo-dicom-samples)

然而。。示例程序下下来却不知道如何上手,这么多项目,运行也直接看不到结果,令我感到惊喜的是确实有worklist相关的项目,一个是SCP 一个是SCU,再看协议,知道是服务端和客户端,又不能两个项目一起启动,那怎么办,,后来知道debugge下有可执行程序,于是先启动SCP 再启动SCU,程序运行起来我就踏实多了,结合源码又看了很多相关的文章,基本程序都理解通了,下一步可以上机测试了,只是后又遇到客户机竟然是XP系统不支持.net4.5 哭了,于是找到下面的库版本:

基于.net 4.0 [fo-dicom](https://github.com/zssure-thu/fo-dicom)

基于两个版本的实现方式差别很大,根据4.5的示例程序,在4.0上进行编码,也是由于对worklist理解不透彻,一直没跑通,折腾了两三天,不过CStore一下就通了,后来得知并不一定要在那台XP系统电脑上部署,就没怎么再看4.0的程序了

在见到设备电脑之前,我一直没怎么想通我的程序要怎么运行,看到仪器设备的操作界面,我一下懂了,设备就是所谓的客户端,我只需要提供服务端就可以了,又经过一个周的测试,几个仪器都测试通了worklist和CStore。

后面的学习我都是参考zssureqh的博客指导,特别是下面这篇

[DICOM:DICOM标准学习路线图](https://blog.csdn.net/weixin_42665418/article/details/82112865)

CStore没有问题,但是花了很多时间折腾下载直接压缩dcm,后来通过完全下载再在本地压缩然后上传云端的方式解决

DICOM的学习研究告一段落

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于fo-dicom 的 Worklist & CStore 我的学习实现路线 的相关文章

  • weak & asign

    Why does Apple use assign rather than weak to store a delegate http stackoverflow com questions 20419317 why does apple
  • cmake & CMakeLists.txt

    文章目录 前言先从体验开始1 一个最简单的例子 xff1a 2 例子升级 xff0c 将hello c生成为一个库 xff1a 3 例子升级 xff0c 将源代码和库分开放 xff1a 4 让可执行文件在 bin 目录 xff0c 库文件在
  • Chrome安装Proxy SwitchyOmega插件&Ubuntu20.04安装Proxychains

    目录 1 Chrome浏览器1 1 安装Proxy SwitchyOmega插件1 2 安装Proxy SwitchyOmega插件 2 Ubuntu服务器2 1 安装2 2 配置2 3 测试2 4 异常处理 1 Chrome浏览器 1 1
  • 无人机拉力测试台研制&测试过程中的9个关键技术点

    随着近年来无人机行业的飞速迭代发展 xff0c 越来越多的相关从业人员选择使用拉力测试台来测试并优化无人机的动力系统 xff0c 本文尝试从无人机拉力测试台的研制和使用角度来阐述无人机拉力测试中的9个关键技术点 1 电磁干扰方面的考虑 测试
  • Intel Realsense D435i&L515 驱动安装

    Intel Realsense D435i amp L515 驱动安装 0 引言1 D435i amp L515固件更新1 1 D435i固件更新1 2 L515固件更新 2 Intel Realsense驱动安装3 ROS Wrapper
  • ROS速成之发送&接收消息

    人真的老了 xff0c 扔了个周末 xff0c 完全不记得干了什么 论纪录的重要性啊 xff0c 当时觉得明白的很 xff0c 你扔两天试试 xff1f 扔一年试试 xff1f 扔几年试试 xff1f 最近参加的各种项目脑疼眼乏 xff0c
  • Oracle获取日期&天数

    一 获取当年所有日期 span class token comment select from span span class token keyword select span trunc span class token punctua
  • 超声波传感器(CH101&ch201) - Ⅱ

    文章目录 1 前言 2 目前官方发布的Horn有以下几种 3 超声波TOF传感器 VS 红外线传感器 4 开发评估套件 1 前言 上一篇简单的引入了CH101 CH201 这两种传感器 这种传感器使用的时候除了需要芯片外 还需要一个声学的
  • 数据库防火墙&数据库加密与脱敏&数据泄露防护

    写在最前 xff1a 安全产品系列目录 xff1a 目录 amp 总述 数据库防火墙 解决数据库应用侧和运维侧两方面的问题 xff0c 是一款基于数据库协议分析与控制技术的数据库安全防护系统 主动防御 xff0c 实现数据库的访问行为控制
  • C++ 文件的读写(fin && fout)

    如何让键盘输入字符保存在 txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示 xff0c 而且还能保存在特定路径的文件中 xff0c 这让简单枯燥的控制台命令程序变得略有趣 首先 xff0c 先看看cin和cout对象 xff
  • 【EXata】2.1 文件组织 & 2.5 Makefile组织

    2 1 文件组织 EXata 发行文件被分组到几个子目录中 这使得用户可以快速找到源代码 二进制对象文件 配置文件 文档或样本 表 2 1 列出了这些子目录和它们的内容 注意 xff1a 在本文件中 xff0c EXATA HOME 指的是
  • 用HL7创建含多个code item的modality worklist

    需求 DCM4CHEE做RIS DICOM服务器 用NHAPI发ORM o01消息创建worklist 问题 在同一个OBR里面没法包含多个Scheduled Protocol Code Sequence item 创建出来的worklis
  • 如何将 dicom 文件转换为 jpg

    我们如何使用java将dicom文件 dcm 转换为jpeg图像 这是我的代码 import java io File import java io IOException import org dcm4che2 tool dcm2jpg
  • echoscu 中调用 AE 标题无法识别错误

    我试图测试 dcmqrscp 的连接性 我使用以下命令来启动 dcmqrscp dcmqrscp config C Dicom config dcmqrscp cfg 请找到我使用的以下配置文件 NetworkTCPPort 11113 M
  • 无法获取 dicom 图像以在 python 中显示

    我正在尝试在 opencv python 中显示 DICOM 图像 我正在使用 pydicom 库 然后添加 API 来使用 DOTNET 创建一个完整的 DICOM 查看器 该查看器运行 python 当然 C 使用流程实例调用 pyth
  • DICOM StudyInstanceUID 对于患者来说应该是唯一的吗?

    在处理 DICOM 研究 系列和媒体概念时 我想知道这些值对于所有数据是否都是唯一的 或者仅对于它们所属的患者而言是唯一的 另有表述 我可以让 2 名患者的研究 系列 SOP 实例 uid 值相同吗 或者 DICOM 标准根本不关心这一点
  • 在 C# 中使用 fo-dicom 操作和转换 CT 图像的像素数据

    对于一些测试 我试图操纵PixelData以 dicom 格式存储的 CT 图像的元素 并将其写回到文件中橡树迪康研究员在 C 中 经过一番研究 我发现我想要处理的矩阵位于Buffer of PixelData存储在一个byte 大批 所以
  • DICOM 文件压缩

    我的工作需要使用 DICOM 文件 每个 DICOM 文件由单个目录中的许多 dcm 文件组成 我需要通过网络发送这些文件 由于文件很大 这个过程在某种程度上是这样的 我也是一名程序员 我想知道压缩此类文件的理想方法是什么 我说的是在本地计
  • DICOM 和 DICOM 叠加问题

    我有一个 DICOM 图像 我正在使用 C 读取该图像并将其转换为 16 位位图 位图已创建 但图像具有 DICOM 覆盖 我想在创建最终的 dicom 位图时将叠加层刻录到位图中 我无法做到这一点 有什么帮助吗 一种方法是创建覆盖数据的位
  • 如何使用 fo-DICOM 删除或更新私有标签?

    我有很多 DICOM 数据集 其中有一个私有标签 其中包含我不想保留在标头中的信息 每个数据集的此标签的值都会发生变化 因此我不知道该值 以下是我想要更新或删除的私人创建者和私人标签的示例 0033 0010 MITRA OBJECT UT

随机推荐

  • ODBC(Open Database Connectivity,开放数据库互连)

    ODBC Open Database Connectivity 开放数据库互连 是微软公司开放服务结构 WOSA Windows Open Services Architecture 中有关数据库的一个组成部分 它建立了一组规范 并提供了一
  • 数据结构考研408复习必看

    原创不易 麻烦点个关注 点个赞 谢谢各位 数据结构要点 第一章 概 论 数据就是指能够被计算机识别 存储和加工处理的信息的载体 数据元素是数据的基本单位 可以由若干个数据项组成 数据项是具有独立含义的最小标识单位 数据结构的定义 逻辑结构
  • 思科网络工程师必学

    网络工程师学习笔记 第一章 计算机基础知识 一 硬件知识 1 计算机系统的组成包括硬件系统和软件系统 硬件系统分为三种典型结构 1 单总线结构 2 双总线结构 3 采用通道的大型系统结构 中央处理器 CPU 包含运算器和控制器 2 指令系统
  • 什么是数字技术?

    数字技术 xff08 Digital Technology xff09 xff0c 是一项与电子计算机相伴相生的科学技术 xff0c 它是指借助一定的设备将各种信息 xff0c 包括 xff1a 图 文 声 像等 xff0c 转化为电子计算
  • 启示录:新加坡纬壹科技城成功建设经验

    数字TOD xff1a 在各省市新一年的重点工作中 xff0c 产业园区都被放在非常显赫的位置加以强调 xff0c 有的被冠以 高质量发展主战场 的地位 xff0c 有的则异常鲜明地提出 园区兴则产业兴 xff0c 园区强则经济强 的口号
  • 区块链技术赋能数字经济建设

    区块链技术是一项利用密码学算法 以去中心化方式集体维护一个可靠分布式数据库的新兴技术 它具有分布式 不可篡改 可追溯等特征 xff0c 能够弥补传统信用体系不足 防止信息篡改和伪造 节省全社会信用成本 xff0c 对金融 电子商务 智慧医疗
  • 启示录:日本涉谷未来之光TOD成功建设经验

    启示录 xff1a 日本涉谷未来之光TOD成功建设经验 数字TOD 在城市土地供应日益紧张 城市人口膨胀 公共交通快速发展的今天 xff0c 涩谷之光以复合业态功能叠加和选择重点业态精心打造 xff0c 并最大限度对接公共交通资源的开发策略
  • 夜间经济:激发新⼀轮消费潜力升级的新引擎

    数字TOD 夜间经济是现代城市业态之一 xff0c 指从当日下午6点到次日早上6点所包含的经济文化活动 xff0c 其业态囊括晚间购物 餐饮 旅游 娱乐 学习 影视 休闲等 夜间经济是现代城市经济的重要组成部分 xff0c 是促消费 稳就业
  • os模块和序列化

    os模块 和操作系统交互的模块 import os os makedirs dir1 dir2 创建多个文件夹 os mkdir dir3 创建一个文件夹 os removedirs 39 dir3 dir4 删除多个空文件夹 os rmd
  • 启示录:日本东京都二子玉川站TOD成功建设经验

    数字TOD 在成都两会期间印发的 关于实施幸福美好生活十大工程的报告 指出 xff0c 实施幸福美好生活十大工程 xff0c 将以满足人民群众日益增长的美好生活需要为根本目的 xff0c 从市民和企业反映最强烈 最迫切的领域着手 特别提出
  • 启示录:TOD分类及用地功能结构组成

    数字TOD 彼得 卡尔索普在 The Next American Metropolis 一书中描述了两类TOD 一类是城市TOD xff08 Urban TODs xff09 xff0c 位于区域性的干道的轻轨 重轨或快速的公交汽车的站点
  • 启示录:了解TOD模式的正确打开方式(一)

    数字TOD 提起TOD xff0c 到目前很多人可能还很懵懂 科普TOD xff0c 是笔者不可推卸的责任 所以一起回忆下电影 lt 流浪地球 gt 电影魔性台词先上 xff1a 34 北京第三区交通委提醒您 xff1a 道路千万条 xff
  • 启示录:了解TOD模式的正确打开方式(二)

    数字TOD 在中国的城市化进程中 xff0c 城市病 也在加速蔓延 xff0c 交通问题的加重以及土地资源的日益紧缺 xff0c 让生活在其中的人们饱受困扰 xff0c 这同时也引发了人们对城市发展模式的反思 为了实现城市的可持续化发展 x
  • 问题解决方案1-------------catkin_make编译时候的各种问题汇总

    文件移植和编译出现的问题汇总 我真实服了 xff0c 我几乎每一步都能遇到问题 xff0c 这是我catkin make时候遇到的新问题 xff1a 百度总结了一下 xff0c 文末附上链接 xff1a 1 Could not find a
  • CoreDNS介绍与使用

    介绍 在Kubernetes中DNS组件为整个集群提供DNS服务 xff0c 从而实现服务之间的访问 Kubernetes的DNS服务在Kubernetes中经历了3个阶段 xff1a 1 3版本之前skydns1 3 1 10版本kube
  • k8s日志收集

    日志收集介绍 日志收集的目的 xff1a 分布式日志数据统一收集 xff0c 实现集中式查询和管理故障排查安全信息和事件管理报表统计及展示功能 日志收集的价值 xff1a 日志查询 问题排查 故障恢复和故障自愈应用日志分析 xff0c 错误
  • k8s网络插件之Calico

    Calico简介 Calico官方文档 xff1a https projectcalico docs tigera io getting started kubernetes quickstart Calico是一套开源的网络和网络安全解决
  • ceph集群维护常用操作

    文章目录 通过套接字进行单机管理集群启停移除节点ceph配置文件存储池分类副本池IO纠删码池IO PG与PGPPG数量计算PG常见状态存储池管理创建存储池查看存储池删除存储池存储池配额 存储池可用参数存储池快照 通过套接字进行单机管理 可以
  • rbd块存储使用

    文章目录 rbd存储池镜像管理创建镜像查看镜像删除镜像镜像回收站功能镜像特性管理创建image时指定要启用的特性启用特性 xff08 针对已存在的image添加特性 xff09 禁用特性 xff08 针对已存在的image移除特性 xff0
  • 基于fo-dicom 的 Worklist & CStore 我的学习实现路线

    学习了三个周的DICOM协议 xff0c 主要进行了Worklist CStore应用测试 xff0c 下面总结一下过程中收获的心得 刚开始接触DICOM这个东西领导提出两个需求测试实现Worklist和DICOM文件下载 xff0c 后面