【发布时间】:2022-01-23 10:18:37
【问题描述】:
我发现这些用于表示数据值:
0 | 0 | 0 | 0 | 0 | 0 | last-or-not | command-or-dataset | **Some Message**
但我找不到 Some Message 部分。我想这部分包括C-Find,C-Get等。我怎么知道这个结构?
【问题讨论】:
标签: dicom
我发现这些用于表示数据值:
0 | 0 | 0 | 0 | 0 | 0 | last-or-not | command-or-dataset | **Some Message**
但我找不到 Some Message 部分。我想这部分包括C-Find,C-Get等。我怎么知道这个结构?
【问题讨论】:
标签: dicom
你从哪里得到这个?其实有点不一样。
你的例子应该是这样的
0 | 0 | 0 | 0 | 0 | 0 | last-or-not | command-or-data*set* | **Some Message**
所以“command-or-dataset”标志表明后面的字节是编码一个command(定义在PS3.7)还是一个dataset定义PS3.3 或 3.4)。
例如对于 DICOM 查询,在 PS3.7 第 9.1.2.1 章中定义了 C-FIND 命令。在 C-FIND 中,查询条件是表 9.1-2 中命令(“标识符”)的一部分。标识符的形成方式及其所有语义是 PS3.4、C.4.1 中定义的查询/检索服务类的主题。
对于传输对象,有一个 C-STORE 命令,也在 PS3.7(第 9.1.1.1 章)中定义。 Data-Set 也是 C-STORE 命令的一部分,其内容取决于数据类型(SOP 类)。这称为信息对象定义 (IOD),并在 PS3.3 中定义。 Storage 的协议也在 PS3.4(附件 B)中定义 但是,PDV 的长度限制仅允许将整个对象编码在单个 PDV 中,并且需要拆分。对于以下 PDV,将不存在任何命令集,而仅存在数据集的片段。在这种情况下,“命令或数据集”位必须设置为 0。
我希望我能说清楚一点。在刚开始学习 DICOM 的时候,要知道所有的术语和相互关系是有点困难的。
编码
从逻辑上讲,命令和数据集以相同的方式编码。数据字典(第 6 部分)是所有可能属性的完整列表,命令属性和数据集属性之间的主要区别在于命令属性的组号为 0,而数据集属性的组号为“除 0 之外的任何偶数”。
对于每个属性,数据字典为您提供值表示 (VR),需要考虑对值进行编码。例如。 “PN”表示患者姓名 “UI”表示唯一标识符等。 VR 在 PS3.5 第 6.2 章中定义。 那么属性的编码就是
group | element | (VR) | length (always even) | value
如何将其转换为二进制级别取决于关联协商期间为服务商定的传输语法 (TS)。出于这个原因,“VR”被括在上面的括号中 - 如果它必须/必须不存在,这取决于它是隐式还是显式 TS。
在以二进制形式对代码集或数据集进行编码时,还需要考虑更多事项(字节序、序列编码)。基本上关于它的一切都在 PS3.5 的各个章节中进行了描述
【讨论】: