DICOM通讯(ACSE->DIMSE->Worklist)

article/2025/9/16 14:00:53

下文中的worklist交互的测试数据,请在资源中下载,需要wireshark将文件打开,并且加入过滤条件ip.addr == 192.168.2.193 and tcp.port == 104 ,并且选择dicom协议。

1 DICOM通讯概要介绍

       DICOM通讯和TCP IP的设计原理别无二致。从用户数据发送到网络上的数据的过程中,要经历多层协议处理,每经一层,就会加入用来描述当前层含义的数据字段,例如,我们熟悉的TCP层,会在用户的数据流前,加入目标端口,源端口,TCP层用来模拟链接通道的Sequence Number和Acknowlegment Number等的字段。

TCP IP协议栈示意图

        在DICOM通讯中,当数据通过TCP层后,数据流就进入了DICOM的会话层(ACSE),详细介绍可在标准第8章中。ACSE(Association Control Service Element),包含了7种类型的协议数据单元,分别是A-ASSOCIATE-RQ PDU(Protocol Data Units),A-ASSOCIATE-AC PDU,A-ASSOCIATE-RJ PDU,P-DATA-TF PDU,A-RELEASE-RQ PDU,A-RELEASE-RP PDU,A-ABORT PDU。这些服务数据单元构成了ACSE服务组。解析数据流时,当第一个字节的值是4的时候,就代表PDU是一个P-DATA类型,应当由DIMSE层来处理;相反,如果是其他值,就属于a-associate-rq, a-associate-rj, a-associate-ac, a-release-rq, a-release-rsp, a-abort6种类型PDU中的一种,直接在ACSE层内进行处理。具体的解析过程,第二章节中,以一个Modality Worklist(C-Find)的例子来介绍。

ACSE层数据流示意图

          当会话层接收到PDU,并且PDU的Type是4的时候,ACSE层协议,擦掉PDU头信息,将信息流变为PDVs(Presentation Data Values )后,将数据流交给表示层来解析。详细介绍,可参考第七章。在表示层DIMSE层中,提供了C-Find, C-Store, C-Move, C-Get, C-Echo, N-EVENT-REPORT, N-GET,N-SET, N-CREATE, N-DELETE, N-ACTION 11种类型的服务,这些服务成为了DIMSE服务组。

DIMSE层数据流示意图

 能标识当前PDV是什么类型,数据流中,有一个Flags标识,具体的含义见下图。DIMSE中消息由指令(Command)和数据集(Data Set)构成。

PDV类型含义

 2 Modality Worklist通讯

Worklist 消息交互过程

2.1 A-ASSOCIATE-req

A-ASSOCIATE-rq

       首先由SCU向SCP发起建立连接建立连接请求,此过程主要是要协商是否能够提供此服务,以及在实际通讯中所使用的传输语法,传输语法主要是指显式或者隐式VR以及大小尾编码方式;从上图中可以看出,在1标记处,能看到PDU的Type是0x01,是A-ASSOCIATE-req类型的PDU;SCU的AE Title是WLY(占用16个字节),SCP的AE Title是CONQUESTSRV1(占用16个字节);之后有32个字节的保留区域不存放任何信息;

A-ASSOCIATE-rq 字节流占位

具体的字节占位,请看下图中所示: 

A-ASSOCIATE-rq 二进制流占位

2.1.1 应用上下文

         应用上下文,大家可以不必关注,这个只是标识DICOM通讯类型的标识,所有通讯都是一致的;下图是应用上下文的二进制的占位

应用上下文二进制流占位

具体的二级制流如下

应用上下文二进制流

2.1.2 表示上下文

表示上下文二进制流占位
表示上下文二进制流

2.1.3 User Info

User Info 二进制流

通过对request的分析后,后续的PDU将只针对内部关键的信息进行说明。

2.2 A-ASSOCIATE-ac

A-ASSOCIATE-ac 二进制流

2.3 P-DATA-TF PDU (C-FIND-RQ)

       SCU发送端WLY向SCP服务端CONQUESTSRV1发送C-FIND的DIMSE消息,服务端解析当前的PDU,发现其类型是0x04。那么,后续的解析工作,就将PDU的头信息去掉后,交给DIMSE层来进行处理,详细的解释见下图,其中,橘黄色2位置,表示当前的PDV是一个命令集。在命令集中,请求的Message ID是1,注意,服务方要对当前的请求进行应答,必须也要携带此Message ID,来表示应答信息是对此请求进行的响应。

Worklist请求信息组成的PDU二进制流

 2.4 P-DATA-TF PDU (C-FIND-RSP)

   

C-FIND-RQ的命令集二级制流

   

     服务端接收到C-FIND-RQ后,将回复请求端信息。在回复命令信息中,Status是一个重要的概念,如果是Pending,表示对应客户端请求(回复数据流的Message ID Being Responsed To的值和请求端的Message ID的值相同)的回复数据流还未结束。具体的含义,可以在第4章中进行查询。下边给出Status的可能的值

C-FIND Response中的Status的值

 2.5  P-DATA-TF PDU 服务端返回相关查询信息

         

服务端回复客户端查询信息的数据集二级制信息流

 2.6 P-DATA-TF PDU ,PDV是命令集,标识对应MessageID=1的查询已结束

回复命令集二进制流

2.7  A-RELEASE request和  A-RELEASE response

A-RELEASE request
A-RELEASE response


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

相关文章

List..

List的使用 test.cpp #include <iostream> #include <list> #include <vector> using namespace std; namespace std {void test_list1(){//初始化list<int> lt1;//10个5list<int> lt2(10, 5);//自己的迭代器来初始化list<int> lt3(lt2.…

dicom worklist、pacs环境搭建

dcmtk的安装和使用 OFFIS DICOM 工具包 官网&#xff1a;dicom.offis.de - DICOM Software made by OFFIS - DCMTK - DICOM Toolkit windows版本下载地址&#xff1a;https://dicom.offis.de/download/dcmtk/dcmtk366/bin/dcmtk-3.6.6-win64-dynamic.zip 部分工具包使用方法…

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

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

WorkManager

WorkManager对比AsyncTask, ThreadPool的优势&#xff1a;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…