Creating a UID Hierarchy
Developers often ask for advice on how to create their own UIDs and manage roots, so here is a suggested simple scheme. There is nothing special about this scheme, but it is as good as any, so feel free to use it “as is” or to modify in any way you like.
Throughout this page {YOURROOT} is used to represent the single root used by your company. See the pages on [UIDs] for details of how to get a root yourself, either by right (e.g. UK companies) or from Medical Connections Ltd.
Most developers need two types of UIDs
Root for versions of your software (Implementation UIDs)
You need this to fulfil the DICOM requirement for a unique Implementation UID for each software release and you need to allow for other multiple versions of multiple applications.
Suggestion:
Use {YOURROOT}.1 for all software versions
This is followed by a product number and then a version number. Obviously you will need to maintain a lookup somewhere relating product names to their sequential numbers.
So, version 4.5.0.3 of your 2nd product would have the implementation UID: {YOURROOT}.1.2.4.5.0.3
Note that this is the final UID used in your application and DICOM conformance statement - nothing will be appended to it.
Root for individual installations
Unlike the implementation UID, which is constant for all copies of the same software release, all applications which create DICOM UIDs need to have both a unique root and a means to create unique instance UIDs from it. This applies for instance to equipment which:
- Creates new images
- Creates presentations states or secondary captures
- Allocates STudy UIDs (i.e. modality worklist servers)
- Needs to create temporary object UIDs (e.g. DICOM printers)
Suggestion:
- Use {YOURROOT}.2 for all installation roots
This is followed by a serial number for the individual piece of equipment - which must of cause be pure numeric, and in keeping with UID Rules must not include any leading zeros.
So, the root for equipment serial number 0372764 would be: {YOURROOT}.2.372764
Unlike the implementation UID above, this is only a basis for creating subsidiary UIDs according to DICOM UID Rules, so should be either used internally yourself, or placed in the DicomObjects UIDRoot Registry value if you wish to use the DicomGlobal.NewUID .NET version or DicomGlobal.NewUID .COM method.