如何生成唯一的DICOM UID?

emm*_*123 3 dicom uid

我正在研究DICOM门控(PET)数据.
我想人工创建一个包含门控数据的DICOM图像系列.我正在询问SOPInstanceUID的增量值,它标记每个阶段或门中的每个图像切片.

它们对于门中的每个切片具有不同的值,并且在门之间递增,但是我无法找到如何选择该值的逻辑.

是否有关于这些值的写入位置和方式的参考?

Ami*_*shi 12

这个答案中解释了生成DICOM UID的多种算法及其缺点.

根据DICOM 规范,所有包含SOPInstanceUID的UID都应该是唯一的.这与您正在处理的数据(门控PET数据或其他)无关.

以下是规格:

2017a第5部分 - 数据结构和编码(9个唯一标识符(UID))

唯一标识符(UID)提供了唯一标识各种项目的功能.它们保证了多个国家,站点,供应商和设备的独特性.不管任何语义上下文如何,不同类别的对象,对象实例和信息实体可以在DICOM语篇范围内彼此区分.

UID由两部分组成:

  1. 组织根:
    UID的这一部分确保了组织之间的唯一性.有些服务提供商免费提供此服务.医疗联系是我所知道的.您可以联系他们免费获得.

  2. 后缀:
    此外,您应该以这样的方式生成后缀,以确保组织内部的唯一性.

以下是DICOM UID 的一般规则:

  1. 总长度必须<= 64个字符,包括止损
  2. 必须仅包含数字0-9和句号
  3. 每个数字"组件"(在停止之间)必须是有效且明确的整数,因此不得有前导零(除非整个组件为零)
  4. 必须保证是唯一的 - 这意味着:
    • 它必须来自您自己控制的适当官方根.
    • 它不能通过将数字(无论你认为组合特殊!)附加到其他人的UID来创建.
    • 特别是,不能将辅助捕获图像,KIN对象等的系列UID创建为Study UID的衍生物(除非您拥有该根!)
  5. 与上述相关,没有期望或要求图像的Study UID,Series UID和Instance UID应该从同一个根派生(虽然在实践中,系列UID和实例UID通常是,因为两者必须由内部生成生成图像的设备)
  6. 日期和时间对于生成UID很有用,但仅限于:
    • 每台计算机都有一个唯一的根(通常是您公司的UID根目录+机器特定的后缀,例如序列号
    • 如果UID可能以> 1 /秒的速度生成,则还应使用顺序计数器
    • 如果在多线程机器上,则需要线程ID或正确互锁的计数器,以防止同一应用程序中的2个应用程序或2个线程同时生成相同的UID.
    • 不要自己使用时间 - 太容易导致零前0 - 例如20060724.093017使用20060724093017

以下示例来自DICOM规范以生成UID.请注意,这是信息部分.

2017a第5部分 - 数据结构和编码(B创建私有定义的唯一标识符(参考信息))

B.1组织衍生的UID:

以下示例介绍了特定组织在定义其后缀以保证SOP实例UID的唯一性时所做出的特定选择.

"1.2.840.xxxxx.3.152.235.2.12.187636473"

在此示例中,根是:

  • 1识别ISO
  • 2标识ANSI成员正文
  • 840特定成员机构的国家代码(美国为ANSI)
  • xxxxx标识特定组织.(由ANSI分配)

在此示例中,后缀的前两个组件与设备的标识相关:

  • 3制造商定义的设备类型
  • 152制造商定义的序列号

后缀的其余四个组成部分与图像的识别有关:

  • 235研究编号
  • 2系列号
  • 12图像编号
  • 187636473图像采集的编码日期和时间戳

在此示例中,组织已选择这些组件以保证唯一性.其他组织可以选择完全不同的组件系列来唯一地识别其图像.例如,如果时间戳具有足够的精度以确保没有两个图像可能具有相同的日期和时间戳,则省略研究号,序列号和图像号可能是完全有效的.由于DICOM标准在创建组织派生的UID时允许的灵活性,实现不应该依赖于任何假设的UID结构,并且不应该尝试解析UID以提取其某些组件的语义.

规范中还提到了另一种方法

2017a第5部分 - 数据结构和编码(B创建私有定义的唯一标识符(参考信息))

B.2 UUID派生的UID:

UID可以从根"2.25"构造.后跟通用唯一标识符(UUID)的十进制表示.该十进制表示将128位UUID视为整数,因此最长可达39位(必须抑制前导零).
UUID派生的UID可能适用于动态创建的UID,例如SOP实例UID,但通常不适用于在应用软件设计期间确定的UID,例如私有SOP类或传输语法UID或实现类UID.