7
votes

Additional discussion on the comp.protocols.dicom google group.


Specific example:

Given that instance UIDs are derived from UUIDs as described in PS3.5 B.2.

For example given the following DICOM instance UID:

2.25.329800735698586629295641978511506172918

Is it standard conform to suffix that UID by adding additional components?

2.25.329800735698586629295641978511506172918.1, 
2.25.329800735698586629295641978511506172918.2, 
...

Concern:

From reading the standard, I somehow got the impression that the DICOM standard defines this form of UID only as valid if it only consists of the 2.25 prefix and the decimal representation of a valid UUID - and nothing more:

ISO/IEC 9834-8 / ITU-T X.667 defines a method by which a UID may be constructed from the root "2.25." followed by a decimal representation of a Universally Unique Identifier (UUID). That decimal representation treats the 128 bit UUID as an integer, and may thus be up to 39 digits long (leading zeros must be suppressed).

It does not explicitly say if there can be a suffix or not.

It has a max length of 5 + 39 characters and therefore has still some room until the 64 character limit of UIDs.

Do all rules from PS3.5 9.1 still apply to the UID definition of PS3.5 B.2 just with a fixed root? Or is PS3.5 B.2 an independent definition?


Additional information on UUID derived UIDs:

As far as I understand the DICOM standard, PS3.5 B.2 was added 2012 and is an exception to the normal UID definition defined by PS3.5 9.1 and PS3.5 B.1. It does not require an organisation root prefix. Instead it uses the general prefix 2.25 for all instance UIDs which are derived from UUIDs. Important to note here, that it should only be used for instance UIDs. See:

A UUID derived UID may be appropriate for dynamically created UIDs, such as SOP Instance UIDs, but is usually not appropriate for UIDs determined during application software design, such as private SOP Class or Transfer Syntax UIDs, or Implementation Class UIDs.

As an additional pointer to this exception (source):

Another approach to generating UIDs that does not require obtaining one's own root prefix can take advantage of a standard prefix established for using a Universally Unique Identifier (UUID) [...] in essence it involves converting the normal hyphenated hexadecimal string form of a UUID into a single large decimal number and appending it to the prefix "2.25."

2
I'm a bit curious why you only have one UUID and why your UIDs need to be connected to it. Wouldn't it be easier to just get your own UID prefix (from here for example) and use that?scaramallion
Your statement that UUID derived UIDs should only be used for instance UIDs is incorrect. These UIDs can of course also be used as Series UID, Study UID, etc. The purpose of the remark in the DICOM standard that it is not appropriate to use UUID derived UIDs during software design is the fact that organisation root UIDs are easier to understand for humans and to track back to the organization that created them. For example the prefix 1.2.840.10008. gives a hint that that this UID is defined by DICOM standard itself. Computer systems only require that an UID is unique, nothing more.Victor Derks
@VictorDerks You probably misinterpret was I wrote. With instance UID I'm not only referring to SOP instance UIDs but also to Series instance UIDs, Study instance UIDs, ... and other instance UIDs.Spenhouet

2 Answers

5
votes

Absolutely not.

You cannot add anything as a suffix to 2.25 + UUID.

3
votes

I don't think it's conformant to modify an existing UUID derived UID, and even if it were that it'd be a bad idea to do so. The expectation is that an UID with the 2.25. prefix is followed by a component value that can be coverted to a UUID.

The use of 2.25. + UUID is a registered OID.