如何生成唯一的DICOM UID



我正在处理DICOM门控(PET)数据
我想人工创建一个DICOM图像系列,其中包括门控数据。我正在查询SOPInstanceUID的增量值,它标记每个相位或门中的每个图像切片。

对于一个门中的每个切片,它们都有不同的值,并且在门之间递增,但我找不出如何选择这个值的逻辑。

是否有关于这些值在何处以及如何书写的参考?

在这个答案中解释了生成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不得创建为研究UID的衍生物(除非您拥有该根!)
  5. 与上述内容相关,不期望或要求图像的研究UID、序列UID和实例UID应从同一根派生(尽管在实践中,序列UID和示例UID通常是,因为两者都必须由生成图像的设备内部生成)
  6. 日期和时间可用于生成UID,但前提是:
    • 每台机器都有一个唯一的根(通常是您公司的UID根+机器特定的后缀,如序列号
    • 如果可以以每秒>1的速度生成UID,则还应使用顺序计数器
    • 如果在多线程机器上,则需要线程ID或适当互锁的计数器来防止两个应用程序或同一应用程序中的两个线程同时生成相同的UID
    • 不要单独使用时间-很容易以0开头结束-例如20060724.093017使用20060724093017

在规范中也可以找到相同的内容。


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

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

B.1组织派生UID:

以下示例介绍了特定组织定义后缀以保证SOP的唯一性实例UID。

"1.2.840.xxxxxx3.152.235.2.12.18736473">

在这个例子中,根是:

  • 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。

最新更新