DICOM:DICOM3.0网络通信协议(续)

题记:

近一年来一直坚持周末写博客,整理工作和闲暇之余的点点滴滴。对于新知识点、新技术的涉猎会单独成文,对于与DICOM相关的知识统一放在了DICOM医学图像处理 专栏里,其实DICOM英文全称是Digital Imaging and Communications in Medicine,即医学数字成像和通信。这就表明DICOM标准至少应该分成图像处理和网路通信两大部分。之前也探讨过专栏名称 的问题,总而言之由于历史原因和自身懒惰一直没有抽出精力再开一个专栏,暂且如此吧。虽然没有重新开专栏,但是为了方便大家分类查阅,在2015新一年里我将按照标题前缀来简单划分一下类别:与图像处理相关的,诸如压缩/解压缩、字段增删改、图像数据处理,专栏博文标题继续以原本的DICOM医学图像处理: 为前缀,而与DICOM网络传输相关的将前缀更换为更简洁的DICOM:。

背景:

之前博文中专门梳理过DICOM标准中与网络传输相关的内容(详情参见:DICOM医学图像处理:全面解析DICOM3.0标准中的通讯服务模块 、DICOM医学图像处理:DICOM网路传输 ),近期在重新整理fo-dicom开发的PACS相关测试用例时,对fo-dicom和mDCM两个库进行了再一次比较,与此同时重新翻阅了DICOM3.0标准中的部分章节,发觉之前曾经忽略了其中的很多细节,特编写此文。一来对之前该系列博文的疏忽和BUG进行补充修复,二来加深一下DICOM网络传输的了解。PS: DICOM医学图像处理专栏中的每一篇文章成文之前,我都尽我所能查阅、翻译相关资料,编写、调试本地示例,以求文章的高质量,但毕竟个人时间和精力所限,博文中难免会有纰漏,建议阅读时请尽可能先浏览该主题的最新发表博文,因为那里往往会给出之前博文中的错误。另外如果发现问题欢迎留言或邮件交流。

DICOM网络传输:DIMSE:

DICOM3.0标准的第7部分标题为“Message Exchange”,从标题可以看出第7部分着重介绍DICOM协议中的网络传输部分。官方对于该部分的介绍如下:

This Part of the DICOM Standard specifies the DICOM Message Service Element (DIMSE) . The DIMSE defines an Application Service Element (both the service and protocol) used by peer DICOM Application Entities for the purpose of exchanging medical images and related information. The DIMSE provides its services by relying on the DIMSE protocol. The DIMSE protocol defines the encoding rules necessary to construct Messages. A Message is composed of a Command Set (defined in this part of the DICOM Standard) followed by a conditional Data Set (defined in PS 3.5).

按照之前DICOM医学图像处理:全面分析DICOM3.0标准中的通讯服务模块中的描述,将DIMSE归类为表示层,用于指出DICOM协议中提供的各项基础服务,也就是DIMSE Protocol中规定的 服务原语 (Service Primitives),为对等DICOM 应用实体(Application Entity)之间交流服务。如下图所示:

这里所谓的DICOM Application Entity,从实际来看就是我们现实生活中看到的使用DICOM标准的各种软件或应用,也可以指安装此软件或应用的设备;从概念 来看,就是由DICOM3.0标准中的第3部分(Information Object Definitions)、第4部分(Service Class Specifications)、第5部分(Data Structure and Encoding)、第6部分(Data Dictionary)共同定义出的模型。DIMSE中消息由指令(Command)和数据集(Data Set)构成,详细结构这里就不介绍了,有兴趣可翻阅DICOM3.0标准第7部分第6.3章节。这里我们主要介绍一下DIMSE协议规定的服务,为了更好地理解下文,在阅读之前请转到“知识点补充”一节,熟悉相关概念,了解彼此之间的区别,尤其是SCP(Service Class Provider)与DIMSE-Service-Provider、SCU(Service Class User)与DIMSE-Service-User。DIMSE消息服务元素支持对等DIMSE-Service-User之间交互,其中对DIMSE-Service-User双方分别扮演invoking DIMSE-service-user和performing DIMSE-service-user角色。这与我们常提到的SCU和SCP相似,一方触发(invoking),一方响应(performing)。虽然双方扮演的角色不同,但是名称中都带有user,意思就是说双方都是DIMSE协议的使用者,这就是与传统SCU、SCP容易混淆的地方。具体的区别可参见“知识点补充”一节。DIMSE提供的两种服务示意图如下:

DIMSE服务是在连接建立基础之上,即DIMSE层下方是DICOM Upper Layer Protocol层,关于DICOM Upper Layer协议的介绍在DICOM3.0标准中第8部分。

DICOM Upper Layer Service:

DICOM3.0标准第8部分标题为“Network Communication Support for Message Exchange”,该部分描述了DICOM应用实体间用于通信(Communicaton)的通用服务(generic services)。该类服务与OSI模型中的会话层、表示层和应用层相关,DICOM标准将其统一称之为UL Service,该服务是ACSE服务(Association Control Service Element)和OSI表示层服务的子集。刚刚上文提到的DICOM标准第7部分中详细介绍如何使用Upper Layer Service来完成DICOM应用实体间的交互。UL Service上层服务包括A-ASSOCIATE、A-RELEASE、A-ABORT、A-P-ABORT、P-DATA五种,如下图所示:

对于上图中的各种服务,DICOM3.0第8部分给出了详细定义,例如在对等DICOM实体间交互使用的各种参数。这里以A-ASSOCIATE为例简单介绍一下,如下图所示:

上图是A-ASSOCIATE服务的整个流程,,从图中可以更清晰、更直观的看出之前invoking DIMSE-service-user/performing DIMSE-service-user与SCU/SCP概念之间的区别,图中左右两侧的Requestor和Acceptor(左右两侧都是协议栈的上层N)相对于中间(中间是协议栈中的下层N-1)来说都是服务的使用者,即invoking DIMSE-service-user和performing DIMSE-service-user。而如果从服务实现角度来看一方是请求端(Requestor),一方是响应端(Acceptor),也就是DICOM中最常见到的SCU和SCP。

DICOM Upper Layer Protocol for TCP/IP:在那里,有我们特有的记忆,亲情之忆、

DICOM:DICOM3.0网络通信协议(续)

相关文章:

你感兴趣的文章:

标签云: