Initial commit
This commit is contained in:
979
dist/dicom2pacs.app/Contents/Resources/lib/python3.13/pydicom/uid.py
vendored
Executable file
979
dist/dicom2pacs.app/Contents/Resources/lib/python3.13/pydicom/uid.py
vendored
Executable file
@@ -0,0 +1,979 @@
|
||||
# Copyright 2008-2022 pydicom authors. See LICENSE file for details.
|
||||
"""Functions for handling DICOM unique identifiers (UIDs)"""
|
||||
|
||||
import hashlib
|
||||
import re
|
||||
import secrets
|
||||
import uuid
|
||||
|
||||
from pydicom import config
|
||||
from pydicom._uid_dict import UID_dictionary
|
||||
from pydicom.config import disable_value_validation
|
||||
from pydicom.valuerep import STR_VR_REGEXES, validate_value
|
||||
|
||||
|
||||
class UID(str):
|
||||
"""Human friendly UIDs as a Python :class:`str` subclass.
|
||||
|
||||
**Private Transfer Syntaxes**
|
||||
|
||||
If creating a private transfer syntax UID, then you must also use
|
||||
:meth:`~pydicom.UID.set_private_encoding` to set the corresponding
|
||||
dataset encoding.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
General usage::
|
||||
|
||||
>>> from pydicom.uid import UID
|
||||
>>> uid = UID('1.2.840.10008.1.2.4.50')
|
||||
>>> uid
|
||||
'1.2.840.10008.1.2.4.50'
|
||||
>>> uid.is_implicit_VR
|
||||
False
|
||||
>>> uid.is_little_endian
|
||||
True
|
||||
>>> uid.is_transfer_syntax
|
||||
True
|
||||
>>> uid.name
|
||||
'JPEG Baseline (Process 1)'
|
||||
>>> uid.keyword
|
||||
JPEGBaseline8Bit
|
||||
|
||||
Setting the encoding to explicit VR little endian for a private transfer
|
||||
syntax::
|
||||
|
||||
>>> uid = UID("1.2.3.4")
|
||||
>>> uid.set_private_encoding(False, True)
|
||||
|
||||
"""
|
||||
|
||||
_PRIVATE_TS_ENCODING: tuple[bool, bool]
|
||||
|
||||
def __new__(
|
||||
cls: type["UID"], val: str, validation_mode: int | None = None
|
||||
) -> "UID":
|
||||
"""Setup new instance of the class.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
val : str or pydicom.uid.UID
|
||||
The UID string to use to create the UID object.
|
||||
validation_mode : int
|
||||
Defines if values are validated and how validation errors are
|
||||
handled.
|
||||
|
||||
Returns
|
||||
-------
|
||||
pydicom.uid.UID
|
||||
The UID object.
|
||||
"""
|
||||
if isinstance(val, str):
|
||||
if validation_mode is None:
|
||||
validation_mode = config.settings.reading_validation_mode
|
||||
validate_value("UI", val, validation_mode)
|
||||
|
||||
uid = super().__new__(cls, val.strip())
|
||||
if hasattr(val, "_PRIVATE_TS_ENCODING"):
|
||||
uid._PRIVATE_TS_ENCODING = val._PRIVATE_TS_ENCODING
|
||||
|
||||
return uid
|
||||
|
||||
raise TypeError("A UID must be created from a string")
|
||||
|
||||
@property
|
||||
def is_implicit_VR(self) -> bool:
|
||||
"""Return ``True`` if an implicit VR transfer syntax UID."""
|
||||
if self.is_transfer_syntax:
|
||||
if not self.is_private:
|
||||
# Implicit VR Little Endian
|
||||
if self == "1.2.840.10008.1.2":
|
||||
return True
|
||||
|
||||
# Explicit VR Little Endian
|
||||
# Explicit VR Big Endian
|
||||
# Deflated Explicit VR Little Endian
|
||||
# All encapsulated transfer syntaxes
|
||||
return False
|
||||
|
||||
return self._PRIVATE_TS_ENCODING[0]
|
||||
|
||||
raise ValueError("UID is not a transfer syntax.")
|
||||
|
||||
@property
|
||||
def is_little_endian(self) -> bool:
|
||||
"""Return ``True`` if a little endian transfer syntax UID."""
|
||||
if self.is_transfer_syntax:
|
||||
if not self.is_private:
|
||||
# Explicit VR Big Endian
|
||||
if self == "1.2.840.10008.1.2.2":
|
||||
return False
|
||||
|
||||
# Explicit VR Little Endian
|
||||
# Implicit VR Little Endian
|
||||
# Deflated Explicit VR Little Endian
|
||||
# All encapsulated transfer syntaxes
|
||||
return True
|
||||
|
||||
return self._PRIVATE_TS_ENCODING[1]
|
||||
|
||||
raise ValueError("UID is not a transfer syntax.")
|
||||
|
||||
@property
|
||||
def is_transfer_syntax(self) -> bool:
|
||||
"""Return ``True`` if a transfer syntax UID."""
|
||||
if not self.is_private:
|
||||
return self.type == "Transfer Syntax"
|
||||
|
||||
return hasattr(self, "_PRIVATE_TS_ENCODING")
|
||||
|
||||
@property
|
||||
def is_deflated(self) -> bool:
|
||||
"""Return ``True`` if a deflated transfer syntax UID."""
|
||||
if self.is_transfer_syntax:
|
||||
# Deflated Explicit VR Little Endian
|
||||
if self == "1.2.840.10008.1.2.1.99":
|
||||
return True
|
||||
|
||||
# Explicit VR Little Endian
|
||||
# Implicit VR Little Endian
|
||||
# Explicit VR Big Endian
|
||||
# All encapsulated transfer syntaxes
|
||||
return False
|
||||
|
||||
raise ValueError("UID is not a transfer syntax.")
|
||||
|
||||
@property
|
||||
def is_encapsulated(self) -> bool:
|
||||
"""Return ``True`` if an encasulated transfer syntax UID."""
|
||||
return self.is_compressed
|
||||
|
||||
@property
|
||||
def is_compressed(self) -> bool:
|
||||
"""Return ``True`` if a compressed transfer syntax UID."""
|
||||
if self.is_transfer_syntax:
|
||||
# Explicit VR Little Endian
|
||||
# Implicit VR Little Endian
|
||||
# Explicit VR Big Endian
|
||||
# Deflated Explicit VR Little Endian
|
||||
if self in [
|
||||
"1.2.840.10008.1.2",
|
||||
"1.2.840.10008.1.2.1",
|
||||
"1.2.840.10008.1.2.2",
|
||||
"1.2.840.10008.1.2.1.99",
|
||||
]:
|
||||
return False
|
||||
|
||||
# All encapsulated transfer syntaxes
|
||||
return True
|
||||
|
||||
raise ValueError("UID is not a transfer syntax.")
|
||||
|
||||
@property
|
||||
def keyword(self) -> str:
|
||||
"""Return the UID keyword from the UID dictionary."""
|
||||
if str(self) in UID_dictionary:
|
||||
return UID_dictionary[self][4]
|
||||
|
||||
return ""
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
"""Return the UID name from the UID dictionary."""
|
||||
uid_string = str(self)
|
||||
if uid_string in UID_dictionary:
|
||||
return UID_dictionary[self][0]
|
||||
|
||||
return uid_string
|
||||
|
||||
@property
|
||||
def type(self) -> str:
|
||||
"""Return the UID type from the UID dictionary."""
|
||||
if str(self) in UID_dictionary:
|
||||
return UID_dictionary[self][1]
|
||||
|
||||
return ""
|
||||
|
||||
@property
|
||||
def info(self) -> str:
|
||||
"""Return the UID info from the UID dictionary."""
|
||||
if str(self) in UID_dictionary:
|
||||
return UID_dictionary[self][2]
|
||||
|
||||
return ""
|
||||
|
||||
@property
|
||||
def is_retired(self) -> bool:
|
||||
"""Return ``True`` if the UID is retired, ``False`` otherwise or if
|
||||
private.
|
||||
"""
|
||||
if str(self) in UID_dictionary:
|
||||
return bool(UID_dictionary[self][3])
|
||||
|
||||
return False
|
||||
|
||||
@property
|
||||
def is_private(self) -> bool:
|
||||
"""Return ``True`` if the UID isn't an officially registered DICOM
|
||||
UID.
|
||||
"""
|
||||
return self[:14] != "1.2.840.10008."
|
||||
|
||||
@property
|
||||
def is_valid(self) -> bool:
|
||||
"""Return ``True`` if `self` is a valid UID, ``False`` otherwise."""
|
||||
if len(self) <= 64 and re.match(RE_VALID_UID, self):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def set_private_encoding(self, implicit_vr: bool, little_endian: bool) -> None:
|
||||
"""Set the corresponding dataset encoding for a privately defined transfer
|
||||
syntax.
|
||||
|
||||
.. versionadded:: 3.0
|
||||
|
||||
Parameters
|
||||
----------
|
||||
implicit_vr : bool
|
||||
``True`` if the corresponding dataset encoding uses implicit VR,
|
||||
``False`` for explicit VR.
|
||||
little_endian : bool
|
||||
``True`` if the corresponding dataset encoding uses little endian
|
||||
byte order, ``False`` for big endian byte order.
|
||||
"""
|
||||
self._PRIVATE_TS_ENCODING = (implicit_vr, little_endian)
|
||||
|
||||
|
||||
# Many thanks to the Medical Connections for offering free
|
||||
# valid UIDs (https://www.medicalconnections.co.uk/FreeUID.html)
|
||||
# Their service was used to obtain the following root UID for pydicom:
|
||||
PYDICOM_ROOT_UID = "1.2.826.0.1.3680043.8.498."
|
||||
"""pydicom's root UID ``'1.2.826.0.1.3680043.8.498.'``"""
|
||||
PYDICOM_IMPLEMENTATION_UID = UID(f"{PYDICOM_ROOT_UID}1")
|
||||
"""
|
||||
pydicom's (0002,0012) *Implementation Class UID*
|
||||
``'1.2.826.0.1.3680043.8.498.1'``
|
||||
"""
|
||||
|
||||
# Regexes for valid UIDs and valid UID prefixes
|
||||
RE_VALID_UID = STR_VR_REGEXES["UI"]
|
||||
"""Regex for a valid UID"""
|
||||
RE_VALID_UID_PREFIX = re.compile(r"^(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*\.$")
|
||||
"""Regex for a valid UID prefix"""
|
||||
|
||||
|
||||
with disable_value_validation():
|
||||
# Pre-defined Transfer Syntax UIDs (for convenience)
|
||||
ImplicitVRLittleEndian = UID("1.2.840.10008.1.2")
|
||||
"""1.2.840.10008.1.2"""
|
||||
ExplicitVRLittleEndian = UID("1.2.840.10008.1.2.1")
|
||||
"""1.2.840.10008.1.2.1"""
|
||||
DeflatedExplicitVRLittleEndian = UID("1.2.840.10008.1.2.1.99")
|
||||
"""1.2.840.10008.1.2.1.99"""
|
||||
ExplicitVRBigEndian = UID("1.2.840.10008.1.2.2")
|
||||
"""1.2.840.10008.1.2.2"""
|
||||
JPEGBaseline8Bit = UID("1.2.840.10008.1.2.4.50")
|
||||
"""1.2.840.10008.1.2.4.50"""
|
||||
JPEGExtended12Bit = UID("1.2.840.10008.1.2.4.51")
|
||||
"""1.2.840.10008.1.2.4.51"""
|
||||
JPEGLossless = UID("1.2.840.10008.1.2.4.57")
|
||||
"""1.2.840.10008.1.2.4.57"""
|
||||
JPEGLosslessSV1 = UID("1.2.840.10008.1.2.4.70")
|
||||
"""1.2.840.10008.1.2.4.70"""
|
||||
JPEGLSLossless = UID("1.2.840.10008.1.2.4.80")
|
||||
"""1.2.840.10008.1.2.4.80"""
|
||||
JPEGLSNearLossless = UID("1.2.840.10008.1.2.4.81")
|
||||
"""1.2.840.10008.1.2.4.81"""
|
||||
JPEG2000Lossless = UID("1.2.840.10008.1.2.4.90")
|
||||
"""1.2.840.10008.1.2.4.90"""
|
||||
JPEG2000 = UID("1.2.840.10008.1.2.4.91")
|
||||
"""1.2.840.10008.1.2.4.91"""
|
||||
JPEG2000MCLossless = UID("1.2.840.10008.1.2.4.92")
|
||||
"""1.2.840.10008.1.2.4.92"""
|
||||
JPEG2000MC = UID("1.2.840.10008.1.2.4.93")
|
||||
"""1.2.840.10008.1.2.4.93"""
|
||||
MPEG2MPML = UID("1.2.840.10008.1.2.4.100")
|
||||
"""1.2.840.10008.1.2.4.100"""
|
||||
MPEG2MPMLF = UID("1.2.840.10008.1.2.4.100.1")
|
||||
"""1.2.840.10008.1.2.4.100.1"""
|
||||
MPEG2MPHL = UID("1.2.840.10008.1.2.4.101")
|
||||
"""1.2.840.10008.1.2.4.101"""
|
||||
MPEG2MPHLF = UID("1.2.840.10008.1.2.4.101.1")
|
||||
"""1.2.840.10008.1.2.4.101.1"""
|
||||
MPEG4HP41 = UID("1.2.840.10008.1.2.4.102")
|
||||
"""1.2.840.10008.1.2.4.102"""
|
||||
MPEG4HP41F = UID("1.2.840.10008.1.2.4.102.1")
|
||||
"""1.2.840.10008.1.2.4.102.1"""
|
||||
MPEG4HP41BD = UID("1.2.840.10008.1.2.4.103")
|
||||
"""1.2.840.10008.1.2.4.103"""
|
||||
MPEG4HP41BDF = UID("1.2.840.10008.1.2.4.103.1")
|
||||
"""1.2.840.10008.1.2.4.103.1"""
|
||||
MPEG4HP422D = UID("1.2.840.10008.1.2.4.104")
|
||||
"""1.2.840.10008.1.2.4.104"""
|
||||
MPEG4HP422DF = UID("1.2.840.10008.1.2.4.104.1")
|
||||
"""1.2.840.10008.1.2.4.104.1"""
|
||||
MPEG4HP423D = UID("1.2.840.10008.1.2.4.105")
|
||||
"""1.2.840.10008.1.2.4.105"""
|
||||
MPEG4HP423DF = UID("1.2.840.10008.1.2.4.105.1")
|
||||
"""1.2.840.10008.1.2.4.105.1"""
|
||||
MPEG4HP42STEREO = UID("1.2.840.10008.1.2.4.106")
|
||||
"""1.2.840.10008.1.2.4.106"""
|
||||
MPEG4HP42STEREOF = UID("1.2.840.10008.1.2.4.106.1")
|
||||
"""1.2.840.10008.1.2.4.106.1"""
|
||||
HEVCMP51 = UID("1.2.840.10008.1.2.4.107")
|
||||
"""1.2.840.10008.1.2.4.107"""
|
||||
HEVCM10P51 = UID("1.2.840.10008.1.2.4.108")
|
||||
"""1.2.840.10008.1.2.4.108"""
|
||||
HTJ2KLossless = UID("1.2.840.10008.1.2.4.201")
|
||||
"""1.2.840.10008.1.2.4.201"""
|
||||
HTJ2KLosslessRPCL = UID("1.2.840.10008.1.2.4.202")
|
||||
"""1.2.840.10008.1.2.4.202"""
|
||||
HTJ2K = UID("1.2.840.10008.1.2.4.203")
|
||||
"""1.2.840.10008.1.2.4.203"""
|
||||
JPIPHTJ2KReferenced = UID("1.2.840.10008.1.2.4.204")
|
||||
"""1.2.840.10008.1.2.4.204"""
|
||||
JPIPHTJ2KReferencedDeflate = UID("1.2.840.10008.1.2.4.205")
|
||||
"""1.2.840.10008.1.2.4.205"""
|
||||
RLELossless = UID("1.2.840.10008.1.2.5")
|
||||
"""1.2.840.10008.1.2.5"""
|
||||
SMPTEST211020UncompressedProgressiveActiveVideo = UID("1.2.840.10008.1.2.7.1")
|
||||
"""1.2.840.10008.1.2.7.1"""
|
||||
SMPTEST211020UncompressedInterlacedActiveVideo = UID("1.2.840.10008.1.2.7.2")
|
||||
"""1.2.840.10008.1.2.7.2"""
|
||||
SMPTEST211030PCMDigitalAudio = UID("1.2.840.10008.1.2.7.3")
|
||||
"""1.2.840.10008.1.2.7.3"""
|
||||
|
||||
AllTransferSyntaxes = [
|
||||
ImplicitVRLittleEndian,
|
||||
ExplicitVRLittleEndian,
|
||||
DeflatedExplicitVRLittleEndian,
|
||||
ExplicitVRBigEndian,
|
||||
JPEGBaseline8Bit,
|
||||
JPEGExtended12Bit,
|
||||
JPEGLossless,
|
||||
JPEGLosslessSV1,
|
||||
JPEGLSLossless,
|
||||
JPEGLSNearLossless,
|
||||
JPEG2000Lossless,
|
||||
JPEG2000,
|
||||
JPEG2000MCLossless,
|
||||
JPEG2000MC,
|
||||
MPEG2MPML,
|
||||
MPEG2MPMLF,
|
||||
MPEG2MPHL,
|
||||
MPEG2MPHLF,
|
||||
MPEG4HP41,
|
||||
MPEG4HP41F,
|
||||
MPEG4HP41BD,
|
||||
MPEG4HP41BDF,
|
||||
MPEG4HP422D,
|
||||
MPEG4HP422DF,
|
||||
MPEG4HP423D,
|
||||
MPEG4HP423DF,
|
||||
MPEG4HP42STEREO,
|
||||
MPEG4HP42STEREOF,
|
||||
HEVCMP51,
|
||||
HEVCM10P51,
|
||||
HTJ2KLossless,
|
||||
HTJ2KLosslessRPCL,
|
||||
HTJ2K,
|
||||
JPIPHTJ2KReferenced,
|
||||
JPIPHTJ2KReferencedDeflate,
|
||||
RLELossless,
|
||||
SMPTEST211020UncompressedProgressiveActiveVideo,
|
||||
SMPTEST211020UncompressedInterlacedActiveVideo,
|
||||
SMPTEST211030PCMDigitalAudio,
|
||||
]
|
||||
"""All non-retired transfer syntaxes and *Explicit VR Big Endian*."""
|
||||
|
||||
JPEGTransferSyntaxes = [
|
||||
JPEGBaseline8Bit,
|
||||
JPEGExtended12Bit,
|
||||
JPEGLossless,
|
||||
JPEGLosslessSV1,
|
||||
]
|
||||
"""JPEG (ISO/IEC 10918-1) transfer syntaxes"""
|
||||
|
||||
JPEGLSTransferSyntaxes = [JPEGLSLossless, JPEGLSNearLossless]
|
||||
"""JPEG-LS (ISO/IEC 14495-1) transfer syntaxes."""
|
||||
|
||||
JPEG2000TransferSyntaxes = [
|
||||
JPEG2000Lossless,
|
||||
JPEG2000,
|
||||
JPEG2000MCLossless,
|
||||
JPEG2000MC,
|
||||
HTJ2KLossless,
|
||||
HTJ2KLosslessRPCL,
|
||||
HTJ2K,
|
||||
]
|
||||
"""JPEG 2000 (ISO/IEC 15444-1) transfer syntaxes."""
|
||||
|
||||
MPEGTransferSyntaxes = [
|
||||
MPEG2MPML,
|
||||
MPEG2MPMLF,
|
||||
MPEG2MPHL,
|
||||
MPEG2MPHLF,
|
||||
MPEG4HP41,
|
||||
MPEG4HP41F,
|
||||
MPEG4HP41BD,
|
||||
MPEG4HP41BDF,
|
||||
MPEG4HP422D,
|
||||
MPEG4HP422DF,
|
||||
MPEG4HP423D,
|
||||
MPEG4HP423DF,
|
||||
MPEG4HP42STEREO,
|
||||
MPEG4HP42STEREOF,
|
||||
HEVCMP51,
|
||||
HEVCM10P51,
|
||||
]
|
||||
"""MPEG transfer syntaxes."""
|
||||
|
||||
RLETransferSyntaxes = [RLELossless]
|
||||
"""RLE transfer syntaxes."""
|
||||
|
||||
UncompressedTransferSyntaxes = [
|
||||
ExplicitVRLittleEndian,
|
||||
ImplicitVRLittleEndian,
|
||||
DeflatedExplicitVRLittleEndian,
|
||||
ExplicitVRBigEndian,
|
||||
]
|
||||
"""Uncompressed (native) transfer syntaxes."""
|
||||
|
||||
PrivateTransferSyntaxes = []
|
||||
"""Private transfer syntaxes added using the
|
||||
:func:`~pydicom.uid.register_transfer_syntax` function.
|
||||
"""
|
||||
|
||||
|
||||
def register_transfer_syntax(
|
||||
uid: str | UID,
|
||||
implicit_vr: bool | None = None,
|
||||
little_endian: bool | None = None,
|
||||
) -> UID:
|
||||
"""Register a private transfer syntax with the :mod:`~pydicom.uid` module
|
||||
so it can be used when reading datasets with :func:`~pydicom.filereader.dcmread`.
|
||||
|
||||
.. versionadded: 3.0
|
||||
|
||||
Parameters
|
||||
----------
|
||||
uid : str | pydicom.uid.UID
|
||||
A UID which may or may not have had the corresponding dataset encoding
|
||||
set using :meth:`~pydicom.uid.UID.set_private_encoding`.
|
||||
implicit_vr : bool, optional
|
||||
If ``True`` then the transfer syntax uses implicit VR encoding, otherwise
|
||||
if ``False`` then it uses explicit VR encoding. Required when `uid` has
|
||||
not had the encoding set using :meth:`~pydicom.uid.UID.set_private_encoding`.
|
||||
little_endian : bool, optional
|
||||
If ``True`` then the transfer syntax uses little endian encoding, otherwise
|
||||
if ``False`` then it uses big endian encoding. Required when `uid` has
|
||||
not had the encoding set using :meth:`~pydicom.uid.UID.set_private_encoding`.
|
||||
|
||||
Returns
|
||||
-------
|
||||
pydicom.uid.UID
|
||||
The registered UID.
|
||||
"""
|
||||
uid = UID(uid)
|
||||
|
||||
if None in (implicit_vr, little_endian) and not uid.is_transfer_syntax:
|
||||
raise ValueError(
|
||||
"The corresponding dataset encoding for 'uid' must be set using "
|
||||
"the 'implicit_vr' and 'little_endian' arguments"
|
||||
)
|
||||
|
||||
if implicit_vr is not None and little_endian is not None:
|
||||
uid.set_private_encoding(implicit_vr, little_endian)
|
||||
|
||||
if uid not in PrivateTransferSyntaxes:
|
||||
PrivateTransferSyntaxes.append(uid)
|
||||
|
||||
return uid
|
||||
|
||||
|
||||
_MAX_PREFIX_LENGTH = 54
|
||||
|
||||
|
||||
def generate_uid(
|
||||
prefix: str | None = PYDICOM_ROOT_UID,
|
||||
entropy_srcs: list[str] | None = None,
|
||||
) -> UID:
|
||||
"""Return a 64 character UID which starts with `prefix`.
|
||||
|
||||
.. versionchanged:: 3.0
|
||||
|
||||
* When `entropy_srcs` is ``None`` the suffix is now generated using
|
||||
:func:`~secrets.randbelow`
|
||||
* The maximum length of `prefix` is now 54 characters
|
||||
|
||||
Parameters
|
||||
----------
|
||||
prefix : str or None, optional
|
||||
The UID prefix to use when creating the UID. Default is the *pydicom*
|
||||
root UID ``'1.2.826.0.1.3680043.8.498.'``. If `prefix` is ``None`` then
|
||||
a prefix of ``'2.25.'`` will be used with the integer form of a UUID
|
||||
generated using the :func:`uuid.uuid4` algorithm.
|
||||
entropy_srcs : list of str, optional
|
||||
If `prefix` is used then the `prefix` will be appended with a
|
||||
SHA512 hash of the supplied :class:`list` which means the result is
|
||||
deterministic and should make the original data unrecoverable. If
|
||||
`entropy_srcs` isn't used then a random number from
|
||||
:func:`secrets.randbelow` will be appended to the `prefix`. If `prefix`
|
||||
is ``None`` then `entropy_srcs` has no effect.
|
||||
|
||||
Returns
|
||||
-------
|
||||
pydicom.uid.UID
|
||||
A DICOM UID of up to 64 characters.
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If `prefix` is invalid or greater than 54 characters.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> from pydicom.uid import generate_uid
|
||||
>>> generate_uid()
|
||||
1.2.826.0.1.3680043.8.498.22463838056059845879389038257786771680
|
||||
>>> generate_uid(prefix=None)
|
||||
2.25.167161297070865690102504091919570542144
|
||||
>>> generate_uid(entropy_srcs=['lorem', 'ipsum'])
|
||||
1.2.826.0.1.3680043.8.498.87507166259346337659265156363895084463
|
||||
>>> generate_uid(entropy_srcs=['lorem', 'ipsum'])
|
||||
1.2.826.0.1.3680043.8.498.87507166259346337659265156363895084463
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
* DICOM Standard, Part 5, :dcm:`Chapters 9<part05/chapter_9.html>` and
|
||||
:dcm:`Annex B<part05/chapter_B.html>`
|
||||
* ISO/IEC 9834-8/`ITU-T X.667 <https://www.itu.int/rec/T-REC-X.667-201210-I/en>`_
|
||||
"""
|
||||
if prefix is None:
|
||||
# UUID -> as 128-bit int -> max 39 characters long
|
||||
return UID(f"2.25.{uuid.uuid4().int}")
|
||||
|
||||
if len(prefix) > _MAX_PREFIX_LENGTH:
|
||||
raise ValueError(
|
||||
f"The 'prefix' should be no more than {_MAX_PREFIX_LENGTH} characters long"
|
||||
)
|
||||
|
||||
if not re.match(RE_VALID_UID_PREFIX, prefix):
|
||||
raise ValueError(
|
||||
"The 'prefix' is not valid for use with a UID, see Part 5, Section "
|
||||
"9.1 of the DICOM Standard"
|
||||
)
|
||||
|
||||
if entropy_srcs is None:
|
||||
maximum = 10 ** (64 - len(prefix))
|
||||
# randbelow is in [0, maximum)
|
||||
# {prefix}.0, and {prefix}0 are both valid
|
||||
return UID(f"{prefix}{secrets.randbelow(maximum)}"[:64])
|
||||
|
||||
hash_val = hashlib.sha512("".join(entropy_srcs).encode("utf-8"))
|
||||
|
||||
# Convert this to an int with the maximum available digits
|
||||
return UID(f"{prefix}{int(hash_val.hexdigest(), 16)}"[:64])
|
||||
|
||||
|
||||
# Only auto-generated Storage SOP Class UIDs below - do not edit manually
|
||||
|
||||
|
||||
MediaStorageDirectoryStorage = UID("1.2.840.10008.1.3.10")
|
||||
"""1.2.840.10008.1.3.10"""
|
||||
ComputedRadiographyImageStorage = UID("1.2.840.10008.5.1.4.1.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.1"""
|
||||
DigitalXRayImageStorageForPresentation = UID("1.2.840.10008.5.1.4.1.1.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.1"""
|
||||
DigitalXRayImageStorageForProcessing = UID("1.2.840.10008.5.1.4.1.1.1.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.1.1"""
|
||||
DigitalMammographyXRayImageStorageForPresentation = UID("1.2.840.10008.5.1.4.1.1.1.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.2"""
|
||||
DigitalMammographyXRayImageStorageForProcessing = UID("1.2.840.10008.5.1.4.1.1.1.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.2.1"""
|
||||
DigitalIntraOralXRayImageStorageForPresentation = UID("1.2.840.10008.5.1.4.1.1.1.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.3"""
|
||||
DigitalIntraOralXRayImageStorageForProcessing = UID("1.2.840.10008.5.1.4.1.1.1.3.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.1.3.1"""
|
||||
EncapsulatedPDFStorage = UID("1.2.840.10008.5.1.4.1.1.104.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.104.1"""
|
||||
EncapsulatedCDAStorage = UID("1.2.840.10008.5.1.4.1.1.104.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.104.2"""
|
||||
EncapsulatedSTLStorage = UID("1.2.840.10008.5.1.4.1.1.104.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.104.3"""
|
||||
EncapsulatedOBJStorage = UID("1.2.840.10008.5.1.4.1.1.104.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.104.4"""
|
||||
EncapsulatedMTLStorage = UID("1.2.840.10008.5.1.4.1.1.104.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.104.5"""
|
||||
GrayscaleSoftcopyPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.1"""
|
||||
SegmentedVolumeRenderingVolumetricPresentationStateStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.11.10"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.11.10"""
|
||||
MultipleVolumeRenderingVolumetricPresentationStateStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.11.11"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.11.11"""
|
||||
VariableModalityLUTSoftcopyPresentationStateStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.11.12"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.11.12"""
|
||||
ColorSoftcopyPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.2"""
|
||||
PseudoColorSoftcopyPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.3"""
|
||||
BlendingSoftcopyPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.4"""
|
||||
XAXRFGrayscaleSoftcopyPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.5"""
|
||||
GrayscalePlanarMPRVolumetricPresentationStateStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.11.6"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.11.6"""
|
||||
CompositingPlanarMPRVolumetricPresentationStateStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.11.7"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.11.7"""
|
||||
AdvancedBlendingPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.8")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.8"""
|
||||
VolumeRenderingVolumetricPresentationStateStorage = UID("1.2.840.10008.5.1.4.1.1.11.9")
|
||||
"""1.2.840.10008.5.1.4.1.1.11.9"""
|
||||
XRayAngiographicImageStorage = UID("1.2.840.10008.5.1.4.1.1.12.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.12.1"""
|
||||
EnhancedXAImageStorage = UID("1.2.840.10008.5.1.4.1.1.12.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.12.1.1"""
|
||||
XRayRadiofluoroscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.12.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.12.2"""
|
||||
EnhancedXRFImageStorage = UID("1.2.840.10008.5.1.4.1.1.12.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.12.2.1"""
|
||||
PositronEmissionTomographyImageStorage = UID("1.2.840.10008.5.1.4.1.1.128")
|
||||
"""1.2.840.10008.5.1.4.1.1.128"""
|
||||
LegacyConvertedEnhancedPETImageStorage = UID("1.2.840.10008.5.1.4.1.1.128.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.128.1"""
|
||||
XRay3DAngiographicImageStorage = UID("1.2.840.10008.5.1.4.1.1.13.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.13.1.1"""
|
||||
XRay3DCraniofacialImageStorage = UID("1.2.840.10008.5.1.4.1.1.13.1.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.13.1.2"""
|
||||
BreastTomosynthesisImageStorage = UID("1.2.840.10008.5.1.4.1.1.13.1.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.13.1.3"""
|
||||
BreastProjectionXRayImageStorageForPresentation = UID("1.2.840.10008.5.1.4.1.1.13.1.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.13.1.4"""
|
||||
BreastProjectionXRayImageStorageForProcessing = UID("1.2.840.10008.5.1.4.1.1.13.1.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.13.1.5"""
|
||||
EnhancedPETImageStorage = UID("1.2.840.10008.5.1.4.1.1.130")
|
||||
"""1.2.840.10008.5.1.4.1.1.130"""
|
||||
BasicStructuredDisplayStorage = UID("1.2.840.10008.5.1.4.1.1.131")
|
||||
"""1.2.840.10008.5.1.4.1.1.131"""
|
||||
IntravascularOpticalCoherenceTomographyImageStorageForPresentation = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.14.1"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.14.1"""
|
||||
IntravascularOpticalCoherenceTomographyImageStorageForProcessing = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.14.2"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.14.2"""
|
||||
CTImageStorage = UID("1.2.840.10008.5.1.4.1.1.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.2"""
|
||||
EnhancedCTImageStorage = UID("1.2.840.10008.5.1.4.1.1.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.2.1"""
|
||||
LegacyConvertedEnhancedCTImageStorage = UID("1.2.840.10008.5.1.4.1.1.2.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.2.2"""
|
||||
NuclearMedicineImageStorage = UID("1.2.840.10008.5.1.4.1.1.20")
|
||||
"""1.2.840.10008.5.1.4.1.1.20"""
|
||||
CTDefinedProcedureProtocolStorage = UID("1.2.840.10008.5.1.4.1.1.200.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.200.1"""
|
||||
CTPerformedProcedureProtocolStorage = UID("1.2.840.10008.5.1.4.1.1.200.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.200.2"""
|
||||
ProtocolApprovalStorage = UID("1.2.840.10008.5.1.4.1.1.200.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.200.3"""
|
||||
XADefinedProcedureProtocolStorage = UID("1.2.840.10008.5.1.4.1.1.200.7")
|
||||
"""1.2.840.10008.5.1.4.1.1.200.7"""
|
||||
XAPerformedProcedureProtocolStorage = UID("1.2.840.10008.5.1.4.1.1.200.8")
|
||||
"""1.2.840.10008.5.1.4.1.1.200.8"""
|
||||
InventoryStorage = UID("1.2.840.10008.5.1.4.1.1.201.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.201.1"""
|
||||
UltrasoundMultiFrameImageStorage = UID("1.2.840.10008.5.1.4.1.1.3.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.3.1"""
|
||||
ParametricMapStorage = UID("1.2.840.10008.5.1.4.1.1.30")
|
||||
"""1.2.840.10008.5.1.4.1.1.30"""
|
||||
MRImageStorage = UID("1.2.840.10008.5.1.4.1.1.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.4"""
|
||||
EnhancedMRImageStorage = UID("1.2.840.10008.5.1.4.1.1.4.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.4.1"""
|
||||
MRSpectroscopyStorage = UID("1.2.840.10008.5.1.4.1.1.4.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.4.2"""
|
||||
EnhancedMRColorImageStorage = UID("1.2.840.10008.5.1.4.1.1.4.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.4.3"""
|
||||
LegacyConvertedEnhancedMRImageStorage = UID("1.2.840.10008.5.1.4.1.1.4.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.4.4"""
|
||||
RTImageStorage = UID("1.2.840.10008.5.1.4.1.1.481.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.1"""
|
||||
RTPhysicianIntentStorage = UID("1.2.840.10008.5.1.4.1.1.481.10")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.10"""
|
||||
RTSegmentAnnotationStorage = UID("1.2.840.10008.5.1.4.1.1.481.11")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.11"""
|
||||
RTRadiationSetStorage = UID("1.2.840.10008.5.1.4.1.1.481.12")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.12"""
|
||||
CArmPhotonElectronRadiationStorage = UID("1.2.840.10008.5.1.4.1.1.481.13")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.13"""
|
||||
TomotherapeuticRadiationStorage = UID("1.2.840.10008.5.1.4.1.1.481.14")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.14"""
|
||||
RoboticArmRadiationStorage = UID("1.2.840.10008.5.1.4.1.1.481.15")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.15"""
|
||||
RTRadiationRecordSetStorage = UID("1.2.840.10008.5.1.4.1.1.481.16")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.16"""
|
||||
RTRadiationSalvageRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.17")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.17"""
|
||||
TomotherapeuticRadiationRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.18")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.18"""
|
||||
CArmPhotonElectronRadiationRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.19")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.19"""
|
||||
RTDoseStorage = UID("1.2.840.10008.5.1.4.1.1.481.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.2"""
|
||||
RoboticRadiationRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.20")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.20"""
|
||||
RTRadiationSetDeliveryInstructionStorage = UID("1.2.840.10008.5.1.4.1.1.481.21")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.21"""
|
||||
RTTreatmentPreparationStorage = UID("1.2.840.10008.5.1.4.1.1.481.22")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.22"""
|
||||
EnhancedRTImageStorage = UID("1.2.840.10008.5.1.4.1.1.481.23")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.23"""
|
||||
EnhancedContinuousRTImageStorage = UID("1.2.840.10008.5.1.4.1.1.481.24")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.24"""
|
||||
RTPatientPositionAcquisitionInstructionStorage = UID("1.2.840.10008.5.1.4.1.1.481.25")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.25"""
|
||||
RTStructureSetStorage = UID("1.2.840.10008.5.1.4.1.1.481.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.3"""
|
||||
RTBeamsTreatmentRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.4"""
|
||||
RTPlanStorage = UID("1.2.840.10008.5.1.4.1.1.481.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.5"""
|
||||
RTBrachyTreatmentRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.6")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.6"""
|
||||
RTTreatmentSummaryRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.7")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.7"""
|
||||
RTIonPlanStorage = UID("1.2.840.10008.5.1.4.1.1.481.8")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.8"""
|
||||
RTIonBeamsTreatmentRecordStorage = UID("1.2.840.10008.5.1.4.1.1.481.9")
|
||||
"""1.2.840.10008.5.1.4.1.1.481.9"""
|
||||
DICOSCTImageStorage = UID("1.2.840.10008.5.1.4.1.1.501.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.1"""
|
||||
DICOSDigitalXRayImageStorageForPresentation = UID("1.2.840.10008.5.1.4.1.1.501.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.2.1"""
|
||||
DICOSDigitalXRayImageStorageForProcessing = UID("1.2.840.10008.5.1.4.1.1.501.2.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.2.2"""
|
||||
DICOSThreatDetectionReportStorage = UID("1.2.840.10008.5.1.4.1.1.501.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.3"""
|
||||
DICOS2DAITStorage = UID("1.2.840.10008.5.1.4.1.1.501.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.4"""
|
||||
DICOS3DAITStorage = UID("1.2.840.10008.5.1.4.1.1.501.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.5"""
|
||||
DICOSQuadrupoleResonanceStorage = UID("1.2.840.10008.5.1.4.1.1.501.6")
|
||||
"""1.2.840.10008.5.1.4.1.1.501.6"""
|
||||
UltrasoundImageStorage = UID("1.2.840.10008.5.1.4.1.1.6.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.6.1"""
|
||||
EnhancedUSVolumeStorage = UID("1.2.840.10008.5.1.4.1.1.6.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.6.2"""
|
||||
PhotoacousticImageStorage = UID("1.2.840.10008.5.1.4.1.1.6.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.6.3"""
|
||||
EddyCurrentImageStorage = UID("1.2.840.10008.5.1.4.1.1.601.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.601.1"""
|
||||
EddyCurrentMultiFrameImageStorage = UID("1.2.840.10008.5.1.4.1.1.601.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.601.2"""
|
||||
RawDataStorage = UID("1.2.840.10008.5.1.4.1.1.66")
|
||||
"""1.2.840.10008.5.1.4.1.1.66"""
|
||||
SpatialRegistrationStorage = UID("1.2.840.10008.5.1.4.1.1.66.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.1"""
|
||||
SpatialFiducialsStorage = UID("1.2.840.10008.5.1.4.1.1.66.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.2"""
|
||||
DeformableSpatialRegistrationStorage = UID("1.2.840.10008.5.1.4.1.1.66.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.3"""
|
||||
SegmentationStorage = UID("1.2.840.10008.5.1.4.1.1.66.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.4"""
|
||||
SurfaceSegmentationStorage = UID("1.2.840.10008.5.1.4.1.1.66.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.5"""
|
||||
TractographyResultsStorage = UID("1.2.840.10008.5.1.4.1.1.66.6")
|
||||
"""1.2.840.10008.5.1.4.1.1.66.6"""
|
||||
RealWorldValueMappingStorage = UID("1.2.840.10008.5.1.4.1.1.67")
|
||||
"""1.2.840.10008.5.1.4.1.1.67"""
|
||||
SurfaceScanMeshStorage = UID("1.2.840.10008.5.1.4.1.1.68.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.68.1"""
|
||||
SurfaceScanPointCloudStorage = UID("1.2.840.10008.5.1.4.1.1.68.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.68.2"""
|
||||
SecondaryCaptureImageStorage = UID("1.2.840.10008.5.1.4.1.1.7")
|
||||
"""1.2.840.10008.5.1.4.1.1.7"""
|
||||
MultiFrameSingleBitSecondaryCaptureImageStorage = UID("1.2.840.10008.5.1.4.1.1.7.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.7.1"""
|
||||
MultiFrameGrayscaleByteSecondaryCaptureImageStorage = UID("1.2.840.10008.5.1.4.1.1.7.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.7.2"""
|
||||
MultiFrameGrayscaleWordSecondaryCaptureImageStorage = UID("1.2.840.10008.5.1.4.1.1.7.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.7.3"""
|
||||
MultiFrameTrueColorSecondaryCaptureImageStorage = UID("1.2.840.10008.5.1.4.1.1.7.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.7.4"""
|
||||
VLEndoscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.1"""
|
||||
VideoEndoscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.1.1"""
|
||||
VLMicroscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.2"""
|
||||
VideoMicroscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.2.1"""
|
||||
VLSlideCoordinatesMicroscopicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.3"""
|
||||
VLPhotographicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.4"""
|
||||
VideoPhotographicImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.4.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.4.1"""
|
||||
OphthalmicPhotography8BitImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.5.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.1"""
|
||||
OphthalmicPhotography16BitImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.5.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.2"""
|
||||
StereometricRelationshipStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.5.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.3"""
|
||||
OphthalmicTomographyImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.5.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.4"""
|
||||
WideFieldOphthalmicPhotographyStereographicProjectionImageStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.77.1.5.5"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.5"""
|
||||
WideFieldOphthalmicPhotography3DCoordinatesImageStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.77.1.5.6"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.6"""
|
||||
OphthalmicOpticalCoherenceTomographyEnFaceImageStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.77.1.5.7"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.7"""
|
||||
OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.77.1.5.8"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.5.8"""
|
||||
VLWholeSlideMicroscopyImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.6")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.6"""
|
||||
DermoscopicPhotographyImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.7")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.7"""
|
||||
ConfocalMicroscopyImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.8")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.8"""
|
||||
ConfocalMicroscopyTiledPyramidalImageStorage = UID("1.2.840.10008.5.1.4.1.1.77.1.9")
|
||||
"""1.2.840.10008.5.1.4.1.1.77.1.9"""
|
||||
LensometryMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.1"""
|
||||
AutorefractionMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.2"""
|
||||
KeratometryMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.3"""
|
||||
SubjectiveRefractionMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.4"""
|
||||
VisualAcuityMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.5")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.5"""
|
||||
SpectaclePrescriptionReportStorage = UID("1.2.840.10008.5.1.4.1.1.78.6")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.6"""
|
||||
OphthalmicAxialMeasurementsStorage = UID("1.2.840.10008.5.1.4.1.1.78.7")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.7"""
|
||||
IntraocularLensCalculationsStorage = UID("1.2.840.10008.5.1.4.1.1.78.8")
|
||||
"""1.2.840.10008.5.1.4.1.1.78.8"""
|
||||
MacularGridThicknessAndVolumeReportStorage = UID("1.2.840.10008.5.1.4.1.1.79.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.79.1"""
|
||||
OphthalmicVisualFieldStaticPerimetryMeasurementsStorage = UID(
|
||||
"1.2.840.10008.5.1.4.1.1.80.1"
|
||||
)
|
||||
"""1.2.840.10008.5.1.4.1.1.80.1"""
|
||||
OphthalmicThicknessMapStorage = UID("1.2.840.10008.5.1.4.1.1.81.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.81.1"""
|
||||
CornealTopographyMapStorage = UID("1.2.840.10008.5.1.4.1.1.82.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.82.1"""
|
||||
BasicTextSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.11")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.11"""
|
||||
EnhancedSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.22")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.22"""
|
||||
ComprehensiveSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.33")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.33"""
|
||||
Comprehensive3DSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.34")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.34"""
|
||||
ExtensibleSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.35")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.35"""
|
||||
ProcedureLogStorage = UID("1.2.840.10008.5.1.4.1.1.88.40")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.40"""
|
||||
MammographyCADSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.50")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.50"""
|
||||
KeyObjectSelectionDocumentStorage = UID("1.2.840.10008.5.1.4.1.1.88.59")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.59"""
|
||||
ChestCADSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.65")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.65"""
|
||||
XRayRadiationDoseSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.67")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.67"""
|
||||
RadiopharmaceuticalRadiationDoseSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.68")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.68"""
|
||||
ColonCADSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.69")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.69"""
|
||||
ImplantationPlanSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.70")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.70"""
|
||||
AcquisitionContextSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.71")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.71"""
|
||||
SimplifiedAdultEchoSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.72")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.72"""
|
||||
PatientRadiationDoseSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.73")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.73"""
|
||||
PlannedImagingAgentAdministrationSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.74")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.74"""
|
||||
PerformedImagingAgentAdministrationSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.75")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.75"""
|
||||
EnhancedXRayRadiationDoseSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.76")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.76"""
|
||||
WaveformAnnotationSRStorage = UID("1.2.840.10008.5.1.4.1.1.88.77")
|
||||
"""1.2.840.10008.5.1.4.1.1.88.77"""
|
||||
TwelveLeadECGWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.1.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.1.1"""
|
||||
GeneralECGWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.1.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.1.2"""
|
||||
AmbulatoryECGWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.1.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.1.3"""
|
||||
General32bitECGWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.1.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.1.4"""
|
||||
HemodynamicWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.2.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.2.1"""
|
||||
CardiacElectrophysiologyWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.3.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.3.1"""
|
||||
BasicVoiceAudioWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.4.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.4.1"""
|
||||
GeneralAudioWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.4.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.4.2"""
|
||||
ArterialPulseWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.5.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.5.1"""
|
||||
RespiratoryWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.6.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.6.1"""
|
||||
MultichannelRespiratoryWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.6.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.6.2"""
|
||||
RoutineScalpElectroencephalogramWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.7.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.7.1"""
|
||||
ElectromyogramWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.7.2")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.7.2"""
|
||||
ElectrooculogramWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.7.3")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.7.3"""
|
||||
SleepElectroencephalogramWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.7.4")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.7.4"""
|
||||
BodyPositionWaveformStorage = UID("1.2.840.10008.5.1.4.1.1.9.8.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.9.8.1"""
|
||||
ContentAssessmentResultsStorage = UID("1.2.840.10008.5.1.4.1.1.90.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.90.1"""
|
||||
MicroscopyBulkSimpleAnnotationsStorage = UID("1.2.840.10008.5.1.4.1.1.91.1")
|
||||
"""1.2.840.10008.5.1.4.1.1.91.1"""
|
||||
RTBrachyApplicationSetupDeliveryInstructionStorage = UID("1.2.840.10008.5.1.4.34.10")
|
||||
"""1.2.840.10008.5.1.4.34.10"""
|
||||
RTBeamsDeliveryInstructionStorage = UID("1.2.840.10008.5.1.4.34.7")
|
||||
"""1.2.840.10008.5.1.4.34.7"""
|
||||
HangingProtocolStorage = UID("1.2.840.10008.5.1.4.38.1")
|
||||
"""1.2.840.10008.5.1.4.38.1"""
|
||||
ColorPaletteStorage = UID("1.2.840.10008.5.1.4.39.1")
|
||||
"""1.2.840.10008.5.1.4.39.1"""
|
||||
GenericImplantTemplateStorage = UID("1.2.840.10008.5.1.4.43.1")
|
||||
"""1.2.840.10008.5.1.4.43.1"""
|
||||
ImplantAssemblyTemplateStorage = UID("1.2.840.10008.5.1.4.44.1")
|
||||
"""1.2.840.10008.5.1.4.44.1"""
|
||||
ImplantTemplateGroupStorage = UID("1.2.840.10008.5.1.4.45.1")
|
||||
"""1.2.840.10008.5.1.4.45.1"""
|
||||
Reference in New Issue
Block a user