DICOM值类型
为了更好的描述医疗相关的数据,DICOM 标准中定义了 27 个基本数据类型,就是所谓的值表现(VR),封装了所有可能的临床数据类型。DICOM中的每一个都得符合其中的一个。每个VR 有他自己两个字母的缩写。
类型
VR主要包括以下的类型
字符串
使用起来较为简单,用来存储文本的类型,需要注意字符长度的限制。
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Code String 代码字符串 | CS | 一个字符串,开头、结尾可以有空格,比如“CD123_4” | 大写字母,0-9,空格, 以及下划线字符 | 最多16 |
Short String 短字符串 | SH | 短字符串,比如:电话号码,ID 等 | 最多16 | |
Long String 长字符串 | LO | 一个字符串,开头、结尾可以有空格。比如“DICOM” | 最多64 | |
Short Text 短文本 | ST | 可能包含一个或多个段落的字符串 | 最多1024 | |
Long Text 长文本 | LT | 但可以更长。 | 最多10240 | |
Unlimited Text 无限制文本 | UT | 与LT类似,不限制长度 | 最多2^32–2 |
设备命名、人和实例
AE本质上是DICOM设备和程序的名字,用来唯一区分它们(在你的PACS网络中,绝不允许存在两个一样的AE)。
UID是用来对唯一标识进行编码的,唯一标识主要是用来标识特定DICOM数据实例的,
当你从一个DICOM装置向另一个复制DICOM检查时,第二个装置需要修改该检查UID(Study UID)属性值,这主要是为了表示现在操作的是同一个检查的不同实例(其实就是新建了一个除UID以外信息完全一样的新检查)。在第二个检查实例中做任何改变(修改检查图像等)都不会和原始图像搞混了
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Application Entity 应用实体 | AE | 设备的名称的字符串,开头、结尾可以有空格 | 大写字母,0-9,空格, 以及下划线字符 | 最多16 |
Person Name 病人姓名 | PN | 姓名,通过^分隔 | 最多64 | |
Unique Identifier (UID) 唯一标识符 | UI | 唯一标识符,如“1.2.840.10008.1.1” | 0-9 和半角句号(.) | 最多64 |
这里把姓名作为一个类型是因为病人的字符串比较特殊,用^分隔的。
日期和时间
建议使用合并后的日期时间DT类型代替DA和TM,不支持时区
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Date 日期 | DA | 日期字符串, YYYYMMDD | 0-9 | 8 |
Time 时间 | TM | 时间字符串,HHMMSS.FRAC,如222300.00 | 0-9 . | 最多16 |
Date Time 日期时间 | DT | 日期时间字符串,YYYYMMDDHHMMSS.FFFFFF | 0-9,加号,减号和半 角句号 | 最多26 |
Age String 年龄字符串 | ST | nnnD, nnnW, nnnM, nnnY。如018D表示18天 | 0-9 、D、W、M、Y | 4 |
文本格式的数字
以字符串形式存储
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Integer String 整型字符串 | IS | 整形数字的字符如:-12345 | 0-9 、+、- | 最多12 |
Decimal String 小数字符串 | DS | 定点小数和浮点小数如:123.34, -5.0e3 | 0-9 、+、-、E、e和半角句号 | 最多16 |
二进制格式的数字
以二进制形式存储,对于字节相关的数据,会区分大端,小端表示法。不同的平台可能会不同。DICOM中使用小端表示法(Little Endian order)
- SS、 US、SL、UL、FL、FD用来表示单个数字。
- OB、 OW、OF则通常用在长数字串上,用来表示如图像这种具有多个字节的数据
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Signed Short 有符号短型 | SS | 符号型二进制整数,长度16比特 | 大写字母,0-9,空格, 以及下划线字符 | 最多2 |
Unsigned Short 无符号短型 | US | 无符号型二进制整数,长度16比特 | 最多2 | |
Signed Long 有符号长型 | SL | 有符号型二进制整数 | 最多4 | |
Unsigned Long 无符号长型 | UL | 无符号型二进制整数,长度32比特 | 最多4 | |
Attribute Tag 属性标签 | AT | 16比特无符号整数的有序对,数据元素的标签 | 最多4 | |
Floating Point Single 单精度浮点 | FL | 单精度二进制浮点数字 | 最多4 | |
Floating Point Double 双精度浮点 | FD | 双精度二进制浮点数字 | 最多8 | |
Other Byte String 其他字节字符串 | OB | 字节的字符串(表示没有在VR中定义的内容) | ||
Other Word String 其他单词字符串 | OW | 16比特(2字节)单词字符串 | ||
Other Float String 其他单词字符串 | OF | 32比特(4字节)浮点单词字符串 |
其他
SQ 是对数据集序列的编码,每个数据集可能包含多个数据属性,将许多相似元素打包成一个单一数据块。
UN 编码未知值。用在那些无法匹配26个VR的值上。供厂商特定(私有)数据使用,一般不建议使用。
类型 | 缩写 | 描述 | 允许的字符 | 字符长度 |
---|---|---|---|---|
Sequence of Items 条目序列 | SQ | 条目的序列 | ||
Unknown 未知 | UN | 字节的字符串,其中内容的编码方式是未知的 |
偶数长度
所有 DICOM 数据元素都应该为偶数长度,他们必须是偶数字符(文本)或字节(二进制数字)。为了保证这一点,DICOM 在奇数大小的字符串(如短文本,ST)后追加空格;或者在奇数二进制数字串后面追加一个空 NULL 的字节,这样 就能保证长度为偶数了。比如,姓名为“Smith^Joe”在DICOM 在内部保存为 “Smith^Joe ”,尾部增加的空格使整个字串长度变为 10