学习了三个周的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的学习研究告一段落

基于fo-dicom 的 Worklist CStore 我的学习实现路线相关推荐

  1. 智能合约隐私计算之基于FO承诺的零知识范围证明

    本文首发公众号:区块链之美,关注公众号后可免费阅读!区块链之美 致力于区块链技术研究,传播区块链技术和解决方案.区块链应用落地.区块链行业动态等. 至此,已经介绍了改进的Paillier加法同态加密, ...

  2. 基于人脸的常见表情识别(1)——深度学习基础知识

    基于人脸的常见表情识别(1)--深度学习基础知识 神经网络 1. 感知机 2. 多层感知机与反向传播 卷积神经网络 1. 全连接神经网络的2大缺陷 2. 卷积神经网络的崛起 卷积神经网络的基本网络层 ...

  3. 《强化学习周刊》第33期:UdeM | 基于不确定性估计的样本高效深度强化学习

    No.33 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...

  4. 基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

    从这篇博客,我会一步步的为大家讲解,easyui框架中最常用的一个控件datagrid.在使用easyui框架时,datagrid是使用最多的控件,它不仅好用,关键是实用. 我为大家建立一个博客更新的 ...

  5. 论文浅尝 | ​ADRL:一个基于注意力机制的知识图谱深度强化学习框架

    论文笔记整理:谭亦鸣,东南大学博士. 来源:Knowledge-Based Systems 197 (2020) 105910 链接:https://www.sciencedirect.com/sci ...

  6. 【论文】基于层次化注意力图网络和多视角学习的商品推荐(附论文下载链接)...

    编者按:在电子商务的发展中,个性化推荐技术对于提升平台运营水平.商户营收以及用户购物体验都发挥着至关重要的作用.精进这一技术的关键在于准确有效的用户和商品表示与交互.微软亚洲研究院在 EMNLP 20 ...

  7. 基于自动图像分割算法和扩展数据集深度学习的经济作物病害识别

    基于自动图像分割算法和扩展数据集深度学习的经济作物病害识别 1.作物病害识别出现的问题 实际应用中作物图像的复杂背景信息和训练数据不足会导致深度学习的错误识别. 2.研究内容 提出了一种基于自动图像分 ...

  8. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习

    异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习 参考文章: (1)异常检测-基于孤立森林算法Isolation-based Anomaly ...

  9. [2016][34]基于大数据的牛顿(Knewton)平台自适应学习机制分析

    自适应学习平台的关键技术与典型案例 1. 概述 2. Knewton平台 2.1 基础架构 2.1.1 数据收集与处理组件 2.1.2 推理与评估组件 2.1.3 个性化服务组件 2.2 数据模型 2 ...

  10. 干货!基于元消歧的偏多标记学习

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 在偏多标记学习中,每一个示例与一个候选标记集相关,该候选集既包含多个真实标记,也包含其它噪声标记.为了解决偏多标记学习问题,现有方法往往 ...

最新文章

  1. [librosa]0.8版本后不再支持write_wav
  2. Jquery学习笔记-获取select标签已经选中的值
  3. PHP unset()函数销毁变量 但没有实现释放内存
  4. 统计学cv值是什么意思_电源的回馈控制回路有什么作用?
  5. 四维空间和五维空间N维空间遐想
  6. 【开始研究Community Server,转贴一点东西】Community Server资料收集
  7. 叮——这有一打让你666的测试终极资料包,请查收!
  8. 黄金三月,技术自检 | 作为测试人必备的10项 Linux 技能
  9. 2194. Excel 表中某个范围内的单元格
  10. [转]Mysql FROM_UNIXTIME as UTC
  11. KMP算法 C#实现 字符串查找简单实现
  12. 淘淘商城第105讲——购物车实现分析及工程搭建
  13. html查看蛋白质,若干常用蛋白质结构与位点分析网站
  14. 电脑如何去掉u盘写保护的状态
  15. 个人开发者上架Android应用市场感受
  16. 51 nod 1682 中位数计数
  17. NLP Prompting for Text Classification(1)
  18. Couldn‘t store trigger ‘‘ for ‘‘ job:Couldn‘t retrieve job because the BLOB couldn‘t be deserialized
  19. 自动柜员机是不是微型计算机,微型计算机基础知识.pptx
  20. Android 扫码登录案例

热门文章

  1. 德尔福和Mobileye强强联手,将展示双方共同开发的CSLP系统
  2. linux 脚本加密工具下载,linux truecrypt 加密工具
  3. FBI也没辙?超强加密软件TrueCrypt全教程
  4. 天猫轮播代码一秒美工万能淘宝轮播全屏轮播代码教程分享店铺装修全屏代码海报热点1920 居中显示圆点轮播海报
  5. 著名的软件项目开发和生命周期管理软件MKS.Code.Integrity.Enterprise.Edition.v12
  6. 6.深入浅出:差分放大电路——参考《模拟电子技术基础》清华大学华成英主讲
  7. SQL Server基础知识
  8. Dsoframer注册方法
  9. 备考OCJP认证知识点总结(五)
  10. MATLAB破解版解决帮助文档需要许可证的问题