1 /*
2 % Copyright (C) 2003-2020 GraphicsMagick Group
3 % Copyright (C) 2002 ImageMagick Studio
4 % Copyright 1991-1999 E. I. du Pont de Nemours and Company
5 %
6 % This program is covered by multiple licenses, which are described in
7 % Copyright.txt. You should have received a copy of Copyright.txt with this
8 % package; otherwise see http://www.graphicsmagick.org/www/Copyright.html.
9 %
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 %                                                                             %
12 %                                                                             %
13 %                                                                             %
14 %                            DDDD    CCCC  M   M                              %
15 %                            D   D  C      MM MM                              %
16 %                            D   D  C      M M M                              %
17 %                            D   D  C      M   M                              %
18 %                            DDDD    CCCC  M   M                              %
19 %                                                                             %
20 %                                                                             %
21 %                          Read DICOM Image Format.                           %
22 %                                                                             %
23 %                                                                             %
24 %                              Software Design                                %
25 %                                John Cristy                                  %
26 %                                 July 1992                                   %
27 %                                                                             %
28 %                                                                             %
29 %                                                                             %
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 %
32 %
33 */
34 
35 /*
36   Include declarations.
37 */
38 #include "magick/studio.h"
39 #include "magick/attribute.h"
40 #include "magick/blob.h"
41 #include "magick/colormap.h"
42 #include "magick/constitute.h"
43 #include "magick/enhance.h"
44 #include "magick/log.h"
45 #include "magick/magick.h"
46 #include "magick/monitor.h"
47 #include "magick/pixel_cache.h"
48 #include "magick/tempfile.h"
49 #include "magick/utility.h"
50 
51 /*
52 #define USE_GRAYMAP
53 #define GRAYSCALE_USES_PALETTE
54 */
55 
56 /* Defines for "best guess" fixes */
57 #define NEW_IMPLICIT_LOGIC
58 #define IGNORE_WINDOW_FOR_UNSPECIFIED_SCALE_TYPE
59 
60 /*
61   Function types for reading MSB/LSB shorts/longs
62 */
63 typedef magick_uint16_t (DicomReadShortFunc)(Image *);
64 typedef magick_uint32_t (DicomReadLongFunc)(Image *);
65 
66 /*
67    DCM enums
68 */
69 typedef enum
70 {
71   DCM_TS_IMPL_LITTLE,
72   DCM_TS_EXPL_LITTLE,
73   DCM_TS_EXPL_BIG,
74   DCM_TS_JPEG,
75   DCM_TS_JPEG_LS,
76   DCM_TS_JPEG_2000,
77   DCM_TS_RLE
78 } Dicom_TS;
79 
80 typedef enum
81 {
82   DCM_MSB_LITTLE,
83   DCM_MSB_BIG_PENDING,
84   DCM_MSB_BIG
85 } Dicom_MSB;
86 
87 typedef enum
88 {
89   DCM_PI_MONOCHROME1,
90   DCM_PI_MONOCHROME2,
91   DCM_PI_PALETTE_COLOR,
92   DCM_PI_RGB,
93   DCM_PI_OTHER
94 } Dicom_PI;
95 
96 typedef enum
97 {
98   DCM_RT_OPTICAL_DENSITY,
99   DCM_RT_HOUNSFIELD,
100   DCM_RT_UNSPECIFIED,
101   DCM_RT_UNKNOWN
102 } Dicom_RT;
103 
104 typedef enum
105 {
106   DCM_RS_NONE,
107   DCM_RS_PRE,
108   DCM_RS_POST
109 } Dicom_RS;
110 
111 /*
112   Dicom medical image declarations.
113 */
114 typedef struct _DicomStream
115 {
116   /*
117     Values representing nature of image
118   */
119   unsigned long
120     rows,
121     columns;
122 
123   unsigned int
124     number_scenes,
125     samples_per_pixel,
126     bits_allocated,
127     significant_bits,
128     bytes_per_pixel,
129     max_value_in,
130     max_value_out,
131     high_bit,
132     pixel_representation,
133     interlace;
134 
135   Dicom_MSB
136     msb_state;
137 
138   Dicom_PI
139     phot_interp;
140 
141   double
142     window_center,
143     window_width,
144     rescale_intercept,
145     rescale_slope;
146 
147   Dicom_TS
148     transfer_syntax;
149 
150   Dicom_RT
151     rescale_type;
152 
153   Dicom_RS
154     rescaling;
155 
156   /*
157     Array to store offset table for fragments within image
158   */
159   magick_uint32_t
160     offset_ct;
161   magick_uint32_t *
162     offset_arr;
163 
164   /*
165     Variables used to handle fragments and RLE compression
166   */
167   magick_uint32_t
168     frag_bytes;
169 
170   magick_uint32_t
171     rle_seg_ct,
172     rle_seg_offsets[15];
173 
174   int
175     rle_rep_ct,
176     rle_rep_char;
177 
178   /*
179     Max and minimum sample values within image used for post rescale mapping
180   */
181   int
182     upper_lim,
183     lower_lim;
184 
185   Quantum
186     *rescale_map; /* Allocated with dcm->max_value_in+1 entries */
187 
188 #if defined(USE_GRAYMAP)
189   unsigned short
190     *graymap;
191 #endif
192 
193   /*
194     Values representing last read element
195   */
196   unsigned short
197     group,
198     element;
199 
200   int
201     index,
202     datum;
203 
204   size_t
205     quantum,
206     length;
207 
208   unsigned char *
209     data;
210 
211   /*
212     Remaining fields for internal use by DCM_ReadElement and to read data
213   */
214   DicomReadShortFunc *
215     funcReadShort;
216 
217   DicomReadLongFunc *
218     funcReadLong;
219 
220   int
221     explicit_file;
222 
223   unsigned int
224     verbose;
225 } DicomStream;
226 
227 /*
228   Function type for parsing DICOM elements
229 */
230 typedef MagickPassFail (DicomElemParseFunc)(Image *Image,DicomStream *dcm,ExceptionInfo *exception);
231 
232 /*
233   Forward declaration for parser functions
234 */
235 static DicomElemParseFunc funcDCM_BitsAllocated;
236 static DicomElemParseFunc funcDCM_BitsStored;
237 static DicomElemParseFunc funcDCM_Columns;
238 static DicomElemParseFunc funcDCM_FieldOfView;
239 static DicomElemParseFunc funcDCM_HighBit;
240 static DicomElemParseFunc funcDCM_ImageOrientation;
241 static DicomElemParseFunc funcDCM_ImagePosition;
242 static DicomElemParseFunc funcDCM_LUT;
243 static DicomElemParseFunc funcDCM_NumberOfFrames;
244 static DicomElemParseFunc funcDCM_Palette;
245 static DicomElemParseFunc funcDCM_PaletteDescriptor;
246 static DicomElemParseFunc funcDCM_PatientName;
247 static DicomElemParseFunc funcDCM_PhotometricInterpretation;
248 static DicomElemParseFunc funcDCM_PixelRepresentation;
249 static DicomElemParseFunc funcDCM_PlanarConfiguration;
250 static DicomElemParseFunc funcDCM_RescaleIntercept;
251 static DicomElemParseFunc funcDCM_RescaleSlope;
252 static DicomElemParseFunc funcDCM_RescaleType;
253 static DicomElemParseFunc funcDCM_Rows;
254 static DicomElemParseFunc funcDCM_SamplesPerPixel;
255 static DicomElemParseFunc funcDCM_SeriesNumber;
256 static DicomElemParseFunc funcDCM_SliceLocation;
257 static DicomElemParseFunc funcDCM_StudyDate;
258 static DicomElemParseFunc funcDCM_TransferSyntax;
259 static DicomElemParseFunc funcDCM_TriggerTime;
260 static DicomElemParseFunc funcDCM_WindowCenter;
261 static DicomElemParseFunc funcDCM_WindowWidth;
262 
263 /*
264   Function vectors for supported DICOM element parsing functions.
265 
266   We store the enumeration in the DICOM info table and use it to look
267   up the callback function in the parse_funcs table.  This approach is
268   used because we only support a small subset of possible functions,
269   the pointers are large (8 bytes) on 64-bit systems, and because
270   relocations in shared libraries (especially with ASLR support) cause
271   the whole data-structure that the function pointers are stored in to
272   become initialized data (which is then set read-only).  With this
273   approach, only the list of parsing functions may be initialized data
274   and we store a reference to the function using a smaller storage
275   element.
276 
277   The list of enumerations and parsing functions must be in the same
278   order (1:1 match).
279 */
280 typedef enum _DICOM_PARSE_FUNC_T
281   {
282     FUNCDCM_NONE,
283     FUNCDCM_BITSALLOCATED,
284     FUNCDCM_BITSSTORED,
285     FUNCDCM_COLUMNS,
286     FUNCDCM_FIELDOFVIEW,
287     FUNCDCM_HIGHBIT,
288     FUNCDCM_IMAGEORIENTATION,
289     FUNCDCM_IMAGEPOSITION,
290     FUNCDCM_LUT,
291     FUNCDCM_NUMBEROFFRAMES,
292     FUNCDCM_PALETTE,
293     FUNCDCM_PALETTEDESCRIPTOR,
294     FUNCDCM_PATIENTNAME,
295     FUNCDCM_PHOTOMETRICINTERPRETATION,
296     FUNCDCM_PIXELREPRESENTATION,
297     FUNCDCM_PLANARCONFIGURATION,
298     FUNCDCM_RESCALEINTERCEPT,
299     FUNCDCM_RESCALESLOPE,
300     FUNCDCM_RESCALETYPE,
301     FUNCDCM_ROWS,
302     FUNCDCM_SAMPLESPERPIXEL,
303     FUNCDCM_SERIESNUMBER,
304     FUNCDCM_SLICELOCATION,
305     FUNCDCM_STUDYDATE,
306     FUNCDCM_TRANSFERSYNTAX,
307     FUNCDCM_TRIGGERTIME,
308     FUNCDCM_WINDOWCENTER,
309     FUNCDCM_WINDOWWIDTH
310   } DICOM_PARSE_FUNC_T;
311 
312 static DicomElemParseFunc * parse_funcs[] =
313   {
314     (DicomElemParseFunc *) NULL ,
315     (DicomElemParseFunc *) funcDCM_BitsAllocated ,
316     (DicomElemParseFunc *) funcDCM_BitsStored ,
317     (DicomElemParseFunc *) funcDCM_Columns ,
318     (DicomElemParseFunc *) funcDCM_FieldOfView ,
319     (DicomElemParseFunc *) funcDCM_HighBit ,
320     (DicomElemParseFunc *) funcDCM_ImageOrientation ,
321     (DicomElemParseFunc *) funcDCM_ImagePosition ,
322     (DicomElemParseFunc *) funcDCM_LUT ,
323     (DicomElemParseFunc *) funcDCM_NumberOfFrames ,
324     (DicomElemParseFunc *) funcDCM_Palette ,
325     (DicomElemParseFunc *) funcDCM_PaletteDescriptor ,
326     (DicomElemParseFunc *) funcDCM_PatientName ,
327     (DicomElemParseFunc *) funcDCM_PhotometricInterpretation ,
328     (DicomElemParseFunc *) funcDCM_PixelRepresentation ,
329     (DicomElemParseFunc *) funcDCM_PlanarConfiguration ,
330     (DicomElemParseFunc *) funcDCM_RescaleIntercept ,
331     (DicomElemParseFunc *) funcDCM_RescaleSlope ,
332     (DicomElemParseFunc *) funcDCM_RescaleType ,
333     (DicomElemParseFunc *) funcDCM_Rows ,
334     (DicomElemParseFunc *) funcDCM_SamplesPerPixel ,
335     (DicomElemParseFunc *) funcDCM_SeriesNumber ,
336     (DicomElemParseFunc *) funcDCM_SliceLocation ,
337     (DicomElemParseFunc *) funcDCM_StudyDate ,
338     (DicomElemParseFunc *) funcDCM_TransferSyntax ,
339     (DicomElemParseFunc *) funcDCM_TriggerTime ,
340     (DicomElemParseFunc *) funcDCM_WindowCenter ,
341     (DicomElemParseFunc *) funcDCM_WindowWidth
342   };
343 
344 /*
345   Type for holding information on DICOM elements
346 */
347 #define DESCRIPION_STR 1 /* Description text elements in one big string */
348 typedef struct _DicomInfo
349 {
350   const unsigned short
351     group,
352     element;
353 
354   const char
355     vr[3];
356 
357 #if !DESCRIPION_STR
358   const char
359     *description;
360 #endif /* DESCRIPION_STR */
361 
362   const unsigned char /* DICOM_PARSE_FUNC_T */
363     funce;
364 
365 } DicomInfo;
366 
367 /*
368   Array holding information on DICOM elements
369 */
370 static const DicomInfo
371   dicom_info[]=
372   {
373 #if DESCRIPION_STR
374 #define ENTRY(group, element, vr, description, pfunc) {group, element, vr, pfunc}
375 #else
376 #define ENTRY(group, element, vr, description, pfunc) {group, element, vr, description, pfunc}
377 #endif
378     ENTRY( 0x0000, 0x0000, "UL", "Group Length", FUNCDCM_NONE ),
379     ENTRY( 0x0000, 0x0001, "UL", "Command Length to End", FUNCDCM_NONE ),
380     ENTRY( 0x0000, 0x0002, "UI", "Affected SOP Class UID", FUNCDCM_NONE ),
381     ENTRY( 0x0000, 0x0003, "UI", "Requested SOP Class UID", FUNCDCM_NONE ),
382     ENTRY( 0x0000, 0x0010, "LO", "Command Recognition Code", FUNCDCM_NONE ),
383     ENTRY( 0x0000, 0x0100, "US", "Command Field", FUNCDCM_NONE ),
384     ENTRY( 0x0000, 0x0110, "US", "Message ID", FUNCDCM_NONE ),
385     ENTRY( 0x0000, 0x0120, "US", "Message ID Being Responded To", FUNCDCM_NONE ),
386     ENTRY( 0x0000, 0x0200, "AE", "Initiator", FUNCDCM_NONE ),
387     ENTRY( 0x0000, 0x0300, "AE", "Receiver", FUNCDCM_NONE ),
388     ENTRY( 0x0000, 0x0400, "AE", "Find Location", FUNCDCM_NONE ),
389     ENTRY( 0x0000, 0x0600, "AE", "Move Destination", FUNCDCM_NONE ),
390     ENTRY( 0x0000, 0x0700, "US", "Priority", FUNCDCM_NONE ),
391     ENTRY( 0x0000, 0x0800, "US", "Data Set Type", FUNCDCM_NONE ),
392     ENTRY( 0x0000, 0x0850, "US", "Number of Matches", FUNCDCM_NONE ),
393     ENTRY( 0x0000, 0x0860, "US", "Response Sequence Number", FUNCDCM_NONE ),
394     ENTRY( 0x0000, 0x0900, "US", "Status", FUNCDCM_NONE ),
395     ENTRY( 0x0000, 0x0901, "AT", "Offending Element", FUNCDCM_NONE ),
396     ENTRY( 0x0000, 0x0902, "LO", "Exception Comment", FUNCDCM_NONE ),
397     ENTRY( 0x0000, 0x0903, "US", "Exception ID", FUNCDCM_NONE ),
398     ENTRY( 0x0000, 0x1000, "UI", "Affected SOP Instance UID", FUNCDCM_NONE ),
399     ENTRY( 0x0000, 0x1001, "UI", "Requested SOP Instance UID", FUNCDCM_NONE ),
400     ENTRY( 0x0000, 0x1002, "US", "Event Type ID", FUNCDCM_NONE ),
401     ENTRY( 0x0000, 0x1005, "AT", "Attribute Identifier List", FUNCDCM_NONE ),
402     ENTRY( 0x0000, 0x1008, "US", "Action Type ID", FUNCDCM_NONE ),
403     ENTRY( 0x0000, 0x1020, "US", "Number of Remaining Suboperations", FUNCDCM_NONE ),
404     ENTRY( 0x0000, 0x1021, "US", "Number of Completed Suboperations", FUNCDCM_NONE ),
405     ENTRY( 0x0000, 0x1022, "US", "Number of Failed Suboperations", FUNCDCM_NONE ),
406     ENTRY( 0x0000, 0x1023, "US", "Number of Warning Suboperations", FUNCDCM_NONE ),
407     ENTRY( 0x0000, 0x1030, "AE", "Move Originator Application Entity Title", FUNCDCM_NONE ),
408     ENTRY( 0x0000, 0x1031, "US", "Move Originator Message ID", FUNCDCM_NONE ),
409     ENTRY( 0x0000, 0x4000, "LO", "Dialog Receiver", FUNCDCM_NONE ),
410     ENTRY( 0x0000, 0x4010, "LO", "Terminal Type", FUNCDCM_NONE ),
411     ENTRY( 0x0000, 0x5010, "SH", "Message Set ID", FUNCDCM_NONE ),
412     ENTRY( 0x0000, 0x5020, "SH", "End Message Set", FUNCDCM_NONE ),
413     ENTRY( 0x0000, 0x5110, "LO", "Display Format", FUNCDCM_NONE ),
414     ENTRY( 0x0000, 0x5120, "LO", "Page Position ID", FUNCDCM_NONE ),
415     ENTRY( 0x0000, 0x5130, "LO", "Text Format ID", FUNCDCM_NONE ),
416     ENTRY( 0x0000, 0x5140, "LO", "Normal Reverse", FUNCDCM_NONE ),
417     ENTRY( 0x0000, 0x5150, "LO", "Add Gray Scale", FUNCDCM_NONE ),
418     ENTRY( 0x0000, 0x5160, "LO", "Borders", FUNCDCM_NONE ),
419     ENTRY( 0x0000, 0x5170, "IS", "Copies", FUNCDCM_NONE ),
420     ENTRY( 0x0000, 0x5180, "LO", "OldMagnificationType", FUNCDCM_NONE ),
421     ENTRY( 0x0000, 0x5190, "LO", "Erase", FUNCDCM_NONE ),
422     ENTRY( 0x0000, 0x51a0, "LO", "Print", FUNCDCM_NONE ),
423     ENTRY( 0x0000, 0x51b0, "US", "Overlays", FUNCDCM_NONE ),
424     ENTRY( 0x0002, 0x0000, "UL", "Meta Element Group Length", FUNCDCM_NONE ),
425     ENTRY( 0x0002, 0x0001, "OB", "File Meta Information Version", FUNCDCM_NONE ),
426     ENTRY( 0x0002, 0x0002, "UI", "Media Storage SOP Class UID", FUNCDCM_NONE ),
427     ENTRY( 0x0002, 0x0003, "UI", "Media Storage SOP Instance UID", FUNCDCM_NONE ),
428     ENTRY( 0x0002, 0x0010, "UI", "Transfer Syntax UID", FUNCDCM_TRANSFERSYNTAX ),
429     ENTRY( 0x0002, 0x0012, "UI", "Implementation Class UID", FUNCDCM_NONE ),
430     ENTRY( 0x0002, 0x0013, "SH", "Implementation Version Name", FUNCDCM_NONE ),
431     ENTRY( 0x0002, 0x0016, "AE", "Source Application Entity Title", FUNCDCM_NONE ),
432     ENTRY( 0x0002, 0x0100, "UI", "Private Information Creator UID", FUNCDCM_NONE ),
433     ENTRY( 0x0002, 0x0102, "OB", "Private Information", FUNCDCM_NONE ),
434     ENTRY( 0x0003, 0x0000, "US", "?", FUNCDCM_NONE ),
435     ENTRY( 0x0003, 0x0008, "US", "ISI Command Field", FUNCDCM_NONE ),
436     ENTRY( 0x0003, 0x0011, "US", "Attach ID Application Code", FUNCDCM_NONE ),
437     ENTRY( 0x0003, 0x0012, "UL", "Attach ID Message Count", FUNCDCM_NONE ),
438     ENTRY( 0x0003, 0x0013, "DA", "Attach ID Date", FUNCDCM_NONE ),
439     ENTRY( 0x0003, 0x0014, "TM", "Attach ID Time", FUNCDCM_NONE ),
440     ENTRY( 0x0003, 0x0020, "US", "Message Type", FUNCDCM_NONE ),
441     ENTRY( 0x0003, 0x0030, "DA", "Max Waiting Date", FUNCDCM_NONE ),
442     ENTRY( 0x0003, 0x0031, "TM", "Max Waiting Time", FUNCDCM_NONE ),
443     ENTRY( 0x0004, 0x0000, "UL", "File Set Group Length", FUNCDCM_NONE ),
444     ENTRY( 0x0004, 0x1130, "CS", "File Set ID", FUNCDCM_NONE ),
445     ENTRY( 0x0004, 0x1141, "CS", "File Set Descriptor File ID", FUNCDCM_NONE ),
446     ENTRY( 0x0004, 0x1142, "CS", "File Set Descriptor File Specific Character Set", FUNCDCM_NONE ),
447     ENTRY( 0x0004, 0x1200, "UL", "Root Directory Entity First Directory Record Offset", FUNCDCM_NONE ),
448     ENTRY( 0x0004, 0x1202, "UL", "Root Directory Entity Last Directory Record Offset", FUNCDCM_NONE ),
449     ENTRY( 0x0004, 0x1212, "US", "File Set Consistency Flag", FUNCDCM_NONE ),
450     ENTRY( 0x0004, 0x1220, "SQ", "Directory Record Sequence", FUNCDCM_NONE ),
451     ENTRY( 0x0004, 0x1400, "UL", "Next Directory Record Offset", FUNCDCM_NONE ),
452     ENTRY( 0x0004, 0x1410, "US", "Record In Use Flag", FUNCDCM_NONE ),
453     ENTRY( 0x0004, 0x1420, "UL", "Referenced Lower Level Directory Entity Offset", FUNCDCM_NONE ),
454     ENTRY( 0x0004, 0x1430, "CS", "Directory Record Type", FUNCDCM_NONE ),
455     ENTRY( 0x0004, 0x1432, "UI", "Private Record UID", FUNCDCM_NONE ),
456     ENTRY( 0x0004, 0x1500, "CS", "Referenced File ID", FUNCDCM_NONE ),
457     ENTRY( 0x0004, 0x1504, "UL", "MRDR Directory Record Offset", FUNCDCM_NONE ),
458     ENTRY( 0x0004, 0x1510, "UI", "Referenced SOP Class UID In File", FUNCDCM_NONE ),
459     ENTRY( 0x0004, 0x1511, "UI", "Referenced SOP Instance UID In File", FUNCDCM_NONE ),
460     ENTRY( 0x0004, 0x1512, "UI", "Referenced Transfer Syntax UID In File", FUNCDCM_NONE ),
461     ENTRY( 0x0004, 0x1600, "UL", "Number of References", FUNCDCM_NONE ),
462     ENTRY( 0x0005, 0x0000, "US", "?", FUNCDCM_NONE ),
463     ENTRY( 0x0006, 0x0000, "US", "?", FUNCDCM_NONE ),
464     ENTRY( 0x0008, 0x0000, "UL", "Identifying Group Length", FUNCDCM_NONE ),
465     ENTRY( 0x0008, 0x0001, "UL", "Length to End", FUNCDCM_NONE ),
466     ENTRY( 0x0008, 0x0005, "CS", "Specific Character Set", FUNCDCM_NONE ),
467     ENTRY( 0x0008, 0x0008, "CS", "Image Type", FUNCDCM_NONE ),
468     ENTRY( 0x0008, 0x0010, "LO", "Recognition Code", FUNCDCM_NONE ),
469     ENTRY( 0x0008, 0x0012, "DA", "Instance Creation Date", FUNCDCM_NONE ),
470     ENTRY( 0x0008, 0x0013, "TM", "Instance Creation Time", FUNCDCM_NONE ),
471     ENTRY( 0x0008, 0x0014, "UI", "Instance Creator UID", FUNCDCM_NONE ),
472     ENTRY( 0x0008, 0x0016, "UI", "SOP Class UID", FUNCDCM_NONE ),
473     ENTRY( 0x0008, 0x0018, "UI", "SOP Instance UID", FUNCDCM_NONE ),
474     ENTRY( 0x0008, 0x0020, "DA", "Study Date", FUNCDCM_STUDYDATE ),
475     ENTRY( 0x0008, 0x0021, "DA", "Series Date", FUNCDCM_NONE ),
476     ENTRY( 0x0008, 0x0022, "DA", "Acquisition Date", FUNCDCM_NONE ),
477     ENTRY( 0x0008, 0x0023, "DA", "Image Date", FUNCDCM_NONE ),
478     ENTRY( 0x0008, 0x0024, "DA", "Overlay Date", FUNCDCM_NONE ),
479     ENTRY( 0x0008, 0x0025, "DA", "Curve Date", FUNCDCM_NONE ),
480     ENTRY( 0x0008, 0x0030, "TM", "Study Time", FUNCDCM_NONE ),
481     ENTRY( 0x0008, 0x0031, "TM", "Series Time", FUNCDCM_NONE ),
482     ENTRY( 0x0008, 0x0032, "TM", "Acquisition Time", FUNCDCM_NONE ),
483     ENTRY( 0x0008, 0x0033, "TM", "Image Time", FUNCDCM_NONE ),
484     ENTRY( 0x0008, 0x0034, "TM", "Overlay Time", FUNCDCM_NONE ),
485     ENTRY( 0x0008, 0x0035, "TM", "Curve Time", FUNCDCM_NONE ),
486     ENTRY( 0x0008, 0x0040, "xs", "Old Data Set Type", FUNCDCM_NONE ),
487     ENTRY( 0x0008, 0x0041, "xs", "Old Data Set Subtype", FUNCDCM_NONE ),
488     ENTRY( 0x0008, 0x0042, "CS", "Nuclear Medicine Series Type", FUNCDCM_NONE ),
489     ENTRY( 0x0008, 0x0050, "SH", "Accession Number", FUNCDCM_NONE ),
490     ENTRY( 0x0008, 0x0052, "CS", "Query/Retrieve Level", FUNCDCM_NONE ),
491     ENTRY( 0x0008, 0x0054, "AE", "Retrieve AE Title", FUNCDCM_NONE ),
492     ENTRY( 0x0008, 0x0058, "UI", "Failed SOP Instance UID List", FUNCDCM_NONE ),
493     ENTRY( 0x0008, 0x0060, "CS", "Modality", FUNCDCM_NONE ),
494     ENTRY( 0x0008, 0x0062, "SQ", "Modality Subtype", FUNCDCM_NONE ),
495     ENTRY( 0x0008, 0x0064, "CS", "Conversion Type", FUNCDCM_NONE ),
496     ENTRY( 0x0008, 0x0068, "CS", "Presentation Intent Type", FUNCDCM_NONE ),
497     ENTRY( 0x0008, 0x0070, "LO", "Manufacturer", FUNCDCM_NONE ),
498     ENTRY( 0x0008, 0x0080, "LO", "Institution Name", FUNCDCM_NONE ),
499     ENTRY( 0x0008, 0x0081, "ST", "Institution Address", FUNCDCM_NONE ),
500     ENTRY( 0x0008, 0x0082, "SQ", "Institution Code Sequence", FUNCDCM_NONE ),
501     ENTRY( 0x0008, 0x0090, "PN", "Referring Physician's Name", FUNCDCM_NONE ),
502     ENTRY( 0x0008, 0x0092, "ST", "Referring Physician's Address", FUNCDCM_NONE ),
503     ENTRY( 0x0008, 0x0094, "SH", "Referring Physician's Telephone Numbers", FUNCDCM_NONE ),
504     ENTRY( 0x0008, 0x0100, "SH", "Code Value", FUNCDCM_NONE ),
505     ENTRY( 0x0008, 0x0102, "SH", "Coding Scheme Designator", FUNCDCM_NONE ),
506     ENTRY( 0x0008, 0x0103, "SH", "Coding Scheme Version", FUNCDCM_NONE ),
507     ENTRY( 0x0008, 0x0104, "LO", "Code Meaning", FUNCDCM_NONE ),
508     ENTRY( 0x0008, 0x0105, "CS", "Mapping Resource", FUNCDCM_NONE ),
509     ENTRY( 0x0008, 0x0106, "DT", "Context Group Version", FUNCDCM_NONE ),
510     ENTRY( 0x0008, 0x010b, "CS", "Code Set Extension Flag", FUNCDCM_NONE ),
511     ENTRY( 0x0008, 0x010c, "UI", "Private Coding Scheme Creator UID", FUNCDCM_NONE ),
512     ENTRY( 0x0008, 0x010d, "UI", "Code Set Extension Creator UID", FUNCDCM_NONE ),
513     ENTRY( 0x0008, 0x010f, "CS", "Context Identifier", FUNCDCM_NONE ),
514     ENTRY( 0x0008, 0x1000, "LT", "Network ID", FUNCDCM_NONE ),
515     ENTRY( 0x0008, 0x1010, "SH", "Station Name", FUNCDCM_NONE ),
516     ENTRY( 0x0008, 0x1030, "LO", "Study Description", FUNCDCM_NONE ),
517     ENTRY( 0x0008, 0x1032, "SQ", "Procedure Code Sequence", FUNCDCM_NONE ),
518     ENTRY( 0x0008, 0x103e, "LO", "Series Description", FUNCDCM_NONE ),
519     ENTRY( 0x0008, 0x1040, "LO", "Institutional Department Name", FUNCDCM_NONE ),
520     ENTRY( 0x0008, 0x1048, "PN", "Physician of Record", FUNCDCM_NONE ),
521     ENTRY( 0x0008, 0x1050, "PN", "Performing Physician's Name", FUNCDCM_NONE ),
522     ENTRY( 0x0008, 0x1060, "PN", "Name of Physician(s) Reading Study", FUNCDCM_NONE ),
523     ENTRY( 0x0008, 0x1070, "PN", "Operator's Name", FUNCDCM_NONE ),
524     ENTRY( 0x0008, 0x1080, "LO", "Admitting Diagnosis Description", FUNCDCM_NONE ),
525     ENTRY( 0x0008, 0x1084, "SQ", "Admitting Diagnosis Code Sequence", FUNCDCM_NONE ),
526     ENTRY( 0x0008, 0x1090, "LO", "Manufacturer's Model Name", FUNCDCM_NONE ),
527     ENTRY( 0x0008, 0x1100, "SQ", "Referenced Results Sequence", FUNCDCM_NONE ),
528     ENTRY( 0x0008, 0x1110, "SQ", "Referenced Study Sequence", FUNCDCM_NONE ),
529     ENTRY( 0x0008, 0x1111, "SQ", "Referenced Study Component Sequence", FUNCDCM_NONE ),
530     ENTRY( 0x0008, 0x1115, "SQ", "Referenced Series Sequence", FUNCDCM_NONE ),
531     ENTRY( 0x0008, 0x1120, "SQ", "Referenced Patient Sequence", FUNCDCM_NONE ),
532     ENTRY( 0x0008, 0x1125, "SQ", "Referenced Visit Sequence", FUNCDCM_NONE ),
533     ENTRY( 0x0008, 0x1130, "SQ", "Referenced Overlay Sequence", FUNCDCM_NONE ),
534     ENTRY( 0x0008, 0x1140, "SQ", "Referenced Image Sequence", FUNCDCM_NONE ),
535     ENTRY( 0x0008, 0x1145, "SQ", "Referenced Curve Sequence", FUNCDCM_NONE ),
536     ENTRY( 0x0008, 0x1148, "SQ", "Referenced Previous Waveform", FUNCDCM_NONE ),
537     ENTRY( 0x0008, 0x114a, "SQ", "Referenced Simultaneous Waveforms", FUNCDCM_NONE ),
538     ENTRY( 0x0008, 0x114c, "SQ", "Referenced Subsequent Waveform", FUNCDCM_NONE ),
539     ENTRY( 0x0008, 0x1150, "UI", "Referenced SOP Class UID", FUNCDCM_NONE ),
540     ENTRY( 0x0008, 0x1155, "UI", "Referenced SOP Instance UID", FUNCDCM_NONE ),
541     ENTRY( 0x0008, 0x1160, "IS", "Referenced Frame Number", FUNCDCM_NONE ),
542     ENTRY( 0x0008, 0x1195, "UI", "Transaction UID", FUNCDCM_NONE ),
543     ENTRY( 0x0008, 0x1197, "US", "Failure Reason", FUNCDCM_NONE ),
544     ENTRY( 0x0008, 0x1198, "SQ", "Failed SOP Sequence", FUNCDCM_NONE ),
545     ENTRY( 0x0008, 0x1199, "SQ", "Referenced SOP Sequence", FUNCDCM_NONE ),
546     ENTRY( 0x0008, 0x2110, "CS", "Old Lossy Image Compression", FUNCDCM_NONE ),
547     ENTRY( 0x0008, 0x2111, "ST", "Derivation Description", FUNCDCM_NONE ),
548     ENTRY( 0x0008, 0x2112, "SQ", "Source Image Sequence", FUNCDCM_NONE ),
549     ENTRY( 0x0008, 0x2120, "SH", "Stage Name", FUNCDCM_NONE ),
550     ENTRY( 0x0008, 0x2122, "IS", "Stage Number", FUNCDCM_NONE ),
551     ENTRY( 0x0008, 0x2124, "IS", "Number of Stages", FUNCDCM_NONE ),
552     ENTRY( 0x0008, 0x2128, "IS", "View Number", FUNCDCM_NONE ),
553     ENTRY( 0x0008, 0x2129, "IS", "Number of Event Timers", FUNCDCM_NONE ),
554     ENTRY( 0x0008, 0x212a, "IS", "Number of Views in Stage", FUNCDCM_NONE ),
555     ENTRY( 0x0008, 0x2130, "DS", "Event Elapsed Time(s)", FUNCDCM_NONE ),
556     ENTRY( 0x0008, 0x2132, "LO", "Event Timer Name(s)", FUNCDCM_NONE ),
557     ENTRY( 0x0008, 0x2142, "IS", "Start Trim", FUNCDCM_NONE ),
558     ENTRY( 0x0008, 0x2143, "IS", "Stop Trim", FUNCDCM_NONE ),
559     ENTRY( 0x0008, 0x2144, "IS", "Recommended Display Frame Rate", FUNCDCM_NONE ),
560     ENTRY( 0x0008, 0x2200, "CS", "Transducer Position", FUNCDCM_NONE ),
561     ENTRY( 0x0008, 0x2204, "CS", "Transducer Orientation", FUNCDCM_NONE ),
562     ENTRY( 0x0008, 0x2208, "CS", "Anatomic Structure", FUNCDCM_NONE ),
563     ENTRY( 0x0008, 0x2218, "SQ", "Anatomic Region Sequence", FUNCDCM_NONE ),
564     ENTRY( 0x0008, 0x2220, "SQ", "Anatomic Region Modifier Sequence", FUNCDCM_NONE ),
565     ENTRY( 0x0008, 0x2228, "SQ", "Primary Anatomic Structure Sequence", FUNCDCM_NONE ),
566     ENTRY( 0x0008, 0x2230, "SQ", "Primary Anatomic Structure Modifier Sequence", FUNCDCM_NONE ),
567     ENTRY( 0x0008, 0x2240, "SQ", "Transducer Position Sequence", FUNCDCM_NONE ),
568     ENTRY( 0x0008, 0x2242, "SQ", "Transducer Position Modifier Sequence", FUNCDCM_NONE ),
569     ENTRY( 0x0008, 0x2244, "SQ", "Transducer Orientation Sequence", FUNCDCM_NONE ),
570     ENTRY( 0x0008, 0x2246, "SQ", "Transducer Orientation Modifier Sequence", FUNCDCM_NONE ),
571     ENTRY( 0x0008, 0x2251, "SQ", "Anatomic Structure Space Or Region Code Sequence", FUNCDCM_NONE ),
572     ENTRY( 0x0008, 0x2253, "SQ", "Anatomic Portal Of Entrance Code Sequence", FUNCDCM_NONE ),
573     ENTRY( 0x0008, 0x2255, "SQ", "Anatomic Approach Direction Code Sequence", FUNCDCM_NONE ),
574     ENTRY( 0x0008, 0x2256, "ST", "Anatomic Perspective Description", FUNCDCM_NONE ),
575     ENTRY( 0x0008, 0x2257, "SQ", "Anatomic Perspective Code Sequence", FUNCDCM_NONE ),
576     ENTRY( 0x0008, 0x2258, "ST", "Anatomic Location Of Examining Instrument Description", FUNCDCM_NONE ),
577     ENTRY( 0x0008, 0x2259, "SQ", "Anatomic Location Of Examining Instrument Code Sequence", FUNCDCM_NONE ),
578     ENTRY( 0x0008, 0x225a, "SQ", "Anatomic Structure Space Or Region Modifier Code Sequence", FUNCDCM_NONE ),
579     ENTRY( 0x0008, 0x225c, "SQ", "OnAxis Background Anatomic Structure Code Sequence", FUNCDCM_NONE ),
580     ENTRY( 0x0008, 0x4000, "LT", "Identifying Comments", FUNCDCM_NONE ),
581     ENTRY( 0x0009, 0x0000, "xs", "?", FUNCDCM_NONE ),
582     ENTRY( 0x0009, 0x0001, "xs", "?", FUNCDCM_NONE ),
583     ENTRY( 0x0009, 0x0002, "xs", "?", FUNCDCM_NONE ),
584     ENTRY( 0x0009, 0x0003, "xs", "?", FUNCDCM_NONE ),
585     ENTRY( 0x0009, 0x0004, "xs", "?", FUNCDCM_NONE ),
586     ENTRY( 0x0009, 0x0005, "UN", "?", FUNCDCM_NONE ),
587     ENTRY( 0x0009, 0x0006, "UN", "?", FUNCDCM_NONE ),
588     ENTRY( 0x0009, 0x0007, "UN", "?", FUNCDCM_NONE ),
589     ENTRY( 0x0009, 0x0008, "xs", "?", FUNCDCM_NONE ),
590     ENTRY( 0x0009, 0x0009, "LT", "?", FUNCDCM_NONE ),
591     ENTRY( 0x0009, 0x000a, "IS", "?", FUNCDCM_NONE ),
592     ENTRY( 0x0009, 0x000b, "IS", "?", FUNCDCM_NONE ),
593     ENTRY( 0x0009, 0x000c, "IS", "?", FUNCDCM_NONE ),
594     ENTRY( 0x0009, 0x000d, "IS", "?", FUNCDCM_NONE ),
595     ENTRY( 0x0009, 0x000e, "IS", "?", FUNCDCM_NONE ),
596     ENTRY( 0x0009, 0x000f, "UN", "?", FUNCDCM_NONE ),
597     ENTRY( 0x0009, 0x0010, "xs", "?", FUNCDCM_NONE ),
598     ENTRY( 0x0009, 0x0011, "xs", "?", FUNCDCM_NONE ),
599     ENTRY( 0x0009, 0x0012, "xs", "?", FUNCDCM_NONE ),
600     ENTRY( 0x0009, 0x0013, "xs", "?", FUNCDCM_NONE ),
601     ENTRY( 0x0009, 0x0014, "xs", "?", FUNCDCM_NONE ),
602     ENTRY( 0x0009, 0x0015, "xs", "?", FUNCDCM_NONE ),
603     ENTRY( 0x0009, 0x0016, "xs", "?", FUNCDCM_NONE ),
604     ENTRY( 0x0009, 0x0017, "LT", "?", FUNCDCM_NONE ),
605     ENTRY( 0x0009, 0x0018, "LT", "Data Set Identifier", FUNCDCM_NONE ),
606     ENTRY( 0x0009, 0x001a, "US", "?", FUNCDCM_NONE ),
607     ENTRY( 0x0009, 0x001e, "UI", "?", FUNCDCM_NONE ),
608     ENTRY( 0x0009, 0x0020, "xs", "?", FUNCDCM_NONE ),
609     ENTRY( 0x0009, 0x0021, "xs", "?", FUNCDCM_NONE ),
610     ENTRY( 0x0009, 0x0022, "SH", "User Orientation", FUNCDCM_NONE ),
611     ENTRY( 0x0009, 0x0023, "SL", "Initiation Type", FUNCDCM_NONE ),
612     ENTRY( 0x0009, 0x0024, "xs", "?", FUNCDCM_NONE ),
613     ENTRY( 0x0009, 0x0025, "xs", "?", FUNCDCM_NONE ),
614     ENTRY( 0x0009, 0x0026, "xs", "?", FUNCDCM_NONE ),
615     ENTRY( 0x0009, 0x0027, "xs", "?", FUNCDCM_NONE ),
616     ENTRY( 0x0009, 0x0029, "xs", "?", FUNCDCM_NONE ),
617     ENTRY( 0x0009, 0x002a, "SL", "?", FUNCDCM_NONE ),
618     ENTRY( 0x0009, 0x002c, "LO", "Series Comments", FUNCDCM_NONE ),
619     ENTRY( 0x0009, 0x002d, "SL", "Track Beat Average", FUNCDCM_NONE ),
620     ENTRY( 0x0009, 0x002e, "FD", "Distance Prescribed", FUNCDCM_NONE ),
621     ENTRY( 0x0009, 0x002f, "LT", "?", FUNCDCM_NONE ),
622     ENTRY( 0x0009, 0x0030, "xs", "?", FUNCDCM_NONE ),
623     ENTRY( 0x0009, 0x0031, "xs", "?", FUNCDCM_NONE ),
624     ENTRY( 0x0009, 0x0032, "LT", "?", FUNCDCM_NONE ),
625     ENTRY( 0x0009, 0x0034, "xs", "?", FUNCDCM_NONE ),
626     ENTRY( 0x0009, 0x0035, "SL", "Gantry Locus Type", FUNCDCM_NONE ),
627     ENTRY( 0x0009, 0x0037, "SL", "Starting Heart Rate", FUNCDCM_NONE ),
628     ENTRY( 0x0009, 0x0038, "xs", "?", FUNCDCM_NONE ),
629     ENTRY( 0x0009, 0x0039, "SL", "RR Window Offset", FUNCDCM_NONE ),
630     ENTRY( 0x0009, 0x003a, "SL", "Percent Cycle Imaged", FUNCDCM_NONE ),
631     ENTRY( 0x0009, 0x003e, "US", "?", FUNCDCM_NONE ),
632     ENTRY( 0x0009, 0x003f, "US", "?", FUNCDCM_NONE ),
633     ENTRY( 0x0009, 0x0040, "xs", "?", FUNCDCM_NONE ),
634     ENTRY( 0x0009, 0x0041, "xs", "?", FUNCDCM_NONE ),
635     ENTRY( 0x0009, 0x0042, "xs", "?", FUNCDCM_NONE ),
636     ENTRY( 0x0009, 0x0043, "xs", "?", FUNCDCM_NONE ),
637     ENTRY( 0x0009, 0x0050, "LT", "?", FUNCDCM_NONE ),
638     ENTRY( 0x0009, 0x0051, "xs", "?", FUNCDCM_NONE ),
639     ENTRY( 0x0009, 0x0060, "LT", "?", FUNCDCM_NONE ),
640     ENTRY( 0x0009, 0x0061, "LT", "Series Unique Identifier", FUNCDCM_NONE ),
641     ENTRY( 0x0009, 0x0070, "LT", "?", FUNCDCM_NONE ),
642     ENTRY( 0x0009, 0x0080, "LT", "?", FUNCDCM_NONE ),
643     ENTRY( 0x0009, 0x0091, "LT", "?", FUNCDCM_NONE ),
644     ENTRY( 0x0009, 0x00e2, "LT", "?", FUNCDCM_NONE ),
645     ENTRY( 0x0009, 0x00e3, "UI", "Equipment UID", FUNCDCM_NONE ),
646     ENTRY( 0x0009, 0x00e6, "SH", "Genesis Version Now", FUNCDCM_NONE ),
647     ENTRY( 0x0009, 0x00e7, "UL", "Exam Record Checksum", FUNCDCM_NONE ),
648     ENTRY( 0x0009, 0x00e8, "UL", "?", FUNCDCM_NONE ),
649     ENTRY( 0x0009, 0x00e9, "SL", "Actual Series Data Time Stamp", FUNCDCM_NONE ),
650     ENTRY( 0x0009, 0x00f2, "UN", "?", FUNCDCM_NONE ),
651     ENTRY( 0x0009, 0x00f3, "UN", "?", FUNCDCM_NONE ),
652     ENTRY( 0x0009, 0x00f4, "LT", "?", FUNCDCM_NONE ),
653     ENTRY( 0x0009, 0x00f5, "xs", "?", FUNCDCM_NONE ),
654     ENTRY( 0x0009, 0x00f6, "LT", "PDM Data Object Type Extension", FUNCDCM_NONE ),
655     ENTRY( 0x0009, 0x00f8, "US", "?", FUNCDCM_NONE ),
656     ENTRY( 0x0009, 0x00fb, "IS", "?", FUNCDCM_NONE ),
657     ENTRY( 0x0009, 0x1002, "OB", "?", FUNCDCM_NONE ),
658     ENTRY( 0x0009, 0x1003, "OB", "?", FUNCDCM_NONE ),
659     ENTRY( 0x0009, 0x1010, "UN", "?", FUNCDCM_NONE ),
660     ENTRY( 0x0010, 0x0000, "UL", "Patient Group Length", FUNCDCM_NONE ),
661     ENTRY( 0x0010, 0x0010, "PN", "Patient's Name", FUNCDCM_PATIENTNAME ),
662     ENTRY( 0x0010, 0x0020, "LO", "Patient's ID", FUNCDCM_NONE ),
663     ENTRY( 0x0010, 0x0021, "LO", "Issuer of Patient's ID", FUNCDCM_NONE ),
664     ENTRY( 0x0010, 0x0030, "DA", "Patient's Birth Date", FUNCDCM_NONE ),
665     ENTRY( 0x0010, 0x0032, "TM", "Patient's Birth Time", FUNCDCM_NONE ),
666     ENTRY( 0x0010, 0x0040, "CS", "Patient's Sex", FUNCDCM_NONE ),
667     ENTRY( 0x0010, 0x0050, "SQ", "Patient's Insurance Plan Code Sequence", FUNCDCM_NONE ),
668     ENTRY( 0x0010, 0x1000, "LO", "Other Patient's ID's", FUNCDCM_NONE ),
669     ENTRY( 0x0010, 0x1001, "PN", "Other Patient's Names", FUNCDCM_NONE ),
670     ENTRY( 0x0010, 0x1005, "PN", "Patient's Birth Name", FUNCDCM_NONE ),
671     ENTRY( 0x0010, 0x1010, "AS", "Patient's Age", FUNCDCM_NONE ),
672     ENTRY( 0x0010, 0x1020, "DS", "Patient's Size", FUNCDCM_NONE ),
673     ENTRY( 0x0010, 0x1030, "DS", "Patient's Weight", FUNCDCM_NONE ),
674     ENTRY( 0x0010, 0x1040, "LO", "Patient's Address", FUNCDCM_NONE ),
675     ENTRY( 0x0010, 0x1050, "LT", "Insurance Plan Identification", FUNCDCM_NONE ),
676     ENTRY( 0x0010, 0x1060, "PN", "Patient's Mother's Birth Name", FUNCDCM_NONE ),
677     ENTRY( 0x0010, 0x1080, "LO", "Military Rank", FUNCDCM_NONE ),
678     ENTRY( 0x0010, 0x1081, "LO", "Branch of Service", FUNCDCM_NONE ),
679     ENTRY( 0x0010, 0x1090, "LO", "Medical Record Locator", FUNCDCM_NONE ),
680     ENTRY( 0x0010, 0x2000, "LO", "Medical Alerts", FUNCDCM_NONE ),
681     ENTRY( 0x0010, 0x2110, "LO", "Contrast Allergies", FUNCDCM_NONE ),
682     ENTRY( 0x0010, 0x2150, "LO", "Country of Residence", FUNCDCM_NONE ),
683     ENTRY( 0x0010, 0x2152, "LO", "Region of Residence", FUNCDCM_NONE ),
684     ENTRY( 0x0010, 0x2154, "SH", "Patients Telephone Numbers", FUNCDCM_NONE ),
685     ENTRY( 0x0010, 0x2160, "SH", "Ethnic Group", FUNCDCM_NONE ),
686     ENTRY( 0x0010, 0x2180, "SH", "Occupation", FUNCDCM_NONE ),
687     ENTRY( 0x0010, 0x21a0, "CS", "Smoking Status", FUNCDCM_NONE ),
688     ENTRY( 0x0010, 0x21b0, "LT", "Additional Patient History", FUNCDCM_NONE ),
689     ENTRY( 0x0010, 0x21c0, "US", "Pregnancy Status", FUNCDCM_NONE ),
690     ENTRY( 0x0010, 0x21d0, "DA", "Last Menstrual Date", FUNCDCM_NONE ),
691     ENTRY( 0x0010, 0x21f0, "LO", "Patients Religious Preference", FUNCDCM_NONE ),
692     ENTRY( 0x0010, 0x4000, "LT", "Patient Comments", FUNCDCM_NONE ),
693     ENTRY( 0x0011, 0x0001, "xs", "?", FUNCDCM_NONE ),
694     ENTRY( 0x0011, 0x0002, "US", "?", FUNCDCM_NONE ),
695     ENTRY( 0x0011, 0x0003, "LT", "Patient UID", FUNCDCM_NONE ),
696     ENTRY( 0x0011, 0x0004, "LT", "Patient ID", FUNCDCM_NONE ),
697     ENTRY( 0x0011, 0x000a, "xs", "?", FUNCDCM_NONE ),
698     ENTRY( 0x0011, 0x000b, "SL", "Effective Series Duration", FUNCDCM_NONE ),
699     ENTRY( 0x0011, 0x000c, "SL", "Num Beats", FUNCDCM_NONE ),
700     ENTRY( 0x0011, 0x000d, "LO", "Radio Nuclide Name", FUNCDCM_NONE ),
701     ENTRY( 0x0011, 0x0010, "xs", "?", FUNCDCM_NONE ),
702     ENTRY( 0x0011, 0x0011, "xs", "?", FUNCDCM_NONE ),
703     ENTRY( 0x0011, 0x0012, "LO", "Dataset Name", FUNCDCM_NONE ),
704     ENTRY( 0x0011, 0x0013, "LO", "Dataset Type", FUNCDCM_NONE ),
705     ENTRY( 0x0011, 0x0015, "xs", "?", FUNCDCM_NONE ),
706     ENTRY( 0x0011, 0x0016, "SL", "Energy Number", FUNCDCM_NONE ),
707     ENTRY( 0x0011, 0x0017, "SL", "RR Interval Window Number", FUNCDCM_NONE ),
708     ENTRY( 0x0011, 0x0018, "SL", "MG Bin Number", FUNCDCM_NONE ),
709     ENTRY( 0x0011, 0x0019, "FD", "Radius Of Rotation", FUNCDCM_NONE ),
710     ENTRY( 0x0011, 0x001a, "SL", "Detector Count Zone", FUNCDCM_NONE ),
711     ENTRY( 0x0011, 0x001b, "SL", "Num Energy Windows", FUNCDCM_NONE ),
712     ENTRY( 0x0011, 0x001c, "SL", "Energy Offset", FUNCDCM_NONE ),
713     ENTRY( 0x0011, 0x001d, "SL", "Energy Range", FUNCDCM_NONE ),
714     ENTRY( 0x0011, 0x001f, "SL", "Image Orientation", FUNCDCM_IMAGEORIENTATION ),
715     ENTRY( 0x0011, 0x0020, "xs", "?", FUNCDCM_NONE ),
716     ENTRY( 0x0011, 0x0021, "xs", "?", FUNCDCM_NONE ),
717     ENTRY( 0x0011, 0x0022, "xs", "?", FUNCDCM_NONE ),
718     ENTRY( 0x0011, 0x0023, "xs", "?", FUNCDCM_NONE ),
719     ENTRY( 0x0011, 0x0024, "SL", "FOV Mask Y Cutoff Angle", FUNCDCM_NONE ),
720     ENTRY( 0x0011, 0x0025, "xs", "?", FUNCDCM_NONE ),
721     ENTRY( 0x0011, 0x0026, "SL", "Table Orientation", FUNCDCM_NONE ),
722     ENTRY( 0x0011, 0x0027, "SL", "ROI Top Left", FUNCDCM_NONE ),
723     ENTRY( 0x0011, 0x0028, "SL", "ROI Bottom Right", FUNCDCM_NONE ),
724     ENTRY( 0x0011, 0x0030, "xs", "?", FUNCDCM_NONE ),
725     ENTRY( 0x0011, 0x0031, "xs", "?", FUNCDCM_NONE ),
726     ENTRY( 0x0011, 0x0032, "UN", "?", FUNCDCM_NONE ),
727     ENTRY( 0x0011, 0x0033, "LO", "Energy Correct Name", FUNCDCM_NONE ),
728     ENTRY( 0x0011, 0x0034, "LO", "Spatial Correct Name", FUNCDCM_NONE ),
729     ENTRY( 0x0011, 0x0035, "xs", "?", FUNCDCM_NONE ),
730     ENTRY( 0x0011, 0x0036, "LO", "Uniformity Correct Name", FUNCDCM_NONE ),
731     ENTRY( 0x0011, 0x0037, "LO", "Acquisition Specific Correct Name", FUNCDCM_NONE ),
732     ENTRY( 0x0011, 0x0038, "SL", "Byte Order", FUNCDCM_NONE ),
733     ENTRY( 0x0011, 0x003a, "SL", "Picture Format", FUNCDCM_NONE ),
734     ENTRY( 0x0011, 0x003b, "FD", "Pixel Scale", FUNCDCM_NONE ),
735     ENTRY( 0x0011, 0x003c, "FD", "Pixel Offset", FUNCDCM_NONE ),
736     ENTRY( 0x0011, 0x003e, "SL", "FOV Shape", FUNCDCM_NONE ),
737     ENTRY( 0x0011, 0x003f, "SL", "Dataset Flags", FUNCDCM_NONE ),
738     ENTRY( 0x0011, 0x0040, "xs", "?", FUNCDCM_NONE ),
739     ENTRY( 0x0011, 0x0041, "LT", "Medical Alerts", FUNCDCM_NONE ),
740     ENTRY( 0x0011, 0x0042, "LT", "Contrast Allergies", FUNCDCM_NONE ),
741     ENTRY( 0x0011, 0x0044, "FD", "Threshold Center", FUNCDCM_NONE ),
742     ENTRY( 0x0011, 0x0045, "FD", "Threshold Width", FUNCDCM_NONE ),
743     ENTRY( 0x0011, 0x0046, "SL", "Interpolation Type", FUNCDCM_NONE ),
744     ENTRY( 0x0011, 0x0055, "FD", "Period", FUNCDCM_NONE ),
745     ENTRY( 0x0011, 0x0056, "FD", "ElapsedTime", FUNCDCM_NONE ),
746     ENTRY( 0x0011, 0x00a1, "DA", "Patient Registration Date", FUNCDCM_NONE ),
747     ENTRY( 0x0011, 0x00a2, "TM", "Patient Registration Time", FUNCDCM_NONE ),
748     ENTRY( 0x0011, 0x00b0, "LT", "Patient Last Name", FUNCDCM_NONE ),
749     ENTRY( 0x0011, 0x00b2, "LT", "Patient First Name", FUNCDCM_NONE ),
750     ENTRY( 0x0011, 0x00b4, "LT", "Patient Hospital Status", FUNCDCM_NONE ),
751     ENTRY( 0x0011, 0x00bc, "TM", "Current Location Time", FUNCDCM_NONE ),
752     ENTRY( 0x0011, 0x00c0, "LT", "Patient Insurance Status", FUNCDCM_NONE ),
753     ENTRY( 0x0011, 0x00d0, "LT", "Patient Billing Type", FUNCDCM_NONE ),
754     ENTRY( 0x0011, 0x00d2, "LT", "Patient Billing Address", FUNCDCM_NONE ),
755     ENTRY( 0x0013, 0x0000, "LT", "Modifying Physician", FUNCDCM_NONE ),
756     ENTRY( 0x0013, 0x0010, "xs", "?", FUNCDCM_NONE ),
757     ENTRY( 0x0013, 0x0011, "SL", "?", FUNCDCM_NONE ),
758     ENTRY( 0x0013, 0x0012, "xs", "?", FUNCDCM_NONE ),
759     ENTRY( 0x0013, 0x0016, "SL", "AutoTrack Peak", FUNCDCM_NONE ),
760     ENTRY( 0x0013, 0x0017, "SL", "AutoTrack Width", FUNCDCM_NONE ),
761     ENTRY( 0x0013, 0x0018, "FD", "Transmission Scan Time", FUNCDCM_NONE ),
762     ENTRY( 0x0013, 0x0019, "FD", "Transmission Mask Width", FUNCDCM_NONE ),
763     ENTRY( 0x0013, 0x001a, "FD", "Copper Attenuator Thickness", FUNCDCM_NONE ),
764     ENTRY( 0x0013, 0x001c, "FD", "?", FUNCDCM_NONE ),
765     ENTRY( 0x0013, 0x001d, "FD", "?", FUNCDCM_NONE ),
766     ENTRY( 0x0013, 0x001e, "FD", "Tomo View Offset", FUNCDCM_NONE ),
767     ENTRY( 0x0013, 0x0020, "LT", "Patient Name", FUNCDCM_NONE ),
768     ENTRY( 0x0013, 0x0022, "LT", "Patient Id", FUNCDCM_NONE ),
769     ENTRY( 0x0013, 0x0026, "LT", "Study Comments", FUNCDCM_NONE ),
770     ENTRY( 0x0013, 0x0030, "DA", "Patient Birthdate", FUNCDCM_NONE ),
771     ENTRY( 0x0013, 0x0031, "DS", "Patient Weight", FUNCDCM_NONE ),
772     ENTRY( 0x0013, 0x0032, "LT", "Patients Maiden Name", FUNCDCM_NONE ),
773     ENTRY( 0x0013, 0x0033, "LT", "Referring Physician", FUNCDCM_NONE ),
774     ENTRY( 0x0013, 0x0034, "LT", "Admitting Diagnosis", FUNCDCM_NONE ),
775     ENTRY( 0x0013, 0x0035, "LT", "Patient Sex", FUNCDCM_NONE ),
776     ENTRY( 0x0013, 0x0040, "LT", "Procedure Description", FUNCDCM_NONE ),
777     ENTRY( 0x0013, 0x0042, "LT", "Patient Rest Direction", FUNCDCM_NONE ),
778     ENTRY( 0x0013, 0x0044, "LT", "Patient Position", FUNCDCM_NONE ),
779     ENTRY( 0x0013, 0x0046, "LT", "View Direction", FUNCDCM_NONE ),
780     ENTRY( 0x0015, 0x0001, "DS", "Stenosis Calibration Ratio", FUNCDCM_NONE ),
781     ENTRY( 0x0015, 0x0002, "DS", "Stenosis Magnification", FUNCDCM_NONE ),
782     ENTRY( 0x0015, 0x0003, "DS", "Cardiac Calibration Ratio", FUNCDCM_NONE ),
783     ENTRY( 0x0018, 0x0000, "UL", "Acquisition Group Length", FUNCDCM_NONE ),
784     ENTRY( 0x0018, 0x0010, "LO", "Contrast/Bolus Agent", FUNCDCM_NONE ),
785     ENTRY( 0x0018, 0x0012, "SQ", "Contrast/Bolus Agent Sequence", FUNCDCM_NONE ),
786     ENTRY( 0x0018, 0x0014, "SQ", "Contrast/Bolus Administration Route Sequence", FUNCDCM_NONE ),
787     ENTRY( 0x0018, 0x0015, "CS", "Body Part Examined", FUNCDCM_NONE ),
788     ENTRY( 0x0018, 0x0020, "CS", "Scanning Sequence", FUNCDCM_NONE ),
789     ENTRY( 0x0018, 0x0021, "CS", "Sequence Variant", FUNCDCM_NONE ),
790     ENTRY( 0x0018, 0x0022, "CS", "Scan Options", FUNCDCM_NONE ),
791     ENTRY( 0x0018, 0x0023, "CS", "MR Acquisition Type", FUNCDCM_NONE ),
792     ENTRY( 0x0018, 0x0024, "SH", "Sequence Name", FUNCDCM_NONE ),
793     ENTRY( 0x0018, 0x0025, "CS", "Angio Flag", FUNCDCM_NONE ),
794     ENTRY( 0x0018, 0x0026, "SQ", "Intervention Drug Information Sequence", FUNCDCM_NONE ),
795     ENTRY( 0x0018, 0x0027, "TM", "Intervention Drug Stop Time", FUNCDCM_NONE ),
796     ENTRY( 0x0018, 0x0028, "DS", "Intervention Drug Dose", FUNCDCM_NONE ),
797     ENTRY( 0x0018, 0x0029, "SQ", "Intervention Drug Code Sequence", FUNCDCM_NONE ),
798     ENTRY( 0x0018, 0x002a, "SQ", "Additional Drug Sequence", FUNCDCM_NONE ),
799     ENTRY( 0x0018, 0x0030, "LO", "Radionuclide", FUNCDCM_NONE ),
800     ENTRY( 0x0018, 0x0031, "LO", "Radiopharmaceutical", FUNCDCM_NONE ),
801     ENTRY( 0x0018, 0x0032, "DS", "Energy Window Centerline", FUNCDCM_NONE ),
802     ENTRY( 0x0018, 0x0033, "DS", "Energy Window Total Width", FUNCDCM_NONE ),
803     ENTRY( 0x0018, 0x0034, "LO", "Intervention Drug Name", FUNCDCM_NONE ),
804     ENTRY( 0x0018, 0x0035, "TM", "Intervention Drug Start Time", FUNCDCM_NONE ),
805     ENTRY( 0x0018, 0x0036, "SQ", "Intervention Therapy Sequence", FUNCDCM_NONE ),
806     ENTRY( 0x0018, 0x0037, "CS", "Therapy Type", FUNCDCM_NONE ),
807     ENTRY( 0x0018, 0x0038, "CS", "Intervention Status", FUNCDCM_NONE ),
808     ENTRY( 0x0018, 0x0039, "CS", "Therapy Description", FUNCDCM_NONE ),
809     ENTRY( 0x0018, 0x0040, "IS", "Cine Rate", FUNCDCM_NONE ),
810     ENTRY( 0x0018, 0x0050, "DS", "Slice Thickness", FUNCDCM_NONE ),
811     ENTRY( 0x0018, 0x0060, "DS", "KVP", FUNCDCM_NONE ),
812     ENTRY( 0x0018, 0x0070, "IS", "Counts Accumulated", FUNCDCM_NONE ),
813     ENTRY( 0x0018, 0x0071, "CS", "Acquisition Termination Condition", FUNCDCM_NONE ),
814     ENTRY( 0x0018, 0x0072, "DS", "Effective Series Duration", FUNCDCM_NONE ),
815     ENTRY( 0x0018, 0x0073, "CS", "Acquisition Start Condition", FUNCDCM_NONE ),
816     ENTRY( 0x0018, 0x0074, "IS", "Acquisition Start Condition Data", FUNCDCM_NONE ),
817     ENTRY( 0x0018, 0x0075, "IS", "Acquisition Termination Condition Data", FUNCDCM_NONE ),
818     ENTRY( 0x0018, 0x0080, "DS", "Repetition Time", FUNCDCM_NONE ),
819     ENTRY( 0x0018, 0x0081, "DS", "Echo Time", FUNCDCM_NONE ),
820     ENTRY( 0x0018, 0x0082, "DS", "Inversion Time", FUNCDCM_NONE ),
821     ENTRY( 0x0018, 0x0083, "DS", "Number of Averages", FUNCDCM_NONE ),
822     ENTRY( 0x0018, 0x0084, "DS", "Imaging Frequency", FUNCDCM_NONE ),
823     ENTRY( 0x0018, 0x0085, "SH", "Imaged Nucleus", FUNCDCM_NONE ),
824     ENTRY( 0x0018, 0x0086, "IS", "Echo Number(s)", FUNCDCM_NONE ),
825     ENTRY( 0x0018, 0x0087, "DS", "Magnetic Field Strength", FUNCDCM_NONE ),
826     ENTRY( 0x0018, 0x0088, "DS", "Spacing Between Slices", FUNCDCM_NONE ),
827     ENTRY( 0x0018, 0x0089, "IS", "Number of Phase Encoding Steps", FUNCDCM_NONE ),
828     ENTRY( 0x0018, 0x0090, "DS", "Data Collection Diameter", FUNCDCM_NONE ),
829     ENTRY( 0x0018, 0x0091, "IS", "Echo Train Length", FUNCDCM_NONE ),
830     ENTRY( 0x0018, 0x0093, "DS", "Percent Sampling", FUNCDCM_NONE ),
831     ENTRY( 0x0018, 0x0094, "DS", "Percent Phase Field of View", FUNCDCM_NONE ),
832     ENTRY( 0x0018, 0x0095, "DS", "Pixel Bandwidth", FUNCDCM_NONE ),
833     ENTRY( 0x0018, 0x1000, "LO", "Device Serial Number", FUNCDCM_NONE ),
834     ENTRY( 0x0018, 0x1004, "LO", "Plate ID", FUNCDCM_NONE ),
835     ENTRY( 0x0018, 0x1010, "LO", "Secondary Capture Device ID", FUNCDCM_NONE ),
836     ENTRY( 0x0018, 0x1012, "DA", "Date of Secondary Capture", FUNCDCM_NONE ),
837     ENTRY( 0x0018, 0x1014, "TM", "Time of Secondary Capture", FUNCDCM_NONE ),
838     ENTRY( 0x0018, 0x1016, "LO", "Secondary Capture Device Manufacturer", FUNCDCM_NONE ),
839     ENTRY( 0x0018, 0x1018, "LO", "Secondary Capture Device Manufacturer Model Name", FUNCDCM_NONE ),
840     ENTRY( 0x0018, 0x1019, "LO", "Secondary Capture Device Software Version(s)", FUNCDCM_NONE ),
841     ENTRY( 0x0018, 0x1020, "LO", "Software Version(s)", FUNCDCM_NONE ),
842     ENTRY( 0x0018, 0x1022, "SH", "Video Image Format Acquired", FUNCDCM_NONE ),
843     ENTRY( 0x0018, 0x1023, "LO", "Digital Image Format Acquired", FUNCDCM_NONE ),
844     ENTRY( 0x0018, 0x1030, "LO", "Protocol Name", FUNCDCM_NONE ),
845     ENTRY( 0x0018, 0x1040, "LO", "Contrast/Bolus Route", FUNCDCM_NONE ),
846     ENTRY( 0x0018, 0x1041, "DS", "Contrast/Bolus Volume", FUNCDCM_NONE ),
847     ENTRY( 0x0018, 0x1042, "TM", "Contrast/Bolus Start Time", FUNCDCM_NONE ),
848     ENTRY( 0x0018, 0x1043, "TM", "Contrast/Bolus Stop Time", FUNCDCM_NONE ),
849     ENTRY( 0x0018, 0x1044, "DS", "Contrast/Bolus Total Dose", FUNCDCM_NONE ),
850     ENTRY( 0x0018, 0x1045, "IS", "Syringe Counts", FUNCDCM_NONE ),
851     ENTRY( 0x0018, 0x1046, "DS", "Contrast Flow Rate", FUNCDCM_NONE ),
852     ENTRY( 0x0018, 0x1047, "DS", "Contrast Flow Duration", FUNCDCM_NONE ),
853     ENTRY( 0x0018, 0x1048, "CS", "Contrast/Bolus Ingredient", FUNCDCM_NONE ),
854     ENTRY( 0x0018, 0x1049, "DS", "Contrast/Bolus Ingredient Concentration", FUNCDCM_NONE ),
855     ENTRY( 0x0018, 0x1050, "DS", "Spatial Resolution", FUNCDCM_NONE ),
856     ENTRY( 0x0018, 0x1060, "DS", "Trigger Time", FUNCDCM_TRIGGERTIME ),
857     ENTRY( 0x0018, 0x1061, "LO", "Trigger Source or Type", FUNCDCM_NONE ),
858     ENTRY( 0x0018, 0x1062, "IS", "Nominal Interval", FUNCDCM_NONE ),
859     ENTRY( 0x0018, 0x1063, "DS", "Frame Time", FUNCDCM_NONE ),
860     ENTRY( 0x0018, 0x1064, "LO", "Framing Type", FUNCDCM_NONE ),
861     ENTRY( 0x0018, 0x1065, "DS", "Frame Time Vector", FUNCDCM_NONE ),
862     ENTRY( 0x0018, 0x1066, "DS", "Frame Delay", FUNCDCM_NONE ),
863     ENTRY( 0x0018, 0x1067, "DS", "Image Trigger Delay", FUNCDCM_NONE ),
864     ENTRY( 0x0018, 0x1068, "DS", "Group Time Offset", FUNCDCM_NONE ),
865     ENTRY( 0x0018, 0x1069, "DS", "Trigger Time Offset", FUNCDCM_NONE ),
866     ENTRY( 0x0018, 0x106a, "CS", "Synchronization Trigger", FUNCDCM_NONE ),
867     ENTRY( 0x0018, 0x106b, "UI", "Synchronization Frame of Reference", FUNCDCM_NONE ),
868     ENTRY( 0x0018, 0x106e, "UL", "Trigger Sample Position", FUNCDCM_NONE ),
869     ENTRY( 0x0018, 0x1070, "LO", "Radiopharmaceutical Route", FUNCDCM_NONE ),
870     ENTRY( 0x0018, 0x1071, "DS", "Radiopharmaceutical Volume", FUNCDCM_NONE ),
871     ENTRY( 0x0018, 0x1072, "TM", "Radiopharmaceutical Start Time", FUNCDCM_NONE ),
872     ENTRY( 0x0018, 0x1073, "TM", "Radiopharmaceutical Stop Time", FUNCDCM_NONE ),
873     ENTRY( 0x0018, 0x1074, "DS", "Radionuclide Total Dose", FUNCDCM_NONE ),
874     ENTRY( 0x0018, 0x1075, "DS", "Radionuclide Half Life", FUNCDCM_NONE ),
875     ENTRY( 0x0018, 0x1076, "DS", "Radionuclide Positron Fraction", FUNCDCM_NONE ),
876     ENTRY( 0x0018, 0x1077, "DS", "Radiopharmaceutical Specific Activity", FUNCDCM_NONE ),
877     ENTRY( 0x0018, 0x1080, "CS", "Beat Rejection Flag", FUNCDCM_NONE ),
878     ENTRY( 0x0018, 0x1081, "IS", "Low R-R Value", FUNCDCM_NONE ),
879     ENTRY( 0x0018, 0x1082, "IS", "High R-R Value", FUNCDCM_NONE ),
880     ENTRY( 0x0018, 0x1083, "IS", "Intervals Acquired", FUNCDCM_NONE ),
881     ENTRY( 0x0018, 0x1084, "IS", "Intervals Rejected", FUNCDCM_NONE ),
882     ENTRY( 0x0018, 0x1085, "LO", "PVC Rejection", FUNCDCM_NONE ),
883     ENTRY( 0x0018, 0x1086, "IS", "Skip Beats", FUNCDCM_NONE ),
884     ENTRY( 0x0018, 0x1088, "IS", "Heart Rate", FUNCDCM_NONE ),
885     ENTRY( 0x0018, 0x1090, "IS", "Cardiac Number of Images", FUNCDCM_NONE ),
886     ENTRY( 0x0018, 0x1094, "IS", "Trigger Window", FUNCDCM_NONE ),
887     ENTRY( 0x0018, 0x1100, "DS", "Reconstruction Diameter", FUNCDCM_NONE ),
888     ENTRY( 0x0018, 0x1110, "DS", "Distance Source to Detector", FUNCDCM_NONE ),
889     ENTRY( 0x0018, 0x1111, "DS", "Distance Source to Patient", FUNCDCM_NONE ),
890     ENTRY( 0x0018, 0x1114, "DS", "Estimated Radiographic Magnification Factor", FUNCDCM_NONE ),
891     ENTRY( 0x0018, 0x1120, "DS", "Gantry/Detector Tilt", FUNCDCM_NONE ),
892     ENTRY( 0x0018, 0x1121, "DS", "Gantry/Detector Slew", FUNCDCM_NONE ),
893     ENTRY( 0x0018, 0x1130, "DS", "Table Height", FUNCDCM_NONE ),
894     ENTRY( 0x0018, 0x1131, "DS", "Table Traverse", FUNCDCM_NONE ),
895     ENTRY( 0x0018, 0x1134, "CS", "Table Motion", FUNCDCM_NONE ),
896     ENTRY( 0x0018, 0x1135, "DS", "Table Vertical Increment", FUNCDCM_NONE ),
897     ENTRY( 0x0018, 0x1136, "DS", "Table Lateral Increment", FUNCDCM_NONE ),
898     ENTRY( 0x0018, 0x1137, "DS", "Table Longitudinal Increment", FUNCDCM_NONE ),
899     ENTRY( 0x0018, 0x1138, "DS", "Table Angle", FUNCDCM_NONE ),
900     ENTRY( 0x0018, 0x113a, "CS", "Table Type", FUNCDCM_NONE ),
901     ENTRY( 0x0018, 0x1140, "CS", "Rotation Direction", FUNCDCM_NONE ),
902     ENTRY( 0x0018, 0x1141, "DS", "Angular Position", FUNCDCM_NONE ),
903     ENTRY( 0x0018, 0x1142, "DS", "Radial Position", FUNCDCM_NONE ),
904     ENTRY( 0x0018, 0x1143, "DS", "Scan Arc", FUNCDCM_NONE ),
905     ENTRY( 0x0018, 0x1144, "DS", "Angular Step", FUNCDCM_NONE ),
906     ENTRY( 0x0018, 0x1145, "DS", "Center of Rotation Offset", FUNCDCM_NONE ),
907     ENTRY( 0x0018, 0x1146, "DS", "Rotation Offset", FUNCDCM_NONE ),
908     ENTRY( 0x0018, 0x1147, "CS", "Field of View Shape", FUNCDCM_NONE ),
909     ENTRY( 0x0018, 0x1149, "IS", "Field of View Dimension(s)", FUNCDCM_NONE ),
910     ENTRY( 0x0018, 0x1150, "IS", "Exposure Time", FUNCDCM_NONE ),
911     ENTRY( 0x0018, 0x1151, "IS", "X-ray Tube Current", FUNCDCM_NONE ),
912     ENTRY( 0x0018, 0x1152, "IS", "Exposure", FUNCDCM_NONE ),
913     ENTRY( 0x0018, 0x1153, "IS", "Exposure in uAs", FUNCDCM_NONE ),
914     ENTRY( 0x0018, 0x1154, "DS", "AveragePulseWidth", FUNCDCM_NONE ),
915     ENTRY( 0x0018, 0x1155, "CS", "RadiationSetting", FUNCDCM_NONE ),
916     ENTRY( 0x0018, 0x1156, "CS", "Rectification Type", FUNCDCM_NONE ),
917     ENTRY( 0x0018, 0x115a, "CS", "RadiationMode", FUNCDCM_NONE ),
918     ENTRY( 0x0018, 0x115e, "DS", "ImageAreaDoseProduct", FUNCDCM_NONE ),
919     ENTRY( 0x0018, 0x1160, "SH", "Filter Type", FUNCDCM_NONE ),
920     ENTRY( 0x0018, 0x1161, "LO", "TypeOfFilters", FUNCDCM_NONE ),
921     ENTRY( 0x0018, 0x1162, "DS", "IntensifierSize", FUNCDCM_NONE ),
922     ENTRY( 0x0018, 0x1164, "DS", "ImagerPixelSpacing", FUNCDCM_NONE ),
923     ENTRY( 0x0018, 0x1166, "CS", "Grid", FUNCDCM_NONE ),
924     ENTRY( 0x0018, 0x1170, "IS", "Generator Power", FUNCDCM_NONE ),
925     ENTRY( 0x0018, 0x1180, "SH", "Collimator/Grid Name", FUNCDCM_NONE ),
926     ENTRY( 0x0018, 0x1181, "CS", "Collimator Type", FUNCDCM_NONE ),
927     ENTRY( 0x0018, 0x1182, "IS", "Focal Distance", FUNCDCM_NONE ),
928     ENTRY( 0x0018, 0x1183, "DS", "X Focus Center", FUNCDCM_NONE ),
929     ENTRY( 0x0018, 0x1184, "DS", "Y Focus Center", FUNCDCM_NONE ),
930     ENTRY( 0x0018, 0x1190, "DS", "Focal Spot(s)", FUNCDCM_NONE ),
931     ENTRY( 0x0018, 0x1191, "CS", "Anode Target Material", FUNCDCM_NONE ),
932     ENTRY( 0x0018, 0x11a0, "DS", "Body Part Thickness", FUNCDCM_NONE ),
933     ENTRY( 0x0018, 0x11a2, "DS", "Compression Force", FUNCDCM_NONE ),
934     ENTRY( 0x0018, 0x1200, "DA", "Date of Last Calibration", FUNCDCM_NONE ),
935     ENTRY( 0x0018, 0x1201, "TM", "Time of Last Calibration", FUNCDCM_NONE ),
936     ENTRY( 0x0018, 0x1210, "SH", "Convolution Kernel", FUNCDCM_NONE ),
937     ENTRY( 0x0018, 0x1240, "IS", "Upper/Lower Pixel Values", FUNCDCM_NONE ),
938     ENTRY( 0x0018, 0x1242, "IS", "Actual Frame Duration", FUNCDCM_NONE ),
939     ENTRY( 0x0018, 0x1243, "IS", "Count Rate", FUNCDCM_NONE ),
940     ENTRY( 0x0018, 0x1244, "US", "Preferred Playback Sequencing", FUNCDCM_NONE ),
941     ENTRY( 0x0018, 0x1250, "SH", "Receiving Coil", FUNCDCM_NONE ),
942     ENTRY( 0x0018, 0x1251, "SH", "Transmitting Coil", FUNCDCM_NONE ),
943     ENTRY( 0x0018, 0x1260, "SH", "Plate Type", FUNCDCM_NONE ),
944     ENTRY( 0x0018, 0x1261, "LO", "Phosphor Type", FUNCDCM_NONE ),
945     ENTRY( 0x0018, 0x1300, "DS", "Scan Velocity", FUNCDCM_NONE ),
946     ENTRY( 0x0018, 0x1301, "CS", "Whole Body Technique", FUNCDCM_NONE ),
947     ENTRY( 0x0018, 0x1302, "IS", "Scan Length", FUNCDCM_NONE ),
948     ENTRY( 0x0018, 0x1310, "US", "Acquisition Matrix", FUNCDCM_NONE ),
949     ENTRY( 0x0018, 0x1312, "CS", "Phase Encoding Direction", FUNCDCM_NONE ),
950     ENTRY( 0x0018, 0x1314, "DS", "Flip Angle", FUNCDCM_NONE ),
951     ENTRY( 0x0018, 0x1315, "CS", "Variable Flip Angle Flag", FUNCDCM_NONE ),
952     ENTRY( 0x0018, 0x1316, "DS", "SAR", FUNCDCM_NONE ),
953     ENTRY( 0x0018, 0x1318, "DS", "dB/dt", FUNCDCM_NONE ),
954     ENTRY( 0x0018, 0x1400, "LO", "Acquisition Device Processing Description", FUNCDCM_NONE ),
955     ENTRY( 0x0018, 0x1401, "LO", "Acquisition Device Processing Code", FUNCDCM_NONE ),
956     ENTRY( 0x0018, 0x1402, "CS", "Cassette Orientation", FUNCDCM_NONE ),
957     ENTRY( 0x0018, 0x1403, "CS", "Cassette Size", FUNCDCM_NONE ),
958     ENTRY( 0x0018, 0x1404, "US", "Exposures on Plate", FUNCDCM_NONE ),
959     ENTRY( 0x0018, 0x1405, "IS", "Relative X-ray Exposure", FUNCDCM_NONE ),
960     ENTRY( 0x0018, 0x1450, "DS", "Column Angulation", FUNCDCM_NONE ),
961     ENTRY( 0x0018, 0x1460, "DS", "Tomo Layer Height", FUNCDCM_NONE ),
962     ENTRY( 0x0018, 0x1470, "DS", "Tomo Angle", FUNCDCM_NONE ),
963     ENTRY( 0x0018, 0x1480, "DS", "Tomo Time", FUNCDCM_NONE ),
964     ENTRY( 0x0018, 0x1490, "CS", "Tomo Type", FUNCDCM_NONE ),
965     ENTRY( 0x0018, 0x1491, "CS", "Tomo Class", FUNCDCM_NONE ),
966     ENTRY( 0x0018, 0x1495, "IS", "Number of Tomosynthesis Source Images", FUNCDCM_NONE ),
967     ENTRY( 0x0018, 0x1500, "CS", "PositionerMotion", FUNCDCM_NONE ),
968     ENTRY( 0x0018, 0x1508, "CS", "Positioner Type", FUNCDCM_NONE ),
969     ENTRY( 0x0018, 0x1510, "DS", "PositionerPrimaryAngle", FUNCDCM_NONE ),
970     ENTRY( 0x0018, 0x1511, "DS", "PositionerSecondaryAngle", FUNCDCM_NONE ),
971     ENTRY( 0x0018, 0x1520, "DS", "PositionerPrimaryAngleIncrement", FUNCDCM_NONE ),
972     ENTRY( 0x0018, 0x1521, "DS", "PositionerSecondaryAngleIncrement", FUNCDCM_NONE ),
973     ENTRY( 0x0018, 0x1530, "DS", "DetectorPrimaryAngle", FUNCDCM_NONE ),
974     ENTRY( 0x0018, 0x1531, "DS", "DetectorSecondaryAngle", FUNCDCM_NONE ),
975     ENTRY( 0x0018, 0x1600, "CS", "Shutter Shape", FUNCDCM_NONE ),
976     ENTRY( 0x0018, 0x1602, "IS", "Shutter Left Vertical Edge", FUNCDCM_NONE ),
977     ENTRY( 0x0018, 0x1604, "IS", "Shutter Right Vertical Edge", FUNCDCM_NONE ),
978     ENTRY( 0x0018, 0x1606, "IS", "Shutter Upper Horizontal Edge", FUNCDCM_NONE ),
979     ENTRY( 0x0018, 0x1608, "IS", "Shutter Lower Horizonta lEdge", FUNCDCM_NONE ),
980     ENTRY( 0x0018, 0x1610, "IS", "Center of Circular Shutter", FUNCDCM_NONE ),
981     ENTRY( 0x0018, 0x1612, "IS", "Radius of Circular Shutter", FUNCDCM_NONE ),
982     ENTRY( 0x0018, 0x1620, "IS", "Vertices of Polygonal Shutter", FUNCDCM_NONE ),
983     ENTRY( 0x0018, 0x1622, "US", "Shutter Presentation Value", FUNCDCM_NONE ),
984     ENTRY( 0x0018, 0x1623, "US", "Shutter Overlay Group", FUNCDCM_NONE ),
985     ENTRY( 0x0018, 0x1700, "CS", "Collimator Shape", FUNCDCM_NONE ),
986     ENTRY( 0x0018, 0x1702, "IS", "Collimator Left Vertical Edge", FUNCDCM_NONE ),
987     ENTRY( 0x0018, 0x1704, "IS", "Collimator Right Vertical Edge", FUNCDCM_NONE ),
988     ENTRY( 0x0018, 0x1706, "IS", "Collimator Upper Horizontal Edge", FUNCDCM_NONE ),
989     ENTRY( 0x0018, 0x1708, "IS", "Collimator Lower Horizontal Edge", FUNCDCM_NONE ),
990     ENTRY( 0x0018, 0x1710, "IS", "Center of Circular Collimator", FUNCDCM_NONE ),
991     ENTRY( 0x0018, 0x1712, "IS", "Radius of Circular Collimator", FUNCDCM_NONE ),
992     ENTRY( 0x0018, 0x1720, "IS", "Vertices of Polygonal Collimator", FUNCDCM_NONE ),
993     ENTRY( 0x0018, 0x1800, "CS", "Acquisition Time Synchronized", FUNCDCM_NONE ),
994     ENTRY( 0x0018, 0x1801, "SH", "Time Source", FUNCDCM_NONE ),
995     ENTRY( 0x0018, 0x1802, "CS", "Time Distribution Protocol", FUNCDCM_NONE ),
996     ENTRY( 0x0018, 0x4000, "LT", "Acquisition Comments", FUNCDCM_NONE ),
997     ENTRY( 0x0018, 0x5000, "SH", "Output Power", FUNCDCM_NONE ),
998     ENTRY( 0x0018, 0x5010, "LO", "Transducer Data", FUNCDCM_NONE ),
999     ENTRY( 0x0018, 0x5012, "DS", "Focus Depth", FUNCDCM_NONE ),
1000     ENTRY( 0x0018, 0x5020, "LO", "Processing Function", FUNCDCM_NONE ),
1001     ENTRY( 0x0018, 0x5021, "LO", "Postprocessing Function", FUNCDCM_NONE ),
1002     ENTRY( 0x0018, 0x5022, "DS", "Mechanical Index", FUNCDCM_NONE ),
1003     ENTRY( 0x0018, 0x5024, "DS", "Thermal Index", FUNCDCM_NONE ),
1004     ENTRY( 0x0018, 0x5026, "DS", "Cranial Thermal Index", FUNCDCM_NONE ),
1005     ENTRY( 0x0018, 0x5027, "DS", "Soft Tissue Thermal Index", FUNCDCM_NONE ),
1006     ENTRY( 0x0018, 0x5028, "DS", "Soft Tissue-Focus Thermal Index", FUNCDCM_NONE ),
1007     ENTRY( 0x0018, 0x5029, "DS", "Soft Tissue-Surface Thermal Index", FUNCDCM_NONE ),
1008     ENTRY( 0x0018, 0x5030, "DS", "Dynamic Range", FUNCDCM_NONE ),
1009     ENTRY( 0x0018, 0x5040, "DS", "Total Gain", FUNCDCM_NONE ),
1010     ENTRY( 0x0018, 0x5050, "IS", "Depth of Scan Field", FUNCDCM_NONE ),
1011     ENTRY( 0x0018, 0x5100, "CS", "Patient Position", FUNCDCM_NONE ),
1012     ENTRY( 0x0018, 0x5101, "CS", "View Position", FUNCDCM_NONE ),
1013     ENTRY( 0x0018, 0x5104, "SQ", "Projection Eponymous Name Code Sequence", FUNCDCM_NONE ),
1014     ENTRY( 0x0018, 0x5210, "DS", "Image Transformation Matrix", FUNCDCM_NONE ),
1015     ENTRY( 0x0018, 0x5212, "DS", "Image Translation Vector", FUNCDCM_NONE ),
1016     ENTRY( 0x0018, 0x6000, "DS", "Sensitivity", FUNCDCM_NONE ),
1017     ENTRY( 0x0018, 0x6011, "IS", "Sequence of Ultrasound Regions", FUNCDCM_NONE ),
1018     ENTRY( 0x0018, 0x6012, "US", "Region Spatial Format", FUNCDCM_NONE ),
1019     ENTRY( 0x0018, 0x6014, "US", "Region Data Type", FUNCDCM_NONE ),
1020     ENTRY( 0x0018, 0x6016, "UL", "Region Flags", FUNCDCM_NONE ),
1021     ENTRY( 0x0018, 0x6018, "UL", "Region Location Min X0", FUNCDCM_NONE ),
1022     ENTRY( 0x0018, 0x601a, "UL", "Region Location Min Y0", FUNCDCM_NONE ),
1023     ENTRY( 0x0018, 0x601c, "UL", "Region Location Max X1", FUNCDCM_NONE ),
1024     ENTRY( 0x0018, 0x601e, "UL", "Region Location Max Y1", FUNCDCM_NONE ),
1025     ENTRY( 0x0018, 0x6020, "SL", "Reference Pixel X0", FUNCDCM_NONE ),
1026     ENTRY( 0x0018, 0x6022, "SL", "Reference Pixel Y0", FUNCDCM_NONE ),
1027     ENTRY( 0x0018, 0x6024, "US", "Physical Units X Direction", FUNCDCM_NONE ),
1028     ENTRY( 0x0018, 0x6026, "US", "Physical Units Y Direction", FUNCDCM_NONE ),
1029     ENTRY( 0x0018, 0x6028, "FD", "Reference Pixel Physical Value X", FUNCDCM_NONE ),
1030     ENTRY( 0x0018, 0x602a, "US", "Reference Pixel Physical Value Y", FUNCDCM_NONE ),
1031     ENTRY( 0x0018, 0x602c, "US", "Physical Delta X", FUNCDCM_NONE ),
1032     ENTRY( 0x0018, 0x602e, "US", "Physical Delta Y", FUNCDCM_NONE ),
1033     ENTRY( 0x0018, 0x6030, "UL", "Transducer Frequency", FUNCDCM_NONE ),
1034     ENTRY( 0x0018, 0x6031, "CS", "Transducer Type", FUNCDCM_NONE ),
1035     ENTRY( 0x0018, 0x6032, "UL", "Pulse Repetition Frequency", FUNCDCM_NONE ),
1036     ENTRY( 0x0018, 0x6034, "FD", "Doppler Correction Angle", FUNCDCM_NONE ),
1037     ENTRY( 0x0018, 0x6036, "FD", "Steering Angle", FUNCDCM_NONE ),
1038     ENTRY( 0x0018, 0x6038, "UL", "Doppler Sample Volume X Position", FUNCDCM_NONE ),
1039     ENTRY( 0x0018, 0x603a, "UL", "Doppler Sample Volume Y Position", FUNCDCM_NONE ),
1040     ENTRY( 0x0018, 0x603c, "UL", "TM-Line Position X0", FUNCDCM_NONE ),
1041     ENTRY( 0x0018, 0x603e, "UL", "TM-Line Position Y0", FUNCDCM_NONE ),
1042     ENTRY( 0x0018, 0x6040, "UL", "TM-Line Position X1", FUNCDCM_NONE ),
1043     ENTRY( 0x0018, 0x6042, "UL", "TM-Line Position Y1", FUNCDCM_NONE ),
1044     ENTRY( 0x0018, 0x6044, "US", "Pixel Component Organization", FUNCDCM_NONE ),
1045     ENTRY( 0x0018, 0x6046, "UL", "Pixel Component Mask", FUNCDCM_NONE ),
1046     ENTRY( 0x0018, 0x6048, "UL", "Pixel Component Range Start", FUNCDCM_NONE ),
1047     ENTRY( 0x0018, 0x604a, "UL", "Pixel Component Range Stop", FUNCDCM_NONE ),
1048     ENTRY( 0x0018, 0x604c, "US", "Pixel Component Physical Units", FUNCDCM_NONE ),
1049     ENTRY( 0x0018, 0x604e, "US", "Pixel Component Data Type", FUNCDCM_NONE ),
1050     ENTRY( 0x0018, 0x6050, "UL", "Number of Table Break Points", FUNCDCM_NONE ),
1051     ENTRY( 0x0018, 0x6052, "UL", "Table of X Break Points", FUNCDCM_NONE ),
1052     ENTRY( 0x0018, 0x6054, "FD", "Table of Y Break Points", FUNCDCM_NONE ),
1053     ENTRY( 0x0018, 0x6056, "UL", "Number of Table Entries", FUNCDCM_NONE ),
1054     ENTRY( 0x0018, 0x6058, "UL", "Table of Pixel Values", FUNCDCM_NONE ),
1055     ENTRY( 0x0018, 0x605a, "FL", "Table of Parameter Values", FUNCDCM_NONE ),
1056     ENTRY( 0x0018, 0x7000, "CS", "Detector Conditions Nominal Flag", FUNCDCM_NONE ),
1057     ENTRY( 0x0018, 0x7001, "DS", "Detector Temperature", FUNCDCM_NONE ),
1058     ENTRY( 0x0018, 0x7004, "CS", "Detector Type", FUNCDCM_NONE ),
1059     ENTRY( 0x0018, 0x7005, "CS", "Detector Configuration", FUNCDCM_NONE ),
1060     ENTRY( 0x0018, 0x7006, "LT", "Detector Description", FUNCDCM_NONE ),
1061     ENTRY( 0x0018, 0x7008, "LT", "Detector Mode", FUNCDCM_NONE ),
1062     ENTRY( 0x0018, 0x700a, "SH", "Detector ID", FUNCDCM_NONE ),
1063     ENTRY( 0x0018, 0x700c, "DA", "Date of Last Detector Calibration ", FUNCDCM_NONE ),
1064     ENTRY( 0x0018, 0x700e, "TM", "Time of Last Detector Calibration", FUNCDCM_NONE ),
1065     ENTRY( 0x0018, 0x7010, "IS", "Exposures on Detector Since Last Calibration", FUNCDCM_NONE ),
1066     ENTRY( 0x0018, 0x7011, "IS", "Exposures on Detector Since Manufactured", FUNCDCM_NONE ),
1067     ENTRY( 0x0018, 0x7012, "DS", "Detector Time Since Last Exposure", FUNCDCM_NONE ),
1068     ENTRY( 0x0018, 0x7014, "DS", "Detector Active Time", FUNCDCM_NONE ),
1069     ENTRY( 0x0018, 0x7016, "DS", "Detector Activation Offset From Exposure", FUNCDCM_NONE ),
1070     ENTRY( 0x0018, 0x701a, "DS", "Detector Binning", FUNCDCM_NONE ),
1071     ENTRY( 0x0018, 0x7020, "DS", "Detector Element Physical Size", FUNCDCM_NONE ),
1072     ENTRY( 0x0018, 0x7022, "DS", "Detector Element Spacing", FUNCDCM_NONE ),
1073     ENTRY( 0x0018, 0x7024, "CS", "Detector Active Shape", FUNCDCM_NONE ),
1074     ENTRY( 0x0018, 0x7026, "DS", "Detector Active Dimensions", FUNCDCM_NONE ),
1075     ENTRY( 0x0018, 0x7028, "DS", "Detector Active Origin", FUNCDCM_NONE ),
1076     ENTRY( 0x0018, 0x7030, "DS", "Field of View Origin", FUNCDCM_NONE ),
1077     ENTRY( 0x0018, 0x7032, "DS", "Field of View Rotation", FUNCDCM_NONE ),
1078     ENTRY( 0x0018, 0x7034, "CS", "Field of View Horizontal Flip", FUNCDCM_NONE ),
1079     ENTRY( 0x0018, 0x7040, "LT", "Grid Absorbing Material", FUNCDCM_NONE ),
1080     ENTRY( 0x0018, 0x7041, "LT", "Grid Spacing Material", FUNCDCM_NONE ),
1081     ENTRY( 0x0018, 0x7042, "DS", "Grid Thickness", FUNCDCM_NONE ),
1082     ENTRY( 0x0018, 0x7044, "DS", "Grid Pitch", FUNCDCM_NONE ),
1083     ENTRY( 0x0018, 0x7046, "IS", "Grid Aspect Ratio", FUNCDCM_NONE ),
1084     ENTRY( 0x0018, 0x7048, "DS", "Grid Period", FUNCDCM_NONE ),
1085     ENTRY( 0x0018, 0x704c, "DS", "Grid Focal Distance", FUNCDCM_NONE ),
1086     ENTRY( 0x0018, 0x7050, "LT", "Filter Material", FUNCDCM_NONE ),
1087     ENTRY( 0x0018, 0x7052, "DS", "Filter Thickness Minimum", FUNCDCM_NONE ),
1088     ENTRY( 0x0018, 0x7054, "DS", "Filter Thickness Maximum", FUNCDCM_NONE ),
1089     ENTRY( 0x0018, 0x7060, "CS", "Exposure Control Mode", FUNCDCM_NONE ),
1090     ENTRY( 0x0018, 0x7062, "LT", "Exposure Control Mode Description", FUNCDCM_NONE ),
1091     ENTRY( 0x0018, 0x7064, "CS", "Exposure Status", FUNCDCM_NONE ),
1092     ENTRY( 0x0018, 0x7065, "DS", "Phototimer Setting", FUNCDCM_NONE ),
1093     ENTRY( 0x0019, 0x0000, "xs", "?", FUNCDCM_NONE ),
1094     ENTRY( 0x0019, 0x0001, "xs", "?", FUNCDCM_NONE ),
1095     ENTRY( 0x0019, 0x0002, "xs", "?", FUNCDCM_NONE ),
1096     ENTRY( 0x0019, 0x0003, "xs", "?", FUNCDCM_NONE ),
1097     ENTRY( 0x0019, 0x0004, "xs", "?", FUNCDCM_NONE ),
1098     ENTRY( 0x0019, 0x0005, "xs", "?", FUNCDCM_NONE ),
1099     ENTRY( 0x0019, 0x0006, "xs", "?", FUNCDCM_NONE ),
1100     ENTRY( 0x0019, 0x0007, "xs", "?", FUNCDCM_NONE ),
1101     ENTRY( 0x0019, 0x0008, "xs", "?", FUNCDCM_NONE ),
1102     ENTRY( 0x0019, 0x0009, "xs", "?", FUNCDCM_NONE ),
1103     ENTRY( 0x0019, 0x000a, "xs", "?", FUNCDCM_NONE ),
1104     ENTRY( 0x0019, 0x000b, "DS", "?", FUNCDCM_NONE ),
1105     ENTRY( 0x0019, 0x000c, "US", "?", FUNCDCM_NONE ),
1106     ENTRY( 0x0019, 0x000d, "TM", "Time", FUNCDCM_NONE ),
1107     ENTRY( 0x0019, 0x000e, "xs", "?", FUNCDCM_NONE ),
1108     ENTRY( 0x0019, 0x000f, "DS", "Horizontal Frame Of Reference", FUNCDCM_NONE ),
1109     ENTRY( 0x0019, 0x0010, "xs", "?", FUNCDCM_NONE ),
1110     ENTRY( 0x0019, 0x0011, "xs", "?", FUNCDCM_NONE ),
1111     ENTRY( 0x0019, 0x0012, "xs", "?", FUNCDCM_NONE ),
1112     ENTRY( 0x0019, 0x0013, "xs", "?", FUNCDCM_NONE ),
1113     ENTRY( 0x0019, 0x0014, "xs", "?", FUNCDCM_NONE ),
1114     ENTRY( 0x0019, 0x0015, "xs", "?", FUNCDCM_NONE ),
1115     ENTRY( 0x0019, 0x0016, "xs", "?", FUNCDCM_NONE ),
1116     ENTRY( 0x0019, 0x0017, "xs", "?", FUNCDCM_NONE ),
1117     ENTRY( 0x0019, 0x0018, "xs", "?", FUNCDCM_NONE ),
1118     ENTRY( 0x0019, 0x0019, "xs", "?", FUNCDCM_NONE ),
1119     ENTRY( 0x0019, 0x001a, "xs", "?", FUNCDCM_NONE ),
1120     ENTRY( 0x0019, 0x001b, "xs", "?", FUNCDCM_NONE ),
1121     ENTRY( 0x0019, 0x001c, "CS", "Dose", FUNCDCM_NONE ),
1122     ENTRY( 0x0019, 0x001d, "IS", "Side Mark", FUNCDCM_NONE ),
1123     ENTRY( 0x0019, 0x001e, "xs", "?", FUNCDCM_NONE ),
1124     ENTRY( 0x0019, 0x001f, "DS", "Exposure Duration", FUNCDCM_NONE ),
1125     ENTRY( 0x0019, 0x0020, "xs", "?", FUNCDCM_NONE ),
1126     ENTRY( 0x0019, 0x0021, "xs", "?", FUNCDCM_NONE ),
1127     ENTRY( 0x0019, 0x0022, "xs", "?", FUNCDCM_NONE ),
1128     ENTRY( 0x0019, 0x0023, "xs", "?", FUNCDCM_NONE ),
1129     ENTRY( 0x0019, 0x0024, "xs", "?", FUNCDCM_NONE ),
1130     ENTRY( 0x0019, 0x0025, "xs", "?", FUNCDCM_NONE ),
1131     ENTRY( 0x0019, 0x0026, "xs", "?", FUNCDCM_NONE ),
1132     ENTRY( 0x0019, 0x0027, "xs", "?", FUNCDCM_NONE ),
1133     ENTRY( 0x0019, 0x0028, "xs", "?", FUNCDCM_NONE ),
1134     ENTRY( 0x0019, 0x0029, "IS", "?", FUNCDCM_NONE ),
1135     ENTRY( 0x0019, 0x002a, "xs", "?", FUNCDCM_NONE ),
1136     ENTRY( 0x0019, 0x002b, "DS", "Xray Off Position", FUNCDCM_NONE ),
1137     ENTRY( 0x0019, 0x002c, "xs", "?", FUNCDCM_NONE ),
1138     ENTRY( 0x0019, 0x002d, "US", "?", FUNCDCM_NONE ),
1139     ENTRY( 0x0019, 0x002e, "xs", "?", FUNCDCM_NONE ),
1140     ENTRY( 0x0019, 0x002f, "DS", "Trigger Frequency", FUNCDCM_NONE ),
1141     ENTRY( 0x0019, 0x0030, "xs", "?", FUNCDCM_NONE ),
1142     ENTRY( 0x0019, 0x0031, "xs", "?", FUNCDCM_NONE ),
1143     ENTRY( 0x0019, 0x0032, "xs", "?", FUNCDCM_NONE ),
1144     ENTRY( 0x0019, 0x0033, "UN", "ECG 2 Offset 2", FUNCDCM_NONE ),
1145     ENTRY( 0x0019, 0x0034, "US", "?", FUNCDCM_NONE ),
1146     ENTRY( 0x0019, 0x0036, "US", "?", FUNCDCM_NONE ),
1147     ENTRY( 0x0019, 0x0038, "US", "?", FUNCDCM_NONE ),
1148     ENTRY( 0x0019, 0x0039, "xs", "?", FUNCDCM_NONE ),
1149     ENTRY( 0x0019, 0x003a, "xs", "?", FUNCDCM_NONE ),
1150     ENTRY( 0x0019, 0x003b, "LT", "?", FUNCDCM_NONE ),
1151     ENTRY( 0x0019, 0x003c, "xs", "?", FUNCDCM_NONE ),
1152     ENTRY( 0x0019, 0x003e, "xs", "?", FUNCDCM_NONE ),
1153     ENTRY( 0x0019, 0x003f, "UN", "?", FUNCDCM_NONE ),
1154     ENTRY( 0x0019, 0x0040, "xs", "?", FUNCDCM_NONE ),
1155     ENTRY( 0x0019, 0x0041, "xs", "?", FUNCDCM_NONE ),
1156     ENTRY( 0x0019, 0x0042, "xs", "?", FUNCDCM_NONE ),
1157     ENTRY( 0x0019, 0x0043, "xs", "?", FUNCDCM_NONE ),
1158     ENTRY( 0x0019, 0x0044, "xs", "?", FUNCDCM_NONE ),
1159     ENTRY( 0x0019, 0x0045, "xs", "?", FUNCDCM_NONE ),
1160     ENTRY( 0x0019, 0x0046, "xs", "?", FUNCDCM_NONE ),
1161     ENTRY( 0x0019, 0x0047, "xs", "?", FUNCDCM_NONE ),
1162     ENTRY( 0x0019, 0x0048, "xs", "?", FUNCDCM_NONE ),
1163     ENTRY( 0x0019, 0x0049, "US", "?", FUNCDCM_NONE ),
1164     ENTRY( 0x0019, 0x004a, "xs", "?", FUNCDCM_NONE ),
1165     ENTRY( 0x0019, 0x004b, "SL", "Data Size For Scan Data", FUNCDCM_NONE ),
1166     ENTRY( 0x0019, 0x004c, "US", "?", FUNCDCM_NONE ),
1167     ENTRY( 0x0019, 0x004e, "US", "?", FUNCDCM_NONE ),
1168     ENTRY( 0x0019, 0x0050, "xs", "?", FUNCDCM_NONE ),
1169     ENTRY( 0x0019, 0x0051, "xs", "?", FUNCDCM_NONE ),
1170     ENTRY( 0x0019, 0x0052, "xs", "?", FUNCDCM_NONE ),
1171     ENTRY( 0x0019, 0x0053, "LT", "Barcode", FUNCDCM_NONE ),
1172     ENTRY( 0x0019, 0x0054, "xs", "?", FUNCDCM_NONE ),
1173     ENTRY( 0x0019, 0x0055, "DS", "Receiver Reference Gain", FUNCDCM_NONE ),
1174     ENTRY( 0x0019, 0x0056, "xs", "?", FUNCDCM_NONE ),
1175     ENTRY( 0x0019, 0x0057, "SS", "CT Water Number", FUNCDCM_NONE ),
1176     ENTRY( 0x0019, 0x0058, "xs", "?", FUNCDCM_NONE ),
1177     ENTRY( 0x0019, 0x005a, "xs", "?", FUNCDCM_NONE ),
1178     ENTRY( 0x0019, 0x005c, "xs", "?", FUNCDCM_NONE ),
1179     ENTRY( 0x0019, 0x005d, "US", "?", FUNCDCM_NONE ),
1180     ENTRY( 0x0019, 0x005e, "xs", "?", FUNCDCM_NONE ),
1181     ENTRY( 0x0019, 0x005f, "SL", "Increment Between Channels", FUNCDCM_NONE ),
1182     ENTRY( 0x0019, 0x0060, "xs", "?", FUNCDCM_NONE ),
1183     ENTRY( 0x0019, 0x0061, "xs", "?", FUNCDCM_NONE ),
1184     ENTRY( 0x0019, 0x0062, "xs", "?", FUNCDCM_NONE ),
1185     ENTRY( 0x0019, 0x0063, "xs", "?", FUNCDCM_NONE ),
1186     ENTRY( 0x0019, 0x0064, "xs", "?", FUNCDCM_NONE ),
1187     ENTRY( 0x0019, 0x0065, "xs", "?", FUNCDCM_NONE ),
1188     ENTRY( 0x0019, 0x0066, "xs", "?", FUNCDCM_NONE ),
1189     ENTRY( 0x0019, 0x0067, "xs", "?", FUNCDCM_NONE ),
1190     ENTRY( 0x0019, 0x0068, "xs", "?", FUNCDCM_NONE ),
1191     ENTRY( 0x0019, 0x0069, "UL", "Convolution Mode", FUNCDCM_NONE ),
1192     ENTRY( 0x0019, 0x006a, "xs", "?", FUNCDCM_NONE ),
1193     ENTRY( 0x0019, 0x006b, "SS", "Field Of View In Detector Cells", FUNCDCM_NONE ),
1194     ENTRY( 0x0019, 0x006c, "US", "?", FUNCDCM_NONE ),
1195     ENTRY( 0x0019, 0x006e, "US", "?", FUNCDCM_NONE ),
1196     ENTRY( 0x0019, 0x0070, "xs", "?", FUNCDCM_NONE ),
1197     ENTRY( 0x0019, 0x0071, "xs", "?", FUNCDCM_NONE ),
1198     ENTRY( 0x0019, 0x0072, "xs", "?", FUNCDCM_NONE ),
1199     ENTRY( 0x0019, 0x0073, "xs", "?", FUNCDCM_NONE ),
1200     ENTRY( 0x0019, 0x0074, "xs", "?", FUNCDCM_NONE ),
1201     ENTRY( 0x0019, 0x0075, "xs", "?", FUNCDCM_NONE ),
1202     ENTRY( 0x0019, 0x0076, "xs", "?", FUNCDCM_NONE ),
1203     ENTRY( 0x0019, 0x0077, "US", "?", FUNCDCM_NONE ),
1204     ENTRY( 0x0019, 0x0078, "US", "?", FUNCDCM_NONE ),
1205     ENTRY( 0x0019, 0x007a, "US", "?", FUNCDCM_NONE ),
1206     ENTRY( 0x0019, 0x007c, "US", "?", FUNCDCM_NONE ),
1207     ENTRY( 0x0019, 0x007d, "DS", "Second Echo", FUNCDCM_NONE ),
1208     ENTRY( 0x0019, 0x007e, "xs", "?", FUNCDCM_NONE ),
1209     ENTRY( 0x0019, 0x007f, "DS", "Table Delta", FUNCDCM_NONE ),
1210     ENTRY( 0x0019, 0x0080, "xs", "?", FUNCDCM_NONE ),
1211     ENTRY( 0x0019, 0x0081, "xs", "?", FUNCDCM_NONE ),
1212     ENTRY( 0x0019, 0x0082, "xs", "?", FUNCDCM_NONE ),
1213     ENTRY( 0x0019, 0x0083, "xs", "?", FUNCDCM_NONE ),
1214     ENTRY( 0x0019, 0x0084, "xs", "?", FUNCDCM_NONE ),
1215     ENTRY( 0x0019, 0x0085, "xs", "?", FUNCDCM_NONE ),
1216     ENTRY( 0x0019, 0x0086, "xs", "?", FUNCDCM_NONE ),
1217     ENTRY( 0x0019, 0x0087, "xs", "?", FUNCDCM_NONE ),
1218     ENTRY( 0x0019, 0x0088, "xs", "?", FUNCDCM_NONE ),
1219     ENTRY( 0x0019, 0x008a, "xs", "?", FUNCDCM_NONE ),
1220     ENTRY( 0x0019, 0x008b, "SS", "Actual Receive Gain Digital", FUNCDCM_NONE ),
1221     ENTRY( 0x0019, 0x008c, "US", "?", FUNCDCM_NONE ),
1222     ENTRY( 0x0019, 0x008d, "DS", "Delay After Trigger", FUNCDCM_NONE ),
1223     ENTRY( 0x0019, 0x008e, "US", "?", FUNCDCM_NONE ),
1224     ENTRY( 0x0019, 0x008f, "SS", "Swap Phase Frequency", FUNCDCM_NONE ),
1225     ENTRY( 0x0019, 0x0090, "xs", "?", FUNCDCM_NONE ),
1226     ENTRY( 0x0019, 0x0091, "xs", "?", FUNCDCM_NONE ),
1227     ENTRY( 0x0019, 0x0092, "xs", "?", FUNCDCM_NONE ),
1228     ENTRY( 0x0019, 0x0093, "xs", "?", FUNCDCM_NONE ),
1229     ENTRY( 0x0019, 0x0094, "xs", "?", FUNCDCM_NONE ),
1230     ENTRY( 0x0019, 0x0095, "SS", "Analog Receiver Gain", FUNCDCM_NONE ),
1231     ENTRY( 0x0019, 0x0096, "xs", "?", FUNCDCM_NONE ),
1232     ENTRY( 0x0019, 0x0097, "xs", "?", FUNCDCM_NONE ),
1233     ENTRY( 0x0019, 0x0098, "xs", "?", FUNCDCM_NONE ),
1234     ENTRY( 0x0019, 0x0099, "US", "?", FUNCDCM_NONE ),
1235     ENTRY( 0x0019, 0x009a, "US", "?", FUNCDCM_NONE ),
1236     ENTRY( 0x0019, 0x009b, "SS", "Pulse Sequence Mode", FUNCDCM_NONE ),
1237     ENTRY( 0x0019, 0x009c, "xs", "?", FUNCDCM_NONE ),
1238     ENTRY( 0x0019, 0x009d, "DT", "Pulse Sequence Date", FUNCDCM_NONE ),
1239     ENTRY( 0x0019, 0x009e, "xs", "?", FUNCDCM_NONE ),
1240     ENTRY( 0x0019, 0x009f, "xs", "?", FUNCDCM_NONE ),
1241     ENTRY( 0x0019, 0x00a0, "xs", "?", FUNCDCM_NONE ),
1242     ENTRY( 0x0019, 0x00a1, "xs", "?", FUNCDCM_NONE ),
1243     ENTRY( 0x0019, 0x00a2, "xs", "?", FUNCDCM_NONE ),
1244     ENTRY( 0x0019, 0x00a3, "xs", "?", FUNCDCM_NONE ),
1245     ENTRY( 0x0019, 0x00a4, "xs", "?", FUNCDCM_NONE ),
1246     ENTRY( 0x0019, 0x00a5, "xs", "?", FUNCDCM_NONE ),
1247     ENTRY( 0x0019, 0x00a6, "xs", "?", FUNCDCM_NONE ),
1248     ENTRY( 0x0019, 0x00a7, "xs", "?", FUNCDCM_NONE ),
1249     ENTRY( 0x0019, 0x00a8, "xs", "?", FUNCDCM_NONE ),
1250     ENTRY( 0x0019, 0x00a9, "xs", "?", FUNCDCM_NONE ),
1251     ENTRY( 0x0019, 0x00aa, "xs", "?", FUNCDCM_NONE ),
1252     ENTRY( 0x0019, 0x00ab, "xs", "?", FUNCDCM_NONE ),
1253     ENTRY( 0x0019, 0x00ac, "xs", "?", FUNCDCM_NONE ),
1254     ENTRY( 0x0019, 0x00ad, "xs", "?", FUNCDCM_NONE ),
1255     ENTRY( 0x0019, 0x00ae, "xs", "?", FUNCDCM_NONE ),
1256     ENTRY( 0x0019, 0x00af, "xs", "?", FUNCDCM_NONE ),
1257     ENTRY( 0x0019, 0x00b0, "xs", "?", FUNCDCM_NONE ),
1258     ENTRY( 0x0019, 0x00b1, "xs", "?", FUNCDCM_NONE ),
1259     ENTRY( 0x0019, 0x00b2, "xs", "?", FUNCDCM_NONE ),
1260     ENTRY( 0x0019, 0x00b3, "xs", "?", FUNCDCM_NONE ),
1261     ENTRY( 0x0019, 0x00b4, "xs", "?", FUNCDCM_NONE ),
1262     ENTRY( 0x0019, 0x00b5, "xs", "?", FUNCDCM_NONE ),
1263     ENTRY( 0x0019, 0x00b6, "DS", "User Data", FUNCDCM_NONE ),
1264     ENTRY( 0x0019, 0x00b7, "DS", "User Data", FUNCDCM_NONE ),
1265     ENTRY( 0x0019, 0x00b8, "DS", "User Data", FUNCDCM_NONE ),
1266     ENTRY( 0x0019, 0x00b9, "DS", "User Data", FUNCDCM_NONE ),
1267     ENTRY( 0x0019, 0x00ba, "DS", "User Data", FUNCDCM_NONE ),
1268     ENTRY( 0x0019, 0x00bb, "DS", "User Data", FUNCDCM_NONE ),
1269     ENTRY( 0x0019, 0x00bc, "DS", "User Data", FUNCDCM_NONE ),
1270     ENTRY( 0x0019, 0x00bd, "DS", "User Data", FUNCDCM_NONE ),
1271     ENTRY( 0x0019, 0x00be, "DS", "Projection Angle", FUNCDCM_NONE ),
1272     ENTRY( 0x0019, 0x00c0, "xs", "?", FUNCDCM_NONE ),
1273     ENTRY( 0x0019, 0x00c1, "xs", "?", FUNCDCM_NONE ),
1274     ENTRY( 0x0019, 0x00c2, "xs", "?", FUNCDCM_NONE ),
1275     ENTRY( 0x0019, 0x00c3, "xs", "?", FUNCDCM_NONE ),
1276     ENTRY( 0x0019, 0x00c4, "xs", "?", FUNCDCM_NONE ),
1277     ENTRY( 0x0019, 0x00c5, "xs", "?", FUNCDCM_NONE ),
1278     ENTRY( 0x0019, 0x00c6, "SS", "SAT Location H", FUNCDCM_NONE ),
1279     ENTRY( 0x0019, 0x00c7, "SS", "SAT Location F", FUNCDCM_NONE ),
1280     ENTRY( 0x0019, 0x00c8, "SS", "SAT Thickness R L", FUNCDCM_NONE ),
1281     ENTRY( 0x0019, 0x00c9, "SS", "SAT Thickness A P", FUNCDCM_NONE ),
1282     ENTRY( 0x0019, 0x00ca, "SS", "SAT Thickness H F", FUNCDCM_NONE ),
1283     ENTRY( 0x0019, 0x00cb, "xs", "?", FUNCDCM_NONE ),
1284     ENTRY( 0x0019, 0x00cc, "xs", "?", FUNCDCM_NONE ),
1285     ENTRY( 0x0019, 0x00cd, "SS", "Thickness Disclaimer", FUNCDCM_NONE ),
1286     ENTRY( 0x0019, 0x00ce, "SS", "Prescan Type", FUNCDCM_NONE ),
1287     ENTRY( 0x0019, 0x00cf, "SS", "Prescan Status", FUNCDCM_NONE ),
1288     ENTRY( 0x0019, 0x00d0, "SH", "Raw Data Type", FUNCDCM_NONE ),
1289     ENTRY( 0x0019, 0x00d1, "DS", "Flow Sensitivity", FUNCDCM_NONE ),
1290     ENTRY( 0x0019, 0x00d2, "xs", "?", FUNCDCM_NONE ),
1291     ENTRY( 0x0019, 0x00d3, "xs", "?", FUNCDCM_NONE ),
1292     ENTRY( 0x0019, 0x00d4, "xs", "?", FUNCDCM_NONE ),
1293     ENTRY( 0x0019, 0x00d5, "xs", "?", FUNCDCM_NONE ),
1294     ENTRY( 0x0019, 0x00d6, "xs", "?", FUNCDCM_NONE ),
1295     ENTRY( 0x0019, 0x00d7, "xs", "?", FUNCDCM_NONE ),
1296     ENTRY( 0x0019, 0x00d8, "xs", "?", FUNCDCM_NONE ),
1297     ENTRY( 0x0019, 0x00d9, "xs", "?", FUNCDCM_NONE ),
1298     ENTRY( 0x0019, 0x00da, "xs", "?", FUNCDCM_NONE ),
1299     ENTRY( 0x0019, 0x00db, "DS", "Back Projector Coefficient", FUNCDCM_NONE ),
1300     ENTRY( 0x0019, 0x00dc, "SS", "Primary Speed Correction Used", FUNCDCM_NONE ),
1301     ENTRY( 0x0019, 0x00dd, "SS", "Overrange Correction Used", FUNCDCM_NONE ),
1302     ENTRY( 0x0019, 0x00de, "DS", "Dynamic Z Alpha Value", FUNCDCM_NONE ),
1303     ENTRY( 0x0019, 0x00df, "DS", "User Data", FUNCDCM_NONE ),
1304     ENTRY( 0x0019, 0x00e0, "DS", "User Data", FUNCDCM_NONE ),
1305     ENTRY( 0x0019, 0x00e1, "xs", "?", FUNCDCM_NONE ),
1306     ENTRY( 0x0019, 0x00e2, "xs", "?", FUNCDCM_NONE ),
1307     ENTRY( 0x0019, 0x00e3, "xs", "?", FUNCDCM_NONE ),
1308     ENTRY( 0x0019, 0x00e4, "LT", "?", FUNCDCM_NONE ),
1309     ENTRY( 0x0019, 0x00e5, "IS", "?", FUNCDCM_NONE ),
1310     ENTRY( 0x0019, 0x00e6, "US", "?", FUNCDCM_NONE ),
1311     ENTRY( 0x0019, 0x00e8, "DS", "?", FUNCDCM_NONE ),
1312     ENTRY( 0x0019, 0x00e9, "DS", "?", FUNCDCM_NONE ),
1313     ENTRY( 0x0019, 0x00eb, "DS", "?", FUNCDCM_NONE ),
1314     ENTRY( 0x0019, 0x00ec, "US", "?", FUNCDCM_NONE ),
1315     ENTRY( 0x0019, 0x00f0, "xs", "?", FUNCDCM_NONE ),
1316     ENTRY( 0x0019, 0x00f1, "xs", "?", FUNCDCM_NONE ),
1317     ENTRY( 0x0019, 0x00f2, "xs", "?", FUNCDCM_NONE ),
1318     ENTRY( 0x0019, 0x00f3, "xs", "?", FUNCDCM_NONE ),
1319     ENTRY( 0x0019, 0x00f4, "LT", "?", FUNCDCM_NONE ),
1320     ENTRY( 0x0019, 0x00f9, "DS", "Transmission Gain", FUNCDCM_NONE ),
1321     ENTRY( 0x0019, 0x1015, "UN", "?", FUNCDCM_NONE ),
1322     ENTRY( 0x0020, 0x0000, "UL", "Relationship Group Length", FUNCDCM_NONE ),
1323     ENTRY( 0x0020, 0x000d, "UI", "Study Instance UID", FUNCDCM_NONE ),
1324     ENTRY( 0x0020, 0x000e, "UI", "Series Instance UID", FUNCDCM_NONE ),
1325     ENTRY( 0x0020, 0x0010, "SH", "Study ID", FUNCDCM_NONE ),
1326     ENTRY( 0x0020, 0x0011, "IS", "Series Number", FUNCDCM_SERIESNUMBER ),
1327     ENTRY( 0x0020, 0x0012, "IS", "Acquisition Number", FUNCDCM_NONE ),
1328     ENTRY( 0x0020, 0x0013, "IS", "Instance (formerly Image) Number", FUNCDCM_NONE ),
1329     ENTRY( 0x0020, 0x0014, "IS", "Isotope Number", FUNCDCM_NONE ),
1330     ENTRY( 0x0020, 0x0015, "IS", "Phase Number", FUNCDCM_NONE ),
1331     ENTRY( 0x0020, 0x0016, "IS", "Interval Number", FUNCDCM_NONE ),
1332     ENTRY( 0x0020, 0x0017, "IS", "Time Slot Number", FUNCDCM_NONE ),
1333     ENTRY( 0x0020, 0x0018, "IS", "Angle Number", FUNCDCM_NONE ),
1334     ENTRY( 0x0020, 0x0020, "CS", "Patient Orientation", FUNCDCM_NONE ),
1335     ENTRY( 0x0020, 0x0022, "IS", "Overlay Number", FUNCDCM_NONE ),
1336     ENTRY( 0x0020, 0x0024, "IS", "Curve Number", FUNCDCM_NONE ),
1337     ENTRY( 0x0020, 0x0026, "IS", "LUT Number", FUNCDCM_NONE ),
1338     ENTRY( 0x0020, 0x0030, "DS", "Image Position", FUNCDCM_IMAGEPOSITION ),
1339     ENTRY( 0x0020, 0x0032, "DS", "Image Position (Patient)", FUNCDCM_NONE ),
1340     ENTRY( 0x0020, 0x0035, "DS", "Image Orientation", FUNCDCM_NONE ),
1341     ENTRY( 0x0020, 0x0037, "DS", "Image Orientation (Patient)", FUNCDCM_NONE ),
1342     ENTRY( 0x0020, 0x0050, "DS", "Location", FUNCDCM_NONE ),
1343     ENTRY( 0x0020, 0x0052, "UI", "Frame of Reference UID", FUNCDCM_NONE ),
1344     ENTRY( 0x0020, 0x0060, "CS", "Laterality", FUNCDCM_NONE ),
1345     ENTRY( 0x0020, 0x0062, "CS", "Image Laterality", FUNCDCM_NONE ),
1346     ENTRY( 0x0020, 0x0070, "LT", "Image Geometry Type", FUNCDCM_NONE ),
1347     ENTRY( 0x0020, 0x0080, "LO", "Masking Image", FUNCDCM_NONE ),
1348     ENTRY( 0x0020, 0x0100, "IS", "Temporal Position Identifier", FUNCDCM_NONE ),
1349     ENTRY( 0x0020, 0x0105, "IS", "Number of Temporal Positions", FUNCDCM_NONE ),
1350     ENTRY( 0x0020, 0x0110, "DS", "Temporal Resolution", FUNCDCM_NONE ),
1351     ENTRY( 0x0020, 0x1000, "IS", "Series in Study", FUNCDCM_NONE ),
1352     ENTRY( 0x0020, 0x1001, "DS", "Acquisitions in Series", FUNCDCM_NONE ),
1353     ENTRY( 0x0020, 0x1002, "IS", "Images in Acquisition", FUNCDCM_NONE ),
1354     ENTRY( 0x0020, 0x1003, "IS", "Images in Series", FUNCDCM_NONE ),
1355     ENTRY( 0x0020, 0x1004, "IS", "Acquisitions in Study", FUNCDCM_NONE ),
1356     ENTRY( 0x0020, 0x1005, "IS", "Images in Study", FUNCDCM_NONE ),
1357     ENTRY( 0x0020, 0x1020, "LO", "Reference", FUNCDCM_NONE ),
1358     ENTRY( 0x0020, 0x1040, "LO", "Position Reference Indicator", FUNCDCM_NONE ),
1359     ENTRY( 0x0020, 0x1041, "DS", "Slice Location", FUNCDCM_SLICELOCATION ),
1360     ENTRY( 0x0020, 0x1070, "IS", "Other Study Numbers", FUNCDCM_NONE ),
1361     ENTRY( 0x0020, 0x1200, "IS", "Number of Patient Related Studies", FUNCDCM_NONE ),
1362     ENTRY( 0x0020, 0x1202, "IS", "Number of Patient Related Series", FUNCDCM_NONE ),
1363     ENTRY( 0x0020, 0x1204, "IS", "Number of Patient Related Images", FUNCDCM_NONE ),
1364     ENTRY( 0x0020, 0x1206, "IS", "Number of Study Related Series", FUNCDCM_NONE ),
1365     ENTRY( 0x0020, 0x1208, "IS", "Number of Study Related Series", FUNCDCM_NONE ),
1366     ENTRY( 0x0020, 0x3100, "LO", "Source Image IDs", FUNCDCM_NONE ),
1367     ENTRY( 0x0020, 0x3401, "LO", "Modifying Device ID", FUNCDCM_NONE ),
1368     ENTRY( 0x0020, 0x3402, "LO", "Modified Image ID", FUNCDCM_NONE ),
1369     ENTRY( 0x0020, 0x3403, "xs", "Modified Image Date", FUNCDCM_NONE ),
1370     ENTRY( 0x0020, 0x3404, "LO", "Modifying Device Manufacturer", FUNCDCM_NONE ),
1371     ENTRY( 0x0020, 0x3405, "xs", "Modified Image Time", FUNCDCM_NONE ),
1372     ENTRY( 0x0020, 0x3406, "xs", "Modified Image Description", FUNCDCM_NONE ),
1373     ENTRY( 0x0020, 0x4000, "LT", "Image Comments", FUNCDCM_NONE ),
1374     ENTRY( 0x0020, 0x5000, "AT", "Original Image Identification", FUNCDCM_NONE ),
1375     ENTRY( 0x0020, 0x5002, "LO", "Original Image Identification Nomenclature", FUNCDCM_NONE ),
1376     ENTRY( 0x0021, 0x0000, "xs", "?", FUNCDCM_NONE ),
1377     ENTRY( 0x0021, 0x0001, "xs", "?", FUNCDCM_NONE ),
1378     ENTRY( 0x0021, 0x0002, "xs", "?", FUNCDCM_NONE ),
1379     ENTRY( 0x0021, 0x0003, "xs", "?", FUNCDCM_NONE ),
1380     ENTRY( 0x0021, 0x0004, "DS", "VOI Position", FUNCDCM_NONE ),
1381     ENTRY( 0x0021, 0x0005, "xs", "?", FUNCDCM_NONE ),
1382     ENTRY( 0x0021, 0x0006, "IS", "CSI Matrix Size Original", FUNCDCM_NONE ),
1383     ENTRY( 0x0021, 0x0007, "xs", "?", FUNCDCM_NONE ),
1384     ENTRY( 0x0021, 0x0008, "DS", "Spatial Grid Shift", FUNCDCM_NONE ),
1385     ENTRY( 0x0021, 0x0009, "DS", "Signal Limits Minimum", FUNCDCM_NONE ),
1386     ENTRY( 0x0021, 0x0010, "xs", "?", FUNCDCM_NONE ),
1387     ENTRY( 0x0021, 0x0011, "xs", "?", FUNCDCM_NONE ),
1388     ENTRY( 0x0021, 0x0012, "xs", "?", FUNCDCM_NONE ),
1389     ENTRY( 0x0021, 0x0013, "xs", "?", FUNCDCM_NONE ),
1390     ENTRY( 0x0021, 0x0014, "xs", "?", FUNCDCM_NONE ),
1391     ENTRY( 0x0021, 0x0015, "xs", "?", FUNCDCM_NONE ),
1392     ENTRY( 0x0021, 0x0016, "xs", "?", FUNCDCM_NONE ),
1393     ENTRY( 0x0021, 0x0017, "DS", "EPI Operation Mode Flag", FUNCDCM_NONE ),
1394     ENTRY( 0x0021, 0x0018, "xs", "?", FUNCDCM_NONE ),
1395     ENTRY( 0x0021, 0x0019, "xs", "?", FUNCDCM_NONE ),
1396     ENTRY( 0x0021, 0x0020, "xs", "?", FUNCDCM_NONE ),
1397     ENTRY( 0x0021, 0x0021, "xs", "?", FUNCDCM_NONE ),
1398     ENTRY( 0x0021, 0x0022, "xs", "?", FUNCDCM_NONE ),
1399     ENTRY( 0x0021, 0x0024, "xs", "?", FUNCDCM_NONE ),
1400     ENTRY( 0x0021, 0x0025, "US", "?", FUNCDCM_NONE ),
1401     ENTRY( 0x0021, 0x0026, "IS", "Image Pixel Offset", FUNCDCM_NONE ),
1402     ENTRY( 0x0021, 0x0030, "xs", "?", FUNCDCM_NONE ),
1403     ENTRY( 0x0021, 0x0031, "xs", "?", FUNCDCM_NONE ),
1404     ENTRY( 0x0021, 0x0032, "xs", "?", FUNCDCM_NONE ),
1405     ENTRY( 0x0021, 0x0034, "xs", "?", FUNCDCM_NONE ),
1406     ENTRY( 0x0021, 0x0035, "SS", "Series From Which Prescribed", FUNCDCM_NONE ),
1407     ENTRY( 0x0021, 0x0036, "xs", "?", FUNCDCM_NONE ),
1408     ENTRY( 0x0021, 0x0037, "SS", "Screen Format", FUNCDCM_NONE ),
1409     ENTRY( 0x0021, 0x0039, "DS", "Slab Thickness", FUNCDCM_NONE ),
1410     ENTRY( 0x0021, 0x0040, "xs", "?", FUNCDCM_NONE ),
1411     ENTRY( 0x0021, 0x0041, "xs", "?", FUNCDCM_NONE ),
1412     ENTRY( 0x0021, 0x0042, "xs", "?", FUNCDCM_NONE ),
1413     ENTRY( 0x0021, 0x0043, "xs", "?", FUNCDCM_NONE ),
1414     ENTRY( 0x0021, 0x0044, "xs", "?", FUNCDCM_NONE ),
1415     ENTRY( 0x0021, 0x0045, "xs", "?", FUNCDCM_NONE ),
1416     ENTRY( 0x0021, 0x0046, "xs", "?", FUNCDCM_NONE ),
1417     ENTRY( 0x0021, 0x0047, "xs", "?", FUNCDCM_NONE ),
1418     ENTRY( 0x0021, 0x0048, "xs", "?", FUNCDCM_NONE ),
1419     ENTRY( 0x0021, 0x0049, "xs", "?", FUNCDCM_NONE ),
1420     ENTRY( 0x0021, 0x004a, "xs", "?", FUNCDCM_NONE ),
1421     ENTRY( 0x0021, 0x004e, "US", "?", FUNCDCM_NONE ),
1422     ENTRY( 0x0021, 0x004f, "xs", "?", FUNCDCM_NONE ),
1423     ENTRY( 0x0021, 0x0050, "xs", "?", FUNCDCM_NONE ),
1424     ENTRY( 0x0021, 0x0051, "xs", "?", FUNCDCM_NONE ),
1425     ENTRY( 0x0021, 0x0052, "xs", "?", FUNCDCM_NONE ),
1426     ENTRY( 0x0021, 0x0053, "xs", "?", FUNCDCM_NONE ),
1427     ENTRY( 0x0021, 0x0054, "xs", "?", FUNCDCM_NONE ),
1428     ENTRY( 0x0021, 0x0055, "xs", "?", FUNCDCM_NONE ),
1429     ENTRY( 0x0021, 0x0056, "xs", "?", FUNCDCM_NONE ),
1430     ENTRY( 0x0021, 0x0057, "xs", "?", FUNCDCM_NONE ),
1431     ENTRY( 0x0021, 0x0058, "xs", "?", FUNCDCM_NONE ),
1432     ENTRY( 0x0021, 0x0059, "xs", "?", FUNCDCM_NONE ),
1433     ENTRY( 0x0021, 0x005a, "SL", "Integer Slop", FUNCDCM_NONE ),
1434     ENTRY( 0x0021, 0x005b, "DS", "Float Slop", FUNCDCM_NONE ),
1435     ENTRY( 0x0021, 0x005c, "DS", "Float Slop", FUNCDCM_NONE ),
1436     ENTRY( 0x0021, 0x005d, "DS", "Float Slop", FUNCDCM_NONE ),
1437     ENTRY( 0x0021, 0x005e, "DS", "Float Slop", FUNCDCM_NONE ),
1438     ENTRY( 0x0021, 0x005f, "DS", "Float Slop", FUNCDCM_NONE ),
1439     ENTRY( 0x0021, 0x0060, "xs", "?", FUNCDCM_NONE ),
1440     ENTRY( 0x0021, 0x0061, "DS", "Image Normal", FUNCDCM_NONE ),
1441     ENTRY( 0x0021, 0x0062, "IS", "Reference Type Code", FUNCDCM_NONE ),
1442     ENTRY( 0x0021, 0x0063, "DS", "Image Distance", FUNCDCM_NONE ),
1443     ENTRY( 0x0021, 0x0065, "US", "Image Positioning History Mask", FUNCDCM_NONE ),
1444     ENTRY( 0x0021, 0x006a, "DS", "Image Row", FUNCDCM_NONE ),
1445     ENTRY( 0x0021, 0x006b, "DS", "Image Column", FUNCDCM_NONE ),
1446     ENTRY( 0x0021, 0x0070, "xs", "?", FUNCDCM_NONE ),
1447     ENTRY( 0x0021, 0x0071, "xs", "?", FUNCDCM_NONE ),
1448     ENTRY( 0x0021, 0x0072, "xs", "?", FUNCDCM_NONE ),
1449     ENTRY( 0x0021, 0x0073, "DS", "Second Repetition Time", FUNCDCM_NONE ),
1450     ENTRY( 0x0021, 0x0075, "DS", "Light Brightness", FUNCDCM_NONE ),
1451     ENTRY( 0x0021, 0x0076, "DS", "Light Contrast", FUNCDCM_NONE ),
1452     ENTRY( 0x0021, 0x007a, "IS", "Overlay Threshold", FUNCDCM_NONE ),
1453     ENTRY( 0x0021, 0x007b, "IS", "Surface Threshold", FUNCDCM_NONE ),
1454     ENTRY( 0x0021, 0x007c, "IS", "Grey Scale Threshold", FUNCDCM_NONE ),
1455     ENTRY( 0x0021, 0x0080, "xs", "?", FUNCDCM_NONE ),
1456     ENTRY( 0x0021, 0x0081, "DS", "Auto Window Level Alpha", FUNCDCM_NONE ),
1457     ENTRY( 0x0021, 0x0082, "xs", "?", FUNCDCM_NONE ),
1458     ENTRY( 0x0021, 0x0083, "DS", "Auto Window Level Window", FUNCDCM_NONE ),
1459     ENTRY( 0x0021, 0x0084, "DS", "Auto Window Level Level", FUNCDCM_NONE ),
1460     ENTRY( 0x0021, 0x0090, "xs", "?", FUNCDCM_NONE ),
1461     ENTRY( 0x0021, 0x0091, "xs", "?", FUNCDCM_NONE ),
1462     ENTRY( 0x0021, 0x0092, "xs", "?", FUNCDCM_NONE ),
1463     ENTRY( 0x0021, 0x0093, "xs", "?", FUNCDCM_NONE ),
1464     ENTRY( 0x0021, 0x0094, "DS", "EPI Change Value of X Component", FUNCDCM_NONE ),
1465     ENTRY( 0x0021, 0x0095, "DS", "EPI Change Value of Y Component", FUNCDCM_NONE ),
1466     ENTRY( 0x0021, 0x0096, "DS", "EPI Change Value of Z Component", FUNCDCM_NONE ),
1467     ENTRY( 0x0021, 0x00a0, "xs", "?", FUNCDCM_NONE ),
1468     ENTRY( 0x0021, 0x00a1, "DS", "?", FUNCDCM_NONE ),
1469     ENTRY( 0x0021, 0x00a2, "xs", "?", FUNCDCM_NONE ),
1470     ENTRY( 0x0021, 0x00a3, "LT", "?", FUNCDCM_NONE ),
1471     ENTRY( 0x0021, 0x00a4, "LT", "?", FUNCDCM_NONE ),
1472     ENTRY( 0x0021, 0x00a7, "LT", "?", FUNCDCM_NONE ),
1473     ENTRY( 0x0021, 0x00b0, "IS", "?", FUNCDCM_NONE ),
1474     ENTRY( 0x0021, 0x00c0, "IS", "?", FUNCDCM_NONE ),
1475     ENTRY( 0x0023, 0x0000, "xs", "?", FUNCDCM_NONE ),
1476     ENTRY( 0x0023, 0x0001, "SL", "Number Of Series In Study", FUNCDCM_NONE ),
1477     ENTRY( 0x0023, 0x0002, "SL", "Number Of Unarchived Series", FUNCDCM_NONE ),
1478     ENTRY( 0x0023, 0x0010, "xs", "?", FUNCDCM_NONE ),
1479     ENTRY( 0x0023, 0x0020, "xs", "?", FUNCDCM_NONE ),
1480     ENTRY( 0x0023, 0x0030, "xs", "?", FUNCDCM_NONE ),
1481     ENTRY( 0x0023, 0x0040, "xs", "?", FUNCDCM_NONE ),
1482     ENTRY( 0x0023, 0x0050, "xs", "?", FUNCDCM_NONE ),
1483     ENTRY( 0x0023, 0x0060, "xs", "?", FUNCDCM_NONE ),
1484     ENTRY( 0x0023, 0x0070, "xs", "?", FUNCDCM_NONE ),
1485     ENTRY( 0x0023, 0x0074, "SL", "Number Of Updates To Info", FUNCDCM_NONE ),
1486     ENTRY( 0x0023, 0x007d, "SS", "Indicates If Study Has Complete Info", FUNCDCM_NONE ),
1487     ENTRY( 0x0023, 0x0080, "xs", "?", FUNCDCM_NONE ),
1488     ENTRY( 0x0023, 0x0090, "xs", "?", FUNCDCM_NONE ),
1489     ENTRY( 0x0023, 0x00ff, "US", "?", FUNCDCM_NONE ),
1490     ENTRY( 0x0025, 0x0000, "UL", "Group Length", FUNCDCM_NONE ),
1491     ENTRY( 0x0025, 0x0006, "SS", "Last Pulse Sequence Used", FUNCDCM_NONE ),
1492     ENTRY( 0x0025, 0x0007, "SL", "Images In Series", FUNCDCM_NONE ),
1493     ENTRY( 0x0025, 0x0010, "SS", "Landmark Counter", FUNCDCM_NONE ),
1494     ENTRY( 0x0025, 0x0011, "SS", "Number Of Acquisitions", FUNCDCM_NONE ),
1495     ENTRY( 0x0025, 0x0014, "SL", "Indicates Number Of Updates To Info", FUNCDCM_NONE ),
1496     ENTRY( 0x0025, 0x0017, "SL", "Series Complete Flag", FUNCDCM_NONE ),
1497     ENTRY( 0x0025, 0x0018, "SL", "Number Of Images Archived", FUNCDCM_NONE ),
1498     ENTRY( 0x0025, 0x0019, "SL", "Last Image Number Used", FUNCDCM_NONE ),
1499     ENTRY( 0x0025, 0x001a, "SH", "Primary Receiver Suite And Host", FUNCDCM_NONE ),
1500     ENTRY( 0x0027, 0x0000, "US", "?", FUNCDCM_NONE ),
1501     ENTRY( 0x0027, 0x0006, "SL", "Image Archive Flag", FUNCDCM_NONE ),
1502     ENTRY( 0x0027, 0x0010, "SS", "Scout Type", FUNCDCM_NONE ),
1503     ENTRY( 0x0027, 0x0011, "UN", "?", FUNCDCM_NONE ),
1504     ENTRY( 0x0027, 0x0012, "IS", "?", FUNCDCM_NONE ),
1505     ENTRY( 0x0027, 0x0013, "IS", "?", FUNCDCM_NONE ),
1506     ENTRY( 0x0027, 0x0014, "IS", "?", FUNCDCM_NONE ),
1507     ENTRY( 0x0027, 0x0015, "IS", "?", FUNCDCM_NONE ),
1508     ENTRY( 0x0027, 0x0016, "LT", "?", FUNCDCM_NONE ),
1509     ENTRY( 0x0027, 0x001c, "SL", "Vma Mamp", FUNCDCM_NONE ),
1510     ENTRY( 0x0027, 0x001d, "SS", "Vma Phase", FUNCDCM_NONE ),
1511     ENTRY( 0x0027, 0x001e, "SL", "Vma Mod", FUNCDCM_NONE ),
1512     ENTRY( 0x0027, 0x001f, "SL", "Vma Clip", FUNCDCM_NONE ),
1513     ENTRY( 0x0027, 0x0020, "SS", "Smart Scan On Off Flag", FUNCDCM_NONE ),
1514     ENTRY( 0x0027, 0x0030, "SH", "Foreign Image Revision", FUNCDCM_NONE ),
1515     ENTRY( 0x0027, 0x0031, "SS", "Imaging Mode", FUNCDCM_NONE ),
1516     ENTRY( 0x0027, 0x0032, "SS", "Pulse Sequence", FUNCDCM_NONE ),
1517     ENTRY( 0x0027, 0x0033, "SL", "Imaging Options", FUNCDCM_NONE ),
1518     ENTRY( 0x0027, 0x0035, "SS", "Plane Type", FUNCDCM_NONE ),
1519     ENTRY( 0x0027, 0x0036, "SL", "Oblique Plane", FUNCDCM_NONE ),
1520     ENTRY( 0x0027, 0x0040, "SH", "RAS Letter Of Image Location", FUNCDCM_NONE ),
1521     ENTRY( 0x0027, 0x0041, "FL", "Image Location", FUNCDCM_NONE ),
1522     ENTRY( 0x0027, 0x0042, "FL", "Center R Coord Of Plane Image", FUNCDCM_NONE ),
1523     ENTRY( 0x0027, 0x0043, "FL", "Center A Coord Of Plane Image", FUNCDCM_NONE ),
1524     ENTRY( 0x0027, 0x0044, "FL", "Center S Coord Of Plane Image", FUNCDCM_NONE ),
1525     ENTRY( 0x0027, 0x0045, "FL", "Normal R Coord", FUNCDCM_NONE ),
1526     ENTRY( 0x0027, 0x0046, "FL", "Normal A Coord", FUNCDCM_NONE ),
1527     ENTRY( 0x0027, 0x0047, "FL", "Normal S Coord", FUNCDCM_NONE ),
1528     ENTRY( 0x0027, 0x0048, "FL", "R Coord Of Top Right Corner", FUNCDCM_NONE ),
1529     ENTRY( 0x0027, 0x0049, "FL", "A Coord Of Top Right Corner", FUNCDCM_NONE ),
1530     ENTRY( 0x0027, 0x004a, "FL", "S Coord Of Top Right Corner", FUNCDCM_NONE ),
1531     ENTRY( 0x0027, 0x004b, "FL", "R Coord Of Bottom Right Corner", FUNCDCM_NONE ),
1532     ENTRY( 0x0027, 0x004c, "FL", "A Coord Of Bottom Right Corner", FUNCDCM_NONE ),
1533     ENTRY( 0x0027, 0x004d, "FL", "S Coord Of Bottom Right Corner", FUNCDCM_NONE ),
1534     ENTRY( 0x0027, 0x0050, "FL", "Table Start Location", FUNCDCM_NONE ),
1535     ENTRY( 0x0027, 0x0051, "FL", "Table End Location", FUNCDCM_NONE ),
1536     ENTRY( 0x0027, 0x0052, "SH", "RAS Letter For Side Of Image", FUNCDCM_NONE ),
1537     ENTRY( 0x0027, 0x0053, "SH", "RAS Letter For Anterior Posterior", FUNCDCM_NONE ),
1538     ENTRY( 0x0027, 0x0054, "SH", "RAS Letter For Scout Start Loc", FUNCDCM_NONE ),
1539     ENTRY( 0x0027, 0x0055, "SH", "RAS Letter For Scout End Loc", FUNCDCM_NONE ),
1540     ENTRY( 0x0027, 0x0060, "FL", "Image Dimension X", FUNCDCM_NONE ),
1541     ENTRY( 0x0027, 0x0061, "FL", "Image Dimension Y", FUNCDCM_NONE ),
1542     ENTRY( 0x0027, 0x0062, "FL", "Number Of Excitations", FUNCDCM_NONE ),
1543     ENTRY( 0x0028, 0x0000, "UL", "Image Presentation Group Length", FUNCDCM_NONE ),
1544     ENTRY( 0x0028, 0x0002, "US", "Samples per Pixel", FUNCDCM_SAMPLESPERPIXEL ),
1545     ENTRY( 0x0028, 0x0004, "CS", "Photometric Interpretation", FUNCDCM_PHOTOMETRICINTERPRETATION ),
1546     ENTRY( 0x0028, 0x0005, "US", "Image Dimensions", FUNCDCM_NONE ),
1547     ENTRY( 0x0028, 0x0006, "US", "Planar Configuration", FUNCDCM_PLANARCONFIGURATION ),
1548     ENTRY( 0x0028, 0x0008, "IS", "Number of Frames", FUNCDCM_NUMBEROFFRAMES ),
1549     ENTRY( 0x0028, 0x0009, "AT", "Frame Increment Pointer", FUNCDCM_NONE ),
1550     ENTRY( 0x0028, 0x0010, "US", "Rows", FUNCDCM_ROWS ),
1551     ENTRY( 0x0028, 0x0011, "US", "Columns", FUNCDCM_COLUMNS ),
1552     ENTRY( 0x0028, 0x0012, "US", "Planes", FUNCDCM_NONE ),
1553     ENTRY( 0x0028, 0x0014, "US", "Ultrasound Color Data Present", FUNCDCM_NONE ),
1554     ENTRY( 0x0028, 0x0030, "DS", "Pixel Spacing", FUNCDCM_NONE ),
1555     ENTRY( 0x0028, 0x0031, "DS", "Zoom Factor", FUNCDCM_NONE ),
1556     ENTRY( 0x0028, 0x0032, "DS", "Zoom Center", FUNCDCM_NONE ),
1557     ENTRY( 0x0028, 0x0034, "IS", "Pixel Aspect Ratio", FUNCDCM_NONE ),
1558     ENTRY( 0x0028, 0x0040, "LO", "Image Format", FUNCDCM_NONE ),
1559     ENTRY( 0x0028, 0x0050, "LT", "Manipulated Image", FUNCDCM_NONE ),
1560     ENTRY( 0x0028, 0x0051, "CS", "Corrected Image", FUNCDCM_NONE ),
1561     ENTRY( 0x0028, 0x005f, "LO", "Compression Recognition Code", FUNCDCM_NONE ),
1562     ENTRY( 0x0028, 0x0060, "LO", "Compression Code", FUNCDCM_NONE ),
1563     ENTRY( 0x0028, 0x0061, "SH", "Compression Originator", FUNCDCM_NONE ),
1564     ENTRY( 0x0028, 0x0062, "SH", "Compression Label", FUNCDCM_NONE ),
1565     ENTRY( 0x0028, 0x0063, "SH", "Compression Description", FUNCDCM_NONE ),
1566     ENTRY( 0x0028, 0x0065, "LO", "Compression Sequence", FUNCDCM_NONE ),
1567     ENTRY( 0x0028, 0x0066, "AT", "Compression Step Pointers", FUNCDCM_NONE ),
1568     ENTRY( 0x0028, 0x0068, "US", "Repeat Interval", FUNCDCM_NONE ),
1569     ENTRY( 0x0028, 0x0069, "US", "Bits Grouped", FUNCDCM_NONE ),
1570     ENTRY( 0x0028, 0x0070, "US", "Perimeter Table", FUNCDCM_NONE ),
1571     ENTRY( 0x0028, 0x0071, "xs", "Perimeter Value", FUNCDCM_NONE ),
1572     ENTRY( 0x0028, 0x0080, "US", "Predictor Rows", FUNCDCM_NONE ),
1573     ENTRY( 0x0028, 0x0081, "US", "Predictor Columns", FUNCDCM_NONE ),
1574     ENTRY( 0x0028, 0x0082, "US", "Predictor Constants", FUNCDCM_NONE ),
1575     ENTRY( 0x0028, 0x0090, "LO", "Blocked Pixels", FUNCDCM_NONE ),
1576     ENTRY( 0x0028, 0x0091, "US", "Block Rows", FUNCDCM_NONE ),
1577     ENTRY( 0x0028, 0x0092, "US", "Block Columns", FUNCDCM_NONE ),
1578     ENTRY( 0x0028, 0x0093, "US", "Row Overlap", FUNCDCM_NONE ),
1579     ENTRY( 0x0028, 0x0094, "US", "Column Overlap", FUNCDCM_NONE ),
1580     ENTRY( 0x0028, 0x0100, "US", "Bits Allocated", FUNCDCM_BITSALLOCATED ),
1581     ENTRY( 0x0028, 0x0101, "US", "Bits Stored", FUNCDCM_BITSSTORED ),
1582     ENTRY( 0x0028, 0x0102, "US", "High Bit", FUNCDCM_HIGHBIT ),
1583     ENTRY( 0x0028, 0x0103, "US", "Pixel Representation", FUNCDCM_PIXELREPRESENTATION ),
1584     ENTRY( 0x0028, 0x0104, "xs", "Smallest Valid Pixel Value", FUNCDCM_NONE ),
1585     ENTRY( 0x0028, 0x0105, "xs", "Largest Valid Pixel Value", FUNCDCM_NONE ),
1586     ENTRY( 0x0028, 0x0106, "xs", "Smallest Image Pixel Value", FUNCDCM_NONE ),
1587     ENTRY( 0x0028, 0x0107, "xs", "Largest Image Pixel Value", FUNCDCM_NONE ),
1588     ENTRY( 0x0028, 0x0108, "xs", "Smallest Pixel Value in Series", FUNCDCM_NONE ),
1589     ENTRY( 0x0028, 0x0109, "xs", "Largest Pixel Value in Series", FUNCDCM_NONE ),
1590     ENTRY( 0x0028, 0x0110, "xs", "Smallest Pixel Value in Plane", FUNCDCM_NONE ),
1591     ENTRY( 0x0028, 0x0111, "xs", "Largest Pixel Value in Plane", FUNCDCM_NONE ),
1592     ENTRY( 0x0028, 0x0120, "xs", "Pixel Padding Value", FUNCDCM_NONE ),
1593     ENTRY( 0x0028, 0x0121, "xs", "Pixel Padding Range Limit", FUNCDCM_NONE ),
1594     ENTRY( 0x0028, 0x0200, "xs", "Image Location", FUNCDCM_NONE ),
1595     ENTRY( 0x0028, 0x0300, "CS", "Quality Control Image", FUNCDCM_NONE ),
1596     ENTRY( 0x0028, 0x0301, "CS", "Burned In Annotation", FUNCDCM_NONE ),
1597     ENTRY( 0x0028, 0x0400, "xs", "?", FUNCDCM_NONE ),
1598     ENTRY( 0x0028, 0x0401, "xs", "?", FUNCDCM_NONE ),
1599     ENTRY( 0x0028, 0x0402, "xs", "?", FUNCDCM_NONE ),
1600     ENTRY( 0x0028, 0x0403, "xs", "?", FUNCDCM_NONE ),
1601     ENTRY( 0x0028, 0x0404, "AT", "Details of Coefficients", FUNCDCM_NONE ),
1602     ENTRY( 0x0028, 0x0700, "LO", "DCT Label", FUNCDCM_NONE ),
1603     ENTRY( 0x0028, 0x0701, "LO", "Data Block Description", FUNCDCM_NONE ),
1604     ENTRY( 0x0028, 0x0702, "AT", "Data Block", FUNCDCM_NONE ),
1605     ENTRY( 0x0028, 0x0710, "US", "Normalization Factor Format", FUNCDCM_NONE ),
1606     ENTRY( 0x0028, 0x0720, "US", "Zonal Map Number Format", FUNCDCM_NONE ),
1607     ENTRY( 0x0028, 0x0721, "AT", "Zonal Map Location", FUNCDCM_NONE ),
1608     ENTRY( 0x0028, 0x0722, "US", "Zonal Map Format", FUNCDCM_NONE ),
1609     ENTRY( 0x0028, 0x0730, "US", "Adaptive Map Format", FUNCDCM_NONE ),
1610     ENTRY( 0x0028, 0x0740, "US", "Code Number Format", FUNCDCM_NONE ),
1611     ENTRY( 0x0028, 0x0800, "LO", "Code Label", FUNCDCM_NONE ),
1612     ENTRY( 0x0028, 0x0802, "US", "Number of Tables", FUNCDCM_NONE ),
1613     ENTRY( 0x0028, 0x0803, "AT", "Code Table Location", FUNCDCM_NONE ),
1614     ENTRY( 0x0028, 0x0804, "US", "Bits For Code Word", FUNCDCM_NONE ),
1615     ENTRY( 0x0028, 0x0808, "AT", "Image Data Location", FUNCDCM_NONE ),
1616     ENTRY( 0x0028, 0x1040, "CS", "Pixel Intensity Relationship", FUNCDCM_NONE ),
1617     ENTRY( 0x0028, 0x1041, "SS", "Pixel Intensity Relationship Sign", FUNCDCM_NONE ),
1618     ENTRY( 0x0028, 0x1050, "DS", "Window Center", FUNCDCM_WINDOWCENTER ),
1619     ENTRY( 0x0028, 0x1051, "DS", "Window Width", FUNCDCM_WINDOWWIDTH ),
1620     ENTRY( 0x0028, 0x1052, "DS", "Rescale Intercept", FUNCDCM_RESCALEINTERCEPT ),
1621     ENTRY( 0x0028, 0x1053, "DS", "Rescale Slope", FUNCDCM_RESCALESLOPE ),
1622     ENTRY( 0x0028, 0x1054, "LO", "Rescale Type", FUNCDCM_RESCALETYPE ),
1623     ENTRY( 0x0028, 0x1055, "LO", "Window Center & Width Explanation", FUNCDCM_NONE ),
1624     ENTRY( 0x0028, 0x1080, "LO", "Gray Scale", FUNCDCM_NONE ),
1625     ENTRY( 0x0028, 0x1090, "CS", "Recommended Viewing Mode", FUNCDCM_NONE ),
1626     ENTRY( 0x0028, 0x1100, "xs", "Gray Lookup Table Descriptor", FUNCDCM_NONE ),
1627     ENTRY( 0x0028, 0x1101, "xs", "Red Palette Color Lookup Table Descriptor", FUNCDCM_PALETTEDESCRIPTOR ),
1628     ENTRY( 0x0028, 0x1102, "xs", "Green Palette Color Lookup Table Descriptor", FUNCDCM_PALETTEDESCRIPTOR ),
1629     ENTRY( 0x0028, 0x1103, "xs", "Blue Palette Color Lookup Table Descriptor", FUNCDCM_PALETTEDESCRIPTOR ),
1630     ENTRY( 0x0028, 0x1111, "OW", "Large Red Palette Color Lookup Table Descriptor", FUNCDCM_NONE ),
1631     ENTRY( 0x0028, 0x1112, "OW", "Large Green Palette Color Lookup Table Descriptor", FUNCDCM_NONE ),
1632     ENTRY( 0x0028, 0x1113, "OW", "Large Blue Palette Color Lookup Table Descriptor", FUNCDCM_NONE ),
1633     ENTRY( 0x0028, 0x1199, "UI", "Palette Color Lookup Table UID", FUNCDCM_NONE ),
1634     ENTRY( 0x0028, 0x1200, "xs", "Gray Lookup Table Data", FUNCDCM_LUT ),
1635     ENTRY( 0x0028, 0x1201, "OW", "Red Palette Color Lookup Table Data", FUNCDCM_PALETTE ),
1636     ENTRY( 0x0028, 0x1202, "OW", "Green Palette Color Lookup Table Data", FUNCDCM_PALETTE ),
1637     ENTRY( 0x0028, 0x1203, "OW", "Blue Palette Color Lookup Table Data", FUNCDCM_PALETTE ),
1638     ENTRY( 0x0028, 0x1211, "OW", "Large Red Palette Color Lookup Table Data", FUNCDCM_NONE ),
1639     ENTRY( 0x0028, 0x1212, "OW", "Large Green Palette Color Lookup Table Data", FUNCDCM_NONE ),
1640     ENTRY( 0x0028, 0x1213, "OW", "Large Blue Palette Color Lookup Table Data", FUNCDCM_NONE ),
1641     ENTRY( 0x0028, 0x1214, "UI", "Large Palette Color Lookup Table UID", FUNCDCM_NONE ),
1642     ENTRY( 0x0028, 0x1221, "OW", "Segmented Red Palette Color Lookup Table Data", FUNCDCM_NONE ),
1643     ENTRY( 0x0028, 0x1222, "OW", "Segmented Green Palette Color Lookup Table Data", FUNCDCM_NONE ),
1644     ENTRY( 0x0028, 0x1223, "OW", "Segmented Blue Palette Color Lookup Table Data", FUNCDCM_NONE ),
1645     ENTRY( 0x0028, 0x1300, "CS", "Implant Present", FUNCDCM_NONE ),
1646     ENTRY( 0x0028, 0x2110, "CS", "Lossy Image Compression", FUNCDCM_NONE ),
1647     ENTRY( 0x0028, 0x2112, "DS", "Lossy Image Compression Ratio", FUNCDCM_NONE ),
1648     ENTRY( 0x0028, 0x3000, "SQ", "Modality LUT Sequence", FUNCDCM_NONE ),
1649     ENTRY( 0x0028, 0x3002, "US", "LUT Descriptor", FUNCDCM_NONE ),
1650     ENTRY( 0x0028, 0x3003, "LO", "LUT Explanation", FUNCDCM_NONE ),
1651     ENTRY( 0x0028, 0x3004, "LO", "Modality LUT Type", FUNCDCM_NONE ),
1652     ENTRY( 0x0028, 0x3006, "US", "LUT Data", FUNCDCM_LUT ),
1653     ENTRY( 0x0028, 0x3010, "xs", "VOI LUT Sequence", FUNCDCM_NONE ),
1654     ENTRY( 0x0028, 0x4000, "LT", "Image Presentation Comments", FUNCDCM_NONE ),
1655     ENTRY( 0x0028, 0x5000, "SQ", "Biplane Acquisition Sequence", FUNCDCM_NONE ),
1656     ENTRY( 0x0028, 0x6010, "US", "Representative Frame Number", FUNCDCM_NONE ),
1657     ENTRY( 0x0028, 0x6020, "US", "Frame Numbers of Interest", FUNCDCM_NONE ),
1658     ENTRY( 0x0028, 0x6022, "LO", "Frame of Interest Description", FUNCDCM_NONE ),
1659     ENTRY( 0x0028, 0x6030, "US", "Mask Pointer", FUNCDCM_NONE ),
1660     ENTRY( 0x0028, 0x6040, "US", "R Wave Pointer", FUNCDCM_NONE ),
1661     ENTRY( 0x0028, 0x6100, "SQ", "Mask Subtraction Sequence", FUNCDCM_NONE ),
1662     ENTRY( 0x0028, 0x6101, "CS", "Mask Operation", FUNCDCM_NONE ),
1663     ENTRY( 0x0028, 0x6102, "US", "Applicable Frame Range", FUNCDCM_NONE ),
1664     ENTRY( 0x0028, 0x6110, "US", "Mask Frame Numbers", FUNCDCM_NONE ),
1665     ENTRY( 0x0028, 0x6112, "US", "Contrast Frame Averaging", FUNCDCM_NONE ),
1666     ENTRY( 0x0028, 0x6114, "FL", "Mask Sub-Pixel Shift", FUNCDCM_NONE ),
1667     ENTRY( 0x0028, 0x6120, "SS", "TID Offset", FUNCDCM_NONE ),
1668     ENTRY( 0x0028, 0x6190, "ST", "Mask Operation Explanation", FUNCDCM_NONE ),
1669     ENTRY( 0x0029, 0x0000, "xs", "?", FUNCDCM_NONE ),
1670     ENTRY( 0x0029, 0x0001, "xs", "?", FUNCDCM_NONE ),
1671     ENTRY( 0x0029, 0x0002, "xs", "?", FUNCDCM_NONE ),
1672     ENTRY( 0x0029, 0x0003, "xs", "?", FUNCDCM_NONE ),
1673     ENTRY( 0x0029, 0x0004, "xs", "?", FUNCDCM_NONE ),
1674     ENTRY( 0x0029, 0x0005, "xs", "?", FUNCDCM_NONE ),
1675     ENTRY( 0x0029, 0x0006, "xs", "?", FUNCDCM_NONE ),
1676     ENTRY( 0x0029, 0x0007, "SL", "Lower Range Of Pixels", FUNCDCM_NONE ),
1677     ENTRY( 0x0029, 0x0008, "SH", "Lower Range Of Pixels", FUNCDCM_NONE ),
1678     ENTRY( 0x0029, 0x0009, "SH", "Lower Range Of Pixels", FUNCDCM_NONE ),
1679     ENTRY( 0x0029, 0x000a, "SS", "Lower Range Of Pixels", FUNCDCM_NONE ),
1680     ENTRY( 0x0029, 0x000c, "xs", "?", FUNCDCM_NONE ),
1681     ENTRY( 0x0029, 0x000e, "CS", "Zoom Enable Status", FUNCDCM_NONE ),
1682     ENTRY( 0x0029, 0x000f, "CS", "Zoom Select Status", FUNCDCM_NONE ),
1683     ENTRY( 0x0029, 0x0010, "xs", "?", FUNCDCM_NONE ),
1684     ENTRY( 0x0029, 0x0011, "xs", "?", FUNCDCM_NONE ),
1685     ENTRY( 0x0029, 0x0013, "LT", "?", FUNCDCM_NONE ),
1686     ENTRY( 0x0029, 0x0015, "xs", "?", FUNCDCM_NONE ),
1687     ENTRY( 0x0029, 0x0016, "SL", "Lower Range Of Pixels", FUNCDCM_NONE ),
1688     ENTRY( 0x0029, 0x0017, "SL", "Lower Range Of Pixels", FUNCDCM_NONE ),
1689     ENTRY( 0x0029, 0x0018, "SL", "Upper Range Of Pixels", FUNCDCM_NONE ),
1690     ENTRY( 0x0029, 0x001a, "SL", "Length Of Total Info In Bytes", FUNCDCM_NONE ),
1691     ENTRY( 0x0029, 0x001e, "xs", "?", FUNCDCM_NONE ),
1692     ENTRY( 0x0029, 0x001f, "xs", "?", FUNCDCM_NONE ),
1693     ENTRY( 0x0029, 0x0020, "xs", "?", FUNCDCM_NONE ),
1694     ENTRY( 0x0029, 0x0022, "IS", "Pixel Quality Value", FUNCDCM_NONE ),
1695     ENTRY( 0x0029, 0x0025, "LT", "Processed Pixel Data Quality", FUNCDCM_NONE ),
1696     ENTRY( 0x0029, 0x0026, "SS", "Version Of Info Structure", FUNCDCM_NONE ),
1697     ENTRY( 0x0029, 0x0030, "xs", "?", FUNCDCM_NONE ),
1698     ENTRY( 0x0029, 0x0031, "xs", "?", FUNCDCM_NONE ),
1699     ENTRY( 0x0029, 0x0032, "xs", "?", FUNCDCM_NONE ),
1700     ENTRY( 0x0029, 0x0033, "xs", "?", FUNCDCM_NONE ),
1701     ENTRY( 0x0029, 0x0034, "xs", "?", FUNCDCM_NONE ),
1702     ENTRY( 0x0029, 0x0035, "SL", "Advantage Comp Underflow", FUNCDCM_NONE ),
1703     ENTRY( 0x0029, 0x0038, "US", "?", FUNCDCM_NONE ),
1704     ENTRY( 0x0029, 0x0040, "xs", "?", FUNCDCM_NONE ),
1705     ENTRY( 0x0029, 0x0041, "DS", "Magnifying Glass Rectangle", FUNCDCM_NONE ),
1706     ENTRY( 0x0029, 0x0043, "DS", "Magnifying Glass Factor", FUNCDCM_NONE ),
1707     ENTRY( 0x0029, 0x0044, "US", "Magnifying Glass Function", FUNCDCM_NONE ),
1708     ENTRY( 0x0029, 0x004e, "CS", "Magnifying Glass Enable Status", FUNCDCM_NONE ),
1709     ENTRY( 0x0029, 0x004f, "CS", "Magnifying Glass Select Status", FUNCDCM_NONE ),
1710     ENTRY( 0x0029, 0x0050, "xs", "?", FUNCDCM_NONE ),
1711     ENTRY( 0x0029, 0x0051, "LT", "Exposure Code", FUNCDCM_NONE ),
1712     ENTRY( 0x0029, 0x0052, "LT", "Sort Code", FUNCDCM_NONE ),
1713     ENTRY( 0x0029, 0x0053, "LT", "?", FUNCDCM_NONE ),
1714     ENTRY( 0x0029, 0x0060, "xs", "?", FUNCDCM_NONE ),
1715     ENTRY( 0x0029, 0x0061, "xs", "?", FUNCDCM_NONE ),
1716     ENTRY( 0x0029, 0x0067, "LT", "?", FUNCDCM_NONE ),
1717     ENTRY( 0x0029, 0x0070, "xs", "?", FUNCDCM_NONE ),
1718     ENTRY( 0x0029, 0x0071, "xs", "?", FUNCDCM_NONE ),
1719     ENTRY( 0x0029, 0x0072, "xs", "?", FUNCDCM_NONE ),
1720     ENTRY( 0x0029, 0x0077, "CS", "Window Select Status", FUNCDCM_NONE ),
1721     ENTRY( 0x0029, 0x0078, "LT", "ECG Display Printing ID", FUNCDCM_NONE ),
1722     ENTRY( 0x0029, 0x0079, "CS", "ECG Display Printing", FUNCDCM_NONE ),
1723     ENTRY( 0x0029, 0x007e, "CS", "ECG Display Printing Enable Status", FUNCDCM_NONE ),
1724     ENTRY( 0x0029, 0x007f, "CS", "ECG Display Printing Select Status", FUNCDCM_NONE ),
1725     ENTRY( 0x0029, 0x0080, "xs", "?", FUNCDCM_NONE ),
1726     ENTRY( 0x0029, 0x0081, "xs", "?", FUNCDCM_NONE ),
1727     ENTRY( 0x0029, 0x0082, "IS", "View Zoom", FUNCDCM_NONE ),
1728     ENTRY( 0x0029, 0x0083, "IS", "View Transform", FUNCDCM_NONE ),
1729     ENTRY( 0x0029, 0x008e, "CS", "Physiological Display Enable Status", FUNCDCM_NONE ),
1730     ENTRY( 0x0029, 0x008f, "CS", "Physiological Display Select Status", FUNCDCM_NONE ),
1731     ENTRY( 0x0029, 0x0090, "IS", "?", FUNCDCM_NONE ),
1732     ENTRY( 0x0029, 0x0099, "LT", "Shutter Type", FUNCDCM_NONE ),
1733     ENTRY( 0x0029, 0x00a0, "US", "Rows of Rectangular Shutter", FUNCDCM_NONE ),
1734     ENTRY( 0x0029, 0x00a1, "US", "Columns of Rectangular Shutter", FUNCDCM_NONE ),
1735     ENTRY( 0x0029, 0x00a2, "US", "Origin of Rectangular Shutter", FUNCDCM_NONE ),
1736     ENTRY( 0x0029, 0x00b0, "US", "Radius of Circular Shutter", FUNCDCM_NONE ),
1737     ENTRY( 0x0029, 0x00b2, "US", "Origin of Circular Shutter", FUNCDCM_NONE ),
1738     ENTRY( 0x0029, 0x00c0, "LT", "Functional Shutter ID", FUNCDCM_NONE ),
1739     ENTRY( 0x0029, 0x00c1, "xs", "?", FUNCDCM_NONE ),
1740     ENTRY( 0x0029, 0x00c3, "IS", "Scan Resolution", FUNCDCM_NONE ),
1741     ENTRY( 0x0029, 0x00c4, "IS", "Field of View", FUNCDCM_FIELDOFVIEW ),
1742     ENTRY( 0x0029, 0x00c5, "LT", "Field Of Shutter Rectangle", FUNCDCM_NONE ),
1743     ENTRY( 0x0029, 0x00ce, "CS", "Shutter Enable Status", FUNCDCM_NONE ),
1744     ENTRY( 0x0029, 0x00cf, "CS", "Shutter Select Status", FUNCDCM_NONE ),
1745     ENTRY( 0x0029, 0x00d0, "IS", "?", FUNCDCM_NONE ),
1746     ENTRY( 0x0029, 0x00d1, "IS", "?", FUNCDCM_NONE ),
1747     ENTRY( 0x0029, 0x00d5, "LT", "Slice Thickness", FUNCDCM_NONE ),
1748     ENTRY( 0x0031, 0x0010, "LT", "Request UID", FUNCDCM_NONE ),
1749     ENTRY( 0x0031, 0x0012, "LT", "Examination Reason", FUNCDCM_NONE ),
1750     ENTRY( 0x0031, 0x0030, "DA", "Requested Date", FUNCDCM_NONE ),
1751     ENTRY( 0x0031, 0x0032, "TM", "Worklist Request Start Time", FUNCDCM_NONE ),
1752     ENTRY( 0x0031, 0x0033, "TM", "Worklist Request End Time", FUNCDCM_NONE ),
1753     ENTRY( 0x0031, 0x0045, "LT", "Requesting Physician", FUNCDCM_NONE ),
1754     ENTRY( 0x0031, 0x004a, "TM", "Requested Time", FUNCDCM_NONE ),
1755     ENTRY( 0x0031, 0x0050, "LT", "Requested Physician", FUNCDCM_NONE ),
1756     ENTRY( 0x0031, 0x0080, "LT", "Requested Location", FUNCDCM_NONE ),
1757     ENTRY( 0x0032, 0x0000, "UL", "Study Group Length", FUNCDCM_NONE ),
1758     ENTRY( 0x0032, 0x000a, "CS", "Study Status ID", FUNCDCM_NONE ),
1759     ENTRY( 0x0032, 0x000c, "CS", "Study Priority ID", FUNCDCM_NONE ),
1760     ENTRY( 0x0032, 0x0012, "LO", "Study ID Issuer", FUNCDCM_NONE ),
1761     ENTRY( 0x0032, 0x0032, "DA", "Study Verified Date", FUNCDCM_NONE ),
1762     ENTRY( 0x0032, 0x0033, "TM", "Study Verified Time", FUNCDCM_NONE ),
1763     ENTRY( 0x0032, 0x0034, "DA", "Study Read Date", FUNCDCM_NONE ),
1764     ENTRY( 0x0032, 0x0035, "TM", "Study Read Time", FUNCDCM_NONE ),
1765     ENTRY( 0x0032, 0x1000, "DA", "Scheduled Study Start Date", FUNCDCM_NONE ),
1766     ENTRY( 0x0032, 0x1001, "TM", "Scheduled Study Start Time", FUNCDCM_NONE ),
1767     ENTRY( 0x0032, 0x1010, "DA", "Scheduled Study Stop Date", FUNCDCM_NONE ),
1768     ENTRY( 0x0032, 0x1011, "TM", "Scheduled Study Stop Time", FUNCDCM_NONE ),
1769     ENTRY( 0x0032, 0x1020, "LO", "Scheduled Study Location", FUNCDCM_NONE ),
1770     ENTRY( 0x0032, 0x1021, "AE", "Scheduled Study Location AE Title(s)", FUNCDCM_NONE ),
1771     ENTRY( 0x0032, 0x1030, "LO", "Reason for Study", FUNCDCM_NONE ),
1772     ENTRY( 0x0032, 0x1032, "PN", "Requesting Physician", FUNCDCM_NONE ),
1773     ENTRY( 0x0032, 0x1033, "LO", "Requesting Service", FUNCDCM_NONE ),
1774     ENTRY( 0x0032, 0x1040, "DA", "Study Arrival Date", FUNCDCM_NONE ),
1775     ENTRY( 0x0032, 0x1041, "TM", "Study Arrival Time", FUNCDCM_NONE ),
1776     ENTRY( 0x0032, 0x1050, "DA", "Study Completion Date", FUNCDCM_NONE ),
1777     ENTRY( 0x0032, 0x1051, "TM", "Study Completion Time", FUNCDCM_NONE ),
1778     ENTRY( 0x0032, 0x1055, "CS", "Study Component Status ID", FUNCDCM_NONE ),
1779     ENTRY( 0x0032, 0x1060, "LO", "Requested Procedure Description", FUNCDCM_NONE ),
1780     ENTRY( 0x0032, 0x1064, "SQ", "Requested Procedure Code Sequence", FUNCDCM_NONE ),
1781     ENTRY( 0x0032, 0x1070, "LO", "Requested Contrast Agent", FUNCDCM_NONE ),
1782     ENTRY( 0x0032, 0x4000, "LT", "Study Comments", FUNCDCM_NONE ),
1783     ENTRY( 0x0033, 0x0001, "UN", "?", FUNCDCM_NONE ),
1784     ENTRY( 0x0033, 0x0002, "UN", "?", FUNCDCM_NONE ),
1785     ENTRY( 0x0033, 0x0005, "UN", "?", FUNCDCM_NONE ),
1786     ENTRY( 0x0033, 0x0006, "UN", "?", FUNCDCM_NONE ),
1787     ENTRY( 0x0033, 0x0010, "LT", "Patient Study UID", FUNCDCM_NONE ),
1788     ENTRY( 0x0037, 0x0010, "LO", "ReferringDepartment", FUNCDCM_NONE ),
1789     ENTRY( 0x0037, 0x0020, "US", "ScreenNumber", FUNCDCM_NONE ),
1790     ENTRY( 0x0037, 0x0040, "SH", "LeftOrientation", FUNCDCM_NONE ),
1791     ENTRY( 0x0037, 0x0042, "SH", "RightOrientation", FUNCDCM_NONE ),
1792     ENTRY( 0x0037, 0x0050, "CS", "Inversion", FUNCDCM_NONE ),
1793     ENTRY( 0x0037, 0x0060, "US", "DSA", FUNCDCM_NONE ),
1794     ENTRY( 0x0038, 0x0000, "UL", "Visit Group Length", FUNCDCM_NONE ),
1795     ENTRY( 0x0038, 0x0004, "SQ", "Referenced Patient Alias Sequence", FUNCDCM_NONE ),
1796     ENTRY( 0x0038, 0x0008, "CS", "Visit Status ID", FUNCDCM_NONE ),
1797     ENTRY( 0x0038, 0x0010, "LO", "Admission ID", FUNCDCM_NONE ),
1798     ENTRY( 0x0038, 0x0011, "LO", "Issuer of Admission ID", FUNCDCM_NONE ),
1799     ENTRY( 0x0038, 0x0016, "LO", "Route of Admissions", FUNCDCM_NONE ),
1800     ENTRY( 0x0038, 0x001a, "DA", "Scheduled Admission Date", FUNCDCM_NONE ),
1801     ENTRY( 0x0038, 0x001b, "TM", "Scheduled Admission Time", FUNCDCM_NONE ),
1802     ENTRY( 0x0038, 0x001c, "DA", "Scheduled Discharge Date", FUNCDCM_NONE ),
1803     ENTRY( 0x0038, 0x001d, "TM", "Scheduled Discharge Time", FUNCDCM_NONE ),
1804     ENTRY( 0x0038, 0x001e, "LO", "Scheduled Patient Institution Residence", FUNCDCM_NONE ),
1805     ENTRY( 0x0038, 0x0020, "DA", "Admitting Date", FUNCDCM_NONE ),
1806     ENTRY( 0x0038, 0x0021, "TM", "Admitting Time", FUNCDCM_NONE ),
1807     ENTRY( 0x0038, 0x0030, "DA", "Discharge Date", FUNCDCM_NONE ),
1808     ENTRY( 0x0038, 0x0032, "TM", "Discharge Time", FUNCDCM_NONE ),
1809     ENTRY( 0x0038, 0x0040, "LO", "Discharge Diagnosis Description", FUNCDCM_NONE ),
1810     ENTRY( 0x0038, 0x0044, "SQ", "Discharge Diagnosis Code Sequence", FUNCDCM_NONE ),
1811     ENTRY( 0x0038, 0x0050, "LO", "Special Needs", FUNCDCM_NONE ),
1812     ENTRY( 0x0038, 0x0300, "LO", "Current Patient Location", FUNCDCM_NONE ),
1813     ENTRY( 0x0038, 0x0400, "LO", "Patient's Institution Residence", FUNCDCM_NONE ),
1814     ENTRY( 0x0038, 0x0500, "LO", "Patient State", FUNCDCM_NONE ),
1815     ENTRY( 0x0038, 0x4000, "LT", "Visit Comments", FUNCDCM_NONE ),
1816     ENTRY( 0x0039, 0x0080, "IS", "Private Entity Number", FUNCDCM_NONE ),
1817     ENTRY( 0x0039, 0x0085, "DA", "Private Entity Date", FUNCDCM_NONE ),
1818     ENTRY( 0x0039, 0x0090, "TM", "Private Entity Time", FUNCDCM_NONE ),
1819     ENTRY( 0x0039, 0x0095, "LO", "Private Entity Launch Command", FUNCDCM_NONE ),
1820     ENTRY( 0x0039, 0x00aa, "CS", "Private Entity Type", FUNCDCM_NONE ),
1821     ENTRY( 0x003a, 0x0002, "SQ", "Waveform Sequence", FUNCDCM_NONE ),
1822     ENTRY( 0x003a, 0x0005, "US", "Waveform Number of Channels", FUNCDCM_NONE ),
1823     ENTRY( 0x003a, 0x0010, "UL", "Waveform Number of Samples", FUNCDCM_NONE ),
1824     ENTRY( 0x003a, 0x001a, "DS", "Sampling Frequency", FUNCDCM_NONE ),
1825     ENTRY( 0x003a, 0x0020, "SH", "Group Label", FUNCDCM_NONE ),
1826     ENTRY( 0x003a, 0x0103, "CS", "Waveform Sample Value Representation", FUNCDCM_NONE ),
1827     ENTRY( 0x003a, 0x0122, "OB", "Waveform Padding Value", FUNCDCM_NONE ),
1828     ENTRY( 0x003a, 0x0200, "SQ", "Channel Definition", FUNCDCM_NONE ),
1829     ENTRY( 0x003a, 0x0202, "IS", "Waveform Channel Number", FUNCDCM_NONE ),
1830     ENTRY( 0x003a, 0x0203, "SH", "Channel Label", FUNCDCM_NONE ),
1831     ENTRY( 0x003a, 0x0205, "CS", "Channel Status", FUNCDCM_NONE ),
1832     ENTRY( 0x003a, 0x0208, "SQ", "Channel Source", FUNCDCM_NONE ),
1833     ENTRY( 0x003a, 0x0209, "SQ", "Channel Source Modifiers", FUNCDCM_NONE ),
1834     ENTRY( 0x003a, 0x020a, "SQ", "Differential Channel Source", FUNCDCM_NONE ),
1835     ENTRY( 0x003a, 0x020b, "SQ", "Differential Channel Source Modifiers", FUNCDCM_NONE ),
1836     ENTRY( 0x003a, 0x0210, "DS", "Channel Sensitivity", FUNCDCM_NONE ),
1837     ENTRY( 0x003a, 0x0211, "SQ", "Channel Sensitivity Units", FUNCDCM_NONE ),
1838     ENTRY( 0x003a, 0x0212, "DS", "Channel Sensitivity Correction Factor", FUNCDCM_NONE ),
1839     ENTRY( 0x003a, 0x0213, "DS", "Channel Baseline", FUNCDCM_NONE ),
1840     ENTRY( 0x003a, 0x0214, "DS", "Channel Time Skew", FUNCDCM_NONE ),
1841     ENTRY( 0x003a, 0x0215, "DS", "Channel Sample Skew", FUNCDCM_NONE ),
1842     ENTRY( 0x003a, 0x0216, "OB", "Channel Minimum Value", FUNCDCM_NONE ),
1843     ENTRY( 0x003a, 0x0217, "OB", "Channel Maximum Value", FUNCDCM_NONE ),
1844     ENTRY( 0x003a, 0x0218, "DS", "Channel Offset", FUNCDCM_NONE ),
1845     ENTRY( 0x003a, 0x021a, "US", "Bits Per Sample", FUNCDCM_NONE ),
1846     ENTRY( 0x003a, 0x0220, "DS", "Filter Low Frequency", FUNCDCM_NONE ),
1847     ENTRY( 0x003a, 0x0221, "DS", "Filter High Frequency", FUNCDCM_NONE ),
1848     ENTRY( 0x003a, 0x0222, "DS", "Notch Filter Frequency", FUNCDCM_NONE ),
1849     ENTRY( 0x003a, 0x0223, "DS", "Notch Filter Bandwidth", FUNCDCM_NONE ),
1850     ENTRY( 0x003a, 0x1000, "OB", "Waveform Data", FUNCDCM_NONE ),
1851     ENTRY( 0x0040, 0x0001, "AE", "Scheduled Station AE Title", FUNCDCM_NONE ),
1852     ENTRY( 0x0040, 0x0002, "DA", "Scheduled Procedure Step Start Date", FUNCDCM_NONE ),
1853     ENTRY( 0x0040, 0x0003, "TM", "Scheduled Procedure Step Start Time", FUNCDCM_NONE ),
1854     ENTRY( 0x0040, 0x0004, "DA", "Scheduled Procedure Step End Date", FUNCDCM_NONE ),
1855     ENTRY( 0x0040, 0x0005, "TM", "Scheduled Procedure Step End Time", FUNCDCM_NONE ),
1856     ENTRY( 0x0040, 0x0006, "PN", "Scheduled Performing Physician Name", FUNCDCM_NONE ),
1857     ENTRY( 0x0040, 0x0007, "LO", "Scheduled Procedure Step Description", FUNCDCM_NONE ),
1858     ENTRY( 0x0040, 0x0008, "SQ", "Scheduled Action Item Code Sequence", FUNCDCM_NONE ),
1859     ENTRY( 0x0040, 0x0009, "SH", "Scheduled Procedure Step ID", FUNCDCM_NONE ),
1860     ENTRY( 0x0040, 0x0010, "SH", "Scheduled Station Name", FUNCDCM_NONE ),
1861     ENTRY( 0x0040, 0x0011, "SH", "Scheduled Procedure Step Location", FUNCDCM_NONE ),
1862     ENTRY( 0x0040, 0x0012, "LO", "Pre-Medication", FUNCDCM_NONE ),
1863     ENTRY( 0x0040, 0x0020, "CS", "Scheduled Procedure Step Status", FUNCDCM_NONE ),
1864     ENTRY( 0x0040, 0x0100, "SQ", "Scheduled Procedure Step Sequence", FUNCDCM_NONE ),
1865     ENTRY( 0x0040, 0x0302, "US", "Entrance Dose", FUNCDCM_NONE ),
1866     ENTRY( 0x0040, 0x0303, "US", "Exposed Area", FUNCDCM_NONE ),
1867     ENTRY( 0x0040, 0x0306, "DS", "Distance Source to Entrance", FUNCDCM_NONE ),
1868     ENTRY( 0x0040, 0x0307, "DS", "Distance Source to Support", FUNCDCM_NONE ),
1869     ENTRY( 0x0040, 0x0310, "ST", "Comments On Radiation Dose", FUNCDCM_NONE ),
1870     ENTRY( 0x0040, 0x0312, "DS", "X-Ray Output", FUNCDCM_NONE ),
1871     ENTRY( 0x0040, 0x0314, "DS", "Half Value Layer", FUNCDCM_NONE ),
1872     ENTRY( 0x0040, 0x0316, "DS", "Organ Dose", FUNCDCM_NONE ),
1873     ENTRY( 0x0040, 0x0318, "CS", "Organ Exposed", FUNCDCM_NONE ),
1874     ENTRY( 0x0040, 0x0400, "LT", "Comments On Scheduled Procedure Step", FUNCDCM_NONE ),
1875     ENTRY( 0x0040, 0x050a, "LO", "Specimen Accession Number", FUNCDCM_NONE ),
1876     ENTRY( 0x0040, 0x0550, "SQ", "Specimen Sequence", FUNCDCM_NONE ),
1877     ENTRY( 0x0040, 0x0551, "LO", "Specimen Identifier", FUNCDCM_NONE ),
1878     ENTRY( 0x0040, 0x0552, "SQ", "Specimen Description Sequence", FUNCDCM_NONE ),
1879     ENTRY( 0x0040, 0x0553, "ST", "Specimen Description", FUNCDCM_NONE ),
1880     ENTRY( 0x0040, 0x0555, "SQ", "Acquisition Context Sequence", FUNCDCM_NONE ),
1881     ENTRY( 0x0040, 0x0556, "ST", "Acquisition Context Description", FUNCDCM_NONE ),
1882     ENTRY( 0x0040, 0x059a, "SQ", "Specimen Type Code Sequence", FUNCDCM_NONE ),
1883     ENTRY( 0x0040, 0x06fa, "LO", "Slide Identifier", FUNCDCM_NONE ),
1884     ENTRY( 0x0040, 0x071a, "SQ", "Image Center Point Coordinates Sequence", FUNCDCM_NONE ),
1885     ENTRY( 0x0040, 0x072a, "DS", "X Offset In Slide Coordinate System", FUNCDCM_NONE ),
1886     ENTRY( 0x0040, 0x073a, "DS", "Y Offset In Slide Coordinate System", FUNCDCM_NONE ),
1887     ENTRY( 0x0040, 0x074a, "DS", "Z Offset In Slide Coordinate System", FUNCDCM_NONE ),
1888     ENTRY( 0x0040, 0x08d8, "SQ", "Pixel Spacing Sequence", FUNCDCM_NONE ),
1889     ENTRY( 0x0040, 0x08da, "SQ", "Coordinate System Axis Code Sequence", FUNCDCM_NONE ),
1890     ENTRY( 0x0040, 0x08ea, "SQ", "Measurement Units Code Sequence", FUNCDCM_NONE ),
1891     ENTRY( 0x0040, 0x09f8, "SQ", "Vital Stain Code Sequence", FUNCDCM_NONE ),
1892     ENTRY( 0x0040, 0x1001, "SH", "Requested Procedure ID", FUNCDCM_NONE ),
1893     ENTRY( 0x0040, 0x1002, "LO", "Reason For Requested Procedure", FUNCDCM_NONE ),
1894     ENTRY( 0x0040, 0x1003, "SH", "Requested Procedure Priority", FUNCDCM_NONE ),
1895     ENTRY( 0x0040, 0x1004, "LO", "Patient Transport Arrangements", FUNCDCM_NONE ),
1896     ENTRY( 0x0040, 0x1005, "LO", "Requested Procedure Location", FUNCDCM_NONE ),
1897     ENTRY( 0x0040, 0x1006, "SH", "Placer Order Number of Procedure", FUNCDCM_NONE ),
1898     ENTRY( 0x0040, 0x1007, "SH", "Filler Order Number of Procedure", FUNCDCM_NONE ),
1899     ENTRY( 0x0040, 0x1008, "LO", "Confidentiality Code", FUNCDCM_NONE ),
1900     ENTRY( 0x0040, 0x1009, "SH", "Reporting Priority", FUNCDCM_NONE ),
1901     ENTRY( 0x0040, 0x1010, "PN", "Names of Intended Recipients of Results", FUNCDCM_NONE ),
1902     ENTRY( 0x0040, 0x1400, "LT", "Requested Procedure Comments", FUNCDCM_NONE ),
1903     ENTRY( 0x0040, 0x2001, "LO", "Reason For Imaging Service Request", FUNCDCM_NONE ),
1904     ENTRY( 0x0040, 0x2004, "DA", "Issue Date of Imaging Service Request", FUNCDCM_NONE ),
1905     ENTRY( 0x0040, 0x2005, "TM", "Issue Time of Imaging Service Request", FUNCDCM_NONE ),
1906     ENTRY( 0x0040, 0x2006, "SH", "Placer Order Number of Imaging Service Request", FUNCDCM_NONE ),
1907     ENTRY( 0x0040, 0x2007, "SH", "Filler Order Number of Imaging Service Request", FUNCDCM_NONE ),
1908     ENTRY( 0x0040, 0x2008, "PN", "Order Entered By", FUNCDCM_NONE ),
1909     ENTRY( 0x0040, 0x2009, "SH", "Order Enterer Location", FUNCDCM_NONE ),
1910     ENTRY( 0x0040, 0x2010, "SH", "Order Callback Phone Number", FUNCDCM_NONE ),
1911     ENTRY( 0x0040, 0x2400, "LT", "Imaging Service Request Comments", FUNCDCM_NONE ),
1912     ENTRY( 0x0040, 0x3001, "LO", "Confidentiality Constraint On Patient Data", FUNCDCM_NONE ),
1913     ENTRY( 0x0040, 0xa007, "CS", "Findings Flag", FUNCDCM_NONE ),
1914     ENTRY( 0x0040, 0xa020, "SQ", "Findings Sequence", FUNCDCM_NONE ),
1915     ENTRY( 0x0040, 0xa021, "UI", "Findings Group UID", FUNCDCM_NONE ),
1916     ENTRY( 0x0040, 0xa022, "UI", "Referenced Findings Group UID", FUNCDCM_NONE ),
1917     ENTRY( 0x0040, 0xa023, "DA", "Findings Group Recording Date", FUNCDCM_NONE ),
1918     ENTRY( 0x0040, 0xa024, "TM", "Findings Group Recording Time", FUNCDCM_NONE ),
1919     ENTRY( 0x0040, 0xa026, "SQ", "Findings Source Category Code Sequence", FUNCDCM_NONE ),
1920     ENTRY( 0x0040, 0xa027, "LO", "Documenting Organization", FUNCDCM_NONE ),
1921     ENTRY( 0x0040, 0xa028, "SQ", "Documenting Organization Identifier Code Sequence", FUNCDCM_NONE ),
1922     ENTRY( 0x0040, 0xa032, "LO", "History Reliability Qualifier Description", FUNCDCM_NONE ),
1923     ENTRY( 0x0040, 0xa043, "SQ", "Concept Name Code Sequence", FUNCDCM_NONE ),
1924     ENTRY( 0x0040, 0xa047, "LO", "Measurement Precision Description", FUNCDCM_NONE ),
1925     ENTRY( 0x0040, 0xa057, "CS", "Urgency or Priority Alerts", FUNCDCM_NONE ),
1926     ENTRY( 0x0040, 0xa060, "LO", "Sequencing Indicator", FUNCDCM_NONE ),
1927     ENTRY( 0x0040, 0xa066, "SQ", "Document Identifier Code Sequence", FUNCDCM_NONE ),
1928     ENTRY( 0x0040, 0xa067, "PN", "Document Author", FUNCDCM_NONE ),
1929     ENTRY( 0x0040, 0xa068, "SQ", "Document Author Identifier Code Sequence", FUNCDCM_NONE ),
1930     ENTRY( 0x0040, 0xa070, "SQ", "Identifier Code Sequence", FUNCDCM_NONE ),
1931     ENTRY( 0x0040, 0xa073, "LO", "Object String Identifier", FUNCDCM_NONE ),
1932     ENTRY( 0x0040, 0xa074, "OB", "Object Binary Identifier", FUNCDCM_NONE ),
1933     ENTRY( 0x0040, 0xa075, "PN", "Documenting Observer", FUNCDCM_NONE ),
1934     ENTRY( 0x0040, 0xa076, "SQ", "Documenting Observer Identifier Code Sequence", FUNCDCM_NONE ),
1935     ENTRY( 0x0040, 0xa078, "SQ", "Observation Subject Identifier Code Sequence", FUNCDCM_NONE ),
1936     ENTRY( 0x0040, 0xa080, "SQ", "Person Identifier Code Sequence", FUNCDCM_NONE ),
1937     ENTRY( 0x0040, 0xa085, "SQ", "Procedure Identifier Code Sequence", FUNCDCM_NONE ),
1938     ENTRY( 0x0040, 0xa088, "LO", "Object Directory String Identifier", FUNCDCM_NONE ),
1939     ENTRY( 0x0040, 0xa089, "OB", "Object Directory Binary Identifier", FUNCDCM_NONE ),
1940     ENTRY( 0x0040, 0xa090, "CS", "History Reliability Qualifier", FUNCDCM_NONE ),
1941     ENTRY( 0x0040, 0xa0a0, "CS", "Referenced Type of Data", FUNCDCM_NONE ),
1942     ENTRY( 0x0040, 0xa0b0, "US", "Referenced Waveform Channels", FUNCDCM_NONE ),
1943     ENTRY( 0x0040, 0xa110, "DA", "Date of Document or Verbal Transaction", FUNCDCM_NONE ),
1944     ENTRY( 0x0040, 0xa112, "TM", "Time of Document Creation or Verbal Transaction", FUNCDCM_NONE ),
1945     ENTRY( 0x0040, 0xa121, "DA", "Date", FUNCDCM_NONE ),
1946     ENTRY( 0x0040, 0xa122, "TM", "Time", FUNCDCM_NONE ),
1947     ENTRY( 0x0040, 0xa123, "PN", "Person Name", FUNCDCM_NONE ),
1948     ENTRY( 0x0040, 0xa124, "SQ", "Referenced Person Sequence", FUNCDCM_NONE ),
1949     ENTRY( 0x0040, 0xa125, "CS", "Report Status ID", FUNCDCM_NONE ),
1950     ENTRY( 0x0040, 0xa130, "CS", "Temporal Range Type", FUNCDCM_NONE ),
1951     ENTRY( 0x0040, 0xa132, "UL", "Referenced Sample Offsets", FUNCDCM_NONE ),
1952     ENTRY( 0x0040, 0xa136, "US", "Referenced Frame Numbers", FUNCDCM_NONE ),
1953     ENTRY( 0x0040, 0xa138, "DS", "Referenced Time Offsets", FUNCDCM_NONE ),
1954     ENTRY( 0x0040, 0xa13a, "DT", "Referenced Datetime", FUNCDCM_NONE ),
1955     ENTRY( 0x0040, 0xa160, "UT", "Text Value", FUNCDCM_NONE ),
1956     ENTRY( 0x0040, 0xa167, "SQ", "Observation Category Code Sequence", FUNCDCM_NONE ),
1957     ENTRY( 0x0040, 0xa168, "SQ", "Concept Code Sequence", FUNCDCM_NONE ),
1958     ENTRY( 0x0040, 0xa16a, "ST", "Bibliographic Citation", FUNCDCM_NONE ),
1959     ENTRY( 0x0040, 0xa170, "CS", "Observation Class", FUNCDCM_NONE ),
1960     ENTRY( 0x0040, 0xa171, "UI", "Observation UID", FUNCDCM_NONE ),
1961     ENTRY( 0x0040, 0xa172, "UI", "Referenced Observation UID", FUNCDCM_NONE ),
1962     ENTRY( 0x0040, 0xa173, "CS", "Referenced Observation Class", FUNCDCM_NONE ),
1963     ENTRY( 0x0040, 0xa174, "CS", "Referenced Object Observation Class", FUNCDCM_NONE ),
1964     ENTRY( 0x0040, 0xa180, "US", "Annotation Group Number", FUNCDCM_NONE ),
1965     ENTRY( 0x0040, 0xa192, "DA", "Observation Date", FUNCDCM_NONE ),
1966     ENTRY( 0x0040, 0xa193, "TM", "Observation Time", FUNCDCM_NONE ),
1967     ENTRY( 0x0040, 0xa194, "CS", "Measurement Automation", FUNCDCM_NONE ),
1968     ENTRY( 0x0040, 0xa195, "SQ", "Concept Name Code Sequence Modifier", FUNCDCM_NONE ),
1969     ENTRY( 0x0040, 0xa224, "ST", "Identification Description", FUNCDCM_NONE ),
1970     ENTRY( 0x0040, 0xa290, "CS", "Coordinates Set Geometric Type", FUNCDCM_NONE ),
1971     ENTRY( 0x0040, 0xa296, "SQ", "Algorithm Code Sequence", FUNCDCM_NONE ),
1972     ENTRY( 0x0040, 0xa297, "ST", "Algorithm Description", FUNCDCM_NONE ),
1973     ENTRY( 0x0040, 0xa29a, "SL", "Pixel Coordinates Set", FUNCDCM_NONE ),
1974     ENTRY( 0x0040, 0xa300, "SQ", "Measured Value Sequence", FUNCDCM_NONE ),
1975     ENTRY( 0x0040, 0xa307, "PN", "Current Observer", FUNCDCM_NONE ),
1976     ENTRY( 0x0040, 0xa30a, "DS", "Numeric Value", FUNCDCM_NONE ),
1977     ENTRY( 0x0040, 0xa313, "SQ", "Referenced Accession Sequence", FUNCDCM_NONE ),
1978     ENTRY( 0x0040, 0xa33a, "ST", "Report Status Comment", FUNCDCM_NONE ),
1979     ENTRY( 0x0040, 0xa340, "SQ", "Procedure Context Sequence", FUNCDCM_NONE ),
1980     ENTRY( 0x0040, 0xa352, "PN", "Verbal Source", FUNCDCM_NONE ),
1981     ENTRY( 0x0040, 0xa353, "ST", "Address", FUNCDCM_NONE ),
1982     ENTRY( 0x0040, 0xa354, "LO", "Telephone Number", FUNCDCM_NONE ),
1983     ENTRY( 0x0040, 0xa358, "SQ", "Verbal Source Identifier Code Sequence", FUNCDCM_NONE ),
1984     ENTRY( 0x0040, 0xa380, "SQ", "Report Detail Sequence", FUNCDCM_NONE ),
1985     ENTRY( 0x0040, 0xa402, "UI", "Observation Subject UID", FUNCDCM_NONE ),
1986     ENTRY( 0x0040, 0xa403, "CS", "Observation Subject Class", FUNCDCM_NONE ),
1987     ENTRY( 0x0040, 0xa404, "SQ", "Observation Subject Type Code Sequence", FUNCDCM_NONE ),
1988     ENTRY( 0x0040, 0xa600, "CS", "Observation Subject Context Flag", FUNCDCM_NONE ),
1989     ENTRY( 0x0040, 0xa601, "CS", "Observer Context Flag", FUNCDCM_NONE ),
1990     ENTRY( 0x0040, 0xa603, "CS", "Procedure Context Flag", FUNCDCM_NONE ),
1991     ENTRY( 0x0040, 0xa730, "SQ", "Observations Sequence", FUNCDCM_NONE ),
1992     ENTRY( 0x0040, 0xa731, "SQ", "Relationship Sequence", FUNCDCM_NONE ),
1993     ENTRY( 0x0040, 0xa732, "SQ", "Relationship Type Code Sequence", FUNCDCM_NONE ),
1994     ENTRY( 0x0040, 0xa744, "SQ", "Language Code Sequence", FUNCDCM_NONE ),
1995     ENTRY( 0x0040, 0xa992, "ST", "Uniform Resource Locator", FUNCDCM_NONE ),
1996     ENTRY( 0x0040, 0xb020, "SQ", "Annotation Sequence", FUNCDCM_NONE ),
1997     ENTRY( 0x0040, 0xdb73, "SQ", "Relationship Type Code Sequence Modifier", FUNCDCM_NONE ),
1998     ENTRY( 0x0041, 0x0000, "LT", "Papyrus Comments", FUNCDCM_NONE ),
1999     ENTRY( 0x0041, 0x0010, "xs", "?", FUNCDCM_NONE ),
2000     ENTRY( 0x0041, 0x0011, "xs", "?", FUNCDCM_NONE ),
2001     ENTRY( 0x0041, 0x0012, "UL", "Pixel Offset", FUNCDCM_NONE ),
2002     ENTRY( 0x0041, 0x0013, "SQ", "Image Identifier Sequence", FUNCDCM_NONE ),
2003     ENTRY( 0x0041, 0x0014, "SQ", "External File Reference Sequence", FUNCDCM_NONE ),
2004     ENTRY( 0x0041, 0x0015, "US", "Number of Images", FUNCDCM_NONE ),
2005     ENTRY( 0x0041, 0x0020, "xs", "?", FUNCDCM_NONE ),
2006     ENTRY( 0x0041, 0x0021, "UI", "Referenced SOP Class UID", FUNCDCM_NONE ),
2007     ENTRY( 0x0041, 0x0022, "UI", "Referenced SOP Instance UID", FUNCDCM_NONE ),
2008     ENTRY( 0x0041, 0x0030, "xs", "?", FUNCDCM_NONE ),
2009     ENTRY( 0x0041, 0x0031, "xs", "?", FUNCDCM_NONE ),
2010     ENTRY( 0x0041, 0x0032, "xs", "?", FUNCDCM_NONE ),
2011     ENTRY( 0x0041, 0x0034, "DA", "Modified Date", FUNCDCM_NONE ),
2012     ENTRY( 0x0041, 0x0036, "TM", "Modified Time", FUNCDCM_NONE ),
2013     ENTRY( 0x0041, 0x0040, "LT", "Owner Name", FUNCDCM_NONE ),
2014     ENTRY( 0x0041, 0x0041, "UI", "Referenced Image SOP Class UID", FUNCDCM_NONE ),
2015     ENTRY( 0x0041, 0x0042, "UI", "Referenced Image SOP Instance UID", FUNCDCM_NONE ),
2016     ENTRY( 0x0041, 0x0050, "xs", "?", FUNCDCM_NONE ),
2017     ENTRY( 0x0041, 0x0060, "UL", "Number of Images", FUNCDCM_NONE ),
2018     ENTRY( 0x0041, 0x0062, "UL", "Number of Other", FUNCDCM_NONE ),
2019     ENTRY( 0x0041, 0x00a0, "LT", "External Folder Element DSID", FUNCDCM_NONE ),
2020     ENTRY( 0x0041, 0x00a1, "US", "External Folder Element Data Set Type", FUNCDCM_NONE ),
2021     ENTRY( 0x0041, 0x00a2, "LT", "External Folder Element File Location", FUNCDCM_NONE ),
2022     ENTRY( 0x0041, 0x00a3, "UL", "External Folder Element Length", FUNCDCM_NONE ),
2023     ENTRY( 0x0041, 0x00b0, "LT", "Internal Folder Element DSID", FUNCDCM_NONE ),
2024     ENTRY( 0x0041, 0x00b1, "US", "Internal Folder Element Data Set Type", FUNCDCM_NONE ),
2025     ENTRY( 0x0041, 0x00b2, "UL", "Internal Offset To Data Set", FUNCDCM_NONE ),
2026     ENTRY( 0x0041, 0x00b3, "UL", "Internal Offset To Image", FUNCDCM_NONE ),
2027     ENTRY( 0x0043, 0x0001, "SS", "Bitmap Of Prescan Options", FUNCDCM_NONE ),
2028     ENTRY( 0x0043, 0x0002, "SS", "Gradient Offset In X", FUNCDCM_NONE ),
2029     ENTRY( 0x0043, 0x0003, "SS", "Gradient Offset In Y", FUNCDCM_NONE ),
2030     ENTRY( 0x0043, 0x0004, "SS", "Gradient Offset In Z", FUNCDCM_NONE ),
2031     ENTRY( 0x0043, 0x0005, "SS", "Image Is Original Or Unoriginal", FUNCDCM_NONE ),
2032     ENTRY( 0x0043, 0x0006, "SS", "Number Of EPI Shots", FUNCDCM_NONE ),
2033     ENTRY( 0x0043, 0x0007, "SS", "Views Per Segment", FUNCDCM_NONE ),
2034     ENTRY( 0x0043, 0x0008, "SS", "Respiratory Rate In BPM", FUNCDCM_NONE ),
2035     ENTRY( 0x0043, 0x0009, "SS", "Respiratory Trigger Point", FUNCDCM_NONE ),
2036     ENTRY( 0x0043, 0x000a, "SS", "Type Of Receiver Used", FUNCDCM_NONE ),
2037     ENTRY( 0x0043, 0x000b, "DS", "Peak Rate Of Change Of Gradient Field", FUNCDCM_NONE ),
2038     ENTRY( 0x0043, 0x000c, "DS", "Limits In Units Of Percent", FUNCDCM_NONE ),
2039     ENTRY( 0x0043, 0x000d, "DS", "PSD Estimated Limit", FUNCDCM_NONE ),
2040     ENTRY( 0x0043, 0x000e, "DS", "PSD Estimated Limit In Tesla Per Second", FUNCDCM_NONE ),
2041     ENTRY( 0x0043, 0x000f, "DS", "SAR Avg Head", FUNCDCM_NONE ),
2042     ENTRY( 0x0043, 0x0010, "US", "Window Value", FUNCDCM_NONE ),
2043     ENTRY( 0x0043, 0x0011, "US", "Total Input Views", FUNCDCM_NONE ),
2044     ENTRY( 0x0043, 0x0012, "SS", "Xray Chain", FUNCDCM_NONE ),
2045     ENTRY( 0x0043, 0x0013, "SS", "Recon Kernel Parameters", FUNCDCM_NONE ),
2046     ENTRY( 0x0043, 0x0014, "SS", "Calibration Parameters", FUNCDCM_NONE ),
2047     ENTRY( 0x0043, 0x0015, "SS", "Total Output Views", FUNCDCM_NONE ),
2048     ENTRY( 0x0043, 0x0016, "SS", "Number Of Overranges", FUNCDCM_NONE ),
2049     ENTRY( 0x0043, 0x0017, "DS", "IBH Image Scale Factors", FUNCDCM_NONE ),
2050     ENTRY( 0x0043, 0x0018, "DS", "BBH Coefficients", FUNCDCM_NONE ),
2051     ENTRY( 0x0043, 0x0019, "SS", "Number Of BBH Chains To Blend", FUNCDCM_NONE ),
2052     ENTRY( 0x0043, 0x001a, "SL", "Starting Channel Number", FUNCDCM_NONE ),
2053     ENTRY( 0x0043, 0x001b, "SS", "PPScan Parameters", FUNCDCM_NONE ),
2054     ENTRY( 0x0043, 0x001c, "SS", "GE Image Integrity", FUNCDCM_NONE ),
2055     ENTRY( 0x0043, 0x001d, "SS", "Level Value", FUNCDCM_NONE ),
2056     ENTRY( 0x0043, 0x001e, "xs", "?", FUNCDCM_NONE ),
2057     ENTRY( 0x0043, 0x001f, "SL", "Max Overranges In A View", FUNCDCM_NONE ),
2058     ENTRY( 0x0043, 0x0020, "DS", "Avg Overranges All Views", FUNCDCM_NONE ),
2059     ENTRY( 0x0043, 0x0021, "SS", "Corrected Afterglow Terms", FUNCDCM_NONE ),
2060     ENTRY( 0x0043, 0x0025, "SS", "Reference Channels", FUNCDCM_NONE ),
2061     ENTRY( 0x0043, 0x0026, "US", "No Views Ref Channels Blocked", FUNCDCM_NONE ),
2062     ENTRY( 0x0043, 0x0027, "xs", "?", FUNCDCM_NONE ),
2063     ENTRY( 0x0043, 0x0028, "OB", "Unique Image Identifier", FUNCDCM_NONE ),
2064     ENTRY( 0x0043, 0x0029, "OB", "Histogram Tables", FUNCDCM_NONE ),
2065     ENTRY( 0x0043, 0x002a, "OB", "User Defined Data", FUNCDCM_NONE ),
2066     ENTRY( 0x0043, 0x002b, "SS", "Private Scan Options", FUNCDCM_NONE ),
2067     ENTRY( 0x0043, 0x002c, "SS", "Effective Echo Spacing", FUNCDCM_NONE ),
2068     ENTRY( 0x0043, 0x002d, "SH", "String Slop Field 1", FUNCDCM_NONE ),
2069     ENTRY( 0x0043, 0x002e, "SH", "String Slop Field 2", FUNCDCM_NONE ),
2070     ENTRY( 0x0043, 0x002f, "SS", "Raw Data Type", FUNCDCM_NONE ),
2071     ENTRY( 0x0043, 0x0030, "SS", "Raw Data Type", FUNCDCM_NONE ),
2072     ENTRY( 0x0043, 0x0031, "DS", "RA Coord Of Target Recon Centre", FUNCDCM_NONE ),
2073     ENTRY( 0x0043, 0x0032, "SS", "Raw Data Type", FUNCDCM_NONE ),
2074     ENTRY( 0x0043, 0x0033, "FL", "Neg Scan Spacing", FUNCDCM_NONE ),
2075     ENTRY( 0x0043, 0x0034, "IS", "Offset Frequency", FUNCDCM_NONE ),
2076     ENTRY( 0x0043, 0x0035, "UL", "User Usage Tag", FUNCDCM_NONE ),
2077     ENTRY( 0x0043, 0x0036, "UL", "User Fill Map MSW", FUNCDCM_NONE ),
2078     ENTRY( 0x0043, 0x0037, "UL", "User Fill Map LSW", FUNCDCM_NONE ),
2079     ENTRY( 0x0043, 0x0038, "FL", "User 25 To User 48", FUNCDCM_NONE ),
2080     ENTRY( 0x0043, 0x0039, "IS", "Slop Integer 6 To Slop Integer 9", FUNCDCM_NONE ),
2081     ENTRY( 0x0043, 0x0040, "FL", "Trigger On Position", FUNCDCM_NONE ),
2082     ENTRY( 0x0043, 0x0041, "FL", "Degree Of Rotation", FUNCDCM_NONE ),
2083     ENTRY( 0x0043, 0x0042, "SL", "DAS Trigger Source", FUNCDCM_NONE ),
2084     ENTRY( 0x0043, 0x0043, "SL", "DAS Fpa Gain", FUNCDCM_NONE ),
2085     ENTRY( 0x0043, 0x0044, "SL", "DAS Output Source", FUNCDCM_NONE ),
2086     ENTRY( 0x0043, 0x0045, "SL", "DAS Ad Input", FUNCDCM_NONE ),
2087     ENTRY( 0x0043, 0x0046, "SL", "DAS Cal Mode", FUNCDCM_NONE ),
2088     ENTRY( 0x0043, 0x0047, "SL", "DAS Cal Frequency", FUNCDCM_NONE ),
2089     ENTRY( 0x0043, 0x0048, "SL", "DAS Reg Xm", FUNCDCM_NONE ),
2090     ENTRY( 0x0043, 0x0049, "SL", "DAS Auto Zero", FUNCDCM_NONE ),
2091     ENTRY( 0x0043, 0x004a, "SS", "Starting Channel Of View", FUNCDCM_NONE ),
2092     ENTRY( 0x0043, 0x004b, "SL", "DAS Xm Pattern", FUNCDCM_NONE ),
2093     ENTRY( 0x0043, 0x004c, "SS", "TGGC Trigger Mode", FUNCDCM_NONE ),
2094     ENTRY( 0x0043, 0x004d, "FL", "Start Scan To Xray On Delay", FUNCDCM_NONE ),
2095     ENTRY( 0x0043, 0x004e, "FL", "Duration Of Xray On", FUNCDCM_NONE ),
2096     ENTRY( 0x0044, 0x0000, "UI", "?", FUNCDCM_NONE ),
2097     ENTRY( 0x0045, 0x0004, "CS", "AES", FUNCDCM_NONE ),
2098     ENTRY( 0x0045, 0x0006, "DS", "Angulation", FUNCDCM_NONE ),
2099     ENTRY( 0x0045, 0x0009, "DS", "Real Magnification Factor", FUNCDCM_NONE ),
2100     ENTRY( 0x0045, 0x000b, "CS", "Senograph Type", FUNCDCM_NONE ),
2101     ENTRY( 0x0045, 0x000c, "DS", "Integration Time", FUNCDCM_NONE ),
2102     ENTRY( 0x0045, 0x000d, "DS", "ROI Origin X and Y", FUNCDCM_NONE ),
2103     ENTRY( 0x0045, 0x0011, "DS", "Receptor Size cm X and Y", FUNCDCM_NONE ),
2104     ENTRY( 0x0045, 0x0012, "IS", "Receptor Size Pixels X and Y", FUNCDCM_NONE ),
2105     ENTRY( 0x0045, 0x0013, "ST", "Screen", FUNCDCM_NONE ),
2106     ENTRY( 0x0045, 0x0014, "DS", "Pixel Pitch Microns", FUNCDCM_NONE ),
2107     ENTRY( 0x0045, 0x0015, "IS", "Pixel Depth Bits", FUNCDCM_NONE ),
2108     ENTRY( 0x0045, 0x0016, "IS", "Binning Factor X and Y", FUNCDCM_NONE ),
2109     ENTRY( 0x0045, 0x001b, "CS", "Clinical View", FUNCDCM_NONE ),
2110     ENTRY( 0x0045, 0x001d, "DS", "Mean Of Raw Gray Levels", FUNCDCM_NONE ),
2111     ENTRY( 0x0045, 0x001e, "DS", "Mean Of Offset Gray Levels", FUNCDCM_NONE ),
2112     ENTRY( 0x0045, 0x001f, "DS", "Mean Of Corrected Gray Levels", FUNCDCM_NONE ),
2113     ENTRY( 0x0045, 0x0020, "DS", "Mean Of Region Gray Levels", FUNCDCM_NONE ),
2114     ENTRY( 0x0045, 0x0021, "DS", "Mean Of Log Region Gray Levels", FUNCDCM_NONE ),
2115     ENTRY( 0x0045, 0x0022, "DS", "Standard Deviation Of Raw Gray Levels", FUNCDCM_NONE ),
2116     ENTRY( 0x0045, 0x0023, "DS", "Standard Deviation Of Corrected Gray Levels", FUNCDCM_NONE ),
2117     ENTRY( 0x0045, 0x0024, "DS", "Standard Deviation Of Region Gray Levels", FUNCDCM_NONE ),
2118     ENTRY( 0x0045, 0x0025, "DS", "Standard Deviation Of Log Region Gray Levels", FUNCDCM_NONE ),
2119     ENTRY( 0x0045, 0x0026, "OB", "MAO Buffer", FUNCDCM_NONE ),
2120     ENTRY( 0x0045, 0x0027, "IS", "Set Number", FUNCDCM_NONE ),
2121     ENTRY( 0x0045, 0x0028, "CS", "WindowingType (LINEAR or GAMMA)", FUNCDCM_NONE ),
2122     ENTRY( 0x0045, 0x0029, "DS", "WindowingParameters", FUNCDCM_NONE ),
2123     ENTRY( 0x0045, 0x002a, "IS", "Crosshair Cursor X Coordinates", FUNCDCM_NONE ),
2124     ENTRY( 0x0045, 0x002b, "IS", "Crosshair Cursor Y Coordinates", FUNCDCM_NONE ),
2125     ENTRY( 0x0045, 0x0039, "US", "Vignette Rows", FUNCDCM_NONE ),
2126     ENTRY( 0x0045, 0x003a, "US", "Vignette Columns", FUNCDCM_NONE ),
2127     ENTRY( 0x0045, 0x003b, "US", "Vignette Bits Allocated", FUNCDCM_NONE ),
2128     ENTRY( 0x0045, 0x003c, "US", "Vignette Bits Stored", FUNCDCM_NONE ),
2129     ENTRY( 0x0045, 0x003d, "US", "Vignette High Bit", FUNCDCM_NONE ),
2130     ENTRY( 0x0045, 0x003e, "US", "Vignette Pixel Representation", FUNCDCM_NONE ),
2131     ENTRY( 0x0045, 0x003f, "OB", "Vignette Pixel Data", FUNCDCM_NONE ),
2132     ENTRY( 0x0047, 0x0001, "SQ", "Reconstruction Parameters Sequence", FUNCDCM_NONE ),
2133     ENTRY( 0x0047, 0x0050, "UL", "Volume Voxel Count", FUNCDCM_NONE ),
2134     ENTRY( 0x0047, 0x0051, "UL", "Volume Segment Count", FUNCDCM_NONE ),
2135     ENTRY( 0x0047, 0x0053, "US", "Volume Slice Size", FUNCDCM_NONE ),
2136     ENTRY( 0x0047, 0x0054, "US", "Volume Slice Count", FUNCDCM_NONE ),
2137     ENTRY( 0x0047, 0x0055, "SL", "Volume Threshold Value", FUNCDCM_NONE ),
2138     ENTRY( 0x0047, 0x0057, "DS", "Volume Voxel Ratio", FUNCDCM_NONE ),
2139     ENTRY( 0x0047, 0x0058, "DS", "Volume Voxel Size", FUNCDCM_NONE ),
2140     ENTRY( 0x0047, 0x0059, "US", "Volume Z Position Size", FUNCDCM_NONE ),
2141     ENTRY( 0x0047, 0x0060, "DS", "Volume Base Line", FUNCDCM_NONE ),
2142     ENTRY( 0x0047, 0x0061, "DS", "Volume Center Point", FUNCDCM_NONE ),
2143     ENTRY( 0x0047, 0x0063, "SL", "Volume Skew Base", FUNCDCM_NONE ),
2144     ENTRY( 0x0047, 0x0064, "DS", "Volume Registration Transform Rotation Matrix", FUNCDCM_NONE ),
2145     ENTRY( 0x0047, 0x0065, "DS", "Volume Registration Transform Translation Vector", FUNCDCM_NONE ),
2146     ENTRY( 0x0047, 0x0070, "DS", "KVP List", FUNCDCM_NONE ),
2147     ENTRY( 0x0047, 0x0071, "IS", "XRay Tube Current List", FUNCDCM_NONE ),
2148     ENTRY( 0x0047, 0x0072, "IS", "Exposure List", FUNCDCM_NONE ),
2149     ENTRY( 0x0047, 0x0080, "LO", "Acquisition DLX Identifier", FUNCDCM_NONE ),
2150     ENTRY( 0x0047, 0x0085, "SQ", "Acquisition DLX 2D Series Sequence", FUNCDCM_NONE ),
2151     ENTRY( 0x0047, 0x0089, "DS", "Contrast Agent Volume List", FUNCDCM_NONE ),
2152     ENTRY( 0x0047, 0x008a, "US", "Number Of Injections", FUNCDCM_NONE ),
2153     ENTRY( 0x0047, 0x008b, "US", "Frame Count", FUNCDCM_NONE ),
2154     ENTRY( 0x0047, 0x0096, "IS", "Used Frames", FUNCDCM_NONE ),
2155     ENTRY( 0x0047, 0x0091, "LO", "XA 3D Reconstruction Algorithm Name", FUNCDCM_NONE ),
2156     ENTRY( 0x0047, 0x0092, "CS", "XA 3D Reconstruction Algorithm Version", FUNCDCM_NONE ),
2157     ENTRY( 0x0047, 0x0093, "DA", "DLX Calibration Date", FUNCDCM_NONE ),
2158     ENTRY( 0x0047, 0x0094, "TM", "DLX Calibration Time", FUNCDCM_NONE ),
2159     ENTRY( 0x0047, 0x0095, "CS", "DLX Calibration Status", FUNCDCM_NONE ),
2160     ENTRY( 0x0047, 0x0098, "US", "Transform Count", FUNCDCM_NONE ),
2161     ENTRY( 0x0047, 0x0099, "SQ", "Transform Sequence", FUNCDCM_NONE ),
2162     ENTRY( 0x0047, 0x009a, "DS", "Transform Rotation Matrix", FUNCDCM_NONE ),
2163     ENTRY( 0x0047, 0x009b, "DS", "Transform Translation Vector", FUNCDCM_NONE ),
2164     ENTRY( 0x0047, 0x009c, "LO", "Transform Label", FUNCDCM_NONE ),
2165     ENTRY( 0x0047, 0x00b1, "US", "Wireframe Count", FUNCDCM_NONE ),
2166     ENTRY( 0x0047, 0x00b2, "US", "Location System", FUNCDCM_NONE ),
2167     ENTRY( 0x0047, 0x00b0, "SQ", "Wireframe List", FUNCDCM_NONE ),
2168     ENTRY( 0x0047, 0x00b5, "LO", "Wireframe Name", FUNCDCM_NONE ),
2169     ENTRY( 0x0047, 0x00b6, "LO", "Wireframe Group Name", FUNCDCM_NONE ),
2170     ENTRY( 0x0047, 0x00b7, "LO", "Wireframe Color", FUNCDCM_NONE ),
2171     ENTRY( 0x0047, 0x00b8, "SL", "Wireframe Attributes", FUNCDCM_NONE ),
2172     ENTRY( 0x0047, 0x00b9, "SL", "Wireframe Point Count", FUNCDCM_NONE ),
2173     ENTRY( 0x0047, 0x00ba, "SL", "Wireframe Timestamp", FUNCDCM_NONE ),
2174     ENTRY( 0x0047, 0x00bb, "SQ", "Wireframe Point List", FUNCDCM_NONE ),
2175     ENTRY( 0x0047, 0x00bc, "DS", "Wireframe Points Coordinates", FUNCDCM_NONE ),
2176     ENTRY( 0x0047, 0x00c0, "DS", "Volume Upper Left High Corner RAS", FUNCDCM_NONE ),
2177     ENTRY( 0x0047, 0x00c1, "DS", "Volume Slice To RAS Rotation Matrix", FUNCDCM_NONE ),
2178     ENTRY( 0x0047, 0x00c2, "DS", "Volume Upper Left High Corner TLOC", FUNCDCM_NONE ),
2179     ENTRY( 0x0047, 0x00d1, "OB", "Volume Segment List", FUNCDCM_NONE ),
2180     ENTRY( 0x0047, 0x00d2, "OB", "Volume Gradient List", FUNCDCM_NONE ),
2181     ENTRY( 0x0047, 0x00d3, "OB", "Volume Density List", FUNCDCM_NONE ),
2182     ENTRY( 0x0047, 0x00d4, "OB", "Volume Z Position List", FUNCDCM_NONE ),
2183     ENTRY( 0x0047, 0x00d5, "OB", "Volume Original Index List", FUNCDCM_NONE ),
2184     ENTRY( 0x0050, 0x0000, "UL", "Calibration Group Length", FUNCDCM_NONE ),
2185     ENTRY( 0x0050, 0x0004, "CS", "Calibration Object", FUNCDCM_NONE ),
2186     ENTRY( 0x0050, 0x0010, "SQ", "DeviceSequence", FUNCDCM_NONE ),
2187     ENTRY( 0x0050, 0x0014, "DS", "DeviceLength", FUNCDCM_NONE ),
2188     ENTRY( 0x0050, 0x0016, "DS", "DeviceDiameter", FUNCDCM_NONE ),
2189     ENTRY( 0x0050, 0x0017, "CS", "DeviceDiameterUnits", FUNCDCM_NONE ),
2190     ENTRY( 0x0050, 0x0018, "DS", "DeviceVolume", FUNCDCM_NONE ),
2191     ENTRY( 0x0050, 0x0019, "DS", "InterMarkerDistance", FUNCDCM_NONE ),
2192     ENTRY( 0x0050, 0x0020, "LO", "DeviceDescription", FUNCDCM_NONE ),
2193     ENTRY( 0x0050, 0x0030, "SQ", "CodedInterventionDeviceSequence", FUNCDCM_NONE ),
2194     ENTRY( 0x0051, 0x0010, "xs", "Image Text", FUNCDCM_NONE ),
2195     ENTRY( 0x0054, 0x0000, "UL", "Nuclear Acquisition Group Length", FUNCDCM_NONE ),
2196     ENTRY( 0x0054, 0x0010, "US", "Energy Window Vector", FUNCDCM_NONE ),
2197     ENTRY( 0x0054, 0x0011, "US", "Number of Energy Windows", FUNCDCM_NONE ),
2198     ENTRY( 0x0054, 0x0012, "SQ", "Energy Window Information Sequence", FUNCDCM_NONE ),
2199     ENTRY( 0x0054, 0x0013, "SQ", "Energy Window Range Sequence", FUNCDCM_NONE ),
2200     ENTRY( 0x0054, 0x0014, "DS", "Energy Window Lower Limit", FUNCDCM_NONE ),
2201     ENTRY( 0x0054, 0x0015, "DS", "Energy Window Upper Limit", FUNCDCM_NONE ),
2202     ENTRY( 0x0054, 0x0016, "SQ", "Radiopharmaceutical Information Sequence", FUNCDCM_NONE ),
2203     ENTRY( 0x0054, 0x0017, "IS", "Residual Syringe Counts", FUNCDCM_NONE ),
2204     ENTRY( 0x0054, 0x0018, "SH", "Energy Window Name", FUNCDCM_NONE ),
2205     ENTRY( 0x0054, 0x0020, "US", "Detector Vector", FUNCDCM_NONE ),
2206     ENTRY( 0x0054, 0x0021, "US", "Number of Detectors", FUNCDCM_NONE ),
2207     ENTRY( 0x0054, 0x0022, "SQ", "Detector Information Sequence", FUNCDCM_NONE ),
2208     ENTRY( 0x0054, 0x0030, "US", "Phase Vector", FUNCDCM_NONE ),
2209     ENTRY( 0x0054, 0x0031, "US", "Number of Phases", FUNCDCM_NONE ),
2210     ENTRY( 0x0054, 0x0032, "SQ", "Phase Information Sequence", FUNCDCM_NONE ),
2211     ENTRY( 0x0054, 0x0033, "US", "Number of Frames In Phase", FUNCDCM_NONE ),
2212     ENTRY( 0x0054, 0x0036, "IS", "Phase Delay", FUNCDCM_NONE ),
2213     ENTRY( 0x0054, 0x0038, "IS", "Pause Between Frames", FUNCDCM_NONE ),
2214     ENTRY( 0x0054, 0x0050, "US", "Rotation Vector", FUNCDCM_NONE ),
2215     ENTRY( 0x0054, 0x0051, "US", "Number of Rotations", FUNCDCM_NONE ),
2216     ENTRY( 0x0054, 0x0052, "SQ", "Rotation Information Sequence", FUNCDCM_NONE ),
2217     ENTRY( 0x0054, 0x0053, "US", "Number of Frames In Rotation", FUNCDCM_NONE ),
2218     ENTRY( 0x0054, 0x0060, "US", "R-R Interval Vector", FUNCDCM_NONE ),
2219     ENTRY( 0x0054, 0x0061, "US", "Number of R-R Intervals", FUNCDCM_NONE ),
2220     ENTRY( 0x0054, 0x0062, "SQ", "Gated Information Sequence", FUNCDCM_NONE ),
2221     ENTRY( 0x0054, 0x0063, "SQ", "Data Information Sequence", FUNCDCM_NONE ),
2222     ENTRY( 0x0054, 0x0070, "US", "Time Slot Vector", FUNCDCM_NONE ),
2223     ENTRY( 0x0054, 0x0071, "US", "Number of Time Slots", FUNCDCM_NONE ),
2224     ENTRY( 0x0054, 0x0072, "SQ", "Time Slot Information Sequence", FUNCDCM_NONE ),
2225     ENTRY( 0x0054, 0x0073, "DS", "Time Slot Time", FUNCDCM_NONE ),
2226     ENTRY( 0x0054, 0x0080, "US", "Slice Vector", FUNCDCM_NONE ),
2227     ENTRY( 0x0054, 0x0081, "US", "Number of Slices", FUNCDCM_NONE ),
2228     ENTRY( 0x0054, 0x0090, "US", "Angular View Vector", FUNCDCM_NONE ),
2229     ENTRY( 0x0054, 0x0100, "US", "Time Slice Vector", FUNCDCM_NONE ),
2230     ENTRY( 0x0054, 0x0101, "US", "Number Of Time Slices", FUNCDCM_NONE ),
2231     ENTRY( 0x0054, 0x0200, "DS", "Start Angle", FUNCDCM_NONE ),
2232     ENTRY( 0x0054, 0x0202, "CS", "Type of Detector Motion", FUNCDCM_NONE ),
2233     ENTRY( 0x0054, 0x0210, "IS", "Trigger Vector", FUNCDCM_NONE ),
2234     ENTRY( 0x0054, 0x0211, "US", "Number of Triggers in Phase", FUNCDCM_NONE ),
2235     ENTRY( 0x0054, 0x0220, "SQ", "View Code Sequence", FUNCDCM_NONE ),
2236     ENTRY( 0x0054, 0x0222, "SQ", "View Modifier Code Sequence", FUNCDCM_NONE ),
2237     ENTRY( 0x0054, 0x0300, "SQ", "Radionuclide Code Sequence", FUNCDCM_NONE ),
2238     ENTRY( 0x0054, 0x0302, "SQ", "Radiopharmaceutical Route Code Sequence", FUNCDCM_NONE ),
2239     ENTRY( 0x0054, 0x0304, "SQ", "Radiopharmaceutical Code Sequence", FUNCDCM_NONE ),
2240     ENTRY( 0x0054, 0x0306, "SQ", "Calibration Data Sequence", FUNCDCM_NONE ),
2241     ENTRY( 0x0054, 0x0308, "US", "Energy Window Number", FUNCDCM_NONE ),
2242     ENTRY( 0x0054, 0x0400, "SH", "Image ID", FUNCDCM_NONE ),
2243     ENTRY( 0x0054, 0x0410, "SQ", "Patient Orientation Code Sequence", FUNCDCM_NONE ),
2244     ENTRY( 0x0054, 0x0412, "SQ", "Patient Orientation Modifier Code Sequence", FUNCDCM_NONE ),
2245     ENTRY( 0x0054, 0x0414, "SQ", "Patient Gantry Relationship Code Sequence", FUNCDCM_NONE ),
2246     ENTRY( 0x0054, 0x1000, "CS", "Positron Emission Tomography Series Type", FUNCDCM_NONE ),
2247     ENTRY( 0x0054, 0x1001, "CS", "Positron Emission Tomography Units", FUNCDCM_NONE ),
2248     ENTRY( 0x0054, 0x1002, "CS", "Counts Source", FUNCDCM_NONE ),
2249     ENTRY( 0x0054, 0x1004, "CS", "Reprojection Method", FUNCDCM_NONE ),
2250     ENTRY( 0x0054, 0x1100, "CS", "Randoms Correction Method", FUNCDCM_NONE ),
2251     ENTRY( 0x0054, 0x1101, "LO", "Attenuation Correction Method", FUNCDCM_NONE ),
2252     ENTRY( 0x0054, 0x1102, "CS", "Decay Correction", FUNCDCM_NONE ),
2253     ENTRY( 0x0054, 0x1103, "LO", "Reconstruction Method", FUNCDCM_NONE ),
2254     ENTRY( 0x0054, 0x1104, "LO", "Detector Lines of Response Used", FUNCDCM_NONE ),
2255     ENTRY( 0x0054, 0x1105, "LO", "Scatter Correction Method", FUNCDCM_NONE ),
2256     ENTRY( 0x0054, 0x1200, "DS", "Axial Acceptance", FUNCDCM_NONE ),
2257     ENTRY( 0x0054, 0x1201, "IS", "Axial Mash", FUNCDCM_NONE ),
2258     ENTRY( 0x0054, 0x1202, "IS", "Transverse Mash", FUNCDCM_NONE ),
2259     ENTRY( 0x0054, 0x1203, "DS", "Detector Element Size", FUNCDCM_NONE ),
2260     ENTRY( 0x0054, 0x1210, "DS", "Coincidence Window Width", FUNCDCM_NONE ),
2261     ENTRY( 0x0054, 0x1220, "CS", "Secondary Counts Type", FUNCDCM_NONE ),
2262     ENTRY( 0x0054, 0x1300, "DS", "Frame Reference Time", FUNCDCM_NONE ),
2263     ENTRY( 0x0054, 0x1310, "IS", "Primary Prompts Counts Accumulated", FUNCDCM_NONE ),
2264     ENTRY( 0x0054, 0x1311, "IS", "Secondary Counts Accumulated", FUNCDCM_NONE ),
2265     ENTRY( 0x0054, 0x1320, "DS", "Slice Sensitivity Factor", FUNCDCM_NONE ),
2266     ENTRY( 0x0054, 0x1321, "DS", "Decay Factor", FUNCDCM_NONE ),
2267     ENTRY( 0x0054, 0x1322, "DS", "Dose Calibration Factor", FUNCDCM_NONE ),
2268     ENTRY( 0x0054, 0x1323, "DS", "Scatter Fraction Factor", FUNCDCM_NONE ),
2269     ENTRY( 0x0054, 0x1324, "DS", "Dead Time Factor", FUNCDCM_NONE ),
2270     ENTRY( 0x0054, 0x1330, "US", "Image Index", FUNCDCM_NONE ),
2271     ENTRY( 0x0054, 0x1400, "CS", "Counts Included", FUNCDCM_NONE ),
2272     ENTRY( 0x0054, 0x1401, "CS", "Dead Time Correction Flag", FUNCDCM_NONE ),
2273     ENTRY( 0x0055, 0x0046, "LT", "Current Ward", FUNCDCM_NONE ),
2274     ENTRY( 0x0058, 0x0000, "SQ", "?", FUNCDCM_NONE ),
2275     ENTRY( 0x0060, 0x3000, "SQ", "Histogram Sequence", FUNCDCM_NONE ),
2276     ENTRY( 0x0060, 0x3002, "US", "Histogram Number of Bins", FUNCDCM_NONE ),
2277     ENTRY( 0x0060, 0x3004, "xs", "Histogram First Bin Value", FUNCDCM_NONE ),
2278     ENTRY( 0x0060, 0x3006, "xs", "Histogram Last Bin Value", FUNCDCM_NONE ),
2279     ENTRY( 0x0060, 0x3008, "US", "Histogram Bin Width", FUNCDCM_NONE ),
2280     ENTRY( 0x0060, 0x3010, "LO", "Histogram Explanation", FUNCDCM_NONE ),
2281     ENTRY( 0x0060, 0x3020, "UL", "Histogram Data", FUNCDCM_NONE ),
2282     ENTRY( 0x0070, 0x0001, "SQ", "Graphic Annotation Sequence", FUNCDCM_NONE ),
2283     ENTRY( 0x0070, 0x0002, "CS", "Graphic Layer", FUNCDCM_NONE ),
2284     ENTRY( 0x0070, 0x0003, "CS", "Bounding Box Annotation Units", FUNCDCM_NONE ),
2285     ENTRY( 0x0070, 0x0004, "CS", "Anchor Point Annotation Units", FUNCDCM_NONE ),
2286     ENTRY( 0x0070, 0x0005, "CS", "Graphic Annotation Units", FUNCDCM_NONE ),
2287     ENTRY( 0x0070, 0x0006, "ST", "Unformatted Text Value", FUNCDCM_NONE ),
2288     ENTRY( 0x0070, 0x0008, "SQ", "Text Object Sequence", FUNCDCM_NONE ),
2289     ENTRY( 0x0070, 0x0009, "SQ", "Graphic Object Sequence", FUNCDCM_NONE ),
2290     ENTRY( 0x0070, 0x0010, "FL", "Bounding Box TLHC", FUNCDCM_NONE ),
2291     ENTRY( 0x0070, 0x0011, "FL", "Bounding Box BRHC", FUNCDCM_NONE ),
2292     ENTRY( 0x0070, 0x0014, "FL", "Anchor Point", FUNCDCM_NONE ),
2293     ENTRY( 0x0070, 0x0015, "CS", "Anchor Point Visibility", FUNCDCM_NONE ),
2294     ENTRY( 0x0070, 0x0020, "US", "Graphic Dimensions", FUNCDCM_NONE ),
2295     ENTRY( 0x0070, 0x0021, "US", "Number Of Graphic Points", FUNCDCM_NONE ),
2296     ENTRY( 0x0070, 0x0022, "FL", "Graphic Data", FUNCDCM_NONE ),
2297     ENTRY( 0x0070, 0x0023, "CS", "Graphic Type", FUNCDCM_NONE ),
2298     ENTRY( 0x0070, 0x0024, "CS", "Graphic Filled", FUNCDCM_NONE ),
2299     ENTRY( 0x0070, 0x0040, "IS", "Image Rotation", FUNCDCM_NONE ),
2300     ENTRY( 0x0070, 0x0041, "CS", "Image Horizontal Flip", FUNCDCM_NONE ),
2301     ENTRY( 0x0070, 0x0050, "US", "Displayed Area TLHC", FUNCDCM_NONE ),
2302     ENTRY( 0x0070, 0x0051, "US", "Displayed Area BRHC", FUNCDCM_NONE ),
2303     ENTRY( 0x0070, 0x0060, "SQ", "Graphic Layer Sequence", FUNCDCM_NONE ),
2304     ENTRY( 0x0070, 0x0062, "IS", "Graphic Layer Order", FUNCDCM_NONE ),
2305     ENTRY( 0x0070, 0x0066, "US", "Graphic Layer Recommended Display Value", FUNCDCM_NONE ),
2306     ENTRY( 0x0070, 0x0068, "LO", "Graphic Layer Description", FUNCDCM_NONE ),
2307     ENTRY( 0x0070, 0x0080, "CS", "Presentation Label", FUNCDCM_NONE ),
2308     ENTRY( 0x0070, 0x0081, "LO", "Presentation Description", FUNCDCM_NONE ),
2309     ENTRY( 0x0070, 0x0082, "DA", "Presentation Creation Date", FUNCDCM_NONE ),
2310     ENTRY( 0x0070, 0x0083, "TM", "Presentation Creation Time", FUNCDCM_NONE ),
2311     ENTRY( 0x0070, 0x0084, "PN", "Presentation Creator's Name", FUNCDCM_NONE ),
2312     ENTRY( 0x0087, 0x0010, "CS", "Media Type", FUNCDCM_NONE ),
2313     ENTRY( 0x0087, 0x0020, "CS", "Media Location", FUNCDCM_NONE ),
2314     ENTRY( 0x0087, 0x0050, "IS", "Estimated Retrieve Time", FUNCDCM_NONE ),
2315     ENTRY( 0x0088, 0x0000, "UL", "Storage Group Length", FUNCDCM_NONE ),
2316     ENTRY( 0x0088, 0x0130, "SH", "Storage Media FileSet ID", FUNCDCM_NONE ),
2317     ENTRY( 0x0088, 0x0140, "UI", "Storage Media FileSet UID", FUNCDCM_NONE ),
2318     ENTRY( 0x0088, 0x0200, "SQ", "Icon Image Sequence", FUNCDCM_NONE ),
2319     ENTRY( 0x0088, 0x0904, "LO", "Topic Title", FUNCDCM_NONE ),
2320     ENTRY( 0x0088, 0x0906, "ST", "Topic Subject", FUNCDCM_NONE ),
2321     ENTRY( 0x0088, 0x0910, "LO", "Topic Author", FUNCDCM_NONE ),
2322     ENTRY( 0x0088, 0x0912, "LO", "Topic Key Words", FUNCDCM_NONE ),
2323     ENTRY( 0x0095, 0x0001, "LT", "Examination Folder ID", FUNCDCM_NONE ),
2324     ENTRY( 0x0095, 0x0004, "UL", "Folder Reported Status", FUNCDCM_NONE ),
2325     ENTRY( 0x0095, 0x0005, "LT", "Folder Reporting Radiologist", FUNCDCM_NONE ),
2326     ENTRY( 0x0095, 0x0007, "LT", "SIENET ISA PLA", FUNCDCM_NONE ),
2327     ENTRY( 0x0099, 0x0002, "UL", "Data Object Attributes", FUNCDCM_NONE ),
2328     ENTRY( 0x00e1, 0x0001, "US", "Data Dictionary Version", FUNCDCM_NONE ),
2329     ENTRY( 0x00e1, 0x0014, "LT", "?", FUNCDCM_NONE ),
2330     ENTRY( 0x00e1, 0x0022, "DS", "?", FUNCDCM_NONE ),
2331     ENTRY( 0x00e1, 0x0023, "DS", "?", FUNCDCM_NONE ),
2332     ENTRY( 0x00e1, 0x0024, "LT", "?", FUNCDCM_NONE ),
2333     ENTRY( 0x00e1, 0x0025, "LT", "?", FUNCDCM_NONE ),
2334     ENTRY( 0x00e1, 0x0040, "SH", "Offset From CT MR Images", FUNCDCM_NONE ),
2335     ENTRY( 0x0193, 0x0002, "DS", "RIS Key", FUNCDCM_NONE ),
2336     ENTRY( 0x0307, 0x0001, "UN", "RIS Worklist IMGEF", FUNCDCM_NONE ),
2337     ENTRY( 0x0309, 0x0001, "UN", "RIS Report IMGEF", FUNCDCM_NONE ),
2338     ENTRY( 0x0601, 0x0000, "SH", "Implementation Version", FUNCDCM_NONE ),
2339     ENTRY( 0x0601, 0x0020, "DS", "Relative Table Position", FUNCDCM_NONE ),
2340     ENTRY( 0x0601, 0x0021, "DS", "Relative Table Height", FUNCDCM_NONE ),
2341     ENTRY( 0x0601, 0x0030, "SH", "Surview Direction", FUNCDCM_NONE ),
2342     ENTRY( 0x0601, 0x0031, "DS", "Surview Length", FUNCDCM_NONE ),
2343     ENTRY( 0x0601, 0x0050, "SH", "Image View Type", FUNCDCM_NONE ),
2344     ENTRY( 0x0601, 0x0070, "DS", "Batch Number", FUNCDCM_NONE ),
2345     ENTRY( 0x0601, 0x0071, "DS", "Batch Size", FUNCDCM_NONE ),
2346     ENTRY( 0x0601, 0x0072, "DS", "Batch Slice Number", FUNCDCM_NONE ),
2347     ENTRY( 0x1000, 0x0000, "xs", "?", FUNCDCM_NONE ),
2348     ENTRY( 0x1000, 0x0001, "US", "Run Length Triplet", FUNCDCM_NONE ),
2349     ENTRY( 0x1000, 0x0002, "US", "Huffman Table Size", FUNCDCM_NONE ),
2350     ENTRY( 0x1000, 0x0003, "US", "Huffman Table Triplet", FUNCDCM_NONE ),
2351     ENTRY( 0x1000, 0x0004, "US", "Shift Table Size", FUNCDCM_NONE ),
2352     ENTRY( 0x1000, 0x0005, "US", "Shift Table Triplet", FUNCDCM_NONE ),
2353     ENTRY( 0x1010, 0x0000, "xs", "?", FUNCDCM_NONE ),
2354     ENTRY( 0x1369, 0x0000, "US", "?", FUNCDCM_NONE ),
2355     ENTRY( 0x2000, 0x0000, "UL", "Film Session Group Length", FUNCDCM_NONE ),
2356     ENTRY( 0x2000, 0x0010, "IS", "Number of Copies", FUNCDCM_NONE ),
2357     ENTRY( 0x2000, 0x0020, "CS", "Print Priority", FUNCDCM_NONE ),
2358     ENTRY( 0x2000, 0x0030, "CS", "Medium Type", FUNCDCM_NONE ),
2359     ENTRY( 0x2000, 0x0040, "CS", "Film Destination", FUNCDCM_NONE ),
2360     ENTRY( 0x2000, 0x0050, "LO", "Film Session Label", FUNCDCM_NONE ),
2361     ENTRY( 0x2000, 0x0060, "IS", "Memory Allocation", FUNCDCM_NONE ),
2362     ENTRY( 0x2000, 0x0500, "SQ", "Referenced Film Box Sequence", FUNCDCM_NONE ),
2363     ENTRY( 0x2010, 0x0000, "UL", "Film Box Group Length", FUNCDCM_NONE ),
2364     ENTRY( 0x2010, 0x0010, "ST", "Image Display Format", FUNCDCM_NONE ),
2365     ENTRY( 0x2010, 0x0030, "CS", "Annotation Display Format ID", FUNCDCM_NONE ),
2366     ENTRY( 0x2010, 0x0040, "CS", "Film Orientation", FUNCDCM_NONE ),
2367     ENTRY( 0x2010, 0x0050, "CS", "Film Size ID", FUNCDCM_NONE ),
2368     ENTRY( 0x2010, 0x0060, "CS", "Magnification Type", FUNCDCM_NONE ),
2369     ENTRY( 0x2010, 0x0080, "CS", "Smoothing Type", FUNCDCM_NONE ),
2370     ENTRY( 0x2010, 0x0100, "CS", "Border Density", FUNCDCM_NONE ),
2371     ENTRY( 0x2010, 0x0110, "CS", "Empty Image Density", FUNCDCM_NONE ),
2372     ENTRY( 0x2010, 0x0120, "US", "Min Density", FUNCDCM_NONE ),
2373     ENTRY( 0x2010, 0x0130, "US", "Max Density", FUNCDCM_NONE ),
2374     ENTRY( 0x2010, 0x0140, "CS", "Trim", FUNCDCM_NONE ),
2375     ENTRY( 0x2010, 0x0150, "ST", "Configuration Information", FUNCDCM_NONE ),
2376     ENTRY( 0x2010, 0x0500, "SQ", "Referenced Film Session Sequence", FUNCDCM_NONE ),
2377     ENTRY( 0x2010, 0x0510, "SQ", "Referenced Image Box Sequence", FUNCDCM_NONE ),
2378     ENTRY( 0x2010, 0x0520, "SQ", "Referenced Basic Annotation Box Sequence", FUNCDCM_NONE ),
2379     ENTRY( 0x2020, 0x0000, "UL", "Image Box Group Length", FUNCDCM_NONE ),
2380     ENTRY( 0x2020, 0x0010, "US", "Image Box Position", FUNCDCM_NONE ),
2381     ENTRY( 0x2020, 0x0020, "CS", "Polarity", FUNCDCM_NONE ),
2382     ENTRY( 0x2020, 0x0030, "DS", "Requested Image Size", FUNCDCM_NONE ),
2383     ENTRY( 0x2020, 0x0110, "SQ", "Preformatted Grayscale Image Sequence", FUNCDCM_NONE ),
2384     ENTRY( 0x2020, 0x0111, "SQ", "Preformatted Color Image Sequence", FUNCDCM_NONE ),
2385     ENTRY( 0x2020, 0x0130, "SQ", "Referenced Image Overlay Box Sequence", FUNCDCM_NONE ),
2386     ENTRY( 0x2020, 0x0140, "SQ", "Referenced VOI LUT Box Sequence", FUNCDCM_NONE ),
2387     ENTRY( 0x2030, 0x0000, "UL", "Annotation Group Length", FUNCDCM_NONE ),
2388     ENTRY( 0x2030, 0x0010, "US", "Annotation Position", FUNCDCM_NONE ),
2389     ENTRY( 0x2030, 0x0020, "LO", "Text String", FUNCDCM_NONE ),
2390     ENTRY( 0x2040, 0x0000, "UL", "Overlay Box Group Length", FUNCDCM_NONE ),
2391     ENTRY( 0x2040, 0x0010, "SQ", "Referenced Overlay Plane Sequence", FUNCDCM_NONE ),
2392     ENTRY( 0x2040, 0x0011, "US", "Referenced Overlay Plane Groups", FUNCDCM_NONE ),
2393     ENTRY( 0x2040, 0x0060, "CS", "Overlay Magnification Type", FUNCDCM_NONE ),
2394     ENTRY( 0x2040, 0x0070, "CS", "Overlay Smoothing Type", FUNCDCM_NONE ),
2395     ENTRY( 0x2040, 0x0080, "CS", "Overlay Foreground Density", FUNCDCM_NONE ),
2396     ENTRY( 0x2040, 0x0090, "CS", "Overlay Mode", FUNCDCM_NONE ),
2397     ENTRY( 0x2040, 0x0100, "CS", "Threshold Density", FUNCDCM_NONE ),
2398     ENTRY( 0x2040, 0x0500, "SQ", "Referenced Overlay Image Box Sequence", FUNCDCM_NONE ),
2399     ENTRY( 0x2050, 0x0010, "SQ", "Presentation LUT Sequence", FUNCDCM_NONE ),
2400     ENTRY( 0x2050, 0x0020, "CS", "Presentation LUT Shape", FUNCDCM_NONE ),
2401     ENTRY( 0x2100, 0x0000, "UL", "Print Job Group Length", FUNCDCM_NONE ),
2402     ENTRY( 0x2100, 0x0020, "CS", "Execution Status", FUNCDCM_NONE ),
2403     ENTRY( 0x2100, 0x0030, "CS", "Execution Status Info", FUNCDCM_NONE ),
2404     ENTRY( 0x2100, 0x0040, "DA", "Creation Date", FUNCDCM_NONE ),
2405     ENTRY( 0x2100, 0x0050, "TM", "Creation Time", FUNCDCM_NONE ),
2406     ENTRY( 0x2100, 0x0070, "AE", "Originator", FUNCDCM_NONE ),
2407     ENTRY( 0x2100, 0x0500, "SQ", "Referenced Print Job Sequence", FUNCDCM_NONE ),
2408     ENTRY( 0x2110, 0x0000, "UL", "Printer Group Length", FUNCDCM_NONE ),
2409     ENTRY( 0x2110, 0x0010, "CS", "Printer Status", FUNCDCM_NONE ),
2410     ENTRY( 0x2110, 0x0020, "CS", "Printer Status Info", FUNCDCM_NONE ),
2411     ENTRY( 0x2110, 0x0030, "LO", "Printer Name", FUNCDCM_NONE ),
2412     ENTRY( 0x2110, 0x0099, "SH", "Print Queue ID", FUNCDCM_NONE ),
2413     ENTRY( 0x3002, 0x0002, "SH", "RT Image Label", FUNCDCM_NONE ),
2414     ENTRY( 0x3002, 0x0003, "LO", "RT Image Name", FUNCDCM_NONE ),
2415     ENTRY( 0x3002, 0x0004, "ST", "RT Image Description", FUNCDCM_NONE ),
2416     ENTRY( 0x3002, 0x000a, "CS", "Reported Values Origin", FUNCDCM_NONE ),
2417     ENTRY( 0x3002, 0x000c, "CS", "RT Image Plane", FUNCDCM_NONE ),
2418     ENTRY( 0x3002, 0x000e, "DS", "X-Ray Image Receptor Angle", FUNCDCM_NONE ),
2419     ENTRY( 0x3002, 0x0010, "DS", "RTImageOrientation", FUNCDCM_NONE ),
2420     ENTRY( 0x3002, 0x0011, "DS", "Image Plane Pixel Spacing", FUNCDCM_NONE ),
2421     ENTRY( 0x3002, 0x0012, "DS", "RT Image Position", FUNCDCM_NONE ),
2422     ENTRY( 0x3002, 0x0020, "SH", "Radiation Machine Name", FUNCDCM_NONE ),
2423     ENTRY( 0x3002, 0x0022, "DS", "Radiation Machine SAD", FUNCDCM_NONE ),
2424     ENTRY( 0x3002, 0x0024, "DS", "Radiation Machine SSD", FUNCDCM_NONE ),
2425     ENTRY( 0x3002, 0x0026, "DS", "RT Image SID", FUNCDCM_NONE ),
2426     ENTRY( 0x3002, 0x0028, "DS", "Source to Reference Object Distance", FUNCDCM_NONE ),
2427     ENTRY( 0x3002, 0x0029, "IS", "Fraction Number", FUNCDCM_NONE ),
2428     ENTRY( 0x3002, 0x0030, "SQ", "Exposure Sequence", FUNCDCM_NONE ),
2429     ENTRY( 0x3002, 0x0032, "DS", "Meterset Exposure", FUNCDCM_NONE ),
2430     ENTRY( 0x3004, 0x0001, "CS", "DVH Type", FUNCDCM_NONE ),
2431     ENTRY( 0x3004, 0x0002, "CS", "Dose Units", FUNCDCM_NONE ),
2432     ENTRY( 0x3004, 0x0004, "CS", "Dose Type", FUNCDCM_NONE ),
2433     ENTRY( 0x3004, 0x0006, "LO", "Dose Comment", FUNCDCM_NONE ),
2434     ENTRY( 0x3004, 0x0008, "DS", "Normalization Point", FUNCDCM_NONE ),
2435     ENTRY( 0x3004, 0x000a, "CS", "Dose Summation Type", FUNCDCM_NONE ),
2436     ENTRY( 0x3004, 0x000c, "DS", "GridFrame Offset Vector", FUNCDCM_NONE ),
2437     ENTRY( 0x3004, 0x000e, "DS", "Dose Grid Scaling", FUNCDCM_NONE ),
2438     ENTRY( 0x3004, 0x0010, "SQ", "RT Dose ROI Sequence", FUNCDCM_NONE ),
2439     ENTRY( 0x3004, 0x0012, "DS", "Dose Value", FUNCDCM_NONE ),
2440     ENTRY( 0x3004, 0x0040, "DS", "DVH Normalization Point", FUNCDCM_NONE ),
2441     ENTRY( 0x3004, 0x0042, "DS", "DVH Normalization Dose Value", FUNCDCM_NONE ),
2442     ENTRY( 0x3004, 0x0050, "SQ", "DVH Sequence", FUNCDCM_NONE ),
2443     ENTRY( 0x3004, 0x0052, "DS", "DVH Dose Scaling", FUNCDCM_NONE ),
2444     ENTRY( 0x3004, 0x0054, "CS", "DVH Volume Units", FUNCDCM_NONE ),
2445     ENTRY( 0x3004, 0x0056, "IS", "DVH Number of Bins", FUNCDCM_NONE ),
2446     ENTRY( 0x3004, 0x0058, "DS", "DVH Data", FUNCDCM_NONE ),
2447     ENTRY( 0x3004, 0x0060, "SQ", "DVH Referenced ROI Sequence", FUNCDCM_NONE ),
2448     ENTRY( 0x3004, 0x0062, "CS", "DVH ROI Contribution Type", FUNCDCM_NONE ),
2449     ENTRY( 0x3004, 0x0070, "DS", "DVH Minimum Dose", FUNCDCM_NONE ),
2450     ENTRY( 0x3004, 0x0072, "DS", "DVH Maximum Dose", FUNCDCM_NONE ),
2451     ENTRY( 0x3004, 0x0074, "DS", "DVH Mean Dose", FUNCDCM_NONE ),
2452     ENTRY( 0x3006, 0x0002, "SH", "Structure Set Label", FUNCDCM_NONE ),
2453     ENTRY( 0x3006, 0x0004, "LO", "Structure Set Name", FUNCDCM_NONE ),
2454     ENTRY( 0x3006, 0x0006, "ST", "Structure Set Description", FUNCDCM_NONE ),
2455     ENTRY( 0x3006, 0x0008, "DA", "Structure Set Date", FUNCDCM_NONE ),
2456     ENTRY( 0x3006, 0x0009, "TM", "Structure Set Time", FUNCDCM_NONE ),
2457     ENTRY( 0x3006, 0x0010, "SQ", "Referenced Frame of Reference Sequence", FUNCDCM_NONE ),
2458     ENTRY( 0x3006, 0x0012, "SQ", "RT Referenced Study Sequence", FUNCDCM_NONE ),
2459     ENTRY( 0x3006, 0x0014, "SQ", "RT Referenced Series Sequence", FUNCDCM_NONE ),
2460     ENTRY( 0x3006, 0x0016, "SQ", "Contour Image Sequence", FUNCDCM_NONE ),
2461     ENTRY( 0x3006, 0x0020, "SQ", "Structure Set ROI Sequence", FUNCDCM_NONE ),
2462     ENTRY( 0x3006, 0x0022, "IS", "ROI Number", FUNCDCM_NONE ),
2463     ENTRY( 0x3006, 0x0024, "UI", "Referenced Frame of Reference UID", FUNCDCM_NONE ),
2464     ENTRY( 0x3006, 0x0026, "LO", "ROI Name", FUNCDCM_NONE ),
2465     ENTRY( 0x3006, 0x0028, "ST", "ROI Description", FUNCDCM_NONE ),
2466     ENTRY( 0x3006, 0x002a, "IS", "ROI Display Color", FUNCDCM_NONE ),
2467     ENTRY( 0x3006, 0x002c, "DS", "ROI Volume", FUNCDCM_NONE ),
2468     ENTRY( 0x3006, 0x0030, "SQ", "RT Related ROI Sequence", FUNCDCM_NONE ),
2469     ENTRY( 0x3006, 0x0033, "CS", "RT ROI Relationship", FUNCDCM_NONE ),
2470     ENTRY( 0x3006, 0x0036, "CS", "ROI Generation Algorithm", FUNCDCM_NONE ),
2471     ENTRY( 0x3006, 0x0038, "LO", "ROI Generation Description", FUNCDCM_NONE ),
2472     ENTRY( 0x3006, 0x0039, "SQ", "ROI Contour Sequence", FUNCDCM_NONE ),
2473     ENTRY( 0x3006, 0x0040, "SQ", "Contour Sequence", FUNCDCM_NONE ),
2474     ENTRY( 0x3006, 0x0042, "CS", "Contour Geometric Type", FUNCDCM_NONE ),
2475     ENTRY( 0x3006, 0x0044, "DS", "Contour SlabT hickness", FUNCDCM_NONE ),
2476     ENTRY( 0x3006, 0x0045, "DS", "Contour Offset Vector", FUNCDCM_NONE ),
2477     ENTRY( 0x3006, 0x0046, "IS", "Number of Contour Points", FUNCDCM_NONE ),
2478     ENTRY( 0x3006, 0x0050, "DS", "Contour Data", FUNCDCM_NONE ),
2479     ENTRY( 0x3006, 0x0080, "SQ", "RT ROI Observations Sequence", FUNCDCM_NONE ),
2480     ENTRY( 0x3006, 0x0082, "IS", "Observation Number", FUNCDCM_NONE ),
2481     ENTRY( 0x3006, 0x0084, "IS", "Referenced ROI Number", FUNCDCM_NONE ),
2482     ENTRY( 0x3006, 0x0085, "SH", "ROI Observation Label", FUNCDCM_NONE ),
2483     ENTRY( 0x3006, 0x0086, "SQ", "RT ROI Identification Code Sequence", FUNCDCM_NONE ),
2484     ENTRY( 0x3006, 0x0088, "ST", "ROI Observation Description", FUNCDCM_NONE ),
2485     ENTRY( 0x3006, 0x00a0, "SQ", "Related RT ROI Observations Sequence", FUNCDCM_NONE ),
2486     ENTRY( 0x3006, 0x00a4, "CS", "RT ROI Interpreted Type", FUNCDCM_NONE ),
2487     ENTRY( 0x3006, 0x00a6, "PN", "ROI Interpreter", FUNCDCM_NONE ),
2488     ENTRY( 0x3006, 0x00b0, "SQ", "ROI Physical Properties Sequence", FUNCDCM_NONE ),
2489     ENTRY( 0x3006, 0x00b2, "CS", "ROI Physical Property", FUNCDCM_NONE ),
2490     ENTRY( 0x3006, 0x00b4, "DS", "ROI Physical Property Value", FUNCDCM_NONE ),
2491     ENTRY( 0x3006, 0x00c0, "SQ", "Frame of Reference Relationship Sequence", FUNCDCM_NONE ),
2492     ENTRY( 0x3006, 0x00c2, "UI", "Related Frame of Reference UID", FUNCDCM_NONE ),
2493     ENTRY( 0x3006, 0x00c4, "CS", "Frame of Reference Transformation Type", FUNCDCM_NONE ),
2494     ENTRY( 0x3006, 0x00c6, "DS", "Frame of Reference Transformation Matrix", FUNCDCM_NONE ),
2495     ENTRY( 0x3006, 0x00c8, "LO", "Frame of Reference Transformation Comment", FUNCDCM_NONE ),
2496     ENTRY( 0x300a, 0x0002, "SH", "RT Plan Label", FUNCDCM_NONE ),
2497     ENTRY( 0x300a, 0x0003, "LO", "RT Plan Name", FUNCDCM_NONE ),
2498     ENTRY( 0x300a, 0x0004, "ST", "RT Plan Description", FUNCDCM_NONE ),
2499     ENTRY( 0x300a, 0x0006, "DA", "RT Plan Date", FUNCDCM_NONE ),
2500     ENTRY( 0x300a, 0x0007, "TM", "RT Plan Time", FUNCDCM_NONE ),
2501     ENTRY( 0x300a, 0x0009, "LO", "Treatment Protocols", FUNCDCM_NONE ),
2502     ENTRY( 0x300a, 0x000a, "CS", "Treatment Intent", FUNCDCM_NONE ),
2503     ENTRY( 0x300a, 0x000b, "LO", "Treatment Sites", FUNCDCM_NONE ),
2504     ENTRY( 0x300a, 0x000c, "CS", "RT Plan Geometry", FUNCDCM_NONE ),
2505     ENTRY( 0x300a, 0x000e, "ST", "Prescription Description", FUNCDCM_NONE ),
2506     ENTRY( 0x300a, 0x0010, "SQ", "Dose ReferenceSequence", FUNCDCM_NONE ),
2507     ENTRY( 0x300a, 0x0012, "IS", "Dose ReferenceNumber", FUNCDCM_NONE ),
2508     ENTRY( 0x300a, 0x0014, "CS", "Dose Reference Structure Type", FUNCDCM_NONE ),
2509     ENTRY( 0x300a, 0x0016, "LO", "Dose ReferenceDescription", FUNCDCM_NONE ),
2510     ENTRY( 0x300a, 0x0018, "DS", "Dose Reference Point Coordinates", FUNCDCM_NONE ),
2511     ENTRY( 0x300a, 0x001a, "DS", "Nominal Prior Dose", FUNCDCM_NONE ),
2512     ENTRY( 0x300a, 0x0020, "CS", "Dose Reference Type", FUNCDCM_NONE ),
2513     ENTRY( 0x300a, 0x0021, "DS", "Constraint Weight", FUNCDCM_NONE ),
2514     ENTRY( 0x300a, 0x0022, "DS", "Delivery Warning Dose", FUNCDCM_NONE ),
2515     ENTRY( 0x300a, 0x0023, "DS", "Delivery Maximum Dose", FUNCDCM_NONE ),
2516     ENTRY( 0x300a, 0x0025, "DS", "Target Minimum Dose", FUNCDCM_NONE ),
2517     ENTRY( 0x300a, 0x0026, "DS", "Target Prescription Dose", FUNCDCM_NONE ),
2518     ENTRY( 0x300a, 0x0027, "DS", "Target Maximum Dose", FUNCDCM_NONE ),
2519     ENTRY( 0x300a, 0x0028, "DS", "Target Underdose Volume Fraction", FUNCDCM_NONE ),
2520     ENTRY( 0x300a, 0x002a, "DS", "Organ at Risk Full-volume Dose", FUNCDCM_NONE ),
2521     ENTRY( 0x300a, 0x002b, "DS", "Organ at Risk Limit Dose", FUNCDCM_NONE ),
2522     ENTRY( 0x300a, 0x002c, "DS", "Organ at Risk Maximum Dose", FUNCDCM_NONE ),
2523     ENTRY( 0x300a, 0x002d, "DS", "Organ at Risk Overdose Volume Fraction", FUNCDCM_NONE ),
2524     ENTRY( 0x300a, 0x0040, "SQ", "Tolerance Table Sequence", FUNCDCM_NONE ),
2525     ENTRY( 0x300a, 0x0042, "IS", "Tolerance Table Number", FUNCDCM_NONE ),
2526     ENTRY( 0x300a, 0x0043, "SH", "Tolerance Table Label", FUNCDCM_NONE ),
2527     ENTRY( 0x300a, 0x0044, "DS", "Gantry Angle Tolerance", FUNCDCM_NONE ),
2528     ENTRY( 0x300a, 0x0046, "DS", "Beam Limiting Device Angle Tolerance", FUNCDCM_NONE ),
2529     ENTRY( 0x300a, 0x0048, "SQ", "Beam Limiting Device Tolerance Sequence", FUNCDCM_NONE ),
2530     ENTRY( 0x300a, 0x004a, "DS", "Beam Limiting Device Position Tolerance", FUNCDCM_NONE ),
2531     ENTRY( 0x300a, 0x004c, "DS", "Patient Support Angle Tolerance", FUNCDCM_NONE ),
2532     ENTRY( 0x300a, 0x004e, "DS", "Table Top Eccentric Angle Tolerance", FUNCDCM_NONE ),
2533     ENTRY( 0x300a, 0x0051, "DS", "Table Top Vertical Position Tolerance", FUNCDCM_NONE ),
2534     ENTRY( 0x300a, 0x0052, "DS", "Table Top Longitudinal Position Tolerance", FUNCDCM_NONE ),
2535     ENTRY( 0x300a, 0x0053, "DS", "Table Top Lateral Position Tolerance", FUNCDCM_NONE ),
2536     ENTRY( 0x300a, 0x0055, "CS", "RT Plan Relationship", FUNCDCM_NONE ),
2537     ENTRY( 0x300a, 0x0070, "SQ", "Fraction Group Sequence", FUNCDCM_NONE ),
2538     ENTRY( 0x300a, 0x0071, "IS", "Fraction Group Number", FUNCDCM_NONE ),
2539     ENTRY( 0x300a, 0x0078, "IS", "Number of Fractions Planned", FUNCDCM_NONE ),
2540     ENTRY( 0x300a, 0x0079, "IS", "Number of Fractions Per Day", FUNCDCM_NONE ),
2541     ENTRY( 0x300a, 0x007a, "IS", "Repeat Fraction Cycle Length", FUNCDCM_NONE ),
2542     ENTRY( 0x300a, 0x007b, "LT", "Fraction Pattern", FUNCDCM_NONE ),
2543     ENTRY( 0x300a, 0x0080, "IS", "Number of Beams", FUNCDCM_NONE ),
2544     ENTRY( 0x300a, 0x0082, "DS", "Beam Dose Specification Point", FUNCDCM_NONE ),
2545     ENTRY( 0x300a, 0x0084, "DS", "Beam Dose", FUNCDCM_NONE ),
2546     ENTRY( 0x300a, 0x0086, "DS", "Beam Meterset", FUNCDCM_NONE ),
2547     ENTRY( 0x300a, 0x00a0, "IS", "Number of Brachy Application Setups", FUNCDCM_NONE ),
2548     ENTRY( 0x300a, 0x00a2, "DS", "Brachy Application Setup Dose Specification Point", FUNCDCM_NONE ),
2549     ENTRY( 0x300a, 0x00a4, "DS", "Brachy Application Setup Dose", FUNCDCM_NONE ),
2550     ENTRY( 0x300a, 0x00b0, "SQ", "Beam Sequence", FUNCDCM_NONE ),
2551     ENTRY( 0x300a, 0x00b2, "SH", "Treatment Machine Name ", FUNCDCM_NONE ),
2552     ENTRY( 0x300a, 0x00b3, "CS", "Primary Dosimeter Unit", FUNCDCM_NONE ),
2553     ENTRY( 0x300a, 0x00b4, "DS", "Source-Axis Distance", FUNCDCM_NONE ),
2554     ENTRY( 0x300a, 0x00b6, "SQ", "Beam Limiting Device Sequence", FUNCDCM_NONE ),
2555     ENTRY( 0x300a, 0x00b8, "CS", "RT Beam Limiting Device Type", FUNCDCM_NONE ),
2556     ENTRY( 0x300a, 0x00ba, "DS", "Source to Beam Limiting Device Distance", FUNCDCM_NONE ),
2557     ENTRY( 0x300a, 0x00bc, "IS", "Number of Leaf/Jaw Pairs", FUNCDCM_NONE ),
2558     ENTRY( 0x300a, 0x00be, "DS", "Leaf Position Boundaries", FUNCDCM_NONE ),
2559     ENTRY( 0x300a, 0x00c0, "IS", "Beam Number", FUNCDCM_NONE ),
2560     ENTRY( 0x300a, 0x00c2, "LO", "Beam Name", FUNCDCM_NONE ),
2561     ENTRY( 0x300a, 0x00c3, "ST", "Beam Description", FUNCDCM_NONE ),
2562     ENTRY( 0x300a, 0x00c4, "CS", "Beam Type", FUNCDCM_NONE ),
2563     ENTRY( 0x300a, 0x00c6, "CS", "Radiation Type", FUNCDCM_NONE ),
2564     ENTRY( 0x300a, 0x00c8, "IS", "Reference Image Number", FUNCDCM_NONE ),
2565     ENTRY( 0x300a, 0x00ca, "SQ", "Planned Verification Image Sequence", FUNCDCM_NONE ),
2566     ENTRY( 0x300a, 0x00cc, "LO", "Imaging Device Specific Acquisition Parameters", FUNCDCM_NONE ),
2567     ENTRY( 0x300a, 0x00ce, "CS", "Treatment Delivery Type", FUNCDCM_NONE ),
2568     ENTRY( 0x300a, 0x00d0, "IS", "Number of Wedges", FUNCDCM_NONE ),
2569     ENTRY( 0x300a, 0x00d1, "SQ", "Wedge Sequence", FUNCDCM_NONE ),
2570     ENTRY( 0x300a, 0x00d2, "IS", "Wedge Number", FUNCDCM_NONE ),
2571     ENTRY( 0x300a, 0x00d3, "CS", "Wedge Type", FUNCDCM_NONE ),
2572     ENTRY( 0x300a, 0x00d4, "SH", "Wedge ID", FUNCDCM_NONE ),
2573     ENTRY( 0x300a, 0x00d5, "IS", "Wedge Angle", FUNCDCM_NONE ),
2574     ENTRY( 0x300a, 0x00d6, "DS", "Wedge Factor", FUNCDCM_NONE ),
2575     ENTRY( 0x300a, 0x00d8, "DS", "Wedge Orientation", FUNCDCM_NONE ),
2576     ENTRY( 0x300a, 0x00da, "DS", "Source to Wedge Tray Distance", FUNCDCM_NONE ),
2577     ENTRY( 0x300a, 0x00e0, "IS", "Number of Compensators", FUNCDCM_NONE ),
2578     ENTRY( 0x300a, 0x00e1, "SH", "Material ID", FUNCDCM_NONE ),
2579     ENTRY( 0x300a, 0x00e2, "DS", "Total Compensator Tray Factor", FUNCDCM_NONE ),
2580     ENTRY( 0x300a, 0x00e3, "SQ", "Compensator Sequence", FUNCDCM_NONE ),
2581     ENTRY( 0x300a, 0x00e4, "IS", "Compensator Number", FUNCDCM_NONE ),
2582     ENTRY( 0x300a, 0x00e5, "SH", "Compensator ID", FUNCDCM_NONE ),
2583     ENTRY( 0x300a, 0x00e6, "DS", "Source to Compensator Tray Distance", FUNCDCM_NONE ),
2584     ENTRY( 0x300a, 0x00e7, "IS", "Compensator Rows", FUNCDCM_NONE ),
2585     ENTRY( 0x300a, 0x00e8, "IS", "Compensator Columns", FUNCDCM_NONE ),
2586     ENTRY( 0x300a, 0x00e9, "DS", "Compensator Pixel Spacing", FUNCDCM_NONE ),
2587     ENTRY( 0x300a, 0x00ea, "DS", "Compensator Position", FUNCDCM_NONE ),
2588     ENTRY( 0x300a, 0x00eb, "DS", "Compensator Transmission Data", FUNCDCM_NONE ),
2589     ENTRY( 0x300a, 0x00ec, "DS", "Compensator Thickness Data", FUNCDCM_NONE ),
2590     ENTRY( 0x300a, 0x00ed, "IS", "Number of Boli", FUNCDCM_NONE ),
2591     ENTRY( 0x300a, 0x00f0, "IS", "Number of Blocks", FUNCDCM_NONE ),
2592     ENTRY( 0x300a, 0x00f2, "DS", "Total Block Tray Factor", FUNCDCM_NONE ),
2593     ENTRY( 0x300a, 0x00f4, "SQ", "Block Sequence", FUNCDCM_NONE ),
2594     ENTRY( 0x300a, 0x00f5, "SH", "Block Tray ID", FUNCDCM_NONE ),
2595     ENTRY( 0x300a, 0x00f6, "DS", "Source to Block Tray Distance", FUNCDCM_NONE ),
2596     ENTRY( 0x300a, 0x00f8, "CS", "Block Type", FUNCDCM_NONE ),
2597     ENTRY( 0x300a, 0x00fa, "CS", "Block Divergence", FUNCDCM_NONE ),
2598     ENTRY( 0x300a, 0x00fc, "IS", "Block Number", FUNCDCM_NONE ),
2599     ENTRY( 0x300a, 0x00fe, "LO", "Block Name", FUNCDCM_NONE ),
2600     ENTRY( 0x300a, 0x0100, "DS", "Block Thickness", FUNCDCM_NONE ),
2601     ENTRY( 0x300a, 0x0102, "DS", "Block Transmission", FUNCDCM_NONE ),
2602     ENTRY( 0x300a, 0x0104, "IS", "Block Number of Points", FUNCDCM_NONE ),
2603     ENTRY( 0x300a, 0x0106, "DS", "Block Data", FUNCDCM_NONE ),
2604     ENTRY( 0x300a, 0x0107, "SQ", "Applicator Sequence", FUNCDCM_NONE ),
2605     ENTRY( 0x300a, 0x0108, "SH", "Applicator ID", FUNCDCM_NONE ),
2606     ENTRY( 0x300a, 0x0109, "CS", "Applicator Type", FUNCDCM_NONE ),
2607     ENTRY( 0x300a, 0x010a, "LO", "Applicator Description", FUNCDCM_NONE ),
2608     ENTRY( 0x300a, 0x010c, "DS", "Cumulative Dose Reference Coefficient", FUNCDCM_NONE ),
2609     ENTRY( 0x300a, 0x010e, "DS", "Final Cumulative Meterset Weight", FUNCDCM_NONE ),
2610     ENTRY( 0x300a, 0x0110, "IS", "Number of Control Points", FUNCDCM_NONE ),
2611     ENTRY( 0x300a, 0x0111, "SQ", "Control Point Sequence", FUNCDCM_NONE ),
2612     ENTRY( 0x300a, 0x0112, "IS", "Control Point Index", FUNCDCM_NONE ),
2613     ENTRY( 0x300a, 0x0114, "DS", "Nominal Beam Energy", FUNCDCM_NONE ),
2614     ENTRY( 0x300a, 0x0115, "DS", "Dose Rate Set", FUNCDCM_NONE ),
2615     ENTRY( 0x300a, 0x0116, "SQ", "Wedge Position Sequence", FUNCDCM_NONE ),
2616     ENTRY( 0x300a, 0x0118, "CS", "Wedge Position", FUNCDCM_NONE ),
2617     ENTRY( 0x300a, 0x011a, "SQ", "Beam Limiting Device Position Sequence", FUNCDCM_NONE ),
2618     ENTRY( 0x300a, 0x011c, "DS", "Leaf Jaw Positions", FUNCDCM_NONE ),
2619     ENTRY( 0x300a, 0x011e, "DS", "Gantry Angle", FUNCDCM_NONE ),
2620     ENTRY( 0x300a, 0x011f, "CS", "Gantry Rotation Direction", FUNCDCM_NONE ),
2621     ENTRY( 0x300a, 0x0120, "DS", "Beam Limiting Device Angle", FUNCDCM_NONE ),
2622     ENTRY( 0x300a, 0x0121, "CS", "Beam Limiting Device Rotation Direction", FUNCDCM_NONE ),
2623     ENTRY( 0x300a, 0x0122, "DS", "Patient Support Angle", FUNCDCM_NONE ),
2624     ENTRY( 0x300a, 0x0123, "CS", "Patient Support Rotation Direction", FUNCDCM_NONE ),
2625     ENTRY( 0x300a, 0x0124, "DS", "Table Top Eccentric Axis Distance", FUNCDCM_NONE ),
2626     ENTRY( 0x300a, 0x0125, "DS", "Table Top Eccentric Angle", FUNCDCM_NONE ),
2627     ENTRY( 0x300a, 0x0126, "CS", "Table Top Eccentric Rotation Direction", FUNCDCM_NONE ),
2628     ENTRY( 0x300a, 0x0128, "DS", "Table Top Vertical Position", FUNCDCM_NONE ),
2629     ENTRY( 0x300a, 0x0129, "DS", "Table Top Longitudinal Position", FUNCDCM_NONE ),
2630     ENTRY( 0x300a, 0x012a, "DS", "Table Top Lateral Position", FUNCDCM_NONE ),
2631     ENTRY( 0x300a, 0x012c, "DS", "Isocenter Position", FUNCDCM_NONE ),
2632     ENTRY( 0x300a, 0x012e, "DS", "Surface Entry Point", FUNCDCM_NONE ),
2633     ENTRY( 0x300a, 0x0130, "DS", "Source to Surface Distance", FUNCDCM_NONE ),
2634     ENTRY( 0x300a, 0x0134, "DS", "Cumulative Meterset Weight", FUNCDCM_NONE ),
2635     ENTRY( 0x300a, 0x0180, "SQ", "Patient Setup Sequence", FUNCDCM_NONE ),
2636     ENTRY( 0x300a, 0x0182, "IS", "Patient Setup Number", FUNCDCM_NONE ),
2637     ENTRY( 0x300a, 0x0184, "LO", "Patient Additional Position", FUNCDCM_NONE ),
2638     ENTRY( 0x300a, 0x0190, "SQ", "Fixation Device Sequence", FUNCDCM_NONE ),
2639     ENTRY( 0x300a, 0x0192, "CS", "Fixation Device Type", FUNCDCM_NONE ),
2640     ENTRY( 0x300a, 0x0194, "SH", "Fixation Device Label", FUNCDCM_NONE ),
2641     ENTRY( 0x300a, 0x0196, "ST", "Fixation Device Description", FUNCDCM_NONE ),
2642     ENTRY( 0x300a, 0x0198, "SH", "Fixation Device Position", FUNCDCM_NONE ),
2643     ENTRY( 0x300a, 0x01a0, "SQ", "Shielding Device Sequence", FUNCDCM_NONE ),
2644     ENTRY( 0x300a, 0x01a2, "CS", "Shielding Device Type", FUNCDCM_NONE ),
2645     ENTRY( 0x300a, 0x01a4, "SH", "Shielding Device Label", FUNCDCM_NONE ),
2646     ENTRY( 0x300a, 0x01a6, "ST", "Shielding Device Description", FUNCDCM_NONE ),
2647     ENTRY( 0x300a, 0x01a8, "SH", "Shielding Device Position", FUNCDCM_NONE ),
2648     ENTRY( 0x300a, 0x01b0, "CS", "Setup Technique", FUNCDCM_NONE ),
2649     ENTRY( 0x300a, 0x01b2, "ST", "Setup TechniqueDescription", FUNCDCM_NONE ),
2650     ENTRY( 0x300a, 0x01b4, "SQ", "Setup Device Sequence", FUNCDCM_NONE ),
2651     ENTRY( 0x300a, 0x01b6, "CS", "Setup Device Type", FUNCDCM_NONE ),
2652     ENTRY( 0x300a, 0x01b8, "SH", "Setup Device Label", FUNCDCM_NONE ),
2653     ENTRY( 0x300a, 0x01ba, "ST", "Setup Device Description", FUNCDCM_NONE ),
2654     ENTRY( 0x300a, 0x01bc, "DS", "Setup Device Parameter", FUNCDCM_NONE ),
2655     ENTRY( 0x300a, 0x01d0, "ST", "Setup ReferenceDescription", FUNCDCM_NONE ),
2656     ENTRY( 0x300a, 0x01d2, "DS", "Table Top Vertical Setup Displacement", FUNCDCM_NONE ),
2657     ENTRY( 0x300a, 0x01d4, "DS", "Table Top Longitudinal Setup Displacement", FUNCDCM_NONE ),
2658     ENTRY( 0x300a, 0x01d6, "DS", "Table Top Lateral Setup Displacement", FUNCDCM_NONE ),
2659     ENTRY( 0x300a, 0x0200, "CS", "Brachy Treatment Technique", FUNCDCM_NONE ),
2660     ENTRY( 0x300a, 0x0202, "CS", "Brachy Treatment Type", FUNCDCM_NONE ),
2661     ENTRY( 0x300a, 0x0206, "SQ", "Treatment Machine Sequence", FUNCDCM_NONE ),
2662     ENTRY( 0x300a, 0x0210, "SQ", "Source Sequence", FUNCDCM_NONE ),
2663     ENTRY( 0x300a, 0x0212, "IS", "Source Number", FUNCDCM_NONE ),
2664     ENTRY( 0x300a, 0x0214, "CS", "Source Type", FUNCDCM_NONE ),
2665     ENTRY( 0x300a, 0x0216, "LO", "Source Manufacturer", FUNCDCM_NONE ),
2666     ENTRY( 0x300a, 0x0218, "DS", "Active Source Diameter", FUNCDCM_NONE ),
2667     ENTRY( 0x300a, 0x021a, "DS", "Active Source Length", FUNCDCM_NONE ),
2668     ENTRY( 0x300a, 0x0222, "DS", "Source Encapsulation Nominal Thickness", FUNCDCM_NONE ),
2669     ENTRY( 0x300a, 0x0224, "DS", "Source Encapsulation Nominal Transmission", FUNCDCM_NONE ),
2670     ENTRY( 0x300a, 0x0226, "LO", "Source IsotopeName", FUNCDCM_NONE ),
2671     ENTRY( 0x300a, 0x0228, "DS", "Source Isotope Half Life", FUNCDCM_NONE ),
2672     ENTRY( 0x300a, 0x022a, "DS", "Reference Air Kerma Rate", FUNCDCM_NONE ),
2673     ENTRY( 0x300a, 0x022c, "DA", "Air Kerma Rate Reference Date", FUNCDCM_NONE ),
2674     ENTRY( 0x300a, 0x022e, "TM", "Air Kerma Rate Reference Time", FUNCDCM_NONE ),
2675     ENTRY( 0x300a, 0x0230, "SQ", "Application Setup Sequence", FUNCDCM_NONE ),
2676     ENTRY( 0x300a, 0x0232, "CS", "Application Setup Type", FUNCDCM_NONE ),
2677     ENTRY( 0x300a, 0x0234, "IS", "Application Setup Number", FUNCDCM_NONE ),
2678     ENTRY( 0x300a, 0x0236, "LO", "Application Setup Name", FUNCDCM_NONE ),
2679     ENTRY( 0x300a, 0x0238, "LO", "Application Setup Manufacturer", FUNCDCM_NONE ),
2680     ENTRY( 0x300a, 0x0240, "IS", "Template Number", FUNCDCM_NONE ),
2681     ENTRY( 0x300a, 0x0242, "SH", "Template Type", FUNCDCM_NONE ),
2682     ENTRY( 0x300a, 0x0244, "LO", "Template Name", FUNCDCM_NONE ),
2683     ENTRY( 0x300a, 0x0250, "DS", "Total Reference Air Kerma", FUNCDCM_NONE ),
2684     ENTRY( 0x300a, 0x0260, "SQ", "Brachy Accessory Device Sequence", FUNCDCM_NONE ),
2685     ENTRY( 0x300a, 0x0262, "IS", "Brachy Accessory Device Number", FUNCDCM_NONE ),
2686     ENTRY( 0x300a, 0x0263, "SH", "Brachy Accessory Device ID", FUNCDCM_NONE ),
2687     ENTRY( 0x300a, 0x0264, "CS", "Brachy Accessory Device Type", FUNCDCM_NONE ),
2688     ENTRY( 0x300a, 0x0266, "LO", "Brachy Accessory Device Name", FUNCDCM_NONE ),
2689     ENTRY( 0x300a, 0x026a, "DS", "Brachy Accessory Device Nominal Thickness", FUNCDCM_NONE ),
2690     ENTRY( 0x300a, 0x026c, "DS", "Brachy Accessory Device Nominal Transmission", FUNCDCM_NONE ),
2691     ENTRY( 0x300a, 0x0280, "SQ", "Channel Sequence", FUNCDCM_NONE ),
2692     ENTRY( 0x300a, 0x0282, "IS", "Channel Number", FUNCDCM_NONE ),
2693     ENTRY( 0x300a, 0x0284, "DS", "Channel Length", FUNCDCM_NONE ),
2694     ENTRY( 0x300a, 0x0286, "DS", "Channel Total Time", FUNCDCM_NONE ),
2695     ENTRY( 0x300a, 0x0288, "CS", "Source Movement Type", FUNCDCM_NONE ),
2696     ENTRY( 0x300a, 0x028a, "IS", "Number of Pulses", FUNCDCM_NONE ),
2697     ENTRY( 0x300a, 0x028c, "DS", "Pulse Repetition Interval", FUNCDCM_NONE ),
2698     ENTRY( 0x300a, 0x0290, "IS", "Source Applicator Number", FUNCDCM_NONE ),
2699     ENTRY( 0x300a, 0x0291, "SH", "Source Applicator ID", FUNCDCM_NONE ),
2700     ENTRY( 0x300a, 0x0292, "CS", "Source Applicator Type", FUNCDCM_NONE ),
2701     ENTRY( 0x300a, 0x0294, "LO", "Source Applicator Name", FUNCDCM_NONE ),
2702     ENTRY( 0x300a, 0x0296, "DS", "Source Applicator Length", FUNCDCM_NONE ),
2703     ENTRY( 0x300a, 0x0298, "LO", "Source Applicator Manufacturer", FUNCDCM_NONE ),
2704     ENTRY( 0x300a, 0x029c, "DS", "Source Applicator Wall Nominal Thickness", FUNCDCM_NONE ),
2705     ENTRY( 0x300a, 0x029e, "DS", "Source Applicator Wall Nominal Transmission", FUNCDCM_NONE ),
2706     ENTRY( 0x300a, 0x02a0, "DS", "Source Applicator Step Size", FUNCDCM_NONE ),
2707     ENTRY( 0x300a, 0x02a2, "IS", "Transfer Tube Number", FUNCDCM_NONE ),
2708     ENTRY( 0x300a, 0x02a4, "DS", "Transfer Tube Length", FUNCDCM_NONE ),
2709     ENTRY( 0x300a, 0x02b0, "SQ", "Channel Shield Sequence", FUNCDCM_NONE ),
2710     ENTRY( 0x300a, 0x02b2, "IS", "Channel Shield Number", FUNCDCM_NONE ),
2711     ENTRY( 0x300a, 0x02b3, "SH", "Channel Shield ID", FUNCDCM_NONE ),
2712     ENTRY( 0x300a, 0x02b4, "LO", "Channel Shield Name", FUNCDCM_NONE ),
2713     ENTRY( 0x300a, 0x02b8, "DS", "Channel Shield Nominal Thickness", FUNCDCM_NONE ),
2714     ENTRY( 0x300a, 0x02ba, "DS", "Channel Shield Nominal Transmission", FUNCDCM_NONE ),
2715     ENTRY( 0x300a, 0x02c8, "DS", "Final Cumulative Time Weight", FUNCDCM_NONE ),
2716     ENTRY( 0x300a, 0x02d0, "SQ", "Brachy Control Point Sequence", FUNCDCM_NONE ),
2717     ENTRY( 0x300a, 0x02d2, "DS", "Control Point Relative Position", FUNCDCM_NONE ),
2718     ENTRY( 0x300a, 0x02d4, "DS", "Control Point 3D Position", FUNCDCM_NONE ),
2719     ENTRY( 0x300a, 0x02d6, "DS", "Cumulative Time Weight", FUNCDCM_NONE ),
2720     ENTRY( 0x300c, 0x0002, "SQ", "Referenced RT Plan Sequence", FUNCDCM_NONE ),
2721     ENTRY( 0x300c, 0x0004, "SQ", "Referenced Beam Sequence", FUNCDCM_NONE ),
2722     ENTRY( 0x300c, 0x0006, "IS", "Referenced Beam Number", FUNCDCM_NONE ),
2723     ENTRY( 0x300c, 0x0007, "IS", "Referenced Reference Image Number", FUNCDCM_NONE ),
2724     ENTRY( 0x300c, 0x0008, "DS", "Start Cumulative Meterset Weight", FUNCDCM_NONE ),
2725     ENTRY( 0x300c, 0x0009, "DS", "End Cumulative Meterset Weight", FUNCDCM_NONE ),
2726     ENTRY( 0x300c, 0x000a, "SQ", "Referenced Brachy Application Setup Sequence", FUNCDCM_NONE ),
2727     ENTRY( 0x300c, 0x000c, "IS", "Referenced Brachy Application Setup Number", FUNCDCM_NONE ),
2728     ENTRY( 0x300c, 0x000e, "IS", "Referenced Source Number", FUNCDCM_NONE ),
2729     ENTRY( 0x300c, 0x0020, "SQ", "Referenced Fraction Group Sequence", FUNCDCM_NONE ),
2730     ENTRY( 0x300c, 0x0022, "IS", "Referenced Fraction Group Number", FUNCDCM_NONE ),
2731     ENTRY( 0x300c, 0x0040, "SQ", "Referenced Verification Image Sequence", FUNCDCM_NONE ),
2732     ENTRY( 0x300c, 0x0042, "SQ", "Referenced Reference Image Sequence", FUNCDCM_NONE ),
2733     ENTRY( 0x300c, 0x0050, "SQ", "Referenced Dose Reference Sequence", FUNCDCM_NONE ),
2734     ENTRY( 0x300c, 0x0051, "IS", "Referenced Dose Reference Number", FUNCDCM_NONE ),
2735     ENTRY( 0x300c, 0x0055, "SQ", "Brachy Referenced Dose Reference Sequence", FUNCDCM_NONE ),
2736     ENTRY( 0x300c, 0x0060, "SQ", "Referenced Structure Set Sequence", FUNCDCM_NONE ),
2737     ENTRY( 0x300c, 0x006a, "IS", "Referenced Patient Setup Number", FUNCDCM_NONE ),
2738     ENTRY( 0x300c, 0x0080, "SQ", "Referenced Dose Sequence", FUNCDCM_NONE ),
2739     ENTRY( 0x300c, 0x00a0, "IS", "Referenced Tolerance Table Number", FUNCDCM_NONE ),
2740     ENTRY( 0x300c, 0x00b0, "SQ", "Referenced Bolus Sequence", FUNCDCM_NONE ),
2741     ENTRY( 0x300c, 0x00c0, "IS", "Referenced Wedge Number", FUNCDCM_NONE ),
2742     ENTRY( 0x300c, 0x00d0, "IS", "Referenced Compensato rNumber", FUNCDCM_NONE ),
2743     ENTRY( 0x300c, 0x00e0, "IS", "Referenced Block Number", FUNCDCM_NONE ),
2744     ENTRY( 0x300c, 0x00f0, "IS", "Referenced Control Point", FUNCDCM_NONE ),
2745     ENTRY( 0x300e, 0x0002, "CS", "Approval Status", FUNCDCM_NONE ),
2746     ENTRY( 0x300e, 0x0004, "DA", "Review Date", FUNCDCM_NONE ),
2747     ENTRY( 0x300e, 0x0005, "TM", "Review Time", FUNCDCM_NONE ),
2748     ENTRY( 0x300e, 0x0008, "PN", "Reviewer Name", FUNCDCM_NONE ),
2749     ENTRY( 0x4000, 0x0000, "UL", "Text Group Length", FUNCDCM_NONE ),
2750     ENTRY( 0x4000, 0x0010, "LT", "Text Arbitrary", FUNCDCM_NONE ),
2751     ENTRY( 0x4000, 0x4000, "LT", "Text Comments", FUNCDCM_NONE ),
2752     ENTRY( 0x4008, 0x0000, "UL", "Results Group Length", FUNCDCM_NONE ),
2753     ENTRY( 0x4008, 0x0040, "SH", "Results ID", FUNCDCM_NONE ),
2754     ENTRY( 0x4008, 0x0042, "LO", "Results ID Issuer", FUNCDCM_NONE ),
2755     ENTRY( 0x4008, 0x0050, "SQ", "Referenced Interpretation Sequence", FUNCDCM_NONE ),
2756     ENTRY( 0x4008, 0x00ff, "CS", "Report Production Status", FUNCDCM_NONE ),
2757     ENTRY( 0x4008, 0x0100, "DA", "Interpretation Recorded Date", FUNCDCM_NONE ),
2758     ENTRY( 0x4008, 0x0101, "TM", "Interpretation Recorded Time", FUNCDCM_NONE ),
2759     ENTRY( 0x4008, 0x0102, "PN", "Interpretation Recorder", FUNCDCM_NONE ),
2760     ENTRY( 0x4008, 0x0103, "LO", "Reference to Recorded Sound", FUNCDCM_NONE ),
2761     ENTRY( 0x4008, 0x0108, "DA", "Interpretation Transcription Date", FUNCDCM_NONE ),
2762     ENTRY( 0x4008, 0x0109, "TM", "Interpretation Transcription Time", FUNCDCM_NONE ),
2763     ENTRY( 0x4008, 0x010a, "PN", "Interpretation Transcriber", FUNCDCM_NONE ),
2764     ENTRY( 0x4008, 0x010b, "ST", "Interpretation Text", FUNCDCM_NONE ),
2765     ENTRY( 0x4008, 0x010c, "PN", "Interpretation Author", FUNCDCM_NONE ),
2766     ENTRY( 0x4008, 0x0111, "SQ", "Interpretation Approver Sequence", FUNCDCM_NONE ),
2767     ENTRY( 0x4008, 0x0112, "DA", "Interpretation Approval Date", FUNCDCM_NONE ),
2768     ENTRY( 0x4008, 0x0113, "TM", "Interpretation Approval Time", FUNCDCM_NONE ),
2769     ENTRY( 0x4008, 0x0114, "PN", "Physician Approving Interpretation", FUNCDCM_NONE ),
2770     ENTRY( 0x4008, 0x0115, "LT", "Interpretation Diagnosis Description", FUNCDCM_NONE ),
2771     ENTRY( 0x4008, 0x0117, "SQ", "InterpretationDiagnosis Code Sequence", FUNCDCM_NONE ),
2772     ENTRY( 0x4008, 0x0118, "SQ", "Results Distribution List Sequence", FUNCDCM_NONE ),
2773     ENTRY( 0x4008, 0x0119, "PN", "Distribution Name", FUNCDCM_NONE ),
2774     ENTRY( 0x4008, 0x011a, "LO", "Distribution Address", FUNCDCM_NONE ),
2775     ENTRY( 0x4008, 0x0200, "SH", "Interpretation ID", FUNCDCM_NONE ),
2776     ENTRY( 0x4008, 0x0202, "LO", "Interpretation ID Issuer", FUNCDCM_NONE ),
2777     ENTRY( 0x4008, 0x0210, "CS", "Interpretation Type ID", FUNCDCM_NONE ),
2778     ENTRY( 0x4008, 0x0212, "CS", "Interpretation Status ID", FUNCDCM_NONE ),
2779     ENTRY( 0x4008, 0x0300, "ST", "Impressions", FUNCDCM_NONE ),
2780     ENTRY( 0x4008, 0x4000, "ST", "Results Comments", FUNCDCM_NONE ),
2781     ENTRY( 0x4009, 0x0001, "LT", "Report ID", FUNCDCM_NONE ),
2782     ENTRY( 0x4009, 0x0020, "LT", "Report Status", FUNCDCM_NONE ),
2783     ENTRY( 0x4009, 0x0030, "DA", "Report Creation Date", FUNCDCM_NONE ),
2784     ENTRY( 0x4009, 0x0070, "LT", "Report Approving Physician", FUNCDCM_NONE ),
2785     ENTRY( 0x4009, 0x00e0, "LT", "Report Text", FUNCDCM_NONE ),
2786     ENTRY( 0x4009, 0x00e1, "LT", "Report Author", FUNCDCM_NONE ),
2787     ENTRY( 0x4009, 0x00e3, "LT", "Reporting Radiologist", FUNCDCM_NONE ),
2788     ENTRY( 0x5000, 0x0000, "UL", "Curve Group Length", FUNCDCM_NONE ),
2789     ENTRY( 0x5000, 0x0005, "US", "Curve Dimensions", FUNCDCM_NONE ),
2790     ENTRY( 0x5000, 0x0010, "US", "Number of Points", FUNCDCM_NONE ),
2791     ENTRY( 0x5000, 0x0020, "CS", "Type of Data", FUNCDCM_NONE ),
2792     ENTRY( 0x5000, 0x0022, "LO", "Curve Description", FUNCDCM_NONE ),
2793     ENTRY( 0x5000, 0x0030, "SH", "Axis Units", FUNCDCM_NONE ),
2794     ENTRY( 0x5000, 0x0040, "SH", "Axis Labels", FUNCDCM_NONE ),
2795     ENTRY( 0x5000, 0x0103, "US", "Data Value Representation", FUNCDCM_NONE ),
2796     ENTRY( 0x5000, 0x0104, "US", "Minimum Coordinate Value", FUNCDCM_NONE ),
2797     ENTRY( 0x5000, 0x0105, "US", "Maximum Coordinate Value", FUNCDCM_NONE ),
2798     ENTRY( 0x5000, 0x0106, "SH", "Curve Range", FUNCDCM_NONE ),
2799     ENTRY( 0x5000, 0x0110, "US", "Curve Data Descriptor", FUNCDCM_NONE ),
2800     ENTRY( 0x5000, 0x0112, "US", "Coordinate Start Value", FUNCDCM_NONE ),
2801     ENTRY( 0x5000, 0x0114, "US", "Coordinate Step Value", FUNCDCM_NONE ),
2802     ENTRY( 0x5000, 0x1001, "CS", "Curve Activation Layer", FUNCDCM_NONE ),
2803     ENTRY( 0x5000, 0x2000, "US", "Audio Type", FUNCDCM_NONE ),
2804     ENTRY( 0x5000, 0x2002, "US", "Audio Sample Format", FUNCDCM_NONE ),
2805     ENTRY( 0x5000, 0x2004, "US", "Number of Channels", FUNCDCM_NONE ),
2806     ENTRY( 0x5000, 0x2006, "UL", "Number of Samples", FUNCDCM_NONE ),
2807     ENTRY( 0x5000, 0x2008, "UL", "Sample Rate", FUNCDCM_NONE ),
2808     ENTRY( 0x5000, 0x200a, "UL", "Total Time", FUNCDCM_NONE ),
2809     ENTRY( 0x5000, 0x200c, "xs", "Audio Sample Data", FUNCDCM_NONE ),
2810     ENTRY( 0x5000, 0x200e, "LT", "Audio Comments", FUNCDCM_NONE ),
2811     ENTRY( 0x5000, 0x2500, "LO", "Curve Label", FUNCDCM_NONE ),
2812     ENTRY( 0x5000, 0x2600, "SQ", "CurveReferenced Overlay Sequence", FUNCDCM_NONE ),
2813     ENTRY( 0x5000, 0x2610, "US", "CurveReferenced Overlay Group", FUNCDCM_NONE ),
2814     ENTRY( 0x5000, 0x3000, "OW", "Curve Data", FUNCDCM_NONE ),
2815     ENTRY( 0x6000, 0x0000, "UL", "Overlay Group Length", FUNCDCM_NONE ),
2816     ENTRY( 0x6000, 0x0001, "US", "Gray Palette Color Lookup Table Descriptor", FUNCDCM_NONE ),
2817     ENTRY( 0x6000, 0x0002, "US", "Gray Palette Color Lookup Table Data", FUNCDCM_NONE ),
2818     ENTRY( 0x6000, 0x0010, "US", "Overlay Rows", FUNCDCM_NONE ),
2819     ENTRY( 0x6000, 0x0011, "US", "Overlay Columns", FUNCDCM_NONE ),
2820     ENTRY( 0x6000, 0x0012, "US", "Overlay Planes", FUNCDCM_NONE ),
2821     ENTRY( 0x6000, 0x0015, "IS", "Number of Frames in Overlay", FUNCDCM_NONE ),
2822     ENTRY( 0x6000, 0x0022, "LO", "Overlay Description", FUNCDCM_NONE ),
2823     ENTRY( 0x6000, 0x0040, "CS", "Overlay Type", FUNCDCM_NONE ),
2824     ENTRY( 0x6000, 0x0045, "CS", "Overlay Subtype", FUNCDCM_NONE ),
2825     ENTRY( 0x6000, 0x0050, "SS", "Overlay Origin", FUNCDCM_NONE ),
2826     ENTRY( 0x6000, 0x0051, "US", "Image Frame Origin", FUNCDCM_NONE ),
2827     ENTRY( 0x6000, 0x0052, "US", "Plane Origin", FUNCDCM_NONE ),
2828     ENTRY( 0x6000, 0x0060, "LO", "Overlay Compression Code", FUNCDCM_NONE ),
2829     ENTRY( 0x6000, 0x0061, "SH", "Overlay Compression Originator", FUNCDCM_NONE ),
2830     ENTRY( 0x6000, 0x0062, "SH", "Overlay Compression Label", FUNCDCM_NONE ),
2831     ENTRY( 0x6000, 0x0063, "SH", "Overlay Compression Description", FUNCDCM_NONE ),
2832     ENTRY( 0x6000, 0x0066, "AT", "Overlay Compression Step Pointers", FUNCDCM_NONE ),
2833     ENTRY( 0x6000, 0x0068, "US", "Overlay Repeat Interval", FUNCDCM_NONE ),
2834     ENTRY( 0x6000, 0x0069, "US", "Overlay Bits Grouped", FUNCDCM_NONE ),
2835     ENTRY( 0x6000, 0x0100, "US", "Overlay Bits Allocated", FUNCDCM_NONE ),
2836     ENTRY( 0x6000, 0x0102, "US", "Overlay Bit Position", FUNCDCM_NONE ),
2837     ENTRY( 0x6000, 0x0110, "LO", "Overlay Format", FUNCDCM_NONE ),
2838     ENTRY( 0x6000, 0x0200, "xs", "Overlay Location", FUNCDCM_NONE ),
2839     ENTRY( 0x6000, 0x0800, "LO", "Overlay Code Label", FUNCDCM_NONE ),
2840     ENTRY( 0x6000, 0x0802, "US", "Overlay Number of Tables", FUNCDCM_NONE ),
2841     ENTRY( 0x6000, 0x0803, "AT", "Overlay Code Table Location", FUNCDCM_NONE ),
2842     ENTRY( 0x6000, 0x0804, "US", "Overlay Bits For Code Word", FUNCDCM_NONE ),
2843     ENTRY( 0x6000, 0x1001, "CS", "Overlay Activation Layer", FUNCDCM_NONE ),
2844     ENTRY( 0x6000, 0x1100, "US", "Overlay Descriptor - Gray", FUNCDCM_NONE ),
2845     ENTRY( 0x6000, 0x1101, "US", "Overlay Descriptor - Red", FUNCDCM_NONE ),
2846     ENTRY( 0x6000, 0x1102, "US", "Overlay Descriptor - Green", FUNCDCM_NONE ),
2847     ENTRY( 0x6000, 0x1103, "US", "Overlay Descriptor - Blue", FUNCDCM_NONE ),
2848     ENTRY( 0x6000, 0x1200, "US", "Overlays - Gray", FUNCDCM_NONE ),
2849     ENTRY( 0x6000, 0x1201, "US", "Overlays - Red", FUNCDCM_NONE ),
2850     ENTRY( 0x6000, 0x1202, "US", "Overlays - Green", FUNCDCM_NONE ),
2851     ENTRY( 0x6000, 0x1203, "US", "Overlays - Blue", FUNCDCM_NONE ),
2852     ENTRY( 0x6000, 0x1301, "IS", "ROI Area", FUNCDCM_NONE ),
2853     ENTRY( 0x6000, 0x1302, "DS", "ROI Mean", FUNCDCM_NONE ),
2854     ENTRY( 0x6000, 0x1303, "DS", "ROI Standard Deviation", FUNCDCM_NONE ),
2855     ENTRY( 0x6000, 0x1500, "LO", "Overlay Label", FUNCDCM_NONE ),
2856     ENTRY( 0x6000, 0x3000, "OW", "Overlay Data", FUNCDCM_NONE ),
2857     ENTRY( 0x6000, 0x4000, "LT", "Overlay Comments", FUNCDCM_NONE ),
2858     ENTRY( 0x6001, 0x0000, "UN", "?", FUNCDCM_NONE ),
2859     ENTRY( 0x6001, 0x0010, "LO", "?", FUNCDCM_NONE ),
2860     ENTRY( 0x6001, 0x1010, "xs", "?", FUNCDCM_NONE ),
2861     ENTRY( 0x6001, 0x1030, "xs", "?", FUNCDCM_NONE ),
2862     ENTRY( 0x6021, 0x0000, "xs", "?", FUNCDCM_NONE ),
2863     ENTRY( 0x6021, 0x0010, "xs", "?", FUNCDCM_NONE ),
2864     ENTRY( 0x7001, 0x0010, "LT", "Dummy", FUNCDCM_NONE ),
2865     ENTRY( 0x7003, 0x0010, "LT", "Info", FUNCDCM_NONE ),
2866     ENTRY( 0x7005, 0x0010, "LT", "Dummy", FUNCDCM_NONE ),
2867     ENTRY( 0x7000, 0x0004, "ST", "TextAnnotation", FUNCDCM_NONE ),
2868     ENTRY( 0x7000, 0x0005, "IS", "Box", FUNCDCM_NONE ),
2869     ENTRY( 0x7000, 0x0007, "IS", "ArrowEnd", FUNCDCM_NONE ),
2870     ENTRY( 0x7fe0, 0x0000, "UL", "Pixel Data Group Length", FUNCDCM_NONE ),
2871     ENTRY( 0x7fe0, 0x0010, "xs", "Pixel Data", FUNCDCM_NONE ),
2872     ENTRY( 0x7fe0, 0x0020, "OW", "Coefficients SDVN", FUNCDCM_NONE ),
2873     ENTRY( 0x7fe0, 0x0030, "OW", "Coefficients SDHN", FUNCDCM_NONE ),
2874     ENTRY( 0x7fe0, 0x0040, "OW", "Coefficients SDDN", FUNCDCM_NONE ),
2875     ENTRY( 0x7fe1, 0x0010, "xs", "Pixel Data", FUNCDCM_NONE ),
2876     ENTRY( 0x7f00, 0x0000, "UL", "Variable Pixel Data Group Length", FUNCDCM_NONE ),
2877     ENTRY( 0x7f00, 0x0010, "xs", "Variable Pixel Data", FUNCDCM_NONE ),
2878     ENTRY( 0x7f00, 0x0011, "US", "Variable Next Data Group", FUNCDCM_NONE ),
2879     ENTRY( 0x7f00, 0x0020, "OW", "Variable Coefficients SDVN", FUNCDCM_NONE ),
2880     ENTRY( 0x7f00, 0x0030, "OW", "Variable Coefficients SDHN", FUNCDCM_NONE ),
2881     ENTRY( 0x7f00, 0x0040, "OW", "Variable Coefficients SDDN", FUNCDCM_NONE ),
2882     ENTRY( 0x7fe1, 0x0000, "OB", "Binary Data", FUNCDCM_NONE ),
2883     ENTRY( 0x7fe3, 0x0000, "LT", "Image Graphics Format Code", FUNCDCM_NONE ),
2884     ENTRY( 0x7fe3, 0x0010, "OB", "Image Graphics", FUNCDCM_NONE ),
2885     ENTRY( 0x7fe3, 0x0020, "OB", "Image Graphics Dummy", FUNCDCM_NONE ),
2886     ENTRY( 0x7ff1, 0x0001, "US", "?", FUNCDCM_NONE ),
2887     ENTRY( 0x7ff1, 0x0002, "US", "?", FUNCDCM_NONE ),
2888     ENTRY( 0x7ff1, 0x0003, "xs", "?", FUNCDCM_NONE ),
2889     ENTRY( 0x7ff1, 0x0004, "IS", "?", FUNCDCM_NONE ),
2890     ENTRY( 0x7ff1, 0x0005, "US", "?", FUNCDCM_NONE ),
2891     ENTRY( 0x7ff1, 0x0007, "US", "?", FUNCDCM_NONE ),
2892     ENTRY( 0x7ff1, 0x0008, "US", "?", FUNCDCM_NONE ),
2893     ENTRY( 0x7ff1, 0x0009, "US", "?", FUNCDCM_NONE ),
2894     ENTRY( 0x7ff1, 0x000a, "LT", "?", FUNCDCM_NONE ),
2895     ENTRY( 0x7ff1, 0x000b, "US", "?", FUNCDCM_NONE ),
2896     ENTRY( 0x7ff1, 0x000c, "US", "?", FUNCDCM_NONE ),
2897     ENTRY( 0x7ff1, 0x000d, "US", "?", FUNCDCM_NONE ),
2898     ENTRY( 0x7ff1, 0x0010, "US", "?", FUNCDCM_NONE ),
2899     ENTRY( 0xfffc, 0xfffc, "OB", "Data Set Trailing Padding", FUNCDCM_NONE ),
2900     ENTRY( 0xfffe, 0xe000, "!!", "Item", FUNCDCM_NONE ),
2901     ENTRY( 0xfffe, 0xe00d, "!!", "Item Delimitation Item", FUNCDCM_NONE ),
2902     ENTRY( 0xfffe, 0xe0dd, "!!", "Sequence Delimitation Item", FUNCDCM_NONE ),
2903     ENTRY( 0xffff, 0xffff, "xs", "", FUNCDCM_NONE )
2904   };
2905 
2906 #if DESCRIPION_STR
2907 static const char dicom_descriptions[] =
2908     "Group Length\0" /* 0, 0x0000, 0x0000 */
2909     "Command Length to End\0" /* 1, 0x0000, 0x0001 */
2910     "Affected SOP Class UID\0" /* 2, 0x0000, 0x0002 */
2911     "Requested SOP Class UID\0" /* 3, 0x0000, 0x0003 */
2912     "Command Recognition Code\0" /* 4, 0x0000, 0x0010 */
2913     "Command Field\0" /* 5, 0x0000, 0x0100 */
2914     "Message ID\0" /* 6, 0x0000, 0x0110 */
2915     "Message ID Being Responded To\0" /* 7, 0x0000, 0x0120 */
2916     "Initiator\0" /* 8, 0x0000, 0x0200 */
2917     "Receiver\0" /* 9, 0x0000, 0x0300 */
2918     "Find Location\0" /* 10, 0x0000, 0x0400 */
2919     "Move Destination\0" /* 11, 0x0000, 0x0600 */
2920     "Priority\0" /* 12, 0x0000, 0x0700 */
2921     "Data Set Type\0" /* 13, 0x0000, 0x0800 */
2922     "Number of Matches\0" /* 14, 0x0000, 0x0850 */
2923     "Response Sequence Number\0" /* 15, 0x0000, 0x0860 */
2924     "Status\0" /* 16, 0x0000, 0x0900 */
2925     "Offending Element\0" /* 17, 0x0000, 0x0901 */
2926     "Exception Comment\0" /* 18, 0x0000, 0x0902 */
2927     "Exception ID\0" /* 19, 0x0000, 0x0903 */
2928     "Affected SOP Instance UID\0" /* 20, 0x0000, 0x1000 */
2929     "Requested SOP Instance UID\0" /* 21, 0x0000, 0x1001 */
2930     "Event Type ID\0" /* 22, 0x0000, 0x1002 */
2931     "Attribute Identifier List\0" /* 23, 0x0000, 0x1005 */
2932     "Action Type ID\0" /* 24, 0x0000, 0x1008 */
2933     "Number of Remaining Suboperations\0" /* 25, 0x0000, 0x1020 */
2934     "Number of Completed Suboperations\0" /* 26, 0x0000, 0x1021 */
2935     "Number of Failed Suboperations\0" /* 27, 0x0000, 0x1022 */
2936     "Number of Warning Suboperations\0" /* 28, 0x0000, 0x1023 */
2937     "Move Originator Application Entity Title\0" /* 29, 0x0000, 0x1030 */
2938     "Move Originator Message ID\0" /* 30, 0x0000, 0x1031 */
2939     "Dialog Receiver\0" /* 31, 0x0000, 0x4000 */
2940     "Terminal Type\0" /* 32, 0x0000, 0x4010 */
2941     "Message Set ID\0" /* 33, 0x0000, 0x5010 */
2942     "End Message Set\0" /* 34, 0x0000, 0x5020 */
2943     "Display Format\0" /* 35, 0x0000, 0x5110 */
2944     "Page Position ID\0" /* 36, 0x0000, 0x5120 */
2945     "Text Format ID\0" /* 37, 0x0000, 0x5130 */
2946     "Normal Reverse\0" /* 38, 0x0000, 0x5140 */
2947     "Add Gray Scale\0" /* 39, 0x0000, 0x5150 */
2948     "Borders\0" /* 40, 0x0000, 0x5160 */
2949     "Copies\0" /* 41, 0x0000, 0x5170 */
2950     "OldMagnificationType\0" /* 42, 0x0000, 0x5180 */
2951     "Erase\0" /* 43, 0x0000, 0x5190 */
2952     "Print\0" /* 44, 0x0000, 0x51a0 */
2953     "Overlays\0" /* 45, 0x0000, 0x51b0 */
2954     "Meta Element Group Length\0" /* 46, 0x0002, 0x0000 */
2955     "File Meta Information Version\0" /* 47, 0x0002, 0x0001 */
2956     "Media Storage SOP Class UID\0" /* 48, 0x0002, 0x0002 */
2957     "Media Storage SOP Instance UID\0" /* 49, 0x0002, 0x0003 */
2958     "Transfer Syntax UID\0" /* 50, 0x0002, 0x0010 */
2959     "Implementation Class UID\0" /* 51, 0x0002, 0x0012 */
2960     "Implementation Version Name\0" /* 52, 0x0002, 0x0013 */
2961     "Source Application Entity Title\0" /* 53, 0x0002, 0x0016 */
2962     "Private Information Creator UID\0" /* 54, 0x0002, 0x0100 */
2963     "Private Information\0" /* 55, 0x0002, 0x0102 */
2964     "?\0" /* 56, 0x0003, 0x0000 */
2965     "ISI Command Field\0" /* 57, 0x0003, 0x0008 */
2966     "Attach ID Application Code\0" /* 58, 0x0003, 0x0011 */
2967     "Attach ID Message Count\0" /* 59, 0x0003, 0x0012 */
2968     "Attach ID Date\0" /* 60, 0x0003, 0x0013 */
2969     "Attach ID Time\0" /* 61, 0x0003, 0x0014 */
2970     "Message Type\0" /* 62, 0x0003, 0x0020 */
2971     "Max Waiting Date\0" /* 63, 0x0003, 0x0030 */
2972     "Max Waiting Time\0" /* 64, 0x0003, 0x0031 */
2973     "File Set Group Length\0" /* 65, 0x0004, 0x0000 */
2974     "File Set ID\0" /* 66, 0x0004, 0x1130 */
2975     "File Set Descriptor File ID\0" /* 67, 0x0004, 0x1141 */
2976     "File Set Descriptor File Specific Character Set\0" /* 68, 0x0004, 0x1142 */
2977     "Root Directory Entity First Directory Record Offset\0" /* 69, 0x0004, 0x1200 */
2978     "Root Directory Entity Last Directory Record Offset\0" /* 70, 0x0004, 0x1202 */
2979     "File Set Consistency Flag\0" /* 71, 0x0004, 0x1212 */
2980     "Directory Record Sequence\0" /* 72, 0x0004, 0x1220 */
2981     "Next Directory Record Offset\0" /* 73, 0x0004, 0x1400 */
2982     "Record In Use Flag\0" /* 74, 0x0004, 0x1410 */
2983     "Referenced Lower Level Directory Entity Offset\0" /* 75, 0x0004, 0x1420 */
2984     "Directory Record Type\0" /* 76, 0x0004, 0x1430 */
2985     "Private Record UID\0" /* 77, 0x0004, 0x1432 */
2986     "Referenced File ID\0" /* 78, 0x0004, 0x1500 */
2987     "MRDR Directory Record Offset\0" /* 79, 0x0004, 0x1504 */
2988     "Referenced SOP Class UID In File\0" /* 80, 0x0004, 0x1510 */
2989     "Referenced SOP Instance UID In File\0" /* 81, 0x0004, 0x1511 */
2990     "Referenced Transfer Syntax UID In File\0" /* 82, 0x0004, 0x1512 */
2991     "Number of References\0" /* 83, 0x0004, 0x1600 */
2992     "?\0" /* 84, 0x0005, 0x0000 */
2993     "?\0" /* 85, 0x0006, 0x0000 */
2994     "Identifying Group Length\0" /* 86, 0x0008, 0x0000 */
2995     "Length to End\0" /* 87, 0x0008, 0x0001 */
2996     "Specific Character Set\0" /* 88, 0x0008, 0x0005 */
2997     "Image Type\0" /* 89, 0x0008, 0x0008 */
2998     "Recognition Code\0" /* 90, 0x0008, 0x0010 */
2999     "Instance Creation Date\0" /* 91, 0x0008, 0x0012 */
3000     "Instance Creation Time\0" /* 92, 0x0008, 0x0013 */
3001     "Instance Creator UID\0" /* 93, 0x0008, 0x0014 */
3002     "SOP Class UID\0" /* 94, 0x0008, 0x0016 */
3003     "SOP Instance UID\0" /* 95, 0x0008, 0x0018 */
3004     "Study Date\0" /* 96, 0x0008, 0x0020 */
3005     "Series Date\0" /* 97, 0x0008, 0x0021 */
3006     "Acquisition Date\0" /* 98, 0x0008, 0x0022 */
3007     "Image Date\0" /* 99, 0x0008, 0x0023 */
3008     "Overlay Date\0" /* 100, 0x0008, 0x0024 */
3009     "Curve Date\0" /* 101, 0x0008, 0x0025 */
3010     "Study Time\0" /* 102, 0x0008, 0x0030 */
3011     "Series Time\0" /* 103, 0x0008, 0x0031 */
3012     "Acquisition Time\0" /* 104, 0x0008, 0x0032 */
3013     "Image Time\0" /* 105, 0x0008, 0x0033 */
3014     "Overlay Time\0" /* 106, 0x0008, 0x0034 */
3015     "Curve Time\0" /* 107, 0x0008, 0x0035 */
3016     "Old Data Set Type\0" /* 108, 0x0008, 0x0040 */
3017     "Old Data Set Subtype\0" /* 109, 0x0008, 0x0041 */
3018     "Nuclear Medicine Series Type\0" /* 110, 0x0008, 0x0042 */
3019     "Accession Number\0" /* 111, 0x0008, 0x0050 */
3020     "Query/Retrieve Level\0" /* 112, 0x0008, 0x0052 */
3021     "Retrieve AE Title\0" /* 113, 0x0008, 0x0054 */
3022     "Failed SOP Instance UID List\0" /* 114, 0x0008, 0x0058 */
3023     "Modality\0" /* 115, 0x0008, 0x0060 */
3024     "Modality Subtype\0" /* 116, 0x0008, 0x0062 */
3025     "Conversion Type\0" /* 117, 0x0008, 0x0064 */
3026     "Presentation Intent Type\0" /* 118, 0x0008, 0x0068 */
3027     "Manufacturer\0" /* 119, 0x0008, 0x0070 */
3028     "Institution Name\0" /* 120, 0x0008, 0x0080 */
3029     "Institution Address\0" /* 121, 0x0008, 0x0081 */
3030     "Institution Code Sequence\0" /* 122, 0x0008, 0x0082 */
3031     "Referring Physician's Name\0" /* 123, 0x0008, 0x0090 */
3032     "Referring Physician's Address\0" /* 124, 0x0008, 0x0092 */
3033     "Referring Physician's Telephone Numbers\0" /* 125, 0x0008, 0x0094 */
3034     "Code Value\0" /* 126, 0x0008, 0x0100 */
3035     "Coding Scheme Designator\0" /* 127, 0x0008, 0x0102 */
3036     "Coding Scheme Version\0" /* 128, 0x0008, 0x0103 */
3037     "Code Meaning\0" /* 129, 0x0008, 0x0104 */
3038     "Mapping Resource\0" /* 130, 0x0008, 0x0105 */
3039     "Context Group Version\0" /* 131, 0x0008, 0x0106 */
3040     "Code Set Extension Flag\0" /* 132, 0x0008, 0x010b */
3041     "Private Coding Scheme Creator UID\0" /* 133, 0x0008, 0x010c */
3042     "Code Set Extension Creator UID\0" /* 134, 0x0008, 0x010d */
3043     "Context Identifier\0" /* 135, 0x0008, 0x010f */
3044     "Network ID\0" /* 136, 0x0008, 0x1000 */
3045     "Station Name\0" /* 137, 0x0008, 0x1010 */
3046     "Study Description\0" /* 138, 0x0008, 0x1030 */
3047     "Procedure Code Sequence\0" /* 139, 0x0008, 0x1032 */
3048     "Series Description\0" /* 140, 0x0008, 0x103e */
3049     "Institutional Department Name\0" /* 141, 0x0008, 0x1040 */
3050     "Physician of Record\0" /* 142, 0x0008, 0x1048 */
3051     "Performing Physician's Name\0" /* 143, 0x0008, 0x1050 */
3052     "Name of Physician(s) Reading Study\0" /* 144, 0x0008, 0x1060 */
3053     "Operator's Name\0" /* 145, 0x0008, 0x1070 */
3054     "Admitting Diagnosis Description\0" /* 146, 0x0008, 0x1080 */
3055     "Admitting Diagnosis Code Sequence\0" /* 147, 0x0008, 0x1084 */
3056     "Manufacturer's Model Name\0" /* 148, 0x0008, 0x1090 */
3057     "Referenced Results Sequence\0" /* 149, 0x0008, 0x1100 */
3058     "Referenced Study Sequence\0" /* 150, 0x0008, 0x1110 */
3059     "Referenced Study Component Sequence\0" /* 151, 0x0008, 0x1111 */
3060     "Referenced Series Sequence\0" /* 152, 0x0008, 0x1115 */
3061     "Referenced Patient Sequence\0" /* 153, 0x0008, 0x1120 */
3062     "Referenced Visit Sequence\0" /* 154, 0x0008, 0x1125 */
3063     "Referenced Overlay Sequence\0" /* 155, 0x0008, 0x1130 */
3064     "Referenced Image Sequence\0" /* 156, 0x0008, 0x1140 */
3065     "Referenced Curve Sequence\0" /* 157, 0x0008, 0x1145 */
3066     "Referenced Previous Waveform\0" /* 158, 0x0008, 0x1148 */
3067     "Referenced Simultaneous Waveforms\0" /* 159, 0x0008, 0x114a */
3068     "Referenced Subsequent Waveform\0" /* 160, 0x0008, 0x114c */
3069     "Referenced SOP Class UID\0" /* 161, 0x0008, 0x1150 */
3070     "Referenced SOP Instance UID\0" /* 162, 0x0008, 0x1155 */
3071     "Referenced Frame Number\0" /* 163, 0x0008, 0x1160 */
3072     "Transaction UID\0" /* 164, 0x0008, 0x1195 */
3073     "Failure Reason\0" /* 165, 0x0008, 0x1197 */
3074     "Failed SOP Sequence\0" /* 166, 0x0008, 0x1198 */
3075     "Referenced SOP Sequence\0" /* 167, 0x0008, 0x1199 */
3076     "Old Lossy Image Compression\0" /* 168, 0x0008, 0x2110 */
3077     "Derivation Description\0" /* 169, 0x0008, 0x2111 */
3078     "Source Image Sequence\0" /* 170, 0x0008, 0x2112 */
3079     "Stage Name\0" /* 171, 0x0008, 0x2120 */
3080     "Stage Number\0" /* 172, 0x0008, 0x2122 */
3081     "Number of Stages\0" /* 173, 0x0008, 0x2124 */
3082     "View Number\0" /* 174, 0x0008, 0x2128 */
3083     "Number of Event Timers\0" /* 175, 0x0008, 0x2129 */
3084     "Number of Views in Stage\0" /* 176, 0x0008, 0x212a */
3085     "Event Elapsed Time(s)\0" /* 177, 0x0008, 0x2130 */
3086     "Event Timer Name(s)\0" /* 178, 0x0008, 0x2132 */
3087     "Start Trim\0" /* 179, 0x0008, 0x2142 */
3088     "Stop Trim\0" /* 180, 0x0008, 0x2143 */
3089     "Recommended Display Frame Rate\0" /* 181, 0x0008, 0x2144 */
3090     "Transducer Position\0" /* 182, 0x0008, 0x2200 */
3091     "Transducer Orientation\0" /* 183, 0x0008, 0x2204 */
3092     "Anatomic Structure\0" /* 184, 0x0008, 0x2208 */
3093     "Anatomic Region Sequence\0" /* 185, 0x0008, 0x2218 */
3094     "Anatomic Region Modifier Sequence\0" /* 186, 0x0008, 0x2220 */
3095     "Primary Anatomic Structure Sequence\0" /* 187, 0x0008, 0x2228 */
3096     "Primary Anatomic Structure Modifier Sequence\0" /* 188, 0x0008, 0x2230 */
3097     "Transducer Position Sequence\0" /* 189, 0x0008, 0x2240 */
3098     "Transducer Position Modifier Sequence\0" /* 190, 0x0008, 0x2242 */
3099     "Transducer Orientation Sequence\0" /* 191, 0x0008, 0x2244 */
3100     "Transducer Orientation Modifier Sequence\0" /* 192, 0x0008, 0x2246 */
3101     "Anatomic Structure Space Or Region Code Sequence\0" /* 193, 0x0008, 0x2251 */
3102     "Anatomic Portal Of Entrance Code Sequence\0" /* 194, 0x0008, 0x2253 */
3103     "Anatomic Approach Direction Code Sequence\0" /* 195, 0x0008, 0x2255 */
3104     "Anatomic Perspective Description\0" /* 196, 0x0008, 0x2256 */
3105     "Anatomic Perspective Code Sequence\0" /* 197, 0x0008, 0x2257 */
3106     "Anatomic Location Of Examining Instrument Description\0" /* 198, 0x0008, 0x2258 */
3107     "Anatomic Location Of Examining Instrument Code Sequence\0" /* 199, 0x0008, 0x2259 */
3108     "Anatomic Structure Space Or Region Modifier Code Sequence\0" /* 200, 0x0008, 0x225a */
3109     "OnAxis Background Anatomic Structure Code Sequence\0" /* 201, 0x0008, 0x225c */
3110     "Identifying Comments\0" /* 202, 0x0008, 0x4000 */
3111     "?\0" /* 203, 0x0009, 0x0000 */
3112     "?\0" /* 204, 0x0009, 0x0001 */
3113     "?\0" /* 205, 0x0009, 0x0002 */
3114     "?\0" /* 206, 0x0009, 0x0003 */
3115     "?\0" /* 207, 0x0009, 0x0004 */
3116     "?\0" /* 208, 0x0009, 0x0005 */
3117     "?\0" /* 209, 0x0009, 0x0006 */
3118     "?\0" /* 210, 0x0009, 0x0007 */
3119     "?\0" /* 211, 0x0009, 0x0008 */
3120     "?\0" /* 212, 0x0009, 0x0009 */
3121     "?\0" /* 213, 0x0009, 0x000a */
3122     "?\0" /* 214, 0x0009, 0x000b */
3123     "?\0" /* 215, 0x0009, 0x000c */
3124     "?\0" /* 216, 0x0009, 0x000d */
3125     "?\0" /* 217, 0x0009, 0x000e */
3126     "?\0" /* 218, 0x0009, 0x000f */
3127     "?\0" /* 219, 0x0009, 0x0010 */
3128     "?\0" /* 220, 0x0009, 0x0011 */
3129     "?\0" /* 221, 0x0009, 0x0012 */
3130     "?\0" /* 222, 0x0009, 0x0013 */
3131     "?\0" /* 223, 0x0009, 0x0014 */
3132     "?\0" /* 224, 0x0009, 0x0015 */
3133     "?\0" /* 225, 0x0009, 0x0016 */
3134     "?\0" /* 226, 0x0009, 0x0017 */
3135     "Data Set Identifier\0" /* 227, 0x0009, 0x0018 */
3136     "?\0" /* 228, 0x0009, 0x001a */
3137     "?\0" /* 229, 0x0009, 0x001e */
3138     "?\0" /* 230, 0x0009, 0x0020 */
3139     "?\0" /* 231, 0x0009, 0x0021 */
3140     "User Orientation\0" /* 232, 0x0009, 0x0022 */
3141     "Initiation Type\0" /* 233, 0x0009, 0x0023 */
3142     "?\0" /* 234, 0x0009, 0x0024 */
3143     "?\0" /* 235, 0x0009, 0x0025 */
3144     "?\0" /* 236, 0x0009, 0x0026 */
3145     "?\0" /* 237, 0x0009, 0x0027 */
3146     "?\0" /* 238, 0x0009, 0x0029 */
3147     "?\0" /* 239, 0x0009, 0x002a */
3148     "Series Comments\0" /* 240, 0x0009, 0x002c */
3149     "Track Beat Average\0" /* 241, 0x0009, 0x002d */
3150     "Distance Prescribed\0" /* 242, 0x0009, 0x002e */
3151     "?\0" /* 243, 0x0009, 0x002f */
3152     "?\0" /* 244, 0x0009, 0x0030 */
3153     "?\0" /* 245, 0x0009, 0x0031 */
3154     "?\0" /* 246, 0x0009, 0x0032 */
3155     "?\0" /* 247, 0x0009, 0x0034 */
3156     "Gantry Locus Type\0" /* 248, 0x0009, 0x0035 */
3157     "Starting Heart Rate\0" /* 249, 0x0009, 0x0037 */
3158     "?\0" /* 250, 0x0009, 0x0038 */
3159     "RR Window Offset\0" /* 251, 0x0009, 0x0039 */
3160     "Percent Cycle Imaged\0" /* 252, 0x0009, 0x003a */
3161     "?\0" /* 253, 0x0009, 0x003e */
3162     "?\0" /* 254, 0x0009, 0x003f */
3163     "?\0" /* 255, 0x0009, 0x0040 */
3164     "?\0" /* 256, 0x0009, 0x0041 */
3165     "?\0" /* 257, 0x0009, 0x0042 */
3166     "?\0" /* 258, 0x0009, 0x0043 */
3167     "?\0" /* 259, 0x0009, 0x0050 */
3168     "?\0" /* 260, 0x0009, 0x0051 */
3169     "?\0" /* 261, 0x0009, 0x0060 */
3170     "Series Unique Identifier\0" /* 262, 0x0009, 0x0061 */
3171     "?\0" /* 263, 0x0009, 0x0070 */
3172     "?\0" /* 264, 0x0009, 0x0080 */
3173     "?\0" /* 265, 0x0009, 0x0091 */
3174     "?\0" /* 266, 0x0009, 0x00e2 */
3175     "Equipment UID\0" /* 267, 0x0009, 0x00e3 */
3176     "Genesis Version Now\0" /* 268, 0x0009, 0x00e6 */
3177     "Exam Record Checksum\0" /* 269, 0x0009, 0x00e7 */
3178     "?\0" /* 270, 0x0009, 0x00e8 */
3179     "Actual Series Data Time Stamp\0" /* 271, 0x0009, 0x00e9 */
3180     "?\0" /* 272, 0x0009, 0x00f2 */
3181     "?\0" /* 273, 0x0009, 0x00f3 */
3182     "?\0" /* 274, 0x0009, 0x00f4 */
3183     "?\0" /* 275, 0x0009, 0x00f5 */
3184     "PDM Data Object Type Extension\0" /* 276, 0x0009, 0x00f6 */
3185     "?\0" /* 277, 0x0009, 0x00f8 */
3186     "?\0" /* 278, 0x0009, 0x00fb */
3187     "?\0" /* 279, 0x0009, 0x1002 */
3188     "?\0" /* 280, 0x0009, 0x1003 */
3189     "?\0" /* 281, 0x0009, 0x1010 */
3190     "Patient Group Length\0" /* 282, 0x0010, 0x0000 */
3191     "Patient's Name\0" /* 283, 0x0010, 0x0010 */
3192     "Patient's ID\0" /* 284, 0x0010, 0x0020 */
3193     "Issuer of Patient's ID\0" /* 285, 0x0010, 0x0021 */
3194     "Patient's Birth Date\0" /* 286, 0x0010, 0x0030 */
3195     "Patient's Birth Time\0" /* 287, 0x0010, 0x0032 */
3196     "Patient's Sex\0" /* 288, 0x0010, 0x0040 */
3197     "Patient's Insurance Plan Code Sequence\0" /* 289, 0x0010, 0x0050 */
3198     "Other Patient's ID's\0" /* 290, 0x0010, 0x1000 */
3199     "Other Patient's Names\0" /* 291, 0x0010, 0x1001 */
3200     "Patient's Birth Name\0" /* 292, 0x0010, 0x1005 */
3201     "Patient's Age\0" /* 293, 0x0010, 0x1010 */
3202     "Patient's Size\0" /* 294, 0x0010, 0x1020 */
3203     "Patient's Weight\0" /* 295, 0x0010, 0x1030 */
3204     "Patient's Address\0" /* 296, 0x0010, 0x1040 */
3205     "Insurance Plan Identification\0" /* 297, 0x0010, 0x1050 */
3206     "Patient's Mother's Birth Name\0" /* 298, 0x0010, 0x1060 */
3207     "Military Rank\0" /* 299, 0x0010, 0x1080 */
3208     "Branch of Service\0" /* 300, 0x0010, 0x1081 */
3209     "Medical Record Locator\0" /* 301, 0x0010, 0x1090 */
3210     "Medical Alerts\0" /* 302, 0x0010, 0x2000 */
3211     "Contrast Allergies\0" /* 303, 0x0010, 0x2110 */
3212     "Country of Residence\0" /* 304, 0x0010, 0x2150 */
3213     "Region of Residence\0" /* 305, 0x0010, 0x2152 */
3214     "Patients Telephone Numbers\0" /* 306, 0x0010, 0x2154 */
3215     "Ethnic Group\0" /* 307, 0x0010, 0x2160 */
3216     "Occupation\0" /* 308, 0x0010, 0x2180 */
3217     "Smoking Status\0" /* 309, 0x0010, 0x21a0 */
3218     "Additional Patient History\0" /* 310, 0x0010, 0x21b0 */
3219     "Pregnancy Status\0" /* 311, 0x0010, 0x21c0 */
3220     "Last Menstrual Date\0" /* 312, 0x0010, 0x21d0 */
3221     "Patients Religious Preference\0" /* 313, 0x0010, 0x21f0 */
3222     "Patient Comments\0" /* 314, 0x0010, 0x4000 */
3223     "?\0" /* 315, 0x0011, 0x0001 */
3224     "?\0" /* 316, 0x0011, 0x0002 */
3225     "Patient UID\0" /* 317, 0x0011, 0x0003 */
3226     "Patient ID\0" /* 318, 0x0011, 0x0004 */
3227     "?\0" /* 319, 0x0011, 0x000a */
3228     "Effective Series Duration\0" /* 320, 0x0011, 0x000b */
3229     "Num Beats\0" /* 321, 0x0011, 0x000c */
3230     "Radio Nuclide Name\0" /* 322, 0x0011, 0x000d */
3231     "?\0" /* 323, 0x0011, 0x0010 */
3232     "?\0" /* 324, 0x0011, 0x0011 */
3233     "Dataset Name\0" /* 325, 0x0011, 0x0012 */
3234     "Dataset Type\0" /* 326, 0x0011, 0x0013 */
3235     "?\0" /* 327, 0x0011, 0x0015 */
3236     "Energy Number\0" /* 328, 0x0011, 0x0016 */
3237     "RR Interval Window Number\0" /* 329, 0x0011, 0x0017 */
3238     "MG Bin Number\0" /* 330, 0x0011, 0x0018 */
3239     "Radius Of Rotation\0" /* 331, 0x0011, 0x0019 */
3240     "Detector Count Zone\0" /* 332, 0x0011, 0x001a */
3241     "Num Energy Windows\0" /* 333, 0x0011, 0x001b */
3242     "Energy Offset\0" /* 334, 0x0011, 0x001c */
3243     "Energy Range\0" /* 335, 0x0011, 0x001d */
3244     "Image Orientation\0" /* 336, 0x0011, 0x001f */
3245     "?\0" /* 337, 0x0011, 0x0020 */
3246     "?\0" /* 338, 0x0011, 0x0021 */
3247     "?\0" /* 339, 0x0011, 0x0022 */
3248     "?\0" /* 340, 0x0011, 0x0023 */
3249     "FOV Mask Y Cutoff Angle\0" /* 341, 0x0011, 0x0024 */
3250     "?\0" /* 342, 0x0011, 0x0025 */
3251     "Table Orientation\0" /* 343, 0x0011, 0x0026 */
3252     "ROI Top Left\0" /* 344, 0x0011, 0x0027 */
3253     "ROI Bottom Right\0" /* 345, 0x0011, 0x0028 */
3254     "?\0" /* 346, 0x0011, 0x0030 */
3255     "?\0" /* 347, 0x0011, 0x0031 */
3256     "?\0" /* 348, 0x0011, 0x0032 */
3257     "Energy Correct Name\0" /* 349, 0x0011, 0x0033 */
3258     "Spatial Correct Name\0" /* 350, 0x0011, 0x0034 */
3259     "?\0" /* 351, 0x0011, 0x0035 */
3260     "Uniformity Correct Name\0" /* 352, 0x0011, 0x0036 */
3261     "Acquisition Specific Correct Name\0" /* 353, 0x0011, 0x0037 */
3262     "Byte Order\0" /* 354, 0x0011, 0x0038 */
3263     "Picture Format\0" /* 355, 0x0011, 0x003a */
3264     "Pixel Scale\0" /* 356, 0x0011, 0x003b */
3265     "Pixel Offset\0" /* 357, 0x0011, 0x003c */
3266     "FOV Shape\0" /* 358, 0x0011, 0x003e */
3267     "Dataset Flags\0" /* 359, 0x0011, 0x003f */
3268     "?\0" /* 360, 0x0011, 0x0040 */
3269     "Medical Alerts\0" /* 361, 0x0011, 0x0041 */
3270     "Contrast Allergies\0" /* 362, 0x0011, 0x0042 */
3271     "Threshold Center\0" /* 363, 0x0011, 0x0044 */
3272     "Threshold Width\0" /* 364, 0x0011, 0x0045 */
3273     "Interpolation Type\0" /* 365, 0x0011, 0x0046 */
3274     "Period\0" /* 366, 0x0011, 0x0055 */
3275     "ElapsedTime\0" /* 367, 0x0011, 0x0056 */
3276     "Patient Registration Date\0" /* 368, 0x0011, 0x00a1 */
3277     "Patient Registration Time\0" /* 369, 0x0011, 0x00a2 */
3278     "Patient Last Name\0" /* 370, 0x0011, 0x00b0 */
3279     "Patient First Name\0" /* 371, 0x0011, 0x00b2 */
3280     "Patient Hospital Status\0" /* 372, 0x0011, 0x00b4 */
3281     "Current Location Time\0" /* 373, 0x0011, 0x00bc */
3282     "Patient Insurance Status\0" /* 374, 0x0011, 0x00c0 */
3283     "Patient Billing Type\0" /* 375, 0x0011, 0x00d0 */
3284     "Patient Billing Address\0" /* 376, 0x0011, 0x00d2 */
3285     "Modifying Physician\0" /* 377, 0x0013, 0x0000 */
3286     "?\0" /* 378, 0x0013, 0x0010 */
3287     "?\0" /* 379, 0x0013, 0x0011 */
3288     "?\0" /* 380, 0x0013, 0x0012 */
3289     "AutoTrack Peak\0" /* 381, 0x0013, 0x0016 */
3290     "AutoTrack Width\0" /* 382, 0x0013, 0x0017 */
3291     "Transmission Scan Time\0" /* 383, 0x0013, 0x0018 */
3292     "Transmission Mask Width\0" /* 384, 0x0013, 0x0019 */
3293     "Copper Attenuator Thickness\0" /* 385, 0x0013, 0x001a */
3294     "?\0" /* 386, 0x0013, 0x001c */
3295     "?\0" /* 387, 0x0013, 0x001d */
3296     "Tomo View Offset\0" /* 388, 0x0013, 0x001e */
3297     "Patient Name\0" /* 389, 0x0013, 0x0020 */
3298     "Patient Id\0" /* 390, 0x0013, 0x0022 */
3299     "Study Comments\0" /* 391, 0x0013, 0x0026 */
3300     "Patient Birthdate\0" /* 392, 0x0013, 0x0030 */
3301     "Patient Weight\0" /* 393, 0x0013, 0x0031 */
3302     "Patients Maiden Name\0" /* 394, 0x0013, 0x0032 */
3303     "Referring Physician\0" /* 395, 0x0013, 0x0033 */
3304     "Admitting Diagnosis\0" /* 396, 0x0013, 0x0034 */
3305     "Patient Sex\0" /* 397, 0x0013, 0x0035 */
3306     "Procedure Description\0" /* 398, 0x0013, 0x0040 */
3307     "Patient Rest Direction\0" /* 399, 0x0013, 0x0042 */
3308     "Patient Position\0" /* 400, 0x0013, 0x0044 */
3309     "View Direction\0" /* 401, 0x0013, 0x0046 */
3310     "Stenosis Calibration Ratio\0" /* 402, 0x0015, 0x0001 */
3311     "Stenosis Magnification\0" /* 403, 0x0015, 0x0002 */
3312     "Cardiac Calibration Ratio\0" /* 404, 0x0015, 0x0003 */
3313     "Acquisition Group Length\0" /* 405, 0x0018, 0x0000 */
3314     "Contrast/Bolus Agent\0" /* 406, 0x0018, 0x0010 */
3315     "Contrast/Bolus Agent Sequence\0" /* 407, 0x0018, 0x0012 */
3316     "Contrast/Bolus Administration Route Sequence\0" /* 408, 0x0018, 0x0014 */
3317     "Body Part Examined\0" /* 409, 0x0018, 0x0015 */
3318     "Scanning Sequence\0" /* 410, 0x0018, 0x0020 */
3319     "Sequence Variant\0" /* 411, 0x0018, 0x0021 */
3320     "Scan Options\0" /* 412, 0x0018, 0x0022 */
3321     "MR Acquisition Type\0" /* 413, 0x0018, 0x0023 */
3322     "Sequence Name\0" /* 414, 0x0018, 0x0024 */
3323     "Angio Flag\0" /* 415, 0x0018, 0x0025 */
3324     "Intervention Drug Information Sequence\0" /* 416, 0x0018, 0x0026 */
3325     "Intervention Drug Stop Time\0" /* 417, 0x0018, 0x0027 */
3326     "Intervention Drug Dose\0" /* 418, 0x0018, 0x0028 */
3327     "Intervention Drug Code Sequence\0" /* 419, 0x0018, 0x0029 */
3328     "Additional Drug Sequence\0" /* 420, 0x0018, 0x002a */
3329     "Radionuclide\0" /* 421, 0x0018, 0x0030 */
3330     "Radiopharmaceutical\0" /* 422, 0x0018, 0x0031 */
3331     "Energy Window Centerline\0" /* 423, 0x0018, 0x0032 */
3332     "Energy Window Total Width\0" /* 424, 0x0018, 0x0033 */
3333     "Intervention Drug Name\0" /* 425, 0x0018, 0x0034 */
3334     "Intervention Drug Start Time\0" /* 426, 0x0018, 0x0035 */
3335     "Intervention Therapy Sequence\0" /* 427, 0x0018, 0x0036 */
3336     "Therapy Type\0" /* 428, 0x0018, 0x0037 */
3337     "Intervention Status\0" /* 429, 0x0018, 0x0038 */
3338     "Therapy Description\0" /* 430, 0x0018, 0x0039 */
3339     "Cine Rate\0" /* 431, 0x0018, 0x0040 */
3340     "Slice Thickness\0" /* 432, 0x0018, 0x0050 */
3341     "KVP\0" /* 433, 0x0018, 0x0060 */
3342     "Counts Accumulated\0" /* 434, 0x0018, 0x0070 */
3343     "Acquisition Termination Condition\0" /* 435, 0x0018, 0x0071 */
3344     "Effective Series Duration\0" /* 436, 0x0018, 0x0072 */
3345     "Acquisition Start Condition\0" /* 437, 0x0018, 0x0073 */
3346     "Acquisition Start Condition Data\0" /* 438, 0x0018, 0x0074 */
3347     "Acquisition Termination Condition Data\0" /* 439, 0x0018, 0x0075 */
3348     "Repetition Time\0" /* 440, 0x0018, 0x0080 */
3349     "Echo Time\0" /* 441, 0x0018, 0x0081 */
3350     "Inversion Time\0" /* 442, 0x0018, 0x0082 */
3351     "Number of Averages\0" /* 443, 0x0018, 0x0083 */
3352     "Imaging Frequency\0" /* 444, 0x0018, 0x0084 */
3353     "Imaged Nucleus\0" /* 445, 0x0018, 0x0085 */
3354     "Echo Number(s)\0" /* 446, 0x0018, 0x0086 */
3355     "Magnetic Field Strength\0" /* 447, 0x0018, 0x0087 */
3356     "Spacing Between Slices\0" /* 448, 0x0018, 0x0088 */
3357     "Number of Phase Encoding Steps\0" /* 449, 0x0018, 0x0089 */
3358     "Data Collection Diameter\0" /* 450, 0x0018, 0x0090 */
3359     "Echo Train Length\0" /* 451, 0x0018, 0x0091 */
3360     "Percent Sampling\0" /* 452, 0x0018, 0x0093 */
3361     "Percent Phase Field of View\0" /* 453, 0x0018, 0x0094 */
3362     "Pixel Bandwidth\0" /* 454, 0x0018, 0x0095 */
3363     "Device Serial Number\0" /* 455, 0x0018, 0x1000 */
3364     "Plate ID\0" /* 456, 0x0018, 0x1004 */
3365     "Secondary Capture Device ID\0" /* 457, 0x0018, 0x1010 */
3366     "Date of Secondary Capture\0" /* 458, 0x0018, 0x1012 */
3367     "Time of Secondary Capture\0" /* 459, 0x0018, 0x1014 */
3368     "Secondary Capture Device Manufacturer\0" /* 460, 0x0018, 0x1016 */
3369     "Secondary Capture Device Manufacturer Model Name\0" /* 461, 0x0018, 0x1018 */
3370     "Secondary Capture Device Software Version(s)\0" /* 462, 0x0018, 0x1019 */
3371     "Software Version(s)\0" /* 463, 0x0018, 0x1020 */
3372     "Video Image Format Acquired\0" /* 464, 0x0018, 0x1022 */
3373     "Digital Image Format Acquired\0" /* 465, 0x0018, 0x1023 */
3374     "Protocol Name\0" /* 466, 0x0018, 0x1030 */
3375     "Contrast/Bolus Route\0" /* 467, 0x0018, 0x1040 */
3376     "Contrast/Bolus Volume\0" /* 468, 0x0018, 0x1041 */
3377     "Contrast/Bolus Start Time\0" /* 469, 0x0018, 0x1042 */
3378     "Contrast/Bolus Stop Time\0" /* 470, 0x0018, 0x1043 */
3379     "Contrast/Bolus Total Dose\0" /* 471, 0x0018, 0x1044 */
3380     "Syringe Counts\0" /* 472, 0x0018, 0x1045 */
3381     "Contrast Flow Rate\0" /* 473, 0x0018, 0x1046 */
3382     "Contrast Flow Duration\0" /* 474, 0x0018, 0x1047 */
3383     "Contrast/Bolus Ingredient\0" /* 475, 0x0018, 0x1048 */
3384     "Contrast/Bolus Ingredient Concentration\0" /* 476, 0x0018, 0x1049 */
3385     "Spatial Resolution\0" /* 477, 0x0018, 0x1050 */
3386     "Trigger Time\0" /* 478, 0x0018, 0x1060 */
3387     "Trigger Source or Type\0" /* 479, 0x0018, 0x1061 */
3388     "Nominal Interval\0" /* 480, 0x0018, 0x1062 */
3389     "Frame Time\0" /* 481, 0x0018, 0x1063 */
3390     "Framing Type\0" /* 482, 0x0018, 0x1064 */
3391     "Frame Time Vector\0" /* 483, 0x0018, 0x1065 */
3392     "Frame Delay\0" /* 484, 0x0018, 0x1066 */
3393     "Image Trigger Delay\0" /* 485, 0x0018, 0x1067 */
3394     "Group Time Offset\0" /* 486, 0x0018, 0x1068 */
3395     "Trigger Time Offset\0" /* 487, 0x0018, 0x1069 */
3396     "Synchronization Trigger\0" /* 488, 0x0018, 0x106a */
3397     "Synchronization Frame of Reference\0" /* 489, 0x0018, 0x106b */
3398     "Trigger Sample Position\0" /* 490, 0x0018, 0x106e */
3399     "Radiopharmaceutical Route\0" /* 491, 0x0018, 0x1070 */
3400     "Radiopharmaceutical Volume\0" /* 492, 0x0018, 0x1071 */
3401     "Radiopharmaceutical Start Time\0" /* 493, 0x0018, 0x1072 */
3402     "Radiopharmaceutical Stop Time\0" /* 494, 0x0018, 0x1073 */
3403     "Radionuclide Total Dose\0" /* 495, 0x0018, 0x1074 */
3404     "Radionuclide Half Life\0" /* 496, 0x0018, 0x1075 */
3405     "Radionuclide Positron Fraction\0" /* 497, 0x0018, 0x1076 */
3406     "Radiopharmaceutical Specific Activity\0" /* 498, 0x0018, 0x1077 */
3407     "Beat Rejection Flag\0" /* 499, 0x0018, 0x1080 */
3408     "Low R-R Value\0" /* 500, 0x0018, 0x1081 */
3409     "High R-R Value\0" /* 501, 0x0018, 0x1082 */
3410     "Intervals Acquired\0" /* 502, 0x0018, 0x1083 */
3411     "Intervals Rejected\0" /* 503, 0x0018, 0x1084 */
3412     "PVC Rejection\0" /* 504, 0x0018, 0x1085 */
3413     "Skip Beats\0" /* 505, 0x0018, 0x1086 */
3414     "Heart Rate\0" /* 506, 0x0018, 0x1088 */
3415     "Cardiac Number of Images\0" /* 507, 0x0018, 0x1090 */
3416     "Trigger Window\0" /* 508, 0x0018, 0x1094 */
3417     "Reconstruction Diameter\0" /* 509, 0x0018, 0x1100 */
3418     "Distance Source to Detector\0" /* 510, 0x0018, 0x1110 */
3419     "Distance Source to Patient\0" /* 511, 0x0018, 0x1111 */
3420     "Estimated Radiographic Magnification Factor\0" /* 512, 0x0018, 0x1114 */
3421     "Gantry/Detector Tilt\0" /* 513, 0x0018, 0x1120 */
3422     "Gantry/Detector Slew\0" /* 514, 0x0018, 0x1121 */
3423     "Table Height\0" /* 515, 0x0018, 0x1130 */
3424     "Table Traverse\0" /* 516, 0x0018, 0x1131 */
3425     "Table Motion\0" /* 517, 0x0018, 0x1134 */
3426     "Table Vertical Increment\0" /* 518, 0x0018, 0x1135 */
3427     "Table Lateral Increment\0" /* 519, 0x0018, 0x1136 */
3428     "Table Longitudinal Increment\0" /* 520, 0x0018, 0x1137 */
3429     "Table Angle\0" /* 521, 0x0018, 0x1138 */
3430     "Table Type\0" /* 522, 0x0018, 0x113a */
3431     "Rotation Direction\0" /* 523, 0x0018, 0x1140 */
3432     "Angular Position\0" /* 524, 0x0018, 0x1141 */
3433     "Radial Position\0" /* 525, 0x0018, 0x1142 */
3434     "Scan Arc\0" /* 526, 0x0018, 0x1143 */
3435     "Angular Step\0" /* 527, 0x0018, 0x1144 */
3436     "Center of Rotation Offset\0" /* 528, 0x0018, 0x1145 */
3437     "Rotation Offset\0" /* 529, 0x0018, 0x1146 */
3438     "Field of View Shape\0" /* 530, 0x0018, 0x1147 */
3439     "Field of View Dimension(s)\0" /* 531, 0x0018, 0x1149 */
3440     "Exposure Time\0" /* 532, 0x0018, 0x1150 */
3441     "X-ray Tube Current\0" /* 533, 0x0018, 0x1151 */
3442     "Exposure\0" /* 534, 0x0018, 0x1152 */
3443     "Exposure in uAs\0" /* 535, 0x0018, 0x1153 */
3444     "AveragePulseWidth\0" /* 536, 0x0018, 0x1154 */
3445     "RadiationSetting\0" /* 537, 0x0018, 0x1155 */
3446     "Rectification Type\0" /* 538, 0x0018, 0x1156 */
3447     "RadiationMode\0" /* 539, 0x0018, 0x115a */
3448     "ImageAreaDoseProduct\0" /* 540, 0x0018, 0x115e */
3449     "Filter Type\0" /* 541, 0x0018, 0x1160 */
3450     "TypeOfFilters\0" /* 542, 0x0018, 0x1161 */
3451     "IntensifierSize\0" /* 543, 0x0018, 0x1162 */
3452     "ImagerPixelSpacing\0" /* 544, 0x0018, 0x1164 */
3453     "Grid\0" /* 545, 0x0018, 0x1166 */
3454     "Generator Power\0" /* 546, 0x0018, 0x1170 */
3455     "Collimator/Grid Name\0" /* 547, 0x0018, 0x1180 */
3456     "Collimator Type\0" /* 548, 0x0018, 0x1181 */
3457     "Focal Distance\0" /* 549, 0x0018, 0x1182 */
3458     "X Focus Center\0" /* 550, 0x0018, 0x1183 */
3459     "Y Focus Center\0" /* 551, 0x0018, 0x1184 */
3460     "Focal Spot(s)\0" /* 552, 0x0018, 0x1190 */
3461     "Anode Target Material\0" /* 553, 0x0018, 0x1191 */
3462     "Body Part Thickness\0" /* 554, 0x0018, 0x11a0 */
3463     "Compression Force\0" /* 555, 0x0018, 0x11a2 */
3464     "Date of Last Calibration\0" /* 556, 0x0018, 0x1200 */
3465     "Time of Last Calibration\0" /* 557, 0x0018, 0x1201 */
3466     "Convolution Kernel\0" /* 558, 0x0018, 0x1210 */
3467     "Upper/Lower Pixel Values\0" /* 559, 0x0018, 0x1240 */
3468     "Actual Frame Duration\0" /* 560, 0x0018, 0x1242 */
3469     "Count Rate\0" /* 561, 0x0018, 0x1243 */
3470     "Preferred Playback Sequencing\0" /* 562, 0x0018, 0x1244 */
3471     "Receiving Coil\0" /* 563, 0x0018, 0x1250 */
3472     "Transmitting Coil\0" /* 564, 0x0018, 0x1251 */
3473     "Plate Type\0" /* 565, 0x0018, 0x1260 */
3474     "Phosphor Type\0" /* 566, 0x0018, 0x1261 */
3475     "Scan Velocity\0" /* 567, 0x0018, 0x1300 */
3476     "Whole Body Technique\0" /* 568, 0x0018, 0x1301 */
3477     "Scan Length\0" /* 569, 0x0018, 0x1302 */
3478     "Acquisition Matrix\0" /* 570, 0x0018, 0x1310 */
3479     "Phase Encoding Direction\0" /* 571, 0x0018, 0x1312 */
3480     "Flip Angle\0" /* 572, 0x0018, 0x1314 */
3481     "Variable Flip Angle Flag\0" /* 573, 0x0018, 0x1315 */
3482     "SAR\0" /* 574, 0x0018, 0x1316 */
3483     "dB/dt\0" /* 575, 0x0018, 0x1318 */
3484     "Acquisition Device Processing Description\0" /* 576, 0x0018, 0x1400 */
3485     "Acquisition Device Processing Code\0" /* 577, 0x0018, 0x1401 */
3486     "Cassette Orientation\0" /* 578, 0x0018, 0x1402 */
3487     "Cassette Size\0" /* 579, 0x0018, 0x1403 */
3488     "Exposures on Plate\0" /* 580, 0x0018, 0x1404 */
3489     "Relative X-ray Exposure\0" /* 581, 0x0018, 0x1405 */
3490     "Column Angulation\0" /* 582, 0x0018, 0x1450 */
3491     "Tomo Layer Height\0" /* 583, 0x0018, 0x1460 */
3492     "Tomo Angle\0" /* 584, 0x0018, 0x1470 */
3493     "Tomo Time\0" /* 585, 0x0018, 0x1480 */
3494     "Tomo Type\0" /* 586, 0x0018, 0x1490 */
3495     "Tomo Class\0" /* 587, 0x0018, 0x1491 */
3496     "Number of Tomosynthesis Source Images\0" /* 588, 0x0018, 0x1495 */
3497     "PositionerMotion\0" /* 589, 0x0018, 0x1500 */
3498     "Positioner Type\0" /* 590, 0x0018, 0x1508 */
3499     "PositionerPrimaryAngle\0" /* 591, 0x0018, 0x1510 */
3500     "PositionerSecondaryAngle\0" /* 592, 0x0018, 0x1511 */
3501     "PositionerPrimaryAngleIncrement\0" /* 593, 0x0018, 0x1520 */
3502     "PositionerSecondaryAngleIncrement\0" /* 594, 0x0018, 0x1521 */
3503     "DetectorPrimaryAngle\0" /* 595, 0x0018, 0x1530 */
3504     "DetectorSecondaryAngle\0" /* 596, 0x0018, 0x1531 */
3505     "Shutter Shape\0" /* 597, 0x0018, 0x1600 */
3506     "Shutter Left Vertical Edge\0" /* 598, 0x0018, 0x1602 */
3507     "Shutter Right Vertical Edge\0" /* 599, 0x0018, 0x1604 */
3508     "Shutter Upper Horizontal Edge\0" /* 600, 0x0018, 0x1606 */
3509     "Shutter Lower Horizonta lEdge\0" /* 601, 0x0018, 0x1608 */
3510     "Center of Circular Shutter\0" /* 602, 0x0018, 0x1610 */
3511     "Radius of Circular Shutter\0" /* 603, 0x0018, 0x1612 */
3512     "Vertices of Polygonal Shutter\0" /* 604, 0x0018, 0x1620 */
3513     "Shutter Presentation Value\0" /* 605, 0x0018, 0x1622 */
3514     "Shutter Overlay Group\0" /* 606, 0x0018, 0x1623 */
3515     "Collimator Shape\0" /* 607, 0x0018, 0x1700 */
3516     "Collimator Left Vertical Edge\0" /* 608, 0x0018, 0x1702 */
3517     "Collimator Right Vertical Edge\0" /* 609, 0x0018, 0x1704 */
3518     "Collimator Upper Horizontal Edge\0" /* 610, 0x0018, 0x1706 */
3519     "Collimator Lower Horizontal Edge\0" /* 611, 0x0018, 0x1708 */
3520     "Center of Circular Collimator\0" /* 612, 0x0018, 0x1710 */
3521     "Radius of Circular Collimator\0" /* 613, 0x0018, 0x1712 */
3522     "Vertices of Polygonal Collimator\0" /* 614, 0x0018, 0x1720 */
3523     "Acquisition Time Synchronized\0" /* 615, 0x0018, 0x1800 */
3524     "Time Source\0" /* 616, 0x0018, 0x1801 */
3525     "Time Distribution Protocol\0" /* 617, 0x0018, 0x1802 */
3526     "Acquisition Comments\0" /* 618, 0x0018, 0x4000 */
3527     "Output Power\0" /* 619, 0x0018, 0x5000 */
3528     "Transducer Data\0" /* 620, 0x0018, 0x5010 */
3529     "Focus Depth\0" /* 621, 0x0018, 0x5012 */
3530     "Processing Function\0" /* 622, 0x0018, 0x5020 */
3531     "Postprocessing Function\0" /* 623, 0x0018, 0x5021 */
3532     "Mechanical Index\0" /* 624, 0x0018, 0x5022 */
3533     "Thermal Index\0" /* 625, 0x0018, 0x5024 */
3534     "Cranial Thermal Index\0" /* 626, 0x0018, 0x5026 */
3535     "Soft Tissue Thermal Index\0" /* 627, 0x0018, 0x5027 */
3536     "Soft Tissue-Focus Thermal Index\0" /* 628, 0x0018, 0x5028 */
3537     "Soft Tissue-Surface Thermal Index\0" /* 629, 0x0018, 0x5029 */
3538     "Dynamic Range\0" /* 630, 0x0018, 0x5030 */
3539     "Total Gain\0" /* 631, 0x0018, 0x5040 */
3540     "Depth of Scan Field\0" /* 632, 0x0018, 0x5050 */
3541     "Patient Position\0" /* 633, 0x0018, 0x5100 */
3542     "View Position\0" /* 634, 0x0018, 0x5101 */
3543     "Projection Eponymous Name Code Sequence\0" /* 635, 0x0018, 0x5104 */
3544     "Image Transformation Matrix\0" /* 636, 0x0018, 0x5210 */
3545     "Image Translation Vector\0" /* 637, 0x0018, 0x5212 */
3546     "Sensitivity\0" /* 638, 0x0018, 0x6000 */
3547     "Sequence of Ultrasound Regions\0" /* 639, 0x0018, 0x6011 */
3548     "Region Spatial Format\0" /* 640, 0x0018, 0x6012 */
3549     "Region Data Type\0" /* 641, 0x0018, 0x6014 */
3550     "Region Flags\0" /* 642, 0x0018, 0x6016 */
3551     "Region Location Min X0\0" /* 643, 0x0018, 0x6018 */
3552     "Region Location Min Y0\0" /* 644, 0x0018, 0x601a */
3553     "Region Location Max X1\0" /* 645, 0x0018, 0x601c */
3554     "Region Location Max Y1\0" /* 646, 0x0018, 0x601e */
3555     "Reference Pixel X0\0" /* 647, 0x0018, 0x6020 */
3556     "Reference Pixel Y0\0" /* 648, 0x0018, 0x6022 */
3557     "Physical Units X Direction\0" /* 649, 0x0018, 0x6024 */
3558     "Physical Units Y Direction\0" /* 650, 0x0018, 0x6026 */
3559     "Reference Pixel Physical Value X\0" /* 651, 0x0018, 0x6028 */
3560     "Reference Pixel Physical Value Y\0" /* 652, 0x0018, 0x602a */
3561     "Physical Delta X\0" /* 653, 0x0018, 0x602c */
3562     "Physical Delta Y\0" /* 654, 0x0018, 0x602e */
3563     "Transducer Frequency\0" /* 655, 0x0018, 0x6030 */
3564     "Transducer Type\0" /* 656, 0x0018, 0x6031 */
3565     "Pulse Repetition Frequency\0" /* 657, 0x0018, 0x6032 */
3566     "Doppler Correction Angle\0" /* 658, 0x0018, 0x6034 */
3567     "Steering Angle\0" /* 659, 0x0018, 0x6036 */
3568     "Doppler Sample Volume X Position\0" /* 660, 0x0018, 0x6038 */
3569     "Doppler Sample Volume Y Position\0" /* 661, 0x0018, 0x603a */
3570     "TM-Line Position X0\0" /* 662, 0x0018, 0x603c */
3571     "TM-Line Position Y0\0" /* 663, 0x0018, 0x603e */
3572     "TM-Line Position X1\0" /* 664, 0x0018, 0x6040 */
3573     "TM-Line Position Y1\0" /* 665, 0x0018, 0x6042 */
3574     "Pixel Component Organization\0" /* 666, 0x0018, 0x6044 */
3575     "Pixel Component Mask\0" /* 667, 0x0018, 0x6046 */
3576     "Pixel Component Range Start\0" /* 668, 0x0018, 0x6048 */
3577     "Pixel Component Range Stop\0" /* 669, 0x0018, 0x604a */
3578     "Pixel Component Physical Units\0" /* 670, 0x0018, 0x604c */
3579     "Pixel Component Data Type\0" /* 671, 0x0018, 0x604e */
3580     "Number of Table Break Points\0" /* 672, 0x0018, 0x6050 */
3581     "Table of X Break Points\0" /* 673, 0x0018, 0x6052 */
3582     "Table of Y Break Points\0" /* 674, 0x0018, 0x6054 */
3583     "Number of Table Entries\0" /* 675, 0x0018, 0x6056 */
3584     "Table of Pixel Values\0" /* 676, 0x0018, 0x6058 */
3585     "Table of Parameter Values\0" /* 677, 0x0018, 0x605a */
3586     "Detector Conditions Nominal Flag\0" /* 678, 0x0018, 0x7000 */
3587     "Detector Temperature\0" /* 679, 0x0018, 0x7001 */
3588     "Detector Type\0" /* 680, 0x0018, 0x7004 */
3589     "Detector Configuration\0" /* 681, 0x0018, 0x7005 */
3590     "Detector Description\0" /* 682, 0x0018, 0x7006 */
3591     "Detector Mode\0" /* 683, 0x0018, 0x7008 */
3592     "Detector ID\0" /* 684, 0x0018, 0x700a */
3593     "Date of Last Detector Calibration \0" /* 685, 0x0018, 0x700c */
3594     "Time of Last Detector Calibration\0" /* 686, 0x0018, 0x700e */
3595     "Exposures on Detector Since Last Calibration\0" /* 687, 0x0018, 0x7010 */
3596     "Exposures on Detector Since Manufactured\0" /* 688, 0x0018, 0x7011 */
3597     "Detector Time Since Last Exposure\0" /* 689, 0x0018, 0x7012 */
3598     "Detector Active Time\0" /* 690, 0x0018, 0x7014 */
3599     "Detector Activation Offset From Exposure\0" /* 691, 0x0018, 0x7016 */
3600     "Detector Binning\0" /* 692, 0x0018, 0x701a */
3601     "Detector Element Physical Size\0" /* 693, 0x0018, 0x7020 */
3602     "Detector Element Spacing\0" /* 694, 0x0018, 0x7022 */
3603     "Detector Active Shape\0" /* 695, 0x0018, 0x7024 */
3604     "Detector Active Dimensions\0" /* 696, 0x0018, 0x7026 */
3605     "Detector Active Origin\0" /* 697, 0x0018, 0x7028 */
3606     "Field of View Origin\0" /* 698, 0x0018, 0x7030 */
3607     "Field of View Rotation\0" /* 699, 0x0018, 0x7032 */
3608     "Field of View Horizontal Flip\0" /* 700, 0x0018, 0x7034 */
3609     "Grid Absorbing Material\0" /* 701, 0x0018, 0x7040 */
3610     "Grid Spacing Material\0" /* 702, 0x0018, 0x7041 */
3611     "Grid Thickness\0" /* 703, 0x0018, 0x7042 */
3612     "Grid Pitch\0" /* 704, 0x0018, 0x7044 */
3613     "Grid Aspect Ratio\0" /* 705, 0x0018, 0x7046 */
3614     "Grid Period\0" /* 706, 0x0018, 0x7048 */
3615     "Grid Focal Distance\0" /* 707, 0x0018, 0x704c */
3616     "Filter Material\0" /* 708, 0x0018, 0x7050 */
3617     "Filter Thickness Minimum\0" /* 709, 0x0018, 0x7052 */
3618     "Filter Thickness Maximum\0" /* 710, 0x0018, 0x7054 */
3619     "Exposure Control Mode\0" /* 711, 0x0018, 0x7060 */
3620     "Exposure Control Mode Description\0" /* 712, 0x0018, 0x7062 */
3621     "Exposure Status\0" /* 713, 0x0018, 0x7064 */
3622     "Phototimer Setting\0" /* 714, 0x0018, 0x7065 */
3623     "?\0" /* 715, 0x0019, 0x0000 */
3624     "?\0" /* 716, 0x0019, 0x0001 */
3625     "?\0" /* 717, 0x0019, 0x0002 */
3626     "?\0" /* 718, 0x0019, 0x0003 */
3627     "?\0" /* 719, 0x0019, 0x0004 */
3628     "?\0" /* 720, 0x0019, 0x0005 */
3629     "?\0" /* 721, 0x0019, 0x0006 */
3630     "?\0" /* 722, 0x0019, 0x0007 */
3631     "?\0" /* 723, 0x0019, 0x0008 */
3632     "?\0" /* 724, 0x0019, 0x0009 */
3633     "?\0" /* 725, 0x0019, 0x000a */
3634     "?\0" /* 726, 0x0019, 0x000b */
3635     "?\0" /* 727, 0x0019, 0x000c */
3636     "Time\0" /* 728, 0x0019, 0x000d */
3637     "?\0" /* 729, 0x0019, 0x000e */
3638     "Horizontal Frame Of Reference\0" /* 730, 0x0019, 0x000f */
3639     "?\0" /* 731, 0x0019, 0x0010 */
3640     "?\0" /* 732, 0x0019, 0x0011 */
3641     "?\0" /* 733, 0x0019, 0x0012 */
3642     "?\0" /* 734, 0x0019, 0x0013 */
3643     "?\0" /* 735, 0x0019, 0x0014 */
3644     "?\0" /* 736, 0x0019, 0x0015 */
3645     "?\0" /* 737, 0x0019, 0x0016 */
3646     "?\0" /* 738, 0x0019, 0x0017 */
3647     "?\0" /* 739, 0x0019, 0x0018 */
3648     "?\0" /* 740, 0x0019, 0x0019 */
3649     "?\0" /* 741, 0x0019, 0x001a */
3650     "?\0" /* 742, 0x0019, 0x001b */
3651     "Dose\0" /* 743, 0x0019, 0x001c */
3652     "Side Mark\0" /* 744, 0x0019, 0x001d */
3653     "?\0" /* 745, 0x0019, 0x001e */
3654     "Exposure Duration\0" /* 746, 0x0019, 0x001f */
3655     "?\0" /* 747, 0x0019, 0x0020 */
3656     "?\0" /* 748, 0x0019, 0x0021 */
3657     "?\0" /* 749, 0x0019, 0x0022 */
3658     "?\0" /* 750, 0x0019, 0x0023 */
3659     "?\0" /* 751, 0x0019, 0x0024 */
3660     "?\0" /* 752, 0x0019, 0x0025 */
3661     "?\0" /* 753, 0x0019, 0x0026 */
3662     "?\0" /* 754, 0x0019, 0x0027 */
3663     "?\0" /* 755, 0x0019, 0x0028 */
3664     "?\0" /* 756, 0x0019, 0x0029 */
3665     "?\0" /* 757, 0x0019, 0x002a */
3666     "Xray Off Position\0" /* 758, 0x0019, 0x002b */
3667     "?\0" /* 759, 0x0019, 0x002c */
3668     "?\0" /* 760, 0x0019, 0x002d */
3669     "?\0" /* 761, 0x0019, 0x002e */
3670     "Trigger Frequency\0" /* 762, 0x0019, 0x002f */
3671     "?\0" /* 763, 0x0019, 0x0030 */
3672     "?\0" /* 764, 0x0019, 0x0031 */
3673     "?\0" /* 765, 0x0019, 0x0032 */
3674     "ECG 2 Offset 2\0" /* 766, 0x0019, 0x0033 */
3675     "?\0" /* 767, 0x0019, 0x0034 */
3676     "?\0" /* 768, 0x0019, 0x0036 */
3677     "?\0" /* 769, 0x0019, 0x0038 */
3678     "?\0" /* 770, 0x0019, 0x0039 */
3679     "?\0" /* 771, 0x0019, 0x003a */
3680     "?\0" /* 772, 0x0019, 0x003b */
3681     "?\0" /* 773, 0x0019, 0x003c */
3682     "?\0" /* 774, 0x0019, 0x003e */
3683     "?\0" /* 775, 0x0019, 0x003f */
3684     "?\0" /* 776, 0x0019, 0x0040 */
3685     "?\0" /* 777, 0x0019, 0x0041 */
3686     "?\0" /* 778, 0x0019, 0x0042 */
3687     "?\0" /* 779, 0x0019, 0x0043 */
3688     "?\0" /* 780, 0x0019, 0x0044 */
3689     "?\0" /* 781, 0x0019, 0x0045 */
3690     "?\0" /* 782, 0x0019, 0x0046 */
3691     "?\0" /* 783, 0x0019, 0x0047 */
3692     "?\0" /* 784, 0x0019, 0x0048 */
3693     "?\0" /* 785, 0x0019, 0x0049 */
3694     "?\0" /* 786, 0x0019, 0x004a */
3695     "Data Size For Scan Data\0" /* 787, 0x0019, 0x004b */
3696     "?\0" /* 788, 0x0019, 0x004c */
3697     "?\0" /* 789, 0x0019, 0x004e */
3698     "?\0" /* 790, 0x0019, 0x0050 */
3699     "?\0" /* 791, 0x0019, 0x0051 */
3700     "?\0" /* 792, 0x0019, 0x0052 */
3701     "Barcode\0" /* 793, 0x0019, 0x0053 */
3702     "?\0" /* 794, 0x0019, 0x0054 */
3703     "Receiver Reference Gain\0" /* 795, 0x0019, 0x0055 */
3704     "?\0" /* 796, 0x0019, 0x0056 */
3705     "CT Water Number\0" /* 797, 0x0019, 0x0057 */
3706     "?\0" /* 798, 0x0019, 0x0058 */
3707     "?\0" /* 799, 0x0019, 0x005a */
3708     "?\0" /* 800, 0x0019, 0x005c */
3709     "?\0" /* 801, 0x0019, 0x005d */
3710     "?\0" /* 802, 0x0019, 0x005e */
3711     "Increment Between Channels\0" /* 803, 0x0019, 0x005f */
3712     "?\0" /* 804, 0x0019, 0x0060 */
3713     "?\0" /* 805, 0x0019, 0x0061 */
3714     "?\0" /* 806, 0x0019, 0x0062 */
3715     "?\0" /* 807, 0x0019, 0x0063 */
3716     "?\0" /* 808, 0x0019, 0x0064 */
3717     "?\0" /* 809, 0x0019, 0x0065 */
3718     "?\0" /* 810, 0x0019, 0x0066 */
3719     "?\0" /* 811, 0x0019, 0x0067 */
3720     "?\0" /* 812, 0x0019, 0x0068 */
3721     "Convolution Mode\0" /* 813, 0x0019, 0x0069 */
3722     "?\0" /* 814, 0x0019, 0x006a */
3723     "Field Of View In Detector Cells\0" /* 815, 0x0019, 0x006b */
3724     "?\0" /* 816, 0x0019, 0x006c */
3725     "?\0" /* 817, 0x0019, 0x006e */
3726     "?\0" /* 818, 0x0019, 0x0070 */
3727     "?\0" /* 819, 0x0019, 0x0071 */
3728     "?\0" /* 820, 0x0019, 0x0072 */
3729     "?\0" /* 821, 0x0019, 0x0073 */
3730     "?\0" /* 822, 0x0019, 0x0074 */
3731     "?\0" /* 823, 0x0019, 0x0075 */
3732     "?\0" /* 824, 0x0019, 0x0076 */
3733     "?\0" /* 825, 0x0019, 0x0077 */
3734     "?\0" /* 826, 0x0019, 0x0078 */
3735     "?\0" /* 827, 0x0019, 0x007a */
3736     "?\0" /* 828, 0x0019, 0x007c */
3737     "Second Echo\0" /* 829, 0x0019, 0x007d */
3738     "?\0" /* 830, 0x0019, 0x007e */
3739     "Table Delta\0" /* 831, 0x0019, 0x007f */
3740     "?\0" /* 832, 0x0019, 0x0080 */
3741     "?\0" /* 833, 0x0019, 0x0081 */
3742     "?\0" /* 834, 0x0019, 0x0082 */
3743     "?\0" /* 835, 0x0019, 0x0083 */
3744     "?\0" /* 836, 0x0019, 0x0084 */
3745     "?\0" /* 837, 0x0019, 0x0085 */
3746     "?\0" /* 838, 0x0019, 0x0086 */
3747     "?\0" /* 839, 0x0019, 0x0087 */
3748     "?\0" /* 840, 0x0019, 0x0088 */
3749     "?\0" /* 841, 0x0019, 0x008a */
3750     "Actual Receive Gain Digital\0" /* 842, 0x0019, 0x008b */
3751     "?\0" /* 843, 0x0019, 0x008c */
3752     "Delay After Trigger\0" /* 844, 0x0019, 0x008d */
3753     "?\0" /* 845, 0x0019, 0x008e */
3754     "Swap Phase Frequency\0" /* 846, 0x0019, 0x008f */
3755     "?\0" /* 847, 0x0019, 0x0090 */
3756     "?\0" /* 848, 0x0019, 0x0091 */
3757     "?\0" /* 849, 0x0019, 0x0092 */
3758     "?\0" /* 850, 0x0019, 0x0093 */
3759     "?\0" /* 851, 0x0019, 0x0094 */
3760     "Analog Receiver Gain\0" /* 852, 0x0019, 0x0095 */
3761     "?\0" /* 853, 0x0019, 0x0096 */
3762     "?\0" /* 854, 0x0019, 0x0097 */
3763     "?\0" /* 855, 0x0019, 0x0098 */
3764     "?\0" /* 856, 0x0019, 0x0099 */
3765     "?\0" /* 857, 0x0019, 0x009a */
3766     "Pulse Sequence Mode\0" /* 858, 0x0019, 0x009b */
3767     "?\0" /* 859, 0x0019, 0x009c */
3768     "Pulse Sequence Date\0" /* 860, 0x0019, 0x009d */
3769     "?\0" /* 861, 0x0019, 0x009e */
3770     "?\0" /* 862, 0x0019, 0x009f */
3771     "?\0" /* 863, 0x0019, 0x00a0 */
3772     "?\0" /* 864, 0x0019, 0x00a1 */
3773     "?\0" /* 865, 0x0019, 0x00a2 */
3774     "?\0" /* 866, 0x0019, 0x00a3 */
3775     "?\0" /* 867, 0x0019, 0x00a4 */
3776     "?\0" /* 868, 0x0019, 0x00a5 */
3777     "?\0" /* 869, 0x0019, 0x00a6 */
3778     "?\0" /* 870, 0x0019, 0x00a7 */
3779     "?\0" /* 871, 0x0019, 0x00a8 */
3780     "?\0" /* 872, 0x0019, 0x00a9 */
3781     "?\0" /* 873, 0x0019, 0x00aa */
3782     "?\0" /* 874, 0x0019, 0x00ab */
3783     "?\0" /* 875, 0x0019, 0x00ac */
3784     "?\0" /* 876, 0x0019, 0x00ad */
3785     "?\0" /* 877, 0x0019, 0x00ae */
3786     "?\0" /* 878, 0x0019, 0x00af */
3787     "?\0" /* 879, 0x0019, 0x00b0 */
3788     "?\0" /* 880, 0x0019, 0x00b1 */
3789     "?\0" /* 881, 0x0019, 0x00b2 */
3790     "?\0" /* 882, 0x0019, 0x00b3 */
3791     "?\0" /* 883, 0x0019, 0x00b4 */
3792     "?\0" /* 884, 0x0019, 0x00b5 */
3793     "User Data\0" /* 885, 0x0019, 0x00b6 */
3794     "User Data\0" /* 886, 0x0019, 0x00b7 */
3795     "User Data\0" /* 887, 0x0019, 0x00b8 */
3796     "User Data\0" /* 888, 0x0019, 0x00b9 */
3797     "User Data\0" /* 889, 0x0019, 0x00ba */
3798     "User Data\0" /* 890, 0x0019, 0x00bb */
3799     "User Data\0" /* 891, 0x0019, 0x00bc */
3800     "User Data\0" /* 892, 0x0019, 0x00bd */
3801     "Projection Angle\0" /* 893, 0x0019, 0x00be */
3802     "?\0" /* 894, 0x0019, 0x00c0 */
3803     "?\0" /* 895, 0x0019, 0x00c1 */
3804     "?\0" /* 896, 0x0019, 0x00c2 */
3805     "?\0" /* 897, 0x0019, 0x00c3 */
3806     "?\0" /* 898, 0x0019, 0x00c4 */
3807     "?\0" /* 899, 0x0019, 0x00c5 */
3808     "SAT Location H\0" /* 900, 0x0019, 0x00c6 */
3809     "SAT Location F\0" /* 901, 0x0019, 0x00c7 */
3810     "SAT Thickness R L\0" /* 902, 0x0019, 0x00c8 */
3811     "SAT Thickness A P\0" /* 903, 0x0019, 0x00c9 */
3812     "SAT Thickness H F\0" /* 904, 0x0019, 0x00ca */
3813     "?\0" /* 905, 0x0019, 0x00cb */
3814     "?\0" /* 906, 0x0019, 0x00cc */
3815     "Thickness Disclaimer\0" /* 907, 0x0019, 0x00cd */
3816     "Prescan Type\0" /* 908, 0x0019, 0x00ce */
3817     "Prescan Status\0" /* 909, 0x0019, 0x00cf */
3818     "Raw Data Type\0" /* 910, 0x0019, 0x00d0 */
3819     "Flow Sensitivity\0" /* 911, 0x0019, 0x00d1 */
3820     "?\0" /* 912, 0x0019, 0x00d2 */
3821     "?\0" /* 913, 0x0019, 0x00d3 */
3822     "?\0" /* 914, 0x0019, 0x00d4 */
3823     "?\0" /* 915, 0x0019, 0x00d5 */
3824     "?\0" /* 916, 0x0019, 0x00d6 */
3825     "?\0" /* 917, 0x0019, 0x00d7 */
3826     "?\0" /* 918, 0x0019, 0x00d8 */
3827     "?\0" /* 919, 0x0019, 0x00d9 */
3828     "?\0" /* 920, 0x0019, 0x00da */
3829     "Back Projector Coefficient\0" /* 921, 0x0019, 0x00db */
3830     "Primary Speed Correction Used\0" /* 922, 0x0019, 0x00dc */
3831     "Overrange Correction Used\0" /* 923, 0x0019, 0x00dd */
3832     "Dynamic Z Alpha Value\0" /* 924, 0x0019, 0x00de */
3833     "User Data\0" /* 925, 0x0019, 0x00df */
3834     "User Data\0" /* 926, 0x0019, 0x00e0 */
3835     "?\0" /* 927, 0x0019, 0x00e1 */
3836     "?\0" /* 928, 0x0019, 0x00e2 */
3837     "?\0" /* 929, 0x0019, 0x00e3 */
3838     "?\0" /* 930, 0x0019, 0x00e4 */
3839     "?\0" /* 931, 0x0019, 0x00e5 */
3840     "?\0" /* 932, 0x0019, 0x00e6 */
3841     "?\0" /* 933, 0x0019, 0x00e8 */
3842     "?\0" /* 934, 0x0019, 0x00e9 */
3843     "?\0" /* 935, 0x0019, 0x00eb */
3844     "?\0" /* 936, 0x0019, 0x00ec */
3845     "?\0" /* 937, 0x0019, 0x00f0 */
3846     "?\0" /* 938, 0x0019, 0x00f1 */
3847     "?\0" /* 939, 0x0019, 0x00f2 */
3848     "?\0" /* 940, 0x0019, 0x00f3 */
3849     "?\0" /* 941, 0x0019, 0x00f4 */
3850     "Transmission Gain\0" /* 942, 0x0019, 0x00f9 */
3851     "?\0" /* 943, 0x0019, 0x1015 */
3852     "Relationship Group Length\0" /* 944, 0x0020, 0x0000 */
3853     "Study Instance UID\0" /* 945, 0x0020, 0x000d */
3854     "Series Instance UID\0" /* 946, 0x0020, 0x000e */
3855     "Study ID\0" /* 947, 0x0020, 0x0010 */
3856     "Series Number\0" /* 948, 0x0020, 0x0011 */
3857     "Acquisition Number\0" /* 949, 0x0020, 0x0012 */
3858     "Instance (formerly Image) Number\0" /* 950, 0x0020, 0x0013 */
3859     "Isotope Number\0" /* 951, 0x0020, 0x0014 */
3860     "Phase Number\0" /* 952, 0x0020, 0x0015 */
3861     "Interval Number\0" /* 953, 0x0020, 0x0016 */
3862     "Time Slot Number\0" /* 954, 0x0020, 0x0017 */
3863     "Angle Number\0" /* 955, 0x0020, 0x0018 */
3864     "Patient Orientation\0" /* 956, 0x0020, 0x0020 */
3865     "Overlay Number\0" /* 957, 0x0020, 0x0022 */
3866     "Curve Number\0" /* 958, 0x0020, 0x0024 */
3867     "LUT Number\0" /* 959, 0x0020, 0x0026 */
3868     "Image Position\0" /* 960, 0x0020, 0x0030 */
3869     "Image Position (Patient)\0" /* 961, 0x0020, 0x0032 */
3870     "Image Orientation\0" /* 962, 0x0020, 0x0035 */
3871     "Image Orientation (Patient)\0" /* 963, 0x0020, 0x0037 */
3872     "Location\0" /* 964, 0x0020, 0x0050 */
3873     "Frame of Reference UID\0" /* 965, 0x0020, 0x0052 */
3874     "Laterality\0" /* 966, 0x0020, 0x0060 */
3875     "Image Laterality\0" /* 967, 0x0020, 0x0062 */
3876     "Image Geometry Type\0" /* 968, 0x0020, 0x0070 */
3877     "Masking Image\0" /* 969, 0x0020, 0x0080 */
3878     "Temporal Position Identifier\0" /* 970, 0x0020, 0x0100 */
3879     "Number of Temporal Positions\0" /* 971, 0x0020, 0x0105 */
3880     "Temporal Resolution\0" /* 972, 0x0020, 0x0110 */
3881     "Series in Study\0" /* 973, 0x0020, 0x1000 */
3882     "Acquisitions in Series\0" /* 974, 0x0020, 0x1001 */
3883     "Images in Acquisition\0" /* 975, 0x0020, 0x1002 */
3884     "Images in Series\0" /* 976, 0x0020, 0x1003 */
3885     "Acquisitions in Study\0" /* 977, 0x0020, 0x1004 */
3886     "Images in Study\0" /* 978, 0x0020, 0x1005 */
3887     "Reference\0" /* 979, 0x0020, 0x1020 */
3888     "Position Reference Indicator\0" /* 980, 0x0020, 0x1040 */
3889     "Slice Location\0" /* 981, 0x0020, 0x1041 */
3890     "Other Study Numbers\0" /* 982, 0x0020, 0x1070 */
3891     "Number of Patient Related Studies\0" /* 983, 0x0020, 0x1200 */
3892     "Number of Patient Related Series\0" /* 984, 0x0020, 0x1202 */
3893     "Number of Patient Related Images\0" /* 985, 0x0020, 0x1204 */
3894     "Number of Study Related Series\0" /* 986, 0x0020, 0x1206 */
3895     "Number of Study Related Series\0" /* 987, 0x0020, 0x1208 */
3896     "Source Image IDs\0" /* 988, 0x0020, 0x3100 */
3897     "Modifying Device ID\0" /* 989, 0x0020, 0x3401 */
3898     "Modified Image ID\0" /* 990, 0x0020, 0x3402 */
3899     "Modified Image Date\0" /* 991, 0x0020, 0x3403 */
3900     "Modifying Device Manufacturer\0" /* 992, 0x0020, 0x3404 */
3901     "Modified Image Time\0" /* 993, 0x0020, 0x3405 */
3902     "Modified Image Description\0" /* 994, 0x0020, 0x3406 */
3903     "Image Comments\0" /* 995, 0x0020, 0x4000 */
3904     "Original Image Identification\0" /* 996, 0x0020, 0x5000 */
3905     "Original Image Identification Nomenclature\0" /* 997, 0x0020, 0x5002 */
3906     "?\0" /* 998, 0x0021, 0x0000 */
3907     "?\0" /* 999, 0x0021, 0x0001 */
3908     "?\0" /* 1000, 0x0021, 0x0002 */
3909     "?\0" /* 1001, 0x0021, 0x0003 */
3910     "VOI Position\0" /* 1002, 0x0021, 0x0004 */
3911     "?\0" /* 1003, 0x0021, 0x0005 */
3912     "CSI Matrix Size Original\0" /* 1004, 0x0021, 0x0006 */
3913     "?\0" /* 1005, 0x0021, 0x0007 */
3914     "Spatial Grid Shift\0" /* 1006, 0x0021, 0x0008 */
3915     "Signal Limits Minimum\0" /* 1007, 0x0021, 0x0009 */
3916     "?\0" /* 1008, 0x0021, 0x0010 */
3917     "?\0" /* 1009, 0x0021, 0x0011 */
3918     "?\0" /* 1010, 0x0021, 0x0012 */
3919     "?\0" /* 1011, 0x0021, 0x0013 */
3920     "?\0" /* 1012, 0x0021, 0x0014 */
3921     "?\0" /* 1013, 0x0021, 0x0015 */
3922     "?\0" /* 1014, 0x0021, 0x0016 */
3923     "EPI Operation Mode Flag\0" /* 1015, 0x0021, 0x0017 */
3924     "?\0" /* 1016, 0x0021, 0x0018 */
3925     "?\0" /* 1017, 0x0021, 0x0019 */
3926     "?\0" /* 1018, 0x0021, 0x0020 */
3927     "?\0" /* 1019, 0x0021, 0x0021 */
3928     "?\0" /* 1020, 0x0021, 0x0022 */
3929     "?\0" /* 1021, 0x0021, 0x0024 */
3930     "?\0" /* 1022, 0x0021, 0x0025 */
3931     "Image Pixel Offset\0" /* 1023, 0x0021, 0x0026 */
3932     "?\0" /* 1024, 0x0021, 0x0030 */
3933     "?\0" /* 1025, 0x0021, 0x0031 */
3934     "?\0" /* 1026, 0x0021, 0x0032 */
3935     "?\0" /* 1027, 0x0021, 0x0034 */
3936     "Series From Which Prescribed\0" /* 1028, 0x0021, 0x0035 */
3937     "?\0" /* 1029, 0x0021, 0x0036 */
3938     "Screen Format\0" /* 1030, 0x0021, 0x0037 */
3939     "Slab Thickness\0" /* 1031, 0x0021, 0x0039 */
3940     "?\0" /* 1032, 0x0021, 0x0040 */
3941     "?\0" /* 1033, 0x0021, 0x0041 */
3942     "?\0" /* 1034, 0x0021, 0x0042 */
3943     "?\0" /* 1035, 0x0021, 0x0043 */
3944     "?\0" /* 1036, 0x0021, 0x0044 */
3945     "?\0" /* 1037, 0x0021, 0x0045 */
3946     "?\0" /* 1038, 0x0021, 0x0046 */
3947     "?\0" /* 1039, 0x0021, 0x0047 */
3948     "?\0" /* 1040, 0x0021, 0x0048 */
3949     "?\0" /* 1041, 0x0021, 0x0049 */
3950     "?\0" /* 1042, 0x0021, 0x004a */
3951     "?\0" /* 1043, 0x0021, 0x004e */
3952     "?\0" /* 1044, 0x0021, 0x004f */
3953     "?\0" /* 1045, 0x0021, 0x0050 */
3954     "?\0" /* 1046, 0x0021, 0x0051 */
3955     "?\0" /* 1047, 0x0021, 0x0052 */
3956     "?\0" /* 1048, 0x0021, 0x0053 */
3957     "?\0" /* 1049, 0x0021, 0x0054 */
3958     "?\0" /* 1050, 0x0021, 0x0055 */
3959     "?\0" /* 1051, 0x0021, 0x0056 */
3960     "?\0" /* 1052, 0x0021, 0x0057 */
3961     "?\0" /* 1053, 0x0021, 0x0058 */
3962     "?\0" /* 1054, 0x0021, 0x0059 */
3963     "Integer Slop\0" /* 1055, 0x0021, 0x005a */
3964     "Float Slop\0" /* 1056, 0x0021, 0x005b */
3965     "Float Slop\0" /* 1057, 0x0021, 0x005c */
3966     "Float Slop\0" /* 1058, 0x0021, 0x005d */
3967     "Float Slop\0" /* 1059, 0x0021, 0x005e */
3968     "Float Slop\0" /* 1060, 0x0021, 0x005f */
3969     "?\0" /* 1061, 0x0021, 0x0060 */
3970     "Image Normal\0" /* 1062, 0x0021, 0x0061 */
3971     "Reference Type Code\0" /* 1063, 0x0021, 0x0062 */
3972     "Image Distance\0" /* 1064, 0x0021, 0x0063 */
3973     "Image Positioning History Mask\0" /* 1065, 0x0021, 0x0065 */
3974     "Image Row\0" /* 1066, 0x0021, 0x006a */
3975     "Image Column\0" /* 1067, 0x0021, 0x006b */
3976     "?\0" /* 1068, 0x0021, 0x0070 */
3977     "?\0" /* 1069, 0x0021, 0x0071 */
3978     "?\0" /* 1070, 0x0021, 0x0072 */
3979     "Second Repetition Time\0" /* 1071, 0x0021, 0x0073 */
3980     "Light Brightness\0" /* 1072, 0x0021, 0x0075 */
3981     "Light Contrast\0" /* 1073, 0x0021, 0x0076 */
3982     "Overlay Threshold\0" /* 1074, 0x0021, 0x007a */
3983     "Surface Threshold\0" /* 1075, 0x0021, 0x007b */
3984     "Grey Scale Threshold\0" /* 1076, 0x0021, 0x007c */
3985     "?\0" /* 1077, 0x0021, 0x0080 */
3986     "Auto Window Level Alpha\0" /* 1078, 0x0021, 0x0081 */
3987     "?\0" /* 1079, 0x0021, 0x0082 */
3988     "Auto Window Level Window\0" /* 1080, 0x0021, 0x0083 */
3989     "Auto Window Level Level\0" /* 1081, 0x0021, 0x0084 */
3990     "?\0" /* 1082, 0x0021, 0x0090 */
3991     "?\0" /* 1083, 0x0021, 0x0091 */
3992     "?\0" /* 1084, 0x0021, 0x0092 */
3993     "?\0" /* 1085, 0x0021, 0x0093 */
3994     "EPI Change Value of X Component\0" /* 1086, 0x0021, 0x0094 */
3995     "EPI Change Value of Y Component\0" /* 1087, 0x0021, 0x0095 */
3996     "EPI Change Value of Z Component\0" /* 1088, 0x0021, 0x0096 */
3997     "?\0" /* 1089, 0x0021, 0x00a0 */
3998     "?\0" /* 1090, 0x0021, 0x00a1 */
3999     "?\0" /* 1091, 0x0021, 0x00a2 */
4000     "?\0" /* 1092, 0x0021, 0x00a3 */
4001     "?\0" /* 1093, 0x0021, 0x00a4 */
4002     "?\0" /* 1094, 0x0021, 0x00a7 */
4003     "?\0" /* 1095, 0x0021, 0x00b0 */
4004     "?\0" /* 1096, 0x0021, 0x00c0 */
4005     "?\0" /* 1097, 0x0023, 0x0000 */
4006     "Number Of Series In Study\0" /* 1098, 0x0023, 0x0001 */
4007     "Number Of Unarchived Series\0" /* 1099, 0x0023, 0x0002 */
4008     "?\0" /* 1100, 0x0023, 0x0010 */
4009     "?\0" /* 1101, 0x0023, 0x0020 */
4010     "?\0" /* 1102, 0x0023, 0x0030 */
4011     "?\0" /* 1103, 0x0023, 0x0040 */
4012     "?\0" /* 1104, 0x0023, 0x0050 */
4013     "?\0" /* 1105, 0x0023, 0x0060 */
4014     "?\0" /* 1106, 0x0023, 0x0070 */
4015     "Number Of Updates To Info\0" /* 1107, 0x0023, 0x0074 */
4016     "Indicates If Study Has Complete Info\0" /* 1108, 0x0023, 0x007d */
4017     "?\0" /* 1109, 0x0023, 0x0080 */
4018     "?\0" /* 1110, 0x0023, 0x0090 */
4019     "?\0" /* 1111, 0x0023, 0x00ff */
4020     "Group Length\0" /* 1112, 0x0025, 0x0000 */
4021     "Last Pulse Sequence Used\0" /* 1113, 0x0025, 0x0006 */
4022     "Images In Series\0" /* 1114, 0x0025, 0x0007 */
4023     "Landmark Counter\0" /* 1115, 0x0025, 0x0010 */
4024     "Number Of Acquisitions\0" /* 1116, 0x0025, 0x0011 */
4025     "Indicates Number Of Updates To Info\0" /* 1117, 0x0025, 0x0014 */
4026     "Series Complete Flag\0" /* 1118, 0x0025, 0x0017 */
4027     "Number Of Images Archived\0" /* 1119, 0x0025, 0x0018 */
4028     "Last Image Number Used\0" /* 1120, 0x0025, 0x0019 */
4029     "Primary Receiver Suite And Host\0" /* 1121, 0x0025, 0x001a */
4030     "?\0" /* 1122, 0x0027, 0x0000 */
4031     "Image Archive Flag\0" /* 1123, 0x0027, 0x0006 */
4032     "Scout Type\0" /* 1124, 0x0027, 0x0010 */
4033     "?\0" /* 1125, 0x0027, 0x0011 */
4034     "?\0" /* 1126, 0x0027, 0x0012 */
4035     "?\0" /* 1127, 0x0027, 0x0013 */
4036     "?\0" /* 1128, 0x0027, 0x0014 */
4037     "?\0" /* 1129, 0x0027, 0x0015 */
4038     "?\0" /* 1130, 0x0027, 0x0016 */
4039     "Vma Mamp\0" /* 1131, 0x0027, 0x001c */
4040     "Vma Phase\0" /* 1132, 0x0027, 0x001d */
4041     "Vma Mod\0" /* 1133, 0x0027, 0x001e */
4042     "Vma Clip\0" /* 1134, 0x0027, 0x001f */
4043     "Smart Scan On Off Flag\0" /* 1135, 0x0027, 0x0020 */
4044     "Foreign Image Revision\0" /* 1136, 0x0027, 0x0030 */
4045     "Imaging Mode\0" /* 1137, 0x0027, 0x0031 */
4046     "Pulse Sequence\0" /* 1138, 0x0027, 0x0032 */
4047     "Imaging Options\0" /* 1139, 0x0027, 0x0033 */
4048     "Plane Type\0" /* 1140, 0x0027, 0x0035 */
4049     "Oblique Plane\0" /* 1141, 0x0027, 0x0036 */
4050     "RAS Letter Of Image Location\0" /* 1142, 0x0027, 0x0040 */
4051     "Image Location\0" /* 1143, 0x0027, 0x0041 */
4052     "Center R Coord Of Plane Image\0" /* 1144, 0x0027, 0x0042 */
4053     "Center A Coord Of Plane Image\0" /* 1145, 0x0027, 0x0043 */
4054     "Center S Coord Of Plane Image\0" /* 1146, 0x0027, 0x0044 */
4055     "Normal R Coord\0" /* 1147, 0x0027, 0x0045 */
4056     "Normal A Coord\0" /* 1148, 0x0027, 0x0046 */
4057     "Normal S Coord\0" /* 1149, 0x0027, 0x0047 */
4058     "R Coord Of Top Right Corner\0" /* 1150, 0x0027, 0x0048 */
4059     "A Coord Of Top Right Corner\0" /* 1151, 0x0027, 0x0049 */
4060     "S Coord Of Top Right Corner\0" /* 1152, 0x0027, 0x004a */
4061     "R Coord Of Bottom Right Corner\0" /* 1153, 0x0027, 0x004b */
4062     "A Coord Of Bottom Right Corner\0" /* 1154, 0x0027, 0x004c */
4063     "S Coord Of Bottom Right Corner\0" /* 1155, 0x0027, 0x004d */
4064     "Table Start Location\0" /* 1156, 0x0027, 0x0050 */
4065     "Table End Location\0" /* 1157, 0x0027, 0x0051 */
4066     "RAS Letter For Side Of Image\0" /* 1158, 0x0027, 0x0052 */
4067     "RAS Letter For Anterior Posterior\0" /* 1159, 0x0027, 0x0053 */
4068     "RAS Letter For Scout Start Loc\0" /* 1160, 0x0027, 0x0054 */
4069     "RAS Letter For Scout End Loc\0" /* 1161, 0x0027, 0x0055 */
4070     "Image Dimension X\0" /* 1162, 0x0027, 0x0060 */
4071     "Image Dimension Y\0" /* 1163, 0x0027, 0x0061 */
4072     "Number Of Excitations\0" /* 1164, 0x0027, 0x0062 */
4073     "Image Presentation Group Length\0" /* 1165, 0x0028, 0x0000 */
4074     "Samples per Pixel\0" /* 1166, 0x0028, 0x0002 */
4075     "Photometric Interpretation\0" /* 1167, 0x0028, 0x0004 */
4076     "Image Dimensions\0" /* 1168, 0x0028, 0x0005 */
4077     "Planar Configuration\0" /* 1169, 0x0028, 0x0006 */
4078     "Number of Frames\0" /* 1170, 0x0028, 0x0008 */
4079     "Frame Increment Pointer\0" /* 1171, 0x0028, 0x0009 */
4080     "Rows\0" /* 1172, 0x0028, 0x0010 */
4081     "Columns\0" /* 1173, 0x0028, 0x0011 */
4082     "Planes\0" /* 1174, 0x0028, 0x0012 */
4083     "Ultrasound Color Data Present\0" /* 1175, 0x0028, 0x0014 */
4084     "Pixel Spacing\0" /* 1176, 0x0028, 0x0030 */
4085     "Zoom Factor\0" /* 1177, 0x0028, 0x0031 */
4086     "Zoom Center\0" /* 1178, 0x0028, 0x0032 */
4087     "Pixel Aspect Ratio\0" /* 1179, 0x0028, 0x0034 */
4088     "Image Format\0" /* 1180, 0x0028, 0x0040 */
4089     "Manipulated Image\0" /* 1181, 0x0028, 0x0050 */
4090     "Corrected Image\0" /* 1182, 0x0028, 0x0051 */
4091     "Compression Recognition Code\0" /* 1183, 0x0028, 0x005f */
4092     "Compression Code\0" /* 1184, 0x0028, 0x0060 */
4093     "Compression Originator\0" /* 1185, 0x0028, 0x0061 */
4094     "Compression Label\0" /* 1186, 0x0028, 0x0062 */
4095     "Compression Description\0" /* 1187, 0x0028, 0x0063 */
4096     "Compression Sequence\0" /* 1188, 0x0028, 0x0065 */
4097     "Compression Step Pointers\0" /* 1189, 0x0028, 0x0066 */
4098     "Repeat Interval\0" /* 1190, 0x0028, 0x0068 */
4099     "Bits Grouped\0" /* 1191, 0x0028, 0x0069 */
4100     "Perimeter Table\0" /* 1192, 0x0028, 0x0070 */
4101     "Perimeter Value\0" /* 1193, 0x0028, 0x0071 */
4102     "Predictor Rows\0" /* 1194, 0x0028, 0x0080 */
4103     "Predictor Columns\0" /* 1195, 0x0028, 0x0081 */
4104     "Predictor Constants\0" /* 1196, 0x0028, 0x0082 */
4105     "Blocked Pixels\0" /* 1197, 0x0028, 0x0090 */
4106     "Block Rows\0" /* 1198, 0x0028, 0x0091 */
4107     "Block Columns\0" /* 1199, 0x0028, 0x0092 */
4108     "Row Overlap\0" /* 1200, 0x0028, 0x0093 */
4109     "Column Overlap\0" /* 1201, 0x0028, 0x0094 */
4110     "Bits Allocated\0" /* 1202, 0x0028, 0x0100 */
4111     "Bits Stored\0" /* 1203, 0x0028, 0x0101 */
4112     "High Bit\0" /* 1204, 0x0028, 0x0102 */
4113     "Pixel Representation\0" /* 1205, 0x0028, 0x0103 */
4114     "Smallest Valid Pixel Value\0" /* 1206, 0x0028, 0x0104 */
4115     "Largest Valid Pixel Value\0" /* 1207, 0x0028, 0x0105 */
4116     "Smallest Image Pixel Value\0" /* 1208, 0x0028, 0x0106 */
4117     "Largest Image Pixel Value\0" /* 1209, 0x0028, 0x0107 */
4118     "Smallest Pixel Value in Series\0" /* 1210, 0x0028, 0x0108 */
4119     "Largest Pixel Value in Series\0" /* 1211, 0x0028, 0x0109 */
4120     "Smallest Pixel Value in Plane\0" /* 1212, 0x0028, 0x0110 */
4121     "Largest Pixel Value in Plane\0" /* 1213, 0x0028, 0x0111 */
4122     "Pixel Padding Value\0" /* 1214, 0x0028, 0x0120 */
4123     "Pixel Padding Range Limit\0" /* 1215, 0x0028, 0x0121 */
4124     "Image Location\0" /* 1216, 0x0028, 0x0200 */
4125     "Quality Control Image\0" /* 1217, 0x0028, 0x0300 */
4126     "Burned In Annotation\0" /* 1218, 0x0028, 0x0301 */
4127     "?\0" /* 1219, 0x0028, 0x0400 */
4128     "?\0" /* 1220, 0x0028, 0x0401 */
4129     "?\0" /* 1221, 0x0028, 0x0402 */
4130     "?\0" /* 1222, 0x0028, 0x0403 */
4131     "Details of Coefficients\0" /* 1223, 0x0028, 0x0404 */
4132     "DCT Label\0" /* 1224, 0x0028, 0x0700 */
4133     "Data Block Description\0" /* 1225, 0x0028, 0x0701 */
4134     "Data Block\0" /* 1226, 0x0028, 0x0702 */
4135     "Normalization Factor Format\0" /* 1227, 0x0028, 0x0710 */
4136     "Zonal Map Number Format\0" /* 1228, 0x0028, 0x0720 */
4137     "Zonal Map Location\0" /* 1229, 0x0028, 0x0721 */
4138     "Zonal Map Format\0" /* 1230, 0x0028, 0x0722 */
4139     "Adaptive Map Format\0" /* 1231, 0x0028, 0x0730 */
4140     "Code Number Format\0" /* 1232, 0x0028, 0x0740 */
4141     "Code Label\0" /* 1233, 0x0028, 0x0800 */
4142     "Number of Tables\0" /* 1234, 0x0028, 0x0802 */
4143     "Code Table Location\0" /* 1235, 0x0028, 0x0803 */
4144     "Bits For Code Word\0" /* 1236, 0x0028, 0x0804 */
4145     "Image Data Location\0" /* 1237, 0x0028, 0x0808 */
4146     "Pixel Intensity Relationship\0" /* 1238, 0x0028, 0x1040 */
4147     "Pixel Intensity Relationship Sign\0" /* 1239, 0x0028, 0x1041 */
4148     "Window Center\0" /* 1240, 0x0028, 0x1050 */
4149     "Window Width\0" /* 1241, 0x0028, 0x1051 */
4150     "Rescale Intercept\0" /* 1242, 0x0028, 0x1052 */
4151     "Rescale Slope\0" /* 1243, 0x0028, 0x1053 */
4152     "Rescale Type\0" /* 1244, 0x0028, 0x1054 */
4153     "Window Center & Width Explanation\0" /* 1245, 0x0028, 0x1055 */
4154     "Gray Scale\0" /* 1246, 0x0028, 0x1080 */
4155     "Recommended Viewing Mode\0" /* 1247, 0x0028, 0x1090 */
4156     "Gray Lookup Table Descriptor\0" /* 1248, 0x0028, 0x1100 */
4157     "Red Palette Color Lookup Table Descriptor\0" /* 1249, 0x0028, 0x1101 */
4158     "Green Palette Color Lookup Table Descriptor\0" /* 1250, 0x0028, 0x1102 */
4159     "Blue Palette Color Lookup Table Descriptor\0" /* 1251, 0x0028, 0x1103 */
4160     "Large Red Palette Color Lookup Table Descriptor\0" /* 1252, 0x0028, 0x1111 */
4161     "Large Green Palette Color Lookup Table Descriptor\0" /* 1253, 0x0028, 0x1112 */
4162     "Large Blue Palette Color Lookup Table Descriptor\0" /* 1254, 0x0028, 0x1113 */
4163     "Palette Color Lookup Table UID\0" /* 1255, 0x0028, 0x1199 */
4164     "Gray Lookup Table Data\0" /* 1256, 0x0028, 0x1200 */
4165     "Red Palette Color Lookup Table Data\0" /* 1257, 0x0028, 0x1201 */
4166     "Green Palette Color Lookup Table Data\0" /* 1258, 0x0028, 0x1202 */
4167     "Blue Palette Color Lookup Table Data\0" /* 1259, 0x0028, 0x1203 */
4168     "Large Red Palette Color Lookup Table Data\0" /* 1260, 0x0028, 0x1211 */
4169     "Large Green Palette Color Lookup Table Data\0" /* 1261, 0x0028, 0x1212 */
4170     "Large Blue Palette Color Lookup Table Data\0" /* 1262, 0x0028, 0x1213 */
4171     "Large Palette Color Lookup Table UID\0" /* 1263, 0x0028, 0x1214 */
4172     "Segmented Red Palette Color Lookup Table Data\0" /* 1264, 0x0028, 0x1221 */
4173     "Segmented Green Palette Color Lookup Table Data\0" /* 1265, 0x0028, 0x1222 */
4174     "Segmented Blue Palette Color Lookup Table Data\0" /* 1266, 0x0028, 0x1223 */
4175     "Implant Present\0" /* 1267, 0x0028, 0x1300 */
4176     "Lossy Image Compression\0" /* 1268, 0x0028, 0x2110 */
4177     "Lossy Image Compression Ratio\0" /* 1269, 0x0028, 0x2112 */
4178     "Modality LUT Sequence\0" /* 1270, 0x0028, 0x3000 */
4179     "LUT Descriptor\0" /* 1271, 0x0028, 0x3002 */
4180     "LUT Explanation\0" /* 1272, 0x0028, 0x3003 */
4181     "Modality LUT Type\0" /* 1273, 0x0028, 0x3004 */
4182     "LUT Data\0" /* 1274, 0x0028, 0x3006 */
4183     "VOI LUT Sequence\0" /* 1275, 0x0028, 0x3010 */
4184     "Image Presentation Comments\0" /* 1276, 0x0028, 0x4000 */
4185     "Biplane Acquisition Sequence\0" /* 1277, 0x0028, 0x5000 */
4186     "Representative Frame Number\0" /* 1278, 0x0028, 0x6010 */
4187     "Frame Numbers of Interest\0" /* 1279, 0x0028, 0x6020 */
4188     "Frame of Interest Description\0" /* 1280, 0x0028, 0x6022 */
4189     "Mask Pointer\0" /* 1281, 0x0028, 0x6030 */
4190     "R Wave Pointer\0" /* 1282, 0x0028, 0x6040 */
4191     "Mask Subtraction Sequence\0" /* 1283, 0x0028, 0x6100 */
4192     "Mask Operation\0" /* 1284, 0x0028, 0x6101 */
4193     "Applicable Frame Range\0" /* 1285, 0x0028, 0x6102 */
4194     "Mask Frame Numbers\0" /* 1286, 0x0028, 0x6110 */
4195     "Contrast Frame Averaging\0" /* 1287, 0x0028, 0x6112 */
4196     "Mask Sub-Pixel Shift\0" /* 1288, 0x0028, 0x6114 */
4197     "TID Offset\0" /* 1289, 0x0028, 0x6120 */
4198     "Mask Operation Explanation\0" /* 1290, 0x0028, 0x6190 */
4199     "?\0" /* 1291, 0x0029, 0x0000 */
4200     "?\0" /* 1292, 0x0029, 0x0001 */
4201     "?\0" /* 1293, 0x0029, 0x0002 */
4202     "?\0" /* 1294, 0x0029, 0x0003 */
4203     "?\0" /* 1295, 0x0029, 0x0004 */
4204     "?\0" /* 1296, 0x0029, 0x0005 */
4205     "?\0" /* 1297, 0x0029, 0x0006 */
4206     "Lower Range Of Pixels\0" /* 1298, 0x0029, 0x0007 */
4207     "Lower Range Of Pixels\0" /* 1299, 0x0029, 0x0008 */
4208     "Lower Range Of Pixels\0" /* 1300, 0x0029, 0x0009 */
4209     "Lower Range Of Pixels\0" /* 1301, 0x0029, 0x000a */
4210     "?\0" /* 1302, 0x0029, 0x000c */
4211     "Zoom Enable Status\0" /* 1303, 0x0029, 0x000e */
4212     "Zoom Select Status\0" /* 1304, 0x0029, 0x000f */
4213     "?\0" /* 1305, 0x0029, 0x0010 */
4214     "?\0" /* 1306, 0x0029, 0x0011 */
4215     "?\0" /* 1307, 0x0029, 0x0013 */
4216     "?\0" /* 1308, 0x0029, 0x0015 */
4217     "Lower Range Of Pixels\0" /* 1309, 0x0029, 0x0016 */
4218     "Lower Range Of Pixels\0" /* 1310, 0x0029, 0x0017 */
4219     "Upper Range Of Pixels\0" /* 1311, 0x0029, 0x0018 */
4220     "Length Of Total Info In Bytes\0" /* 1312, 0x0029, 0x001a */
4221     "?\0" /* 1313, 0x0029, 0x001e */
4222     "?\0" /* 1314, 0x0029, 0x001f */
4223     "?\0" /* 1315, 0x0029, 0x0020 */
4224     "Pixel Quality Value\0" /* 1316, 0x0029, 0x0022 */
4225     "Processed Pixel Data Quality\0" /* 1317, 0x0029, 0x0025 */
4226     "Version Of Info Structure\0" /* 1318, 0x0029, 0x0026 */
4227     "?\0" /* 1319, 0x0029, 0x0030 */
4228     "?\0" /* 1320, 0x0029, 0x0031 */
4229     "?\0" /* 1321, 0x0029, 0x0032 */
4230     "?\0" /* 1322, 0x0029, 0x0033 */
4231     "?\0" /* 1323, 0x0029, 0x0034 */
4232     "Advantage Comp Underflow\0" /* 1324, 0x0029, 0x0035 */
4233     "?\0" /* 1325, 0x0029, 0x0038 */
4234     "?\0" /* 1326, 0x0029, 0x0040 */
4235     "Magnifying Glass Rectangle\0" /* 1327, 0x0029, 0x0041 */
4236     "Magnifying Glass Factor\0" /* 1328, 0x0029, 0x0043 */
4237     "Magnifying Glass Function\0" /* 1329, 0x0029, 0x0044 */
4238     "Magnifying Glass Enable Status\0" /* 1330, 0x0029, 0x004e */
4239     "Magnifying Glass Select Status\0" /* 1331, 0x0029, 0x004f */
4240     "?\0" /* 1332, 0x0029, 0x0050 */
4241     "Exposure Code\0" /* 1333, 0x0029, 0x0051 */
4242     "Sort Code\0" /* 1334, 0x0029, 0x0052 */
4243     "?\0" /* 1335, 0x0029, 0x0053 */
4244     "?\0" /* 1336, 0x0029, 0x0060 */
4245     "?\0" /* 1337, 0x0029, 0x0061 */
4246     "?\0" /* 1338, 0x0029, 0x0067 */
4247     "?\0" /* 1339, 0x0029, 0x0070 */
4248     "?\0" /* 1340, 0x0029, 0x0071 */
4249     "?\0" /* 1341, 0x0029, 0x0072 */
4250     "Window Select Status\0" /* 1342, 0x0029, 0x0077 */
4251     "ECG Display Printing ID\0" /* 1343, 0x0029, 0x0078 */
4252     "ECG Display Printing\0" /* 1344, 0x0029, 0x0079 */
4253     "ECG Display Printing Enable Status\0" /* 1345, 0x0029, 0x007e */
4254     "ECG Display Printing Select Status\0" /* 1346, 0x0029, 0x007f */
4255     "?\0" /* 1347, 0x0029, 0x0080 */
4256     "?\0" /* 1348, 0x0029, 0x0081 */
4257     "View Zoom\0" /* 1349, 0x0029, 0x0082 */
4258     "View Transform\0" /* 1350, 0x0029, 0x0083 */
4259     "Physiological Display Enable Status\0" /* 1351, 0x0029, 0x008e */
4260     "Physiological Display Select Status\0" /* 1352, 0x0029, 0x008f */
4261     "?\0" /* 1353, 0x0029, 0x0090 */
4262     "Shutter Type\0" /* 1354, 0x0029, 0x0099 */
4263     "Rows of Rectangular Shutter\0" /* 1355, 0x0029, 0x00a0 */
4264     "Columns of Rectangular Shutter\0" /* 1356, 0x0029, 0x00a1 */
4265     "Origin of Rectangular Shutter\0" /* 1357, 0x0029, 0x00a2 */
4266     "Radius of Circular Shutter\0" /* 1358, 0x0029, 0x00b0 */
4267     "Origin of Circular Shutter\0" /* 1359, 0x0029, 0x00b2 */
4268     "Functional Shutter ID\0" /* 1360, 0x0029, 0x00c0 */
4269     "?\0" /* 1361, 0x0029, 0x00c1 */
4270     "Scan Resolution\0" /* 1362, 0x0029, 0x00c3 */
4271     "Field of View\0" /* 1363, 0x0029, 0x00c4 */
4272     "Field Of Shutter Rectangle\0" /* 1364, 0x0029, 0x00c5 */
4273     "Shutter Enable Status\0" /* 1365, 0x0029, 0x00ce */
4274     "Shutter Select Status\0" /* 1366, 0x0029, 0x00cf */
4275     "?\0" /* 1367, 0x0029, 0x00d0 */
4276     "?\0" /* 1368, 0x0029, 0x00d1 */
4277     "Slice Thickness\0" /* 1369, 0x0029, 0x00d5 */
4278     "Request UID\0" /* 1370, 0x0031, 0x0010 */
4279     "Examination Reason\0" /* 1371, 0x0031, 0x0012 */
4280     "Requested Date\0" /* 1372, 0x0031, 0x0030 */
4281     "Worklist Request Start Time\0" /* 1373, 0x0031, 0x0032 */
4282     "Worklist Request End Time\0" /* 1374, 0x0031, 0x0033 */
4283     "Requesting Physician\0" /* 1375, 0x0031, 0x0045 */
4284     "Requested Time\0" /* 1376, 0x0031, 0x004a */
4285     "Requested Physician\0" /* 1377, 0x0031, 0x0050 */
4286     "Requested Location\0" /* 1378, 0x0031, 0x0080 */
4287     "Study Group Length\0" /* 1379, 0x0032, 0x0000 */
4288     "Study Status ID\0" /* 1380, 0x0032, 0x000a */
4289     "Study Priority ID\0" /* 1381, 0x0032, 0x000c */
4290     "Study ID Issuer\0" /* 1382, 0x0032, 0x0012 */
4291     "Study Verified Date\0" /* 1383, 0x0032, 0x0032 */
4292     "Study Verified Time\0" /* 1384, 0x0032, 0x0033 */
4293     "Study Read Date\0" /* 1385, 0x0032, 0x0034 */
4294     "Study Read Time\0" /* 1386, 0x0032, 0x0035 */
4295     "Scheduled Study Start Date\0" /* 1387, 0x0032, 0x1000 */
4296     "Scheduled Study Start Time\0" /* 1388, 0x0032, 0x1001 */
4297     "Scheduled Study Stop Date\0" /* 1389, 0x0032, 0x1010 */
4298     "Scheduled Study Stop Time\0" /* 1390, 0x0032, 0x1011 */
4299     "Scheduled Study Location\0" /* 1391, 0x0032, 0x1020 */
4300     "Scheduled Study Location AE Title(s)\0" /* 1392, 0x0032, 0x1021 */
4301     "Reason for Study\0" /* 1393, 0x0032, 0x1030 */
4302     "Requesting Physician\0" /* 1394, 0x0032, 0x1032 */
4303     "Requesting Service\0" /* 1395, 0x0032, 0x1033 */
4304     "Study Arrival Date\0" /* 1396, 0x0032, 0x1040 */
4305     "Study Arrival Time\0" /* 1397, 0x0032, 0x1041 */
4306     "Study Completion Date\0" /* 1398, 0x0032, 0x1050 */
4307     "Study Completion Time\0" /* 1399, 0x0032, 0x1051 */
4308     "Study Component Status ID\0" /* 1400, 0x0032, 0x1055 */
4309     "Requested Procedure Description\0" /* 1401, 0x0032, 0x1060 */
4310     "Requested Procedure Code Sequence\0" /* 1402, 0x0032, 0x1064 */
4311     "Requested Contrast Agent\0" /* 1403, 0x0032, 0x1070 */
4312     "Study Comments\0" /* 1404, 0x0032, 0x4000 */
4313     "?\0" /* 1405, 0x0033, 0x0001 */
4314     "?\0" /* 1406, 0x0033, 0x0002 */
4315     "?\0" /* 1407, 0x0033, 0x0005 */
4316     "?\0" /* 1408, 0x0033, 0x0006 */
4317     "Patient Study UID\0" /* 1409, 0x0033, 0x0010 */
4318     "ReferringDepartment\0" /* 1410, 0x0037, 0x0010 */
4319     "ScreenNumber\0" /* 1411, 0x0037, 0x0020 */
4320     "LeftOrientation\0" /* 1412, 0x0037, 0x0040 */
4321     "RightOrientation\0" /* 1413, 0x0037, 0x0042 */
4322     "Inversion\0" /* 1414, 0x0037, 0x0050 */
4323     "DSA\0" /* 1415, 0x0037, 0x0060 */
4324     "Visit Group Length\0" /* 1416, 0x0038, 0x0000 */
4325     "Referenced Patient Alias Sequence\0" /* 1417, 0x0038, 0x0004 */
4326     "Visit Status ID\0" /* 1418, 0x0038, 0x0008 */
4327     "Admission ID\0" /* 1419, 0x0038, 0x0010 */
4328     "Issuer of Admission ID\0" /* 1420, 0x0038, 0x0011 */
4329     "Route of Admissions\0" /* 1421, 0x0038, 0x0016 */
4330     "Scheduled Admission Date\0" /* 1422, 0x0038, 0x001a */
4331     "Scheduled Admission Time\0" /* 1423, 0x0038, 0x001b */
4332     "Scheduled Discharge Date\0" /* 1424, 0x0038, 0x001c */
4333     "Scheduled Discharge Time\0" /* 1425, 0x0038, 0x001d */
4334     "Scheduled Patient Institution Residence\0" /* 1426, 0x0038, 0x001e */
4335     "Admitting Date\0" /* 1427, 0x0038, 0x0020 */
4336     "Admitting Time\0" /* 1428, 0x0038, 0x0021 */
4337     "Discharge Date\0" /* 1429, 0x0038, 0x0030 */
4338     "Discharge Time\0" /* 1430, 0x0038, 0x0032 */
4339     "Discharge Diagnosis Description\0" /* 1431, 0x0038, 0x0040 */
4340     "Discharge Diagnosis Code Sequence\0" /* 1432, 0x0038, 0x0044 */
4341     "Special Needs\0" /* 1433, 0x0038, 0x0050 */
4342     "Current Patient Location\0" /* 1434, 0x0038, 0x0300 */
4343     "Patient's Institution Residence\0" /* 1435, 0x0038, 0x0400 */
4344     "Patient State\0" /* 1436, 0x0038, 0x0500 */
4345     "Visit Comments\0" /* 1437, 0x0038, 0x4000 */
4346     "Private Entity Number\0" /* 1438, 0x0039, 0x0080 */
4347     "Private Entity Date\0" /* 1439, 0x0039, 0x0085 */
4348     "Private Entity Time\0" /* 1440, 0x0039, 0x0090 */
4349     "Private Entity Launch Command\0" /* 1441, 0x0039, 0x0095 */
4350     "Private Entity Type\0" /* 1442, 0x0039, 0x00aa */
4351     "Waveform Sequence\0" /* 1443, 0x003a, 0x0002 */
4352     "Waveform Number of Channels\0" /* 1444, 0x003a, 0x0005 */
4353     "Waveform Number of Samples\0" /* 1445, 0x003a, 0x0010 */
4354     "Sampling Frequency\0" /* 1446, 0x003a, 0x001a */
4355     "Group Label\0" /* 1447, 0x003a, 0x0020 */
4356     "Waveform Sample Value Representation\0" /* 1448, 0x003a, 0x0103 */
4357     "Waveform Padding Value\0" /* 1449, 0x003a, 0x0122 */
4358     "Channel Definition\0" /* 1450, 0x003a, 0x0200 */
4359     "Waveform Channel Number\0" /* 1451, 0x003a, 0x0202 */
4360     "Channel Label\0" /* 1452, 0x003a, 0x0203 */
4361     "Channel Status\0" /* 1453, 0x003a, 0x0205 */
4362     "Channel Source\0" /* 1454, 0x003a, 0x0208 */
4363     "Channel Source Modifiers\0" /* 1455, 0x003a, 0x0209 */
4364     "Differential Channel Source\0" /* 1456, 0x003a, 0x020a */
4365     "Differential Channel Source Modifiers\0" /* 1457, 0x003a, 0x020b */
4366     "Channel Sensitivity\0" /* 1458, 0x003a, 0x0210 */
4367     "Channel Sensitivity Units\0" /* 1459, 0x003a, 0x0211 */
4368     "Channel Sensitivity Correction Factor\0" /* 1460, 0x003a, 0x0212 */
4369     "Channel Baseline\0" /* 1461, 0x003a, 0x0213 */
4370     "Channel Time Skew\0" /* 1462, 0x003a, 0x0214 */
4371     "Channel Sample Skew\0" /* 1463, 0x003a, 0x0215 */
4372     "Channel Minimum Value\0" /* 1464, 0x003a, 0x0216 */
4373     "Channel Maximum Value\0" /* 1465, 0x003a, 0x0217 */
4374     "Channel Offset\0" /* 1466, 0x003a, 0x0218 */
4375     "Bits Per Sample\0" /* 1467, 0x003a, 0x021a */
4376     "Filter Low Frequency\0" /* 1468, 0x003a, 0x0220 */
4377     "Filter High Frequency\0" /* 1469, 0x003a, 0x0221 */
4378     "Notch Filter Frequency\0" /* 1470, 0x003a, 0x0222 */
4379     "Notch Filter Bandwidth\0" /* 1471, 0x003a, 0x0223 */
4380     "Waveform Data\0" /* 1472, 0x003a, 0x1000 */
4381     "Scheduled Station AE Title\0" /* 1473, 0x0040, 0x0001 */
4382     "Scheduled Procedure Step Start Date\0" /* 1474, 0x0040, 0x0002 */
4383     "Scheduled Procedure Step Start Time\0" /* 1475, 0x0040, 0x0003 */
4384     "Scheduled Procedure Step End Date\0" /* 1476, 0x0040, 0x0004 */
4385     "Scheduled Procedure Step End Time\0" /* 1477, 0x0040, 0x0005 */
4386     "Scheduled Performing Physician Name\0" /* 1478, 0x0040, 0x0006 */
4387     "Scheduled Procedure Step Description\0" /* 1479, 0x0040, 0x0007 */
4388     "Scheduled Action Item Code Sequence\0" /* 1480, 0x0040, 0x0008 */
4389     "Scheduled Procedure Step ID\0" /* 1481, 0x0040, 0x0009 */
4390     "Scheduled Station Name\0" /* 1482, 0x0040, 0x0010 */
4391     "Scheduled Procedure Step Location\0" /* 1483, 0x0040, 0x0011 */
4392     "Pre-Medication\0" /* 1484, 0x0040, 0x0012 */
4393     "Scheduled Procedure Step Status\0" /* 1485, 0x0040, 0x0020 */
4394     "Scheduled Procedure Step Sequence\0" /* 1486, 0x0040, 0x0100 */
4395     "Entrance Dose\0" /* 1487, 0x0040, 0x0302 */
4396     "Exposed Area\0" /* 1488, 0x0040, 0x0303 */
4397     "Distance Source to Entrance\0" /* 1489, 0x0040, 0x0306 */
4398     "Distance Source to Support\0" /* 1490, 0x0040, 0x0307 */
4399     "Comments On Radiation Dose\0" /* 1491, 0x0040, 0x0310 */
4400     "X-Ray Output\0" /* 1492, 0x0040, 0x0312 */
4401     "Half Value Layer\0" /* 1493, 0x0040, 0x0314 */
4402     "Organ Dose\0" /* 1494, 0x0040, 0x0316 */
4403     "Organ Exposed\0" /* 1495, 0x0040, 0x0318 */
4404     "Comments On Scheduled Procedure Step\0" /* 1496, 0x0040, 0x0400 */
4405     "Specimen Accession Number\0" /* 1497, 0x0040, 0x050a */
4406     "Specimen Sequence\0" /* 1498, 0x0040, 0x0550 */
4407     "Specimen Identifier\0" /* 1499, 0x0040, 0x0551 */
4408     "Specimen Description Sequence\0" /* 1500, 0x0040, 0x0552 */
4409     "Specimen Description\0" /* 1501, 0x0040, 0x0553 */
4410     "Acquisition Context Sequence\0" /* 1502, 0x0040, 0x0555 */
4411     "Acquisition Context Description\0" /* 1503, 0x0040, 0x0556 */
4412     "Specimen Type Code Sequence\0" /* 1504, 0x0040, 0x059a */
4413     "Slide Identifier\0" /* 1505, 0x0040, 0x06fa */
4414     "Image Center Point Coordinates Sequence\0" /* 1506, 0x0040, 0x071a */
4415     "X Offset In Slide Coordinate System\0" /* 1507, 0x0040, 0x072a */
4416     "Y Offset In Slide Coordinate System\0" /* 1508, 0x0040, 0x073a */
4417     "Z Offset In Slide Coordinate System\0" /* 1509, 0x0040, 0x074a */
4418     "Pixel Spacing Sequence\0" /* 1510, 0x0040, 0x08d8 */
4419     "Coordinate System Axis Code Sequence\0" /* 1511, 0x0040, 0x08da */
4420     "Measurement Units Code Sequence\0" /* 1512, 0x0040, 0x08ea */
4421     "Vital Stain Code Sequence\0" /* 1513, 0x0040, 0x09f8 */
4422     "Requested Procedure ID\0" /* 1514, 0x0040, 0x1001 */
4423     "Reason For Requested Procedure\0" /* 1515, 0x0040, 0x1002 */
4424     "Requested Procedure Priority\0" /* 1516, 0x0040, 0x1003 */
4425     "Patient Transport Arrangements\0" /* 1517, 0x0040, 0x1004 */
4426     "Requested Procedure Location\0" /* 1518, 0x0040, 0x1005 */
4427     "Placer Order Number of Procedure\0" /* 1519, 0x0040, 0x1006 */
4428     "Filler Order Number of Procedure\0" /* 1520, 0x0040, 0x1007 */
4429     "Confidentiality Code\0" /* 1521, 0x0040, 0x1008 */
4430     "Reporting Priority\0" /* 1522, 0x0040, 0x1009 */
4431     "Names of Intended Recipients of Results\0" /* 1523, 0x0040, 0x1010 */
4432     "Requested Procedure Comments\0" /* 1524, 0x0040, 0x1400 */
4433     "Reason For Imaging Service Request\0" /* 1525, 0x0040, 0x2001 */
4434     "Issue Date of Imaging Service Request\0" /* 1526, 0x0040, 0x2004 */
4435     "Issue Time of Imaging Service Request\0" /* 1527, 0x0040, 0x2005 */
4436     "Placer Order Number of Imaging Service Request\0" /* 1528, 0x0040, 0x2006 */
4437     "Filler Order Number of Imaging Service Request\0" /* 1529, 0x0040, 0x2007 */
4438     "Order Entered By\0" /* 1530, 0x0040, 0x2008 */
4439     "Order Enterer Location\0" /* 1531, 0x0040, 0x2009 */
4440     "Order Callback Phone Number\0" /* 1532, 0x0040, 0x2010 */
4441     "Imaging Service Request Comments\0" /* 1533, 0x0040, 0x2400 */
4442     "Confidentiality Constraint On Patient Data\0" /* 1534, 0x0040, 0x3001 */
4443     "Findings Flag\0" /* 1535, 0x0040, 0xa007 */
4444     "Findings Sequence\0" /* 1536, 0x0040, 0xa020 */
4445     "Findings Group UID\0" /* 1537, 0x0040, 0xa021 */
4446     "Referenced Findings Group UID\0" /* 1538, 0x0040, 0xa022 */
4447     "Findings Group Recording Date\0" /* 1539, 0x0040, 0xa023 */
4448     "Findings Group Recording Time\0" /* 1540, 0x0040, 0xa024 */
4449     "Findings Source Category Code Sequence\0" /* 1541, 0x0040, 0xa026 */
4450     "Documenting Organization\0" /* 1542, 0x0040, 0xa027 */
4451     "Documenting Organization Identifier Code Sequence\0" /* 1543, 0x0040, 0xa028 */
4452     "History Reliability Qualifier Description\0" /* 1544, 0x0040, 0xa032 */
4453     "Concept Name Code Sequence\0" /* 1545, 0x0040, 0xa043 */
4454     "Measurement Precision Description\0" /* 1546, 0x0040, 0xa047 */
4455     "Urgency or Priority Alerts\0" /* 1547, 0x0040, 0xa057 */
4456     "Sequencing Indicator\0" /* 1548, 0x0040, 0xa060 */
4457     "Document Identifier Code Sequence\0" /* 1549, 0x0040, 0xa066 */
4458     "Document Author\0" /* 1550, 0x0040, 0xa067 */
4459     "Document Author Identifier Code Sequence\0" /* 1551, 0x0040, 0xa068 */
4460     "Identifier Code Sequence\0" /* 1552, 0x0040, 0xa070 */
4461     "Object String Identifier\0" /* 1553, 0x0040, 0xa073 */
4462     "Object Binary Identifier\0" /* 1554, 0x0040, 0xa074 */
4463     "Documenting Observer\0" /* 1555, 0x0040, 0xa075 */
4464     "Documenting Observer Identifier Code Sequence\0" /* 1556, 0x0040, 0xa076 */
4465     "Observation Subject Identifier Code Sequence\0" /* 1557, 0x0040, 0xa078 */
4466     "Person Identifier Code Sequence\0" /* 1558, 0x0040, 0xa080 */
4467     "Procedure Identifier Code Sequence\0" /* 1559, 0x0040, 0xa085 */
4468     "Object Directory String Identifier\0" /* 1560, 0x0040, 0xa088 */
4469     "Object Directory Binary Identifier\0" /* 1561, 0x0040, 0xa089 */
4470     "History Reliability Qualifier\0" /* 1562, 0x0040, 0xa090 */
4471     "Referenced Type of Data\0" /* 1563, 0x0040, 0xa0a0 */
4472     "Referenced Waveform Channels\0" /* 1564, 0x0040, 0xa0b0 */
4473     "Date of Document or Verbal Transaction\0" /* 1565, 0x0040, 0xa110 */
4474     "Time of Document Creation or Verbal Transaction\0" /* 1566, 0x0040, 0xa112 */
4475     "Date\0" /* 1567, 0x0040, 0xa121 */
4476     "Time\0" /* 1568, 0x0040, 0xa122 */
4477     "Person Name\0" /* 1569, 0x0040, 0xa123 */
4478     "Referenced Person Sequence\0" /* 1570, 0x0040, 0xa124 */
4479     "Report Status ID\0" /* 1571, 0x0040, 0xa125 */
4480     "Temporal Range Type\0" /* 1572, 0x0040, 0xa130 */
4481     "Referenced Sample Offsets\0" /* 1573, 0x0040, 0xa132 */
4482     "Referenced Frame Numbers\0" /* 1574, 0x0040, 0xa136 */
4483     "Referenced Time Offsets\0" /* 1575, 0x0040, 0xa138 */
4484     "Referenced Datetime\0" /* 1576, 0x0040, 0xa13a */
4485     "Text Value\0" /* 1577, 0x0040, 0xa160 */
4486     "Observation Category Code Sequence\0" /* 1578, 0x0040, 0xa167 */
4487     "Concept Code Sequence\0" /* 1579, 0x0040, 0xa168 */
4488     "Bibliographic Citation\0" /* 1580, 0x0040, 0xa16a */
4489     "Observation Class\0" /* 1581, 0x0040, 0xa170 */
4490     "Observation UID\0" /* 1582, 0x0040, 0xa171 */
4491     "Referenced Observation UID\0" /* 1583, 0x0040, 0xa172 */
4492     "Referenced Observation Class\0" /* 1584, 0x0040, 0xa173 */
4493     "Referenced Object Observation Class\0" /* 1585, 0x0040, 0xa174 */
4494     "Annotation Group Number\0" /* 1586, 0x0040, 0xa180 */
4495     "Observation Date\0" /* 1587, 0x0040, 0xa192 */
4496     "Observation Time\0" /* 1588, 0x0040, 0xa193 */
4497     "Measurement Automation\0" /* 1589, 0x0040, 0xa194 */
4498     "Concept Name Code Sequence Modifier\0" /* 1590, 0x0040, 0xa195 */
4499     "Identification Description\0" /* 1591, 0x0040, 0xa224 */
4500     "Coordinates Set Geometric Type\0" /* 1592, 0x0040, 0xa290 */
4501     "Algorithm Code Sequence\0" /* 1593, 0x0040, 0xa296 */
4502     "Algorithm Description\0" /* 1594, 0x0040, 0xa297 */
4503     "Pixel Coordinates Set\0" /* 1595, 0x0040, 0xa29a */
4504     "Measured Value Sequence\0" /* 1596, 0x0040, 0xa300 */
4505     "Current Observer\0" /* 1597, 0x0040, 0xa307 */
4506     "Numeric Value\0" /* 1598, 0x0040, 0xa30a */
4507     "Referenced Accession Sequence\0" /* 1599, 0x0040, 0xa313 */
4508     "Report Status Comment\0" /* 1600, 0x0040, 0xa33a */
4509     "Procedure Context Sequence\0" /* 1601, 0x0040, 0xa340 */
4510     "Verbal Source\0" /* 1602, 0x0040, 0xa352 */
4511     "Address\0" /* 1603, 0x0040, 0xa353 */
4512     "Telephone Number\0" /* 1604, 0x0040, 0xa354 */
4513     "Verbal Source Identifier Code Sequence\0" /* 1605, 0x0040, 0xa358 */
4514     "Report Detail Sequence\0" /* 1606, 0x0040, 0xa380 */
4515     "Observation Subject UID\0" /* 1607, 0x0040, 0xa402 */
4516     "Observation Subject Class\0" /* 1608, 0x0040, 0xa403 */
4517     "Observation Subject Type Code Sequence\0" /* 1609, 0x0040, 0xa404 */
4518     "Observation Subject Context Flag\0" /* 1610, 0x0040, 0xa600 */
4519     "Observer Context Flag\0" /* 1611, 0x0040, 0xa601 */
4520     "Procedure Context Flag\0" /* 1612, 0x0040, 0xa603 */
4521     "Observations Sequence\0" /* 1613, 0x0040, 0xa730 */
4522     "Relationship Sequence\0" /* 1614, 0x0040, 0xa731 */
4523     "Relationship Type Code Sequence\0" /* 1615, 0x0040, 0xa732 */
4524     "Language Code Sequence\0" /* 1616, 0x0040, 0xa744 */
4525     "Uniform Resource Locator\0" /* 1617, 0x0040, 0xa992 */
4526     "Annotation Sequence\0" /* 1618, 0x0040, 0xb020 */
4527     "Relationship Type Code Sequence Modifier\0" /* 1619, 0x0040, 0xdb73 */
4528     "Papyrus Comments\0" /* 1620, 0x0041, 0x0000 */
4529     "?\0" /* 1621, 0x0041, 0x0010 */
4530     "?\0" /* 1622, 0x0041, 0x0011 */
4531     "Pixel Offset\0" /* 1623, 0x0041, 0x0012 */
4532     "Image Identifier Sequence\0" /* 1624, 0x0041, 0x0013 */
4533     "External File Reference Sequence\0" /* 1625, 0x0041, 0x0014 */
4534     "Number of Images\0" /* 1626, 0x0041, 0x0015 */
4535     "?\0" /* 1627, 0x0041, 0x0020 */
4536     "Referenced SOP Class UID\0" /* 1628, 0x0041, 0x0021 */
4537     "Referenced SOP Instance UID\0" /* 1629, 0x0041, 0x0022 */
4538     "?\0" /* 1630, 0x0041, 0x0030 */
4539     "?\0" /* 1631, 0x0041, 0x0031 */
4540     "?\0" /* 1632, 0x0041, 0x0032 */
4541     "Modified Date\0" /* 1633, 0x0041, 0x0034 */
4542     "Modified Time\0" /* 1634, 0x0041, 0x0036 */
4543     "Owner Name\0" /* 1635, 0x0041, 0x0040 */
4544     "Referenced Image SOP Class UID\0" /* 1636, 0x0041, 0x0041 */
4545     "Referenced Image SOP Instance UID\0" /* 1637, 0x0041, 0x0042 */
4546     "?\0" /* 1638, 0x0041, 0x0050 */
4547     "Number of Images\0" /* 1639, 0x0041, 0x0060 */
4548     "Number of Other\0" /* 1640, 0x0041, 0x0062 */
4549     "External Folder Element DSID\0" /* 1641, 0x0041, 0x00a0 */
4550     "External Folder Element Data Set Type\0" /* 1642, 0x0041, 0x00a1 */
4551     "External Folder Element File Location\0" /* 1643, 0x0041, 0x00a2 */
4552     "External Folder Element Length\0" /* 1644, 0x0041, 0x00a3 */
4553     "Internal Folder Element DSID\0" /* 1645, 0x0041, 0x00b0 */
4554     "Internal Folder Element Data Set Type\0" /* 1646, 0x0041, 0x00b1 */
4555     "Internal Offset To Data Set\0" /* 1647, 0x0041, 0x00b2 */
4556     "Internal Offset To Image\0" /* 1648, 0x0041, 0x00b3 */
4557     "Bitmap Of Prescan Options\0" /* 1649, 0x0043, 0x0001 */
4558     "Gradient Offset In X\0" /* 1650, 0x0043, 0x0002 */
4559     "Gradient Offset In Y\0" /* 1651, 0x0043, 0x0003 */
4560     "Gradient Offset In Z\0" /* 1652, 0x0043, 0x0004 */
4561     "Image Is Original Or Unoriginal\0" /* 1653, 0x0043, 0x0005 */
4562     "Number Of EPI Shots\0" /* 1654, 0x0043, 0x0006 */
4563     "Views Per Segment\0" /* 1655, 0x0043, 0x0007 */
4564     "Respiratory Rate In BPM\0" /* 1656, 0x0043, 0x0008 */
4565     "Respiratory Trigger Point\0" /* 1657, 0x0043, 0x0009 */
4566     "Type Of Receiver Used\0" /* 1658, 0x0043, 0x000a */
4567     "Peak Rate Of Change Of Gradient Field\0" /* 1659, 0x0043, 0x000b */
4568     "Limits In Units Of Percent\0" /* 1660, 0x0043, 0x000c */
4569     "PSD Estimated Limit\0" /* 1661, 0x0043, 0x000d */
4570     "PSD Estimated Limit In Tesla Per Second\0" /* 1662, 0x0043, 0x000e */
4571     "SAR Avg Head\0" /* 1663, 0x0043, 0x000f */
4572     "Window Value\0" /* 1664, 0x0043, 0x0010 */
4573     "Total Input Views\0" /* 1665, 0x0043, 0x0011 */
4574     "Xray Chain\0" /* 1666, 0x0043, 0x0012 */
4575     "Recon Kernel Parameters\0" /* 1667, 0x0043, 0x0013 */
4576     "Calibration Parameters\0" /* 1668, 0x0043, 0x0014 */
4577     "Total Output Views\0" /* 1669, 0x0043, 0x0015 */
4578     "Number Of Overranges\0" /* 1670, 0x0043, 0x0016 */
4579     "IBH Image Scale Factors\0" /* 1671, 0x0043, 0x0017 */
4580     "BBH Coefficients\0" /* 1672, 0x0043, 0x0018 */
4581     "Number Of BBH Chains To Blend\0" /* 1673, 0x0043, 0x0019 */
4582     "Starting Channel Number\0" /* 1674, 0x0043, 0x001a */
4583     "PPScan Parameters\0" /* 1675, 0x0043, 0x001b */
4584     "GE Image Integrity\0" /* 1676, 0x0043, 0x001c */
4585     "Level Value\0" /* 1677, 0x0043, 0x001d */
4586     "?\0" /* 1678, 0x0043, 0x001e */
4587     "Max Overranges In A View\0" /* 1679, 0x0043, 0x001f */
4588     "Avg Overranges All Views\0" /* 1680, 0x0043, 0x0020 */
4589     "Corrected Afterglow Terms\0" /* 1681, 0x0043, 0x0021 */
4590     "Reference Channels\0" /* 1682, 0x0043, 0x0025 */
4591     "No Views Ref Channels Blocked\0" /* 1683, 0x0043, 0x0026 */
4592     "?\0" /* 1684, 0x0043, 0x0027 */
4593     "Unique Image Identifier\0" /* 1685, 0x0043, 0x0028 */
4594     "Histogram Tables\0" /* 1686, 0x0043, 0x0029 */
4595     "User Defined Data\0" /* 1687, 0x0043, 0x002a */
4596     "Private Scan Options\0" /* 1688, 0x0043, 0x002b */
4597     "Effective Echo Spacing\0" /* 1689, 0x0043, 0x002c */
4598     "String Slop Field 1\0" /* 1690, 0x0043, 0x002d */
4599     "String Slop Field 2\0" /* 1691, 0x0043, 0x002e */
4600     "Raw Data Type\0" /* 1692, 0x0043, 0x002f */
4601     "Raw Data Type\0" /* 1693, 0x0043, 0x0030 */
4602     "RA Coord Of Target Recon Centre\0" /* 1694, 0x0043, 0x0031 */
4603     "Raw Data Type\0" /* 1695, 0x0043, 0x0032 */
4604     "Neg Scan Spacing\0" /* 1696, 0x0043, 0x0033 */
4605     "Offset Frequency\0" /* 1697, 0x0043, 0x0034 */
4606     "User Usage Tag\0" /* 1698, 0x0043, 0x0035 */
4607     "User Fill Map MSW\0" /* 1699, 0x0043, 0x0036 */
4608     "User Fill Map LSW\0" /* 1700, 0x0043, 0x0037 */
4609     "User 25 To User 48\0" /* 1701, 0x0043, 0x0038 */
4610     "Slop Integer 6 To Slop Integer 9\0" /* 1702, 0x0043, 0x0039 */
4611     "Trigger On Position\0" /* 1703, 0x0043, 0x0040 */
4612     "Degree Of Rotation\0" /* 1704, 0x0043, 0x0041 */
4613     "DAS Trigger Source\0" /* 1705, 0x0043, 0x0042 */
4614     "DAS Fpa Gain\0" /* 1706, 0x0043, 0x0043 */
4615     "DAS Output Source\0" /* 1707, 0x0043, 0x0044 */
4616     "DAS Ad Input\0" /* 1708, 0x0043, 0x0045 */
4617     "DAS Cal Mode\0" /* 1709, 0x0043, 0x0046 */
4618     "DAS Cal Frequency\0" /* 1710, 0x0043, 0x0047 */
4619     "DAS Reg Xm\0" /* 1711, 0x0043, 0x0048 */
4620     "DAS Auto Zero\0" /* 1712, 0x0043, 0x0049 */
4621     "Starting Channel Of View\0" /* 1713, 0x0043, 0x004a */
4622     "DAS Xm Pattern\0" /* 1714, 0x0043, 0x004b */
4623     "TGGC Trigger Mode\0" /* 1715, 0x0043, 0x004c */
4624     "Start Scan To Xray On Delay\0" /* 1716, 0x0043, 0x004d */
4625     "Duration Of Xray On\0" /* 1717, 0x0043, 0x004e */
4626     "?\0" /* 1718, 0x0044, 0x0000 */
4627     "AES\0" /* 1719, 0x0045, 0x0004 */
4628     "Angulation\0" /* 1720, 0x0045, 0x0006 */
4629     "Real Magnification Factor\0" /* 1721, 0x0045, 0x0009 */
4630     "Senograph Type\0" /* 1722, 0x0045, 0x000b */
4631     "Integration Time\0" /* 1723, 0x0045, 0x000c */
4632     "ROI Origin X and Y\0" /* 1724, 0x0045, 0x000d */
4633     "Receptor Size cm X and Y\0" /* 1725, 0x0045, 0x0011 */
4634     "Receptor Size Pixels X and Y\0" /* 1726, 0x0045, 0x0012 */
4635     "Screen\0" /* 1727, 0x0045, 0x0013 */
4636     "Pixel Pitch Microns\0" /* 1728, 0x0045, 0x0014 */
4637     "Pixel Depth Bits\0" /* 1729, 0x0045, 0x0015 */
4638     "Binning Factor X and Y\0" /* 1730, 0x0045, 0x0016 */
4639     "Clinical View\0" /* 1731, 0x0045, 0x001b */
4640     "Mean Of Raw Gray Levels\0" /* 1732, 0x0045, 0x001d */
4641     "Mean Of Offset Gray Levels\0" /* 1733, 0x0045, 0x001e */
4642     "Mean Of Corrected Gray Levels\0" /* 1734, 0x0045, 0x001f */
4643     "Mean Of Region Gray Levels\0" /* 1735, 0x0045, 0x0020 */
4644     "Mean Of Log Region Gray Levels\0" /* 1736, 0x0045, 0x0021 */
4645     "Standard Deviation Of Raw Gray Levels\0" /* 1737, 0x0045, 0x0022 */
4646     "Standard Deviation Of Corrected Gray Levels\0" /* 1738, 0x0045, 0x0023 */
4647     "Standard Deviation Of Region Gray Levels\0" /* 1739, 0x0045, 0x0024 */
4648     "Standard Deviation Of Log Region Gray Levels\0" /* 1740, 0x0045, 0x0025 */
4649     "MAO Buffer\0" /* 1741, 0x0045, 0x0026 */
4650     "Set Number\0" /* 1742, 0x0045, 0x0027 */
4651     "WindowingType (LINEAR or GAMMA)\0" /* 1743, 0x0045, 0x0028 */
4652     "WindowingParameters\0" /* 1744, 0x0045, 0x0029 */
4653     "Crosshair Cursor X Coordinates\0" /* 1745, 0x0045, 0x002a */
4654     "Crosshair Cursor Y Coordinates\0" /* 1746, 0x0045, 0x002b */
4655     "Vignette Rows\0" /* 1747, 0x0045, 0x0039 */
4656     "Vignette Columns\0" /* 1748, 0x0045, 0x003a */
4657     "Vignette Bits Allocated\0" /* 1749, 0x0045, 0x003b */
4658     "Vignette Bits Stored\0" /* 1750, 0x0045, 0x003c */
4659     "Vignette High Bit\0" /* 1751, 0x0045, 0x003d */
4660     "Vignette Pixel Representation\0" /* 1752, 0x0045, 0x003e */
4661     "Vignette Pixel Data\0" /* 1753, 0x0045, 0x003f */
4662     "Reconstruction Parameters Sequence\0" /* 1754, 0x0047, 0x0001 */
4663     "Volume Voxel Count\0" /* 1755, 0x0047, 0x0050 */
4664     "Volume Segment Count\0" /* 1756, 0x0047, 0x0051 */
4665     "Volume Slice Size\0" /* 1757, 0x0047, 0x0053 */
4666     "Volume Slice Count\0" /* 1758, 0x0047, 0x0054 */
4667     "Volume Threshold Value\0" /* 1759, 0x0047, 0x0055 */
4668     "Volume Voxel Ratio\0" /* 1760, 0x0047, 0x0057 */
4669     "Volume Voxel Size\0" /* 1761, 0x0047, 0x0058 */
4670     "Volume Z Position Size\0" /* 1762, 0x0047, 0x0059 */
4671     "Volume Base Line\0" /* 1763, 0x0047, 0x0060 */
4672     "Volume Center Point\0" /* 1764, 0x0047, 0x0061 */
4673     "Volume Skew Base\0" /* 1765, 0x0047, 0x0063 */
4674     "Volume Registration Transform Rotation Matrix\0" /* 1766, 0x0047, 0x0064 */
4675     "Volume Registration Transform Translation Vector\0" /* 1767, 0x0047, 0x0065 */
4676     "KVP List\0" /* 1768, 0x0047, 0x0070 */
4677     "XRay Tube Current List\0" /* 1769, 0x0047, 0x0071 */
4678     "Exposure List\0" /* 1770, 0x0047, 0x0072 */
4679     "Acquisition DLX Identifier\0" /* 1771, 0x0047, 0x0080 */
4680     "Acquisition DLX 2D Series Sequence\0" /* 1772, 0x0047, 0x0085 */
4681     "Contrast Agent Volume List\0" /* 1773, 0x0047, 0x0089 */
4682     "Number Of Injections\0" /* 1774, 0x0047, 0x008a */
4683     "Frame Count\0" /* 1775, 0x0047, 0x008b */
4684     "Used Frames\0" /* 1776, 0x0047, 0x0096 */
4685     "XA 3D Reconstruction Algorithm Name\0" /* 1777, 0x0047, 0x0091 */
4686     "XA 3D Reconstruction Algorithm Version\0" /* 1778, 0x0047, 0x0092 */
4687     "DLX Calibration Date\0" /* 1779, 0x0047, 0x0093 */
4688     "DLX Calibration Time\0" /* 1780, 0x0047, 0x0094 */
4689     "DLX Calibration Status\0" /* 1781, 0x0047, 0x0095 */
4690     "Transform Count\0" /* 1782, 0x0047, 0x0098 */
4691     "Transform Sequence\0" /* 1783, 0x0047, 0x0099 */
4692     "Transform Rotation Matrix\0" /* 1784, 0x0047, 0x009a */
4693     "Transform Translation Vector\0" /* 1785, 0x0047, 0x009b */
4694     "Transform Label\0" /* 1786, 0x0047, 0x009c */
4695     "Wireframe Count\0" /* 1787, 0x0047, 0x00b1 */
4696     "Location System\0" /* 1788, 0x0047, 0x00b2 */
4697     "Wireframe List\0" /* 1789, 0x0047, 0x00b0 */
4698     "Wireframe Name\0" /* 1790, 0x0047, 0x00b5 */
4699     "Wireframe Group Name\0" /* 1791, 0x0047, 0x00b6 */
4700     "Wireframe Color\0" /* 1792, 0x0047, 0x00b7 */
4701     "Wireframe Attributes\0" /* 1793, 0x0047, 0x00b8 */
4702     "Wireframe Point Count\0" /* 1794, 0x0047, 0x00b9 */
4703     "Wireframe Timestamp\0" /* 1795, 0x0047, 0x00ba */
4704     "Wireframe Point List\0" /* 1796, 0x0047, 0x00bb */
4705     "Wireframe Points Coordinates\0" /* 1797, 0x0047, 0x00bc */
4706     "Volume Upper Left High Corner RAS\0" /* 1798, 0x0047, 0x00c0 */
4707     "Volume Slice To RAS Rotation Matrix\0" /* 1799, 0x0047, 0x00c1 */
4708     "Volume Upper Left High Corner TLOC\0" /* 1800, 0x0047, 0x00c2 */
4709     "Volume Segment List\0" /* 1801, 0x0047, 0x00d1 */
4710     "Volume Gradient List\0" /* 1802, 0x0047, 0x00d2 */
4711     "Volume Density List\0" /* 1803, 0x0047, 0x00d3 */
4712     "Volume Z Position List\0" /* 1804, 0x0047, 0x00d4 */
4713     "Volume Original Index List\0" /* 1805, 0x0047, 0x00d5 */
4714     "Calibration Group Length\0" /* 1806, 0x0050, 0x0000 */
4715     "Calibration Object\0" /* 1807, 0x0050, 0x0004 */
4716     "DeviceSequence\0" /* 1808, 0x0050, 0x0010 */
4717     "DeviceLength\0" /* 1809, 0x0050, 0x0014 */
4718     "DeviceDiameter\0" /* 1810, 0x0050, 0x0016 */
4719     "DeviceDiameterUnits\0" /* 1811, 0x0050, 0x0017 */
4720     "DeviceVolume\0" /* 1812, 0x0050, 0x0018 */
4721     "InterMarkerDistance\0" /* 1813, 0x0050, 0x0019 */
4722     "DeviceDescription\0" /* 1814, 0x0050, 0x0020 */
4723     "CodedInterventionDeviceSequence\0" /* 1815, 0x0050, 0x0030 */
4724     "Image Text\0" /* 1816, 0x0051, 0x0010 */
4725     "Nuclear Acquisition Group Length\0" /* 1817, 0x0054, 0x0000 */
4726     "Energy Window Vector\0" /* 1818, 0x0054, 0x0010 */
4727     "Number of Energy Windows\0" /* 1819, 0x0054, 0x0011 */
4728     "Energy Window Information Sequence\0" /* 1820, 0x0054, 0x0012 */
4729     "Energy Window Range Sequence\0" /* 1821, 0x0054, 0x0013 */
4730     "Energy Window Lower Limit\0" /* 1822, 0x0054, 0x0014 */
4731     "Energy Window Upper Limit\0" /* 1823, 0x0054, 0x0015 */
4732     "Radiopharmaceutical Information Sequence\0" /* 1824, 0x0054, 0x0016 */
4733     "Residual Syringe Counts\0" /* 1825, 0x0054, 0x0017 */
4734     "Energy Window Name\0" /* 1826, 0x0054, 0x0018 */
4735     "Detector Vector\0" /* 1827, 0x0054, 0x0020 */
4736     "Number of Detectors\0" /* 1828, 0x0054, 0x0021 */
4737     "Detector Information Sequence\0" /* 1829, 0x0054, 0x0022 */
4738     "Phase Vector\0" /* 1830, 0x0054, 0x0030 */
4739     "Number of Phases\0" /* 1831, 0x0054, 0x0031 */
4740     "Phase Information Sequence\0" /* 1832, 0x0054, 0x0032 */
4741     "Number of Frames In Phase\0" /* 1833, 0x0054, 0x0033 */
4742     "Phase Delay\0" /* 1834, 0x0054, 0x0036 */
4743     "Pause Between Frames\0" /* 1835, 0x0054, 0x0038 */
4744     "Rotation Vector\0" /* 1836, 0x0054, 0x0050 */
4745     "Number of Rotations\0" /* 1837, 0x0054, 0x0051 */
4746     "Rotation Information Sequence\0" /* 1838, 0x0054, 0x0052 */
4747     "Number of Frames In Rotation\0" /* 1839, 0x0054, 0x0053 */
4748     "R-R Interval Vector\0" /* 1840, 0x0054, 0x0060 */
4749     "Number of R-R Intervals\0" /* 1841, 0x0054, 0x0061 */
4750     "Gated Information Sequence\0" /* 1842, 0x0054, 0x0062 */
4751     "Data Information Sequence\0" /* 1843, 0x0054, 0x0063 */
4752     "Time Slot Vector\0" /* 1844, 0x0054, 0x0070 */
4753     "Number of Time Slots\0" /* 1845, 0x0054, 0x0071 */
4754     "Time Slot Information Sequence\0" /* 1846, 0x0054, 0x0072 */
4755     "Time Slot Time\0" /* 1847, 0x0054, 0x0073 */
4756     "Slice Vector\0" /* 1848, 0x0054, 0x0080 */
4757     "Number of Slices\0" /* 1849, 0x0054, 0x0081 */
4758     "Angular View Vector\0" /* 1850, 0x0054, 0x0090 */
4759     "Time Slice Vector\0" /* 1851, 0x0054, 0x0100 */
4760     "Number Of Time Slices\0" /* 1852, 0x0054, 0x0101 */
4761     "Start Angle\0" /* 1853, 0x0054, 0x0200 */
4762     "Type of Detector Motion\0" /* 1854, 0x0054, 0x0202 */
4763     "Trigger Vector\0" /* 1855, 0x0054, 0x0210 */
4764     "Number of Triggers in Phase\0" /* 1856, 0x0054, 0x0211 */
4765     "View Code Sequence\0" /* 1857, 0x0054, 0x0220 */
4766     "View Modifier Code Sequence\0" /* 1858, 0x0054, 0x0222 */
4767     "Radionuclide Code Sequence\0" /* 1859, 0x0054, 0x0300 */
4768     "Radiopharmaceutical Route Code Sequence\0" /* 1860, 0x0054, 0x0302 */
4769     "Radiopharmaceutical Code Sequence\0" /* 1861, 0x0054, 0x0304 */
4770     "Calibration Data Sequence\0" /* 1862, 0x0054, 0x0306 */
4771     "Energy Window Number\0" /* 1863, 0x0054, 0x0308 */
4772     "Image ID\0" /* 1864, 0x0054, 0x0400 */
4773     "Patient Orientation Code Sequence\0" /* 1865, 0x0054, 0x0410 */
4774     "Patient Orientation Modifier Code Sequence\0" /* 1866, 0x0054, 0x0412 */
4775     "Patient Gantry Relationship Code Sequence\0" /* 1867, 0x0054, 0x0414 */
4776     "Positron Emission Tomography Series Type\0" /* 1868, 0x0054, 0x1000 */
4777     "Positron Emission Tomography Units\0" /* 1869, 0x0054, 0x1001 */
4778     "Counts Source\0" /* 1870, 0x0054, 0x1002 */
4779     "Reprojection Method\0" /* 1871, 0x0054, 0x1004 */
4780     "Randoms Correction Method\0" /* 1872, 0x0054, 0x1100 */
4781     "Attenuation Correction Method\0" /* 1873, 0x0054, 0x1101 */
4782     "Decay Correction\0" /* 1874, 0x0054, 0x1102 */
4783     "Reconstruction Method\0" /* 1875, 0x0054, 0x1103 */
4784     "Detector Lines of Response Used\0" /* 1876, 0x0054, 0x1104 */
4785     "Scatter Correction Method\0" /* 1877, 0x0054, 0x1105 */
4786     "Axial Acceptance\0" /* 1878, 0x0054, 0x1200 */
4787     "Axial Mash\0" /* 1879, 0x0054, 0x1201 */
4788     "Transverse Mash\0" /* 1880, 0x0054, 0x1202 */
4789     "Detector Element Size\0" /* 1881, 0x0054, 0x1203 */
4790     "Coincidence Window Width\0" /* 1882, 0x0054, 0x1210 */
4791     "Secondary Counts Type\0" /* 1883, 0x0054, 0x1220 */
4792     "Frame Reference Time\0" /* 1884, 0x0054, 0x1300 */
4793     "Primary Prompts Counts Accumulated\0" /* 1885, 0x0054, 0x1310 */
4794     "Secondary Counts Accumulated\0" /* 1886, 0x0054, 0x1311 */
4795     "Slice Sensitivity Factor\0" /* 1887, 0x0054, 0x1320 */
4796     "Decay Factor\0" /* 1888, 0x0054, 0x1321 */
4797     "Dose Calibration Factor\0" /* 1889, 0x0054, 0x1322 */
4798     "Scatter Fraction Factor\0" /* 1890, 0x0054, 0x1323 */
4799     "Dead Time Factor\0" /* 1891, 0x0054, 0x1324 */
4800     "Image Index\0" /* 1892, 0x0054, 0x1330 */
4801     "Counts Included\0" /* 1893, 0x0054, 0x1400 */
4802     "Dead Time Correction Flag\0" /* 1894, 0x0054, 0x1401 */
4803     "Current Ward\0" /* 1895, 0x0055, 0x0046 */
4804     "?\0" /* 1896, 0x0058, 0x0000 */
4805     "Histogram Sequence\0" /* 1897, 0x0060, 0x3000 */
4806     "Histogram Number of Bins\0" /* 1898, 0x0060, 0x3002 */
4807     "Histogram First Bin Value\0" /* 1899, 0x0060, 0x3004 */
4808     "Histogram Last Bin Value\0" /* 1900, 0x0060, 0x3006 */
4809     "Histogram Bin Width\0" /* 1901, 0x0060, 0x3008 */
4810     "Histogram Explanation\0" /* 1902, 0x0060, 0x3010 */
4811     "Histogram Data\0" /* 1903, 0x0060, 0x3020 */
4812     "Graphic Annotation Sequence\0" /* 1904, 0x0070, 0x0001 */
4813     "Graphic Layer\0" /* 1905, 0x0070, 0x0002 */
4814     "Bounding Box Annotation Units\0" /* 1906, 0x0070, 0x0003 */
4815     "Anchor Point Annotation Units\0" /* 1907, 0x0070, 0x0004 */
4816     "Graphic Annotation Units\0" /* 1908, 0x0070, 0x0005 */
4817     "Unformatted Text Value\0" /* 1909, 0x0070, 0x0006 */
4818     "Text Object Sequence\0" /* 1910, 0x0070, 0x0008 */
4819     "Graphic Object Sequence\0" /* 1911, 0x0070, 0x0009 */
4820     "Bounding Box TLHC\0" /* 1912, 0x0070, 0x0010 */
4821     "Bounding Box BRHC\0" /* 1913, 0x0070, 0x0011 */
4822     "Anchor Point\0" /* 1914, 0x0070, 0x0014 */
4823     "Anchor Point Visibility\0" /* 1915, 0x0070, 0x0015 */
4824     "Graphic Dimensions\0" /* 1916, 0x0070, 0x0020 */
4825     "Number Of Graphic Points\0" /* 1917, 0x0070, 0x0021 */
4826     "Graphic Data\0" /* 1918, 0x0070, 0x0022 */
4827     "Graphic Type\0" /* 1919, 0x0070, 0x0023 */
4828     "Graphic Filled\0" /* 1920, 0x0070, 0x0024 */
4829     "Image Rotation\0" /* 1921, 0x0070, 0x0040 */
4830     "Image Horizontal Flip\0" /* 1922, 0x0070, 0x0041 */
4831     "Displayed Area TLHC\0" /* 1923, 0x0070, 0x0050 */
4832     "Displayed Area BRHC\0" /* 1924, 0x0070, 0x0051 */
4833     "Graphic Layer Sequence\0" /* 1925, 0x0070, 0x0060 */
4834     "Graphic Layer Order\0" /* 1926, 0x0070, 0x0062 */
4835     "Graphic Layer Recommended Display Value\0" /* 1927, 0x0070, 0x0066 */
4836     "Graphic Layer Description\0" /* 1928, 0x0070, 0x0068 */
4837     "Presentation Label\0" /* 1929, 0x0070, 0x0080 */
4838     "Presentation Description\0" /* 1930, 0x0070, 0x0081 */
4839     "Presentation Creation Date\0" /* 1931, 0x0070, 0x0082 */
4840     "Presentation Creation Time\0" /* 1932, 0x0070, 0x0083 */
4841     "Presentation Creator's Name\0" /* 1933, 0x0070, 0x0084 */
4842     "Media Type\0" /* 1934, 0x0087, 0x0010 */
4843     "Media Location\0" /* 1935, 0x0087, 0x0020 */
4844     "Estimated Retrieve Time\0" /* 1936, 0x0087, 0x0050 */
4845     "Storage Group Length\0" /* 1937, 0x0088, 0x0000 */
4846     "Storage Media FileSet ID\0" /* 1938, 0x0088, 0x0130 */
4847     "Storage Media FileSet UID\0" /* 1939, 0x0088, 0x0140 */
4848     "Icon Image Sequence\0" /* 1940, 0x0088, 0x0200 */
4849     "Topic Title\0" /* 1941, 0x0088, 0x0904 */
4850     "Topic Subject\0" /* 1942, 0x0088, 0x0906 */
4851     "Topic Author\0" /* 1943, 0x0088, 0x0910 */
4852     "Topic Key Words\0" /* 1944, 0x0088, 0x0912 */
4853     "Examination Folder ID\0" /* 1945, 0x0095, 0x0001 */
4854     "Folder Reported Status\0" /* 1946, 0x0095, 0x0004 */
4855     "Folder Reporting Radiologist\0" /* 1947, 0x0095, 0x0005 */
4856     "SIENET ISA PLA\0" /* 1948, 0x0095, 0x0007 */
4857     "Data Object Attributes\0" /* 1949, 0x0099, 0x0002 */
4858     "Data Dictionary Version\0" /* 1950, 0x00e1, 0x0001 */
4859     "?\0" /* 1951, 0x00e1, 0x0014 */
4860     "?\0" /* 1952, 0x00e1, 0x0022 */
4861     "?\0" /* 1953, 0x00e1, 0x0023 */
4862     "?\0" /* 1954, 0x00e1, 0x0024 */
4863     "?\0" /* 1955, 0x00e1, 0x0025 */
4864     "Offset From CT MR Images\0" /* 1956, 0x00e1, 0x0040 */
4865     "RIS Key\0" /* 1957, 0x0193, 0x0002 */
4866     "RIS Worklist IMGEF\0" /* 1958, 0x0307, 0x0001 */
4867     "RIS Report IMGEF\0" /* 1959, 0x0309, 0x0001 */
4868     "Implementation Version\0" /* 1960, 0x0601, 0x0000 */
4869     "Relative Table Position\0" /* 1961, 0x0601, 0x0020 */
4870     "Relative Table Height\0" /* 1962, 0x0601, 0x0021 */
4871     "Surview Direction\0" /* 1963, 0x0601, 0x0030 */
4872     "Surview Length\0" /* 1964, 0x0601, 0x0031 */
4873     "Image View Type\0" /* 1965, 0x0601, 0x0050 */
4874     "Batch Number\0" /* 1966, 0x0601, 0x0070 */
4875     "Batch Size\0" /* 1967, 0x0601, 0x0071 */
4876     "Batch Slice Number\0" /* 1968, 0x0601, 0x0072 */
4877     "?\0" /* 1969, 0x1000, 0x0000 */
4878     "Run Length Triplet\0" /* 1970, 0x1000, 0x0001 */
4879     "Huffman Table Size\0" /* 1971, 0x1000, 0x0002 */
4880     "Huffman Table Triplet\0" /* 1972, 0x1000, 0x0003 */
4881     "Shift Table Size\0" /* 1973, 0x1000, 0x0004 */
4882     "Shift Table Triplet\0" /* 1974, 0x1000, 0x0005 */
4883     "?\0" /* 1975, 0x1010, 0x0000 */
4884     "?\0" /* 1976, 0x1369, 0x0000 */
4885     "Film Session Group Length\0" /* 1977, 0x2000, 0x0000 */
4886     "Number of Copies\0" /* 1978, 0x2000, 0x0010 */
4887     "Print Priority\0" /* 1979, 0x2000, 0x0020 */
4888     "Medium Type\0" /* 1980, 0x2000, 0x0030 */
4889     "Film Destination\0" /* 1981, 0x2000, 0x0040 */
4890     "Film Session Label\0" /* 1982, 0x2000, 0x0050 */
4891     "Memory Allocation\0" /* 1983, 0x2000, 0x0060 */
4892     "Referenced Film Box Sequence\0" /* 1984, 0x2000, 0x0500 */
4893     "Film Box Group Length\0" /* 1985, 0x2010, 0x0000 */
4894     "Image Display Format\0" /* 1986, 0x2010, 0x0010 */
4895     "Annotation Display Format ID\0" /* 1987, 0x2010, 0x0030 */
4896     "Film Orientation\0" /* 1988, 0x2010, 0x0040 */
4897     "Film Size ID\0" /* 1989, 0x2010, 0x0050 */
4898     "Magnification Type\0" /* 1990, 0x2010, 0x0060 */
4899     "Smoothing Type\0" /* 1991, 0x2010, 0x0080 */
4900     "Border Density\0" /* 1992, 0x2010, 0x0100 */
4901     "Empty Image Density\0" /* 1993, 0x2010, 0x0110 */
4902     "Min Density\0" /* 1994, 0x2010, 0x0120 */
4903     "Max Density\0" /* 1995, 0x2010, 0x0130 */
4904     "Trim\0" /* 1996, 0x2010, 0x0140 */
4905     "Configuration Information\0" /* 1997, 0x2010, 0x0150 */
4906     "Referenced Film Session Sequence\0" /* 1998, 0x2010, 0x0500 */
4907     "Referenced Image Box Sequence\0" /* 1999, 0x2010, 0x0510 */
4908     "Referenced Basic Annotation Box Sequence\0" /* 2000, 0x2010, 0x0520 */
4909     "Image Box Group Length\0" /* 2001, 0x2020, 0x0000 */
4910     "Image Box Position\0" /* 2002, 0x2020, 0x0010 */
4911     "Polarity\0" /* 2003, 0x2020, 0x0020 */
4912     "Requested Image Size\0" /* 2004, 0x2020, 0x0030 */
4913     "Preformatted Grayscale Image Sequence\0" /* 2005, 0x2020, 0x0110 */
4914     "Preformatted Color Image Sequence\0" /* 2006, 0x2020, 0x0111 */
4915     "Referenced Image Overlay Box Sequence\0" /* 2007, 0x2020, 0x0130 */
4916     "Referenced VOI LUT Box Sequence\0" /* 2008, 0x2020, 0x0140 */
4917     "Annotation Group Length\0" /* 2009, 0x2030, 0x0000 */
4918     "Annotation Position\0" /* 2010, 0x2030, 0x0010 */
4919     "Text String\0" /* 2011, 0x2030, 0x0020 */
4920     "Overlay Box Group Length\0" /* 2012, 0x2040, 0x0000 */
4921     "Referenced Overlay Plane Sequence\0" /* 2013, 0x2040, 0x0010 */
4922     "Referenced Overlay Plane Groups\0" /* 2014, 0x2040, 0x0011 */
4923     "Overlay Magnification Type\0" /* 2015, 0x2040, 0x0060 */
4924     "Overlay Smoothing Type\0" /* 2016, 0x2040, 0x0070 */
4925     "Overlay Foreground Density\0" /* 2017, 0x2040, 0x0080 */
4926     "Overlay Mode\0" /* 2018, 0x2040, 0x0090 */
4927     "Threshold Density\0" /* 2019, 0x2040, 0x0100 */
4928     "Referenced Overlay Image Box Sequence\0" /* 2020, 0x2040, 0x0500 */
4929     "Presentation LUT Sequence\0" /* 2021, 0x2050, 0x0010 */
4930     "Presentation LUT Shape\0" /* 2022, 0x2050, 0x0020 */
4931     "Print Job Group Length\0" /* 2023, 0x2100, 0x0000 */
4932     "Execution Status\0" /* 2024, 0x2100, 0x0020 */
4933     "Execution Status Info\0" /* 2025, 0x2100, 0x0030 */
4934     "Creation Date\0" /* 2026, 0x2100, 0x0040 */
4935     "Creation Time\0" /* 2027, 0x2100, 0x0050 */
4936     "Originator\0" /* 2028, 0x2100, 0x0070 */
4937     "Referenced Print Job Sequence\0" /* 2029, 0x2100, 0x0500 */
4938     "Printer Group Length\0" /* 2030, 0x2110, 0x0000 */
4939     "Printer Status\0" /* 2031, 0x2110, 0x0010 */
4940     "Printer Status Info\0" /* 2032, 0x2110, 0x0020 */
4941     "Printer Name\0" /* 2033, 0x2110, 0x0030 */
4942     "Print Queue ID\0" /* 2034, 0x2110, 0x0099 */
4943     "RT Image Label\0" /* 2035, 0x3002, 0x0002 */
4944     "RT Image Name\0" /* 2036, 0x3002, 0x0003 */
4945     "RT Image Description\0" /* 2037, 0x3002, 0x0004 */
4946     "Reported Values Origin\0" /* 2038, 0x3002, 0x000a */
4947     "RT Image Plane\0" /* 2039, 0x3002, 0x000c */
4948     "X-Ray Image Receptor Angle\0" /* 2040, 0x3002, 0x000e */
4949     "RTImageOrientation\0" /* 2041, 0x3002, 0x0010 */
4950     "Image Plane Pixel Spacing\0" /* 2042, 0x3002, 0x0011 */
4951     "RT Image Position\0" /* 2043, 0x3002, 0x0012 */
4952     "Radiation Machine Name\0" /* 2044, 0x3002, 0x0020 */
4953     "Radiation Machine SAD\0" /* 2045, 0x3002, 0x0022 */
4954     "Radiation Machine SSD\0" /* 2046, 0x3002, 0x0024 */
4955     "RT Image SID\0" /* 2047, 0x3002, 0x0026 */
4956     "Source to Reference Object Distance\0" /* 2048, 0x3002, 0x0028 */
4957     "Fraction Number\0" /* 2049, 0x3002, 0x0029 */
4958     "Exposure Sequence\0" /* 2050, 0x3002, 0x0030 */
4959     "Meterset Exposure\0" /* 2051, 0x3002, 0x0032 */
4960     "DVH Type\0" /* 2052, 0x3004, 0x0001 */
4961     "Dose Units\0" /* 2053, 0x3004, 0x0002 */
4962     "Dose Type\0" /* 2054, 0x3004, 0x0004 */
4963     "Dose Comment\0" /* 2055, 0x3004, 0x0006 */
4964     "Normalization Point\0" /* 2056, 0x3004, 0x0008 */
4965     "Dose Summation Type\0" /* 2057, 0x3004, 0x000a */
4966     "GridFrame Offset Vector\0" /* 2058, 0x3004, 0x000c */
4967     "Dose Grid Scaling\0" /* 2059, 0x3004, 0x000e */
4968     "RT Dose ROI Sequence\0" /* 2060, 0x3004, 0x0010 */
4969     "Dose Value\0" /* 2061, 0x3004, 0x0012 */
4970     "DVH Normalization Point\0" /* 2062, 0x3004, 0x0040 */
4971     "DVH Normalization Dose Value\0" /* 2063, 0x3004, 0x0042 */
4972     "DVH Sequence\0" /* 2064, 0x3004, 0x0050 */
4973     "DVH Dose Scaling\0" /* 2065, 0x3004, 0x0052 */
4974     "DVH Volume Units\0" /* 2066, 0x3004, 0x0054 */
4975     "DVH Number of Bins\0" /* 2067, 0x3004, 0x0056 */
4976     "DVH Data\0" /* 2068, 0x3004, 0x0058 */
4977     "DVH Referenced ROI Sequence\0" /* 2069, 0x3004, 0x0060 */
4978     "DVH ROI Contribution Type\0" /* 2070, 0x3004, 0x0062 */
4979     "DVH Minimum Dose\0" /* 2071, 0x3004, 0x0070 */
4980     "DVH Maximum Dose\0" /* 2072, 0x3004, 0x0072 */
4981     "DVH Mean Dose\0" /* 2073, 0x3004, 0x0074 */
4982     "Structure Set Label\0" /* 2074, 0x3006, 0x0002 */
4983     "Structure Set Name\0" /* 2075, 0x3006, 0x0004 */
4984     "Structure Set Description\0" /* 2076, 0x3006, 0x0006 */
4985     "Structure Set Date\0" /* 2077, 0x3006, 0x0008 */
4986     "Structure Set Time\0" /* 2078, 0x3006, 0x0009 */
4987     "Referenced Frame of Reference Sequence\0" /* 2079, 0x3006, 0x0010 */
4988     "RT Referenced Study Sequence\0" /* 2080, 0x3006, 0x0012 */
4989     "RT Referenced Series Sequence\0" /* 2081, 0x3006, 0x0014 */
4990     "Contour Image Sequence\0" /* 2082, 0x3006, 0x0016 */
4991     "Structure Set ROI Sequence\0" /* 2083, 0x3006, 0x0020 */
4992     "ROI Number\0" /* 2084, 0x3006, 0x0022 */
4993     "Referenced Frame of Reference UID\0" /* 2085, 0x3006, 0x0024 */
4994     "ROI Name\0" /* 2086, 0x3006, 0x0026 */
4995     "ROI Description\0" /* 2087, 0x3006, 0x0028 */
4996     "ROI Display Color\0" /* 2088, 0x3006, 0x002a */
4997     "ROI Volume\0" /* 2089, 0x3006, 0x002c */
4998     "RT Related ROI Sequence\0" /* 2090, 0x3006, 0x0030 */
4999     "RT ROI Relationship\0" /* 2091, 0x3006, 0x0033 */
5000     "ROI Generation Algorithm\0" /* 2092, 0x3006, 0x0036 */
5001     "ROI Generation Description\0" /* 2093, 0x3006, 0x0038 */
5002     "ROI Contour Sequence\0" /* 2094, 0x3006, 0x0039 */
5003     "Contour Sequence\0" /* 2095, 0x3006, 0x0040 */
5004     "Contour Geometric Type\0" /* 2096, 0x3006, 0x0042 */
5005     "Contour SlabT hickness\0" /* 2097, 0x3006, 0x0044 */
5006     "Contour Offset Vector\0" /* 2098, 0x3006, 0x0045 */
5007     "Number of Contour Points\0" /* 2099, 0x3006, 0x0046 */
5008     "Contour Data\0" /* 2100, 0x3006, 0x0050 */
5009     "RT ROI Observations Sequence\0" /* 2101, 0x3006, 0x0080 */
5010     "Observation Number\0" /* 2102, 0x3006, 0x0082 */
5011     "Referenced ROI Number\0" /* 2103, 0x3006, 0x0084 */
5012     "ROI Observation Label\0" /* 2104, 0x3006, 0x0085 */
5013     "RT ROI Identification Code Sequence\0" /* 2105, 0x3006, 0x0086 */
5014     "ROI Observation Description\0" /* 2106, 0x3006, 0x0088 */
5015     "Related RT ROI Observations Sequence\0" /* 2107, 0x3006, 0x00a0 */
5016     "RT ROI Interpreted Type\0" /* 2108, 0x3006, 0x00a4 */
5017     "ROI Interpreter\0" /* 2109, 0x3006, 0x00a6 */
5018     "ROI Physical Properties Sequence\0" /* 2110, 0x3006, 0x00b0 */
5019     "ROI Physical Property\0" /* 2111, 0x3006, 0x00b2 */
5020     "ROI Physical Property Value\0" /* 2112, 0x3006, 0x00b4 */
5021     "Frame of Reference Relationship Sequence\0" /* 2113, 0x3006, 0x00c0 */
5022     "Related Frame of Reference UID\0" /* 2114, 0x3006, 0x00c2 */
5023     "Frame of Reference Transformation Type\0" /* 2115, 0x3006, 0x00c4 */
5024     "Frame of Reference Transformation Matrix\0" /* 2116, 0x3006, 0x00c6 */
5025     "Frame of Reference Transformation Comment\0" /* 2117, 0x3006, 0x00c8 */
5026     "RT Plan Label\0" /* 2118, 0x300a, 0x0002 */
5027     "RT Plan Name\0" /* 2119, 0x300a, 0x0003 */
5028     "RT Plan Description\0" /* 2120, 0x300a, 0x0004 */
5029     "RT Plan Date\0" /* 2121, 0x300a, 0x0006 */
5030     "RT Plan Time\0" /* 2122, 0x300a, 0x0007 */
5031     "Treatment Protocols\0" /* 2123, 0x300a, 0x0009 */
5032     "Treatment Intent\0" /* 2124, 0x300a, 0x000a */
5033     "Treatment Sites\0" /* 2125, 0x300a, 0x000b */
5034     "RT Plan Geometry\0" /* 2126, 0x300a, 0x000c */
5035     "Prescription Description\0" /* 2127, 0x300a, 0x000e */
5036     "Dose ReferenceSequence\0" /* 2128, 0x300a, 0x0010 */
5037     "Dose ReferenceNumber\0" /* 2129, 0x300a, 0x0012 */
5038     "Dose Reference Structure Type\0" /* 2130, 0x300a, 0x0014 */
5039     "Dose ReferenceDescription\0" /* 2131, 0x300a, 0x0016 */
5040     "Dose Reference Point Coordinates\0" /* 2132, 0x300a, 0x0018 */
5041     "Nominal Prior Dose\0" /* 2133, 0x300a, 0x001a */
5042     "Dose Reference Type\0" /* 2134, 0x300a, 0x0020 */
5043     "Constraint Weight\0" /* 2135, 0x300a, 0x0021 */
5044     "Delivery Warning Dose\0" /* 2136, 0x300a, 0x0022 */
5045     "Delivery Maximum Dose\0" /* 2137, 0x300a, 0x0023 */
5046     "Target Minimum Dose\0" /* 2138, 0x300a, 0x0025 */
5047     "Target Prescription Dose\0" /* 2139, 0x300a, 0x0026 */
5048     "Target Maximum Dose\0" /* 2140, 0x300a, 0x0027 */
5049     "Target Underdose Volume Fraction\0" /* 2141, 0x300a, 0x0028 */
5050     "Organ at Risk Full-volume Dose\0" /* 2142, 0x300a, 0x002a */
5051     "Organ at Risk Limit Dose\0" /* 2143, 0x300a, 0x002b */
5052     "Organ at Risk Maximum Dose\0" /* 2144, 0x300a, 0x002c */
5053     "Organ at Risk Overdose Volume Fraction\0" /* 2145, 0x300a, 0x002d */
5054     "Tolerance Table Sequence\0" /* 2146, 0x300a, 0x0040 */
5055     "Tolerance Table Number\0" /* 2147, 0x300a, 0x0042 */
5056     "Tolerance Table Label\0" /* 2148, 0x300a, 0x0043 */
5057     "Gantry Angle Tolerance\0" /* 2149, 0x300a, 0x0044 */
5058     "Beam Limiting Device Angle Tolerance\0" /* 2150, 0x300a, 0x0046 */
5059     "Beam Limiting Device Tolerance Sequence\0" /* 2151, 0x300a, 0x0048 */
5060     "Beam Limiting Device Position Tolerance\0" /* 2152, 0x300a, 0x004a */
5061     "Patient Support Angle Tolerance\0" /* 2153, 0x300a, 0x004c */
5062     "Table Top Eccentric Angle Tolerance\0" /* 2154, 0x300a, 0x004e */
5063     "Table Top Vertical Position Tolerance\0" /* 2155, 0x300a, 0x0051 */
5064     "Table Top Longitudinal Position Tolerance\0" /* 2156, 0x300a, 0x0052 */
5065     "Table Top Lateral Position Tolerance\0" /* 2157, 0x300a, 0x0053 */
5066     "RT Plan Relationship\0" /* 2158, 0x300a, 0x0055 */
5067     "Fraction Group Sequence\0" /* 2159, 0x300a, 0x0070 */
5068     "Fraction Group Number\0" /* 2160, 0x300a, 0x0071 */
5069     "Number of Fractions Planned\0" /* 2161, 0x300a, 0x0078 */
5070     "Number of Fractions Per Day\0" /* 2162, 0x300a, 0x0079 */
5071     "Repeat Fraction Cycle Length\0" /* 2163, 0x300a, 0x007a */
5072     "Fraction Pattern\0" /* 2164, 0x300a, 0x007b */
5073     "Number of Beams\0" /* 2165, 0x300a, 0x0080 */
5074     "Beam Dose Specification Point\0" /* 2166, 0x300a, 0x0082 */
5075     "Beam Dose\0" /* 2167, 0x300a, 0x0084 */
5076     "Beam Meterset\0" /* 2168, 0x300a, 0x0086 */
5077     "Number of Brachy Application Setups\0" /* 2169, 0x300a, 0x00a0 */
5078     "Brachy Application Setup Dose Specification Point\0" /* 2170, 0x300a, 0x00a2 */
5079     "Brachy Application Setup Dose\0" /* 2171, 0x300a, 0x00a4 */
5080     "Beam Sequence\0" /* 2172, 0x300a, 0x00b0 */
5081     "Treatment Machine Name \0" /* 2173, 0x300a, 0x00b2 */
5082     "Primary Dosimeter Unit\0" /* 2174, 0x300a, 0x00b3 */
5083     "Source-Axis Distance\0" /* 2175, 0x300a, 0x00b4 */
5084     "Beam Limiting Device Sequence\0" /* 2176, 0x300a, 0x00b6 */
5085     "RT Beam Limiting Device Type\0" /* 2177, 0x300a, 0x00b8 */
5086     "Source to Beam Limiting Device Distance\0" /* 2178, 0x300a, 0x00ba */
5087     "Number of Leaf/Jaw Pairs\0" /* 2179, 0x300a, 0x00bc */
5088     "Leaf Position Boundaries\0" /* 2180, 0x300a, 0x00be */
5089     "Beam Number\0" /* 2181, 0x300a, 0x00c0 */
5090     "Beam Name\0" /* 2182, 0x300a, 0x00c2 */
5091     "Beam Description\0" /* 2183, 0x300a, 0x00c3 */
5092     "Beam Type\0" /* 2184, 0x300a, 0x00c4 */
5093     "Radiation Type\0" /* 2185, 0x300a, 0x00c6 */
5094     "Reference Image Number\0" /* 2186, 0x300a, 0x00c8 */
5095     "Planned Verification Image Sequence\0" /* 2187, 0x300a, 0x00ca */
5096     "Imaging Device Specific Acquisition Parameters\0" /* 2188, 0x300a, 0x00cc */
5097     "Treatment Delivery Type\0" /* 2189, 0x300a, 0x00ce */
5098     "Number of Wedges\0" /* 2190, 0x300a, 0x00d0 */
5099     "Wedge Sequence\0" /* 2191, 0x300a, 0x00d1 */
5100     "Wedge Number\0" /* 2192, 0x300a, 0x00d2 */
5101     "Wedge Type\0" /* 2193, 0x300a, 0x00d3 */
5102     "Wedge ID\0" /* 2194, 0x300a, 0x00d4 */
5103     "Wedge Angle\0" /* 2195, 0x300a, 0x00d5 */
5104     "Wedge Factor\0" /* 2196, 0x300a, 0x00d6 */
5105     "Wedge Orientation\0" /* 2197, 0x300a, 0x00d8 */
5106     "Source to Wedge Tray Distance\0" /* 2198, 0x300a, 0x00da */
5107     "Number of Compensators\0" /* 2199, 0x300a, 0x00e0 */
5108     "Material ID\0" /* 2200, 0x300a, 0x00e1 */
5109     "Total Compensator Tray Factor\0" /* 2201, 0x300a, 0x00e2 */
5110     "Compensator Sequence\0" /* 2202, 0x300a, 0x00e3 */
5111     "Compensator Number\0" /* 2203, 0x300a, 0x00e4 */
5112     "Compensator ID\0" /* 2204, 0x300a, 0x00e5 */
5113     "Source to Compensator Tray Distance\0" /* 2205, 0x300a, 0x00e6 */
5114     "Compensator Rows\0" /* 2206, 0x300a, 0x00e7 */
5115     "Compensator Columns\0" /* 2207, 0x300a, 0x00e8 */
5116     "Compensator Pixel Spacing\0" /* 2208, 0x300a, 0x00e9 */
5117     "Compensator Position\0" /* 2209, 0x300a, 0x00ea */
5118     "Compensator Transmission Data\0" /* 2210, 0x300a, 0x00eb */
5119     "Compensator Thickness Data\0" /* 2211, 0x300a, 0x00ec */
5120     "Number of Boli\0" /* 2212, 0x300a, 0x00ed */
5121     "Number of Blocks\0" /* 2213, 0x300a, 0x00f0 */
5122     "Total Block Tray Factor\0" /* 2214, 0x300a, 0x00f2 */
5123     "Block Sequence\0" /* 2215, 0x300a, 0x00f4 */
5124     "Block Tray ID\0" /* 2216, 0x300a, 0x00f5 */
5125     "Source to Block Tray Distance\0" /* 2217, 0x300a, 0x00f6 */
5126     "Block Type\0" /* 2218, 0x300a, 0x00f8 */
5127     "Block Divergence\0" /* 2219, 0x300a, 0x00fa */
5128     "Block Number\0" /* 2220, 0x300a, 0x00fc */
5129     "Block Name\0" /* 2221, 0x300a, 0x00fe */
5130     "Block Thickness\0" /* 2222, 0x300a, 0x0100 */
5131     "Block Transmission\0" /* 2223, 0x300a, 0x0102 */
5132     "Block Number of Points\0" /* 2224, 0x300a, 0x0104 */
5133     "Block Data\0" /* 2225, 0x300a, 0x0106 */
5134     "Applicator Sequence\0" /* 2226, 0x300a, 0x0107 */
5135     "Applicator ID\0" /* 2227, 0x300a, 0x0108 */
5136     "Applicator Type\0" /* 2228, 0x300a, 0x0109 */
5137     "Applicator Description\0" /* 2229, 0x300a, 0x010a */
5138     "Cumulative Dose Reference Coefficient\0" /* 2230, 0x300a, 0x010c */
5139     "Final Cumulative Meterset Weight\0" /* 2231, 0x300a, 0x010e */
5140     "Number of Control Points\0" /* 2232, 0x300a, 0x0110 */
5141     "Control Point Sequence\0" /* 2233, 0x300a, 0x0111 */
5142     "Control Point Index\0" /* 2234, 0x300a, 0x0112 */
5143     "Nominal Beam Energy\0" /* 2235, 0x300a, 0x0114 */
5144     "Dose Rate Set\0" /* 2236, 0x300a, 0x0115 */
5145     "Wedge Position Sequence\0" /* 2237, 0x300a, 0x0116 */
5146     "Wedge Position\0" /* 2238, 0x300a, 0x0118 */
5147     "Beam Limiting Device Position Sequence\0" /* 2239, 0x300a, 0x011a */
5148     "Leaf Jaw Positions\0" /* 2240, 0x300a, 0x011c */
5149     "Gantry Angle\0" /* 2241, 0x300a, 0x011e */
5150     "Gantry Rotation Direction\0" /* 2242, 0x300a, 0x011f */
5151     "Beam Limiting Device Angle\0" /* 2243, 0x300a, 0x0120 */
5152     "Beam Limiting Device Rotation Direction\0" /* 2244, 0x300a, 0x0121 */
5153     "Patient Support Angle\0" /* 2245, 0x300a, 0x0122 */
5154     "Patient Support Rotation Direction\0" /* 2246, 0x300a, 0x0123 */
5155     "Table Top Eccentric Axis Distance\0" /* 2247, 0x300a, 0x0124 */
5156     "Table Top Eccentric Angle\0" /* 2248, 0x300a, 0x0125 */
5157     "Table Top Eccentric Rotation Direction\0" /* 2249, 0x300a, 0x0126 */
5158     "Table Top Vertical Position\0" /* 2250, 0x300a, 0x0128 */
5159     "Table Top Longitudinal Position\0" /* 2251, 0x300a, 0x0129 */
5160     "Table Top Lateral Position\0" /* 2252, 0x300a, 0x012a */
5161     "Isocenter Position\0" /* 2253, 0x300a, 0x012c */
5162     "Surface Entry Point\0" /* 2254, 0x300a, 0x012e */
5163     "Source to Surface Distance\0" /* 2255, 0x300a, 0x0130 */
5164     "Cumulative Meterset Weight\0" /* 2256, 0x300a, 0x0134 */
5165     "Patient Setup Sequence\0" /* 2257, 0x300a, 0x0180 */
5166     "Patient Setup Number\0" /* 2258, 0x300a, 0x0182 */
5167     "Patient Additional Position\0" /* 2259, 0x300a, 0x0184 */
5168     "Fixation Device Sequence\0" /* 2260, 0x300a, 0x0190 */
5169     "Fixation Device Type\0" /* 2261, 0x300a, 0x0192 */
5170     "Fixation Device Label\0" /* 2262, 0x300a, 0x0194 */
5171     "Fixation Device Description\0" /* 2263, 0x300a, 0x0196 */
5172     "Fixation Device Position\0" /* 2264, 0x300a, 0x0198 */
5173     "Shielding Device Sequence\0" /* 2265, 0x300a, 0x01a0 */
5174     "Shielding Device Type\0" /* 2266, 0x300a, 0x01a2 */
5175     "Shielding Device Label\0" /* 2267, 0x300a, 0x01a4 */
5176     "Shielding Device Description\0" /* 2268, 0x300a, 0x01a6 */
5177     "Shielding Device Position\0" /* 2269, 0x300a, 0x01a8 */
5178     "Setup Technique\0" /* 2270, 0x300a, 0x01b0 */
5179     "Setup TechniqueDescription\0" /* 2271, 0x300a, 0x01b2 */
5180     "Setup Device Sequence\0" /* 2272, 0x300a, 0x01b4 */
5181     "Setup Device Type\0" /* 2273, 0x300a, 0x01b6 */
5182     "Setup Device Label\0" /* 2274, 0x300a, 0x01b8 */
5183     "Setup Device Description\0" /* 2275, 0x300a, 0x01ba */
5184     "Setup Device Parameter\0" /* 2276, 0x300a, 0x01bc */
5185     "Setup ReferenceDescription\0" /* 2277, 0x300a, 0x01d0 */
5186     "Table Top Vertical Setup Displacement\0" /* 2278, 0x300a, 0x01d2 */
5187     "Table Top Longitudinal Setup Displacement\0" /* 2279, 0x300a, 0x01d4 */
5188     "Table Top Lateral Setup Displacement\0" /* 2280, 0x300a, 0x01d6 */
5189     "Brachy Treatment Technique\0" /* 2281, 0x300a, 0x0200 */
5190     "Brachy Treatment Type\0" /* 2282, 0x300a, 0x0202 */
5191     "Treatment Machine Sequence\0" /* 2283, 0x300a, 0x0206 */
5192     "Source Sequence\0" /* 2284, 0x300a, 0x0210 */
5193     "Source Number\0" /* 2285, 0x300a, 0x0212 */
5194     "Source Type\0" /* 2286, 0x300a, 0x0214 */
5195     "Source Manufacturer\0" /* 2287, 0x300a, 0x0216 */
5196     "Active Source Diameter\0" /* 2288, 0x300a, 0x0218 */
5197     "Active Source Length\0" /* 2289, 0x300a, 0x021a */
5198     "Source Encapsulation Nominal Thickness\0" /* 2290, 0x300a, 0x0222 */
5199     "Source Encapsulation Nominal Transmission\0" /* 2291, 0x300a, 0x0224 */
5200     "Source IsotopeName\0" /* 2292, 0x300a, 0x0226 */
5201     "Source Isotope Half Life\0" /* 2293, 0x300a, 0x0228 */
5202     "Reference Air Kerma Rate\0" /* 2294, 0x300a, 0x022a */
5203     "Air Kerma Rate Reference Date\0" /* 2295, 0x300a, 0x022c */
5204     "Air Kerma Rate Reference Time\0" /* 2296, 0x300a, 0x022e */
5205     "Application Setup Sequence\0" /* 2297, 0x300a, 0x0230 */
5206     "Application Setup Type\0" /* 2298, 0x300a, 0x0232 */
5207     "Application Setup Number\0" /* 2299, 0x300a, 0x0234 */
5208     "Application Setup Name\0" /* 2300, 0x300a, 0x0236 */
5209     "Application Setup Manufacturer\0" /* 2301, 0x300a, 0x0238 */
5210     "Template Number\0" /* 2302, 0x300a, 0x0240 */
5211     "Template Type\0" /* 2303, 0x300a, 0x0242 */
5212     "Template Name\0" /* 2304, 0x300a, 0x0244 */
5213     "Total Reference Air Kerma\0" /* 2305, 0x300a, 0x0250 */
5214     "Brachy Accessory Device Sequence\0" /* 2306, 0x300a, 0x0260 */
5215     "Brachy Accessory Device Number\0" /* 2307, 0x300a, 0x0262 */
5216     "Brachy Accessory Device ID\0" /* 2308, 0x300a, 0x0263 */
5217     "Brachy Accessory Device Type\0" /* 2309, 0x300a, 0x0264 */
5218     "Brachy Accessory Device Name\0" /* 2310, 0x300a, 0x0266 */
5219     "Brachy Accessory Device Nominal Thickness\0" /* 2311, 0x300a, 0x026a */
5220     "Brachy Accessory Device Nominal Transmission\0" /* 2312, 0x300a, 0x026c */
5221     "Channel Sequence\0" /* 2313, 0x300a, 0x0280 */
5222     "Channel Number\0" /* 2314, 0x300a, 0x0282 */
5223     "Channel Length\0" /* 2315, 0x300a, 0x0284 */
5224     "Channel Total Time\0" /* 2316, 0x300a, 0x0286 */
5225     "Source Movement Type\0" /* 2317, 0x300a, 0x0288 */
5226     "Number of Pulses\0" /* 2318, 0x300a, 0x028a */
5227     "Pulse Repetition Interval\0" /* 2319, 0x300a, 0x028c */
5228     "Source Applicator Number\0" /* 2320, 0x300a, 0x0290 */
5229     "Source Applicator ID\0" /* 2321, 0x300a, 0x0291 */
5230     "Source Applicator Type\0" /* 2322, 0x300a, 0x0292 */
5231     "Source Applicator Name\0" /* 2323, 0x300a, 0x0294 */
5232     "Source Applicator Length\0" /* 2324, 0x300a, 0x0296 */
5233     "Source Applicator Manufacturer\0" /* 2325, 0x300a, 0x0298 */
5234     "Source Applicator Wall Nominal Thickness\0" /* 2326, 0x300a, 0x029c */
5235     "Source Applicator Wall Nominal Transmission\0" /* 2327, 0x300a, 0x029e */
5236     "Source Applicator Step Size\0" /* 2328, 0x300a, 0x02a0 */
5237     "Transfer Tube Number\0" /* 2329, 0x300a, 0x02a2 */
5238     "Transfer Tube Length\0" /* 2330, 0x300a, 0x02a4 */
5239     "Channel Shield Sequence\0" /* 2331, 0x300a, 0x02b0 */
5240     "Channel Shield Number\0" /* 2332, 0x300a, 0x02b2 */
5241     "Channel Shield ID\0" /* 2333, 0x300a, 0x02b3 */
5242     "Channel Shield Name\0" /* 2334, 0x300a, 0x02b4 */
5243     "Channel Shield Nominal Thickness\0" /* 2335, 0x300a, 0x02b8 */
5244     "Channel Shield Nominal Transmission\0" /* 2336, 0x300a, 0x02ba */
5245     "Final Cumulative Time Weight\0" /* 2337, 0x300a, 0x02c8 */
5246     "Brachy Control Point Sequence\0" /* 2338, 0x300a, 0x02d0 */
5247     "Control Point Relative Position\0" /* 2339, 0x300a, 0x02d2 */
5248     "Control Point 3D Position\0" /* 2340, 0x300a, 0x02d4 */
5249     "Cumulative Time Weight\0" /* 2341, 0x300a, 0x02d6 */
5250     "Referenced RT Plan Sequence\0" /* 2342, 0x300c, 0x0002 */
5251     "Referenced Beam Sequence\0" /* 2343, 0x300c, 0x0004 */
5252     "Referenced Beam Number\0" /* 2344, 0x300c, 0x0006 */
5253     "Referenced Reference Image Number\0" /* 2345, 0x300c, 0x0007 */
5254     "Start Cumulative Meterset Weight\0" /* 2346, 0x300c, 0x0008 */
5255     "End Cumulative Meterset Weight\0" /* 2347, 0x300c, 0x0009 */
5256     "Referenced Brachy Application Setup Sequence\0" /* 2348, 0x300c, 0x000a */
5257     "Referenced Brachy Application Setup Number\0" /* 2349, 0x300c, 0x000c */
5258     "Referenced Source Number\0" /* 2350, 0x300c, 0x000e */
5259     "Referenced Fraction Group Sequence\0" /* 2351, 0x300c, 0x0020 */
5260     "Referenced Fraction Group Number\0" /* 2352, 0x300c, 0x0022 */
5261     "Referenced Verification Image Sequence\0" /* 2353, 0x300c, 0x0040 */
5262     "Referenced Reference Image Sequence\0" /* 2354, 0x300c, 0x0042 */
5263     "Referenced Dose Reference Sequence\0" /* 2355, 0x300c, 0x0050 */
5264     "Referenced Dose Reference Number\0" /* 2356, 0x300c, 0x0051 */
5265     "Brachy Referenced Dose Reference Sequence\0" /* 2357, 0x300c, 0x0055 */
5266     "Referenced Structure Set Sequence\0" /* 2358, 0x300c, 0x0060 */
5267     "Referenced Patient Setup Number\0" /* 2359, 0x300c, 0x006a */
5268     "Referenced Dose Sequence\0" /* 2360, 0x300c, 0x0080 */
5269     "Referenced Tolerance Table Number\0" /* 2361, 0x300c, 0x00a0 */
5270     "Referenced Bolus Sequence\0" /* 2362, 0x300c, 0x00b0 */
5271     "Referenced Wedge Number\0" /* 2363, 0x300c, 0x00c0 */
5272     "Referenced Compensato rNumber\0" /* 2364, 0x300c, 0x00d0 */
5273     "Referenced Block Number\0" /* 2365, 0x300c, 0x00e0 */
5274     "Referenced Control Point\0" /* 2366, 0x300c, 0x00f0 */
5275     "Approval Status\0" /* 2367, 0x300e, 0x0002 */
5276     "Review Date\0" /* 2368, 0x300e, 0x0004 */
5277     "Review Time\0" /* 2369, 0x300e, 0x0005 */
5278     "Reviewer Name\0" /* 2370, 0x300e, 0x0008 */
5279     "Text Group Length\0" /* 2371, 0x4000, 0x0000 */
5280     "Text Arbitrary\0" /* 2372, 0x4000, 0x0010 */
5281     "Text Comments\0" /* 2373, 0x4000, 0x4000 */
5282     "Results Group Length\0" /* 2374, 0x4008, 0x0000 */
5283     "Results ID\0" /* 2375, 0x4008, 0x0040 */
5284     "Results ID Issuer\0" /* 2376, 0x4008, 0x0042 */
5285     "Referenced Interpretation Sequence\0" /* 2377, 0x4008, 0x0050 */
5286     "Report Production Status\0" /* 2378, 0x4008, 0x00ff */
5287     "Interpretation Recorded Date\0" /* 2379, 0x4008, 0x0100 */
5288     "Interpretation Recorded Time\0" /* 2380, 0x4008, 0x0101 */
5289     "Interpretation Recorder\0" /* 2381, 0x4008, 0x0102 */
5290     "Reference to Recorded Sound\0" /* 2382, 0x4008, 0x0103 */
5291     "Interpretation Transcription Date\0" /* 2383, 0x4008, 0x0108 */
5292     "Interpretation Transcription Time\0" /* 2384, 0x4008, 0x0109 */
5293     "Interpretation Transcriber\0" /* 2385, 0x4008, 0x010a */
5294     "Interpretation Text\0" /* 2386, 0x4008, 0x010b */
5295     "Interpretation Author\0" /* 2387, 0x4008, 0x010c */
5296     "Interpretation Approver Sequence\0" /* 2388, 0x4008, 0x0111 */
5297     "Interpretation Approval Date\0" /* 2389, 0x4008, 0x0112 */
5298     "Interpretation Approval Time\0" /* 2390, 0x4008, 0x0113 */
5299     "Physician Approving Interpretation\0" /* 2391, 0x4008, 0x0114 */
5300     "Interpretation Diagnosis Description\0" /* 2392, 0x4008, 0x0115 */
5301     "InterpretationDiagnosis Code Sequence\0" /* 2393, 0x4008, 0x0117 */
5302     "Results Distribution List Sequence\0" /* 2394, 0x4008, 0x0118 */
5303     "Distribution Name\0" /* 2395, 0x4008, 0x0119 */
5304     "Distribution Address\0" /* 2396, 0x4008, 0x011a */
5305     "Interpretation ID\0" /* 2397, 0x4008, 0x0200 */
5306     "Interpretation ID Issuer\0" /* 2398, 0x4008, 0x0202 */
5307     "Interpretation Type ID\0" /* 2399, 0x4008, 0x0210 */
5308     "Interpretation Status ID\0" /* 2400, 0x4008, 0x0212 */
5309     "Impressions\0" /* 2401, 0x4008, 0x0300 */
5310     "Results Comments\0" /* 2402, 0x4008, 0x4000 */
5311     "Report ID\0" /* 2403, 0x4009, 0x0001 */
5312     "Report Status\0" /* 2404, 0x4009, 0x0020 */
5313     "Report Creation Date\0" /* 2405, 0x4009, 0x0030 */
5314     "Report Approving Physician\0" /* 2406, 0x4009, 0x0070 */
5315     "Report Text\0" /* 2407, 0x4009, 0x00e0 */
5316     "Report Author\0" /* 2408, 0x4009, 0x00e1 */
5317     "Reporting Radiologist\0" /* 2409, 0x4009, 0x00e3 */
5318     "Curve Group Length\0" /* 2410, 0x5000, 0x0000 */
5319     "Curve Dimensions\0" /* 2411, 0x5000, 0x0005 */
5320     "Number of Points\0" /* 2412, 0x5000, 0x0010 */
5321     "Type of Data\0" /* 2413, 0x5000, 0x0020 */
5322     "Curve Description\0" /* 2414, 0x5000, 0x0022 */
5323     "Axis Units\0" /* 2415, 0x5000, 0x0030 */
5324     "Axis Labels\0" /* 2416, 0x5000, 0x0040 */
5325     "Data Value Representation\0" /* 2417, 0x5000, 0x0103 */
5326     "Minimum Coordinate Value\0" /* 2418, 0x5000, 0x0104 */
5327     "Maximum Coordinate Value\0" /* 2419, 0x5000, 0x0105 */
5328     "Curve Range\0" /* 2420, 0x5000, 0x0106 */
5329     "Curve Data Descriptor\0" /* 2421, 0x5000, 0x0110 */
5330     "Coordinate Start Value\0" /* 2422, 0x5000, 0x0112 */
5331     "Coordinate Step Value\0" /* 2423, 0x5000, 0x0114 */
5332     "Curve Activation Layer\0" /* 2424, 0x5000, 0x1001 */
5333     "Audio Type\0" /* 2425, 0x5000, 0x2000 */
5334     "Audio Sample Format\0" /* 2426, 0x5000, 0x2002 */
5335     "Number of Channels\0" /* 2427, 0x5000, 0x2004 */
5336     "Number of Samples\0" /* 2428, 0x5000, 0x2006 */
5337     "Sample Rate\0" /* 2429, 0x5000, 0x2008 */
5338     "Total Time\0" /* 2430, 0x5000, 0x200a */
5339     "Audio Sample Data\0" /* 2431, 0x5000, 0x200c */
5340     "Audio Comments\0" /* 2432, 0x5000, 0x200e */
5341     "Curve Label\0" /* 2433, 0x5000, 0x2500 */
5342     "CurveReferenced Overlay Sequence\0" /* 2434, 0x5000, 0x2600 */
5343     "CurveReferenced Overlay Group\0" /* 2435, 0x5000, 0x2610 */
5344     "Curve Data\0" /* 2436, 0x5000, 0x3000 */
5345     "Overlay Group Length\0" /* 2437, 0x6000, 0x0000 */
5346     "Gray Palette Color Lookup Table Descriptor\0" /* 2438, 0x6000, 0x0001 */
5347     "Gray Palette Color Lookup Table Data\0" /* 2439, 0x6000, 0x0002 */
5348     "Overlay Rows\0" /* 2440, 0x6000, 0x0010 */
5349     "Overlay Columns\0" /* 2441, 0x6000, 0x0011 */
5350     "Overlay Planes\0" /* 2442, 0x6000, 0x0012 */
5351     "Number of Frames in Overlay\0" /* 2443, 0x6000, 0x0015 */
5352     "Overlay Description\0" /* 2444, 0x6000, 0x0022 */
5353     "Overlay Type\0" /* 2445, 0x6000, 0x0040 */
5354     "Overlay Subtype\0" /* 2446, 0x6000, 0x0045 */
5355     "Overlay Origin\0" /* 2447, 0x6000, 0x0050 */
5356     "Image Frame Origin\0" /* 2448, 0x6000, 0x0051 */
5357     "Plane Origin\0" /* 2449, 0x6000, 0x0052 */
5358     "Overlay Compression Code\0" /* 2450, 0x6000, 0x0060 */
5359     "Overlay Compression Originator\0" /* 2451, 0x6000, 0x0061 */
5360     "Overlay Compression Label\0" /* 2452, 0x6000, 0x0062 */
5361     "Overlay Compression Description\0" /* 2453, 0x6000, 0x0063 */
5362     "Overlay Compression Step Pointers\0" /* 2454, 0x6000, 0x0066 */
5363     "Overlay Repeat Interval\0" /* 2455, 0x6000, 0x0068 */
5364     "Overlay Bits Grouped\0" /* 2456, 0x6000, 0x0069 */
5365     "Overlay Bits Allocated\0" /* 2457, 0x6000, 0x0100 */
5366     "Overlay Bit Position\0" /* 2458, 0x6000, 0x0102 */
5367     "Overlay Format\0" /* 2459, 0x6000, 0x0110 */
5368     "Overlay Location\0" /* 2460, 0x6000, 0x0200 */
5369     "Overlay Code Label\0" /* 2461, 0x6000, 0x0800 */
5370     "Overlay Number of Tables\0" /* 2462, 0x6000, 0x0802 */
5371     "Overlay Code Table Location\0" /* 2463, 0x6000, 0x0803 */
5372     "Overlay Bits For Code Word\0" /* 2464, 0x6000, 0x0804 */
5373     "Overlay Activation Layer\0" /* 2465, 0x6000, 0x1001 */
5374     "Overlay Descriptor - Gray\0" /* 2466, 0x6000, 0x1100 */
5375     "Overlay Descriptor - Red\0" /* 2467, 0x6000, 0x1101 */
5376     "Overlay Descriptor - Green\0" /* 2468, 0x6000, 0x1102 */
5377     "Overlay Descriptor - Blue\0" /* 2469, 0x6000, 0x1103 */
5378     "Overlays - Gray\0" /* 2470, 0x6000, 0x1200 */
5379     "Overlays - Red\0" /* 2471, 0x6000, 0x1201 */
5380     "Overlays - Green\0" /* 2472, 0x6000, 0x1202 */
5381     "Overlays - Blue\0" /* 2473, 0x6000, 0x1203 */
5382     "ROI Area\0" /* 2474, 0x6000, 0x1301 */
5383     "ROI Mean\0" /* 2475, 0x6000, 0x1302 */
5384     "ROI Standard Deviation\0" /* 2476, 0x6000, 0x1303 */
5385     "Overlay Label\0" /* 2477, 0x6000, 0x1500 */
5386     "Overlay Data\0" /* 2478, 0x6000, 0x3000 */
5387     "Overlay Comments\0" /* 2479, 0x6000, 0x4000 */
5388     "?\0" /* 2480, 0x6001, 0x0000 */
5389     "?\0" /* 2481, 0x6001, 0x0010 */
5390     "?\0" /* 2482, 0x6001, 0x1010 */
5391     "?\0" /* 2483, 0x6001, 0x1030 */
5392     "?\0" /* 2484, 0x6021, 0x0000 */
5393     "?\0" /* 2485, 0x6021, 0x0010 */
5394     "Dummy\0" /* 2486, 0x7001, 0x0010 */
5395     "Info\0" /* 2487, 0x7003, 0x0010 */
5396     "Dummy\0" /* 2488, 0x7005, 0x0010 */
5397     "TextAnnotation\0" /* 2489, 0x7000, 0x0004 */
5398     "Box\0" /* 2490, 0x7000, 0x0005 */
5399     "ArrowEnd\0" /* 2491, 0x7000, 0x0007 */
5400     "Pixel Data Group Length\0" /* 2492, 0x7fe0, 0x0000 */
5401     "Pixel Data\0" /* 2493, 0x7fe0, 0x0010 */
5402     "Coefficients SDVN\0" /* 2494, 0x7fe0, 0x0020 */
5403     "Coefficients SDHN\0" /* 2495, 0x7fe0, 0x0030 */
5404     "Coefficients SDDN\0" /* 2496, 0x7fe0, 0x0040 */
5405     "Pixel Data\0" /* 2497, 0x7fe1, 0x0010 */
5406     "Variable Pixel Data Group Length\0" /* 2498, 0x7f00, 0x0000 */
5407     "Variable Pixel Data\0" /* 2499, 0x7f00, 0x0010 */
5408     "Variable Next Data Group\0" /* 2500, 0x7f00, 0x0011 */
5409     "Variable Coefficients SDVN\0" /* 2501, 0x7f00, 0x0020 */
5410     "Variable Coefficients SDHN\0" /* 2502, 0x7f00, 0x0030 */
5411     "Variable Coefficients SDDN\0" /* 2503, 0x7f00, 0x0040 */
5412     "Binary Data\0" /* 2504, 0x7fe1, 0x0000 */
5413     "Image Graphics Format Code\0" /* 2505, 0x7fe3, 0x0000 */
5414     "Image Graphics\0" /* 2506, 0x7fe3, 0x0010 */
5415     "Image Graphics Dummy\0" /* 2507, 0x7fe3, 0x0020 */
5416     "?\0" /* 2508, 0x7ff1, 0x0001 */
5417     "?\0" /* 2509, 0x7ff1, 0x0002 */
5418     "?\0" /* 2510, 0x7ff1, 0x0003 */
5419     "?\0" /* 2511, 0x7ff1, 0x0004 */
5420     "?\0" /* 2512, 0x7ff1, 0x0005 */
5421     "?\0" /* 2513, 0x7ff1, 0x0007 */
5422     "?\0" /* 2514, 0x7ff1, 0x0008 */
5423     "?\0" /* 2515, 0x7ff1, 0x0009 */
5424     "?\0" /* 2516, 0x7ff1, 0x000a */
5425     "?\0" /* 2517, 0x7ff1, 0x000b */
5426     "?\0" /* 2518, 0x7ff1, 0x000c */
5427     "?\0" /* 2519, 0x7ff1, 0x000d */
5428     "?\0" /* 2520, 0x7ff1, 0x0010 */
5429     "Data Set Trailing Padding\0" /* 2521, 0xfffc, 0xfffc */
5430     "Item\0" /* 2522, 0xfffe, 0xe000 */
5431     "Item Delimitation Item\0" /* 2523, 0xfffe, 0xe00d */
5432     "Sequence Delimitation Item\0" /* 2524, 0xfffe, 0xe0dd */
5433     "\0"; /* 2525, 0xffff, 0xffff */
5434 #endif /* DESCRIPION_STR */
5435 
DCM_Get_Description(const unsigned int index)5436 static const char *DCM_Get_Description(const unsigned int index)
5437 {
5438 #if DESCRIPION_STR
5439     size_t count;
5440     const char *p = dicom_descriptions;
5441     for (count = 0;
5442          (count < index) && (p < dicom_descriptions+sizeof(dicom_descriptions)-1);
5443          p++)
5444     {
5445         if (*p == '\0')
5446           count++;
5447     }
5448     return p;
5449 #else
5450     return dicom_info[index].description;
5451 #endif
5452 }
5453 /*
5454 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5455 %                                                                             %
5456 %                                                                             %
5457 %                                                                             %
5458 %   I s D C M                                                                 %
5459 %                                                                             %
5460 %                                                                             %
5461 %                                                                             %
5462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5463 %
5464 %  Method IsDCM returns True if the image format type, identified by the
5465 %  magick string, is DCM.
5466 %
5467 %  The format of the ReadDCMImage method is:
5468 %
5469 %      unsigned int IsDCM(const unsigned char *magick,const size_t length)
5470 %
5471 %  A description of each parameter follows:
5472 %
5473 %    o status:  Method IsDCM returns True if the image format type is DCM.
5474 %
5475 %    o magick: This string is generally the first few bytes of an image file
5476 %      or blob.
5477 %
5478 %    o length: Specifies the length of the magick string.
5479 %
5480 %
5481 */
IsDCM(const unsigned char * magick,const size_t length)5482 static MagickPassFail IsDCM(const unsigned char *magick,const size_t length)
5483 {
5484   if (length < 132)
5485     return(False);
5486   if (LocaleNCompare((char *) (magick+128),"DICM",4) == 0)
5487     return(True);
5488   return(False);
5489 }
5490 
DCM_InitDCM(DicomStream * dcm,int verbose)5491 static MagickPassFail DCM_InitDCM(DicomStream *dcm,int verbose)
5492 {
5493   (void) memset(dcm,0,sizeof(*dcm));
5494   dcm->columns=0;
5495   dcm->rows=0;
5496   dcm->samples_per_pixel=1;
5497   dcm->bits_allocated=8;
5498   dcm->significant_bits=0;
5499   dcm->high_bit=0;
5500   dcm->bytes_per_pixel=1;
5501   dcm->max_value_in=255;
5502   dcm->max_value_out=255;
5503   dcm->pixel_representation=0;
5504   dcm->transfer_syntax=DCM_TS_IMPL_LITTLE;
5505   dcm->interlace=0;
5506   dcm->msb_state=DCM_MSB_LITTLE;
5507   dcm->phot_interp=DCM_PI_MONOCHROME2;
5508   dcm->window_center=0;
5509   dcm->window_width=0;
5510   dcm->rescale_intercept=0;
5511   dcm->rescale_slope=1;
5512   dcm->number_scenes=1;
5513   dcm->data=NULL;
5514   dcm->upper_lim=0;
5515   dcm->lower_lim=0;
5516   dcm->rescale_map=NULL;
5517   dcm->rescale_type=DCM_RT_HOUNSFIELD;
5518   dcm->rescaling=DCM_RS_NONE;
5519   dcm->offset_ct=0;
5520   dcm->offset_arr=NULL;
5521   dcm->frag_bytes=0;
5522   dcm->rle_rep_ct=0;
5523 #if defined(USE_GRAYMAP)
5524   dcm->graymap=(unsigned short *) NULL;
5525 #endif
5526   dcm->funcReadShort=ReadBlobLSBShort;
5527   dcm->funcReadLong=ReadBlobLSBLong;
5528   dcm->explicit_file=False;
5529   dcm->verbose=verbose;
5530 
5531   return MagickPass;
5532 }
5533 
DCM_DestroyDCM(DicomStream * dcm)5534 static void DCM_DestroyDCM(DicomStream *dcm)
5535 {
5536   MagickFreeResourceLimitedMemory(dcm->offset_arr);
5537   MagickFreeResourceLimitedMemory(dcm->data);
5538 #if defined(USE_GRAYMAP)
5539   MagickFreeResourceLimitedMemory(dcm->graymap);
5540 #endif
5541   MagickFreeResourceLimitedMemory(dcm->rescale_map);
5542 }
5543 
5544 /*
5545   Parse functions for DICOM elements
5546 */
funcDCM_TransferSyntax(Image * image,DicomStream * dcm,ExceptionInfo * exception)5547 static MagickPassFail funcDCM_TransferSyntax(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5548 {
5549   char
5550     *p;
5551 
5552   int
5553     type,
5554     subtype;
5555 
5556   if (dcm->data == (unsigned char *) NULL)
5557     {
5558       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5559       return MagickFail;
5560     }
5561 
5562   p=(char *) dcm->data;
5563   if (strncmp(p,"1.2.840.10008.1.2",17) == 0)
5564     {
5565       if (*(p+17) == 0)
5566         {
5567           dcm->transfer_syntax = DCM_TS_IMPL_LITTLE;
5568           return MagickPass;
5569         }
5570       type=0;
5571       subtype=0;
5572       /* Subtype is not always provided, but insist on type */
5573       if (sscanf(p+17,".%d.%d",&type,&subtype) < 1)
5574         {
5575           ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5576           return MagickFail;
5577         }
5578       switch (type)
5579         {
5580         case 1:
5581           dcm->transfer_syntax = DCM_TS_EXPL_LITTLE;
5582           break;
5583         case 2:
5584           dcm->transfer_syntax = DCM_TS_EXPL_BIG;
5585           dcm->msb_state=DCM_MSB_BIG_PENDING;
5586           break;
5587         case 4:
5588           if ((subtype >= 80) && (subtype <= 81))
5589             dcm->transfer_syntax = DCM_TS_JPEG_LS;
5590           else
5591           if ((subtype >= 90) && (subtype <= 93))
5592             dcm->transfer_syntax = DCM_TS_JPEG_2000;
5593           else
5594             dcm->transfer_syntax = DCM_TS_JPEG;
5595           break;
5596         case 5:
5597           dcm->transfer_syntax = DCM_TS_RLE;
5598           break;
5599         }
5600     }
5601   return MagickPass;
5602 }
5603 
funcDCM_StudyDate(Image * image,DicomStream * dcm,ExceptionInfo * exception)5604 static MagickPassFail funcDCM_StudyDate(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5605 {
5606   ARG_NOT_USED(exception);
5607 
5608   (void) SetImageAttribute(image,"StudyDate",(char *) dcm->data);
5609   return MagickPass;
5610 }
5611 
funcDCM_PatientName(Image * image,DicomStream * dcm,ExceptionInfo * exception)5612 static MagickPassFail funcDCM_PatientName(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5613 {
5614   ARG_NOT_USED(exception);
5615 
5616   (void) SetImageAttribute(image,"PatientName",(char *) dcm->data);
5617   return MagickPass;
5618 }
5619 
funcDCM_TriggerTime(Image * image,DicomStream * dcm,ExceptionInfo * exception)5620 static MagickPassFail funcDCM_TriggerTime(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5621 {
5622   ARG_NOT_USED(exception);
5623 
5624   (void) SetImageAttribute(image,"TriggerTime",(char *) dcm->data);
5625   return MagickPass;
5626 }
5627 
funcDCM_FieldOfView(Image * image,DicomStream * dcm,ExceptionInfo * exception)5628 static MagickPassFail funcDCM_FieldOfView(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5629 {
5630   ARG_NOT_USED(exception);
5631 
5632   (void) SetImageAttribute(image,"FieldOfView",(char *) dcm->data);
5633   return MagickPass;
5634 }
5635 
funcDCM_SeriesNumber(Image * image,DicomStream * dcm,ExceptionInfo * exception)5636 static MagickPassFail funcDCM_SeriesNumber(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5637 {
5638   ARG_NOT_USED(exception);
5639   (void) SetImageAttribute(image,"SeriesNumber",(char *) dcm->data);
5640   return MagickPass;
5641 }
5642 
funcDCM_ImagePosition(Image * image,DicomStream * dcm,ExceptionInfo * exception)5643 static MagickPassFail funcDCM_ImagePosition(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5644 {
5645   ARG_NOT_USED(exception);
5646   (void) SetImageAttribute(image,"ImagePosition",(char *) dcm->data);
5647   return MagickPass;
5648 }
5649 
funcDCM_ImageOrientation(Image * image,DicomStream * dcm,ExceptionInfo * exception)5650 static MagickPassFail funcDCM_ImageOrientation(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5651 {
5652   ARG_NOT_USED(exception);
5653   (void) SetImageAttribute(image,"ImageOrientation",(char *) dcm->data);
5654   return MagickPass;
5655 }
5656 
funcDCM_SliceLocation(Image * image,DicomStream * dcm,ExceptionInfo * exception)5657 static MagickPassFail funcDCM_SliceLocation(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5658 {
5659   ARG_NOT_USED(exception);
5660   (void) SetImageAttribute(image,"SliceLocation",(char *) dcm->data);
5661   return MagickPass;
5662 }
5663 
funcDCM_SamplesPerPixel(Image * image,DicomStream * dcm,ExceptionInfo * exception)5664 static MagickPassFail funcDCM_SamplesPerPixel(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5665 {
5666   ARG_NOT_USED(image);
5667   ARG_NOT_USED(exception);
5668   dcm->samples_per_pixel=dcm->datum;
5669   return MagickPass;
5670 }
5671 
funcDCM_PhotometricInterpretation(Image * image,DicomStream * dcm,ExceptionInfo * exception)5672 static MagickPassFail funcDCM_PhotometricInterpretation(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5673 {
5674   char photometric[MaxTextExtent];
5675   unsigned int i;
5676 
5677   ARG_NOT_USED(image);
5678   ARG_NOT_USED(exception);
5679 
5680   if (dcm->data == (unsigned char *) NULL)
5681     {
5682       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5683       return MagickFail;
5684     }
5685 
5686   (void) memset(photometric,0,sizeof(photometric));
5687   for (i=0; i < Min(dcm->length, MaxTextExtent-1); i++)
5688     photometric[i]=dcm->data[i];
5689   photometric[i]='\0';
5690 
5691   if (strncmp(photometric,"MONOCHROME1",11) == 0)
5692     dcm->phot_interp = DCM_PI_MONOCHROME1;
5693   else
5694     if (strncmp(photometric,"MONOCHROME2",11) == 0)
5695       dcm->phot_interp = DCM_PI_MONOCHROME2;
5696     else
5697       if (strncmp(photometric,"PALETTE COLOR",13) == 0)
5698         dcm->phot_interp = DCM_PI_PALETTE_COLOR;
5699       else
5700         if (strncmp(photometric,"RGB",3) == 0)
5701           dcm->phot_interp = DCM_PI_RGB;
5702         else
5703           dcm->phot_interp = DCM_PI_OTHER;
5704   return MagickPass;
5705 }
5706 
funcDCM_PlanarConfiguration(Image * image,DicomStream * dcm,ExceptionInfo * exception)5707 static MagickPassFail funcDCM_PlanarConfiguration(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5708 {
5709   ARG_NOT_USED(image);
5710   ARG_NOT_USED(exception);
5711 
5712   dcm->interlace=dcm->datum;
5713   return MagickPass;
5714 }
5715 
funcDCM_NumberOfFrames(Image * image,DicomStream * dcm,ExceptionInfo * exception)5716 static MagickPassFail funcDCM_NumberOfFrames(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5717 {
5718   if (dcm->data == (unsigned char *) NULL)
5719     {
5720       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5721       return MagickFail;
5722     }
5723 
5724   dcm->number_scenes=MagickAtoI((char *) dcm->data);
5725   return MagickPass;
5726 }
5727 
funcDCM_Rows(Image * image,DicomStream * dcm,ExceptionInfo * exception)5728 static MagickPassFail funcDCM_Rows(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5729 {
5730   ARG_NOT_USED(image);
5731   ARG_NOT_USED(exception);
5732 
5733   dcm->rows=dcm->datum;
5734   return MagickPass;
5735 }
5736 
funcDCM_Columns(Image * image,DicomStream * dcm,ExceptionInfo * exception)5737 static MagickPassFail funcDCM_Columns(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5738 {
5739   ARG_NOT_USED(image);
5740   ARG_NOT_USED(exception);
5741 
5742   dcm->columns=dcm->datum;
5743   return MagickPass;
5744 }
5745 
funcDCM_BitsAllocated(Image * image,DicomStream * dcm,ExceptionInfo * exception)5746 static MagickPassFail funcDCM_BitsAllocated(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5747 {
5748   ARG_NOT_USED(image);
5749   ARG_NOT_USED(exception);
5750 
5751   dcm->bits_allocated=dcm->datum;
5752   dcm->bytes_per_pixel=1;
5753   if (dcm->datum > 8)
5754     dcm->bytes_per_pixel=2;
5755   return MagickPass;
5756 }
5757 
funcDCM_BitsStored(Image * image,DicomStream * dcm,ExceptionInfo * exception)5758 static MagickPassFail funcDCM_BitsStored(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5759 {
5760   ARG_NOT_USED(exception);
5761 
5762   dcm->significant_bits=dcm->datum;
5763   dcm->bytes_per_pixel=1;
5764   if ((dcm->significant_bits == 0U) || (dcm->significant_bits > 16U))
5765     {
5766       if (image->logging)
5767         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
5768                               "DICOM significant_bits = %u",
5769                               dcm->significant_bits);
5770       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5771       return MagickFail;
5772     }
5773   if (dcm->significant_bits > 8)
5774     dcm->bytes_per_pixel=2;
5775   dcm->max_value_in=MaxValueGivenBits(dcm->significant_bits);
5776   dcm->max_value_out=dcm->max_value_in;
5777   image->depth=Min(dcm->significant_bits,QuantumDepth);
5778   return MagickPass;
5779 }
5780 
funcDCM_HighBit(Image * image,DicomStream * dcm,ExceptionInfo * exception)5781 static MagickPassFail funcDCM_HighBit(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5782 {
5783   ARG_NOT_USED(image);
5784   ARG_NOT_USED(exception);
5785 
5786   dcm->high_bit=dcm->datum;
5787   return MagickPass;
5788 }
5789 
funcDCM_PixelRepresentation(Image * image,DicomStream * dcm,ExceptionInfo * exception)5790 static MagickPassFail funcDCM_PixelRepresentation(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5791 {
5792   ARG_NOT_USED(image);
5793   ARG_NOT_USED(exception);
5794 
5795   dcm->pixel_representation=dcm->datum;
5796   return MagickPass;
5797 }
5798 
funcDCM_WindowCenter(Image * image,DicomStream * dcm,ExceptionInfo * exception)5799 static MagickPassFail funcDCM_WindowCenter(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5800 {
5801   char
5802     *p;
5803 
5804   if (dcm->data == (unsigned char *) NULL)
5805     {
5806       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5807       return MagickFail;
5808     }
5809 
5810   p = strrchr((char *) dcm->data,'\\');
5811   if (p)
5812     p++;
5813   else
5814     p=(char *) dcm->data;
5815   dcm->window_center=MagickAtoF(p);
5816   return MagickPass;
5817 }
5818 
funcDCM_WindowWidth(Image * image,DicomStream * dcm,ExceptionInfo * exception)5819 static MagickPassFail funcDCM_WindowWidth(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5820 {
5821   char
5822     *p;
5823 
5824   if (dcm->data == (unsigned char *) NULL)
5825     {
5826       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5827       return MagickFail;
5828     }
5829 
5830   p = strrchr((char *) dcm->data,'\\');
5831   if (p)
5832     p++;
5833   else
5834     p=(char *) dcm->data;
5835   dcm->window_width=MagickAtoF(p);
5836   return MagickPass;
5837 }
5838 
funcDCM_RescaleIntercept(Image * image,DicomStream * dcm,ExceptionInfo * exception)5839 static MagickPassFail funcDCM_RescaleIntercept(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5840 {
5841   char
5842     *p;
5843 
5844   if (dcm->data == (unsigned char *) NULL)
5845     {
5846       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5847       return MagickFail;
5848     }
5849 
5850   p = strrchr((char *) dcm->data,'\\');
5851   if (p)
5852     p++;
5853   else
5854     p=(char *) dcm->data;
5855   dcm->rescale_intercept=MagickAtoF(p);
5856   return MagickPass;
5857 }
5858 
funcDCM_RescaleSlope(Image * image,DicomStream * dcm,ExceptionInfo * exception)5859 static MagickPassFail funcDCM_RescaleSlope(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5860 {
5861   char
5862     *p;
5863 
5864   if (dcm->data == (unsigned char *) NULL)
5865     {
5866       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5867       return MagickFail;
5868     }
5869 
5870   p = strrchr((char *) dcm->data,'\\');
5871   if (p)
5872     p++;
5873   else
5874     p=(char *) dcm->data;
5875   dcm->rescale_slope=MagickAtoF(p);
5876   return MagickPass;
5877 }
5878 
funcDCM_RescaleType(Image * image,DicomStream * dcm,ExceptionInfo * exception)5879 static MagickPassFail funcDCM_RescaleType(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5880 {
5881 
5882   if (dcm->data == (unsigned char *) NULL)
5883     {
5884       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5885       return MagickFail;
5886     }
5887 
5888   if (strncmp((char *) dcm->data,"OD",2) == 0)
5889     dcm->rescale_type=DCM_RT_OPTICAL_DENSITY;
5890   else if (strncmp((char *) dcm->data,"HU",2) == 0)
5891     dcm->rescale_type=DCM_RT_HOUNSFIELD;
5892   else if (strncmp((char *) dcm->data,"US",2) == 0)
5893     dcm->rescale_type=DCM_RT_UNSPECIFIED;
5894   else
5895     dcm->rescale_type=DCM_RT_UNKNOWN;
5896   return MagickPass;
5897 }
5898 
funcDCM_PaletteDescriptor(Image * image,DicomStream * dcm,ExceptionInfo * exception)5899 static MagickPassFail funcDCM_PaletteDescriptor(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5900 {
5901   /*
5902     Palette descriptor tables
5903     element = 1101/2/3 = for red/green/blue palette
5904     val 0 = # of entries in LUT (0 for 65535)
5905     val 1 = min pix value in palette (ie pix <= val1 -> palette[0])
5906     val 2 = # bits in LUT (8 or 16)
5907     NB Required by specification to be the same for each color
5908 
5909     #1 - check the same each time
5910     #2 - use scale_remap to map vals <= (val1) to first entry
5911     and vals >= (val1 + palette size) to last entry
5912     #3 - if (val2) == 8, use UINT8 values instead of UINT16
5913     #4 - Check for UINT8 values packed into low bits of UINT16
5914     entries as per spec
5915   */
5916   ARG_NOT_USED(image);
5917   ARG_NOT_USED(dcm);
5918   ARG_NOT_USED(exception);
5919 
5920   return MagickPass;
5921 }
5922 
funcDCM_LUT(Image * image,DicomStream * dcm,ExceptionInfo * exception)5923 static MagickPassFail funcDCM_LUT(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5924 {
5925 #if defined(USE_GRAYMAP)
5926   /*
5927     1200 = grey, LUT data 3006 = LUT data
5928   */
5929   unsigned long
5930     colors;
5931 
5932   register unsigned long
5933     i;
5934 
5935   if (dcm->data == (unsigned char *) NULL)
5936     {
5937       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5938       return MagickFail;
5939     }
5940 
5941   colors=dcm->length/dcm->bytes_per_pixel;
5942   dcm->datum=(long) colors;
5943   dcm->graymap=MagickAllocateResourceLimitedArray(unsigned short *,colors,sizeof(unsigned short));
5944   if (dcm->graymap == (unsigned short *) NULL)
5945     {
5946       ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
5947       return MagickFail;
5948     }
5949   for (i=0; i < (long) colors; i++)
5950     if (dcm->bytes_per_pixel == 1)
5951       dcm->graymap[i]=dcm->data[i];
5952     else
5953       dcm->graymap[i]=(unsigned short) ((short *) dcm->data)[i];
5954 #else
5955   ARG_NOT_USED(image);
5956   ARG_NOT_USED(dcm);
5957   ARG_NOT_USED(exception);
5958 #endif
5959   return MagickPass;
5960 }
5961 
funcDCM_Palette(Image * image,DicomStream * dcm,ExceptionInfo * exception)5962 static MagickPassFail funcDCM_Palette(Image *image,DicomStream *dcm,ExceptionInfo *exception)
5963 {
5964   register long
5965     i;
5966 
5967   unsigned char
5968     *p;
5969 
5970   unsigned short
5971     index;
5972 
5973   if (dcm->data == (unsigned char *) NULL)
5974     {
5975       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
5976       return MagickFail;
5977     }
5978 
5979   if (image->logging)
5980     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
5981                           "Palette with %" MAGICK_SIZE_T_F "u entries...",
5982                           (MAGICK_SIZE_T) dcm->length);
5983   /*
5984     Initialize colormap (entries are always 16 bit)
5985     1201/2/3 = red/green/blue palette
5986   */
5987   if (image->colormap == (PixelPacket *) NULL)
5988     {
5989       /*
5990         Allocate color map first time in
5991       */
5992       if (!AllocateImageColormap(image,(const unsigned long) dcm->length))
5993         {
5994           ThrowException(exception,ResourceLimitError,UnableToCreateColormap,image->filename);
5995           return MagickFail;
5996         }
5997     }
5998 
5999   /*
6000     Check that palette size matches previous one(s)
6001   */
6002   if (dcm->length != image->colors)
6003     {
6004       ThrowException(exception,ResourceLimitError,UnableToCreateColormap,image->filename);
6005       return MagickFail;
6006     }
6007 
6008   p=dcm->data;
6009   for (i=0; i < (long) image->colors; i++)
6010     {
6011       if (dcm->msb_state == DCM_MSB_BIG)
6012         index=((unsigned short) *p << 8) | (unsigned short) *(p+1);
6013       else
6014         index=(unsigned short) *p | ((unsigned short) *(p+1) << 8);
6015       if (dcm->element == 0x1201)
6016         image->colormap[i].red=ScaleShortToQuantum(index);
6017       else if (dcm->element == 0x1202)
6018         image->colormap[i].green=ScaleShortToQuantum(index);
6019       else
6020         image->colormap[i].blue=ScaleShortToQuantum(index);
6021       p+=2;
6022     }
6023   return MagickPass;
6024 }
6025 
DCM_RLE_ReadByte(Image * image,DicomStream * dcm)6026 static magick_uint8_t DCM_RLE_ReadByte(Image *image, DicomStream *dcm)
6027 {
6028   if (dcm->rle_rep_ct == 0)
6029     {
6030       int
6031         rep_ct,
6032         rep_char;
6033 
6034       /* We need to read the next command pair */
6035       if (dcm->frag_bytes <= 2)
6036         dcm->frag_bytes = 0;
6037       else
6038         dcm->frag_bytes -= 2;
6039 
6040       rep_ct=ReadBlobByte(image);
6041       rep_char=ReadBlobByte(image);
6042       if (rep_ct == 128)
6043         {
6044           /* Illegal value */
6045           return 0;
6046         }
6047       else
6048       if (rep_ct < 128)
6049         {
6050           /* (rep_ct+1) literal bytes */
6051           dcm->rle_rep_ct=rep_ct;
6052           dcm->rle_rep_char=-1;
6053           return (magick_uint8_t)rep_char;
6054         }
6055       else
6056         {
6057           /* (257-rep_ct) repeated bytes */
6058           dcm->rle_rep_ct=256-rep_ct;
6059           dcm->rle_rep_char=rep_char;
6060           return (magick_uint8_t)rep_char;
6061         }
6062     }
6063 
6064   dcm->rle_rep_ct--;
6065   if (dcm->rle_rep_char >= 0)
6066     return dcm->rle_rep_char;
6067 
6068   if (dcm->frag_bytes > 0)
6069     dcm->frag_bytes--;
6070   return ReadBlobByte(image);
6071 }
6072 
DCM_RLE_ReadShort(Image * image,DicomStream * dcm)6073 static magick_uint16_t DCM_RLE_ReadShort(Image *image, DicomStream *dcm)
6074 {
6075   return (((magick_uint16_t) DCM_RLE_ReadByte(image,dcm) << 4) |
6076           (magick_uint16_t) DCM_RLE_ReadByte(image,dcm));
6077 }
6078 
DCM_ReadElement(Image * image,DicomStream * dcm,ExceptionInfo * exception)6079 static MagickPassFail DCM_ReadElement(Image *image, DicomStream *dcm,ExceptionInfo *exception)
6080 {
6081   unsigned int
6082     use_explicit;
6083 
6084   char
6085     explicit_vr[MaxTextExtent],
6086     implicit_vr[MaxTextExtent];
6087 
6088   register long
6089     i;
6090 
6091   /*
6092     Read group and element IDs
6093   */
6094   image->offset=(long) TellBlob(image);
6095   dcm->group=dcm->funcReadShort(image);
6096   if ((dcm->msb_state == DCM_MSB_BIG_PENDING) && (dcm->group != 2))
6097     {
6098       dcm->group = (dcm->group << 8) | (dcm->group >> 8);
6099       dcm->funcReadShort=ReadBlobMSBShort;
6100       dcm->funcReadLong=ReadBlobMSBLong;
6101       dcm->msb_state=DCM_MSB_BIG;
6102     }
6103   dcm->element=dcm->funcReadShort(image);
6104   dcm->data=(unsigned char *) NULL;
6105   dcm->quantum=0;
6106   if (EOFBlob(image))
6107     {
6108       ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6109       return MagickFail;
6110     }
6111   /*
6112     Find corresponding VR for this group and element.
6113   */
6114   for (i=0; dicom_info[i].group < 0xffffU; i++)
6115     if ((dcm->group == dicom_info[i].group) &&
6116         (dcm->element == dicom_info[i].element))
6117       break;
6118   dcm->index=i;
6119 
6120   /*
6121     Check for "explicitness", but meta-file headers always explicit.
6122   */
6123   if (ReadBlob(image,2,(char *) explicit_vr) != 2)
6124     {
6125       ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6126       return MagickFail;
6127     }
6128   explicit_vr[2]='\0';
6129   (void) strlcpy(implicit_vr,dicom_info[dcm->index].vr,MaxTextExtent);
6130 
6131 #if defined(NEW_IMPLICIT_LOGIC)
6132   use_explicit=False;
6133   if (isupper((int) *explicit_vr) && isupper((int) *(explicit_vr+1)))
6134     {
6135       /* Explicit VR looks to be valid */
6136       if (strcmp(explicit_vr,implicit_vr) == 0)
6137         {
6138           /* Explicit VR matches implicit VR so assume that it is explicit */
6139           use_explicit=True;
6140         }
6141       else if ((dcm->group & 1) || strcmp(implicit_vr,"xs") == 0)
6142         {
6143           /*
6144             We *must* use explicit type under two conditions
6145             1) group is odd and therefore private
6146             2) element vr is set as "xs" ie is not of a fixed type
6147           */
6148           use_explicit=True;
6149           strcpy(implicit_vr,explicit_vr);
6150         }
6151     }
6152   if ((!use_explicit) || (strcmp(implicit_vr,"!!") == 0))
6153     {
6154       /* Use implicit logic */
6155       (void) SeekBlob(image,(ExtendedSignedIntegralType) -2,SEEK_CUR);
6156       dcm->quantum=4;
6157     }
6158   else
6159     {
6160       /* Use explicit logic */
6161       dcm->quantum=2;
6162       if ((strcmp(explicit_vr,"OB") == 0) ||
6163           (strcmp(explicit_vr,"OW") == 0) ||
6164           (strcmp(explicit_vr,"OF") == 0) ||
6165           (strcmp(explicit_vr,"SQ") == 0) ||
6166           (strcmp(explicit_vr,"UN") == 0) ||
6167           (strcmp(explicit_vr,"UT") == 0))
6168         {
6169           (void) dcm->funcReadShort(image);
6170           if (EOFBlob(image))
6171             {
6172               ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6173               return MagickFail;
6174             }
6175           dcm->quantum=4;
6176         }
6177     }
6178 #else
6179   if (!dcm->explicit_file && (dcm->group != 0x0002))
6180     dcm->explicit_file=isupper((int) *explicit_vr) && isupper((int) *(explicit_vr+1));
6181   use_explicit=((dcm->group == 0x0002) || dcm->explicit_file);
6182   if (use_explicit && (strcmp(implicit_vr,"xs") == 0))
6183     (void) strlcpy(implicit_vr,explicit_vr,MaxTextExtent);
6184   if (!use_explicit || (strcmp(implicit_vr,"!!") == 0))
6185     {
6186       (void) SeekBlob(image,(ExtendedSignedIntegralType) -2,SEEK_CUR);
6187       dcm->quantum=4;
6188     }
6189   else
6190     {
6191       /*
6192         Assume explicit type.
6193       */
6194       dcm->quantum=2;
6195       if ((strcmp(explicit_vr,"OB") == 0) ||
6196           (strcmp(explicit_vr,"UN") == 0) ||
6197           (strcmp(explicit_vr,"OW") == 0) || (strcmp(explicit_vr,"SQ") == 0))
6198         {
6199           (void) dcm->funcReadShort(image)
6200             if (EOFBlob(image))
6201               {
6202                 ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6203                 return MagickFail;
6204               }
6205           dcm->quantum=4;
6206         }
6207     }
6208 #endif
6209 
6210   dcm->datum=0;
6211   if (dcm->quantum == 4)
6212     {
6213       dcm->datum=dcm->funcReadLong(image);
6214       if (EOFBlob(image))
6215         {
6216           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6217           return MagickFail;
6218         }
6219     }
6220   else if (dcm->quantum == 2)
6221     {
6222       dcm->datum=(long) dcm->funcReadShort(image);
6223       if (EOFBlob(image))
6224         {
6225           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6226           return MagickFail;
6227         }
6228     }
6229   dcm->quantum=0;
6230   dcm->length=1;
6231   if (dcm->datum != 0)
6232     {
6233       if ((strcmp(implicit_vr,"SS") == 0) ||
6234           (strcmp(implicit_vr,"US") == 0) ||
6235           (strcmp(implicit_vr,"OW") == 0))
6236         dcm->quantum=2;
6237       else if ((strcmp(implicit_vr,"UL") == 0) ||
6238               (strcmp(implicit_vr,"SL") == 0) ||
6239               (strcmp(implicit_vr,"FL") == 0) ||
6240               (strcmp(implicit_vr,"OF") == 0))
6241         dcm->quantum=4;
6242       else  if (strcmp(implicit_vr,"FD") == 0)
6243         dcm->quantum=8;
6244       else
6245         dcm->quantum=1;
6246 
6247       if (dcm->datum != -1)
6248         {
6249           dcm->length=(size_t) dcm->datum/dcm->quantum;
6250         }
6251       else
6252         {
6253           /*
6254             Sequence and item of undefined length.
6255           */
6256           dcm->quantum=0;
6257           dcm->length=0;
6258         }
6259     }
6260   /*
6261     Display Dicom info.
6262   */
6263   if (dcm->verbose)
6264     {
6265       const char * description;
6266       if (!use_explicit)
6267         explicit_vr[0]='\0';
6268       (void) fprintf(stdout,"0x%04lX %4lu %.1024s-%.1024s (0x%04x,0x%04x)",
6269                      image->offset,(unsigned long) dcm->length,implicit_vr,explicit_vr,
6270                      dcm->group,dcm->element);
6271       if ((description=DCM_Get_Description(dcm->index)) != (char *) NULL)
6272           (void) fprintf(stdout," %.1024s",description);
6273       (void) fprintf(stdout,": ");
6274     }
6275   if ((dcm->group == 0x7FE0) && (dcm->element == 0x0010))
6276     {
6277       if (dcm->verbose)
6278         (void) fprintf(stdout,"\n");
6279       return MagickPass;
6280     }
6281   /*
6282     Allocate array and read data into it
6283   */
6284   if ((dcm->length == 1) && (dcm->quantum == 1))
6285     {
6286       if ((dcm->datum=ReadBlobByte(image)) == EOF)
6287         {
6288           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6289           return MagickFail;
6290         }
6291     }
6292   else if ((dcm->length == 1) && (dcm->quantum == 2))
6293     {
6294       dcm->datum=dcm->funcReadShort(image);
6295       if (EOFBlob(image))
6296         {
6297           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6298           return MagickFail;
6299         }
6300     }
6301   else if ((dcm->length == 1) && (dcm->quantum == 4))
6302     {
6303       dcm->datum=dcm->funcReadLong(image);
6304       if (EOFBlob(image))
6305         {
6306           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6307           return MagickFail;
6308         }
6309     }
6310   else if ((dcm->quantum != 0) && (dcm->length != 0))
6311     {
6312       size_t
6313         size;
6314 
6315       if (dcm->length > ((size_t) GetBlobSize(image)))
6316         {
6317           ThrowException(exception,CorruptImageError,InsufficientImageDataInFile,image->filename);
6318           return MagickFail;
6319         }
6320       if (dcm->length > ((~0UL)/dcm->quantum))
6321         {
6322           ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
6323           return MagickFail;
6324         }
6325       dcm->data=MagickAllocateResourceLimitedArray(unsigned char *,(dcm->length+1),dcm->quantum);
6326       if (dcm->data == (unsigned char *) NULL)
6327         {
6328           ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
6329           return MagickFail;
6330         }
6331       size=MagickArraySize(dcm->quantum,dcm->length);
6332       if (size == 0)
6333         {
6334           ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
6335           return MagickFail;
6336         }
6337       if (ReadBlob(image,size,(char *) dcm->data) != size)
6338         {
6339           ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6340           return MagickFail;
6341         }
6342       dcm->data[size]=0;
6343     }
6344 
6345   if (dcm->verbose)
6346     {
6347       /*
6348         Display data
6349       */
6350       if (dcm->data == (unsigned char *) NULL)
6351         {
6352           (void) fprintf(stdout,"%d\n",dcm->datum);
6353         }
6354       else
6355         {
6356           for (i=0; i < (long) Max(dcm->length,4); i++)
6357             if (!isprint(dcm->data[i]))
6358               break;
6359           if ((i != (long) dcm->length) && (dcm->length <= 4))
6360             {
6361               long
6362                 j,
6363                 bin_datum;
6364 
6365               bin_datum=0;
6366               for (j=(long) dcm->length-1; j >= 0; j--)
6367                 bin_datum=256*bin_datum+dcm->data[j];
6368               (void) fprintf(stdout,"%lu\n",bin_datum);
6369             }
6370           else
6371             {
6372               for (i=0; i < (long) dcm->length; i++)
6373                 if (isprint(dcm->data[i]))
6374                   (void) fprintf(stdout,"%c",dcm->data[i]);
6375                 else
6376                   (void) fprintf(stdout,"%c",'.');
6377               (void) fprintf(stdout,"\n");
6378             }
6379         }
6380     }
6381   return MagickPass;
6382 }
6383 
DCM_SetupColormap(Image * image,DicomStream * dcm,ExceptionInfo * exception)6384 static MagickPassFail DCM_SetupColormap(Image *image,DicomStream *dcm,ExceptionInfo *exception)
6385 {
6386   if ((image->previous) && (image->previous->colormap != (PixelPacket*)NULL))
6387     {
6388       size_t
6389         length;
6390 
6391       /*
6392         Clone colormap from previous image
6393       */
6394       image->storage_class=PseudoClass;
6395       image->colors=image->previous->colors;
6396       length=image->colors*sizeof(PixelPacket);
6397       image->colormap=MagickAllocateMemory(PixelPacket *,length);
6398       if (image->colormap == (PixelPacket *) NULL)
6399         {
6400           ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
6401           return MagickFail;
6402         }
6403       (void) memcpy(image->colormap,image->previous->colormap,length);
6404     }
6405   else
6406     {
6407       /*
6408         Create new colormap
6409       */
6410       if (AllocateImageColormap(image,dcm->max_value_out+1) == MagickFail)
6411         {
6412           ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
6413           return MagickFail;
6414         }
6415     }
6416   return MagickPass;
6417 }
6418 
DCM_SetupRescaleMap(Image * image,DicomStream * dcm,ExceptionInfo * exception)6419 static MagickPassFail DCM_SetupRescaleMap(Image *image,DicomStream *dcm,ExceptionInfo *exception)
6420 {
6421   /*
6422     rescale_map maps input sample range -> output colormap range combining rescale
6423     and window transforms, palette scaling and palette inversion (for MONOCHROME1)
6424     as well as allowing for pixel_representation of 1 which causes input samples to
6425     be treated as signed
6426   */
6427   double
6428     win_center,
6429     win_width,
6430     Xr,
6431     Xw_min,
6432     Xw_max;
6433 
6434   unsigned int
6435     i;
6436 
6437   if (dcm->rescaling == DCM_RS_NONE)
6438     return MagickPass;
6439 
6440   if (image->logging)
6441     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
6442                           "Set up rescale map for input range of %u"
6443                           " (%u entries)...",
6444                           dcm->max_value_in+1,MaxMap+1);
6445 
6446   /*
6447     The rescale map must be limited to MaxMap+1 entries, which is 256
6448     or 65536, depending on QuantumDepth.  Using a QuantumDepth less
6449     than 16 for DICOM is a bad idea.
6450 
6451     The dcm->significant_bits value is limited to 16 (larger values
6452     are outright rejected) so dcm->max_value_in and dcm->max_value_out
6453     are limited to 65535.
6454   */
6455 
6456   if (dcm->rescale_map == (Quantum *) NULL)
6457     {
6458       size_t num_entries = Max((size_t) MaxMap+1,(size_t) dcm->max_value_in+1);
6459       dcm->rescale_map=MagickAllocateResourceLimitedArray(Quantum *,num_entries,sizeof(Quantum));
6460       if (dcm->rescale_map == NULL)
6461         {
6462           ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
6463           return MagickFail;
6464         }
6465       (void) memset(dcm->rescale_map,0,num_entries*sizeof(Quantum));
6466     }
6467 
6468   if (dcm->window_width == 0)
6469     { /* zero window width */
6470       if (dcm->upper_lim > dcm->lower_lim)
6471         {
6472           /* Use known range within image */
6473           win_width=((double) dcm->upper_lim-dcm->lower_lim+1)*dcm->rescale_slope;
6474           win_center=(((double) dcm->upper_lim+dcm->lower_lim)/2.0)*dcm->rescale_slope+dcm->rescale_intercept;
6475         }
6476       else
6477         {
6478           /* Use full sample range and hope for the best */
6479           win_width=((double) dcm->max_value_in+1)*dcm->rescale_slope;
6480           if (dcm->pixel_representation == 1)
6481             win_center=dcm->rescale_intercept;
6482           else
6483             win_center=win_width/2 + dcm->rescale_intercept;
6484         }
6485     }
6486   else
6487     {
6488       win_width=dcm->window_width;
6489       win_center=dcm->window_center;
6490     }
6491   Xw_min = win_center - 0.5 - ((win_width-1)/2);
6492   Xw_max = win_center - 0.5 + ((win_width-1)/2);
6493   for (i=0; i < (dcm->max_value_in+1); i++)
6494     {
6495       if ((dcm->pixel_representation == 1) && (i >= MaxValueGivenBits(dcm->significant_bits)))
6496         Xr = -(((double) dcm->max_value_in+1-i) * dcm->rescale_slope) + dcm->rescale_intercept;
6497       else
6498         Xr = (i * dcm->rescale_slope) + dcm->rescale_intercept;
6499       if (Xr <= Xw_min)
6500         dcm->rescale_map[i]=0;
6501       else if (Xr >= Xw_max)
6502         dcm->rescale_map[i]=dcm->max_value_out;
6503       else
6504         dcm->rescale_map[i]=(Quantum)(((Xr-Xw_min)/(win_width-1))*dcm->max_value_out+0.5);
6505     }
6506   if (dcm->phot_interp == DCM_PI_MONOCHROME1)
6507     for (i=0; i <= dcm->max_value_in; i++)
6508       dcm->rescale_map[i]=dcm->max_value_out-dcm->rescale_map[i];
6509 
6510   return MagickPass;
6511 }
6512 
DCM_SetRescaling(DicomStream * dcm,int avoid_scaling)6513 void DCM_SetRescaling(DicomStream *dcm,int avoid_scaling)
6514 {
6515   /*
6516     If avoid_scaling is True then scaling will only be applied where necessary ie
6517     input bit depth exceeds quantum size.
6518 
6519     ### TODO : Should this throw an error rather than setting DCM_RS_PRE?
6520   */
6521   dcm->rescaling=DCM_RS_NONE;
6522   dcm->max_value_out=dcm->max_value_in;
6523 
6524   if (dcm->phot_interp == DCM_PI_PALETTE_COLOR)
6525     {
6526       if (dcm->max_value_in >= MaxColormapSize)
6527         {
6528           dcm->max_value_out=MaxColormapSize-1;
6529           dcm->rescaling=DCM_RS_PRE;
6530         }
6531       return;
6532     }
6533 
6534   if ((dcm->phot_interp == DCM_PI_MONOCHROME1) ||
6535       (dcm->phot_interp == DCM_PI_MONOCHROME2))
6536     {
6537       if ((dcm->transfer_syntax == DCM_TS_JPEG) ||
6538           (dcm->transfer_syntax == DCM_TS_JPEG_LS) ||
6539           (dcm->transfer_syntax == DCM_TS_JPEG_2000))
6540         {
6541           /* Encapsulated non-native grayscale images are post rescaled by default */
6542           if (!avoid_scaling)
6543             dcm->rescaling=DCM_RS_POST;
6544         }
6545 #if defined(GRAYSCALE_USES_PALETTE)
6546       else if (dcm->max_value_in >= MaxColormapSize)
6547         {
6548           dcm->max_value_out=MaxColormapSize-1;
6549           dcm->rescaling=DCM_RS_PRE;
6550         }
6551 #else
6552       else if (dcm->max_value_in > MaxRGB)
6553         {
6554           dcm->max_value_out=MaxRGB;
6555           dcm->rescaling=DCM_RS_PRE;
6556         }
6557 #endif
6558       else if (!avoid_scaling)
6559         {
6560 #if !defined(GRAYSCALE_USES_PALETTE)
6561           dcm->max_value_out=MaxRGB;
6562 #endif
6563           dcm->rescaling=DCM_RS_POST;
6564         }
6565       return;
6566     }
6567 
6568   if (avoid_scaling || (dcm->max_value_in == MaxRGB))
6569     return;
6570 
6571   dcm->max_value_out=MaxRGB;
6572   dcm->rescaling=DCM_RS_PRE;
6573 }
6574 
6575 /*
6576   FIXME: This code is totally broken since DCM_SetupRescaleMap
6577   populates dcm->rescale_map and dcm->rescale_map has
6578   dcm->max_value_in+1 entries, which has nothing to do with the number
6579   of colormap entries or the range of MaxRGB.
6580 
6581   Disabling this whole function and code invoking it until someone
6582   figures it out.
6583 */
DCM_PostRescaleImage(Image * image,DicomStream * dcm,unsigned long ScanLimits,ExceptionInfo * exception)6584 static MagickPassFail DCM_PostRescaleImage(Image *image,DicomStream *dcm,unsigned long ScanLimits,ExceptionInfo *exception)
6585 {
6586   unsigned long
6587     y,
6588     x;
6589 
6590   register PixelPacket
6591     *q;
6592 
6593   if (ScanLimits)
6594     {
6595       /*
6596         Causes rescan for upper/lower limits - used for encapsulated images
6597       */
6598       unsigned int
6599         l;
6600 
6601       for (y=0; y < image->rows; y++)
6602         {
6603           q=GetImagePixels(image,0,y,image->columns,1);
6604           if (q == (PixelPacket *) NULL)
6605             return MagickFail;
6606 
6607           if (image->storage_class == PseudoClass)
6608             {
6609               register IndexPacket
6610                 *indexes;
6611 
6612               indexes=AccessMutableIndexes(image);
6613               for (x=0; x < image->columns; x++)
6614                 {
6615                   l=indexes[x];
6616                   if (dcm->pixel_representation == 1)
6617                     if (l > ((dcm->max_value_in >> 1)))
6618                       l = dcm->max_value_in-l+1;
6619                   if (l < (unsigned int) dcm->lower_lim)
6620                     dcm->lower_lim = l;
6621                   if (l > (unsigned int) dcm->upper_lim)
6622                     dcm->upper_lim = l;
6623                 }
6624             }
6625           else
6626             {
6627               for (x=0; x < image->columns; x++)
6628                 {
6629                   l=q->green;
6630                   if (dcm->pixel_representation == 1)
6631                     if (l > (dcm->max_value_in >> 1))
6632                       l = dcm->max_value_in-l+1;
6633                   if (l < (unsigned int) dcm->lower_lim)
6634                     dcm->lower_lim = l;
6635                   if (l > (unsigned int) dcm->upper_lim)
6636                     dcm->upper_lim = l;
6637                   q++;
6638                 }
6639             }
6640         }
6641 
6642       if (image->storage_class == PseudoClass)
6643         {
6644           /* Handle compressed range by reallocating palette */
6645           if (!AllocateImageColormap(image,dcm->upper_lim+1))
6646             {
6647               ThrowException(exception,ResourceLimitError,UnableToCreateColormap,image->filename);
6648               return MagickFail;
6649             }
6650           return MagickPass;
6651         }
6652     }
6653 
6654   if (DCM_SetupRescaleMap(image,dcm,exception) == MagickFail)
6655     return MagickFail;
6656   for (y=0; y < image->rows; y++)
6657     {
6658       q=GetImagePixels(image,0,y,image->columns,1);
6659       if (q == (PixelPacket *) NULL)
6660         return MagickFail;
6661 
6662       if (image->storage_class == PseudoClass)
6663         {
6664           register IndexPacket
6665             *indexes;
6666 
6667           indexes=AccessMutableIndexes(image);
6668           for (x=0; x < image->columns; x++)
6669             indexes[x]=dcm->rescale_map[indexes[x]];
6670         }
6671       else
6672         {
6673           for (x=0; x < image->columns; x++)
6674             {
6675               q->red=dcm->rescale_map[q->red];
6676               q->green=dcm->rescale_map[q->green];
6677               q->blue=dcm->rescale_map[q->blue];
6678               q++;
6679             }
6680         }
6681       if (!SyncImagePixels(image))
6682         return MagickFail;
6683       /*
6684         if (image->previous == (Image *) NULL)
6685         if (QuantumTick(y,image->rows))
6686         if (!MagickMonitorFormatted(y,image->rows,exception,
6687         LoadImageText,image->filename))
6688         return MagickFail;
6689       */
6690     }
6691   return MagickPass;
6692 }
6693 
DCM_ReadPaletteImage(Image * image,DicomStream * dcm,ExceptionInfo * exception)6694 static MagickPassFail DCM_ReadPaletteImage(Image *image,DicomStream *dcm,ExceptionInfo *exception)
6695 {
6696   unsigned long
6697     y;
6698 
6699   register unsigned long
6700     x;
6701 
6702   register PixelPacket
6703     *q;
6704 
6705   register IndexPacket
6706     *indexes;
6707 
6708   unsigned short
6709     index;
6710 
6711   unsigned char
6712     byte;
6713 
6714   byte=0;
6715 
6716   if (image->logging)
6717     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
6718                           "Reading Palette image...");
6719 
6720   for (y=0; y < image->rows; y++)
6721     {
6722       q=SetImagePixels(image,0,y,image->columns,1);
6723       if (q == (PixelPacket *) NULL)
6724         return MagickFail;
6725       indexes=AccessMutableIndexes(image);
6726       for (x=0; x < image->columns; x++)
6727         {
6728           if (dcm->bytes_per_pixel == 1)
6729             {
6730               if (dcm->transfer_syntax == DCM_TS_RLE)
6731                 index=DCM_RLE_ReadByte(image,dcm);
6732               else
6733                 index=ReadBlobByte(image);
6734             }
6735           else
6736           if (dcm->bits_allocated != 12)
6737             {
6738               if (dcm->transfer_syntax == DCM_TS_RLE)
6739                 index=DCM_RLE_ReadShort(image,dcm);
6740               else
6741                 index=dcm->funcReadShort(image);
6742             }
6743           else
6744             {
6745               if (x & 0x01)
6746                 {
6747                   /* ### TODO - Check whether logic needs altering if msb_state != DCM_MSB_LITTLE */
6748                   if (dcm->transfer_syntax == DCM_TS_RLE)
6749                     index=DCM_RLE_ReadByte(image,dcm);
6750                   else
6751                     index=ReadBlobByte(image);
6752                   index=(index << 4) | byte;
6753                 }
6754               else
6755                 {
6756                   if (dcm->transfer_syntax == DCM_TS_RLE)
6757                     index=DCM_RLE_ReadByte(image,dcm);
6758                   else
6759                     index=dcm->funcReadShort(image);
6760                   byte=index >> 12;
6761                   index&=0xfff;
6762                 }
6763             }
6764           index&=dcm->max_value_in;
6765           if (dcm->rescaling == DCM_RS_PRE)
6766             {
6767               /*
6768                 ### TODO - must read as Direct Class so look up
6769                 red/green/blue values in palette table, processed via
6770                 rescale_map
6771               */
6772             }
6773           else
6774             {
6775 #if defined(USE_GRAYMAP)
6776               if (dcm->graymap != (unsigned short *) NULL)
6777                 index=dcm->graymap[index];
6778 #endif
6779               index=(IndexPacket) (index);
6780               VerifyColormapIndex(image,index);
6781               indexes[x]=index;
6782               *q=image->colormap[index];
6783               q++;
6784             }
6785 
6786           if (EOFBlob(image))
6787             {
6788               ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6789               return MagickFail;
6790             }
6791         }
6792       if (!SyncImagePixels(image))
6793         return MagickFail;
6794       if (image->previous == (Image *) NULL)
6795         if (QuantumTick(y,image->rows))
6796           if (!MagickMonitorFormatted(y,image->rows,exception,
6797                                       LoadImageText,image->filename,
6798                                       image->columns,image->rows))
6799             return MagickFail;
6800     }
6801   return MagickPass;
6802 }
6803 
DCM_ReadGrayscaleImage(Image * image,DicomStream * dcm,ExceptionInfo * exception)6804 static MagickPassFail DCM_ReadGrayscaleImage(Image *image,DicomStream *dcm,ExceptionInfo *exception)
6805 {
6806   unsigned long
6807     y;
6808 
6809   register unsigned long
6810     x;
6811 
6812   register PixelPacket
6813     *q;
6814 
6815 #if defined(GRAYSCALE_USES_PALETTE) /* not used */
6816   register IndexPacket
6817     *indexes;
6818 #endif
6819 
6820   unsigned short
6821     index;
6822 
6823   unsigned char
6824     byte;
6825 
6826   if (image->logging)
6827     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
6828                           "Reading Grayscale %lux%lu image...",image->columns,image->rows);
6829 
6830 #if !defined(GRAYSCALE_USES_PALETTE)
6831   /*
6832     If a palette was provided, the image may be in PseudoClass
6833   */
6834   image->storage_class=DirectClass;
6835 #endif
6836 
6837   dcm->lower_lim = dcm->max_value_in;
6838   dcm->upper_lim = -(dcm->lower_lim);
6839   byte=0;
6840   for (y=0; y < image->rows; y++)
6841     {
6842       q=SetImagePixelsEx(image,0,y,image->columns,1,exception);
6843       if (q == (PixelPacket *) NULL)
6844         return MagickFail;
6845 #if defined(GRAYSCALE_USES_PALETTE) /* not used */
6846       indexes=AccessMutableIndexes(image);
6847 #endif
6848       for (x=0; x < image->columns; x++)
6849         {
6850           if (dcm->bytes_per_pixel == 1)
6851             {
6852               if (dcm->transfer_syntax == DCM_TS_RLE)
6853                 index=DCM_RLE_ReadByte(image,dcm);
6854               else
6855                 index=ReadBlobByte(image);
6856             }
6857           else
6858           if (dcm->bits_allocated != 12)
6859             {
6860               if (dcm->transfer_syntax == DCM_TS_RLE)
6861                 index=DCM_RLE_ReadShort(image,dcm);
6862               else
6863                 index=dcm->funcReadShort(image);
6864             }
6865           else
6866             {
6867               if (x & 0x01)
6868                 {
6869                   /* ### TODO - Check whether logic needs altering if msb_state != DCM_MSB_LITTLE */
6870                   if (dcm->transfer_syntax == DCM_TS_RLE)
6871                     index=DCM_RLE_ReadByte(image,dcm);
6872                   else
6873                     index=ReadBlobByte(image);
6874                   index=(index << 4) | byte;
6875                 }
6876               else
6877                 {
6878                   if (dcm->transfer_syntax == DCM_TS_RLE)
6879                     index=DCM_RLE_ReadShort(image,dcm);
6880                   else
6881                     index=dcm->funcReadShort(image);
6882                   byte=index >> 12;
6883                   index&=0xfff;
6884                 }
6885             }
6886           index&=dcm->max_value_in;
6887           if (dcm->rescaling == DCM_RS_POST)
6888             {
6889               unsigned int
6890                 l;
6891 
6892               l = index;
6893               if (dcm->pixel_representation == 1)
6894                 if (l > (dcm->max_value_in >> 1))
6895                   l = dcm->max_value_in-l+1;
6896               if ((int) l < dcm->lower_lim)
6897                 dcm->lower_lim = l;
6898               if ((int) l > dcm->upper_lim)
6899                 dcm->upper_lim = l;
6900             }
6901 #if defined(GRAYSCALE_USES_PALETTE) /* not used */
6902           if (dcm->rescaling == DCM_RS_PRE)
6903             indexes[x]=dcm->rescale_map[index];
6904           else
6905             indexes[x]=index;
6906 #else
6907           if ((dcm->rescaling == DCM_RS_PRE) &&
6908               (dcm->rescale_map != (Quantum *) NULL))
6909             {
6910               index=dcm->rescale_map[index];
6911             }
6912           q->red=index;
6913           q->green=index;
6914           q->blue=index;
6915           q->opacity=OpaqueOpacity;
6916           q++;
6917 #endif
6918           if (EOFBlob(image))
6919             {
6920               ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
6921               return MagickFail;
6922             }
6923         }
6924       if (!SyncImagePixelsEx(image,exception))
6925         return MagickFail;
6926       if (image->previous == (Image *) NULL)
6927         if (QuantumTick(y,image->rows))
6928           if (!MagickMonitorFormatted(y,image->rows,exception,
6929                                       LoadImageText,image->filename,
6930                                       image->columns,image->rows))
6931             return MagickFail;
6932     }
6933   return MagickPass;
6934 }
6935 
DCM_ReadPlanarRGBImage(Image * image,DicomStream * dcm,ExceptionInfo * exception)6936 static MagickPassFail DCM_ReadPlanarRGBImage(Image *image,DicomStream *dcm,ExceptionInfo *exception)
6937 {
6938   unsigned long
6939     plane,
6940     y,
6941     x;
6942 
6943   register PixelPacket
6944     *q;
6945 
6946   if (image->logging)
6947     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
6948                           "Reading Planar RGB %s compressed image with %u planes...",
6949                           (dcm->transfer_syntax == DCM_TS_RLE ? "RLE" : "not"),
6950                           dcm->samples_per_pixel);
6951   /*
6952     Force image to DirectClass since we are only updating DirectClass
6953     representation.  The image may be in PseudoClass if we were
6954     previously provided with a Palette.
6955   */
6956   image->storage_class=DirectClass;
6957 
6958   for (plane=0; plane < dcm->samples_per_pixel; plane++)
6959     {
6960       if (image->logging)
6961         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
6962                               "  Plane %lu...",plane);
6963       for (y=0; y < image->rows; y++)
6964         {
6965           q=GetImagePixels(image,0,y,image->columns,1);
6966           if (q == (PixelPacket *) NULL)
6967               return MagickFail;
6968 
6969           for (x=0; x < image->columns; x++)
6970             {
6971               switch ((int) plane)
6972                 {
6973                   case 0:
6974                     if (dcm->transfer_syntax == DCM_TS_RLE)
6975                       q->red=ScaleCharToQuantum(DCM_RLE_ReadByte(image,dcm));
6976                     else
6977                       q->red=ScaleCharToQuantum(ReadBlobByte(image));
6978                     break;
6979                   case 1:
6980                     if (dcm->transfer_syntax == DCM_TS_RLE)
6981                       q->green=ScaleCharToQuantum(DCM_RLE_ReadByte(image,dcm));
6982                     else
6983                       q->green=ScaleCharToQuantum(ReadBlobByte(image));
6984                     break;
6985                   case 2:
6986                     if (dcm->transfer_syntax == DCM_TS_RLE)
6987                       q->blue=ScaleCharToQuantum(DCM_RLE_ReadByte(image,dcm));
6988                     else
6989                       q->blue=ScaleCharToQuantum(ReadBlobByte(image));
6990                     break;
6991                   case 3:
6992                     if (dcm->transfer_syntax == DCM_TS_RLE)
6993                       q->opacity=ScaleCharToQuantum((Quantum)(MaxRGB-ScaleCharToQuantum(DCM_RLE_ReadByte(image,dcm))));
6994                     else
6995                       q->opacity=ScaleCharToQuantum((Quantum)(MaxRGB-ScaleCharToQuantum(ReadBlobByte(image))));
6996                     break;
6997                 }
6998               if (EOFBlob(image))
6999                 {
7000                   ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
7001                   return MagickFail;
7002                 }
7003               q++;
7004             }
7005           if (!SyncImagePixels(image))
7006             return MagickFail;
7007           if (image->previous == (Image *) NULL)
7008             if (QuantumTick(y,image->rows))
7009               if (!MagickMonitorFormatted(y,image->rows,exception,
7010                                           LoadImageText,image->filename,
7011                                           image->columns,image->rows))
7012                 return MagickFail;
7013         }
7014     }
7015   return MagickPass;
7016 }
7017 
DCM_ReadRGBImage(Image * image,DicomStream * dcm,ExceptionInfo * exception)7018 static MagickPassFail DCM_ReadRGBImage(Image *image,DicomStream *dcm,ExceptionInfo *exception)
7019 {
7020   unsigned long
7021     y,
7022     x;
7023 
7024   register PixelPacket
7025     *q;
7026 
7027   Quantum
7028     blue,
7029     green,
7030     red;
7031 
7032   red=0;
7033   green=0;
7034   blue=0;
7035 
7036   if (image->logging)
7037     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7038                           "Reading RGB image...");
7039 
7040   /*
7041     Force image to DirectClass since we are only updating DirectClass
7042     representation.  The image may be in PseudoClass if we were
7043     previously provided with a Palette.
7044   */
7045   image->storage_class=DirectClass;
7046 
7047   for (y=0; y < image->rows; y++)
7048     {
7049       q=GetImagePixels(image,0,y,image->columns,1);
7050       if (q == (PixelPacket *) NULL)
7051         return MagickFail;
7052 
7053       for (x=0; x < image->columns; x++)
7054         {
7055           if (dcm->bytes_per_pixel == 1)
7056             {
7057               if (dcm->transfer_syntax == DCM_TS_RLE)
7058                 {
7059                   red=DCM_RLE_ReadByte(image,dcm);
7060                   green=DCM_RLE_ReadByte(image,dcm);
7061                   blue=DCM_RLE_ReadByte(image,dcm);
7062 
7063                 }
7064               else
7065                 {
7066                   red=ReadBlobByte(image);
7067                   green=ReadBlobByte(image);
7068                   blue=ReadBlobByte(image);
7069                 }
7070             }
7071           else
7072             {
7073               if (dcm->transfer_syntax == DCM_TS_RLE)
7074                 {
7075                   red=DCM_RLE_ReadShort(image,dcm);
7076                   green=DCM_RLE_ReadShort(image,dcm);
7077                   blue=DCM_RLE_ReadShort(image,dcm);
7078                 }
7079               else
7080                 {
7081                   red=dcm->funcReadShort(image);
7082                   green=dcm->funcReadShort(image);
7083                   blue=dcm->funcReadShort(image);
7084                 }
7085             }
7086           red&=dcm->max_value_in;
7087           green&=dcm->max_value_in;
7088           blue&=dcm->max_value_in;
7089           if ((dcm->rescaling == DCM_RS_PRE) &&
7090               (dcm->rescale_map != (Quantum *) NULL))
7091             {
7092               red=dcm->rescale_map[red];
7093               green=dcm->rescale_map[green];
7094               blue=dcm->rescale_map[blue];
7095             }
7096 
7097           q->red=(Quantum) red;
7098           q->green=(Quantum) green;
7099           q->blue=(Quantum) blue;
7100           q->opacity=OpaqueOpacity;
7101           q++;
7102           if (EOFBlob(image))
7103             {
7104               ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,image->filename);
7105               return MagickFail;
7106             }
7107         }
7108       if (!SyncImagePixels(image))
7109         return MagickFail;
7110       if (image->previous == (Image *) NULL)
7111         if (QuantumTick(y,image->rows))
7112           if (!MagickMonitorFormatted(y,image->rows,exception,
7113                                       LoadImageText,image->filename,
7114                                       image->columns,image->rows))
7115             return MagickFail;
7116     }
7117   return MagickPass;
7118 }
7119 
DCM_ReadOffsetTable(Image * image,DicomStream * dcm,ExceptionInfo * exception)7120 static MagickPassFail DCM_ReadOffsetTable(Image *image,DicomStream *dcm,ExceptionInfo *exception)
7121 {
7122   magick_uint32_t
7123     base_offset,
7124     tag,
7125     length,
7126     i;
7127 
7128   tag=((magick_uint32_t) dcm->funcReadShort(image) << 16) |
7129     (magick_uint32_t) dcm->funcReadShort(image);
7130   length=dcm->funcReadLong(image);
7131   if (tag != 0xFFFEE000)
7132     return MagickFail;
7133 
7134   dcm->offset_ct=length >> 2;
7135   if (dcm->offset_ct == 0)
7136     return MagickPass;
7137 
7138   if (dcm->offset_ct != dcm->number_scenes)
7139     {
7140       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
7141       return MagickFail;
7142     }
7143 
7144   dcm->offset_arr=MagickAllocateResourceLimitedArray(magick_uint32_t *,dcm->offset_ct,sizeof(magick_uint32_t));
7145   if (dcm->offset_arr == (magick_uint32_t *) NULL)
7146     {
7147       ThrowException(exception,ResourceLimitError,MemoryAllocationFailed,image->filename);
7148       return MagickFail;
7149     }
7150 
7151   for (i=0; i < dcm->offset_ct; i++)
7152   {
7153     dcm->offset_arr[i]=dcm->funcReadLong(image);
7154     if (EOFBlob(image))
7155       return MagickFail;
7156   }
7157   base_offset=(magick_uint32_t)TellBlob(image);
7158   for (i=0; i < dcm->offset_ct; i++)
7159     dcm->offset_arr[i]+=base_offset;
7160 
7161   /*
7162      Seek first fragment of first frame if necessary (although it shouldn't be...)
7163   */
7164   if (TellBlob(image) != dcm->offset_arr[0])
7165     SeekBlob(image,dcm->offset_arr[0],SEEK_SET);
7166   return MagickPass;
7167 }
7168 
DCM_ReadNonNativeImages(Image ** image,const ImageInfo * image_info,DicomStream * dcm,ExceptionInfo * exception)7169 static MagickPassFail DCM_ReadNonNativeImages(Image **image,const ImageInfo *image_info,DicomStream *dcm,ExceptionInfo *exception)
7170 {
7171   char
7172     filename[MaxTextExtent];
7173 
7174   FILE
7175     *file;
7176 
7177   int
7178     c;
7179 
7180   Image
7181     *image_list,
7182     *next_image;
7183 
7184   ImageInfo
7185     *clone_info;
7186 
7187   magick_uint32_t
7188     scene,
7189     tag,
7190     status,
7191     length,
7192     i;
7193 
7194   image_list=(Image *)NULL;
7195 
7196   /*
7197     Read offset table
7198   */
7199   if (DCM_ReadOffsetTable(*image,dcm,exception) == MagickFail)
7200     return MagickFail;
7201 
7202   if (dcm->number_scenes == 0U)
7203     {
7204       ThrowException(exception,CorruptImageError,
7205                      ImageFileHasNoScenes,
7206                      image_info->filename);
7207       return MagickFail;
7208     }
7209 
7210   status=MagickPass;
7211   for (scene=0; scene < dcm->number_scenes; scene++)
7212     {
7213       /*
7214         Use temporary file to hold extracted data stream
7215       */
7216       file=AcquireTemporaryFileStream(filename,BinaryFileIOMode);
7217       if (file == (FILE *) NULL)
7218         {
7219           ThrowException(exception,FileOpenError,UnableToCreateTemporaryFile,filename);
7220           return MagickFail;
7221         }
7222 
7223       status=MagickPass;
7224       do
7225         {
7226           /*
7227             Read fragment tag
7228           */
7229           tag=(((magick_uint32_t) dcm->funcReadShort(*image) << 16) |
7230                (magick_uint32_t) dcm->funcReadShort(*image));
7231           length=dcm->funcReadLong(*image);
7232           if (EOFBlob(*image))
7233             {
7234               status=MagickFail;
7235               break;
7236             }
7237 
7238           if (tag == 0xFFFEE0DD)
7239             {
7240               /* Sequence delimiter tag */
7241               break;
7242             }
7243           else
7244             if (tag != 0xFFFEE000)
7245               {
7246                 status=MagickFail;
7247                 break;
7248               }
7249 
7250           /*
7251             Copy this fragment to the temporary file
7252           */
7253           while (length > 0)
7254             {
7255               c=ReadBlobByte(*image);
7256               if (c == EOF)
7257                 {
7258                   status=MagickFail;
7259                   break;
7260                 }
7261               (void) fputc(c,file);
7262               length--;
7263             }
7264 
7265           if (dcm->offset_ct == 0)
7266             {
7267               /*
7268                 Assume one fragment per frame so break loop unless we are in the last frame
7269               */
7270               if (scene < dcm->number_scenes-1)
7271                 break;
7272             }
7273           else
7274             {
7275               /* Look for end of multi-fragment frames by checking for against offset table */
7276               length=TellBlob(*image);
7277               for (i=0; i < dcm->offset_ct; i++)
7278                 if (length == dcm->offset_arr[i])
7279                   {
7280                     break;
7281                   }
7282             }
7283         } while (status == MagickPass);
7284 
7285       (void) fclose(file);
7286       if (status == MagickPass)
7287         {
7288           clone_info=CloneImageInfo(image_info);
7289           clone_info->blob=(void *) NULL;
7290           clone_info->length=0;
7291           if (dcm->transfer_syntax == DCM_TS_JPEG_2000)
7292             FormatString(clone_info->filename,"jp2:%.1024s",filename);
7293           else
7294             FormatString(clone_info->filename,"jpeg:%.1024s",filename);
7295           next_image=ReadImage(clone_info,exception);
7296           DestroyImageInfo(clone_info);
7297           if (next_image == (Image*)NULL)
7298             {
7299               status=MagickFail;
7300             }
7301           else
7302             if (dcm->rescaling == DCM_RS_POST)
7303               {
7304                 /*
7305                   ### TODO: ???
7306                   We cannot guarantee integrity of input data since libjpeg may already have
7307                   downsampled 12- or 16-bit jpegs. Best guess at the moment is to recalculate
7308                   scaling using the image depth (unless avoid-scaling is in force)
7309                 */
7310                 /* Allow for libjpeg having changed depth of image */
7311                 dcm->significant_bits=next_image->depth;
7312                 dcm->bytes_per_pixel=1;
7313                 if (dcm->significant_bits > 8)
7314                   dcm->bytes_per_pixel=2;
7315                 dcm->max_value_in=MaxValueGivenBits(dcm->significant_bits);
7316                 dcm->max_value_out=dcm->max_value_in;
7317                 status=DCM_PostRescaleImage(next_image,dcm,True,exception);
7318               }
7319           if (status == MagickPass)
7320             {
7321               strcpy(next_image->filename,(*image)->filename);
7322               next_image->scene=scene;
7323               if (image_list == (Image*)NULL)
7324                 image_list=next_image;
7325               else
7326                 AppendImageToList(&image_list,next_image);
7327             }
7328           else if (next_image != (Image *) NULL)
7329             {
7330               DestroyImage(next_image);
7331               next_image=(Image *) NULL;
7332             }
7333         }
7334       (void) LiberateTemporaryFile(filename);
7335 
7336       if (status == MagickFail)
7337         break;
7338     }
7339   if (EOFBlob(*image))
7340     {
7341       status = MagickFail;
7342       ThrowException(exception,CorruptImageError,UnexpectedEndOfFile,(*image)->filename);
7343     }
7344 
7345   if (status == MagickFail)
7346     {
7347       DestroyImageList(image_list);
7348       image_list = (Image *) NULL;
7349     }
7350   else
7351     {
7352       DestroyImage(*image);
7353       *image=image_list;
7354     }
7355   return status;
7356 }
7357 
7358 /*
7359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7360 %                                                                             %
7361 %                                                                             %
7362 %                                                                             %
7363 %   R e a d D C M I m a g e                                                   %
7364 %                                                                             %
7365 %                                                                             %
7366 %                                                                             %
7367 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7368 %
7369 %  Method ReadDCMImage reads a Digital Imaging and Communications in Medicine
7370 %  (DICOM) file and returns it.  It It allocates the memory necessary for the
7371 %  new Image structure and returns a pointer to the new image.
7372 %
7373 %  The format of the ReadDCMImage method is:
7374 %
7375 %      Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception)
7376 %
7377 %  A description of each parameter follows:
7378 %
7379 %    o image:  Method ReadDCMImage returns a pointer to the image after
7380 %      reading.  A null image is returned if there is a memory shortage or
7381 %      if the image cannot be read.
7382 %
7383 %    o image_info: Specifies a pointer to a ImageInfo structure.
7384 %
7385 %    o exception: return any errors or warnings in this structure.
7386 %
7387 %
7388 */
7389 #define ThrowDCMReaderException(code_,reason_,image_)   \
7390   {                                                     \
7391     DCM_DestroyDCM(&dcm);                               \
7392     ThrowReaderException(code_,reason_,image_);         \
7393 }
ReadDCMImage(const ImageInfo * image_info,ExceptionInfo * exception)7394 static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception)
7395 {
7396   char
7397     magick[MaxTextExtent];
7398 
7399   Image
7400     *image;
7401 
7402   int
7403     scene;
7404 
7405   size_t
7406     count;
7407 
7408   unsigned long
7409     status;
7410 
7411   DicomStream
7412     dcm;
7413 
7414   /*
7415     Open image file
7416   */
7417   assert(image_info != (const ImageInfo *) NULL);
7418   assert(image_info->signature == MagickSignature);
7419   assert(exception != (ExceptionInfo *) NULL);
7420   assert(exception->signature == MagickSignature);
7421   (void) DCM_InitDCM(&dcm,image_info->verbose);
7422   image=AllocateImage(image_info);
7423   status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception);
7424   if (status == MagickFail)
7425     ThrowDCMReaderException(FileOpenError,UnableToOpenFile,image);
7426 
7427   /*
7428     Read DCM preamble
7429   */
7430   if ((count=ReadBlob(image,128,(char *) magick)) != 128)
7431     ThrowDCMReaderException(CorruptImageError,UnexpectedEndOfFile,image);
7432   if ((count=ReadBlob(image,4,(char *) magick)) != 4)
7433     ThrowDCMReaderException(CorruptImageError,UnexpectedEndOfFile,image);
7434   if (image->logging)
7435     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7436                           "magick: \"%.4s\"",magick);
7437   if (LocaleNCompare((char *) magick,"DICM",4) != 0)
7438     (void) SeekBlob(image,0L,SEEK_SET);
7439 
7440   /*
7441     Loop to read DCM image header one element at a time
7442   */
7443   status=DCM_ReadElement(image,&dcm,exception);
7444   while ((status == MagickPass) && ((dcm.group != 0x7FE0) || (dcm.element != 0x0010)))
7445     {
7446       DicomElemParseFunc
7447         *pfunc;
7448 
7449       pfunc=parse_funcs[dicom_info[dcm.index].funce];
7450       if (pfunc != (DicomElemParseFunc *)NULL)
7451         status=pfunc(image,&dcm,exception);
7452       MagickFreeResourceLimitedMemory(dcm.data);
7453       dcm.data = NULL;
7454       dcm.length = 0;
7455       if (status == MagickPass)
7456         status=DCM_ReadElement(image,&dcm,exception);
7457     }
7458   if (status == MagickFail)
7459     goto dcm_read_failure;
7460 #if defined(IGNORE_WINDOW_FOR_UNSPECIFIED_SCALE_TYPE)
7461   if (dcm.rescale_type == DCM_RT_UNSPECIFIED)
7462     {
7463       dcm.window_width=0;
7464       dcm.rescale_slope=1;
7465       dcm.rescale_intercept=0;
7466     }
7467 #endif
7468   DCM_SetRescaling(&dcm,(AccessDefinition(image_info,"dcm","avoid-scaling") != NULL));
7469   /*
7470     Now process the image data
7471   */
7472   if ((dcm.columns == 0) || (dcm.rows == 0))
7473     {
7474       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
7475       status=MagickFail;
7476     }
7477   else if ((dcm.samples_per_pixel == 0) || (dcm.samples_per_pixel > 4))
7478     {
7479       ThrowException(exception,CorruptImageError,ImproperImageHeader,image->filename);
7480       status=MagickFail;
7481     }
7482   else if ((dcm.transfer_syntax != DCM_TS_IMPL_LITTLE) &&
7483            (dcm.transfer_syntax != DCM_TS_EXPL_LITTLE) &&
7484            (dcm.transfer_syntax != DCM_TS_EXPL_BIG) &&
7485            (dcm.transfer_syntax != DCM_TS_RLE))
7486     {
7487       status=DCM_ReadNonNativeImages(&image,image_info,&dcm,exception);
7488       dcm.number_scenes=0;
7489     }
7490   else if (dcm.rescaling != DCM_RS_POST)
7491     {
7492       status=DCM_SetupRescaleMap(image,&dcm,exception);
7493     }
7494 
7495   if (status == MagickFail)
7496     goto dcm_read_failure;
7497 
7498   if (dcm.transfer_syntax == DCM_TS_RLE)
7499     status=DCM_ReadOffsetTable(image,&dcm,exception);
7500 
7501   /* Loop to process all scenes in image */
7502   if (image->logging)
7503     (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7504                           "DICOM has %d scenes", dcm.number_scenes);
7505   if (status == MagickFail)
7506     goto dcm_read_failure;
7507 
7508   for (scene=0; scene < (long) dcm.number_scenes; scene++)
7509     {
7510       if (dcm.transfer_syntax == DCM_TS_RLE)
7511         {
7512           magick_uint32_t
7513             tag,
7514             length;
7515 
7516           /*
7517             Discard any remaining bytes from last fragment
7518           */
7519           if (dcm.frag_bytes)
7520             SeekBlob(image,dcm.frag_bytes,SEEK_CUR);
7521 
7522           /*
7523             Read fragment tag
7524           */
7525           tag=(((magick_uint32_t) dcm.funcReadShort(image)) << 16) |
7526             (magick_uint32_t) dcm.funcReadShort(image);
7527           length=dcm.funcReadLong(image);
7528           if ((tag != 0xFFFEE000) || (length <= 64) || EOFBlob(image))
7529             {
7530               status=MagickFail;
7531               ThrowDCMReaderException(CorruptImageError,UnexpectedEndOfFile,image);
7532               break;
7533             }
7534 
7535           /*
7536             Set up decompression state
7537           */
7538           dcm.frag_bytes=length;
7539           dcm.rle_rep_ct=0;
7540 
7541           /*
7542             Read RLE segment table
7543           */
7544           dcm.rle_seg_ct=dcm.funcReadLong(image);
7545           for (length=0; length < 15; length++)
7546             dcm.rle_seg_offsets[length]=dcm.funcReadLong(image);
7547           dcm.frag_bytes-=64;
7548           if (EOFBlob(image))
7549             {
7550               status=MagickFail;
7551               ThrowDCMReaderException(CorruptImageError,UnexpectedEndOfFile,image);
7552               break;
7553             }
7554           if (dcm.rle_seg_ct > 1)
7555             {
7556               fprintf(stdout,"Multiple RLE segments in frame are not supported\n");
7557               status=MagickFail;
7558               break;
7559             }
7560         }
7561 
7562       /*
7563         Initialize image structure.
7564       */
7565       image->columns=dcm.columns;
7566       image->rows=dcm.rows;
7567       image->interlace=(dcm.interlace==1)?PlaneInterlace:NoInterlace;
7568       if (image->logging)
7569         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7570                               "Scene[%d]: %lux%lu", scene, image->columns, image->rows);
7571 #if defined(GRAYSCALE_USES_PALETTE)
7572       if ((image->colormap == (PixelPacket *) NULL) && (dcm.samples_per_pixel == 1))
7573 #else
7574         if ((image->colormap == (PixelPacket *) NULL) && (dcm.phot_interp == DCM_PI_PALETTE_COLOR))
7575 #endif
7576           {
7577             status=DCM_SetupColormap(image,&dcm,exception);
7578             if (status == MagickFail)
7579               break;
7580           }
7581       if (image_info->ping)
7582         break;
7583 
7584       if (CheckImagePixelLimits(image, exception) != MagickPass)
7585         ThrowDCMReaderException(ResourceLimitError,ImagePixelLimitExceeded,image);
7586 
7587       /*
7588         Process image according to type
7589       */
7590       if (dcm.samples_per_pixel == 1)
7591         {
7592           if (dcm.phot_interp == DCM_PI_PALETTE_COLOR)
7593             status=DCM_ReadPaletteImage(image,&dcm,exception);
7594           else
7595             status=DCM_ReadGrayscaleImage(image,&dcm,exception);
7596         }
7597       else
7598         {
7599           if (image->interlace == PlaneInterlace)
7600             status=DCM_ReadPlanarRGBImage(image,&dcm,exception);
7601           else
7602             status=DCM_ReadRGBImage(image,&dcm,exception);
7603         }
7604       if (status != MagickPass)
7605         break;
7606 
7607       if ((dcm.rescaling == DCM_RS_PRE) &&
7608           ((dcm.phot_interp == DCM_PI_MONOCHROME1) ||
7609            (dcm.phot_interp == DCM_PI_MONOCHROME2)))
7610         {
7611           if (image->logging)
7612             (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7613                                   "Normalizing image channels...");
7614           NormalizeImage(image);
7615         }
7616       else
7617         {
7618           if (dcm.rescaling == DCM_RS_POST)
7619             {
7620               if (image->logging)
7621                 (void) LogMagickEvent(CoderEvent,GetMagickModule(),
7622                                       "Rescaling image channels...");
7623               status = DCM_PostRescaleImage(image,&dcm,False,exception);
7624               if (status != MagickPass)
7625                 break;
7626             }
7627         }
7628       StopTimer(&image->timer);
7629 
7630       /*
7631         Proceed to next image.
7632       */
7633       if (image_info->subrange != 0)
7634         if (image->scene >= (image_info->subimage+image_info->subrange-1))
7635           break;
7636       if (scene < (long) (dcm.number_scenes-1))
7637         {
7638           /*
7639             Allocate next image structure.
7640           */
7641           AllocateNextImage(image_info,image);
7642           if (image->next == (Image *) NULL)
7643             {
7644               status=MagickFail;
7645               break;
7646             }
7647           image=SyncNextImageInList(image);
7648           status=MagickMonitorFormatted(TellBlob(image),GetBlobSize(image),
7649                                         exception,LoadImagesText,
7650                                         image->filename);
7651           if (status == MagickFail)
7652             break;
7653         }
7654     }
7655 
7656   /*
7657     Free allocated resources
7658   */
7659  dcm_read_failure:
7660   DCM_DestroyDCM(&dcm);
7661   if (status == MagickPass)
7662     {
7663       /* It is possible to have success status yet have no image */
7664       if (image != (Image *) NULL)
7665         {
7666           while (image->previous != (Image *) NULL)
7667             image=image->previous;
7668           CloseBlob(image);
7669           return(image);
7670         }
7671       else
7672         {
7673           ThrowException(exception,CorruptImageError,
7674                          ImageFileDoesNotContainAnyImageData,
7675                          image_info->filename);
7676           return (Image *) NULL;
7677         }
7678     }
7679   else
7680     {
7681       DestroyImageList(image);
7682       return((Image *) NULL);
7683     }
7684 }
7685 
7686 /*
7687 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7688 %                                                                             %
7689 %                                                                             %
7690 %                                                                             %
7691 %   R e g i s t e r D C M I m a g e                                           %
7692 %                                                                             %
7693 %                                                                             %
7694 %                                                                             %
7695 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7696 %
7697 %  Method RegisterDCMImage adds attributes for the DCM image format to
7698 %  the list of supported formats.  The attributes include the image format
7699 %  tag, a method to read and/or write the format, whether the format
7700 %  supports the saving of more than one frame to the same file or blob,
7701 %  whether the format supports native in-memory I/O, and a brief
7702 %  description of the format.
7703 %
7704 %  The format of the RegisterDCMImage method is:
7705 %
7706 %      RegisterDCMImage(void)
7707 %
7708 */
RegisterDCMImage(void)7709 ModuleExport void RegisterDCMImage(void)
7710 {
7711   MagickInfo
7712     *entry;
7713 
7714   entry=SetMagickInfo("DCM");
7715   entry->decoder=(DecoderHandler) ReadDCMImage;
7716   entry->magick=(MagickHandler) IsDCM;
7717   entry->adjoin=False;
7718   entry->seekable_stream=True;
7719   entry->description="Digital Imaging and Communications in Medicine image";
7720   entry->note="See http://medical.nema.org/ for information on DICOM.";
7721   entry->module="DCM";
7722   (void) RegisterMagickInfo(entry);
7723 }
7724 
7725 /*
7726 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7727 %                                                                             %
7728 %                                                                             %
7729 %                                                                             %
7730 %   U n r e g i s t e r D C M I m a g e                                       %
7731 %                                                                             %
7732 %                                                                             %
7733 %                                                                             %
7734 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7735 %
7736 %  Method UnregisterDCMImage removes format registrations made by the
7737 %  DCM module from the list of supported formats.
7738 %
7739 %  The format of the UnregisterDCMImage method is:
7740 %
7741 %      UnregisterDCMImage(void)
7742 %
7743 */
UnregisterDCMImage(void)7744 ModuleExport void UnregisterDCMImage(void)
7745 {
7746   (void) UnregisterMagickInfo("DCM");
7747 }
7748 /*
7749    ### TODO :
7750    #1 Fixes on palette support:
7751                 - Handle palette images where # of entries > MaxColormapSize - create image
7752                   as Direct class, store the original palette (scaled to MaxRGB) and then map
7753                   input values via modified palette to output RGB values.
7754         - Honour palette/LUT descriptors (ie values <= min value map to first
7755                   entry, value = (min_value + 1) maps to second entry, and so on, whilst
7756                   values >= (min value + palette/LUT size) map to last entry.
7757    #2 Use ImportImagePixelArea?
7758    #3 Handling of encapsulated JPEGs which downsample to 8 bit via
7759       libjpeg. These lose accuracy before we can rescale to handle the
7760           issues of PR=1 + window center/width + rescale slope/intercept on
7761           MONOCHROME1 or 2. Worst case : CT-MONO2-16-chest. Currently images
7762           are post-rescaled based on sample range. For PseudoClass grayscales
7763           this is done by colormap manipulation only.
7764    #4 JPEG/JPEG-LS/JPEG 2000: Check that multi frame handling in DCM_ReadEncapImages
7765       is ok
7766    #5 Support LUTs?
7767    #6 Pixel Padding value/range - make transparent or allow use to specify a color?
7768 */
7769