1 /* 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % % 4 % % 5 % % 6 % DDDD CCCC M M % 7 % D D C MM MM % 8 % D D C M M M % 9 % D D C M M % 10 % DDDD CCCC M M % 11 % % 12 % % 13 % Read DICOM Image Format % 14 % % 15 % Software Design % 16 % Cristy % 17 % July 1992 % 18 % % 19 % % 20 % Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization % 21 % dedicated to making software imaging solutions freely available. % 22 % % 23 % You may not use this file except in compliance with the License. You may % 24 % obtain a copy of the License at % 25 % % 26 % http://www.imagemagick.org/script/license.php % 27 % % 28 % Unless required by applicable law or agreed to in writing, software % 29 % distributed under the License is distributed on an "AS IS" BASIS, % 30 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % 31 % See the License for the specific language governing permissions and % 32 % limitations under the License. % 33 % % 34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35 % 36 % 37 */ 38 39 /* 41 Include declarations. 42 */ 43 #include "MagickCore/studio.h" 44 #include "MagickCore/artifact.h" 45 #include "MagickCore/attribute.h" 46 #include "MagickCore/blob.h" 47 #include "MagickCore/blob-private.h" 48 #include "MagickCore/cache.h" 49 #include "MagickCore/color.h" 50 #include "MagickCore/color-private.h" 51 #include "MagickCore/colormap.h" 52 #include "MagickCore/colormap-private.h" 53 #include "MagickCore/constitute.h" 54 #include "MagickCore/enhance.h" 55 #include "MagickCore/exception.h" 56 #include "MagickCore/exception-private.h" 57 #include "MagickCore/image.h" 58 #include "MagickCore/image-private.h" 59 #include "MagickCore/list.h" 60 #include "MagickCore/magick.h" 61 #include "MagickCore/memory_.h" 62 #include "MagickCore/monitor.h" 63 #include "MagickCore/monitor-private.h" 64 #include "MagickCore/option.h" 65 #include "MagickCore/pixel-accessor.h" 66 #include "MagickCore/property.h" 67 #include "MagickCore/resource_.h" 68 #include "MagickCore/quantum-private.h" 69 #include "MagickCore/static.h" 70 #include "MagickCore/string_.h" 71 #include "MagickCore/string-private.h" 72 #include "MagickCore/module.h" 73 74 /* 76 Dicom medical image declarations. 77 */ 78 79 typedef struct _DicomInfo 80 { 81 const unsigned short 82 group, 83 element; 84 85 const char 86 *vr, 87 *description; 88 } DicomInfo; 89 90 static const DicomInfo 91 dicom_info[] = 92 { 93 { 0x0000, 0x0000, "UL", "Group Length" }, 94 { 0x0000, 0x0001, "UL", "Command Length to End" }, 95 { 0x0000, 0x0002, "UI", "Affected SOP Class UID" }, 96 { 0x0000, 0x0003, "UI", "Requested SOP Class UID" }, 97 { 0x0000, 0x0010, "LO", "Command Recognition Code" }, 98 { 0x0000, 0x0100, "US", "Command Field" }, 99 { 0x0000, 0x0110, "US", "Message ID" }, 100 { 0x0000, 0x0120, "US", "Message ID Being Responded To" }, 101 { 0x0000, 0x0200, "AE", "Initiator" }, 102 { 0x0000, 0x0300, "AE", "Receiver" }, 103 { 0x0000, 0x0400, "AE", "Find Location" }, 104 { 0x0000, 0x0600, "AE", "Move Destination" }, 105 { 0x0000, 0x0700, "US", "Priority" }, 106 { 0x0000, 0x0800, "US", "Data Set Type" }, 107 { 0x0000, 0x0850, "US", "Number of Matches" }, 108 { 0x0000, 0x0860, "US", "Response Sequence Number" }, 109 { 0x0000, 0x0900, "US", "Status" }, 110 { 0x0000, 0x0901, "AT", "Offending Element" }, 111 { 0x0000, 0x0902, "LO", "Exception Comment" }, 112 { 0x0000, 0x0903, "US", "Exception ID" }, 113 { 0x0000, 0x1000, "UI", "Affected SOP Instance UID" }, 114 { 0x0000, 0x1001, "UI", "Requested SOP Instance UID" }, 115 { 0x0000, 0x1002, "US", "Event Type ID" }, 116 { 0x0000, 0x1005, "AT", "Attribute Identifier List" }, 117 { 0x0000, 0x1008, "US", "Action Type ID" }, 118 { 0x0000, 0x1020, "US", "Number of Remaining Suboperations" }, 119 { 0x0000, 0x1021, "US", "Number of Completed Suboperations" }, 120 { 0x0000, 0x1022, "US", "Number of Failed Suboperations" }, 121 { 0x0000, 0x1023, "US", "Number of Warning Suboperations" }, 122 { 0x0000, 0x1030, "AE", "Move Originator Application Entity Title" }, 123 { 0x0000, 0x1031, "US", "Move Originator Message ID" }, 124 { 0x0000, 0x4000, "LO", "Dialog Receiver" }, 125 { 0x0000, 0x4010, "LO", "Terminal Type" }, 126 { 0x0000, 0x5010, "SH", "Message Set ID" }, 127 { 0x0000, 0x5020, "SH", "End Message Set" }, 128 { 0x0000, 0x5110, "LO", "Display Format" }, 129 { 0x0000, 0x5120, "LO", "Page Position ID" }, 130 { 0x0000, 0x5130, "LO", "Text Format ID" }, 131 { 0x0000, 0x5140, "LO", "Normal Reverse" }, 132 { 0x0000, 0x5150, "LO", "Add Gray Scale" }, 133 { 0x0000, 0x5160, "LO", "Borders" }, 134 { 0x0000, 0x5170, "IS", "Copies" }, 135 { 0x0000, 0x5180, "LO", "OldMagnificationType" }, 136 { 0x0000, 0x5190, "LO", "Erase" }, 137 { 0x0000, 0x51a0, "LO", "Print" }, 138 { 0x0000, 0x51b0, "US", "Overlays" }, 139 { 0x0002, 0x0000, "UL", "Meta Element Group Length" }, 140 { 0x0002, 0x0001, "OB", "File Meta Information Version" }, 141 { 0x0002, 0x0002, "UI", "Media Storage SOP Class UID" }, 142 { 0x0002, 0x0003, "UI", "Media Storage SOP Instance UID" }, 143 { 0x0002, 0x0010, "UI", "Transfer Syntax UID" }, 144 { 0x0002, 0x0012, "UI", "Implementation Class UID" }, 145 { 0x0002, 0x0013, "SH", "Implementation Version Name" }, 146 { 0x0002, 0x0016, "AE", "Source Application Entity Title" }, 147 { 0x0002, 0x0100, "UI", "Private Information Creator UID" }, 148 { 0x0002, 0x0102, "OB", "Private Information" }, 149 { 0x0003, 0x0000, "US", "?" }, 150 { 0x0003, 0x0008, "US", "ISI Command Field" }, 151 { 0x0003, 0x0011, "US", "Attach ID Application Code" }, 152 { 0x0003, 0x0012, "UL", "Attach ID Message Count" }, 153 { 0x0003, 0x0013, "DA", "Attach ID Date" }, 154 { 0x0003, 0x0014, "TM", "Attach ID Time" }, 155 { 0x0003, 0x0020, "US", "Message Type" }, 156 { 0x0003, 0x0030, "DA", "Max Waiting Date" }, 157 { 0x0003, 0x0031, "TM", "Max Waiting Time" }, 158 { 0x0004, 0x0000, "UL", "File Set Group Length" }, 159 { 0x0004, 0x1130, "CS", "File Set ID" }, 160 { 0x0004, 0x1141, "CS", "File Set Descriptor File ID" }, 161 { 0x0004, 0x1142, "CS", "File Set Descriptor File Specific Character Set" }, 162 { 0x0004, 0x1200, "UL", "Root Directory Entity First Directory Record Offset" }, 163 { 0x0004, 0x1202, "UL", "Root Directory Entity Last Directory Record Offset" }, 164 { 0x0004, 0x1212, "US", "File Set Consistency Flag" }, 165 { 0x0004, 0x1220, "SQ", "Directory Record Sequence" }, 166 { 0x0004, 0x1400, "UL", "Next Directory Record Offset" }, 167 { 0x0004, 0x1410, "US", "Record In Use Flag" }, 168 { 0x0004, 0x1420, "UL", "Referenced Lower Level Directory Entity Offset" }, 169 { 0x0004, 0x1430, "CS", "Directory Record Type" }, 170 { 0x0004, 0x1432, "UI", "Private Record UID" }, 171 { 0x0004, 0x1500, "CS", "Referenced File ID" }, 172 { 0x0004, 0x1504, "UL", "MRDR Directory Record Offset" }, 173 { 0x0004, 0x1510, "UI", "Referenced SOP Class UID In File" }, 174 { 0x0004, 0x1511, "UI", "Referenced SOP Instance UID In File" }, 175 { 0x0004, 0x1512, "UI", "Referenced Transfer Syntax UID In File" }, 176 { 0x0004, 0x1600, "UL", "Number of References" }, 177 { 0x0005, 0x0000, "US", "?" }, 178 { 0x0006, 0x0000, "US", "?" }, 179 { 0x0008, 0x0000, "UL", "Identifying Group Length" }, 180 { 0x0008, 0x0001, "UL", "Length to End" }, 181 { 0x0008, 0x0005, "CS", "Specific Character Set" }, 182 { 0x0008, 0x0008, "CS", "Image Type" }, 183 { 0x0008, 0x0010, "LO", "Recognition Code" }, 184 { 0x0008, 0x0012, "DA", "Instance Creation Date" }, 185 { 0x0008, 0x0013, "TM", "Instance Creation Time" }, 186 { 0x0008, 0x0014, "UI", "Instance Creator UID" }, 187 { 0x0008, 0x0016, "UI", "SOP Class UID" }, 188 { 0x0008, 0x0018, "UI", "SOP Instance UID" }, 189 { 0x0008, 0x0020, "DA", "Study Date" }, 190 { 0x0008, 0x0021, "DA", "Series Date" }, 191 { 0x0008, 0x0022, "DA", "Acquisition Date" }, 192 { 0x0008, 0x0023, "DA", "Image Date" }, 193 { 0x0008, 0x0024, "DA", "Overlay Date" }, 194 { 0x0008, 0x0025, "DA", "Curve Date" }, 195 { 0x0008, 0x0030, "TM", "Study Time" }, 196 { 0x0008, 0x0031, "TM", "Series Time" }, 197 { 0x0008, 0x0032, "TM", "Acquisition Time" }, 198 { 0x0008, 0x0033, "TM", "Image Time" }, 199 { 0x0008, 0x0034, "TM", "Overlay Time" }, 200 { 0x0008, 0x0035, "TM", "Curve Time" }, 201 { 0x0008, 0x0040, "xs", "Old Data Set Type" }, 202 { 0x0008, 0x0041, "xs", "Old Data Set Subtype" }, 203 { 0x0008, 0x0042, "CS", "Nuclear Medicine Series Type" }, 204 { 0x0008, 0x0050, "SH", "Accession Number" }, 205 { 0x0008, 0x0052, "CS", "Query/Retrieve Level" }, 206 { 0x0008, 0x0054, "AE", "Retrieve AE Title" }, 207 { 0x0008, 0x0058, "UI", "Failed SOP Instance UID List" }, 208 { 0x0008, 0x0060, "CS", "Modality" }, 209 { 0x0008, 0x0062, "SQ", "Modality Subtype" }, 210 { 0x0008, 0x0064, "CS", "Conversion Type" }, 211 { 0x0008, 0x0068, "CS", "Presentation Intent Type" }, 212 { 0x0008, 0x0070, "LO", "Manufacturer" }, 213 { 0x0008, 0x0080, "LO", "Institution Name" }, 214 { 0x0008, 0x0081, "ST", "Institution Address" }, 215 { 0x0008, 0x0082, "SQ", "Institution Code Sequence" }, 216 { 0x0008, 0x0090, "PN", "Referring Physician's Name" }, 217 { 0x0008, 0x0092, "ST", "Referring Physician's Address" }, 218 { 0x0008, 0x0094, "SH", "Referring Physician's Telephone Numbers" }, 219 { 0x0008, 0x0100, "SH", "Code Value" }, 220 { 0x0008, 0x0102, "SH", "Coding Scheme Designator" }, 221 { 0x0008, 0x0103, "SH", "Coding Scheme Version" }, 222 { 0x0008, 0x0104, "LO", "Code Meaning" }, 223 { 0x0008, 0x0105, "CS", "Mapping Resource" }, 224 { 0x0008, 0x0106, "DT", "Context Group Version" }, 225 { 0x0008, 0x010b, "CS", "Code Set Extension Flag" }, 226 { 0x0008, 0x010c, "UI", "Private Coding Scheme Creator UID" }, 227 { 0x0008, 0x010d, "UI", "Code Set Extension Creator UID" }, 228 { 0x0008, 0x010f, "CS", "Context Identifier" }, 229 { 0x0008, 0x1000, "LT", "Network ID" }, 230 { 0x0008, 0x1010, "SH", "Station Name" }, 231 { 0x0008, 0x1030, "LO", "Study Description" }, 232 { 0x0008, 0x1032, "SQ", "Procedure Code Sequence" }, 233 { 0x0008, 0x103e, "LO", "Series Description" }, 234 { 0x0008, 0x1040, "LO", "Institutional Department Name" }, 235 { 0x0008, 0x1048, "PN", "Physician of Record" }, 236 { 0x0008, 0x1050, "PN", "Performing Physician's Name" }, 237 { 0x0008, 0x1060, "PN", "Name of Physician(s) Reading Study" }, 238 { 0x0008, 0x1070, "PN", "Operator's Name" }, 239 { 0x0008, 0x1080, "LO", "Admitting Diagnosis Description" }, 240 { 0x0008, 0x1084, "SQ", "Admitting Diagnosis Code Sequence" }, 241 { 0x0008, 0x1090, "LO", "Manufacturer's Model Name" }, 242 { 0x0008, 0x1100, "SQ", "Referenced Results Sequence" }, 243 { 0x0008, 0x1110, "SQ", "Referenced Study Sequence" }, 244 { 0x0008, 0x1111, "SQ", "Referenced Study Component Sequence" }, 245 { 0x0008, 0x1115, "SQ", "Referenced Series Sequence" }, 246 { 0x0008, 0x1120, "SQ", "Referenced Patient Sequence" }, 247 { 0x0008, 0x1125, "SQ", "Referenced Visit Sequence" }, 248 { 0x0008, 0x1130, "SQ", "Referenced Overlay Sequence" }, 249 { 0x0008, 0x1140, "SQ", "Referenced Image Sequence" }, 250 { 0x0008, 0x1145, "SQ", "Referenced Curve Sequence" }, 251 { 0x0008, 0x1148, "SQ", "Referenced Previous Waveform" }, 252 { 0x0008, 0x114a, "SQ", "Referenced Simultaneous Waveforms" }, 253 { 0x0008, 0x114c, "SQ", "Referenced Subsequent Waveform" }, 254 { 0x0008, 0x1150, "UI", "Referenced SOP Class UID" }, 255 { 0x0008, 0x1155, "UI", "Referenced SOP Instance UID" }, 256 { 0x0008, 0x1160, "IS", "Referenced Frame Number" }, 257 { 0x0008, 0x1195, "UI", "Transaction UID" }, 258 { 0x0008, 0x1197, "US", "Failure Reason" }, 259 { 0x0008, 0x1198, "SQ", "Failed SOP Sequence" }, 260 { 0x0008, 0x1199, "SQ", "Referenced SOP Sequence" }, 261 { 0x0008, 0x2110, "CS", "Old Lossy Image Compression" }, 262 { 0x0008, 0x2111, "ST", "Derivation Description" }, 263 { 0x0008, 0x2112, "SQ", "Source Image Sequence" }, 264 { 0x0008, 0x2120, "SH", "Stage Name" }, 265 { 0x0008, 0x2122, "IS", "Stage Number" }, 266 { 0x0008, 0x2124, "IS", "Number of Stages" }, 267 { 0x0008, 0x2128, "IS", "View Number" }, 268 { 0x0008, 0x2129, "IS", "Number of Event Timers" }, 269 { 0x0008, 0x212a, "IS", "Number of Views in Stage" }, 270 { 0x0008, 0x2130, "DS", "Event Elapsed Time(s)" }, 271 { 0x0008, 0x2132, "LO", "Event Timer Name(s)" }, 272 { 0x0008, 0x2142, "IS", "Start Trim" }, 273 { 0x0008, 0x2143, "IS", "Stop Trim" }, 274 { 0x0008, 0x2144, "IS", "Recommended Display Frame Rate" }, 275 { 0x0008, 0x2200, "CS", "Transducer Position" }, 276 { 0x0008, 0x2204, "CS", "Transducer Orientation" }, 277 { 0x0008, 0x2208, "CS", "Anatomic Structure" }, 278 { 0x0008, 0x2218, "SQ", "Anatomic Region Sequence" }, 279 { 0x0008, 0x2220, "SQ", "Anatomic Region Modifier Sequence" }, 280 { 0x0008, 0x2228, "SQ", "Primary Anatomic Structure Sequence" }, 281 { 0x0008, 0x2230, "SQ", "Primary Anatomic Structure Modifier Sequence" }, 282 { 0x0008, 0x2240, "SQ", "Transducer Position Sequence" }, 283 { 0x0008, 0x2242, "SQ", "Transducer Position Modifier Sequence" }, 284 { 0x0008, 0x2244, "SQ", "Transducer Orientation Sequence" }, 285 { 0x0008, 0x2246, "SQ", "Transducer Orientation Modifier Sequence" }, 286 { 0x0008, 0x2251, "SQ", "Anatomic Structure Space Or Region Code Sequence" }, 287 { 0x0008, 0x2253, "SQ", "Anatomic Portal Of Entrance Code Sequence" }, 288 { 0x0008, 0x2255, "SQ", "Anatomic Approach Direction Code Sequence" }, 289 { 0x0008, 0x2256, "ST", "Anatomic Perspective Description" }, 290 { 0x0008, 0x2257, "SQ", "Anatomic Perspective Code Sequence" }, 291 { 0x0008, 0x2258, "ST", "Anatomic Location Of Examining Instrument Description" }, 292 { 0x0008, 0x2259, "SQ", "Anatomic Location Of Examining Instrument Code Sequence" }, 293 { 0x0008, 0x225a, "SQ", "Anatomic Structure Space Or Region Modifier Code Sequence" }, 294 { 0x0008, 0x225c, "SQ", "OnAxis Background Anatomic Structure Code Sequence" }, 295 { 0x0008, 0x4000, "LT", "Identifying Comments" }, 296 { 0x0009, 0x0000, "xs", "?" }, 297 { 0x0009, 0x0001, "xs", "?" }, 298 { 0x0009, 0x0002, "xs", "?" }, 299 { 0x0009, 0x0003, "xs", "?" }, 300 { 0x0009, 0x0004, "xs", "?" }, 301 { 0x0009, 0x0005, "UN", "?" }, 302 { 0x0009, 0x0006, "UN", "?" }, 303 { 0x0009, 0x0007, "UN", "?" }, 304 { 0x0009, 0x0008, "xs", "?" }, 305 { 0x0009, 0x0009, "LT", "?" }, 306 { 0x0009, 0x000a, "IS", "?" }, 307 { 0x0009, 0x000b, "IS", "?" }, 308 { 0x0009, 0x000c, "IS", "?" }, 309 { 0x0009, 0x000d, "IS", "?" }, 310 { 0x0009, 0x000e, "IS", "?" }, 311 { 0x0009, 0x000f, "UN", "?" }, 312 { 0x0009, 0x0010, "xs", "?" }, 313 { 0x0009, 0x0011, "xs", "?" }, 314 { 0x0009, 0x0012, "xs", "?" }, 315 { 0x0009, 0x0013, "xs", "?" }, 316 { 0x0009, 0x0014, "xs", "?" }, 317 { 0x0009, 0x0015, "xs", "?" }, 318 { 0x0009, 0x0016, "xs", "?" }, 319 { 0x0009, 0x0017, "LT", "?" }, 320 { 0x0009, 0x0018, "LT", "Data Set Identifier" }, 321 { 0x0009, 0x001a, "US", "?" }, 322 { 0x0009, 0x001e, "UI", "?" }, 323 { 0x0009, 0x0020, "xs", "?" }, 324 { 0x0009, 0x0021, "xs", "?" }, 325 { 0x0009, 0x0022, "SH", "User Orientation" }, 326 { 0x0009, 0x0023, "SL", "Initiation Type" }, 327 { 0x0009, 0x0024, "xs", "?" }, 328 { 0x0009, 0x0025, "xs", "?" }, 329 { 0x0009, 0x0026, "xs", "?" }, 330 { 0x0009, 0x0027, "xs", "?" }, 331 { 0x0009, 0x0029, "xs", "?" }, 332 { 0x0009, 0x002a, "SL", "?" }, 333 { 0x0009, 0x002c, "LO", "Series Comments" }, 334 { 0x0009, 0x002d, "SL", "Track Beat Average" }, 335 { 0x0009, 0x002e, "FD", "Distance Prescribed" }, 336 { 0x0009, 0x002f, "LT", "?" }, 337 { 0x0009, 0x0030, "xs", "?" }, 338 { 0x0009, 0x0031, "xs", "?" }, 339 { 0x0009, 0x0032, "LT", "?" }, 340 { 0x0009, 0x0034, "xs", "?" }, 341 { 0x0009, 0x0035, "SL", "Gantry Locus Type" }, 342 { 0x0009, 0x0037, "SL", "Starting Heart Rate" }, 343 { 0x0009, 0x0038, "xs", "?" }, 344 { 0x0009, 0x0039, "SL", "RR Window Offset" }, 345 { 0x0009, 0x003a, "SL", "Percent Cycle Imaged" }, 346 { 0x0009, 0x003e, "US", "?" }, 347 { 0x0009, 0x003f, "US", "?" }, 348 { 0x0009, 0x0040, "xs", "?" }, 349 { 0x0009, 0x0041, "xs", "?" }, 350 { 0x0009, 0x0042, "xs", "?" }, 351 { 0x0009, 0x0043, "xs", "?" }, 352 { 0x0009, 0x0050, "LT", "?" }, 353 { 0x0009, 0x0051, "xs", "?" }, 354 { 0x0009, 0x0060, "LT", "?" }, 355 { 0x0009, 0x0061, "LT", "Series Unique Identifier" }, 356 { 0x0009, 0x0070, "LT", "?" }, 357 { 0x0009, 0x0080, "LT", "?" }, 358 { 0x0009, 0x0091, "LT", "?" }, 359 { 0x0009, 0x00e2, "LT", "?" }, 360 { 0x0009, 0x00e3, "UI", "Equipment UID" }, 361 { 0x0009, 0x00e6, "SH", "Genesis Version Now" }, 362 { 0x0009, 0x00e7, "UL", "Exam Record Checksum" }, 363 { 0x0009, 0x00e8, "UL", "?" }, 364 { 0x0009, 0x00e9, "SL", "Actual Series Data Time Stamp" }, 365 { 0x0009, 0x00f2, "UN", "?" }, 366 { 0x0009, 0x00f3, "UN", "?" }, 367 { 0x0009, 0x00f4, "LT", "?" }, 368 { 0x0009, 0x00f5, "xs", "?" }, 369 { 0x0009, 0x00f6, "LT", "PDM Data Object Type Extension" }, 370 { 0x0009, 0x00f8, "US", "?" }, 371 { 0x0009, 0x00fb, "IS", "?" }, 372 { 0x0009, 0x1002, "OB", "?" }, 373 { 0x0009, 0x1003, "OB", "?" }, 374 { 0x0009, 0x1010, "UN", "?" }, 375 { 0x0010, 0x0000, "UL", "Patient Group Length" }, 376 { 0x0010, 0x0010, "PN", "Patient's Name" }, 377 { 0x0010, 0x0020, "LO", "Patient's ID" }, 378 { 0x0010, 0x0021, "LO", "Issuer of Patient's ID" }, 379 { 0x0010, 0x0030, "DA", "Patient's Birth Date" }, 380 { 0x0010, 0x0032, "TM", "Patient's Birth Time" }, 381 { 0x0010, 0x0040, "CS", "Patient's Sex" }, 382 { 0x0010, 0x0050, "SQ", "Patient's Insurance Plan Code Sequence" }, 383 { 0x0010, 0x1000, "LO", "Other Patient's ID's" }, 384 { 0x0010, 0x1001, "PN", "Other Patient's Names" }, 385 { 0x0010, 0x1005, "PN", "Patient's Birth Name" }, 386 { 0x0010, 0x1010, "AS", "Patient's Age" }, 387 { 0x0010, 0x1020, "DS", "Patient's Size" }, 388 { 0x0010, 0x1030, "DS", "Patient's Weight" }, 389 { 0x0010, 0x1040, "LO", "Patient's Address" }, 390 { 0x0010, 0x1050, "LT", "Insurance Plan Identification" }, 391 { 0x0010, 0x1060, "PN", "Patient's Mother's Birth Name" }, 392 { 0x0010, 0x1080, "LO", "Military Rank" }, 393 { 0x0010, 0x1081, "LO", "Branch of Service" }, 394 { 0x0010, 0x1090, "LO", "Medical Record Locator" }, 395 { 0x0010, 0x2000, "LO", "Medical Alerts" }, 396 { 0x0010, 0x2110, "LO", "Contrast Allergies" }, 397 { 0x0010, 0x2150, "LO", "Country of Residence" }, 398 { 0x0010, 0x2152, "LO", "Region of Residence" }, 399 { 0x0010, 0x2154, "SH", "Patients Telephone Numbers" }, 400 { 0x0010, 0x2160, "SH", "Ethnic Group" }, 401 { 0x0010, 0x2180, "SH", "Occupation" }, 402 { 0x0010, 0x21a0, "CS", "Smoking Status" }, 403 { 0x0010, 0x21b0, "LT", "Additional Patient History" }, 404 { 0x0010, 0x21c0, "US", "Pregnancy Status" }, 405 { 0x0010, 0x21d0, "DA", "Last Menstrual Date" }, 406 { 0x0010, 0x21f0, "LO", "Patients Religious Preference" }, 407 { 0x0010, 0x4000, "LT", "Patient Comments" }, 408 { 0x0011, 0x0001, "xs", "?" }, 409 { 0x0011, 0x0002, "US", "?" }, 410 { 0x0011, 0x0003, "LT", "Patient UID" }, 411 { 0x0011, 0x0004, "LT", "Patient ID" }, 412 { 0x0011, 0x000a, "xs", "?" }, 413 { 0x0011, 0x000b, "SL", "Effective Series Duration" }, 414 { 0x0011, 0x000c, "SL", "Num Beats" }, 415 { 0x0011, 0x000d, "LO", "Radio Nuclide Name" }, 416 { 0x0011, 0x0010, "xs", "?" }, 417 { 0x0011, 0x0011, "xs", "?" }, 418 { 0x0011, 0x0012, "LO", "Dataset Name" }, 419 { 0x0011, 0x0013, "LO", "Dataset Type" }, 420 { 0x0011, 0x0015, "xs", "?" }, 421 { 0x0011, 0x0016, "SL", "Energy Number" }, 422 { 0x0011, 0x0017, "SL", "RR Interval Window Number" }, 423 { 0x0011, 0x0018, "SL", "MG Bin Number" }, 424 { 0x0011, 0x0019, "FD", "Radius Of Rotation" }, 425 { 0x0011, 0x001a, "SL", "Detector Count Zone" }, 426 { 0x0011, 0x001b, "SL", "Num Energy Windows" }, 427 { 0x0011, 0x001c, "SL", "Energy Offset" }, 428 { 0x0011, 0x001d, "SL", "Energy Range" }, 429 { 0x0011, 0x001f, "SL", "Image Orientation" }, 430 { 0x0011, 0x0020, "xs", "?" }, 431 { 0x0011, 0x0021, "xs", "?" }, 432 { 0x0011, 0x0022, "xs", "?" }, 433 { 0x0011, 0x0023, "xs", "?" }, 434 { 0x0011, 0x0024, "SL", "FOV Mask Y Cutoff Angle" }, 435 { 0x0011, 0x0025, "xs", "?" }, 436 { 0x0011, 0x0026, "SL", "Table Orientation" }, 437 { 0x0011, 0x0027, "SL", "ROI Top Left" }, 438 { 0x0011, 0x0028, "SL", "ROI Bottom Right" }, 439 { 0x0011, 0x0030, "xs", "?" }, 440 { 0x0011, 0x0031, "xs", "?" }, 441 { 0x0011, 0x0032, "UN", "?" }, 442 { 0x0011, 0x0033, "LO", "Energy Correct Name" }, 443 { 0x0011, 0x0034, "LO", "Spatial Correct Name" }, 444 { 0x0011, 0x0035, "xs", "?" }, 445 { 0x0011, 0x0036, "LO", "Uniformity Correct Name" }, 446 { 0x0011, 0x0037, "LO", "Acquisition Specific Correct Name" }, 447 { 0x0011, 0x0038, "SL", "Byte Order" }, 448 { 0x0011, 0x003a, "SL", "Picture Format" }, 449 { 0x0011, 0x003b, "FD", "Pixel Scale" }, 450 { 0x0011, 0x003c, "FD", "Pixel Offset" }, 451 { 0x0011, 0x003e, "SL", "FOV Shape" }, 452 { 0x0011, 0x003f, "SL", "Dataset Flags" }, 453 { 0x0011, 0x0040, "xs", "?" }, 454 { 0x0011, 0x0041, "LT", "Medical Alerts" }, 455 { 0x0011, 0x0042, "LT", "Contrast Allergies" }, 456 { 0x0011, 0x0044, "FD", "Threshold Center" }, 457 { 0x0011, 0x0045, "FD", "Threshold Width" }, 458 { 0x0011, 0x0046, "SL", "Interpolation Type" }, 459 { 0x0011, 0x0055, "FD", "Period" }, 460 { 0x0011, 0x0056, "FD", "ElapsedTime" }, 461 { 0x0011, 0x00a1, "DA", "Patient Registration Date" }, 462 { 0x0011, 0x00a2, "TM", "Patient Registration Time" }, 463 { 0x0011, 0x00b0, "LT", "Patient Last Name" }, 464 { 0x0011, 0x00b2, "LT", "Patient First Name" }, 465 { 0x0011, 0x00b4, "LT", "Patient Hospital Status" }, 466 { 0x0011, 0x00bc, "TM", "Current Location Time" }, 467 { 0x0011, 0x00c0, "LT", "Patient Insurance Status" }, 468 { 0x0011, 0x00d0, "LT", "Patient Billing Type" }, 469 { 0x0011, 0x00d2, "LT", "Patient Billing Address" }, 470 { 0x0013, 0x0000, "LT", "Modifying Physician" }, 471 { 0x0013, 0x0010, "xs", "?" }, 472 { 0x0013, 0x0011, "SL", "?" }, 473 { 0x0013, 0x0012, "xs", "?" }, 474 { 0x0013, 0x0016, "SL", "AutoTrack Peak" }, 475 { 0x0013, 0x0017, "SL", "AutoTrack Width" }, 476 { 0x0013, 0x0018, "FD", "Transmission Scan Time" }, 477 { 0x0013, 0x0019, "FD", "Transmission Mask Width" }, 478 { 0x0013, 0x001a, "FD", "Copper Attenuator Thickness" }, 479 { 0x0013, 0x001c, "FD", "?" }, 480 { 0x0013, 0x001d, "FD", "?" }, 481 { 0x0013, 0x001e, "FD", "Tomo View Offset" }, 482 { 0x0013, 0x0020, "LT", "Patient Name" }, 483 { 0x0013, 0x0022, "LT", "Patient Id" }, 484 { 0x0013, 0x0026, "LT", "Study Comments" }, 485 { 0x0013, 0x0030, "DA", "Patient Birthdate" }, 486 { 0x0013, 0x0031, "DS", "Patient Weight" }, 487 { 0x0013, 0x0032, "LT", "Patients Maiden Name" }, 488 { 0x0013, 0x0033, "LT", "Referring Physician" }, 489 { 0x0013, 0x0034, "LT", "Admitting Diagnosis" }, 490 { 0x0013, 0x0035, "LT", "Patient Sex" }, 491 { 0x0013, 0x0040, "LT", "Procedure Description" }, 492 { 0x0013, 0x0042, "LT", "Patient Rest Direction" }, 493 { 0x0013, 0x0044, "LT", "Patient Position" }, 494 { 0x0013, 0x0046, "LT", "View Direction" }, 495 { 0x0015, 0x0001, "DS", "Stenosis Calibration Ratio" }, 496 { 0x0015, 0x0002, "DS", "Stenosis Magnification" }, 497 { 0x0015, 0x0003, "DS", "Cardiac Calibration Ratio" }, 498 { 0x0018, 0x0000, "UL", "Acquisition Group Length" }, 499 { 0x0018, 0x0010, "LO", "Contrast/Bolus Agent" }, 500 { 0x0018, 0x0012, "SQ", "Contrast/Bolus Agent Sequence" }, 501 { 0x0018, 0x0014, "SQ", "Contrast/Bolus Administration Route Sequence" }, 502 { 0x0018, 0x0015, "CS", "Body Part Examined" }, 503 { 0x0018, 0x0020, "CS", "Scanning Sequence" }, 504 { 0x0018, 0x0021, "CS", "Sequence Variant" }, 505 { 0x0018, 0x0022, "CS", "Scan Options" }, 506 { 0x0018, 0x0023, "CS", "MR Acquisition Type" }, 507 { 0x0018, 0x0024, "SH", "Sequence Name" }, 508 { 0x0018, 0x0025, "CS", "Angio Flag" }, 509 { 0x0018, 0x0026, "SQ", "Intervention Drug Information Sequence" }, 510 { 0x0018, 0x0027, "TM", "Intervention Drug Stop Time" }, 511 { 0x0018, 0x0028, "DS", "Intervention Drug Dose" }, 512 { 0x0018, 0x0029, "SQ", "Intervention Drug Code Sequence" }, 513 { 0x0018, 0x002a, "SQ", "Additional Drug Sequence" }, 514 { 0x0018, 0x0030, "LO", "Radionuclide" }, 515 { 0x0018, 0x0031, "LO", "Radiopharmaceutical" }, 516 { 0x0018, 0x0032, "DS", "Energy Window Centerline" }, 517 { 0x0018, 0x0033, "DS", "Energy Window Total Width" }, 518 { 0x0018, 0x0034, "LO", "Intervention Drug Name" }, 519 { 0x0018, 0x0035, "TM", "Intervention Drug Start Time" }, 520 { 0x0018, 0x0036, "SQ", "Intervention Therapy Sequence" }, 521 { 0x0018, 0x0037, "CS", "Therapy Type" }, 522 { 0x0018, 0x0038, "CS", "Intervention Status" }, 523 { 0x0018, 0x0039, "CS", "Therapy Description" }, 524 { 0x0018, 0x0040, "IS", "Cine Rate" }, 525 { 0x0018, 0x0050, "DS", "Slice Thickness" }, 526 { 0x0018, 0x0060, "DS", "KVP" }, 527 { 0x0018, 0x0070, "IS", "Counts Accumulated" }, 528 { 0x0018, 0x0071, "CS", "Acquisition Termination Condition" }, 529 { 0x0018, 0x0072, "DS", "Effective Series Duration" }, 530 { 0x0018, 0x0073, "CS", "Acquisition Start Condition" }, 531 { 0x0018, 0x0074, "IS", "Acquisition Start Condition Data" }, 532 { 0x0018, 0x0075, "IS", "Acquisition Termination Condition Data" }, 533 { 0x0018, 0x0080, "DS", "Repetition Time" }, 534 { 0x0018, 0x0081, "DS", "Echo Time" }, 535 { 0x0018, 0x0082, "DS", "Inversion Time" }, 536 { 0x0018, 0x0083, "DS", "Number of Averages" }, 537 { 0x0018, 0x0084, "DS", "Imaging Frequency" }, 538 { 0x0018, 0x0085, "SH", "Imaged Nucleus" }, 539 { 0x0018, 0x0086, "IS", "Echo Number(s)" }, 540 { 0x0018, 0x0087, "DS", "Magnetic Field Strength" }, 541 { 0x0018, 0x0088, "DS", "Spacing Between Slices" }, 542 { 0x0018, 0x0089, "IS", "Number of Phase Encoding Steps" }, 543 { 0x0018, 0x0090, "DS", "Data Collection Diameter" }, 544 { 0x0018, 0x0091, "IS", "Echo Train Length" }, 545 { 0x0018, 0x0093, "DS", "Percent Sampling" }, 546 { 0x0018, 0x0094, "DS", "Percent Phase Field of View" }, 547 { 0x0018, 0x0095, "DS", "Pixel Bandwidth" }, 548 { 0x0018, 0x1000, "LO", "Device Serial Number" }, 549 { 0x0018, 0x1004, "LO", "Plate ID" }, 550 { 0x0018, 0x1010, "LO", "Secondary Capture Device ID" }, 551 { 0x0018, 0x1012, "DA", "Date of Secondary Capture" }, 552 { 0x0018, 0x1014, "TM", "Time of Secondary Capture" }, 553 { 0x0018, 0x1016, "LO", "Secondary Capture Device Manufacturer" }, 554 { 0x0018, 0x1018, "LO", "Secondary Capture Device Manufacturer Model Name" }, 555 { 0x0018, 0x1019, "LO", "Secondary Capture Device Software Version(s)" }, 556 { 0x0018, 0x1020, "LO", "Software Version(s)" }, 557 { 0x0018, 0x1022, "SH", "Video Image Format Acquired" }, 558 { 0x0018, 0x1023, "LO", "Digital Image Format Acquired" }, 559 { 0x0018, 0x1030, "LO", "Protocol Name" }, 560 { 0x0018, 0x1040, "LO", "Contrast/Bolus Route" }, 561 { 0x0018, 0x1041, "DS", "Contrast/Bolus Volume" }, 562 { 0x0018, 0x1042, "TM", "Contrast/Bolus Start Time" }, 563 { 0x0018, 0x1043, "TM", "Contrast/Bolus Stop Time" }, 564 { 0x0018, 0x1044, "DS", "Contrast/Bolus Total Dose" }, 565 { 0x0018, 0x1045, "IS", "Syringe Counts" }, 566 { 0x0018, 0x1046, "DS", "Contrast Flow Rate" }, 567 { 0x0018, 0x1047, "DS", "Contrast Flow Duration" }, 568 { 0x0018, 0x1048, "CS", "Contrast/Bolus Ingredient" }, 569 { 0x0018, 0x1049, "DS", "Contrast/Bolus Ingredient Concentration" }, 570 { 0x0018, 0x1050, "DS", "Spatial Resolution" }, 571 { 0x0018, 0x1060, "DS", "Trigger Time" }, 572 { 0x0018, 0x1061, "LO", "Trigger Source or Type" }, 573 { 0x0018, 0x1062, "IS", "Nominal Interval" }, 574 { 0x0018, 0x1063, "DS", "Frame Time" }, 575 { 0x0018, 0x1064, "LO", "Framing Type" }, 576 { 0x0018, 0x1065, "DS", "Frame Time Vector" }, 577 { 0x0018, 0x1066, "DS", "Frame Delay" }, 578 { 0x0018, 0x1067, "DS", "Image Trigger Delay" }, 579 { 0x0018, 0x1068, "DS", "Group Time Offset" }, 580 { 0x0018, 0x1069, "DS", "Trigger Time Offset" }, 581 { 0x0018, 0x106a, "CS", "Synchronization Trigger" }, 582 { 0x0018, 0x106b, "UI", "Synchronization Frame of Reference" }, 583 { 0x0018, 0x106e, "UL", "Trigger Sample Position" }, 584 { 0x0018, 0x1070, "LO", "Radiopharmaceutical Route" }, 585 { 0x0018, 0x1071, "DS", "Radiopharmaceutical Volume" }, 586 { 0x0018, 0x1072, "TM", "Radiopharmaceutical Start Time" }, 587 { 0x0018, 0x1073, "TM", "Radiopharmaceutical Stop Time" }, 588 { 0x0018, 0x1074, "DS", "Radionuclide Total Dose" }, 589 { 0x0018, 0x1075, "DS", "Radionuclide Half Life" }, 590 { 0x0018, 0x1076, "DS", "Radionuclide Positron Fraction" }, 591 { 0x0018, 0x1077, "DS", "Radiopharmaceutical Specific Activity" }, 592 { 0x0018, 0x1080, "CS", "Beat Rejection Flag" }, 593 { 0x0018, 0x1081, "IS", "Low R-R Value" }, 594 { 0x0018, 0x1082, "IS", "High R-R Value" }, 595 { 0x0018, 0x1083, "IS", "Intervals Acquired" }, 596 { 0x0018, 0x1084, "IS", "Intervals Rejected" }, 597 { 0x0018, 0x1085, "LO", "PVC Rejection" }, 598 { 0x0018, 0x1086, "IS", "Skip Beats" }, 599 { 0x0018, 0x1088, "IS", "Heart Rate" }, 600 { 0x0018, 0x1090, "IS", "Cardiac Number of Images" }, 601 { 0x0018, 0x1094, "IS", "Trigger Window" }, 602 { 0x0018, 0x1100, "DS", "Reconstruction Diameter" }, 603 { 0x0018, 0x1110, "DS", "Distance Source to Detector" }, 604 { 0x0018, 0x1111, "DS", "Distance Source to Patient" }, 605 { 0x0018, 0x1114, "DS", "Estimated Radiographic Magnification Factor" }, 606 { 0x0018, 0x1120, "DS", "Gantry/Detector Tilt" }, 607 { 0x0018, 0x1121, "DS", "Gantry/Detector Slew" }, 608 { 0x0018, 0x1130, "DS", "Table Height" }, 609 { 0x0018, 0x1131, "DS", "Table Traverse" }, 610 { 0x0018, 0x1134, "CS", "Table Motion" }, 611 { 0x0018, 0x1135, "DS", "Table Vertical Increment" }, 612 { 0x0018, 0x1136, "DS", "Table Lateral Increment" }, 613 { 0x0018, 0x1137, "DS", "Table Longitudinal Increment" }, 614 { 0x0018, 0x1138, "DS", "Table Angle" }, 615 { 0x0018, 0x113a, "CS", "Table Type" }, 616 { 0x0018, 0x1140, "CS", "Rotation Direction" }, 617 { 0x0018, 0x1141, "DS", "Angular Position" }, 618 { 0x0018, 0x1142, "DS", "Radial Position" }, 619 { 0x0018, 0x1143, "DS", "Scan Arc" }, 620 { 0x0018, 0x1144, "DS", "Angular Step" }, 621 { 0x0018, 0x1145, "DS", "Center of Rotation Offset" }, 622 { 0x0018, 0x1146, "DS", "Rotation Offset" }, 623 { 0x0018, 0x1147, "CS", "Field of View Shape" }, 624 { 0x0018, 0x1149, "IS", "Field of View Dimension(s)" }, 625 { 0x0018, 0x1150, "IS", "Exposure Time" }, 626 { 0x0018, 0x1151, "IS", "X-ray Tube Current" }, 627 { 0x0018, 0x1152, "IS", "Exposure" }, 628 { 0x0018, 0x1153, "IS", "Exposure in uAs" }, 629 { 0x0018, 0x1154, "DS", "AveragePulseWidth" }, 630 { 0x0018, 0x1155, "CS", "RadiationSetting" }, 631 { 0x0018, 0x1156, "CS", "Rectification Type" }, 632 { 0x0018, 0x115a, "CS", "RadiationMode" }, 633 { 0x0018, 0x115e, "DS", "ImageAreaDoseProduct" }, 634 { 0x0018, 0x1160, "SH", "Filter Type" }, 635 { 0x0018, 0x1161, "LO", "TypeOfFilters" }, 636 { 0x0018, 0x1162, "DS", "IntensifierSize" }, 637 { 0x0018, 0x1164, "DS", "ImagerPixelSpacing" }, 638 { 0x0018, 0x1166, "CS", "Grid" }, 639 { 0x0018, 0x1170, "IS", "Generator Power" }, 640 { 0x0018, 0x1180, "SH", "Collimator/Grid Name" }, 641 { 0x0018, 0x1181, "CS", "Collimator Type" }, 642 { 0x0018, 0x1182, "IS", "Focal Distance" }, 643 { 0x0018, 0x1183, "DS", "X Focus Center" }, 644 { 0x0018, 0x1184, "DS", "Y Focus Center" }, 645 { 0x0018, 0x1190, "DS", "Focal Spot(s)" }, 646 { 0x0018, 0x1191, "CS", "Anode Target Material" }, 647 { 0x0018, 0x11a0, "DS", "Body Part Thickness" }, 648 { 0x0018, 0x11a2, "DS", "Compression Force" }, 649 { 0x0018, 0x1200, "DA", "Date of Last Calibration" }, 650 { 0x0018, 0x1201, "TM", "Time of Last Calibration" }, 651 { 0x0018, 0x1210, "SH", "Convolution Kernel" }, 652 { 0x0018, 0x1240, "IS", "Upper/Lower Pixel Values" }, 653 { 0x0018, 0x1242, "IS", "Actual Frame Duration" }, 654 { 0x0018, 0x1243, "IS", "Count Rate" }, 655 { 0x0018, 0x1244, "US", "Preferred Playback Sequencing" }, 656 { 0x0018, 0x1250, "SH", "Receiving Coil" }, 657 { 0x0018, 0x1251, "SH", "Transmitting Coil" }, 658 { 0x0018, 0x1260, "SH", "Plate Type" }, 659 { 0x0018, 0x1261, "LO", "Phosphor Type" }, 660 { 0x0018, 0x1300, "DS", "Scan Velocity" }, 661 { 0x0018, 0x1301, "CS", "Whole Body Technique" }, 662 { 0x0018, 0x1302, "IS", "Scan Length" }, 663 { 0x0018, 0x1310, "US", "Acquisition Matrix" }, 664 { 0x0018, 0x1312, "CS", "Phase Encoding Direction" }, 665 { 0x0018, 0x1314, "DS", "Flip Angle" }, 666 { 0x0018, 0x1315, "CS", "Variable Flip Angle Flag" }, 667 { 0x0018, 0x1316, "DS", "SAR" }, 668 { 0x0018, 0x1318, "DS", "dB/dt" }, 669 { 0x0018, 0x1400, "LO", "Acquisition Device Processing Description" }, 670 { 0x0018, 0x1401, "LO", "Acquisition Device Processing Code" }, 671 { 0x0018, 0x1402, "CS", "Cassette Orientation" }, 672 { 0x0018, 0x1403, "CS", "Cassette Size" }, 673 { 0x0018, 0x1404, "US", "Exposures on Plate" }, 674 { 0x0018, 0x1405, "IS", "Relative X-ray Exposure" }, 675 { 0x0018, 0x1450, "DS", "Column Angulation" }, 676 { 0x0018, 0x1460, "DS", "Tomo Layer Height" }, 677 { 0x0018, 0x1470, "DS", "Tomo Angle" }, 678 { 0x0018, 0x1480, "DS", "Tomo Time" }, 679 { 0x0018, 0x1490, "CS", "Tomo Type" }, 680 { 0x0018, 0x1491, "CS", "Tomo Class" }, 681 { 0x0018, 0x1495, "IS", "Number of Tomosynthesis Source Images" }, 682 { 0x0018, 0x1500, "CS", "PositionerMotion" }, 683 { 0x0018, 0x1508, "CS", "Positioner Type" }, 684 { 0x0018, 0x1510, "DS", "PositionerPrimaryAngle" }, 685 { 0x0018, 0x1511, "DS", "PositionerSecondaryAngle" }, 686 { 0x0018, 0x1520, "DS", "PositionerPrimaryAngleIncrement" }, 687 { 0x0018, 0x1521, "DS", "PositionerSecondaryAngleIncrement" }, 688 { 0x0018, 0x1530, "DS", "DetectorPrimaryAngle" }, 689 { 0x0018, 0x1531, "DS", "DetectorSecondaryAngle" }, 690 { 0x0018, 0x1600, "CS", "Shutter Shape" }, 691 { 0x0018, 0x1602, "IS", "Shutter Left Vertical Edge" }, 692 { 0x0018, 0x1604, "IS", "Shutter Right Vertical Edge" }, 693 { 0x0018, 0x1606, "IS", "Shutter Upper Horizontal Edge" }, 694 { 0x0018, 0x1608, "IS", "Shutter Lower Horizonta lEdge" }, 695 { 0x0018, 0x1610, "IS", "Center of Circular Shutter" }, 696 { 0x0018, 0x1612, "IS", "Radius of Circular Shutter" }, 697 { 0x0018, 0x1620, "IS", "Vertices of Polygonal Shutter" }, 698 { 0x0018, 0x1622, "US", "Shutter Presentation Value" }, 699 { 0x0018, 0x1623, "US", "Shutter Overlay Group" }, 700 { 0x0018, 0x1700, "CS", "Collimator Shape" }, 701 { 0x0018, 0x1702, "IS", "Collimator Left Vertical Edge" }, 702 { 0x0018, 0x1704, "IS", "Collimator Right Vertical Edge" }, 703 { 0x0018, 0x1706, "IS", "Collimator Upper Horizontal Edge" }, 704 { 0x0018, 0x1708, "IS", "Collimator Lower Horizontal Edge" }, 705 { 0x0018, 0x1710, "IS", "Center of Circular Collimator" }, 706 { 0x0018, 0x1712, "IS", "Radius of Circular Collimator" }, 707 { 0x0018, 0x1720, "IS", "Vertices of Polygonal Collimator" }, 708 { 0x0018, 0x1800, "CS", "Acquisition Time Synchronized" }, 709 { 0x0018, 0x1801, "SH", "Time Source" }, 710 { 0x0018, 0x1802, "CS", "Time Distribution Protocol" }, 711 { 0x0018, 0x4000, "LT", "Acquisition Comments" }, 712 { 0x0018, 0x5000, "SH", "Output Power" }, 713 { 0x0018, 0x5010, "LO", "Transducer Data" }, 714 { 0x0018, 0x5012, "DS", "Focus Depth" }, 715 { 0x0018, 0x5020, "LO", "Processing Function" }, 716 { 0x0018, 0x5021, "LO", "Postprocessing Function" }, 717 { 0x0018, 0x5022, "DS", "Mechanical Index" }, 718 { 0x0018, 0x5024, "DS", "Thermal Index" }, 719 { 0x0018, 0x5026, "DS", "Cranial Thermal Index" }, 720 { 0x0018, 0x5027, "DS", "Soft Tissue Thermal Index" }, 721 { 0x0018, 0x5028, "DS", "Soft Tissue-Focus Thermal Index" }, 722 { 0x0018, 0x5029, "DS", "Soft Tissue-Surface Thermal Index" }, 723 { 0x0018, 0x5030, "DS", "Dynamic Range" }, 724 { 0x0018, 0x5040, "DS", "Total Gain" }, 725 { 0x0018, 0x5050, "IS", "Depth of Scan Field" }, 726 { 0x0018, 0x5100, "CS", "Patient Position" }, 727 { 0x0018, 0x5101, "CS", "View Position" }, 728 { 0x0018, 0x5104, "SQ", "Projection Eponymous Name Code Sequence" }, 729 { 0x0018, 0x5210, "DS", "Image Transformation Matrix" }, 730 { 0x0018, 0x5212, "DS", "Image Translation Vector" }, 731 { 0x0018, 0x6000, "DS", "Sensitivity" }, 732 { 0x0018, 0x6011, "IS", "Sequence of Ultrasound Regions" }, 733 { 0x0018, 0x6012, "US", "Region Spatial Format" }, 734 { 0x0018, 0x6014, "US", "Region Data Type" }, 735 { 0x0018, 0x6016, "UL", "Region Flags" }, 736 { 0x0018, 0x6018, "UL", "Region Location Min X0" }, 737 { 0x0018, 0x601a, "UL", "Region Location Min Y0" }, 738 { 0x0018, 0x601c, "UL", "Region Location Max X1" }, 739 { 0x0018, 0x601e, "UL", "Region Location Max Y1" }, 740 { 0x0018, 0x6020, "SL", "Reference Pixel X0" }, 741 { 0x0018, 0x6022, "SL", "Reference Pixel Y0" }, 742 { 0x0018, 0x6024, "US", "Physical Units X Direction" }, 743 { 0x0018, 0x6026, "US", "Physical Units Y Direction" }, 744 { 0x0018, 0x6028, "FD", "Reference Pixel Physical Value X" }, 745 { 0x0018, 0x602a, "US", "Reference Pixel Physical Value Y" }, 746 { 0x0018, 0x602c, "US", "Physical Delta X" }, 747 { 0x0018, 0x602e, "US", "Physical Delta Y" }, 748 { 0x0018, 0x6030, "UL", "Transducer Frequency" }, 749 { 0x0018, 0x6031, "CS", "Transducer Type" }, 750 { 0x0018, 0x6032, "UL", "Pulse Repetition Frequency" }, 751 { 0x0018, 0x6034, "FD", "Doppler Correction Angle" }, 752 { 0x0018, 0x6036, "FD", "Steering Angle" }, 753 { 0x0018, 0x6038, "UL", "Doppler Sample Volume X Position" }, 754 { 0x0018, 0x603a, "UL", "Doppler Sample Volume Y Position" }, 755 { 0x0018, 0x603c, "UL", "TM-Line Position X0" }, 756 { 0x0018, 0x603e, "UL", "TM-Line Position Y0" }, 757 { 0x0018, 0x6040, "UL", "TM-Line Position X1" }, 758 { 0x0018, 0x6042, "UL", "TM-Line Position Y1" }, 759 { 0x0018, 0x6044, "US", "Pixel Component Organization" }, 760 { 0x0018, 0x6046, "UL", "Pixel Component Mask" }, 761 { 0x0018, 0x6048, "UL", "Pixel Component Range Start" }, 762 { 0x0018, 0x604a, "UL", "Pixel Component Range Stop" }, 763 { 0x0018, 0x604c, "US", "Pixel Component Physical Units" }, 764 { 0x0018, 0x604e, "US", "Pixel Component Data Type" }, 765 { 0x0018, 0x6050, "UL", "Number of Table Break Points" }, 766 { 0x0018, 0x6052, "UL", "Table of X Break Points" }, 767 { 0x0018, 0x6054, "FD", "Table of Y Break Points" }, 768 { 0x0018, 0x6056, "UL", "Number of Table Entries" }, 769 { 0x0018, 0x6058, "UL", "Table of Pixel Values" }, 770 { 0x0018, 0x605a, "FL", "Table of Parameter Values" }, 771 { 0x0018, 0x7000, "CS", "Detector Conditions Nominal Flag" }, 772 { 0x0018, 0x7001, "DS", "Detector Temperature" }, 773 { 0x0018, 0x7004, "CS", "Detector Type" }, 774 { 0x0018, 0x7005, "CS", "Detector Configuration" }, 775 { 0x0018, 0x7006, "LT", "Detector Description" }, 776 { 0x0018, 0x7008, "LT", "Detector Mode" }, 777 { 0x0018, 0x700a, "SH", "Detector ID" }, 778 { 0x0018, 0x700c, "DA", "Date of Last Detector Calibration " }, 779 { 0x0018, 0x700e, "TM", "Time of Last Detector Calibration" }, 780 { 0x0018, 0x7010, "IS", "Exposures on Detector Since Last Calibration" }, 781 { 0x0018, 0x7011, "IS", "Exposures on Detector Since Manufactured" }, 782 { 0x0018, 0x7012, "DS", "Detector Time Since Last Exposure" }, 783 { 0x0018, 0x7014, "DS", "Detector Active Time" }, 784 { 0x0018, 0x7016, "DS", "Detector Activation Offset From Exposure" }, 785 { 0x0018, 0x701a, "DS", "Detector Binning" }, 786 { 0x0018, 0x7020, "DS", "Detector Element Physical Size" }, 787 { 0x0018, 0x7022, "DS", "Detector Element Spacing" }, 788 { 0x0018, 0x7024, "CS", "Detector Active Shape" }, 789 { 0x0018, 0x7026, "DS", "Detector Active Dimensions" }, 790 { 0x0018, 0x7028, "DS", "Detector Active Origin" }, 791 { 0x0018, 0x7030, "DS", "Field of View Origin" }, 792 { 0x0018, 0x7032, "DS", "Field of View Rotation" }, 793 { 0x0018, 0x7034, "CS", "Field of View Horizontal Flip" }, 794 { 0x0018, 0x7040, "LT", "Grid Absorbing Material" }, 795 { 0x0018, 0x7041, "LT", "Grid Spacing Material" }, 796 { 0x0018, 0x7042, "DS", "Grid Thickness" }, 797 { 0x0018, 0x7044, "DS", "Grid Pitch" }, 798 { 0x0018, 0x7046, "IS", "Grid Aspect Ratio" }, 799 { 0x0018, 0x7048, "DS", "Grid Period" }, 800 { 0x0018, 0x704c, "DS", "Grid Focal Distance" }, 801 { 0x0018, 0x7050, "LT", "Filter Material" }, 802 { 0x0018, 0x7052, "DS", "Filter Thickness Minimum" }, 803 { 0x0018, 0x7054, "DS", "Filter Thickness Maximum" }, 804 { 0x0018, 0x7060, "CS", "Exposure Control Mode" }, 805 { 0x0018, 0x7062, "LT", "Exposure Control Mode Description" }, 806 { 0x0018, 0x7064, "CS", "Exposure Status" }, 807 { 0x0018, 0x7065, "DS", "Phototimer Setting" }, 808 { 0x0019, 0x0000, "xs", "?" }, 809 { 0x0019, 0x0001, "xs", "?" }, 810 { 0x0019, 0x0002, "xs", "?" }, 811 { 0x0019, 0x0003, "xs", "?" }, 812 { 0x0019, 0x0004, "xs", "?" }, 813 { 0x0019, 0x0005, "xs", "?" }, 814 { 0x0019, 0x0006, "xs", "?" }, 815 { 0x0019, 0x0007, "xs", "?" }, 816 { 0x0019, 0x0008, "xs", "?" }, 817 { 0x0019, 0x0009, "xs", "?" }, 818 { 0x0019, 0x000a, "xs", "?" }, 819 { 0x0019, 0x000b, "DS", "?" }, 820 { 0x0019, 0x000c, "US", "?" }, 821 { 0x0019, 0x000d, "TM", "Time" }, 822 { 0x0019, 0x000e, "xs", "?" }, 823 { 0x0019, 0x000f, "DS", "Horizontal Frame Of Reference" }, 824 { 0x0019, 0x0010, "xs", "?" }, 825 { 0x0019, 0x0011, "xs", "?" }, 826 { 0x0019, 0x0012, "xs", "?" }, 827 { 0x0019, 0x0013, "xs", "?" }, 828 { 0x0019, 0x0014, "xs", "?" }, 829 { 0x0019, 0x0015, "xs", "?" }, 830 { 0x0019, 0x0016, "xs", "?" }, 831 { 0x0019, 0x0017, "xs", "?" }, 832 { 0x0019, 0x0018, "xs", "?" }, 833 { 0x0019, 0x0019, "xs", "?" }, 834 { 0x0019, 0x001a, "xs", "?" }, 835 { 0x0019, 0x001b, "xs", "?" }, 836 { 0x0019, 0x001c, "CS", "Dose" }, 837 { 0x0019, 0x001d, "IS", "Side Mark" }, 838 { 0x0019, 0x001e, "xs", "?" }, 839 { 0x0019, 0x001f, "DS", "Exposure Duration" }, 840 { 0x0019, 0x0020, "xs", "?" }, 841 { 0x0019, 0x0021, "xs", "?" }, 842 { 0x0019, 0x0022, "xs", "?" }, 843 { 0x0019, 0x0023, "xs", "?" }, 844 { 0x0019, 0x0024, "xs", "?" }, 845 { 0x0019, 0x0025, "xs", "?" }, 846 { 0x0019, 0x0026, "xs", "?" }, 847 { 0x0019, 0x0027, "xs", "?" }, 848 { 0x0019, 0x0028, "xs", "?" }, 849 { 0x0019, 0x0029, "IS", "?" }, 850 { 0x0019, 0x002a, "xs", "?" }, 851 { 0x0019, 0x002b, "DS", "Xray Off Position" }, 852 { 0x0019, 0x002c, "xs", "?" }, 853 { 0x0019, 0x002d, "US", "?" }, 854 { 0x0019, 0x002e, "xs", "?" }, 855 { 0x0019, 0x002f, "DS", "Trigger Frequency" }, 856 { 0x0019, 0x0030, "xs", "?" }, 857 { 0x0019, 0x0031, "xs", "?" }, 858 { 0x0019, 0x0032, "xs", "?" }, 859 { 0x0019, 0x0033, "UN", "ECG 2 Offset 2" }, 860 { 0x0019, 0x0034, "US", "?" }, 861 { 0x0019, 0x0036, "US", "?" }, 862 { 0x0019, 0x0038, "US", "?" }, 863 { 0x0019, 0x0039, "xs", "?" }, 864 { 0x0019, 0x003a, "xs", "?" }, 865 { 0x0019, 0x003b, "LT", "?" }, 866 { 0x0019, 0x003c, "xs", "?" }, 867 { 0x0019, 0x003e, "xs", "?" }, 868 { 0x0019, 0x003f, "UN", "?" }, 869 { 0x0019, 0x0040, "xs", "?" }, 870 { 0x0019, 0x0041, "xs", "?" }, 871 { 0x0019, 0x0042, "xs", "?" }, 872 { 0x0019, 0x0043, "xs", "?" }, 873 { 0x0019, 0x0044, "xs", "?" }, 874 { 0x0019, 0x0045, "xs", "?" }, 875 { 0x0019, 0x0046, "xs", "?" }, 876 { 0x0019, 0x0047, "xs", "?" }, 877 { 0x0019, 0x0048, "xs", "?" }, 878 { 0x0019, 0x0049, "US", "?" }, 879 { 0x0019, 0x004a, "xs", "?" }, 880 { 0x0019, 0x004b, "SL", "Data Size For Scan Data" }, 881 { 0x0019, 0x004c, "US", "?" }, 882 { 0x0019, 0x004e, "US", "?" }, 883 { 0x0019, 0x0050, "xs", "?" }, 884 { 0x0019, 0x0051, "xs", "?" }, 885 { 0x0019, 0x0052, "xs", "?" }, 886 { 0x0019, 0x0053, "LT", "Barcode" }, 887 { 0x0019, 0x0054, "xs", "?" }, 888 { 0x0019, 0x0055, "DS", "Receiver Reference Gain" }, 889 { 0x0019, 0x0056, "xs", "?" }, 890 { 0x0019, 0x0057, "SS", "CT Water Number" }, 891 { 0x0019, 0x0058, "xs", "?" }, 892 { 0x0019, 0x005a, "xs", "?" }, 893 { 0x0019, 0x005c, "xs", "?" }, 894 { 0x0019, 0x005d, "US", "?" }, 895 { 0x0019, 0x005e, "xs", "?" }, 896 { 0x0019, 0x005f, "SL", "Increment Between Channels" }, 897 { 0x0019, 0x0060, "xs", "?" }, 898 { 0x0019, 0x0061, "xs", "?" }, 899 { 0x0019, 0x0062, "xs", "?" }, 900 { 0x0019, 0x0063, "xs", "?" }, 901 { 0x0019, 0x0064, "xs", "?" }, 902 { 0x0019, 0x0065, "xs", "?" }, 903 { 0x0019, 0x0066, "xs", "?" }, 904 { 0x0019, 0x0067, "xs", "?" }, 905 { 0x0019, 0x0068, "xs", "?" }, 906 { 0x0019, 0x0069, "UL", "Convolution Mode" }, 907 { 0x0019, 0x006a, "xs", "?" }, 908 { 0x0019, 0x006b, "SS", "Field Of View In Detector Cells" }, 909 { 0x0019, 0x006c, "US", "?" }, 910 { 0x0019, 0x006e, "US", "?" }, 911 { 0x0019, 0x0070, "xs", "?" }, 912 { 0x0019, 0x0071, "xs", "?" }, 913 { 0x0019, 0x0072, "xs", "?" }, 914 { 0x0019, 0x0073, "xs", "?" }, 915 { 0x0019, 0x0074, "xs", "?" }, 916 { 0x0019, 0x0075, "xs", "?" }, 917 { 0x0019, 0x0076, "xs", "?" }, 918 { 0x0019, 0x0077, "US", "?" }, 919 { 0x0019, 0x0078, "US", "?" }, 920 { 0x0019, 0x007a, "US", "?" }, 921 { 0x0019, 0x007c, "US", "?" }, 922 { 0x0019, 0x007d, "DS", "Second Echo" }, 923 { 0x0019, 0x007e, "xs", "?" }, 924 { 0x0019, 0x007f, "DS", "Table Delta" }, 925 { 0x0019, 0x0080, "xs", "?" }, 926 { 0x0019, 0x0081, "xs", "?" }, 927 { 0x0019, 0x0082, "xs", "?" }, 928 { 0x0019, 0x0083, "xs", "?" }, 929 { 0x0019, 0x0084, "xs", "?" }, 930 { 0x0019, 0x0085, "xs", "?" }, 931 { 0x0019, 0x0086, "xs", "?" }, 932 { 0x0019, 0x0087, "xs", "?" }, 933 { 0x0019, 0x0088, "xs", "?" }, 934 { 0x0019, 0x008a, "xs", "?" }, 935 { 0x0019, 0x008b, "SS", "Actual Receive Gain Digital" }, 936 { 0x0019, 0x008c, "US", "?" }, 937 { 0x0019, 0x008d, "DS", "Delay After Trigger" }, 938 { 0x0019, 0x008e, "US", "?" }, 939 { 0x0019, 0x008f, "SS", "Swap Phase Frequency" }, 940 { 0x0019, 0x0090, "xs", "?" }, 941 { 0x0019, 0x0091, "xs", "?" }, 942 { 0x0019, 0x0092, "xs", "?" }, 943 { 0x0019, 0x0093, "xs", "?" }, 944 { 0x0019, 0x0094, "xs", "?" }, 945 { 0x0019, 0x0095, "SS", "Analog Receiver Gain" }, 946 { 0x0019, 0x0096, "xs", "?" }, 947 { 0x0019, 0x0097, "xs", "?" }, 948 { 0x0019, 0x0098, "xs", "?" }, 949 { 0x0019, 0x0099, "US", "?" }, 950 { 0x0019, 0x009a, "US", "?" }, 951 { 0x0019, 0x009b, "SS", "Pulse Sequence Mode" }, 952 { 0x0019, 0x009c, "xs", "?" }, 953 { 0x0019, 0x009d, "DT", "Pulse Sequence Date" }, 954 { 0x0019, 0x009e, "xs", "?" }, 955 { 0x0019, 0x009f, "xs", "?" }, 956 { 0x0019, 0x00a0, "xs", "?" }, 957 { 0x0019, 0x00a1, "xs", "?" }, 958 { 0x0019, 0x00a2, "xs", "?" }, 959 { 0x0019, 0x00a3, "xs", "?" }, 960 { 0x0019, 0x00a4, "xs", "?" }, 961 { 0x0019, 0x00a5, "xs", "?" }, 962 { 0x0019, 0x00a6, "xs", "?" }, 963 { 0x0019, 0x00a7, "xs", "?" }, 964 { 0x0019, 0x00a8, "xs", "?" }, 965 { 0x0019, 0x00a9, "xs", "?" }, 966 { 0x0019, 0x00aa, "xs", "?" }, 967 { 0x0019, 0x00ab, "xs", "?" }, 968 { 0x0019, 0x00ac, "xs", "?" }, 969 { 0x0019, 0x00ad, "xs", "?" }, 970 { 0x0019, 0x00ae, "xs", "?" }, 971 { 0x0019, 0x00af, "xs", "?" }, 972 { 0x0019, 0x00b0, "xs", "?" }, 973 { 0x0019, 0x00b1, "xs", "?" }, 974 { 0x0019, 0x00b2, "xs", "?" }, 975 { 0x0019, 0x00b3, "xs", "?" }, 976 { 0x0019, 0x00b4, "xs", "?" }, 977 { 0x0019, 0x00b5, "xs", "?" }, 978 { 0x0019, 0x00b6, "DS", "User Data" }, 979 { 0x0019, 0x00b7, "DS", "User Data" }, 980 { 0x0019, 0x00b8, "DS", "User Data" }, 981 { 0x0019, 0x00b9, "DS", "User Data" }, 982 { 0x0019, 0x00ba, "DS", "User Data" }, 983 { 0x0019, 0x00bb, "DS", "User Data" }, 984 { 0x0019, 0x00bc, "DS", "User Data" }, 985 { 0x0019, 0x00bd, "DS", "User Data" }, 986 { 0x0019, 0x00be, "DS", "Projection Angle" }, 987 { 0x0019, 0x00c0, "xs", "?" }, 988 { 0x0019, 0x00c1, "xs", "?" }, 989 { 0x0019, 0x00c2, "xs", "?" }, 990 { 0x0019, 0x00c3, "xs", "?" }, 991 { 0x0019, 0x00c4, "xs", "?" }, 992 { 0x0019, 0x00c5, "xs", "?" }, 993 { 0x0019, 0x00c6, "SS", "SAT Location H" }, 994 { 0x0019, 0x00c7, "SS", "SAT Location F" }, 995 { 0x0019, 0x00c8, "SS", "SAT Thickness R L" }, 996 { 0x0019, 0x00c9, "SS", "SAT Thickness A P" }, 997 { 0x0019, 0x00ca, "SS", "SAT Thickness H F" }, 998 { 0x0019, 0x00cb, "xs", "?" }, 999 { 0x0019, 0x00cc, "xs", "?" }, 1000 { 0x0019, 0x00cd, "SS", "Thickness Disclaimer" }, 1001 { 0x0019, 0x00ce, "SS", "Prescan Type" }, 1002 { 0x0019, 0x00cf, "SS", "Prescan Status" }, 1003 { 0x0019, 0x00d0, "SH", "Raw Data Type" }, 1004 { 0x0019, 0x00d1, "DS", "Flow Sensitivity" }, 1005 { 0x0019, 0x00d2, "xs", "?" }, 1006 { 0x0019, 0x00d3, "xs", "?" }, 1007 { 0x0019, 0x00d4, "xs", "?" }, 1008 { 0x0019, 0x00d5, "xs", "?" }, 1009 { 0x0019, 0x00d6, "xs", "?" }, 1010 { 0x0019, 0x00d7, "xs", "?" }, 1011 { 0x0019, 0x00d8, "xs", "?" }, 1012 { 0x0019, 0x00d9, "xs", "?" }, 1013 { 0x0019, 0x00da, "xs", "?" }, 1014 { 0x0019, 0x00db, "DS", "Back Projector Coefficient" }, 1015 { 0x0019, 0x00dc, "SS", "Primary Speed Correction Used" }, 1016 { 0x0019, 0x00dd, "SS", "Overrange Correction Used" }, 1017 { 0x0019, 0x00de, "DS", "Dynamic Z Alpha Value" }, 1018 { 0x0019, 0x00df, "DS", "User Data" }, 1019 { 0x0019, 0x00e0, "DS", "User Data" }, 1020 { 0x0019, 0x00e1, "xs", "?" }, 1021 { 0x0019, 0x00e2, "xs", "?" }, 1022 { 0x0019, 0x00e3, "xs", "?" }, 1023 { 0x0019, 0x00e4, "LT", "?" }, 1024 { 0x0019, 0x00e5, "IS", "?" }, 1025 { 0x0019, 0x00e6, "US", "?" }, 1026 { 0x0019, 0x00e8, "DS", "?" }, 1027 { 0x0019, 0x00e9, "DS", "?" }, 1028 { 0x0019, 0x00eb, "DS", "?" }, 1029 { 0x0019, 0x00ec, "US", "?" }, 1030 { 0x0019, 0x00f0, "xs", "?" }, 1031 { 0x0019, 0x00f1, "xs", "?" }, 1032 { 0x0019, 0x00f2, "xs", "?" }, 1033 { 0x0019, 0x00f3, "xs", "?" }, 1034 { 0x0019, 0x00f4, "LT", "?" }, 1035 { 0x0019, 0x00f9, "DS", "Transmission Gain" }, 1036 { 0x0019, 0x1015, "UN", "?" }, 1037 { 0x0020, 0x0000, "UL", "Relationship Group Length" }, 1038 { 0x0020, 0x000d, "UI", "Study Instance UID" }, 1039 { 0x0020, 0x000e, "UI", "Series Instance UID" }, 1040 { 0x0020, 0x0010, "SH", "Study ID" }, 1041 { 0x0020, 0x0011, "IS", "Series Number" }, 1042 { 0x0020, 0x0012, "IS", "Acquisition Number" }, 1043 { 0x0020, 0x0013, "IS", "Instance (formerly Image) Number" }, 1044 { 0x0020, 0x0014, "IS", "Isotope Number" }, 1045 { 0x0020, 0x0015, "IS", "Phase Number" }, 1046 { 0x0020, 0x0016, "IS", "Interval Number" }, 1047 { 0x0020, 0x0017, "IS", "Time Slot Number" }, 1048 { 0x0020, 0x0018, "IS", "Angle Number" }, 1049 { 0x0020, 0x0020, "CS", "Patient Orientation" }, 1050 { 0x0020, 0x0022, "IS", "Overlay Number" }, 1051 { 0x0020, 0x0024, "IS", "Curve Number" }, 1052 { 0x0020, 0x0026, "IS", "LUT Number" }, 1053 { 0x0020, 0x0030, "DS", "Image Position" }, 1054 { 0x0020, 0x0032, "DS", "Image Position (Patient)" }, 1055 { 0x0020, 0x0035, "DS", "Image Orientation" }, 1056 { 0x0020, 0x0037, "DS", "Image Orientation (Patient)" }, 1057 { 0x0020, 0x0050, "DS", "Location" }, 1058 { 0x0020, 0x0052, "UI", "Frame of Reference UID" }, 1059 { 0x0020, 0x0060, "CS", "Laterality" }, 1060 { 0x0020, 0x0062, "CS", "Image Laterality" }, 1061 { 0x0020, 0x0070, "LT", "Image Geometry Type" }, 1062 { 0x0020, 0x0080, "LO", "Masking Image" }, 1063 { 0x0020, 0x0100, "IS", "Temporal Position Identifier" }, 1064 { 0x0020, 0x0105, "IS", "Number of Temporal Positions" }, 1065 { 0x0020, 0x0110, "DS", "Temporal Resolution" }, 1066 { 0x0020, 0x1000, "IS", "Series in Study" }, 1067 { 0x0020, 0x1001, "DS", "Acquisitions in Series" }, 1068 { 0x0020, 0x1002, "IS", "Images in Acquisition" }, 1069 { 0x0020, 0x1003, "IS", "Images in Series" }, 1070 { 0x0020, 0x1004, "IS", "Acquisitions in Study" }, 1071 { 0x0020, 0x1005, "IS", "Images in Study" }, 1072 { 0x0020, 0x1020, "LO", "Reference" }, 1073 { 0x0020, 0x1040, "LO", "Position Reference Indicator" }, 1074 { 0x0020, 0x1041, "DS", "Slice Location" }, 1075 { 0x0020, 0x1070, "IS", "Other Study Numbers" }, 1076 { 0x0020, 0x1200, "IS", "Number of Patient Related Studies" }, 1077 { 0x0020, 0x1202, "IS", "Number of Patient Related Series" }, 1078 { 0x0020, 0x1204, "IS", "Number of Patient Related Images" }, 1079 { 0x0020, 0x1206, "IS", "Number of Study Related Series" }, 1080 { 0x0020, 0x1208, "IS", "Number of Study Related Series" }, 1081 { 0x0020, 0x3100, "LO", "Source Image IDs" }, 1082 { 0x0020, 0x3401, "LO", "Modifying Device ID" }, 1083 { 0x0020, 0x3402, "LO", "Modified Image ID" }, 1084 { 0x0020, 0x3403, "xs", "Modified Image Date" }, 1085 { 0x0020, 0x3404, "LO", "Modifying Device Manufacturer" }, 1086 { 0x0020, 0x3405, "xs", "Modified Image Time" }, 1087 { 0x0020, 0x3406, "xs", "Modified Image Description" }, 1088 { 0x0020, 0x4000, "LT", "Image Comments" }, 1089 { 0x0020, 0x5000, "AT", "Original Image Identification" }, 1090 { 0x0020, 0x5002, "LO", "Original Image Identification Nomenclature" }, 1091 { 0x0021, 0x0000, "xs", "?" }, 1092 { 0x0021, 0x0001, "xs", "?" }, 1093 { 0x0021, 0x0002, "xs", "?" }, 1094 { 0x0021, 0x0003, "xs", "?" }, 1095 { 0x0021, 0x0004, "DS", "VOI Position" }, 1096 { 0x0021, 0x0005, "xs", "?" }, 1097 { 0x0021, 0x0006, "IS", "CSI Matrix Size Original" }, 1098 { 0x0021, 0x0007, "xs", "?" }, 1099 { 0x0021, 0x0008, "DS", "Spatial Grid Shift" }, 1100 { 0x0021, 0x0009, "DS", "Signal Limits Minimum" }, 1101 { 0x0021, 0x0010, "xs", "?" }, 1102 { 0x0021, 0x0011, "xs", "?" }, 1103 { 0x0021, 0x0012, "xs", "?" }, 1104 { 0x0021, 0x0013, "xs", "?" }, 1105 { 0x0021, 0x0014, "xs", "?" }, 1106 { 0x0021, 0x0015, "xs", "?" }, 1107 { 0x0021, 0x0016, "xs", "?" }, 1108 { 0x0021, 0x0017, "DS", "EPI Operation Mode Flag" }, 1109 { 0x0021, 0x0018, "xs", "?" }, 1110 { 0x0021, 0x0019, "xs", "?" }, 1111 { 0x0021, 0x0020, "xs", "?" }, 1112 { 0x0021, 0x0021, "xs", "?" }, 1113 { 0x0021, 0x0022, "xs", "?" }, 1114 { 0x0021, 0x0024, "xs", "?" }, 1115 { 0x0021, 0x0025, "US", "?" }, 1116 { 0x0021, 0x0026, "IS", "Image Pixel Offset" }, 1117 { 0x0021, 0x0030, "xs", "?" }, 1118 { 0x0021, 0x0031, "xs", "?" }, 1119 { 0x0021, 0x0032, "xs", "?" }, 1120 { 0x0021, 0x0034, "xs", "?" }, 1121 { 0x0021, 0x0035, "SS", "Series From Which Prescribed" }, 1122 { 0x0021, 0x0036, "xs", "?" }, 1123 { 0x0021, 0x0037, "SS", "Screen Format" }, 1124 { 0x0021, 0x0039, "DS", "Slab Thickness" }, 1125 { 0x0021, 0x0040, "xs", "?" }, 1126 { 0x0021, 0x0041, "xs", "?" }, 1127 { 0x0021, 0x0042, "xs", "?" }, 1128 { 0x0021, 0x0043, "xs", "?" }, 1129 { 0x0021, 0x0044, "xs", "?" }, 1130 { 0x0021, 0x0045, "xs", "?" }, 1131 { 0x0021, 0x0046, "xs", "?" }, 1132 { 0x0021, 0x0047, "xs", "?" }, 1133 { 0x0021, 0x0048, "xs", "?" }, 1134 { 0x0021, 0x0049, "xs", "?" }, 1135 { 0x0021, 0x004a, "xs", "?" }, 1136 { 0x0021, 0x004e, "US", "?" }, 1137 { 0x0021, 0x004f, "xs", "?" }, 1138 { 0x0021, 0x0050, "xs", "?" }, 1139 { 0x0021, 0x0051, "xs", "?" }, 1140 { 0x0021, 0x0052, "xs", "?" }, 1141 { 0x0021, 0x0053, "xs", "?" }, 1142 { 0x0021, 0x0054, "xs", "?" }, 1143 { 0x0021, 0x0055, "xs", "?" }, 1144 { 0x0021, 0x0056, "xs", "?" }, 1145 { 0x0021, 0x0057, "xs", "?" }, 1146 { 0x0021, 0x0058, "xs", "?" }, 1147 { 0x0021, 0x0059, "xs", "?" }, 1148 { 0x0021, 0x005a, "SL", "Integer Slop" }, 1149 { 0x0021, 0x005b, "DS", "Float Slop" }, 1150 { 0x0021, 0x005c, "DS", "Float Slop" }, 1151 { 0x0021, 0x005d, "DS", "Float Slop" }, 1152 { 0x0021, 0x005e, "DS", "Float Slop" }, 1153 { 0x0021, 0x005f, "DS", "Float Slop" }, 1154 { 0x0021, 0x0060, "xs", "?" }, 1155 { 0x0021, 0x0061, "DS", "Image Normal" }, 1156 { 0x0021, 0x0062, "IS", "Reference Type Code" }, 1157 { 0x0021, 0x0063, "DS", "Image Distance" }, 1158 { 0x0021, 0x0065, "US", "Image Positioning History Mask" }, 1159 { 0x0021, 0x006a, "DS", "Image Row" }, 1160 { 0x0021, 0x006b, "DS", "Image Column" }, 1161 { 0x0021, 0x0070, "xs", "?" }, 1162 { 0x0021, 0x0071, "xs", "?" }, 1163 { 0x0021, 0x0072, "xs", "?" }, 1164 { 0x0021, 0x0073, "DS", "Second Repetition Time" }, 1165 { 0x0021, 0x0075, "DS", "Light Brightness" }, 1166 { 0x0021, 0x0076, "DS", "Light Contrast" }, 1167 { 0x0021, 0x007a, "IS", "Overlay Threshold" }, 1168 { 0x0021, 0x007b, "IS", "Surface Threshold" }, 1169 { 0x0021, 0x007c, "IS", "Grey Scale Threshold" }, 1170 { 0x0021, 0x0080, "xs", "?" }, 1171 { 0x0021, 0x0081, "DS", "Auto Window Level Alpha" }, 1172 { 0x0021, 0x0082, "xs", "?" }, 1173 { 0x0021, 0x0083, "DS", "Auto Window Level Window" }, 1174 { 0x0021, 0x0084, "DS", "Auto Window Level Level" }, 1175 { 0x0021, 0x0090, "xs", "?" }, 1176 { 0x0021, 0x0091, "xs", "?" }, 1177 { 0x0021, 0x0092, "xs", "?" }, 1178 { 0x0021, 0x0093, "xs", "?" }, 1179 { 0x0021, 0x0094, "DS", "EPI Change Value of X Component" }, 1180 { 0x0021, 0x0095, "DS", "EPI Change Value of Y Component" }, 1181 { 0x0021, 0x0096, "DS", "EPI Change Value of Z Component" }, 1182 { 0x0021, 0x00a0, "xs", "?" }, 1183 { 0x0021, 0x00a1, "DS", "?" }, 1184 { 0x0021, 0x00a2, "xs", "?" }, 1185 { 0x0021, 0x00a3, "LT", "?" }, 1186 { 0x0021, 0x00a4, "LT", "?" }, 1187 { 0x0021, 0x00a7, "LT", "?" }, 1188 { 0x0021, 0x00b0, "IS", "?" }, 1189 { 0x0021, 0x00c0, "IS", "?" }, 1190 { 0x0023, 0x0000, "xs", "?" }, 1191 { 0x0023, 0x0001, "SL", "Number Of Series In Study" }, 1192 { 0x0023, 0x0002, "SL", "Number Of Unarchived Series" }, 1193 { 0x0023, 0x0010, "xs", "?" }, 1194 { 0x0023, 0x0020, "xs", "?" }, 1195 { 0x0023, 0x0030, "xs", "?" }, 1196 { 0x0023, 0x0040, "xs", "?" }, 1197 { 0x0023, 0x0050, "xs", "?" }, 1198 { 0x0023, 0x0060, "xs", "?" }, 1199 { 0x0023, 0x0070, "xs", "?" }, 1200 { 0x0023, 0x0074, "SL", "Number Of Updates To Info" }, 1201 { 0x0023, 0x007d, "SS", "Indicates If Study Has Complete Info" }, 1202 { 0x0023, 0x0080, "xs", "?" }, 1203 { 0x0023, 0x0090, "xs", "?" }, 1204 { 0x0023, 0x00ff, "US", "?" }, 1205 { 0x0025, 0x0000, "UL", "Group Length" }, 1206 { 0x0025, 0x0006, "SS", "Last Pulse Sequence Used" }, 1207 { 0x0025, 0x0007, "SL", "Images In Series" }, 1208 { 0x0025, 0x0010, "SS", "Landmark Counter" }, 1209 { 0x0025, 0x0011, "SS", "Number Of Acquisitions" }, 1210 { 0x0025, 0x0014, "SL", "Indicates Number Of Updates To Info" }, 1211 { 0x0025, 0x0017, "SL", "Series Complete Flag" }, 1212 { 0x0025, 0x0018, "SL", "Number Of Images Archived" }, 1213 { 0x0025, 0x0019, "SL", "Last Image Number Used" }, 1214 { 0x0025, 0x001a, "SH", "Primary Receiver Suite And Host" }, 1215 { 0x0027, 0x0000, "US", "?" }, 1216 { 0x0027, 0x0006, "SL", "Image Archive Flag" }, 1217 { 0x0027, 0x0010, "SS", "Scout Type" }, 1218 { 0x0027, 0x0011, "UN", "?" }, 1219 { 0x0027, 0x0012, "IS", "?" }, 1220 { 0x0027, 0x0013, "IS", "?" }, 1221 { 0x0027, 0x0014, "IS", "?" }, 1222 { 0x0027, 0x0015, "IS", "?" }, 1223 { 0x0027, 0x0016, "LT", "?" }, 1224 { 0x0027, 0x001c, "SL", "Vma Mamp" }, 1225 { 0x0027, 0x001d, "SS", "Vma Phase" }, 1226 { 0x0027, 0x001e, "SL", "Vma Mod" }, 1227 { 0x0027, 0x001f, "SL", "Vma Clip" }, 1228 { 0x0027, 0x0020, "SS", "Smart Scan On Off Flag" }, 1229 { 0x0027, 0x0030, "SH", "Foreign Image Revision" }, 1230 { 0x0027, 0x0031, "SS", "Imaging Mode" }, 1231 { 0x0027, 0x0032, "SS", "Pulse Sequence" }, 1232 { 0x0027, 0x0033, "SL", "Imaging Options" }, 1233 { 0x0027, 0x0035, "SS", "Plane Type" }, 1234 { 0x0027, 0x0036, "SL", "Oblique Plane" }, 1235 { 0x0027, 0x0040, "SH", "RAS Letter Of Image Location" }, 1236 { 0x0027, 0x0041, "FL", "Image Location" }, 1237 { 0x0027, 0x0042, "FL", "Center R Coord Of Plane Image" }, 1238 { 0x0027, 0x0043, "FL", "Center A Coord Of Plane Image" }, 1239 { 0x0027, 0x0044, "FL", "Center S Coord Of Plane Image" }, 1240 { 0x0027, 0x0045, "FL", "Normal R Coord" }, 1241 { 0x0027, 0x0046, "FL", "Normal A Coord" }, 1242 { 0x0027, 0x0047, "FL", "Normal S Coord" }, 1243 { 0x0027, 0x0048, "FL", "R Coord Of Top Right Corner" }, 1244 { 0x0027, 0x0049, "FL", "A Coord Of Top Right Corner" }, 1245 { 0x0027, 0x004a, "FL", "S Coord Of Top Right Corner" }, 1246 { 0x0027, 0x004b, "FL", "R Coord Of Bottom Right Corner" }, 1247 { 0x0027, 0x004c, "FL", "A Coord Of Bottom Right Corner" }, 1248 { 0x0027, 0x004d, "FL", "S Coord Of Bottom Right Corner" }, 1249 { 0x0027, 0x0050, "FL", "Table Start Location" }, 1250 { 0x0027, 0x0051, "FL", "Table End Location" }, 1251 { 0x0027, 0x0052, "SH", "RAS Letter For Side Of Image" }, 1252 { 0x0027, 0x0053, "SH", "RAS Letter For Anterior Posterior" }, 1253 { 0x0027, 0x0054, "SH", "RAS Letter For Scout Start Loc" }, 1254 { 0x0027, 0x0055, "SH", "RAS Letter For Scout End Loc" }, 1255 { 0x0027, 0x0060, "FL", "Image Dimension X" }, 1256 { 0x0027, 0x0061, "FL", "Image Dimension Y" }, 1257 { 0x0027, 0x0062, "FL", "Number Of Excitations" }, 1258 { 0x0028, 0x0000, "UL", "Image Presentation Group Length" }, 1259 { 0x0028, 0x0002, "US", "Samples per Pixel" }, 1260 { 0x0028, 0x0004, "CS", "Photometric Interpretation" }, 1261 { 0x0028, 0x0005, "US", "Image Dimensions" }, 1262 { 0x0028, 0x0006, "US", "Planar Configuration" }, 1263 { 0x0028, 0x0008, "IS", "Number of Frames" }, 1264 { 0x0028, 0x0009, "AT", "Frame Increment Pointer" }, 1265 { 0x0028, 0x0010, "US", "Rows" }, 1266 { 0x0028, 0x0011, "US", "Columns" }, 1267 { 0x0028, 0x0012, "US", "Planes" }, 1268 { 0x0028, 0x0014, "US", "Ultrasound Color Data Present" }, 1269 { 0x0028, 0x0030, "DS", "Pixel Spacing" }, 1270 { 0x0028, 0x0031, "DS", "Zoom Factor" }, 1271 { 0x0028, 0x0032, "DS", "Zoom Center" }, 1272 { 0x0028, 0x0034, "IS", "Pixel Aspect Ratio" }, 1273 { 0x0028, 0x0040, "LO", "Image Format" }, 1274 { 0x0028, 0x0050, "LT", "Manipulated Image" }, 1275 { 0x0028, 0x0051, "CS", "Corrected Image" }, 1276 { 0x0028, 0x005f, "LO", "Compression Recognition Code" }, 1277 { 0x0028, 0x0060, "LO", "Compression Code" }, 1278 { 0x0028, 0x0061, "SH", "Compression Originator" }, 1279 { 0x0028, 0x0062, "SH", "Compression Label" }, 1280 { 0x0028, 0x0063, "SH", "Compression Description" }, 1281 { 0x0028, 0x0065, "LO", "Compression Sequence" }, 1282 { 0x0028, 0x0066, "AT", "Compression Step Pointers" }, 1283 { 0x0028, 0x0068, "US", "Repeat Interval" }, 1284 { 0x0028, 0x0069, "US", "Bits Grouped" }, 1285 { 0x0028, 0x0070, "US", "Perimeter Table" }, 1286 { 0x0028, 0x0071, "xs", "Perimeter Value" }, 1287 { 0x0028, 0x0080, "US", "Predictor Rows" }, 1288 { 0x0028, 0x0081, "US", "Predictor Columns" }, 1289 { 0x0028, 0x0082, "US", "Predictor Constants" }, 1290 { 0x0028, 0x0090, "LO", "Blocked Pixels" }, 1291 { 0x0028, 0x0091, "US", "Block Rows" }, 1292 { 0x0028, 0x0092, "US", "Block Columns" }, 1293 { 0x0028, 0x0093, "US", "Row Overlap" }, 1294 { 0x0028, 0x0094, "US", "Column Overlap" }, 1295 { 0x0028, 0x0100, "US", "Bits Allocated" }, 1296 { 0x0028, 0x0101, "US", "Bits Stored" }, 1297 { 0x0028, 0x0102, "US", "High Bit" }, 1298 { 0x0028, 0x0103, "US", "Pixel Representation" }, 1299 { 0x0028, 0x0104, "xs", "Smallest Valid Pixel Value" }, 1300 { 0x0028, 0x0105, "xs", "Largest Valid Pixel Value" }, 1301 { 0x0028, 0x0106, "xs", "Smallest Image Pixel Value" }, 1302 { 0x0028, 0x0107, "xs", "Largest Image Pixel Value" }, 1303 { 0x0028, 0x0108, "xs", "Smallest Pixel Value in Series" }, 1304 { 0x0028, 0x0109, "xs", "Largest Pixel Value in Series" }, 1305 { 0x0028, 0x0110, "xs", "Smallest Pixel Value in Plane" }, 1306 { 0x0028, 0x0111, "xs", "Largest Pixel Value in Plane" }, 1307 { 0x0028, 0x0120, "xs", "Pixel Padding Value" }, 1308 { 0x0028, 0x0200, "xs", "Image Location" }, 1309 { 0x0028, 0x0300, "CS", "Quality Control Image" }, 1310 { 0x0028, 0x0301, "CS", "Burned In Annotation" }, 1311 { 0x0028, 0x0400, "xs", "?" }, 1312 { 0x0028, 0x0401, "xs", "?" }, 1313 { 0x0028, 0x0402, "xs", "?" }, 1314 { 0x0028, 0x0403, "xs", "?" }, 1315 { 0x0028, 0x0404, "AT", "Details of Coefficients" }, 1316 { 0x0028, 0x0700, "LO", "DCT Label" }, 1317 { 0x0028, 0x0701, "LO", "Data Block Description" }, 1318 { 0x0028, 0x0702, "AT", "Data Block" }, 1319 { 0x0028, 0x0710, "US", "Normalization Factor Format" }, 1320 { 0x0028, 0x0720, "US", "Zonal Map Number Format" }, 1321 { 0x0028, 0x0721, "AT", "Zonal Map Location" }, 1322 { 0x0028, 0x0722, "US", "Zonal Map Format" }, 1323 { 0x0028, 0x0730, "US", "Adaptive Map Format" }, 1324 { 0x0028, 0x0740, "US", "Code Number Format" }, 1325 { 0x0028, 0x0800, "LO", "Code Label" }, 1326 { 0x0028, 0x0802, "US", "Number of Tables" }, 1327 { 0x0028, 0x0803, "AT", "Code Table Location" }, 1328 { 0x0028, 0x0804, "US", "Bits For Code Word" }, 1329 { 0x0028, 0x0808, "AT", "Image Data Location" }, 1330 { 0x0028, 0x1040, "CS", "Pixel Intensity Relationship" }, 1331 { 0x0028, 0x1041, "SS", "Pixel Intensity Relationship Sign" }, 1332 { 0x0028, 0x1050, "DS", "Window Center" }, 1333 { 0x0028, 0x1051, "DS", "Window Width" }, 1334 { 0x0028, 0x1052, "DS", "Rescale Intercept" }, 1335 { 0x0028, 0x1053, "DS", "Rescale Slope" }, 1336 { 0x0028, 0x1054, "LO", "Rescale Type" }, 1337 { 0x0028, 0x1055, "LO", "Window Center & Width Explanation" }, 1338 { 0x0028, 0x1080, "LO", "Gray Scale" }, 1339 { 0x0028, 0x1090, "CS", "Recommended Viewing Mode" }, 1340 { 0x0028, 0x1100, "xs", "Gray Lookup Table Descriptor" }, 1341 { 0x0028, 0x1101, "xs", "Red Palette Color Lookup Table Descriptor" }, 1342 { 0x0028, 0x1102, "xs", "Green Palette Color Lookup Table Descriptor" }, 1343 { 0x0028, 0x1103, "xs", "Blue Palette Color Lookup Table Descriptor" }, 1344 { 0x0028, 0x1111, "OW", "Large Red Palette Color Lookup Table Descriptor" }, 1345 { 0x0028, 0x1112, "OW", "Large Green Palette Color Lookup Table Descriptor" }, 1346 { 0x0028, 0x1113, "OW", "Large Blue Palette Color Lookup Table Descriptor" }, 1347 { 0x0028, 0x1199, "UI", "Palette Color Lookup Table UID" }, 1348 { 0x0028, 0x1200, "xs", "Gray Lookup Table Data" }, 1349 { 0x0028, 0x1201, "OW", "Red Palette Color Lookup Table Data" }, 1350 { 0x0028, 0x1202, "OW", "Green Palette Color Lookup Table Data" }, 1351 { 0x0028, 0x1203, "OW", "Blue Palette Color Lookup Table Data" }, 1352 { 0x0028, 0x1211, "OW", "Large Red Palette Color Lookup Table Data" }, 1353 { 0x0028, 0x1212, "OW", "Large Green Palette Color Lookup Table Data" }, 1354 { 0x0028, 0x1213, "OW", "Large Blue Palette Color Lookup Table Data" }, 1355 { 0x0028, 0x1214, "UI", "Large Palette Color Lookup Table UID" }, 1356 { 0x0028, 0x1221, "OW", "Segmented Red Palette Color Lookup Table Data" }, 1357 { 0x0028, 0x1222, "OW", "Segmented Green Palette Color Lookup Table Data" }, 1358 { 0x0028, 0x1223, "OW", "Segmented Blue Palette Color Lookup Table Data" }, 1359 { 0x0028, 0x1300, "CS", "Implant Present" }, 1360 { 0x0028, 0x2110, "CS", "Lossy Image Compression" }, 1361 { 0x0028, 0x2112, "DS", "Lossy Image Compression Ratio" }, 1362 { 0x0028, 0x3000, "SQ", "Modality LUT Sequence" }, 1363 { 0x0028, 0x3002, "US", "LUT Descriptor" }, 1364 { 0x0028, 0x3003, "LO", "LUT Explanation" }, 1365 { 0x0028, 0x3004, "LO", "Modality LUT Type" }, 1366 { 0x0028, 0x3006, "US", "LUT Data" }, 1367 { 0x0028, 0x3010, "xs", "VOI LUT Sequence" }, 1368 { 0x0028, 0x4000, "LT", "Image Presentation Comments" }, 1369 { 0x0028, 0x5000, "SQ", "Biplane Acquisition Sequence" }, 1370 { 0x0028, 0x6010, "US", "Representative Frame Number" }, 1371 { 0x0028, 0x6020, "US", "Frame Numbers of Interest" }, 1372 { 0x0028, 0x6022, "LO", "Frame of Interest Description" }, 1373 { 0x0028, 0x6030, "US", "Mask Pointer" }, 1374 { 0x0028, 0x6040, "US", "R Wave Pointer" }, 1375 { 0x0028, 0x6100, "SQ", "Mask Subtraction Sequence" }, 1376 { 0x0028, 0x6101, "CS", "Mask Operation" }, 1377 { 0x0028, 0x6102, "US", "Applicable Frame Range" }, 1378 { 0x0028, 0x6110, "US", "Mask Frame Numbers" }, 1379 { 0x0028, 0x6112, "US", "Contrast Frame Averaging" }, 1380 { 0x0028, 0x6114, "FL", "Mask Sub-Pixel Shift" }, 1381 { 0x0028, 0x6120, "SS", "TID Offset" }, 1382 { 0x0028, 0x6190, "ST", "Mask Operation Explanation" }, 1383 { 0x0029, 0x0000, "xs", "?" }, 1384 { 0x0029, 0x0001, "xs", "?" }, 1385 { 0x0029, 0x0002, "xs", "?" }, 1386 { 0x0029, 0x0003, "xs", "?" }, 1387 { 0x0029, 0x0004, "xs", "?" }, 1388 { 0x0029, 0x0005, "xs", "?" }, 1389 { 0x0029, 0x0006, "xs", "?" }, 1390 { 0x0029, 0x0007, "SL", "Lower Range Of Pixels" }, 1391 { 0x0029, 0x0008, "SH", "Lower Range Of Pixels" }, 1392 { 0x0029, 0x0009, "SH", "Lower Range Of Pixels" }, 1393 { 0x0029, 0x000a, "SS", "Lower Range Of Pixels" }, 1394 { 0x0029, 0x000c, "xs", "?" }, 1395 { 0x0029, 0x000e, "CS", "Zoom Enable Status" }, 1396 { 0x0029, 0x000f, "CS", "Zoom Select Status" }, 1397 { 0x0029, 0x0010, "xs", "?" }, 1398 { 0x0029, 0x0011, "xs", "?" }, 1399 { 0x0029, 0x0013, "LT", "?" }, 1400 { 0x0029, 0x0015, "xs", "?" }, 1401 { 0x0029, 0x0016, "SL", "Lower Range Of Pixels" }, 1402 { 0x0029, 0x0017, "SL", "Lower Range Of Pixels" }, 1403 { 0x0029, 0x0018, "SL", "Upper Range Of Pixels" }, 1404 { 0x0029, 0x001a, "SL", "Length Of Total Info In Bytes" }, 1405 { 0x0029, 0x001e, "xs", "?" }, 1406 { 0x0029, 0x001f, "xs", "?" }, 1407 { 0x0029, 0x0020, "xs", "?" }, 1408 { 0x0029, 0x0022, "IS", "Pixel Quality Value" }, 1409 { 0x0029, 0x0025, "LT", "Processed Pixel Data Quality" }, 1410 { 0x0029, 0x0026, "SS", "Version Of Info Structure" }, 1411 { 0x0029, 0x0030, "xs", "?" }, 1412 { 0x0029, 0x0031, "xs", "?" }, 1413 { 0x0029, 0x0032, "xs", "?" }, 1414 { 0x0029, 0x0033, "xs", "?" }, 1415 { 0x0029, 0x0034, "xs", "?" }, 1416 { 0x0029, 0x0035, "SL", "Advantage Comp Underflow" }, 1417 { 0x0029, 0x0038, "US", "?" }, 1418 { 0x0029, 0x0040, "xs", "?" }, 1419 { 0x0029, 0x0041, "DS", "Magnifying Glass Rectangle" }, 1420 { 0x0029, 0x0043, "DS", "Magnifying Glass Factor" }, 1421 { 0x0029, 0x0044, "US", "Magnifying Glass Function" }, 1422 { 0x0029, 0x004e, "CS", "Magnifying Glass Enable Status" }, 1423 { 0x0029, 0x004f, "CS", "Magnifying Glass Select Status" }, 1424 { 0x0029, 0x0050, "xs", "?" }, 1425 { 0x0029, 0x0051, "LT", "Exposure Code" }, 1426 { 0x0029, 0x0052, "LT", "Sort Code" }, 1427 { 0x0029, 0x0053, "LT", "?" }, 1428 { 0x0029, 0x0060, "xs", "?" }, 1429 { 0x0029, 0x0061, "xs", "?" }, 1430 { 0x0029, 0x0067, "LT", "?" }, 1431 { 0x0029, 0x0070, "xs", "?" }, 1432 { 0x0029, 0x0071, "xs", "?" }, 1433 { 0x0029, 0x0072, "xs", "?" }, 1434 { 0x0029, 0x0077, "CS", "Window Select Status" }, 1435 { 0x0029, 0x0078, "LT", "ECG Display Printing ID" }, 1436 { 0x0029, 0x0079, "CS", "ECG Display Printing" }, 1437 { 0x0029, 0x007e, "CS", "ECG Display Printing Enable Status" }, 1438 { 0x0029, 0x007f, "CS", "ECG Display Printing Select Status" }, 1439 { 0x0029, 0x0080, "xs", "?" }, 1440 { 0x0029, 0x0081, "xs", "?" }, 1441 { 0x0029, 0x0082, "IS", "View Zoom" }, 1442 { 0x0029, 0x0083, "IS", "View Transform" }, 1443 { 0x0029, 0x008e, "CS", "Physiological Display Enable Status" }, 1444 { 0x0029, 0x008f, "CS", "Physiological Display Select Status" }, 1445 { 0x0029, 0x0090, "IS", "?" }, 1446 { 0x0029, 0x0099, "LT", "Shutter Type" }, 1447 { 0x0029, 0x00a0, "US", "Rows of Rectangular Shutter" }, 1448 { 0x0029, 0x00a1, "US", "Columns of Rectangular Shutter" }, 1449 { 0x0029, 0x00a2, "US", "Origin of Rectangular Shutter" }, 1450 { 0x0029, 0x00b0, "US", "Radius of Circular Shutter" }, 1451 { 0x0029, 0x00b2, "US", "Origin of Circular Shutter" }, 1452 { 0x0029, 0x00c0, "LT", "Functional Shutter ID" }, 1453 { 0x0029, 0x00c1, "xs", "?" }, 1454 { 0x0029, 0x00c3, "IS", "Scan Resolution" }, 1455 { 0x0029, 0x00c4, "IS", "Field of View" }, 1456 { 0x0029, 0x00c5, "LT", "Field Of Shutter Rectangle" }, 1457 { 0x0029, 0x00ce, "CS", "Shutter Enable Status" }, 1458 { 0x0029, 0x00cf, "CS", "Shutter Select Status" }, 1459 { 0x0029, 0x00d0, "IS", "?" }, 1460 { 0x0029, 0x00d1, "IS", "?" }, 1461 { 0x0029, 0x00d5, "LT", "Slice Thickness" }, 1462 { 0x0031, 0x0010, "LT", "Request UID" }, 1463 { 0x0031, 0x0012, "LT", "Examination Reason" }, 1464 { 0x0031, 0x0030, "DA", "Requested Date" }, 1465 { 0x0031, 0x0032, "TM", "Worklist Request Start Time" }, 1466 { 0x0031, 0x0033, "TM", "Worklist Request End Time" }, 1467 { 0x0031, 0x0045, "LT", "Requesting Physician" }, 1468 { 0x0031, 0x004a, "TM", "Requested Time" }, 1469 { 0x0031, 0x0050, "LT", "Requested Physician" }, 1470 { 0x0031, 0x0080, "LT", "Requested Location" }, 1471 { 0x0032, 0x0000, "UL", "Study Group Length" }, 1472 { 0x0032, 0x000a, "CS", "Study Status ID" }, 1473 { 0x0032, 0x000c, "CS", "Study Priority ID" }, 1474 { 0x0032, 0x0012, "LO", "Study ID Issuer" }, 1475 { 0x0032, 0x0032, "DA", "Study Verified Date" }, 1476 { 0x0032, 0x0033, "TM", "Study Verified Time" }, 1477 { 0x0032, 0x0034, "DA", "Study Read Date" }, 1478 { 0x0032, 0x0035, "TM", "Study Read Time" }, 1479 { 0x0032, 0x1000, "DA", "Scheduled Study Start Date" }, 1480 { 0x0032, 0x1001, "TM", "Scheduled Study Start Time" }, 1481 { 0x0032, 0x1010, "DA", "Scheduled Study Stop Date" }, 1482 { 0x0032, 0x1011, "TM", "Scheduled Study Stop Time" }, 1483 { 0x0032, 0x1020, "LO", "Scheduled Study Location" }, 1484 { 0x0032, 0x1021, "AE", "Scheduled Study Location AE Title(s)" }, 1485 { 0x0032, 0x1030, "LO", "Reason for Study" }, 1486 { 0x0032, 0x1032, "PN", "Requesting Physician" }, 1487 { 0x0032, 0x1033, "LO", "Requesting Service" }, 1488 { 0x0032, 0x1040, "DA", "Study Arrival Date" }, 1489 { 0x0032, 0x1041, "TM", "Study Arrival Time" }, 1490 { 0x0032, 0x1050, "DA", "Study Completion Date" }, 1491 { 0x0032, 0x1051, "TM", "Study Completion Time" }, 1492 { 0x0032, 0x1055, "CS", "Study Component Status ID" }, 1493 { 0x0032, 0x1060, "LO", "Requested Procedure Description" }, 1494 { 0x0032, 0x1064, "SQ", "Requested Procedure Code Sequence" }, 1495 { 0x0032, 0x1070, "LO", "Requested Contrast Agent" }, 1496 { 0x0032, 0x4000, "LT", "Study Comments" }, 1497 { 0x0033, 0x0001, "UN", "?" }, 1498 { 0x0033, 0x0002, "UN", "?" }, 1499 { 0x0033, 0x0005, "UN", "?" }, 1500 { 0x0033, 0x0006, "UN", "?" }, 1501 { 0x0033, 0x0010, "LT", "Patient Study UID" }, 1502 { 0x0037, 0x0010, "LO", "ReferringDepartment" }, 1503 { 0x0037, 0x0020, "US", "ScreenNumber" }, 1504 { 0x0037, 0x0040, "SH", "LeftOrientation" }, 1505 { 0x0037, 0x0042, "SH", "RightOrientation" }, 1506 { 0x0037, 0x0050, "CS", "Inversion" }, 1507 { 0x0037, 0x0060, "US", "DSA" }, 1508 { 0x0038, 0x0000, "UL", "Visit Group Length" }, 1509 { 0x0038, 0x0004, "SQ", "Referenced Patient Alias Sequence" }, 1510 { 0x0038, 0x0008, "CS", "Visit Status ID" }, 1511 { 0x0038, 0x0010, "LO", "Admission ID" }, 1512 { 0x0038, 0x0011, "LO", "Issuer of Admission ID" }, 1513 { 0x0038, 0x0016, "LO", "Route of Admissions" }, 1514 { 0x0038, 0x001a, "DA", "Scheduled Admission Date" }, 1515 { 0x0038, 0x001b, "TM", "Scheduled Admission Time" }, 1516 { 0x0038, 0x001c, "DA", "Scheduled Discharge Date" }, 1517 { 0x0038, 0x001d, "TM", "Scheduled Discharge Time" }, 1518 { 0x0038, 0x001e, "LO", "Scheduled Patient Institution Residence" }, 1519 { 0x0038, 0x0020, "DA", "Admitting Date" }, 1520 { 0x0038, 0x0021, "TM", "Admitting Time" }, 1521 { 0x0038, 0x0030, "DA", "Discharge Date" }, 1522 { 0x0038, 0x0032, "TM", "Discharge Time" }, 1523 { 0x0038, 0x0040, "LO", "Discharge Diagnosis Description" }, 1524 { 0x0038, 0x0044, "SQ", "Discharge Diagnosis Code Sequence" }, 1525 { 0x0038, 0x0050, "LO", "Special Needs" }, 1526 { 0x0038, 0x0300, "LO", "Current Patient Location" }, 1527 { 0x0038, 0x0400, "LO", "Patient's Institution Residence" }, 1528 { 0x0038, 0x0500, "LO", "Patient State" }, 1529 { 0x0038, 0x4000, "LT", "Visit Comments" }, 1530 { 0x0039, 0x0080, "IS", "Private Entity Number" }, 1531 { 0x0039, 0x0085, "DA", "Private Entity Date" }, 1532 { 0x0039, 0x0090, "TM", "Private Entity Time" }, 1533 { 0x0039, 0x0095, "LO", "Private Entity Launch Command" }, 1534 { 0x0039, 0x00aa, "CS", "Private Entity Type" }, 1535 { 0x003a, 0x0002, "SQ", "Waveform Sequence" }, 1536 { 0x003a, 0x0005, "US", "Waveform Number of Channels" }, 1537 { 0x003a, 0x0010, "UL", "Waveform Number of Samples" }, 1538 { 0x003a, 0x001a, "DS", "Sampling Frequency" }, 1539 { 0x003a, 0x0020, "SH", "Group Label" }, 1540 { 0x003a, 0x0103, "CS", "Waveform Sample Value Representation" }, 1541 { 0x003a, 0x0122, "OB", "Waveform Padding Value" }, 1542 { 0x003a, 0x0200, "SQ", "Channel Definition" }, 1543 { 0x003a, 0x0202, "IS", "Waveform Channel Number" }, 1544 { 0x003a, 0x0203, "SH", "Channel Label" }, 1545 { 0x003a, 0x0205, "CS", "Channel Status" }, 1546 { 0x003a, 0x0208, "SQ", "Channel Source" }, 1547 { 0x003a, 0x0209, "SQ", "Channel Source Modifiers" }, 1548 { 0x003a, 0x020a, "SQ", "Differential Channel Source" }, 1549 { 0x003a, 0x020b, "SQ", "Differential Channel Source Modifiers" }, 1550 { 0x003a, 0x0210, "DS", "Channel Sensitivity" }, 1551 { 0x003a, 0x0211, "SQ", "Channel Sensitivity Units" }, 1552 { 0x003a, 0x0212, "DS", "Channel Sensitivity Correction Factor" }, 1553 { 0x003a, 0x0213, "DS", "Channel Baseline" }, 1554 { 0x003a, 0x0214, "DS", "Channel Time Skew" }, 1555 { 0x003a, 0x0215, "DS", "Channel Sample Skew" }, 1556 { 0x003a, 0x0216, "OB", "Channel Minimum Value" }, 1557 { 0x003a, 0x0217, "OB", "Channel Maximum Value" }, 1558 { 0x003a, 0x0218, "DS", "Channel Offset" }, 1559 { 0x003a, 0x021a, "US", "Bits Per Sample" }, 1560 { 0x003a, 0x0220, "DS", "Filter Low Frequency" }, 1561 { 0x003a, 0x0221, "DS", "Filter High Frequency" }, 1562 { 0x003a, 0x0222, "DS", "Notch Filter Frequency" }, 1563 { 0x003a, 0x0223, "DS", "Notch Filter Bandwidth" }, 1564 { 0x003a, 0x1000, "OB", "Waveform Data" }, 1565 { 0x0040, 0x0001, "AE", "Scheduled Station AE Title" }, 1566 { 0x0040, 0x0002, "DA", "Scheduled Procedure Step Start Date" }, 1567 { 0x0040, 0x0003, "TM", "Scheduled Procedure Step Start Time" }, 1568 { 0x0040, 0x0004, "DA", "Scheduled Procedure Step End Date" }, 1569 { 0x0040, 0x0005, "TM", "Scheduled Procedure Step End Time" }, 1570 { 0x0040, 0x0006, "PN", "Scheduled Performing Physician Name" }, 1571 { 0x0040, 0x0007, "LO", "Scheduled Procedure Step Description" }, 1572 { 0x0040, 0x0008, "SQ", "Scheduled Action Item Code Sequence" }, 1573 { 0x0040, 0x0009, "SH", "Scheduled Procedure Step ID" }, 1574 { 0x0040, 0x0010, "SH", "Scheduled Station Name" }, 1575 { 0x0040, 0x0011, "SH", "Scheduled Procedure Step Location" }, 1576 { 0x0040, 0x0012, "LO", "Pre-Medication" }, 1577 { 0x0040, 0x0020, "CS", "Scheduled Procedure Step Status" }, 1578 { 0x0040, 0x0100, "SQ", "Scheduled Procedure Step Sequence" }, 1579 { 0x0040, 0x0302, "US", "Entrance Dose" }, 1580 { 0x0040, 0x0303, "US", "Exposed Area" }, 1581 { 0x0040, 0x0306, "DS", "Distance Source to Entrance" }, 1582 { 0x0040, 0x0307, "DS", "Distance Source to Support" }, 1583 { 0x0040, 0x0310, "ST", "Comments On Radiation Dose" }, 1584 { 0x0040, 0x0312, "DS", "X-Ray Output" }, 1585 { 0x0040, 0x0314, "DS", "Half Value Layer" }, 1586 { 0x0040, 0x0316, "DS", "Organ Dose" }, 1587 { 0x0040, 0x0318, "CS", "Organ Exposed" }, 1588 { 0x0040, 0x0400, "LT", "Comments On Scheduled Procedure Step" }, 1589 { 0x0040, 0x050a, "LO", "Specimen Accession Number" }, 1590 { 0x0040, 0x0550, "SQ", "Specimen Sequence" }, 1591 { 0x0040, 0x0551, "LO", "Specimen Identifier" }, 1592 { 0x0040, 0x0552, "SQ", "Specimen Description Sequence" }, 1593 { 0x0040, 0x0553, "ST", "Specimen Description" }, 1594 { 0x0040, 0x0555, "SQ", "Acquisition Context Sequence" }, 1595 { 0x0040, 0x0556, "ST", "Acquisition Context Description" }, 1596 { 0x0040, 0x059a, "SQ", "Specimen Type Code Sequence" }, 1597 { 0x0040, 0x06fa, "LO", "Slide Identifier" }, 1598 { 0x0040, 0x071a, "SQ", "Image Center Point Coordinates Sequence" }, 1599 { 0x0040, 0x072a, "DS", "X Offset In Slide Coordinate System" }, 1600 { 0x0040, 0x073a, "DS", "Y Offset In Slide Coordinate System" }, 1601 { 0x0040, 0x074a, "DS", "Z Offset In Slide Coordinate System" }, 1602 { 0x0040, 0x08d8, "SQ", "Pixel Spacing Sequence" }, 1603 { 0x0040, 0x08da, "SQ", "Coordinate System Axis Code Sequence" }, 1604 { 0x0040, 0x08ea, "SQ", "Measurement Units Code Sequence" }, 1605 { 0x0040, 0x09f8, "SQ", "Vital Stain Code Sequence" }, 1606 { 0x0040, 0x1001, "SH", "Requested Procedure ID" }, 1607 { 0x0040, 0x1002, "LO", "Reason For Requested Procedure" }, 1608 { 0x0040, 0x1003, "SH", "Requested Procedure Priority" }, 1609 { 0x0040, 0x1004, "LO", "Patient Transport Arrangements" }, 1610 { 0x0040, 0x1005, "LO", "Requested Procedure Location" }, 1611 { 0x0040, 0x1006, "SH", "Placer Order Number of Procedure" }, 1612 { 0x0040, 0x1007, "SH", "Filler Order Number of Procedure" }, 1613 { 0x0040, 0x1008, "LO", "Confidentiality Code" }, 1614 { 0x0040, 0x1009, "SH", "Reporting Priority" }, 1615 { 0x0040, 0x1010, "PN", "Names of Intended Recipients of Results" }, 1616 { 0x0040, 0x1400, "LT", "Requested Procedure Comments" }, 1617 { 0x0040, 0x2001, "LO", "Reason For Imaging Service Request" }, 1618 { 0x0040, 0x2004, "DA", "Issue Date of Imaging Service Request" }, 1619 { 0x0040, 0x2005, "TM", "Issue Time of Imaging Service Request" }, 1620 { 0x0040, 0x2006, "SH", "Placer Order Number of Imaging Service Request" }, 1621 { 0x0040, 0x2007, "SH", "Filler Order Number of Imaging Service Request" }, 1622 { 0x0040, 0x2008, "PN", "Order Entered By" }, 1623 { 0x0040, 0x2009, "SH", "Order Enterer Location" }, 1624 { 0x0040, 0x2010, "SH", "Order Callback Phone Number" }, 1625 { 0x0040, 0x2400, "LT", "Imaging Service Request Comments" }, 1626 { 0x0040, 0x3001, "LO", "Confidentiality Constraint On Patient Data" }, 1627 { 0x0040, 0xa007, "CS", "Findings Flag" }, 1628 { 0x0040, 0xa020, "SQ", "Findings Sequence" }, 1629 { 0x0040, 0xa021, "UI", "Findings Group UID" }, 1630 { 0x0040, 0xa022, "UI", "Referenced Findings Group UID" }, 1631 { 0x0040, 0xa023, "DA", "Findings Group Recording Date" }, 1632 { 0x0040, 0xa024, "TM", "Findings Group Recording Time" }, 1633 { 0x0040, 0xa026, "SQ", "Findings Source Category Code Sequence" }, 1634 { 0x0040, 0xa027, "LO", "Documenting Organization" }, 1635 { 0x0040, 0xa028, "SQ", "Documenting Organization Identifier Code Sequence" }, 1636 { 0x0040, 0xa032, "LO", "History Reliability Qualifier Description" }, 1637 { 0x0040, 0xa043, "SQ", "Concept Name Code Sequence" }, 1638 { 0x0040, 0xa047, "LO", "Measurement Precision Description" }, 1639 { 0x0040, 0xa057, "CS", "Urgency or Priority Alerts" }, 1640 { 0x0040, 0xa060, "LO", "Sequencing Indicator" }, 1641 { 0x0040, 0xa066, "SQ", "Document Identifier Code Sequence" }, 1642 { 0x0040, 0xa067, "PN", "Document Author" }, 1643 { 0x0040, 0xa068, "SQ", "Document Author Identifier Code Sequence" }, 1644 { 0x0040, 0xa070, "SQ", "Identifier Code Sequence" }, 1645 { 0x0040, 0xa073, "LO", "Object String Identifier" }, 1646 { 0x0040, 0xa074, "OB", "Object Binary Identifier" }, 1647 { 0x0040, 0xa075, "PN", "Documenting Observer" }, 1648 { 0x0040, 0xa076, "SQ", "Documenting Observer Identifier Code Sequence" }, 1649 { 0x0040, 0xa078, "SQ", "Observation Subject Identifier Code Sequence" }, 1650 { 0x0040, 0xa080, "SQ", "Person Identifier Code Sequence" }, 1651 { 0x0040, 0xa085, "SQ", "Procedure Identifier Code Sequence" }, 1652 { 0x0040, 0xa088, "LO", "Object Directory String Identifier" }, 1653 { 0x0040, 0xa089, "OB", "Object Directory Binary Identifier" }, 1654 { 0x0040, 0xa090, "CS", "History Reliability Qualifier" }, 1655 { 0x0040, 0xa0a0, "CS", "Referenced Type of Data" }, 1656 { 0x0040, 0xa0b0, "US", "Referenced Waveform Channels" }, 1657 { 0x0040, 0xa110, "DA", "Date of Document or Verbal Transaction" }, 1658 { 0x0040, 0xa112, "TM", "Time of Document Creation or Verbal Transaction" }, 1659 { 0x0040, 0xa121, "DA", "Date" }, 1660 { 0x0040, 0xa122, "TM", "Time" }, 1661 { 0x0040, 0xa123, "PN", "Person Name" }, 1662 { 0x0040, 0xa124, "SQ", "Referenced Person Sequence" }, 1663 { 0x0040, 0xa125, "CS", "Report Status ID" }, 1664 { 0x0040, 0xa130, "CS", "Temporal Range Type" }, 1665 { 0x0040, 0xa132, "UL", "Referenced Sample Offsets" }, 1666 { 0x0040, 0xa136, "US", "Referenced Frame Numbers" }, 1667 { 0x0040, 0xa138, "DS", "Referenced Time Offsets" }, 1668 { 0x0040, 0xa13a, "DT", "Referenced Datetime" }, 1669 { 0x0040, 0xa160, "UT", "Text Value" }, 1670 { 0x0040, 0xa167, "SQ", "Observation Category Code Sequence" }, 1671 { 0x0040, 0xa168, "SQ", "Concept Code Sequence" }, 1672 { 0x0040, 0xa16a, "ST", "Bibliographic Citation" }, 1673 { 0x0040, 0xa170, "CS", "Observation Class" }, 1674 { 0x0040, 0xa171, "UI", "Observation UID" }, 1675 { 0x0040, 0xa172, "UI", "Referenced Observation UID" }, 1676 { 0x0040, 0xa173, "CS", "Referenced Observation Class" }, 1677 { 0x0040, 0xa174, "CS", "Referenced Object Observation Class" }, 1678 { 0x0040, 0xa180, "US", "Annotation Group Number" }, 1679 { 0x0040, 0xa192, "DA", "Observation Date" }, 1680 { 0x0040, 0xa193, "TM", "Observation Time" }, 1681 { 0x0040, 0xa194, "CS", "Measurement Automation" }, 1682 { 0x0040, 0xa195, "SQ", "Concept Name Code Sequence Modifier" }, 1683 { 0x0040, 0xa224, "ST", "Identification Description" }, 1684 { 0x0040, 0xa290, "CS", "Coordinates Set Geometric Type" }, 1685 { 0x0040, 0xa296, "SQ", "Algorithm Code Sequence" }, 1686 { 0x0040, 0xa297, "ST", "Algorithm Description" }, 1687 { 0x0040, 0xa29a, "SL", "Pixel Coordinates Set" }, 1688 { 0x0040, 0xa300, "SQ", "Measured Value Sequence" }, 1689 { 0x0040, 0xa307, "PN", "Current Observer" }, 1690 { 0x0040, 0xa30a, "DS", "Numeric Value" }, 1691 { 0x0040, 0xa313, "SQ", "Referenced Accession Sequence" }, 1692 { 0x0040, 0xa33a, "ST", "Report Status Comment" }, 1693 { 0x0040, 0xa340, "SQ", "Procedure Context Sequence" }, 1694 { 0x0040, 0xa352, "PN", "Verbal Source" }, 1695 { 0x0040, 0xa353, "ST", "Address" }, 1696 { 0x0040, 0xa354, "LO", "Telephone Number" }, 1697 { 0x0040, 0xa358, "SQ", "Verbal Source Identifier Code Sequence" }, 1698 { 0x0040, 0xa380, "SQ", "Report Detail Sequence" }, 1699 { 0x0040, 0xa402, "UI", "Observation Subject UID" }, 1700 { 0x0040, 0xa403, "CS", "Observation Subject Class" }, 1701 { 0x0040, 0xa404, "SQ", "Observation Subject Type Code Sequence" }, 1702 { 0x0040, 0xa600, "CS", "Observation Subject Context Flag" }, 1703 { 0x0040, 0xa601, "CS", "Observer Context Flag" }, 1704 { 0x0040, 0xa603, "CS", "Procedure Context Flag" }, 1705 { 0x0040, 0xa730, "SQ", "Observations Sequence" }, 1706 { 0x0040, 0xa731, "SQ", "Relationship Sequence" }, 1707 { 0x0040, 0xa732, "SQ", "Relationship Type Code Sequence" }, 1708 { 0x0040, 0xa744, "SQ", "Language Code Sequence" }, 1709 { 0x0040, 0xa992, "ST", "Uniform Resource Locator" }, 1710 { 0x0040, 0xb020, "SQ", "Annotation Sequence" }, 1711 { 0x0040, 0xdb73, "SQ", "Relationship Type Code Sequence Modifier" }, 1712 { 0x0041, 0x0000, "LT", "Papyrus Comments" }, 1713 { 0x0041, 0x0010, "xs", "?" }, 1714 { 0x0041, 0x0011, "xs", "?" }, 1715 { 0x0041, 0x0012, "UL", "Pixel Offset" }, 1716 { 0x0041, 0x0013, "SQ", "Image Identifier Sequence" }, 1717 { 0x0041, 0x0014, "SQ", "External File Reference Sequence" }, 1718 { 0x0041, 0x0015, "US", "Number of Images" }, 1719 { 0x0041, 0x0020, "xs", "?" }, 1720 { 0x0041, 0x0021, "UI", "Referenced SOP Class UID" }, 1721 { 0x0041, 0x0022, "UI", "Referenced SOP Instance UID" }, 1722 { 0x0041, 0x0030, "xs", "?" }, 1723 { 0x0041, 0x0031, "xs", "?" }, 1724 { 0x0041, 0x0032, "xs", "?" }, 1725 { 0x0041, 0x0034, "DA", "Modified Date" }, 1726 { 0x0041, 0x0036, "TM", "Modified Time" }, 1727 { 0x0041, 0x0040, "LT", "Owner Name" }, 1728 { 0x0041, 0x0041, "UI", "Referenced Image SOP Class UID" }, 1729 { 0x0041, 0x0042, "UI", "Referenced Image SOP Instance UID" }, 1730 { 0x0041, 0x0050, "xs", "?" }, 1731 { 0x0041, 0x0060, "UL", "Number of Images" }, 1732 { 0x0041, 0x0062, "UL", "Number of Other" }, 1733 { 0x0041, 0x00a0, "LT", "External Folder Element DSID" }, 1734 { 0x0041, 0x00a1, "US", "External Folder Element Data Set Type" }, 1735 { 0x0041, 0x00a2, "LT", "External Folder Element File Location" }, 1736 { 0x0041, 0x00a3, "UL", "External Folder Element Length" }, 1737 { 0x0041, 0x00b0, "LT", "Internal Folder Element DSID" }, 1738 { 0x0041, 0x00b1, "US", "Internal Folder Element Data Set Type" }, 1739 { 0x0041, 0x00b2, "UL", "Internal Offset To Data Set" }, 1740 { 0x0041, 0x00b3, "UL", "Internal Offset To Image" }, 1741 { 0x0043, 0x0001, "SS", "Bitmap Of Prescan Options" }, 1742 { 0x0043, 0x0002, "SS", "Gradient Offset In X" }, 1743 { 0x0043, 0x0003, "SS", "Gradient Offset In Y" }, 1744 { 0x0043, 0x0004, "SS", "Gradient Offset In Z" }, 1745 { 0x0043, 0x0005, "SS", "Image Is Original Or Unoriginal" }, 1746 { 0x0043, 0x0006, "SS", "Number Of EPI Shots" }, 1747 { 0x0043, 0x0007, "SS", "Views Per Segment" }, 1748 { 0x0043, 0x0008, "SS", "Respiratory Rate In BPM" }, 1749 { 0x0043, 0x0009, "SS", "Respiratory Trigger Point" }, 1750 { 0x0043, 0x000a, "SS", "Type Of Receiver Used" }, 1751 { 0x0043, 0x000b, "DS", "Peak Rate Of Change Of Gradient Field" }, 1752 { 0x0043, 0x000c, "DS", "Limits In Units Of Percent" }, 1753 { 0x0043, 0x000d, "DS", "PSD Estimated Limit" }, 1754 { 0x0043, 0x000e, "DS", "PSD Estimated Limit In Tesla Per Second" }, 1755 { 0x0043, 0x000f, "DS", "SAR Avg Head" }, 1756 { 0x0043, 0x0010, "US", "Window Value" }, 1757 { 0x0043, 0x0011, "US", "Total Input Views" }, 1758 { 0x0043, 0x0012, "SS", "Xray Chain" }, 1759 { 0x0043, 0x0013, "SS", "Recon Kernel Parameters" }, 1760 { 0x0043, 0x0014, "SS", "Calibration Parameters" }, 1761 { 0x0043, 0x0015, "SS", "Total Output Views" }, 1762 { 0x0043, 0x0016, "SS", "Number Of Overranges" }, 1763 { 0x0043, 0x0017, "DS", "IBH Image Scale Factors" }, 1764 { 0x0043, 0x0018, "DS", "BBH Coefficients" }, 1765 { 0x0043, 0x0019, "SS", "Number Of BBH Chains To Blend" }, 1766 { 0x0043, 0x001a, "SL", "Starting Channel Number" }, 1767 { 0x0043, 0x001b, "SS", "PPScan Parameters" }, 1768 { 0x0043, 0x001c, "SS", "GE Image Integrity" }, 1769 { 0x0043, 0x001d, "SS", "Level Value" }, 1770 { 0x0043, 0x001e, "xs", "?" }, 1771 { 0x0043, 0x001f, "SL", "Max Overranges In A View" }, 1772 { 0x0043, 0x0020, "DS", "Avg Overranges All Views" }, 1773 { 0x0043, 0x0021, "SS", "Corrected Afterglow Terms" }, 1774 { 0x0043, 0x0025, "SS", "Reference Channels" }, 1775 { 0x0043, 0x0026, "US", "No Views Ref Channels Blocked" }, 1776 { 0x0043, 0x0027, "xs", "?" }, 1777 { 0x0043, 0x0028, "OB", "Unique Image Identifier" }, 1778 { 0x0043, 0x0029, "OB", "Histogram Tables" }, 1779 { 0x0043, 0x002a, "OB", "User Defined Data" }, 1780 { 0x0043, 0x002b, "SS", "Private Scan Options" }, 1781 { 0x0043, 0x002c, "SS", "Effective Echo Spacing" }, 1782 { 0x0043, 0x002d, "SH", "String Slop Field 1" }, 1783 { 0x0043, 0x002e, "SH", "String Slop Field 2" }, 1784 { 0x0043, 0x002f, "SS", "Raw Data Type" }, 1785 { 0x0043, 0x0030, "SS", "Raw Data Type" }, 1786 { 0x0043, 0x0031, "DS", "RA Coord Of Target Recon Centre" }, 1787 { 0x0043, 0x0032, "SS", "Raw Data Type" }, 1788 { 0x0043, 0x0033, "FL", "Neg Scan Spacing" }, 1789 { 0x0043, 0x0034, "IS", "Offset Frequency" }, 1790 { 0x0043, 0x0035, "UL", "User Usage Tag" }, 1791 { 0x0043, 0x0036, "UL", "User Fill Map MSW" }, 1792 { 0x0043, 0x0037, "UL", "User Fill Map LSW" }, 1793 { 0x0043, 0x0038, "FL", "User 25 To User 48" }, 1794 { 0x0043, 0x0039, "IS", "Slop Integer 6 To Slop Integer 9" }, 1795 { 0x0043, 0x0040, "FL", "Trigger On Position" }, 1796 { 0x0043, 0x0041, "FL", "Degree Of Rotation" }, 1797 { 0x0043, 0x0042, "SL", "DAS Trigger Source" }, 1798 { 0x0043, 0x0043, "SL", "DAS Fpa Gain" }, 1799 { 0x0043, 0x0044, "SL", "DAS Output Source" }, 1800 { 0x0043, 0x0045, "SL", "DAS Ad Input" }, 1801 { 0x0043, 0x0046, "SL", "DAS Cal Mode" }, 1802 { 0x0043, 0x0047, "SL", "DAS Cal Frequency" }, 1803 { 0x0043, 0x0048, "SL", "DAS Reg Xm" }, 1804 { 0x0043, 0x0049, "SL", "DAS Auto Zero" }, 1805 { 0x0043, 0x004a, "SS", "Starting Channel Of View" }, 1806 { 0x0043, 0x004b, "SL", "DAS Xm Pattern" }, 1807 { 0x0043, 0x004c, "SS", "TGGC Trigger Mode" }, 1808 { 0x0043, 0x004d, "FL", "Start Scan To Xray On Delay" }, 1809 { 0x0043, 0x004e, "FL", "Duration Of Xray On" }, 1810 { 0x0044, 0x0000, "UI", "?" }, 1811 { 0x0045, 0x0004, "CS", "AES" }, 1812 { 0x0045, 0x0006, "DS", "Angulation" }, 1813 { 0x0045, 0x0009, "DS", "Real Magnification Factor" }, 1814 { 0x0045, 0x000b, "CS", "Senograph Type" }, 1815 { 0x0045, 0x000c, "DS", "Integration Time" }, 1816 { 0x0045, 0x000d, "DS", "ROI Origin X and Y" }, 1817 { 0x0045, 0x0011, "DS", "Receptor Size cm X and Y" }, 1818 { 0x0045, 0x0012, "IS", "Receptor Size Pixels X and Y" }, 1819 { 0x0045, 0x0013, "ST", "Screen" }, 1820 { 0x0045, 0x0014, "DS", "Pixel Pitch Microns" }, 1821 { 0x0045, 0x0015, "IS", "Pixel Depth Bits" }, 1822 { 0x0045, 0x0016, "IS", "Binning Factor X and Y" }, 1823 { 0x0045, 0x001b, "CS", "Clinical View" }, 1824 { 0x0045, 0x001d, "DS", "Mean Of Raw Gray Levels" }, 1825 { 0x0045, 0x001e, "DS", "Mean Of Offset Gray Levels" }, 1826 { 0x0045, 0x001f, "DS", "Mean Of Corrected Gray Levels" }, 1827 { 0x0045, 0x0020, "DS", "Mean Of Region Gray Levels" }, 1828 { 0x0045, 0x0021, "DS", "Mean Of Log Region Gray Levels" }, 1829 { 0x0045, 0x0022, "DS", "Standard Deviation Of Raw Gray Levels" }, 1830 { 0x0045, 0x0023, "DS", "Standard Deviation Of Corrected Gray Levels" }, 1831 { 0x0045, 0x0024, "DS", "Standard Deviation Of Region Gray Levels" }, 1832 { 0x0045, 0x0025, "DS", "Standard Deviation Of Log Region Gray Levels" }, 1833 { 0x0045, 0x0026, "OB", "MAO Buffer" }, 1834 { 0x0045, 0x0027, "IS", "Set Number" }, 1835 { 0x0045, 0x0028, "CS", "WindowingType (LINEAR or GAMMA)" }, 1836 { 0x0045, 0x0029, "DS", "WindowingParameters" }, 1837 { 0x0045, 0x002a, "IS", "Crosshair Cursor X Coordinates" }, 1838 { 0x0045, 0x002b, "IS", "Crosshair Cursor Y Coordinates" }, 1839 { 0x0045, 0x0039, "US", "Vignette Rows" }, 1840 { 0x0045, 0x003a, "US", "Vignette Columns" }, 1841 { 0x0045, 0x003b, "US", "Vignette Bits Allocated" }, 1842 { 0x0045, 0x003c, "US", "Vignette Bits Stored" }, 1843 { 0x0045, 0x003d, "US", "Vignette High Bit" }, 1844 { 0x0045, 0x003e, "US", "Vignette Pixel Representation" }, 1845 { 0x0045, 0x003f, "OB", "Vignette Pixel Data" }, 1846 { 0x0047, 0x0001, "SQ", "Reconstruction Parameters Sequence" }, 1847 { 0x0047, 0x0050, "UL", "Volume Voxel Count" }, 1848 { 0x0047, 0x0051, "UL", "Volume Segment Count" }, 1849 { 0x0047, 0x0053, "US", "Volume Slice Size" }, 1850 { 0x0047, 0x0054, "US", "Volume Slice Count" }, 1851 { 0x0047, 0x0055, "SL", "Volume Threshold Value" }, 1852 { 0x0047, 0x0057, "DS", "Volume Voxel Ratio" }, 1853 { 0x0047, 0x0058, "DS", "Volume Voxel Size" }, 1854 { 0x0047, 0x0059, "US", "Volume Z Position Size" }, 1855 { 0x0047, 0x0060, "DS", "Volume Base Line" }, 1856 { 0x0047, 0x0061, "DS", "Volume Center Point" }, 1857 { 0x0047, 0x0063, "SL", "Volume Skew Base" }, 1858 { 0x0047, 0x0064, "DS", "Volume Registration Transform Rotation Matrix" }, 1859 { 0x0047, 0x0065, "DS", "Volume Registration Transform Translation Vector" }, 1860 { 0x0047, 0x0070, "DS", "KVP List" }, 1861 { 0x0047, 0x0071, "IS", "XRay Tube Current List" }, 1862 { 0x0047, 0x0072, "IS", "Exposure List" }, 1863 { 0x0047, 0x0080, "LO", "Acquisition DLX Identifier" }, 1864 { 0x0047, 0x0085, "SQ", "Acquisition DLX 2D Series Sequence" }, 1865 { 0x0047, 0x0089, "DS", "Contrast Agent Volume List" }, 1866 { 0x0047, 0x008a, "US", "Number Of Injections" }, 1867 { 0x0047, 0x008b, "US", "Frame Count" }, 1868 { 0x0047, 0x0096, "IS", "Used Frames" }, 1869 { 0x0047, 0x0091, "LO", "XA 3D Reconstruction Algorithm Name" }, 1870 { 0x0047, 0x0092, "CS", "XA 3D Reconstruction Algorithm Version" }, 1871 { 0x0047, 0x0093, "DA", "DLX Calibration Date" }, 1872 { 0x0047, 0x0094, "TM", "DLX Calibration Time" }, 1873 { 0x0047, 0x0095, "CS", "DLX Calibration Status" }, 1874 { 0x0047, 0x0098, "US", "Transform Count" }, 1875 { 0x0047, 0x0099, "SQ", "Transform Sequence" }, 1876 { 0x0047, 0x009a, "DS", "Transform Rotation Matrix" }, 1877 { 0x0047, 0x009b, "DS", "Transform Translation Vector" }, 1878 { 0x0047, 0x009c, "LO", "Transform Label" }, 1879 { 0x0047, 0x00b1, "US", "Wireframe Count" }, 1880 { 0x0047, 0x00b2, "US", "Location System" }, 1881 { 0x0047, 0x00b0, "SQ", "Wireframe List" }, 1882 { 0x0047, 0x00b5, "LO", "Wireframe Name" }, 1883 { 0x0047, 0x00b6, "LO", "Wireframe Group Name" }, 1884 { 0x0047, 0x00b7, "LO", "Wireframe Color" }, 1885 { 0x0047, 0x00b8, "SL", "Wireframe Attributes" }, 1886 { 0x0047, 0x00b9, "SL", "Wireframe Point Count" }, 1887 { 0x0047, 0x00ba, "SL", "Wireframe Timestamp" }, 1888 { 0x0047, 0x00bb, "SQ", "Wireframe Point List" }, 1889 { 0x0047, 0x00bc, "DS", "Wireframe Points Coordinates" }, 1890 { 0x0047, 0x00c0, "DS", "Volume Upper Left High Corner RAS" }, 1891 { 0x0047, 0x00c1, "DS", "Volume Slice To RAS Rotation Matrix" }, 1892 { 0x0047, 0x00c2, "DS", "Volume Upper Left High Corner TLOC" }, 1893 { 0x0047, 0x00d1, "OB", "Volume Segment List" }, 1894 { 0x0047, 0x00d2, "OB", "Volume Gradient List" }, 1895 { 0x0047, 0x00d3, "OB", "Volume Density List" }, 1896 { 0x0047, 0x00d4, "OB", "Volume Z Position List" }, 1897 { 0x0047, 0x00d5, "OB", "Volume Original Index List" }, 1898 { 0x0050, 0x0000, "UL", "Calibration Group Length" }, 1899 { 0x0050, 0x0004, "CS", "Calibration Object" }, 1900 { 0x0050, 0x0010, "SQ", "DeviceSequence" }, 1901 { 0x0050, 0x0014, "DS", "DeviceLength" }, 1902 { 0x0050, 0x0016, "DS", "DeviceDiameter" }, 1903 { 0x0050, 0x0017, "CS", "DeviceDiameterUnits" }, 1904 { 0x0050, 0x0018, "DS", "DeviceVolume" }, 1905 { 0x0050, 0x0019, "DS", "InterMarkerDistance" }, 1906 { 0x0050, 0x0020, "LO", "DeviceDescription" }, 1907 { 0x0050, 0x0030, "SQ", "CodedInterventionDeviceSequence" }, 1908 { 0x0051, 0x0010, "xs", "Image Text" }, 1909 { 0x0054, 0x0000, "UL", "Nuclear Acquisition Group Length" }, 1910 { 0x0054, 0x0010, "US", "Energy Window Vector" }, 1911 { 0x0054, 0x0011, "US", "Number of Energy Windows" }, 1912 { 0x0054, 0x0012, "SQ", "Energy Window Information Sequence" }, 1913 { 0x0054, 0x0013, "SQ", "Energy Window Range Sequence" }, 1914 { 0x0054, 0x0014, "DS", "Energy Window Lower Limit" }, 1915 { 0x0054, 0x0015, "DS", "Energy Window Upper Limit" }, 1916 { 0x0054, 0x0016, "SQ", "Radiopharmaceutical Information Sequence" }, 1917 { 0x0054, 0x0017, "IS", "Residual Syringe Counts" }, 1918 { 0x0054, 0x0018, "SH", "Energy Window Name" }, 1919 { 0x0054, 0x0020, "US", "Detector Vector" }, 1920 { 0x0054, 0x0021, "US", "Number of Detectors" }, 1921 { 0x0054, 0x0022, "SQ", "Detector Information Sequence" }, 1922 { 0x0054, 0x0030, "US", "Phase Vector" }, 1923 { 0x0054, 0x0031, "US", "Number of Phases" }, 1924 { 0x0054, 0x0032, "SQ", "Phase Information Sequence" }, 1925 { 0x0054, 0x0033, "US", "Number of Frames In Phase" }, 1926 { 0x0054, 0x0036, "IS", "Phase Delay" }, 1927 { 0x0054, 0x0038, "IS", "Pause Between Frames" }, 1928 { 0x0054, 0x0050, "US", "Rotation Vector" }, 1929 { 0x0054, 0x0051, "US", "Number of Rotations" }, 1930 { 0x0054, 0x0052, "SQ", "Rotation Information Sequence" }, 1931 { 0x0054, 0x0053, "US", "Number of Frames In Rotation" }, 1932 { 0x0054, 0x0060, "US", "R-R Interval Vector" }, 1933 { 0x0054, 0x0061, "US", "Number of R-R Intervals" }, 1934 { 0x0054, 0x0062, "SQ", "Gated Information Sequence" }, 1935 { 0x0054, 0x0063, "SQ", "Data Information Sequence" }, 1936 { 0x0054, 0x0070, "US", "Time Slot Vector" }, 1937 { 0x0054, 0x0071, "US", "Number of Time Slots" }, 1938 { 0x0054, 0x0072, "SQ", "Time Slot Information Sequence" }, 1939 { 0x0054, 0x0073, "DS", "Time Slot Time" }, 1940 { 0x0054, 0x0080, "US", "Slice Vector" }, 1941 { 0x0054, 0x0081, "US", "Number of Slices" }, 1942 { 0x0054, 0x0090, "US", "Angular View Vector" }, 1943 { 0x0054, 0x0100, "US", "Time Slice Vector" }, 1944 { 0x0054, 0x0101, "US", "Number Of Time Slices" }, 1945 { 0x0054, 0x0200, "DS", "Start Angle" }, 1946 { 0x0054, 0x0202, "CS", "Type of Detector Motion" }, 1947 { 0x0054, 0x0210, "IS", "Trigger Vector" }, 1948 { 0x0054, 0x0211, "US", "Number of Triggers in Phase" }, 1949 { 0x0054, 0x0220, "SQ", "View Code Sequence" }, 1950 { 0x0054, 0x0222, "SQ", "View Modifier Code Sequence" }, 1951 { 0x0054, 0x0300, "SQ", "Radionuclide Code Sequence" }, 1952 { 0x0054, 0x0302, "SQ", "Radiopharmaceutical Route Code Sequence" }, 1953 { 0x0054, 0x0304, "SQ", "Radiopharmaceutical Code Sequence" }, 1954 { 0x0054, 0x0306, "SQ", "Calibration Data Sequence" }, 1955 { 0x0054, 0x0308, "US", "Energy Window Number" }, 1956 { 0x0054, 0x0400, "SH", "Image ID" }, 1957 { 0x0054, 0x0410, "SQ", "Patient Orientation Code Sequence" }, 1958 { 0x0054, 0x0412, "SQ", "Patient Orientation Modifier Code Sequence" }, 1959 { 0x0054, 0x0414, "SQ", "Patient Gantry Relationship Code Sequence" }, 1960 { 0x0054, 0x1000, "CS", "Positron Emission Tomography Series Type" }, 1961 { 0x0054, 0x1001, "CS", "Positron Emission Tomography Units" }, 1962 { 0x0054, 0x1002, "CS", "Counts Source" }, 1963 { 0x0054, 0x1004, "CS", "Reprojection Method" }, 1964 { 0x0054, 0x1100, "CS", "Randoms Correction Method" }, 1965 { 0x0054, 0x1101, "LO", "Attenuation Correction Method" }, 1966 { 0x0054, 0x1102, "CS", "Decay Correction" }, 1967 { 0x0054, 0x1103, "LO", "Reconstruction Method" }, 1968 { 0x0054, 0x1104, "LO", "Detector Lines of Response Used" }, 1969 { 0x0054, 0x1105, "LO", "Scatter Correction Method" }, 1970 { 0x0054, 0x1200, "DS", "Axial Acceptance" }, 1971 { 0x0054, 0x1201, "IS", "Axial Mash" }, 1972 { 0x0054, 0x1202, "IS", "Transverse Mash" }, 1973 { 0x0054, 0x1203, "DS", "Detector Element Size" }, 1974 { 0x0054, 0x1210, "DS", "Coincidence Window Width" }, 1975 { 0x0054, 0x1220, "CS", "Secondary Counts Type" }, 1976 { 0x0054, 0x1300, "DS", "Frame Reference Time" }, 1977 { 0x0054, 0x1310, "IS", "Primary Prompts Counts Accumulated" }, 1978 { 0x0054, 0x1311, "IS", "Secondary Counts Accumulated" }, 1979 { 0x0054, 0x1320, "DS", "Slice Sensitivity Factor" }, 1980 { 0x0054, 0x1321, "DS", "Decay Factor" }, 1981 { 0x0054, 0x1322, "DS", "Dose Calibration Factor" }, 1982 { 0x0054, 0x1323, "DS", "Scatter Fraction Factor" }, 1983 { 0x0054, 0x1324, "DS", "Dead Time Factor" }, 1984 { 0x0054, 0x1330, "US", "Image Index" }, 1985 { 0x0054, 0x1400, "CS", "Counts Included" }, 1986 { 0x0054, 0x1401, "CS", "Dead Time Correction Flag" }, 1987 { 0x0055, 0x0046, "LT", "Current Ward" }, 1988 { 0x0058, 0x0000, "SQ", "?" }, 1989 { 0x0060, 0x3000, "SQ", "Histogram Sequence" }, 1990 { 0x0060, 0x3002, "US", "Histogram Number of Bins" }, 1991 { 0x0060, 0x3004, "xs", "Histogram First Bin Value" }, 1992 { 0x0060, 0x3006, "xs", "Histogram Last Bin Value" }, 1993 { 0x0060, 0x3008, "US", "Histogram Bin Width" }, 1994 { 0x0060, 0x3010, "LO", "Histogram Explanation" }, 1995 { 0x0060, 0x3020, "UL", "Histogram Data" }, 1996 { 0x0070, 0x0001, "SQ", "Graphic Annotation Sequence" }, 1997 { 0x0070, 0x0002, "CS", "Graphic Layer" }, 1998 { 0x0070, 0x0003, "CS", "Bounding Box Annotation Units" }, 1999 { 0x0070, 0x0004, "CS", "Anchor Point Annotation Units" }, 2000 { 0x0070, 0x0005, "CS", "Graphic Annotation Units" }, 2001 { 0x0070, 0x0006, "ST", "Unformatted Text Value" }, 2002 { 0x0070, 0x0008, "SQ", "Text Object Sequence" }, 2003 { 0x0070, 0x0009, "SQ", "Graphic Object Sequence" }, 2004 { 0x0070, 0x0010, "FL", "Bounding Box TLHC" }, 2005 { 0x0070, 0x0011, "FL", "Bounding Box BRHC" }, 2006 { 0x0070, 0x0014, "FL", "Anchor Point" }, 2007 { 0x0070, 0x0015, "CS", "Anchor Point Visibility" }, 2008 { 0x0070, 0x0020, "US", "Graphic Dimensions" }, 2009 { 0x0070, 0x0021, "US", "Number Of Graphic Points" }, 2010 { 0x0070, 0x0022, "FL", "Graphic Data" }, 2011 { 0x0070, 0x0023, "CS", "Graphic Type" }, 2012 { 0x0070, 0x0024, "CS", "Graphic Filled" }, 2013 { 0x0070, 0x0040, "IS", "Image Rotation" }, 2014 { 0x0070, 0x0041, "CS", "Image Horizontal Flip" }, 2015 { 0x0070, 0x0050, "US", "Displayed Area TLHC" }, 2016 { 0x0070, 0x0051, "US", "Displayed Area BRHC" }, 2017 { 0x0070, 0x0060, "SQ", "Graphic Layer Sequence" }, 2018 { 0x0070, 0x0062, "IS", "Graphic Layer Order" }, 2019 { 0x0070, 0x0066, "US", "Graphic Layer Recommended Display Value" }, 2020 { 0x0070, 0x0068, "LO", "Graphic Layer Description" }, 2021 { 0x0070, 0x0080, "CS", "Presentation Label" }, 2022 { 0x0070, 0x0081, "LO", "Presentation Description" }, 2023 { 0x0070, 0x0082, "DA", "Presentation Creation Date" }, 2024 { 0x0070, 0x0083, "TM", "Presentation Creation Time" }, 2025 { 0x0070, 0x0084, "PN", "Presentation Creator's Name" }, 2026 { 0x0087, 0x0010, "CS", "Media Type" }, 2027 { 0x0087, 0x0020, "CS", "Media Location" }, 2028 { 0x0087, 0x0050, "IS", "Estimated Retrieve Time" }, 2029 { 0x0088, 0x0000, "UL", "Storage Group Length" }, 2030 { 0x0088, 0x0130, "SH", "Storage Media FileSet ID" }, 2031 { 0x0088, 0x0140, "UI", "Storage Media FileSet UID" }, 2032 { 0x0088, 0x0200, "SQ", "Icon Image Sequence" }, 2033 { 0x0088, 0x0904, "LO", "Topic Title" }, 2034 { 0x0088, 0x0906, "ST", "Topic Subject" }, 2035 { 0x0088, 0x0910, "LO", "Topic Author" }, 2036 { 0x0088, 0x0912, "LO", "Topic Key Words" }, 2037 { 0x0095, 0x0001, "LT", "Examination Folder ID" }, 2038 { 0x0095, 0x0004, "UL", "Folder Reported Status" }, 2039 { 0x0095, 0x0005, "LT", "Folder Reporting Radiologist" }, 2040 { 0x0095, 0x0007, "LT", "SIENET ISA PLA" }, 2041 { 0x0099, 0x0002, "UL", "Data Object Attributes" }, 2042 { 0x00e1, 0x0001, "US", "Data Dictionary Version" }, 2043 { 0x00e1, 0x0014, "LT", "?" }, 2044 { 0x00e1, 0x0022, "DS", "?" }, 2045 { 0x00e1, 0x0023, "DS", "?" }, 2046 { 0x00e1, 0x0024, "LT", "?" }, 2047 { 0x00e1, 0x0025, "LT", "?" }, 2048 { 0x00e1, 0x0040, "SH", "Offset From CT MR Images" }, 2049 { 0x0193, 0x0002, "DS", "RIS Key" }, 2050 { 0x0307, 0x0001, "UN", "RIS Worklist IMGEF" }, 2051 { 0x0309, 0x0001, "UN", "RIS Report IMGEF" }, 2052 { 0x0601, 0x0000, "SH", "Implementation Version" }, 2053 { 0x0601, 0x0020, "DS", "Relative Table Position" }, 2054 { 0x0601, 0x0021, "DS", "Relative Table Height" }, 2055 { 0x0601, 0x0030, "SH", "Surview Direction" }, 2056 { 0x0601, 0x0031, "DS", "Surview Length" }, 2057 { 0x0601, 0x0050, "SH", "Image View Type" }, 2058 { 0x0601, 0x0070, "DS", "Batch Number" }, 2059 { 0x0601, 0x0071, "DS", "Batch Size" }, 2060 { 0x0601, 0x0072, "DS", "Batch Slice Number" }, 2061 { 0x1000, 0x0000, "xs", "?" }, 2062 { 0x1000, 0x0001, "US", "Run Length Triplet" }, 2063 { 0x1000, 0x0002, "US", "Huffman Table Size" }, 2064 { 0x1000, 0x0003, "US", "Huffman Table Triplet" }, 2065 { 0x1000, 0x0004, "US", "Shift Table Size" }, 2066 { 0x1000, 0x0005, "US", "Shift Table Triplet" }, 2067 { 0x1010, 0x0000, "xs", "?" }, 2068 { 0x1369, 0x0000, "US", "?" }, 2069 { 0x2000, 0x0000, "UL", "Film Session Group Length" }, 2070 { 0x2000, 0x0010, "IS", "Number of Copies" }, 2071 { 0x2000, 0x0020, "CS", "Print Priority" }, 2072 { 0x2000, 0x0030, "CS", "Medium Type" }, 2073 { 0x2000, 0x0040, "CS", "Film Destination" }, 2074 { 0x2000, 0x0050, "LO", "Film Session Label" }, 2075 { 0x2000, 0x0060, "IS", "Memory Allocation" }, 2076 { 0x2000, 0x0500, "SQ", "Referenced Film Box Sequence" }, 2077 { 0x2010, 0x0000, "UL", "Film Box Group Length" }, 2078 { 0x2010, 0x0010, "ST", "Image Display Format" }, 2079 { 0x2010, 0x0030, "CS", "Annotation Display Format ID" }, 2080 { 0x2010, 0x0040, "CS", "Film Orientation" }, 2081 { 0x2010, 0x0050, "CS", "Film Size ID" }, 2082 { 0x2010, 0x0060, "CS", "Magnification Type" }, 2083 { 0x2010, 0x0080, "CS", "Smoothing Type" }, 2084 { 0x2010, 0x0100, "CS", "Border Density" }, 2085 { 0x2010, 0x0110, "CS", "Empty Image Density" }, 2086 { 0x2010, 0x0120, "US", "Min Density" }, 2087 { 0x2010, 0x0130, "US", "Max Density" }, 2088 { 0x2010, 0x0140, "CS", "Trim" }, 2089 { 0x2010, 0x0150, "ST", "Configuration Information" }, 2090 { 0x2010, 0x0500, "SQ", "Referenced Film Session Sequence" }, 2091 { 0x2010, 0x0510, "SQ", "Referenced Image Box Sequence" }, 2092 { 0x2010, 0x0520, "SQ", "Referenced Basic Annotation Box Sequence" }, 2093 { 0x2020, 0x0000, "UL", "Image Box Group Length" }, 2094 { 0x2020, 0x0010, "US", "Image Box Position" }, 2095 { 0x2020, 0x0020, "CS", "Polarity" }, 2096 { 0x2020, 0x0030, "DS", "Requested Image Size" }, 2097 { 0x2020, 0x0110, "SQ", "Preformatted Grayscale Image Sequence" }, 2098 { 0x2020, 0x0111, "SQ", "Preformatted Color Image Sequence" }, 2099 { 0x2020, 0x0130, "SQ", "Referenced Image Overlay Box Sequence" }, 2100 { 0x2020, 0x0140, "SQ", "Referenced VOI LUT Box Sequence" }, 2101 { 0x2030, 0x0000, "UL", "Annotation Group Length" }, 2102 { 0x2030, 0x0010, "US", "Annotation Position" }, 2103 { 0x2030, 0x0020, "LO", "Text String" }, 2104 { 0x2040, 0x0000, "UL", "Overlay Box Group Length" }, 2105 { 0x2040, 0x0010, "SQ", "Referenced Overlay Plane Sequence" }, 2106 { 0x2040, 0x0011, "US", "Referenced Overlay Plane Groups" }, 2107 { 0x2040, 0x0060, "CS", "Overlay Magnification Type" }, 2108 { 0x2040, 0x0070, "CS", "Overlay Smoothing Type" }, 2109 { 0x2040, 0x0080, "CS", "Overlay Foreground Density" }, 2110 { 0x2040, 0x0090, "CS", "Overlay Mode" }, 2111 { 0x2040, 0x0100, "CS", "Threshold Density" }, 2112 { 0x2040, 0x0500, "SQ", "Referenced Overlay Image Box Sequence" }, 2113 { 0x2050, 0x0010, "SQ", "Presentation LUT Sequence" }, 2114 { 0x2050, 0x0020, "CS", "Presentation LUT Shape" }, 2115 { 0x2100, 0x0000, "UL", "Print Job Group Length" }, 2116 { 0x2100, 0x0020, "CS", "Execution Status" }, 2117 { 0x2100, 0x0030, "CS", "Execution Status Info" }, 2118 { 0x2100, 0x0040, "DA", "Creation Date" }, 2119 { 0x2100, 0x0050, "TM", "Creation Time" }, 2120 { 0x2100, 0x0070, "AE", "Originator" }, 2121 { 0x2100, 0x0500, "SQ", "Referenced Print Job Sequence" }, 2122 { 0x2110, 0x0000, "UL", "Printer Group Length" }, 2123 { 0x2110, 0x0010, "CS", "Printer Status" }, 2124 { 0x2110, 0x0020, "CS", "Printer Status Info" }, 2125 { 0x2110, 0x0030, "LO", "Printer Name" }, 2126 { 0x2110, 0x0099, "SH", "Print Queue ID" }, 2127 { 0x3002, 0x0002, "SH", "RT Image Label" }, 2128 { 0x3002, 0x0003, "LO", "RT Image Name" }, 2129 { 0x3002, 0x0004, "ST", "RT Image Description" }, 2130 { 0x3002, 0x000a, "CS", "Reported Values Origin" }, 2131 { 0x3002, 0x000c, "CS", "RT Image Plane" }, 2132 { 0x3002, 0x000e, "DS", "X-Ray Image Receptor Angle" }, 2133 { 0x3002, 0x0010, "DS", "RTImageOrientation" }, 2134 { 0x3002, 0x0011, "DS", "Image Plane Pixel Spacing" }, 2135 { 0x3002, 0x0012, "DS", "RT Image Position" }, 2136 { 0x3002, 0x0020, "SH", "Radiation Machine Name" }, 2137 { 0x3002, 0x0022, "DS", "Radiation Machine SAD" }, 2138 { 0x3002, 0x0024, "DS", "Radiation Machine SSD" }, 2139 { 0x3002, 0x0026, "DS", "RT Image SID" }, 2140 { 0x3002, 0x0028, "DS", "Source to Reference Object Distance" }, 2141 { 0x3002, 0x0029, "IS", "Fraction Number" }, 2142 { 0x3002, 0x0030, "SQ", "Exposure Sequence" }, 2143 { 0x3002, 0x0032, "DS", "Meterset Exposure" }, 2144 { 0x3004, 0x0001, "CS", "DVH Type" }, 2145 { 0x3004, 0x0002, "CS", "Dose Units" }, 2146 { 0x3004, 0x0004, "CS", "Dose Type" }, 2147 { 0x3004, 0x0006, "LO", "Dose Comment" }, 2148 { 0x3004, 0x0008, "DS", "Normalization Point" }, 2149 { 0x3004, 0x000a, "CS", "Dose Summation Type" }, 2150 { 0x3004, 0x000c, "DS", "GridFrame Offset Vector" }, 2151 { 0x3004, 0x000e, "DS", "Dose Grid Scaling" }, 2152 { 0x3004, 0x0010, "SQ", "RT Dose ROI Sequence" }, 2153 { 0x3004, 0x0012, "DS", "Dose Value" }, 2154 { 0x3004, 0x0040, "DS", "DVH Normalization Point" }, 2155 { 0x3004, 0x0042, "DS", "DVH Normalization Dose Value" }, 2156 { 0x3004, 0x0050, "SQ", "DVH Sequence" }, 2157 { 0x3004, 0x0052, "DS", "DVH Dose Scaling" }, 2158 { 0x3004, 0x0054, "CS", "DVH Volume Units" }, 2159 { 0x3004, 0x0056, "IS", "DVH Number of Bins" }, 2160 { 0x3004, 0x0058, "DS", "DVH Data" }, 2161 { 0x3004, 0x0060, "SQ", "DVH Referenced ROI Sequence" }, 2162 { 0x3004, 0x0062, "CS", "DVH ROI Contribution Type" }, 2163 { 0x3004, 0x0070, "DS", "DVH Minimum Dose" }, 2164 { 0x3004, 0x0072, "DS", "DVH Maximum Dose" }, 2165 { 0x3004, 0x0074, "DS", "DVH Mean Dose" }, 2166 { 0x3006, 0x0002, "SH", "Structure Set Label" }, 2167 { 0x3006, 0x0004, "LO", "Structure Set Name" }, 2168 { 0x3006, 0x0006, "ST", "Structure Set Description" }, 2169 { 0x3006, 0x0008, "DA", "Structure Set Date" }, 2170 { 0x3006, 0x0009, "TM", "Structure Set Time" }, 2171 { 0x3006, 0x0010, "SQ", "Referenced Frame of Reference Sequence" }, 2172 { 0x3006, 0x0012, "SQ", "RT Referenced Study Sequence" }, 2173 { 0x3006, 0x0014, "SQ", "RT Referenced Series Sequence" }, 2174 { 0x3006, 0x0016, "SQ", "Contour Image Sequence" }, 2175 { 0x3006, 0x0020, "SQ", "Structure Set ROI Sequence" }, 2176 { 0x3006, 0x0022, "IS", "ROI Number" }, 2177 { 0x3006, 0x0024, "UI", "Referenced Frame of Reference UID" }, 2178 { 0x3006, 0x0026, "LO", "ROI Name" }, 2179 { 0x3006, 0x0028, "ST", "ROI Description" }, 2180 { 0x3006, 0x002a, "IS", "ROI Display Color" }, 2181 { 0x3006, 0x002c, "DS", "ROI Volume" }, 2182 { 0x3006, 0x0030, "SQ", "RT Related ROI Sequence" }, 2183 { 0x3006, 0x0033, "CS", "RT ROI Relationship" }, 2184 { 0x3006, 0x0036, "CS", "ROI Generation Algorithm" }, 2185 { 0x3006, 0x0038, "LO", "ROI Generation Description" }, 2186 { 0x3006, 0x0039, "SQ", "ROI Contour Sequence" }, 2187 { 0x3006, 0x0040, "SQ", "Contour Sequence" }, 2188 { 0x3006, 0x0042, "CS", "Contour Geometric Type" }, 2189 { 0x3006, 0x0044, "DS", "Contour SlabT hickness" }, 2190 { 0x3006, 0x0045, "DS", "Contour Offset Vector" }, 2191 { 0x3006, 0x0046, "IS", "Number of Contour Points" }, 2192 { 0x3006, 0x0050, "DS", "Contour Data" }, 2193 { 0x3006, 0x0080, "SQ", "RT ROI Observations Sequence" }, 2194 { 0x3006, 0x0082, "IS", "Observation Number" }, 2195 { 0x3006, 0x0084, "IS", "Referenced ROI Number" }, 2196 { 0x3006, 0x0085, "SH", "ROI Observation Label" }, 2197 { 0x3006, 0x0086, "SQ", "RT ROI Identification Code Sequence" }, 2198 { 0x3006, 0x0088, "ST", "ROI Observation Description" }, 2199 { 0x3006, 0x00a0, "SQ", "Related RT ROI Observations Sequence" }, 2200 { 0x3006, 0x00a4, "CS", "RT ROI Interpreted Type" }, 2201 { 0x3006, 0x00a6, "PN", "ROI Interpreter" }, 2202 { 0x3006, 0x00b0, "SQ", "ROI Physical Properties Sequence" }, 2203 { 0x3006, 0x00b2, "CS", "ROI Physical Property" }, 2204 { 0x3006, 0x00b4, "DS", "ROI Physical Property Value" }, 2205 { 0x3006, 0x00c0, "SQ", "Frame of Reference Relationship Sequence" }, 2206 { 0x3006, 0x00c2, "UI", "Related Frame of Reference UID" }, 2207 { 0x3006, 0x00c4, "CS", "Frame of Reference Transformation Type" }, 2208 { 0x3006, 0x00c6, "DS", "Frame of Reference Transformation Matrix" }, 2209 { 0x3006, 0x00c8, "LO", "Frame of Reference Transformation Comment" }, 2210 { 0x300a, 0x0002, "SH", "RT Plan Label" }, 2211 { 0x300a, 0x0003, "LO", "RT Plan Name" }, 2212 { 0x300a, 0x0004, "ST", "RT Plan Description" }, 2213 { 0x300a, 0x0006, "DA", "RT Plan Date" }, 2214 { 0x300a, 0x0007, "TM", "RT Plan Time" }, 2215 { 0x300a, 0x0009, "LO", "Treatment Protocols" }, 2216 { 0x300a, 0x000a, "CS", "Treatment Intent" }, 2217 { 0x300a, 0x000b, "LO", "Treatment Sites" }, 2218 { 0x300a, 0x000c, "CS", "RT Plan Geometry" }, 2219 { 0x300a, 0x000e, "ST", "Prescription Description" }, 2220 { 0x300a, 0x0010, "SQ", "Dose ReferenceSequence" }, 2221 { 0x300a, 0x0012, "IS", "Dose ReferenceNumber" }, 2222 { 0x300a, 0x0014, "CS", "Dose Reference Structure Type" }, 2223 { 0x300a, 0x0016, "LO", "Dose ReferenceDescription" }, 2224 { 0x300a, 0x0018, "DS", "Dose Reference Point Coordinates" }, 2225 { 0x300a, 0x001a, "DS", "Nominal Prior Dose" }, 2226 { 0x300a, 0x0020, "CS", "Dose Reference Type" }, 2227 { 0x300a, 0x0021, "DS", "Constraint Weight" }, 2228 { 0x300a, 0x0022, "DS", "Delivery Warning Dose" }, 2229 { 0x300a, 0x0023, "DS", "Delivery Maximum Dose" }, 2230 { 0x300a, 0x0025, "DS", "Target Minimum Dose" }, 2231 { 0x300a, 0x0026, "DS", "Target Prescription Dose" }, 2232 { 0x300a, 0x0027, "DS", "Target Maximum Dose" }, 2233 { 0x300a, 0x0028, "DS", "Target Underdose Volume Fraction" }, 2234 { 0x300a, 0x002a, "DS", "Organ at Risk Full-volume Dose" }, 2235 { 0x300a, 0x002b, "DS", "Organ at Risk Limit Dose" }, 2236 { 0x300a, 0x002c, "DS", "Organ at Risk Maximum Dose" }, 2237 { 0x300a, 0x002d, "DS", "Organ at Risk Overdose Volume Fraction" }, 2238 { 0x300a, 0x0040, "SQ", "Tolerance Table Sequence" }, 2239 { 0x300a, 0x0042, "IS", "Tolerance Table Number" }, 2240 { 0x300a, 0x0043, "SH", "Tolerance Table Label" }, 2241 { 0x300a, 0x0044, "DS", "Gantry Angle Tolerance" }, 2242 { 0x300a, 0x0046, "DS", "Beam Limiting Device Angle Tolerance" }, 2243 { 0x300a, 0x0048, "SQ", "Beam Limiting Device Tolerance Sequence" }, 2244 { 0x300a, 0x004a, "DS", "Beam Limiting Device Position Tolerance" }, 2245 { 0x300a, 0x004c, "DS", "Patient Support Angle Tolerance" }, 2246 { 0x300a, 0x004e, "DS", "Table Top Eccentric Angle Tolerance" }, 2247 { 0x300a, 0x0051, "DS", "Table Top Vertical Position Tolerance" }, 2248 { 0x300a, 0x0052, "DS", "Table Top Longitudinal Position Tolerance" }, 2249 { 0x300a, 0x0053, "DS", "Table Top Lateral Position Tolerance" }, 2250 { 0x300a, 0x0055, "CS", "RT Plan Relationship" }, 2251 { 0x300a, 0x0070, "SQ", "Fraction Group Sequence" }, 2252 { 0x300a, 0x0071, "IS", "Fraction Group Number" }, 2253 { 0x300a, 0x0078, "IS", "Number of Fractions Planned" }, 2254 { 0x300a, 0x0079, "IS", "Number of Fractions Per Day" }, 2255 { 0x300a, 0x007a, "IS", "Repeat Fraction Cycle Length" }, 2256 { 0x300a, 0x007b, "LT", "Fraction Pattern" }, 2257 { 0x300a, 0x0080, "IS", "Number of Beams" }, 2258 { 0x300a, 0x0082, "DS", "Beam Dose Specification Point" }, 2259 { 0x300a, 0x0084, "DS", "Beam Dose" }, 2260 { 0x300a, 0x0086, "DS", "Beam Meterset" }, 2261 { 0x300a, 0x00a0, "IS", "Number of Brachy Application Setups" }, 2262 { 0x300a, 0x00a2, "DS", "Brachy Application Setup Dose Specification Point" }, 2263 { 0x300a, 0x00a4, "DS", "Brachy Application Setup Dose" }, 2264 { 0x300a, 0x00b0, "SQ", "Beam Sequence" }, 2265 { 0x300a, 0x00b2, "SH", "Treatment Machine Name " }, 2266 { 0x300a, 0x00b3, "CS", "Primary Dosimeter Unit" }, 2267 { 0x300a, 0x00b4, "DS", "Source-Axis Distance" }, 2268 { 0x300a, 0x00b6, "SQ", "Beam Limiting Device Sequence" }, 2269 { 0x300a, 0x00b8, "CS", "RT Beam Limiting Device Type" }, 2270 { 0x300a, 0x00ba, "DS", "Source to Beam Limiting Device Distance" }, 2271 { 0x300a, 0x00bc, "IS", "Number of Leaf/Jaw Pairs" }, 2272 { 0x300a, 0x00be, "DS", "Leaf Position Boundaries" }, 2273 { 0x300a, 0x00c0, "IS", "Beam Number" }, 2274 { 0x300a, 0x00c2, "LO", "Beam Name" }, 2275 { 0x300a, 0x00c3, "ST", "Beam Description" }, 2276 { 0x300a, 0x00c4, "CS", "Beam Type" }, 2277 { 0x300a, 0x00c6, "CS", "Radiation Type" }, 2278 { 0x300a, 0x00c8, "IS", "Reference Image Number" }, 2279 { 0x300a, 0x00ca, "SQ", "Planned Verification Image Sequence" }, 2280 { 0x300a, 0x00cc, "LO", "Imaging Device Specific Acquisition Parameters" }, 2281 { 0x300a, 0x00ce, "CS", "Treatment Delivery Type" }, 2282 { 0x300a, 0x00d0, "IS", "Number of Wedges" }, 2283 { 0x300a, 0x00d1, "SQ", "Wedge Sequence" }, 2284 { 0x300a, 0x00d2, "IS", "Wedge Number" }, 2285 { 0x300a, 0x00d3, "CS", "Wedge Type" }, 2286 { 0x300a, 0x00d4, "SH", "Wedge ID" }, 2287 { 0x300a, 0x00d5, "IS", "Wedge Angle" }, 2288 { 0x300a, 0x00d6, "DS", "Wedge Factor" }, 2289 { 0x300a, 0x00d8, "DS", "Wedge Orientation" }, 2290 { 0x300a, 0x00da, "DS", "Source to Wedge Tray Distance" }, 2291 { 0x300a, 0x00e0, "IS", "Number of Compensators" }, 2292 { 0x300a, 0x00e1, "SH", "Material ID" }, 2293 { 0x300a, 0x00e2, "DS", "Total Compensator Tray Factor" }, 2294 { 0x300a, 0x00e3, "SQ", "Compensator Sequence" }, 2295 { 0x300a, 0x00e4, "IS", "Compensator Number" }, 2296 { 0x300a, 0x00e5, "SH", "Compensator ID" }, 2297 { 0x300a, 0x00e6, "DS", "Source to Compensator Tray Distance" }, 2298 { 0x300a, 0x00e7, "IS", "Compensator Rows" }, 2299 { 0x300a, 0x00e8, "IS", "Compensator Columns" }, 2300 { 0x300a, 0x00e9, "DS", "Compensator Pixel Spacing" }, 2301 { 0x300a, 0x00ea, "DS", "Compensator Position" }, 2302 { 0x300a, 0x00eb, "DS", "Compensator Transmission Data" }, 2303 { 0x300a, 0x00ec, "DS", "Compensator Thickness Data" }, 2304 { 0x300a, 0x00ed, "IS", "Number of Boli" }, 2305 { 0x300a, 0x00f0, "IS", "Number of Blocks" }, 2306 { 0x300a, 0x00f2, "DS", "Total Block Tray Factor" }, 2307 { 0x300a, 0x00f4, "SQ", "Block Sequence" }, 2308 { 0x300a, 0x00f5, "SH", "Block Tray ID" }, 2309 { 0x300a, 0x00f6, "DS", "Source to Block Tray Distance" }, 2310 { 0x300a, 0x00f8, "CS", "Block Type" }, 2311 { 0x300a, 0x00fa, "CS", "Block Divergence" }, 2312 { 0x300a, 0x00fc, "IS", "Block Number" }, 2313 { 0x300a, 0x00fe, "LO", "Block Name" }, 2314 { 0x300a, 0x0100, "DS", "Block Thickness" }, 2315 { 0x300a, 0x0102, "DS", "Block Transmission" }, 2316 { 0x300a, 0x0104, "IS", "Block Number of Points" }, 2317 { 0x300a, 0x0106, "DS", "Block Data" }, 2318 { 0x300a, 0x0107, "SQ", "Applicator Sequence" }, 2319 { 0x300a, 0x0108, "SH", "Applicator ID" }, 2320 { 0x300a, 0x0109, "CS", "Applicator Type" }, 2321 { 0x300a, 0x010a, "LO", "Applicator Description" }, 2322 { 0x300a, 0x010c, "DS", "Cumulative Dose Reference Coefficient" }, 2323 { 0x300a, 0x010e, "DS", "Final Cumulative Meterset Weight" }, 2324 { 0x300a, 0x0110, "IS", "Number of Control Points" }, 2325 { 0x300a, 0x0111, "SQ", "Control Point Sequence" }, 2326 { 0x300a, 0x0112, "IS", "Control Point Index" }, 2327 { 0x300a, 0x0114, "DS", "Nominal Beam Energy" }, 2328 { 0x300a, 0x0115, "DS", "Dose Rate Set" }, 2329 { 0x300a, 0x0116, "SQ", "Wedge Position Sequence" }, 2330 { 0x300a, 0x0118, "CS", "Wedge Position" }, 2331 { 0x300a, 0x011a, "SQ", "Beam Limiting Device Position Sequence" }, 2332 { 0x300a, 0x011c, "DS", "Leaf Jaw Positions" }, 2333 { 0x300a, 0x011e, "DS", "Gantry Angle" }, 2334 { 0x300a, 0x011f, "CS", "Gantry Rotation Direction" }, 2335 { 0x300a, 0x0120, "DS", "Beam Limiting Device Angle" }, 2336 { 0x300a, 0x0121, "CS", "Beam Limiting Device Rotation Direction" }, 2337 { 0x300a, 0x0122, "DS", "Patient Support Angle" }, 2338 { 0x300a, 0x0123, "CS", "Patient Support Rotation Direction" }, 2339 { 0x300a, 0x0124, "DS", "Table Top Eccentric Axis Distance" }, 2340 { 0x300a, 0x0125, "DS", "Table Top Eccentric Angle" }, 2341 { 0x300a, 0x0126, "CS", "Table Top Eccentric Rotation Direction" }, 2342 { 0x300a, 0x0128, "DS", "Table Top Vertical Position" }, 2343 { 0x300a, 0x0129, "DS", "Table Top Longitudinal Position" }, 2344 { 0x300a, 0x012a, "DS", "Table Top Lateral Position" }, 2345 { 0x300a, 0x012c, "DS", "Isocenter Position" }, 2346 { 0x300a, 0x012e, "DS", "Surface Entry Point" }, 2347 { 0x300a, 0x0130, "DS", "Source to Surface Distance" }, 2348 { 0x300a, 0x0134, "DS", "Cumulative Meterset Weight" }, 2349 { 0x300a, 0x0180, "SQ", "Patient Setup Sequence" }, 2350 { 0x300a, 0x0182, "IS", "Patient Setup Number" }, 2351 { 0x300a, 0x0184, "LO", "Patient Additional Position" }, 2352 { 0x300a, 0x0190, "SQ", "Fixation Device Sequence" }, 2353 { 0x300a, 0x0192, "CS", "Fixation Device Type" }, 2354 { 0x300a, 0x0194, "SH", "Fixation Device Label" }, 2355 { 0x300a, 0x0196, "ST", "Fixation Device Description" }, 2356 { 0x300a, 0x0198, "SH", "Fixation Device Position" }, 2357 { 0x300a, 0x01a0, "SQ", "Shielding Device Sequence" }, 2358 { 0x300a, 0x01a2, "CS", "Shielding Device Type" }, 2359 { 0x300a, 0x01a4, "SH", "Shielding Device Label" }, 2360 { 0x300a, 0x01a6, "ST", "Shielding Device Description" }, 2361 { 0x300a, 0x01a8, "SH", "Shielding Device Position" }, 2362 { 0x300a, 0x01b0, "CS", "Setup Technique" }, 2363 { 0x300a, 0x01b2, "ST", "Setup TechniqueDescription" }, 2364 { 0x300a, 0x01b4, "SQ", "Setup Device Sequence" }, 2365 { 0x300a, 0x01b6, "CS", "Setup Device Type" }, 2366 { 0x300a, 0x01b8, "SH", "Setup Device Label" }, 2367 { 0x300a, 0x01ba, "ST", "Setup Device Description" }, 2368 { 0x300a, 0x01bc, "DS", "Setup Device Parameter" }, 2369 { 0x300a, 0x01d0, "ST", "Setup ReferenceDescription" }, 2370 { 0x300a, 0x01d2, "DS", "Table Top Vertical Setup Displacement" }, 2371 { 0x300a, 0x01d4, "DS", "Table Top Longitudinal Setup Displacement" }, 2372 { 0x300a, 0x01d6, "DS", "Table Top Lateral Setup Displacement" }, 2373 { 0x300a, 0x0200, "CS", "Brachy Treatment Technique" }, 2374 { 0x300a, 0x0202, "CS", "Brachy Treatment Type" }, 2375 { 0x300a, 0x0206, "SQ", "Treatment Machine Sequence" }, 2376 { 0x300a, 0x0210, "SQ", "Source Sequence" }, 2377 { 0x300a, 0x0212, "IS", "Source Number" }, 2378 { 0x300a, 0x0214, "CS", "Source Type" }, 2379 { 0x300a, 0x0216, "LO", "Source Manufacturer" }, 2380 { 0x300a, 0x0218, "DS", "Active Source Diameter" }, 2381 { 0x300a, 0x021a, "DS", "Active Source Length" }, 2382 { 0x300a, 0x0222, "DS", "Source Encapsulation Nominal Thickness" }, 2383 { 0x300a, 0x0224, "DS", "Source Encapsulation Nominal Transmission" }, 2384 { 0x300a, 0x0226, "LO", "Source IsotopeName" }, 2385 { 0x300a, 0x0228, "DS", "Source Isotope Half Life" }, 2386 { 0x300a, 0x022a, "DS", "Reference Air Kerma Rate" }, 2387 { 0x300a, 0x022c, "DA", "Air Kerma Rate Reference Date" }, 2388 { 0x300a, 0x022e, "TM", "Air Kerma Rate Reference Time" }, 2389 { 0x300a, 0x0230, "SQ", "Application Setup Sequence" }, 2390 { 0x300a, 0x0232, "CS", "Application Setup Type" }, 2391 { 0x300a, 0x0234, "IS", "Application Setup Number" }, 2392 { 0x300a, 0x0236, "LO", "Application Setup Name" }, 2393 { 0x300a, 0x0238, "LO", "Application Setup Manufacturer" }, 2394 { 0x300a, 0x0240, "IS", "Template Number" }, 2395 { 0x300a, 0x0242, "SH", "Template Type" }, 2396 { 0x300a, 0x0244, "LO", "Template Name" }, 2397 { 0x300a, 0x0250, "DS", "Total Reference Air Kerma" }, 2398 { 0x300a, 0x0260, "SQ", "Brachy Accessory Device Sequence" }, 2399 { 0x300a, 0x0262, "IS", "Brachy Accessory Device Number" }, 2400 { 0x300a, 0x0263, "SH", "Brachy Accessory Device ID" }, 2401 { 0x300a, 0x0264, "CS", "Brachy Accessory Device Type" }, 2402 { 0x300a, 0x0266, "LO", "Brachy Accessory Device Name" }, 2403 { 0x300a, 0x026a, "DS", "Brachy Accessory Device Nominal Thickness" }, 2404 { 0x300a, 0x026c, "DS", "Brachy Accessory Device Nominal Transmission" }, 2405 { 0x300a, 0x0280, "SQ", "Channel Sequence" }, 2406 { 0x300a, 0x0282, "IS", "Channel Number" }, 2407 { 0x300a, 0x0284, "DS", "Channel Length" }, 2408 { 0x300a, 0x0286, "DS", "Channel Total Time" }, 2409 { 0x300a, 0x0288, "CS", "Source Movement Type" }, 2410 { 0x300a, 0x028a, "IS", "Number of Pulses" }, 2411 { 0x300a, 0x028c, "DS", "Pulse Repetition Interval" }, 2412 { 0x300a, 0x0290, "IS", "Source Applicator Number" }, 2413 { 0x300a, 0x0291, "SH", "Source Applicator ID" }, 2414 { 0x300a, 0x0292, "CS", "Source Applicator Type" }, 2415 { 0x300a, 0x0294, "LO", "Source Applicator Name" }, 2416 { 0x300a, 0x0296, "DS", "Source Applicator Length" }, 2417 { 0x300a, 0x0298, "LO", "Source Applicator Manufacturer" }, 2418 { 0x300a, 0x029c, "DS", "Source Applicator Wall Nominal Thickness" }, 2419 { 0x300a, 0x029e, "DS", "Source Applicator Wall Nominal Transmission" }, 2420 { 0x300a, 0x02a0, "DS", "Source Applicator Step Size" }, 2421 { 0x300a, 0x02a2, "IS", "Transfer Tube Number" }, 2422 { 0x300a, 0x02a4, "DS", "Transfer Tube Length" }, 2423 { 0x300a, 0x02b0, "SQ", "Channel Shield Sequence" }, 2424 { 0x300a, 0x02b2, "IS", "Channel Shield Number" }, 2425 { 0x300a, 0x02b3, "SH", "Channel Shield ID" }, 2426 { 0x300a, 0x02b4, "LO", "Channel Shield Name" }, 2427 { 0x300a, 0x02b8, "DS", "Channel Shield Nominal Thickness" }, 2428 { 0x300a, 0x02ba, "DS", "Channel Shield Nominal Transmission" }, 2429 { 0x300a, 0x02c8, "DS", "Final Cumulative Time Weight" }, 2430 { 0x300a, 0x02d0, "SQ", "Brachy Control Point Sequence" }, 2431 { 0x300a, 0x02d2, "DS", "Control Point Relative Position" }, 2432 { 0x300a, 0x02d4, "DS", "Control Point 3D Position" }, 2433 { 0x300a, 0x02d6, "DS", "Cumulative Time Weight" }, 2434 { 0x300c, 0x0002, "SQ", "Referenced RT Plan Sequence" }, 2435 { 0x300c, 0x0004, "SQ", "Referenced Beam Sequence" }, 2436 { 0x300c, 0x0006, "IS", "Referenced Beam Number" }, 2437 { 0x300c, 0x0007, "IS", "Referenced Reference Image Number" }, 2438 { 0x300c, 0x0008, "DS", "Start Cumulative Meterset Weight" }, 2439 { 0x300c, 0x0009, "DS", "End Cumulative Meterset Weight" }, 2440 { 0x300c, 0x000a, "SQ", "Referenced Brachy Application Setup Sequence" }, 2441 { 0x300c, 0x000c, "IS", "Referenced Brachy Application Setup Number" }, 2442 { 0x300c, 0x000e, "IS", "Referenced Source Number" }, 2443 { 0x300c, 0x0020, "SQ", "Referenced Fraction Group Sequence" }, 2444 { 0x300c, 0x0022, "IS", "Referenced Fraction Group Number" }, 2445 { 0x300c, 0x0040, "SQ", "Referenced Verification Image Sequence" }, 2446 { 0x300c, 0x0042, "SQ", "Referenced Reference Image Sequence" }, 2447 { 0x300c, 0x0050, "SQ", "Referenced Dose Reference Sequence" }, 2448 { 0x300c, 0x0051, "IS", "Referenced Dose Reference Number" }, 2449 { 0x300c, 0x0055, "SQ", "Brachy Referenced Dose Reference Sequence" }, 2450 { 0x300c, 0x0060, "SQ", "Referenced Structure Set Sequence" }, 2451 { 0x300c, 0x006a, "IS", "Referenced Patient Setup Number" }, 2452 { 0x300c, 0x0080, "SQ", "Referenced Dose Sequence" }, 2453 { 0x300c, 0x00a0, "IS", "Referenced Tolerance Table Number" }, 2454 { 0x300c, 0x00b0, "SQ", "Referenced Bolus Sequence" }, 2455 { 0x300c, 0x00c0, "IS", "Referenced Wedge Number" }, 2456 { 0x300c, 0x00d0, "IS", "Referenced Compensato rNumber" }, 2457 { 0x300c, 0x00e0, "IS", "Referenced Block Number" }, 2458 { 0x300c, 0x00f0, "IS", "Referenced Control Point" }, 2459 { 0x300e, 0x0002, "CS", "Approval Status" }, 2460 { 0x300e, 0x0004, "DA", "Review Date" }, 2461 { 0x300e, 0x0005, "TM", "Review Time" }, 2462 { 0x300e, 0x0008, "PN", "Reviewer Name" }, 2463 { 0x4000, 0x0000, "UL", "Text Group Length" }, 2464 { 0x4000, 0x0010, "LT", "Text Arbitrary" }, 2465 { 0x4000, 0x4000, "LT", "Text Comments" }, 2466 { 0x4008, 0x0000, "UL", "Results Group Length" }, 2467 { 0x4008, 0x0040, "SH", "Results ID" }, 2468 { 0x4008, 0x0042, "LO", "Results ID Issuer" }, 2469 { 0x4008, 0x0050, "SQ", "Referenced Interpretation Sequence" }, 2470 { 0x4008, 0x00ff, "CS", "Report Production Status" }, 2471 { 0x4008, 0x0100, "DA", "Interpretation Recorded Date" }, 2472 { 0x4008, 0x0101, "TM", "Interpretation Recorded Time" }, 2473 { 0x4008, 0x0102, "PN", "Interpretation Recorder" }, 2474 { 0x4008, 0x0103, "LO", "Reference to Recorded Sound" }, 2475 { 0x4008, 0x0108, "DA", "Interpretation Transcription Date" }, 2476 { 0x4008, 0x0109, "TM", "Interpretation Transcription Time" }, 2477 { 0x4008, 0x010a, "PN", "Interpretation Transcriber" }, 2478 { 0x4008, 0x010b, "ST", "Interpretation Text" }, 2479 { 0x4008, 0x010c, "PN", "Interpretation Author" }, 2480 { 0x4008, 0x0111, "SQ", "Interpretation Approver Sequence" }, 2481 { 0x4008, 0x0112, "DA", "Interpretation Approval Date" }, 2482 { 0x4008, 0x0113, "TM", "Interpretation Approval Time" }, 2483 { 0x4008, 0x0114, "PN", "Physician Approving Interpretation" }, 2484 { 0x4008, 0x0115, "LT", "Interpretation Diagnosis Description" }, 2485 { 0x4008, 0x0117, "SQ", "InterpretationDiagnosis Code Sequence" }, 2486 { 0x4008, 0x0118, "SQ", "Results Distribution List Sequence" }, 2487 { 0x4008, 0x0119, "PN", "Distribution Name" }, 2488 { 0x4008, 0x011a, "LO", "Distribution Address" }, 2489 { 0x4008, 0x0200, "SH", "Interpretation ID" }, 2490 { 0x4008, 0x0202, "LO", "Interpretation ID Issuer" }, 2491 { 0x4008, 0x0210, "CS", "Interpretation Type ID" }, 2492 { 0x4008, 0x0212, "CS", "Interpretation Status ID" }, 2493 { 0x4008, 0x0300, "ST", "Impressions" }, 2494 { 0x4008, 0x4000, "ST", "Results Comments" }, 2495 { 0x4009, 0x0001, "LT", "Report ID" }, 2496 { 0x4009, 0x0020, "LT", "Report Status" }, 2497 { 0x4009, 0x0030, "DA", "Report Creation Date" }, 2498 { 0x4009, 0x0070, "LT", "Report Approving Physician" }, 2499 { 0x4009, 0x00e0, "LT", "Report Text" }, 2500 { 0x4009, 0x00e1, "LT", "Report Author" }, 2501 { 0x4009, 0x00e3, "LT", "Reporting Radiologist" }, 2502 { 0x5000, 0x0000, "UL", "Curve Group Length" }, 2503 { 0x5000, 0x0005, "US", "Curve Dimensions" }, 2504 { 0x5000, 0x0010, "US", "Number of Points" }, 2505 { 0x5000, 0x0020, "CS", "Type of Data" }, 2506 { 0x5000, 0x0022, "LO", "Curve Description" }, 2507 { 0x5000, 0x0030, "SH", "Axis Units" }, 2508 { 0x5000, 0x0040, "SH", "Axis Labels" }, 2509 { 0x5000, 0x0103, "US", "Data Value Representation" }, 2510 { 0x5000, 0x0104, "US", "Minimum Coordinate Value" }, 2511 { 0x5000, 0x0105, "US", "Maximum Coordinate Value" }, 2512 { 0x5000, 0x0106, "SH", "Curve Range" }, 2513 { 0x5000, 0x0110, "US", "Curve Data Descriptor" }, 2514 { 0x5000, 0x0112, "US", "Coordinate Start Value" }, 2515 { 0x5000, 0x0114, "US", "Coordinate Step Value" }, 2516 { 0x5000, 0x1001, "CS", "Curve Activation Layer" }, 2517 { 0x5000, 0x2000, "US", "Audio Type" }, 2518 { 0x5000, 0x2002, "US", "Audio Sample Format" }, 2519 { 0x5000, 0x2004, "US", "Number of Channels" }, 2520 { 0x5000, 0x2006, "UL", "Number of Samples" }, 2521 { 0x5000, 0x2008, "UL", "Sample Rate" }, 2522 { 0x5000, 0x200a, "UL", "Total Time" }, 2523 { 0x5000, 0x200c, "xs", "Audio Sample Data" }, 2524 { 0x5000, 0x200e, "LT", "Audio Comments" }, 2525 { 0x5000, 0x2500, "LO", "Curve Label" }, 2526 { 0x5000, 0x2600, "SQ", "CurveReferenced Overlay Sequence" }, 2527 { 0x5000, 0x2610, "US", "CurveReferenced Overlay Group" }, 2528 { 0x5000, 0x3000, "OW", "Curve Data" }, 2529 { 0x6000, 0x0000, "UL", "Overlay Group Length" }, 2530 { 0x6000, 0x0001, "US", "Gray Palette Color Lookup Table Descriptor" }, 2531 { 0x6000, 0x0002, "US", "Gray Palette Color Lookup Table Data" }, 2532 { 0x6000, 0x0010, "US", "Overlay Rows" }, 2533 { 0x6000, 0x0011, "US", "Overlay Columns" }, 2534 { 0x6000, 0x0012, "US", "Overlay Planes" }, 2535 { 0x6000, 0x0015, "IS", "Number of Frames in Overlay" }, 2536 { 0x6000, 0x0022, "LO", "Overlay Description" }, 2537 { 0x6000, 0x0040, "CS", "Overlay Type" }, 2538 { 0x6000, 0x0045, "CS", "Overlay Subtype" }, 2539 { 0x6000, 0x0050, "SS", "Overlay Origin" }, 2540 { 0x6000, 0x0051, "US", "Image Frame Origin" }, 2541 { 0x6000, 0x0052, "US", "Plane Origin" }, 2542 { 0x6000, 0x0060, "LO", "Overlay Compression Code" }, 2543 { 0x6000, 0x0061, "SH", "Overlay Compression Originator" }, 2544 { 0x6000, 0x0062, "SH", "Overlay Compression Label" }, 2545 { 0x6000, 0x0063, "SH", "Overlay Compression Description" }, 2546 { 0x6000, 0x0066, "AT", "Overlay Compression Step Pointers" }, 2547 { 0x6000, 0x0068, "US", "Overlay Repeat Interval" }, 2548 { 0x6000, 0x0069, "US", "Overlay Bits Grouped" }, 2549 { 0x6000, 0x0100, "US", "Overlay Bits Allocated" }, 2550 { 0x6000, 0x0102, "US", "Overlay Bit Position" }, 2551 { 0x6000, 0x0110, "LO", "Overlay Format" }, 2552 { 0x6000, 0x0200, "xs", "Overlay Location" }, 2553 { 0x6000, 0x0800, "LO", "Overlay Code Label" }, 2554 { 0x6000, 0x0802, "US", "Overlay Number of Tables" }, 2555 { 0x6000, 0x0803, "AT", "Overlay Code Table Location" }, 2556 { 0x6000, 0x0804, "US", "Overlay Bits For Code Word" }, 2557 { 0x6000, 0x1001, "CS", "Overlay Activation Layer" }, 2558 { 0x6000, 0x1100, "US", "Overlay Descriptor - Gray" }, 2559 { 0x6000, 0x1101, "US", "Overlay Descriptor - Red" }, 2560 { 0x6000, 0x1102, "US", "Overlay Descriptor - Green" }, 2561 { 0x6000, 0x1103, "US", "Overlay Descriptor - Blue" }, 2562 { 0x6000, 0x1200, "US", "Overlays - Gray" }, 2563 { 0x6000, 0x1201, "US", "Overlays - Red" }, 2564 { 0x6000, 0x1202, "US", "Overlays - Green" }, 2565 { 0x6000, 0x1203, "US", "Overlays - Blue" }, 2566 { 0x6000, 0x1301, "IS", "ROI Area" }, 2567 { 0x6000, 0x1302, "DS", "ROI Mean" }, 2568 { 0x6000, 0x1303, "DS", "ROI Standard Deviation" }, 2569 { 0x6000, 0x1500, "LO", "Overlay Label" }, 2570 { 0x6000, 0x3000, "OW", "Overlay Data" }, 2571 { 0x6000, 0x4000, "LT", "Overlay Comments" }, 2572 { 0x6001, 0x0000, "UN", "?" }, 2573 { 0x6001, 0x0010, "LO", "?" }, 2574 { 0x6001, 0x1010, "xs", "?" }, 2575 { 0x6001, 0x1030, "xs", "?" }, 2576 { 0x6021, 0x0000, "xs", "?" }, 2577 { 0x6021, 0x0010, "xs", "?" }, 2578 { 0x7001, 0x0010, "LT", "Dummy" }, 2579 { 0x7003, 0x0010, "LT", "Info" }, 2580 { 0x7005, 0x0010, "LT", "Dummy" }, 2581 { 0x7000, 0x0004, "ST", "TextAnnotation" }, 2582 { 0x7000, 0x0005, "IS", "Box" }, 2583 { 0x7000, 0x0007, "IS", "ArrowEnd" }, 2584 { 0x7fe0, 0x0000, "UL", "Pixel Data Group Length" }, 2585 { 0x7fe0, 0x0010, "xs", "Pixel Data" }, 2586 { 0x7fe0, 0x0020, "OW", "Coefficients SDVN" }, 2587 { 0x7fe0, 0x0030, "OW", "Coefficients SDHN" }, 2588 { 0x7fe0, 0x0040, "OW", "Coefficients SDDN" }, 2589 { 0x7fe1, 0x0010, "xs", "Pixel Data" }, 2590 { 0x7f00, 0x0000, "UL", "Variable Pixel Data Group Length" }, 2591 { 0x7f00, 0x0010, "xs", "Variable Pixel Data" }, 2592 { 0x7f00, 0x0011, "US", "Variable Next Data Group" }, 2593 { 0x7f00, 0x0020, "OW", "Variable Coefficients SDVN" }, 2594 { 0x7f00, 0x0030, "OW", "Variable Coefficients SDHN" }, 2595 { 0x7f00, 0x0040, "OW", "Variable Coefficients SDDN" }, 2596 { 0x7fe1, 0x0000, "OB", "Binary Data" }, 2597 { 0x7fe3, 0x0000, "LT", "Image Graphics Format Code" }, 2598 { 0x7fe3, 0x0010, "OB", "Image Graphics" }, 2599 { 0x7fe3, 0x0020, "OB", "Image Graphics Dummy" }, 2600 { 0x7ff1, 0x0001, "US", "?" }, 2601 { 0x7ff1, 0x0002, "US", "?" }, 2602 { 0x7ff1, 0x0003, "xs", "?" }, 2603 { 0x7ff1, 0x0004, "IS", "?" }, 2604 { 0x7ff1, 0x0005, "US", "?" }, 2605 { 0x7ff1, 0x0007, "US", "?" }, 2606 { 0x7ff1, 0x0008, "US", "?" }, 2607 { 0x7ff1, 0x0009, "US", "?" }, 2608 { 0x7ff1, 0x000a, "LT", "?" }, 2609 { 0x7ff1, 0x000b, "US", "?" }, 2610 { 0x7ff1, 0x000c, "US", "?" }, 2611 { 0x7ff1, 0x000d, "US", "?" }, 2612 { 0x7ff1, 0x0010, "US", "?" }, 2613 { 0xfffc, 0xfffc, "OB", "Data Set Trailing Padding" }, 2614 { 0xfffe, 0xe000, "!!", "Item" }, 2615 { 0xfffe, 0xe00d, "!!", "Item Delimitation Item" }, 2616 { 0xfffe, 0xe0dd, "!!", "Sequence Delimitation Item" }, 2617 { 0xffff, 0xffff, "xs", (char *) NULL } 2618 }; 2619 2620 /* 2622 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2623 % % 2624 % % 2625 % % 2626 % I s D C M % 2627 % % 2628 % % 2629 % % 2630 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2631 % 2632 % IsDCM() returns MagickTrue if the image format type, identified by the 2633 % magick string, is DCM. 2634 % 2635 % The format of the ReadDCMImage method is: 2636 % 2637 % MagickBooleanType IsDCM(const unsigned char *magick,const size_t length) 2638 % 2639 % A description of each parameter follows: 2640 % 2641 % o magick: compare image format pattern against these bytes. 2642 % 2643 % o length: Specifies the length of the magick string. 2644 % 2645 */ 2646 static MagickBooleanType IsDCM(const unsigned char *magick,const size_t length) 2647 { 2648 if (length < 132) 2649 return(MagickFalse); 2650 if (LocaleNCompare((char *) (magick+128),"DICM",4) == 0) 2651 return(MagickTrue); 2652 return(MagickFalse); 2653 } 2654 2655 /* 2657 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2658 % % 2659 % % 2660 % % 2661 % R e a d D C M I m a g e % 2662 % % 2663 % % 2664 % % 2665 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2666 % 2667 % ReadDCMImage() reads a Digital Imaging and Communications in Medicine 2668 % (DICOM) file and returns it. It allocates the memory necessary for the 2669 % new Image structure and returns a pointer to the new image. 2670 % 2671 % The format of the ReadDCMImage method is: 2672 % 2673 % Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) 2674 % 2675 % A description of each parameter follows: 2676 % 2677 % o image_info: the image info. 2678 % 2679 % o exception: return any errors or warnings in this structure. 2680 % 2681 */ 2682 typedef struct _DCMStreamInfo 2683 { 2684 size_t 2685 remaining, 2686 segment_count; 2687 2688 ssize_t 2689 segments[15]; 2690 2691 size_t 2692 offset_count; 2693 2694 ssize_t 2695 *offsets; 2696 2697 ssize_t 2698 count; 2699 2700 int 2701 byte; 2702 } DCMStreamInfo; 2703 2704 static int ReadDCMByte(DCMStreamInfo *stream_info,Image *image) 2705 { 2706 if (image->compression != RLECompression) 2707 return(ReadBlobByte(image)); 2708 if (stream_info->count == 0) 2709 { 2710 int 2711 byte; 2712 2713 ssize_t 2714 count; 2715 2716 if (stream_info->remaining <= 2) 2717 stream_info->remaining=0; 2718 else 2719 stream_info->remaining-=2; 2720 count=(ssize_t) ReadBlobByte(image); 2721 byte=ReadBlobByte(image); 2722 if (count == 128) 2723 return(0); 2724 else 2725 if (count < 128) 2726 { 2727 /* 2728 Literal bytes. 2729 */ 2730 stream_info->count=count; 2731 stream_info->byte=(-1); 2732 return(byte); 2733 } 2734 else 2735 { 2736 /* 2737 Repeated bytes. 2738 */ 2739 stream_info->count=256-count; 2740 stream_info->byte=byte; 2741 return(byte); 2742 } 2743 } 2744 stream_info->count--; 2745 if (stream_info->byte >= 0) 2746 return(stream_info->byte); 2747 if (stream_info->remaining > 0) 2748 stream_info->remaining--; 2749 return(ReadBlobByte(image)); 2750 } 2751 2752 static unsigned short ReadDCMShort(DCMStreamInfo *stream_info,Image *image) 2753 { 2754 int 2755 shift; 2756 2757 unsigned short 2758 value; 2759 2760 if (image->compression != RLECompression) 2761 return(ReadBlobLSBShort(image)); 2762 shift=image->depth < 16 ? 4 : 8; 2763 value=ReadDCMByte(stream_info,image) | (unsigned short) 2764 (ReadDCMByte(stream_info,image) << shift); 2765 return(value); 2766 } 2767 2768 static signed short ReadDCMSignedShort(DCMStreamInfo *stream_info,Image *image) 2769 { 2770 union 2771 { 2772 unsigned short 2773 unsigned_value; 2774 2775 signed short 2776 signed_value; 2777 } quantum; 2778 2779 quantum.unsigned_value=ReadDCMShort(stream_info,image); 2780 return(quantum.signed_value); 2781 } 2782 2783 static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) 2784 { 2785 char 2786 explicit_vr[MagickPathExtent], 2787 implicit_vr[MagickPathExtent], 2788 magick[MagickPathExtent], 2789 photometric[MagickPathExtent]; 2790 2791 DCMStreamInfo 2792 *stream_info; 2793 2794 Image 2795 *image; 2796 2797 int 2798 *bluemap, 2799 datum, 2800 *greenmap, 2801 *graymap, 2802 index, 2803 *redmap; 2804 2805 MagickBooleanType 2806 explicit_file, 2807 explicit_retry, 2808 polarity, 2809 sequence, 2810 use_explicit; 2811 2812 MagickOffsetType 2813 offset; 2814 2815 Quantum 2816 *scale; 2817 2818 register ssize_t 2819 i, 2820 x; 2821 2822 register Quantum 2823 *q; 2824 2825 register unsigned char 2826 *p; 2827 2828 size_t 2829 bits_allocated, 2830 bytes_per_pixel, 2831 colors, 2832 depth, 2833 height, 2834 length, 2835 mask, 2836 max_value, 2837 number_scenes, 2838 quantum, 2839 samples_per_pixel, 2840 signed_data, 2841 significant_bits, 2842 status, 2843 width, 2844 window_width; 2845 2846 ssize_t 2847 count, 2848 rescale_intercept, 2849 rescale_slope, 2850 scene, 2851 window_center, 2852 y; 2853 2854 unsigned char 2855 *data; 2856 2857 unsigned short 2858 group, 2859 element; 2860 2861 /* 2862 Open image file. 2863 */ 2864 assert(image_info != (const ImageInfo *) NULL); 2865 assert(image_info->signature == MagickCoreSignature); 2866 if (image_info->debug != MagickFalse) 2867 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", 2868 image_info->filename); 2869 assert(exception != (ExceptionInfo *) NULL); 2870 assert(exception->signature == MagickCoreSignature); 2871 image=AcquireImage(image_info,exception); 2872 status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception); 2873 if (status == MagickFalse) 2874 { 2875 image=DestroyImageList(image); 2876 return((Image *) NULL); 2877 } 2878 image->depth=8UL; 2879 image->endian=LSBEndian; 2880 /* 2881 Read DCM preamble. 2882 */ 2883 stream_info=(DCMStreamInfo *) AcquireMagickMemory(sizeof(*stream_info)); 2884 if (stream_info == (DCMStreamInfo *) NULL) 2885 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 2886 (void) ResetMagickMemory(stream_info,0,sizeof(*stream_info)); 2887 count=ReadBlob(image,128,(unsigned char *) magick); 2888 if (count != 128) 2889 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 2890 count=ReadBlob(image,4,(unsigned char *) magick); 2891 if ((count != 4) || (LocaleNCompare(magick,"DICM",4) != 0)) 2892 { 2893 offset=SeekBlob(image,0L,SEEK_SET); 2894 if (offset < 0) 2895 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 2896 } 2897 /* 2898 Read DCM Medical image. 2899 */ 2900 (void) CopyMagickString(photometric,"MONOCHROME1 ",MagickPathExtent); 2901 bits_allocated=8; 2902 bytes_per_pixel=1; 2903 polarity=MagickFalse; 2904 data=(unsigned char *) NULL; 2905 depth=8; 2906 element=0; 2907 explicit_vr[2]='\0'; 2908 explicit_file=MagickFalse; 2909 colors=0; 2910 redmap=(int *) NULL; 2911 greenmap=(int *) NULL; 2912 bluemap=(int *) NULL; 2913 graymap=(int *) NULL; 2914 height=0; 2915 max_value=255UL; 2916 mask=0xffff; 2917 number_scenes=1; 2918 rescale_intercept=0; 2919 rescale_slope=1; 2920 samples_per_pixel=1; 2921 scale=(Quantum *) NULL; 2922 sequence=MagickFalse; 2923 signed_data=(~0UL); 2924 significant_bits=0; 2925 use_explicit=MagickFalse; 2926 explicit_retry = MagickFalse; 2927 width=0; 2928 window_center=0; 2929 window_width=0; 2930 for (group=0; (group != 0x7FE0) || (element != 0x0010) || 2931 (sequence != MagickFalse); ) 2932 { 2933 /* 2934 Read a group. 2935 */ 2936 image->offset=(ssize_t) TellBlob(image); 2937 group=ReadBlobLSBShort(image); 2938 element=ReadBlobLSBShort(image); 2939 if ((group != 0x0002) && (image->endian == MSBEndian)) 2940 { 2941 group=(unsigned short) ((group << 8) | ((group >> 8) & 0xFF)); 2942 element=(unsigned short) ((element << 8) | ((element >> 8) & 0xFF)); 2943 } 2944 quantum=0; 2945 /* 2946 Find corresponding VR for this group and element. 2947 */ 2948 for (i=0; dicom_info[i].group < 0xffff; i++) 2949 if ((group == dicom_info[i].group) && (element == dicom_info[i].element)) 2950 break; 2951 (void) CopyMagickString(implicit_vr,dicom_info[i].vr,MagickPathExtent); 2952 count=ReadBlob(image,2,(unsigned char *) explicit_vr); 2953 if (count != 2) 2954 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 2955 /* 2956 Check for "explicitness", but meta-file headers always explicit. 2957 */ 2958 if ((explicit_file == MagickFalse) && (group != 0x0002)) 2959 explicit_file=(isupper((unsigned char) *explicit_vr) != MagickFalse) && 2960 (isupper((unsigned char) *(explicit_vr+1)) != MagickFalse) ? 2961 MagickTrue : MagickFalse; 2962 use_explicit=((group == 0x0002) && (explicit_retry == MagickFalse)) || 2963 (explicit_file != MagickFalse) ? MagickTrue : MagickFalse; 2964 if ((use_explicit != MagickFalse) && (strncmp(implicit_vr,"xs",2) == 0)) 2965 (void) CopyMagickString(implicit_vr,explicit_vr,MagickPathExtent); 2966 if ((use_explicit == MagickFalse) || (strncmp(implicit_vr,"!!",2) == 0)) 2967 { 2968 offset=SeekBlob(image,(MagickOffsetType) -2,SEEK_CUR); 2969 if (offset < 0) 2970 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 2971 quantum=4; 2972 } 2973 else 2974 { 2975 /* 2976 Assume explicit type. 2977 */ 2978 quantum=2; 2979 if ((strncmp(explicit_vr,"OB",2) == 0) || 2980 (strncmp(explicit_vr,"UN",2) == 0) || 2981 (strncmp(explicit_vr,"OW",2) == 0) || 2982 (strncmp(explicit_vr,"SQ",2) == 0)) 2983 { 2984 (void) ReadBlobLSBShort(image); 2985 quantum=4; 2986 } 2987 } 2988 datum=0; 2989 if (quantum == 4) 2990 { 2991 if (group == 0x0002) 2992 datum=ReadBlobLSBSignedLong(image); 2993 else 2994 datum=ReadBlobSignedLong(image); 2995 } 2996 else 2997 if (quantum == 2) 2998 { 2999 if (group == 0x0002) 3000 datum=ReadBlobLSBSignedShort(image); 3001 else 3002 datum=ReadBlobSignedShort(image); 3003 } 3004 quantum=0; 3005 length=1; 3006 if (datum != 0) 3007 { 3008 if ((strncmp(implicit_vr,"SS",2) == 0) || 3009 (strncmp(implicit_vr,"US",2) == 0)) 3010 quantum=2; 3011 else 3012 if ((strncmp(implicit_vr,"UL",2) == 0) || 3013 (strncmp(implicit_vr,"SL",2) == 0) || 3014 (strncmp(implicit_vr,"FL",2) == 0)) 3015 quantum=4; 3016 else 3017 if (strncmp(implicit_vr,"FD",2) != 0) 3018 quantum=1; 3019 else 3020 quantum=8; 3021 if (datum != ~0) 3022 length=(size_t) datum/quantum; 3023 else 3024 { 3025 /* 3026 Sequence and item of undefined length. 3027 */ 3028 quantum=0; 3029 length=0; 3030 } 3031 } 3032 if (image_info->verbose != MagickFalse) 3033 { 3034 /* 3035 Display Dicom info. 3036 */ 3037 if (use_explicit == MagickFalse) 3038 explicit_vr[0]='\0'; 3039 for (i=0; dicom_info[i].description != (char *) NULL; i++) 3040 if ((group == dicom_info[i].group) && 3041 (element == dicom_info[i].element)) 3042 break; 3043 (void) FormatLocaleFile(stdout,"0x%04lX %4ld %s-%s (0x%04lx,0x%04lx)", 3044 (unsigned long) image->offset,(long) length,implicit_vr,explicit_vr, 3045 (unsigned long) group,(unsigned long) element); 3046 if (dicom_info[i].description != (char *) NULL) 3047 (void) FormatLocaleFile(stdout," %s",dicom_info[i].description); 3048 (void) FormatLocaleFile(stdout,": "); 3049 } 3050 if ((sequence == MagickFalse) && (group == 0x7FE0) && (element == 0x0010)) 3051 { 3052 if (image_info->verbose != MagickFalse) 3053 (void) FormatLocaleFile(stdout,"\n"); 3054 break; 3055 } 3056 /* 3057 Allocate space and read an array. 3058 */ 3059 data=(unsigned char *) NULL; 3060 if ((length == 1) && (quantum == 1)) 3061 datum=ReadBlobByte(image); 3062 else 3063 if ((length == 1) && (quantum == 2)) 3064 { 3065 if (group == 0x0002) 3066 datum=ReadBlobLSBSignedShort(image); 3067 else 3068 datum=ReadBlobSignedShort(image); 3069 } 3070 else 3071 if ((length == 1) && (quantum == 4)) 3072 { 3073 if (group == 0x0002) 3074 datum=ReadBlobLSBSignedLong(image); 3075 else 3076 datum=ReadBlobSignedLong(image); 3077 } 3078 else 3079 if ((quantum != 0) && (length != 0)) 3080 { 3081 if (~length >= 1) 3082 data=(unsigned char *) AcquireQuantumMemory(length+1,quantum* 3083 sizeof(*data)); 3084 if (data == (unsigned char *) NULL) 3085 ThrowReaderException(ResourceLimitError, 3086 "MemoryAllocationFailed"); 3087 count=ReadBlob(image,(size_t) quantum*length,data); 3088 if (count != (ssize_t) (quantum*length)) 3089 { 3090 if (image_info->verbose != MagickFalse) 3091 (void) FormatLocaleFile(stdout,"count=%d quantum=%d " 3092 "length=%d group=%d\n",(int) count,(int) quantum,(int) 3093 length,(int) group); 3094 ThrowReaderException(CorruptImageError, 3095 "InsufficientImageDataInFile"); 3096 } 3097 data[length*quantum]='\0'; 3098 } 3099 else 3100 if ((unsigned int) datum == 0xFFFFFFFFU) 3101 { 3102 sequence=MagickTrue; 3103 continue; 3104 } 3105 3106 if ((unsigned int) ((group << 16) | element) == 0xFFFEE0DD) 3107 { 3108 if (data != (unsigned char *) NULL) 3109 data=(unsigned char *) RelinquishMagickMemory(data); 3110 sequence=MagickFalse; 3111 continue; 3112 } 3113 3114 if (sequence != MagickFalse) 3115 { 3116 if (data != (unsigned char *) NULL) 3117 data=(unsigned char *) RelinquishMagickMemory(data); 3118 continue; 3119 } 3120 3121 switch (group) 3122 { 3123 case 0x0002: 3124 { 3125 switch (element) 3126 { 3127 case 0x0010: 3128 { 3129 char 3130 transfer_syntax[MagickPathExtent]; 3131 3132 /* 3133 Transfer Syntax. 3134 */ 3135 if ((datum == 0) && (explicit_retry == MagickFalse)) 3136 { 3137 explicit_retry=MagickTrue; 3138 (void) SeekBlob(image,(MagickOffsetType) 0,SEEK_SET); 3139 group=0; 3140 element=0; 3141 if (image_info->verbose != MagickFalse) 3142 (void) FormatLocaleFile(stdout, 3143 "Corrupted image - trying explicit format\n"); 3144 break; 3145 } 3146 *transfer_syntax='\0'; 3147 if (data != (unsigned char *) NULL) 3148 (void) CopyMagickString(transfer_syntax,(char *) data, 3149 MagickPathExtent); 3150 if (image_info->verbose != MagickFalse) 3151 (void) FormatLocaleFile(stdout,"transfer_syntax=%s\n", 3152 (const char *) transfer_syntax); 3153 if (strncmp(transfer_syntax,"1.2.840.10008.1.2",17) == 0) 3154 { 3155 int 3156 count, 3157 subtype, 3158 type; 3159 3160 type=1; 3161 subtype=0; 3162 if (strlen(transfer_syntax) > 17) 3163 { 3164 count=sscanf(transfer_syntax+17,".%d.%d",&type,&subtype); 3165 if (count < 1) 3166 ThrowReaderException(CorruptImageError, 3167 "ImproperImageHeader"); 3168 } 3169 switch (type) 3170 { 3171 case 1: 3172 { 3173 image->endian=LSBEndian; 3174 break; 3175 } 3176 case 2: 3177 { 3178 image->endian=MSBEndian; 3179 break; 3180 } 3181 case 4: 3182 { 3183 if ((subtype >= 80) && (subtype <= 81)) 3184 image->compression=JPEGCompression; 3185 else 3186 if ((subtype >= 90) && (subtype <= 93)) 3187 image->compression=JPEG2000Compression; 3188 else 3189 image->compression=JPEGCompression; 3190 break; 3191 } 3192 case 5: 3193 { 3194 image->compression=RLECompression; 3195 break; 3196 } 3197 } 3198 } 3199 break; 3200 } 3201 default: 3202 break; 3203 } 3204 break; 3205 } 3206 case 0x0028: 3207 { 3208 switch (element) 3209 { 3210 case 0x0002: 3211 { 3212 /* 3213 Samples per pixel. 3214 */ 3215 samples_per_pixel=(size_t) datum; 3216 break; 3217 } 3218 case 0x0004: 3219 { 3220 /* 3221 Photometric interpretation. 3222 */ 3223 if (data == (unsigned char *) NULL) 3224 break; 3225 for (i=0; i < (ssize_t) MagickMin(length,MagickPathExtent-1); i++) 3226 photometric[i]=(char) data[i]; 3227 photometric[i]='\0'; 3228 polarity=LocaleCompare(photometric,"MONOCHROME1 ") == 0 ? 3229 MagickTrue : MagickFalse; 3230 break; 3231 } 3232 case 0x0006: 3233 { 3234 /* 3235 Planar configuration. 3236 */ 3237 if (datum == 1) 3238 image->interlace=PlaneInterlace; 3239 break; 3240 } 3241 case 0x0008: 3242 { 3243 /* 3244 Number of frames. 3245 */ 3246 if (data == (unsigned char *) NULL) 3247 break; 3248 number_scenes=StringToUnsignedLong((char *) data); 3249 break; 3250 } 3251 case 0x0010: 3252 { 3253 /* 3254 Image rows. 3255 */ 3256 height=(size_t) datum; 3257 break; 3258 } 3259 case 0x0011: 3260 { 3261 /* 3262 Image columns. 3263 */ 3264 width=(size_t) datum; 3265 break; 3266 } 3267 case 0x0100: 3268 { 3269 /* 3270 Bits allocated. 3271 */ 3272 bits_allocated=(size_t) datum; 3273 bytes_per_pixel=1; 3274 if (datum > 8) 3275 bytes_per_pixel=2; 3276 depth=bits_allocated; 3277 if (depth > 32) 3278 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 3279 max_value=(1UL << bits_allocated)-1; 3280 break; 3281 } 3282 case 0x0101: 3283 { 3284 /* 3285 Bits stored. 3286 */ 3287 significant_bits=(size_t) datum; 3288 bytes_per_pixel=1; 3289 if (significant_bits > 8) 3290 bytes_per_pixel=2; 3291 depth=significant_bits; 3292 if (depth > 32) 3293 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 3294 max_value=(1UL << significant_bits)-1; 3295 mask=(size_t) GetQuantumRange(significant_bits); 3296 break; 3297 } 3298 case 0x0102: 3299 { 3300 /* 3301 High bit. 3302 */ 3303 break; 3304 } 3305 case 0x0103: 3306 { 3307 /* 3308 Pixel representation. 3309 */ 3310 signed_data=(size_t) datum; 3311 break; 3312 } 3313 case 0x1050: 3314 { 3315 /* 3316 Visible pixel range: center. 3317 */ 3318 if (data != (unsigned char *) NULL) 3319 window_center=(ssize_t) StringToLong((char *) data); 3320 break; 3321 } 3322 case 0x1051: 3323 { 3324 /* 3325 Visible pixel range: width. 3326 */ 3327 if (data != (unsigned char *) NULL) 3328 window_width=StringToUnsignedLong((char *) data); 3329 break; 3330 } 3331 case 0x1052: 3332 { 3333 /* 3334 Rescale intercept 3335 */ 3336 if (data != (unsigned char *) NULL) 3337 rescale_intercept=(ssize_t) StringToLong((char *) data); 3338 break; 3339 } 3340 case 0x1053: 3341 { 3342 /* 3343 Rescale slope 3344 */ 3345 if (data != (unsigned char *) NULL) 3346 rescale_slope=(ssize_t) StringToLong((char *) data); 3347 break; 3348 } 3349 case 0x1200: 3350 case 0x3006: 3351 { 3352 /* 3353 Populate graymap. 3354 */ 3355 if (data == (unsigned char *) NULL) 3356 break; 3357 colors=(size_t) (length/bytes_per_pixel); 3358 datum=(int) colors; 3359 graymap=(int *) AcquireQuantumMemory((size_t) colors, 3360 sizeof(*graymap)); 3361 if (graymap == (int *) NULL) 3362 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3363 for (i=0; i < (ssize_t) colors; i++) 3364 if (bytes_per_pixel == 1) 3365 graymap[i]=(int) data[i]; 3366 else 3367 graymap[i]=(int) ((short *) data)[i]; 3368 break; 3369 } 3370 case 0x1201: 3371 { 3372 unsigned short 3373 index; 3374 3375 /* 3376 Populate redmap. 3377 */ 3378 if (data == (unsigned char *) NULL) 3379 break; 3380 colors=(size_t) (length/2); 3381 datum=(int) colors; 3382 redmap=(int *) AcquireQuantumMemory((size_t) colors, 3383 sizeof(*redmap)); 3384 if (redmap == (int *) NULL) 3385 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3386 p=data; 3387 for (i=0; i < (ssize_t) colors; i++) 3388 { 3389 if (image->endian == MSBEndian) 3390 index=(unsigned short) ((*p << 8) | *(p+1)); 3391 else 3392 index=(unsigned short) (*p | (*(p+1) << 8)); 3393 redmap[i]=(int) index; 3394 p+=2; 3395 } 3396 break; 3397 } 3398 case 0x1202: 3399 { 3400 unsigned short 3401 index; 3402 3403 /* 3404 Populate greenmap. 3405 */ 3406 if (data == (unsigned char *) NULL) 3407 break; 3408 colors=(size_t) (length/2); 3409 datum=(int) colors; 3410 greenmap=(int *) AcquireQuantumMemory((size_t) colors, 3411 sizeof(*greenmap)); 3412 if (greenmap == (int *) NULL) 3413 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3414 p=data; 3415 for (i=0; i < (ssize_t) colors; i++) 3416 { 3417 if (image->endian == MSBEndian) 3418 index=(unsigned short) ((*p << 8) | *(p+1)); 3419 else 3420 index=(unsigned short) (*p | (*(p+1) << 8)); 3421 greenmap[i]=(int) index; 3422 p+=2; 3423 } 3424 break; 3425 } 3426 case 0x1203: 3427 { 3428 unsigned short 3429 index; 3430 3431 /* 3432 Populate bluemap. 3433 */ 3434 if (data == (unsigned char *) NULL) 3435 break; 3436 colors=(size_t) (length/2); 3437 datum=(int) colors; 3438 bluemap=(int *) AcquireQuantumMemory((size_t) colors, 3439 sizeof(*bluemap)); 3440 if (bluemap == (int *) NULL) 3441 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3442 p=data; 3443 for (i=0; i < (ssize_t) colors; i++) 3444 { 3445 if (image->endian == MSBEndian) 3446 index=(unsigned short) ((*p << 8) | *(p+1)); 3447 else 3448 index=(unsigned short) (*p | (*(p+1) << 8)); 3449 bluemap[i]=(int) index; 3450 p+=2; 3451 } 3452 break; 3453 } 3454 default: 3455 break; 3456 } 3457 break; 3458 } 3459 case 0x2050: 3460 { 3461 switch (element) 3462 { 3463 case 0x0020: 3464 { 3465 if ((data != (unsigned char *) NULL) && 3466 (strncmp((char *) data,"INVERSE",7) == 0)) 3467 polarity=MagickTrue; 3468 break; 3469 } 3470 default: 3471 break; 3472 } 3473 break; 3474 } 3475 default: 3476 break; 3477 } 3478 if (data != (unsigned char *) NULL) 3479 { 3480 char 3481 *attribute; 3482 3483 for (i=0; dicom_info[i].description != (char *) NULL; i++) 3484 if ((group == dicom_info[i].group) && 3485 (element == dicom_info[i].element)) 3486 break; 3487 if (dicom_info[i].description != (char *) NULL) 3488 { 3489 attribute=AcquireString("dcm:"); 3490 (void) ConcatenateString(&attribute,dicom_info[i].description); 3491 for (i=0; i < (ssize_t) MagickMax(length,4); i++) 3492 if (isprint((int) data[i]) == MagickFalse) 3493 break; 3494 if ((i == (ssize_t) length) || (length > 4)) 3495 { 3496 (void) SubstituteString(&attribute," ",""); 3497 (void) SetImageProperty(image,attribute,(char *) data,exception); 3498 } 3499 attribute=DestroyString(attribute); 3500 } 3501 } 3502 if (image_info->verbose != MagickFalse) 3503 { 3504 if (data == (unsigned char *) NULL) 3505 (void) FormatLocaleFile(stdout,"%d\n",datum); 3506 else 3507 { 3508 /* 3509 Display group data. 3510 */ 3511 for (i=0; i < (ssize_t) MagickMax(length,4); i++) 3512 if (isprint((int) data[i]) == MagickFalse) 3513 break; 3514 if ((i != (ssize_t) length) && (length <= 4)) 3515 { 3516 ssize_t 3517 j; 3518 3519 datum=0; 3520 for (j=(ssize_t) length-1; j >= 0; j--) 3521 datum=(256*datum+data[j]); 3522 (void) FormatLocaleFile(stdout,"%d",datum); 3523 } 3524 else 3525 for (i=0; i < (ssize_t) length; i++) 3526 if (isprint((int) data[i]) != MagickFalse) 3527 (void) FormatLocaleFile(stdout,"%c",data[i]); 3528 else 3529 (void) FormatLocaleFile(stdout,"%c",'.'); 3530 (void) FormatLocaleFile(stdout,"\n"); 3531 } 3532 } 3533 if (data != (unsigned char *) NULL) 3534 data=(unsigned char *) RelinquishMagickMemory(data); 3535 if (EOFBlob(image) != MagickFalse) 3536 { 3537 ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", 3538 image->filename); 3539 break; 3540 } 3541 } 3542 if ((width == 0) || (height == 0)) 3543 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 3544 image->columns=(size_t) width; 3545 image->rows=(size_t) height; 3546 if (signed_data == 0xffff) 3547 signed_data=(size_t) (significant_bits == 16 ? 1 : 0); 3548 if ((image->compression == JPEGCompression) || 3549 (image->compression == JPEG2000Compression)) 3550 { 3551 Image 3552 *images; 3553 3554 ImageInfo 3555 *read_info; 3556 3557 int 3558 c; 3559 3560 size_t 3561 length; 3562 3563 unsigned int 3564 tag; 3565 3566 /* 3567 Read offset table. 3568 */ 3569 for (i=0; i < (ssize_t) stream_info->remaining; i++) 3570 (void) ReadBlobByte(image); 3571 tag=(ReadBlobLSBShort(image) << 16) | ReadBlobLSBShort(image); 3572 (void) tag; 3573 length=(size_t) ReadBlobLSBLong(image); 3574 stream_info->offset_count=length >> 2; 3575 if (stream_info->offset_count != 0) 3576 { 3577 MagickOffsetType 3578 offset; 3579 3580 stream_info->offsets=(ssize_t *) AcquireQuantumMemory( 3581 stream_info->offset_count,sizeof(*stream_info->offsets)); 3582 if (stream_info->offsets == (ssize_t *) NULL) 3583 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3584 for (i=0; i < (ssize_t) stream_info->offset_count; i++) 3585 stream_info->offsets[i]=(ssize_t) ReadBlobLSBSignedLong(image); 3586 offset=TellBlob(image); 3587 for (i=0; i < (ssize_t) stream_info->offset_count; i++) 3588 stream_info->offsets[i]+=offset; 3589 } 3590 /* 3591 Handle non-native image formats. 3592 */ 3593 read_info=CloneImageInfo(image_info); 3594 SetImageInfoBlob(read_info,(void *) NULL,0); 3595 images=NewImageList(); 3596 for (scene=0; scene < (ssize_t) number_scenes; scene++) 3597 { 3598 char 3599 filename[MagickPathExtent]; 3600 3601 const char 3602 *property; 3603 3604 FILE 3605 *file; 3606 3607 Image 3608 *jpeg_image; 3609 3610 int 3611 unique_file; 3612 3613 unsigned int 3614 tag; 3615 3616 tag=(ReadBlobLSBShort(image) << 16) | ReadBlobLSBShort(image); 3617 length=(size_t) ReadBlobLSBLong(image); 3618 if (tag == 0xFFFEE0DD) 3619 break; /* sequence delimiter tag */ 3620 if (tag != 0xFFFEE000) 3621 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 3622 file=(FILE *) NULL; 3623 unique_file=AcquireUniqueFileResource(filename); 3624 if (unique_file != -1) 3625 file=fdopen(unique_file,"wb"); 3626 if (file == (FILE *) NULL) 3627 { 3628 (void) RelinquishUniqueFileResource(filename); 3629 ThrowFileException(exception,FileOpenError, 3630 "UnableToCreateTemporaryFile",filename); 3631 break; 3632 } 3633 for ( ; length != 0; length--) 3634 { 3635 c=ReadBlobByte(image); 3636 if (c == EOF) 3637 { 3638 ThrowFileException(exception,CorruptImageError, 3639 "UnexpectedEndOfFile",image->filename); 3640 break; 3641 } 3642 (void) fputc(c,file); 3643 } 3644 (void) fclose(file); 3645 (void) FormatLocaleString(read_info->filename,MagickPathExtent, 3646 "jpeg:%s",filename); 3647 if (image->compression == JPEG2000Compression) 3648 (void) FormatLocaleString(read_info->filename,MagickPathExtent, 3649 "j2k:%s",filename); 3650 jpeg_image=ReadImage(read_info,exception); 3651 if (jpeg_image != (Image *) NULL) 3652 { 3653 ResetImagePropertyIterator(image); 3654 property=GetNextImageProperty(image); 3655 while (property != (const char *) NULL) 3656 { 3657 (void) SetImageProperty(jpeg_image,property, 3658 GetImageProperty(image,property,exception),exception); 3659 property=GetNextImageProperty(image); 3660 } 3661 AppendImageToList(&images,jpeg_image); 3662 } 3663 (void) RelinquishUniqueFileResource(filename); 3664 } 3665 read_info=DestroyImageInfo(read_info); 3666 image=DestroyImage(image); 3667 return(GetFirstImageInList(images)); 3668 } 3669 if (depth != (1UL*MAGICKCORE_QUANTUM_DEPTH)) 3670 { 3671 QuantumAny 3672 range; 3673 3674 size_t 3675 length; 3676 3677 /* 3678 Compute pixel scaling table. 3679 */ 3680 length=(size_t) (GetQuantumRange(depth)+1); 3681 scale=(Quantum *) AcquireQuantumMemory(length,sizeof(*scale)); 3682 if (scale == (Quantum *) NULL) 3683 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3684 range=GetQuantumRange(depth); 3685 for (i=0; i <= (ssize_t) GetQuantumRange(depth); i++) 3686 scale[i]=ScaleAnyToQuantum((size_t) i,range); 3687 } 3688 if (image->compression == RLECompression) 3689 { 3690 size_t 3691 length; 3692 3693 unsigned int 3694 tag; 3695 3696 /* 3697 Read RLE offset table. 3698 */ 3699 for (i=0; i < (ssize_t) stream_info->remaining; i++) 3700 (void) ReadBlobByte(image); 3701 tag=(ReadBlobLSBShort(image) << 16) | ReadBlobLSBShort(image); 3702 (void) tag; 3703 length=(size_t) ReadBlobLSBLong(image); 3704 stream_info->offset_count=length >> 2; 3705 if (stream_info->offset_count != 0) 3706 { 3707 MagickOffsetType 3708 offset; 3709 3710 stream_info->offsets=(ssize_t *) AcquireQuantumMemory( 3711 stream_info->offset_count,sizeof(*stream_info->offsets)); 3712 if (stream_info->offsets == (ssize_t *) NULL) 3713 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3714 for (i=0; i < (ssize_t) stream_info->offset_count; i++) 3715 stream_info->offsets[i]=(ssize_t) ReadBlobLSBSignedLong(image); 3716 offset=TellBlob(image); 3717 for (i=0; i < (ssize_t) stream_info->offset_count; i++) 3718 stream_info->offsets[i]+=offset; 3719 } 3720 } 3721 for (scene=0; scene < (ssize_t) number_scenes; scene++) 3722 { 3723 if (image_info->ping != MagickFalse) 3724 break; 3725 image->columns=(size_t) width; 3726 image->rows=(size_t) height; 3727 image->depth=depth; 3728 status=SetImageExtent(image,image->columns,image->rows,exception); 3729 if (status == MagickFalse) 3730 break; 3731 image->colorspace=RGBColorspace; 3732 if ((image->colormap == (PixelInfo *) NULL) && (samples_per_pixel == 1)) 3733 { 3734 size_t 3735 one; 3736 3737 one=1; 3738 if (colors == 0) 3739 colors=one << depth; 3740 if (AcquireImageColormap(image,one << depth,exception) == MagickFalse) 3741 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 3742 if (redmap != (int *) NULL) 3743 for (i=0; i < (ssize_t) colors; i++) 3744 { 3745 index=redmap[i]; 3746 if ((scale != (Quantum *) NULL) && (index <= (int) max_value)) 3747 index=(int) scale[index]; 3748 image->colormap[i].red=(MagickRealType) index; 3749 } 3750 if (greenmap != (int *) NULL) 3751 for (i=0; i < (ssize_t) colors; i++) 3752 { 3753 index=greenmap[i]; 3754 if ((scale != (Quantum *) NULL) && (index <= (int) max_value)) 3755 index=(int) scale[index]; 3756 image->colormap[i].green=(MagickRealType) index; 3757 } 3758 if (bluemap != (int *) NULL) 3759 for (i=0; i < (ssize_t) colors; i++) 3760 { 3761 index=bluemap[i]; 3762 if ((scale != (Quantum *) NULL) && (index <= (int) max_value)) 3763 index=(int) scale[index]; 3764 image->colormap[i].blue=(MagickRealType) index; 3765 } 3766 if (graymap != (int *) NULL) 3767 for (i=0; i < (ssize_t) colors; i++) 3768 { 3769 index=graymap[i]; 3770 if ((scale != (Quantum *) NULL) && (index <= (int) max_value)) 3771 index=(int) scale[index]; 3772 image->colormap[i].red=(MagickRealType) index; 3773 image->colormap[i].green=(MagickRealType) index; 3774 image->colormap[i].blue=(MagickRealType) index; 3775 } 3776 } 3777 if (image->compression == RLECompression) 3778 { 3779 unsigned int 3780 tag; 3781 3782 /* 3783 Read RLE segment table. 3784 */ 3785 for (i=0; i < (ssize_t) stream_info->remaining; i++) 3786 (void) ReadBlobByte(image); 3787 tag=(ReadBlobLSBShort(image) << 16) | ReadBlobLSBShort(image); 3788 stream_info->remaining=(size_t) ReadBlobLSBLong(image); 3789 if ((tag != 0xFFFEE000) || (stream_info->remaining <= 64) || 3790 (EOFBlob(image) != MagickFalse)) 3791 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 3792 stream_info->count=0; 3793 stream_info->segment_count=ReadBlobLSBLong(image); 3794 if (stream_info->segment_count > 1) 3795 { 3796 bytes_per_pixel=1; 3797 depth=8; 3798 } 3799 for (i=0; i < 15; i++) 3800 stream_info->segments[i]=(ssize_t) ReadBlobLSBSignedLong(image); 3801 stream_info->remaining-=64; 3802 } 3803 if ((samples_per_pixel > 1) && (image->interlace == PlaneInterlace)) 3804 { 3805 /* 3806 Convert Planar RGB DCM Medical image to pixel packets. 3807 */ 3808 for (i=0; i < (ssize_t) samples_per_pixel; i++) 3809 { 3810 for (y=0; y < (ssize_t) image->rows; y++) 3811 { 3812 q=GetAuthenticPixels(image,0,y,image->columns,1,exception); 3813 if (q == (Quantum *) NULL) 3814 break; 3815 for (x=0; x < (ssize_t) image->columns; x++) 3816 { 3817 switch ((int) i) 3818 { 3819 case 0: 3820 { 3821 SetPixelRed(image,ScaleCharToQuantum((unsigned char) 3822 ReadDCMByte(stream_info,image)),q); 3823 break; 3824 } 3825 case 1: 3826 { 3827 SetPixelGreen(image,ScaleCharToQuantum((unsigned char) 3828 ReadDCMByte(stream_info,image)),q); 3829 break; 3830 } 3831 case 2: 3832 { 3833 SetPixelBlue(image,ScaleCharToQuantum((unsigned char) 3834 ReadDCMByte(stream_info,image)),q); 3835 break; 3836 } 3837 case 3: 3838 { 3839 SetPixelAlpha(image,ScaleCharToQuantum((unsigned char) 3840 ReadDCMByte(stream_info,image)),q); 3841 break; 3842 } 3843 default: 3844 break; 3845 } 3846 q+=GetPixelChannels(image); 3847 } 3848 if (SyncAuthenticPixels(image,exception) == MagickFalse) 3849 break; 3850 if (image->previous == (Image *) NULL) 3851 { 3852 status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) y, 3853 image->rows); 3854 if (status == MagickFalse) 3855 break; 3856 } 3857 } 3858 } 3859 } 3860 else 3861 { 3862 const char 3863 *option; 3864 3865 int 3866 byte; 3867 3868 PixelPacket 3869 pixel; 3870 3871 /* 3872 Convert DCM Medical image to pixel packets. 3873 */ 3874 byte=0; 3875 i=0; 3876 if ((window_center != 0) && (window_width == 0)) 3877 window_width=(size_t) window_center; 3878 option=GetImageOption(image_info,"dcm:display-range"); 3879 if (option != (const char *) NULL) 3880 { 3881 if (LocaleCompare(option,"reset") == 0) 3882 window_width=0; 3883 } 3884 (void) ResetMagickMemory(&pixel,0,sizeof(pixel)); 3885 for (y=0; y < (ssize_t) image->rows; y++) 3886 { 3887 q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); 3888 if (q == (Quantum *) NULL) 3889 break; 3890 for (x=0; x < (ssize_t) image->columns; x++) 3891 { 3892 if (samples_per_pixel == 1) 3893 { 3894 int 3895 pixel_value; 3896 3897 if (bytes_per_pixel == 1) 3898 pixel_value=polarity != MagickFalse ? 3899 ((int) max_value-ReadDCMByte(stream_info,image)) : 3900 ReadDCMByte(stream_info,image); 3901 else 3902 if ((bits_allocated != 12) || (significant_bits != 12)) 3903 { 3904 if (signed_data) 3905 pixel_value=ReadDCMSignedShort(stream_info,image); 3906 else 3907 pixel_value=ReadDCMShort(stream_info,image); 3908 if (polarity != MagickFalse) 3909 pixel_value=(int)max_value-pixel_value; 3910 } 3911 else 3912 { 3913 if ((i & 0x01) != 0) 3914 pixel_value=(ReadDCMByte(stream_info,image) << 8) | 3915 byte; 3916 else 3917 { 3918 pixel_value=ReadDCMSignedShort(stream_info,image); 3919 byte=(int) (pixel_value & 0x0f); 3920 pixel_value>>=4; 3921 } 3922 i++; 3923 } 3924 index=(pixel_value*rescale_slope)+rescale_intercept; 3925 if (window_width == 0) 3926 { 3927 if (signed_data == 1) 3928 index-=32767; 3929 } 3930 else 3931 { 3932 ssize_t 3933 window_max, 3934 window_min; 3935 3936 window_min=(ssize_t) ceil((double) window_center- 3937 (window_width-1.0)/2.0-0.5); 3938 window_max=(ssize_t) floor((double) window_center+ 3939 (window_width-1.0)/2.0+0.5); 3940 if ((ssize_t)index <= window_min) 3941 index=0; 3942 else 3943 if ((ssize_t)index > window_max) 3944 index=(int) max_value; 3945 else 3946 index=(int) (max_value*(((index-window_center- 3947 0.5)/(window_width-1))+0.5)); 3948 } 3949 index&=mask; 3950 index=(int) ConstrainColormapIndex(image,(size_t) index, 3951 exception); 3952 SetPixelIndex(image,(Quantum) index,q); 3953 pixel.red=(unsigned int) image->colormap[index].red; 3954 pixel.green=(unsigned int) image->colormap[index].green; 3955 pixel.blue=(unsigned int) image->colormap[index].blue; 3956 } 3957 else 3958 { 3959 if (bytes_per_pixel == 1) 3960 { 3961 pixel.red=(unsigned int) ReadDCMByte(stream_info,image); 3962 pixel.green=(unsigned int) ReadDCMByte(stream_info,image); 3963 pixel.blue=(unsigned int) ReadDCMByte(stream_info,image); 3964 } 3965 else 3966 { 3967 pixel.red=ReadDCMShort(stream_info,image); 3968 pixel.green=ReadDCMShort(stream_info,image); 3969 pixel.blue=ReadDCMShort(stream_info,image); 3970 } 3971 pixel.red&=mask; 3972 pixel.green&=mask; 3973 pixel.blue&=mask; 3974 if (scale != (Quantum *) NULL) 3975 { 3976 if (pixel.red <= GetQuantumRange(depth)) 3977 pixel.red=scale[pixel.red]; 3978 if (pixel.green <= GetQuantumRange(depth)) 3979 pixel.green=scale[pixel.green]; 3980 if (pixel.blue <= GetQuantumRange(depth)) 3981 pixel.blue=scale[pixel.blue]; 3982 } 3983 } 3984 SetPixelRed(image,(Quantum) pixel.red,q); 3985 SetPixelGreen(image,(Quantum) pixel.green,q); 3986 SetPixelBlue(image,(Quantum) pixel.blue,q); 3987 q+=GetPixelChannels(image); 3988 } 3989 if (SyncAuthenticPixels(image,exception) == MagickFalse) 3990 break; 3991 if (image->previous == (Image *) NULL) 3992 { 3993 status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) y, 3994 image->rows); 3995 if (status == MagickFalse) 3996 break; 3997 } 3998 } 3999 if (stream_info->segment_count > 1) 4000 for (y=0; y < (ssize_t) image->rows; y++) 4001 { 4002 q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); 4003 if (q == (Quantum *) NULL) 4004 break; 4005 for (x=0; x < (ssize_t) image->columns; x++) 4006 { 4007 if (samples_per_pixel == 1) 4008 { 4009 int 4010 pixel_value; 4011 4012 if (bytes_per_pixel == 1) 4013 pixel_value=polarity != MagickFalse ? 4014 ((int) max_value-ReadDCMByte(stream_info,image)) : 4015 ReadDCMByte(stream_info,image); 4016 else 4017 if ((bits_allocated != 12) || (significant_bits != 12)) 4018 { 4019 pixel_value=(int) (polarity != MagickFalse ? 4020 (max_value-ReadDCMShort(stream_info,image)) : 4021 ReadDCMShort(stream_info,image)); 4022 if (signed_data == 1) 4023 pixel_value=((signed short) pixel_value); 4024 } 4025 else 4026 { 4027 if ((i & 0x01) != 0) 4028 pixel_value=(ReadDCMByte(stream_info,image) << 8) | 4029 byte; 4030 else 4031 { 4032 pixel_value=ReadDCMShort(stream_info,image); 4033 byte=(int) (pixel_value & 0x0f); 4034 pixel_value>>=4; 4035 } 4036 i++; 4037 } 4038 index=(pixel_value*rescale_slope)+rescale_intercept; 4039 if (window_width == 0) 4040 { 4041 if (signed_data == 1) 4042 index-=32767; 4043 } 4044 else 4045 { 4046 ssize_t 4047 window_max, 4048 window_min; 4049 4050 window_min=(ssize_t) ceil((double) window_center- 4051 (window_width-1.0)/2.0-0.5); 4052 window_max=(ssize_t) floor((double) window_center+ 4053 (window_width-1.0)/2.0+0.5); 4054 if ((ssize_t)index <= window_min) 4055 index=0; 4056 else 4057 if ((ssize_t)index > window_max) 4058 index=(int) max_value; 4059 else 4060 index=(int) (max_value*(((index-window_center- 4061 0.5)/(window_width-1))+0.5)); 4062 } 4063 index&=mask; 4064 index=(int) ConstrainColormapIndex(image,(size_t) index, 4065 exception); 4066 SetPixelIndex(image,(Quantum) (((size_t) 4067 GetPixelIndex(image,q)) | (((size_t) index) << 8)),q); 4068 pixel.red=(unsigned int) image->colormap[index].red; 4069 pixel.green=(unsigned int) image->colormap[index].green; 4070 pixel.blue=(unsigned int) image->colormap[index].blue; 4071 } 4072 else 4073 { 4074 if (bytes_per_pixel == 1) 4075 { 4076 pixel.red=(unsigned int) ReadDCMByte(stream_info,image); 4077 pixel.green=(unsigned int) ReadDCMByte(stream_info,image); 4078 pixel.blue=(unsigned int) ReadDCMByte(stream_info,image); 4079 } 4080 else 4081 { 4082 pixel.red=ReadDCMShort(stream_info,image); 4083 pixel.green=ReadDCMShort(stream_info,image); 4084 pixel.blue=ReadDCMShort(stream_info,image); 4085 } 4086 pixel.red&=mask; 4087 pixel.green&=mask; 4088 pixel.blue&=mask; 4089 if (scale != (Quantum *) NULL) 4090 { 4091 pixel.red=scale[pixel.red]; 4092 pixel.green=scale[pixel.green]; 4093 pixel.blue=scale[pixel.blue]; 4094 } 4095 } 4096 SetPixelRed(image,(Quantum) (((size_t) GetPixelRed(image,q)) | 4097 (((size_t) pixel.red) << 8)),q); 4098 SetPixelGreen(image,(Quantum) (((size_t) GetPixelGreen(image,q)) | 4099 (((size_t) pixel.green) << 8)),q); 4100 SetPixelBlue(image,(Quantum) (((size_t) GetPixelBlue(image,q)) | 4101 (((size_t) pixel.blue) << 8)),q); 4102 q+=GetPixelChannels(image); 4103 } 4104 if (SyncAuthenticPixels(image,exception) == MagickFalse) 4105 break; 4106 if (image->previous == (Image *) NULL) 4107 { 4108 status=SetImageProgress(image,LoadImageTag,(MagickOffsetType) y, 4109 image->rows); 4110 if (status == MagickFalse) 4111 break; 4112 } 4113 } 4114 } 4115 if (SetImageGray(image,exception) != MagickFalse) 4116 (void) SetImageColorspace(image,GRAYColorspace,exception); 4117 if (EOFBlob(image) != MagickFalse) 4118 { 4119 ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", 4120 image->filename); 4121 break; 4122 } 4123 /* 4124 Proceed to next image. 4125 */ 4126 if (image_info->number_scenes != 0) 4127 if (image->scene >= (image_info->scene+image_info->number_scenes-1)) 4128 break; 4129 if (scene < (ssize_t) (number_scenes-1)) 4130 { 4131 /* 4132 Allocate next image structure. 4133 */ 4134 AcquireNextImage(image_info,image,exception); 4135 if (GetNextImageInList(image) == (Image *) NULL) 4136 { 4137 image=DestroyImageList(image); 4138 return((Image *) NULL); 4139 } 4140 image=SyncNextImageInList(image); 4141 status=SetImageProgress(image,LoadImagesTag,TellBlob(image), 4142 GetBlobSize(image)); 4143 if (status == MagickFalse) 4144 break; 4145 } 4146 } 4147 /* 4148 Free resources. 4149 */ 4150 if (stream_info->offsets != (ssize_t *) NULL) 4151 stream_info->offsets=(ssize_t *) 4152 RelinquishMagickMemory(stream_info->offsets); 4153 stream_info=(DCMStreamInfo *) RelinquishMagickMemory(stream_info); 4154 if (scale != (Quantum *) NULL) 4155 scale=(Quantum *) RelinquishMagickMemory(scale); 4156 if (graymap != (int *) NULL) 4157 graymap=(int *) RelinquishMagickMemory(graymap); 4158 if (bluemap != (int *) NULL) 4159 bluemap=(int *) RelinquishMagickMemory(bluemap); 4160 if (greenmap != (int *) NULL) 4161 greenmap=(int *) RelinquishMagickMemory(greenmap); 4162 if (redmap != (int *) NULL) 4163 redmap=(int *) RelinquishMagickMemory(redmap); 4164 (void) CloseBlob(image); 4165 return(GetFirstImageInList(image)); 4166 } 4167 4168 /* 4170 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4171 % % 4172 % % 4173 % % 4174 % R e g i s t e r D C M I m a g e % 4175 % % 4176 % % 4177 % % 4178 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4179 % 4180 % RegisterDCMImage() adds attributes for the DCM image format to 4181 % the list of supported formats. The attributes include the image format 4182 % tag, a method to read and/or write the format, whether the format 4183 % supports the saving of more than one frame to the same file or blob, 4184 % whether the format supports native in-memory I/O, and a brief 4185 % description of the format. 4186 % 4187 % The format of the RegisterDCMImage method is: 4188 % 4189 % size_t RegisterDCMImage(void) 4190 % 4191 */ 4192 ModuleExport size_t RegisterDCMImage(void) 4193 { 4194 MagickInfo 4195 *entry; 4196 4197 static const char 4198 *DCMNote= 4199 { 4200 "DICOM is used by the medical community for images like X-rays. The\n" 4201 "specification, \"Digital Imaging and Communications in Medicine\n" 4202 "(DICOM)\", is available at http://medical.nema.org/. In particular,\n" 4203 "see part 5 which describes the image encoding (RLE, JPEG, JPEG-LS),\n" 4204 "and supplement 61 which adds JPEG-2000 encoding." 4205 }; 4206 4207 entry=AcquireMagickInfo("DCM","DCM", 4208 "Digital Imaging and Communications in Medicine image"); 4209 entry->decoder=(DecodeImageHandler *) ReadDCMImage; 4210 entry->magick=(IsImageFormatHandler *) IsDCM; 4211 entry->flags^=CoderAdjoinFlag; 4212 entry->flags|=CoderSeekableStreamFlag; 4213 entry->note=ConstantString(DCMNote); 4214 (void) RegisterMagickInfo(entry); 4215 return(MagickImageCoderSignature); 4216 } 4217 4218 /* 4220 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4221 % % 4222 % % 4223 % % 4224 % U n r e g i s t e r D C M I m a g e % 4225 % % 4226 % % 4227 % % 4228 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4229 % 4230 % UnregisterDCMImage() removes format registrations made by the 4231 % DCM module from the list of supported formats. 4232 % 4233 % The format of the UnregisterDCMImage method is: 4234 % 4235 % UnregisterDCMImage(void) 4236 % 4237 */ 4238 ModuleExport void UnregisterDCMImage(void) 4239 { 4240 (void) UnregisterMagickInfo("DCM"); 4241 } 4242