Coverage Report

Created: 2026-09-28 07:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/dcmtk/dcmdata/libsrc/dcuid.cc
Line
Count
Source
1
/*
2
 *
3
 *  Copyright (C) 1994-2026, OFFIS e.V.
4
 *  All rights reserved.  See COPYRIGHT file for details.
5
 *
6
 *  This software and supporting documentation were developed by
7
 *
8
 *    OFFIS e.V.
9
 *    R&D Division Health
10
 *    Escherweg 2
11
 *    D-26121 Oldenburg, Germany
12
 *
13
 *
14
 *  Module:  dcmdata
15
 *
16
 *  Author:  Andrew Hewett, Joerg Riesmeier
17
 *
18
 *  Purpose:
19
 *  Definitions of "well known" DICOM Unique Identifiers,
20
 *  routines for finding and creating UIDs.
21
 *
22
 */
23
24
#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
25
26
#ifdef HAVE_WINDOWS_H
27
// on Windows, we need Winsock2 for getting network adapter information
28
#include <winsock2.h>
29
#include <iphlpapi.h>
30
#include <ws2tcpip.h>
31
#endif
32
33
BEGIN_EXTERN_C
34
35
#ifdef HAVE_SYS_TIME_H
36
#include <sys/time.h>
37
#endif
38
#include <sys/types.h>
39
#ifdef HAVE_SYS_SOCKET_H
40
#ifndef DCOMPAT_SYS_SOCKET_H_
41
#define DCOMPAT_SYS_SOCKET_H_
42
/* some systems don't protect sys/socket.h (e.g. DEC Ultrix) */
43
#include <sys/socket.h>
44
#endif
45
#endif
46
#ifdef HAVE_NETINET_IN_H
47
#include <netinet/in.h>
48
#endif
49
#ifdef HAVE_ARPA_INET_H
50
#include <arpa/inet.h>
51
#endif
52
#ifdef HAVE_NETDB_H
53
#include <netdb.h>
54
#endif
55
56
#ifndef HAVE_WINDOWS_H
57
#ifndef HAVE_PROTOTYPE_GETTIMEOFDAY
58
 /* Ultrix has gettimeofday() but no prototype in the header files */
59
 int gettimeofday(struct timeval *tp, void *);
60
#endif
61
#endif
62
63
#ifdef __MINGW32__
64
#include <winerror.h> /* needed for NO_ERROR constant on MinGW */
65
#endif
66
67
END_EXTERN_C
68
69
#include "dcmtk/ofstd/ofstream.h"
70
#include "dcmtk/dcmdata/dcuid.h"
71
#include "dcmtk/dcmdata/dctypes.h"
72
#include "dcmtk/ofstd/ofthread.h"
73
#include "dcmtk/ofstd/ofcrc32.h"
74
#include "dcmtk/ofstd/ofdefine.h"
75
#include "dcmtk/ofstd/ofstd.h"
76
#include "dcmtk/ofstd/ofvector.h"
77
#include "dcmtk/ofstd/ofsockad.h"
78
79
/** struct for mapping UID values to keywords, names and properties
80
 */
81
struct UIDNameMap {
82
    const char* uid;
83
    const char* keyword;
84
    const char* name;
85
    DcmUIDProperties properties;
86
};
87
88
/** UID mapping table.
89
 *  It is very important that the DCMTK-specific names of the UIDs (column #3)
90
 *  may not use the following characters: space ( ) [ ] , = < >
91
 *  For the official keywords (column #2) according to DICOM PS3.6, the DICOM
92
 *  standard already ensures this.
93
 */
94
static const UIDNameMap uidNameMap[] = {
95
    // column #1: UID                                                            #2: DICOM keyword                                                     #3: DCMTK-specific name                                               #4: properties
96
97
    // Application Context
98
    { UID_StandardApplicationContext,                                            "DICOMApplicationContext",                                            "StandardApplicationContext",                                         { EUS_DICOM, EUV_Standard, EUT_ApplicationContextName, EUST_other, EUIT_other, UID_PROP_NONE } },
99
100
    // Transfer Syntax
101
    { UID_LittleEndianImplicitTransferSyntax,                                    "ImplicitVRLittleEndian",                                             "LittleEndianImplicit",                                               { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
102
    { UID_LittleEndianExplicitTransferSyntax,                                    "ExplicitVRLittleEndian",                                             "LittleEndianExplicit",                                               { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
103
    { UID_BigEndianExplicitTransferSyntax,                                       "ExplicitVRBigEndian",                                                "BigEndianExplicit",                                                  { EUS_DICOM, EUV_Retired,  EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
104
    { UID_EncapsulatedUncompressedExplicitVRLittleEndianTransferSyntax,          "EncapsulatedUncompressedExplicitVRLittleEndian",                     "EncapsulatedUncompressedLittleEndianExplicit",                       { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
105
    { UID_JPEGProcess1TransferSyntax,                                            "JPEGBaseline8Bit",                                                   "JPEGBaseline",                                                       { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
106
    { UID_JPEGProcess2_4TransferSyntax,                                          "JPEGExtended12Bit",                                                  "JPEGExtended:Process2+4",                                            { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
107
    { UID_JPEGProcess3_5TransferSyntax,                                          "JPEGExtended35",                                                     "JPEGExtended:Process3+5",                                            { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
108
    { UID_JPEGProcess6_8TransferSyntax,                                          "JPEGSpectralSelectionNonHierarchical68",                             "JPEGSpectralSelection:Non-hierarchical:Process6+8",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
109
    { UID_JPEGProcess7_9TransferSyntax,                                          "JPEGSpectralSelectionNonHierarchical79",                             "JPEGSpectralSelection:Non-hierarchical:Process7+9",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
110
    { UID_JPEGProcess10_12TransferSyntax,                                        "JPEGFullProgressionNonHierarchical1012",                             "JPEGFullProgression:Non-hierarchical:Process10+12",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
111
    { UID_JPEGProcess11_13TransferSyntax,                                        "JPEGFullProgressionNonHierarchical1113",                             "JPEGFullProgression:Non-hierarchical:Process11+13",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
112
    { UID_JPEGProcess14TransferSyntax,                                           "JPEGLossless",                                                       "JPEGLossless:Non-hierarchical:Process14",                            { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
113
    { UID_JPEGProcess15TransferSyntax,                                           "JPEGLosslessNonHierarchical15",                                      "JPEGLossless:Non-hierarchical:Process15",                            { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
114
    { UID_JPEGProcess16_18TransferSyntax,                                        "JPEGExtendedHierarchical1618",                                       "JPEGExtended:Hierarchical:Process16+18",                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
115
    { UID_JPEGProcess17_19TransferSyntax,                                        "JPEGExtendedHierarchical1719",                                       "JPEGExtended:Hierarchical:Process17+19",                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
116
    { UID_JPEGProcess20_22TransferSyntax,                                        "JPEGSpectralSelectionHierarchical2022",                              "JPEGSpectralSelection:Hierarchical:Process20+22",                    { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
117
    { UID_JPEGProcess21_23TransferSyntax,                                        "JPEGSpectralSelectionHierarchical2123",                              "JPEGSpectralSelection:Hierarchical:Process21+23",                    { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
118
    { UID_JPEGProcess24_26TransferSyntax,                                        "JPEGFullProgressionHierarchical2426",                                "JPEGFullProgression:Hierarchical:Process24+26",                      { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
119
    { UID_JPEGProcess25_27TransferSyntax,                                        "JPEGFullProgressionHierarchical2527",                                "JPEGFullProgression:Hierarchical:Process25+27",                      { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
120
    { UID_JPEGProcess28TransferSyntax,                                           "JPEGLosslessHierarchical28",                                         "JPEGLossless:Hierarchical:Process28",                                { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
121
    { UID_JPEGProcess29TransferSyntax,                                           "JPEGLosslessHierarchical29",                                         "JPEGLossless:Hierarchical:Process29",                                { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
122
    { UID_JPEGProcess14SV1TransferSyntax,                                        "JPEGLosslessSV1",                                                    "JPEGLossless:Non-hierarchical-1stOrderPrediction",                   { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
123
    { UID_JPEGLSLosslessTransferSyntax,                                          "JPEGLSLossless",                                                     "JPEGLSLossless",                                                     { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
124
    { UID_JPEGLSLossyTransferSyntax,                                             "JPEGLSNearLossless",                                                 "JPEGLSLossy",                                                        { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
125
    { UID_RLELosslessTransferSyntax,                                             "RLELossless",                                                        "RLELossless",                                                        { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
126
    { UID_DeflatedExplicitVRLittleEndianTransferSyntax,                          "DeflatedExplicitVRLittleEndian",                                     "DeflatedLittleEndianExplicit",                                       { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
127
    { UID_DeflatedImageFrameCompressionTransferSyntax,                           "DeflatedImageFrameCompression",                                      "DeflatedImageFrameCompression",                                      { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
128
    { UID_JPEG2000LosslessOnlyTransferSyntax,                                    "JPEG2000Lossless",                                                   "JPEG2000LosslessOnly",                                               { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
129
    { UID_JPEG2000TransferSyntax,                                                "JPEG2000",                                                           "JPEG2000",                                                           { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
130
    { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax, "JPEG2000MCLossless",                                                 "JPEG2000MulticomponentLosslessOnly",                                 { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
131
    { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,             "JPEG2000MC",                                                         "JPEG2000Multicomponent",                                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
132
    { UID_JPIPReferencedTransferSyntax,                                          "JPIPReferenced",                                                     "JPIPReferenced",                                                     { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
133
    { UID_JPIPReferencedDeflateTransferSyntax,                                   "JPIPReferencedDeflate",                                              "JPIPReferencedDeflate",                                              { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
134
    { UID_MPEG2MainProfileAtMainLevelTransferSyntax,                             "MPEG2MPML",                                                          "MPEG2MainProfile@MainLevel",                                         { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
135
    { UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax,                   "MPEG2MPMLF",                                                         "FragmentableMPEG2MainProfile/MainLevel",                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
136
    { UID_MPEG2MainProfileAtHighLevelTransferSyntax,                             "MPEG2MPHL",                                                          "MPEG2MainProfile@HighLevel",                                         { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
137
    { UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax,                   "MPEG2MPHLF",                                                         "FragmentableMPEG2MainProfile/HighLevel",                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
138
    { UID_MPEG4HighProfileLevel4_1TransferSyntax,                                "MPEG4HP41",                                                          "MPEG4HighProfile/Level4.1",                                          { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
139
    { UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax,                    "MPEG4HP41F",                                                         "FragmentableMPEG4HighProfile/Level4.1",                              { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
140
    { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,                    "MPEG4HP41BD",                                                        "MPEG4BDcompatibleHighProfile/Level4.1",                              { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
141
    { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,        "MPEG4HP41BDF",                                                       "FragmentableMPEG4BDcompatibleHighProfile/Level4.1",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
142
    { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,                     "MPEG4HP422D",                                                        "MPEG4HighProfile/Level4.2For2DVideo",                                { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
143
    { UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,         "MPEG4HP422DF",                                                       "FragmentableMPEG4HighProfile/Level4.2For2DVideo",                    { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
144
    { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,                     "MPEG4HP423D",                                                        "MPEG4HighProfile/Level4.2For3DVideo",                                { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
145
    { UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,         "MPEG4HP423DF",                                                       "FragmentableMPEG4HighProfile/Level4.2For3DVideo",                    { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
146
    { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,                          "MPEG4HP42STEREO",                                                    "MPEG4StereoHighProfile/Level4.2",                                    { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
147
    { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax,              "MPEG4HP42STEREOF",                                                   "FragmentableMPEG4StereoHighProfile/Level4.2",                        { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
148
    { UID_HEVCMainProfileLevel5_1TransferSyntax,                                 "HEVCMP51",                                                           "HEVCMainProfile/Level5.1",                                           { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
149
    { UID_HEVCMain10ProfileLevel5_1TransferSyntax,                               "HEVCM10P51",                                                         "HEVCMain10Profile/Level5.1",                                         { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
150
    { UID_JPEGXLLosslessTransferSyntax,                                          "JPEGXLLossless",                                                     "JPEGXLLossless",                                                     { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
151
    { UID_JPEGXLJPEGRecompressionTransferSyntax,                                 "JPEGXLJPEGRecompression",                                            "JPEGXLJPEGRecompression",                                            { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
152
    { UID_JPEGXLTransferSyntax,                                                  "JPEGXL",                                                             "JPEGXL",                                                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
153
    { UID_HighThroughputJPEG2000ImageCompressionLosslessOnlyTransferSyntax,      "HTJ2KLossless",                                                      "HighThroughputJPEG2000ImageCompressionLosslessOnly",                 { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
154
    { UID_HighThroughputJPEG2000RPCLImageCompressionLosslessOnlyTransferSyntax,  "HTJ2KLosslessRPCL",                                                  "HighThroughputJPEG2000withRPCLOptionsImageCompressionLosslessOnly",  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
155
    { UID_HighThroughputJPEG2000ImageCompressionTransferSyntax,                  "HTJ2K",                                                              "HighThroughputJPEG2000ImageCompression",                             { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
156
    { UID_JPIPHTJ2KReferencedTransferSyntax,                                     "JPIPHTJ2KReferenced",                                                "JPIPHTJ2KReferenced",                                                { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
157
    { UID_JPIPHTJ2KReferencedDeflateTransferSyntax,                              "JPIPHTJ2KReferencedDeflate",                                         "JPIPHTJ2KReferencedDeflate",                                         { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
158
    { UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax,       "SMPTEST211020UncompressedProgressiveActiveVideo",                    "SMPTEST2110-20:UncompressedProgressiveActiveVideo",                  { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
159
    { UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax,        "SMPTEST211020UncompressedInterlacedActiveVideo",                     "SMPTEST2110-20:UncompressedInterlacedActiveVideo",                   { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
160
    { UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax,                          "SMPTEST211030PCMDigitalAudio",                                       "SMPTEST2110-30:PCMDigitalAudio",                                     { EUS_DICOM, EUV_Standard, EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
161
    { UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax,                        "RFC2557MIMEEncapsulation",                                           "RETIRED_RFC2557MIMEEncapsulation",                                   { EUS_DICOM, EUV_Retired,  EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
162
    { UID_RETIRED_XMLEncodingTransferSyntax,                                     "XMLEncoding",                                                        "RETIRED_XMLEncoding",                                                { EUS_DICOM, EUV_Retired,  EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
163
    { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax,                    NULL /* no official keyword */,                                       "PrivateGELittleEndianImplicitWithBigEndianPixelData",                { EUS_DICOM, EUV_Private,  EUT_TransferSyntax, EUST_other, EUIT_other, UID_PROP_NONE } },
164
165
    // Storage (DICOM)
166
    { UID_AcquisitionContextSRStorage,                                           "AcquisitionContextSRStorage",                                        "AcquisitionContextSRStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
167
    { UID_AdvancedBlendingPresentationStateStorage,                              "AdvancedBlendingPresentationStateStorage",                           "AdvancedBlendingPresentationStateStorage",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
168
    { UID_AmbulatoryECGWaveformStorage,                                          "AmbulatoryECGWaveformStorage",                                       "AmbulatoryECGWaveformStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
169
    { UID_ArterialPulseWaveformStorage,                                          "ArterialPulseWaveformStorage",                                       "ArterialPulseWaveformStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
170
    { UID_AutorefractionMeasurementsStorage,                                     "AutorefractionMeasurementsStorage",                                  "AutorefractionMeasurementsStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
171
    { UID_BasicStructuredDisplayStorage,                                         "BasicStructuredDisplayStorage",                                      "BasicStructuredDisplayStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
172
    { UID_BasicTextSRStorage,                                                    "BasicTextSRStorage",                                                 "BasicTextSRStorage",                                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
173
    { UID_BasicVoiceAudioWaveformStorage,                                        "BasicVoiceAudioWaveformStorage",                                     "BasicVoiceAudioWaveformStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
174
    { UID_BlendingSoftcopyPresentationStateStorage,                              "BlendingSoftcopyPresentationStateStorage",                           "BlendingSoftcopyPresentationStateStorage",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
175
    { UID_BodyPositionWaveformStorage,                                           "BodyPositionWaveformStorage",                                        "BodyPositionWaveformStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
176
    { UID_BreastProjectionXRayImageStorageForPresentation,                       "BreastProjectionXRayImageStorageForPresentation",                    "BreastProjectionXRayImageStorageForPresentation",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
177
    { UID_BreastProjectionXRayImageStorageForProcessing,                         "BreastProjectionXRayImageStorageForProcessing",                      "BreastProjectionXRayImageStorageForProcessing",                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
178
    { UID_BreastTomosynthesisImageStorage,                                       "BreastTomosynthesisImageStorage",                                    "BreastTomosynthesisImageStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
179
    { UID_CardiacElectrophysiologyWaveformStorage,                               "CardiacElectrophysiologyWaveformStorage",                            "CardiacElectrophysiologyWaveformStorage",                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
180
    { UID_CArmPhotonElectronRadiationRecordStorage,                              "CArmPhotonElectronRadiationRecordStorage",                           "CArmPhotonElectronRadiationRecordStorage",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
181
    { UID_CArmPhotonElectronRadiationStorage,                                    "CArmPhotonElectronRadiationStorage",                                 "CArmPhotonElectronRadiationStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
182
    { UID_ChestCADSRStorage,                                                     "ChestCADSRStorage",                                                  "ChestCADSRStorage",                                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
183
    { UID_ColonCADSRStorage,                                                     "ColonCADSRStorage",                                                  "ColonCADSRStorage",                                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
184
    { UID_ColorSoftcopyPresentationStateStorage,                                 "ColorSoftcopyPresentationStateStorage",                              "ColorSoftcopyPresentationStateStorage",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
185
    { UID_CompositingPlanarMPRVolumetricPresentationStateStorage,                "CompositingPlanarMPRVolumetricPresentationStateStorage",             "CompositingPlanarMPRVolumetricPresentationStateStorage",             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
186
    { UID_Comprehensive3DSRStorage,                                              "Comprehensive3DSRStorage",                                           "Comprehensive3DSRStorage",                                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
187
    { UID_ComprehensiveSRStorage,                                                "ComprehensiveSRStorage",                                             "ComprehensiveSRStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
188
    { UID_ComputedRadiographyImageStorage,                                       "ComputedRadiographyImageStorage",                                    "ComputedRadiographyImageStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
189
    { UID_ConfocalMicroscopyImageStorage,                                        "ConfocalMicroscopyImageStorage",                                     "ConfocalMicroscopyImageStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
190
    { UID_ConfocalMicroscopyTiledPyramidalImageStorage,                          "ConfocalMicroscopyTiledPyramidalImageStorage",                       "ConfocalMicroscopyTiledPyramidalImageStorage",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
191
    { UID_ContentAssessmentResultsStorage,                                       "ContentAssessmentResultsStorage",                                    "ContentAssessmentResultsStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
192
    { UID_CornealTopographyMapStorage,                                           "CornealTopographyMapStorage",                                        "CornealTopographyMapStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
193
    { UID_CTDefinedProcedureProtocolStorage,                                     "CTDefinedProcedureProtocolStorage",                                  "CTDefinedProcedureProtocolStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NON_PATIENT | UID_PROP_NO_DIR_RECORD } },
194
    { UID_CTImageStorage,                                                        "CTImageStorage",                                                     "CTImageStorage",                                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
195
    { UID_CTImageStorageForProcessing,                                           "CTImageStorageForProcessing",                                        "CTImageStorageForProcessing",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
196
    { UID_CTPerformedProcedureProtocolStorage,                                   "CTPerformedProcedureProtocolStorage",                                "CTPerformedProcedureProtocolStorage",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
197
    { UID_DeformableSpatialRegistrationStorage,                                  "DeformableSpatialRegistrationStorage",                               "DeformableSpatialRegistrationStorage",                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
198
    { UID_DermoscopicPhotographyImageStorage,                                    "DermoscopicPhotographyImageStorage",                                 "DermoscopicPhotographyImageStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
199
    { UID_DigitalIntraOralXRayImageStorageForPresentation,                       "DigitalIntraOralXRayImageStorageForPresentation",                    "DigitalIntraOralXRayImageStorageForPresentation",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
200
    { UID_DigitalIntraOralXRayImageStorageForProcessing,                         "DigitalIntraOralXRayImageStorageForProcessing",                      "DigitalIntraOralXRayImageStorageForProcessing",                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
201
    { UID_DigitalMammographyXRayImageStorageForPresentation,                     "DigitalMammographyXRayImageStorageForPresentation",                  "DigitalMammographyXRayImageStorageForPresentation",                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
202
    { UID_DigitalMammographyXRayImageStorageForProcessing,                       "DigitalMammographyXRayImageStorageForProcessing",                    "DigitalMammographyXRayImageStorageForProcessing",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
203
    { UID_DigitalXRayImageStorageForPresentation,                                "DigitalXRayImageStorageForPresentation",                             "DigitalXRayImageStorageForPresentation",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
204
    { UID_DigitalXRayImageStorageForProcessing,                                  "DigitalXRayImageStorageForProcessing",                               "DigitalXRayImageStorageForProcessing",                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
205
    { UID_ElectromyogramWaveformStorage,                                         "ElectromyogramWaveformStorage",                                      "ElectromyogramWaveformStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
206
    { UID_ElectrooculogramWaveformStorage,                                       "ElectrooculogramWaveformStorage",                                    "ElectrooculogramWaveformStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
207
    { UID_EncapsulatedCDAStorage,                                                "EncapsulatedCDAStorage",                                             "EncapsulatedCDAStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Encapsulated,      UID_PROP_NONE } },
208
    { UID_EncapsulatedMTLStorage,                                                "EncapsulatedMTLStorage",                                             "EncapsulatedMTLStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Encapsulated,      UID_PROP_NONE } },
209
    { UID_EncapsulatedOBJStorage,                                                "EncapsulatedOBJStorage",                                             "EncapsulatedOBJStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Encapsulated,      UID_PROP_NONE } },
210
    { UID_EncapsulatedPDFStorage,                                                "EncapsulatedPDFStorage",                                             "EncapsulatedPDFStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Encapsulated,      UID_PROP_NONE } },
211
    { UID_EncapsulatedSTLStorage,                                                "EncapsulatedSTLStorage",                                             "EncapsulatedSTLStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Encapsulated,      UID_PROP_NONE } },
212
    { UID_EnhancedContinuousRTImageStorage,                                      "EnhancedContinuousRTImageStorage",                                   "EnhancedContinuousRTImageStorage",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
213
    { UID_EnhancedCTImageStorage,                                                "EnhancedCTImageStorage",                                             "EnhancedCTImageStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
214
    { UID_EnhancedCTImageStorageForProcessing,                                   "EnhancedCTImageStorageForProcessing",                                "EnhancedCTImageStorageForProcessing",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
215
    { UID_EnhancedMRColorImageStorage,                                           "EnhancedMRColorImageStorage",                                        "EnhancedMRColorImageStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
216
    { UID_EnhancedMRImageStorage,                                                "EnhancedMRImageStorage",                                             "EnhancedMRImageStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
217
    { UID_EnhancedPETImageStorage,                                               "EnhancedPETImageStorage",                                            "EnhancedPETImageStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
218
    { UID_EnhancedRTImageStorage,                                                "EnhancedRTImageStorage",                                             "EnhancedRTImageStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
219
    { UID_EnhancedSRStorage,                                                     "EnhancedSRStorage",                                                  "EnhancedSRStorage",                                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
220
    { UID_EnhancedUSVolumeStorage,                                               "EnhancedUSVolumeStorage",                                            "EnhancedUSVolumeStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
221
    { UID_EnhancedXAImageStorage,                                                "EnhancedXAImageStorage",                                             "EnhancedXAImageStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
222
    { UID_EnhancedXRayRadiationDoseSRStorage,                                    "EnhancedXRayRadiationDoseSRStorage",                                 "EnhancedXRayRadiationDoseSRStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
223
    { UID_EnhancedXRFImageStorage,                                               "EnhancedXRFImageStorage",                                            "EnhancedXRFImageStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
224
    { UID_ExtensibleSRStorage,                                                   "ExtensibleSRStorage",                                                "ExtensibleSRStorage",                                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
225
    { UID_General32BitECGWaveformStorage,                                        "General32bitECGWaveformStorage",                                     "General32BitECGWaveformStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
226
    { UID_GeneralAudioWaveformStorage,                                           "GeneralAudioWaveformStorage",                                        "GeneralAudioWaveformStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
227
    { UID_GeneralECGWaveformStorage,                                             "GeneralECGWaveformStorage",                                          "GeneralECGWaveformStorage",                                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
228
    { UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,                  "GrayscalePlanarMPRVolumetricPresentationStateStorage",               "GrayscalePlanarMPRVolumetricPresentationStateStorage",               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
229
    { UID_GrayscaleSoftcopyPresentationStateStorage,                             "GrayscaleSoftcopyPresentationStateStorage",                          "GrayscaleSoftcopyPresentationStateStorage",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
230
    { UID_HeightMapSegmentationStorage,                                          "HeightMapSegmentationStorage",                                       "HeightMapSegmentationStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
231
    { UID_HemodynamicWaveformStorage,                                            "HemodynamicWaveformStorage",                                         "HemodynamicWaveformStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
232
    { UID_ImplantationPlanSRStorage,                                             "ImplantationPlanSRStorage",                                          "ImplantationPlanSRStorage",                                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
233
    // the following line is needed for reasons of backward compatibility (name of SOP Class changed, see the previous line)
234
    { UID_ImplantationPlanSRStorage,                                             NULL /* see above */,                                                 "ImplantationPlanSRDocumentStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
235
    { UID_IntraocularLensCalculationsStorage,                                    "IntraocularLensCalculationsStorage",                                 "IntraocularLensCalculationsStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
236
    { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,    "IntravascularOpticalCoherenceTomographyImageStorageForPresentation", "IntravascularOpticalCoherenceTomographyImageStorageForPresentation", { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
237
    { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,      "IntravascularOpticalCoherenceTomographyImageStorageForProcessing",   "IntravascularOpticalCoherenceTomographyImageStorageForProcessing",   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
238
    { UID_KeratometryMeasurementsStorage,                                        "KeratometryMeasurementsStorage",                                     "KeratometryMeasurementsStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
239
    { UID_KeyObjectSelectionDocumentStorage,                                     "KeyObjectSelectionDocumentStorage",                                  "KeyObjectSelectionDocumentStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
240
    { UID_LabelMapSegmentationStorage,                                           "LabelMapSegmentationStorage",                                        "LabelMapSegmentationStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
241
    { UID_LegacyConvertedEnhancedCTImageStorage,                                 "LegacyConvertedEnhancedCTImageStorage",                              "LegacyConvertedEnhancedCTImageStorage",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
242
    { UID_LegacyConvertedEnhancedCTImageStorageForProcessing,                    "LegacyConvertedEnhancedCTImageStorageForProcessing",                 "LegacyConvertedEnhancedCTImageStorageForProcessing",                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
243
    { UID_LegacyConvertedEnhancedMRImageStorage,                                 "LegacyConvertedEnhancedMRImageStorage",                              "LegacyConvertedEnhancedMRImageStorage",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
244
    { UID_LegacyConvertedEnhancedPETImageStorage,                                "LegacyConvertedEnhancedPETImageStorage",                             "LegacyConvertedEnhancedPETImageStorage",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
245
    { UID_LensometryMeasurementsStorage,                                         "LensometryMeasurementsStorage",                                      "LensometryMeasurementsStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
246
    { UID_MacularGridThicknessAndVolumeReportStorage,                            "MacularGridThicknessAndVolumeReportStorage",                         "MacularGridThicknessAndVolumeReportStorage",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
247
    { UID_MammographyCADSRStorage,                                               "MammographyCADSRStorage",                                            "MammographyCADSRStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
248
    { UID_MediaStorageDirectoryStorage,                                          "MediaStorageDirectoryStorage",                                       "MediaStorageDirectoryStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
249
    { UID_MicroscopyBulkSimpleAnnotationsStorage,                                "MicroscopyBulkSimpleAnnotationsStorage",                             "MicroscopyBulkSimpleAnnotationsStorage",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
250
    { UID_MRImageStorage,                                                        "MRImageStorage",                                                     "MRImageStorage",                                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
251
    { UID_MRSpectroscopyStorage,                                                 "MRSpectroscopyStorage",                                              "MRSpectroscopyStorage",                                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
252
    { UID_MultichannelRespiratoryWaveformStorage,                                "MultichannelRespiratoryWaveformStorage",                             "MultichannelRespiratoryWaveformStorage",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
253
    { UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,                   "MultiFrameGrayscaleByteSecondaryCaptureImageStorage",                "MultiframeGrayscaleByteSecondaryCaptureImageStorage",                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
254
    { UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,                   "MultiFrameGrayscaleWordSecondaryCaptureImageStorage",                "MultiframeGrayscaleWordSecondaryCaptureImageStorage",                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
255
    { UID_MultiframeSingleBitSecondaryCaptureImageStorage,                       "MultiFrameSingleBitSecondaryCaptureImageStorage",                    "MultiframeSingleBitSecondaryCaptureImageStorage",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
256
    { UID_MultiframeTrueColorSecondaryCaptureImageStorage,                       "MultiFrameTrueColorSecondaryCaptureImageStorage",                    "MultiframeTrueColorSecondaryCaptureImageStorage",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
257
    { UID_MultipleVolumeRenderingVolumetricPresentationStateStorage,             "MultipleVolumeRenderingVolumetricPresentationStateStorage",          "MultipleVolumeRenderingVolumetricPresentationStateStorage",          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
258
    { UID_NuclearMedicineImageStorage,                                           "NuclearMedicineImageStorage",                                        "NuclearMedicineImageStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
259
    { UID_OphthalmicAxialMeasurementsStorage,                                    "OphthalmicAxialMeasurementsStorage",                                 "OphthalmicAxialMeasurementsStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
260
    { UID_OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage,        "OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage",     "OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage",     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
261
    { UID_OphthalmicOpticalCoherenceTomographyEnFaceImageStorage,                "OphthalmicOpticalCoherenceTomographyEnFaceImageStorage",             "OphthalmicOpticalCoherenceTomographyEnFaceImageStorage",             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
262
    { UID_OphthalmicPhotography16BitImageStorage,                                "OphthalmicPhotography16BitImageStorage",                             "OphthalmicPhotography16BitImageStorage",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
263
    { UID_OphthalmicPhotography8BitImageStorage,                                 "OphthalmicPhotography8BitImageStorage",                              "OphthalmicPhotography8BitImageStorage",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
264
    { UID_OphthalmicThicknessMapStorage,                                         "OphthalmicThicknessMapStorage",                                      "OphthalmicThicknessMapStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
265
    { UID_OphthalmicTomographyImageStorage,                                      "OphthalmicTomographyImageStorage",                                   "OphthalmicTomographyImageStorage",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
266
    { UID_OphthalmicVisualFieldStaticPerimetryMeasurementsStorage,               "OphthalmicVisualFieldStaticPerimetryMeasurementsStorage",            "OphthalmicVisualFieldStaticPerimetryMeasurementsStorage",            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
267
    { UID_ParametricMapStorage,                                                  "ParametricMapStorage",                                               "ParametricMapStorage",                                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_ENHANCED_MF } },
268
    { UID_PatientRadiationDoseSRStorage,                                         "PatientRadiationDoseSRStorage",                                      "PatientRadiationDoseSRStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
269
    { UID_PerformedImagingAgentAdministrationSRStorage,                          "PerformedImagingAgentAdministrationSRStorage",                       "PerformedImagingAgentAdministrationSRStorage",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
270
    { UID_PhotoacousticImageStorage,                                             "PhotoacousticImageStorage",                                          "PhotoacousticImageStorage",                                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
271
    { UID_PlannedImagingAgentAdministrationSRStorage,                            "PlannedImagingAgentAdministrationSRStorage",                         "PlannedImagingAgentAdministrationSRStorage",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
272
    { UID_PositronEmissionTomographyImageStorage,                                "PositronEmissionTomographyImageStorage",                             "PositronEmissionTomographyImageStorage",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
273
    { UID_ProcedureLogStorage,                                                   "ProcedureLogStorage",                                                "ProcedureLogStorage",                                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
274
    { UID_ProtocolApprovalStorage,                                               "ProtocolApprovalStorage",                                            "ProtocolApprovalStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NON_PATIENT | UID_PROP_NO_DIR_RECORD } },
275
    { UID_PseudoColorSoftcopyPresentationStateStorage,                           "PseudoColorSoftcopyPresentationStateStorage",                        "PseudoColorSoftcopyPresentationStateStorage",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
276
    { UID_RadiopharmaceuticalRadiationDoseSRStorage,                             "RadiopharmaceuticalRadiationDoseSRStorage",                          "RadiopharmaceuticalRadiationDoseSRStorage",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
277
    { UID_RawDataStorage,                                                        "RawDataStorage",                                                     "RawDataStorage",                                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
278
    { UID_RealWorldValueMappingStorage,                                          "RealWorldValueMappingStorage",                                       "RealWorldValueMappingStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
279
    { UID_RespiratoryWaveformStorage,                                            "RespiratoryWaveformStorage",                                         "RespiratoryWaveformStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
280
    { UID_RoboticArmRadiationStorage,                                            "RoboticArmRadiationStorage",                                         "RoboticArmRadiationStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
281
    { UID_RoboticRadiationRecordStorage,                                         "RoboticRadiationRecordStorage",                                      "RoboticRadiationRecordStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
282
    { UID_RoutineScalpElectroencephalogramWaveformStorage,                       "RoutineScalpElectroencephalogramWaveformStorage",                    "RoutineScalpElectroencephalogramWaveformStorage",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
283
    { UID_RTBeamsDeliveryInstructionStorage,                                     "RTBeamsDeliveryInstructionStorage",                                  "RTBeamsDeliveryInstructionStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
284
    { UID_RTBeamsTreatmentRecordStorage,                                         "RTBeamsTreatmentRecordStorage",                                      "RTBeamsTreatmentRecordStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
285
    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,                    "RTBrachyApplicationSetupDeliveryInstructionStorage",                 "RTBrachyApplicationSetupDeliveryInstructionStorage",                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
286
    { UID_RTBrachyTreatmentRecordStorage,                                        "RTBrachyTreatmentRecordStorage",                                     "RTBrachyTreatmentRecordStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
287
    { UID_RTDoseStorage,                                                         "RTDoseStorage",                                                      "RTDoseStorage",                                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
288
    { UID_RTImageStorage,                                                        "RTImageStorage",                                                     "RTImageStorage",                                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
289
    { UID_RTIonBeamsTreatmentRecordStorage,                                      "RTIonBeamsTreatmentRecordStorage",                                   "RTIonBeamsTreatmentRecordStorage",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
290
    { UID_RTIonPlanStorage,                                                      "RTIonPlanStorage",                                                   "RTIonPlanStorage",                                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
291
    { UID_RTPatientPositionAcquisitionInstructionStorage,                        "RTPatientPositionAcquisitionInstructionStorage",                     "RTPatientPositionAcquisitionInstructionStorage",                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
292
    { UID_RTPhysicianIntentStorage,                                              "RTPhysicianIntentStorage",                                           "RTPhysicianIntentStorage",                                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
293
    { UID_RTPlanStorage,                                                         "RTPlanStorage",                                                      "RTPlanStorage",                                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
294
    { UID_RTRadiationRecordSetStorage,                                           "RTRadiationRecordSetStorage",                                        "RTRadiationRecordSetStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
295
    { UID_RTRadiationSalvageRecordStorage,                                       "RTRadiationSalvageRecordStorage",                                    "RTRadiationSalvageRecordStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
296
    { UID_RTRadiationSetDeliveryInstructionStorage,                              "RTRadiationSetDeliveryInstructionStorage",                           "RTRadiationSetDeliveryInstructionStorage",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
297
    { UID_RTRadiationSetStorage,                                                 "RTRadiationSetStorage",                                              "RTRadiationSetStorage",                                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
298
    { UID_RTSegmentAnnotationStorage,                                            "RTSegmentAnnotationStorage",                                         "RTSegmentAnnotationStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
299
    { UID_RTStructureSetStorage,                                                 "RTStructureSetStorage",                                              "RTStructureSetStorage",                                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
300
    { UID_RTTreatmentPreparationStorage,                                         "RTTreatmentPreparationStorage",                                      "RTTreatmentPreparationStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
301
    { UID_RTTreatmentSummaryRecordStorage,                                       "RTTreatmentSummaryRecordStorage",                                    "RTTreatmentSummaryRecordStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
302
    { UID_SecondaryCaptureImageStorage,                                          "SecondaryCaptureImageStorage",                                       "SecondaryCaptureImageStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
303
    { UID_SegmentationStorage,                                                   "SegmentationStorage",                                                "SegmentationStorage",                                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
304
    { UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage,            "SegmentedVolumeRenderingVolumetricPresentationStateStorage",         "SegmentedVolumeRenderingVolumetricPresentationStateStorage",         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
305
    { UID_SimplifiedAdultEchoSRStorage,                                          "SimplifiedAdultEchoSRStorage",                                       "SimplifiedAdultEchoSRStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
306
    { UID_SleepElectroencephalogramWaveformStorage,                              "SleepElectroencephalogramWaveformStorage",                           "SleepElectroencephalogramWaveformStorage",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
307
    { UID_SpatialFiducialsStorage,                                               "SpatialFiducialsStorage",                                            "SpatialFiducialsStorage",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
308
    { UID_SpatialRegistrationStorage,                                            "SpatialRegistrationStorage",                                         "SpatialRegistrationStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
309
    { UID_SpectaclePrescriptionReportStorage,                                    "SpectaclePrescriptionReportStorage",                                 "SpectaclePrescriptionReportStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
310
    { UID_StereometricRelationshipStorage,                                       "StereometricRelationshipStorage",                                    "StereometricRelationshipStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
311
    { UID_SubjectiveRefractionMeasurementsStorage,                               "SubjectiveRefractionMeasurementsStorage",                            "SubjectiveRefractionMeasurementsStorage",                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
312
    { UID_SurfaceScanMeshStorage,                                                "SurfaceScanMeshStorage",                                             "SurfaceScanMeshStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
313
    { UID_SurfaceScanPointCloudStorage,                                          "SurfaceScanPointCloudStorage",                                       "SurfaceScanPointCloudStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
314
    { UID_SurfaceSegmentationStorage,                                            "SurfaceSegmentationStorage",                                         "SurfaceSegmentationStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
315
    { UID_TomotherapeuticRadiationRecordStorage,                                 "TomotherapeuticRadiationRecordStorage",                              "TomotherapeuticRadiationRecordStorage",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
316
    { UID_TomotherapeuticRadiationStorage,                                       "TomotherapeuticRadiationStorage",                                    "TomotherapeuticRadiationStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
317
    { UID_TractographyResultsStorage,                                            "TractographyResultsStorage",                                         "TractographyResultsStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
318
    { UID_TwelveLeadECGWaveformStorage,                                          "TwelveLeadECGWaveformStorage",                                       "TwelveLeadECGWaveformStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform,          UID_PROP_NONE } },
319
    { UID_UltrasoundImageStorage,                                                "UltrasoundImageStorage",                                             "UltrasoundImageStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
320
    { UID_UltrasoundMultiframeImageStorage,                                      "UltrasoundMultiFrameImageStorage",                                   "UltrasoundMultiframeImageStorage",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
321
    { UID_VariableModalityLUTSoftcopyPresentationStateStorage,                   "VariableModalityLUTSoftcopyPresentationStateStorage",                "VariableModalityLUTSoftcopyPresentationStateStorage",                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
322
    { UID_VideoEndoscopicImageStorage,                                           "VideoEndoscopicImageStorage",                                        "VideoEndoscopicImageStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
323
    { UID_VideoMicroscopicImageStorage,                                          "VideoMicroscopicImageStorage",                                       "VideoMicroscopicImageStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
324
    { UID_VideoPhotographicImageStorage,                                         "VideoPhotographicImageStorage",                                      "VideoPhotographicImageStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
325
    { UID_VisualAcuityMeasurementsStorage,                                       "VisualAcuityMeasurementsStorage",                                    "VisualAcuityMeasurementsStorage",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
326
    { UID_VLEndoscopicImageStorage,                                              "VLEndoscopicImageStorage",                                           "VLEndoscopicImageStorage",                                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
327
    { UID_VLMicroscopicImageStorage,                                             "VLMicroscopicImageStorage",                                          "VLMicroscopicImageStorage",                                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
328
    { UID_VLPhotographicImageStorage,                                            "VLPhotographicImageStorage",                                         "VLPhotographicImageStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
329
    { UID_VLSlideCoordinatesMicroscopicImageStorage,                             "VLSlideCoordinatesMicroscopicImageStorage",                          "VLSlideCoordinatesMicroscopicImageStorage",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
330
    { UID_VLWholeSlideMicroscopyImageStorage,                                    "VLWholeSlideMicroscopyImageStorage",                                 "VLWholeSlideMicroscopyImageStorage",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
331
    { UID_VolumeRenderingVolumetricPresentationStateStorage,                     "VolumeRenderingVolumetricPresentationStateStorage",                  "VolumeRenderingVolumetricPresentationStateStorage",                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
332
    { UID_WaveformAcquisitionPresentationStateStorage,                           "WaveformAcquisitionPresentationStateStorage",                        "WaveformAcquisitionPresentationStateStorage",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
333
    { UID_WaveformAnnotationSRStorage,                                           "WaveformAnnotationSRStorage",                                        "WaveformAnnotationSRStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
334
    { UID_WaveformPresentationStateStorage,                                      "WaveformPresentationStateStorage",                                   "WaveformPresentationStateStorage",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
335
    { UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,     "WideFieldOphthalmicPhotographyStereographicProjectionImageStorage",  "WideFieldOphthalmicPhotographyStereographicProjectionImageStorage",  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
336
    { UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,               "WideFieldOphthalmicPhotography3DCoordinatesImageStorage",            "WideFieldOphthalmicPhotography3DCoordinatesImageStorage",            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
337
    { UID_XADefinedProcedureProtocolStorage,                                     "XADefinedProcedureProtocolStorage",                                  "XADefinedProcedureProtocolStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NON_PATIENT | UID_PROP_NO_DIR_RECORD } },
338
    { UID_XAPerformedProcedureProtocolStorage,                                   "XAPerformedProcedureProtocolStorage",                                "XAPerformedProcedureProtocolStorage",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other,             UID_PROP_NONE } },
339
    { UID_XAXRFGrayscaleSoftcopyPresentationStateStorage,                        "XAXRFGrayscaleSoftcopyPresentationStateStorage",                     "XAXRFGrayscaleSoftcopyPresentationStateStorage",                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_PresentationState, UID_PROP_NONE } },
340
    { UID_XRay3DAngiographicImageStorage,                                        "XRay3DAngiographicImageStorage",                                     "XRay3DAngiographicImageStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
341
    { UID_XRay3DCraniofacialImageStorage,                                        "XRay3DCraniofacialImageStorage",                                     "XRay3DCraniofacialImageStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_ENHANCED_MF } },
342
    { UID_XRayAngiographicImageStorage,                                          "XRayAngiographicImageStorage",                                       "XRayAngiographicImageStorage",                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
343
    { UID_XRayRadiationDoseSRStorage,                                            "XRayRadiationDoseSRStorage",                                         "XRayRadiationDoseSRStorage",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_StructuredReport,  UID_PROP_NONE } },
344
    { UID_XRayRadiofluoroscopicImageStorage,                                     "XRayRadiofluoroscopicImageStorage",                                  "XRayRadiofluoroscopicImageStorage",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image,             UID_PROP_NONE } },
345
    // Storage (retired)
346
    { UID_RETIRED_HardcopyColorImageStorage,                                     "HardcopyColorImageStorage",                                          "RETIRED_HardcopyColorImageStorage",                                  { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
347
    { UID_RETIRED_HardcopyGrayscaleImageStorage,                                 "HardcopyGrayscaleImageStorage",                                      "RETIRED_HardcopyGrayscaleImageStorage",                              { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
348
    { UID_RETIRED_NuclearMedicineImageStorage,                                   "NuclearMedicineImageStorageRetired",                                 "RETIRED_NuclearMedicineImageStorage",                                { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
349
    { UID_RETIRED_StandaloneCurveStorage,                                        "StandaloneCurveStorage",                                             "RETIRED_StandaloneCurveStorage",                                     { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
350
    { UID_RETIRED_StandaloneModalityLUTStorage,                                  "StandaloneModalityLUTStorage",                                       "RETIRED_StandaloneModalityLUTStorage",                               { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
351
    { UID_RETIRED_StandaloneOverlayStorage,                                      "StandaloneOverlayStorage",                                           "RETIRED_StandaloneOverlayStorage",                                   { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
352
    { UID_RETIRED_StandalonePETCurveStorage,                                     "StandalonePETCurveStorage",                                          "RETIRED_StandalonePETCurveStorage",                                  { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
353
    { UID_RETIRED_StandaloneVOILUTStorage,                                       "StandaloneVOILUTStorage",                                            "RETIRED_StandaloneVOILUTStorage",                                    { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
354
    { UID_RETIRED_StoredPrintStorage,                                            "StoredPrintStorage",                                                 "RETIRED_StoredPrintStorage",                                         { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NONE } },
355
    { UID_RETIRED_UltrasoundImageStorage,                                        "UltrasoundImageStorageRetired",                                      "RETIRED_UltrasoundImageStorage",                                     { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
356
    { UID_RETIRED_UltrasoundMultiframeImageStorage,                              "UltrasoundMultiFrameImageStorageRetired",                            "RETIRED_UltrasoundMultiframeImageStorage",                           { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
357
    { UID_RETIRED_VLImageStorage,                                                "VLImageStorageTrial",                                                "RETIRED_VLImageStorage",                                             { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
358
    { UID_RETIRED_VLMultiframeImageStorage,                                      "VLMultiFrameImageStorageTrial",                                      "RETIRED_VLMultiframeImageStorage",                                   { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
359
    { UID_RETIRED_XRayAngiographicBiPlaneImageStorage,                           "XRayAngiographicBiPlaneImageStorage",                                "RETIRED_XRayAngiographicBiPlaneImageStorage",                        { EUS_DICOM, EUV_Retired, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
360
    // Storage (DICOS)
361
    { UID_DICOS_CTImageStorage,                                                  "DICOSCTImageStorage",                                                "DICOS_CTImageStorage",                                               { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
362
    { UID_DICOS_DigitalXRayImageStorageForPresentation,                          "DICOSDigitalXRayImageStorageForPresentation",                        "DICOS_DigitalXRayImageStorageForPresentation",                       { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
363
    { UID_DICOS_DigitalXRayImageStorageForProcessing,                            "DICOSDigitalXRayImageStorageForProcessing",                          "DICOS_DigitalXRayImageStorageForProcessing",                         { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
364
    { UID_DICOS_ThreatDetectionReportStorage,                                    "DICOSThreatDetectionReportStorage",                                  "DICOS_ThreatDetectionReportStorage",                                 { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NO_DIR_RECORD } },
365
    { UID_DICOS_2DAITStorage,                                                    "DICOS2DAITStorage",                                                  "DICOS_2DAITStorage",                                                 { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NO_DIR_RECORD } },
366
    { UID_DICOS_3DAITStorage,                                                    "DICOS3DAITStorage",                                                  "DICOS_3DAITStorage",                                                 { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NO_DIR_RECORD } },
367
    { UID_DICOS_QuadrupoleResonanceStorage,                                      "DICOSQuadrupoleResonanceStorage",                                    "DICOS_QuadrupoleResonanceStorage",                                   { EUS_DICOS, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_other, UID_PROP_NO_DIR_RECORD } },
368
    // Storage (DICONDE)
369
    { UID_DICONDE_EddyCurrentImageStorage,                                       "EddyCurrentImageStorage",                                            "DICONDE_EddyCurrentImageStorage",                                    { EUS_DICONDE, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
370
    { UID_DICONDE_EddyCurrentMultiframeImageStorage,                             "EddyCurrentMultiFrameImageStorage",                                  "DICONDE_EddyCurrentMultiframeImageStorage",                          { EUS_DICONDE, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
371
    { UID_DICONDE_ThermographyImageStorage,                                      "ThermographyImageStorage",                                           "DICONDE_ThermographyImageStorage",                                   { EUS_DICONDE, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
372
    { UID_DICONDE_ThermographyMultiFrameImageStorage,                            "ThermographyMultiFrameImageStorage",                                 "DICONDE_ThermographyMultiFrameImageStorage",                         { EUS_DICONDE, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Image, UID_PROP_NONE } },
373
    { UID_DICONDE_UltrasoundWaveformStorage,                                     "UltrasoundWaveformStorage",                                          "DICONDE_UltrasoundWaveformStorage",                                  { EUS_DICONDE, EUV_Standard, EUT_SOPClass, EUST_Storage, EUIT_Waveform, UID_PROP_NONE } },
374
375
    // Query/Retrieve
376
    { UID_FINDPatientRootQueryRetrieveInformationModel,                          "PatientRootQueryRetrieveInformationModelFind",                       "FINDPatientRootQueryRetrieveInformationModel",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
377
    { UID_FINDStudyRootQueryRetrieveInformationModel,                            "StudyRootQueryRetrieveInformationModelFind",                         "FINDStudyRootQueryRetrieveInformationModel",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
378
    { UID_GETPatientRootQueryRetrieveInformationModel,                           "PatientRootQueryRetrieveInformationModelGet",                        "GETPatientRootQueryRetrieveInformationModel",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
379
    { UID_GETStudyRootQueryRetrieveInformationModel,                             "StudyRootQueryRetrieveInformationModelGet",                          "GETStudyRootQueryRetrieveInformationModel",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
380
    { UID_MOVEPatientRootQueryRetrieveInformationModel,                          "PatientRootQueryRetrieveInformationModelMove",                       "MOVEPatientRootQueryRetrieveInformationModel",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
381
    { UID_MOVEStudyRootQueryRetrieveInformationModel,                            "StudyRootQueryRetrieveInformationModelMove",                         "MOVEStudyRootQueryRetrieveInformationModel",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
382
    { UID_RETIRED_FINDPatientStudyOnlyQueryRetrieveInformationModel,             "PatientStudyOnlyQueryRetrieveInformationModelFind",                  "RETIRED_FINDPatientStudyOnlyQueryRetrieveInformationModel",          { EUS_DICOM, EUV_Retired,  EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
383
    { UID_GETCompositeInstanceRetrieveWithoutBulkData,                           "CompositeInstanceRetrieveWithoutBulkDataGet",                        "GETCompositeInstanceRetrieveWithoutBulkData",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
384
    { UID_GETCompositeInstanceRootRetrieve,                                      "CompositeInstanceRootRetrieveGet",                                   "GETCompositeInstanceRootRetrieve",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
385
    { UID_RETIRED_GETPatientStudyOnlyQueryRetrieveInformationModel,              "PatientStudyOnlyQueryRetrieveInformationModelGet",                   "RETIRED_GETPatientStudyOnlyQueryRetrieveInformationModel",           { EUS_DICOM, EUV_Retired,  EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
386
    { UID_MOVECompositeInstanceRootRetrieve,                                     "CompositeInstanceRootRetrieveMove",                                  "MOVECompositeInstanceRootRetrieve",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
387
    { UID_RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel,             "PatientStudyOnlyQueryRetrieveInformationModelMove",                  "RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel",          { EUS_DICOM, EUV_Retired,  EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
388
389
    // Modality Worklist
390
    { UID_FINDModalityWorklistInformationModel,                                  "ModalityWorklistInformationModelFind",                               "FINDModalityWorklistInformationModel",                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Worklist, EUIT_other, UID_PROP_NONE } },
391
392
    // General Purpose Worklist (retired)
393
    { UID_RETIRED_FINDGeneralPurposeWorklistInformationModel,                    "GeneralPurposeWorklistInformationModelFind",                         "RETIRED_FINDGeneralPurposeWorklistInformationModel",                 { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_Worklist, EUIT_other, UID_PROP_NONE } },
394
    { UID_RETIRED_GeneralPurposePerformedProcedureStepSOPClass,                  "GeneralPurposePerformedProcedureStep",                               "RETIRED_GeneralPurposePerformedProcedureStepSOPClass",               { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_Worklist, EUIT_other, UID_PROP_NONE } },
395
    { UID_RETIRED_GeneralPurposeScheduledProcedureStepSOPClass,                  "GeneralPurposeScheduledProcedureStep",                               "RETIRED_GeneralPurposeScheduledProcedureStepSOPClass",               { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_Worklist, EUIT_other, UID_PROP_NONE } },
396
    { UID_RETIRED_GeneralPurposeWorklistManagementMetaSOPClass,                  "GeneralPurposeWorklistManagementMeta",                               "RETIRED_GeneralPurposeWorklistManagementMetaSOPClass",               { EUS_DICOM, EUV_Retired, EUT_MetaSOPClass, EUST_Worklist, EUIT_other, UID_PROP_NONE } },
397
398
    // MPPS
399
    { UID_ModalityPerformedProcedureStepNotificationSOPClass,                    "ModalityPerformedProcedureStepNotification",                         "ModalityPerformedProcedureStepNotificationSOPClass",                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
400
    { UID_ModalityPerformedProcedureStepRetrieveSOPClass,                        "ModalityPerformedProcedureStepRetrieve",                             "ModalityPerformedProcedureStepRetrieveSOPClass",                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
401
    { UID_ModalityPerformedProcedureStepSOPClass,                                "ModalityPerformedProcedureStep",                                     "ModalityPerformedProcedureStepSOPClass",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
402
403
    // Radiotherapy
404
    { UID_RTConventionalMachineVerification,                                     "RTConventionalMachineVerification",                                  "RTConventionalMachineVerification",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
405
    { UID_RTIonMachineVerification,                                              "RTIonMachineVerification",                                           "RTIonMachineVerification",                                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
406
407
    // Unified Worklist and Procedure Step
408
    { UID_UnifiedWorklistAndProcedureStepServiceClass,                           "UnifiedWorklistAndProcedureStep",                                    "UnifiedWorklistAndProcedureStepServiceClass",                        { EUS_DICOM, EUV_Standard, EUT_ServiceClass, EUST_other, EUIT_other, UID_PROP_NONE } },
409
    { UID_UnifiedProcedureStepPushSOPClass,                                      "UnifiedProcedureStepPush",                                           "UnifiedProcedureStepPushSOPClass",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
410
    { UID_UnifiedProcedureStepWatchSOPClass,                                     "UnifiedProcedureStepWatch",                                          "UnifiedProcedureStepWatchSOPClass",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
411
    { UID_UnifiedProcedureStepPullSOPClass,                                      "UnifiedProcedureStepPull",                                           "UnifiedProcedureStepPullSOPClass",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
412
    { UID_UnifiedProcedureStepEventSOPClass,                                     "UnifiedProcedureStepEvent",                                          "UnifiedProcedureStepEventSOPClass",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
413
    { UID_UnifiedProcedureStepQuerySOPClass,                                     "UnifiedProcedureStepQuery",                                          "UnifiedProcedureStepQuerySOPClass",                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
414
    { UID_UPSGlobalSubscriptionSOPInstance,                                      "UPSGlobalSubscriptionInstance",                                      "UPSGlobalSubscriptionSOPInstance",                                   { EUS_DICOM, EUV_Standard, EUT_SOPInstance,  EUST_other, EUIT_other, UID_PROP_NONE } },
415
    { UID_UPSFilteredGlobalSubscriptionSOPInstance,                              "UPSFilteredGlobalSubscriptionInstance",                              "UPSFilteredGlobalSubscriptionSOPInstance",                           { EUS_DICOM, EUV_Standard, EUT_SOPInstance,  EUST_other, EUIT_other, UID_PROP_NONE } },
416
417
    // Storage Commitment
418
    { UID_RETIRED_StorageCommitmentPullModelSOPClass,                            "StorageCommitmentPullModel",                                         "RETIRED_StorageCommitmentPullModelSOPClass",                         { EUS_DICOM, EUV_Retired,  EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
419
    { UID_RETIRED_StorageCommitmentPullModelSOPInstance,                         "StorageCommitmentPullModelInstance",                                 "RETIRED_StorageCommitmentPullModelSOPInstance",                      { EUS_DICOM, EUV_Retired,  EUT_SOPInstance, EUST_other, EUIT_other, UID_PROP_NONE } },
420
    { UID_StorageCommitmentPushModelSOPClass,                                    "StorageCommitmentPushModel",                                         "StorageCommitmentPushModelSOPClass",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
421
    { UID_StorageCommitmentPushModelSOPInstance,                                 "StorageCommitmentPushModelInstance",                                 "StorageCommitmentPushModelSOPInstance",                              { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_other, EUIT_other, UID_PROP_NONE } },
422
423
    // Hanging Protocol Storage and Query/Retrieve
424
    { UID_HangingProtocolStorage,                                                "HangingProtocolStorage",                                             "HangingProtocolStorage",                                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
425
    { UID_FINDHangingProtocolInformationModel,                                   "HangingProtocolInformationModelFind",                                "FINDHangingProtocolInformationModel",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
426
    { UID_MOVEHangingProtocolInformationModel,                                   "HangingProtocolInformationModelMove",                                "MOVEHangingProtocolInformationModel",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
427
    { UID_GETHangingProtocolInformationModel,                                    "HangingProtocolInformationModelGet",                                 "GETHangingProtocolInformationModel",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
428
429
    // Relevant Patient Information Query
430
    { UID_BreastImagingRelevantPatientInformationQuery,                          "BreastImagingRelevantPatientInformationQuery",                       "BreastImagingRelevantPatientInformationQuery",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
431
    { UID_CardiacRelevantPatientInformationQuery,                                "CardiacRelevantPatientInformationQuery",                             "CardiacRelevantPatientInformationQuery",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
432
    { UID_GeneralRelevantPatientInformationQuery,                                "GeneralRelevantPatientInformationQuery",                             "GeneralRelevantPatientInformationQuery",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
433
434
    // Color Palette Storage and Query/Retrieve
435
    { UID_ColorPaletteStorage,                                                   "ColorPaletteStorage",                                                "ColorPaletteStorage",                                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
436
    { UID_FINDColorPaletteInformationModel,                                      "ColorPaletteQueryRetrieveInformationModelFind",                      "FINDColorPaletteInformationModel",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
437
    { UID_MOVEColorPaletteInformationModel,                                      "ColorPaletteQueryRetrieveInformationModelMove",                      "MOVEColorPaletteInformationModel",                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
438
    { UID_GETColorPaletteInformationModel,                                       "ColorPaletteQueryRetrieveInformationModelGet",                       "GETColorPaletteInformationModel",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
439
440
    // Implant Template Storage and Query/Retrieve
441
    { UID_GenericImplantTemplateStorage,                                         "GenericImplantTemplateStorage",                                      "GenericImplantTemplateStorage",                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
442
    { UID_FINDGenericImplantTemplateInformationModel,                            "GenericImplantTemplateInformationModelFind",                         "FINDGenericImplantTemplateInformationModel",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
443
    { UID_MOVEGenericImplantTemplateInformationModel,                            "GenericImplantTemplateInformationModelMove",                         "MOVEGenericImplantTemplateInformationModel",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
444
    { UID_GETGenericImplantTemplateInformationModel,                             "GenericImplantTemplateInformationModelGet",                          "GETGenericImplantTemplateInformationModel",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
445
    { UID_ImplantAssemblyTemplateStorage,                                        "ImplantAssemblyTemplateStorage",                                     "ImplantAssemblyTemplateStorage",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
446
    { UID_FINDImplantAssemblyTemplateInformationModel,                           "ImplantAssemblyTemplateInformationModelFind",                        "FINDImplantAssemblyTemplateInformationModel",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
447
    { UID_MOVEImplantAssemblyTemplateInformationModel,                           "ImplantAssemblyTemplateInformationModelMove",                        "MOVEImplantAssemblyTemplateInformationModel",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
448
    { UID_GETImplantAssemblyTemplateInformationModel,                            "ImplantAssemblyTemplateInformationModelGet",                         "GETImplantAssemblyTemplateInformationModel",                         { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
449
    { UID_ImplantTemplateGroupStorage,                                           "ImplantTemplateGroupStorage",                                        "ImplantTemplateGroupStorage",                                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
450
    { UID_FINDImplantTemplateGroupInformationModel,                              "ImplantTemplateGroupInformationModelFind",                           "FINDImplantTemplateGroupInformationModel",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
451
    { UID_MOVEImplantTemplateGroupInformationModel,                              "ImplantTemplateGroupInformationModelMove",                           "MOVEImplantTemplateGroupInformationModel",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
452
    { UID_GETImplantTemplateGroupInformationModel,                               "ImplantTemplateGroupInformationModelGet",                            "GETImplantTemplateGroupInformationModel",                            { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
453
454
    // Defined Procedure Protocol Query/Retrieve
455
    { UID_FINDDefinedProcedureProtocolInformationModel,                          "DefinedProcedureProtocolInformationModelFind",                       "FINDDefinedProcedureProtocolInformationModel",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
456
    { UID_MOVEDefinedProcedureProtocolInformationModel,                          "DefinedProcedureProtocolInformationModelMove",                       "MOVEDefinedProcedureProtocolInformationModel",                       { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
457
    { UID_GETDefinedProcedureProtocolInformationModel,                           "DefinedProcedureProtocolInformationModelGet",                        "GETDefinedProcedureProtocolInformationModel",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
458
459
    // Protocol Approval Query/Retrieve
460
    { UID_FINDProtocolApprovalInformationModel,                                  "ProtocolApprovalInformationModelFind",                               "FINDProtocolApprovalInformationModel",                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
461
    { UID_MOVEProtocolApprovalInformationModel,                                  "ProtocolApprovalInformationModelMove",                               "MOVEProtocolApprovalInformationModel",                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
462
    { UID_GETProtocolApprovalInformationModel,                                   "ProtocolApprovalInformationModelGet",                                "GETProtocolApprovalInformationModel",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
463
464
    // Inventory Storage, Query/Retrieve, and related Services
465
    { UID_InventoryStorage,                                                      "InventoryStorage",                                                   "InventoryStorage",                                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_Storage,       EUIT_other, UID_PROP_NON_PATIENT } },
466
    { UID_FINDInventory,                                                         "InventoryFind",                                                      "FINDInventory",                                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
467
    { UID_MOVEInventory,                                                         "InventoryMove",                                                      "MOVEInventory",                                                      { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
468
    { UID_GETInventory,                                                          "InventoryGet",                                                       "GETInventory",                                                       { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_QueryRetrieve, EUIT_other, UID_PROP_NONE } },
469
    { UID_InventoryCreation,                                                     "InventoryCreation",                                                  "InventoryCreation",                                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other,         EUIT_other, UID_PROP_NONE } },
470
    { UID_RepositoryQuery,                                                       "RepositoryQuery",                                                    "RepositoryQuery",                                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other,         EUIT_other, UID_PROP_NONE } },
471
    { UID_StorageManagementSOPInstance,                                          "StorageManagementInstance",                                          "StorageManagementSOPInstance",                                       { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_other,         EUIT_other, UID_PROP_NONE } },
472
473
    // Print
474
    { UID_BasicAnnotationBoxSOPClass,                                            "BasicAnnotationBox",                                                 "BasicAnnotationBoxSOPClass",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
475
    { UID_BasicColorImageBoxSOPClass,                                            "BasicColorImageBox",                                                 "BasicColorImageBoxSOPClass",                                         { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
476
    { UID_BasicColorPrintManagementMetaSOPClass,                                 "BasicColorPrintManagementMeta",                                      "BasicColorPrintManagementMetaSOPClass",                              { EUS_DICOM, EUV_Standard, EUT_MetaSOPClass, EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
477
    { UID_BasicFilmBoxSOPClass,                                                  "BasicFilmBox",                                                       "BasicFilmBoxSOPClass",                                               { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
478
    { UID_BasicFilmSessionSOPClass,                                              "BasicFilmSession",                                                   "BasicFilmSessionSOPClass",                                           { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
479
    { UID_BasicGrayscaleImageBoxSOPClass,                                        "BasicGrayscaleImageBox",                                             "BasicGrayscaleImageBoxSOPClass",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
480
    { UID_BasicGrayscalePrintManagementMetaSOPClass,                             "BasicGrayscalePrintManagementMeta",                                  "BasicGrayscalePrintManagementMetaSOPClass",                          { EUS_DICOM, EUV_Standard, EUT_MetaSOPClass, EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
481
    { UID_PresentationLUTSOPClass,                                               "PresentationLUT",                                                    "PresentationLUTSOPClass",                                            { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
482
    { UID_PrintJobSOPClass,                                                      "PrintJob",                                                           "PrintJobSOPClass",                                                   { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
483
    { UID_PrinterConfigurationRetrievalSOPClass,                                 "PrinterConfigurationRetrieval",                                      "PrinterConfigurationRetrievalSOPClass",                              { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
484
    { UID_PrinterConfigurationRetrievalSOPInstance,                              "PrinterConfigurationRetrievalInstance",                              "PrinterConfigurationRetrievalSOPInstance",                           { EUS_DICOM, EUV_Standard, EUT_SOPInstance,  EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
485
    { UID_PrinterSOPClass,                                                       "Printer",                                                            "PrinterSOPClass",                                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
486
    { UID_PrinterSOPInstance,                                                    "PrinterInstance",                                                    "PrinterSOPInstance",                                                 { EUS_DICOM, EUV_Standard, EUT_SOPInstance,  EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
487
    { UID_RETIRED_BasicPrintImageOverlayBoxSOPClass,                             "BasicPrintImageOverlayBox",                                          "RETIRED_BasicPrintImageOverlayBoxSOPClass",                          { EUS_DICOM, EUV_Retired,  EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
488
    { UID_RETIRED_ImageOverlayBoxSOPClass,                                       "ImageOverlayBox",                                                    "RETIRED_ImageOverlayBoxSOPClass",                                    { EUS_DICOM, EUV_Retired,  EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
489
    { UID_RETIRED_PrintQueueManagementSOPClass,                                  "PrintQueueManagement",                                               "RETIRED_PrintQueueManagementSOPClass",                               { EUS_DICOM, EUV_Retired,  EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
490
    { UID_RETIRED_PrintQueueSOPInstance,                                         "PrintQueue",                                                         "RETIRED_PrintQueueSOPInstance",                                      { EUS_DICOM, EUV_Retired,  EUT_SOPInstance,  EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
491
    { UID_RETIRED_PullPrintRequestSOPClass,                                      "PullPrintRequest",                                                   "RETIRED_PullPrintRequestSOPClass",                                   { EUS_DICOM, EUV_Retired,  EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
492
    { UID_RETIRED_PullStoredPrintManagementMetaSOPClass,                         "PullStoredPrintManagementMeta",                                      "RETIRED_PullStoredPrintManagementMetaSOPClass",                      { EUS_DICOM, EUV_Retired,  EUT_MetaSOPClass, EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
493
    { UID_RETIRED_ReferencedColorPrintManagementMetaSOPClass,                    "ReferencedColorPrintManagementMeta",                                 "RETIRED_ReferencedColorPrintManagementMetaSOPClass",                 { EUS_DICOM, EUV_Retired,  EUT_MetaSOPClass, EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
494
    { UID_RETIRED_ReferencedGrayscalePrintManagementMetaSOPClass,                "ReferencedGrayscalePrintManagementMeta",                             "RETIRED_ReferencedGrayscalePrintManagementMetaSOPClass",             { EUS_DICOM, EUV_Retired,  EUT_MetaSOPClass, EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
495
    { UID_RETIRED_ReferencedImageBoxSOPClass,                                    "ReferencedImageBox",                                                 "RETIRED_ReferencedImageBoxSOPClass",                                 { EUS_DICOM, EUV_Retired,  EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
496
    { UID_VOILUTBoxSOPClass,                                                     "VOILUTBox",                                                          "VOILUTBoxSOPClass",                                                  { EUS_DICOM, EUV_Standard, EUT_SOPClass,     EUST_PrintManagement, EUIT_other, UID_PROP_NONE } },
497
498
    // Detached Management (retired)
499
    { UID_RETIRED_DetachedInterpretationManagementSOPClass,                      "DetachedInterpretationManagement",                                   "RETIRED_DetachedInterpretationManagementSOPClass",                   { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
500
    { UID_RETIRED_DetachedPatientManagementMetaSOPClass,                         "DetachedPatientManagementMeta",                                      "RETIRED_DetachedPatientManagementMetaSOPClass",                      { EUS_DICOM, EUV_Retired, EUT_MetaSOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
501
    { UID_RETIRED_DetachedPatientManagementSOPClass,                             "DetachedPatientManagement",                                          "RETIRED_DetachedPatientManagementSOPClass",                          { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
502
    { UID_RETIRED_DetachedResultsManagementMetaSOPClass,                         "DetachedResultsManagementMeta",                                      "RETIRED_DetachedResultsManagementMetaSOPClass",                      { EUS_DICOM, EUV_Retired, EUT_MetaSOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
503
    { UID_RETIRED_DetachedResultsManagementSOPClass,                             "DetachedResultsManagement",                                          "RETIRED_DetachedResultsManagementSOPClass",                          { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
504
    { UID_RETIRED_DetachedStudyManagementMetaSOPClass,                           "DetachedStudyManagementMeta",                                        "RETIRED_DetachedStudyManagementMetaSOPClass",                        { EUS_DICOM, EUV_Retired, EUT_MetaSOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
505
    { UID_RETIRED_DetachedStudyManagementSOPClass,                               "DetachedStudyManagement",                                            "RETIRED_DetachedStudyManagementSOPClass",                            { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
506
    { UID_RETIRED_DetachedVisitManagementSOPClass,                               "DetachedVisitManagement",                                            "RETIRED_DetachedVisitManagementSOPClass",                            { EUS_DICOM, EUV_Retired, EUT_SOPClass,     EUST_other, EUIT_other, UID_PROP_NONE } },
507
508
    // Procedure Log
509
    { UID_ProceduralEventLoggingSOPClass,                                        "ProceduralEventLogging",                                             "ProceduralEventLoggingSOPClass",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
510
    { UID_ProceduralEventLoggingSOPInstance,                                     "ProceduralEventLoggingInstance",                                     "ProceduralEventLoggingSOPInstance",                                  { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_other, EUIT_other, UID_PROP_NONE } },
511
512
    // Substance Administration
513
    { UID_SubstanceAdministrationLoggingSOPClass,                                "SubstanceAdministrationLogging",                                     "SubstanceAdministrationLoggingSOPClass",                             { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
514
    { UID_SubstanceAdministrationLoggingSOPInstance,                             "SubstanceAdministrationLoggingInstance",                             "SubstanceAdministrationLoggingSOPInstance",                          { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_other, EUIT_other, UID_PROP_NONE } },
515
    { UID_ProductCharacteristicsQuerySOPClass,                                   "ProductCharacteristicsQuery",                                        "ProductCharacteristicsQuerySOPClass",                                { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
516
    { UID_SubstanceApprovalQuerySOPClass,                                        "SubstanceApprovalQuery",                                             "SubstanceApprovalQuerySOPClass",                                     { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
517
518
    // Media Creation
519
    { UID_MediaCreationManagementSOPClass,                                       "MediaCreationManagement",                                            "MediaCreationManagementSOPClass",                                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
520
521
    // SOP Class Relationship Negotiation
522
    { UID_StorageServiceClass,                                                   "Storage",                                                            "StorageServiceClass",                                                { EUS_DICOM, EUV_Standard, EUT_ServiceClass, EUST_other, EUIT_other, UID_PROP_NONE } },
523
524
    // Instance Availability Notification
525
    { UID_InstanceAvailabilityNotificationSOPClass,                              "InstanceAvailabilityNotification",                                   "InstanceAvailabilityNotificationSOPClass",                           { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
526
527
    // Application Hosting
528
    { UID_NativeDICOMModel,                                                      "NativeDICOMModel",                                                   "NativeDICOMModel",                                                   { EUS_DICOM, EUV_Standard, EUT_ApplicationHosting, EUST_other, EUIT_other, UID_PROP_NONE } },
529
    { UID_AbstractMultiDimensionalImageModel,                                    "AbstractMultiDimensionalImageModel",                                 "AbstractMultiDimensionalImageModel",                                 { EUS_DICOM, EUV_Standard, EUT_ApplicationHosting, EUST_other, EUIT_other, UID_PROP_NONE } },
530
531
    // Communication of Display Parameters
532
    { UID_DisplaySystemSOPClass,                                                 "DisplaySystem",                                                      "DisplaySystemSOPClass",                                              { EUS_DICOM, EUV_Standard, EUT_SOPClass,    EUST_other, EUIT_other, UID_PROP_NONE } },
533
    { UID_DisplaySystemSOPInstance,                                              "DisplaySystemInstance",                                              "DisplaySystemSOPInstance",                                           { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_other, EUIT_other, UID_PROP_NONE } },
534
535
    // Real-Time Video
536
    { UID_VideoEndoscopicImageRealTimeCommunication,                             "VideoEndoscopicImageRealTimeCommunication",                          "VideoEndoscopicImageRealTimeCommunication",                          { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other,            UID_PROP_NONE } },
537
    { UID_VideoPhotographicImageRealTimeCommunication,                           "VideoPhotographicImageRealTimeCommunication",                        "VideoPhotographicImageRealTimeCommunication",                        { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other,            UID_PROP_NONE } },
538
    { UID_AudioWaveformRealTimeCommunication,                                    "AudioWaveformRealTimeCommunication",                                 "AudioWaveformRealTimeCommunication",                                 { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other,            UID_PROP_NONE } },
539
    { UID_RenditionSelectionDocumentRealTimeCommunication,                       "RenditionSelectionDocumentRealTimeCommunication",                    "RenditionSelectionDocumentRealTimeCommunication",                    { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_StructuredReport, UID_PROP_NONE } },
540
541
    // Other
542
    { UID_RETIRED_BasicStudyContentNotificationSOPClass,                         "BasicStudyContentNotification",                                      "RETIRED_BasicStudyContentNotificationSOPClass",                      { EUS_DICOM, EUV_Retired,  EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
543
    { UID_RETIRED_StudyComponentManagementSOPClass,                              "StudyComponentManagement",                                           "RETIRED_StudyComponentManagementSOPClass",                           { EUS_DICOM, EUV_Retired,  EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
544
    { UID_VerificationSOPClass,                                                  "Verification",                                                       "VerificationSOPClass",                                               { EUS_DICOM, EUV_Standard, EUT_SOPClass, EUST_other, EUIT_other, UID_PROP_NONE } },
545
546
    // Mapping Resources
547
    { UID_DICOMContentMappingResource,                                           "DICOMContentMappingResource",                                        "DICOMContentMappingResource",                                        { EUS_DICOM, EUV_Standard, EUT_MappingResource, EUST_other, EUIT_other, UID_PROP_NONE } },
548
549
    // Coding Schemes
550
    { UID_DICOMControlledTerminologyCodingScheme,                                "DCM",                                                                "DICOMControlledTerminologyCodingScheme",                             { EUS_DICOM, EUV_Standard, EUT_CodingScheme, EUST_other, EUIT_other, UID_PROP_NONE } },
551
    { UID_DICOMUIDRegistryCodingScheme,                                          "DCMUID",                                                             "DICOMUIDRegistryCodingScheme",                                       { EUS_DICOM, EUV_Standard, EUT_CodingScheme, EUST_other, EUIT_other, UID_PROP_NONE } },
552
553
    // Configuration Management LDAP UIDs
554
    { UID_LDAP_dicomAETitle,                                                     "dicomAETitle",                                                       "LDAP_dicomAETitle",                                                  { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
555
    { UID_LDAP_dicomApplicationCluster,                                          "dicomApplicationCluster",                                            "LDAP_dicomApplicationCluster",                                       { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
556
    { UID_LDAP_dicomAssociationAcceptor,                                         "dicomAssociationAcceptor",                                           "LDAP_dicomAssociationAcceptor",                                      { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
557
    { UID_LDAP_dicomAssociationInitiator,                                        "dicomAssociationInitiator",                                          "LDAP_dicomAssociationInitiator",                                     { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
558
    { UID_LDAP_dicomAuthorizedNodeCertificateReference,                          "dicomAuthorizedNodeCertificateReference",                            "LDAP_dicomAuthorizedNodeCertificateReference",                       { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
559
    { UID_LDAP_dicomConfigurationRoot,                                           "dicomConfigurationRoot",                                             "LDAP_dicomConfigurationRoot",                                        { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
560
    { UID_LDAP_dicomDescription,                                                 "dicomDescription",                                                   "LDAP_dicomDescription",                                              { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
561
    { UID_LDAP_dicomDevice,                                                      "dicomDevice",                                                        "LDAP_dicomDevice",                                                   { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
562
    { UID_LDAP_dicomDeviceName,                                                  "dicomDeviceName",                                                    "LDAP_dicomDeviceName",                                               { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
563
    { UID_LDAP_dicomDeviceSerialNumber,                                          "dicomDeviceSerialNumber",                                            "LDAP_dicomDeviceSerialNumber",                                       { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
564
    { UID_LDAP_dicomDevicesRoot,                                                 "dicomDevicesRoot",                                                   "LDAP_dicomDevicesRoot",                                              { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
565
    { UID_LDAP_dicomHostname,                                                    "dicomHostname",                                                      "LDAP_dicomHostname",                                                 { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
566
    { UID_LDAP_dicomInstalled,                                                   "dicomInstalled",                                                     "LDAP_dicomInstalled",                                                { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
567
    { UID_LDAP_dicomInstitutionAddress,                                          "dicomInstitutionAddress",                                            "LDAP_dicomInstitutionAddress",                                       { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
568
    { UID_LDAP_dicomInstitutionDepartmentName,                                   "dicomInstitutionDepartmentName",                                     "LDAP_dicomInstitutionDepartmentName",                                { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
569
    { UID_LDAP_dicomInstitutionName,                                             "dicomInstitutionName",                                               "LDAP_dicomInstitutionName",                                          { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
570
    { UID_LDAP_dicomIssuerOfPatientID,                                           "dicomIssuerOfPatientID",                                             "LDAP_dicomIssuerOfPatientID",                                        { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
571
    { UID_LDAP_dicomManufacturer,                                                "dicomManufacturer",                                                  "LDAP_dicomManufacturer",                                             { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
572
    { UID_LDAP_dicomManufacturerModelName,                                       "dicomManufacturerModelName",                                         "LDAP_dicomManufacturerModelName",                                    { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
573
    { UID_LDAP_dicomNetworkAE,                                                   "dicomNetworkAE",                                                     "LDAP_dicomNetworkAE",                                                { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
574
    { UID_LDAP_dicomNetworkConnection,                                           "dicomNetworkConnection",                                             "LDAP_dicomNetworkConnection",                                        { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
575
    { UID_LDAP_dicomNetworkConnectionReference,                                  "dicomNetworkConnectionReference",                                    "LDAP_dicomNetworkConnectionReference",                               { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
576
    { UID_LDAP_dicomPort,                                                        "dicomPort",                                                          "LDAP_dicomPort",                                                     { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
577
    { UID_LDAP_dicomPreferredCalledAETitle,                                      "dicomPreferredCalledAETitle",                                        "LDAP_dicomPreferredCalledAETitle",                                   { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
578
    { UID_LDAP_dicomPreferredCallingAETitle,                                     "dicomPreferredCallingAETitle",                                       "LDAP_dicomPreferredCallingAETitle",                                  { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
579
    { UID_LDAP_dicomPrimaryDeviceType,                                           "dicomPrimaryDeviceType",                                             "LDAP_dicomPrimaryDeviceType",                                        { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
580
    { UID_LDAP_dicomRelatedDeviceReference,                                      "dicomRelatedDeviceReference",                                        "LDAP_dicomRelatedDeviceReference",                                   { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
581
    { UID_LDAP_dicomSOPClass,                                                    "dicomSOPClass",                                                      "LDAP_dicomSOPClass",                                                 { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
582
    { UID_LDAP_dicomSoftwareVersion,                                             "dicomSoftwareVersion",                                               "LDAP_dicomSoftwareVersion",                                          { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
583
    { UID_LDAP_dicomStationName,                                                 "dicomStationName",                                                   "LDAP_dicomStationName",                                              { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
584
    { UID_LDAP_dicomSupportedCharacterSet,                                       "dicomSupportedCharacterSet",                                         "LDAP_dicomSupportedCharacterSet",                                    { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
585
    { UID_LDAP_dicomTLSCyphersuite,                                              "dicomTLSCyphersuite",                                                "LDAP_dicomTLSCyphersuite",                                           { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
586
    { UID_LDAP_dicomThisNodeCertificateReference,                                "dicomThisNodeCertificateReference",                                  "LDAP_dicomThisNodeCertificateReference",                             { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
587
    { UID_LDAP_dicomTransferCapability,                                          "dicomTransferCapability",                                            "LDAP_dicomTransferCapability",                                       { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
588
    { UID_LDAP_dicomTransferRole,                                                "dicomTransferRole",                                                  "LDAP_dicomTransferRole",                                             { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
589
    { UID_LDAP_dicomTransferSyntax,                                              "dicomTransferSyntax",                                                "LDAP_dicomTransferSyntax",                                           { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
590
    { UID_LDAP_dicomUniqueAETitle,                                               "dicomUniqueAETitle",                                                 "LDAP_dicomUniqueAETitle",                                            { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
591
    { UID_LDAP_dicomUniqueAETitlesRegistryRoot,                                  "dicomUniqueAETitlesRegistryRoot",                                    "LDAP_dicomUniqueAETitlesRegistryRoot",                               { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
592
    { UID_LDAP_dicomVendorData,                                                  "dicomVendorData",                                                    "LDAP_dicomVendorData",                                               { EUS_DICOM, EUV_Standard, EUT_LDAP, EUST_other, EUIT_other, UID_PROP_NONE } },
593
594
    // Well-known Frame of References
595
    { UID_ICBM452T1FrameOfReference,                                             "ICBM452T1",                                                          "ICBM452T1FrameOfReference",                                          { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
596
    { UID_ICBMSingleSubjectMRIFrameOfReference,                                  "ICBMSingleSubjectMRI",                                               "ICBMSingleSubjectMRIFrameOfReference",                               { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
597
    { UID_IEC61217FixedCoordinateSystemFrameOfReference,                         "IEC61217FixedCoordinateSystem",                                      "IEC61217FixedCoordinateSystemFrameOfReference",                      { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
598
    { UID_IEC61217TableTopCoordinateSystemFrameOfReference,                      "IEC61217TableTopCoordinateSystem",                                   "IEC61217TableTopCoordinateSystemFrameOfReference",                   { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
599
    { UID_SPM2AVG152PDFrameOfReference,                                          "SPM2AVG152PD",                                                       "SPM2AVG152PDFrameOfReference",                                       { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
600
    { UID_SPM2AVG152T1FrameOfReference,                                          "SPM2AVG152T1",                                                       "SPM2AVG152T1FrameOfReference",                                       { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
601
    { UID_SPM2AVG152T2FrameOfReference,                                          "SPM2AVG152T2",                                                       "SPM2AVG152T2FrameOfReference",                                       { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
602
    { UID_SPM2AVG305T1FrameOfReference,                                          "SPM2AVG305T1",                                                       "SPM2AVG305T1FrameOfReference",                                       { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
603
    { UID_SPM2BRAINMASKFrameOfReference,                                         "SPM2BRAINMASK",                                                      "SPM2BRAINMASKFrameOfReference",                                      { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
604
    { UID_SPM2CSFFrameOfReference,                                               "SPM2CSF",                                                            "SPM2CSFFrameOfReference",                                            { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
605
    { UID_SPM2EPIFrameOfReference,                                               "SPM2EPI",                                                            "SPM2EPIFrameOfReference",                                            { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
606
    { UID_SPM2FILT1FrameOfReference,                                             "SPM2FILT1",                                                          "SPM2FILT1FrameOfReference",                                          { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
607
    { UID_SPM2GRAYFrameOfReference,                                              "SPM2GRAY",                                                           "SPM2GRAYFrameOfReference",                                           { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
608
    { UID_SPM2PDFrameOfReference,                                                "SPM2PD",                                                             "SPM2PDFrameOfReference",                                             { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
609
    { UID_SPM2PETFrameOfReference,                                               "SPM2PET",                                                            "SPM2PETFrameOfReference",                                            { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
610
    { UID_SPM2SINGLESUBJT1FrameOfReference,                                      "SINGLESUBJT1",                                                       "SPM2SINGLESUBJT1FrameOfReference",                                   { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
611
    { UID_SPM2SPECTFrameOfReference,                                             "SPM2SPECT",                                                          "SPM2SPECTFrameOfReference",                                          { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
612
    { UID_SPM2T1FrameOfReference,                                                "SPM2T1",                                                             "SPM2T1FrameOfReference",                                             { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
613
    { UID_SPM2T2FrameOfReference,                                                "SPM2T2",                                                             "SPM2T2FrameOfReference",                                             { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
614
    { UID_SPM2TRANSMFrameOfReference,                                            "SPM2TRANSM",                                                         "SPM2TRANSMFrameOfReference",                                         { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
615
    { UID_SPM2WHITEFrameOfReference,                                             "SPM2WHITE",                                                          "SPM2WHITEFrameOfReference",                                          { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
616
    { UID_StandardRoboticArmCoordinateSystemFrameOfReference,                    "StandardRoboticArmCoordinateSystem",                                 "StandardRoboticArmCoordinateSystemFrameOfReference",                 { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
617
    { UID_TalairachBrainAtlasFrameOfReference,                                   "TalairachBrainAtlas",                                                "TalairachBrainAtlasFrameOfReference",                                { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
618
    { UID_SRI24FrameOfReference,                                                 "SRI24",                                                              "SRI24FrameOfReference",                                              { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
619
    { UID_Colin27FrameOfReference,                                               "Colin27",                                                            "Colin27FrameOfReference",                                            { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
620
    { UID_LPBA40AIRFrameOfReference,                                             "LPBA40AIR",                                                          "LPBA40AIRFrameOfReference",                                          { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
621
    { UID_LPBA40FLIRTFrameOfReference,                                           "LPBA40FLIRT",                                                        "LPBA40FLIRTFrameOfReference",                                        { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
622
    { UID_LPBA40SPM5FrameOfReference,                                            "LPBA40SPM5",                                                         "LPBA40SPM5FrameOfReference",                                         { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
623
624
    // UTC Synchronization Frame of Reference
625
    { UID_UniversalCoordinatedTimeSynchronizationFrameOfReference,               "UTC",                                                                "UniversalCoordinatedTimeSynchronizationFrameOfReference",            { EUS_DICOM, EUV_Standard, EUT_FrameOfReference, EUST_other, EUIT_other, UID_PROP_NONE } },
626
627
    // Well-known SOP Instances for Color Palettes
628
    { UID_HotIronColorPaletteSOPInstance,                                        "HotIronPalette",                                                     "HotIronColorPaletteSOPInstance",                                     { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
629
    { UID_HotMetalBlueColorPaletteSOPInstance,                                   "HotMetalBluePalette",                                                "HotMetalBlueColorPaletteSOPInstance",                                { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
630
    { UID_PET20StepColorPaletteSOPInstance,                                      "PET20StepPalette",                                                   "PET20StepColorPaletteSOPInstance",                                   { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
631
    { UID_PETColorPaletteSOPInstance,                                            "PETPalette",                                                         "PETColorPaletteSOPInstance",                                         { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
632
    { UID_SpringColorPaletteSOPInstance,                                         "SpringPalette",                                                      "SpringColorPaletteSOPInstance",                                      { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
633
    { UID_SummerColorPaletteSOPInstance,                                         "SummerPalette",                                                      "SummerColorPaletteSOPInstance",                                      { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
634
    { UID_FallColorPaletteSOPInstance,                                           "FallPalette",                                                        "FallColorPaletteSOPInstance",                                        { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
635
    { UID_WinterColorPaletteSOPInstance,                                         "WinterPalette",                                                      "WinterColorPaletteSOPInstance",                                      { EUS_DICOM, EUV_Standard, EUT_SOPInstance, EUST_ColorPalette, EUIT_other, UID_PROP_NONE } },
636
637
    // Draft Supplements
638
    { UID_DRAFT_RTBeamsDeliveryInstructionStorage,                               "RTBeamsDeliveryInstructionStorageTrial",                             "DRAFT_RTBeamsDeliveryInstructionStorage",                            { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_other,            UID_PROP_NONE } },
639
    { UID_DRAFT_RTConventionalMachineVerification,                               "RTConventionalMachineVerificationTrial",                             "DRAFT_RTConventionalMachineVerification",                            { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } },
640
    { UID_DRAFT_RTIonMachineVerification,                                        "RTIonMachineVerificationTrial",                                      "DRAFT_RTIonMachineVerification",                                     { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } },
641
    { UID_DRAFT_SRAudioStorage,                                                  "AudioSRStorageTrial",                                                "DRAFT_SRAudioStorage",                                               { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_StructuredReport, UID_PROP_NONE } },
642
    { UID_DRAFT_SRComprehensiveStorage,                                          "ComprehensiveSRStorageTrial",                                        "DRAFT_SRComprehensiveStorage",                                       { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_StructuredReport, UID_PROP_NONE } },
643
    { UID_DRAFT_SRDetailStorage,                                                 "DetailSRStorageTrial",                                               "DRAFT_SRDetailStorage",                                              { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_StructuredReport, UID_PROP_NONE } },
644
    { UID_DRAFT_SRTextStorage,                                                   "TextSRStorageTrial",                                                 "DRAFT_SRTextStorage",                                                { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_StructuredReport, UID_PROP_NONE } },
645
    { UID_DRAFT_WaveformStorage,                                                 "WaveformStorageTrial",                                               "DRAFT_WaveformStorage",                                              { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_Storage, EUIT_Waveform,         UID_PROP_NONE } },
646
    { UID_DRAFT_UnifiedWorklistAndProcedureStepServiceClass,                     "UnifiedWorklistAndProcedureStepTrial",                               "DRAFT_UnifiedWorklistAndProcedureStepServiceClass",                  { EUS_DICOM, EUV_Draft, EUT_ServiceClass, EUST_other,   EUIT_other,            UID_PROP_NONE } },
647
    { UID_DRAFT_UnifiedProcedureStepPushSOPClass,                                "UnifiedProcedureStepPushTrial",                                      "DRAFT_UnifiedProcedureStepPushSOPClass",                             { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } },
648
    { UID_DRAFT_UnifiedProcedureStepWatchSOPClass,                               "UnifiedProcedureStepWatchTrial",                                     "DRAFT_UnifiedProcedureStepWatchSOPClass",                            { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } },
649
    { UID_DRAFT_UnifiedProcedureStepPullSOPClass,                                "UnifiedProcedureStepPullTrial",                                      "DRAFT_UnifiedProcedureStepPullSOPClass",                             { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } },
650
    { UID_DRAFT_UnifiedProcedureStepEventSOPClass,                               "UnifiedProcedureStepEventTrial",                                     "DRAFT_UnifiedProcedureStepEventSOPClass",                            { EUS_DICOM, EUV_Draft, EUT_SOPClass,     EUST_other,   EUIT_other,            UID_PROP_NONE } }
651
};
652
653
static const int uidNameMap_size = OFstatic_cast(int, sizeof(uidNameMap) / sizeof(UIDNameMap));
654
655
656
/** an array of const strings containing all known Storage SOP Classes
657
 *  that fit into the conventional PATIENT-STUDY-SERIES-INSTANCE information
658
 *  model, i.e. everything a Storage SCP might want to store in a PACS.
659
 *  Special cases such as the Hanging Protocol or Color Palette Storage SOP
660
 *  Class are not included in this list but in dcmNonPatientStorageSOPClassUIDs.
661
 *
662
 *  THIS LIST CONTAINS ALL STORAGE SOP CLASSES INCLUDING RETIRED ONES
663
 *  AND IS (MUCH) LARGER THAN 64 ENTRIES.
664
 */
665
const char* dcmAllStorageSOPClassUIDs[] = {
666
    UID_AcquisitionContextSRStorage,
667
    UID_AdvancedBlendingPresentationStateStorage,
668
    UID_AmbulatoryECGWaveformStorage,
669
    UID_ArterialPulseWaveformStorage,
670
    UID_AutorefractionMeasurementsStorage,
671
    UID_BasicStructuredDisplayStorage,
672
    UID_BasicTextSRStorage,
673
    UID_BasicVoiceAudioWaveformStorage,
674
    UID_BlendingSoftcopyPresentationStateStorage,
675
    UID_BodyPositionWaveformStorage,
676
    UID_BreastProjectionXRayImageStorageForPresentation,
677
    UID_BreastProjectionXRayImageStorageForProcessing,
678
    UID_BreastTomosynthesisImageStorage,
679
    UID_CardiacElectrophysiologyWaveformStorage,
680
    UID_CArmPhotonElectronRadiationRecordStorage,
681
    UID_CArmPhotonElectronRadiationStorage,
682
    UID_ChestCADSRStorage,
683
    UID_ColonCADSRStorage,
684
    UID_ColorSoftcopyPresentationStateStorage,
685
    UID_CompositingPlanarMPRVolumetricPresentationStateStorage,
686
    UID_Comprehensive3DSRStorage,
687
    UID_ComprehensiveSRStorage,
688
    UID_ComputedRadiographyImageStorage,
689
    UID_ConfocalMicroscopyImageStorage,
690
    UID_ConfocalMicroscopyTiledPyramidalImageStorage,
691
    UID_ContentAssessmentResultsStorage,
692
    UID_CornealTopographyMapStorage,
693
    UID_CTImageStorage,
694
    UID_CTImageStorageForProcessing,
695
    UID_CTPerformedProcedureProtocolStorage,
696
    UID_DeformableSpatialRegistrationStorage,
697
    UID_DermoscopicPhotographyImageStorage,
698
    UID_DigitalIntraOralXRayImageStorageForPresentation,
699
    UID_DigitalIntraOralXRayImageStorageForProcessing,
700
    UID_DigitalMammographyXRayImageStorageForPresentation,
701
    UID_DigitalMammographyXRayImageStorageForProcessing,
702
    UID_DigitalXRayImageStorageForPresentation,
703
    UID_DigitalXRayImageStorageForProcessing,
704
    UID_ElectromyogramWaveformStorage,
705
    UID_ElectrooculogramWaveformStorage,
706
    UID_EncapsulatedCDAStorage,
707
    UID_EncapsulatedMTLStorage,
708
    UID_EncapsulatedOBJStorage,
709
    UID_EncapsulatedPDFStorage,
710
    UID_EncapsulatedSTLStorage,
711
    UID_EnhancedContinuousRTImageStorage,
712
    UID_EnhancedCTImageStorage,
713
    UID_EnhancedCTImageStorageForProcessing,
714
    UID_EnhancedMRColorImageStorage,
715
    UID_EnhancedMRImageStorage,
716
    UID_EnhancedPETImageStorage,
717
    UID_EnhancedRTImageStorage,
718
    UID_EnhancedSRStorage,
719
    UID_EnhancedUSVolumeStorage,
720
    UID_EnhancedXAImageStorage,
721
    UID_EnhancedXRayRadiationDoseSRStorage,
722
    UID_EnhancedXRFImageStorage,
723
    UID_ExtensibleSRStorage,
724
    UID_General32BitECGWaveformStorage,
725
    UID_GeneralAudioWaveformStorage,
726
    UID_GeneralECGWaveformStorage,
727
    UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,
728
    UID_GrayscaleSoftcopyPresentationStateStorage,
729
    UID_HeightMapSegmentationStorage,
730
    UID_HemodynamicWaveformStorage,
731
    UID_ImplantationPlanSRStorage,
732
    UID_IntraocularLensCalculationsStorage,
733
    UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,
734
    UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,
735
    UID_KeratometryMeasurementsStorage,
736
    UID_KeyObjectSelectionDocumentStorage,
737
    UID_LabelMapSegmentationStorage,
738
    UID_LegacyConvertedEnhancedCTImageStorage,
739
    UID_LegacyConvertedEnhancedCTImageStorageForProcessing,
740
    UID_LegacyConvertedEnhancedMRImageStorage,
741
    UID_LegacyConvertedEnhancedPETImageStorage,
742
    UID_LensometryMeasurementsStorage,
743
    UID_MacularGridThicknessAndVolumeReportStorage,
744
    UID_MammographyCADSRStorage,
745
    UID_MicroscopyBulkSimpleAnnotationsStorage,
746
    UID_MRImageStorage,
747
    UID_MRSpectroscopyStorage,
748
    UID_MultichannelRespiratoryWaveformStorage,
749
    UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,
750
    UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,
751
    UID_MultiframeSingleBitSecondaryCaptureImageStorage,
752
    UID_MultiframeTrueColorSecondaryCaptureImageStorage,
753
    UID_MultipleVolumeRenderingVolumetricPresentationStateStorage,
754
    UID_NuclearMedicineImageStorage,
755
    UID_OphthalmicAxialMeasurementsStorage,
756
    UID_OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage,
757
    UID_OphthalmicOpticalCoherenceTomographyEnFaceImageStorage,
758
    UID_OphthalmicPhotography16BitImageStorage,
759
    UID_OphthalmicPhotography8BitImageStorage,
760
    UID_OphthalmicThicknessMapStorage,
761
    UID_OphthalmicTomographyImageStorage,
762
    UID_OphthalmicVisualFieldStaticPerimetryMeasurementsStorage,
763
    UID_ParametricMapStorage,
764
    UID_PatientRadiationDoseSRStorage,
765
    UID_PerformedImagingAgentAdministrationSRStorage,
766
    UID_PlannedImagingAgentAdministrationSRStorage,
767
    UID_PhotoacousticImageStorage,
768
    UID_PositronEmissionTomographyImageStorage,
769
    UID_ProcedureLogStorage,
770
    UID_PseudoColorSoftcopyPresentationStateStorage,
771
    UID_RadiopharmaceuticalRadiationDoseSRStorage,
772
    UID_RawDataStorage,
773
    UID_RealWorldValueMappingStorage,
774
    UID_RespiratoryWaveformStorage,
775
    UID_RoboticArmRadiationStorage,
776
    UID_RoboticRadiationRecordStorage,
777
    UID_RoutineScalpElectroencephalogramWaveformStorage,
778
    UID_RTBeamsDeliveryInstructionStorage,
779
    UID_RTBeamsTreatmentRecordStorage,
780
    UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
781
    UID_RTBrachyTreatmentRecordStorage,
782
    UID_RTDoseStorage,
783
    UID_RTImageStorage,
784
    UID_RTIonBeamsTreatmentRecordStorage,
785
    UID_RTIonPlanStorage,
786
    UID_RTPatientPositionAcquisitionInstructionStorage,
787
    UID_RTPhysicianIntentStorage,
788
    UID_RTPlanStorage,
789
    UID_RTRadiationRecordSetStorage,
790
    UID_RTRadiationSalvageRecordStorage,
791
    UID_RTRadiationSetDeliveryInstructionStorage,
792
    UID_RTRadiationSetStorage,
793
    UID_RTSegmentAnnotationStorage,
794
    UID_RTStructureSetStorage,
795
    UID_RTTreatmentPreparationStorage,
796
    UID_RTTreatmentSummaryRecordStorage,
797
    UID_SecondaryCaptureImageStorage,
798
    UID_SegmentationStorage,
799
    UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage,
800
    UID_SimplifiedAdultEchoSRStorage,
801
    UID_SleepElectroencephalogramWaveformStorage,
802
    UID_SpatialFiducialsStorage,
803
    UID_SpatialRegistrationStorage,
804
    UID_SpectaclePrescriptionReportStorage,
805
    UID_StereometricRelationshipStorage,
806
    UID_SubjectiveRefractionMeasurementsStorage,
807
    UID_SurfaceScanMeshStorage,
808
    UID_SurfaceScanPointCloudStorage,
809
    UID_SurfaceSegmentationStorage,
810
    UID_TomotherapeuticRadiationRecordStorage,
811
    UID_TomotherapeuticRadiationStorage,
812
    UID_TractographyResultsStorage,
813
    UID_TwelveLeadECGWaveformStorage,
814
    UID_UltrasoundImageStorage,
815
    UID_UltrasoundMultiframeImageStorage,
816
    UID_VariableModalityLUTSoftcopyPresentationStateStorage,
817
    UID_VideoEndoscopicImageStorage,
818
    UID_VideoMicroscopicImageStorage,
819
    UID_VideoPhotographicImageStorage,
820
    UID_VisualAcuityMeasurementsStorage,
821
    UID_VLEndoscopicImageStorage,
822
    UID_VLMicroscopicImageStorage,
823
    UID_VLPhotographicImageStorage,
824
    UID_VLSlideCoordinatesMicroscopicImageStorage,
825
    UID_VLWholeSlideMicroscopyImageStorage,
826
    UID_VolumeRenderingVolumetricPresentationStateStorage,
827
    UID_WaveformAcquisitionPresentationStateStorage,
828
    UID_WaveformAnnotationSRStorage,
829
    UID_WaveformPresentationStateStorage,
830
    UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
831
    UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
832
    UID_XAPerformedProcedureProtocolStorage,
833
    UID_XAXRFGrayscaleSoftcopyPresentationStateStorage,
834
    UID_XRay3DAngiographicImageStorage,
835
    UID_XRay3DCraniofacialImageStorage,
836
    UID_XRayAngiographicImageStorage,
837
    UID_XRayRadiationDoseSRStorage,
838
    UID_XRayRadiofluoroscopicImageStorage,
839
    // non-patient DICOM objects:
840
    // - do not add them here but in dcmNonPatientStorageSOPClassUIDs
841
    // retired
842
    UID_RETIRED_HardcopyColorImageStorage,
843
    UID_RETIRED_HardcopyGrayscaleImageStorage,
844
    UID_RETIRED_NuclearMedicineImageStorage,
845
    UID_RETIRED_StandaloneCurveStorage,
846
    UID_RETIRED_StandaloneModalityLUTStorage,
847
    UID_RETIRED_StandaloneOverlayStorage,
848
    UID_RETIRED_StandalonePETCurveStorage,
849
    UID_RETIRED_StandaloneVOILUTStorage,
850
    UID_RETIRED_StoredPrintStorage,
851
    UID_RETIRED_UltrasoundImageStorage,
852
    UID_RETIRED_UltrasoundMultiframeImageStorage,
853
    UID_RETIRED_VLImageStorage,
854
    UID_RETIRED_VLMultiframeImageStorage,
855
    UID_RETIRED_XRayAngiographicBiPlaneImageStorage,
856
    // draft
857
    UID_DRAFT_SRAudioStorage,
858
    UID_DRAFT_SRComprehensiveStorage,
859
    UID_DRAFT_SRDetailStorage,
860
    UID_DRAFT_SRTextStorage,
861
    UID_DRAFT_WaveformStorage,
862
    UID_DRAFT_RTBeamsDeliveryInstructionStorage,
863
    // DICOS
864
    UID_DICOS_CTImageStorage,
865
    UID_DICOS_DigitalXRayImageStorageForPresentation,
866
    UID_DICOS_DigitalXRayImageStorageForProcessing,
867
    UID_DICOS_ThreatDetectionReportStorage,
868
    UID_DICOS_2DAITStorage,
869
    UID_DICOS_3DAITStorage,
870
    UID_DICOS_QuadrupoleResonanceStorage,
871
    // DICONDE
872
    UID_DICONDE_EddyCurrentImageStorage,
873
    UID_DICONDE_EddyCurrentMultiframeImageStorage,
874
    UID_DICONDE_ThermographyImageStorage,
875
    UID_DICONDE_ThermographyMultiFrameImageStorage,
876
    UID_DICONDE_UltrasoundWaveformStorage,
877
    NULL
878
};
879
880
const int numberOfDcmAllStorageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmAllStorageSOPClassUIDs) / sizeof(const char*) - 1);
881
882
883
/** an array of const strings containing all known Storage SOP Classes
884
 *  that do not fit into the conventional PATIENT-STUDY-SERIES-INSTANCE
885
 *  information model. See function dcmIsaStorageSOPClassUID().
886
 */
887
const char* dcmNonPatientStorageSOPClassUIDs[] = {
888
    UID_ColorPaletteStorage,
889
    UID_CTDefinedProcedureProtocolStorage,
890
    UID_GenericImplantTemplateStorage,
891
    UID_HangingProtocolStorage,
892
    UID_ImplantAssemblyTemplateStorage,
893
    UID_ImplantTemplateGroupStorage,
894
    UID_InventoryStorage,
895
    UID_ProtocolApprovalStorage,
896
    UID_XADefinedProcedureProtocolStorage,
897
    // end marker (important!)
898
    NULL
899
};
900
901
902
/*  an array of const strings containing all storage SOP classes that
903
 *  are proposed by default by those Storage SCU components in DCMTK
904
 *  that always propose one presentation context for each SOP class,
905
 *  e.g. movescu or dcmqrdb. This list is guaranteed to have at most
906
 *  120 entries (currently: 120) to leave enough room for FIND/MOVE
907
 *  presentation contexts.
908
 */
909
const char* dcmLongSCUStorageSOPClassUIDs[] = {
910
    UID_AmbulatoryECGWaveformStorage,
911
    UID_ArterialPulseWaveformStorage,
912
    UID_AutorefractionMeasurementsStorage,
913
    UID_BasicStructuredDisplayStorage,
914
    UID_BasicTextSRStorage,
915
    UID_BasicVoiceAudioWaveformStorage,
916
    UID_BlendingSoftcopyPresentationStateStorage,
917
    UID_BreastTomosynthesisImageStorage,
918
    UID_CardiacElectrophysiologyWaveformStorage,
919
    UID_ChestCADSRStorage,
920
    UID_ColonCADSRStorage,
921
    UID_ColorSoftcopyPresentationStateStorage,
922
    UID_Comprehensive3DSRStorage,
923
    UID_ComprehensiveSRStorage,
924
    UID_ComputedRadiographyImageStorage,
925
    UID_CTImageStorage,
926
    UID_DeformableSpatialRegistrationStorage,
927
    UID_DigitalIntraOralXRayImageStorageForPresentation,
928
    UID_DigitalIntraOralXRayImageStorageForProcessing,
929
    UID_DigitalMammographyXRayImageStorageForPresentation,
930
    UID_DigitalMammographyXRayImageStorageForProcessing,
931
    UID_DigitalXRayImageStorageForPresentation,
932
    UID_DigitalXRayImageStorageForProcessing,
933
    UID_EncapsulatedCDAStorage,
934
    UID_EncapsulatedPDFStorage,
935
    UID_EnhancedCTImageStorage,
936
    UID_EnhancedMRColorImageStorage,
937
    UID_EnhancedMRImageStorage,
938
    UID_EnhancedPETImageStorage,
939
    UID_EnhancedSRStorage,
940
    UID_EnhancedUSVolumeStorage,
941
    UID_EnhancedXAImageStorage,
942
    UID_EnhancedXRFImageStorage,
943
    UID_GeneralAudioWaveformStorage,
944
    UID_GeneralECGWaveformStorage,
945
    UID_GrayscaleSoftcopyPresentationStateStorage,
946
    UID_HemodynamicWaveformStorage,
947
    UID_ImplantationPlanSRStorage,
948
    UID_IntraocularLensCalculationsStorage,
949
    UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,
950
    UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,
951
    UID_KeratometryMeasurementsStorage,
952
    UID_KeyObjectSelectionDocumentStorage,
953
    UID_LegacyConvertedEnhancedCTImageStorage,
954
    UID_LegacyConvertedEnhancedMRImageStorage,
955
    UID_LegacyConvertedEnhancedPETImageStorage,
956
    UID_LensometryMeasurementsStorage,
957
    UID_MacularGridThicknessAndVolumeReportStorage,
958
    UID_MammographyCADSRStorage,
959
    UID_MRImageStorage,
960
    UID_MRSpectroscopyStorage,
961
    UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,
962
    UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,
963
    UID_MultiframeSingleBitSecondaryCaptureImageStorage,
964
    UID_MultiframeTrueColorSecondaryCaptureImageStorage,
965
    UID_NuclearMedicineImageStorage,
966
    UID_OphthalmicAxialMeasurementsStorage,
967
    UID_OphthalmicPhotography16BitImageStorage,
968
    UID_OphthalmicPhotography8BitImageStorage,
969
    UID_OphthalmicThicknessMapStorage,
970
    UID_OphthalmicTomographyImageStorage,
971
    UID_OphthalmicVisualFieldStaticPerimetryMeasurementsStorage,
972
    UID_PositronEmissionTomographyImageStorage,
973
    UID_ProcedureLogStorage,
974
    UID_PseudoColorSoftcopyPresentationStateStorage,
975
    UID_RawDataStorage,
976
    UID_RealWorldValueMappingStorage,
977
    UID_RespiratoryWaveformStorage,
978
    UID_RTBeamsDeliveryInstructionStorage,
979
    UID_RTBeamsTreatmentRecordStorage,
980
    UID_RTBrachyTreatmentRecordStorage,
981
    UID_RTDoseStorage,
982
    UID_RTImageStorage,
983
    UID_RTIonBeamsTreatmentRecordStorage,
984
    UID_RTIonPlanStorage,
985
    UID_RTPlanStorage,
986
    UID_RTStructureSetStorage,
987
    UID_RTTreatmentSummaryRecordStorage,
988
    UID_SecondaryCaptureImageStorage,
989
    UID_SegmentationStorage,
990
    UID_SpatialFiducialsStorage,
991
    UID_SpatialRegistrationStorage,
992
    UID_SpectaclePrescriptionReportStorage,
993
    UID_StereometricRelationshipStorage,
994
    UID_SubjectiveRefractionMeasurementsStorage,
995
    UID_SurfaceScanMeshStorage,
996
    UID_SurfaceScanPointCloudStorage,
997
    UID_SurfaceSegmentationStorage,
998
    UID_TwelveLeadECGWaveformStorage,
999
    UID_UltrasoundImageStorage,
1000
    UID_UltrasoundMultiframeImageStorage,
1001
    UID_VideoEndoscopicImageStorage,
1002
    UID_VideoMicroscopicImageStorage,
1003
    UID_VideoPhotographicImageStorage,
1004
    UID_VisualAcuityMeasurementsStorage,
1005
    UID_VLEndoscopicImageStorage,
1006
    UID_VLMicroscopicImageStorage,
1007
    UID_VLPhotographicImageStorage,
1008
    UID_VLSlideCoordinatesMicroscopicImageStorage,
1009
    UID_VLWholeSlideMicroscopyImageStorage,
1010
    UID_XAXRFGrayscaleSoftcopyPresentationStateStorage,
1011
    UID_XRay3DAngiographicImageStorage,
1012
    UID_XRay3DCraniofacialImageStorage,
1013
    UID_XRayAngiographicImageStorage,
1014
    UID_XRayRadiationDoseSRStorage,
1015
    UID_XRayRadiofluoroscopicImageStorage,
1016
    // recently approved
1017
//  UID_AcquisitionContextSRStorage,
1018
//  UID_AdvancedBlendingPresentationStateStorage,
1019
//  UID_BodyPositionWaveformStorage,
1020
//  UID_BreastProjectionXRayImageStorageForPresentation,
1021
//  UID_BreastProjectionXRayImageStorageForProcessing,
1022
//  UID_CArmPhotonElectronRadiationRecordStorage,
1023
//  UID_CArmPhotonElectronRadiationStorage,
1024
//  UID_CompositingPlanarMPRVolumetricPresentationStateStorage,
1025
//  UID_ConfocalMicroscopyImageStorage,
1026
//  UID_ConfocalMicroscopyTiledPyramidalImageStorage,
1027
//  UID_ContentAssessmentResultsStorage,
1028
//  UID_CornealTopographyMapStorage,
1029
//  UID_CTImageStorageForProcessing,
1030
//  UID_CTPerformedProcedureProtocolStorage,
1031
//  UID_DermoscopicPhotographyImageStorage,
1032
//  UID_ElectromyogramWaveformStorage,
1033
//  UID_ElectrooculogramWaveformStorage,
1034
//  UID_EncapsulatedMTLStorage,
1035
//  UID_EncapsulatedOBJStorage,
1036
//  UID_EncapsulatedSTLStorage,
1037
//  UID_EnhancedContinuousRTImageStorage,
1038
//  UID_EnhancedCTImageStorageForProcessing,
1039
//  UID_EnhancedRTImageStorage,
1040
//  UID_EnhancedXRayRadiationDoseSRStorage,
1041
//  UID_ExtensibleSRStorage,
1042
//  UID_General32BitECGWaveformStorage,
1043
//  UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,
1044
//  UID_HeightMapSegmentationStorage,
1045
//  UID_LabelMapSegmentationStorage,
1046
//  UID_LegacyConvertedEnhancedCTImageStorageForProcessing,
1047
//  UID_MicroscopyBulkSimpleAnnotationsStorage,
1048
//  UID_MultichannelRespiratoryWaveformStorage,
1049
//  UID_MultipleVolumeRenderingVolumetricPresentationStateStorage,
1050
//  UID_OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage,
1051
//  UID_OphthalmicOpticalCoherenceTomographyEnFaceImageStorage,
1052
//  UID_ParametricMapStorage,
1053
//  UID_PatientRadiationDoseSRStorage,
1054
//  UID_PerformedImagingAgentAdministrationSRStorage,
1055
//  UID_PhotoacousticImageStorage,
1056
//  UID_PlannedImagingAgentAdministrationSRStorage,
1057
//  UID_RadiopharmaceuticalRadiationDoseSRStorage,
1058
//  UID_RoboticArmRadiationStorage,
1059
//  UID_RoboticRadiationRecordStorage,
1060
//  UID_RoutineScalpElectroencephalogramWaveformStorage,
1061
//  UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
1062
//  UID_RTPatientPositionAcquisitionInstructionStorage,
1063
//  UID_RTPhysicianIntentStorage,
1064
//  UID_RTRadiationRecordSetStorage,
1065
//  UID_RTRadiationSalvageRecordStorage,
1066
//  UID_RTRadiationSetDeliveryInstructionStorage,
1067
//  UID_RTRadiationSetStorage,
1068
//  UID_RTSegmentAnnotationStorage,
1069
//  UID_RTTreatmentPreparationStorage,
1070
//  UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage,
1071
//  UID_SimplifiedAdultEchoSRStorage,
1072
//  UID_SleepElectroencephalogramWaveformStorage,
1073
//  UID_TomotherapeuticRadiationRecordStorage,
1074
//  UID_TomotherapeuticRadiationStorage,
1075
//  UID_TractographyResultsStorage,
1076
//  UID_VariableModalityLUTSoftcopyPresentationStateStorage,
1077
//  UID_VolumeRenderingVolumetricPresentationStateStorage,
1078
//  UID_WaveformAcquisitionPresentationStateStorage,
1079
//  UID_WaveformAnnotationSRStorage,
1080
//  UID_WaveformPresentationStateStorage,
1081
//  UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
1082
//  UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
1083
//  UID_XAPerformedProcedureProtocolStorage,
1084
    // non-patient
1085
//  UID_ColorPaletteStorage,
1086
//  UID_CTDefinedProcedureProtocolStorage,
1087
//  UID_GenericImplantTemplateStorage,
1088
//  UID_HangingProtocolStorage,
1089
//  UID_ImplantAssemblyTemplateStorage,
1090
//  UID_ImplantTemplateGroupStorage,
1091
//  UID_InventoryStorage,
1092
//  UID_ProtocolApprovalStorage,
1093
//  UID_XADefinedProcedureProtocolStorage,
1094
    // retired
1095
    UID_RETIRED_HardcopyColorImageStorage,
1096
    UID_RETIRED_HardcopyGrayscaleImageStorage,
1097
    UID_RETIRED_NuclearMedicineImageStorage,
1098
    UID_RETIRED_StandaloneCurveStorage,
1099
    UID_RETIRED_StandaloneModalityLUTStorage,
1100
    UID_RETIRED_StandaloneOverlayStorage,
1101
    UID_RETIRED_StandalonePETCurveStorage,
1102
    UID_RETIRED_StandaloneVOILUTStorage,
1103
    UID_RETIRED_StoredPrintStorage,
1104
    UID_RETIRED_UltrasoundImageStorage,
1105
    UID_RETIRED_UltrasoundMultiframeImageStorage,
1106
    UID_RETIRED_VLImageStorage,
1107
    UID_RETIRED_VLMultiframeImageStorage,
1108
    UID_RETIRED_XRayAngiographicBiPlaneImageStorage,
1109
    // draft
1110
//  UID_DRAFT_RTBeamsDeliveryInstructionStorage,
1111
//  UID_DRAFT_SRAudioStorage,
1112
//  UID_DRAFT_SRComprehensiveStorage,
1113
//  UID_DRAFT_SRDetailStorage,
1114
//  UID_DRAFT_SRTextStorage,
1115
//  UID_DRAFT_WaveformStorage,
1116
    // DICOS
1117
//  UID_DICOS_CTImageStorage,
1118
//  UID_DICOS_DigitalXRayImageStorageForPresentation,
1119
//  UID_DICOS_DigitalXRayImageStorageForProcessing,
1120
//  UID_DICOS_ThreatDetectionReportStorage,
1121
//  UID_DICOS_2DAITStorage,
1122
//  UID_DICOS_3DAITStorage,
1123
//  UID_DICOS_QuadrupoleResonanceStorage,
1124
    // DICONDE
1125
//  UID_DICONDE_EddyCurrentImageStorage,
1126
//  UID_DICONDE_EddyCurrentMultiframeImageStorage,
1127
//  UID_DICONDE_ThermographyImageStorage,
1128
//  UID_DICONDE_ThermographyMultiFrameImageStorage,
1129
//  UID_DICONDE_UltrasoundWaveformStorage,
1130
    NULL
1131
};
1132
1133
const int numberOfDcmLongSCUStorageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmLongSCUStorageSOPClassUIDs) / sizeof(const char*) - 1);
1134
1135
1136
/** an array of const strings containing all storage SOP classes that
1137
 *  are proposed by default by those Storage SCU components in DCMTK
1138
 *  that always propose TWO presentation context for each SOP class,
1139
 *  e.g. storescu. This list is guaranteed to have at most 64 entries.
1140
 */
1141
const char* dcmShortSCUStorageSOPClassUIDs[] = {
1142
    /* This list *must* be limited to 64 SOP classes or less (currently: 64).
1143
     * If we have more than 64 storage transfer syntaxes, tools such as
1144
     * storescu will fail because they attempt to negotiate two presentation
1145
     * contexts for each SOP class, and there is a total limit of 128 contexts
1146
     * for one association.
1147
     * Because of this limitation, all draft and retired storage SOP classes
1148
     * are removed from this list. We have also omitted support for some
1149
     * recently approved SOP classes.
1150
     * UID_MediaStorageDirectoryStorage should not be present in this list.
1151
     */
1152
    UID_AmbulatoryECGWaveformStorage,
1153
    UID_BasicTextSRStorage,
1154
    UID_BasicVoiceAudioWaveformStorage,
1155
    UID_BlendingSoftcopyPresentationStateStorage,
1156
    UID_CardiacElectrophysiologyWaveformStorage,
1157
    UID_ChestCADSRStorage,
1158
    UID_ColonCADSRStorage,
1159
    UID_ColorSoftcopyPresentationStateStorage,
1160
    UID_ComprehensiveSRStorage,
1161
    UID_ComputedRadiographyImageStorage,
1162
    UID_CTImageStorage,
1163
    UID_DigitalIntraOralXRayImageStorageForPresentation,
1164
    UID_DigitalIntraOralXRayImageStorageForProcessing,
1165
    UID_DigitalMammographyXRayImageStorageForPresentation,
1166
    UID_DigitalMammographyXRayImageStorageForProcessing,
1167
    UID_DigitalXRayImageStorageForPresentation,
1168
    UID_DigitalXRayImageStorageForProcessing,
1169
    UID_EncapsulatedPDFStorage,
1170
    UID_EnhancedCTImageStorage,
1171
    UID_EnhancedMRImageStorage,
1172
    UID_EnhancedSRStorage,
1173
    UID_EnhancedXAImageStorage,
1174
    UID_EnhancedXRFImageStorage,
1175
    UID_GeneralECGWaveformStorage,
1176
    UID_GrayscaleSoftcopyPresentationStateStorage,
1177
    UID_HemodynamicWaveformStorage,
1178
    UID_KeyObjectSelectionDocumentStorage,
1179
    UID_MammographyCADSRStorage,
1180
    UID_MRImageStorage,
1181
    UID_MRSpectroscopyStorage,
1182
    UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,
1183
    UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,
1184
    UID_MultiframeSingleBitSecondaryCaptureImageStorage,
1185
    UID_MultiframeTrueColorSecondaryCaptureImageStorage,
1186
    UID_NuclearMedicineImageStorage,
1187
    UID_OphthalmicPhotography16BitImageStorage,
1188
    UID_OphthalmicPhotography8BitImageStorage,
1189
    UID_OphthalmicTomographyImageStorage,
1190
    UID_PositronEmissionTomographyImageStorage,
1191
    UID_ProcedureLogStorage,
1192
    UID_PseudoColorSoftcopyPresentationStateStorage,
1193
    UID_RawDataStorage,
1194
    UID_RealWorldValueMappingStorage,
1195
    UID_RTBeamsTreatmentRecordStorage,
1196
    UID_RTBrachyTreatmentRecordStorage,
1197
    UID_RTDoseStorage,
1198
    UID_RTImageStorage,
1199
    UID_RTPlanStorage,
1200
    UID_RTStructureSetStorage,
1201
    UID_RTTreatmentSummaryRecordStorage,
1202
    UID_SecondaryCaptureImageStorage,
1203
    UID_SpatialFiducialsStorage,
1204
    UID_SpatialRegistrationStorage,
1205
    UID_StereometricRelationshipStorage,
1206
    UID_TwelveLeadECGWaveformStorage,
1207
    UID_UltrasoundImageStorage,
1208
    UID_UltrasoundMultiframeImageStorage,
1209
    UID_VLEndoscopicImageStorage,
1210
    UID_VLMicroscopicImageStorage,
1211
    UID_VLPhotographicImageStorage,
1212
    UID_VLSlideCoordinatesMicroscopicImageStorage,
1213
    UID_XRayAngiographicImageStorage,
1214
    UID_XRayRadiationDoseSRStorage,
1215
    UID_XRayRadiofluoroscopicImageStorage,
1216
    NULL
1217
};
1218
1219
const int numberOfDcmShortSCUStorageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmShortSCUStorageSOPClassUIDs) / sizeof(const char*) - 1);
1220
1221
1222
/*
1223
** The global variable dcmImageSOPClassUIDs is an array of
1224
** string pointers containing the UIDs of all known Image SOP
1225
** Classes.  The instances of SOP Classes in this list can be
1226
** referenced from DICOMDIR IMAGE records.
1227
**
1228
** The dcmgpdir/dcmmkdir program uses this list to determine
1229
** what kind of objects can be referenced from IMAGE records.
1230
** Be _very_ careful when adding SOP Classes to this list!!
1231
**
1232
** The global variable numberOfDcmImageSOPClassUIDs defines the
1233
** size of the array.
1234
*/
1235
const char* dcmImageSOPClassUIDs[] = {
1236
    UID_BreastProjectionXRayImageStorageForPresentation,
1237
    UID_BreastProjectionXRayImageStorageForProcessing,
1238
    UID_BreastTomosynthesisImageStorage,
1239
    UID_ComputedRadiographyImageStorage,
1240
    UID_ConfocalMicroscopyImageStorage,
1241
    UID_ConfocalMicroscopyTiledPyramidalImageStorage,
1242
    UID_CTImageStorage,
1243
    UID_CTImageStorageForProcessing,
1244
    UID_CornealTopographyMapStorage,
1245
    UID_DermoscopicPhotographyImageStorage,
1246
    UID_DigitalIntraOralXRayImageStorageForPresentation,
1247
    UID_DigitalIntraOralXRayImageStorageForProcessing,
1248
    UID_DigitalMammographyXRayImageStorageForPresentation,
1249
    UID_DigitalMammographyXRayImageStorageForProcessing,
1250
    UID_DigitalXRayImageStorageForPresentation,
1251
    UID_DigitalXRayImageStorageForProcessing,
1252
    UID_EnhancedContinuousRTImageStorage,
1253
    UID_EnhancedCTImageStorage,
1254
    UID_EnhancedCTImageStorageForProcessing,
1255
    UID_EnhancedMRColorImageStorage,
1256
    UID_EnhancedMRImageStorage,
1257
    UID_EnhancedPETImageStorage,
1258
    UID_EnhancedRTImageStorage,
1259
    UID_EnhancedUSVolumeStorage,
1260
    UID_EnhancedXAImageStorage,
1261
    UID_EnhancedXRFImageStorage,
1262
    UID_HeightMapSegmentationStorage,
1263
    UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,
1264
    UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,
1265
    UID_LabelMapSegmentationStorage,
1266
    UID_LegacyConvertedEnhancedCTImageStorage,
1267
    UID_LegacyConvertedEnhancedCTImageStorageForProcessing,
1268
    UID_LegacyConvertedEnhancedMRImageStorage,
1269
    UID_LegacyConvertedEnhancedPETImageStorage,
1270
    UID_MRImageStorage,
1271
    UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,
1272
    UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,
1273
    UID_MultiframeSingleBitSecondaryCaptureImageStorage,
1274
    UID_MultiframeTrueColorSecondaryCaptureImageStorage,
1275
    UID_NuclearMedicineImageStorage,
1276
    UID_OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage,
1277
    UID_OphthalmicOpticalCoherenceTomographyEnFaceImageStorage,
1278
    UID_OphthalmicPhotography16BitImageStorage,
1279
    UID_OphthalmicPhotography8BitImageStorage,
1280
    UID_OphthalmicThicknessMapStorage,
1281
    UID_OphthalmicTomographyImageStorage,
1282
    UID_ParametricMapStorage,
1283
    UID_PhotoacousticImageStorage,
1284
    UID_PositronEmissionTomographyImageStorage,
1285
    UID_RTImageStorage,
1286
    UID_SecondaryCaptureImageStorage,
1287
    UID_SegmentationStorage,
1288
    UID_UltrasoundImageStorage,
1289
    UID_UltrasoundMultiframeImageStorage,
1290
    UID_VideoEndoscopicImageStorage,
1291
    UID_VideoMicroscopicImageStorage,
1292
    UID_VideoPhotographicImageStorage,
1293
    UID_VLEndoscopicImageStorage,
1294
    UID_VLMicroscopicImageStorage,
1295
    UID_VLPhotographicImageStorage,
1296
    UID_VLSlideCoordinatesMicroscopicImageStorage,
1297
    UID_VLWholeSlideMicroscopyImageStorage,
1298
    UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
1299
    UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
1300
    UID_XRay3DAngiographicImageStorage,
1301
    UID_XRay3DCraniofacialImageStorage,
1302
    UID_XRayAngiographicImageStorage,
1303
    UID_XRayRadiofluoroscopicImageStorage,
1304
    // retired
1305
    UID_RETIRED_HardcopyColorImageStorage,
1306
    UID_RETIRED_HardcopyGrayscaleImageStorage,
1307
    UID_RETIRED_NuclearMedicineImageStorage,
1308
    UID_RETIRED_UltrasoundImageStorage,
1309
    UID_RETIRED_UltrasoundMultiframeImageStorage,
1310
    UID_RETIRED_VLImageStorage,
1311
    UID_RETIRED_VLMultiframeImageStorage,
1312
    UID_RETIRED_XRayAngiographicBiPlaneImageStorage,
1313
    // DICOS
1314
    UID_DICOS_CTImageStorage,
1315
    UID_DICOS_DigitalXRayImageStorageForPresentation,
1316
    UID_DICOS_DigitalXRayImageStorageForProcessing,
1317
    // DICONDE
1318
    UID_DICONDE_EddyCurrentImageStorage,
1319
    UID_DICONDE_EddyCurrentMultiframeImageStorage,
1320
    UID_DICONDE_ThermographyImageStorage,
1321
    UID_DICONDE_ThermographyMultiFrameImageStorage,
1322
    NULL
1323
};
1324
1325
const int numberOfDcmImageSOPClassUIDs = OFstatic_cast(int, sizeof(dcmImageSOPClassUIDs) / sizeof(const char*) - 1);
1326
1327
1328
typedef struct {
1329
    const char *sopClass;       /* official UID value */
1330
    const char *modality;       /* short character code */
1331
    unsigned long averageSize;  /* can be way, way out */
1332
} DcmModalityTable;
1333
1334
/*
1335
** The modalities table defines a short character code for each
1336
** Storage SOP Class for use in filenames.
1337
** It also gives a typical size for each SOP Instance.  This will
1338
** usually be way out, but is useful in user interfaces to give an
1339
** idea of progress when receiving an image (C-STORE does not indicate
1340
** the size of an image being transmitted).
1341
*/
1342
static const DcmModalityTable modalities[] = {
1343
    { UID_AcquisitionContextSRStorage,                             "SRa",  4096 },
1344
    { UID_AdvancedBlendingPresentationStateStorage,                "PSa",  4096 },
1345
    { UID_AmbulatoryECGWaveformStorage,                            "ECA",  4096 },
1346
    { UID_ArterialPulseWaveformStorage,                            "WVa",  4096 },
1347
    { UID_AutorefractionMeasurementsStorage,                       "OPa",  4096 },
1348
    { UID_BasicStructuredDisplayStorage,                           "SD",   4096 },
1349
    { UID_BasicTextSRStorage,                                      "SRt",  4096 },
1350
    { UID_BasicVoiceAudioWaveformStorage,                          "AUV",  4096 },
1351
    { UID_BlendingSoftcopyPresentationStateStorage,                "PSb",  4096 },
1352
    { UID_BodyPositionWaveformStorage,                             "WVb",  4096 },
1353
    { UID_BreastProjectionXRayImageStorageForPresentation,         "BX",   4096 * 4096 * 2 },
1354
    { UID_BreastProjectionXRayImageStorageForProcessing,           "BP",   4096 * 4096 * 2 },
1355
    { UID_BreastTomosynthesisImageStorage,                         "BT",   4096 * 4096 * 2 },
1356
    { UID_CardiacElectrophysiologyWaveformStorage,                 "WVc",  4096 },
1357
    { UID_CArmPhotonElectronRadiationRecordStorage,                "RRc",  4096 },
1358
    { UID_CArmPhotonElectronRadiationStorage,                      "Rca",  4096 },
1359
    { UID_ChestCADSRStorage,                                       "SRh",  4096 },
1360
    { UID_ColonCADSRStorage,                                       "SRo",  4096 },
1361
    { UID_ColorPaletteStorage,                                     "CP",   4096 },
1362
    { UID_ColorSoftcopyPresentationStateStorage,                   "PSc",  4096 },
1363
    { UID_CompositingPlanarMPRVolumetricPresentationStateStorage,  "VPc",  4096 },
1364
    { UID_Comprehensive3DSRStorage,                                "SR3",  4096 },
1365
    { UID_ComprehensiveSRStorage,                                  "SRc",  4096 },
1366
    { UID_ComputedRadiographyImageStorage,                         "CR",   2048 * 2048 * 2 },
1367
    { UID_ConfocalMicroscopyImageStorage,                          "CFm",  1024 * 1024 },
1368
    { UID_ConfocalMicroscopyTiledPyramidalImageStorage,            "CFt",  1024 * 1024 * 10 },
1369
    { UID_ContentAssessmentResultsStorage,                         "AS",   4096 },
1370
    { UID_CornealTopographyMapStorage,                             "CM",   512 * 512 },
1371
    { UID_CTDefinedProcedureProtocolStorage,                       "PPcd", 4096 },  /* was PPd */
1372
    { UID_CTImageStorage,                                          "CT",   512 * 512 * 2 },
1373
    { UID_CTImageStorageForProcessing,                             "CT",   512 * 512 * 2 },  /* same prefix as "for presentation" */
1374
    { UID_CTPerformedProcedureProtocolStorage,                     "PPcp", 4096 },  /* was PPp */
1375
    { UID_DeformableSpatialRegistrationStorage,                    "RGd",  4096 },
1376
    { UID_DermoscopicPhotographyImageStorage,                      "VLd",  768 * 576 * 3 },
1377
    { UID_DigitalIntraOralXRayImageStorageForPresentation,         "DXo",  1024 * 1024 * 2 },
1378
    { UID_DigitalIntraOralXRayImageStorageForProcessing,           "DPo",  1024 * 1024 * 2 },
1379
    { UID_DigitalMammographyXRayImageStorageForPresentation,       "DXm",  4096 * 4096 * 2 },
1380
    { UID_DigitalMammographyXRayImageStorageForProcessing,         "DPm",  4096 * 4096 * 2 },
1381
    { UID_DigitalXRayImageStorageForPresentation,                  "DX",   2048 * 2048 * 2 },
1382
    { UID_DigitalXRayImageStorageForProcessing,                    "DP",   2048 * 2048 * 2 },
1383
    { UID_ElectromyogramWaveformStorage,                           "EMG",  4096 },
1384
    { UID_ElectrooculogramWaveformStorage,                         "EOG",  4096 },
1385
    { UID_EncapsulatedCDAStorage,                                  "CDA",  4096 },
1386
    { UID_EncapsulatedMTLStorage,                                  "MTL",  4096 },
1387
    { UID_EncapsulatedOBJStorage,                                  "OBJ",  4096 },
1388
    { UID_EncapsulatedPDFStorage,                                  "PDF",  1024 * 1024 },
1389
    { UID_EncapsulatedSTLStorage,                                  "STL",  4096 },
1390
    { UID_EnhancedContinuousRTImageStorage,                        "RIc",  4096 },
1391
    { UID_EnhancedCTImageStorage,                                  "CTe",  256 * 512 * 512 },
1392
    { UID_EnhancedCTImageStorageForProcessing,                     "CTe",  256 * 512 * 512 },  /* same prefix as "for presentation" */
1393
    { UID_EnhancedMRColorImageStorage,                             "MRc",  256 * 512 * 512 * 3 },
1394
    { UID_EnhancedMRImageStorage,                                  "MRe",  256 * 512 * 512 },
1395
    { UID_EnhancedPETImageStorage,                                 "PIe",  512 * 512 * 2 },
1396
    { UID_EnhancedRTImageStorage,                                  "RIe",  4096 },
1397
    { UID_EnhancedSRStorage,                                       "SRe",  4096 },
1398
    { UID_EnhancedUSVolumeStorage,                                 "USe",  512 * 512 },
1399
    { UID_EnhancedXAImageStorage,                                  "XAe",  256 * 512 * 512 },
1400
    { UID_EnhancedXRayRadiationDoseSRStorage,                      "SRde", 4096 },
1401
    { UID_EnhancedXRFImageStorage,                                 "RFe",  256 * 512 * 512 },
1402
    { UID_ExtensibleSRStorage,                                     "SRx",  4096 },
1403
    { UID_General32BitECGWaveformStorage,                          "ECGh", 4096 },
1404
    { UID_GeneralAudioWaveformStorage,                             "AUG",  4096 },
1405
    { UID_GeneralECGWaveformStorage,                               "ECG",  4096 },
1406
    { UID_GenericImplantTemplateStorage,                           "IT",   4096 },
1407
    { UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,    "VPg",  4096 },
1408
    { UID_GrayscaleSoftcopyPresentationStateStorage,               "PSg",  4096 },
1409
    { UID_HangingProtocolStorage,                                  "HP",   4096 },
1410
    { UID_HeightMapSegmentationStorage,                            "SGh",  512 * 512 },
1411
    { UID_HemodynamicWaveformStorage,                              "WVh",  4096 },
1412
    { UID_ImplantAssemblyTemplateStorage,                          "ITa",  4096 },
1413
    { UID_ImplantationPlanSRStorage,                               "SRi",  4096 },
1414
    { UID_ImplantTemplateGroupStorage,                             "ITg",  4096 },
1415
    { UID_IntraocularLensCalculationsStorage,                      "OPc",  4096 },
1416
    { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation, "OCt", 512 * 512 },
1417
    { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing, "OCp", 512 * 512 },
1418
    { UID_InventoryStorage,                                        "INV",  4096 },
1419
    { UID_KeratometryMeasurementsStorage,                          "OPk",  4096 },
1420
    { UID_KeyObjectSelectionDocumentStorage,                       "KO",   4096 },
1421
    { UID_LabelMapSegmentationStorage,                             "SGl",  512 * 512 },
1422
    { UID_LegacyConvertedEnhancedCTImageStorage,                   "CTl",  512 * 512 * 2 },
1423
    { UID_LegacyConvertedEnhancedCTImageStorageForProcessing,      "CTl",  512 * 512 * 2 },  /* same prefix as "for presentation" */
1424
    { UID_LegacyConvertedEnhancedMRImageStorage,                   "MRl",  256 * 256 * 2 },
1425
    { UID_LegacyConvertedEnhancedPETImageStorage,                  "PIl",  512 * 512 * 2 },
1426
    { UID_LensometryMeasurementsStorage,                           "OPl",  4096 },
1427
    { UID_MacularGridThicknessAndVolumeReportStorage,              "SRg",  4096 },
1428
    { UID_MammographyCADSRStorage,                                 "SRm",  4096 },
1429
    { UID_MicroscopyBulkSimpleAnnotationsStorage,                  "MAs",  4096 },
1430
    { UID_MRImageStorage,                                          "MR",   256 * 256 * 2 },
1431
    { UID_MRSpectroscopyStorage,                                   "MRs",  256 * 512 * 512 },
1432
    { UID_MultichannelRespiratoryWaveformStorage,                  "WVm",  4096 },
1433
    { UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage,     "SCb",  512 * 512 },
1434
    { UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage,     "SCw",  512 * 512 * 2 },
1435
    { UID_MultiframeSingleBitSecondaryCaptureImageStorage,         "SCs",  1024 * 1024 },  /* roughly an A4 300dpi scan */
1436
    { UID_MultiframeTrueColorSecondaryCaptureImageStorage,         "SCc",  512 * 512 * 3 },
1437
    { UID_MultipleVolumeRenderingVolumetricPresentationStateStorage, "VPm" , 4096 },
1438
    { UID_NuclearMedicineImageStorage,                             "NM",   64 * 64 * 2 },
1439
    { UID_OphthalmicAxialMeasurementsStorage,                      "OPx",  4096 },
1440
    { UID_OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage, "OCb" , 768 * 576 },
1441
    { UID_OphthalmicOpticalCoherenceTomographyEnFaceImageStorage,  "OCe",  768 * 576  * 2 },
1442
    { UID_OphthalmicPhotography16BitImageStorage,                  "OPw",  768 * 576 * 6 },
1443
    { UID_OphthalmicPhotography8BitImageStorage,                   "OPb",  768 * 576 * 3 },
1444
    { UID_OphthalmicThicknessMapStorage,                           "OPm",  768 * 576 },
1445
    { UID_OphthalmicTomographyImageStorage,                        "OPt",  768 * 576 * 3 },
1446
    { UID_OphthalmicVisualFieldStaticPerimetryMeasurementsStorage, "OPp",  4096 },
1447
    { UID_ParametricMapStorage,                                    "PM",   256 * 256 * 4 },
1448
    { UID_PatientRadiationDoseSRStorage,                           "SRq",  4096 },
1449
    { UID_PerformedImagingAgentAdministrationSRStorage,            "SRi",  4096 },
1450
    { UID_PhotoacousticImageStorage,                               "PA",   256 * 512 * 512 },
1451
    { UID_PlannedImagingAgentAdministrationSRStorage,              "SRj",  4096 },
1452
    { UID_PositronEmissionTomographyImageStorage,                  "PI",   512 * 512 * 2 },
1453
    { UID_ProcedureLogStorage,                                     "SRp",  4096 },
1454
    { UID_ProtocolApprovalStorage,                                 "PAp",  4096 },  /* was PA */
1455
    { UID_PseudoColorSoftcopyPresentationStateStorage,             "PSp",  4096 },
1456
    { UID_RadiopharmaceuticalRadiationDoseSRStorage,               "SRr",  4096 },
1457
    { UID_RawDataStorage,                                          "RAW",  256 * 512 * 512 },
1458
    { UID_RealWorldValueMappingStorage,                            "RWM",  4096 },
1459
    { UID_RespiratoryWaveformStorage,                              "WVr",  4096 },
1460
    { UID_RoboticArmRadiationStorage,                              "Rra",  4096 },  /* was RRr */
1461
    { UID_RoboticRadiationRecordStorage,                           "RRr",  4096 },
1462
    { UID_RoutineScalpElectroencephalogramWaveformStorage,         "EEG",  4096 },
1463
    { UID_RTBeamsDeliveryInstructionStorage,                       "RTd",  4096 },
1464
    { UID_RTBeamsTreatmentRecordStorage,                           "RTb",  4096 },
1465
    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,      "RTa",  4096 },
1466
    { UID_RTBrachyTreatmentRecordStorage,                          "RTr",  4096 },
1467
    { UID_RTDoseStorage,                                           "RD",   4096 },
1468
    { UID_RTImageStorage,                                          "RI",   4096 },
1469
    { UID_RTIonBeamsTreatmentRecordStorage,                        "RTi",  4096 },
1470
    { UID_RTIonPlanStorage,                                        "RPi",  4096 },
1471
    { UID_RTPatientPositionAcquisitionInstructionStorage,          "RPp",  4096 },
1472
    { UID_RTPlanStorage,                                           "RP" ,  4096 },
1473
    { UID_RTPhysicianIntentStorage,                                "RIp",  4096 },
1474
    { UID_RTRadiationRecordSetStorage,                             "RSr",  4096 },
1475
    { UID_RTRadiationSalvageRecordStorage,                         "RRs",  4096 },
1476
    { UID_RTRadiationSetDeliveryInstructionStorage,                "RSd",  4096 },
1477
    { UID_RTRadiationSetStorage,                                   "RSe",  4096 },  /* was RRs */
1478
    { UID_RTSegmentAnnotationStorage,                              "RAs",  4096 },  /* was RRs */
1479
    { UID_RTStructureSetStorage,                                   "RS",   4096 },
1480
    { UID_RTTreatmentPreparationStorage,                           "RTp",  4096 },
1481
    { UID_RTTreatmentSummaryRecordStorage,                         "RTs",  4096 },
1482
    { UID_SecondaryCaptureImageStorage,                            "SC",   512 * 512 * 2 },
1483
    { UID_SegmentationStorage,                                     "SG",   512 * 512 },
1484
    { UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage, "VPs", 4096 },
1485
    { UID_SimplifiedAdultEchoSRStorage,                            "SRu",  4096 },
1486
    { UID_SleepElectroencephalogramWaveformStorage,                "WVs",  4096 },
1487
    { UID_SpatialFiducialsStorage,                                 "FID",  4096 },
1488
    { UID_SpatialRegistrationStorage,                              "RGs",  4096 },
1489
    { UID_SpectaclePrescriptionReportStorage,                      "SRs",  4096 },
1490
    { UID_StereometricRelationshipStorage,                         "OPr",  4096 },
1491
    { UID_SubjectiveRefractionMeasurementsStorage,                 "OPs",  4096 },
1492
    { UID_SurfaceScanMeshStorage,                                  "SSm",  4096 },
1493
    { UID_SurfaceScanPointCloudStorage,                            "SSp",  4096 },
1494
    { UID_SurfaceSegmentationStorage,                              "SGs",  4096 },
1495
    { UID_TomotherapeuticRadiationRecordStorage,                   "RRt",  4096 },
1496
    { UID_TomotherapeuticRadiationStorage,                         "Rto",  4096 },  /* was RRt */
1497
    { UID_TractographyResultsStorage,                              "TR",   4096 },
1498
    { UID_TwelveLeadECGWaveformStorage,                            "TLE",  4096 },
1499
    { UID_UltrasoundImageStorage,                                  "US",   512 * 512 },
1500
    { UID_UltrasoundMultiframeImageStorage,                        "USm",  512 * 512 },
1501
    { UID_VariableModalityLUTSoftcopyPresentationStateStorage,     "PSv",  4096 },
1502
    { UID_VideoEndoscopicImageStorage,                             "VVe",  768 * 576 * 3 },
1503
    { UID_VideoMicroscopicImageStorage,                            "VVm",  768 * 576 * 3 },
1504
    { UID_VideoPhotographicImageStorage,                           "VVp",  768 * 576 * 3 },
1505
    { UID_VisualAcuityMeasurementsStorage,                         "OPv",  4096 },
1506
    { UID_VLEndoscopicImageStorage,                                "VLe",  768 * 576 * 3 },
1507
    { UID_VLMicroscopicImageStorage,                               "VLm",  768 * 576 * 3 },
1508
    { UID_VLPhotographicImageStorage,                              "VLp",  768 * 576 * 3 },
1509
    { UID_VLSlideCoordinatesMicroscopicImageStorage,               "VLs",  768 * 576 * 3 },
1510
    { UID_VLWholeSlideMicroscopyImageStorage,                      "VLw",  10000 * 10000 * 3 },
1511
    { UID_VolumeRenderingVolumetricPresentationStateStorage,       "VPv",  4096 },
1512
    { UID_WaveformAcquisitionPresentationStateStorage,             "PSq",  4096 },
1513
    { UID_WaveformAnnotationSRStorage,                             "SRw",  4096 },
1514
    { UID_WaveformPresentationStateStorage,                        "PSw",  4096 },
1515
    { UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage, "OWs", 768 * 576 * 3 },
1516
    { UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage, "OW3",  768 * 576 * 3 },
1517
    { UID_XADefinedProcedureProtocolStorage,                       "PPxd", 4096 },
1518
    { UID_XAPerformedProcedureProtocolStorage,                     "PPxp", 4096 },
1519
    { UID_XAXRFGrayscaleSoftcopyPresentationStateStorage,          "PSx",  4096 },
1520
    { UID_XRay3DAngiographicImageStorage,                          "XA3",  256 * 512 * 512 },
1521
    { UID_XRay3DCraniofacialImageStorage,                          "XC3",  256 * 512 * 512 },
1522
    { UID_XRayAngiographicImageStorage,                            "XA",   256 * 512 * 512 },
1523
    { UID_XRayRadiationDoseSRStorage,                              "SRd",  4096 },
1524
    { UID_XRayRadiofluoroscopicImageStorage,                       "RF",   256 * 512 * 512 },
1525
    // retired
1526
    { UID_RETIRED_HardcopyColorImageStorage,                       "HC",   4096 },
1527
    { UID_RETIRED_HardcopyGrayscaleImageStorage,                   "HG",   4096 },
1528
    { UID_RETIRED_NuclearMedicineImageStorage,                     "NMr",  64 * 64 * 2 },
1529
    { UID_RETIRED_StandaloneCurveStorage,                          "CV",   4096 },
1530
    { UID_RETIRED_StandaloneModalityLUTStorage,                    "ML",   4096 * 2 },
1531
    { UID_RETIRED_StandaloneOverlayStorage,                        "OV",   512 * 512 },
1532
    { UID_RETIRED_StandalonePETCurveStorage,                       "PC",   4096 },
1533
    { UID_RETIRED_StandaloneVOILUTStorage,                         "VO",   4096 * 2 },
1534
    { UID_RETIRED_StoredPrintStorage,                              "SP",   4096 },
1535
    { UID_RETIRED_UltrasoundImageStorage,                          "USr",  512 * 512 },
1536
    { UID_RETIRED_UltrasoundMultiframeImageStorage,                "USf",  512 * 512 },
1537
    { UID_RETIRED_VLImageStorage,                                  "VLr",  768 * 576 * 3 },
1538
    { UID_RETIRED_VLMultiframeImageStorage,                        "VMr",  768 * 576 * 3 },
1539
    { UID_RETIRED_XRayAngiographicBiPlaneImageStorage,             "XB",   512 * 512 * 2 },
1540
    // draft
1541
    { UID_DRAFT_RTBeamsDeliveryInstructionStorage,                 "RB_d", 4096 },  /* was "RBd" */
1542
    { UID_DRAFT_SRAudioStorage,                                    "SR_a", 4096 },  /* was "SRw" */
1543
    { UID_DRAFT_SRComprehensiveStorage,                            "SR_c", 4096 },  /* was "SRx" */
1544
    { UID_DRAFT_SRDetailStorage,                                   "SR_d", 4096 },  /* was "SRy" */
1545
    { UID_DRAFT_SRTextStorage,                                     "SR_t", 4096 },  /* was "SRz" */
1546
    { UID_DRAFT_WaveformStorage,                                   "WV_d", 4096 },  /* was "WVd" */
1547
    // DICOS
1548
    { UID_DICOS_CTImageStorage,                                    "CTs",  512 * 512 * 2 },
1549
    { UID_DICOS_DigitalXRayImageStorageForPresentation,            "DXs",  2048 * 2048 * 2 },
1550
    { UID_DICOS_DigitalXRayImageStorageForProcessing,              "DPs",  2048 * 2048 * 2 },
1551
    { UID_DICOS_ThreatDetectionReportStorage,                      "TDR",  4096 },
1552
    { UID_DICOS_2DAITStorage,                                      "AI2",  4096 },
1553
    { UID_DICOS_3DAITStorage,                                      "AI3",  4096 },
1554
    { UID_DICOS_QuadrupoleResonanceStorage,                        "QR",   4096 },
1555
    // DICONDE
1556
    { UID_DICONDE_EddyCurrentImageStorage,                         "EC",   512 * 512 },
1557
    { UID_DICONDE_EddyCurrentMultiframeImageStorage,               "ECm",  512 * 512 },
1558
    { UID_DICONDE_ThermographyImageStorage,                        "TG",   512 * 512 },
1559
    { UID_DICONDE_ThermographyMultiFrameImageStorage,              "TGm",  512 * 512 },
1560
    { UID_DICONDE_UltrasoundWaveformStorage,                       "UW",   4096 }
1561
};
1562
1563
static const int numberOfDcmModalityTableEntries = OFstatic_cast(int, sizeof(modalities) / sizeof(DcmModalityTable));
1564
1565
1566
/*
1567
 * Public Function Prototypes
1568
 */
1569
1570
const char *dcmSOPClassUIDToModality(const char *sopClassUID,
1571
                                     const char *defaultValue)
1572
0
{
1573
0
    if (sopClassUID == NULL) return NULL;
1574
    /* check for known SOP class */
1575
0
    for (int i = 0; i < numberOfDcmModalityTableEntries; i++)
1576
0
    {
1577
0
      if (strcmp(modalities[i].sopClass, sopClassUID) == 0) return modalities[i].modality;
1578
0
    }
1579
    /* SOP class not found */
1580
0
    return defaultValue;
1581
0
}
1582
1583
unsigned long dcmGuessModalityBytes(const char *sopClassUID)
1584
0
{
1585
0
    unsigned long nbytes = 1048576; /* default: 1 MByte */
1586
1587
0
    if (sopClassUID == NULL) return nbytes;
1588
1589
0
    int found=0;
1590
0
    for (int i = 0; (!found && (i < numberOfDcmModalityTableEntries)); i++)
1591
0
    {
1592
0
      found = (strcmp(modalities[i].sopClass, sopClassUID) == 0);
1593
0
      if (found) nbytes = modalities[i].averageSize;
1594
0
    }
1595
1596
0
    return nbytes;
1597
0
}
1598
1599
1600
/*
1601
** dcmFindNameOfUID(const char* uid, const char* defaultValue)
1602
** Return the name of a UID.
1603
** Performs a table lookup and returns a pointer to a read-only string.
1604
** Returns defaultValue if the UID is not known.
1605
*/
1606
const char*
1607
dcmFindNameOfUID(const char* uid, const char* defaultValue)
1608
0
{
1609
0
    if (uid == NULL) return defaultValue;
1610
0
    for (int i = 0; i < uidNameMap_size; i++) {
1611
0
      if (uidNameMap[i].uid != NULL && strcmp(uid, uidNameMap[i].uid) == 0) {
1612
0
        return uidNameMap[i].name;
1613
0
      }
1614
0
    }
1615
0
    return defaultValue;
1616
0
}
1617
1618
1619
/*
1620
** dcmFindUIDFromName(const char* name)
1621
** Return the UID of a name.
1622
** Performs a table lookup and returns a pointer to a read-only string.
1623
** Returns NULL if the name is not known.
1624
*/
1625
const char*
1626
dcmFindUIDFromName(const char* name)
1627
0
{
1628
0
    if (name == NULL) return NULL;
1629
0
    for(int i = 0; i < uidNameMap_size; i++)
1630
0
    {
1631
0
      if (uidNameMap[i].name != NULL && strcmp(name, uidNameMap[i].name) == 0)
1632
0
        return uidNameMap[i].uid;
1633
0
    }
1634
0
    return NULL;
1635
0
}
1636
1637
1638
/*
1639
** dcmFindKeywordOfUID(const char* uid, const char* defaultValue)
1640
** Return the keyword of a UID.
1641
** Performs a table lookup and returns a pointer to a read-only string.
1642
** Returns defaultValue if the UID is not known.
1643
*/
1644
const char*
1645
dcmFindKeywordOfUID(const char* uid, const char* defaultValue)
1646
0
{
1647
0
    if (uid == NULL) return defaultValue;
1648
0
    for (int i = 0; i < uidNameMap_size; i++) {
1649
0
      if (uidNameMap[i].uid != NULL && strcmp(uid, uidNameMap[i].uid) == 0) {
1650
0
        return uidNameMap[i].keyword;
1651
0
      }
1652
0
    }
1653
0
    return defaultValue;
1654
0
}
1655
1656
1657
/*
1658
** dcmFindUIDFromKeyword(const char* keyword)
1659
** Return the UID of a keyword.
1660
** Performs a table lookup and returns a pointer to a read-only string.
1661
** Returns NULL if the keyword is not known.
1662
*/
1663
const char*
1664
dcmFindUIDFromKeyword(const char* keyword)
1665
0
{
1666
0
    if (keyword == NULL) return NULL;
1667
0
    for(int i = 0; i < uidNameMap_size; i++)
1668
0
    {
1669
0
      if (uidNameMap[i].keyword != NULL && strcmp(keyword, uidNameMap[i].keyword) == 0)
1670
0
        return uidNameMap[i].uid;
1671
0
    }
1672
0
    return NULL;
1673
0
}
1674
1675
1676
/*
1677
** dcmGetPropertiesOfUID(const char* uid, DcmUIDProperties &properties)
1678
** Return the properties of a UID.
1679
** Performs a table lookup and fills a given struct with the properties.
1680
** Returns true if UID was found, false otherwise.
1681
*/
1682
OFBool
1683
dcmGetPropertiesOfUID(const char* uid, DcmUIDProperties &properties)
1684
0
{
1685
0
    if (uid != NULL)
1686
0
    {
1687
0
      for (int i = 0; i < uidNameMap_size; i++) {
1688
0
        if (uidNameMap[i].uid != NULL && strcmp(uid, uidNameMap[i].uid) == 0) {
1689
0
          properties = uidNameMap[i].properties;
1690
0
          return OFTrue;
1691
0
        }
1692
0
      }
1693
0
    }
1694
0
    return OFFalse;
1695
0
}
1696
1697
1698
/*
1699
** dcmIsaStorageSOPClassUID(const char* uid)
1700
** Returns true if the uid is one of the Storage SOP Classes.
1701
** Performs a table lookup in the dcmAllStorageSOPClassUIDs,
1702
** dcmNonPatientStorageSOPClassUIDs and/or dcmImageSOPClassUIDs table.
1703
*/
1704
OFBool
1705
dcmIsaStorageSOPClassUID(const char* uid, const E_StorageSOPClassType type)
1706
0
{
1707
0
    if (uid == NULL) return OFFalse;
1708
    /* check for patient object */
1709
0
    if (type & ESSC_Patient) {
1710
0
      for (int i = 0; i < numberOfDcmAllStorageSOPClassUIDs; i++) {
1711
0
        if (dcmAllStorageSOPClassUIDs[i] != NULL && strcmp(uid, dcmAllStorageSOPClassUIDs[i]) == 0) {
1712
0
          return OFTrue;
1713
0
        }
1714
0
      }
1715
0
    }
1716
    /* check for non-patient object */
1717
0
    if (type & ESSC_NonPatient) {
1718
0
      for (int i = 0; dcmNonPatientStorageSOPClassUIDs[i] != NULL; i++) {
1719
0
        if (strcmp(uid, dcmNonPatientStorageSOPClassUIDs[i]) == 0) {
1720
0
          return OFTrue;
1721
0
        }
1722
0
      }
1723
0
    }
1724
    /* check for image object */
1725
0
    if (type & ESSC_Image) {
1726
0
      for (int i = 0; i < numberOfDcmImageSOPClassUIDs; i++) {
1727
0
        if (dcmImageSOPClassUIDs[i] != NULL && strcmp(uid, dcmImageSOPClassUIDs[i]) == 0) {
1728
0
          return OFTrue;
1729
0
        }
1730
0
      }
1731
0
    }
1732
0
    return OFFalse;
1733
0
}
1734
1735
1736
/*
1737
** dcmIsImageStorageSOPClassUID(const char* uid)
1738
** Returns true if the uid is one of the Image Storage SOP Classes.
1739
*/
1740
OFBool
1741
dcmIsImageStorageSOPClassUID(const char* uid)
1742
0
{
1743
0
    return dcmIsaStorageSOPClassUID(uid, ESSC_Image);
1744
0
}
1745
1746
// ********************************
1747
1748
#ifndef HAVE_GETHOSTID
1749
#if defined(HAVE_SYSINFO) && defined(HAVE_SYS_SYSTEMINFO_H)
1750
1751
/* Implementation of gethostid() based on sysinfo().
1752
 * This implementation is used, for example, on Solaris.
1753
 */
1754
#include <sys/systeminfo.h>
1755
static long gethostid(void)
1756
{
1757
    if (sysinfo(SI_HW_SERIAL, buf, 128) == -1) {
1758
      DCMDATA_FATAL("sysinfo: " << OFStandard::getLastSystemErrorCode().message());
1759
      exit(1);
1760
    }
1761
    return(strtoul(buf, NULL, 0));
1762
}
1763
1764
#else // !HAVE_SYSINFO
1765
1766
/*
1767
** There is no implementation of gethostid() and we cannot implement it in
1768
** terms of sysinfo() so define a workaround.
1769
*/
1770
1771
#ifdef _WIN32
1772
1773
/* On Windows systems specify a routine to determine the MAC address of the Ethernet adapter.
1774
 * This implementation uses Win32 system calls available on Windows 2000 and newer.
1775
 * A different implementation supporting Windows 95 was used in DCMTK releases up to 3.6.0,
1776
 * but that implementation does not work reliably anymore on Windows 10.
1777
 */
1778
static IP_ADAPTER_INFO* getMACAddresses(OFVector<Uint8>& buffer)
1779
{
1780
  // get adapter info using OFVector to allocate memory
1781
  DWORD bufferSize = 0;
1782
  DWORD status = GetAdaptersInfo(OFnullptr, &bufferSize);
1783
  if (status == ERROR_BUFFER_OVERFLOW)
1784
  {
1785
    buffer.resize(bufferSize);
1786
    status = GetAdaptersInfo(OFreinterpret_cast(IP_ADAPTER_INFO*, &*buffer.begin()), &bufferSize);
1787
  }
1788
  if (status == ERROR_SUCCESS)
1789
    return OFreinterpret_cast(IP_ADAPTER_INFO*, &*buffer.begin());
1790
  // print out the error message for debugging
1791
  OFString message;
1792
  LPVOID errBuf = OFnullptr;
1793
  if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
1794
      OFnullptr, status, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), OFreinterpret_cast(LPTSTR, &errBuf), 0, OFnullptr) > 0)
1795
  {
1796
    message = OFstatic_cast(const char*, errBuf);
1797
    // remove "\r\n"
1798
    if (message.size() >= 2 && message.substr(message.length() - 2) == "\r\n")
1799
      message = message.substr(0, message.length() - 2);
1800
  }
1801
  LocalFree(errBuf);
1802
  if (!message.empty())
1803
  {
1804
    DCMDATA_WARN("GetAdaptersInfo() failed with the error: '" << message << '\'');
1805
  }
1806
  else
1807
  {
1808
    DCMDATA_WARN("GetAdaptersInfo() failed with an unknown error");
1809
  }
1810
  // a null pointer indicates that no adapter is available
1811
  return OFnullptr;
1812
}
1813
#endif
1814
1815
#ifdef HAVE_PROTOTYPE_GETHOSTID
1816
/* CW10 has a prototype but no implementation (gethostid() is already declared extern */
1817
long gethostid(void)
1818
#else
1819
static long gethostid(void)
1820
#endif
1821
{
1822
    long result = 0;
1823
    char name[1024];
1824
1825
    /*
1826
    ** Define the hostid to be the system's main IP address.
1827
    ** This is not perfect but it is better than nothing (i.e. using zero)
1828
    */
1829
    OFStandard::initializeNetwork();
1830
    if (gethostname(name, 1024) == 0)
1831
    {
1832
        struct sockaddr_in *sin = NULL;
1833
        struct sockaddr_in6 *sin6 = NULL;
1834
        long *lp = NULL;
1835
        OFSockAddr sa;
1836
        OFStandard::getAddressByHostname(name, AF_UNSPEC, sa);
1837
        switch (sa.getFamily())
1838
        {
1839
          case AF_INET:
1840
            sin = sa. getSockaddr_in();
1841
            result = OFstatic_cast(long, sin->sin_addr.s_addr);
1842
            break;
1843
          case AF_INET6:
1844
            sin6 = sa. getSockaddr_in6();
1845
            // interpret the first four bytes of the IPv6 address as a long
1846
            lp = OFreinterpret_cast(long *, &sin6->sin6_addr);
1847
            result = *lp;
1848
            break;
1849
          default:
1850
            // unknown protocol family. Do nothing.
1851
            break;
1852
        }
1853
    }
1854
1855
    OFStandard::shutdownNetwork();
1856
1857
/* on Windows systems determine some system specific information (e.g. MAC address) */
1858
#ifdef HAVE_WINDOWS_H
1859
    OFCRC32 crc;
1860
    /* get some processor specific information in addition to the MAC address */
1861
    SYSTEM_INFO systemInfo;
1862
    GetSystemInfo(&systemInfo);
1863
    /* get volume information of the system drive */
1864
    char systemDrive[MAX_PATH];
1865
    DWORD serialNumber = 0;
1866
    if (GetSystemDirectoryA(systemDrive, OFstatic_cast(UINT, sizeof(systemDrive))) >= 0)
1867
    {
1868
        /* check for proper pathname */
1869
        if ((strlen(systemDrive) >= 3) && (systemDrive[1] == ':') && (systemDrive[2] == '\\'))
1870
        {
1871
            /* truncate the pathname directly after the drive specification */
1872
            systemDrive[3] = 0;
1873
            if (!GetVolumeInformationA(systemDrive, NULL, 0, &serialNumber, NULL, NULL, NULL, 0))
1874
                serialNumber = 0;
1875
        }
1876
    }
1877
    /* concatenate the host specific elements and compute a 32-bit checksum */
1878
    crc.addBlock(&result /*ip address*/, OFstatic_cast(unsigned long, sizeof(result)));
1879
    // add the MAC addresses of all adapters
1880
    {
1881
      OFVector<Uint8> buffer;
1882
      for (IP_ADAPTER_INFO* adapterInfo = getMACAddresses(buffer); adapterInfo; adapterInfo = adapterInfo->Next)
1883
        crc.addBlock(adapterInfo->Address, adapterInfo->AddressLength);
1884
    }
1885
    crc.addBlock(&serialNumber, OFstatic_cast(unsigned long, sizeof(serialNumber)));
1886
    crc.addBlock(&systemInfo.wProcessorLevel, OFstatic_cast(unsigned long, sizeof(systemInfo.wProcessorLevel)));
1887
    crc.addBlock(&systemInfo.wProcessorRevision, OFstatic_cast(unsigned long, sizeof(systemInfo.wProcessorRevision)));
1888
    crc.addBlock(&systemInfo.dwProcessorType, OFstatic_cast(unsigned long, sizeof(systemInfo.dwProcessorType)));
1889
    result = OFstatic_cast(long, crc.getCRC32());
1890
#endif
1891
    /* 'artificial' hostid: on Windows system a CRC32 checksum over some host specific
1892
       information (e.g. MAC address), the 4 bytes TCP/IP address otherwise.
1893
    */
1894
    return result;
1895
}
1896
1897
#endif // !HAVE_SYSINFO
1898
#else // HAVE_GETHOSTID
1899
#ifndef HAVE_PROTOTYPE_GETHOSTID
1900
extern "C" {
1901
long gethostid(void);
1902
}
1903
#endif // !HAVE_PROTOTYPE_GETHOSTID
1904
#endif // HAVE_GETHOSTID
1905
1906
// ********************************
1907
1908
/*
1909
 * Global variable storing the return value of gethostid().
1910
 * Since the variable is not declared in the header file it can only be used
1911
 * within this source file. Any access to or modification of its value is
1912
 * protected by a mutex (see dcmGenerateUniqueIdentifier()).
1913
 */
1914
1915
static unsigned long hostIdentifier = 0;
1916
1917
1918
/*
1919
** char* generateUniqueIdentifier(char* buf)
1920
** Creates a Unique Identifier in buf and returns buf.
1921
** buf must be at least 65 bytes.
1922
*/
1923
1924
1925
#ifdef WITH_THREADS
1926
static OFMutex uidCounterMutex;  // mutex protecting access to counterOfCurrentUID and hostIdentifier
1927
#endif
1928
1929
static unsigned int counterOfCurrentUID = 0;
1930
1931
static const unsigned int maxUIDLen = 64;    /* A UID may be 64 chars or less */
1932
1933
static void
1934
initCounterOfCurrentUID()
1935
0
{
1936
    /* Code taken from oftime.cc */
1937
#ifdef HAVE_WINDOWS_H
1938
    /* Windows: no microseconds available, use milliseconds instead */
1939
    SYSTEMTIME timebuf;
1940
    GetSystemTime(&timebuf);
1941
    counterOfCurrentUID = timebuf.wMilliseconds; /* This is in the range 0 - 999 */
1942
#else /* Unix */
1943
0
    struct timeval tv;
1944
0
    if (gettimeofday(&tv, NULL) == 0)
1945
0
        counterOfCurrentUID = OFstatic_cast(Uint32, tv.tv_usec); /* This is in the range 0 - 999999 */
1946
0
#endif
1947
    /* Do not ever use "0" for the counter */
1948
0
    counterOfCurrentUID++;
1949
0
}
1950
1951
1952
static char*
1953
stripTrailing(char* s, char c)
1954
0
{
1955
0
    if (s == NULL) return s;
1956
0
    for
1957
0
    (
1958
0
        char* it = s + strlen(s) - 1;
1959
0
        it >= s && *it == c;
1960
0
        *it-- = '\0'
1961
0
    );
1962
0
    return s;
1963
0
}
1964
1965
static void
1966
addUIDComponent(char* uid, const char* s)
1967
0
{
1968
    /* copy into UID as much of the contents of s as possible */
1969
0
    if (OFStandard::strlcat(uid, s, maxUIDLen + 1) >= maxUIDLen + 1) // maxUIDLen+1 because strlcat() wants the size of the buffer, not the permitted number of characters.
1970
0
    {
1971
0
        DCMDATA_WARN("Truncated UID in dcmGenerateUniqueIdentifier(), SITE_UID_ROOT too long?");
1972
0
    }
1973
0
    stripTrailing(uid, '.');
1974
0
}
1975
1976
inline static unsigned long
1977
forcePositive(long i)
1978
0
{
1979
0
    return (i < 0) ? OFstatic_cast(unsigned long, -i) : OFstatic_cast(unsigned long, i);
1980
0
}
1981
1982
char* dcmGenerateUniqueIdentifier(char* uid, const char* prefix)
1983
0
{
1984
0
    char buf[128]; /* be very safe */
1985
1986
0
    uid[0] = '\0'; /* initialize */
1987
1988
0
#ifdef WITH_THREADS
1989
0
    uidCounterMutex.lock();
1990
0
#endif
1991
0
    if (hostIdentifier == 0)
1992
0
    {
1993
        /* On 64-bit Linux, the "32-bit identifier" returned by gethostid() is
1994
           sign-extended to a 64-bit long, so we need to blank the upper 32 bits */
1995
0
        hostIdentifier = OFstatic_cast(unsigned long, gethostid() & 0xffffffff);
1996
0
    }
1997
0
    if (counterOfCurrentUID == 0)
1998
0
        initCounterOfCurrentUID();
1999
2000
0
    unsigned int counter = counterOfCurrentUID++;
2001
0
#ifdef WITH_THREADS
2002
0
    uidCounterMutex.unlock();
2003
0
#endif
2004
2005
0
    if (prefix != NULL ) {
2006
0
        addUIDComponent(uid, prefix);
2007
0
    } else {
2008
0
        addUIDComponent(uid, SITE_INSTANCE_UID_ROOT);
2009
0
    }
2010
2011
0
    OFStandard::snprintf(buf, sizeof(buf), ".%lu", hostIdentifier);
2012
0
    addUIDComponent(uid, buf);
2013
2014
0
    OFStandard::snprintf(buf, sizeof(buf), ".%lu", forcePositive(OFStandard::getProcessID()));
2015
0
    addUIDComponent(uid, buf);
2016
2017
0
    OFStandard::snprintf(buf, sizeof(buf), ".%lu", forcePositive(OFstatic_cast(long, time(NULL))));
2018
0
    addUIDComponent(uid, buf);
2019
2020
0
    OFStandard::snprintf(buf, sizeof(buf), ".%u", counter);
2021
2022
0
    addUIDComponent(uid, buf);
2023
2024
0
    return uid;
2025
0
}