diff --git a/src/utils/dcmUpload/anonymization.js b/src/utils/dcmUpload/anonymization.js index 19b9503f..6f9d30cd 100644 --- a/src/utils/dcmUpload/anonymization.js +++ b/src/utils/dcmUpload/anonymization.js @@ -1,5 +1,5 @@ import dicomParser from "dicom-parser"; -import dcmjs from 'dcmjs' +import dcmjs from './dcmjs' import {encoder} from "./encoder"; export const anonymization = function (file, config) { diff --git a/src/utils/dcmUpload/dcmjs.js b/src/utils/dcmUpload/dcmjs.js new file mode 100644 index 00000000..adb99a3a --- /dev/null +++ b/src/utils/dcmUpload/dcmjs.js @@ -0,0 +1,25001 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.dcmjs = {})); +})(this, (function (exports) { 'use strict'; + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; + } + + var lib = {exports: {}}; + + /* + Copyright © 2018 Andrew Powell + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of this Source Code Form. + */ + + const noop = () => {}; + const levels = Symbol('log-levels'); + const instance = Symbol('log-instance'); + + var MethodFactory_1 = class MethodFactory { + constructor(logger) { + this[instance] = logger; + this[levels] = { + TRACE: 0, + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + SILENT: 5 + }; + } + + get levels() { + return this[levels]; + } + + get logger() { + return this[instance]; + } + + set logger(logger) { + this[instance] = logger; + } + + get methods() { + return Object.keys(this.levels) + .map((key) => key.toLowerCase()) + .filter((key) => key !== 'silent'); + } + + // eslint-disable-next-line class-methods-use-this + bindMethod(obj, methodName) { + const method = obj[methodName]; + if (typeof method.bind === 'function') { + return method.bind(obj); + } + + try { + return Function.prototype.bind.call(method, obj); + } catch (e) { + // Missing bind shim or IE8 + Modernizr, fallback to wrapping + return function result() { + // eslint-disable-next-line prefer-rest-params + return Function.prototype.apply.apply(method, [obj, arguments]); + }; + } + } + + distillLevel(level) { + let result = level; + + if (typeof result === 'string' && typeof this.levels[result.toUpperCase()] !== 'undefined') { + result = this.levels[result.toUpperCase()]; + } + + if (this.levelValid(result)) { + return result; + } + + return false; + } + + levelValid(level) { + if (typeof level === 'number' && level >= 0 && level <= this.levels.SILENT) { + return true; + } + + return false; + } + + /** + * Build the best logging method possible for this env + * Wherever possible we want to bind, not wrap, to preserve stack traces. + * Since we're targeting modern browsers, there's no need to wait for the + * console to become available. + */ + // eslint-disable-next-line class-methods-use-this + make(methodName) { + if (methodName === 'debug') { + // eslint-disable-next-line no-param-reassign + methodName = 'log'; + } + + /* eslint-disable no-console */ + if (typeof console[methodName] !== 'undefined') { + return this.bindMethod(console, methodName); + } else if (typeof console.log !== 'undefined') { + return this.bindMethod(console, 'log'); + } + + /* eslint-enable no-console */ + return noop; + } + + replaceMethods(logLevel) { + const level = this.distillLevel(logLevel); + + if (level == null) { + throw new Error(`loglevelnext: replaceMethods() called with invalid level: ${logLevel}`); + } + + if (!this.logger || this.logger.type !== 'LogLevel') { + throw new TypeError( + 'loglevelnext: Logger is undefined or invalid. Please specify a valid Logger instance.' + ); + } + + this.methods.forEach((methodName) => { + const { [methodName.toUpperCase()]: methodLevel } = this.levels; + + this.logger[methodName] = methodLevel < level ? noop : this.make(methodName); + }); + + // Define log.log as an alias for log.debug + this.logger.log = this.logger.debug; + } + }; + + /* + Copyright © 2018 Andrew Powell + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of this Source Code Form. + */ + + const MethodFactory$1 = MethodFactory_1; + + const defaults$1 = { + level: (opts) => `[${opts.level}]`, + name: (opts) => opts.logger.name, + template: '{{time}} {{level}} ', + time: () => new Date().toTimeString().split(' ')[0] + }; + + var PrefixFactory_1 = class PrefixFactory extends MethodFactory$1 { + constructor(logger, options) { + super(logger); + this.options = Object.assign({}, defaults$1, options); + } + + interpolate(level) { + return this.options.template.replace(/{{([^{}]*)}}/g, (stache, prop) => { + const fn = this.options[prop]; + + if (fn) { + return fn({ level, logger: this.logger }); + } + + return stache; + }); + } + + make(methodName) { + const og = super.make(methodName); + + return (...args) => { + const output = this.interpolate(methodName); + const [first] = args; + + if (typeof first === 'string') { + // eslint-disable-next-line no-param-reassign + args[0] = output + first; + } else { + args.unshift(output); + } + + og(...args); + }; + } + }; + + /* + Copyright © 2018 Andrew Powell + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of this Source Code Form. + */ + + const PrefixFactory = PrefixFactory_1; + + const MethodFactory = MethodFactory_1; + + const defaults = { + factory: null, + level: 'warn', + name: +new Date(), + prefix: null + }; + + var LogLevel_1 = class LogLevel { + constructor(options) { + // implement for some _very_ loose type checking. avoids getting into a + // circular require between MethodFactory and LogLevel + this.type = 'LogLevel'; + this.options = Object.assign({}, defaults, options); + this.methodFactory = options.factory; + + if (!this.methodFactory) { + const factory = options.prefix + ? new PrefixFactory(this, options.prefix) + : new MethodFactory(this); + this.methodFactory = factory; + } + + if (!this.methodFactory.logger) { + this.methodFactory.logger = this; + } + + this.name = options.name || ''; + + // this.level is a setter, do this after setting up the factory + this.level = this.options.level; + } + + get factory() { + return this.methodFactory; + } + + set factory(factory) { + // eslint-disable-next-line no-param-reassign + factory.logger = this; + this.methodFactory = factory; + this.methodFactory.replaceMethods(this.level); + } + + disable() { + this.level = this.levels.SILENT; + } + + enable() { + this.level = this.levels.TRACE; + } + + get level() { + return this.currentLevel; + } + + set level(logLevel) { + const level = this.methodFactory.distillLevel(logLevel); + + if (level === false || level == null) { + throw new RangeError(`loglevelnext: setLevel() called with invalid level: ${logLevel}`); + } + + this.currentLevel = level; + this.methodFactory.replaceMethods(level); + + if (typeof console === 'undefined' && level < this.levels.SILENT) { + // eslint-disable-next-line no-console + console.warn('loglevelnext: console is undefined. The log will produce no output.'); + } + } + + get levels() { + // eslint-disable-line class-methods-use-this + return this.methodFactory.levels; + } + }; + + /* + Copyright © 2018 Andrew Powell + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of this Source Code Form. + */ + + (function (module) { + const LogLevel = LogLevel_1; + const MethodFactory = MethodFactory_1; + const PrefixFactory = PrefixFactory_1; + + const factories = Symbol('log-factories'); + + class DefaultLogger extends LogLevel { + constructor() { + super({ name: 'default' }); + + this.cache = { default: this }; + this[factories] = { MethodFactory, PrefixFactory }; + } + + get factories() { + return this[factories]; + } + + get loggers() { + return this.cache; + } + + create(opts) { + let options; + + if (typeof opts === 'string') { + options = { name: opts }; + } else { + options = Object.assign({}, opts); + } + + if (!options.id) { + options.id = options.name; + } + + const { name, id } = options; + const defaults = { level: this.level }; + + if (typeof name !== 'string' || !name || !name.length) { + throw new TypeError('You must supply a name when creating a logger.'); + } + + let logger = this.cache[id]; + if (!logger) { + logger = new LogLevel(Object.assign({}, defaults, options)); + this.cache[id] = logger; + } + return logger; + } + } + + module.exports = new DefaultLogger(); + + // TypeScript fix + module.exports.default = module.exports; + } (lib)); + + var libExports = lib.exports; + var loglevelnext = /*@__PURE__*/getDefaultExportFromCjs(libExports); + + var log = loglevelnext.create("dcmjs"); + /** + * A validation log shows issues with data validation, and not internal issues itself. + * This is validation.dcmjs to group the validation issues into a single validation set to allow + * turning validation on/off. + */ + + var validationLog = loglevelnext.create("validation.dcmjs"); + + /* eslint no-bitwise: 0 */ + var BitArray = { + getBytesForBinaryFrame: getBytesForBinaryFrame, + pack: pack, + unpack: unpack + }; + + function getBytesForBinaryFrame(numPixels) { + // Check whether the 1-bit pixels exactly fit into bytes + var remainder = numPixels % 8; // Number of bytes that work on an exact fit + + var bytesRequired = Math.floor(numPixels / 8); // Add one byte if we have a remainder + + if (remainder > 0) { + bytesRequired++; + } + + return bytesRequired; + } + + function pack(pixelData) { + var numPixels = pixelData.length; + log.debug("numPixels: " + numPixels); + var length = getBytesForBinaryFrame(numPixels); //log.log('getBytesForBinaryFrame: ' + length); + + var bitPixelData = new Uint8Array(length); + var bytePos = 0; + + for (var i = 0; i < numPixels; i++) { + // Compute byte position + bytePos = Math.floor(i / 8); + var pixValue = pixelData[i] !== 0; //log.log('i: ' + i); + //log.log('pixValue: ' + pixValue); + //log.log('bytePos: ' + bytePos); + + var bitPixelValue = pixValue << i % 8; //log.log('current bitPixelData: ' + bitPixelData[bytePos]); + //log.log('this bitPixelValue: ' + bitPixelValue); + + bitPixelData[bytePos] |= bitPixelValue; //log.log('new bitPixelValue: ' + bitPixelData[bytePos]); + } + + return bitPixelData; + } // convert a packed bitwise pixel array into a byte-per-pixel + // array with 255 corresponding to each set bit in the bit array + + + function unpack(bitPixelArray) { + var bitArray = new Uint8Array(bitPixelArray); + var byteArray = new Uint8Array(8 * bitArray.length); + + for (var byteIndex = 0; byteIndex < byteArray.length; byteIndex++) { + var bitIndex = byteIndex % 8; + var bitByteIndex = Math.floor(byteIndex / 8); + byteArray[byteIndex] = 255 * ((bitArray[bitByteIndex] & 1 << bitIndex) >> bitIndex); + } + + return byteArray; + } + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + + return target; + } + + function _typeof(obj) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }, _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { + writable: false + }); + return Constructor; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + Object.defineProperty(subClass, "prototype", { + writable: false + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } else if (call !== void 0) { + throw new TypeError("Derived constructors may only return object or undefined"); + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function _createSuperInternal() { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get() { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(arguments.length < 3 ? target : receiver); + } + + return desc.value; + }; + } + + return _get.apply(this, arguments); + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = it.call(o); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } + }; + } + + /*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */ + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + /* eslint-disable space-unary-ops */ + + /* Public constants ==========================================================*/ + /* ===========================================================================*/ + + + //const Z_FILTERED = 1; + //const Z_HUFFMAN_ONLY = 2; + //const Z_RLE = 3; + const Z_FIXED$1 = 4; + //const Z_DEFAULT_STRATEGY = 0; + + /* Possible values of the data_type field (though see inflate()) */ + const Z_BINARY = 0; + const Z_TEXT = 1; + //const Z_ASCII = 1; // = Z_TEXT + const Z_UNKNOWN$1 = 2; + + /*============================================================================*/ + + + function zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } } + + // From zutil.h + + const STORED_BLOCK = 0; + const STATIC_TREES = 1; + const DYN_TREES = 2; + /* The three kinds of block type */ + + const MIN_MATCH$1 = 3; + const MAX_MATCH$1 = 258; + /* The minimum and maximum match lengths */ + + // From deflate.h + /* =========================================================================== + * Internal compression state. + */ + + const LENGTH_CODES$1 = 29; + /* number of length codes, not counting the special END_BLOCK code */ + + const LITERALS$1 = 256; + /* number of literal bytes 0..255 */ + + const L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1; + /* number of Literal or Length codes, including the END_BLOCK code */ + + const D_CODES$1 = 30; + /* number of distance codes */ + + const BL_CODES$1 = 19; + /* number of codes used to transfer the bit lengths */ + + const HEAP_SIZE$1 = 2 * L_CODES$1 + 1; + /* maximum heap size */ + + const MAX_BITS$1 = 15; + /* All codes must not exceed MAX_BITS bits */ + + const Buf_size = 16; + /* size of bit buffer in bi_buf */ + + + /* =========================================================================== + * Constants + */ + + const MAX_BL_BITS = 7; + /* Bit length codes must not exceed MAX_BL_BITS bits */ + + const END_BLOCK = 256; + /* end of block literal code */ + + const REP_3_6 = 16; + /* repeat previous bit length 3-6 times (2 bits of repeat count) */ + + const REPZ_3_10 = 17; + /* repeat a zero length 3-10 times (3 bits of repeat count) */ + + const REPZ_11_138 = 18; + /* repeat a zero length 11-138 times (7 bits of repeat count) */ + + /* eslint-disable comma-spacing,array-bracket-spacing */ + const extra_lbits = /* extra bits for each length code */ + new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]); + + const extra_dbits = /* extra bits for each distance code */ + new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]); + + const extra_blbits = /* extra bits for each bit length code */ + new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]); + + const bl_order = + new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]); + /* eslint-enable comma-spacing,array-bracket-spacing */ + + /* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + + /* =========================================================================== + * Local data. These are initialized only once. + */ + + // We pre-fill arrays with 0 to avoid uninitialized gaps + + const DIST_CODE_LEN = 512; /* see definition of array dist_code below */ + + // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 + const static_ltree = new Array((L_CODES$1 + 2) * 2); + zero$1(static_ltree); + /* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + + const static_dtree = new Array(D_CODES$1 * 2); + zero$1(static_dtree); + /* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + + const _dist_code = new Array(DIST_CODE_LEN); + zero$1(_dist_code); + /* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + + const _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1); + zero$1(_length_code); + /* length code for each normalized match length (0 == MIN_MATCH) */ + + const base_length = new Array(LENGTH_CODES$1); + zero$1(base_length); + /* First normalized length for each code (0 = MIN_MATCH) */ + + const base_dist = new Array(D_CODES$1); + zero$1(base_dist); + /* First normalized distance for each code (0 = distance of 1) */ + + + function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ + + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; + } + + + let static_l_desc; + let static_d_desc; + let static_bl_desc; + + + function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ + } + + + + const d_code = (dist) => { + + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; + }; + + + /* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ + const put_short = (s, w) => { + // put_byte(s, (uch)((w) & 0xff)); + // put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; + }; + + + /* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ + const send_bits = (s, value, length) => { + + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; + } else { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; + } + }; + + + const send_code = (s, c, tree) => { + + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); + }; + + + /* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ + const bi_reverse = (code, len) => { + + let res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; + }; + + + /* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ + const bi_flush = (s) => { + + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; + } + }; + + + /* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ + const gen_bitlen = (s, desc) => + // deflate_state *s; + // tree_desc *desc; /* the tree descriptor */ + { + const tree = desc.dyn_tree; + const max_code = desc.max_code; + const stree = desc.stat_desc.static_tree; + const has_stree = desc.stat_desc.has_stree; + const extra = desc.stat_desc.extra_bits; + const base = desc.stat_desc.extra_base; + const max_length = desc.stat_desc.max_length; + let h; /* heap index */ + let n, m; /* iterate over the tree elements */ + let bits; /* bit length */ + let xbits; /* extra bits */ + let f; /* frequency */ + let overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS$1; bits++) { + s.bl_count[bits] = 0; + } + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ + + for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) { continue; } /* not a leaf node */ + + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } + + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; + } + n--; + } + } + }; + + + /* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ + const gen_codes = (tree, max_code, bl_count) => + // ct_data *tree; /* the tree to decorate */ + // int max_code; /* largest code with non zero frequency */ + // ushf *bl_count; /* number of codes at each bit length */ + { + const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */ + let code = 0; /* running code value */ + let bits; /* bit index */ + let n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS$1; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1< { + + let n; /* iterates over tree elements */ + let bits; /* bit counter */ + let length; /* length value */ + let code; /* code value */ + let dist; /* distance index */ + const bl_count = new Array(MAX_BITS$1 + 1); + /* number of codes at each bit length for an optimal tree */ + + // do check in _tr_init() + //if (static_init_done) return; + + /* For some embedded targets, global variables are not initialized: */ + /*#ifdef NO_INIT_GLOBAL_POINTERS + static_l_desc.static_tree = static_ltree; + static_l_desc.extra_bits = extra_lbits; + static_d_desc.static_tree = static_dtree; + static_d_desc.extra_bits = extra_dbits; + static_bl_desc.extra_bits = extra_blbits; + #endif*/ + + /* Initialize the mapping length (0..255) -> length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES$1 - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; + } + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES$1; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS$1; bits++) { + bl_count[bits] = 0; + } + + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES$1 + 1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES$1; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS); + + //static_init_done = true; + }; + + + /* =========================================================================== + * Initialize a new block. + */ + const init_block = (s) => { + + let n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; + }; + + + /* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ + const bi_windup = (s) => + { + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; + }; + + /* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ + const copy_block = (s, buf, len, header) => + //DeflateState *s; + //charf *buf; /* the input data */ + //unsigned len; /* its length */ + //int header; /* true if block header must be written */ + { + bi_windup(s); /* align on byte boundary */ + + if (header) { + put_short(s, len); + put_short(s, ~len); + } + // while (len--) { + // put_byte(s, *buf++); + // } + s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending); + s.pending += len; + }; + + /* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ + const smaller = (tree, n, m, depth) => { + + const _n2 = n * 2; + const _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); + }; + + /* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ + const pqdownheap = (s, tree, k) => + // deflate_state *s; + // ct_data *tree; /* the tree to restore */ + // int k; /* node to move down */ + { + const v = s.heap[k]; + let j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } + + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; + }; + + + // inlined manually + // const SMALLEST = 1; + + /* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ + const compress_block = (s, ltree, dtree) => + // deflate_state *s; + // const ct_data *ltree; /* literal tree */ + // const ct_data *dtree; /* distance tree */ + { + let dist; /* distance of matched string */ + let lc; /* match length or unmatched char (if dist == 0) */ + let lx = 0; /* running index in l_buf */ + let code; /* the code to send */ + let extra; /* number of extra bits to send */ + + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; + + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); + + } while (lx < s.last_lit); + } + + send_code(s, END_BLOCK, ltree); + }; + + + /* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ + const build_tree = (s, desc) => + // deflate_state *s; + // tree_desc *desc; /* the tree descriptor */ + { + const tree = desc.dyn_tree; + const stree = desc.stat_desc.static_tree; + const has_stree = desc.stat_desc.has_stree; + const elems = desc.stat_desc.elems; + let n, m; /* iterate over heap elements */ + let max_code = -1; /* largest code with non zero frequency */ + let node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE$1; + + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; + + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; + + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; + } + /* node is 0 or 1 so it does not have extra bits */ + } + desc.max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ + + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ + + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; + + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); + + } while (s.heap_len >= 2); + + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); + }; + + + /* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ + const scan_tree = (s, tree, max_code) => + // deflate_state *s; + // ct_data *tree; /* the tree to be scanned */ + // int max_code; /* and its largest code of non zero frequency */ + { + let n; /* iterates over all tree elements */ + let prevlen = -1; /* last emitted length */ + let curlen; /* length of current code */ + + let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + let count = 0; /* repeat count of the current code */ + let max_count = 7; /* max repeat count */ + let min_count = 4; /* min repeat count */ + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; + + } else if (curlen !== 0) { + + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; + + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; + + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } + + count = 0; + prevlen = curlen; + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } + }; + + + /* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ + const send_tree = (s, tree, max_code) => + // deflate_state *s; + // ct_data *tree; /* the tree to be scanned */ + // int max_code; /* and its largest code of non zero frequency */ + { + let n; /* iterates over all tree elements */ + let prevlen = -1; /* last emitted length */ + let curlen; /* length of current code */ + + let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + let count = 0; /* repeat count of the current code */ + let max_count = 7; /* max repeat count */ + let min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); + + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); + + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } + }; + + + /* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ + const build_bl_tree = (s) => { + + let max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; + } + } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); + + return max_blindex; + }; + + + /* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ + const send_all_trees = (s, lcodes, dcodes, blcodes) => + // deflate_state *s; + // int lcodes, dcodes, blcodes; /* number of codes for each tree */ + { + let rank; /* index in bl_order */ + + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); + } + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); + }; + + + /* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ + const detect_data_type = (s) => { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + let black_mask = 0xf3ffc07f; + let n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; + } + } + + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS$1; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + } + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; + }; + + + let static_init_done = false; + + /* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ + const _tr_init$1 = (s) => + { + + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } + + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + + s.bi_buf = 0; + s.bi_valid = 0; + + /* Initialize the first block of the first file: */ + init_block(s); + }; + + + /* =========================================================================== + * Send a stored block + */ + const _tr_stored_block$1 = (s, buf, stored_len, last) => + //DeflateState *s; + //charf *buf; /* input block */ + //ulg stored_len; /* length of input block */ + //int last; /* one if this is the last block for a file */ + { + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ + }; + + + /* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ + const _tr_align$1 = (s) => { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); + }; + + + /* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ + const _tr_flush_block$1 = (s, buf, stored_len, last) => + //DeflateState *s; + //charf *buf; /* input block, or NULL if too old */ + //ulg stored_len; /* length of input block */ + //int last; /* one if this is the last block for a file */ + { + let opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + let max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { + + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN$1) { + s.strm.data_type = detect_data_type(s); + } + + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; + + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); + + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } + + } else { + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ + + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block$1(s, buf, stored_len, last); + + } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) { + + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); + + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); + }; + + /* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ + const _tr_tally$1 = (s, dist, lc) => + // deflate_state *s; + // unsigned dist; /* distance of matched string */ + // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ + { + //let out_length, in_length, dcode; + + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; + + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; + + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + } + + // (!) This block is disabled in zlib defaults, + // don't enable it for binary compatibility + + //#ifdef TRUNCATE_BLOCK + // /* Try to guess if it is profitable to stop the current block here */ + // if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { + // /* Compute an upper bound for the compressed length */ + // out_length = s.last_lit*8; + // in_length = s.strstart - s.block_start; + // + // for (dcode = 0; dcode < D_CODES; dcode++) { + // out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); + // } + // out_length >>>= 3; + // //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", + // // s->last_lit, in_length, out_length, + // // 100L - out_length*100L/in_length)); + // if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { + // return true; + // } + // } + //#endif + + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ + }; + + var _tr_init_1 = _tr_init$1; + var _tr_stored_block_1 = _tr_stored_block$1; + var _tr_flush_block_1 = _tr_flush_block$1; + var _tr_tally_1 = _tr_tally$1; + var _tr_align_1 = _tr_align$1; + + var trees = { + _tr_init: _tr_init_1, + _tr_stored_block: _tr_stored_block_1, + _tr_flush_block: _tr_flush_block_1, + _tr_tally: _tr_tally_1, + _tr_align: _tr_align_1 + }; + + // Note: adler32 takes 12% for level 0 and 2% for level 6. + // It isn't worth it to make additional optimizations as in original. + // Small size is preferable. + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + const adler32 = (adler, buf, len, pos) => { + let s1 = (adler & 0xffff) |0, + s2 = ((adler >>> 16) & 0xffff) |0, + n = 0; + + while (len !== 0) { + // Set limit ~ twice less than 5552, to keep + // s2 in 31-bits, because we force signed ints. + // in other case %= will fail. + n = len > 2000 ? 2000 : len; + len -= n; + + do { + s1 = (s1 + buf[pos++]) |0; + s2 = (s2 + s1) |0; + } while (--n); + + s1 %= 65521; + s2 %= 65521; + } + + return (s1 | (s2 << 16)) |0; + }; + + + var adler32_1 = adler32; + + // Note: we can't get significant speed boost here. + // So write code to minimize size - no pregenerated tables + // and array tools dependencies. + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + // Use ordinary array, since untyped makes no boost here + const makeTable = () => { + let c, table = []; + + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; + }; + + // Create table on load. Just 255 signed longs. Not a problem. + const crcTable = new Uint32Array(makeTable()); + + + const crc32 = (crc, buf, len, pos) => { + const t = crcTable; + const end = pos + len; + + crc ^= -1; + + for (let i = pos; i < end; i++) { + crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; + }; + + + var crc32_1 = crc32; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + var messages = { + 2: 'need dictionary', /* Z_NEED_DICT 2 */ + 1: 'stream end', /* Z_STREAM_END 1 */ + 0: '', /* Z_OK 0 */ + '-1': 'file error', /* Z_ERRNO (-1) */ + '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + var constants$2 = { + + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + + + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + + /* The deflate compression method */ + Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + const { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees; + + + + + /* Public constants ==========================================================*/ + /* ===========================================================================*/ + + const { + Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1, + Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1, + Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1, + Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1, + Z_UNKNOWN, + Z_DEFLATED: Z_DEFLATED$2 + } = constants$2; + + /*============================================================================*/ + + + const MAX_MEM_LEVEL = 9; + /* Maximum value for memLevel in deflateInit2 */ + const MAX_WBITS$1 = 15; + /* 32K LZ77 window */ + const DEF_MEM_LEVEL = 8; + + + const LENGTH_CODES = 29; + /* number of length codes, not counting the special END_BLOCK code */ + const LITERALS = 256; + /* number of literal bytes 0..255 */ + const L_CODES = LITERALS + 1 + LENGTH_CODES; + /* number of Literal or Length codes, including the END_BLOCK code */ + const D_CODES = 30; + /* number of distance codes */ + const BL_CODES = 19; + /* number of codes used to transfer the bit lengths */ + const HEAP_SIZE = 2 * L_CODES + 1; + /* maximum heap size */ + const MAX_BITS = 15; + /* All codes must not exceed MAX_BITS bits */ + + const MIN_MATCH = 3; + const MAX_MATCH = 258; + const MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + + const PRESET_DICT = 0x20; + + const INIT_STATE = 42; + const EXTRA_STATE = 69; + const NAME_STATE = 73; + const COMMENT_STATE = 91; + const HCRC_STATE = 103; + const BUSY_STATE = 113; + const FINISH_STATE = 666; + + const BS_NEED_MORE = 1; /* block not completed, need more input or more output */ + const BS_BLOCK_DONE = 2; /* block flush performed */ + const BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ + const BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + + const OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + + const err = (strm, errorCode) => { + strm.msg = messages[errorCode]; + return errorCode; + }; + + const rank = (f) => { + return ((f) << 1) - ((f) > 4 ? 9 : 0); + }; + + const zero$2 = (buf) => { + let len = buf.length; while (--len >= 0) { buf[len] = 0; } + }; + + + /* eslint-disable new-cap */ + let HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask; + // This hash causes less collisions, https://github.com/nodeca/pako/issues/135 + // But breaks binary compatibility + //let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask; + let HASH = HASH_ZLIB; + + /* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->output buffer and copying into it. + * (See also read_buf()). + */ + const flush_pending = (strm) => { + const s = strm.state; + + //_tr_flush_bits(s); + let len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { return; } + + strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } + }; + + + const flush_block_only = (s, last) => { + _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); + }; + + + const put_byte = (s, b) => { + s.pending_buf[s.pending++] = b; + }; + + + /* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ + const putShortMSB = (s, b) => { + + // put_byte(s, (Byte)(b >> 8)); + // put_byte(s, (Byte)(b & 0xff)); + s.pending_buf[s.pending++] = (b >>> 8) & 0xff; + s.pending_buf[s.pending++] = b & 0xff; + }; + + + /* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->input buffer and copying from it. + * (See also flush_pending()). + */ + const read_buf = (strm, buf, start, size) => { + + let len = strm.avail_in; + + if (len > size) { len = size; } + if (len === 0) { return 0; } + + strm.avail_in -= len; + + // zmemcpy(buf, strm->next_in, len); + buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start); + if (strm.state.wrap === 1) { + strm.adler = adler32_1(strm.adler, buf, len, start); + } + + else if (strm.state.wrap === 2) { + strm.adler = crc32_1(strm.adler, buf, len, start); + } + + strm.next_in += len; + strm.total_in += len; + + return len; + }; + + + /* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ + const longest_match = (s, cur_match) => { + + let chain_length = s.max_chain_length; /* max hash chain length */ + let scan = s.strstart; /* current string */ + let match; /* matched string */ + let len; /* length of current match */ + let best_len = s.prev_length; /* best match length so far */ + let nice_match = s.nice_match; /* stop if match long enough */ + const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? + s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; + + const _win = s.window; // shortcut + + const wmask = s.w_mask; + const prev = s.prev; + + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + + const strend = s.strstart + MAX_MATCH; + let scan_end1 = _win[scan + best_len - 1]; + let scan_end = _win[scan + best_len]; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if (nice_match > s.lookahead) { nice_match = s.lookahead; } + + // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + // Assert(cur_match < s->strstart, "no future"); + match = cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ + + if (_win[match + best_len] !== scan_end || + _win[match + best_len - 1] !== scan_end1 || + _win[match] !== _win[scan] || + _win[++match] !== _win[scan + 1]) { + continue; + } + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2; + match++; + // Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + /*jshint noempty:false*/ + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + scan < strend); + + // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; + + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + + if (best_len <= s.lookahead) { + return best_len; + } + return s.lookahead; + }; + + + /* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ + const fill_window = (s) => { + + const _w_size = s.w_size; + let p, n, m, more, str; + + //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = s.window_size - s.lookahead - s.strstart; + + // JS ints have 32 bit, block below not needed + /* Deal with !@#$% 64K limit: */ + //if (sizeof(int) <= 2) { + // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + // more = wsize; + // + // } else if (more == (unsigned)(-1)) { + // /* Very unlikely, but possible on 16 bit machine if + // * strstart == 0 && lookahead == 1 (input done a byte at time) + // */ + // more--; + // } + //} + + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { + + s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + /* we now have strstart >= MAX_DIST */ + s.block_start -= _w_size; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + + n = s.hash_size; + p = n; + + do { + m = s.head[--p]; + s.head[p] = (m >= _w_size ? m - _w_size : 0); + } while (--n); + + n = _w_size; + p = n; + + do { + m = s.prev[--p]; + s.prev[p] = (m >= _w_size ? m - _w_size : 0); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); + + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + //Assert(more >= 2, "more < 2"); + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; + + /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ + s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); + //#if MIN_MATCH != 3 + // Call update_hash() MIN_MATCH-3 more times + //#endif + while (s.insert) { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ + // if (s.high_water < s.window_size) { + // const curr = s.strstart + s.lookahead; + // let init = 0; + // + // if (s.high_water < curr) { + // /* Previous high water mark below current data -- zero WIN_INIT + // * bytes or up to end of window, whichever is less. + // */ + // init = s.window_size - curr; + // if (init > WIN_INIT) + // init = WIN_INIT; + // zmemzero(s->window + curr, (unsigned)init); + // s->high_water = curr + init; + // } + // else if (s->high_water < (ulg)curr + WIN_INIT) { + // /* High water mark at or above current data, but below current data + // * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up + // * to end of window, whichever is less. + // */ + // init = (ulg)curr + WIN_INIT - s->high_water; + // if (init > s->window_size - s->high_water) + // init = s->window_size - s->high_water; + // zmemzero(s->window + s->high_water, (unsigned)init); + // s->high_water += init; + // } + // } + // + // Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + // "not enough room for search"); + }; + + /* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ + const deflate_stored = (s, flush) => { + + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + let max_block_size = 0xffff; + + if (max_block_size > s.pending_buf_size - 5) { + max_block_size = s.pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s.lookahead <= 1) { + + //Assert(s->strstart < s->w_size+MAX_DIST(s) || + // s->block_start >= (long)s->w_size, "slide too late"); + // if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || + // s.block_start >= s.w_size)) { + // throw new Error("slide too late"); + // } + + fill_window(s); + if (s.lookahead === 0 && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + + if (s.lookahead === 0) { + break; + } + /* flush the current block */ + } + //Assert(s->block_start >= 0L, "block gone"); + // if (s.block_start < 0) throw new Error("block gone"); + + s.strstart += s.lookahead; + s.lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + const max_start = s.block_start + max_block_size; + + if (s.strstart === 0 || s.strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s.lookahead = s.strstart - max_start; + s.strstart = max_start; + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + + + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + + s.insert = 0; + + if (flush === Z_FINISH$3) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_NEED_MORE; + }; + + /* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ + const deflate_fast = (s, flush) => { + + let hash_head; /* head of the hash chain */ + let bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only + + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); + + //#if MIN_MATCH != 3 + // Call UPDATE_HASH() MIN_MATCH-3 more times + //#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = _tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH$3) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; + }; + + /* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ + const deflate_slow = (s, flush) => { + + let hash_head; /* head of hash chain */ + let bflush; /* set if current block must be flushed */ + + let max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); + + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH$3) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_BLOCK_DONE; + }; + + + /* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ + const deflate_rle = (s, flush) => { + + let bflush; /* set if current block must be flushed */ + let prev; /* byte at distance one to match */ + let scan, strend; /* scan goes up to strend for length of run */ + + const _win = s.window; + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; + } + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = _tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH$3) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; + }; + + /* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ + const deflate_huff = (s, flush) => { + + let bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH$2) { + return BS_NEED_MORE; + } + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = _tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH$3) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; + }; + + /* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ + function Config(good_length, max_lazy, nice_length, max_chain, func) { + + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; + } + + const configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ + + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ + ]; + + + /* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ + const lm_init = (s) => { + + s.window_size = 2 * s.w_size; + + /*** CLEAR_HASH(s); ***/ + zero$2(s.head); // Fill with NIL (= 0); + + /* Set the default configuration parameters: + */ + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; + }; + + + function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED$2; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ + + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ + + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ + + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + this.head = null; /* Heads of the hash chains or NIL. */ + + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ + + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ + + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ + + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ + + this.nice_match = 0; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + + /* Didn't use ct_data typedef below to suppress compiler warning */ + + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2); + this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2); + this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2); + zero$2(this.dyn_ltree); + zero$2(this.dyn_dtree); + zero$2(this.bl_tree); + + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ + + //ush bl_count[MAX_BITS+1]; + this.bl_count = new Uint16Array(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ + + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero$2(this.heap); + + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero$2(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + this.l_buf = 0; /* buffer index for literals or lengths */ + + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + this.last_lit = 0; /* running index in l_buf */ + + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ + + + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ + } + + + const deflateResetKeep = (strm) => { + + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR$2); + } + + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + + const s = strm.state; + s.pending = 0; + s.pending_out = 0; + + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH$2; + _tr_init(s); + return Z_OK$3; + }; + + + const deflateReset = (strm) => { + + const ret = deflateResetKeep(strm); + if (ret === Z_OK$3) { + lm_init(strm.state); + } + return ret; + }; + + + const deflateSetHeader = (strm, head) => { + + if (!strm || !strm.state) { return Z_STREAM_ERROR$2; } + if (strm.state.wrap !== 2) { return Z_STREAM_ERROR$2; } + strm.state.gzhead = head; + return Z_OK$3; + }; + + + const deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => { + + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR$2; + } + let wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION$1) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + + + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return err(strm, Z_STREAM_ERROR$2); + } + + + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ + + const s = new DeflateState(); + + strm.state = s; + s.strm = strm; + + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; + + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + + s.window = new Uint8Array(s.w_size * 2); + s.head = new Uint16Array(s.hash_size); + s.prev = new Uint16Array(s.w_size); + + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ + + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + s.pending_buf_size = s.lit_bufsize * 4; + + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new Uint8Array(s.pending_buf_size); + + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; + + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; + + s.level = level; + s.strategy = strategy; + s.method = method; + + return deflateReset(strm); + }; + + const deflateInit = (strm, level) => { + + return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1); + }; + + + const deflate$2 = (strm, flush) => { + + let beg, val; // for gzip header write only + + if (!strm || !strm.state || + flush > Z_BLOCK$1 || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2; + } + + const s = strm.state; + + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH$3)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2); + } + + s.strm = strm; /* just in case */ + const old_flush = s.last_flush; + s.last_flush = flush; + + /* Write the header */ + if (s.status === INIT_STATE) { + + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); + } + if (s.gzhead.hcrc) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8; + let level_flags = -1; + + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); + + s.status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + + //#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + break; + } + } + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } + } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } + } + else { + s.status = COMMENT_STATE; + } + } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; + } + } + else { + s.status = HCRC_STATE; + } + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } + } + //#endif + + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK$3; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH$3) { + return err(strm, Z_BUF_ERROR$1); + } + + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR$1); + } + + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) { + let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); + + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ + } + return Z_OK$3; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + _tr_align(s); + } + else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */ + + _tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH$1) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero$2(s.head); // Fill with NIL (= 0); + + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK$3; + } + } + } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} + + if (flush !== Z_FINISH$3) { return Z_OK$3; } + if (s.wrap <= 0) { return Z_STREAM_END$3; } + + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3; + }; + + + const deflateEnd = (strm) => { + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR$2; + } + + const status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR$2); + } + + strm.state = null; + + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3; + }; + + + /* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ + const deflateSetDictionary = (strm, dictionary) => { + + let dictLength = dictionary.length; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR$2; + } + + const s = strm.state; + const wrap = s.wrap; + + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR$2; + } + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0); + } + + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero$2(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + let tmpDict = new Uint8Array(s.w_size); + tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0); + dictionary = tmpDict; + dictLength = s.w_size; + } + /* insert dictionary into window and hash */ + const avail = strm.avail_in; + const next = strm.next_in; + const input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + let str = s.strstart; + let n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); + } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK$3; + }; + + + var deflateInit_1 = deflateInit; + var deflateInit2_1 = deflateInit2; + var deflateReset_1 = deflateReset; + var deflateResetKeep_1 = deflateResetKeep; + var deflateSetHeader_1 = deflateSetHeader; + var deflate_2$1 = deflate$2; + var deflateEnd_1 = deflateEnd; + var deflateSetDictionary_1 = deflateSetDictionary; + var deflateInfo = 'pako deflate (from Nodeca project)'; + + /* Not implemented + module.exports.deflateBound = deflateBound; + module.exports.deflateCopy = deflateCopy; + module.exports.deflateParams = deflateParams; + module.exports.deflatePending = deflatePending; + module.exports.deflatePrime = deflatePrime; + module.exports.deflateTune = deflateTune; + */ + + var deflate_1$2 = { + deflateInit: deflateInit_1, + deflateInit2: deflateInit2_1, + deflateReset: deflateReset_1, + deflateResetKeep: deflateResetKeep_1, + deflateSetHeader: deflateSetHeader_1, + deflate: deflate_2$1, + deflateEnd: deflateEnd_1, + deflateSetDictionary: deflateSetDictionary_1, + deflateInfo: deflateInfo + }; + + const _has = (obj, key) => { + return Object.prototype.hasOwnProperty.call(obj, key); + }; + + var assign = function (obj /*from1, from2, from3, ...*/) { + const sources = Array.prototype.slice.call(arguments, 1); + while (sources.length) { + const source = sources.shift(); + if (!source) { continue; } + + if (typeof source !== 'object') { + throw new TypeError(source + 'must be non-object'); + } + + for (const p in source) { + if (_has(source, p)) { + obj[p] = source[p]; + } + } + } + + return obj; + }; + + + // Join array of chunks to single array. + var flattenChunks = (chunks) => { + // calculate data length + let len = 0; + + for (let i = 0, l = chunks.length; i < l; i++) { + len += chunks[i].length; + } + + // join chunks + const result = new Uint8Array(len); + + for (let i = 0, pos = 0, l = chunks.length; i < l; i++) { + let chunk = chunks[i]; + result.set(chunk, pos); + pos += chunk.length; + } + + return result; + }; + + var common = { + assign: assign, + flattenChunks: flattenChunks + }; + + // String encode/decode helpers + + + // Quick check if we can use fast array to bin string conversion + // + // - apply(Array) can fail on Android 2.2 + // - apply(Uint8Array) can fail on iOS 5.1 Safari + // + let STR_APPLY_UIA_OK = true; + + try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } + + + // Table with utf8 lengths (calculated by first byte of sequence) + // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, + // because max possible codepoint is 0x10ffff + const _utf8len = new Uint8Array(256); + for (let q = 0; q < 256; q++) { + _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1); + } + _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start + + + // convert string to array (typed, when possible) + var string2buf = (str) => { + if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) { + return new TextEncoder().encode(str); + } + + let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; + + // count binary size + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; + } + + // allocate buffer + buf = new Uint8Array(buf_len); + + // convert + for (i = 0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + if (c < 0x80) { + /* one byte */ + buf[i++] = c; + } else if (c < 0x800) { + /* two bytes */ + buf[i++] = 0xC0 | (c >>> 6); + buf[i++] = 0x80 | (c & 0x3f); + } else if (c < 0x10000) { + /* three bytes */ + buf[i++] = 0xE0 | (c >>> 12); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } else { + /* four bytes */ + buf[i++] = 0xf0 | (c >>> 18); + buf[i++] = 0x80 | (c >>> 12 & 0x3f); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } + } + + return buf; + }; + + // Helper + const buf2binstring = (buf, len) => { + // On Chrome, the arguments in a function call that are allowed is `65534`. + // If the length of the buffer is smaller than that, we can use this optimization, + // otherwise we will take a slower path. + if (len < 65534) { + if (buf.subarray && STR_APPLY_UIA_OK) { + return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len)); + } + } + + let result = ''; + for (let i = 0; i < len; i++) { + result += String.fromCharCode(buf[i]); + } + return result; + }; + + + // convert array to string + var buf2string = (buf, max) => { + const len = max || buf.length; + + if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) { + return new TextDecoder().decode(buf.subarray(0, max)); + } + + let i, out; + + // Reserve max possible length (2 words per char) + // NB: by unknown reasons, Array is significantly faster for + // String.fromCharCode.apply than Uint16Array. + const utf16buf = new Array(len * 2); + + for (out = 0, i = 0; i < len;) { + let c = buf[i++]; + // quick process ascii + if (c < 0x80) { utf16buf[out++] = c; continue; } + + let c_len = _utf8len[c]; + // skip 5 & 6 byte codes + if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; } + + // apply mask on first byte + c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; + // join the rest + while (c_len > 1 && i < len) { + c = (c << 6) | (buf[i++] & 0x3f); + c_len--; + } + + // terminated by end of string? + if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; } + + if (c < 0x10000) { + utf16buf[out++] = c; + } else { + c -= 0x10000; + utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff); + utf16buf[out++] = 0xdc00 | (c & 0x3ff); + } + } + + return buf2binstring(utf16buf, out); + }; + + + // Calculate max possible position in utf8 buffer, + // that will not break sequence. If that's not possible + // - (very small limits) return max size as is. + // + // buf[] - utf8 bytes array + // max - length limit (mandatory); + var utf8border = (buf, max) => { + + max = max || buf.length; + if (max > buf.length) { max = buf.length; } + + // go back from last position, until start of sequence found + let pos = max - 1; + while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; } + + // Very small and broken sequence, + // return max, because we should return something anyway. + if (pos < 0) { return max; } + + // If we came to start of buffer - that means buffer is too small, + // return max too. + if (pos === 0) { return max; } + + return (pos + _utf8len[buf[pos]] > max) ? pos : max; + }; + + var strings = { + string2buf: string2buf, + buf2string: buf2string, + utf8border: utf8border + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + this.next_in = 0; + /* number of bytes available at input */ + this.avail_in = 0; + /* total number of input bytes read so far */ + this.total_in = 0; + /* next output byte should be put there */ + this.output = null; // JS specific, because we have no pointers + this.next_out = 0; + /* remaining free space at output */ + this.avail_out = 0; + /* total number of bytes output so far */ + this.total_out = 0; + /* last error message, NULL if no error */ + this.msg = ''/*Z_NULL*/; + /* not visible by applications */ + this.state = null; + /* best guess about the data type: binary or text */ + this.data_type = 2/*Z_UNKNOWN*/; + /* adler32 value of the uncompressed data */ + this.adler = 0; + } + + var zstream = ZStream; + + const toString$1 = Object.prototype.toString; + + /* Public constants ==========================================================*/ + /* ===========================================================================*/ + + const { + Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2, + Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2, + Z_DEFAULT_COMPRESSION, + Z_DEFAULT_STRATEGY, + Z_DEFLATED: Z_DEFLATED$1 + } = constants$2; + + /* ===========================================================================*/ + + + /** + * class Deflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[deflate]], + * [[deflateRaw]] and [[gzip]]. + **/ + + /* internal + * Deflate.chunks -> Array + * + * Chunks of output data, if [[Deflate#onData]] not overridden. + **/ + + /** + * Deflate.result -> Uint8Array + * + * Compressed result, generated by default [[Deflate#onData]] + * and [[Deflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Deflate#push]] with `Z_FINISH` / `true` param). + **/ + + /** + * Deflate.err -> Number + * + * Error code after deflate finished. 0 (Z_OK) on success. + * You will not need it in real life, because deflate errors + * are possible only on wrong options or bad `onData` / `onEnd` + * custom handlers. + **/ + + /** + * Deflate.msg -> String + * + * Error message, if [[Deflate.err]] != 0 + **/ + + + /** + * new Deflate(options) + * - options (Object): zlib deflate options. + * + * Creates new deflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `level` + * - `windowBits` + * - `memLevel` + * - `strategy` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw deflate + * - `gzip` (Boolean) - create gzip wrapper + * - `header` (Object) - custom header for gzip + * - `text` (Boolean) - true if compressed data believed to be text + * - `time` (Number) - modification time, unix timestamp + * - `os` (Number) - operation system code + * - `extra` (Array) - array of bytes with extra data (max 65536) + * - `name` (String) - file name (binary string) + * - `comment` (String) - comment (binary string) + * - `hcrc` (Boolean) - true if header crc should be added + * + * ##### Example: + * + * ```javascript + * const pako = require('pako') + * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * const deflate = new pako.Deflate({ level: 3}); + * + * deflate.push(chunk1, false); + * deflate.push(chunk2, true); // true -> last chunk + * + * if (deflate.err) { throw new Error(deflate.err); } + * + * console.log(deflate.result); + * ``` + **/ + function Deflate$1(options) { + this.options = common.assign({ + level: Z_DEFAULT_COMPRESSION, + method: Z_DEFLATED$1, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: Z_DEFAULT_STRATEGY + }, options || {}); + + let opt = this.options; + + if (opt.raw && (opt.windowBits > 0)) { + opt.windowBits = -opt.windowBits; + } + + else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) { + opt.windowBits += 16; + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new zstream(); + this.strm.avail_out = 0; + + let status = deflate_1$2.deflateInit2( + this.strm, + opt.level, + opt.method, + opt.windowBits, + opt.memLevel, + opt.strategy + ); + + if (status !== Z_OK$2) { + throw new Error(messages[status]); + } + + if (opt.header) { + deflate_1$2.deflateSetHeader(this.strm, opt.header); + } + + if (opt.dictionary) { + let dict; + // Convert data if needed + if (typeof opt.dictionary === 'string') { + // If we need to compress text, change encoding to utf8. + dict = strings.string2buf(opt.dictionary); + } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') { + dict = new Uint8Array(opt.dictionary); + } else { + dict = opt.dictionary; + } + + status = deflate_1$2.deflateSetDictionary(this.strm, dict); + + if (status !== Z_OK$2) { + throw new Error(messages[status]); + } + + this._dict_set = true; + } + } + + /** + * Deflate#push(data[, flush_mode]) -> Boolean + * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be + * converted to utf8 byte sequence. + * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with + * new compressed chunks. Returns `true` on success. The last data block must + * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending + * buffers and call [[Deflate#onEnd]]. + * + * On fail call [[Deflate#onEnd]] with error code and return false. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ + Deflate$1.prototype.push = function (data, flush_mode) { + const strm = this.strm; + const chunkSize = this.options.chunkSize; + let status, _flush_mode; + + if (this.ended) { return false; } + + if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; + else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1; + + // Convert data if needed + if (typeof data === 'string') { + // If we need to compress text, change encoding to utf8. + strm.input = strings.string2buf(data); + } else if (toString$1.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + for (;;) { + if (strm.avail_out === 0) { + strm.output = new Uint8Array(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + // Make sure avail_out > 6 to avoid repeating markers + if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) { + this.onData(strm.output.subarray(0, strm.next_out)); + strm.avail_out = 0; + continue; + } + + status = deflate_1$2.deflate(strm, _flush_mode); + + // Ended => flush and finish + if (status === Z_STREAM_END$2) { + if (strm.next_out > 0) { + this.onData(strm.output.subarray(0, strm.next_out)); + } + status = deflate_1$2.deflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === Z_OK$2; + } + + // Flush if out buffer full + if (strm.avail_out === 0) { + this.onData(strm.output); + continue; + } + + // Flush if requested and has data + if (_flush_mode > 0 && strm.next_out > 0) { + this.onData(strm.output.subarray(0, strm.next_out)); + strm.avail_out = 0; + continue; + } + + if (strm.avail_in === 0) break; + } + + return true; + }; + + + /** + * Deflate#onData(chunk) -> Void + * - chunk (Uint8Array): output data. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ + Deflate$1.prototype.onData = function (chunk) { + this.chunks.push(chunk); + }; + + + /** + * Deflate#onEnd(status) -> Void + * - status (Number): deflate status. 0 (Z_OK) on success, + * other if not. + * + * Called once after you tell deflate that the input stream is + * complete (Z_FINISH). By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ + Deflate$1.prototype.onEnd = function (status) { + // On success - join + if (status === Z_OK$2) { + this.result = common.flattenChunks(this.chunks); + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; + }; + + + /** + * deflate(data[, options]) -> Uint8Array + * - data (Uint8Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * Compress `data` with deflate algorithm and `options`. + * + * Supported options are: + * + * - level + * - windowBits + * - memLevel + * - strategy + * - dictionary + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * + * ##### Example: + * + * ```javascript + * const pako = require('pako') + * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]); + * + * console.log(pako.deflate(data)); + * ``` + **/ + function deflate$1(input, options) { + const deflator = new Deflate$1(options); + + deflator.push(input, true); + + // That will never happens, if you don't cheat with options :) + if (deflator.err) { throw deflator.msg || messages[deflator.err]; } + + return deflator.result; + } + + + /** + * deflateRaw(data[, options]) -> Uint8Array + * - data (Uint8Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ + function deflateRaw$1(input, options) { + options = options || {}; + options.raw = true; + return deflate$1(input, options); + } + + + /** + * gzip(data[, options]) -> Uint8Array + * - data (Uint8Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but create gzip wrapper instead of + * deflate one. + **/ + function gzip$1(input, options) { + options = options || {}; + options.gzip = true; + return deflate$1(input, options); + } + + + var Deflate_1$1 = Deflate$1; + var deflate_2 = deflate$1; + var deflateRaw_1$1 = deflateRaw$1; + var gzip_1$1 = gzip$1; + var constants$1 = constants$2; + + var deflate_1$1 = { + Deflate: Deflate_1$1, + deflate: deflate_2, + deflateRaw: deflateRaw_1$1, + gzip: gzip_1$1, + constants: constants$1 + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + // See state defs from inflate.js + const BAD$1 = 30; /* got a data error -- remain here until reset */ + const TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */ + + /* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. + + Entry assumptions: + + state.mode === LEN + strm.avail_in >= 6 + strm.avail_out >= 258 + start >= strm.avail_out + state.bits < 8 + + On return, state.mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm.avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm.avail_out >= 258 for each loop to avoid checking for + output space. + */ + var inffast = function inflate_fast(strm, start) { + let _in; /* local strm.input */ + let last; /* have enough input while in < last */ + let _out; /* local strm.output */ + let beg; /* inflate()'s initial strm.output */ + let end; /* while out < end, enough space available */ + //#ifdef INFLATE_STRICT + let dmax; /* maximum distance from zlib header */ + //#endif + let wsize; /* window size or zero if not using window */ + let whave; /* valid bytes in the window */ + let wnext; /* window write index */ + // Use `s_window` instead `window`, avoid conflict with instrumentation tools + let s_window; /* allocated sliding window, if wsize != 0 */ + let hold; /* local strm.hold */ + let bits; /* local strm.bits */ + let lcode; /* local strm.lencode */ + let dcode; /* local strm.distcode */ + let lmask; /* mask for first level of length codes */ + let dmask; /* mask for first level of distance codes */ + let here; /* retrieved table entry */ + let op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + let len; /* match length, unused bytes */ + let dist; /* match distance */ + let from; /* where to copy match from */ + let from_source; + + + let input, output; // JS specific, because we have no pointers + + /* copy state to local variables */ + const state = strm.state; + //here = state.here; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); + //#ifdef INFLATE_STRICT + dmax = state.dmax; + //#endif + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; + + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + + here = lcode[hold & lmask]; + + dolen: + for (;;) { // Goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + if (op === 0) { /* literal */ + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + output[_out++] = here & 0xffff/*here.val*/; + } + else if (op & 16) { /* length base */ + len = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & ((1 << op) - 1); + hold >>>= op; + bits -= op; + } + //Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; + + dodist: + for (;;) { // goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + + if (op & 16) { /* distance base */ + dist = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & ((1 << op) - 1); + //#ifdef INFLATE_STRICT + if (dist > dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD$1; + break top; + } + //#endif + hold >>>= op; + bits -= op; + //Tracevv((stderr, "inflate: distance %u\n", dist)); + op = _out - beg; /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD$1; + break top; + } + + // (!) This block is disabled in zlib defaults, + // don't enable it for binary compatibility + //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + // if (len <= op - whave) { + // do { + // output[_out++] = 0; + // } while (--len); + // continue top; + // } + // len -= op - whave; + // do { + // output[_out++] = 0; + // } while (--op > whave); + // if (op === 0) { + // from = _out - dist; + // do { + // output[_out++] = output[from++]; + // } while (--len); + // continue top; + // } + //#endif + } + from = 0; // window index + from_source = s_window; + if (wnext === 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } + else { + from = _out - dist; /* copy direct from output */ + do { /* minimum length is three */ + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } + else if ((op & 64) === 0) { /* 2nd level distance code */ + here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dodist; + } + else { + strm.msg = 'invalid distance code'; + state.mode = BAD$1; + break top; + } + + break; // need to emulate goto via "continue" + } + } + else if ((op & 64) === 0) { /* 2nd level length code */ + here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dolen; + } + else if (op & 32) { /* end-of-block */ + //Tracevv((stderr, "inflate: end of block\n")); + state.mode = TYPE$1; + break top; + } + else { + strm.msg = 'invalid literal/length code'; + state.mode = BAD$1; + break top; + } + + break; // need to emulate goto via "continue" + } + } while (_in < last && _out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; + + /* update state and return */ + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); + strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); + state.hold = hold; + state.bits = bits; + return; + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + const MAXBITS = 15; + const ENOUGH_LENS$1 = 852; + const ENOUGH_DISTS$1 = 592; + //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + + const CODES$1 = 0; + const LENS$1 = 1; + const DISTS$1 = 2; + + const lbase = new Uint16Array([ /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 + ]); + + const lext = new Uint8Array([ /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 + ]); + + const dbase = new Uint16Array([ /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0 + ]); + + const dext = new Uint8Array([ /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64 + ]); + + const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => + { + const bits = opts.bits; + //here = opts.here; /* table entry for duplication */ + + let len = 0; /* a code's length in bits */ + let sym = 0; /* index of code symbols */ + let min = 0, max = 0; /* minimum and maximum code lengths */ + let root = 0; /* number of index bits for root table */ + let curr = 0; /* number of index bits for current table */ + let drop = 0; /* code bits to drop for sub-table */ + let left = 0; /* number of prefix codes available */ + let used = 0; /* code entries in table used */ + let huff = 0; /* Huffman code */ + let incr; /* for incrementing code, index */ + let fill; /* index for replicating entries */ + let low; /* low bits for current root entry */ + let mask; /* mask for low root bits */ + let next; /* next available space in table */ + let base = null; /* base value table to use */ + let base_index = 0; + // let shoextra; /* extra bits table to use */ + let end; /* use base and extra for symbol > end */ + const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ + const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ + let extra = null; + let extra_index = 0; + + let here_bits, here_op, here_val; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; + } + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; + } + + /* bound code lengths, force root to be within code lengths */ + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { break; } + } + if (root > max) { + root = max; + } + if (max === 0) { /* no symbols to code at all */ + //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ + //table.bits[opts.table_index] = 1; //here.bits = (var char)1; + //table.val[opts.table_index++] = 0; //here.val = (var short)0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + + //table.op[opts.table_index] = 64; + //table.bits[opts.table_index] = 1; + //table.val[opts.table_index++] = 0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + opts.bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { break; } + } + if (root < min) { + root = min; + } + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } /* over-subscribed */ + } + if (left > 0 && (type === CODES$1 || max !== 1)) { + return -1; /* incomplete set */ + } + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } + } + + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + // poor man optimization - use if-else instead of switch, + // to avoid deopts in old v8 + if (type === CODES$1) { + base = extra = work; /* dummy value--not used */ + end = 19; + + } else if (type === LENS$1) { + base = lbase; + base_index -= 257; + extra = lext; + extra_index -= 257; + end = 256; + + } else { /* DISTS */ + base = dbase; + extra = dext; + end = -1; + } + + /* initialize opts for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = table_index; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = -1; /* trigger new sub-table when len > root */ + used = 1 << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if ((type === LENS$1 && used > ENOUGH_LENS$1) || + (type === DISTS$1 && used > ENOUGH_DISTS$1)) { + return 1; + } + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here_bits = len - drop; + if (work[sym] < end) { + here_op = 0; + here_val = work[sym]; + } + else if (work[sym] > end) { + here_op = extra[extra_index + work[sym]]; + here_val = base[base_index + work[sym]]; + } + else { + here_op = 32 + 64; /* end of block */ + here_val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1 << (len - drop); + fill = 1 << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; + } while (fill !== 0); + + /* backwards increment the len-bit code huff */ + incr = 1 << (len - 1); + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; + } else { + huff = 0; + } + + /* go to next symbol, update count, len */ + sym++; + if (--count[len] === 0) { + if (len === max) { break; } + len = lens[lens_index + work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) !== low) { + /* if first time, transition to sub-tables */ + if (drop === 0) { + drop = root; + } + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { break; } + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1 << curr; + if ((type === LENS$1 && used > ENOUGH_LENS$1) || + (type === DISTS$1 && used > ENOUGH_DISTS$1)) { + return 1; + } + + /* point entry in root table to sub-table */ + low = huff & mask; + /*table.op[low] = curr; + table.bits[low] = root; + table.val[low] = next - opts.table_index;*/ + table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; + } + } + + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff !== 0) { + //table.op[next + huff] = 64; /* invalid code marker */ + //table.bits[next + huff] = len - drop; + //table.val[next + huff] = 0; + table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; + } + + /* set return parameters */ + //opts.table_index += used; + opts.bits = root; + return 0; + }; + + + var inftrees = inflate_table; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + + + + + + const CODES = 0; + const LENS = 1; + const DISTS = 2; + + /* Public constants ==========================================================*/ + /* ===========================================================================*/ + + const { + Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES, + Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR, + Z_DEFLATED + } = constants$2; + + + /* STATES ====================================================================*/ + /* ===========================================================================*/ + + + const HEAD = 1; /* i: waiting for magic header */ + const FLAGS = 2; /* i: waiting for method and flags (gzip) */ + const TIME = 3; /* i: waiting for modification time (gzip) */ + const OS = 4; /* i: waiting for extra flags and operating system (gzip) */ + const EXLEN = 5; /* i: waiting for extra length (gzip) */ + const EXTRA = 6; /* i: waiting for extra bytes (gzip) */ + const NAME = 7; /* i: waiting for end of file name (gzip) */ + const COMMENT = 8; /* i: waiting for end of comment (gzip) */ + const HCRC = 9; /* i: waiting for header crc (gzip) */ + const DICTID = 10; /* i: waiting for dictionary check value */ + const DICT = 11; /* waiting for inflateSetDictionary() call */ + const TYPE = 12; /* i: waiting for type bits, including last-flag bit */ + const TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ + const STORED = 14; /* i: waiting for stored size (length and complement) */ + const COPY_ = 15; /* i/o: same as COPY below, but only first time in */ + const COPY = 16; /* i/o: waiting for input or output to copy stored block */ + const TABLE = 17; /* i: waiting for dynamic block table lengths */ + const LENLENS = 18; /* i: waiting for code length code lengths */ + const CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ + const LEN_ = 20; /* i: same as LEN below, but only first time in */ + const LEN = 21; /* i: waiting for length/lit/eob code */ + const LENEXT = 22; /* i: waiting for length extra bits */ + const DIST = 23; /* i: waiting for distance code */ + const DISTEXT = 24; /* i: waiting for distance extra bits */ + const MATCH = 25; /* o: waiting for output space to copy string */ + const LIT = 26; /* o: waiting for output space to write literal */ + const CHECK = 27; /* i: waiting for 32-bit check value */ + const LENGTH$2 = 28; /* i: waiting for 32-bit length (gzip) */ + const DONE = 29; /* finished check, done -- remain here until reset */ + const BAD = 30; /* got a data error -- remain here until reset */ + const MEM = 31; /* got an inflate() memory error -- remain here until reset */ + const SYNC = 32; /* looking for synchronization bytes to restart inflate() */ + + /* ===========================================================================*/ + + + + const ENOUGH_LENS = 852; + const ENOUGH_DISTS = 592; + //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + + const MAX_WBITS = 15; + /* 32K LZ77 window */ + const DEF_WBITS = MAX_WBITS; + + + const zswap32 = (q) => { + + return (((q >>> 24) & 0xff) + + ((q >>> 8) & 0xff00) + + ((q & 0xff00) << 8) + + ((q & 0xff) << 24)); + }; + + + function InflateState() { + this.mode = 0; /* current inflate mode */ + this.last = false; /* true if processing last block */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.havedict = false; /* true if dictionary provided */ + this.flags = 0; /* gzip header method and flags (0 if zlib) */ + this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ + this.check = 0; /* protected copy of check value */ + this.total = 0; /* protected copy of output count */ + // TODO: may be {} + this.head = null; /* where to save gzip header information */ + + /* sliding window */ + this.wbits = 0; /* log base 2 of requested window size */ + this.wsize = 0; /* window size or zero if not using window */ + this.whave = 0; /* valid bytes in the window */ + this.wnext = 0; /* window write index */ + this.window = null; /* allocated sliding window, if needed */ + + /* bit accumulator */ + this.hold = 0; /* input bit accumulator */ + this.bits = 0; /* number of bits in "in" */ + + /* for string and stored block copying */ + this.length = 0; /* literal or length of data to copy */ + this.offset = 0; /* distance back to copy string from */ + + /* for table and code decoding */ + this.extra = 0; /* extra bits needed */ + + /* fixed and dynamic code tables */ + this.lencode = null; /* starting table for length/literal codes */ + this.distcode = null; /* starting table for distance codes */ + this.lenbits = 0; /* index bits for lencode */ + this.distbits = 0; /* index bits for distcode */ + + /* dynamic table building */ + this.ncode = 0; /* number of code length code lengths */ + this.nlen = 0; /* number of length code lengths */ + this.ndist = 0; /* number of distance code lengths */ + this.have = 0; /* number of code lengths in lens[] */ + this.next = null; /* next available space in codes[] */ + + this.lens = new Uint16Array(320); /* temporary storage for code lengths */ + this.work = new Uint16Array(288); /* work area for code table building */ + + /* + because we don't have pointers in js, we use lencode and distcode directly + as buffers so we don't need codes + */ + //this.codes = new Int32Array(ENOUGH); /* space for code tables */ + this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ + this.distdyn = null; /* dynamic table for distance codes (JS specific) */ + this.sane = 0; /* if false, allow invalid distance too far */ + this.back = 0; /* bits back of last unprocessed length/lit */ + this.was = 0; /* initial length of match */ + } + + + const inflateResetKeep = (strm) => { + + if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } + const state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ''; /*Z_NULL*/ + if (state.wrap) { /* to support ill-conceived Java test suite */ + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.dmax = 32768; + state.head = null/*Z_NULL*/; + state.hold = 0; + state.bits = 0; + //state.lencode = state.distcode = state.next = state.codes; + state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS); + state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS); + + state.sane = 1; + state.back = -1; + //Tracev((stderr, "inflate: reset\n")); + return Z_OK$1; + }; + + + const inflateReset = (strm) => { + + if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } + const state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); + + }; + + + const inflateReset2 = (strm, windowBits) => { + let wrap; + + /* get the state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } + const state = strm.state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 1; + if (windowBits < 48) { + windowBits &= 15; + } + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR$1; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; + } + + /* update state and reset the rest of it */ + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); + }; + + + const inflateInit2 = (strm, windowBits) => { + + if (!strm) { return Z_STREAM_ERROR$1; } + //strm.msg = Z_NULL; /* in case we return an error */ + + const state = new InflateState(); + + //if (state === Z_NULL) return Z_MEM_ERROR; + //Tracev((stderr, "inflate: allocated\n")); + strm.state = state; + state.window = null/*Z_NULL*/; + const ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK$1) { + strm.state = null/*Z_NULL*/; + } + return ret; + }; + + + const inflateInit = (strm) => { + + return inflateInit2(strm, DEF_WBITS); + }; + + + /* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ + let virgin = true; + + let lenfix, distfix; // We have no pointers in JS, so keep tables separate + + + const fixedtables = (state) => { + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + lenfix = new Int32Array(512); + distfix = new Int32Array(32); + + /* literal/length table */ + let sym = 0; + while (sym < 144) { state.lens[sym++] = 8; } + while (sym < 256) { state.lens[sym++] = 9; } + while (sym < 280) { state.lens[sym++] = 7; } + while (sym < 288) { state.lens[sym++] = 8; } + + inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + + /* distance table */ + sym = 0; + while (sym < 32) { state.lens[sym++] = 5; } + + inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); + + /* do this just once */ + virgin = false; + } + + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; + }; + + + /* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ + const updatewindow = (strm, src, end, copy) => { + + let dist; + const state = strm.state; + + /* if it hasn't been done already, allocate space for the window */ + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; + + state.window = new Uint8Array(state.wsize); + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state.wsize) { + state.window.set(src.subarray(end - state.wsize, end), 0); + state.wnext = 0; + state.whave = state.wsize; + } + else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + //zmemcpy(state->window + state->wnext, end - copy, dist); + state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext); + copy -= dist; + if (copy) { + //zmemcpy(state->window, end - copy, copy); + state.window.set(src.subarray(end - copy, end), 0); + state.wnext = copy; + state.whave = state.wsize; + } + else { + state.wnext += dist; + if (state.wnext === state.wsize) { state.wnext = 0; } + if (state.whave < state.wsize) { state.whave += dist; } + } + } + return 0; + }; + + + const inflate$2 = (strm, flush) => { + + let state; + let input, output; // input/output buffers + let next; /* next input INDEX */ + let put; /* next output INDEX */ + let have, left; /* available input and output */ + let hold; /* bit buffer */ + let bits; /* bits in bit buffer */ + let _in, _out; /* save starting available input and output */ + let copy; /* number of stored or match bytes to copy */ + let from; /* where to copy match bytes from */ + let from_source; + let here = 0; /* current decoding table entry */ + let here_bits, here_op, here_val; // paked "here" denormalized (JS specific) + //let last; /* parent table entry */ + let last_bits, last_op, last_val; // paked "last" denormalized (JS specific) + let len; /* length to copy for repeats, bits to drop */ + let ret; /* return code */ + const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */ + let opts; + + let n; // temporary variable for NEED_BITS + + const order = /* permutation of code lengths */ + new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]); + + + if (!strm || !strm.state || !strm.output || + (!strm.input && strm.avail_in !== 0)) { + return Z_STREAM_ERROR$1; + } + + state = strm.state; + if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ + + + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + _in = have; + _out = left; + ret = Z_OK$1; + + inf_leave: // goto emulation + for (;;) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + //=== NEEDBITS(16); + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ + state.check = 0/*crc32(0L, Z_NULL, 0)*/; + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32_1(state.check, hbuf, 2, 0); + //===// + + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = FLAGS; + break; + } + state.flags = 0; /* expect zlib header */ + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { + strm.msg = 'incorrect header check'; + state.mode = BAD; + break; + } + if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + len = (hold & 0x0f)/*BITS(4)*/ + 8; + if (state.wbits === 0) { + state.wbits = len; + } + else if (len > state.wbits) { + strm.msg = 'invalid window size'; + state.mode = BAD; + break; + } + + // !!! pako patch. Force use `options.windowBits` if passed. + // Required to always use max window size by default. + state.dmax = 1 << state.wbits; + //state.dmax = 1 << len; + + //Tracev((stderr, "inflate: zlib header ok\n")); + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = hold & 0x200 ? DICTID : TYPE; + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + break; + case FLAGS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.flags = hold; + if ((state.flags & 0xff) !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + if (state.flags & 0xe000) { + strm.msg = 'unknown header flags set'; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = ((hold >> 8) & 1); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32_1(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = TIME; + /* falls through */ + case TIME: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.time = hold; + } + if (state.flags & 0x0200) { + //=== CRC4(state.check, hold) + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + hbuf[2] = (hold >>> 16) & 0xff; + hbuf[3] = (hold >>> 24) & 0xff; + state.check = crc32_1(state.check, hbuf, 4, 0); + //=== + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = OS; + /* falls through */ + case OS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.xflags = (hold & 0xff); + state.head.os = (hold >> 8); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32_1(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = EXLEN; + /* falls through */ + case EXLEN: + if (state.flags & 0x0400) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32_1(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + else if (state.head) { + state.head.extra = null/*Z_NULL*/; + } + state.mode = EXTRA; + /* falls through */ + case EXTRA: + if (state.flags & 0x0400) { + copy = state.length; + if (copy > have) { copy = have; } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + // Use untyped array for more convenient processing later + state.head.extra = new Uint8Array(state.head.extra_len); + } + state.head.extra.set( + input.subarray( + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + next + copy + ), + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + //zmemcpy(state.head.extra + len, next, + // len + copy > state.head.extra_max ? + // state.head.extra_max - len : copy); + } + if (state.flags & 0x0200) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { break inf_leave; } + } + state.length = 0; + state.mode = NAME; + /* falls through */ + case NAME: + if (state.flags & 0x0800) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + // TODO: 2 or 1 bytes? + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.name_max*/)) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); + + if (state.flags & 0x0200) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + /* falls through */ + case COMMENT: + if (state.flags & 0x1000) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.comm_max*/)) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32_1(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + /* falls through */ + case HCRC: + if (state.flags & 0x0200) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.check & 0xffff)) { + strm.msg = 'header crc mismatch'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + if (state.head) { + state.head.hcrc = ((state.flags >> 9) & 1); + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + strm.adler = state.check = zswap32(hold); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = DICT; + /* falls through */ + case DICT: + if (state.havedict === 0) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + return Z_NEED_DICT$1; + } + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = TYPE; + /* falls through */ + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } + /* falls through */ + case TYPEDO: + if (state.last) { + //--- BYTEBITS() ---// + hold >>>= bits & 7; + bits -= bits & 7; + //---// + state.mode = CHECK; + break; + } + //=== NEEDBITS(3); */ + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.last = (hold & 0x01)/*BITS(1)*/; + //--- DROPBITS(1) ---// + hold >>>= 1; + bits -= 1; + //---// + + switch ((hold & 0x03)/*BITS(2)*/) { + case 0: /* stored block */ + //Tracev((stderr, "inflate: stored block%s\n", + // state.last ? " (last)" : "")); + state.mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + //Tracev((stderr, "inflate: fixed codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = LEN_; /* decode codes */ + if (flush === Z_TREES) { + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break inf_leave; + } + break; + case 2: /* dynamic block */ + //Tracev((stderr, "inflate: dynamic codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = TABLE; + break; + case 3: + strm.msg = 'invalid block type'; + state.mode = BAD; + } + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break; + case STORED: + //--- BYTEBITS() ---// /* go to byte boundary */ + hold >>>= bits & 7; + bits -= bits & 7; + //---// + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { + strm.msg = 'invalid stored block lengths'; + state.mode = BAD; + break; + } + state.length = hold & 0xffff; + //Tracev((stderr, "inflate: stored length %u\n", + // state.length)); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = COPY_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case COPY_: + state.mode = COPY; + /* falls through */ + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { copy = have; } + if (copy > left) { copy = left; } + if (copy === 0) { break inf_leave; } + //--- zmemcpy(put, next, copy); --- + output.set(input.subarray(next, next + copy), put); + //---// + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + //Tracev((stderr, "inflate: stored end\n")); + state.mode = TYPE; + break; + case TABLE: + //=== NEEDBITS(14); */ + while (bits < 14) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + //#ifndef PKZIP_BUG_WORKAROUND + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = 'too many length or distance symbols'; + state.mode = BAD; + break; + } + //#endif + //Tracev((stderr, "inflate: table sizes ok\n")); + state.have = 0; + state.mode = LENLENS; + /* falls through */ + case LENLENS: + while (state.have < state.ncode) { + //=== NEEDBITS(3); + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + // We have separate tables & no pointers. 2 commented lines below not needed. + //state.next = state.codes; + //state.lencode = state.next; + // Switch to use dynamic table + state.lencode = state.lendyn; + state.lenbits = 7; + + opts = { bits: state.lenbits }; + ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; + + if (ret) { + strm.msg = 'invalid code lengths set'; + state.mode = BAD; + break; + } + //Tracev((stderr, "inflate: code lengths ok\n")); + state.have = 0; + state.mode = CODELENS; + /* falls through */ + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_val < 16) { + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.lens[state.have++] = here_val; + } + else { + if (here_val === 16) { + //=== NEEDBITS(here.bits + 2); + n = here_bits + 2; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + if (state.have === 0) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 0x03);//BITS(2); + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + } + else if (here_val === 17) { + //=== NEEDBITS(here.bits + 3); + n = here_bits + 3; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 3 + (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + else { + //=== NEEDBITS(here.bits + 7); + n = here_bits + 7; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 11 + (hold & 0x7f);//BITS(7); + //--- DROPBITS(7) ---// + hold >>>= 7; + bits -= 7; + //---// + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } + + /* handle error breaks in while */ + if (state.mode === BAD) { break; } + + /* check for end-of-block code (better have one) */ + if (state.lens[256] === 0) { + strm.msg = 'invalid code -- missing end-of-block'; + state.mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state.lenbits = 9; + + opts = { bits: state.lenbits }; + ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.lenbits = opts.bits; + // state.lencode = state.next; + + if (ret) { + strm.msg = 'invalid literal/lengths set'; + state.mode = BAD; + break; + } + + state.distbits = 6; + //state.distcode.copy(state.codes); + // Switch to use dynamic table + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.distbits = opts.bits; + // state.distcode = state.next; + + if (ret) { + strm.msg = 'invalid distances set'; + state.mode = BAD; + break; + } + //Tracev((stderr, 'inflate: codes ok\n')); + state.mode = LEN_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case LEN_: + state.mode = LEN; + /* falls through */ + case LEN: + if (have >= 6 && left >= 258) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + inffast(strm, _out); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if (here_bits <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_op && (here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.lencode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + state.mode = LIT; + break; + } + if (here_op & 32) { + //Tracevv((stderr, "inflate: end of block\n")); + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + /* falls through */ + case LENEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //Tracevv((stderr, "inflate: length %u\n", state.length)); + state.was = state.length; + state.mode = DIST; + /* falls through */ + case DIST: + for (;;) { + here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if ((here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.distcode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + if (here_op & 64) { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = (here_op) & 15; + state.mode = DISTEXT; + /* falls through */ + case DISTEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //#ifdef INFLATE_STRICT + if (state.offset > state.dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } + //#endif + //Tracevv((stderr, "inflate: distance %u\n", state.offset)); + state.mode = MATCH; + /* falls through */ + case MATCH: + if (left === 0) { break inf_leave; } + copy = _out - left; + if (state.offset > copy) { /* copy from window */ + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } + // (!) This block is disabled in zlib defaults, + // don't enable it for binary compatibility + //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + // Trace((stderr, "inflate.c too far\n")); + // copy -= state.whave; + // if (copy > state.length) { copy = state.length; } + // if (copy > left) { copy = left; } + // left -= copy; + // state.length -= copy; + // do { + // output[put++] = 0; + // } while (--copy); + // if (state.length === 0) { state.mode = LEN; } + // break; + //#endif + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } + else { + from = state.wnext - copy; + } + if (copy > state.length) { copy = state.length; } + from_source = state.window; + } + else { /* copy from output */ + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { copy = left; } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { state.mode = LEN; } + break; + case LIT: + if (left === 0) { break inf_leave; } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + // Use '|' instead of '+' to make sure that result is signed + hold |= input[next++] << bits; + bits += 8; + } + //===// + _out -= left; + strm.total_out += _out; + state.total += _out; + if (_out) { + strm.adler = state.check = + /*UPDATE(state.check, put - _out, _out);*/ + (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out)); + + } + _out = left; + // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too + if ((state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = 'incorrect data check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: check matches trailer\n")); + } + state.mode = LENGTH$2; + /* falls through */ + case LENGTH$2: + if (state.wrap && state.flags) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.total & 0xffffffff)) { + strm.msg = 'incorrect length check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: length matches trailer\n")); + } + state.mode = DONE; + /* falls through */ + case DONE: + ret = Z_STREAM_END$1; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR$1; + break inf_leave; + case MEM: + return Z_MEM_ERROR$1; + case SYNC: + /* falls through */ + default: + return Z_STREAM_ERROR$1; + } + } + + // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + + if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && + (state.mode < CHECK || flush !== Z_FINISH$1))) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ; + } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap && _out) { + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out)); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + + (state.mode === TYPE ? 128 : 0) + + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) { + ret = Z_BUF_ERROR; + } + return ret; + }; + + + const inflateEnd = (strm) => { + + if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { + return Z_STREAM_ERROR$1; + } + + let state = strm.state; + if (state.window) { + state.window = null; + } + strm.state = null; + return Z_OK$1; + }; + + + const inflateGetHeader = (strm, head) => { + + /* check state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } + const state = strm.state; + if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; } + + /* save header structure */ + state.head = head; + head.done = false; + return Z_OK$1; + }; + + + const inflateSetDictionary = (strm, dictionary) => { + const dictLength = dictionary.length; + + let state; + let dictid; + let ret; + + /* check state */ + if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; } + state = strm.state; + + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR$1; + } + + /* check for correct dictionary identifier */ + if (state.mode === DICT) { + dictid = 1; /* adler32(0, null, 0)*/ + /* dictid = adler32(dictid, dictionary, dictLength); */ + dictid = adler32_1(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR$1; + } + } + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR$1; + } + state.havedict = 1; + // Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK$1; + }; + + + var inflateReset_1 = inflateReset; + var inflateReset2_1 = inflateReset2; + var inflateResetKeep_1 = inflateResetKeep; + var inflateInit_1 = inflateInit; + var inflateInit2_1 = inflateInit2; + var inflate_2$1 = inflate$2; + var inflateEnd_1 = inflateEnd; + var inflateGetHeader_1 = inflateGetHeader; + var inflateSetDictionary_1 = inflateSetDictionary; + var inflateInfo = 'pako inflate (from Nodeca project)'; + + /* Not implemented + module.exports.inflateCopy = inflateCopy; + module.exports.inflateGetDictionary = inflateGetDictionary; + module.exports.inflateMark = inflateMark; + module.exports.inflatePrime = inflatePrime; + module.exports.inflateSync = inflateSync; + module.exports.inflateSyncPoint = inflateSyncPoint; + module.exports.inflateUndermine = inflateUndermine; + */ + + var inflate_1$2 = { + inflateReset: inflateReset_1, + inflateReset2: inflateReset2_1, + inflateResetKeep: inflateResetKeep_1, + inflateInit: inflateInit_1, + inflateInit2: inflateInit2_1, + inflate: inflate_2$1, + inflateEnd: inflateEnd_1, + inflateGetHeader: inflateGetHeader_1, + inflateSetDictionary: inflateSetDictionary_1, + inflateInfo: inflateInfo + }; + + // (C) 1995-2013 Jean-loup Gailly and Mark Adler + // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin + // + // This software is provided 'as-is', without any express or implied + // warranty. In no event will the authors be held liable for any damages + // arising from the use of this software. + // + // Permission is granted to anyone to use this software for any purpose, + // including commercial applications, and to alter it and redistribute it + // freely, subject to the following restrictions: + // + // 1. The origin of this software must not be misrepresented; you must not + // claim that you wrote the original software. If you use this software + // in a product, an acknowledgment in the product documentation would be + // appreciated but is not required. + // 2. Altered source versions must be plainly marked as such, and must not be + // misrepresented as being the original software. + // 3. This notice may not be removed or altered from any source distribution. + + function GZheader() { + /* true if compressed data believed to be text */ + this.text = 0; + /* modification time */ + this.time = 0; + /* extra flags (not used when writing a gzip file) */ + this.xflags = 0; + /* operating system */ + this.os = 0; + /* pointer to extra field or Z_NULL if none */ + this.extra = null; + /* extra field length (valid if extra != Z_NULL) */ + this.extra_len = 0; // Actually, we don't need it in JS, + // but leave for few code modifications + + // + // Setup limits is not necessary because in js we should not preallocate memory + // for inflate use constant limit in 65536 bytes + // + + /* space at extra (only when reading header) */ + // this.extra_max = 0; + /* pointer to zero-terminated file name or Z_NULL */ + this.name = ''; + /* space at name (only when reading header) */ + // this.name_max = 0; + /* pointer to zero-terminated comment or Z_NULL */ + this.comment = ''; + /* space at comment (only when reading header) */ + // this.comm_max = 0; + /* true if there was or will be a header crc */ + this.hcrc = 0; + /* true when done reading gzip header (not used when writing a gzip file) */ + this.done = false; + } + + var gzheader = GZheader; + + const toString = Object.prototype.toString; + + /* Public constants ==========================================================*/ + /* ===========================================================================*/ + + const { + Z_NO_FLUSH, Z_FINISH, + Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR + } = constants$2; + + /* ===========================================================================*/ + + + /** + * class Inflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[inflate]] + * and [[inflateRaw]]. + **/ + + /* internal + * inflate.chunks -> Array + * + * Chunks of output data, if [[Inflate#onData]] not overridden. + **/ + + /** + * Inflate.result -> Uint8Array|String + * + * Uncompressed result, generated by default [[Inflate#onData]] + * and [[Inflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Inflate#push]] with `Z_FINISH` / `true` param). + **/ + + /** + * Inflate.err -> Number + * + * Error code after inflate finished. 0 (Z_OK) on success. + * Should be checked if broken data possible. + **/ + + /** + * Inflate.msg -> String + * + * Error message, if [[Inflate.err]] != 0 + **/ + + + /** + * new Inflate(options) + * - options (Object): zlib inflate options. + * + * Creates new inflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `windowBits` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw inflate + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * By default, when no options set, autodetect deflate/gzip data format via + * wrapper header. + * + * ##### Example: + * + * ```javascript + * const pako = require('pako') + * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) + * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * const inflate = new pako.Inflate({ level: 3}); + * + * inflate.push(chunk1, false); + * inflate.push(chunk2, true); // true -> last chunk + * + * if (inflate.err) { throw new Error(inflate.err); } + * + * console.log(inflate.result); + * ``` + **/ + function Inflate$1(options) { + this.options = common.assign({ + chunkSize: 1024 * 64, + windowBits: 15, + to: '' + }, options || {}); + + const opt = this.options; + + // Force window size for `raw` data, if not set directly, + // because we have no header for autodetect. + if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) { + opt.windowBits = -opt.windowBits; + if (opt.windowBits === 0) { opt.windowBits = -15; } + } + + // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate + if ((opt.windowBits >= 0) && (opt.windowBits < 16) && + !(options && options.windowBits)) { + opt.windowBits += 32; + } + + // Gzip header has no info about windows size, we can do autodetect only + // for deflate. So, if window size not set, force it to max when gzip possible + if ((opt.windowBits > 15) && (opt.windowBits < 48)) { + // bit 3 (16) -> gzipped data + // bit 4 (32) -> autodetect gzip/deflate + if ((opt.windowBits & 15) === 0) { + opt.windowBits |= 15; + } + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new zstream(); + this.strm.avail_out = 0; + + let status = inflate_1$2.inflateInit2( + this.strm, + opt.windowBits + ); + + if (status !== Z_OK) { + throw new Error(messages[status]); + } + + this.header = new gzheader(); + + inflate_1$2.inflateGetHeader(this.strm, this.header); + + // Setup dictionary + if (opt.dictionary) { + // Convert data if needed + if (typeof opt.dictionary === 'string') { + opt.dictionary = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + opt.dictionary = new Uint8Array(opt.dictionary); + } + if (opt.raw) { //In raw mode we need to set the dictionary early + status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary); + if (status !== Z_OK) { + throw new Error(messages[status]); + } + } + } + } + + /** + * Inflate#push(data[, flush_mode]) -> Boolean + * - data (Uint8Array|ArrayBuffer): input data + * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE + * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH, + * `true` means Z_FINISH. + * + * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with + * new output chunks. Returns `true` on success. If end of stream detected, + * [[Inflate#onEnd]] will be called. + * + * `flush_mode` is not needed for normal operation, because end of stream + * detected automatically. You may try to use it for advanced things, but + * this functionality was not tested. + * + * On fail call [[Inflate#onEnd]] with error code and return false. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ + Inflate$1.prototype.push = function (data, flush_mode) { + const strm = this.strm; + const chunkSize = this.options.chunkSize; + const dictionary = this.options.dictionary; + let status, _flush_mode, last_avail_out; + + if (this.ended) return false; + + if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; + else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; + + // Convert data if needed + if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + for (;;) { + if (strm.avail_out === 0) { + strm.output = new Uint8Array(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + status = inflate_1$2.inflate(strm, _flush_mode); + + if (status === Z_NEED_DICT && dictionary) { + status = inflate_1$2.inflateSetDictionary(strm, dictionary); + + if (status === Z_OK) { + status = inflate_1$2.inflate(strm, _flush_mode); + } else if (status === Z_DATA_ERROR) { + // Replace code with more verbose + status = Z_NEED_DICT; + } + } + + // Skip snyc markers if more data follows and not raw mode + while (strm.avail_in > 0 && + status === Z_STREAM_END && + strm.state.wrap > 0 && + data[strm.next_in] !== 0) + { + inflate_1$2.inflateReset(strm); + status = inflate_1$2.inflate(strm, _flush_mode); + } + + switch (status) { + case Z_STREAM_ERROR: + case Z_DATA_ERROR: + case Z_NEED_DICT: + case Z_MEM_ERROR: + this.onEnd(status); + this.ended = true; + return false; + } + + // Remember real `avail_out` value, because we may patch out buffer content + // to align utf8 strings boundaries. + last_avail_out = strm.avail_out; + + if (strm.next_out) { + if (strm.avail_out === 0 || status === Z_STREAM_END) { + + if (this.options.to === 'string') { + + let next_out_utf8 = strings.utf8border(strm.output, strm.next_out); + + let tail = strm.next_out - next_out_utf8; + let utf8str = strings.buf2string(strm.output, next_out_utf8); + + // move tail & realign counters + strm.next_out = tail; + strm.avail_out = chunkSize - tail; + if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0); + + this.onData(utf8str); + + } else { + this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out)); + } + } + } + + // Must repeat iteration if out buffer is full + if (status === Z_OK && last_avail_out === 0) continue; + + // Finalize if end of stream reached. + if (status === Z_STREAM_END) { + status = inflate_1$2.inflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return true; + } + + if (strm.avail_in === 0) break; + } + + return true; + }; + + + /** + * Inflate#onData(chunk) -> Void + * - chunk (Uint8Array|String): output data. When string output requested, + * each chunk will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ + Inflate$1.prototype.onData = function (chunk) { + this.chunks.push(chunk); + }; + + + /** + * Inflate#onEnd(status) -> Void + * - status (Number): inflate status. 0 (Z_OK) on success, + * other if not. + * + * Called either after you tell inflate that the input stream is + * complete (Z_FINISH). By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ + Inflate$1.prototype.onEnd = function (status) { + // On success - join + if (status === Z_OK) { + if (this.options.to === 'string') { + this.result = this.chunks.join(''); + } else { + this.result = common.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; + }; + + + /** + * inflate(data[, options]) -> Uint8Array|String + * - data (Uint8Array): input data to decompress. + * - options (Object): zlib inflate options. + * + * Decompress `data` with inflate/ungzip and `options`. Autodetect + * format via wrapper header by default. That's why we don't provide + * separate `ungzip` method. + * + * Supported options are: + * + * - windowBits + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * + * ##### Example: + * + * ```javascript + * const pako = require('pako'); + * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9])); + * let output; + * + * try { + * output = pako.inflate(input); + * } catch (err) { + * console.log(err); + * } + * ``` + **/ + function inflate$1(input, options) { + const inflator = new Inflate$1(options); + + inflator.push(input); + + // That will never happens, if you don't cheat with options :) + if (inflator.err) throw inflator.msg || messages[inflator.err]; + + return inflator.result; + } + + + /** + * inflateRaw(data[, options]) -> Uint8Array|String + * - data (Uint8Array): input data to decompress. + * - options (Object): zlib inflate options. + * + * The same as [[inflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ + function inflateRaw$1(input, options) { + options = options || {}; + options.raw = true; + return inflate$1(input, options); + } + + + /** + * ungzip(data[, options]) -> Uint8Array|String + * - data (Uint8Array): input data to decompress. + * - options (Object): zlib inflate options. + * + * Just shortcut to [[inflate]], because it autodetects format + * by header.content. Done for convenience. + **/ + + + var Inflate_1$1 = Inflate$1; + var inflate_2 = inflate$1; + var inflateRaw_1$1 = inflateRaw$1; + var ungzip$1 = inflate$1; + var constants = constants$2; + + var inflate_1$1 = { + Inflate: Inflate_1$1, + inflate: inflate_2, + inflateRaw: inflateRaw_1$1, + ungzip: ungzip$1, + constants: constants + }; + + const { Deflate, deflate, deflateRaw, gzip } = deflate_1$1; + + const { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1; + + + + var Deflate_1 = Deflate; + var deflate_1 = deflate; + var deflateRaw_1 = deflateRaw; + var gzip_1 = gzip; + var Inflate_1 = Inflate; + var inflate_1 = inflate; + var inflateRaw_1 = inflateRaw; + var ungzip_1 = ungzip; + var constants_1 = constants$2; + + var pako = { + Deflate: Deflate_1, + deflate: deflate_1, + deflateRaw: deflateRaw_1, + gzip: gzip_1, + Inflate: Inflate_1, + inflate: inflate_1, + inflateRaw: inflateRaw_1, + ungzip: ungzip_1, + constants: constants_1 + }; + + function toInt(val) { + if (isNaN(val)) { + throw new Error("Not a number: " + val); + } else if (typeof val == "string") { + return parseInt(val); + } else return val; + } + + function toFloat(val) { + if (typeof val == "string") { + return parseFloat(val); + } else return val; + } + + var BufferStream = /*#__PURE__*/function () { + function BufferStream(sizeOrBuffer, littleEndian) { + _classCallCheck(this, BufferStream); + + this.buffer = typeof sizeOrBuffer == "number" ? new ArrayBuffer(sizeOrBuffer) : sizeOrBuffer; + + if (!this.buffer) { + this.buffer = new ArrayBuffer(0); + } + + this.view = new DataView(this.buffer); + this.offset = 0; + this.isLittleEndian = littleEndian || false; + this.size = 0; + this.encoder = new TextEncoder("utf-8"); + } + + _createClass(BufferStream, [{ + key: "setEndian", + value: function setEndian(isLittle) { + this.isLittleEndian = isLittle; + } + }, { + key: "writeUint8", + value: function writeUint8(value) { + this.checkSize(1); + this.view.setUint8(this.offset, toInt(value)); + return this.increment(1); + } + }, { + key: "writeUint8Repeat", + value: function writeUint8Repeat(value, count) { + var v = toInt(value); + this.checkSize(count); + + for (var i = 0; i < count; i++) { + this.view.setUint8(this.offset + i, v); + } + + return this.increment(count); + } + }, { + key: "writeInt8", + value: function writeInt8(value) { + this.checkSize(1); + this.view.setInt8(this.offset, toInt(value)); + return this.increment(1); + } + }, { + key: "writeUint16", + value: function writeUint16(value) { + this.checkSize(2); + this.view.setUint16(this.offset, toInt(value), this.isLittleEndian); + return this.increment(2); + } + }, { + key: "writeTwoUint16s", + value: function writeTwoUint16s(value) { + this.checkSize(4); + var first = value >> 16; + var second = value & 0xffff; + this.view.setUint16(this.offset, toInt(first), this.isLittleEndian); + this.view.setUint16(this.offset + 2, toInt(second), this.isLittleEndian); + return this.increment(4); + } + }, { + key: "writeInt16", + value: function writeInt16(value) { + this.checkSize(2); + this.view.setInt16(this.offset, toInt(value), this.isLittleEndian); + return this.increment(2); + } + }, { + key: "writeUint32", + value: function writeUint32(value) { + this.checkSize(4); + this.view.setUint32(this.offset, toInt(value), this.isLittleEndian); + return this.increment(4); + } + }, { + key: "writeInt32", + value: function writeInt32(value) { + this.checkSize(4); + this.view.setInt32(this.offset, toInt(value), this.isLittleEndian); + return this.increment(4); + } + }, { + key: "writeFloat", + value: function writeFloat(value) { + this.checkSize(4); + this.view.setFloat32(this.offset, toFloat(value), this.isLittleEndian); + return this.increment(4); + } + }, { + key: "writeDouble", + value: function writeDouble(value) { + this.checkSize(8); + this.view.setFloat64(this.offset, toFloat(value), this.isLittleEndian); + return this.increment(8); + } + }, { + key: "writeUTF8String", + value: function writeUTF8String(value) { + var encodedString = this.encoder.encode(value); + this.checkSize(encodedString.byteLength); + new Uint8Array(this.buffer).set(encodedString, this.offset); + return this.increment(encodedString.byteLength); + } + }, { + key: "writeAsciiString", + value: function writeAsciiString(value) { + value = value || ""; + var len = value.length; + this.checkSize(len); + var startOffset = this.offset; + + for (var i = 0; i < len; i++) { + var charcode = value.charCodeAt(i); + this.view.setUint8(startOffset + i, charcode); + } + + return this.increment(len); + } + }, { + key: "readUint32", + value: function readUint32() { + var val = this.view.getUint32(this.offset, this.isLittleEndian); + this.increment(4); + return val; + } + }, { + key: "readUint16", + value: function readUint16() { + var val = this.view.getUint16(this.offset, this.isLittleEndian); + this.increment(2); + return val; + } + }, { + key: "readUint8", + value: function readUint8() { + var val = this.view.getUint8(this.offset); + this.increment(1); + return val; + } + }, { + key: "peekUint8", + value: function peekUint8(offset) { + return this.view.getUint8(this.offset + offset); + } + }, { + key: "readUint8Array", + value: function readUint8Array(length) { + var arr = new Uint8Array(this.buffer, this.offset, length); + this.increment(length); + return arr; + } + }, { + key: "readUint16Array", + value: function readUint16Array(length) { + var sixlen = length / 2, + arr = new Uint16Array(sixlen), + i = 0; + + while (i++ < sixlen) { + arr[i] = this.view.getUint16(this.offset, this.isLittleEndian); + this.offset += 2; + } + + return arr; + } + }, { + key: "readInt16", + value: function readInt16() { + var val = this.view.getInt16(this.offset, this.isLittleEndian); + this.increment(2); + return val; + } + }, { + key: "readInt32", + value: function readInt32() { + var val = this.view.getInt32(this.offset, this.isLittleEndian); + this.increment(4); + return val; + } + }, { + key: "readFloat", + value: function readFloat() { + var val = this.view.getFloat32(this.offset, this.isLittleEndian); + this.increment(4); + return val; + } + }, { + key: "readDouble", + value: function readDouble() { + var val = this.view.getFloat64(this.offset, this.isLittleEndian); + this.increment(8); + return val; + } + }, { + key: "readAsciiString", + value: function readAsciiString(length) { + var result = ""; + var start = this.offset; + var end = this.offset + length; + + if (end >= this.buffer.byteLength) { + end = this.buffer.byteLength; + } + + for (var i = start; i < end; ++i) { + result += String.fromCharCode(this.view.getUint8(i)); + } + + this.increment(end - start); + return result; + } + }, { + key: "readVR", + value: function readVR() { + var vr = String.fromCharCode(this.view.getUint8(this.offset)) + String.fromCharCode(this.view.getUint8(this.offset + 1)); + this.increment(2); + return vr; + } + }, { + key: "readEncodedString", + value: function readEncodedString(length) { + if (this.offset + length >= this.buffer.byteLength) { + length = this.buffer.byteLength - this.offset; + } + + var view = new DataView(this.buffer, this.offset, length); + var result = this.decoder.decode(view); + this.increment(length); + return result; + } + }, { + key: "readHex", + value: function readHex(length) { + var hexString = ""; + + for (var i = 0; i < length; i++) { + hexString += this.readUint8().toString(16); + } + + return hexString; + } + }, { + key: "checkSize", + value: function checkSize(step) { + if (this.offset + step > this.buffer.byteLength) { + //throw new Error("Writing exceeded the size of buffer"); + // + // Resize the buffer. + // The idea is that when it is necessary to increase the buffer size, + // there will likely be more bytes which need to be written to the + // buffer in the future. Buffer allocation is costly. + // So we increase the buffer size right now + // by a larger amount than necessary, to reserve space for later + // writes which then can be done much faster. The current size of + // the buffer is the best estimate of the scale by which the size + // should increase. + // So approximately doubling the size of the buffer + // (while ensuring it fits the new data) is a simple but effective strategy. + var dstSize = this.offset + step + this.buffer.byteLength; + var dst = new ArrayBuffer(dstSize); + new Uint8Array(dst).set(new Uint8Array(this.buffer)); + this.buffer = dst; + this.view = new DataView(this.buffer); + } + } + }, { + key: "concat", + value: function concat(stream) { + var available = this.buffer.byteLength - this.offset; + + if (stream.size > available) { + var newbuf = new ArrayBuffer(this.offset + stream.size); + var int8 = new Uint8Array(newbuf); + int8.set(new Uint8Array(this.getBuffer(0, this.offset))); + int8.set(new Uint8Array(stream.getBuffer(0, stream.size)), this.offset); + this.buffer = newbuf; + this.view = new DataView(this.buffer); + } else { + var _int = new Uint8Array(this.buffer); + + _int.set(new Uint8Array(stream.getBuffer(0, stream.size)), this.offset); + } + + this.offset += stream.size; + this.size = this.offset; + return this.buffer.byteLength; + } + }, { + key: "increment", + value: function increment(step) { + this.offset += step; + + if (this.offset > this.size) { + this.size = this.offset; + } + + return step; + } + }, { + key: "getBuffer", + value: function getBuffer(start, end) { + if (!start && !end) { + start = 0; + end = this.size; + } + + return this.buffer.slice(start, end); + } + }, { + key: "more", + value: function more(length) { + if (this.offset + length > this.endOffset) { + throw new Error("Request more than currently allocated buffer"); + } + + var newBuf = new ReadBufferStream(this.buffer, null, { + start: this.offset, + stop: this.offset + length + }); + this.increment(length); + return newBuf; + } + }, { + key: "reset", + value: function reset() { + this.offset = 0; + return this; + } + }, { + key: "end", + value: function end() { + return this.offset >= this.buffer.byteLength; + } + }, { + key: "toEnd", + value: function toEnd() { + this.offset = this.buffer.byteLength; + } + }]); + + return BufferStream; + }(); + + var ReadBufferStream = /*#__PURE__*/function (_BufferStream) { + _inherits(ReadBufferStream, _BufferStream); + + var _super = _createSuper(ReadBufferStream); + + function ReadBufferStream(buffer, littleEndian) { + var _this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { + start: null, + stop: null, + noCopy: false + }; + + _classCallCheck(this, ReadBufferStream); + + _this = _super.call(this, buffer, littleEndian); + _this.offset = options.start || 0; + _this.size = options.stop || _this.buffer.byteLength; + _this.noCopy = options.noCopy; + _this.startOffset = _this.offset; + _this.endOffset = _this.size; + _this.decoder = new TextDecoder("latin1"); + return _this; + } + + _createClass(ReadBufferStream, [{ + key: "setDecoder", + value: function setDecoder(decoder) { + this.decoder = decoder; + } + }, { + key: "getBuffer", + value: function getBuffer(start, end) { + if (this.noCopy) { + return new Uint8Array(this.buffer, start, end - start); + } + + if (!start && !end) { + start = 0; + end = this.size; + } + + return this.buffer.slice(start, end); + } + }, { + key: "reset", + value: function reset() { + this.offset = this.startOffset; + return this; + } + }, { + key: "end", + value: function end() { + return this.offset >= this.endOffset; + } + }, { + key: "toEnd", + value: function toEnd() { + this.offset = this.endOffset; + } + }, { + key: "writeUint8", + value: function writeUint8(value) { + throw new Error(value, "writeUint8 not implemented"); + } + }, { + key: "writeUint8Repeat", + value: function writeUint8Repeat(value, count) { + throw new Error(value, "writeUint8Repeat not implemented"); + } + }, { + key: "writeInt8", + value: function writeInt8(value) { + throw new Error(value, "writeInt8 not implemented"); + } + }, { + key: "writeUint16", + value: function writeUint16(value) { + throw new Error(value, "writeUint16 not implemented"); + } + }, { + key: "writeTwoUint16s", + value: function writeTwoUint16s(value) { + throw new Error(value, "writeTwoUint16s not implemented"); + } + }, { + key: "writeInt16", + value: function writeInt16(value) { + throw new Error(value, "writeInt16 not implemented"); + } + }, { + key: "writeUint32", + value: function writeUint32(value) { + throw new Error(value, "writeUint32 not implemented"); + } + }, { + key: "writeInt32", + value: function writeInt32(value) { + throw new Error(value, "writeInt32 not implemented"); + } + }, { + key: "writeFloat", + value: function writeFloat(value) { + throw new Error(value, "writeFloat not implemented"); + } + }, { + key: "writeDouble", + value: function writeDouble(value) { + throw new Error(value, "writeDouble not implemented"); + } + }, { + key: "writeAsciiString", + value: function writeAsciiString(value) { + throw new Error(value, "writeAsciiString not implemented"); + } + }, { + key: "writeUTF8String", + value: function writeUTF8String(value) { + throw new Error(value, "writeUTF8String not implemented"); + } + }, { + key: "checkSize", + value: function checkSize(step) { + throw new Error(step, "checkSize not implemented"); + } + }, { + key: "concat", + value: function concat(stream) { + throw new Error(stream, "concat not implemented"); + } + }]); + + return ReadBufferStream; + }(BufferStream); + + var DeflatedReadBufferStream = /*#__PURE__*/function (_ReadBufferStream) { + _inherits(DeflatedReadBufferStream, _ReadBufferStream); + + var _super2 = _createSuper(DeflatedReadBufferStream); + + function DeflatedReadBufferStream(stream, options) { + _classCallCheck(this, DeflatedReadBufferStream); + + var inflatedBuffer = pako.inflateRaw(stream.getBuffer(stream.offset, stream.size)); + return _super2.call(this, inflatedBuffer.buffer, stream.littleEndian, options); + } + + return _createClass(DeflatedReadBufferStream); + }(ReadBufferStream); + + var WriteBufferStream = /*#__PURE__*/function (_BufferStream2) { + _inherits(WriteBufferStream, _BufferStream2); + + var _super3 = _createSuper(WriteBufferStream); + + function WriteBufferStream(buffer, littleEndian) { + var _this2; + + _classCallCheck(this, WriteBufferStream); + + _this2 = _super3.call(this, buffer, littleEndian); + _this2.size = 0; + return _this2; + } + + return _createClass(WriteBufferStream); + }(BufferStream); + + // TransferSyntaxUIDs + var IMPLICIT_LITTLE_ENDIAN = "1.2.840.10008.1.2"; + var EXPLICIT_LITTLE_ENDIAN$1 = "1.2.840.10008.1.2.1"; + var DEFLATED_EXPLICIT_LITTLE_ENDIAN = "1.2.840.10008.1.2.1.99"; + var EXPLICIT_BIG_ENDIAN = "1.2.840.10008.1.2.2"; // Data Element Length + + var dictionary={"(0000,0000)":{tag:"(0000,0000)",vr:"UL",name:"CommandGroupLength",vm:"1",version:"DICOM"},"(0000,0002)":{tag:"(0000,0002)",vr:"UI",name:"AffectedSOPClassUID",vm:"1",version:"DICOM"},"(0000,0003)":{tag:"(0000,0003)",vr:"UI",name:"RequestedSOPClassUID",vm:"1",version:"DICOM"},"(0000,0100)":{tag:"(0000,0100)",vr:"US",name:"CommandField",vm:"1",version:"DICOM"},"(0000,0110)":{tag:"(0000,0110)",vr:"US",name:"MessageID",vm:"1",version:"DICOM"},"(0000,0120)":{tag:"(0000,0120)",vr:"US",name:"MessageIDBeingRespondedTo",vm:"1",version:"DICOM"},"(0000,0600)":{tag:"(0000,0600)",vr:"AE",name:"MoveDestination",vm:"1",version:"DICOM"},"(0000,0700)":{tag:"(0000,0700)",vr:"US",name:"Priority",vm:"1",version:"DICOM"},"(0000,0800)":{tag:"(0000,0800)",vr:"US",name:"CommandDataSetType",vm:"1",version:"DICOM"},"(0000,0900)":{tag:"(0000,0900)",vr:"US",name:"Status",vm:"1",version:"DICOM"},"(0000,0901)":{tag:"(0000,0901)",vr:"AT",name:"OffendingElement",vm:"1-n",version:"DICOM"},"(0000,0902)":{tag:"(0000,0902)",vr:"LO",name:"ErrorComment",vm:"1",version:"DICOM"},"(0000,0903)":{tag:"(0000,0903)",vr:"US",name:"ErrorID",vm:"1",version:"DICOM"},"(0000,1000)":{tag:"(0000,1000)",vr:"UI",name:"AffectedSOPInstanceUID",vm:"1",version:"DICOM"},"(0000,1001)":{tag:"(0000,1001)",vr:"UI",name:"RequestedSOPInstanceUID",vm:"1",version:"DICOM"},"(0000,1002)":{tag:"(0000,1002)",vr:"US",name:"EventTypeID",vm:"1",version:"DICOM"},"(0000,1005)":{tag:"(0000,1005)",vr:"AT",name:"AttributeIdentifierList",vm:"1-n",version:"DICOM"},"(0000,1008)":{tag:"(0000,1008)",vr:"US",name:"ActionTypeID",vm:"1",version:"DICOM"},"(0000,1020)":{tag:"(0000,1020)",vr:"US",name:"NumberOfRemainingSuboperations",vm:"1",version:"DICOM"},"(0000,1021)":{tag:"(0000,1021)",vr:"US",name:"NumberOfCompletedSuboperations",vm:"1",version:"DICOM"},"(0000,1022)":{tag:"(0000,1022)",vr:"US",name:"NumberOfFailedSuboperations",vm:"1",version:"DICOM"},"(0000,1023)":{tag:"(0000,1023)",vr:"US",name:"NumberOfWarningSuboperations",vm:"1",version:"DICOM"},"(0000,1030)":{tag:"(0000,1030)",vr:"AE",name:"MoveOriginatorApplicationEntityTitle",vm:"1",version:"DICOM"},"(0000,1031)":{tag:"(0000,1031)",vr:"US",name:"MoveOriginatorMessageID",vm:"1",version:"DICOM"},"(0002,0000)":{tag:"(0002,0000)",vr:"UL",name:"FileMetaInformationGroupLength",vm:"1",version:"DICOM"},"(0002,0001)":{tag:"(0002,0001)",vr:"OB",name:"FileMetaInformationVersion",vm:"1",version:"DICOM"},"(0002,0002)":{tag:"(0002,0002)",vr:"UI",name:"MediaStorageSOPClassUID",vm:"1",version:"DICOM"},"(0002,0003)":{tag:"(0002,0003)",vr:"UI",name:"MediaStorageSOPInstanceUID",vm:"1",version:"DICOM"},"(0002,0010)":{tag:"(0002,0010)",vr:"UI",name:"TransferSyntaxUID",vm:"1",version:"DICOM"},"(0002,0012)":{tag:"(0002,0012)",vr:"UI",name:"ImplementationClassUID",vm:"1",version:"DICOM"},"(0002,0013)":{tag:"(0002,0013)",vr:"SH",name:"ImplementationVersionName",vm:"1",version:"DICOM"},"(0002,0016)":{tag:"(0002,0016)",vr:"AE",name:"SourceApplicationEntityTitle",vm:"1",version:"DICOM"},"(0002,0017)":{tag:"(0002,0017)",vr:"AE",name:"SendingApplicationEntityTitle",vm:"1",version:"DICOM"},"(0002,0018)":{tag:"(0002,0018)",vr:"AE",name:"ReceivingApplicationEntityTitle",vm:"1",version:"DICOM"},"(0002,0100)":{tag:"(0002,0100)",vr:"UI",name:"PrivateInformationCreatorUID",vm:"1",version:"DICOM"},"(0002,0102)":{tag:"(0002,0102)",vr:"OB",name:"PrivateInformation",vm:"1",version:"DICOM"},"(0004,1130)":{tag:"(0004,1130)",vr:"CS",name:"FileSetID",vm:"1",version:"DICOM"},"(0004,1141)":{tag:"(0004,1141)",vr:"CS",name:"FileSetDescriptorFileID",vm:"1-8",version:"DICOM"},"(0004,1142)":{tag:"(0004,1142)",vr:"CS",name:"SpecificCharacterSetOfFileSetDescriptorFile",vm:"1",version:"DICOM"},"(0004,1200)":{tag:"(0004,1200)",vr:"up",name:"OffsetOfTheFirstDirectoryRecordOfTheRootDirectoryEntity",vm:"1",version:"DICOM"},"(0004,1202)":{tag:"(0004,1202)",vr:"up",name:"OffsetOfTheLastDirectoryRecordOfTheRootDirectoryEntity",vm:"1",version:"DICOM"},"(0004,1212)":{tag:"(0004,1212)",vr:"US",name:"FileSetConsistencyFlag",vm:"1",version:"DICOM"},"(0004,1220)":{tag:"(0004,1220)",vr:"SQ",name:"DirectoryRecordSequence",vm:"1",version:"DICOM"},"(0004,1400)":{tag:"(0004,1400)",vr:"up",name:"OffsetOfTheNextDirectoryRecord",vm:"1",version:"DICOM"},"(0004,1410)":{tag:"(0004,1410)",vr:"US",name:"RecordInUseFlag",vm:"1",version:"DICOM"},"(0004,1420)":{tag:"(0004,1420)",vr:"up",name:"OffsetOfReferencedLowerLevelDirectoryEntity",vm:"1",version:"DICOM"},"(0004,1430)":{tag:"(0004,1430)",vr:"CS",name:"DirectoryRecordType",vm:"1",version:"DICOM"},"(0004,1432)":{tag:"(0004,1432)",vr:"UI",name:"PrivateRecordUID",vm:"1",version:"DICOM"},"(0004,1500)":{tag:"(0004,1500)",vr:"CS",name:"ReferencedFileID",vm:"1-8",version:"DICOM"},"(0004,1510)":{tag:"(0004,1510)",vr:"UI",name:"ReferencedSOPClassUIDInFile",vm:"1",version:"DICOM"},"(0004,1511)":{tag:"(0004,1511)",vr:"UI",name:"ReferencedSOPInstanceUIDInFile",vm:"1",version:"DICOM"},"(0004,1512)":{tag:"(0004,1512)",vr:"UI",name:"ReferencedTransferSyntaxUIDInFile",vm:"1",version:"DICOM"},"(0004,151A)":{tag:"(0004,151A)",vr:"UI",name:"ReferencedRelatedGeneralSOPClassUIDInFile",vm:"1-n",version:"DICOM"},"(0008,0005)":{tag:"(0008,0005)",vr:"CS",name:"SpecificCharacterSet",vm:"1-n",version:"DICOM"},"(0008,0006)":{tag:"(0008,0006)",vr:"SQ",name:"LanguageCodeSequence",vm:"1",version:"DICOM"},"(0008,0008)":{tag:"(0008,0008)",vr:"CS",name:"ImageType",vm:"2-n",version:"DICOM"},"(0008,0012)":{tag:"(0008,0012)",vr:"DA",name:"InstanceCreationDate",vm:"1",version:"DICOM"},"(0008,0013)":{tag:"(0008,0013)",vr:"TM",name:"InstanceCreationTime",vm:"1",version:"DICOM"},"(0008,0014)":{tag:"(0008,0014)",vr:"UI",name:"InstanceCreatorUID",vm:"1",version:"DICOM"},"(0008,0015)":{tag:"(0008,0015)",vr:"DT",name:"InstanceCoercionDateTime",vm:"1",version:"DICOM"},"(0008,0016)":{tag:"(0008,0016)",vr:"UI",name:"SOPClassUID",vm:"1",version:"DICOM"},"(0008,0018)":{tag:"(0008,0018)",vr:"UI",name:"SOPInstanceUID",vm:"1",version:"DICOM"},"(0008,001A)":{tag:"(0008,001A)",vr:"UI",name:"RelatedGeneralSOPClassUID",vm:"1-n",version:"DICOM"},"(0008,001B)":{tag:"(0008,001B)",vr:"UI",name:"OriginalSpecializedSOPClassUID",vm:"1",version:"DICOM"},"(0008,0020)":{tag:"(0008,0020)",vr:"DA",name:"StudyDate",vm:"1",version:"DICOM"},"(0008,0021)":{tag:"(0008,0021)",vr:"DA",name:"SeriesDate",vm:"1",version:"DICOM"},"(0008,0022)":{tag:"(0008,0022)",vr:"DA",name:"AcquisitionDate",vm:"1",version:"DICOM"},"(0008,0023)":{tag:"(0008,0023)",vr:"DA",name:"ContentDate",vm:"1",version:"DICOM"},"(0008,002A)":{tag:"(0008,002A)",vr:"DT",name:"AcquisitionDateTime",vm:"1",version:"DICOM"},"(0008,0030)":{tag:"(0008,0030)",vr:"TM",name:"StudyTime",vm:"1",version:"DICOM"},"(0008,0031)":{tag:"(0008,0031)",vr:"TM",name:"SeriesTime",vm:"1",version:"DICOM"},"(0008,0032)":{tag:"(0008,0032)",vr:"TM",name:"AcquisitionTime",vm:"1",version:"DICOM"},"(0008,0033)":{tag:"(0008,0033)",vr:"TM",name:"ContentTime",vm:"1",version:"DICOM"},"(0008,0050)":{tag:"(0008,0050)",vr:"SH",name:"AccessionNumber",vm:"1",version:"DICOM"},"(0008,0051)":{tag:"(0008,0051)",vr:"SQ",name:"IssuerOfAccessionNumberSequence",vm:"1",version:"DICOM"},"(0008,0052)":{tag:"(0008,0052)",vr:"CS",name:"QueryRetrieveLevel",vm:"1",version:"DICOM"},"(0008,0053)":{tag:"(0008,0053)",vr:"CS",name:"QueryRetrieveView",vm:"1",version:"DICOM"},"(0008,0054)":{tag:"(0008,0054)",vr:"AE",name:"RetrieveAETitle",vm:"1-n",version:"DICOM"},"(0008,0055)":{tag:"(0008,0055)",vr:"AE",name:"StationAETitle",vm:"1",version:"DICOM"},"(0008,0056)":{tag:"(0008,0056)",vr:"CS",name:"InstanceAvailability",vm:"1",version:"DICOM"},"(0008,0058)":{tag:"(0008,0058)",vr:"UI",name:"FailedSOPInstanceUIDList",vm:"1-n",version:"DICOM"},"(0008,0060)":{tag:"(0008,0060)",vr:"CS",name:"Modality",vm:"1",version:"DICOM"},"(0008,0061)":{tag:"(0008,0061)",vr:"CS",name:"ModalitiesInStudy",vm:"1-n",version:"DICOM"},"(0008,0062)":{tag:"(0008,0062)",vr:"UI",name:"SOPClassesInStudy",vm:"1-n",version:"DICOM"},"(0008,0063)":{tag:"(0008,0063)",vr:"SQ",name:"AnatomicRegionsInStudyCodeSequence",vm:"1",version:"DICOM"},"(0008,0064)":{tag:"(0008,0064)",vr:"CS",name:"ConversionType",vm:"1",version:"DICOM"},"(0008,0068)":{tag:"(0008,0068)",vr:"CS",name:"PresentationIntentType",vm:"1",version:"DICOM"},"(0008,0070)":{tag:"(0008,0070)",vr:"LO",name:"Manufacturer",vm:"1",version:"DICOM"},"(0008,0080)":{tag:"(0008,0080)",vr:"LO",name:"InstitutionName",vm:"1",version:"DICOM"},"(0008,0081)":{tag:"(0008,0081)",vr:"ST",name:"InstitutionAddress",vm:"1",version:"DICOM"},"(0008,0082)":{tag:"(0008,0082)",vr:"SQ",name:"InstitutionCodeSequence",vm:"1",version:"DICOM"},"(0008,0090)":{tag:"(0008,0090)",vr:"PN",name:"ReferringPhysicianName",vm:"1",version:"DICOM"},"(0008,0092)":{tag:"(0008,0092)",vr:"ST",name:"ReferringPhysicianAddress",vm:"1",version:"DICOM"},"(0008,0094)":{tag:"(0008,0094)",vr:"SH",name:"ReferringPhysicianTelephoneNumbers",vm:"1-n",version:"DICOM"},"(0008,0096)":{tag:"(0008,0096)",vr:"SQ",name:"ReferringPhysicianIdentificationSequence",vm:"1",version:"DICOM"},"(0008,009C)":{tag:"(0008,009C)",vr:"PN",name:"ConsultingPhysicianName",vm:"1-n",version:"DICOM"},"(0008,009D)":{tag:"(0008,009D)",vr:"SQ",name:"ConsultingPhysicianIdentificationSequence",vm:"1",version:"DICOM"},"(0008,0100)":{tag:"(0008,0100)",vr:"SH",name:"CodeValue",vm:"1",version:"DICOM"},"(0008,0101)":{tag:"(0008,0101)",vr:"LO",name:"ExtendedCodeValue",vm:"1",version:"DICOM/DICOS"},"(0008,0102)":{tag:"(0008,0102)",vr:"SH",name:"CodingSchemeDesignator",vm:"1",version:"DICOM"},"(0008,0103)":{tag:"(0008,0103)",vr:"SH",name:"CodingSchemeVersion",vm:"1",version:"DICOM"},"(0008,0104)":{tag:"(0008,0104)",vr:"LO",name:"CodeMeaning",vm:"1",version:"DICOM"},"(0008,0105)":{tag:"(0008,0105)",vr:"CS",name:"MappingResource",vm:"1",version:"DICOM"},"(0008,0106)":{tag:"(0008,0106)",vr:"DT",name:"ContextGroupVersion",vm:"1",version:"DICOM"},"(0008,0107)":{tag:"(0008,0107)",vr:"DT",name:"ContextGroupLocalVersion",vm:"1",version:"DICOM"},"(0008,0108)":{tag:"(0008,0108)",vr:"LT",name:"ExtendedCodeMeaning",vm:"1",version:"DICOM/DICOS"},"(0008,0109)":{tag:"(0008,0109)",vr:"SQ",name:"CodingSchemeResourcesSequence",vm:"1",version:"DICOM"},"(0008,010A)":{tag:"(0008,010A)",vr:"CS",name:"CodingSchemeURLType",vm:"1",version:"DICOM"},"(0008,010B)":{tag:"(0008,010B)",vr:"CS",name:"ContextGroupExtensionFlag",vm:"1",version:"DICOM"},"(0008,010C)":{tag:"(0008,010C)",vr:"UI",name:"CodingSchemeUID",vm:"1",version:"DICOM"},"(0008,010D)":{tag:"(0008,010D)",vr:"UI",name:"ContextGroupExtensionCreatorUID",vm:"1",version:"DICOM"},"(0008,010E)":{tag:"(0008,010E)",vr:"UR",name:"CodingSchemeURL",vm:"1",version:"DICOM"},"(0008,010F)":{tag:"(0008,010F)",vr:"CS",name:"ContextIdentifier",vm:"1",version:"DICOM"},"(0008,0110)":{tag:"(0008,0110)",vr:"SQ",name:"CodingSchemeIdentificationSequence",vm:"1",version:"DICOM"},"(0008,0112)":{tag:"(0008,0112)",vr:"LO",name:"CodingSchemeRegistry",vm:"1",version:"DICOM"},"(0008,0114)":{tag:"(0008,0114)",vr:"ST",name:"CodingSchemeExternalID",vm:"1",version:"DICOM"},"(0008,0115)":{tag:"(0008,0115)",vr:"ST",name:"CodingSchemeName",vm:"1",version:"DICOM"},"(0008,0116)":{tag:"(0008,0116)",vr:"ST",name:"CodingSchemeResponsibleOrganization",vm:"1",version:"DICOM"},"(0008,0117)":{tag:"(0008,0117)",vr:"UI",name:"ContextUID",vm:"1",version:"DICOM"},"(0008,0118)":{tag:"(0008,0118)",vr:"UI",name:"MappingResourceUID",vm:"1",version:"DICOM"},"(0008,0119)":{tag:"(0008,0119)",vr:"UC",name:"LongCodeValue",vm:"1",version:"DICOM"},"(0008,0120)":{tag:"(0008,0120)",vr:"UR",name:"URNCodeValue",vm:"1",version:"DICOM"},"(0008,0121)":{tag:"(0008,0121)",vr:"SQ",name:"EquivalentCodeSequence",vm:"1",version:"DICOM"},"(0008,0122)":{tag:"(0008,0122)",vr:"LO",name:"MappingResourceName",vm:"1",version:"DICOM"},"(0008,0123)":{tag:"(0008,0123)",vr:"SQ",name:"ContextGroupIdentificationSequence",vm:"1",version:"DICOM"},"(0008,0124)":{tag:"(0008,0124)",vr:"SQ",name:"MappingResourceIdentificationSequence",vm:"1",version:"DICOM"},"(0008,0201)":{tag:"(0008,0201)",vr:"SH",name:"TimezoneOffsetFromUTC",vm:"1",version:"DICOM"},"(0008,0220)":{tag:"(0008,0220)",vr:"SQ",name:"ResponsibleGroupCodeSequence",vm:"1",version:"DICOM"},"(0008,0221)":{tag:"(0008,0221)",vr:"CS",name:"EquipmentModality",vm:"1",version:"DICOM"},"(0008,0222)":{tag:"(0008,0222)",vr:"LO",name:"ManufacturerRelatedModelGroup",vm:"1",version:"DICOM"},"(0008,0300)":{tag:"(0008,0300)",vr:"SQ",name:"PrivateDataElementCharacteristicsSequence",vm:"1",version:"DICOM"},"(0008,0301)":{tag:"(0008,0301)",vr:"US",name:"PrivateGroupReference",vm:"1",version:"DICOM"},"(0008,0302)":{tag:"(0008,0302)",vr:"LO",name:"PrivateCreatorReference",vm:"1",version:"DICOM"},"(0008,0303)":{tag:"(0008,0303)",vr:"CS",name:"BlockIdentifyingInformationStatus",vm:"1",version:"DICOM"},"(0008,0304)":{tag:"(0008,0304)",vr:"US",name:"NonidentifyingPrivateElements",vm:"1-n",version:"DICOM"},"(0008,0305)":{tag:"(0008,0305)",vr:"SQ",name:"DeidentificationActionSequence",vm:"1",version:"DICOM"},"(0008,0306)":{tag:"(0008,0306)",vr:"US",name:"IdentifyingPrivateElements",vm:"1-n",version:"DICOM"},"(0008,0307)":{tag:"(0008,0307)",vr:"CS",name:"DeidentificationAction",vm:"1",version:"DICOM"},"(0008,0308)":{tag:"(0008,0308)",vr:"US",name:"PrivateDataElement",vm:"1",version:"DICOM"},"(0008,0309)":{tag:"(0008,0309)",vr:"UL",name:"PrivateDataElementValueMultiplicity",vm:"1-3",version:"DICOM"},"(0008,030A)":{tag:"(0008,030A)",vr:"CS",name:"PrivateDataElementValueRepresentation",vm:"1",version:"DICOM"},"(0008,030B)":{tag:"(0008,030B)",vr:"UL",name:"PrivateDataElementNumberOfItems",vm:"1-2",version:"DICOM"},"(0008,030C)":{tag:"(0008,030C)",vr:"UC",name:"PrivateDataElementName",vm:"1",version:"DICOM"},"(0008,030D)":{tag:"(0008,030D)",vr:"UC",name:"PrivateDataElementKeyword",vm:"1",version:"DICOM"},"(0008,030E)":{tag:"(0008,030E)",vr:"UT",name:"PrivateDataElementDescription",vm:"1",version:"DICOM"},"(0008,030F)":{tag:"(0008,030F)",vr:"UT",name:"PrivateDataElementEncoding",vm:"1",version:"DICOM"},"(0008,0310)":{tag:"(0008,0310)",vr:"SQ",name:"PrivateDataElementDefinitionSequence",vm:"1",version:"DICOM"},"(0008,1010)":{tag:"(0008,1010)",vr:"SH",name:"StationName",vm:"1",version:"DICOM"},"(0008,1030)":{tag:"(0008,1030)",vr:"LO",name:"StudyDescription",vm:"1",version:"DICOM"},"(0008,1032)":{tag:"(0008,1032)",vr:"SQ",name:"ProcedureCodeSequence",vm:"1",version:"DICOM"},"(0008,103E)":{tag:"(0008,103E)",vr:"LO",name:"SeriesDescription",vm:"1",version:"DICOM"},"(0008,103F)":{tag:"(0008,103F)",vr:"SQ",name:"SeriesDescriptionCodeSequence",vm:"1",version:"DICOM"},"(0008,1040)":{tag:"(0008,1040)",vr:"LO",name:"InstitutionalDepartmentName",vm:"1",version:"DICOM"},"(0008,1041)":{tag:"(0008,1041)",vr:"SQ",name:"InstitutionalDepartmentTypeCodeSequence",vm:"1",version:"DICOM"},"(0008,1048)":{tag:"(0008,1048)",vr:"PN",name:"PhysiciansOfRecord",vm:"1-n",version:"DICOM"},"(0008,1049)":{tag:"(0008,1049)",vr:"SQ",name:"PhysiciansOfRecordIdentificationSequence",vm:"1",version:"DICOM"},"(0008,1050)":{tag:"(0008,1050)",vr:"PN",name:"PerformingPhysicianName",vm:"1-n",version:"DICOM"},"(0008,1052)":{tag:"(0008,1052)",vr:"SQ",name:"PerformingPhysicianIdentificationSequence",vm:"1",version:"DICOM"},"(0008,1060)":{tag:"(0008,1060)",vr:"PN",name:"NameOfPhysiciansReadingStudy",vm:"1-n",version:"DICOM"},"(0008,1062)":{tag:"(0008,1062)",vr:"SQ",name:"PhysiciansReadingStudyIdentificationSequence",vm:"1",version:"DICOM"},"(0008,1070)":{tag:"(0008,1070)",vr:"PN",name:"OperatorsName",vm:"1-n",version:"DICOM"},"(0008,1072)":{tag:"(0008,1072)",vr:"SQ",name:"OperatorIdentificationSequence",vm:"1",version:"DICOM"},"(0008,1080)":{tag:"(0008,1080)",vr:"LO",name:"AdmittingDiagnosesDescription",vm:"1-n",version:"DICOM"},"(0008,1084)":{tag:"(0008,1084)",vr:"SQ",name:"AdmittingDiagnosesCodeSequence",vm:"1",version:"DICOM"},"(0008,1090)":{tag:"(0008,1090)",vr:"LO",name:"ManufacturerModelName",vm:"1",version:"DICOM"},"(0008,1110)":{tag:"(0008,1110)",vr:"SQ",name:"ReferencedStudySequence",vm:"1",version:"DICOM"},"(0008,1111)":{tag:"(0008,1111)",vr:"SQ",name:"ReferencedPerformedProcedureStepSequence",vm:"1",version:"DICOM"},"(0008,1115)":{tag:"(0008,1115)",vr:"SQ",name:"ReferencedSeriesSequence",vm:"1",version:"DICOM"},"(0008,1120)":{tag:"(0008,1120)",vr:"SQ",name:"ReferencedPatientSequence",vm:"1",version:"DICOM"},"(0008,1125)":{tag:"(0008,1125)",vr:"SQ",name:"ReferencedVisitSequence",vm:"1",version:"DICOM"},"(0008,1134)":{tag:"(0008,1134)",vr:"SQ",name:"ReferencedStereometricInstanceSequence",vm:"1",version:"DICOM"},"(0008,113A)":{tag:"(0008,113A)",vr:"SQ",name:"ReferencedWaveformSequence",vm:"1",version:"DICOM"},"(0008,1140)":{tag:"(0008,1140)",vr:"SQ",name:"ReferencedImageSequence",vm:"1",version:"DICOM"},"(0008,114A)":{tag:"(0008,114A)",vr:"SQ",name:"ReferencedInstanceSequence",vm:"1",version:"DICOM"},"(0008,114B)":{tag:"(0008,114B)",vr:"SQ",name:"ReferencedRealWorldValueMappingInstanceSequence",vm:"1",version:"DICOM"},"(0008,1150)":{tag:"(0008,1150)",vr:"UI",name:"ReferencedSOPClassUID",vm:"1",version:"DICOM"},"(0008,1155)":{tag:"(0008,1155)",vr:"UI",name:"ReferencedSOPInstanceUID",vm:"1",version:"DICOM"},"(0008,1156)":{tag:"(0008,1156)",vr:"SQ",name:"DefinitionSourceSequence",vm:"1",version:"DICOM"},"(0008,115A)":{tag:"(0008,115A)",vr:"UI",name:"SOPClassesSupported",vm:"1-n",version:"DICOM"},"(0008,1160)":{tag:"(0008,1160)",vr:"IS",name:"ReferencedFrameNumber",vm:"1-n",version:"DICOM"},"(0008,1161)":{tag:"(0008,1161)",vr:"UL",name:"SimpleFrameList",vm:"1-n",version:"DICOM"},"(0008,1162)":{tag:"(0008,1162)",vr:"UL",name:"CalculatedFrameList",vm:"3-3n",version:"DICOM"},"(0008,1163)":{tag:"(0008,1163)",vr:"FD",name:"TimeRange",vm:"2",version:"DICOM"},"(0008,1164)":{tag:"(0008,1164)",vr:"SQ",name:"FrameExtractionSequence",vm:"1",version:"DICOM"},"(0008,1167)":{tag:"(0008,1167)",vr:"UI",name:"MultiFrameSourceSOPInstanceUID",vm:"1",version:"DICOM"},"(0008,1190)":{tag:"(0008,1190)",vr:"UR",name:"RetrieveURL",vm:"1",version:"DICOM"},"(0008,1195)":{tag:"(0008,1195)",vr:"UI",name:"TransactionUID",vm:"1",version:"DICOM"},"(0008,1196)":{tag:"(0008,1196)",vr:"US",name:"WarningReason",vm:"1",version:"DICOM"},"(0008,1197)":{tag:"(0008,1197)",vr:"US",name:"FailureReason",vm:"1",version:"DICOM"},"(0008,1198)":{tag:"(0008,1198)",vr:"SQ",name:"FailedSOPSequence",vm:"1",version:"DICOM"},"(0008,1199)":{tag:"(0008,1199)",vr:"SQ",name:"ReferencedSOPSequence",vm:"1",version:"DICOM"},"(0008,119A)":{tag:"(0008,119A)",vr:"SQ",name:"OtherFailuresSequence",vm:"1",version:"DICOM"},"(0008,1200)":{tag:"(0008,1200)",vr:"SQ",name:"StudiesContainingOtherReferencedInstancesSequence",vm:"1",version:"DICOM"},"(0008,1250)":{tag:"(0008,1250)",vr:"SQ",name:"RelatedSeriesSequence",vm:"1",version:"DICOM"},"(0008,2111)":{tag:"(0008,2111)",vr:"ST",name:"DerivationDescription",vm:"1",version:"DICOM"},"(0008,2112)":{tag:"(0008,2112)",vr:"SQ",name:"SourceImageSequence",vm:"1",version:"DICOM"},"(0008,2120)":{tag:"(0008,2120)",vr:"SH",name:"StageName",vm:"1",version:"DICOM"},"(0008,2122)":{tag:"(0008,2122)",vr:"IS",name:"StageNumber",vm:"1",version:"DICOM"},"(0008,2124)":{tag:"(0008,2124)",vr:"IS",name:"NumberOfStages",vm:"1",version:"DICOM"},"(0008,2127)":{tag:"(0008,2127)",vr:"SH",name:"ViewName",vm:"1",version:"DICOM"},"(0008,2128)":{tag:"(0008,2128)",vr:"IS",name:"ViewNumber",vm:"1",version:"DICOM"},"(0008,2129)":{tag:"(0008,2129)",vr:"IS",name:"NumberOfEventTimers",vm:"1",version:"DICOM"},"(0008,212A)":{tag:"(0008,212A)",vr:"IS",name:"NumberOfViewsInStage",vm:"1",version:"DICOM"},"(0008,2130)":{tag:"(0008,2130)",vr:"DS",name:"EventElapsedTimes",vm:"1-n",version:"DICOM"},"(0008,2132)":{tag:"(0008,2132)",vr:"LO",name:"EventTimerNames",vm:"1-n",version:"DICOM"},"(0008,2133)":{tag:"(0008,2133)",vr:"SQ",name:"EventTimerSequence",vm:"1",version:"DICOM"},"(0008,2134)":{tag:"(0008,2134)",vr:"FD",name:"EventTimeOffset",vm:"1",version:"DICOM"},"(0008,2135)":{tag:"(0008,2135)",vr:"SQ",name:"EventCodeSequence",vm:"1",version:"DICOM"},"(0008,2142)":{tag:"(0008,2142)",vr:"IS",name:"StartTrim",vm:"1",version:"DICOM"},"(0008,2143)":{tag:"(0008,2143)",vr:"IS",name:"StopTrim",vm:"1",version:"DICOM"},"(0008,2144)":{tag:"(0008,2144)",vr:"IS",name:"RecommendedDisplayFrameRate",vm:"1",version:"DICOM"},"(0008,2218)":{tag:"(0008,2218)",vr:"SQ",name:"AnatomicRegionSequence",vm:"1",version:"DICOM"},"(0008,2220)":{tag:"(0008,2220)",vr:"SQ",name:"AnatomicRegionModifierSequence",vm:"1",version:"DICOM"},"(0008,2228)":{tag:"(0008,2228)",vr:"SQ",name:"PrimaryAnatomicStructureSequence",vm:"1",version:"DICOM"},"(0008,2229)":{tag:"(0008,2229)",vr:"SQ",name:"AnatomicStructureSpaceOrRegionSequence",vm:"1",version:"DICOM"},"(0008,2230)":{tag:"(0008,2230)",vr:"SQ",name:"PrimaryAnatomicStructureModifierSequence",vm:"1",version:"DICOM"},"(0008,3001)":{tag:"(0008,3001)",vr:"SQ",name:"AlternateRepresentationSequence",vm:"1",version:"DICOM"},"(0008,3002)":{tag:"(0008,3002)",vr:"UI",name:"AvailableTransferSyntaxUID",vm:"1-n",version:"DICOM"},"(0008,3010)":{tag:"(0008,3010)",vr:"UI",name:"IrradiationEventUID",vm:"1-n",version:"DICOM"},"(0008,3011)":{tag:"(0008,3011)",vr:"SQ",name:"SourceIrradiationEventSequence",vm:"1",version:"DICOM"},"(0008,3012)":{tag:"(0008,3012)",vr:"UI",name:"RadiopharmaceuticalAdministrationEventUID",vm:"1",version:"DICOM"},"(0008,9007)":{tag:"(0008,9007)",vr:"CS",name:"FrameType",vm:"4",version:"DICOM"},"(0008,9092)":{tag:"(0008,9092)",vr:"SQ",name:"ReferencedImageEvidenceSequence",vm:"1",version:"DICOM"},"(0008,9121)":{tag:"(0008,9121)",vr:"SQ",name:"ReferencedRawDataSequence",vm:"1",version:"DICOM"},"(0008,9123)":{tag:"(0008,9123)",vr:"UI",name:"CreatorVersionUID",vm:"1",version:"DICOM"},"(0008,9124)":{tag:"(0008,9124)",vr:"SQ",name:"DerivationImageSequence",vm:"1",version:"DICOM"},"(0008,9154)":{tag:"(0008,9154)",vr:"SQ",name:"SourceImageEvidenceSequence",vm:"1",version:"DICOM"},"(0008,9205)":{tag:"(0008,9205)",vr:"CS",name:"PixelPresentation",vm:"1",version:"DICOM"},"(0008,9206)":{tag:"(0008,9206)",vr:"CS",name:"VolumetricProperties",vm:"1",version:"DICOM"},"(0008,9207)":{tag:"(0008,9207)",vr:"CS",name:"VolumeBasedCalculationTechnique",vm:"1",version:"DICOM"},"(0008,9208)":{tag:"(0008,9208)",vr:"CS",name:"ComplexImageComponent",vm:"1",version:"DICOM"},"(0008,9209)":{tag:"(0008,9209)",vr:"CS",name:"AcquisitionContrast",vm:"1",version:"DICOM"},"(0008,9215)":{tag:"(0008,9215)",vr:"SQ",name:"DerivationCodeSequence",vm:"1",version:"DICOM"},"(0008,9237)":{tag:"(0008,9237)",vr:"SQ",name:"ReferencedPresentationStateSequence",vm:"1",version:"DICOM"},"(0008,9410)":{tag:"(0008,9410)",vr:"SQ",name:"ReferencedOtherPlaneSequence",vm:"1",version:"DICOM"},"(0008,9458)":{tag:"(0008,9458)",vr:"SQ",name:"FrameDisplaySequence",vm:"1",version:"DICOM"},"(0008,9459)":{tag:"(0008,9459)",vr:"FL",name:"RecommendedDisplayFrameRateInFloat",vm:"1",version:"DICOM"},"(0008,9460)":{tag:"(0008,9460)",vr:"CS",name:"SkipFrameRangeFlag",vm:"1",version:"DICOM"},"(0010,0010)":{tag:"(0010,0010)",vr:"PN",name:"PatientName",vm:"1",version:"DICOM"},"(0010,0020)":{tag:"(0010,0020)",vr:"LO",name:"PatientID",vm:"1",version:"DICOM"},"(0010,0021)":{tag:"(0010,0021)",vr:"LO",name:"IssuerOfPatientID",vm:"1",version:"DICOM"},"(0010,0022)":{tag:"(0010,0022)",vr:"CS",name:"TypeOfPatientID",vm:"1",version:"DICOM"},"(0010,0024)":{tag:"(0010,0024)",vr:"SQ",name:"IssuerOfPatientIDQualifiersSequence",vm:"1",version:"DICOM"},"(0010,0026)":{tag:"(0010,0026)",vr:"SQ",name:"SourcePatientGroupIdentificationSequence",vm:"1",version:"DICOM"},"(0010,0027)":{tag:"(0010,0027)",vr:"SQ",name:"GroupOfPatientsIdentificationSequence",vm:"1",version:"DICOM"},"(0010,0028)":{tag:"(0010,0028)",vr:"US",name:"SubjectRelativePositionInImage",vm:"3",version:"DICOM"},"(0010,0030)":{tag:"(0010,0030)",vr:"DA",name:"PatientBirthDate",vm:"1",version:"DICOM"},"(0010,0032)":{tag:"(0010,0032)",vr:"TM",name:"PatientBirthTime",vm:"1",version:"DICOM"},"(0010,0033)":{tag:"(0010,0033)",vr:"LO",name:"PatientBirthDateInAlternativeCalendar",vm:"1",version:"DICOM"},"(0010,0034)":{tag:"(0010,0034)",vr:"LO",name:"PatientDeathDateInAlternativeCalendar",vm:"1",version:"DICOM"},"(0010,0035)":{tag:"(0010,0035)",vr:"CS",name:"PatientAlternativeCalendar",vm:"1",version:"DICOM"},"(0010,0040)":{tag:"(0010,0040)",vr:"CS",name:"PatientSex",vm:"1",version:"DICOM"},"(0010,0050)":{tag:"(0010,0050)",vr:"SQ",name:"PatientInsurancePlanCodeSequence",vm:"1",version:"DICOM"},"(0010,0101)":{tag:"(0010,0101)",vr:"SQ",name:"PatientPrimaryLanguageCodeSequence",vm:"1",version:"DICOM"},"(0010,0102)":{tag:"(0010,0102)",vr:"SQ",name:"PatientPrimaryLanguageModifierCodeSequence",vm:"1",version:"DICOM"},"(0010,0200)":{tag:"(0010,0200)",vr:"CS",name:"QualityControlSubject",vm:"1",version:"DICOM"},"(0010,0201)":{tag:"(0010,0201)",vr:"SQ",name:"QualityControlSubjectTypeCodeSequence",vm:"1",version:"DICOM"},"(0010,0212)":{tag:"(0010,0212)",vr:"UC",name:"StrainDescription",vm:"1",version:"DICOM"},"(0010,0213)":{tag:"(0010,0213)",vr:"LO",name:"StrainNomenclature",vm:"1",version:"DICOM"},"(0010,0214)":{tag:"(0010,0214)",vr:"LO",name:"StrainStockNumber",vm:"1",version:"DICOM"},"(0010,0215)":{tag:"(0010,0215)",vr:"SQ",name:"StrainSourceRegistryCodeSequence",vm:"1",version:"DICOM"},"(0010,0216)":{tag:"(0010,0216)",vr:"SQ",name:"StrainStockSequence",vm:"1",version:"DICOM"},"(0010,0217)":{tag:"(0010,0217)",vr:"LO",name:"StrainSource",vm:"1",version:"DICOM"},"(0010,0218)":{tag:"(0010,0218)",vr:"UT",name:"StrainAdditionalInformation",vm:"1",version:"DICOM"},"(0010,0219)":{tag:"(0010,0219)",vr:"SQ",name:"StrainCodeSequence",vm:"1",version:"DICOM"},"(0010,0221)":{tag:"(0010,0221)",vr:"SQ",name:"GeneticModificationsSequence",vm:"1",version:"DICOM"},"(0010,0222)":{tag:"(0010,0222)",vr:"UC",name:"GeneticModificationsDescription",vm:"1",version:"DICOM"},"(0010,0223)":{tag:"(0010,0223)",vr:"LO",name:"GeneticModificationsNomenclature",vm:"1",version:"DICOM"},"(0010,0229)":{tag:"(0010,0229)",vr:"SQ",name:"GeneticModificationsCodeSequence",vm:"1",version:"DICOM"},"(0010,1000)":{tag:"(0010,1000)",vr:"LO",name:"OtherPatientIDs",vm:"1-n",version:"DICOM"},"(0010,1001)":{tag:"(0010,1001)",vr:"PN",name:"OtherPatientNames",vm:"1-n",version:"DICOM"},"(0010,1002)":{tag:"(0010,1002)",vr:"SQ",name:"OtherPatientIDsSequence",vm:"1",version:"DICOM"},"(0010,1005)":{tag:"(0010,1005)",vr:"PN",name:"PatientBirthName",vm:"1",version:"DICOM"},"(0010,1010)":{tag:"(0010,1010)",vr:"AS",name:"PatientAge",vm:"1",version:"DICOM"},"(0010,1020)":{tag:"(0010,1020)",vr:"DS",name:"PatientSize",vm:"1",version:"DICOM"},"(0010,1021)":{tag:"(0010,1021)",vr:"SQ",name:"PatientSizeCodeSequence",vm:"1",version:"DICOM"},"(0010,1022)":{tag:"(0010,1022)",vr:"DS",name:"PatientBodyMassIndex",vm:"1",version:"DICOM"},"(0010,1023)":{tag:"(0010,1023)",vr:"DS",name:"MeasuredAPDimension",vm:"1",version:"DICOM"},"(0010,1024)":{tag:"(0010,1024)",vr:"DS",name:"MeasuredLateralDimension",vm:"1",version:"DICOM"},"(0010,1030)":{tag:"(0010,1030)",vr:"DS",name:"PatientWeight",vm:"1",version:"DICOM"},"(0010,1040)":{tag:"(0010,1040)",vr:"LO",name:"PatientAddress",vm:"1",version:"DICOM"},"(0010,1060)":{tag:"(0010,1060)",vr:"PN",name:"PatientMotherBirthName",vm:"1",version:"DICOM"},"(0010,1080)":{tag:"(0010,1080)",vr:"LO",name:"MilitaryRank",vm:"1",version:"DICOM"},"(0010,1081)":{tag:"(0010,1081)",vr:"LO",name:"BranchOfService",vm:"1",version:"DICOM"},"(0010,1090)":{tag:"(0010,1090)",vr:"LO",name:"MedicalRecordLocator",vm:"1",version:"DICOM"},"(0010,1100)":{tag:"(0010,1100)",vr:"SQ",name:"ReferencedPatientPhotoSequence",vm:"1",version:"DICOM"},"(0010,2000)":{tag:"(0010,2000)",vr:"LO",name:"MedicalAlerts",vm:"1-n",version:"DICOM"},"(0010,2110)":{tag:"(0010,2110)",vr:"LO",name:"Allergies",vm:"1-n",version:"DICOM"},"(0010,2150)":{tag:"(0010,2150)",vr:"LO",name:"CountryOfResidence",vm:"1",version:"DICOM"},"(0010,2152)":{tag:"(0010,2152)",vr:"LO",name:"RegionOfResidence",vm:"1",version:"DICOM"},"(0010,2154)":{tag:"(0010,2154)",vr:"SH",name:"PatientTelephoneNumbers",vm:"1-n",version:"DICOM"},"(0010,2155)":{tag:"(0010,2155)",vr:"LT",name:"PatientTelecomInformation",vm:"1",version:"DICOM"},"(0010,2160)":{tag:"(0010,2160)",vr:"SH",name:"EthnicGroup",vm:"1",version:"DICOM"},"(0010,2180)":{tag:"(0010,2180)",vr:"SH",name:"Occupation",vm:"1",version:"DICOM"},"(0010,21A0)":{tag:"(0010,21A0)",vr:"CS",name:"SmokingStatus",vm:"1",version:"DICOM"},"(0010,21B0)":{tag:"(0010,21B0)",vr:"LT",name:"AdditionalPatientHistory",vm:"1",version:"DICOM"},"(0010,21C0)":{tag:"(0010,21C0)",vr:"US",name:"PregnancyStatus",vm:"1",version:"DICOM"},"(0010,21D0)":{tag:"(0010,21D0)",vr:"DA",name:"LastMenstrualDate",vm:"1",version:"DICOM"},"(0010,21F0)":{tag:"(0010,21F0)",vr:"LO",name:"PatientReligiousPreference",vm:"1",version:"DICOM"},"(0010,2201)":{tag:"(0010,2201)",vr:"LO",name:"PatientSpeciesDescription",vm:"1",version:"DICOM"},"(0010,2202)":{tag:"(0010,2202)",vr:"SQ",name:"PatientSpeciesCodeSequence",vm:"1",version:"DICOM"},"(0010,2203)":{tag:"(0010,2203)",vr:"CS",name:"PatientSexNeutered",vm:"1",version:"DICOM"},"(0010,2210)":{tag:"(0010,2210)",vr:"CS",name:"AnatomicalOrientationType",vm:"1",version:"DICOM"},"(0010,2292)":{tag:"(0010,2292)",vr:"LO",name:"PatientBreedDescription",vm:"1",version:"DICOM"},"(0010,2293)":{tag:"(0010,2293)",vr:"SQ",name:"PatientBreedCodeSequence",vm:"1",version:"DICOM"},"(0010,2294)":{tag:"(0010,2294)",vr:"SQ",name:"BreedRegistrationSequence",vm:"1",version:"DICOM"},"(0010,2295)":{tag:"(0010,2295)",vr:"LO",name:"BreedRegistrationNumber",vm:"1",version:"DICOM"},"(0010,2296)":{tag:"(0010,2296)",vr:"SQ",name:"BreedRegistryCodeSequence",vm:"1",version:"DICOM"},"(0010,2297)":{tag:"(0010,2297)",vr:"PN",name:"ResponsiblePerson",vm:"1",version:"DICOM"},"(0010,2298)":{tag:"(0010,2298)",vr:"CS",name:"ResponsiblePersonRole",vm:"1",version:"DICOM"},"(0010,2299)":{tag:"(0010,2299)",vr:"LO",name:"ResponsibleOrganization",vm:"1",version:"DICOM"},"(0010,4000)":{tag:"(0010,4000)",vr:"LT",name:"PatientComments",vm:"1",version:"DICOM"},"(0010,9431)":{tag:"(0010,9431)",vr:"FL",name:"ExaminedBodyThickness",vm:"1",version:"DICOM"},"(0012,0010)":{tag:"(0012,0010)",vr:"LO",name:"ClinicalTrialSponsorName",vm:"1",version:"DICOM"},"(0012,0020)":{tag:"(0012,0020)",vr:"LO",name:"ClinicalTrialProtocolID",vm:"1",version:"DICOM"},"(0012,0021)":{tag:"(0012,0021)",vr:"LO",name:"ClinicalTrialProtocolName",vm:"1",version:"DICOM"},"(0012,0030)":{tag:"(0012,0030)",vr:"LO",name:"ClinicalTrialSiteID",vm:"1",version:"DICOM"},"(0012,0031)":{tag:"(0012,0031)",vr:"LO",name:"ClinicalTrialSiteName",vm:"1",version:"DICOM"},"(0012,0040)":{tag:"(0012,0040)",vr:"LO",name:"ClinicalTrialSubjectID",vm:"1",version:"DICOM"},"(0012,0042)":{tag:"(0012,0042)",vr:"LO",name:"ClinicalTrialSubjectReadingID",vm:"1",version:"DICOM"},"(0012,0050)":{tag:"(0012,0050)",vr:"LO",name:"ClinicalTrialTimePointID",vm:"1",version:"DICOM"},"(0012,0051)":{tag:"(0012,0051)",vr:"ST",name:"ClinicalTrialTimePointDescription",vm:"1",version:"DICOM"},"(0012,0052)":{tag:"(0012,0052)",vr:"FD",name:"LongitudinalTemporalOffsetFromEvent",vm:"1",version:"DICOM"},"(0012,0053)":{tag:"(0012,0053)",vr:"CS",name:"LongitudinalTemporalEventType",vm:"1",version:"DICOM"},"(0012,0060)":{tag:"(0012,0060)",vr:"LO",name:"ClinicalTrialCoordinatingCenterName",vm:"1",version:"DICOM"},"(0012,0062)":{tag:"(0012,0062)",vr:"CS",name:"PatientIdentityRemoved",vm:"1",version:"DICOM"},"(0012,0063)":{tag:"(0012,0063)",vr:"LO",name:"DeidentificationMethod",vm:"1-n",version:"DICOM"},"(0012,0064)":{tag:"(0012,0064)",vr:"SQ",name:"DeidentificationMethodCodeSequence",vm:"1",version:"DICOM"},"(0012,0071)":{tag:"(0012,0071)",vr:"LO",name:"ClinicalTrialSeriesID",vm:"1",version:"DICOM"},"(0012,0072)":{tag:"(0012,0072)",vr:"LO",name:"ClinicalTrialSeriesDescription",vm:"1",version:"DICOM"},"(0012,0081)":{tag:"(0012,0081)",vr:"LO",name:"ClinicalTrialProtocolEthicsCommitteeName",vm:"1",version:"DICOM"},"(0012,0082)":{tag:"(0012,0082)",vr:"LO",name:"ClinicalTrialProtocolEthicsCommitteeApprovalNumber",vm:"1",version:"DICOM"},"(0012,0083)":{tag:"(0012,0083)",vr:"SQ",name:"ConsentForClinicalTrialUseSequence",vm:"1",version:"DICOM"},"(0012,0084)":{tag:"(0012,0084)",vr:"CS",name:"DistributionType",vm:"1",version:"DICOM"},"(0012,0085)":{tag:"(0012,0085)",vr:"CS",name:"ConsentForDistributionFlag",vm:"1",version:"DICOM"},"(0014,0025)":{tag:"(0014,0025)",vr:"ST",name:"ComponentManufacturingProcedure",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0028)":{tag:"(0014,0028)",vr:"ST",name:"ComponentManufacturer",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0030)":{tag:"(0014,0030)",vr:"DS",name:"MaterialThickness",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0032)":{tag:"(0014,0032)",vr:"DS",name:"MaterialPipeDiameter",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0034)":{tag:"(0014,0034)",vr:"DS",name:"MaterialIsolationDiameter",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0042)":{tag:"(0014,0042)",vr:"ST",name:"MaterialGrade",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0044)":{tag:"(0014,0044)",vr:"ST",name:"MaterialPropertiesDescription",vm:"1-n",version:"DICOM/DICONDE"},"(0014,0046)":{tag:"(0014,0046)",vr:"LT",name:"MaterialNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,0050)":{tag:"(0014,0050)",vr:"CS",name:"ComponentShape",vm:"1",version:"DICOM/DICONDE"},"(0014,0052)":{tag:"(0014,0052)",vr:"CS",name:"CurvatureType",vm:"1",version:"DICOM/DICONDE"},"(0014,0054)":{tag:"(0014,0054)",vr:"DS",name:"OuterDiameter",vm:"1",version:"DICOM/DICONDE"},"(0014,0056)":{tag:"(0014,0056)",vr:"DS",name:"InnerDiameter",vm:"1",version:"DICOM/DICONDE"},"(0014,1010)":{tag:"(0014,1010)",vr:"ST",name:"ActualEnvironmentalConditions",vm:"1",version:"DICOM/DICONDE"},"(0014,1020)":{tag:"(0014,1020)",vr:"DA",name:"ExpiryDate",vm:"1",version:"DICOM/DICONDE"},"(0014,1040)":{tag:"(0014,1040)",vr:"ST",name:"EnvironmentalConditions",vm:"1",version:"DICOM/DICONDE"},"(0014,2002)":{tag:"(0014,2002)",vr:"SQ",name:"EvaluatorSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2004)":{tag:"(0014,2004)",vr:"IS",name:"EvaluatorNumber",vm:"1",version:"DICOM/DICONDE"},"(0014,2006)":{tag:"(0014,2006)",vr:"PN",name:"EvaluatorName",vm:"1",version:"DICOM/DICONDE"},"(0014,2008)":{tag:"(0014,2008)",vr:"IS",name:"EvaluationAttempt",vm:"1",version:"DICOM/DICONDE"},"(0014,2012)":{tag:"(0014,2012)",vr:"SQ",name:"IndicationSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2014)":{tag:"(0014,2014)",vr:"IS",name:"IndicationNumber",vm:"1",version:"DICOM/DICONDE"},"(0014,2016)":{tag:"(0014,2016)",vr:"SH",name:"IndicationLabel",vm:"1",version:"DICOM/DICONDE"},"(0014,2018)":{tag:"(0014,2018)",vr:"ST",name:"IndicationDescription",vm:"1",version:"DICOM/DICONDE"},"(0014,201A)":{tag:"(0014,201A)",vr:"CS",name:"IndicationType",vm:"1-n",version:"DICOM/DICONDE"},"(0014,201C)":{tag:"(0014,201C)",vr:"CS",name:"IndicationDisposition",vm:"1",version:"DICOM/DICONDE"},"(0014,201E)":{tag:"(0014,201E)",vr:"SQ",name:"IndicationROISequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2030)":{tag:"(0014,2030)",vr:"SQ",name:"IndicationPhysicalPropertySequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2032)":{tag:"(0014,2032)",vr:"SH",name:"PropertyLabel",vm:"1",version:"DICOM/DICONDE"},"(0014,2202)":{tag:"(0014,2202)",vr:"IS",name:"CoordinateSystemNumberOfAxes",vm:"1",version:"DICOM/DICONDE"},"(0014,2204)":{tag:"(0014,2204)",vr:"SQ",name:"CoordinateSystemAxesSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2206)":{tag:"(0014,2206)",vr:"ST",name:"CoordinateSystemAxisDescription",vm:"1",version:"DICOM/DICONDE"},"(0014,2208)":{tag:"(0014,2208)",vr:"CS",name:"CoordinateSystemDataSetMapping",vm:"1",version:"DICOM/DICONDE"},"(0014,220A)":{tag:"(0014,220A)",vr:"IS",name:"CoordinateSystemAxisNumber",vm:"1",version:"DICOM/DICONDE"},"(0014,220C)":{tag:"(0014,220C)",vr:"CS",name:"CoordinateSystemAxisType",vm:"1",version:"DICOM/DICONDE"},"(0014,220E)":{tag:"(0014,220E)",vr:"CS",name:"CoordinateSystemAxisUnits",vm:"1",version:"DICOM/DICONDE"},"(0014,2210)":{tag:"(0014,2210)",vr:"OB",name:"CoordinateSystemAxisValues",vm:"1",version:"DICOM/DICONDE"},"(0014,2220)":{tag:"(0014,2220)",vr:"SQ",name:"CoordinateSystemTransformSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,2222)":{tag:"(0014,2222)",vr:"ST",name:"TransformDescription",vm:"1",version:"DICOM/DICONDE"},"(0014,2224)":{tag:"(0014,2224)",vr:"IS",name:"TransformNumberOfAxes",vm:"1",version:"DICOM/DICONDE"},"(0014,2226)":{tag:"(0014,2226)",vr:"IS",name:"TransformOrderOfAxes",vm:"1-n",version:"DICOM/DICONDE"},"(0014,2228)":{tag:"(0014,2228)",vr:"CS",name:"TransformedAxisUnits",vm:"1",version:"DICOM/DICONDE"},"(0014,222A)":{tag:"(0014,222A)",vr:"DS",name:"CoordinateSystemTransformRotationAndScaleMatrix",vm:"1-n",version:"DICOM/DICONDE"},"(0014,222C)":{tag:"(0014,222C)",vr:"DS",name:"CoordinateSystemTransformTranslationMatrix",vm:"1-n",version:"DICOM/DICONDE"},"(0014,3011)":{tag:"(0014,3011)",vr:"DS",name:"InternalDetectorFrameTime",vm:"1",version:"DICOM/DICONDE"},"(0014,3012)":{tag:"(0014,3012)",vr:"DS",name:"NumberOfFramesIntegrated",vm:"1",version:"DICOM/DICONDE"},"(0014,3020)":{tag:"(0014,3020)",vr:"SQ",name:"DetectorTemperatureSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,3022)":{tag:"(0014,3022)",vr:"ST",name:"SensorName",vm:"1",version:"DICOM/DICONDE"},"(0014,3024)":{tag:"(0014,3024)",vr:"DS",name:"HorizontalOffsetOfSensor",vm:"1",version:"DICOM/DICONDE"},"(0014,3026)":{tag:"(0014,3026)",vr:"DS",name:"VerticalOffsetOfSensor",vm:"1",version:"DICOM/DICONDE"},"(0014,3028)":{tag:"(0014,3028)",vr:"DS",name:"SensorTemperature",vm:"1",version:"DICOM/DICONDE"},"(0014,3040)":{tag:"(0014,3040)",vr:"SQ",name:"DarkCurrentSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,3050)":{tag:"(0014,3050)",vr:"ox",name:"DarkCurrentCounts",vm:"1",version:"DICOM/DICONDE"},"(0014,3060)":{tag:"(0014,3060)",vr:"SQ",name:"GainCorrectionReferenceSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,3070)":{tag:"(0014,3070)",vr:"ox",name:"AirCounts",vm:"1",version:"DICOM/DICONDE"},"(0014,3071)":{tag:"(0014,3071)",vr:"DS",name:"KVUsedInGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3072)":{tag:"(0014,3072)",vr:"DS",name:"MAUsedInGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3073)":{tag:"(0014,3073)",vr:"DS",name:"NumberOfFramesUsedForIntegration",vm:"1",version:"DICOM/DICONDE"},"(0014,3074)":{tag:"(0014,3074)",vr:"LO",name:"FilterMaterialUsedInGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3075)":{tag:"(0014,3075)",vr:"DS",name:"FilterThicknessUsedInGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3076)":{tag:"(0014,3076)",vr:"DA",name:"DateOfGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3077)":{tag:"(0014,3077)",vr:"TM",name:"TimeOfGainCalibration",vm:"1",version:"DICOM/DICONDE"},"(0014,3080)":{tag:"(0014,3080)",vr:"OB",name:"BadPixelImage",vm:"1",version:"DICOM/DICONDE"},"(0014,3099)":{tag:"(0014,3099)",vr:"LT",name:"CalibrationNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,4002)":{tag:"(0014,4002)",vr:"SQ",name:"PulserEquipmentSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4004)":{tag:"(0014,4004)",vr:"CS",name:"PulserType",vm:"1",version:"DICOM/DICONDE"},"(0014,4006)":{tag:"(0014,4006)",vr:"LT",name:"PulserNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,4008)":{tag:"(0014,4008)",vr:"SQ",name:"ReceiverEquipmentSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,400A)":{tag:"(0014,400A)",vr:"CS",name:"AmplifierType",vm:"1",version:"DICOM/DICONDE"},"(0014,400C)":{tag:"(0014,400C)",vr:"LT",name:"ReceiverNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,400E)":{tag:"(0014,400E)",vr:"SQ",name:"PreAmplifierEquipmentSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,400F)":{tag:"(0014,400F)",vr:"LT",name:"PreAmplifierNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,4010)":{tag:"(0014,4010)",vr:"SQ",name:"TransmitTransducerSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4011)":{tag:"(0014,4011)",vr:"SQ",name:"ReceiveTransducerSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4012)":{tag:"(0014,4012)",vr:"US",name:"NumberOfElements",vm:"1",version:"DICOM/DICONDE"},"(0014,4013)":{tag:"(0014,4013)",vr:"CS",name:"ElementShape",vm:"1",version:"DICOM/DICONDE"},"(0014,4014)":{tag:"(0014,4014)",vr:"DS",name:"ElementDimensionA",vm:"1",version:"DICOM/DICONDE"},"(0014,4015)":{tag:"(0014,4015)",vr:"DS",name:"ElementDimensionB",vm:"1",version:"DICOM/DICONDE"},"(0014,4016)":{tag:"(0014,4016)",vr:"DS",name:"ElementPitchA",vm:"1",version:"DICOM/DICONDE"},"(0014,4017)":{tag:"(0014,4017)",vr:"DS",name:"MeasuredBeamDimensionA",vm:"1",version:"DICOM/DICONDE"},"(0014,4018)":{tag:"(0014,4018)",vr:"DS",name:"MeasuredBeamDimensionB",vm:"1",version:"DICOM/DICONDE"},"(0014,4019)":{tag:"(0014,4019)",vr:"DS",name:"LocationOfMeasuredBeamDiameter",vm:"1",version:"DICOM/DICONDE"},"(0014,401A)":{tag:"(0014,401A)",vr:"DS",name:"NominalFrequency",vm:"1",version:"DICOM/DICONDE"},"(0014,401B)":{tag:"(0014,401B)",vr:"DS",name:"MeasuredCenterFrequency",vm:"1",version:"DICOM/DICONDE"},"(0014,401C)":{tag:"(0014,401C)",vr:"DS",name:"MeasuredBandwidth",vm:"1",version:"DICOM/DICONDE"},"(0014,401D)":{tag:"(0014,401D)",vr:"DS",name:"ElementPitchB",vm:"1",version:"DICOM/DICONDE"},"(0014,4020)":{tag:"(0014,4020)",vr:"SQ",name:"PulserSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4022)":{tag:"(0014,4022)",vr:"DS",name:"PulseWidth",vm:"1",version:"DICOM/DICONDE"},"(0014,4024)":{tag:"(0014,4024)",vr:"DS",name:"ExcitationFrequency",vm:"1",version:"DICOM/DICONDE"},"(0014,4026)":{tag:"(0014,4026)",vr:"CS",name:"ModulationType",vm:"1",version:"DICOM/DICONDE"},"(0014,4028)":{tag:"(0014,4028)",vr:"DS",name:"Damping",vm:"1",version:"DICOM/DICONDE"},"(0014,4030)":{tag:"(0014,4030)",vr:"SQ",name:"ReceiverSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4031)":{tag:"(0014,4031)",vr:"DS",name:"AcquiredSoundpathLength",vm:"1",version:"DICOM/DICONDE"},"(0014,4032)":{tag:"(0014,4032)",vr:"CS",name:"AcquisitionCompressionType",vm:"1",version:"DICOM/DICONDE"},"(0014,4033)":{tag:"(0014,4033)",vr:"IS",name:"AcquisitionSampleSize",vm:"1",version:"DICOM/DICONDE"},"(0014,4034)":{tag:"(0014,4034)",vr:"DS",name:"RectifierSmoothing",vm:"1",version:"DICOM/DICONDE"},"(0014,4035)":{tag:"(0014,4035)",vr:"SQ",name:"DACSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4036)":{tag:"(0014,4036)",vr:"CS",name:"DACType",vm:"1",version:"DICOM/DICONDE"},"(0014,4038)":{tag:"(0014,4038)",vr:"DS",name:"DACGainPoints",vm:"1-n",version:"DICOM/DICONDE"},"(0014,403A)":{tag:"(0014,403A)",vr:"DS",name:"DACTimePoints",vm:"1-n",version:"DICOM/DICONDE"},"(0014,403C)":{tag:"(0014,403C)",vr:"DS",name:"DACAmplitude",vm:"1-n",version:"DICOM/DICONDE"},"(0014,4040)":{tag:"(0014,4040)",vr:"SQ",name:"PreAmplifierSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4050)":{tag:"(0014,4050)",vr:"SQ",name:"TransmitTransducerSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4051)":{tag:"(0014,4051)",vr:"SQ",name:"ReceiveTransducerSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4052)":{tag:"(0014,4052)",vr:"DS",name:"IncidentAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,4054)":{tag:"(0014,4054)",vr:"ST",name:"CouplingTechnique",vm:"1",version:"DICOM/DICONDE"},"(0014,4056)":{tag:"(0014,4056)",vr:"ST",name:"CouplingMedium",vm:"1",version:"DICOM/DICONDE"},"(0014,4057)":{tag:"(0014,4057)",vr:"DS",name:"CouplingVelocity",vm:"1",version:"DICOM/DICONDE"},"(0014,4058)":{tag:"(0014,4058)",vr:"DS",name:"ProbeCenterLocationX",vm:"1",version:"DICOM/DICONDE"},"(0014,4059)":{tag:"(0014,4059)",vr:"DS",name:"ProbeCenterLocationZ",vm:"1",version:"DICOM/DICONDE"},"(0014,405A)":{tag:"(0014,405A)",vr:"DS",name:"SoundPathLength",vm:"1",version:"DICOM/DICONDE"},"(0014,405C)":{tag:"(0014,405C)",vr:"ST",name:"DelayLawIdentifier",vm:"1",version:"DICOM/DICONDE"},"(0014,4060)":{tag:"(0014,4060)",vr:"SQ",name:"GateSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4062)":{tag:"(0014,4062)",vr:"DS",name:"GateThreshold",vm:"1",version:"DICOM/DICONDE"},"(0014,4064)":{tag:"(0014,4064)",vr:"DS",name:"VelocityOfSound",vm:"1",version:"DICOM/DICONDE"},"(0014,4070)":{tag:"(0014,4070)",vr:"SQ",name:"CalibrationSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4072)":{tag:"(0014,4072)",vr:"ST",name:"CalibrationProcedure",vm:"1",version:"DICOM/DICONDE"},"(0014,4074)":{tag:"(0014,4074)",vr:"SH",name:"ProcedureVersion",vm:"1",version:"DICOM/DICONDE"},"(0014,4076)":{tag:"(0014,4076)",vr:"DA",name:"ProcedureCreationDate",vm:"1",version:"DICOM/DICONDE"},"(0014,4078)":{tag:"(0014,4078)",vr:"DA",name:"ProcedureExpirationDate",vm:"1",version:"DICOM/DICONDE"},"(0014,407A)":{tag:"(0014,407A)",vr:"DA",name:"ProcedureLastModifiedDate",vm:"1",version:"DICOM/DICONDE"},"(0014,407C)":{tag:"(0014,407C)",vr:"TM",name:"CalibrationTime",vm:"1-n",version:"DICOM/DICONDE"},"(0014,407E)":{tag:"(0014,407E)",vr:"DA",name:"CalibrationDate",vm:"1-n",version:"DICOM/DICONDE"},"(0014,4080)":{tag:"(0014,4080)",vr:"SQ",name:"ProbeDriveEquipmentSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4081)":{tag:"(0014,4081)",vr:"CS",name:"DriveType",vm:"1",version:"DICOM/DICONDE"},"(0014,4082)":{tag:"(0014,4082)",vr:"LT",name:"ProbeDriveNotes",vm:"1",version:"DICOM/DICONDE"},"(0014,4083)":{tag:"(0014,4083)",vr:"SQ",name:"DriveProbeSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4084)":{tag:"(0014,4084)",vr:"DS",name:"ProbeInductance",vm:"1",version:"DICOM/DICONDE"},"(0014,4085)":{tag:"(0014,4085)",vr:"DS",name:"ProbeResistance",vm:"1",version:"DICOM/DICONDE"},"(0014,4086)":{tag:"(0014,4086)",vr:"SQ",name:"ReceiveProbeSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4087)":{tag:"(0014,4087)",vr:"SQ",name:"ProbeDriveSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4088)":{tag:"(0014,4088)",vr:"DS",name:"BridgeResistors",vm:"1",version:"DICOM/DICONDE"},"(0014,4089)":{tag:"(0014,4089)",vr:"DS",name:"ProbeOrientationAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,408B)":{tag:"(0014,408B)",vr:"DS",name:"UserSelectedGainY",vm:"1",version:"DICOM/DICONDE"},"(0014,408C)":{tag:"(0014,408C)",vr:"DS",name:"UserSelectedPhase",vm:"1",version:"DICOM/DICONDE"},"(0014,408D)":{tag:"(0014,408D)",vr:"DS",name:"UserSelectedOffsetX",vm:"1",version:"DICOM/DICONDE"},"(0014,408E)":{tag:"(0014,408E)",vr:"DS",name:"UserSelectedOffsetY",vm:"1",version:"DICOM/DICONDE"},"(0014,4091)":{tag:"(0014,4091)",vr:"SQ",name:"ChannelSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,4092)":{tag:"(0014,4092)",vr:"DS",name:"ChannelThreshold",vm:"1",version:"DICOM/DICONDE"},"(0014,409A)":{tag:"(0014,409A)",vr:"SQ",name:"ScannerSettingsSequence",vm:"1",version:"DICOM/DICONDE"},"(0014,409B)":{tag:"(0014,409B)",vr:"ST",name:"ScanProcedure",vm:"1",version:"DICOM/DICONDE"},"(0014,409C)":{tag:"(0014,409C)",vr:"DS",name:"TranslationRateX",vm:"1",version:"DICOM/DICONDE"},"(0014,409D)":{tag:"(0014,409D)",vr:"DS",name:"TranslationRateY",vm:"1",version:"DICOM/DICONDE"},"(0014,409F)":{tag:"(0014,409F)",vr:"DS",name:"ChannelOverlap",vm:"1",version:"DICOM/DICONDE"},"(0014,40A0)":{tag:"(0014,40A0)",vr:"LO",name:"ImageQualityIndicatorType",vm:"1",version:"DICOM/DICONDE"},"(0014,40A1)":{tag:"(0014,40A1)",vr:"LO",name:"ImageQualityIndicatorMaterial",vm:"1",version:"DICOM/DICONDE"},"(0014,40A2)":{tag:"(0014,40A2)",vr:"LO",name:"ImageQualityIndicatorSize",vm:"1",version:"DICOM/DICONDE"},"(0014,5002)":{tag:"(0014,5002)",vr:"IS",name:"LINACEnergy",vm:"1",version:"DICOM/DICONDE"},"(0014,5004)":{tag:"(0014,5004)",vr:"IS",name:"LINACOutput",vm:"1",version:"DICOM/DICONDE"},"(0014,5100)":{tag:"(0014,5100)",vr:"US",name:"ActiveAperture",vm:"1",version:"DICOM/DICONDE"},"(0014,5101)":{tag:"(0014,5101)",vr:"DS",name:"TotalAperture",vm:"1",version:"DICOM/DICONDE"},"(0014,5102)":{tag:"(0014,5102)",vr:"DS",name:"ApertureElevation",vm:"1",version:"DICOM/DICONDE"},"(0014,5103)":{tag:"(0014,5103)",vr:"DS",name:"MainLobeAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,5104)":{tag:"(0014,5104)",vr:"DS",name:"MainRoofAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,5105)":{tag:"(0014,5105)",vr:"CS",name:"ConnectorType",vm:"1",version:"DICOM/DICONDE"},"(0014,5106)":{tag:"(0014,5106)",vr:"SH",name:"WedgeModelNumber",vm:"1",version:"DICOM/DICONDE"},"(0014,5107)":{tag:"(0014,5107)",vr:"DS",name:"WedgeAngleFloat",vm:"1",version:"DICOM/DICONDE"},"(0014,5108)":{tag:"(0014,5108)",vr:"DS",name:"WedgeRoofAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,5109)":{tag:"(0014,5109)",vr:"CS",name:"WedgeElement1Position",vm:"1",version:"DICOM/DICONDE"},"(0014,510A)":{tag:"(0014,510A)",vr:"DS",name:"WedgeMaterialVelocity",vm:"1",version:"DICOM/DICONDE"},"(0014,510B)":{tag:"(0014,510B)",vr:"SH",name:"WedgeMaterial",vm:"1",version:"DICOM/DICONDE"},"(0014,510C)":{tag:"(0014,510C)",vr:"DS",name:"WedgeOffsetZ",vm:"1",version:"DICOM/DICONDE"},"(0014,510D)":{tag:"(0014,510D)",vr:"DS",name:"WedgeOriginOffsetX",vm:"1",version:"DICOM/DICONDE"},"(0014,510E)":{tag:"(0014,510E)",vr:"DS",name:"WedgeTimeDelay",vm:"1",version:"DICOM/DICONDE"},"(0014,510F)":{tag:"(0014,510F)",vr:"SH",name:"WedgeName",vm:"1",version:"DICOM/DICONDE"},"(0014,5110)":{tag:"(0014,5110)",vr:"SH",name:"WedgeManufacturerName",vm:"1",version:"DICOM/DICONDE"},"(0014,5111)":{tag:"(0014,5111)",vr:"LO",name:"WedgeDescription",vm:"1",version:"DICOM/DICONDE"},"(0014,5112)":{tag:"(0014,5112)",vr:"DS",name:"NominalBeamAngle",vm:"1",version:"DICOM/DICONDE"},"(0014,5113)":{tag:"(0014,5113)",vr:"DS",name:"WedgeOffsetX",vm:"1",version:"DICOM/DICONDE"},"(0014,5114)":{tag:"(0014,5114)",vr:"DS",name:"WedgeOffsetY",vm:"1",version:"DICOM/DICONDE"},"(0014,5115)":{tag:"(0014,5115)",vr:"DS",name:"WedgeTotalLength",vm:"1",version:"DICOM/DICONDE"},"(0014,5116)":{tag:"(0014,5116)",vr:"DS",name:"WedgeInContactLength",vm:"1",version:"DICOM/DICONDE"},"(0014,5117)":{tag:"(0014,5117)",vr:"DS",name:"WedgeFrontGap",vm:"1",version:"DICOM/DICONDE"},"(0014,5118)":{tag:"(0014,5118)",vr:"DS",name:"WedgeTotalHeight",vm:"1",version:"DICOM/DICONDE"},"(0014,5119)":{tag:"(0014,5119)",vr:"DS",name:"WedgeFrontHeight",vm:"1",version:"DICOM/DICONDE"},"(0014,511A)":{tag:"(0014,511A)",vr:"DS",name:"WedgeRearHeight",vm:"1",version:"DICOM/DICONDE"},"(0014,511B)":{tag:"(0014,511B)",vr:"DS",name:"WedgeTotalWidth",vm:"1",version:"DICOM/DICONDE"},"(0014,511C)":{tag:"(0014,511C)",vr:"DS",name:"WedgeInContactWidth",vm:"1",version:"DICOM/DICONDE"},"(0014,511D)":{tag:"(0014,511D)",vr:"DS",name:"WedgeChamferHeight",vm:"1",version:"DICOM/DICONDE"},"(0014,511E)":{tag:"(0014,511E)",vr:"CS",name:"WedgeCurve",vm:"1",version:"DICOM/DICONDE"},"(0014,511F)":{tag:"(0014,511F)",vr:"DS",name:"RadiusAlongWedge",vm:"1",version:"DICOM/DICONDE"},"(0012,0086)":{tag:"(0012,0086)",vr:"DA",name:"EthicsCommitteeApprovalEffectivenessStartDate",vm:"1",version:"DICOM"},"(0012,0087)":{tag:"(0012,0087)",vr:"DA",name:"EthicsCommitteeApprovalEffectivenessEndDate",vm:"1",version:"DICOM"},"(0014,0100)":{tag:"(0014,0100)",vr:"LO",name:"ComponentWelderIDs",vm:"1-n",version:"DICOM"},"(0014,0101)":{tag:"(0014,0101)",vr:"CS",name:"SecondaryApprovalStatus",vm:"1",version:"DICOM"},"(0014,0102)":{tag:"(0014,0102)",vr:"DA",name:"SecondaryReviewDate",vm:"1",version:"DICOM"},"(0014,0103)":{tag:"(0014,0103)",vr:"TM",name:"SecondaryReviewTime",vm:"1",version:"DICOM"},"(0014,0104)":{tag:"(0014,0104)",vr:"PN",name:"SecondaryReviewerName",vm:"1",version:"DICOM"},"(0014,0105)":{tag:"(0014,0105)",vr:"ST",name:"RepairID",vm:"1",version:"DICOM"},"(0014,0106)":{tag:"(0014,0106)",vr:"SQ",name:"MultipleComponentApprovalSequence",vm:"1",version:"DICOM"},"(0014,0107)":{tag:"(0014,0107)",vr:"CS",name:"OtherApprovalStatus",vm:"1-n",version:"DICOM"},"(0014,0108)":{tag:"(0014,0108)",vr:"CS",name:"OtherSecondaryApprovalStatus",vm:"1-n",version:"DICOM"},"(0016,0001)":{tag:"(0016,0001)",vr:"DS",name:"WhitePoint",vm:"1",version:"DICOM"},"(0016,0002)":{tag:"(0016,0002)",vr:"DS",name:"PrimaryChromaticities",vm:"3",version:"DICOM"},"(0016,0003)":{tag:"(0016,0003)",vr:"UT",name:"BatteryLevel",vm:"1",version:"DICOM"},"(0016,0004)":{tag:"(0016,0004)",vr:"DS",name:"ExposureTimeInSeconds",vm:"1",version:"DICOM"},"(0016,0005)":{tag:"(0016,0005)",vr:"DS",name:"FNumber",vm:"1",version:"DICOM"},"(0016,0006)":{tag:"(0016,0006)",vr:"IS",name:"OECFRows",vm:"1",version:"DICOM"},"(0016,0007)":{tag:"(0016,0007)",vr:"IS",name:"OECFColumns",vm:"1",version:"DICOM"},"(0016,0008)":{tag:"(0016,0008)",vr:"UC",name:"OECFColumnNames",vm:"1-n",version:"DICOM"},"(0016,0009)":{tag:"(0016,0009)",vr:"DS",name:"OECFValues",vm:"1-n",version:"DICOM"},"(0016,000A)":{tag:"(0016,000A)",vr:"IS",name:"SpatialFrequencyResponseRows",vm:"1",version:"DICOM"},"(0016,000B)":{tag:"(0016,000B)",vr:"IS",name:"SpatialFrequencyResponseColumns",vm:"1",version:"DICOM"},"(0016,000C)":{tag:"(0016,000C)",vr:"UC",name:"SpatialFrequencyResponseColumnNames",vm:"1-n",version:"DICOM"},"(0016,000D)":{tag:"(0016,000D)",vr:"DS",name:"SpatialFrequencyResponseValues",vm:"1-n",version:"DICOM"},"(0016,000E)":{tag:"(0016,000E)",vr:"IS",name:"ColorFilterArrayPatternRows",vm:"1",version:"DICOM"},"(0016,000F)":{tag:"(0016,000F)",vr:"IS",name:"ColorFilterArrayPatternColumns",vm:"1",version:"DICOM"},"(0016,0010)":{tag:"(0016,0010)",vr:"DS",name:"ColorFilterArrayPatternValues",vm:"1-n",version:"DICOM"},"(0016,0011)":{tag:"(0016,0011)",vr:"US",name:"FlashFiringStatus",vm:"1",version:"DICOM"},"(0016,0012)":{tag:"(0016,0012)",vr:"US",name:"FlashReturnStatus",vm:"1",version:"DICOM"},"(0016,0013)":{tag:"(0016,0013)",vr:"US",name:"FlashMode",vm:"1",version:"DICOM"},"(0016,0014)":{tag:"(0016,0014)",vr:"US",name:"FlashFunctionPresent",vm:"1",version:"DICOM"},"(0016,0015)":{tag:"(0016,0015)",vr:"US",name:"FlashRedEyeMode",vm:"1",version:"DICOM"},"(0016,0016)":{tag:"(0016,0016)",vr:"US",name:"ExposureProgram",vm:"1",version:"DICOM"},"(0016,0017)":{tag:"(0016,0017)",vr:"UT",name:"SpectralSensitivity",vm:"1",version:"DICOM"},"(0016,0018)":{tag:"(0016,0018)",vr:"IS",name:"PhotographicSensitivity",vm:"1",version:"DICOM"},"(0016,0019)":{tag:"(0016,0019)",vr:"IS",name:"SelfTimerMode",vm:"1",version:"DICOM"},"(0016,001A)":{tag:"(0016,001A)",vr:"US",name:"SensitivityType",vm:"1",version:"DICOM"},"(0016,001B)":{tag:"(0016,001B)",vr:"IS",name:"StandardOutputSensitivity",vm:"1",version:"DICOM"},"(0016,001C)":{tag:"(0016,001C)",vr:"IS",name:"RecommendedExposureIndex",vm:"1",version:"DICOM"},"(0016,001D)":{tag:"(0016,001D)",vr:"IS",name:"ISOSpeed",vm:"1",version:"DICOM"},"(0016,001E)":{tag:"(0016,001E)",vr:"IS",name:"ISOSpeedLatitudeyyy",vm:"1",version:"DICOM"},"(0016,001F)":{tag:"(0016,001F)",vr:"IS",name:"ISOSpeedLatitudezzz",vm:"1",version:"DICOM"},"(0016,0020)":{tag:"(0016,0020)",vr:"UT",name:"EXIFVersion",vm:"1",version:"DICOM"},"(0016,0021)":{tag:"(0016,0021)",vr:"DS",name:"ShutterSpeedValue",vm:"1",version:"DICOM"},"(0016,0022)":{tag:"(0016,0022)",vr:"DS",name:"ApertureValue",vm:"1",version:"DICOM"},"(0016,0023)":{tag:"(0016,0023)",vr:"DS",name:"BrightnessValue",vm:"1",version:"DICOM"},"(0016,0024)":{tag:"(0016,0024)",vr:"DS",name:"ExposureBiasValue",vm:"1",version:"DICOM"},"(0016,0025)":{tag:"(0016,0025)",vr:"DS",name:"MaxApertureValue",vm:"1",version:"DICOM"},"(0016,0026)":{tag:"(0016,0026)",vr:"DS",name:"SubjectDistance",vm:"1",version:"DICOM"},"(0016,0027)":{tag:"(0016,0027)",vr:"US",name:"MeteringMode",vm:"1",version:"DICOM"},"(0016,0028)":{tag:"(0016,0028)",vr:"US",name:"LightSource",vm:"1",version:"DICOM"},"(0016,0029)":{tag:"(0016,0029)",vr:"DS",name:"FocalLength",vm:"1",version:"DICOM"},"(0016,002A)":{tag:"(0016,002A)",vr:"IS",name:"SubjectArea",vm:"2-4",version:"DICOM"},"(0016,002B)":{tag:"(0016,002B)",vr:"OB",name:"MakerNote",vm:"1",version:"DICOM"},"(0016,0030)":{tag:"(0016,0030)",vr:"DS",name:"Temperature",vm:"1",version:"DICOM"},"(0016,0031)":{tag:"(0016,0031)",vr:"DS",name:"Humidity",vm:"1",version:"DICOM"},"(0016,0032)":{tag:"(0016,0032)",vr:"DS",name:"Pressure",vm:"1",version:"DICOM"},"(0016,0033)":{tag:"(0016,0033)",vr:"DS",name:"WaterDepth",vm:"1",version:"DICOM"},"(0016,0034)":{tag:"(0016,0034)",vr:"DS",name:"Acceleration",vm:"1",version:"DICOM"},"(0016,0035)":{tag:"(0016,0035)",vr:"DS",name:"CameraElevationAngle",vm:"1",version:"DICOM"},"(0016,0036)":{tag:"(0016,0036)",vr:"DS",name:"FlashEnergy",vm:"1-2",version:"DICOM"},"(0016,0037)":{tag:"(0016,0037)",vr:"IS",name:"SubjectLocation",vm:"2",version:"DICOM"},"(0016,0038)":{tag:"(0016,0038)",vr:"DS",name:"PhotographicExposureIndex",vm:"1",version:"DICOM"},"(0016,0039)":{tag:"(0016,0039)",vr:"US",name:"SensingMethod",vm:"1",version:"DICOM"},"(0016,003A)":{tag:"(0016,003A)",vr:"US",name:"FileSource",vm:"1",version:"DICOM"},"(0016,003B)":{tag:"(0016,003B)",vr:"US",name:"SceneType",vm:"1",version:"DICOM"},"(0016,0041)":{tag:"(0016,0041)",vr:"US",name:"CustomRendered",vm:"1",version:"DICOM"},"(0016,0042)":{tag:"(0016,0042)",vr:"US",name:"ExposureMode",vm:"1",version:"DICOM"},"(0016,0043)":{tag:"(0016,0043)",vr:"US",name:"WhiteBalance",vm:"1",version:"DICOM"},"(0016,0044)":{tag:"(0016,0044)",vr:"DS",name:"DigitalZoomRatio",vm:"1",version:"DICOM"},"(0016,0045)":{tag:"(0016,0045)",vr:"IS",name:"FocalLengthIn35mmFilm",vm:"1",version:"DICOM"},"(0016,0046)":{tag:"(0016,0046)",vr:"US",name:"SceneCaptureType",vm:"1",version:"DICOM"},"(0016,0047)":{tag:"(0016,0047)",vr:"US",name:"GainControl",vm:"1",version:"DICOM"},"(0016,0048)":{tag:"(0016,0048)",vr:"US",name:"Contrast",vm:"1",version:"DICOM"},"(0016,0049)":{tag:"(0016,0049)",vr:"US",name:"Saturation",vm:"1",version:"DICOM"},"(0016,004A)":{tag:"(0016,004A)",vr:"US",name:"Sharpness",vm:"1",version:"DICOM"},"(0016,004B)":{tag:"(0016,004B)",vr:"OB",name:"DeviceSettingDescription",vm:"1",version:"DICOM"},"(0016,004C)":{tag:"(0016,004C)",vr:"US",name:"SubjectDistanceRange",vm:"1",version:"DICOM"},"(0016,004D)":{tag:"(0016,004D)",vr:"UT",name:"CameraOwnerName",vm:"1",version:"DICOM"},"(0016,004E)":{tag:"(0016,004E)",vr:"DS",name:"LensSpecification",vm:"4",version:"DICOM"},"(0016,004F)":{tag:"(0016,004F)",vr:"UT",name:"LensMake",vm:"1",version:"DICOM"},"(0016,0050)":{tag:"(0016,0050)",vr:"UT",name:"LensModel",vm:"1",version:"DICOM"},"(0016,0051)":{tag:"(0016,0051)",vr:"UT",name:"LensSerialNumber",vm:"1",version:"DICOM"},"(0016,0061)":{tag:"(0016,0061)",vr:"CS",name:"InteroperabilityIndex",vm:"1",version:"DICOM"},"(0016,0062)":{tag:"(0016,0062)",vr:"OB",name:"InteroperabilityVersion",vm:"1",version:"DICOM"},"(0016,0070)":{tag:"(0016,0070)",vr:"OB",name:"GPSVersionID",vm:"1",version:"DICOM"},"(0016,0071)":{tag:"(0016,0071)",vr:"CS",name:"GPSLatitudeRef",vm:"1",version:"DICOM"},"(0016,0072)":{tag:"(0016,0072)",vr:"DS",name:"GPSLatitude",vm:"3",version:"DICOM"},"(0016,0073)":{tag:"(0016,0073)",vr:"CS",name:"GPSLongitudeRef",vm:"1",version:"DICOM"},"(0016,0074)":{tag:"(0016,0074)",vr:"DS",name:"GPSLongitude",vm:"3",version:"DICOM"},"(0016,0075)":{tag:"(0016,0075)",vr:"US",name:"GPSAltitudeRef",vm:"1",version:"DICOM"},"(0016,0076)":{tag:"(0016,0076)",vr:"DS",name:"GPSAltitude",vm:"1",version:"DICOM"},"(0016,0077)":{tag:"(0016,0077)",vr:"DT",name:"GPSTimeStamp",vm:"1",version:"DICOM"},"(0016,0078)":{tag:"(0016,0078)",vr:"UT",name:"GPSSatellites",vm:"1",version:"DICOM"},"(0016,0079)":{tag:"(0016,0079)",vr:"CS",name:"GPSStatus",vm:"1",version:"DICOM"},"(0016,007A)":{tag:"(0016,007A)",vr:"CS",name:"GPSMeasureMode",vm:"1",version:"DICOM"},"(0016,007B)":{tag:"(0016,007B)",vr:"DS",name:"GPSDOP",vm:"1",version:"DICOM"},"(0016,007C)":{tag:"(0016,007C)",vr:"CS",name:"GPSSpeedRef",vm:"1",version:"DICOM"},"(0016,007D)":{tag:"(0016,007D)",vr:"DS",name:"GPSSpeed",vm:"1",version:"DICOM"},"(0016,007E)":{tag:"(0016,007E)",vr:"CS",name:"GPSTrackRef",vm:"1",version:"DICOM"},"(0016,007F)":{tag:"(0016,007F)",vr:"DS",name:"GPSTrack",vm:"1",version:"DICOM"},"(0016,0080)":{tag:"(0016,0080)",vr:"CS",name:"GPSImgDirectionRef",vm:"1",version:"DICOM"},"(0016,0081)":{tag:"(0016,0081)",vr:"DS",name:"GPSImgDirection",vm:"1",version:"DICOM"},"(0016,0082)":{tag:"(0016,0082)",vr:"UT",name:"GPSMapDatum",vm:"1",version:"DICOM"},"(0016,0083)":{tag:"(0016,0083)",vr:"CS",name:"GPSDestLatitudeRef",vm:"1",version:"DICOM"},"(0016,0084)":{tag:"(0016,0084)",vr:"DS",name:"GPSDestLatitude",vm:"3",version:"DICOM"},"(0016,0085)":{tag:"(0016,0085)",vr:"CS",name:"GPSDestLongitudeRef",vm:"1",version:"DICOM"},"(0016,0086)":{tag:"(0016,0086)",vr:"DS",name:"GPSDestLongitude",vm:"3",version:"DICOM"},"(0016,0087)":{tag:"(0016,0087)",vr:"CS",name:"GPSDestBearingRef",vm:"1",version:"DICOM"},"(0016,0088)":{tag:"(0016,0088)",vr:"DS",name:"GPSDestBearing",vm:"1",version:"DICOM"},"(0016,0089)":{tag:"(0016,0089)",vr:"CS",name:"GPSDestDistanceRef",vm:"1",version:"DICOM"},"(0016,008A)":{tag:"(0016,008A)",vr:"DS",name:"GPSDestDistance",vm:"1",version:"DICOM"},"(0016,008B)":{tag:"(0016,008B)",vr:"OB",name:"GPSProcessingMethod",vm:"1",version:"DICOM"},"(0016,008C)":{tag:"(0016,008C)",vr:"OB",name:"GPSAreaInformation",vm:"1",version:"DICOM"},"(0016,008D)":{tag:"(0016,008D)",vr:"DT",name:"GPSDateStamp",vm:"1",version:"DICOM"},"(0016,008E)":{tag:"(0016,008E)",vr:"IS",name:"GPSDifferential",vm:"1",version:"DICOM"},"(0016,1001)":{tag:"(0016,1001)",vr:"CS",name:"LightSourcePolarization",vm:"1",version:"DICOM"},"(0016,1002)":{tag:"(0016,1002)",vr:"DS",name:"EmitterColorTemperature",vm:"1",version:"DICOM"},"(0016,1003)":{tag:"(0016,1003)",vr:"CS",name:"ContactMethod",vm:"1",version:"DICOM"},"(0016,1004)":{tag:"(0016,1004)",vr:"CS",name:"ImmersionMedia",vm:"1-n",version:"DICOM"},"(0016,1005)":{tag:"(0016,1005)",vr:"DS",name:"OpticalMagnificationFactor",vm:"1",version:"DICOM"},"(0018,0010)":{tag:"(0018,0010)",vr:"LO",name:"ContrastBolusAgent",vm:"1",version:"DICOM"},"(0018,0012)":{tag:"(0018,0012)",vr:"SQ",name:"ContrastBolusAgentSequence",vm:"1",version:"DICOM"},"(0018,0013)":{tag:"(0018,0013)",vr:"FL",name:"ContrastBolusT1Relaxivity",vm:"1",version:"DICOM"},"(0018,0014)":{tag:"(0018,0014)",vr:"SQ",name:"ContrastBolusAdministrationRouteSequence",vm:"1",version:"DICOM"},"(0018,0015)":{tag:"(0018,0015)",vr:"CS",name:"BodyPartExamined",vm:"1",version:"DICOM"},"(0018,0020)":{tag:"(0018,0020)",vr:"CS",name:"ScanningSequence",vm:"1-n",version:"DICOM"},"(0018,0021)":{tag:"(0018,0021)",vr:"CS",name:"SequenceVariant",vm:"1-n",version:"DICOM"},"(0018,0022)":{tag:"(0018,0022)",vr:"CS",name:"ScanOptions",vm:"1-n",version:"DICOM"},"(0018,0023)":{tag:"(0018,0023)",vr:"CS",name:"MRAcquisitionType",vm:"1",version:"DICOM"},"(0018,0024)":{tag:"(0018,0024)",vr:"SH",name:"SequenceName",vm:"1",version:"DICOM"},"(0018,0025)":{tag:"(0018,0025)",vr:"CS",name:"AngioFlag",vm:"1",version:"DICOM"},"(0018,0026)":{tag:"(0018,0026)",vr:"SQ",name:"InterventionDrugInformationSequence",vm:"1",version:"DICOM"},"(0018,0027)":{tag:"(0018,0027)",vr:"TM",name:"InterventionDrugStopTime",vm:"1",version:"DICOM"},"(0018,0028)":{tag:"(0018,0028)",vr:"DS",name:"InterventionDrugDose",vm:"1",version:"DICOM"},"(0018,0029)":{tag:"(0018,0029)",vr:"SQ",name:"InterventionDrugCodeSequence",vm:"1",version:"DICOM"},"(0018,002A)":{tag:"(0018,002A)",vr:"SQ",name:"AdditionalDrugSequence",vm:"1",version:"DICOM"},"(0018,0031)":{tag:"(0018,0031)",vr:"LO",name:"Radiopharmaceutical",vm:"1",version:"DICOM"},"(0018,0034)":{tag:"(0018,0034)",vr:"LO",name:"InterventionDrugName",vm:"1",version:"DICOM"},"(0018,0035)":{tag:"(0018,0035)",vr:"TM",name:"InterventionDrugStartTime",vm:"1",version:"DICOM"},"(0018,0036)":{tag:"(0018,0036)",vr:"SQ",name:"InterventionSequence",vm:"1",version:"DICOM"},"(0018,0038)":{tag:"(0018,0038)",vr:"CS",name:"InterventionStatus",vm:"1",version:"DICOM"},"(0018,003A)":{tag:"(0018,003A)",vr:"ST",name:"InterventionDescription",vm:"1",version:"DICOM"},"(0018,0040)":{tag:"(0018,0040)",vr:"IS",name:"CineRate",vm:"1",version:"DICOM"},"(0018,0042)":{tag:"(0018,0042)",vr:"CS",name:"InitialCineRunState",vm:"1",version:"DICOM"},"(0018,0050)":{tag:"(0018,0050)",vr:"DS",name:"SliceThickness",vm:"1",version:"DICOM"},"(0018,0060)":{tag:"(0018,0060)",vr:"DS",name:"KVP",vm:"1",version:"DICOM"},"(0018,0070)":{tag:"(0018,0070)",vr:"IS",name:"CountsAccumulated",vm:"1",version:"DICOM"},"(0018,0071)":{tag:"(0018,0071)",vr:"CS",name:"AcquisitionTerminationCondition",vm:"1",version:"DICOM"},"(0018,0072)":{tag:"(0018,0072)",vr:"DS",name:"EffectiveDuration",vm:"1",version:"DICOM"},"(0018,0073)":{tag:"(0018,0073)",vr:"CS",name:"AcquisitionStartCondition",vm:"1",version:"DICOM"},"(0018,0074)":{tag:"(0018,0074)",vr:"IS",name:"AcquisitionStartConditionData",vm:"1",version:"DICOM"},"(0018,0075)":{tag:"(0018,0075)",vr:"IS",name:"AcquisitionTerminationConditionData",vm:"1",version:"DICOM"},"(0018,0080)":{tag:"(0018,0080)",vr:"DS",name:"RepetitionTime",vm:"1",version:"DICOM"},"(0018,0081)":{tag:"(0018,0081)",vr:"DS",name:"EchoTime",vm:"1",version:"DICOM"},"(0018,0082)":{tag:"(0018,0082)",vr:"DS",name:"InversionTime",vm:"1",version:"DICOM"},"(0018,0083)":{tag:"(0018,0083)",vr:"DS",name:"NumberOfAverages",vm:"1",version:"DICOM"},"(0018,0084)":{tag:"(0018,0084)",vr:"DS",name:"ImagingFrequency",vm:"1",version:"DICOM"},"(0018,0085)":{tag:"(0018,0085)",vr:"SH",name:"ImagedNucleus",vm:"1",version:"DICOM"},"(0018,0086)":{tag:"(0018,0086)",vr:"IS",name:"EchoNumbers",vm:"1-n",version:"DICOM"},"(0018,0087)":{tag:"(0018,0087)",vr:"DS",name:"MagneticFieldStrength",vm:"1",version:"DICOM"},"(0018,0088)":{tag:"(0018,0088)",vr:"DS",name:"SpacingBetweenSlices",vm:"1",version:"DICOM"},"(0018,0089)":{tag:"(0018,0089)",vr:"IS",name:"NumberOfPhaseEncodingSteps",vm:"1",version:"DICOM"},"(0018,0090)":{tag:"(0018,0090)",vr:"DS",name:"DataCollectionDiameter",vm:"1",version:"DICOM"},"(0018,0091)":{tag:"(0018,0091)",vr:"IS",name:"EchoTrainLength",vm:"1",version:"DICOM"},"(0018,0093)":{tag:"(0018,0093)",vr:"DS",name:"PercentSampling",vm:"1",version:"DICOM"},"(0018,0094)":{tag:"(0018,0094)",vr:"DS",name:"PercentPhaseFieldOfView",vm:"1",version:"DICOM"},"(0018,0095)":{tag:"(0018,0095)",vr:"DS",name:"PixelBandwidth",vm:"1",version:"DICOM"},"(0018,1000)":{tag:"(0018,1000)",vr:"LO",name:"DeviceSerialNumber",vm:"1",version:"DICOM"},"(0018,1002)":{tag:"(0018,1002)",vr:"UI",name:"DeviceUID",vm:"1",version:"DICOM"},"(0018,1003)":{tag:"(0018,1003)",vr:"LO",name:"DeviceID",vm:"1",version:"DICOM"},"(0018,1004)":{tag:"(0018,1004)",vr:"LO",name:"PlateID",vm:"1",version:"DICOM"},"(0018,1005)":{tag:"(0018,1005)",vr:"LO",name:"GeneratorID",vm:"1",version:"DICOM"},"(0018,1006)":{tag:"(0018,1006)",vr:"LO",name:"GridID",vm:"1",version:"DICOM"},"(0018,1007)":{tag:"(0018,1007)",vr:"LO",name:"CassetteID",vm:"1",version:"DICOM"},"(0018,1008)":{tag:"(0018,1008)",vr:"LO",name:"GantryID",vm:"1",version:"DICOM"},"(0018,1009)":{tag:"(0018,1009)",vr:"UT",name:"UniqueDeviceIdentifier",vm:"1",version:"DICOM"},"(0018,100A)":{tag:"(0018,100A)",vr:"SQ",name:"UDISequence",vm:"1",version:"DICOM"},"(0018,100B)":{tag:"(0018,100B)",vr:"UI",name:"ManufacturerDeviceClassUID",vm:"1-n",version:"DICOM"},"(0018,1010)":{tag:"(0018,1010)",vr:"LO",name:"SecondaryCaptureDeviceID",vm:"1",version:"DICOM"},"(0018,1012)":{tag:"(0018,1012)",vr:"DA",name:"DateOfSecondaryCapture",vm:"1",version:"DICOM"},"(0018,1014)":{tag:"(0018,1014)",vr:"TM",name:"TimeOfSecondaryCapture",vm:"1",version:"DICOM"},"(0018,1016)":{tag:"(0018,1016)",vr:"LO",name:"SecondaryCaptureDeviceManufacturer",vm:"1",version:"DICOM"},"(0018,1018)":{tag:"(0018,1018)",vr:"LO",name:"SecondaryCaptureDeviceManufacturerModelName",vm:"1",version:"DICOM"},"(0018,1019)":{tag:"(0018,1019)",vr:"LO",name:"SecondaryCaptureDeviceSoftwareVersions",vm:"1-n",version:"DICOM"},"(0018,1020)":{tag:"(0018,1020)",vr:"LO",name:"SoftwareVersions",vm:"1-n",version:"DICOM"},"(0018,1022)":{tag:"(0018,1022)",vr:"SH",name:"VideoImageFormatAcquired",vm:"1",version:"DICOM"},"(0018,1023)":{tag:"(0018,1023)",vr:"LO",name:"DigitalImageFormatAcquired",vm:"1",version:"DICOM"},"(0018,1030)":{tag:"(0018,1030)",vr:"LO",name:"ProtocolName",vm:"1",version:"DICOM"},"(0018,1040)":{tag:"(0018,1040)",vr:"LO",name:"ContrastBolusRoute",vm:"1",version:"DICOM"},"(0018,1041)":{tag:"(0018,1041)",vr:"DS",name:"ContrastBolusVolume",vm:"1",version:"DICOM"},"(0018,1042)":{tag:"(0018,1042)",vr:"TM",name:"ContrastBolusStartTime",vm:"1",version:"DICOM"},"(0018,1043)":{tag:"(0018,1043)",vr:"TM",name:"ContrastBolusStopTime",vm:"1",version:"DICOM"},"(0018,1044)":{tag:"(0018,1044)",vr:"DS",name:"ContrastBolusTotalDose",vm:"1",version:"DICOM"},"(0018,1045)":{tag:"(0018,1045)",vr:"IS",name:"SyringeCounts",vm:"1",version:"DICOM"},"(0018,1046)":{tag:"(0018,1046)",vr:"DS",name:"ContrastFlowRate",vm:"1-n",version:"DICOM"},"(0018,1047)":{tag:"(0018,1047)",vr:"DS",name:"ContrastFlowDuration",vm:"1-n",version:"DICOM"},"(0018,1048)":{tag:"(0018,1048)",vr:"CS",name:"ContrastBolusIngredient",vm:"1",version:"DICOM"},"(0018,1049)":{tag:"(0018,1049)",vr:"DS",name:"ContrastBolusIngredientConcentration",vm:"1",version:"DICOM"},"(0018,1050)":{tag:"(0018,1050)",vr:"DS",name:"SpatialResolution",vm:"1",version:"DICOM"},"(0018,1060)":{tag:"(0018,1060)",vr:"DS",name:"TriggerTime",vm:"1",version:"DICOM"},"(0018,1061)":{tag:"(0018,1061)",vr:"LO",name:"TriggerSourceOrType",vm:"1",version:"DICOM"},"(0018,1062)":{tag:"(0018,1062)",vr:"IS",name:"NominalInterval",vm:"1",version:"DICOM"},"(0018,1063)":{tag:"(0018,1063)",vr:"DS",name:"FrameTime",vm:"1",version:"DICOM"},"(0018,1064)":{tag:"(0018,1064)",vr:"LO",name:"CardiacFramingType",vm:"1",version:"DICOM"},"(0018,1065)":{tag:"(0018,1065)",vr:"DS",name:"FrameTimeVector",vm:"1-n",version:"DICOM"},"(0018,1066)":{tag:"(0018,1066)",vr:"DS",name:"FrameDelay",vm:"1",version:"DICOM"},"(0018,1067)":{tag:"(0018,1067)",vr:"DS",name:"ImageTriggerDelay",vm:"1",version:"DICOM"},"(0018,1068)":{tag:"(0018,1068)",vr:"DS",name:"MultiplexGroupTimeOffset",vm:"1",version:"DICOM"},"(0018,1069)":{tag:"(0018,1069)",vr:"DS",name:"TriggerTimeOffset",vm:"1",version:"DICOM"},"(0018,106A)":{tag:"(0018,106A)",vr:"CS",name:"SynchronizationTrigger",vm:"1",version:"DICOM"},"(0018,106C)":{tag:"(0018,106C)",vr:"US",name:"SynchronizationChannel",vm:"2",version:"DICOM"},"(0018,106E)":{tag:"(0018,106E)",vr:"UL",name:"TriggerSamplePosition",vm:"1",version:"DICOM"},"(0018,1070)":{tag:"(0018,1070)",vr:"LO",name:"RadiopharmaceuticalRoute",vm:"1",version:"DICOM"},"(0018,1071)":{tag:"(0018,1071)",vr:"DS",name:"RadiopharmaceuticalVolume",vm:"1",version:"DICOM"},"(0018,1072)":{tag:"(0018,1072)",vr:"TM",name:"RadiopharmaceuticalStartTime",vm:"1",version:"DICOM"},"(0018,1073)":{tag:"(0018,1073)",vr:"TM",name:"RadiopharmaceuticalStopTime",vm:"1",version:"DICOM"},"(0018,1074)":{tag:"(0018,1074)",vr:"DS",name:"RadionuclideTotalDose",vm:"1",version:"DICOM"},"(0018,1075)":{tag:"(0018,1075)",vr:"DS",name:"RadionuclideHalfLife",vm:"1",version:"DICOM"},"(0018,1076)":{tag:"(0018,1076)",vr:"DS",name:"RadionuclidePositronFraction",vm:"1",version:"DICOM"},"(0018,1077)":{tag:"(0018,1077)",vr:"DS",name:"RadiopharmaceuticalSpecificActivity",vm:"1",version:"DICOM"},"(0018,1078)":{tag:"(0018,1078)",vr:"DT",name:"RadiopharmaceuticalStartDateTime",vm:"1",version:"DICOM"},"(0018,1079)":{tag:"(0018,1079)",vr:"DT",name:"RadiopharmaceuticalStopDateTime",vm:"1",version:"DICOM"},"(0018,1080)":{tag:"(0018,1080)",vr:"CS",name:"BeatRejectionFlag",vm:"1",version:"DICOM"},"(0018,1081)":{tag:"(0018,1081)",vr:"IS",name:"LowRRValue",vm:"1",version:"DICOM"},"(0018,1082)":{tag:"(0018,1082)",vr:"IS",name:"HighRRValue",vm:"1",version:"DICOM"},"(0018,1083)":{tag:"(0018,1083)",vr:"IS",name:"IntervalsAcquired",vm:"1",version:"DICOM"},"(0018,1084)":{tag:"(0018,1084)",vr:"IS",name:"IntervalsRejected",vm:"1",version:"DICOM"},"(0018,1085)":{tag:"(0018,1085)",vr:"LO",name:"PVCRejection",vm:"1",version:"DICOM"},"(0018,1086)":{tag:"(0018,1086)",vr:"IS",name:"SkipBeats",vm:"1",version:"DICOM"},"(0018,1088)":{tag:"(0018,1088)",vr:"IS",name:"HeartRate",vm:"1",version:"DICOM"},"(0018,1090)":{tag:"(0018,1090)",vr:"IS",name:"CardiacNumberOfImages",vm:"1",version:"DICOM"},"(0018,1094)":{tag:"(0018,1094)",vr:"IS",name:"TriggerWindow",vm:"1",version:"DICOM"},"(0018,1100)":{tag:"(0018,1100)",vr:"DS",name:"ReconstructionDiameter",vm:"1",version:"DICOM"},"(0018,1110)":{tag:"(0018,1110)",vr:"DS",name:"DistanceSourceToDetector",vm:"1",version:"DICOM"},"(0018,1111)":{tag:"(0018,1111)",vr:"DS",name:"DistanceSourceToPatient",vm:"1",version:"DICOM"},"(0018,1114)":{tag:"(0018,1114)",vr:"DS",name:"EstimatedRadiographicMagnificationFactor",vm:"1",version:"DICOM"},"(0018,1120)":{tag:"(0018,1120)",vr:"DS",name:"GantryDetectorTilt",vm:"1",version:"DICOM"},"(0018,1121)":{tag:"(0018,1121)",vr:"DS",name:"GantryDetectorSlew",vm:"1",version:"DICOM"},"(0018,1130)":{tag:"(0018,1130)",vr:"DS",name:"TableHeight",vm:"1",version:"DICOM"},"(0018,1131)":{tag:"(0018,1131)",vr:"DS",name:"TableTraverse",vm:"1",version:"DICOM"},"(0018,1134)":{tag:"(0018,1134)",vr:"CS",name:"TableMotion",vm:"1",version:"DICOM"},"(0018,1135)":{tag:"(0018,1135)",vr:"DS",name:"TableVerticalIncrement",vm:"1-n",version:"DICOM"},"(0018,1136)":{tag:"(0018,1136)",vr:"DS",name:"TableLateralIncrement",vm:"1-n",version:"DICOM"},"(0018,1137)":{tag:"(0018,1137)",vr:"DS",name:"TableLongitudinalIncrement",vm:"1-n",version:"DICOM"},"(0018,1138)":{tag:"(0018,1138)",vr:"DS",name:"TableAngle",vm:"1",version:"DICOM"},"(0018,113A)":{tag:"(0018,113A)",vr:"CS",name:"TableType",vm:"1",version:"DICOM"},"(0018,1140)":{tag:"(0018,1140)",vr:"CS",name:"RotationDirection",vm:"1",version:"DICOM"},"(0018,1142)":{tag:"(0018,1142)",vr:"DS",name:"RadialPosition",vm:"1-n",version:"DICOM"},"(0018,1143)":{tag:"(0018,1143)",vr:"DS",name:"ScanArc",vm:"1",version:"DICOM"},"(0018,1144)":{tag:"(0018,1144)",vr:"DS",name:"AngularStep",vm:"1",version:"DICOM"},"(0018,1145)":{tag:"(0018,1145)",vr:"DS",name:"CenterOfRotationOffset",vm:"1",version:"DICOM"},"(0018,1147)":{tag:"(0018,1147)",vr:"CS",name:"FieldOfViewShape",vm:"1",version:"DICOM"},"(0018,1149)":{tag:"(0018,1149)",vr:"IS",name:"FieldOfViewDimensions",vm:"1-2",version:"DICOM"},"(0018,1150)":{tag:"(0018,1150)",vr:"IS",name:"ExposureTime",vm:"1",version:"DICOM"},"(0018,1151)":{tag:"(0018,1151)",vr:"IS",name:"XRayTubeCurrent",vm:"1",version:"DICOM"},"(0018,1152)":{tag:"(0018,1152)",vr:"IS",name:"Exposure",vm:"1",version:"DICOM"},"(0018,1153)":{tag:"(0018,1153)",vr:"IS",name:"ExposureInuAs",vm:"1",version:"DICOM"},"(0018,1154)":{tag:"(0018,1154)",vr:"DS",name:"AveragePulseWidth",vm:"1",version:"DICOM"},"(0018,1155)":{tag:"(0018,1155)",vr:"CS",name:"RadiationSetting",vm:"1",version:"DICOM"},"(0018,1156)":{tag:"(0018,1156)",vr:"CS",name:"RectificationType",vm:"1",version:"DICOM"},"(0018,115A)":{tag:"(0018,115A)",vr:"CS",name:"RadiationMode",vm:"1",version:"DICOM"},"(0018,115E)":{tag:"(0018,115E)",vr:"DS",name:"ImageAndFluoroscopyAreaDoseProduct",vm:"1",version:"DICOM"},"(0018,1160)":{tag:"(0018,1160)",vr:"SH",name:"FilterType",vm:"1",version:"DICOM"},"(0018,1161)":{tag:"(0018,1161)",vr:"LO",name:"TypeOfFilters",vm:"1-n",version:"DICOM"},"(0018,1162)":{tag:"(0018,1162)",vr:"DS",name:"IntensifierSize",vm:"1",version:"DICOM"},"(0018,1164)":{tag:"(0018,1164)",vr:"DS",name:"ImagerPixelSpacing",vm:"2",version:"DICOM"},"(0018,1166)":{tag:"(0018,1166)",vr:"CS",name:"Grid",vm:"1-n",version:"DICOM"},"(0018,1170)":{tag:"(0018,1170)",vr:"IS",name:"GeneratorPower",vm:"1",version:"DICOM"},"(0018,1180)":{tag:"(0018,1180)",vr:"SH",name:"CollimatorGridName",vm:"1",version:"DICOM"},"(0018,1181)":{tag:"(0018,1181)",vr:"CS",name:"CollimatorType",vm:"1",version:"DICOM"},"(0018,1182)":{tag:"(0018,1182)",vr:"IS",name:"FocalDistance",vm:"1-2",version:"DICOM"},"(0018,1183)":{tag:"(0018,1183)",vr:"DS",name:"XFocusCenter",vm:"1-2",version:"DICOM"},"(0018,1184)":{tag:"(0018,1184)",vr:"DS",name:"YFocusCenter",vm:"1-2",version:"DICOM"},"(0018,1190)":{tag:"(0018,1190)",vr:"DS",name:"FocalSpots",vm:"1-n",version:"DICOM"},"(0018,1191)":{tag:"(0018,1191)",vr:"CS",name:"AnodeTargetMaterial",vm:"1",version:"DICOM"},"(0018,11A0)":{tag:"(0018,11A0)",vr:"DS",name:"BodyPartThickness",vm:"1",version:"DICOM"},"(0018,11A2)":{tag:"(0018,11A2)",vr:"DS",name:"CompressionForce",vm:"1",version:"DICOM"},"(0018,11A3)":{tag:"(0018,11A3)",vr:"DS",name:"CompressionPressure",vm:"1",version:"DICOM"},"(0018,11A4)":{tag:"(0018,11A4)",vr:"LO",name:"PaddleDescription",vm:"1",version:"DICOM"},"(0018,11A5)":{tag:"(0018,11A5)",vr:"DS",name:"CompressionContactArea",vm:"1",version:"DICOM"},"(0018,11B0)":{tag:"(0018,11B0)",vr:"LO",name:"AcquisitionMode",vm:"1",version:"DICOM"},"(0018,11B1)":{tag:"(0018,11B1)",vr:"LO",name:"DoseModeName",vm:"1",version:"DICOM"},"(0018,11B2)":{tag:"(0018,11B2)",vr:"CS",name:"AcquiredSubtractionMaskFlag",vm:"1",version:"DICOM"},"(0018,11B3)":{tag:"(0018,11B3)",vr:"CS",name:"FluoroscopyPersistenceFlag",vm:"1",version:"DICOM"},"(0018,11B4)":{tag:"(0018,11B4)",vr:"CS",name:"FluoroscopyLastImageHoldPersistenceFlag",vm:"1",version:"DICOM"},"(0018,11B5)":{tag:"(0018,11B5)",vr:"IS",name:"UpperLimitNumberOfPersistentFluoroscopyFrames",vm:"1",version:"DICOM"},"(0018,11B6)":{tag:"(0018,11B6)",vr:"CS",name:"ContrastBolusAutoInjectionTriggerFlag",vm:"1",version:"DICOM"},"(0018,11B7)":{tag:"(0018,11B7)",vr:"FD",name:"ContrastBolusInjectionDelay",vm:"1",version:"DICOM"},"(0018,11B8)":{tag:"(0018,11B8)",vr:"SQ",name:"XAAcquisitionPhaseDetailsSequence",vm:"1",version:"DICOM"},"(0018,11B9)":{tag:"(0018,11B9)",vr:"FD",name:"XAAcquisitionFrameRate",vm:"1",version:"DICOM"},"(0018,11BA)":{tag:"(0018,11BA)",vr:"SQ",name:"XAPlaneDetailsSequence",vm:"1",version:"DICOM"},"(0018,11BB)":{tag:"(0018,11BB)",vr:"LO",name:"AcquisitionFieldOfViewLabel",vm:"1",version:"DICOM"},"(0018,11BC)":{tag:"(0018,11BC)",vr:"SQ",name:"XRayFilterDetailsSequence",vm:"1",version:"DICOM"},"(0018,11BD)":{tag:"(0018,11BD)",vr:"FD",name:"XAAcquisitionDuration",vm:"1",version:"DICOM"},"(0018,11BE)":{tag:"(0018,11BE)",vr:"CS",name:"ReconstructionPipelineType",vm:"1",version:"DICOM"},"(0018,11BF)":{tag:"(0018,11BF)",vr:"SQ",name:"ImageFilterDetailsSequence",vm:"1",version:"DICOM"},"(0018,11C0)":{tag:"(0018,11C0)",vr:"CS",name:"AppliedMaskSubtractionFlag",vm:"1",version:"DICOM"},"(0018,11C1)":{tag:"(0018,11C1)",vr:"SQ",name:"RequestedSeriesDescriptionCodeSequence",vm:"1",version:"DICOM"},"(0018,1200)":{tag:"(0018,1200)",vr:"DA",name:"DateOfLastCalibration",vm:"1-n",version:"DICOM"},"(0018,1201)":{tag:"(0018,1201)",vr:"TM",name:"TimeOfLastCalibration",vm:"1-n",version:"DICOM"},"(0018,1202)":{tag:"(0018,1202)",vr:"DT",name:"DateTimeOfLastCalibration",vm:"1",version:"DICOM"},"(0018,1210)":{tag:"(0018,1210)",vr:"SH",name:"ConvolutionKernel",vm:"1-n",version:"DICOM"},"(0018,1242)":{tag:"(0018,1242)",vr:"IS",name:"ActualFrameDuration",vm:"1",version:"DICOM"},"(0018,1243)":{tag:"(0018,1243)",vr:"IS",name:"CountRate",vm:"1",version:"DICOM"},"(0018,1244)":{tag:"(0018,1244)",vr:"US",name:"PreferredPlaybackSequencing",vm:"1",version:"DICOM"},"(0018,1250)":{tag:"(0018,1250)",vr:"SH",name:"ReceiveCoilName",vm:"1",version:"DICOM"},"(0018,1251)":{tag:"(0018,1251)",vr:"SH",name:"TransmitCoilName",vm:"1",version:"DICOM"},"(0018,1260)":{tag:"(0018,1260)",vr:"SH",name:"PlateType",vm:"1",version:"DICOM"},"(0018,1261)":{tag:"(0018,1261)",vr:"LO",name:"PhosphorType",vm:"1",version:"DICOM"},"(0018,1271)":{tag:"(0018,1271)",vr:"FD",name:"WaterEquivalentDiameter",vm:"1",version:"DICOM"},"(0018,1272)":{tag:"(0018,1272)",vr:"SQ",name:"WaterEquivalentDiameterCalculationMethodCodeSequence",vm:"1",version:"DICOM"},"(0018,1300)":{tag:"(0018,1300)",vr:"DS",name:"ScanVelocity",vm:"1",version:"DICOM"},"(0018,1301)":{tag:"(0018,1301)",vr:"CS",name:"WholeBodyTechnique",vm:"1-n",version:"DICOM"},"(0018,1302)":{tag:"(0018,1302)",vr:"IS",name:"ScanLength",vm:"1",version:"DICOM"},"(0018,1310)":{tag:"(0018,1310)",vr:"US",name:"AcquisitionMatrix",vm:"4",version:"DICOM"},"(0018,1312)":{tag:"(0018,1312)",vr:"CS",name:"InPlanePhaseEncodingDirection",vm:"1",version:"DICOM"},"(0018,1314)":{tag:"(0018,1314)",vr:"DS",name:"FlipAngle",vm:"1",version:"DICOM"},"(0018,1315)":{tag:"(0018,1315)",vr:"CS",name:"VariableFlipAngleFlag",vm:"1",version:"DICOM"},"(0018,1316)":{tag:"(0018,1316)",vr:"DS",name:"SAR",vm:"1",version:"DICOM"},"(0018,1318)":{tag:"(0018,1318)",vr:"DS",name:"dBdt",vm:"1",version:"DICOM"},"(0018,1400)":{tag:"(0018,1400)",vr:"LO",name:"AcquisitionDeviceProcessingDescription",vm:"1",version:"DICOM"},"(0018,1401)":{tag:"(0018,1401)",vr:"LO",name:"AcquisitionDeviceProcessingCode",vm:"1",version:"DICOM"},"(0018,1402)":{tag:"(0018,1402)",vr:"CS",name:"CassetteOrientation",vm:"1",version:"DICOM"},"(0018,1403)":{tag:"(0018,1403)",vr:"CS",name:"CassetteSize",vm:"1",version:"DICOM"},"(0018,1404)":{tag:"(0018,1404)",vr:"US",name:"ExposuresOnPlate",vm:"1",version:"DICOM"},"(0018,1405)":{tag:"(0018,1405)",vr:"IS",name:"RelativeXRayExposure",vm:"1",version:"DICOM"},"(0018,1411)":{tag:"(0018,1411)",vr:"DS",name:"ExposureIndex",vm:"1",version:"DICOM"},"(0018,1412)":{tag:"(0018,1412)",vr:"DS",name:"TargetExposureIndex",vm:"1",version:"DICOM"},"(0018,1413)":{tag:"(0018,1413)",vr:"DS",name:"DeviationIndex",vm:"1",version:"DICOM"},"(0018,1450)":{tag:"(0018,1450)",vr:"DS",name:"ColumnAngulation",vm:"1",version:"DICOM"},"(0018,1460)":{tag:"(0018,1460)",vr:"DS",name:"TomoLayerHeight",vm:"1",version:"DICOM"},"(0018,1470)":{tag:"(0018,1470)",vr:"DS",name:"TomoAngle",vm:"1",version:"DICOM"},"(0018,1480)":{tag:"(0018,1480)",vr:"DS",name:"TomoTime",vm:"1",version:"DICOM"},"(0018,1490)":{tag:"(0018,1490)",vr:"CS",name:"TomoType",vm:"1",version:"DICOM"},"(0018,1491)":{tag:"(0018,1491)",vr:"CS",name:"TomoClass",vm:"1",version:"DICOM"},"(0018,1495)":{tag:"(0018,1495)",vr:"IS",name:"NumberOfTomosynthesisSourceImages",vm:"1",version:"DICOM"},"(0018,1500)":{tag:"(0018,1500)",vr:"CS",name:"PositionerMotion",vm:"1",version:"DICOM"},"(0018,1508)":{tag:"(0018,1508)",vr:"CS",name:"PositionerType",vm:"1",version:"DICOM"},"(0018,1510)":{tag:"(0018,1510)",vr:"DS",name:"PositionerPrimaryAngle",vm:"1",version:"DICOM"},"(0018,1511)":{tag:"(0018,1511)",vr:"DS",name:"PositionerSecondaryAngle",vm:"1",version:"DICOM"},"(0018,1520)":{tag:"(0018,1520)",vr:"DS",name:"PositionerPrimaryAngleIncrement",vm:"1-n",version:"DICOM"},"(0018,1521)":{tag:"(0018,1521)",vr:"DS",name:"PositionerSecondaryAngleIncrement",vm:"1-n",version:"DICOM"},"(0018,1530)":{tag:"(0018,1530)",vr:"DS",name:"DetectorPrimaryAngle",vm:"1",version:"DICOM"},"(0018,1531)":{tag:"(0018,1531)",vr:"DS",name:"DetectorSecondaryAngle",vm:"1",version:"DICOM"},"(0018,1600)":{tag:"(0018,1600)",vr:"CS",name:"ShutterShape",vm:"1-3",version:"DICOM"},"(0018,1602)":{tag:"(0018,1602)",vr:"IS",name:"ShutterLeftVerticalEdge",vm:"1",version:"DICOM"},"(0018,1604)":{tag:"(0018,1604)",vr:"IS",name:"ShutterRightVerticalEdge",vm:"1",version:"DICOM"},"(0018,1606)":{tag:"(0018,1606)",vr:"IS",name:"ShutterUpperHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1608)":{tag:"(0018,1608)",vr:"IS",name:"ShutterLowerHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1610)":{tag:"(0018,1610)",vr:"IS",name:"CenterOfCircularShutter",vm:"2",version:"DICOM"},"(0018,1612)":{tag:"(0018,1612)",vr:"IS",name:"RadiusOfCircularShutter",vm:"1",version:"DICOM"},"(0018,1620)":{tag:"(0018,1620)",vr:"IS",name:"VerticesOfThePolygonalShutter",vm:"2-2n",version:"DICOM"},"(0018,1622)":{tag:"(0018,1622)",vr:"US",name:"ShutterPresentationValue",vm:"1",version:"DICOM"},"(0018,1623)":{tag:"(0018,1623)",vr:"US",name:"ShutterOverlayGroup",vm:"1",version:"DICOM"},"(0018,1624)":{tag:"(0018,1624)",vr:"US",name:"ShutterPresentationColorCIELabValue",vm:"3",version:"DICOM"},"(0018,1630)":{tag:"(0018,1630)",vr:"CS",name:"OutlineShapeType",vm:"1",version:"DICOM"},"(0018,1631)":{tag:"(0018,1631)",vr:"FD",name:"OutlineLeftVerticalEdge",vm:"1",version:"DICOM"},"(0018,1632)":{tag:"(0018,1632)",vr:"FD",name:"OutlineRightVerticalEdge",vm:"1",version:"DICOM"},"(0018,1633)":{tag:"(0018,1633)",vr:"FD",name:"OutlineUpperHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1634)":{tag:"(0018,1634)",vr:"FD",name:"OutlineLowerHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1635)":{tag:"(0018,1635)",vr:"FD",name:"CenterOfCircularOutline",vm:"2",version:"DICOM"},"(0018,1636)":{tag:"(0018,1636)",vr:"FD",name:"DiameterOfCircularOutline",vm:"1",version:"DICOM"},"(0018,1637)":{tag:"(0018,1637)",vr:"UL",name:"NumberOfPolygonalVertices",vm:"1",version:"DICOM"},"(0018,1638)":{tag:"(0018,1638)",vr:"OF",name:"VerticesOfThePolygonalOutline",vm:"1",version:"DICOM"},"(0018,1700)":{tag:"(0018,1700)",vr:"CS",name:"CollimatorShape",vm:"1-3",version:"DICOM"},"(0018,1702)":{tag:"(0018,1702)",vr:"IS",name:"CollimatorLeftVerticalEdge",vm:"1",version:"DICOM"},"(0018,1704)":{tag:"(0018,1704)",vr:"IS",name:"CollimatorRightVerticalEdge",vm:"1",version:"DICOM"},"(0018,1706)":{tag:"(0018,1706)",vr:"IS",name:"CollimatorUpperHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1708)":{tag:"(0018,1708)",vr:"IS",name:"CollimatorLowerHorizontalEdge",vm:"1",version:"DICOM"},"(0018,1710)":{tag:"(0018,1710)",vr:"IS",name:"CenterOfCircularCollimator",vm:"2",version:"DICOM"},"(0018,1712)":{tag:"(0018,1712)",vr:"IS",name:"RadiusOfCircularCollimator",vm:"1",version:"DICOM"},"(0018,1720)":{tag:"(0018,1720)",vr:"IS",name:"VerticesOfThePolygonalCollimator",vm:"2-2n",version:"DICOM"},"(0018,1800)":{tag:"(0018,1800)",vr:"CS",name:"AcquisitionTimeSynchronized",vm:"1",version:"DICOM"},"(0018,1801)":{tag:"(0018,1801)",vr:"SH",name:"TimeSource",vm:"1",version:"DICOM"},"(0018,1802)":{tag:"(0018,1802)",vr:"CS",name:"TimeDistributionProtocol",vm:"1",version:"DICOM"},"(0018,1803)":{tag:"(0018,1803)",vr:"LO",name:"NTPSourceAddress",vm:"1",version:"DICOM"},"(0018,2001)":{tag:"(0018,2001)",vr:"IS",name:"PageNumberVector",vm:"1-n",version:"DICOM"},"(0018,2002)":{tag:"(0018,2002)",vr:"SH",name:"FrameLabelVector",vm:"1-n",version:"DICOM"},"(0018,2003)":{tag:"(0018,2003)",vr:"DS",name:"FramePrimaryAngleVector",vm:"1-n",version:"DICOM"},"(0018,2004)":{tag:"(0018,2004)",vr:"DS",name:"FrameSecondaryAngleVector",vm:"1-n",version:"DICOM"},"(0018,2005)":{tag:"(0018,2005)",vr:"DS",name:"SliceLocationVector",vm:"1-n",version:"DICOM"},"(0018,2006)":{tag:"(0018,2006)",vr:"SH",name:"DisplayWindowLabelVector",vm:"1-n",version:"DICOM"},"(0018,2010)":{tag:"(0018,2010)",vr:"DS",name:"NominalScannedPixelSpacing",vm:"2",version:"DICOM"},"(0018,2020)":{tag:"(0018,2020)",vr:"CS",name:"DigitizingDeviceTransportDirection",vm:"1",version:"DICOM"},"(0018,2030)":{tag:"(0018,2030)",vr:"DS",name:"RotationOfScannedFilm",vm:"1",version:"DICOM"},"(0018,2041)":{tag:"(0018,2041)",vr:"SQ",name:"BiopsyTargetSequence",vm:"1",version:"DICOM"},"(0018,2042)":{tag:"(0018,2042)",vr:"UI",name:"TargetUID",vm:"1",version:"DICOM"},"(0018,2043)":{tag:"(0018,2043)",vr:"FL",name:"LocalizingCursorPosition",vm:"2",version:"DICOM"},"(0018,2044)":{tag:"(0018,2044)",vr:"FL",name:"CalculatedTargetPosition",vm:"3",version:"DICOM"},"(0018,2045)":{tag:"(0018,2045)",vr:"SH",name:"TargetLabel",vm:"1",version:"DICOM"},"(0018,2046)":{tag:"(0018,2046)",vr:"FL",name:"DisplayedZValue",vm:"1",version:"DICOM"},"(0018,3100)":{tag:"(0018,3100)",vr:"CS",name:"IVUSAcquisition",vm:"1",version:"DICOM"},"(0018,3101)":{tag:"(0018,3101)",vr:"DS",name:"IVUSPullbackRate",vm:"1",version:"DICOM"},"(0018,3102)":{tag:"(0018,3102)",vr:"DS",name:"IVUSGatedRate",vm:"1",version:"DICOM"},"(0018,3103)":{tag:"(0018,3103)",vr:"IS",name:"IVUSPullbackStartFrameNumber",vm:"1",version:"DICOM"},"(0018,3104)":{tag:"(0018,3104)",vr:"IS",name:"IVUSPullbackStopFrameNumber",vm:"1",version:"DICOM"},"(0018,3105)":{tag:"(0018,3105)",vr:"IS",name:"LesionNumber",vm:"1-n",version:"DICOM"},"(0018,5000)":{tag:"(0018,5000)",vr:"SH",name:"OutputPower",vm:"1-n",version:"DICOM"},"(0018,5010)":{tag:"(0018,5010)",vr:"LO",name:"TransducerData",vm:"1-n",version:"DICOM"},"(0018,5011)":{tag:"(0018,5011)",vr:"SQ",name:"TransducerIdentificationSequence",vm:"1",version:"DICOM"},"(0018,5012)":{tag:"(0018,5012)",vr:"DS",name:"FocusDepth",vm:"1",version:"DICOM"},"(0018,5020)":{tag:"(0018,5020)",vr:"LO",name:"ProcessingFunction",vm:"1",version:"DICOM"},"(0018,5022)":{tag:"(0018,5022)",vr:"DS",name:"MechanicalIndex",vm:"1",version:"DICOM"},"(0018,5024)":{tag:"(0018,5024)",vr:"DS",name:"BoneThermalIndex",vm:"1",version:"DICOM"},"(0018,5026)":{tag:"(0018,5026)",vr:"DS",name:"CranialThermalIndex",vm:"1",version:"DICOM"},"(0018,5027)":{tag:"(0018,5027)",vr:"DS",name:"SoftTissueThermalIndex",vm:"1",version:"DICOM"},"(0018,5028)":{tag:"(0018,5028)",vr:"DS",name:"SoftTissueFocusThermalIndex",vm:"1",version:"DICOM"},"(0018,5029)":{tag:"(0018,5029)",vr:"DS",name:"SoftTissueSurfaceThermalIndex",vm:"1",version:"DICOM"},"(0018,5050)":{tag:"(0018,5050)",vr:"IS",name:"DepthOfScanField",vm:"1",version:"DICOM"},"(0018,5100)":{tag:"(0018,5100)",vr:"CS",name:"PatientPosition",vm:"1",version:"DICOM"},"(0018,5101)":{tag:"(0018,5101)",vr:"CS",name:"ViewPosition",vm:"1",version:"DICOM"},"(0018,5104)":{tag:"(0018,5104)",vr:"SQ",name:"ProjectionEponymousNameCodeSequence",vm:"1",version:"DICOM"},"(0018,6000)":{tag:"(0018,6000)",vr:"DS",name:"Sensitivity",vm:"1",version:"DICOM"},"(0018,6011)":{tag:"(0018,6011)",vr:"SQ",name:"SequenceOfUltrasoundRegions",vm:"1",version:"DICOM"},"(0018,6012)":{tag:"(0018,6012)",vr:"US",name:"RegionSpatialFormat",vm:"1",version:"DICOM"},"(0018,6014)":{tag:"(0018,6014)",vr:"US",name:"RegionDataType",vm:"1",version:"DICOM"},"(0018,6016)":{tag:"(0018,6016)",vr:"UL",name:"RegionFlags",vm:"1",version:"DICOM"},"(0018,6018)":{tag:"(0018,6018)",vr:"UL",name:"RegionLocationMinX0",vm:"1",version:"DICOM"},"(0018,601A)":{tag:"(0018,601A)",vr:"UL",name:"RegionLocationMinY0",vm:"1",version:"DICOM"},"(0018,601C)":{tag:"(0018,601C)",vr:"UL",name:"RegionLocationMaxX1",vm:"1",version:"DICOM"},"(0018,601E)":{tag:"(0018,601E)",vr:"UL",name:"RegionLocationMaxY1",vm:"1",version:"DICOM"},"(0018,6020)":{tag:"(0018,6020)",vr:"SL",name:"ReferencePixelX0",vm:"1",version:"DICOM"},"(0018,6022)":{tag:"(0018,6022)",vr:"SL",name:"ReferencePixelY0",vm:"1",version:"DICOM"},"(0018,6024)":{tag:"(0018,6024)",vr:"US",name:"PhysicalUnitsXDirection",vm:"1",version:"DICOM"},"(0018,6026)":{tag:"(0018,6026)",vr:"US",name:"PhysicalUnitsYDirection",vm:"1",version:"DICOM"},"(0018,6028)":{tag:"(0018,6028)",vr:"FD",name:"ReferencePixelPhysicalValueX",vm:"1",version:"DICOM"},"(0018,602A)":{tag:"(0018,602A)",vr:"FD",name:"ReferencePixelPhysicalValueY",vm:"1",version:"DICOM"},"(0018,602C)":{tag:"(0018,602C)",vr:"FD",name:"PhysicalDeltaX",vm:"1",version:"DICOM"},"(0018,602E)":{tag:"(0018,602E)",vr:"FD",name:"PhysicalDeltaY",vm:"1",version:"DICOM"},"(0018,6030)":{tag:"(0018,6030)",vr:"UL",name:"TransducerFrequency",vm:"1",version:"DICOM"},"(0018,6031)":{tag:"(0018,6031)",vr:"CS",name:"TransducerType",vm:"1",version:"DICOM"},"(0018,6032)":{tag:"(0018,6032)",vr:"UL",name:"PulseRepetitionFrequency",vm:"1",version:"DICOM"},"(0018,6034)":{tag:"(0018,6034)",vr:"FD",name:"DopplerCorrectionAngle",vm:"1",version:"DICOM"},"(0018,6036)":{tag:"(0018,6036)",vr:"FD",name:"SteeringAngle",vm:"1",version:"DICOM"},"(0018,6039)":{tag:"(0018,6039)",vr:"SL",name:"DopplerSampleVolumeXPosition",vm:"1",version:"DICOM"},"(0018,603B)":{tag:"(0018,603B)",vr:"SL",name:"DopplerSampleVolumeYPosition",vm:"1",version:"DICOM"},"(0018,603D)":{tag:"(0018,603D)",vr:"SL",name:"TMLinePositionX0",vm:"1",version:"DICOM"},"(0018,603F)":{tag:"(0018,603F)",vr:"SL",name:"TMLinePositionY0",vm:"1",version:"DICOM"},"(0018,6041)":{tag:"(0018,6041)",vr:"SL",name:"TMLinePositionX1",vm:"1",version:"DICOM"},"(0018,6043)":{tag:"(0018,6043)",vr:"SL",name:"TMLinePositionY1",vm:"1",version:"DICOM"},"(0018,6044)":{tag:"(0018,6044)",vr:"US",name:"PixelComponentOrganization",vm:"1",version:"DICOM"},"(0018,6046)":{tag:"(0018,6046)",vr:"UL",name:"PixelComponentMask",vm:"1",version:"DICOM"},"(0018,6048)":{tag:"(0018,6048)",vr:"UL",name:"PixelComponentRangeStart",vm:"1",version:"DICOM"},"(0018,604A)":{tag:"(0018,604A)",vr:"UL",name:"PixelComponentRangeStop",vm:"1",version:"DICOM"},"(0018,604C)":{tag:"(0018,604C)",vr:"US",name:"PixelComponentPhysicalUnits",vm:"1",version:"DICOM"},"(0018,604E)":{tag:"(0018,604E)",vr:"US",name:"PixelComponentDataType",vm:"1",version:"DICOM"},"(0018,6050)":{tag:"(0018,6050)",vr:"UL",name:"NumberOfTableBreakPoints",vm:"1",version:"DICOM"},"(0018,6052)":{tag:"(0018,6052)",vr:"UL",name:"TableOfXBreakPoints",vm:"1-n",version:"DICOM"},"(0018,6054)":{tag:"(0018,6054)",vr:"FD",name:"TableOfYBreakPoints",vm:"1-n",version:"DICOM"},"(0018,6056)":{tag:"(0018,6056)",vr:"UL",name:"NumberOfTableEntries",vm:"1",version:"DICOM"},"(0018,6058)":{tag:"(0018,6058)",vr:"UL",name:"TableOfPixelValues",vm:"1-n",version:"DICOM"},"(0018,605A)":{tag:"(0018,605A)",vr:"FL",name:"TableOfParameterValues",vm:"1-n",version:"DICOM"},"(0018,6060)":{tag:"(0018,6060)",vr:"FL",name:"RWaveTimeVector",vm:"1-n",version:"DICOM"},"(0018,6070)":{tag:"(0018,6070)",vr:"US",name:"ActiveImageAreaOverlayGroup",vm:"1",version:"DICOM"},"(0018,7000)":{tag:"(0018,7000)",vr:"CS",name:"DetectorConditionsNominalFlag",vm:"1",version:"DICOM"},"(0018,7001)":{tag:"(0018,7001)",vr:"DS",name:"DetectorTemperature",vm:"1",version:"DICOM"},"(0018,7004)":{tag:"(0018,7004)",vr:"CS",name:"DetectorType",vm:"1",version:"DICOM"},"(0018,7005)":{tag:"(0018,7005)",vr:"CS",name:"DetectorConfiguration",vm:"1",version:"DICOM"},"(0018,7006)":{tag:"(0018,7006)",vr:"LT",name:"DetectorDescription",vm:"1",version:"DICOM"},"(0018,7008)":{tag:"(0018,7008)",vr:"LT",name:"DetectorMode",vm:"1",version:"DICOM"},"(0018,700A)":{tag:"(0018,700A)",vr:"SH",name:"DetectorID",vm:"1",version:"DICOM"},"(0018,700C)":{tag:"(0018,700C)",vr:"DA",name:"DateOfLastDetectorCalibration",vm:"1",version:"DICOM"},"(0018,700E)":{tag:"(0018,700E)",vr:"TM",name:"TimeOfLastDetectorCalibration",vm:"1",version:"DICOM"},"(0018,7010)":{tag:"(0018,7010)",vr:"IS",name:"ExposuresOnDetectorSinceLastCalibration",vm:"1",version:"DICOM"},"(0018,7011)":{tag:"(0018,7011)",vr:"IS",name:"ExposuresOnDetectorSinceManufactured",vm:"1",version:"DICOM"},"(0018,7012)":{tag:"(0018,7012)",vr:"DS",name:"DetectorTimeSinceLastExposure",vm:"1",version:"DICOM"},"(0018,7014)":{tag:"(0018,7014)",vr:"DS",name:"DetectorActiveTime",vm:"1",version:"DICOM"},"(0018,7016)":{tag:"(0018,7016)",vr:"DS",name:"DetectorActivationOffsetFromExposure",vm:"1",version:"DICOM"},"(0018,701A)":{tag:"(0018,701A)",vr:"DS",name:"DetectorBinning",vm:"2",version:"DICOM"},"(0018,7020)":{tag:"(0018,7020)",vr:"DS",name:"DetectorElementPhysicalSize",vm:"2",version:"DICOM"},"(0018,7022)":{tag:"(0018,7022)",vr:"DS",name:"DetectorElementSpacing",vm:"2",version:"DICOM"},"(0018,7024)":{tag:"(0018,7024)",vr:"CS",name:"DetectorActiveShape",vm:"1",version:"DICOM"},"(0018,7026)":{tag:"(0018,7026)",vr:"DS",name:"DetectorActiveDimensions",vm:"1-2",version:"DICOM"},"(0018,7028)":{tag:"(0018,7028)",vr:"DS",name:"DetectorActiveOrigin",vm:"2",version:"DICOM"},"(0018,702A)":{tag:"(0018,702A)",vr:"LO",name:"DetectorManufacturerName",vm:"1",version:"DICOM"},"(0018,702B)":{tag:"(0018,702B)",vr:"LO",name:"DetectorManufacturerModelName",vm:"1",version:"DICOM"},"(0018,7030)":{tag:"(0018,7030)",vr:"DS",name:"FieldOfViewOrigin",vm:"2",version:"DICOM"},"(0018,7032)":{tag:"(0018,7032)",vr:"DS",name:"FieldOfViewRotation",vm:"1",version:"DICOM"},"(0018,7034)":{tag:"(0018,7034)",vr:"CS",name:"FieldOfViewHorizontalFlip",vm:"1",version:"DICOM"},"(0018,7036)":{tag:"(0018,7036)",vr:"FL",name:"PixelDataAreaOriginRelativeToFOV",vm:"2",version:"DICOM"},"(0018,7038)":{tag:"(0018,7038)",vr:"FL",name:"PixelDataAreaRotationAngleRelativeToFOV",vm:"1",version:"DICOM"},"(0018,7040)":{tag:"(0018,7040)",vr:"LT",name:"GridAbsorbingMaterial",vm:"1",version:"DICOM"},"(0018,7041)":{tag:"(0018,7041)",vr:"LT",name:"GridSpacingMaterial",vm:"1",version:"DICOM"},"(0018,7042)":{tag:"(0018,7042)",vr:"DS",name:"GridThickness",vm:"1",version:"DICOM"},"(0018,7044)":{tag:"(0018,7044)",vr:"DS",name:"GridPitch",vm:"1",version:"DICOM"},"(0018,7046)":{tag:"(0018,7046)",vr:"IS",name:"GridAspectRatio",vm:"2",version:"DICOM"},"(0018,7048)":{tag:"(0018,7048)",vr:"DS",name:"GridPeriod",vm:"1",version:"DICOM"},"(0018,704C)":{tag:"(0018,704C)",vr:"DS",name:"GridFocalDistance",vm:"1",version:"DICOM"},"(0018,7050)":{tag:"(0018,7050)",vr:"CS",name:"FilterMaterial",vm:"1-n",version:"DICOM"},"(0018,7052)":{tag:"(0018,7052)",vr:"DS",name:"FilterThicknessMinimum",vm:"1-n",version:"DICOM"},"(0018,7054)":{tag:"(0018,7054)",vr:"DS",name:"FilterThicknessMaximum",vm:"1-n",version:"DICOM"},"(0018,7056)":{tag:"(0018,7056)",vr:"FL",name:"FilterBeamPathLengthMinimum",vm:"1-n",version:"DICOM"},"(0018,7058)":{tag:"(0018,7058)",vr:"FL",name:"FilterBeamPathLengthMaximum",vm:"1-n",version:"DICOM"},"(0018,7060)":{tag:"(0018,7060)",vr:"CS",name:"ExposureControlMode",vm:"1",version:"DICOM"},"(0018,7062)":{tag:"(0018,7062)",vr:"LT",name:"ExposureControlModeDescription",vm:"1",version:"DICOM"},"(0018,7064)":{tag:"(0018,7064)",vr:"CS",name:"ExposureStatus",vm:"1",version:"DICOM"},"(0018,7065)":{tag:"(0018,7065)",vr:"DS",name:"PhototimerSetting",vm:"1",version:"DICOM"},"(0018,8150)":{tag:"(0018,8150)",vr:"DS",name:"ExposureTimeInuS",vm:"1",version:"DICOM"},"(0018,8151)":{tag:"(0018,8151)",vr:"DS",name:"XRayTubeCurrentInuA",vm:"1",version:"DICOM"},"(0018,9004)":{tag:"(0018,9004)",vr:"CS",name:"ContentQualification",vm:"1",version:"DICOM"},"(0018,9005)":{tag:"(0018,9005)",vr:"SH",name:"PulseSequenceName",vm:"1",version:"DICOM"},"(0018,9006)":{tag:"(0018,9006)",vr:"SQ",name:"MRImagingModifierSequence",vm:"1",version:"DICOM"},"(0018,9008)":{tag:"(0018,9008)",vr:"CS",name:"EchoPulseSequence",vm:"1",version:"DICOM"},"(0018,9009)":{tag:"(0018,9009)",vr:"CS",name:"InversionRecovery",vm:"1",version:"DICOM"},"(0018,9010)":{tag:"(0018,9010)",vr:"CS",name:"FlowCompensation",vm:"1",version:"DICOM"},"(0018,9011)":{tag:"(0018,9011)",vr:"CS",name:"MultipleSpinEcho",vm:"1",version:"DICOM"},"(0018,9012)":{tag:"(0018,9012)",vr:"CS",name:"MultiPlanarExcitation",vm:"1",version:"DICOM"},"(0018,9014)":{tag:"(0018,9014)",vr:"CS",name:"PhaseContrast",vm:"1",version:"DICOM"},"(0018,9015)":{tag:"(0018,9015)",vr:"CS",name:"TimeOfFlightContrast",vm:"1",version:"DICOM"},"(0018,9016)":{tag:"(0018,9016)",vr:"CS",name:"Spoiling",vm:"1",version:"DICOM"},"(0018,9017)":{tag:"(0018,9017)",vr:"CS",name:"SteadyStatePulseSequence",vm:"1",version:"DICOM"},"(0018,9018)":{tag:"(0018,9018)",vr:"CS",name:"EchoPlanarPulseSequence",vm:"1",version:"DICOM"},"(0018,9019)":{tag:"(0018,9019)",vr:"FD",name:"TagAngleFirstAxis",vm:"1",version:"DICOM"},"(0018,9020)":{tag:"(0018,9020)",vr:"CS",name:"MagnetizationTransfer",vm:"1",version:"DICOM"},"(0018,9021)":{tag:"(0018,9021)",vr:"CS",name:"T2Preparation",vm:"1",version:"DICOM"},"(0018,9022)":{tag:"(0018,9022)",vr:"CS",name:"BloodSignalNulling",vm:"1",version:"DICOM"},"(0018,9024)":{tag:"(0018,9024)",vr:"CS",name:"SaturationRecovery",vm:"1",version:"DICOM"},"(0018,9025)":{tag:"(0018,9025)",vr:"CS",name:"SpectrallySelectedSuppression",vm:"1",version:"DICOM"},"(0018,9026)":{tag:"(0018,9026)",vr:"CS",name:"SpectrallySelectedExcitation",vm:"1",version:"DICOM"},"(0018,9027)":{tag:"(0018,9027)",vr:"CS",name:"SpatialPresaturation",vm:"1",version:"DICOM"},"(0018,9028)":{tag:"(0018,9028)",vr:"CS",name:"Tagging",vm:"1",version:"DICOM"},"(0018,9029)":{tag:"(0018,9029)",vr:"CS",name:"OversamplingPhase",vm:"1",version:"DICOM"},"(0018,9030)":{tag:"(0018,9030)",vr:"FD",name:"TagSpacingFirstDimension",vm:"1",version:"DICOM"},"(0018,9032)":{tag:"(0018,9032)",vr:"CS",name:"GeometryOfKSpaceTraversal",vm:"1",version:"DICOM"},"(0018,9033)":{tag:"(0018,9033)",vr:"CS",name:"SegmentedKSpaceTraversal",vm:"1",version:"DICOM"},"(0018,9034)":{tag:"(0018,9034)",vr:"CS",name:"RectilinearPhaseEncodeReordering",vm:"1",version:"DICOM"},"(0018,9035)":{tag:"(0018,9035)",vr:"FD",name:"TagThickness",vm:"1",version:"DICOM"},"(0018,9036)":{tag:"(0018,9036)",vr:"CS",name:"PartialFourierDirection",vm:"1",version:"DICOM"},"(0018,9037)":{tag:"(0018,9037)",vr:"CS",name:"CardiacSynchronizationTechnique",vm:"1",version:"DICOM"},"(0018,9041)":{tag:"(0018,9041)",vr:"LO",name:"ReceiveCoilManufacturerName",vm:"1",version:"DICOM"},"(0018,9042)":{tag:"(0018,9042)",vr:"SQ",name:"MRReceiveCoilSequence",vm:"1",version:"DICOM"},"(0018,9043)":{tag:"(0018,9043)",vr:"CS",name:"ReceiveCoilType",vm:"1",version:"DICOM"},"(0018,9044)":{tag:"(0018,9044)",vr:"CS",name:"QuadratureReceiveCoil",vm:"1",version:"DICOM"},"(0018,9045)":{tag:"(0018,9045)",vr:"SQ",name:"MultiCoilDefinitionSequence",vm:"1",version:"DICOM"},"(0018,9046)":{tag:"(0018,9046)",vr:"LO",name:"MultiCoilConfiguration",vm:"1",version:"DICOM"},"(0018,9047)":{tag:"(0018,9047)",vr:"SH",name:"MultiCoilElementName",vm:"1",version:"DICOM"},"(0018,9048)":{tag:"(0018,9048)",vr:"CS",name:"MultiCoilElementUsed",vm:"1",version:"DICOM"},"(0018,9049)":{tag:"(0018,9049)",vr:"SQ",name:"MRTransmitCoilSequence",vm:"1",version:"DICOM"},"(0018,9050)":{tag:"(0018,9050)",vr:"LO",name:"TransmitCoilManufacturerName",vm:"1",version:"DICOM"},"(0018,9051)":{tag:"(0018,9051)",vr:"CS",name:"TransmitCoilType",vm:"1",version:"DICOM"},"(0018,9052)":{tag:"(0018,9052)",vr:"FD",name:"SpectralWidth",vm:"1-2",version:"DICOM"},"(0018,9053)":{tag:"(0018,9053)",vr:"FD",name:"ChemicalShiftReference",vm:"1-2",version:"DICOM"},"(0018,9054)":{tag:"(0018,9054)",vr:"CS",name:"VolumeLocalizationTechnique",vm:"1",version:"DICOM"},"(0018,9058)":{tag:"(0018,9058)",vr:"US",name:"MRAcquisitionFrequencyEncodingSteps",vm:"1",version:"DICOM"},"(0018,9059)":{tag:"(0018,9059)",vr:"CS",name:"Decoupling",vm:"1",version:"DICOM"},"(0018,9060)":{tag:"(0018,9060)",vr:"CS",name:"DecoupledNucleus",vm:"1-2",version:"DICOM"},"(0018,9061)":{tag:"(0018,9061)",vr:"FD",name:"DecouplingFrequency",vm:"1-2",version:"DICOM"},"(0018,9062)":{tag:"(0018,9062)",vr:"CS",name:"DecouplingMethod",vm:"1",version:"DICOM"},"(0018,9063)":{tag:"(0018,9063)",vr:"FD",name:"DecouplingChemicalShiftReference",vm:"1-2",version:"DICOM"},"(0018,9064)":{tag:"(0018,9064)",vr:"CS",name:"KSpaceFiltering",vm:"1",version:"DICOM"},"(0018,9065)":{tag:"(0018,9065)",vr:"CS",name:"TimeDomainFiltering",vm:"1-2",version:"DICOM"},"(0018,9066)":{tag:"(0018,9066)",vr:"US",name:"NumberOfZeroFills",vm:"1-2",version:"DICOM"},"(0018,9067)":{tag:"(0018,9067)",vr:"CS",name:"BaselineCorrection",vm:"1",version:"DICOM"},"(0018,9069)":{tag:"(0018,9069)",vr:"FD",name:"ParallelReductionFactorInPlane",vm:"1",version:"DICOM"},"(0018,9070)":{tag:"(0018,9070)",vr:"FD",name:"CardiacRRIntervalSpecified",vm:"1",version:"DICOM"},"(0018,9073)":{tag:"(0018,9073)",vr:"FD",name:"AcquisitionDuration",vm:"1",version:"DICOM"},"(0018,9074)":{tag:"(0018,9074)",vr:"DT",name:"FrameAcquisitionDateTime",vm:"1",version:"DICOM"},"(0018,9075)":{tag:"(0018,9075)",vr:"CS",name:"DiffusionDirectionality",vm:"1",version:"DICOM"},"(0018,9076)":{tag:"(0018,9076)",vr:"SQ",name:"DiffusionGradientDirectionSequence",vm:"1",version:"DICOM"},"(0018,9077)":{tag:"(0018,9077)",vr:"CS",name:"ParallelAcquisition",vm:"1",version:"DICOM"},"(0018,9078)":{tag:"(0018,9078)",vr:"CS",name:"ParallelAcquisitionTechnique",vm:"1",version:"DICOM"},"(0018,9079)":{tag:"(0018,9079)",vr:"FD",name:"InversionTimes",vm:"1-n",version:"DICOM"},"(0018,9080)":{tag:"(0018,9080)",vr:"ST",name:"MetaboliteMapDescription",vm:"1",version:"DICOM"},"(0018,9081)":{tag:"(0018,9081)",vr:"CS",name:"PartialFourier",vm:"1",version:"DICOM"},"(0018,9082)":{tag:"(0018,9082)",vr:"FD",name:"EffectiveEchoTime",vm:"1",version:"DICOM"},"(0018,9083)":{tag:"(0018,9083)",vr:"SQ",name:"MetaboliteMapCodeSequence",vm:"1",version:"DICOM"},"(0018,9084)":{tag:"(0018,9084)",vr:"SQ",name:"ChemicalShiftSequence",vm:"1",version:"DICOM"},"(0018,9085)":{tag:"(0018,9085)",vr:"CS",name:"CardiacSignalSource",vm:"1",version:"DICOM"},"(0018,9087)":{tag:"(0018,9087)",vr:"FD",name:"DiffusionBValue",vm:"1",version:"DICOM"},"(0018,9089)":{tag:"(0018,9089)",vr:"FD",name:"DiffusionGradientOrientation",vm:"3",version:"DICOM"},"(0018,9090)":{tag:"(0018,9090)",vr:"FD",name:"VelocityEncodingDirection",vm:"3",version:"DICOM"},"(0018,9091)":{tag:"(0018,9091)",vr:"FD",name:"VelocityEncodingMinimumValue",vm:"1",version:"DICOM"},"(0018,9092)":{tag:"(0018,9092)",vr:"SQ",name:"VelocityEncodingAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9093)":{tag:"(0018,9093)",vr:"US",name:"NumberOfKSpaceTrajectories",vm:"1",version:"DICOM"},"(0018,9094)":{tag:"(0018,9094)",vr:"CS",name:"CoverageOfKSpace",vm:"1",version:"DICOM"},"(0018,9095)":{tag:"(0018,9095)",vr:"UL",name:"SpectroscopyAcquisitionPhaseRows",vm:"1",version:"DICOM"},"(0018,9098)":{tag:"(0018,9098)",vr:"FD",name:"TransmitterFrequency",vm:"1-2",version:"DICOM"},"(0018,9100)":{tag:"(0018,9100)",vr:"CS",name:"ResonantNucleus",vm:"1-2",version:"DICOM"},"(0018,9101)":{tag:"(0018,9101)",vr:"CS",name:"FrequencyCorrection",vm:"1",version:"DICOM"},"(0018,9103)":{tag:"(0018,9103)",vr:"SQ",name:"MRSpectroscopyFOVGeometrySequence",vm:"1",version:"DICOM"},"(0018,9104)":{tag:"(0018,9104)",vr:"FD",name:"SlabThickness",vm:"1",version:"DICOM"},"(0018,9105)":{tag:"(0018,9105)",vr:"FD",name:"SlabOrientation",vm:"3",version:"DICOM"},"(0018,9106)":{tag:"(0018,9106)",vr:"FD",name:"MidSlabPosition",vm:"3",version:"DICOM"},"(0018,9107)":{tag:"(0018,9107)",vr:"SQ",name:"MRSpatialSaturationSequence",vm:"1",version:"DICOM"},"(0018,9112)":{tag:"(0018,9112)",vr:"SQ",name:"MRTimingAndRelatedParametersSequence",vm:"1",version:"DICOM"},"(0018,9114)":{tag:"(0018,9114)",vr:"SQ",name:"MREchoSequence",vm:"1",version:"DICOM"},"(0018,9115)":{tag:"(0018,9115)",vr:"SQ",name:"MRModifierSequence",vm:"1",version:"DICOM"},"(0018,9117)":{tag:"(0018,9117)",vr:"SQ",name:"MRDiffusionSequence",vm:"1",version:"DICOM"},"(0018,9118)":{tag:"(0018,9118)",vr:"SQ",name:"CardiacSynchronizationSequence",vm:"1",version:"DICOM"},"(0018,9119)":{tag:"(0018,9119)",vr:"SQ",name:"MRAveragesSequence",vm:"1",version:"DICOM"},"(0018,9125)":{tag:"(0018,9125)",vr:"SQ",name:"MRFOVGeometrySequence",vm:"1",version:"DICOM"},"(0018,9126)":{tag:"(0018,9126)",vr:"SQ",name:"VolumeLocalizationSequence",vm:"1",version:"DICOM"},"(0018,9127)":{tag:"(0018,9127)",vr:"UL",name:"SpectroscopyAcquisitionDataColumns",vm:"1",version:"DICOM"},"(0018,9147)":{tag:"(0018,9147)",vr:"CS",name:"DiffusionAnisotropyType",vm:"1",version:"DICOM"},"(0018,9151)":{tag:"(0018,9151)",vr:"DT",name:"FrameReferenceDateTime",vm:"1",version:"DICOM"},"(0018,9152)":{tag:"(0018,9152)",vr:"SQ",name:"MRMetaboliteMapSequence",vm:"1",version:"DICOM"},"(0018,9155)":{tag:"(0018,9155)",vr:"FD",name:"ParallelReductionFactorOutOfPlane",vm:"1",version:"DICOM"},"(0018,9159)":{tag:"(0018,9159)",vr:"UL",name:"SpectroscopyAcquisitionOutOfPlanePhaseSteps",vm:"1",version:"DICOM"},"(0018,9168)":{tag:"(0018,9168)",vr:"FD",name:"ParallelReductionFactorSecondInPlane",vm:"1",version:"DICOM"},"(0018,9169)":{tag:"(0018,9169)",vr:"CS",name:"CardiacBeatRejectionTechnique",vm:"1",version:"DICOM"},"(0018,9170)":{tag:"(0018,9170)",vr:"CS",name:"RespiratoryMotionCompensationTechnique",vm:"1",version:"DICOM"},"(0018,9171)":{tag:"(0018,9171)",vr:"CS",name:"RespiratorySignalSource",vm:"1",version:"DICOM"},"(0018,9172)":{tag:"(0018,9172)",vr:"CS",name:"BulkMotionCompensationTechnique",vm:"1",version:"DICOM"},"(0018,9173)":{tag:"(0018,9173)",vr:"CS",name:"BulkMotionSignalSource",vm:"1",version:"DICOM"},"(0018,9174)":{tag:"(0018,9174)",vr:"CS",name:"ApplicableSafetyStandardAgency",vm:"1",version:"DICOM"},"(0018,9175)":{tag:"(0018,9175)",vr:"LO",name:"ApplicableSafetyStandardDescription",vm:"1",version:"DICOM"},"(0018,9176)":{tag:"(0018,9176)",vr:"SQ",name:"OperatingModeSequence",vm:"1",version:"DICOM"},"(0018,9177)":{tag:"(0018,9177)",vr:"CS",name:"OperatingModeType",vm:"1",version:"DICOM"},"(0018,9178)":{tag:"(0018,9178)",vr:"CS",name:"OperatingMode",vm:"1",version:"DICOM"},"(0018,9179)":{tag:"(0018,9179)",vr:"CS",name:"SpecificAbsorptionRateDefinition",vm:"1",version:"DICOM"},"(0018,9180)":{tag:"(0018,9180)",vr:"CS",name:"GradientOutputType",vm:"1",version:"DICOM"},"(0018,9181)":{tag:"(0018,9181)",vr:"FD",name:"SpecificAbsorptionRateValue",vm:"1",version:"DICOM"},"(0018,9182)":{tag:"(0018,9182)",vr:"FD",name:"GradientOutput",vm:"1",version:"DICOM"},"(0018,9183)":{tag:"(0018,9183)",vr:"CS",name:"FlowCompensationDirection",vm:"1",version:"DICOM"},"(0018,9184)":{tag:"(0018,9184)",vr:"FD",name:"TaggingDelay",vm:"1",version:"DICOM"},"(0018,9185)":{tag:"(0018,9185)",vr:"ST",name:"RespiratoryMotionCompensationTechniqueDescription",vm:"1",version:"DICOM"},"(0018,9186)":{tag:"(0018,9186)",vr:"SH",name:"RespiratorySignalSourceID",vm:"1",version:"DICOM"},"(0018,9197)":{tag:"(0018,9197)",vr:"SQ",name:"MRVelocityEncodingSequence",vm:"1",version:"DICOM"},"(0018,9198)":{tag:"(0018,9198)",vr:"CS",name:"FirstOrderPhaseCorrection",vm:"1",version:"DICOM"},"(0018,9199)":{tag:"(0018,9199)",vr:"CS",name:"WaterReferencedPhaseCorrection",vm:"1",version:"DICOM"},"(0018,9200)":{tag:"(0018,9200)",vr:"CS",name:"MRSpectroscopyAcquisitionType",vm:"1",version:"DICOM"},"(0018,9214)":{tag:"(0018,9214)",vr:"CS",name:"RespiratoryCyclePosition",vm:"1",version:"DICOM"},"(0018,9217)":{tag:"(0018,9217)",vr:"FD",name:"VelocityEncodingMaximumValue",vm:"1",version:"DICOM"},"(0018,9218)":{tag:"(0018,9218)",vr:"FD",name:"TagSpacingSecondDimension",vm:"1",version:"DICOM"},"(0018,9219)":{tag:"(0018,9219)",vr:"SS",name:"TagAngleSecondAxis",vm:"1",version:"DICOM"},"(0018,9220)":{tag:"(0018,9220)",vr:"FD",name:"FrameAcquisitionDuration",vm:"1",version:"DICOM"},"(0018,9226)":{tag:"(0018,9226)",vr:"SQ",name:"MRImageFrameTypeSequence",vm:"1",version:"DICOM"},"(0018,9227)":{tag:"(0018,9227)",vr:"SQ",name:"MRSpectroscopyFrameTypeSequence",vm:"1",version:"DICOM"},"(0018,9231)":{tag:"(0018,9231)",vr:"US",name:"MRAcquisitionPhaseEncodingStepsInPlane",vm:"1",version:"DICOM"},"(0018,9232)":{tag:"(0018,9232)",vr:"US",name:"MRAcquisitionPhaseEncodingStepsOutOfPlane",vm:"1",version:"DICOM"},"(0018,9234)":{tag:"(0018,9234)",vr:"UL",name:"SpectroscopyAcquisitionPhaseColumns",vm:"1",version:"DICOM"},"(0018,9236)":{tag:"(0018,9236)",vr:"CS",name:"CardiacCyclePosition",vm:"1",version:"DICOM"},"(0018,9239)":{tag:"(0018,9239)",vr:"SQ",name:"SpecificAbsorptionRateSequence",vm:"1",version:"DICOM"},"(0018,9240)":{tag:"(0018,9240)",vr:"US",name:"RFEchoTrainLength",vm:"1",version:"DICOM"},"(0018,9241)":{tag:"(0018,9241)",vr:"US",name:"GradientEchoTrainLength",vm:"1",version:"DICOM"},"(0018,9250)":{tag:"(0018,9250)",vr:"CS",name:"ArterialSpinLabelingContrast",vm:"1",version:"DICOM"},"(0018,9251)":{tag:"(0018,9251)",vr:"SQ",name:"MRArterialSpinLabelingSequence",vm:"1",version:"DICOM"},"(0018,9252)":{tag:"(0018,9252)",vr:"LO",name:"ASLTechniqueDescription",vm:"1",version:"DICOM"},"(0018,9253)":{tag:"(0018,9253)",vr:"US",name:"ASLSlabNumber",vm:"1",version:"DICOM"},"(0018,9254)":{tag:"(0018,9254)",vr:"FD",name:"ASLSlabThickness",vm:"1",version:"DICOM"},"(0018,9255)":{tag:"(0018,9255)",vr:"FD",name:"ASLSlabOrientation",vm:"3",version:"DICOM"},"(0018,9256)":{tag:"(0018,9256)",vr:"FD",name:"ASLMidSlabPosition",vm:"3",version:"DICOM"},"(0018,9257)":{tag:"(0018,9257)",vr:"CS",name:"ASLContext",vm:"1",version:"DICOM"},"(0018,9258)":{tag:"(0018,9258)",vr:"UL",name:"ASLPulseTrainDuration",vm:"1",version:"DICOM"},"(0018,9259)":{tag:"(0018,9259)",vr:"CS",name:"ASLCrusherFlag",vm:"1",version:"DICOM"},"(0018,925A)":{tag:"(0018,925A)",vr:"FD",name:"ASLCrusherFlowLimit",vm:"1",version:"DICOM"},"(0018,925B)":{tag:"(0018,925B)",vr:"LO",name:"ASLCrusherDescription",vm:"1",version:"DICOM"},"(0018,925C)":{tag:"(0018,925C)",vr:"CS",name:"ASLBolusCutoffFlag",vm:"1",version:"DICOM"},"(0018,925D)":{tag:"(0018,925D)",vr:"SQ",name:"ASLBolusCutoffTimingSequence",vm:"1",version:"DICOM"},"(0018,925E)":{tag:"(0018,925E)",vr:"LO",name:"ASLBolusCutoffTechnique",vm:"1",version:"DICOM"},"(0018,925F)":{tag:"(0018,925F)",vr:"UL",name:"ASLBolusCutoffDelayTime",vm:"1",version:"DICOM"},"(0018,9260)":{tag:"(0018,9260)",vr:"SQ",name:"ASLSlabSequence",vm:"1",version:"DICOM"},"(0018,9295)":{tag:"(0018,9295)",vr:"FD",name:"ChemicalShiftMinimumIntegrationLimitInppm",vm:"1",version:"DICOM"},"(0018,9296)":{tag:"(0018,9296)",vr:"FD",name:"ChemicalShiftMaximumIntegrationLimitInppm",vm:"1",version:"DICOM"},"(0018,9297)":{tag:"(0018,9297)",vr:"CS",name:"WaterReferenceAcquisition",vm:"1",version:"DICOM"},"(0018,9298)":{tag:"(0018,9298)",vr:"IS",name:"EchoPeakPosition",vm:"1",version:"DICOM"},"(0018,9301)":{tag:"(0018,9301)",vr:"SQ",name:"CTAcquisitionTypeSequence",vm:"1",version:"DICOM"},"(0018,9302)":{tag:"(0018,9302)",vr:"CS",name:"AcquisitionType",vm:"1",version:"DICOM"},"(0018,9303)":{tag:"(0018,9303)",vr:"FD",name:"TubeAngle",vm:"1",version:"DICOM"},"(0018,9304)":{tag:"(0018,9304)",vr:"SQ",name:"CTAcquisitionDetailsSequence",vm:"1",version:"DICOM"},"(0018,9305)":{tag:"(0018,9305)",vr:"FD",name:"RevolutionTime",vm:"1",version:"DICOM"},"(0018,9306)":{tag:"(0018,9306)",vr:"FD",name:"SingleCollimationWidth",vm:"1",version:"DICOM"},"(0018,9307)":{tag:"(0018,9307)",vr:"FD",name:"TotalCollimationWidth",vm:"1",version:"DICOM"},"(0018,9308)":{tag:"(0018,9308)",vr:"SQ",name:"CTTableDynamicsSequence",vm:"1",version:"DICOM"},"(0018,9309)":{tag:"(0018,9309)",vr:"FD",name:"TableSpeed",vm:"1",version:"DICOM"},"(0018,9310)":{tag:"(0018,9310)",vr:"FD",name:"TableFeedPerRotation",vm:"1",version:"DICOM"},"(0018,9311)":{tag:"(0018,9311)",vr:"FD",name:"SpiralPitchFactor",vm:"1",version:"DICOM"},"(0018,9312)":{tag:"(0018,9312)",vr:"SQ",name:"CTGeometrySequence",vm:"1",version:"DICOM"},"(0018,9313)":{tag:"(0018,9313)",vr:"FD",name:"DataCollectionCenterPatient",vm:"3",version:"DICOM"},"(0018,9314)":{tag:"(0018,9314)",vr:"SQ",name:"CTReconstructionSequence",vm:"1",version:"DICOM"},"(0018,9315)":{tag:"(0018,9315)",vr:"CS",name:"ReconstructionAlgorithm",vm:"1",version:"DICOM"},"(0018,9316)":{tag:"(0018,9316)",vr:"CS",name:"ConvolutionKernelGroup",vm:"1",version:"DICOM"},"(0018,9317)":{tag:"(0018,9317)",vr:"FD",name:"ReconstructionFieldOfView",vm:"2",version:"DICOM"},"(0018,9318)":{tag:"(0018,9318)",vr:"FD",name:"ReconstructionTargetCenterPatient",vm:"3",version:"DICOM"},"(0018,9319)":{tag:"(0018,9319)",vr:"FD",name:"ReconstructionAngle",vm:"1",version:"DICOM"},"(0018,9320)":{tag:"(0018,9320)",vr:"SH",name:"ImageFilter",vm:"1",version:"DICOM"},"(0018,9321)":{tag:"(0018,9321)",vr:"SQ",name:"CTExposureSequence",vm:"1",version:"DICOM"},"(0018,9322)":{tag:"(0018,9322)",vr:"FD",name:"ReconstructionPixelSpacing",vm:"2",version:"DICOM"},"(0018,9323)":{tag:"(0018,9323)",vr:"CS",name:"ExposureModulationType",vm:"1",version:"DICOM"},"(0018,9324)":{tag:"(0018,9324)",vr:"FD",name:"EstimatedDoseSaving",vm:"1",version:"DICOM"},"(0018,9325)":{tag:"(0018,9325)",vr:"SQ",name:"CTXRayDetailsSequence",vm:"1",version:"DICOM"},"(0018,9326)":{tag:"(0018,9326)",vr:"SQ",name:"CTPositionSequence",vm:"1",version:"DICOM"},"(0018,9327)":{tag:"(0018,9327)",vr:"FD",name:"TablePosition",vm:"1",version:"DICOM"},"(0018,9328)":{tag:"(0018,9328)",vr:"FD",name:"ExposureTimeInms",vm:"1",version:"DICOM"},"(0018,9329)":{tag:"(0018,9329)",vr:"SQ",name:"CTImageFrameTypeSequence",vm:"1",version:"DICOM"},"(0018,9330)":{tag:"(0018,9330)",vr:"FD",name:"XRayTubeCurrentInmA",vm:"1",version:"DICOM"},"(0018,9332)":{tag:"(0018,9332)",vr:"FD",name:"ExposureInmAs",vm:"1",version:"DICOM"},"(0018,9333)":{tag:"(0018,9333)",vr:"CS",name:"ConstantVolumeFlag",vm:"1",version:"DICOM"},"(0018,9334)":{tag:"(0018,9334)",vr:"CS",name:"FluoroscopyFlag",vm:"1",version:"DICOM"},"(0018,9335)":{tag:"(0018,9335)",vr:"FD",name:"DistanceSourceToDataCollectionCenter",vm:"1",version:"DICOM"},"(0018,9337)":{tag:"(0018,9337)",vr:"US",name:"ContrastBolusAgentNumber",vm:"1",version:"DICOM"},"(0018,9338)":{tag:"(0018,9338)",vr:"SQ",name:"ContrastBolusIngredientCodeSequence",vm:"1",version:"DICOM"},"(0018,9340)":{tag:"(0018,9340)",vr:"SQ",name:"ContrastAdministrationProfileSequence",vm:"1",version:"DICOM"},"(0018,9341)":{tag:"(0018,9341)",vr:"SQ",name:"ContrastBolusUsageSequence",vm:"1",version:"DICOM"},"(0018,9342)":{tag:"(0018,9342)",vr:"CS",name:"ContrastBolusAgentAdministered",vm:"1",version:"DICOM"},"(0018,9343)":{tag:"(0018,9343)",vr:"CS",name:"ContrastBolusAgentDetected",vm:"1",version:"DICOM"},"(0018,9344)":{tag:"(0018,9344)",vr:"CS",name:"ContrastBolusAgentPhase",vm:"1",version:"DICOM"},"(0018,9345)":{tag:"(0018,9345)",vr:"FD",name:"CTDIvol",vm:"1",version:"DICOM"},"(0018,9346)":{tag:"(0018,9346)",vr:"SQ",name:"CTDIPhantomTypeCodeSequence",vm:"1",version:"DICOM"},"(0018,9351)":{tag:"(0018,9351)",vr:"FL",name:"CalciumScoringMassFactorPatient",vm:"1",version:"DICOM"},"(0018,9352)":{tag:"(0018,9352)",vr:"FL",name:"CalciumScoringMassFactorDevice",vm:"3",version:"DICOM"},"(0018,9353)":{tag:"(0018,9353)",vr:"FL",name:"EnergyWeightingFactor",vm:"1",version:"DICOM"},"(0018,9360)":{tag:"(0018,9360)",vr:"SQ",name:"CTAdditionalXRaySourceSequence",vm:"1",version:"DICOM"},"(0018,9361)":{tag:"(0018,9361)",vr:"CS",name:"MultienergyCTAcquisition",vm:"1",version:"DICOM"},"(0018,9362)":{tag:"(0018,9362)",vr:"SQ",name:"MultienergyCTAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9363)":{tag:"(0018,9363)",vr:"SQ",name:"MultienergyCTProcessingSequence",vm:"1",version:"DICOM"},"(0018,9364)":{tag:"(0018,9364)",vr:"SQ",name:"MultienergyCTCharacteristicsSequence",vm:"1",version:"DICOM"},"(0018,9365)":{tag:"(0018,9365)",vr:"SQ",name:"MultienergyCTXRaySourceSequence",vm:"1",version:"DICOM"},"(0018,9366)":{tag:"(0018,9366)",vr:"US",name:"XRaySourceIndex",vm:"1",version:"DICOM"},"(0018,9367)":{tag:"(0018,9367)",vr:"UC",name:"XRaySourceID",vm:"1",version:"DICOM"},"(0018,9368)":{tag:"(0018,9368)",vr:"CS",name:"MultienergySourceTechnique",vm:"1",version:"DICOM"},"(0018,9369)":{tag:"(0018,9369)",vr:"DT",name:"SourceStartDateTime",vm:"1",version:"DICOM"},"(0018,936A)":{tag:"(0018,936A)",vr:"DT",name:"SourceEndDateTime",vm:"1",version:"DICOM"},"(0018,936B)":{tag:"(0018,936B)",vr:"US",name:"SwitchingPhaseNumber",vm:"1",version:"DICOM"},"(0018,936C)":{tag:"(0018,936C)",vr:"DS",name:"SwitchingPhaseNominalDuration",vm:"1",version:"DICOM"},"(0018,936D)":{tag:"(0018,936D)",vr:"DS",name:"SwitchingPhaseTransitionDuration",vm:"1",version:"DICOM"},"(0018,936E)":{tag:"(0018,936E)",vr:"DS",name:"EffectiveBinEnergy",vm:"1",version:"DICOM"},"(0018,936F)":{tag:"(0018,936F)",vr:"SQ",name:"MultienergyCTXRayDetectorSequence",vm:"1",version:"DICOM"},"(0018,9370)":{tag:"(0018,9370)",vr:"US",name:"XRayDetectorIndex",vm:"1",version:"DICOM"},"(0018,9371)":{tag:"(0018,9371)",vr:"UC",name:"XRayDetectorID",vm:"1",version:"DICOM"},"(0018,9372)":{tag:"(0018,9372)",vr:"CS",name:"MultienergyDetectorType",vm:"1",version:"DICOM"},"(0018,9373)":{tag:"(0018,9373)",vr:"ST",name:"XRayDetectorLabel",vm:"1",version:"DICOM"},"(0018,9374)":{tag:"(0018,9374)",vr:"DS",name:"NominalMaxEnergy",vm:"1",version:"DICOM"},"(0018,9375)":{tag:"(0018,9375)",vr:"DS",name:"NominalMinEnergy",vm:"1",version:"DICOM"},"(0018,9376)":{tag:"(0018,9376)",vr:"US",name:"ReferencedXRayDetectorIndex",vm:"1-n",version:"DICOM"},"(0018,9377)":{tag:"(0018,9377)",vr:"US",name:"ReferencedXRaySourceIndex",vm:"1-n",version:"DICOM"},"(0018,9378)":{tag:"(0018,9378)",vr:"US",name:"ReferencedPathIndex",vm:"1-n",version:"DICOM"},"(0018,9379)":{tag:"(0018,9379)",vr:"SQ",name:"MultienergyCTPathSequence",vm:"1",version:"DICOM"},"(0018,937A)":{tag:"(0018,937A)",vr:"US",name:"MultienergyCTPathIndex",vm:"1",version:"DICOM"},"(0018,937B)":{tag:"(0018,937B)",vr:"UT",name:"MultienergyAcquisitionDescription",vm:"1",version:"DICOM"},"(0018,937C)":{tag:"(0018,937C)",vr:"FD",name:"MonoenergeticEnergyEquivalent",vm:"1",version:"DICOM"},"(0018,937D)":{tag:"(0018,937D)",vr:"SQ",name:"MaterialCodeSequence",vm:"1",version:"DICOM"},"(0018,937E)":{tag:"(0018,937E)",vr:"CS",name:"DecompositionMethod",vm:"1",version:"DICOM"},"(0018,937F)":{tag:"(0018,937F)",vr:"UT",name:"DecompositionDescription",vm:"1",version:"DICOM"},"(0018,9380)":{tag:"(0018,9380)",vr:"SQ",name:"DecompositionAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(0018,9381)":{tag:"(0018,9381)",vr:"SQ",name:"DecompositionMaterialSequence",vm:"1",version:"DICOM"},"(0018,9382)":{tag:"(0018,9382)",vr:"SQ",name:"MaterialAttenuationSequence",vm:"1",version:"DICOM"},"(0018,9383)":{tag:"(0018,9383)",vr:"DS",name:"PhotonEnergy",vm:"1",version:"DICOM"},"(0018,9384)":{tag:"(0018,9384)",vr:"DS",name:"XRayMassAttenuationCoefficient",vm:"1",version:"DICOM"},"(0018,9401)":{tag:"(0018,9401)",vr:"SQ",name:"ProjectionPixelCalibrationSequence",vm:"1",version:"DICOM"},"(0018,9402)":{tag:"(0018,9402)",vr:"FL",name:"DistanceSourceToIsocenter",vm:"1",version:"DICOM"},"(0018,9403)":{tag:"(0018,9403)",vr:"FL",name:"DistanceObjectToTableTop",vm:"1",version:"DICOM"},"(0018,9404)":{tag:"(0018,9404)",vr:"FL",name:"ObjectPixelSpacingInCenterOfBeam",vm:"2",version:"DICOM"},"(0018,9405)":{tag:"(0018,9405)",vr:"SQ",name:"PositionerPositionSequence",vm:"1",version:"DICOM"},"(0018,9406)":{tag:"(0018,9406)",vr:"SQ",name:"TablePositionSequence",vm:"1",version:"DICOM"},"(0018,9407)":{tag:"(0018,9407)",vr:"SQ",name:"CollimatorShapeSequence",vm:"1",version:"DICOM"},"(0018,9410)":{tag:"(0018,9410)",vr:"CS",name:"PlanesInAcquisition",vm:"1",version:"DICOM"},"(0018,9412)":{tag:"(0018,9412)",vr:"SQ",name:"XAXRFFrameCharacteristicsSequence",vm:"1",version:"DICOM"},"(0018,9417)":{tag:"(0018,9417)",vr:"SQ",name:"FrameAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9420)":{tag:"(0018,9420)",vr:"CS",name:"XRayReceptorType",vm:"1",version:"DICOM"},"(0018,9423)":{tag:"(0018,9423)",vr:"LO",name:"AcquisitionProtocolName",vm:"1",version:"DICOM"},"(0018,9424)":{tag:"(0018,9424)",vr:"LT",name:"AcquisitionProtocolDescription",vm:"1",version:"DICOM"},"(0018,9425)":{tag:"(0018,9425)",vr:"CS",name:"ContrastBolusIngredientOpaque",vm:"1",version:"DICOM"},"(0018,9426)":{tag:"(0018,9426)",vr:"FL",name:"DistanceReceptorPlaneToDetectorHousing",vm:"1",version:"DICOM"},"(0018,9427)":{tag:"(0018,9427)",vr:"CS",name:"IntensifierActiveShape",vm:"1",version:"DICOM"},"(0018,9428)":{tag:"(0018,9428)",vr:"FL",name:"IntensifierActiveDimensions",vm:"1-2",version:"DICOM"},"(0018,9429)":{tag:"(0018,9429)",vr:"FL",name:"PhysicalDetectorSize",vm:"2",version:"DICOM"},"(0018,9430)":{tag:"(0018,9430)",vr:"FL",name:"PositionOfIsocenterProjection",vm:"2",version:"DICOM"},"(0018,9432)":{tag:"(0018,9432)",vr:"SQ",name:"FieldOfViewSequence",vm:"1",version:"DICOM"},"(0018,9433)":{tag:"(0018,9433)",vr:"LO",name:"FieldOfViewDescription",vm:"1",version:"DICOM"},"(0018,9434)":{tag:"(0018,9434)",vr:"SQ",name:"ExposureControlSensingRegionsSequence",vm:"1",version:"DICOM"},"(0018,9435)":{tag:"(0018,9435)",vr:"CS",name:"ExposureControlSensingRegionShape",vm:"1",version:"DICOM"},"(0018,9436)":{tag:"(0018,9436)",vr:"SS",name:"ExposureControlSensingRegionLeftVerticalEdge",vm:"1",version:"DICOM"},"(0018,9437)":{tag:"(0018,9437)",vr:"SS",name:"ExposureControlSensingRegionRightVerticalEdge",vm:"1",version:"DICOM"},"(0018,9438)":{tag:"(0018,9438)",vr:"SS",name:"ExposureControlSensingRegionUpperHorizontalEdge",vm:"1",version:"DICOM"},"(0018,9439)":{tag:"(0018,9439)",vr:"SS",name:"ExposureControlSensingRegionLowerHorizontalEdge",vm:"1",version:"DICOM"},"(0018,9440)":{tag:"(0018,9440)",vr:"SS",name:"CenterOfCircularExposureControlSensingRegion",vm:"2",version:"DICOM"},"(0018,9441)":{tag:"(0018,9441)",vr:"US",name:"RadiusOfCircularExposureControlSensingRegion",vm:"1",version:"DICOM"},"(0018,9442)":{tag:"(0018,9442)",vr:"SS",name:"VerticesOfThePolygonalExposureControlSensingRegion",vm:"2-n",version:"DICOM"},"(0018,9447)":{tag:"(0018,9447)",vr:"FL",name:"ColumnAngulationPatient",vm:"1",version:"DICOM"},"(0018,9449)":{tag:"(0018,9449)",vr:"FL",name:"BeamAngle",vm:"1",version:"DICOM"},"(0018,9451)":{tag:"(0018,9451)",vr:"SQ",name:"FrameDetectorParametersSequence",vm:"1",version:"DICOM"},"(0018,9452)":{tag:"(0018,9452)",vr:"FL",name:"CalculatedAnatomyThickness",vm:"1",version:"DICOM"},"(0018,9455)":{tag:"(0018,9455)",vr:"SQ",name:"CalibrationSequence",vm:"1",version:"DICOM"},"(0018,9456)":{tag:"(0018,9456)",vr:"SQ",name:"ObjectThicknessSequence",vm:"1",version:"DICOM"},"(0018,9457)":{tag:"(0018,9457)",vr:"CS",name:"PlaneIdentification",vm:"1",version:"DICOM"},"(0018,9461)":{tag:"(0018,9461)",vr:"FL",name:"FieldOfViewDimensionsInFloat",vm:"1-2",version:"DICOM"},"(0018,9462)":{tag:"(0018,9462)",vr:"SQ",name:"IsocenterReferenceSystemSequence",vm:"1",version:"DICOM"},"(0018,9463)":{tag:"(0018,9463)",vr:"FL",name:"PositionerIsocenterPrimaryAngle",vm:"1",version:"DICOM"},"(0018,9464)":{tag:"(0018,9464)",vr:"FL",name:"PositionerIsocenterSecondaryAngle",vm:"1",version:"DICOM"},"(0018,9465)":{tag:"(0018,9465)",vr:"FL",name:"PositionerIsocenterDetectorRotationAngle",vm:"1",version:"DICOM"},"(0018,9466)":{tag:"(0018,9466)",vr:"FL",name:"TableXPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9467)":{tag:"(0018,9467)",vr:"FL",name:"TableYPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9468)":{tag:"(0018,9468)",vr:"FL",name:"TableZPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9469)":{tag:"(0018,9469)",vr:"FL",name:"TableHorizontalRotationAngle",vm:"1",version:"DICOM"},"(0018,9470)":{tag:"(0018,9470)",vr:"FL",name:"TableHeadTiltAngle",vm:"1",version:"DICOM"},"(0018,9471)":{tag:"(0018,9471)",vr:"FL",name:"TableCradleTiltAngle",vm:"1",version:"DICOM"},"(0018,9472)":{tag:"(0018,9472)",vr:"SQ",name:"FrameDisplayShutterSequence",vm:"1",version:"DICOM"},"(0018,9473)":{tag:"(0018,9473)",vr:"FL",name:"AcquiredImageAreaDoseProduct",vm:"1",version:"DICOM"},"(0018,9474)":{tag:"(0018,9474)",vr:"CS",name:"CArmPositionerTabletopRelationship",vm:"1",version:"DICOM"},"(0018,9476)":{tag:"(0018,9476)",vr:"SQ",name:"XRayGeometrySequence",vm:"1",version:"DICOM"},"(0018,9477)":{tag:"(0018,9477)",vr:"SQ",name:"IrradiationEventIdentificationSequence",vm:"1",version:"DICOM"},"(0018,9504)":{tag:"(0018,9504)",vr:"SQ",name:"XRay3DFrameTypeSequence",vm:"1",version:"DICOM"},"(0018,9506)":{tag:"(0018,9506)",vr:"SQ",name:"ContributingSourcesSequence",vm:"1",version:"DICOM"},"(0018,9507)":{tag:"(0018,9507)",vr:"SQ",name:"XRay3DAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9508)":{tag:"(0018,9508)",vr:"FL",name:"PrimaryPositionerScanArc",vm:"1",version:"DICOM"},"(0018,9509)":{tag:"(0018,9509)",vr:"FL",name:"SecondaryPositionerScanArc",vm:"1",version:"DICOM"},"(0018,9510)":{tag:"(0018,9510)",vr:"FL",name:"PrimaryPositionerScanStartAngle",vm:"1",version:"DICOM"},"(0018,9511)":{tag:"(0018,9511)",vr:"FL",name:"SecondaryPositionerScanStartAngle",vm:"1",version:"DICOM"},"(0018,9514)":{tag:"(0018,9514)",vr:"FL",name:"PrimaryPositionerIncrement",vm:"1",version:"DICOM"},"(0018,9515)":{tag:"(0018,9515)",vr:"FL",name:"SecondaryPositionerIncrement",vm:"1",version:"DICOM"},"(0018,9516)":{tag:"(0018,9516)",vr:"DT",name:"StartAcquisitionDateTime",vm:"1",version:"DICOM"},"(0018,9517)":{tag:"(0018,9517)",vr:"DT",name:"EndAcquisitionDateTime",vm:"1",version:"DICOM"},"(0018,9518)":{tag:"(0018,9518)",vr:"SS",name:"PrimaryPositionerIncrementSign",vm:"1",version:"DICOM"},"(0018,9519)":{tag:"(0018,9519)",vr:"SS",name:"SecondaryPositionerIncrementSign",vm:"1",version:"DICOM"},"(0018,9524)":{tag:"(0018,9524)",vr:"LO",name:"ApplicationName",vm:"1",version:"DICOM"},"(0018,9525)":{tag:"(0018,9525)",vr:"LO",name:"ApplicationVersion",vm:"1",version:"DICOM"},"(0018,9526)":{tag:"(0018,9526)",vr:"LO",name:"ApplicationManufacturer",vm:"1",version:"DICOM"},"(0018,9527)":{tag:"(0018,9527)",vr:"CS",name:"AlgorithmType",vm:"1",version:"DICOM"},"(0018,9528)":{tag:"(0018,9528)",vr:"LO",name:"AlgorithmDescription",vm:"1",version:"DICOM"},"(0018,9530)":{tag:"(0018,9530)",vr:"SQ",name:"XRay3DReconstructionSequence",vm:"1",version:"DICOM"},"(0018,9531)":{tag:"(0018,9531)",vr:"LO",name:"ReconstructionDescription",vm:"1",version:"DICOM"},"(0018,9538)":{tag:"(0018,9538)",vr:"SQ",name:"PerProjectionAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9541)":{tag:"(0018,9541)",vr:"SQ",name:"DetectorPositionSequence",vm:"1",version:"DICOM"},"(0018,9542)":{tag:"(0018,9542)",vr:"SQ",name:"XRayAcquisitionDoseSequence",vm:"1",version:"DICOM"},"(0018,9543)":{tag:"(0018,9543)",vr:"FD",name:"XRaySourceIsocenterPrimaryAngle",vm:"1",version:"DICOM"},"(0018,9544)":{tag:"(0018,9544)",vr:"FD",name:"XRaySourceIsocenterSecondaryAngle",vm:"1",version:"DICOM"},"(0018,9545)":{tag:"(0018,9545)",vr:"FD",name:"BreastSupportIsocenterPrimaryAngle",vm:"1",version:"DICOM"},"(0018,9546)":{tag:"(0018,9546)",vr:"FD",name:"BreastSupportIsocenterSecondaryAngle",vm:"1",version:"DICOM"},"(0018,9547)":{tag:"(0018,9547)",vr:"FD",name:"BreastSupportXPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9548)":{tag:"(0018,9548)",vr:"FD",name:"BreastSupportYPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9549)":{tag:"(0018,9549)",vr:"FD",name:"BreastSupportZPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9550)":{tag:"(0018,9550)",vr:"FD",name:"DetectorIsocenterPrimaryAngle",vm:"1",version:"DICOM"},"(0018,9551)":{tag:"(0018,9551)",vr:"FD",name:"DetectorIsocenterSecondaryAngle",vm:"1",version:"DICOM"},"(0018,9552)":{tag:"(0018,9552)",vr:"FD",name:"DetectorXPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9553)":{tag:"(0018,9553)",vr:"FD",name:"DetectorYPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9554)":{tag:"(0018,9554)",vr:"FD",name:"DetectorZPositionToIsocenter",vm:"1",version:"DICOM"},"(0018,9555)":{tag:"(0018,9555)",vr:"SQ",name:"XRayGridSequence",vm:"1",version:"DICOM"},"(0018,9556)":{tag:"(0018,9556)",vr:"SQ",name:"XRayFilterSequence",vm:"1",version:"DICOM"},"(0018,9557)":{tag:"(0018,9557)",vr:"FD",name:"DetectorActiveAreaTLHCPosition",vm:"3",version:"DICOM"},"(0018,9558)":{tag:"(0018,9558)",vr:"FD",name:"DetectorActiveAreaOrientation",vm:"6",version:"DICOM"},"(0018,9559)":{tag:"(0018,9559)",vr:"CS",name:"PositionerPrimaryAngleDirection",vm:"1",version:"DICOM"},"(0018,9601)":{tag:"(0018,9601)",vr:"SQ",name:"DiffusionBMatrixSequence",vm:"1",version:"DICOM"},"(0018,9602)":{tag:"(0018,9602)",vr:"FD",name:"DiffusionBValueXX",vm:"1",version:"DICOM"},"(0018,9603)":{tag:"(0018,9603)",vr:"FD",name:"DiffusionBValueXY",vm:"1",version:"DICOM"},"(0018,9604)":{tag:"(0018,9604)",vr:"FD",name:"DiffusionBValueXZ",vm:"1",version:"DICOM"},"(0018,9605)":{tag:"(0018,9605)",vr:"FD",name:"DiffusionBValueYY",vm:"1",version:"DICOM"},"(0018,9606)":{tag:"(0018,9606)",vr:"FD",name:"DiffusionBValueYZ",vm:"1",version:"DICOM"},"(0018,9607)":{tag:"(0018,9607)",vr:"FD",name:"DiffusionBValueZZ",vm:"1",version:"DICOM"},"(0018,9621)":{tag:"(0018,9621)",vr:"SQ",name:"FunctionalMRSequence",vm:"1",version:"DICOM"},"(0018,9622)":{tag:"(0018,9622)",vr:"CS",name:"FunctionalSettlingPhaseFramesPresent",vm:"1",version:"DICOM"},"(0018,9623)":{tag:"(0018,9623)",vr:"DT",name:"FunctionalSyncPulse",vm:"1",version:"DICOM"},"(0018,9624)":{tag:"(0018,9624)",vr:"CS",name:"SettlingPhaseFrame",vm:"1",version:"DICOM"},"(0018,9701)":{tag:"(0018,9701)",vr:"DT",name:"DecayCorrectionDateTime",vm:"1",version:"DICOM"},"(0018,9715)":{tag:"(0018,9715)",vr:"FD",name:"StartDensityThreshold",vm:"1",version:"DICOM"},"(0018,9716)":{tag:"(0018,9716)",vr:"FD",name:"StartRelativeDensityDifferenceThreshold",vm:"1",version:"DICOM"},"(0018,9717)":{tag:"(0018,9717)",vr:"FD",name:"StartCardiacTriggerCountThreshold",vm:"1",version:"DICOM"},"(0018,9718)":{tag:"(0018,9718)",vr:"FD",name:"StartRespiratoryTriggerCountThreshold",vm:"1",version:"DICOM"},"(0018,9719)":{tag:"(0018,9719)",vr:"FD",name:"TerminationCountsThreshold",vm:"1",version:"DICOM"},"(0018,9720)":{tag:"(0018,9720)",vr:"FD",name:"TerminationDensityThreshold",vm:"1",version:"DICOM"},"(0018,9721)":{tag:"(0018,9721)",vr:"FD",name:"TerminationRelativeDensityThreshold",vm:"1",version:"DICOM"},"(0018,9722)":{tag:"(0018,9722)",vr:"FD",name:"TerminationTimeThreshold",vm:"1",version:"DICOM"},"(0018,9723)":{tag:"(0018,9723)",vr:"FD",name:"TerminationCardiacTriggerCountThreshold",vm:"1",version:"DICOM"},"(0018,9724)":{tag:"(0018,9724)",vr:"FD",name:"TerminationRespiratoryTriggerCountThreshold",vm:"1",version:"DICOM"},"(0018,9725)":{tag:"(0018,9725)",vr:"CS",name:"DetectorGeometry",vm:"1",version:"DICOM"},"(0018,9726)":{tag:"(0018,9726)",vr:"FD",name:"TransverseDetectorSeparation",vm:"1",version:"DICOM"},"(0018,9727)":{tag:"(0018,9727)",vr:"FD",name:"AxialDetectorDimension",vm:"1",version:"DICOM"},"(0018,9729)":{tag:"(0018,9729)",vr:"US",name:"RadiopharmaceuticalAgentNumber",vm:"1",version:"DICOM"},"(0018,9732)":{tag:"(0018,9732)",vr:"SQ",name:"PETFrameAcquisitionSequence",vm:"1",version:"DICOM"},"(0018,9733)":{tag:"(0018,9733)",vr:"SQ",name:"PETDetectorMotionDetailsSequence",vm:"1",version:"DICOM"},"(0018,9734)":{tag:"(0018,9734)",vr:"SQ",name:"PETTableDynamicsSequence",vm:"1",version:"DICOM"},"(0018,9735)":{tag:"(0018,9735)",vr:"SQ",name:"PETPositionSequence",vm:"1",version:"DICOM"},"(0018,9736)":{tag:"(0018,9736)",vr:"SQ",name:"PETFrameCorrectionFactorsSequence",vm:"1",version:"DICOM"},"(0018,9737)":{tag:"(0018,9737)",vr:"SQ",name:"RadiopharmaceuticalUsageSequence",vm:"1",version:"DICOM"},"(0018,9738)":{tag:"(0018,9738)",vr:"CS",name:"AttenuationCorrectionSource",vm:"1",version:"DICOM"},"(0018,9739)":{tag:"(0018,9739)",vr:"US",name:"NumberOfIterations",vm:"1",version:"DICOM"},"(0018,9740)":{tag:"(0018,9740)",vr:"US",name:"NumberOfSubsets",vm:"1",version:"DICOM"},"(0018,9749)":{tag:"(0018,9749)",vr:"SQ",name:"PETReconstructionSequence",vm:"1",version:"DICOM"},"(0018,9751)":{tag:"(0018,9751)",vr:"SQ",name:"PETFrameTypeSequence",vm:"1",version:"DICOM"},"(0018,9755)":{tag:"(0018,9755)",vr:"CS",name:"TimeOfFlightInformationUsed",vm:"1",version:"DICOM"},"(0018,9756)":{tag:"(0018,9756)",vr:"CS",name:"ReconstructionType",vm:"1",version:"DICOM"},"(0018,9758)":{tag:"(0018,9758)",vr:"CS",name:"DecayCorrected",vm:"1",version:"DICOM"},"(0018,9759)":{tag:"(0018,9759)",vr:"CS",name:"AttenuationCorrected",vm:"1",version:"DICOM"},"(0018,9760)":{tag:"(0018,9760)",vr:"CS",name:"ScatterCorrected",vm:"1",version:"DICOM"},"(0018,9761)":{tag:"(0018,9761)",vr:"CS",name:"DeadTimeCorrected",vm:"1",version:"DICOM"},"(0018,9762)":{tag:"(0018,9762)",vr:"CS",name:"GantryMotionCorrected",vm:"1",version:"DICOM"},"(0018,9763)":{tag:"(0018,9763)",vr:"CS",name:"PatientMotionCorrected",vm:"1",version:"DICOM"},"(0018,9764)":{tag:"(0018,9764)",vr:"CS",name:"CountLossNormalizationCorrected",vm:"1",version:"DICOM"},"(0018,9765)":{tag:"(0018,9765)",vr:"CS",name:"RandomsCorrected",vm:"1",version:"DICOM"},"(0018,9766)":{tag:"(0018,9766)",vr:"CS",name:"NonUniformRadialSamplingCorrected",vm:"1",version:"DICOM"},"(0018,9767)":{tag:"(0018,9767)",vr:"CS",name:"SensitivityCalibrated",vm:"1",version:"DICOM"},"(0018,9768)":{tag:"(0018,9768)",vr:"CS",name:"DetectorNormalizationCorrection",vm:"1",version:"DICOM"},"(0018,9769)":{tag:"(0018,9769)",vr:"CS",name:"IterativeReconstructionMethod",vm:"1",version:"DICOM"},"(0018,9770)":{tag:"(0018,9770)",vr:"CS",name:"AttenuationCorrectionTemporalRelationship",vm:"1",version:"DICOM"},"(0018,9771)":{tag:"(0018,9771)",vr:"SQ",name:"PatientPhysiologicalStateSequence",vm:"1",version:"DICOM"},"(0018,9772)":{tag:"(0018,9772)",vr:"SQ",name:"PatientPhysiologicalStateCodeSequence",vm:"1",version:"DICOM"},"(0018,9801)":{tag:"(0018,9801)",vr:"FD",name:"DepthsOfFocus",vm:"1-n",version:"DICOM"},"(0018,9803)":{tag:"(0018,9803)",vr:"SQ",name:"ExcludedIntervalsSequence",vm:"1",version:"DICOM"},"(0018,9804)":{tag:"(0018,9804)",vr:"DT",name:"ExclusionStartDateTime",vm:"1",version:"DICOM"},"(0018,9805)":{tag:"(0018,9805)",vr:"FD",name:"ExclusionDuration",vm:"1",version:"DICOM"},"(0018,9806)":{tag:"(0018,9806)",vr:"SQ",name:"USImageDescriptionSequence",vm:"1",version:"DICOM"},"(0018,9807)":{tag:"(0018,9807)",vr:"SQ",name:"ImageDataTypeSequence",vm:"1",version:"DICOM"},"(0018,9808)":{tag:"(0018,9808)",vr:"CS",name:"DataType",vm:"1",version:"DICOM"},"(0018,9809)":{tag:"(0018,9809)",vr:"SQ",name:"TransducerScanPatternCodeSequence",vm:"1",version:"DICOM"},"(0018,980B)":{tag:"(0018,980B)",vr:"CS",name:"AliasedDataType",vm:"1",version:"DICOM"},"(0018,980C)":{tag:"(0018,980C)",vr:"CS",name:"PositionMeasuringDeviceUsed",vm:"1",version:"DICOM"},"(0018,980D)":{tag:"(0018,980D)",vr:"SQ",name:"TransducerGeometryCodeSequence",vm:"1",version:"DICOM"},"(0018,980E)":{tag:"(0018,980E)",vr:"SQ",name:"TransducerBeamSteeringCodeSequence",vm:"1",version:"DICOM"},"(0018,980F)":{tag:"(0018,980F)",vr:"SQ",name:"TransducerApplicationCodeSequence",vm:"1",version:"DICOM"},"(0018,9810)":{tag:"(0018,9810)",vr:"xs",name:"ZeroVelocityPixelValue",vm:"1",version:"DICOM"},"(0018,9900)":{tag:"(0018,9900)",vr:"LO",name:"ReferenceLocationLabel",vm:"1",version:"DICOM"},"(0018,9901)":{tag:"(0018,9901)",vr:"UT",name:"ReferenceLocationDescription",vm:"1",version:"DICOM"},"(0018,9902)":{tag:"(0018,9902)",vr:"SQ",name:"ReferenceBasisCodeSequence",vm:"1",version:"DICOM"},"(0018,9903)":{tag:"(0018,9903)",vr:"SQ",name:"ReferenceGeometryCodeSequence",vm:"1",version:"DICOM"},"(0018,9904)":{tag:"(0018,9904)",vr:"DS",name:"OffsetDistance",vm:"1",version:"DICOM"},"(0018,9905)":{tag:"(0018,9905)",vr:"CS",name:"OffsetDirection",vm:"1",version:"DICOM"},"(0018,9906)":{tag:"(0018,9906)",vr:"SQ",name:"PotentialScheduledProtocolCodeSequence",vm:"1",version:"DICOM"},"(0018,9907)":{tag:"(0018,9907)",vr:"SQ",name:"PotentialRequestedProcedureCodeSequence",vm:"1",version:"DICOM"},"(0018,9908)":{tag:"(0018,9908)",vr:"UC",name:"PotentialReasonsForProcedure",vm:"1-n",version:"DICOM"},"(0018,9909)":{tag:"(0018,9909)",vr:"SQ",name:"PotentialReasonsForProcedureCodeSequence",vm:"1",version:"DICOM"},"(0018,990A)":{tag:"(0018,990A)",vr:"UC",name:"PotentialDiagnosticTasks",vm:"1-n",version:"DICOM"},"(0018,990B)":{tag:"(0018,990B)",vr:"SQ",name:"ContraindicationsCodeSequence",vm:"1",version:"DICOM"},"(0018,990C)":{tag:"(0018,990C)",vr:"SQ",name:"ReferencedDefinedProtocolSequence",vm:"1",version:"DICOM"},"(0018,990D)":{tag:"(0018,990D)",vr:"SQ",name:"ReferencedPerformedProtocolSequence",vm:"1",version:"DICOM"},"(0018,990E)":{tag:"(0018,990E)",vr:"SQ",name:"PredecessorProtocolSequence",vm:"1",version:"DICOM"},"(0018,990F)":{tag:"(0018,990F)",vr:"UT",name:"ProtocolPlanningInformation",vm:"1",version:"DICOM"},"(0018,9910)":{tag:"(0018,9910)",vr:"UT",name:"ProtocolDesignRationale",vm:"1",version:"DICOM"},"(0018,9911)":{tag:"(0018,9911)",vr:"SQ",name:"PatientSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9912)":{tag:"(0018,9912)",vr:"SQ",name:"ModelSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9913)":{tag:"(0018,9913)",vr:"SQ",name:"ParametersSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9914)":{tag:"(0018,9914)",vr:"SQ",name:"InstructionSequence",vm:"1",version:"DICOM"},"(0018,9915)":{tag:"(0018,9915)",vr:"US",name:"InstructionIndex",vm:"1",version:"DICOM"},"(0018,9916)":{tag:"(0018,9916)",vr:"LO",name:"InstructionText",vm:"1",version:"DICOM"},"(0018,9917)":{tag:"(0018,9917)",vr:"UT",name:"InstructionDescription",vm:"1",version:"DICOM"},"(0018,9918)":{tag:"(0018,9918)",vr:"CS",name:"InstructionPerformedFlag",vm:"1",version:"DICOM"},"(0018,9919)":{tag:"(0018,9919)",vr:"DT",name:"InstructionPerformedDateTime",vm:"1",version:"DICOM"},"(0018,991A)":{tag:"(0018,991A)",vr:"UT",name:"InstructionPerformanceComment",vm:"1",version:"DICOM"},"(0018,991B)":{tag:"(0018,991B)",vr:"SQ",name:"PatientPositioningInstructionSequence",vm:"1",version:"DICOM"},"(0018,991C)":{tag:"(0018,991C)",vr:"SQ",name:"PositioningMethodCodeSequence",vm:"1",version:"DICOM"},"(0018,991D)":{tag:"(0018,991D)",vr:"SQ",name:"PositioningLandmarkSequence",vm:"1",version:"DICOM"},"(0018,991E)":{tag:"(0018,991E)",vr:"UI",name:"TargetFrameOfReferenceUID",vm:"1",version:"DICOM"},"(0018,991F)":{tag:"(0018,991F)",vr:"SQ",name:"AcquisitionProtocolElementSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9920)":{tag:"(0018,9920)",vr:"SQ",name:"AcquisitionProtocolElementSequence",vm:"1",version:"DICOM"},"(0018,9921)":{tag:"(0018,9921)",vr:"US",name:"ProtocolElementNumber",vm:"1",version:"DICOM"},"(0018,9922)":{tag:"(0018,9922)",vr:"LO",name:"ProtocolElementName",vm:"1",version:"DICOM"},"(0018,9923)":{tag:"(0018,9923)",vr:"UT",name:"ProtocolElementCharacteristicsSummary",vm:"1",version:"DICOM"},"(0018,9924)":{tag:"(0018,9924)",vr:"UT",name:"ProtocolElementPurpose",vm:"1",version:"DICOM"},"(0018,9930)":{tag:"(0018,9930)",vr:"CS",name:"AcquisitionMotion",vm:"1",version:"DICOM"},"(0018,9931)":{tag:"(0018,9931)",vr:"SQ",name:"AcquisitionStartLocationSequence",vm:"1",version:"DICOM"},"(0018,9932)":{tag:"(0018,9932)",vr:"SQ",name:"AcquisitionEndLocationSequence",vm:"1",version:"DICOM"},"(0018,9933)":{tag:"(0018,9933)",vr:"SQ",name:"ReconstructionProtocolElementSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9934)":{tag:"(0018,9934)",vr:"SQ",name:"ReconstructionProtocolElementSequence",vm:"1",version:"DICOM"},"(0018,9935)":{tag:"(0018,9935)",vr:"SQ",name:"StorageProtocolElementSpecificationSequence",vm:"1",version:"DICOM"},"(0018,9936)":{tag:"(0018,9936)",vr:"SQ",name:"StorageProtocolElementSequence",vm:"1",version:"DICOM"},"(0018,9937)":{tag:"(0018,9937)",vr:"LO",name:"RequestedSeriesDescription",vm:"1",version:"DICOM"},"(0018,9938)":{tag:"(0018,9938)",vr:"US",name:"SourceAcquisitionProtocolElementNumber",vm:"1-n",version:"DICOM"},"(0018,9939)":{tag:"(0018,9939)",vr:"US",name:"SourceAcquisitionBeamNumber",vm:"1-n",version:"DICOM"},"(0018,993A)":{tag:"(0018,993A)",vr:"US",name:"SourceReconstructionProtocolElementNumber",vm:"1-n",version:"DICOM"},"(0018,993B)":{tag:"(0018,993B)",vr:"SQ",name:"ReconstructionStartLocationSequence",vm:"1",version:"DICOM"},"(0018,993C)":{tag:"(0018,993C)",vr:"SQ",name:"ReconstructionEndLocationSequence",vm:"1",version:"DICOM"},"(0018,993D)":{tag:"(0018,993D)",vr:"SQ",name:"ReconstructionAlgorithmSequence",vm:"1",version:"DICOM"},"(0018,993E)":{tag:"(0018,993E)",vr:"SQ",name:"ReconstructionTargetCenterLocationSequence",vm:"1",version:"DICOM"},"(0018,9941)":{tag:"(0018,9941)",vr:"UT",name:"ImageFilterDescription",vm:"1",version:"DICOM"},"(0018,9942)":{tag:"(0018,9942)",vr:"FD",name:"CTDIvolNotificationTrigger",vm:"1",version:"DICOM"},"(0018,9943)":{tag:"(0018,9943)",vr:"FD",name:"DLPNotificationTrigger",vm:"1",version:"DICOM"},"(0018,9944)":{tag:"(0018,9944)",vr:"CS",name:"AutoKVPSelectionType",vm:"1",version:"DICOM"},"(0018,9945)":{tag:"(0018,9945)",vr:"FD",name:"AutoKVPUpperBound",vm:"1",version:"DICOM"},"(0018,9946)":{tag:"(0018,9946)",vr:"FD",name:"AutoKVPLowerBound",vm:"1",version:"DICOM"},"(0018,9947)":{tag:"(0018,9947)",vr:"CS",name:"ProtocolDefinedPatientPosition",vm:"1",version:"DICOM"},"(0018,A001)":{tag:"(0018,A001)",vr:"SQ",name:"ContributingEquipmentSequence",vm:"1",version:"DICOM"},"(0018,A002)":{tag:"(0018,A002)",vr:"DT",name:"ContributionDateTime",vm:"1",version:"DICOM"},"(0018,A003)":{tag:"(0018,A003)",vr:"ST",name:"ContributionDescription",vm:"1",version:"DICOM"},"(0020,000D)":{tag:"(0020,000D)",vr:"UI",name:"StudyInstanceUID",vm:"1",version:"DICOM"},"(0020,000E)":{tag:"(0020,000E)",vr:"UI",name:"SeriesInstanceUID",vm:"1",version:"DICOM"},"(0020,0010)":{tag:"(0020,0010)",vr:"SH",name:"StudyID",vm:"1",version:"DICOM"},"(0020,0011)":{tag:"(0020,0011)",vr:"IS",name:"SeriesNumber",vm:"1",version:"DICOM"},"(0020,0012)":{tag:"(0020,0012)",vr:"IS",name:"AcquisitionNumber",vm:"1",version:"DICOM"},"(0020,0013)":{tag:"(0020,0013)",vr:"IS",name:"InstanceNumber",vm:"1",version:"DICOM"},"(0020,0019)":{tag:"(0020,0019)",vr:"IS",name:"ItemNumber",vm:"1",version:"DICOM"},"(0020,0020)":{tag:"(0020,0020)",vr:"CS",name:"PatientOrientation",vm:"2",version:"DICOM"},"(0020,0032)":{tag:"(0020,0032)",vr:"DS",name:"ImagePositionPatient",vm:"3",version:"DICOM"},"(0020,0037)":{tag:"(0020,0037)",vr:"DS",name:"ImageOrientationPatient",vm:"6",version:"DICOM"},"(0020,0052)":{tag:"(0020,0052)",vr:"UI",name:"FrameOfReferenceUID",vm:"1",version:"DICOM"},"(0020,0060)":{tag:"(0020,0060)",vr:"CS",name:"Laterality",vm:"1",version:"DICOM"},"(0020,0062)":{tag:"(0020,0062)",vr:"CS",name:"ImageLaterality",vm:"1",version:"DICOM"},"(0020,0100)":{tag:"(0020,0100)",vr:"IS",name:"TemporalPositionIdentifier",vm:"1",version:"DICOM"},"(0020,0105)":{tag:"(0020,0105)",vr:"IS",name:"NumberOfTemporalPositions",vm:"1",version:"DICOM"},"(0020,0110)":{tag:"(0020,0110)",vr:"DS",name:"TemporalResolution",vm:"1",version:"DICOM"},"(0020,0200)":{tag:"(0020,0200)",vr:"UI",name:"SynchronizationFrameOfReferenceUID",vm:"1",version:"DICOM"},"(0020,0242)":{tag:"(0020,0242)",vr:"UI",name:"SOPInstanceUIDOfConcatenationSource",vm:"1",version:"DICOM"},"(0020,1002)":{tag:"(0020,1002)",vr:"IS",name:"ImagesInAcquisition",vm:"1",version:"DICOM"},"(0020,103F)":{tag:"(0020,103F)",vr:"LO",name:"TargetPositionReferenceIndicator",vm:"1",version:"DICOM"},"(0020,1040)":{tag:"(0020,1040)",vr:"LO",name:"PositionReferenceIndicator",vm:"1",version:"DICOM"},"(0020,1041)":{tag:"(0020,1041)",vr:"DS",name:"SliceLocation",vm:"1",version:"DICOM"},"(0020,1200)":{tag:"(0020,1200)",vr:"IS",name:"NumberOfPatientRelatedStudies",vm:"1",version:"DICOM"},"(0020,1202)":{tag:"(0020,1202)",vr:"IS",name:"NumberOfPatientRelatedSeries",vm:"1",version:"DICOM"},"(0020,1204)":{tag:"(0020,1204)",vr:"IS",name:"NumberOfPatientRelatedInstances",vm:"1",version:"DICOM"},"(0020,1206)":{tag:"(0020,1206)",vr:"IS",name:"NumberOfStudyRelatedSeries",vm:"1",version:"DICOM"},"(0020,1208)":{tag:"(0020,1208)",vr:"IS",name:"NumberOfStudyRelatedInstances",vm:"1",version:"DICOM"},"(0020,1209)":{tag:"(0020,1209)",vr:"IS",name:"NumberOfSeriesRelatedInstances",vm:"1",version:"DICOM"},"(0020,4000)":{tag:"(0020,4000)",vr:"LT",name:"ImageComments",vm:"1",version:"DICOM"},"(0020,9056)":{tag:"(0020,9056)",vr:"SH",name:"StackID",vm:"1",version:"DICOM"},"(0020,9057)":{tag:"(0020,9057)",vr:"UL",name:"InStackPositionNumber",vm:"1",version:"DICOM"},"(0020,9071)":{tag:"(0020,9071)",vr:"SQ",name:"FrameAnatomySequence",vm:"1",version:"DICOM"},"(0020,9072)":{tag:"(0020,9072)",vr:"CS",name:"FrameLaterality",vm:"1",version:"DICOM"},"(0020,9111)":{tag:"(0020,9111)",vr:"SQ",name:"FrameContentSequence",vm:"1",version:"DICOM"},"(0020,9113)":{tag:"(0020,9113)",vr:"SQ",name:"PlanePositionSequence",vm:"1",version:"DICOM"},"(0020,9116)":{tag:"(0020,9116)",vr:"SQ",name:"PlaneOrientationSequence",vm:"1",version:"DICOM"},"(0020,9128)":{tag:"(0020,9128)",vr:"UL",name:"TemporalPositionIndex",vm:"1",version:"DICOM"},"(0020,9153)":{tag:"(0020,9153)",vr:"FD",name:"NominalCardiacTriggerDelayTime",vm:"1",version:"DICOM"},"(0020,9154)":{tag:"(0020,9154)",vr:"FL",name:"NominalCardiacTriggerTimePriorToRPeak",vm:"1",version:"DICOM"},"(0020,9155)":{tag:"(0020,9155)",vr:"FL",name:"ActualCardiacTriggerTimePriorToRPeak",vm:"1",version:"DICOM"},"(0020,9156)":{tag:"(0020,9156)",vr:"US",name:"FrameAcquisitionNumber",vm:"1",version:"DICOM"},"(0020,9157)":{tag:"(0020,9157)",vr:"UL",name:"DimensionIndexValues",vm:"1-n",version:"DICOM"},"(0020,9158)":{tag:"(0020,9158)",vr:"LT",name:"FrameComments",vm:"1",version:"DICOM"},"(0020,9161)":{tag:"(0020,9161)",vr:"UI",name:"ConcatenationUID",vm:"1",version:"DICOM"},"(0020,9162)":{tag:"(0020,9162)",vr:"US",name:"InConcatenationNumber",vm:"1",version:"DICOM"},"(0020,9163)":{tag:"(0020,9163)",vr:"US",name:"InConcatenationTotalNumber",vm:"1",version:"DICOM"},"(0020,9164)":{tag:"(0020,9164)",vr:"UI",name:"DimensionOrganizationUID",vm:"1",version:"DICOM"},"(0020,9165)":{tag:"(0020,9165)",vr:"AT",name:"DimensionIndexPointer",vm:"1",version:"DICOM"},"(0020,9167)":{tag:"(0020,9167)",vr:"AT",name:"FunctionalGroupPointer",vm:"1",version:"DICOM"},"(0020,9170)":{tag:"(0020,9170)",vr:"SQ",name:"UnassignedSharedConvertedAttributesSequence",vm:"1",version:"DICOM"},"(0020,9171)":{tag:"(0020,9171)",vr:"SQ",name:"UnassignedPerFrameConvertedAttributesSequence",vm:"1",version:"DICOM"},"(0020,9172)":{tag:"(0020,9172)",vr:"SQ",name:"ConversionSourceAttributesSequence",vm:"1",version:"DICOM"},"(0020,9213)":{tag:"(0020,9213)",vr:"LO",name:"DimensionIndexPrivateCreator",vm:"1",version:"DICOM"},"(0020,9221)":{tag:"(0020,9221)",vr:"SQ",name:"DimensionOrganizationSequence",vm:"1",version:"DICOM"},"(0020,9222)":{tag:"(0020,9222)",vr:"SQ",name:"DimensionIndexSequence",vm:"1",version:"DICOM"},"(0020,9228)":{tag:"(0020,9228)",vr:"UL",name:"ConcatenationFrameOffsetNumber",vm:"1",version:"DICOM"},"(0020,9238)":{tag:"(0020,9238)",vr:"LO",name:"FunctionalGroupPrivateCreator",vm:"1",version:"DICOM"},"(0020,9241)":{tag:"(0020,9241)",vr:"FL",name:"NominalPercentageOfCardiacPhase",vm:"1",version:"DICOM"},"(0020,9245)":{tag:"(0020,9245)",vr:"FL",name:"NominalPercentageOfRespiratoryPhase",vm:"1",version:"DICOM"},"(0020,9246)":{tag:"(0020,9246)",vr:"FL",name:"StartingRespiratoryAmplitude",vm:"1",version:"DICOM"},"(0020,9247)":{tag:"(0020,9247)",vr:"CS",name:"StartingRespiratoryPhase",vm:"1",version:"DICOM"},"(0020,9248)":{tag:"(0020,9248)",vr:"FL",name:"EndingRespiratoryAmplitude",vm:"1",version:"DICOM"},"(0020,9249)":{tag:"(0020,9249)",vr:"CS",name:"EndingRespiratoryPhase",vm:"1",version:"DICOM"},"(0020,9250)":{tag:"(0020,9250)",vr:"CS",name:"RespiratoryTriggerType",vm:"1",version:"DICOM"},"(0020,9251)":{tag:"(0020,9251)",vr:"FD",name:"RRIntervalTimeNominal",vm:"1",version:"DICOM"},"(0020,9252)":{tag:"(0020,9252)",vr:"FD",name:"ActualCardiacTriggerDelayTime",vm:"1",version:"DICOM"},"(0020,9253)":{tag:"(0020,9253)",vr:"SQ",name:"RespiratorySynchronizationSequence",vm:"1",version:"DICOM"},"(0020,9254)":{tag:"(0020,9254)",vr:"FD",name:"RespiratoryIntervalTime",vm:"1",version:"DICOM"},"(0020,9255)":{tag:"(0020,9255)",vr:"FD",name:"NominalRespiratoryTriggerDelayTime",vm:"1",version:"DICOM"},"(0020,9256)":{tag:"(0020,9256)",vr:"FD",name:"RespiratoryTriggerDelayThreshold",vm:"1",version:"DICOM"},"(0020,9257)":{tag:"(0020,9257)",vr:"FD",name:"ActualRespiratoryTriggerDelayTime",vm:"1",version:"DICOM"},"(0020,9301)":{tag:"(0020,9301)",vr:"FD",name:"ImagePositionVolume",vm:"3",version:"DICOM"},"(0020,9302)":{tag:"(0020,9302)",vr:"FD",name:"ImageOrientationVolume",vm:"6",version:"DICOM"},"(0020,9307)":{tag:"(0020,9307)",vr:"CS",name:"UltrasoundAcquisitionGeometry",vm:"1",version:"DICOM"},"(0020,9308)":{tag:"(0020,9308)",vr:"FD",name:"ApexPosition",vm:"3",version:"DICOM"},"(0020,9309)":{tag:"(0020,9309)",vr:"FD",name:"VolumeToTransducerMappingMatrix",vm:"16",version:"DICOM"},"(0020,930A)":{tag:"(0020,930A)",vr:"FD",name:"VolumeToTableMappingMatrix",vm:"16",version:"DICOM"},"(0020,930B)":{tag:"(0020,930B)",vr:"CS",name:"VolumeToTransducerRelationship",vm:"1",version:"DICOM"},"(0020,930C)":{tag:"(0020,930C)",vr:"CS",name:"PatientFrameOfReferenceSource",vm:"1",version:"DICOM"},"(0020,930D)":{tag:"(0020,930D)",vr:"FD",name:"TemporalPositionTimeOffset",vm:"1",version:"DICOM"},"(0020,930E)":{tag:"(0020,930E)",vr:"SQ",name:"PlanePositionVolumeSequence",vm:"1",version:"DICOM"},"(0020,930F)":{tag:"(0020,930F)",vr:"SQ",name:"PlaneOrientationVolumeSequence",vm:"1",version:"DICOM"},"(0020,9310)":{tag:"(0020,9310)",vr:"SQ",name:"TemporalPositionSequence",vm:"1",version:"DICOM"},"(0020,9311)":{tag:"(0020,9311)",vr:"CS",name:"DimensionOrganizationType",vm:"1",version:"DICOM"},"(0020,9312)":{tag:"(0020,9312)",vr:"UI",name:"VolumeFrameOfReferenceUID",vm:"1",version:"DICOM"},"(0020,9313)":{tag:"(0020,9313)",vr:"UI",name:"TableFrameOfReferenceUID",vm:"1",version:"DICOM"},"(0020,9421)":{tag:"(0020,9421)",vr:"LO",name:"DimensionDescriptionLabel",vm:"1",version:"DICOM"},"(0020,9450)":{tag:"(0020,9450)",vr:"SQ",name:"PatientOrientationInFrameSequence",vm:"1",version:"DICOM"},"(0020,9453)":{tag:"(0020,9453)",vr:"LO",name:"FrameLabel",vm:"1",version:"DICOM"},"(0020,9518)":{tag:"(0020,9518)",vr:"US",name:"AcquisitionIndex",vm:"1-n",version:"DICOM"},"(0020,9529)":{tag:"(0020,9529)",vr:"SQ",name:"ContributingSOPInstancesReferenceSequence",vm:"1",version:"DICOM"},"(0020,9536)":{tag:"(0020,9536)",vr:"US",name:"ReconstructionIndex",vm:"1",version:"DICOM"},"(0022,0001)":{tag:"(0022,0001)",vr:"US",name:"LightPathFilterPassThroughWavelength",vm:"1",version:"DICOM"},"(0022,0002)":{tag:"(0022,0002)",vr:"US",name:"LightPathFilterPassBand",vm:"2",version:"DICOM"},"(0022,0003)":{tag:"(0022,0003)",vr:"US",name:"ImagePathFilterPassThroughWavelength",vm:"1",version:"DICOM"},"(0022,0004)":{tag:"(0022,0004)",vr:"US",name:"ImagePathFilterPassBand",vm:"2",version:"DICOM"},"(0022,0005)":{tag:"(0022,0005)",vr:"CS",name:"PatientEyeMovementCommanded",vm:"1",version:"DICOM"},"(0022,0006)":{tag:"(0022,0006)",vr:"SQ",name:"PatientEyeMovementCommandCodeSequence",vm:"1",version:"DICOM"},"(0022,0007)":{tag:"(0022,0007)",vr:"FL",name:"SphericalLensPower",vm:"1",version:"DICOM"},"(0022,0008)":{tag:"(0022,0008)",vr:"FL",name:"CylinderLensPower",vm:"1",version:"DICOM"},"(0022,0009)":{tag:"(0022,0009)",vr:"FL",name:"CylinderAxis",vm:"1",version:"DICOM"},"(0022,000A)":{tag:"(0022,000A)",vr:"FL",name:"EmmetropicMagnification",vm:"1",version:"DICOM"},"(0022,000B)":{tag:"(0022,000B)",vr:"FL",name:"IntraOcularPressure",vm:"1",version:"DICOM"},"(0022,000C)":{tag:"(0022,000C)",vr:"FL",name:"HorizontalFieldOfView",vm:"1",version:"DICOM"},"(0022,000D)":{tag:"(0022,000D)",vr:"CS",name:"PupilDilated",vm:"1",version:"DICOM"},"(0022,000E)":{tag:"(0022,000E)",vr:"FL",name:"DegreeOfDilation",vm:"1",version:"DICOM"},"(0022,0010)":{tag:"(0022,0010)",vr:"FL",name:"StereoBaselineAngle",vm:"1",version:"DICOM"},"(0022,0011)":{tag:"(0022,0011)",vr:"FL",name:"StereoBaselineDisplacement",vm:"1",version:"DICOM"},"(0022,0012)":{tag:"(0022,0012)",vr:"FL",name:"StereoHorizontalPixelOffset",vm:"1",version:"DICOM"},"(0022,0013)":{tag:"(0022,0013)",vr:"FL",name:"StereoVerticalPixelOffset",vm:"1",version:"DICOM"},"(0022,0014)":{tag:"(0022,0014)",vr:"FL",name:"StereoRotation",vm:"1",version:"DICOM"},"(0022,0015)":{tag:"(0022,0015)",vr:"SQ",name:"AcquisitionDeviceTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,0016)":{tag:"(0022,0016)",vr:"SQ",name:"IlluminationTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,0017)":{tag:"(0022,0017)",vr:"SQ",name:"LightPathFilterTypeStackCodeSequence",vm:"1",version:"DICOM"},"(0022,0018)":{tag:"(0022,0018)",vr:"SQ",name:"ImagePathFilterTypeStackCodeSequence",vm:"1",version:"DICOM"},"(0022,0019)":{tag:"(0022,0019)",vr:"SQ",name:"LensesCodeSequence",vm:"1",version:"DICOM"},"(0022,001A)":{tag:"(0022,001A)",vr:"SQ",name:"ChannelDescriptionCodeSequence",vm:"1",version:"DICOM"},"(0022,001B)":{tag:"(0022,001B)",vr:"SQ",name:"RefractiveStateSequence",vm:"1",version:"DICOM"},"(0022,001C)":{tag:"(0022,001C)",vr:"SQ",name:"MydriaticAgentCodeSequence",vm:"1",version:"DICOM"},"(0022,001D)":{tag:"(0022,001D)",vr:"SQ",name:"RelativeImagePositionCodeSequence",vm:"1",version:"DICOM"},"(0022,001E)":{tag:"(0022,001E)",vr:"FL",name:"CameraAngleOfView",vm:"1",version:"DICOM"},"(0022,0020)":{tag:"(0022,0020)",vr:"SQ",name:"StereoPairsSequence",vm:"1",version:"DICOM"},"(0022,0021)":{tag:"(0022,0021)",vr:"SQ",name:"LeftImageSequence",vm:"1",version:"DICOM"},"(0022,0022)":{tag:"(0022,0022)",vr:"SQ",name:"RightImageSequence",vm:"1",version:"DICOM"},"(0022,0028)":{tag:"(0022,0028)",vr:"CS",name:"StereoPairsPresent",vm:"1",version:"DICOM"},"(0022,0030)":{tag:"(0022,0030)",vr:"FL",name:"AxialLengthOfTheEye",vm:"1",version:"DICOM"},"(0022,0031)":{tag:"(0022,0031)",vr:"SQ",name:"OphthalmicFrameLocationSequence",vm:"1",version:"DICOM"},"(0022,0032)":{tag:"(0022,0032)",vr:"FL",name:"ReferenceCoordinates",vm:"2-2n",version:"DICOM"},"(0022,0035)":{tag:"(0022,0035)",vr:"FL",name:"DepthSpatialResolution",vm:"1",version:"DICOM"},"(0022,0036)":{tag:"(0022,0036)",vr:"FL",name:"MaximumDepthDistortion",vm:"1",version:"DICOM"},"(0022,0037)":{tag:"(0022,0037)",vr:"FL",name:"AlongScanSpatialResolution",vm:"1",version:"DICOM"},"(0022,0038)":{tag:"(0022,0038)",vr:"FL",name:"MaximumAlongScanDistortion",vm:"1",version:"DICOM"},"(0022,0039)":{tag:"(0022,0039)",vr:"CS",name:"OphthalmicImageOrientation",vm:"1",version:"DICOM"},"(0022,0041)":{tag:"(0022,0041)",vr:"FL",name:"DepthOfTransverseImage",vm:"1",version:"DICOM"},"(0022,0042)":{tag:"(0022,0042)",vr:"SQ",name:"MydriaticAgentConcentrationUnitsSequence",vm:"1",version:"DICOM"},"(0022,0048)":{tag:"(0022,0048)",vr:"FL",name:"AcrossScanSpatialResolution",vm:"1",version:"DICOM"},"(0022,0049)":{tag:"(0022,0049)",vr:"FL",name:"MaximumAcrossScanDistortion",vm:"1",version:"DICOM"},"(0022,004E)":{tag:"(0022,004E)",vr:"DS",name:"MydriaticAgentConcentration",vm:"1",version:"DICOM"},"(0022,0055)":{tag:"(0022,0055)",vr:"FL",name:"IlluminationWaveLength",vm:"1",version:"DICOM"},"(0022,0056)":{tag:"(0022,0056)",vr:"FL",name:"IlluminationPower",vm:"1",version:"DICOM"},"(0022,0057)":{tag:"(0022,0057)",vr:"FL",name:"IlluminationBandwidth",vm:"1",version:"DICOM"},"(0022,0058)":{tag:"(0022,0058)",vr:"SQ",name:"MydriaticAgentSequence",vm:"1",version:"DICOM"},"(0022,1007)":{tag:"(0022,1007)",vr:"SQ",name:"OphthalmicAxialMeasurementsRightEyeSequence",vm:"1",version:"DICOM"},"(0022,1008)":{tag:"(0022,1008)",vr:"SQ",name:"OphthalmicAxialMeasurementsLeftEyeSequence",vm:"1",version:"DICOM"},"(0022,1009)":{tag:"(0022,1009)",vr:"CS",name:"OphthalmicAxialMeasurementsDeviceType",vm:"1",version:"DICOM"},"(0022,1010)":{tag:"(0022,1010)",vr:"CS",name:"OphthalmicAxialLengthMeasurementsType",vm:"1",version:"DICOM"},"(0022,1012)":{tag:"(0022,1012)",vr:"SQ",name:"OphthalmicAxialLengthSequence",vm:"1",version:"DICOM"},"(0022,1019)":{tag:"(0022,1019)",vr:"FL",name:"OphthalmicAxialLength",vm:"1",version:"DICOM"},"(0022,1024)":{tag:"(0022,1024)",vr:"SQ",name:"LensStatusCodeSequence",vm:"1",version:"DICOM"},"(0022,1025)":{tag:"(0022,1025)",vr:"SQ",name:"VitreousStatusCodeSequence",vm:"1",version:"DICOM"},"(0022,1028)":{tag:"(0022,1028)",vr:"SQ",name:"IOLFormulaCodeSequence",vm:"1",version:"DICOM"},"(0022,1029)":{tag:"(0022,1029)",vr:"LO",name:"IOLFormulaDetail",vm:"1",version:"DICOM"},"(0022,1033)":{tag:"(0022,1033)",vr:"FL",name:"KeratometerIndex",vm:"1",version:"DICOM"},"(0022,1035)":{tag:"(0022,1035)",vr:"SQ",name:"SourceOfOphthalmicAxialLengthCodeSequence",vm:"1",version:"DICOM"},"(0022,1036)":{tag:"(0022,1036)",vr:"SQ",name:"SourceOfCornealSizeDataCodeSequence",vm:"1",version:"DICOM"},"(0022,1037)":{tag:"(0022,1037)",vr:"FL",name:"TargetRefraction",vm:"1",version:"DICOM"},"(0022,1039)":{tag:"(0022,1039)",vr:"CS",name:"RefractiveProcedureOccurred",vm:"1",version:"DICOM"},"(0022,1040)":{tag:"(0022,1040)",vr:"SQ",name:"RefractiveSurgeryTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,1044)":{tag:"(0022,1044)",vr:"SQ",name:"OphthalmicUltrasoundMethodCodeSequence",vm:"1",version:"DICOM"},"(0022,1045)":{tag:"(0022,1045)",vr:"SQ",name:"SurgicallyInducedAstigmatismSequence",vm:"1",version:"DICOM"},"(0022,1046)":{tag:"(0022,1046)",vr:"CS",name:"TypeOfOpticalCorrection",vm:"1",version:"DICOM"},"(0022,1047)":{tag:"(0022,1047)",vr:"SQ",name:"ToricIOLPowerSequence",vm:"1",version:"DICOM"},"(0022,1048)":{tag:"(0022,1048)",vr:"SQ",name:"PredictedToricErrorSequence",vm:"1",version:"DICOM"},"(0022,1049)":{tag:"(0022,1049)",vr:"CS",name:"PreSelectedForImplantation",vm:"1",version:"DICOM"},"(0022,104A)":{tag:"(0022,104A)",vr:"SQ",name:"ToricIOLPowerForExactEmmetropiaSequence",vm:"1",version:"DICOM"},"(0022,104B)":{tag:"(0022,104B)",vr:"SQ",name:"ToricIOLPowerForExactTargetRefractionSequence",vm:"1",version:"DICOM"},"(0022,1050)":{tag:"(0022,1050)",vr:"SQ",name:"OphthalmicAxialLengthMeasurementsSequence",vm:"1",version:"DICOM"},"(0022,1053)":{tag:"(0022,1053)",vr:"FL",name:"IOLPower",vm:"1",version:"DICOM"},"(0022,1054)":{tag:"(0022,1054)",vr:"FL",name:"PredictedRefractiveError",vm:"1",version:"DICOM"},"(0022,1059)":{tag:"(0022,1059)",vr:"FL",name:"OphthalmicAxialLengthVelocity",vm:"1",version:"DICOM"},"(0022,1065)":{tag:"(0022,1065)",vr:"LO",name:"LensStatusDescription",vm:"1",version:"DICOM"},"(0022,1066)":{tag:"(0022,1066)",vr:"LO",name:"VitreousStatusDescription",vm:"1",version:"DICOM"},"(0022,1090)":{tag:"(0022,1090)",vr:"SQ",name:"IOLPowerSequence",vm:"1",version:"DICOM"},"(0022,1092)":{tag:"(0022,1092)",vr:"SQ",name:"LensConstantSequence",vm:"1",version:"DICOM"},"(0022,1093)":{tag:"(0022,1093)",vr:"LO",name:"IOLManufacturer",vm:"1",version:"DICOM"},"(0022,1095)":{tag:"(0022,1095)",vr:"LO",name:"ImplantName",vm:"1",version:"DICOM"},"(0022,1096)":{tag:"(0022,1096)",vr:"SQ",name:"KeratometryMeasurementTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,1097)":{tag:"(0022,1097)",vr:"LO",name:"ImplantPartNumber",vm:"1",version:"DICOM"},"(0022,1100)":{tag:"(0022,1100)",vr:"SQ",name:"ReferencedOphthalmicAxialMeasurementsSequence",vm:"1",version:"DICOM"},"(0022,1101)":{tag:"(0022,1101)",vr:"SQ",name:"OphthalmicAxialLengthMeasurementsSegmentNameCodeSequence",vm:"1",version:"DICOM"},"(0022,1103)":{tag:"(0022,1103)",vr:"SQ",name:"RefractiveErrorBeforeRefractiveSurgeryCodeSequence",vm:"1",version:"DICOM"},"(0022,1121)":{tag:"(0022,1121)",vr:"FL",name:"IOLPowerForExactEmmetropia",vm:"1",version:"DICOM"},"(0022,1122)":{tag:"(0022,1122)",vr:"FL",name:"IOLPowerForExactTargetRefraction",vm:"1",version:"DICOM"},"(0022,1125)":{tag:"(0022,1125)",vr:"SQ",name:"AnteriorChamberDepthDefinitionCodeSequence",vm:"1",version:"DICOM"},"(0022,1127)":{tag:"(0022,1127)",vr:"SQ",name:"LensThicknessSequence",vm:"1",version:"DICOM"},"(0022,1128)":{tag:"(0022,1128)",vr:"SQ",name:"AnteriorChamberDepthSequence",vm:"1",version:"DICOM"},"(0022,112A)":{tag:"(0022,112A)",vr:"SQ",name:"CalculationCommentSequence",vm:"1",version:"DICOM"},"(0022,112B)":{tag:"(0022,112B)",vr:"CS",name:"CalculationCommentType",vm:"1",version:"DICOM"},"(0022,112C)":{tag:"(0022,112C)",vr:"LT",name:"CalculationComment",vm:"1",version:"DICOM"},"(0022,1130)":{tag:"(0022,1130)",vr:"FL",name:"LensThickness",vm:"1",version:"DICOM"},"(0022,1131)":{tag:"(0022,1131)",vr:"FL",name:"AnteriorChamberDepth",vm:"1",version:"DICOM"},"(0022,1132)":{tag:"(0022,1132)",vr:"SQ",name:"SourceOfLensThicknessDataCodeSequence",vm:"1",version:"DICOM"},"(0022,1133)":{tag:"(0022,1133)",vr:"SQ",name:"SourceOfAnteriorChamberDepthDataCodeSequence",vm:"1",version:"DICOM"},"(0022,1134)":{tag:"(0022,1134)",vr:"SQ",name:"SourceOfRefractiveMeasurementsSequence",vm:"1",version:"DICOM"},"(0022,1135)":{tag:"(0022,1135)",vr:"SQ",name:"SourceOfRefractiveMeasurementsCodeSequence",vm:"1",version:"DICOM"},"(0022,1140)":{tag:"(0022,1140)",vr:"CS",name:"OphthalmicAxialLengthMeasurementModified",vm:"1",version:"DICOM"},"(0022,1150)":{tag:"(0022,1150)",vr:"SQ",name:"OphthalmicAxialLengthDataSourceCodeSequence",vm:"1",version:"DICOM"},"(0022,1155)":{tag:"(0022,1155)",vr:"FL",name:"SignalToNoiseRatio",vm:"1",version:"DICOM"},"(0022,1159)":{tag:"(0022,1159)",vr:"LO",name:"OphthalmicAxialLengthDataSourceDescription",vm:"1",version:"DICOM"},"(0022,1210)":{tag:"(0022,1210)",vr:"SQ",name:"OphthalmicAxialLengthMeasurementsTotalLengthSequence",vm:"1",version:"DICOM"},"(0022,1211)":{tag:"(0022,1211)",vr:"SQ",name:"OphthalmicAxialLengthMeasurementsSegmentalLengthSequence",vm:"1",version:"DICOM"},"(0022,1212)":{tag:"(0022,1212)",vr:"SQ",name:"OphthalmicAxialLengthMeasurementsLengthSummationSequence",vm:"1",version:"DICOM"},"(0022,1220)":{tag:"(0022,1220)",vr:"SQ",name:"UltrasoundOphthalmicAxialLengthMeasurementsSequence",vm:"1",version:"DICOM"},"(0022,1225)":{tag:"(0022,1225)",vr:"SQ",name:"OpticalOphthalmicAxialLengthMeasurementsSequence",vm:"1",version:"DICOM"},"(0022,1230)":{tag:"(0022,1230)",vr:"SQ",name:"UltrasoundSelectedOphthalmicAxialLengthSequence",vm:"1",version:"DICOM"},"(0022,1250)":{tag:"(0022,1250)",vr:"SQ",name:"OphthalmicAxialLengthSelectionMethodCodeSequence",vm:"1",version:"DICOM"},"(0022,1255)":{tag:"(0022,1255)",vr:"SQ",name:"OpticalSelectedOphthalmicAxialLengthSequence",vm:"1",version:"DICOM"},"(0022,1257)":{tag:"(0022,1257)",vr:"SQ",name:"SelectedSegmentalOphthalmicAxialLengthSequence",vm:"1",version:"DICOM"},"(0022,1260)":{tag:"(0022,1260)",vr:"SQ",name:"SelectedTotalOphthalmicAxialLengthSequence",vm:"1",version:"DICOM"},"(0022,1262)":{tag:"(0022,1262)",vr:"SQ",name:"OphthalmicAxialLengthQualityMetricSequence",vm:"1",version:"DICOM"},"(0022,1300)":{tag:"(0022,1300)",vr:"SQ",name:"IntraocularLensCalculationsRightEyeSequence",vm:"1",version:"DICOM"},"(0022,1310)":{tag:"(0022,1310)",vr:"SQ",name:"IntraocularLensCalculationsLeftEyeSequence",vm:"1",version:"DICOM"},"(0022,1330)":{tag:"(0022,1330)",vr:"SQ",name:"ReferencedOphthalmicAxialLengthMeasurementQCImageSequence",vm:"1",version:"DICOM"},"(0022,1415)":{tag:"(0022,1415)",vr:"CS",name:"OphthalmicMappingDeviceType",vm:"1",version:"DICOM"},"(0022,1420)":{tag:"(0022,1420)",vr:"SQ",name:"AcquisitionMethodCodeSequence",vm:"1",version:"DICOM"},"(0022,1423)":{tag:"(0022,1423)",vr:"SQ",name:"AcquisitionMethodAlgorithmSequence",vm:"1",version:"DICOM"},"(0022,1436)":{tag:"(0022,1436)",vr:"SQ",name:"OphthalmicThicknessMapTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,1443)":{tag:"(0022,1443)",vr:"SQ",name:"OphthalmicThicknessMappingNormalsSequence",vm:"1",version:"DICOM"},"(0022,1445)":{tag:"(0022,1445)",vr:"SQ",name:"RetinalThicknessDefinitionCodeSequence",vm:"1",version:"DICOM"},"(0022,1450)":{tag:"(0022,1450)",vr:"SQ",name:"PixelValueMappingToCodedConceptSequence",vm:"1",version:"DICOM"},"(0022,1452)":{tag:"(0022,1452)",vr:"xs",name:"MappedPixelValue",vm:"1",version:"DICOM"},"(0022,1454)":{tag:"(0022,1454)",vr:"LO",name:"PixelValueMappingExplanation",vm:"1",version:"DICOM"},"(0022,1458)":{tag:"(0022,1458)",vr:"SQ",name:"OphthalmicThicknessMapQualityThresholdSequence",vm:"1",version:"DICOM"},"(0022,1460)":{tag:"(0022,1460)",vr:"FL",name:"OphthalmicThicknessMapThresholdQualityRating",vm:"1",version:"DICOM"},"(0022,1463)":{tag:"(0022,1463)",vr:"FL",name:"AnatomicStructureReferencePoint",vm:"2",version:"DICOM"},"(0022,1465)":{tag:"(0022,1465)",vr:"SQ",name:"RegistrationToLocalizerSequence",vm:"1",version:"DICOM"},"(0022,1466)":{tag:"(0022,1466)",vr:"CS",name:"RegisteredLocalizerUnits",vm:"1",version:"DICOM"},"(0022,1467)":{tag:"(0022,1467)",vr:"FL",name:"RegisteredLocalizerTopLeftHandCorner",vm:"2",version:"DICOM"},"(0022,1468)":{tag:"(0022,1468)",vr:"FL",name:"RegisteredLocalizerBottomRightHandCorner",vm:"2",version:"DICOM"},"(0022,1470)":{tag:"(0022,1470)",vr:"SQ",name:"OphthalmicThicknessMapQualityRatingSequence",vm:"1",version:"DICOM"},"(0022,1472)":{tag:"(0022,1472)",vr:"SQ",name:"RelevantOPTAttributesSequence",vm:"1",version:"DICOM"},"(0022,1512)":{tag:"(0022,1512)",vr:"SQ",name:"TransformationMethodCodeSequence",vm:"1",version:"DICOM"},"(0022,1513)":{tag:"(0022,1513)",vr:"SQ",name:"TransformationAlgorithmSequence",vm:"1",version:"DICOM"},"(0022,1515)":{tag:"(0022,1515)",vr:"CS",name:"OphthalmicAxialLengthMethod",vm:"1",version:"DICOM"},"(0022,1517)":{tag:"(0022,1517)",vr:"FL",name:"OphthalmicFOV",vm:"1",version:"DICOM"},"(0022,1518)":{tag:"(0022,1518)",vr:"SQ",name:"TwoDimensionalToThreeDimensionalMapSequence",vm:"1",version:"DICOM"},"(0022,1525)":{tag:"(0022,1525)",vr:"SQ",name:"WideFieldOphthalmicPhotographyQualityRatingSequence",vm:"1",version:"DICOM"},"(0022,1526)":{tag:"(0022,1526)",vr:"SQ",name:"WideFieldOphthalmicPhotographyQualityThresholdSequence",vm:"1",version:"DICOM"},"(0022,1527)":{tag:"(0022,1527)",vr:"FL",name:"WideFieldOphthalmicPhotographyThresholdQualityRating",vm:"1",version:"DICOM"},"(0022,1528)":{tag:"(0022,1528)",vr:"FL",name:"XCoordinatesCenterPixelViewAngle",vm:"1",version:"DICOM"},"(0022,1529)":{tag:"(0022,1529)",vr:"FL",name:"YCoordinatesCenterPixelViewAngle",vm:"1",version:"DICOM"},"(0022,1530)":{tag:"(0022,1530)",vr:"UL",name:"NumberOfMapPoints",vm:"1",version:"DICOM"},"(0022,1531)":{tag:"(0022,1531)",vr:"OF",name:"TwoDimensionalToThreeDimensionalMapData",vm:"1",version:"DICOM"},"(0022,1612)":{tag:"(0022,1612)",vr:"SQ",name:"DerivationAlgorithmSequence",vm:"1",version:"DICOM"},"(0022,1615)":{tag:"(0022,1615)",vr:"SQ",name:"OphthalmicImageTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,1616)":{tag:"(0022,1616)",vr:"LO",name:"OphthalmicImageTypeDescription",vm:"1",version:"DICOM"},"(0022,1618)":{tag:"(0022,1618)",vr:"SQ",name:"ScanPatternTypeCodeSequence",vm:"1",version:"DICOM"},"(0022,1620)":{tag:"(0022,1620)",vr:"SQ",name:"ReferencedSurfaceMeshIdentificationSequence",vm:"1",version:"DICOM"},"(0022,1622)":{tag:"(0022,1622)",vr:"CS",name:"OphthalmicVolumetricPropertiesFlag",vm:"1",version:"DICOM"},"(0022,1624)":{tag:"(0022,1624)",vr:"FL",name:"OphthalmicAnatomicReferencePointXCoordinate",vm:"1",version:"DICOM"},"(0022,1626)":{tag:"(0022,1626)",vr:"FL",name:"OphthalmicAnatomicReferencePointYCoordinate",vm:"1",version:"DICOM"},"(0022,1628)":{tag:"(0022,1628)",vr:"SQ",name:"OphthalmicEnFaceImageQualityRatingSequence",vm:"1",version:"DICOM"},"(0022,1630)":{tag:"(0022,1630)",vr:"DS",name:"QualityThreshold",vm:"1",version:"DICOM"},"(0022,1640)":{tag:"(0022,1640)",vr:"SQ",name:"OCTBscanAnalysisAcquisitionParametersSequence",vm:"1",version:"DICOM"},"(0022,1642)":{tag:"(0022,1642)",vr:"UL",name:"NumberofBscansPerFrame",vm:"1",version:"DICOM"},"(0022,1643)":{tag:"(0022,1643)",vr:"FL",name:"BscanSlabThickness",vm:"1",version:"DICOM"},"(0022,1644)":{tag:"(0022,1644)",vr:"FL",name:"DistanceBetweenBscanSlabs",vm:"1",version:"DICOM"},"(0022,1645)":{tag:"(0022,1645)",vr:"FL",name:"BscanCycleTime",vm:"1",version:"DICOM"},"(0022,1646)":{tag:"(0022,1646)",vr:"FL",name:"BscanCycleTimeVector",vm:"1-n",version:"DICOM"},"(0022,1649)":{tag:"(0022,1649)",vr:"FL",name:"AscanRate",vm:"1",version:"DICOM"},"(0022,1650)":{tag:"(0022,1650)",vr:"FL",name:"BscanRate",vm:"1",version:"DICOM"},"(0022,1658)":{tag:"(0022,1658)",vr:"UL",name:"SurfaceMeshZPixelOffset",vm:"1",version:"DICOM"},"(0024,0010)":{tag:"(0024,0010)",vr:"FL",name:"VisualFieldHorizontalExtent",vm:"1",version:"DICOM"},"(0024,0011)":{tag:"(0024,0011)",vr:"FL",name:"VisualFieldVerticalExtent",vm:"1",version:"DICOM"},"(0024,0012)":{tag:"(0024,0012)",vr:"CS",name:"VisualFieldShape",vm:"1",version:"DICOM"},"(0024,0016)":{tag:"(0024,0016)",vr:"SQ",name:"ScreeningTestModeCodeSequence",vm:"1",version:"DICOM"},"(0024,0018)":{tag:"(0024,0018)",vr:"FL",name:"MaximumStimulusLuminance",vm:"1",version:"DICOM"},"(0024,0020)":{tag:"(0024,0020)",vr:"FL",name:"BackgroundLuminance",vm:"1",version:"DICOM"},"(0024,0021)":{tag:"(0024,0021)",vr:"SQ",name:"StimulusColorCodeSequence",vm:"1",version:"DICOM"},"(0024,0024)":{tag:"(0024,0024)",vr:"SQ",name:"BackgroundIlluminationColorCodeSequence",vm:"1",version:"DICOM"},"(0024,0025)":{tag:"(0024,0025)",vr:"FL",name:"StimulusArea",vm:"1",version:"DICOM"},"(0024,0028)":{tag:"(0024,0028)",vr:"FL",name:"StimulusPresentationTime",vm:"1",version:"DICOM"},"(0024,0032)":{tag:"(0024,0032)",vr:"SQ",name:"FixationSequence",vm:"1",version:"DICOM"},"(0024,0033)":{tag:"(0024,0033)",vr:"SQ",name:"FixationMonitoringCodeSequence",vm:"1",version:"DICOM"},"(0024,0034)":{tag:"(0024,0034)",vr:"SQ",name:"VisualFieldCatchTrialSequence",vm:"1",version:"DICOM"},"(0024,0035)":{tag:"(0024,0035)",vr:"US",name:"FixationCheckedQuantity",vm:"1",version:"DICOM"},"(0024,0036)":{tag:"(0024,0036)",vr:"US",name:"PatientNotProperlyFixatedQuantity",vm:"1",version:"DICOM"},"(0024,0037)":{tag:"(0024,0037)",vr:"CS",name:"PresentedVisualStimuliDataFlag",vm:"1",version:"DICOM"},"(0024,0038)":{tag:"(0024,0038)",vr:"US",name:"NumberOfVisualStimuli",vm:"1",version:"DICOM"},"(0024,0039)":{tag:"(0024,0039)",vr:"CS",name:"ExcessiveFixationLossesDataFlag",vm:"1",version:"DICOM"},"(0024,0040)":{tag:"(0024,0040)",vr:"CS",name:"ExcessiveFixationLosses",vm:"1",version:"DICOM"},"(0024,0042)":{tag:"(0024,0042)",vr:"US",name:"StimuliRetestingQuantity",vm:"1",version:"DICOM"},"(0024,0044)":{tag:"(0024,0044)",vr:"LT",name:"CommentsOnPatientPerformanceOfVisualField",vm:"1",version:"DICOM"},"(0024,0045)":{tag:"(0024,0045)",vr:"CS",name:"FalseNegativesEstimateFlag",vm:"1",version:"DICOM"},"(0024,0046)":{tag:"(0024,0046)",vr:"FL",name:"FalseNegativesEstimate",vm:"1",version:"DICOM"},"(0024,0048)":{tag:"(0024,0048)",vr:"US",name:"NegativeCatchTrialsQuantity",vm:"1",version:"DICOM"},"(0024,0050)":{tag:"(0024,0050)",vr:"US",name:"FalseNegativesQuantity",vm:"1",version:"DICOM"},"(0024,0051)":{tag:"(0024,0051)",vr:"CS",name:"ExcessiveFalseNegativesDataFlag",vm:"1",version:"DICOM"},"(0024,0052)":{tag:"(0024,0052)",vr:"CS",name:"ExcessiveFalseNegatives",vm:"1",version:"DICOM"},"(0024,0053)":{tag:"(0024,0053)",vr:"CS",name:"FalsePositivesEstimateFlag",vm:"1",version:"DICOM"},"(0024,0054)":{tag:"(0024,0054)",vr:"FL",name:"FalsePositivesEstimate",vm:"1",version:"DICOM"},"(0024,0055)":{tag:"(0024,0055)",vr:"CS",name:"CatchTrialsDataFlag",vm:"1",version:"DICOM"},"(0024,0056)":{tag:"(0024,0056)",vr:"US",name:"PositiveCatchTrialsQuantity",vm:"1",version:"DICOM"},"(0024,0057)":{tag:"(0024,0057)",vr:"CS",name:"TestPointNormalsDataFlag",vm:"1",version:"DICOM"},"(0024,0058)":{tag:"(0024,0058)",vr:"SQ",name:"TestPointNormalsSequence",vm:"1",version:"DICOM"},"(0024,0059)":{tag:"(0024,0059)",vr:"CS",name:"GlobalDeviationProbabilityNormalsFlag",vm:"1",version:"DICOM"},"(0024,0060)":{tag:"(0024,0060)",vr:"US",name:"FalsePositivesQuantity",vm:"1",version:"DICOM"},"(0024,0061)":{tag:"(0024,0061)",vr:"CS",name:"ExcessiveFalsePositivesDataFlag",vm:"1",version:"DICOM"},"(0024,0062)":{tag:"(0024,0062)",vr:"CS",name:"ExcessiveFalsePositives",vm:"1",version:"DICOM"},"(0024,0063)":{tag:"(0024,0063)",vr:"CS",name:"VisualFieldTestNormalsFlag",vm:"1",version:"DICOM"},"(0024,0064)":{tag:"(0024,0064)",vr:"SQ",name:"ResultsNormalsSequence",vm:"1",version:"DICOM"},"(0024,0065)":{tag:"(0024,0065)",vr:"SQ",name:"AgeCorrectedSensitivityDeviationAlgorithmSequence",vm:"1",version:"DICOM"},"(0024,0066)":{tag:"(0024,0066)",vr:"FL",name:"GlobalDeviationFromNormal",vm:"1",version:"DICOM"},"(0024,0067)":{tag:"(0024,0067)",vr:"SQ",name:"GeneralizedDefectSensitivityDeviationAlgorithmSequence",vm:"1",version:"DICOM"},"(0024,0068)":{tag:"(0024,0068)",vr:"FL",name:"LocalizedDeviationFromNormal",vm:"1",version:"DICOM"},"(0024,0069)":{tag:"(0024,0069)",vr:"LO",name:"PatientReliabilityIndicator",vm:"1",version:"DICOM"},"(0024,0070)":{tag:"(0024,0070)",vr:"FL",name:"VisualFieldMeanSensitivity",vm:"1",version:"DICOM"},"(0024,0071)":{tag:"(0024,0071)",vr:"FL",name:"GlobalDeviationProbability",vm:"1",version:"DICOM"},"(0024,0072)":{tag:"(0024,0072)",vr:"CS",name:"LocalDeviationProbabilityNormalsFlag",vm:"1",version:"DICOM"},"(0024,0073)":{tag:"(0024,0073)",vr:"FL",name:"LocalizedDeviationProbability",vm:"1",version:"DICOM"},"(0024,0074)":{tag:"(0024,0074)",vr:"CS",name:"ShortTermFluctuationCalculated",vm:"1",version:"DICOM"},"(0024,0075)":{tag:"(0024,0075)",vr:"FL",name:"ShortTermFluctuation",vm:"1",version:"DICOM"},"(0024,0076)":{tag:"(0024,0076)",vr:"CS",name:"ShortTermFluctuationProbabilityCalculated",vm:"1",version:"DICOM"},"(0024,0077)":{tag:"(0024,0077)",vr:"FL",name:"ShortTermFluctuationProbability",vm:"1",version:"DICOM"},"(0024,0078)":{tag:"(0024,0078)",vr:"CS",name:"CorrectedLocalizedDeviationFromNormalCalculated",vm:"1",version:"DICOM"},"(0024,0079)":{tag:"(0024,0079)",vr:"FL",name:"CorrectedLocalizedDeviationFromNormal",vm:"1",version:"DICOM"},"(0024,0080)":{tag:"(0024,0080)",vr:"CS",name:"CorrectedLocalizedDeviationFromNormalProbabilityCalculated",vm:"1",version:"DICOM"},"(0024,0081)":{tag:"(0024,0081)",vr:"FL",name:"CorrectedLocalizedDeviationFromNormalProbability",vm:"1",version:"DICOM"},"(0024,0083)":{tag:"(0024,0083)",vr:"SQ",name:"GlobalDeviationProbabilitySequence",vm:"1",version:"DICOM"},"(0024,0085)":{tag:"(0024,0085)",vr:"SQ",name:"LocalizedDeviationProbabilitySequence",vm:"1",version:"DICOM"},"(0024,0086)":{tag:"(0024,0086)",vr:"CS",name:"FovealSensitivityMeasured",vm:"1",version:"DICOM"},"(0024,0087)":{tag:"(0024,0087)",vr:"FL",name:"FovealSensitivity",vm:"1",version:"DICOM"},"(0024,0088)":{tag:"(0024,0088)",vr:"FL",name:"VisualFieldTestDuration",vm:"1",version:"DICOM"},"(0024,0089)":{tag:"(0024,0089)",vr:"SQ",name:"VisualFieldTestPointSequence",vm:"1",version:"DICOM"},"(0024,0090)":{tag:"(0024,0090)",vr:"FL",name:"VisualFieldTestPointXCoordinate",vm:"1",version:"DICOM"},"(0024,0091)":{tag:"(0024,0091)",vr:"FL",name:"VisualFieldTestPointYCoordinate",vm:"1",version:"DICOM"},"(0024,0092)":{tag:"(0024,0092)",vr:"FL",name:"AgeCorrectedSensitivityDeviationValue",vm:"1",version:"DICOM"},"(0024,0093)":{tag:"(0024,0093)",vr:"CS",name:"StimulusResults",vm:"1",version:"DICOM"},"(0024,0094)":{tag:"(0024,0094)",vr:"FL",name:"SensitivityValue",vm:"1",version:"DICOM"},"(0024,0095)":{tag:"(0024,0095)",vr:"CS",name:"RetestStimulusSeen",vm:"1",version:"DICOM"},"(0024,0096)":{tag:"(0024,0096)",vr:"FL",name:"RetestSensitivityValue",vm:"1",version:"DICOM"},"(0024,0097)":{tag:"(0024,0097)",vr:"SQ",name:"VisualFieldTestPointNormalsSequence",vm:"1",version:"DICOM"},"(0024,0098)":{tag:"(0024,0098)",vr:"FL",name:"QuantifiedDefect",vm:"1",version:"DICOM"},"(0024,0100)":{tag:"(0024,0100)",vr:"FL",name:"AgeCorrectedSensitivityDeviationProbabilityValue",vm:"1",version:"DICOM"},"(0024,0102)":{tag:"(0024,0102)",vr:"CS",name:"GeneralizedDefectCorrectedSensitivityDeviationFlag",vm:"1",version:"DICOM"},"(0024,0103)":{tag:"(0024,0103)",vr:"FL",name:"GeneralizedDefectCorrectedSensitivityDeviationValue",vm:"1",version:"DICOM"},"(0024,0104)":{tag:"(0024,0104)",vr:"FL",name:"GeneralizedDefectCorrectedSensitivityDeviationProbabilityValue",vm:"1",version:"DICOM"},"(0024,0105)":{tag:"(0024,0105)",vr:"FL",name:"MinimumSensitivityValue",vm:"1",version:"DICOM"},"(0024,0106)":{tag:"(0024,0106)",vr:"CS",name:"BlindSpotLocalized",vm:"1",version:"DICOM"},"(0024,0107)":{tag:"(0024,0107)",vr:"FL",name:"BlindSpotXCoordinate",vm:"1",version:"DICOM"},"(0024,0108)":{tag:"(0024,0108)",vr:"FL",name:"BlindSpotYCoordinate",vm:"1",version:"DICOM"},"(0024,0110)":{tag:"(0024,0110)",vr:"SQ",name:"VisualAcuityMeasurementSequence",vm:"1",version:"DICOM"},"(0024,0112)":{tag:"(0024,0112)",vr:"SQ",name:"RefractiveParametersUsedOnPatientSequence",vm:"1",version:"DICOM"},"(0024,0113)":{tag:"(0024,0113)",vr:"CS",name:"MeasurementLaterality",vm:"1",version:"DICOM"},"(0024,0114)":{tag:"(0024,0114)",vr:"SQ",name:"OphthalmicPatientClinicalInformationLeftEyeSequence",vm:"1",version:"DICOM"},"(0024,0115)":{tag:"(0024,0115)",vr:"SQ",name:"OphthalmicPatientClinicalInformationRightEyeSequence",vm:"1",version:"DICOM"},"(0024,0117)":{tag:"(0024,0117)",vr:"CS",name:"FovealPointNormativeDataFlag",vm:"1",version:"DICOM"},"(0024,0118)":{tag:"(0024,0118)",vr:"FL",name:"FovealPointProbabilityValue",vm:"1",version:"DICOM"},"(0024,0120)":{tag:"(0024,0120)",vr:"CS",name:"ScreeningBaselineMeasured",vm:"1",version:"DICOM"},"(0024,0122)":{tag:"(0024,0122)",vr:"SQ",name:"ScreeningBaselineMeasuredSequence",vm:"1",version:"DICOM"},"(0024,0124)":{tag:"(0024,0124)",vr:"CS",name:"ScreeningBaselineType",vm:"1",version:"DICOM"},"(0024,0126)":{tag:"(0024,0126)",vr:"FL",name:"ScreeningBaselineValue",vm:"1",version:"DICOM"},"(0024,0202)":{tag:"(0024,0202)",vr:"LO",name:"AlgorithmSource",vm:"1",version:"DICOM"},"(0024,0306)":{tag:"(0024,0306)",vr:"LO",name:"DataSetName",vm:"1",version:"DICOM"},"(0024,0307)":{tag:"(0024,0307)",vr:"LO",name:"DataSetVersion",vm:"1",version:"DICOM"},"(0024,0308)":{tag:"(0024,0308)",vr:"LO",name:"DataSetSource",vm:"1",version:"DICOM"},"(0024,0309)":{tag:"(0024,0309)",vr:"LO",name:"DataSetDescription",vm:"1",version:"DICOM"},"(0024,0317)":{tag:"(0024,0317)",vr:"SQ",name:"VisualFieldTestReliabilityGlobalIndexSequence",vm:"1",version:"DICOM"},"(0024,0320)":{tag:"(0024,0320)",vr:"SQ",name:"VisualFieldGlobalResultsIndexSequence",vm:"1",version:"DICOM"},"(0024,0325)":{tag:"(0024,0325)",vr:"SQ",name:"DataObservationSequence",vm:"1",version:"DICOM"},"(0024,0338)":{tag:"(0024,0338)",vr:"CS",name:"IndexNormalsFlag",vm:"1",version:"DICOM"},"(0024,0341)":{tag:"(0024,0341)",vr:"FL",name:"IndexProbability",vm:"1",version:"DICOM"},"(0024,0344)":{tag:"(0024,0344)",vr:"SQ",name:"IndexProbabilitySequence",vm:"1",version:"DICOM"},"(0028,0002)":{tag:"(0028,0002)",vr:"US",name:"SamplesPerPixel",vm:"1",version:"DICOM"},"(0028,0003)":{tag:"(0028,0003)",vr:"US",name:"SamplesPerPixelUsed",vm:"1",version:"DICOM"},"(0028,0004)":{tag:"(0028,0004)",vr:"CS",name:"PhotometricInterpretation",vm:"1",version:"DICOM"},"(0028,0006)":{tag:"(0028,0006)",vr:"US",name:"PlanarConfiguration",vm:"1",version:"DICOM"},"(0028,0008)":{tag:"(0028,0008)",vr:"IS",name:"NumberOfFrames",vm:"1",version:"DICOM"},"(0028,0009)":{tag:"(0028,0009)",vr:"AT",name:"FrameIncrementPointer",vm:"1-n",version:"DICOM"},"(0028,000A)":{tag:"(0028,000A)",vr:"AT",name:"FrameDimensionPointer",vm:"1-n",version:"DICOM"},"(0028,0010)":{tag:"(0028,0010)",vr:"US",name:"Rows",vm:"1",version:"DICOM"},"(0028,0011)":{tag:"(0028,0011)",vr:"US",name:"Columns",vm:"1",version:"DICOM"},"(0028,0014)":{tag:"(0028,0014)",vr:"US",name:"UltrasoundColorDataPresent",vm:"1",version:"DICOM"},"(0028,0030)":{tag:"(0028,0030)",vr:"DS",name:"PixelSpacing",vm:"2",version:"DICOM"},"(0028,0031)":{tag:"(0028,0031)",vr:"DS",name:"ZoomFactor",vm:"2",version:"DICOM"},"(0028,0032)":{tag:"(0028,0032)",vr:"DS",name:"ZoomCenter",vm:"2",version:"DICOM"},"(0028,0034)":{tag:"(0028,0034)",vr:"IS",name:"PixelAspectRatio",vm:"2",version:"DICOM"},"(0028,0051)":{tag:"(0028,0051)",vr:"CS",name:"CorrectedImage",vm:"1-n",version:"DICOM"},"(0028,0100)":{tag:"(0028,0100)",vr:"US",name:"BitsAllocated",vm:"1",version:"DICOM"},"(0028,0101)":{tag:"(0028,0101)",vr:"US",name:"BitsStored",vm:"1",version:"DICOM"},"(0028,0102)":{tag:"(0028,0102)",vr:"US",name:"HighBit",vm:"1",version:"DICOM"},"(0028,0103)":{tag:"(0028,0103)",vr:"US",name:"PixelRepresentation",vm:"1",version:"DICOM"},"(0028,0106)":{tag:"(0028,0106)",vr:"xs",name:"SmallestImagePixelValue",vm:"1",version:"DICOM"},"(0028,0107)":{tag:"(0028,0107)",vr:"xs",name:"LargestImagePixelValue",vm:"1",version:"DICOM"},"(0028,0108)":{tag:"(0028,0108)",vr:"xs",name:"SmallestPixelValueInSeries",vm:"1",version:"DICOM"},"(0028,0109)":{tag:"(0028,0109)",vr:"xs",name:"LargestPixelValueInSeries",vm:"1",version:"DICOM"},"(0028,0120)":{tag:"(0028,0120)",vr:"xs",name:"PixelPaddingValue",vm:"1",version:"DICOM"},"(0028,0121)":{tag:"(0028,0121)",vr:"xs",name:"PixelPaddingRangeLimit",vm:"1",version:"DICOM"},"(0028,0122)":{tag:"(0028,0122)",vr:"FL",name:"FloatPixelPaddingValue",vm:"1",version:"DICOM"},"(0028,0123)":{tag:"(0028,0123)",vr:"FD",name:"DoubleFloatPixelPaddingValue",vm:"1",version:"DICOM"},"(0028,0124)":{tag:"(0028,0124)",vr:"FL",name:"FloatPixelPaddingRangeLimit",vm:"1",version:"DICOM"},"(0028,0125)":{tag:"(0028,0125)",vr:"FD",name:"DoubleFloatPixelPaddingRangeLimit",vm:"1",version:"DICOM"},"(0028,0300)":{tag:"(0028,0300)",vr:"CS",name:"QualityControlImage",vm:"1",version:"DICOM"},"(0028,0301)":{tag:"(0028,0301)",vr:"CS",name:"BurnedInAnnotation",vm:"1",version:"DICOM"},"(0028,0302)":{tag:"(0028,0302)",vr:"CS",name:"RecognizableVisualFeatures",vm:"1",version:"DICOM"},"(0028,0303)":{tag:"(0028,0303)",vr:"CS",name:"LongitudinalTemporalInformationModified",vm:"1",version:"DICOM"},"(0028,0304)":{tag:"(0028,0304)",vr:"UI",name:"ReferencedColorPaletteInstanceUID",vm:"1",version:"DICOM"},"(0028,0A02)":{tag:"(0028,0A02)",vr:"CS",name:"PixelSpacingCalibrationType",vm:"1",version:"DICOM"},"(0028,0A04)":{tag:"(0028,0A04)",vr:"LO",name:"PixelSpacingCalibrationDescription",vm:"1",version:"DICOM"},"(0028,1040)":{tag:"(0028,1040)",vr:"CS",name:"PixelIntensityRelationship",vm:"1",version:"DICOM"},"(0028,1041)":{tag:"(0028,1041)",vr:"SS",name:"PixelIntensityRelationshipSign",vm:"1",version:"DICOM"},"(0028,1050)":{tag:"(0028,1050)",vr:"DS",name:"WindowCenter",vm:"1-n",version:"DICOM"},"(0028,1051)":{tag:"(0028,1051)",vr:"DS",name:"WindowWidth",vm:"1-n",version:"DICOM"},"(0028,1052)":{tag:"(0028,1052)",vr:"DS",name:"RescaleIntercept",vm:"1",version:"DICOM"},"(0028,1053)":{tag:"(0028,1053)",vr:"DS",name:"RescaleSlope",vm:"1",version:"DICOM"},"(0028,1054)":{tag:"(0028,1054)",vr:"LO",name:"RescaleType",vm:"1",version:"DICOM"},"(0028,1055)":{tag:"(0028,1055)",vr:"LO",name:"WindowCenterWidthExplanation",vm:"1-n",version:"DICOM"},"(0028,1056)":{tag:"(0028,1056)",vr:"CS",name:"VOILUTFunction",vm:"1",version:"DICOM"},"(0028,1090)":{tag:"(0028,1090)",vr:"CS",name:"RecommendedViewingMode",vm:"1",version:"DICOM"},"(0028,1101)":{tag:"(0028,1101)",vr:"xs",name:"RedPaletteColorLookupTableDescriptor",vm:"3",version:"DICOM"},"(0028,1102)":{tag:"(0028,1102)",vr:"xs",name:"GreenPaletteColorLookupTableDescriptor",vm:"3",version:"DICOM"},"(0028,1103)":{tag:"(0028,1103)",vr:"xs",name:"BluePaletteColorLookupTableDescriptor",vm:"3",version:"DICOM"},"(0028,1104)":{tag:"(0028,1104)",vr:"US",name:"AlphaPaletteColorLookupTableDescriptor",vm:"3",version:"DICOM"},"(0028,1199)":{tag:"(0028,1199)",vr:"UI",name:"PaletteColorLookupTableUID",vm:"1",version:"DICOM"},"(0028,1201)":{tag:"(0028,1201)",vr:"OW",name:"RedPaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1202)":{tag:"(0028,1202)",vr:"OW",name:"GreenPaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1203)":{tag:"(0028,1203)",vr:"OW",name:"BluePaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1204)":{tag:"(0028,1204)",vr:"OW",name:"AlphaPaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1221)":{tag:"(0028,1221)",vr:"OW",name:"SegmentedRedPaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1222)":{tag:"(0028,1222)",vr:"OW",name:"SegmentedGreenPaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1223)":{tag:"(0028,1223)",vr:"OW",name:"SegmentedBluePaletteColorLookupTableData",vm:"1",version:"DICOM"},"(0028,1230)":{tag:"(0028,1230)",vr:"SQ",name:"StoredValueColorRangeSequence",vm:"1",version:"DICOM"},"(0028,1231)":{tag:"(0028,1231)",vr:"FD",name:"MinimumStoredValueMapped",vm:"1",version:"DICOM"},"(0028,1232)":{tag:"(0028,1232)",vr:"FD",name:"MaximumStoredValueMapped",vm:"1",version:"DICOM"},"(0028,1300)":{tag:"(0028,1300)",vr:"CS",name:"BreastImplantPresent",vm:"1",version:"DICOM"},"(0028,1350)":{tag:"(0028,1350)",vr:"CS",name:"PartialView",vm:"1",version:"DICOM"},"(0028,1351)":{tag:"(0028,1351)",vr:"ST",name:"PartialViewDescription",vm:"1",version:"DICOM"},"(0028,1352)":{tag:"(0028,1352)",vr:"SQ",name:"PartialViewCodeSequence",vm:"1",version:"DICOM"},"(0028,135A)":{tag:"(0028,135A)",vr:"CS",name:"SpatialLocationsPreserved",vm:"1",version:"DICOM"},"(0028,1401)":{tag:"(0028,1401)",vr:"SQ",name:"DataFrameAssignmentSequence",vm:"1",version:"DICOM"},"(0028,1402)":{tag:"(0028,1402)",vr:"CS",name:"DataPathAssignment",vm:"1",version:"DICOM"},"(0028,1403)":{tag:"(0028,1403)",vr:"US",name:"BitsMappedToColorLookupTable",vm:"1",version:"DICOM"},"(0028,1404)":{tag:"(0028,1404)",vr:"SQ",name:"BlendingLUT1Sequence",vm:"1",version:"DICOM"},"(0028,1405)":{tag:"(0028,1405)",vr:"CS",name:"BlendingLUT1TransferFunction",vm:"1",version:"DICOM"},"(0028,1406)":{tag:"(0028,1406)",vr:"FD",name:"BlendingWeightConstant",vm:"1",version:"DICOM"},"(0028,1407)":{tag:"(0028,1407)",vr:"US",name:"BlendingLookupTableDescriptor",vm:"3",version:"DICOM"},"(0028,1408)":{tag:"(0028,1408)",vr:"OW",name:"BlendingLookupTableData",vm:"1",version:"DICOM"},"(0028,140B)":{tag:"(0028,140B)",vr:"SQ",name:"EnhancedPaletteColorLookupTableSequence",vm:"1",version:"DICOM"},"(0028,140C)":{tag:"(0028,140C)",vr:"SQ",name:"BlendingLUT2Sequence",vm:"1",version:"DICOM"},"(0028,140D)":{tag:"(0028,140D)",vr:"CS",name:"BlendingLUT2TransferFunction",vm:"1",version:"DICOM"},"(0028,140E)":{tag:"(0028,140E)",vr:"CS",name:"DataPathID",vm:"1",version:"DICOM"},"(0028,140F)":{tag:"(0028,140F)",vr:"CS",name:"RGBLUTTransferFunction",vm:"1",version:"DICOM"},"(0028,1410)":{tag:"(0028,1410)",vr:"CS",name:"AlphaLUTTransferFunction",vm:"1",version:"DICOM"},"(0028,2000)":{tag:"(0028,2000)",vr:"OB",name:"ICCProfile",vm:"1",version:"DICOM"},"(0028,2110)":{tag:"(0028,2110)",vr:"CS",name:"LossyImageCompression",vm:"1",version:"DICOM"},"(0028,2112)":{tag:"(0028,2112)",vr:"DS",name:"LossyImageCompressionRatio",vm:"1-n",version:"DICOM"},"(0028,2114)":{tag:"(0028,2114)",vr:"CS",name:"LossyImageCompressionMethod",vm:"1-n",version:"DICOM"},"(0028,3000)":{tag:"(0028,3000)",vr:"SQ",name:"ModalityLUTSequence",vm:"1",version:"DICOM"},"(0028,3002)":{tag:"(0028,3002)",vr:"xs",name:"LUTDescriptor",vm:"3",version:"DICOM"},"(0028,3003)":{tag:"(0028,3003)",vr:"LO",name:"LUTExplanation",vm:"1",version:"DICOM"},"(0028,3004)":{tag:"(0028,3004)",vr:"LO",name:"ModalityLUTType",vm:"1",version:"DICOM"},"(0028,3006)":{tag:"(0028,3006)",vr:"lt",name:"LUTData",vm:"1-n",version:"DICOM"},"(0028,3010)":{tag:"(0028,3010)",vr:"SQ",name:"VOILUTSequence",vm:"1",version:"DICOM"},"(0028,3110)":{tag:"(0028,3110)",vr:"SQ",name:"SoftcopyVOILUTSequence",vm:"1",version:"DICOM"},"(0028,6010)":{tag:"(0028,6010)",vr:"US",name:"RepresentativeFrameNumber",vm:"1",version:"DICOM"},"(0028,6020)":{tag:"(0028,6020)",vr:"US",name:"FrameNumbersOfInterest",vm:"1-n",version:"DICOM"},"(0028,6022)":{tag:"(0028,6022)",vr:"LO",name:"FrameOfInterestDescription",vm:"1-n",version:"DICOM"},"(0028,6023)":{tag:"(0028,6023)",vr:"CS",name:"FrameOfInterestType",vm:"1-n",version:"DICOM"},"(0028,6040)":{tag:"(0028,6040)",vr:"US",name:"RWavePointer",vm:"1-n",version:"DICOM"},"(0028,6100)":{tag:"(0028,6100)",vr:"SQ",name:"MaskSubtractionSequence",vm:"1",version:"DICOM"},"(0028,6101)":{tag:"(0028,6101)",vr:"CS",name:"MaskOperation",vm:"1",version:"DICOM"},"(0028,6102)":{tag:"(0028,6102)",vr:"US",name:"ApplicableFrameRange",vm:"2-2n",version:"DICOM"},"(0028,6110)":{tag:"(0028,6110)",vr:"US",name:"MaskFrameNumbers",vm:"1-n",version:"DICOM"},"(0028,6112)":{tag:"(0028,6112)",vr:"US",name:"ContrastFrameAveraging",vm:"1",version:"DICOM"},"(0028,6114)":{tag:"(0028,6114)",vr:"FL",name:"MaskSubPixelShift",vm:"2",version:"DICOM"},"(0028,6120)":{tag:"(0028,6120)",vr:"SS",name:"TIDOffset",vm:"1",version:"DICOM"},"(0028,6190)":{tag:"(0028,6190)",vr:"ST",name:"MaskOperationExplanation",vm:"1",version:"DICOM"},"(0028,7000)":{tag:"(0028,7000)",vr:"SQ",name:"EquipmentAdministratorSequence",vm:"1",version:"DICOM"},"(0028,7001)":{tag:"(0028,7001)",vr:"US",name:"NumberOfDisplaySubsystems",vm:"1",version:"DICOM"},"(0028,7002)":{tag:"(0028,7002)",vr:"US",name:"CurrentConfigurationID",vm:"1",version:"DICOM"},"(0028,7003)":{tag:"(0028,7003)",vr:"US",name:"DisplaySubsystemID",vm:"1",version:"DICOM"},"(0028,7004)":{tag:"(0028,7004)",vr:"SH",name:"DisplaySubsystemName",vm:"1",version:"DICOM"},"(0028,7005)":{tag:"(0028,7005)",vr:"LO",name:"DisplaySubsystemDescription",vm:"1",version:"DICOM"},"(0028,7006)":{tag:"(0028,7006)",vr:"CS",name:"SystemStatus",vm:"1",version:"DICOM"},"(0028,7007)":{tag:"(0028,7007)",vr:"LO",name:"SystemStatusComment",vm:"1",version:"DICOM"},"(0028,7008)":{tag:"(0028,7008)",vr:"SQ",name:"TargetLuminanceCharacteristicsSequence",vm:"1",version:"DICOM"},"(0028,7009)":{tag:"(0028,7009)",vr:"US",name:"LuminanceCharacteristicsID",vm:"1",version:"DICOM"},"(0028,700A)":{tag:"(0028,700A)",vr:"SQ",name:"DisplaySubsystemConfigurationSequence",vm:"1",version:"DICOM"},"(0028,700B)":{tag:"(0028,700B)",vr:"US",name:"ConfigurationID",vm:"1",version:"DICOM"},"(0028,700C)":{tag:"(0028,700C)",vr:"SH",name:"ConfigurationName",vm:"1",version:"DICOM"},"(0028,700D)":{tag:"(0028,700D)",vr:"LO",name:"ConfigurationDescription",vm:"1",version:"DICOM"},"(0028,700E)":{tag:"(0028,700E)",vr:"US",name:"ReferencedTargetLuminanceCharacteristicsID",vm:"1",version:"DICOM"},"(0028,700F)":{tag:"(0028,700F)",vr:"SQ",name:"QAResultsSequence",vm:"1",version:"DICOM"},"(0028,7010)":{tag:"(0028,7010)",vr:"SQ",name:"DisplaySubsystemQAResultsSequence",vm:"1",version:"DICOM"},"(0028,7011)":{tag:"(0028,7011)",vr:"SQ",name:"ConfigurationQAResultsSequence",vm:"1",version:"DICOM"},"(0028,7012)":{tag:"(0028,7012)",vr:"SQ",name:"MeasurementEquipmentSequence",vm:"1",version:"DICOM"},"(0028,7013)":{tag:"(0028,7013)",vr:"CS",name:"MeasurementFunctions",vm:"1-n",version:"DICOM"},"(0028,7014)":{tag:"(0028,7014)",vr:"CS",name:"MeasurementEquipmentType",vm:"1",version:"DICOM"},"(0028,7015)":{tag:"(0028,7015)",vr:"SQ",name:"VisualEvaluationResultSequence",vm:"1",version:"DICOM"},"(0028,7016)":{tag:"(0028,7016)",vr:"SQ",name:"DisplayCalibrationResultSequence",vm:"1",version:"DICOM"},"(0028,7017)":{tag:"(0028,7017)",vr:"US",name:"DDLValue",vm:"1",version:"DICOM"},"(0028,7018)":{tag:"(0028,7018)",vr:"FL",name:"CIExyWhitePoint",vm:"2",version:"DICOM"},"(0028,7019)":{tag:"(0028,7019)",vr:"CS",name:"DisplayFunctionType",vm:"1",version:"DICOM"},"(0028,701A)":{tag:"(0028,701A)",vr:"FL",name:"GammaValue",vm:"1",version:"DICOM"},"(0028,701B)":{tag:"(0028,701B)",vr:"US",name:"NumberOfLuminancePoints",vm:"1",version:"DICOM"},"(0028,701C)":{tag:"(0028,701C)",vr:"SQ",name:"LuminanceResponseSequence",vm:"1",version:"DICOM"},"(0028,701D)":{tag:"(0028,701D)",vr:"FL",name:"TargetMinimumLuminance",vm:"1",version:"DICOM"},"(0028,701E)":{tag:"(0028,701E)",vr:"FL",name:"TargetMaximumLuminance",vm:"1",version:"DICOM"},"(0028,701F)":{tag:"(0028,701F)",vr:"FL",name:"LuminanceValue",vm:"1",version:"DICOM"},"(0028,7020)":{tag:"(0028,7020)",vr:"LO",name:"LuminanceResponseDescription",vm:"1",version:"DICOM"},"(0028,7021)":{tag:"(0028,7021)",vr:"CS",name:"WhitePointFlag",vm:"1",version:"DICOM"},"(0028,7022)":{tag:"(0028,7022)",vr:"SQ",name:"DisplayDeviceTypeCodeSequence",vm:"1",version:"DICOM"},"(0028,7023)":{tag:"(0028,7023)",vr:"SQ",name:"DisplaySubsystemSequence",vm:"1",version:"DICOM"},"(0028,7024)":{tag:"(0028,7024)",vr:"SQ",name:"LuminanceResultSequence",vm:"1",version:"DICOM"},"(0028,7025)":{tag:"(0028,7025)",vr:"CS",name:"AmbientLightValueSource",vm:"1",version:"DICOM"},"(0028,7026)":{tag:"(0028,7026)",vr:"CS",name:"MeasuredCharacteristics",vm:"1-n",version:"DICOM"},"(0028,7027)":{tag:"(0028,7027)",vr:"SQ",name:"LuminanceUniformityResultSequence",vm:"1",version:"DICOM"},"(0028,7028)":{tag:"(0028,7028)",vr:"SQ",name:"VisualEvaluationTestSequence",vm:"1",version:"DICOM"},"(0028,7029)":{tag:"(0028,7029)",vr:"CS",name:"TestResult",vm:"1",version:"DICOM"},"(0028,702A)":{tag:"(0028,702A)",vr:"LO",name:"TestResultComment",vm:"1",version:"DICOM"},"(0028,702B)":{tag:"(0028,702B)",vr:"CS",name:"TestImageValidation",vm:"1",version:"DICOM"},"(0028,702C)":{tag:"(0028,702C)",vr:"SQ",name:"TestPatternCodeSequence",vm:"1",version:"DICOM"},"(0028,702D)":{tag:"(0028,702D)",vr:"SQ",name:"MeasurementPatternCodeSequence",vm:"1",version:"DICOM"},"(0028,702E)":{tag:"(0028,702E)",vr:"SQ",name:"VisualEvaluationMethodCodeSequence",vm:"1",version:"DICOM"},"(0028,7FE0)":{tag:"(0028,7FE0)",vr:"UR",name:"PixelDataProviderURL",vm:"1",version:"DICOM"},"(0028,9001)":{tag:"(0028,9001)",vr:"UL",name:"DataPointRows",vm:"1",version:"DICOM"},"(0028,9002)":{tag:"(0028,9002)",vr:"UL",name:"DataPointColumns",vm:"1",version:"DICOM"},"(0028,9003)":{tag:"(0028,9003)",vr:"CS",name:"SignalDomainColumns",vm:"1",version:"DICOM"},"(0028,9108)":{tag:"(0028,9108)",vr:"CS",name:"DataRepresentation",vm:"1",version:"DICOM"},"(0028,9110)":{tag:"(0028,9110)",vr:"SQ",name:"PixelMeasuresSequence",vm:"1",version:"DICOM"},"(0028,9132)":{tag:"(0028,9132)",vr:"SQ",name:"FrameVOILUTSequence",vm:"1",version:"DICOM"},"(0028,9145)":{tag:"(0028,9145)",vr:"SQ",name:"PixelValueTransformationSequence",vm:"1",version:"DICOM"},"(0028,9235)":{tag:"(0028,9235)",vr:"CS",name:"SignalDomainRows",vm:"1",version:"DICOM"},"(0028,9411)":{tag:"(0028,9411)",vr:"FL",name:"DisplayFilterPercentage",vm:"1",version:"DICOM"},"(0028,9415)":{tag:"(0028,9415)",vr:"SQ",name:"FramePixelShiftSequence",vm:"1",version:"DICOM"},"(0028,9416)":{tag:"(0028,9416)",vr:"US",name:"SubtractionItemID",vm:"1",version:"DICOM"},"(0028,9422)":{tag:"(0028,9422)",vr:"SQ",name:"PixelIntensityRelationshipLUTSequence",vm:"1",version:"DICOM"},"(0028,9443)":{tag:"(0028,9443)",vr:"SQ",name:"FramePixelDataPropertiesSequence",vm:"1",version:"DICOM"},"(0028,9444)":{tag:"(0028,9444)",vr:"CS",name:"GeometricalProperties",vm:"1",version:"DICOM"},"(0028,9445)":{tag:"(0028,9445)",vr:"FL",name:"GeometricMaximumDistortion",vm:"1",version:"DICOM"},"(0028,9446)":{tag:"(0028,9446)",vr:"CS",name:"ImageProcessingApplied",vm:"1-n",version:"DICOM"},"(0028,9454)":{tag:"(0028,9454)",vr:"CS",name:"MaskSelectionMode",vm:"1",version:"DICOM"},"(0028,9474)":{tag:"(0028,9474)",vr:"CS",name:"LUTFunction",vm:"1",version:"DICOM"},"(0028,9478)":{tag:"(0028,9478)",vr:"FL",name:"MaskVisibilityPercentage",vm:"1",version:"DICOM"},"(0028,9501)":{tag:"(0028,9501)",vr:"SQ",name:"PixelShiftSequence",vm:"1",version:"DICOM"},"(0028,9502)":{tag:"(0028,9502)",vr:"SQ",name:"RegionPixelShiftSequence",vm:"1",version:"DICOM"},"(0028,9503)":{tag:"(0028,9503)",vr:"SS",name:"VerticesOfTheRegion",vm:"2-2n",version:"DICOM"},"(0028,9505)":{tag:"(0028,9505)",vr:"SQ",name:"MultiFramePresentationSequence",vm:"1",version:"DICOM"},"(0028,9506)":{tag:"(0028,9506)",vr:"US",name:"PixelShiftFrameRange",vm:"2-2n",version:"DICOM"},"(0028,9507)":{tag:"(0028,9507)",vr:"US",name:"LUTFrameRange",vm:"2-2n",version:"DICOM"},"(0028,9520)":{tag:"(0028,9520)",vr:"DS",name:"ImageToEquipmentMappingMatrix",vm:"16",version:"DICOM"},"(0028,9537)":{tag:"(0028,9537)",vr:"CS",name:"EquipmentCoordinateSystemIdentification",vm:"1",version:"DICOM"},"(0032,1031)":{tag:"(0032,1031)",vr:"SQ",name:"RequestingPhysicianIdentificationSequence",vm:"1",version:"DICOM"},"(0032,1032)":{tag:"(0032,1032)",vr:"PN",name:"RequestingPhysician",vm:"1",version:"DICOM"},"(0032,1033)":{tag:"(0032,1033)",vr:"LO",name:"RequestingService",vm:"1",version:"DICOM"},"(0032,1034)":{tag:"(0032,1034)",vr:"SQ",name:"RequestingServiceCodeSequence",vm:"1",version:"DICOM"},"(0032,1060)":{tag:"(0032,1060)",vr:"LO",name:"RequestedProcedureDescription",vm:"1",version:"DICOM"},"(0032,1064)":{tag:"(0032,1064)",vr:"SQ",name:"RequestedProcedureCodeSequence",vm:"1",version:"DICOM"},"(0032,1066)":{tag:"(0032,1066)",vr:"UT",name:"ReasonForVisit",vm:"1",version:"DICOM"},"(0032,1067)":{tag:"(0032,1067)",vr:"SQ",name:"ReasonForVisitCodeSequence",vm:"1",version:"DICOM"},"(0032,1070)":{tag:"(0032,1070)",vr:"LO",name:"RequestedContrastAgent",vm:"1",version:"DICOM"},"(0034,0001)":{tag:"(0034,0001)",vr:"SQ",name:"FlowIdentifierSequence",vm:"1",version:"DICOM"},"(0034,0002)":{tag:"(0034,0002)",vr:"OB",name:"FlowIdentifier",vm:"1",version:"DICOM"},"(0034,0003)":{tag:"(0034,0003)",vr:"UI",name:"FlowTransferSyntaxUID",vm:"1",version:"DICOM"},"(0034,0004)":{tag:"(0034,0004)",vr:"UL",name:"FlowRTPSamplingRate",vm:"1",version:"DICOM"},"(0034,0005)":{tag:"(0034,0005)",vr:"OB",name:"SourceIdentifier",vm:"1",version:"DICOM"},"(0034,0007)":{tag:"(0034,0007)",vr:"OB",name:"FrameOriginTimestamp",vm:"1",version:"DICOM"},"(0034,0008)":{tag:"(0034,0008)",vr:"CS",name:"IncludesImagingSubject",vm:"1",version:"DICOM"},"(0034,0009)":{tag:"(0034,0009)",vr:"SQ",name:"FrameUsefulnessGroupSequence",vm:"1",version:"DICOM"},"(0034,000A)":{tag:"(0034,000A)",vr:"SQ",name:"RealTimeBulkDataFlowSequence",vm:"1",version:"DICOM"},"(0034,000B)":{tag:"(0034,000B)",vr:"SQ",name:"CameraPositionGroupSequence",vm:"1",version:"DICOM"},"(0034,000C)":{tag:"(0034,000C)",vr:"CS",name:"IncludesInformation",vm:"1",version:"DICOM"},"(0034,000D)":{tag:"(0034,000D)",vr:"SQ",name:"TimeOfFrameGroupSequence",vm:"1",version:"DICOM"},"(0038,0004)":{tag:"(0038,0004)",vr:"SQ",name:"ReferencedPatientAliasSequence",vm:"1",version:"DICOM"},"(0038,0008)":{tag:"(0038,0008)",vr:"CS",name:"VisitStatusID",vm:"1",version:"DICOM"},"(0038,0010)":{tag:"(0038,0010)",vr:"LO",name:"AdmissionID",vm:"1",version:"DICOM"},"(0038,0014)":{tag:"(0038,0014)",vr:"SQ",name:"IssuerOfAdmissionIDSequence",vm:"1",version:"DICOM"},"(0038,0016)":{tag:"(0038,0016)",vr:"LO",name:"RouteOfAdmissions",vm:"1",version:"DICOM"},"(0038,0020)":{tag:"(0038,0020)",vr:"DA",name:"AdmittingDate",vm:"1",version:"DICOM"},"(0038,0021)":{tag:"(0038,0021)",vr:"TM",name:"AdmittingTime",vm:"1",version:"DICOM"},"(0038,0050)":{tag:"(0038,0050)",vr:"LO",name:"SpecialNeeds",vm:"1",version:"DICOM"},"(0038,0060)":{tag:"(0038,0060)",vr:"LO",name:"ServiceEpisodeID",vm:"1",version:"DICOM"},"(0038,0062)":{tag:"(0038,0062)",vr:"LO",name:"ServiceEpisodeDescription",vm:"1",version:"DICOM"},"(0038,0064)":{tag:"(0038,0064)",vr:"SQ",name:"IssuerOfServiceEpisodeIDSequence",vm:"1",version:"DICOM"},"(0038,0100)":{tag:"(0038,0100)",vr:"SQ",name:"PertinentDocumentsSequence",vm:"1",version:"DICOM"},"(0038,0101)":{tag:"(0038,0101)",vr:"SQ",name:"PertinentResourcesSequence",vm:"1",version:"DICOM"},"(0038,0102)":{tag:"(0038,0102)",vr:"LO",name:"ResourceDescription",vm:"1",version:"DICOM"},"(0038,0300)":{tag:"(0038,0300)",vr:"LO",name:"CurrentPatientLocation",vm:"1",version:"DICOM"},"(0038,0400)":{tag:"(0038,0400)",vr:"LO",name:"PatientInstitutionResidence",vm:"1",version:"DICOM"},"(0038,0500)":{tag:"(0038,0500)",vr:"LO",name:"PatientState",vm:"1",version:"DICOM"},"(0038,0502)":{tag:"(0038,0502)",vr:"SQ",name:"PatientClinicalTrialParticipationSequence",vm:"1",version:"DICOM"},"(0038,4000)":{tag:"(0038,4000)",vr:"LT",name:"VisitComments",vm:"1",version:"DICOM"},"(003A,0004)":{tag:"(003A,0004)",vr:"CS",name:"WaveformOriginality",vm:"1",version:"DICOM"},"(003A,0005)":{tag:"(003A,0005)",vr:"US",name:"NumberOfWaveformChannels",vm:"1",version:"DICOM"},"(003A,0010)":{tag:"(003A,0010)",vr:"UL",name:"NumberOfWaveformSamples",vm:"1",version:"DICOM"},"(003A,001A)":{tag:"(003A,001A)",vr:"DS",name:"SamplingFrequency",vm:"1",version:"DICOM"},"(003A,0020)":{tag:"(003A,0020)",vr:"SH",name:"MultiplexGroupLabel",vm:"1",version:"DICOM"},"(003A,0200)":{tag:"(003A,0200)",vr:"SQ",name:"ChannelDefinitionSequence",vm:"1",version:"DICOM"},"(003A,0202)":{tag:"(003A,0202)",vr:"IS",name:"WaveformChannelNumber",vm:"1",version:"DICOM"},"(003A,0203)":{tag:"(003A,0203)",vr:"SH",name:"ChannelLabel",vm:"1",version:"DICOM"},"(003A,0205)":{tag:"(003A,0205)",vr:"CS",name:"ChannelStatus",vm:"1-n",version:"DICOM"},"(003A,0208)":{tag:"(003A,0208)",vr:"SQ",name:"ChannelSourceSequence",vm:"1",version:"DICOM"},"(003A,0209)":{tag:"(003A,0209)",vr:"SQ",name:"ChannelSourceModifiersSequence",vm:"1",version:"DICOM"},"(003A,020A)":{tag:"(003A,020A)",vr:"SQ",name:"SourceWaveformSequence",vm:"1",version:"DICOM"},"(003A,020C)":{tag:"(003A,020C)",vr:"LO",name:"ChannelDerivationDescription",vm:"1",version:"DICOM"},"(003A,0210)":{tag:"(003A,0210)",vr:"DS",name:"ChannelSensitivity",vm:"1",version:"DICOM"},"(003A,0211)":{tag:"(003A,0211)",vr:"SQ",name:"ChannelSensitivityUnitsSequence",vm:"1",version:"DICOM"},"(003A,0212)":{tag:"(003A,0212)",vr:"DS",name:"ChannelSensitivityCorrectionFactor",vm:"1",version:"DICOM"},"(003A,0213)":{tag:"(003A,0213)",vr:"DS",name:"ChannelBaseline",vm:"1",version:"DICOM"},"(003A,0214)":{tag:"(003A,0214)",vr:"DS",name:"ChannelTimeSkew",vm:"1",version:"DICOM"},"(003A,0215)":{tag:"(003A,0215)",vr:"DS",name:"ChannelSampleSkew",vm:"1",version:"DICOM"},"(003A,0218)":{tag:"(003A,0218)",vr:"DS",name:"ChannelOffset",vm:"1",version:"DICOM"},"(003A,021A)":{tag:"(003A,021A)",vr:"US",name:"WaveformBitsStored",vm:"1",version:"DICOM"},"(003A,0220)":{tag:"(003A,0220)",vr:"DS",name:"FilterLowFrequency",vm:"1",version:"DICOM"},"(003A,0221)":{tag:"(003A,0221)",vr:"DS",name:"FilterHighFrequency",vm:"1",version:"DICOM"},"(003A,0222)":{tag:"(003A,0222)",vr:"DS",name:"NotchFilterFrequency",vm:"1",version:"DICOM"},"(003A,0223)":{tag:"(003A,0223)",vr:"DS",name:"NotchFilterBandwidth",vm:"1",version:"DICOM"},"(003A,0230)":{tag:"(003A,0230)",vr:"FL",name:"WaveformDataDisplayScale",vm:"1",version:"DICOM"},"(003A,0231)":{tag:"(003A,0231)",vr:"US",name:"WaveformDisplayBackgroundCIELabValue",vm:"3",version:"DICOM"},"(003A,0240)":{tag:"(003A,0240)",vr:"SQ",name:"WaveformPresentationGroupSequence",vm:"1",version:"DICOM"},"(003A,0241)":{tag:"(003A,0241)",vr:"US",name:"PresentationGroupNumber",vm:"1",version:"DICOM"},"(003A,0242)":{tag:"(003A,0242)",vr:"SQ",name:"ChannelDisplaySequence",vm:"1",version:"DICOM"},"(003A,0244)":{tag:"(003A,0244)",vr:"US",name:"ChannelRecommendedDisplayCIELabValue",vm:"3",version:"DICOM"},"(003A,0245)":{tag:"(003A,0245)",vr:"FL",name:"ChannelPosition",vm:"1",version:"DICOM"},"(003A,0246)":{tag:"(003A,0246)",vr:"CS",name:"DisplayShadingFlag",vm:"1",version:"DICOM"},"(003A,0247)":{tag:"(003A,0247)",vr:"FL",name:"FractionalChannelDisplayScale",vm:"1",version:"DICOM"},"(003A,0248)":{tag:"(003A,0248)",vr:"FL",name:"AbsoluteChannelDisplayScale",vm:"1",version:"DICOM"},"(003A,0300)":{tag:"(003A,0300)",vr:"SQ",name:"MultiplexedAudioChannelsDescriptionCodeSequence",vm:"1",version:"DICOM"},"(003A,0301)":{tag:"(003A,0301)",vr:"IS",name:"ChannelIdentificationCode",vm:"1",version:"DICOM"},"(003A,0302)":{tag:"(003A,0302)",vr:"CS",name:"ChannelMode",vm:"1",version:"DICOM"},"(003A,0310)":{tag:"(003A,0310)",vr:"UI",name:"MultiplexGroupUID",vm:"1",version:"DICOM"},"(003A,0311)":{tag:"(003A,0311)",vr:"DS",name:"PowerlineFrequency",vm:"1",version:"DICOM"},"(003A,0312)":{tag:"(003A,0312)",vr:"SQ",name:"ChannelImpedanceSequence",vm:"1",version:"DICOM"},"(003A,0313)":{tag:"(003A,0313)",vr:"DS",name:"ImpedanceValue",vm:"1",version:"DICOM"},"(003A,0314)":{tag:"(003A,0314)",vr:"DT",name:"ImpedanceMeasurementDateTime",vm:"1",version:"DICOM"},"(003A,0315)":{tag:"(003A,0315)",vr:"DS",name:"ImpedanceMeasurementFrequency",vm:"1",version:"DICOM"},"(003A,0316)":{tag:"(003A,0316)",vr:"CS",name:"ImpedanceMeasurementCurrentType",vm:"1",version:"DICOM"},"(0040,0001)":{tag:"(0040,0001)",vr:"AE",name:"ScheduledStationAETitle",vm:"1-n",version:"DICOM"},"(0040,0002)":{tag:"(0040,0002)",vr:"DA",name:"ScheduledProcedureStepStartDate",vm:"1",version:"DICOM"},"(0040,0003)":{tag:"(0040,0003)",vr:"TM",name:"ScheduledProcedureStepStartTime",vm:"1",version:"DICOM"},"(0040,0004)":{tag:"(0040,0004)",vr:"DA",name:"ScheduledProcedureStepEndDate",vm:"1",version:"DICOM"},"(0040,0005)":{tag:"(0040,0005)",vr:"TM",name:"ScheduledProcedureStepEndTime",vm:"1",version:"DICOM"},"(0040,0006)":{tag:"(0040,0006)",vr:"PN",name:"ScheduledPerformingPhysicianName",vm:"1",version:"DICOM"},"(0040,0007)":{tag:"(0040,0007)",vr:"LO",name:"ScheduledProcedureStepDescription",vm:"1",version:"DICOM"},"(0040,0008)":{tag:"(0040,0008)",vr:"SQ",name:"ScheduledProtocolCodeSequence",vm:"1",version:"DICOM"},"(0040,0009)":{tag:"(0040,0009)",vr:"SH",name:"ScheduledProcedureStepID",vm:"1",version:"DICOM"},"(0040,000A)":{tag:"(0040,000A)",vr:"SQ",name:"StageCodeSequence",vm:"1",version:"DICOM"},"(0040,000B)":{tag:"(0040,000B)",vr:"SQ",name:"ScheduledPerformingPhysicianIdentificationSequence",vm:"1",version:"DICOM"},"(0040,0010)":{tag:"(0040,0010)",vr:"SH",name:"ScheduledStationName",vm:"1-n",version:"DICOM"},"(0040,0011)":{tag:"(0040,0011)",vr:"SH",name:"ScheduledProcedureStepLocation",vm:"1",version:"DICOM"},"(0040,0012)":{tag:"(0040,0012)",vr:"LO",name:"PreMedication",vm:"1",version:"DICOM"},"(0040,0020)":{tag:"(0040,0020)",vr:"CS",name:"ScheduledProcedureStepStatus",vm:"1",version:"DICOM"},"(0040,0026)":{tag:"(0040,0026)",vr:"SQ",name:"OrderPlacerIdentifierSequence",vm:"1",version:"DICOM"},"(0040,0027)":{tag:"(0040,0027)",vr:"SQ",name:"OrderFillerIdentifierSequence",vm:"1",version:"DICOM"},"(0040,0031)":{tag:"(0040,0031)",vr:"UT",name:"LocalNamespaceEntityID",vm:"1",version:"DICOM"},"(0040,0032)":{tag:"(0040,0032)",vr:"UT",name:"UniversalEntityID",vm:"1",version:"DICOM"},"(0040,0033)":{tag:"(0040,0033)",vr:"CS",name:"UniversalEntityIDType",vm:"1",version:"DICOM"},"(0040,0035)":{tag:"(0040,0035)",vr:"CS",name:"IdentifierTypeCode",vm:"1",version:"DICOM"},"(0040,0036)":{tag:"(0040,0036)",vr:"SQ",name:"AssigningFacilitySequence",vm:"1",version:"DICOM"},"(0040,0039)":{tag:"(0040,0039)",vr:"SQ",name:"AssigningJurisdictionCodeSequence",vm:"1",version:"DICOM"},"(0040,003A)":{tag:"(0040,003A)",vr:"SQ",name:"AssigningAgencyOrDepartmentCodeSequence",vm:"1",version:"DICOM"},"(0040,0100)":{tag:"(0040,0100)",vr:"SQ",name:"ScheduledProcedureStepSequence",vm:"1",version:"DICOM"},"(0040,0220)":{tag:"(0040,0220)",vr:"SQ",name:"ReferencedNonImageCompositeSOPInstanceSequence",vm:"1",version:"DICOM"},"(0040,0241)":{tag:"(0040,0241)",vr:"AE",name:"PerformedStationAETitle",vm:"1",version:"DICOM"},"(0040,0242)":{tag:"(0040,0242)",vr:"SH",name:"PerformedStationName",vm:"1",version:"DICOM"},"(0040,0243)":{tag:"(0040,0243)",vr:"SH",name:"PerformedLocation",vm:"1",version:"DICOM"},"(0040,0244)":{tag:"(0040,0244)",vr:"DA",name:"PerformedProcedureStepStartDate",vm:"1",version:"DICOM"},"(0040,0245)":{tag:"(0040,0245)",vr:"TM",name:"PerformedProcedureStepStartTime",vm:"1",version:"DICOM"},"(0040,0250)":{tag:"(0040,0250)",vr:"DA",name:"PerformedProcedureStepEndDate",vm:"1",version:"DICOM"},"(0040,0251)":{tag:"(0040,0251)",vr:"TM",name:"PerformedProcedureStepEndTime",vm:"1",version:"DICOM"},"(0040,0252)":{tag:"(0040,0252)",vr:"CS",name:"PerformedProcedureStepStatus",vm:"1",version:"DICOM"},"(0040,0253)":{tag:"(0040,0253)",vr:"SH",name:"PerformedProcedureStepID",vm:"1",version:"DICOM"},"(0040,0254)":{tag:"(0040,0254)",vr:"LO",name:"PerformedProcedureStepDescription",vm:"1",version:"DICOM"},"(0040,0255)":{tag:"(0040,0255)",vr:"LO",name:"PerformedProcedureTypeDescription",vm:"1",version:"DICOM"},"(0040,0260)":{tag:"(0040,0260)",vr:"SQ",name:"PerformedProtocolCodeSequence",vm:"1",version:"DICOM"},"(0040,0261)":{tag:"(0040,0261)",vr:"CS",name:"PerformedProtocolType",vm:"1",version:"DICOM"},"(0040,0270)":{tag:"(0040,0270)",vr:"SQ",name:"ScheduledStepAttributesSequence",vm:"1",version:"DICOM"},"(0040,0275)":{tag:"(0040,0275)",vr:"SQ",name:"RequestAttributesSequence",vm:"1",version:"DICOM"},"(0040,0280)":{tag:"(0040,0280)",vr:"ST",name:"CommentsOnThePerformedProcedureStep",vm:"1",version:"DICOM"},"(0040,0281)":{tag:"(0040,0281)",vr:"SQ",name:"PerformedProcedureStepDiscontinuationReasonCodeSequence",vm:"1",version:"DICOM"},"(0040,0293)":{tag:"(0040,0293)",vr:"SQ",name:"QuantitySequence",vm:"1",version:"DICOM"},"(0040,0294)":{tag:"(0040,0294)",vr:"DS",name:"Quantity",vm:"1",version:"DICOM"},"(0040,0295)":{tag:"(0040,0295)",vr:"SQ",name:"MeasuringUnitsSequence",vm:"1",version:"DICOM"},"(0040,0296)":{tag:"(0040,0296)",vr:"SQ",name:"BillingItemSequence",vm:"1",version:"DICOM"},"(0040,0300)":{tag:"(0040,0300)",vr:"US",name:"TotalTimeOfFluoroscopy",vm:"1",version:"DICOM"},"(0040,0301)":{tag:"(0040,0301)",vr:"US",name:"TotalNumberOfExposures",vm:"1",version:"DICOM"},"(0040,0302)":{tag:"(0040,0302)",vr:"US",name:"EntranceDose",vm:"1",version:"DICOM"},"(0040,0303)":{tag:"(0040,0303)",vr:"US",name:"ExposedArea",vm:"1-2",version:"DICOM"},"(0040,0306)":{tag:"(0040,0306)",vr:"DS",name:"DistanceSourceToEntrance",vm:"1",version:"DICOM"},"(0040,030E)":{tag:"(0040,030E)",vr:"SQ",name:"ExposureDoseSequence",vm:"1",version:"DICOM"},"(0040,0310)":{tag:"(0040,0310)",vr:"ST",name:"CommentsOnRadiationDose",vm:"1",version:"DICOM"},"(0040,0312)":{tag:"(0040,0312)",vr:"DS",name:"XRayOutput",vm:"1",version:"DICOM"},"(0040,0314)":{tag:"(0040,0314)",vr:"DS",name:"HalfValueLayer",vm:"1",version:"DICOM"},"(0040,0316)":{tag:"(0040,0316)",vr:"DS",name:"OrganDose",vm:"1",version:"DICOM"},"(0040,0318)":{tag:"(0040,0318)",vr:"CS",name:"OrganExposed",vm:"1",version:"DICOM"},"(0040,0320)":{tag:"(0040,0320)",vr:"SQ",name:"BillingProcedureStepSequence",vm:"1",version:"DICOM"},"(0040,0321)":{tag:"(0040,0321)",vr:"SQ",name:"FilmConsumptionSequence",vm:"1",version:"DICOM"},"(0040,0324)":{tag:"(0040,0324)",vr:"SQ",name:"BillingSuppliesAndDevicesSequence",vm:"1",version:"DICOM"},"(0040,0340)":{tag:"(0040,0340)",vr:"SQ",name:"PerformedSeriesSequence",vm:"1",version:"DICOM"},"(0040,0400)":{tag:"(0040,0400)",vr:"LT",name:"CommentsOnTheScheduledProcedureStep",vm:"1",version:"DICOM"},"(0040,0440)":{tag:"(0040,0440)",vr:"SQ",name:"ProtocolContextSequence",vm:"1",version:"DICOM"},"(0040,0441)":{tag:"(0040,0441)",vr:"SQ",name:"ContentItemModifierSequence",vm:"1",version:"DICOM"},"(0040,0500)":{tag:"(0040,0500)",vr:"SQ",name:"ScheduledSpecimenSequence",vm:"1",version:"DICOM"},"(0040,0512)":{tag:"(0040,0512)",vr:"LO",name:"ContainerIdentifier",vm:"1",version:"DICOM"},"(0040,0513)":{tag:"(0040,0513)",vr:"SQ",name:"IssuerOfTheContainerIdentifierSequence",vm:"1",version:"DICOM"},"(0040,0515)":{tag:"(0040,0515)",vr:"SQ",name:"AlternateContainerIdentifierSequence",vm:"1",version:"DICOM"},"(0040,0518)":{tag:"(0040,0518)",vr:"SQ",name:"ContainerTypeCodeSequence",vm:"1",version:"DICOM"},"(0040,051A)":{tag:"(0040,051A)",vr:"LO",name:"ContainerDescription",vm:"1",version:"DICOM"},"(0040,0520)":{tag:"(0040,0520)",vr:"SQ",name:"ContainerComponentSequence",vm:"1",version:"DICOM"},"(0040,0551)":{tag:"(0040,0551)",vr:"LO",name:"SpecimenIdentifier",vm:"1",version:"DICOM"},"(0040,0554)":{tag:"(0040,0554)",vr:"UI",name:"SpecimenUID",vm:"1",version:"DICOM"},"(0040,0555)":{tag:"(0040,0555)",vr:"SQ",name:"AcquisitionContextSequence",vm:"1",version:"DICOM"},"(0040,0556)":{tag:"(0040,0556)",vr:"ST",name:"AcquisitionContextDescription",vm:"1",version:"DICOM"},"(0040,0560)":{tag:"(0040,0560)",vr:"SQ",name:"SpecimenDescriptionSequence",vm:"1",version:"DICOM"},"(0040,0562)":{tag:"(0040,0562)",vr:"SQ",name:"IssuerOfTheSpecimenIdentifierSequence",vm:"1",version:"DICOM"},"(0040,059A)":{tag:"(0040,059A)",vr:"SQ",name:"SpecimenTypeCodeSequence",vm:"1",version:"DICOM"},"(0040,0600)":{tag:"(0040,0600)",vr:"LO",name:"SpecimenShortDescription",vm:"1",version:"DICOM"},"(0040,0602)":{tag:"(0040,0602)",vr:"UT",name:"SpecimenDetailedDescription",vm:"1",version:"DICOM"},"(0040,0610)":{tag:"(0040,0610)",vr:"SQ",name:"SpecimenPreparationSequence",vm:"1",version:"DICOM"},"(0040,0612)":{tag:"(0040,0612)",vr:"SQ",name:"SpecimenPreparationStepContentItemSequence",vm:"1",version:"DICOM"},"(0040,0620)":{tag:"(0040,0620)",vr:"SQ",name:"SpecimenLocalizationContentItemSequence",vm:"1",version:"DICOM"},"(0040,0710)":{tag:"(0040,0710)",vr:"SQ",name:"WholeSlideMicroscopyImageFrameTypeSequence",vm:"1",version:"DICOM"},"(0040,071A)":{tag:"(0040,071A)",vr:"SQ",name:"ImageCenterPointCoordinatesSequence",vm:"1",version:"DICOM"},"(0040,072A)":{tag:"(0040,072A)",vr:"DS",name:"XOffsetInSlideCoordinateSystem",vm:"1",version:"DICOM"},"(0040,073A)":{tag:"(0040,073A)",vr:"DS",name:"YOffsetInSlideCoordinateSystem",vm:"1",version:"DICOM"},"(0040,074A)":{tag:"(0040,074A)",vr:"DS",name:"ZOffsetInSlideCoordinateSystem",vm:"1",version:"DICOM"},"(0040,08EA)":{tag:"(0040,08EA)",vr:"SQ",name:"MeasurementUnitsCodeSequence",vm:"1",version:"DICOM"},"(0040,1001)":{tag:"(0040,1001)",vr:"SH",name:"RequestedProcedureID",vm:"1",version:"DICOM"},"(0040,1002)":{tag:"(0040,1002)",vr:"LO",name:"ReasonForTheRequestedProcedure",vm:"1",version:"DICOM"},"(0040,1003)":{tag:"(0040,1003)",vr:"SH",name:"RequestedProcedurePriority",vm:"1",version:"DICOM"},"(0040,1004)":{tag:"(0040,1004)",vr:"LO",name:"PatientTransportArrangements",vm:"1",version:"DICOM"},"(0040,1005)":{tag:"(0040,1005)",vr:"LO",name:"RequestedProcedureLocation",vm:"1",version:"DICOM"},"(0040,1008)":{tag:"(0040,1008)",vr:"LO",name:"ConfidentialityCode",vm:"1",version:"DICOM"},"(0040,1009)":{tag:"(0040,1009)",vr:"SH",name:"ReportingPriority",vm:"1",version:"DICOM"},"(0040,100A)":{tag:"(0040,100A)",vr:"SQ",name:"ReasonForRequestedProcedureCodeSequence",vm:"1",version:"DICOM"},"(0040,1010)":{tag:"(0040,1010)",vr:"PN",name:"NamesOfIntendedRecipientsOfResults",vm:"1-n",version:"DICOM"},"(0040,1011)":{tag:"(0040,1011)",vr:"SQ",name:"IntendedRecipientsOfResultsIdentificationSequence",vm:"1",version:"DICOM"},"(0040,1012)":{tag:"(0040,1012)",vr:"SQ",name:"ReasonForPerformedProcedureCodeSequence",vm:"1",version:"DICOM"},"(0040,1101)":{tag:"(0040,1101)",vr:"SQ",name:"PersonIdentificationCodeSequence",vm:"1",version:"DICOM"},"(0040,1102)":{tag:"(0040,1102)",vr:"ST",name:"PersonAddress",vm:"1",version:"DICOM"},"(0040,1103)":{tag:"(0040,1103)",vr:"LO",name:"PersonTelephoneNumbers",vm:"1-n",version:"DICOM"},"(0040,1104)":{tag:"(0040,1104)",vr:"LT",name:"PersonTelecomInformation",vm:"1",version:"DICOM"},"(0040,1400)":{tag:"(0040,1400)",vr:"LT",name:"RequestedProcedureComments",vm:"1",version:"DICOM"},"(0040,2004)":{tag:"(0040,2004)",vr:"DA",name:"IssueDateOfImagingServiceRequest",vm:"1",version:"DICOM"},"(0040,2005)":{tag:"(0040,2005)",vr:"TM",name:"IssueTimeOfImagingServiceRequest",vm:"1",version:"DICOM"},"(0040,2008)":{tag:"(0040,2008)",vr:"PN",name:"OrderEnteredBy",vm:"1",version:"DICOM"},"(0040,2009)":{tag:"(0040,2009)",vr:"SH",name:"OrderEntererLocation",vm:"1",version:"DICOM"},"(0040,2010)":{tag:"(0040,2010)",vr:"SH",name:"OrderCallbackPhoneNumber",vm:"1",version:"DICOM"},"(0040,2011)":{tag:"(0040,2011)",vr:"LT",name:"OrderCallbackTelecomInformation",vm:"1",version:"DICOM"},"(0040,2016)":{tag:"(0040,2016)",vr:"LO",name:"PlacerOrderNumberImagingServiceRequest",vm:"1",version:"DICOM"},"(0040,2017)":{tag:"(0040,2017)",vr:"LO",name:"FillerOrderNumberImagingServiceRequest",vm:"1",version:"DICOM"},"(0040,2400)":{tag:"(0040,2400)",vr:"LT",name:"ImagingServiceRequestComments",vm:"1",version:"DICOM"},"(0040,3001)":{tag:"(0040,3001)",vr:"LO",name:"ConfidentialityConstraintOnPatientDataDescription",vm:"1",version:"DICOM"},"(0040,4005)":{tag:"(0040,4005)",vr:"DT",name:"ScheduledProcedureStepStartDateTime",vm:"1",version:"DICOM"},"(0040,4007)":{tag:"(0040,4007)",vr:"SQ",name:"PerformedProcessingApplicationsCodeSequence",vm:"1",version:"DICOM"},"(0040,4008)":{tag:"(0040,4008)",vr:"DT",name:"ScheduledProcedureStepExpirationDateTime",vm:"1",version:"DICOM"},"(0040,4009)":{tag:"(0040,4009)",vr:"SQ",name:"HumanPerformerCodeSequence",vm:"1",version:"DICOM"},"(0040,4010)":{tag:"(0040,4010)",vr:"DT",name:"ScheduledProcedureStepModificationDateTime",vm:"1",version:"DICOM"},"(0040,4011)":{tag:"(0040,4011)",vr:"DT",name:"ExpectedCompletionDateTime",vm:"1",version:"DICOM"},"(0040,4018)":{tag:"(0040,4018)",vr:"SQ",name:"ScheduledWorkitemCodeSequence",vm:"1",version:"DICOM"},"(0040,4019)":{tag:"(0040,4019)",vr:"SQ",name:"PerformedWorkitemCodeSequence",vm:"1",version:"DICOM"},"(0040,4020)":{tag:"(0040,4020)",vr:"CS",name:"InputAvailabilityFlag",vm:"1",version:"DICOM"},"(0040,4021)":{tag:"(0040,4021)",vr:"SQ",name:"InputInformationSequence",vm:"1",version:"DICOM"},"(0040,4025)":{tag:"(0040,4025)",vr:"SQ",name:"ScheduledStationNameCodeSequence",vm:"1",version:"DICOM"},"(0040,4026)":{tag:"(0040,4026)",vr:"SQ",name:"ScheduledStationClassCodeSequence",vm:"1",version:"DICOM"},"(0040,4027)":{tag:"(0040,4027)",vr:"SQ",name:"ScheduledStationGeographicLocationCodeSequence",vm:"1",version:"DICOM"},"(0040,4028)":{tag:"(0040,4028)",vr:"SQ",name:"PerformedStationNameCodeSequence",vm:"1",version:"DICOM"},"(0040,4029)":{tag:"(0040,4029)",vr:"SQ",name:"PerformedStationClassCodeSequence",vm:"1",version:"DICOM"},"(0040,4030)":{tag:"(0040,4030)",vr:"SQ",name:"PerformedStationGeographicLocationCodeSequence",vm:"1",version:"DICOM"},"(0040,4033)":{tag:"(0040,4033)",vr:"SQ",name:"OutputInformationSequence",vm:"1",version:"DICOM"},"(0040,4034)":{tag:"(0040,4034)",vr:"SQ",name:"ScheduledHumanPerformersSequence",vm:"1",version:"DICOM"},"(0040,4035)":{tag:"(0040,4035)",vr:"SQ",name:"ActualHumanPerformersSequence",vm:"1",version:"DICOM"},"(0040,4036)":{tag:"(0040,4036)",vr:"LO",name:"HumanPerformerOrganization",vm:"1",version:"DICOM"},"(0040,4037)":{tag:"(0040,4037)",vr:"PN",name:"HumanPerformerName",vm:"1",version:"DICOM"},"(0040,4040)":{tag:"(0040,4040)",vr:"CS",name:"RawDataHandling",vm:"1",version:"DICOM"},"(0040,4041)":{tag:"(0040,4041)",vr:"CS",name:"InputReadinessState",vm:"1",version:"DICOM"},"(0040,4050)":{tag:"(0040,4050)",vr:"DT",name:"PerformedProcedureStepStartDateTime",vm:"1",version:"DICOM"},"(0040,4051)":{tag:"(0040,4051)",vr:"DT",name:"PerformedProcedureStepEndDateTime",vm:"1",version:"DICOM"},"(0040,4052)":{tag:"(0040,4052)",vr:"DT",name:"ProcedureStepCancellationDateTime",vm:"1",version:"DICOM"},"(0040,8302)":{tag:"(0040,8302)",vr:"DS",name:"EntranceDoseInmGy",vm:"1",version:"DICOM"},"(0040,8303)":{tag:"(0040,8303)",vr:"CS",name:"EntranceDoseDerivation",vm:"1",version:"DICOM"},"(0040,9092)":{tag:"(0040,9092)",vr:"SQ",name:"ParametricMapFrameTypeSequence",vm:"1",version:"DICOM"},"(0040,9094)":{tag:"(0040,9094)",vr:"SQ",name:"ReferencedImageRealWorldValueMappingSequence",vm:"1",version:"DICOM"},"(0040,9096)":{tag:"(0040,9096)",vr:"SQ",name:"RealWorldValueMappingSequence",vm:"1",version:"DICOM"},"(0040,9098)":{tag:"(0040,9098)",vr:"SQ",name:"PixelValueMappingCodeSequence",vm:"1",version:"DICOM"},"(0040,9210)":{tag:"(0040,9210)",vr:"SH",name:"LUTLabel",vm:"1",version:"DICOM"},"(0040,9211)":{tag:"(0040,9211)",vr:"xs",name:"RealWorldValueLastValueMapped",vm:"1",version:"DICOM"},"(0040,9212)":{tag:"(0040,9212)",vr:"FD",name:"RealWorldValueLUTData",vm:"1-n",version:"DICOM"},"(0040,9216)":{tag:"(0040,9216)",vr:"xs",name:"RealWorldValueFirstValueMapped",vm:"1",version:"DICOM"},"(0040,9220)":{tag:"(0040,9220)",vr:"SQ",name:"QuantityDefinitionSequence",vm:"1",version:"DICOM"},"(0040,9224)":{tag:"(0040,9224)",vr:"FD",name:"RealWorldValueIntercept",vm:"1",version:"DICOM"},"(0040,9225)":{tag:"(0040,9225)",vr:"FD",name:"RealWorldValueSlope",vm:"1",version:"DICOM"},"(0040,A010)":{tag:"(0040,A010)",vr:"CS",name:"RelationshipType",vm:"1",version:"DICOM"},"(0040,A027)":{tag:"(0040,A027)",vr:"LO",name:"VerifyingOrganization",vm:"1",version:"DICOM"},"(0040,A030)":{tag:"(0040,A030)",vr:"DT",name:"VerificationDateTime",vm:"1",version:"DICOM"},"(0040,A032)":{tag:"(0040,A032)",vr:"DT",name:"ObservationDateTime",vm:"1",version:"DICOM"},"(0040,A033)":{tag:"(0040,A033)",vr:"DT",name:"ObservationStartDateTime",vm:"1",version:"DICOM"},"(0040,A040)":{tag:"(0040,A040)",vr:"CS",name:"ValueType",vm:"1",version:"DICOM"},"(0040,A043)":{tag:"(0040,A043)",vr:"SQ",name:"ConceptNameCodeSequence",vm:"1",version:"DICOM"},"(0040,A050)":{tag:"(0040,A050)",vr:"CS",name:"ContinuityOfContent",vm:"1",version:"DICOM"},"(0040,A073)":{tag:"(0040,A073)",vr:"SQ",name:"VerifyingObserverSequence",vm:"1",version:"DICOM"},"(0040,A075)":{tag:"(0040,A075)",vr:"PN",name:"VerifyingObserverName",vm:"1",version:"DICOM"},"(0040,A078)":{tag:"(0040,A078)",vr:"SQ",name:"AuthorObserverSequence",vm:"1",version:"DICOM"},"(0040,A07A)":{tag:"(0040,A07A)",vr:"SQ",name:"ParticipantSequence",vm:"1",version:"DICOM"},"(0040,A07C)":{tag:"(0040,A07C)",vr:"SQ",name:"CustodialOrganizationSequence",vm:"1",version:"DICOM"},"(0040,A080)":{tag:"(0040,A080)",vr:"CS",name:"ParticipationType",vm:"1",version:"DICOM"},"(0040,A082)":{tag:"(0040,A082)",vr:"DT",name:"ParticipationDateTime",vm:"1",version:"DICOM"},"(0040,A084)":{tag:"(0040,A084)",vr:"CS",name:"ObserverType",vm:"1",version:"DICOM"},"(0040,A088)":{tag:"(0040,A088)",vr:"SQ",name:"VerifyingObserverIdentificationCodeSequence",vm:"1",version:"DICOM"},"(0040,A0B0)":{tag:"(0040,A0B0)",vr:"US",name:"ReferencedWaveformChannels",vm:"2-2n",version:"DICOM"},"(0040,A120)":{tag:"(0040,A120)",vr:"DT",name:"DateTime",vm:"1",version:"DICOM"},"(0040,A121)":{tag:"(0040,A121)",vr:"DA",name:"Date",vm:"1",version:"DICOM"},"(0040,A122)":{tag:"(0040,A122)",vr:"TM",name:"Time",vm:"1",version:"DICOM"},"(0040,A123)":{tag:"(0040,A123)",vr:"PN",name:"PersonName",vm:"1",version:"DICOM"},"(0040,A124)":{tag:"(0040,A124)",vr:"UI",name:"UID",vm:"1",version:"DICOM"},"(0040,A130)":{tag:"(0040,A130)",vr:"CS",name:"TemporalRangeType",vm:"1",version:"DICOM"},"(0040,A132)":{tag:"(0040,A132)",vr:"UL",name:"ReferencedSamplePositions",vm:"1-n",version:"DICOM"},"(0040,A136)":{tag:"(0040,A136)",vr:"US",name:"ReferencedFrameNumbers",vm:"1-n",version:"DICOM"},"(0040,A138)":{tag:"(0040,A138)",vr:"DS",name:"ReferencedTimeOffsets",vm:"1-n",version:"DICOM"},"(0040,A13A)":{tag:"(0040,A13A)",vr:"DT",name:"ReferencedDateTime",vm:"1-n",version:"DICOM"},"(0040,A160)":{tag:"(0040,A160)",vr:"UT",name:"TextValue",vm:"1",version:"DICOM"},"(0040,A161)":{tag:"(0040,A161)",vr:"FD",name:"FloatingPointValue",vm:"1-n",version:"DICOM"},"(0040,A162)":{tag:"(0040,A162)",vr:"SL",name:"RationalNumeratorValue",vm:"1-n",version:"DICOM"},"(0040,A163)":{tag:"(0040,A163)",vr:"UL",name:"RationalDenominatorValue",vm:"1-n",version:"DICOM"},"(0040,A168)":{tag:"(0040,A168)",vr:"SQ",name:"ConceptCodeSequence",vm:"1",version:"DICOM"},"(0040,A170)":{tag:"(0040,A170)",vr:"SQ",name:"PurposeOfReferenceCodeSequence",vm:"1",version:"DICOM"},"(0040,A171)":{tag:"(0040,A171)",vr:"UI",name:"ObservationUID",vm:"1",version:"DICOM"},"(0040,A180)":{tag:"(0040,A180)",vr:"US",name:"AnnotationGroupNumber",vm:"1",version:"DICOM"},"(0040,A195)":{tag:"(0040,A195)",vr:"SQ",name:"ModifierCodeSequence",vm:"1",version:"DICOM"},"(0040,A300)":{tag:"(0040,A300)",vr:"SQ",name:"MeasuredValueSequence",vm:"1",version:"DICOM"},"(0040,A301)":{tag:"(0040,A301)",vr:"SQ",name:"NumericValueQualifierCodeSequence",vm:"1",version:"DICOM"},"(0040,A30A)":{tag:"(0040,A30A)",vr:"DS",name:"NumericValue",vm:"1-n",version:"DICOM"},"(0040,A360)":{tag:"(0040,A360)",vr:"SQ",name:"PredecessorDocumentsSequence",vm:"1",version:"DICOM"},"(0040,A370)":{tag:"(0040,A370)",vr:"SQ",name:"ReferencedRequestSequence",vm:"1",version:"DICOM"},"(0040,A372)":{tag:"(0040,A372)",vr:"SQ",name:"PerformedProcedureCodeSequence",vm:"1",version:"DICOM"},"(0040,A375)":{tag:"(0040,A375)",vr:"SQ",name:"CurrentRequestedProcedureEvidenceSequence",vm:"1",version:"DICOM"},"(0040,A385)":{tag:"(0040,A385)",vr:"SQ",name:"PertinentOtherEvidenceSequence",vm:"1",version:"DICOM"},"(0040,A390)":{tag:"(0040,A390)",vr:"SQ",name:"HL7StructuredDocumentReferenceSequence",vm:"1",version:"DICOM"},"(0040,A491)":{tag:"(0040,A491)",vr:"CS",name:"CompletionFlag",vm:"1",version:"DICOM"},"(0040,A492)":{tag:"(0040,A492)",vr:"LO",name:"CompletionFlagDescription",vm:"1",version:"DICOM"},"(0040,A493)":{tag:"(0040,A493)",vr:"CS",name:"VerificationFlag",vm:"1",version:"DICOM"},"(0040,A494)":{tag:"(0040,A494)",vr:"CS",name:"ArchiveRequested",vm:"1",version:"DICOM"},"(0040,A496)":{tag:"(0040,A496)",vr:"CS",name:"PreliminaryFlag",vm:"1",version:"DICOM"},"(0040,A504)":{tag:"(0040,A504)",vr:"SQ",name:"ContentTemplateSequence",vm:"1",version:"DICOM"},"(0040,A525)":{tag:"(0040,A525)",vr:"SQ",name:"IdenticalDocumentsSequence",vm:"1",version:"DICOM"},"(0040,A730)":{tag:"(0040,A730)",vr:"SQ",name:"ContentSequence",vm:"1",version:"DICOM"},"(0040,A801)":{tag:"(0040,A801)",vr:"SQ",name:"TabulatedValuesSequence",vm:"1",version:"DICOM"},"(0040,A802)":{tag:"(0040,A802)",vr:"UL",name:"NumberOfTableRows",vm:"1",version:"DICOM"},"(0040,A803)":{tag:"(0040,A803)",vr:"UL",name:"NumbeOfTableColumns",vm:"1",version:"DICOM"},"(0040,A804)":{tag:"(0040,A804)",vr:"UL",name:"TableRowNumber",vm:"1",version:"DICOM"},"(0040,A805)":{tag:"(0040,A805)",vr:"UL",name:"TableColumnNumber",vm:"1",version:"DICOM"},"(0040,A806)":{tag:"(0040,A806)",vr:"SQ",name:"TableRowDefinitionSequence",vm:"1",version:"DICOM"},"(0040,A807)":{tag:"(0040,A807)",vr:"SQ",name:"TableColumnDefinitionSequence",vm:"1",version:"DICOM"},"(0040,A808)":{tag:"(0040,A808)",vr:"SQ",name:"CellValuesSequence",vm:"1",version:"DICOM"},"(0040,B020)":{tag:"(0040,B020)",vr:"SQ",name:"WaveformAnnotationSequence",vm:"1",version:"DICOM"},"(0040,DB00)":{tag:"(0040,DB00)",vr:"CS",name:"TemplateIdentifier",vm:"1",version:"DICOM"},"(0040,DB73)":{tag:"(0040,DB73)",vr:"UL",name:"ReferencedContentItemIdentifier",vm:"1-n",version:"DICOM"},"(0040,E001)":{tag:"(0040,E001)",vr:"ST",name:"HL7InstanceIdentifier",vm:"1",version:"DICOM"},"(0040,E004)":{tag:"(0040,E004)",vr:"DT",name:"HL7DocumentEffectiveTime",vm:"1",version:"DICOM"},"(0040,E006)":{tag:"(0040,E006)",vr:"SQ",name:"HL7DocumentTypeCodeSequence",vm:"1",version:"DICOM"},"(0040,E008)":{tag:"(0040,E008)",vr:"SQ",name:"DocumentClassCodeSequence",vm:"1",version:"DICOM"},"(0040,E010)":{tag:"(0040,E010)",vr:"UR",name:"RetrieveURI",vm:"1",version:"DICOM"},"(0040,E011)":{tag:"(0040,E011)",vr:"UI",name:"RetrieveLocationUID",vm:"1",version:"DICOM"},"(0040,E020)":{tag:"(0040,E020)",vr:"CS",name:"TypeOfInstances",vm:"1",version:"DICOM"},"(0040,E021)":{tag:"(0040,E021)",vr:"SQ",name:"DICOMRetrievalSequence",vm:"1",version:"DICOM"},"(0040,E022)":{tag:"(0040,E022)",vr:"SQ",name:"DICOMMediaRetrievalSequence",vm:"1",version:"DICOM"},"(0040,E023)":{tag:"(0040,E023)",vr:"SQ",name:"WADORetrievalSequence",vm:"1",version:"DICOM"},"(0040,E024)":{tag:"(0040,E024)",vr:"SQ",name:"XDSRetrievalSequence",vm:"1",version:"DICOM"},"(0040,E025)":{tag:"(0040,E025)",vr:"SQ",name:"WADORSRetrievalSequence",vm:"1",version:"DICOM"},"(0040,E030)":{tag:"(0040,E030)",vr:"UI",name:"RepositoryUniqueID",vm:"1",version:"DICOM"},"(0040,E031)":{tag:"(0040,E031)",vr:"UI",name:"HomeCommunityID",vm:"1",version:"DICOM"},"(0042,0010)":{tag:"(0042,0010)",vr:"ST",name:"DocumentTitle",vm:"1",version:"DICOM"},"(0042,0011)":{tag:"(0042,0011)",vr:"OB",name:"EncapsulatedDocument",vm:"1",version:"DICOM"},"(0042,0012)":{tag:"(0042,0012)",vr:"LO",name:"MIMETypeOfEncapsulatedDocument",vm:"1",version:"DICOM"},"(0042,0013)":{tag:"(0042,0013)",vr:"SQ",name:"SourceInstanceSequence",vm:"1",version:"DICOM"},"(0042,0014)":{tag:"(0042,0014)",vr:"LO",name:"ListOfMIMETypes",vm:"1-n",version:"DICOM"},"(0042,0015)":{tag:"(0042,0015)",vr:"UL",name:"EncapsulatedDocumentLength",vm:"1",version:"DICOM"},"(0044,0001)":{tag:"(0044,0001)",vr:"ST",name:"ProductPackageIdentifier",vm:"1",version:"DICOM"},"(0044,0002)":{tag:"(0044,0002)",vr:"CS",name:"SubstanceAdministrationApproval",vm:"1",version:"DICOM"},"(0044,0003)":{tag:"(0044,0003)",vr:"LT",name:"ApprovalStatusFurtherDescription",vm:"1",version:"DICOM"},"(0044,0004)":{tag:"(0044,0004)",vr:"DT",name:"ApprovalStatusDateTime",vm:"1",version:"DICOM"},"(0044,0007)":{tag:"(0044,0007)",vr:"SQ",name:"ProductTypeCodeSequence",vm:"1",version:"DICOM"},"(0044,0008)":{tag:"(0044,0008)",vr:"LO",name:"ProductName",vm:"1-n",version:"DICOM"},"(0044,0009)":{tag:"(0044,0009)",vr:"LT",name:"ProductDescription",vm:"1",version:"DICOM"},"(0044,000A)":{tag:"(0044,000A)",vr:"LO",name:"ProductLotIdentifier",vm:"1",version:"DICOM"},"(0044,000B)":{tag:"(0044,000B)",vr:"DT",name:"ProductExpirationDateTime",vm:"1",version:"DICOM"},"(0044,0010)":{tag:"(0044,0010)",vr:"DT",name:"SubstanceAdministrationDateTime",vm:"1",version:"DICOM"},"(0044,0011)":{tag:"(0044,0011)",vr:"LO",name:"SubstanceAdministrationNotes",vm:"1",version:"DICOM"},"(0044,0012)":{tag:"(0044,0012)",vr:"LO",name:"SubstanceAdministrationDeviceID",vm:"1",version:"DICOM"},"(0044,0013)":{tag:"(0044,0013)",vr:"SQ",name:"ProductParameterSequence",vm:"1",version:"DICOM"},"(0044,0019)":{tag:"(0044,0019)",vr:"SQ",name:"SubstanceAdministrationParameterSequence",vm:"1",version:"DICOM"},"(0044,0100)":{tag:"(0044,0100)",vr:"SQ",name:"ApprovalSequence",vm:"1",version:"DICOM"},"(0044,0101)":{tag:"(0044,0101)",vr:"SQ",name:"AssertionCodeSequence",vm:"1",version:"DICOM"},"(0044,0102)":{tag:"(0044,0102)",vr:"UI",name:"AssertionUID",vm:"1",version:"DICOM"},"(0044,0103)":{tag:"(0044,0103)",vr:"SQ",name:"AsserterIdentificationSequence",vm:"1",version:"DICOM"},"(0044,0104)":{tag:"(0044,0104)",vr:"DT",name:"AssertionDateTime",vm:"1",version:"DICOM"},"(0044,0105)":{tag:"(0044,0105)",vr:"DT",name:"AssertionExpirationDateTime",vm:"1",version:"DICOM"},"(0044,0106)":{tag:"(0044,0106)",vr:"UT",name:"AssertionComments",vm:"1",version:"DICOM"},"(0044,0107)":{tag:"(0044,0107)",vr:"SQ",name:"RelatedAssertionSequence",vm:"1",version:"DICOM"},"(0044,0108)":{tag:"(0044,0108)",vr:"UI",name:"ReferencedAssertionUID",vm:"1",version:"DICOM"},"(0044,0109)":{tag:"(0044,0109)",vr:"SQ",name:"ApprovalSubjectSequence",vm:"1",version:"DICOM"},"(0044,010A)":{tag:"(0044,010A)",vr:"SQ",name:"OrganizationalRoleCodeSequence",vm:"1",version:"DICOM"},"(0046,0012)":{tag:"(0046,0012)",vr:"LO",name:"LensDescription",vm:"1",version:"DICOM"},"(0046,0014)":{tag:"(0046,0014)",vr:"SQ",name:"RightLensSequence",vm:"1",version:"DICOM"},"(0046,0015)":{tag:"(0046,0015)",vr:"SQ",name:"LeftLensSequence",vm:"1",version:"DICOM"},"(0046,0016)":{tag:"(0046,0016)",vr:"SQ",name:"UnspecifiedLateralityLensSequence",vm:"1",version:"DICOM"},"(0046,0018)":{tag:"(0046,0018)",vr:"SQ",name:"CylinderSequence",vm:"1",version:"DICOM"},"(0046,0028)":{tag:"(0046,0028)",vr:"SQ",name:"PrismSequence",vm:"1",version:"DICOM"},"(0046,0030)":{tag:"(0046,0030)",vr:"FD",name:"HorizontalPrismPower",vm:"1",version:"DICOM"},"(0046,0032)":{tag:"(0046,0032)",vr:"CS",name:"HorizontalPrismBase",vm:"1",version:"DICOM"},"(0046,0034)":{tag:"(0046,0034)",vr:"FD",name:"VerticalPrismPower",vm:"1",version:"DICOM"},"(0046,0036)":{tag:"(0046,0036)",vr:"CS",name:"VerticalPrismBase",vm:"1",version:"DICOM"},"(0046,0038)":{tag:"(0046,0038)",vr:"CS",name:"LensSegmentType",vm:"1",version:"DICOM"},"(0046,0040)":{tag:"(0046,0040)",vr:"FD",name:"OpticalTransmittance",vm:"1",version:"DICOM"},"(0046,0042)":{tag:"(0046,0042)",vr:"FD",name:"ChannelWidth",vm:"1",version:"DICOM"},"(0046,0044)":{tag:"(0046,0044)",vr:"FD",name:"PupilSize",vm:"1",version:"DICOM"},"(0046,0046)":{tag:"(0046,0046)",vr:"FD",name:"CornealSize",vm:"1",version:"DICOM"},"(0046,0047)":{tag:"(0046,0047)",vr:"SQ",name:"CornealSizeSequence",vm:"1",version:"DICOM"},"(0046,0050)":{tag:"(0046,0050)",vr:"SQ",name:"AutorefractionRightEyeSequence",vm:"1",version:"DICOM"},"(0046,0052)":{tag:"(0046,0052)",vr:"SQ",name:"AutorefractionLeftEyeSequence",vm:"1",version:"DICOM"},"(0046,0060)":{tag:"(0046,0060)",vr:"FD",name:"DistancePupillaryDistance",vm:"1",version:"DICOM"},"(0046,0062)":{tag:"(0046,0062)",vr:"FD",name:"NearPupillaryDistance",vm:"1",version:"DICOM"},"(0046,0063)":{tag:"(0046,0063)",vr:"FD",name:"IntermediatePupillaryDistance",vm:"1",version:"DICOM"},"(0046,0064)":{tag:"(0046,0064)",vr:"FD",name:"OtherPupillaryDistance",vm:"1",version:"DICOM"},"(0046,0070)":{tag:"(0046,0070)",vr:"SQ",name:"KeratometryRightEyeSequence",vm:"1",version:"DICOM"},"(0046,0071)":{tag:"(0046,0071)",vr:"SQ",name:"KeratometryLeftEyeSequence",vm:"1",version:"DICOM"},"(0046,0074)":{tag:"(0046,0074)",vr:"SQ",name:"SteepKeratometricAxisSequence",vm:"1",version:"DICOM"},"(0046,0075)":{tag:"(0046,0075)",vr:"FD",name:"RadiusOfCurvature",vm:"1",version:"DICOM"},"(0046,0076)":{tag:"(0046,0076)",vr:"FD",name:"KeratometricPower",vm:"1",version:"DICOM"},"(0046,0077)":{tag:"(0046,0077)",vr:"FD",name:"KeratometricAxis",vm:"1",version:"DICOM"},"(0046,0080)":{tag:"(0046,0080)",vr:"SQ",name:"FlatKeratometricAxisSequence",vm:"1",version:"DICOM"},"(0046,0092)":{tag:"(0046,0092)",vr:"CS",name:"BackgroundColor",vm:"1",version:"DICOM"},"(0046,0094)":{tag:"(0046,0094)",vr:"CS",name:"Optotype",vm:"1",version:"DICOM"},"(0046,0095)":{tag:"(0046,0095)",vr:"CS",name:"OptotypePresentation",vm:"1",version:"DICOM"},"(0046,0097)":{tag:"(0046,0097)",vr:"SQ",name:"SubjectiveRefractionRightEyeSequence",vm:"1",version:"DICOM"},"(0046,0098)":{tag:"(0046,0098)",vr:"SQ",name:"SubjectiveRefractionLeftEyeSequence",vm:"1",version:"DICOM"},"(0046,0100)":{tag:"(0046,0100)",vr:"SQ",name:"AddNearSequence",vm:"1",version:"DICOM"},"(0046,0101)":{tag:"(0046,0101)",vr:"SQ",name:"AddIntermediateSequence",vm:"1",version:"DICOM"},"(0046,0102)":{tag:"(0046,0102)",vr:"SQ",name:"AddOtherSequence",vm:"1",version:"DICOM"},"(0046,0104)":{tag:"(0046,0104)",vr:"FD",name:"AddPower",vm:"1",version:"DICOM"},"(0046,0106)":{tag:"(0046,0106)",vr:"FD",name:"ViewingDistance",vm:"1",version:"DICOM"},"(0046,0110)":{tag:"(0046,0110)",vr:"SQ",name:"CorneaMeasurementsSequence",vm:"1",version:"DICOM"},"(0046,0111)":{tag:"(0046,0111)",vr:"SQ",name:"SourceOfCorneaMeasurementDataCodeSequence",vm:"1",version:"DICOM"},"(0046,0112)":{tag:"(0046,0112)",vr:"SQ",name:"SteepCornealAxisSequence",vm:"1",version:"DICOM"},"(0046,0113)":{tag:"(0046,0113)",vr:"SQ",name:"FlatCornealAxisSequence",vm:"1",version:"DICOM"},"(0046,0114)":{tag:"(0046,0114)",vr:"FD",name:"CornealPower",vm:"1",version:"DICOM"},"(0046,0115)":{tag:"(0046,0115)",vr:"FD",name:"CornealAxis",vm:"1",version:"DICOM"},"(0046,0116)":{tag:"(0046,0116)",vr:"SQ",name:"CorneaMeasurementMethodCodeSequence",vm:"1",version:"DICOM"},"(0046,0117)":{tag:"(0046,0117)",vr:"FL",name:"RefractiveIndexOfCornea",vm:"1",version:"DICOM"},"(0046,0118)":{tag:"(0046,0118)",vr:"FL",name:"RefractiveIndexOfAqueousHumor",vm:"1",version:"DICOM"},"(0046,0121)":{tag:"(0046,0121)",vr:"SQ",name:"VisualAcuityTypeCodeSequence",vm:"1",version:"DICOM"},"(0046,0122)":{tag:"(0046,0122)",vr:"SQ",name:"VisualAcuityRightEyeSequence",vm:"1",version:"DICOM"},"(0046,0123)":{tag:"(0046,0123)",vr:"SQ",name:"VisualAcuityLeftEyeSequence",vm:"1",version:"DICOM"},"(0046,0124)":{tag:"(0046,0124)",vr:"SQ",name:"VisualAcuityBothEyesOpenSequence",vm:"1",version:"DICOM"},"(0046,0125)":{tag:"(0046,0125)",vr:"CS",name:"ViewingDistanceType",vm:"1",version:"DICOM"},"(0046,0135)":{tag:"(0046,0135)",vr:"SS",name:"VisualAcuityModifiers",vm:"2",version:"DICOM"},"(0046,0137)":{tag:"(0046,0137)",vr:"FD",name:"DecimalVisualAcuity",vm:"1",version:"DICOM"},"(0046,0139)":{tag:"(0046,0139)",vr:"LO",name:"OptotypeDetailedDefinition",vm:"1",version:"DICOM"},"(0046,0145)":{tag:"(0046,0145)",vr:"SQ",name:"ReferencedRefractiveMeasurementsSequence",vm:"1",version:"DICOM"},"(0046,0146)":{tag:"(0046,0146)",vr:"FD",name:"SpherePower",vm:"1",version:"DICOM"},"(0046,0147)":{tag:"(0046,0147)",vr:"FD",name:"CylinderPower",vm:"1",version:"DICOM"},"(0046,0201)":{tag:"(0046,0201)",vr:"CS",name:"CornealTopographySurface",vm:"1",version:"DICOM"},"(0046,0202)":{tag:"(0046,0202)",vr:"FL",name:"CornealVertexLocation",vm:"2",version:"DICOM"},"(0046,0203)":{tag:"(0046,0203)",vr:"FL",name:"PupilCentroidXCoordinate",vm:"1",version:"DICOM"},"(0046,0204)":{tag:"(0046,0204)",vr:"FL",name:"PupilCentroidYCoordinate",vm:"1",version:"DICOM"},"(0046,0205)":{tag:"(0046,0205)",vr:"FL",name:"EquivalentPupilRadius",vm:"1",version:"DICOM"},"(0046,0207)":{tag:"(0046,0207)",vr:"SQ",name:"CornealTopographyMapTypeCodeSequence",vm:"1",version:"DICOM"},"(0046,0208)":{tag:"(0046,0208)",vr:"IS",name:"VerticesOfTheOutlineOfPupil",vm:"2-2n",version:"DICOM"},"(0046,0210)":{tag:"(0046,0210)",vr:"SQ",name:"CornealTopographyMappingNormalsSequence",vm:"1",version:"DICOM"},"(0046,0211)":{tag:"(0046,0211)",vr:"SQ",name:"MaximumCornealCurvatureSequence",vm:"1",version:"DICOM"},"(0046,0212)":{tag:"(0046,0212)",vr:"FL",name:"MaximumCornealCurvature",vm:"1",version:"DICOM"},"(0046,0213)":{tag:"(0046,0213)",vr:"FL",name:"MaximumCornealCurvatureLocation",vm:"2",version:"DICOM"},"(0046,0215)":{tag:"(0046,0215)",vr:"SQ",name:"MinimumKeratometricSequence",vm:"1",version:"DICOM"},"(0046,0218)":{tag:"(0046,0218)",vr:"SQ",name:"SimulatedKeratometricCylinderSequence",vm:"1",version:"DICOM"},"(0046,0220)":{tag:"(0046,0220)",vr:"FL",name:"AverageCornealPower",vm:"1",version:"DICOM"},"(0046,0224)":{tag:"(0046,0224)",vr:"FL",name:"CornealISValue",vm:"1",version:"DICOM"},"(0046,0227)":{tag:"(0046,0227)",vr:"FL",name:"AnalyzedArea",vm:"1",version:"DICOM"},"(0046,0230)":{tag:"(0046,0230)",vr:"FL",name:"SurfaceRegularityIndex",vm:"1",version:"DICOM"},"(0046,0232)":{tag:"(0046,0232)",vr:"FL",name:"SurfaceAsymmetryIndex",vm:"1",version:"DICOM"},"(0046,0234)":{tag:"(0046,0234)",vr:"FL",name:"CornealEccentricityIndex",vm:"1",version:"DICOM"},"(0046,0236)":{tag:"(0046,0236)",vr:"FL",name:"KeratoconusPredictionIndex",vm:"1",version:"DICOM"},"(0046,0238)":{tag:"(0046,0238)",vr:"FL",name:"DecimalPotentialVisualAcuity",vm:"1",version:"DICOM"},"(0046,0242)":{tag:"(0046,0242)",vr:"CS",name:"CornealTopographyMapQualityEvaluation",vm:"1",version:"DICOM"},"(0046,0244)":{tag:"(0046,0244)",vr:"SQ",name:"SourceImageCornealProcessedDataSequence",vm:"1",version:"DICOM"},"(0046,0247)":{tag:"(0046,0247)",vr:"FL",name:"CornealPointLocation",vm:"3",version:"DICOM"},"(0046,0248)":{tag:"(0046,0248)",vr:"CS",name:"CornealPointEstimated",vm:"1",version:"DICOM"},"(0046,0249)":{tag:"(0046,0249)",vr:"FL",name:"AxialPower",vm:"1",version:"DICOM"},"(0046,0250)":{tag:"(0046,0250)",vr:"FL",name:"TangentialPower",vm:"1",version:"DICOM"},"(0046,0251)":{tag:"(0046,0251)",vr:"FL",name:"RefractivePower",vm:"1",version:"DICOM"},"(0046,0252)":{tag:"(0046,0252)",vr:"FL",name:"RelativeElevation",vm:"1",version:"DICOM"},"(0046,0253)":{tag:"(0046,0253)",vr:"FL",name:"CornealWavefront",vm:"1",version:"DICOM"},"(0048,0001)":{tag:"(0048,0001)",vr:"FL",name:"ImagedVolumeWidth",vm:"1",version:"DICOM"},"(0048,0002)":{tag:"(0048,0002)",vr:"FL",name:"ImagedVolumeHeight",vm:"1",version:"DICOM"},"(0048,0003)":{tag:"(0048,0003)",vr:"FL",name:"ImagedVolumeDepth",vm:"1",version:"DICOM"},"(0048,0006)":{tag:"(0048,0006)",vr:"UL",name:"TotalPixelMatrixColumns",vm:"1",version:"DICOM"},"(0048,0007)":{tag:"(0048,0007)",vr:"UL",name:"TotalPixelMatrixRows",vm:"1",version:"DICOM"},"(0048,0008)":{tag:"(0048,0008)",vr:"SQ",name:"TotalPixelMatrixOriginSequence",vm:"1",version:"DICOM"},"(0048,0010)":{tag:"(0048,0010)",vr:"CS",name:"SpecimenLabelInImage",vm:"1",version:"DICOM"},"(0048,0011)":{tag:"(0048,0011)",vr:"CS",name:"FocusMethod",vm:"1",version:"DICOM"},"(0048,0012)":{tag:"(0048,0012)",vr:"CS",name:"ExtendedDepthOfField",vm:"1",version:"DICOM"},"(0048,0013)":{tag:"(0048,0013)",vr:"US",name:"NumberOfFocalPlanes",vm:"1",version:"DICOM"},"(0048,0014)":{tag:"(0048,0014)",vr:"FL",name:"DistanceBetweenFocalPlanes",vm:"1",version:"DICOM"},"(0048,0015)":{tag:"(0048,0015)",vr:"US",name:"RecommendedAbsentPixelCIELabValue",vm:"3",version:"DICOM"},"(0048,0100)":{tag:"(0048,0100)",vr:"SQ",name:"IlluminatorTypeCodeSequence",vm:"1",version:"DICOM"},"(0048,0102)":{tag:"(0048,0102)",vr:"DS",name:"ImageOrientationSlide",vm:"6",version:"DICOM"},"(0048,0105)":{tag:"(0048,0105)",vr:"SQ",name:"OpticalPathSequence",vm:"1",version:"DICOM"},"(0048,0106)":{tag:"(0048,0106)",vr:"SH",name:"OpticalPathIdentifier",vm:"1",version:"DICOM"},"(0048,0107)":{tag:"(0048,0107)",vr:"ST",name:"OpticalPathDescription",vm:"1",version:"DICOM"},"(0048,0108)":{tag:"(0048,0108)",vr:"SQ",name:"IlluminationColorCodeSequence",vm:"1",version:"DICOM"},"(0048,0110)":{tag:"(0048,0110)",vr:"SQ",name:"SpecimenReferenceSequence",vm:"1",version:"DICOM"},"(0048,0111)":{tag:"(0048,0111)",vr:"DS",name:"CondenserLensPower",vm:"1",version:"DICOM"},"(0048,0112)":{tag:"(0048,0112)",vr:"DS",name:"ObjectiveLensPower",vm:"1",version:"DICOM"},"(0048,0113)":{tag:"(0048,0113)",vr:"DS",name:"ObjectiveLensNumericalAperture",vm:"1",version:"DICOM"},"(0048,0120)":{tag:"(0048,0120)",vr:"SQ",name:"PaletteColorLookupTableSequence",vm:"1",version:"DICOM"},"(0048,0200)":{tag:"(0048,0200)",vr:"SQ",name:"ReferencedImageNavigationSequence",vm:"1",version:"DICOM"},"(0048,0201)":{tag:"(0048,0201)",vr:"US",name:"TopLeftHandCornerOfLocalizerArea",vm:"2",version:"DICOM"},"(0048,0202)":{tag:"(0048,0202)",vr:"US",name:"BottomRightHandCornerOfLocalizerArea",vm:"2",version:"DICOM"},"(0048,0207)":{tag:"(0048,0207)",vr:"SQ",name:"OpticalPathIdentificationSequence",vm:"1",version:"DICOM"},"(0048,021A)":{tag:"(0048,021A)",vr:"SQ",name:"PlanePositionSlideSequence",vm:"1",version:"DICOM"},"(0048,021E)":{tag:"(0048,021E)",vr:"SL",name:"ColumnPositionInTotalImagePixelMatrix",vm:"1",version:"DICOM"},"(0048,021F)":{tag:"(0048,021F)",vr:"SL",name:"RowPositionInTotalImagePixelMatrix",vm:"1",version:"DICOM"},"(0048,0301)":{tag:"(0048,0301)",vr:"CS",name:"PixelOriginInterpretation",vm:"1",version:"DICOM"},"(0048,0302)":{tag:"(0048,0302)",vr:"UL",name:"NumberOfOpticalPaths",vm:"1",version:"DICOM"},"(0048,0303)":{tag:"(0048,0303)",vr:"UL",name:"TotalPixelMatrixFocalPlanes",vm:"1",version:"DICOM"},"(0050,0004)":{tag:"(0050,0004)",vr:"CS",name:"CalibrationImage",vm:"1",version:"DICOM"},"(0050,0010)":{tag:"(0050,0010)",vr:"SQ",name:"DeviceSequence",vm:"1",version:"DICOM"},"(0050,0012)":{tag:"(0050,0012)",vr:"SQ",name:"ContainerComponentTypeCodeSequence",vm:"1",version:"DICOM"},"(0050,0013)":{tag:"(0050,0013)",vr:"FD",name:"ContainerComponentThickness",vm:"1",version:"DICOM"},"(0050,0014)":{tag:"(0050,0014)",vr:"DS",name:"DeviceLength",vm:"1",version:"DICOM"},"(0050,0015)":{tag:"(0050,0015)",vr:"FD",name:"ContainerComponentWidth",vm:"1",version:"DICOM"},"(0050,0016)":{tag:"(0050,0016)",vr:"DS",name:"DeviceDiameter",vm:"1",version:"DICOM"},"(0050,0017)":{tag:"(0050,0017)",vr:"CS",name:"DeviceDiameterUnits",vm:"1",version:"DICOM"},"(0050,0018)":{tag:"(0050,0018)",vr:"DS",name:"DeviceVolume",vm:"1",version:"DICOM"},"(0050,0019)":{tag:"(0050,0019)",vr:"DS",name:"InterMarkerDistance",vm:"1",version:"DICOM"},"(0050,001A)":{tag:"(0050,001A)",vr:"CS",name:"ContainerComponentMaterial",vm:"1",version:"DICOM"},"(0050,001B)":{tag:"(0050,001B)",vr:"LO",name:"ContainerComponentID",vm:"1",version:"DICOM"},"(0050,001C)":{tag:"(0050,001C)",vr:"FD",name:"ContainerComponentLength",vm:"1",version:"DICOM"},"(0050,001D)":{tag:"(0050,001D)",vr:"FD",name:"ContainerComponentDiameter",vm:"1",version:"DICOM"},"(0050,001E)":{tag:"(0050,001E)",vr:"LO",name:"ContainerComponentDescription",vm:"1",version:"DICOM"},"(0050,0020)":{tag:"(0050,0020)",vr:"LO",name:"DeviceDescription",vm:"1",version:"DICOM"},"(0050,0021)":{tag:"(0050,0021)",vr:"ST",name:"LongDeviceDescription",vm:"1",version:"DICOM"},"(0052,0001)":{tag:"(0052,0001)",vr:"FL",name:"ContrastBolusIngredientPercentByVolume",vm:"1",version:"DICOM"},"(0052,0002)":{tag:"(0052,0002)",vr:"FD",name:"OCTFocalDistance",vm:"1",version:"DICOM"},"(0052,0003)":{tag:"(0052,0003)",vr:"FD",name:"BeamSpotSize",vm:"1",version:"DICOM"},"(0052,0004)":{tag:"(0052,0004)",vr:"FD",name:"EffectiveRefractiveIndex",vm:"1",version:"DICOM"},"(0052,0006)":{tag:"(0052,0006)",vr:"CS",name:"OCTAcquisitionDomain",vm:"1",version:"DICOM"},"(0052,0007)":{tag:"(0052,0007)",vr:"FD",name:"OCTOpticalCenterWavelength",vm:"1",version:"DICOM"},"(0052,0008)":{tag:"(0052,0008)",vr:"FD",name:"AxialResolution",vm:"1",version:"DICOM"},"(0052,0009)":{tag:"(0052,0009)",vr:"FD",name:"RangingDepth",vm:"1",version:"DICOM"},"(0052,0011)":{tag:"(0052,0011)",vr:"FD",name:"ALineRate",vm:"1",version:"DICOM"},"(0052,0012)":{tag:"(0052,0012)",vr:"US",name:"ALinesPerFrame",vm:"1",version:"DICOM"},"(0052,0013)":{tag:"(0052,0013)",vr:"FD",name:"CatheterRotationalRate",vm:"1",version:"DICOM"},"(0052,0014)":{tag:"(0052,0014)",vr:"FD",name:"ALinePixelSpacing",vm:"1",version:"DICOM"},"(0052,0016)":{tag:"(0052,0016)",vr:"SQ",name:"ModeOfPercutaneousAccessSequence",vm:"1",version:"DICOM"},"(0052,0025)":{tag:"(0052,0025)",vr:"SQ",name:"IntravascularOCTFrameTypeSequence",vm:"1",version:"DICOM"},"(0052,0026)":{tag:"(0052,0026)",vr:"CS",name:"OCTZOffsetApplied",vm:"1",version:"DICOM"},"(0052,0027)":{tag:"(0052,0027)",vr:"SQ",name:"IntravascularFrameContentSequence",vm:"1",version:"DICOM"},"(0052,0028)":{tag:"(0052,0028)",vr:"FD",name:"IntravascularLongitudinalDistance",vm:"1",version:"DICOM"},"(0052,0029)":{tag:"(0052,0029)",vr:"SQ",name:"IntravascularOCTFrameContentSequence",vm:"1",version:"DICOM"},"(0052,0030)":{tag:"(0052,0030)",vr:"SS",name:"OCTZOffsetCorrection",vm:"1",version:"DICOM"},"(0052,0031)":{tag:"(0052,0031)",vr:"CS",name:"CatheterDirectionOfRotation",vm:"1",version:"DICOM"},"(0052,0033)":{tag:"(0052,0033)",vr:"FD",name:"SeamLineLocation",vm:"1",version:"DICOM"},"(0052,0034)":{tag:"(0052,0034)",vr:"FD",name:"FirstALineLocation",vm:"1",version:"DICOM"},"(0052,0036)":{tag:"(0052,0036)",vr:"US",name:"SeamLineIndex",vm:"1",version:"DICOM"},"(0052,0038)":{tag:"(0052,0038)",vr:"US",name:"NumberOfPaddedALines",vm:"1",version:"DICOM"},"(0052,0039)":{tag:"(0052,0039)",vr:"CS",name:"InterpolationType",vm:"1",version:"DICOM"},"(0052,003A)":{tag:"(0052,003A)",vr:"CS",name:"RefractiveIndexApplied",vm:"1",version:"DICOM"},"(0054,0010)":{tag:"(0054,0010)",vr:"US",name:"EnergyWindowVector",vm:"1-n",version:"DICOM"},"(0054,0011)":{tag:"(0054,0011)",vr:"US",name:"NumberOfEnergyWindows",vm:"1",version:"DICOM"},"(0054,0012)":{tag:"(0054,0012)",vr:"SQ",name:"EnergyWindowInformationSequence",vm:"1",version:"DICOM"},"(0054,0013)":{tag:"(0054,0013)",vr:"SQ",name:"EnergyWindowRangeSequence",vm:"1",version:"DICOM"},"(0054,0014)":{tag:"(0054,0014)",vr:"DS",name:"EnergyWindowLowerLimit",vm:"1",version:"DICOM"},"(0054,0015)":{tag:"(0054,0015)",vr:"DS",name:"EnergyWindowUpperLimit",vm:"1",version:"DICOM"},"(0054,0016)":{tag:"(0054,0016)",vr:"SQ",name:"RadiopharmaceuticalInformationSequence",vm:"1",version:"DICOM"},"(0054,0017)":{tag:"(0054,0017)",vr:"IS",name:"ResidualSyringeCounts",vm:"1",version:"DICOM"},"(0054,0018)":{tag:"(0054,0018)",vr:"SH",name:"EnergyWindowName",vm:"1",version:"DICOM"},"(0054,0020)":{tag:"(0054,0020)",vr:"US",name:"DetectorVector",vm:"1-n",version:"DICOM"},"(0054,0021)":{tag:"(0054,0021)",vr:"US",name:"NumberOfDetectors",vm:"1",version:"DICOM"},"(0054,0022)":{tag:"(0054,0022)",vr:"SQ",name:"DetectorInformationSequence",vm:"1",version:"DICOM"},"(0054,0030)":{tag:"(0054,0030)",vr:"US",name:"PhaseVector",vm:"1-n",version:"DICOM"},"(0054,0031)":{tag:"(0054,0031)",vr:"US",name:"NumberOfPhases",vm:"1",version:"DICOM"},"(0054,0032)":{tag:"(0054,0032)",vr:"SQ",name:"PhaseInformationSequence",vm:"1",version:"DICOM"},"(0054,0033)":{tag:"(0054,0033)",vr:"US",name:"NumberOfFramesInPhase",vm:"1",version:"DICOM"},"(0054,0036)":{tag:"(0054,0036)",vr:"IS",name:"PhaseDelay",vm:"1",version:"DICOM"},"(0054,0038)":{tag:"(0054,0038)",vr:"IS",name:"PauseBetweenFrames",vm:"1",version:"DICOM"},"(0054,0039)":{tag:"(0054,0039)",vr:"CS",name:"PhaseDescription",vm:"1",version:"DICOM"},"(0054,0050)":{tag:"(0054,0050)",vr:"US",name:"RotationVector",vm:"1-n",version:"DICOM"},"(0054,0051)":{tag:"(0054,0051)",vr:"US",name:"NumberOfRotations",vm:"1",version:"DICOM"},"(0054,0052)":{tag:"(0054,0052)",vr:"SQ",name:"RotationInformationSequence",vm:"1",version:"DICOM"},"(0054,0053)":{tag:"(0054,0053)",vr:"US",name:"NumberOfFramesInRotation",vm:"1",version:"DICOM"},"(0054,0060)":{tag:"(0054,0060)",vr:"US",name:"RRIntervalVector",vm:"1-n",version:"DICOM"},"(0054,0061)":{tag:"(0054,0061)",vr:"US",name:"NumberOfRRIntervals",vm:"1",version:"DICOM"},"(0054,0062)":{tag:"(0054,0062)",vr:"SQ",name:"GatedInformationSequence",vm:"1",version:"DICOM"},"(0054,0063)":{tag:"(0054,0063)",vr:"SQ",name:"DataInformationSequence",vm:"1",version:"DICOM"},"(0054,0070)":{tag:"(0054,0070)",vr:"US",name:"TimeSlotVector",vm:"1-n",version:"DICOM"},"(0054,0071)":{tag:"(0054,0071)",vr:"US",name:"NumberOfTimeSlots",vm:"1",version:"DICOM"},"(0054,0072)":{tag:"(0054,0072)",vr:"SQ",name:"TimeSlotInformationSequence",vm:"1",version:"DICOM"},"(0054,0073)":{tag:"(0054,0073)",vr:"DS",name:"TimeSlotTime",vm:"1",version:"DICOM"},"(0054,0080)":{tag:"(0054,0080)",vr:"US",name:"SliceVector",vm:"1-n",version:"DICOM"},"(0054,0081)":{tag:"(0054,0081)",vr:"US",name:"NumberOfSlices",vm:"1",version:"DICOM"},"(0054,0090)":{tag:"(0054,0090)",vr:"US",name:"AngularViewVector",vm:"1-n",version:"DICOM"},"(0054,0100)":{tag:"(0054,0100)",vr:"US",name:"TimeSliceVector",vm:"1-n",version:"DICOM"},"(0054,0101)":{tag:"(0054,0101)",vr:"US",name:"NumberOfTimeSlices",vm:"1",version:"DICOM"},"(0054,0200)":{tag:"(0054,0200)",vr:"DS",name:"StartAngle",vm:"1",version:"DICOM"},"(0054,0202)":{tag:"(0054,0202)",vr:"CS",name:"TypeOfDetectorMotion",vm:"1",version:"DICOM"},"(0054,0210)":{tag:"(0054,0210)",vr:"IS",name:"TriggerVector",vm:"1-n",version:"DICOM"},"(0054,0211)":{tag:"(0054,0211)",vr:"US",name:"NumberOfTriggersInPhase",vm:"1",version:"DICOM"},"(0054,0220)":{tag:"(0054,0220)",vr:"SQ",name:"ViewCodeSequence",vm:"1",version:"DICOM"},"(0054,0222)":{tag:"(0054,0222)",vr:"SQ",name:"ViewModifierCodeSequence",vm:"1",version:"DICOM"},"(0054,0300)":{tag:"(0054,0300)",vr:"SQ",name:"RadionuclideCodeSequence",vm:"1",version:"DICOM"},"(0054,0302)":{tag:"(0054,0302)",vr:"SQ",name:"AdministrationRouteCodeSequence",vm:"1",version:"DICOM"},"(0054,0304)":{tag:"(0054,0304)",vr:"SQ",name:"RadiopharmaceuticalCodeSequence",vm:"1",version:"DICOM"},"(0054,0306)":{tag:"(0054,0306)",vr:"SQ",name:"CalibrationDataSequence",vm:"1",version:"DICOM"},"(0054,0308)":{tag:"(0054,0308)",vr:"US",name:"EnergyWindowNumber",vm:"1",version:"DICOM"},"(0054,0400)":{tag:"(0054,0400)",vr:"SH",name:"ImageID",vm:"1",version:"DICOM"},"(0054,0410)":{tag:"(0054,0410)",vr:"SQ",name:"PatientOrientationCodeSequence",vm:"1",version:"DICOM"},"(0054,0412)":{tag:"(0054,0412)",vr:"SQ",name:"PatientOrientationModifierCodeSequence",vm:"1",version:"DICOM"},"(0054,0414)":{tag:"(0054,0414)",vr:"SQ",name:"PatientGantryRelationshipCodeSequence",vm:"1",version:"DICOM"},"(0054,0500)":{tag:"(0054,0500)",vr:"CS",name:"SliceProgressionDirection",vm:"1",version:"DICOM"},"(0054,0501)":{tag:"(0054,0501)",vr:"CS",name:"ScanProgressionDirection",vm:"1",version:"DICOM"},"(0054,1000)":{tag:"(0054,1000)",vr:"CS",name:"SeriesType",vm:"2",version:"DICOM"},"(0054,1001)":{tag:"(0054,1001)",vr:"CS",name:"Units",vm:"1",version:"DICOM"},"(0054,1002)":{tag:"(0054,1002)",vr:"CS",name:"CountsSource",vm:"1",version:"DICOM"},"(0054,1004)":{tag:"(0054,1004)",vr:"CS",name:"ReprojectionMethod",vm:"1",version:"DICOM"},"(0054,1006)":{tag:"(0054,1006)",vr:"CS",name:"SUVType",vm:"1",version:"DICOM"},"(0054,1100)":{tag:"(0054,1100)",vr:"CS",name:"RandomsCorrectionMethod",vm:"1",version:"DICOM"},"(0054,1101)":{tag:"(0054,1101)",vr:"LO",name:"AttenuationCorrectionMethod",vm:"1",version:"DICOM"},"(0054,1102)":{tag:"(0054,1102)",vr:"CS",name:"DecayCorrection",vm:"1",version:"DICOM"},"(0054,1103)":{tag:"(0054,1103)",vr:"LO",name:"ReconstructionMethod",vm:"1",version:"DICOM"},"(0054,1104)":{tag:"(0054,1104)",vr:"LO",name:"DetectorLinesOfResponseUsed",vm:"1",version:"DICOM"},"(0054,1105)":{tag:"(0054,1105)",vr:"LO",name:"ScatterCorrectionMethod",vm:"1",version:"DICOM"},"(0054,1200)":{tag:"(0054,1200)",vr:"DS",name:"AxialAcceptance",vm:"1",version:"DICOM"},"(0054,1201)":{tag:"(0054,1201)",vr:"IS",name:"AxialMash",vm:"2",version:"DICOM"},"(0054,1202)":{tag:"(0054,1202)",vr:"IS",name:"TransverseMash",vm:"1",version:"DICOM"},"(0054,1203)":{tag:"(0054,1203)",vr:"DS",name:"DetectorElementSize",vm:"2",version:"DICOM"},"(0054,1210)":{tag:"(0054,1210)",vr:"DS",name:"CoincidenceWindowWidth",vm:"1",version:"DICOM"},"(0054,1220)":{tag:"(0054,1220)",vr:"CS",name:"SecondaryCountsType",vm:"1-n",version:"DICOM"},"(0054,1300)":{tag:"(0054,1300)",vr:"DS",name:"FrameReferenceTime",vm:"1",version:"DICOM"},"(0054,1310)":{tag:"(0054,1310)",vr:"IS",name:"PrimaryPromptsCountsAccumulated",vm:"1",version:"DICOM"},"(0054,1311)":{tag:"(0054,1311)",vr:"IS",name:"SecondaryCountsAccumulated",vm:"1-n",version:"DICOM"},"(0054,1320)":{tag:"(0054,1320)",vr:"DS",name:"SliceSensitivityFactor",vm:"1",version:"DICOM"},"(0054,1321)":{tag:"(0054,1321)",vr:"DS",name:"DecayFactor",vm:"1",version:"DICOM"},"(0054,1322)":{tag:"(0054,1322)",vr:"DS",name:"DoseCalibrationFactor",vm:"1",version:"DICOM"},"(0054,1323)":{tag:"(0054,1323)",vr:"DS",name:"ScatterFractionFactor",vm:"1",version:"DICOM"},"(0054,1324)":{tag:"(0054,1324)",vr:"DS",name:"DeadTimeFactor",vm:"1",version:"DICOM"},"(0054,1330)":{tag:"(0054,1330)",vr:"US",name:"ImageIndex",vm:"1",version:"DICOM"},"(0060,3000)":{tag:"(0060,3000)",vr:"SQ",name:"HistogramSequence",vm:"1",version:"DICOM"},"(0060,3002)":{tag:"(0060,3002)",vr:"US",name:"HistogramNumberOfBins",vm:"1",version:"DICOM"},"(0060,3004)":{tag:"(0060,3004)",vr:"xs",name:"HistogramFirstBinValue",vm:"1",version:"DICOM"},"(0060,3006)":{tag:"(0060,3006)",vr:"xs",name:"HistogramLastBinValue",vm:"1",version:"DICOM"},"(0060,3008)":{tag:"(0060,3008)",vr:"US",name:"HistogramBinWidth",vm:"1",version:"DICOM"},"(0060,3010)":{tag:"(0060,3010)",vr:"LO",name:"HistogramExplanation",vm:"1",version:"DICOM"},"(0060,3020)":{tag:"(0060,3020)",vr:"UL",name:"HistogramData",vm:"1-n",version:"DICOM"},"(0062,0001)":{tag:"(0062,0001)",vr:"CS",name:"SegmentationType",vm:"1",version:"DICOM"},"(0062,0002)":{tag:"(0062,0002)",vr:"SQ",name:"SegmentSequence",vm:"1",version:"DICOM"},"(0062,0003)":{tag:"(0062,0003)",vr:"SQ",name:"SegmentedPropertyCategoryCodeSequence",vm:"1",version:"DICOM"},"(0062,0004)":{tag:"(0062,0004)",vr:"US",name:"SegmentNumber",vm:"1",version:"DICOM"},"(0062,0005)":{tag:"(0062,0005)",vr:"LO",name:"SegmentLabel",vm:"1",version:"DICOM"},"(0062,0006)":{tag:"(0062,0006)",vr:"ST",name:"SegmentDescription",vm:"1",version:"DICOM"},"(0062,0007)":{tag:"(0062,0007)",vr:"SQ",name:"SegmentationAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(0062,0008)":{tag:"(0062,0008)",vr:"CS",name:"SegmentAlgorithmType",vm:"1",version:"DICOM"},"(0062,0009)":{tag:"(0062,0009)",vr:"LO",name:"SegmentAlgorithmName",vm:"1",version:"DICOM"},"(0062,000A)":{tag:"(0062,000A)",vr:"SQ",name:"SegmentIdentificationSequence",vm:"1",version:"DICOM"},"(0062,000B)":{tag:"(0062,000B)",vr:"US",name:"ReferencedSegmentNumber",vm:"1-n",version:"DICOM"},"(0062,000C)":{tag:"(0062,000C)",vr:"US",name:"RecommendedDisplayGrayscaleValue",vm:"1",version:"DICOM"},"(0062,000D)":{tag:"(0062,000D)",vr:"US",name:"RecommendedDisplayCIELabValue",vm:"3",version:"DICOM"},"(0062,000E)":{tag:"(0062,000E)",vr:"US",name:"MaximumFractionalValue",vm:"1",version:"DICOM"},"(0062,000F)":{tag:"(0062,000F)",vr:"SQ",name:"SegmentedPropertyTypeCodeSequence",vm:"1",version:"DICOM"},"(0062,0010)":{tag:"(0062,0010)",vr:"CS",name:"SegmentationFractionalType",vm:"1",version:"DICOM"},"(0062,0011)":{tag:"(0062,0011)",vr:"SQ",name:"SegmentedPropertyTypeModifierCodeSequence",vm:"1",version:"DICOM"},"(0062,0012)":{tag:"(0062,0012)",vr:"SQ",name:"UsedSegmentsSequence",vm:"1",version:"DICOM"},"(0062,0013)":{tag:"(0062,0013)",vr:"CS",name:"SegmentsOverlap",vm:"1",version:"DICOM"},"(0062,0020)":{tag:"(0062,0020)",vr:"UT",name:"TrackingID",vm:"1",version:"DICOM"},"(0062,0021)":{tag:"(0062,0021)",vr:"UI",name:"TrackingUID",vm:"1",version:"DICOM"},"(0064,0002)":{tag:"(0064,0002)",vr:"SQ",name:"DeformableRegistrationSequence",vm:"1",version:"DICOM"},"(0064,0003)":{tag:"(0064,0003)",vr:"UI",name:"SourceFrameOfReferenceUID",vm:"1",version:"DICOM"},"(0064,0005)":{tag:"(0064,0005)",vr:"SQ",name:"DeformableRegistrationGridSequence",vm:"1",version:"DICOM"},"(0064,0007)":{tag:"(0064,0007)",vr:"UL",name:"GridDimensions",vm:"3",version:"DICOM"},"(0064,0008)":{tag:"(0064,0008)",vr:"FD",name:"GridResolution",vm:"3",version:"DICOM"},"(0064,0009)":{tag:"(0064,0009)",vr:"OF",name:"VectorGridData",vm:"1",version:"DICOM"},"(0064,000F)":{tag:"(0064,000F)",vr:"SQ",name:"PreDeformationMatrixRegistrationSequence",vm:"1",version:"DICOM"},"(0064,0010)":{tag:"(0064,0010)",vr:"SQ",name:"PostDeformationMatrixRegistrationSequence",vm:"1",version:"DICOM"},"(0066,0001)":{tag:"(0066,0001)",vr:"UL",name:"NumberOfSurfaces",vm:"1",version:"DICOM"},"(0066,0002)":{tag:"(0066,0002)",vr:"SQ",name:"SurfaceSequence",vm:"1",version:"DICOM"},"(0066,0003)":{tag:"(0066,0003)",vr:"UL",name:"SurfaceNumber",vm:"1",version:"DICOM"},"(0066,0004)":{tag:"(0066,0004)",vr:"LT",name:"SurfaceComments",vm:"1",version:"DICOM"},"(0066,0009)":{tag:"(0066,0009)",vr:"CS",name:"SurfaceProcessing",vm:"1",version:"DICOM"},"(0066,000A)":{tag:"(0066,000A)",vr:"FL",name:"SurfaceProcessingRatio",vm:"1",version:"DICOM"},"(0066,000B)":{tag:"(0066,000B)",vr:"LO",name:"SurfaceProcessingDescription",vm:"1",version:"DICOM"},"(0066,000C)":{tag:"(0066,000C)",vr:"FL",name:"RecommendedPresentationOpacity",vm:"1",version:"DICOM"},"(0066,000D)":{tag:"(0066,000D)",vr:"CS",name:"RecommendedPresentationType",vm:"1",version:"DICOM"},"(0066,000E)":{tag:"(0066,000E)",vr:"CS",name:"FiniteVolume",vm:"1",version:"DICOM"},"(0066,0010)":{tag:"(0066,0010)",vr:"CS",name:"Manifold",vm:"1",version:"DICOM"},"(0066,0011)":{tag:"(0066,0011)",vr:"SQ",name:"SurfacePointsSequence",vm:"1",version:"DICOM"},"(0066,0012)":{tag:"(0066,0012)",vr:"SQ",name:"SurfacePointsNormalsSequence",vm:"1",version:"DICOM"},"(0066,0013)":{tag:"(0066,0013)",vr:"SQ",name:"SurfaceMeshPrimitivesSequence",vm:"1",version:"DICOM"},"(0066,0015)":{tag:"(0066,0015)",vr:"UL",name:"NumberOfSurfacePoints",vm:"1",version:"DICOM"},"(0066,0016)":{tag:"(0066,0016)",vr:"OF",name:"PointCoordinatesData",vm:"1",version:"DICOM"},"(0066,0017)":{tag:"(0066,0017)",vr:"FL",name:"PointPositionAccuracy",vm:"3",version:"DICOM"},"(0066,0018)":{tag:"(0066,0018)",vr:"FL",name:"MeanPointDistance",vm:"1",version:"DICOM"},"(0066,0019)":{tag:"(0066,0019)",vr:"FL",name:"MaximumPointDistance",vm:"1",version:"DICOM"},"(0066,001A)":{tag:"(0066,001A)",vr:"FL",name:"PointsBoundingBoxCoordinates",vm:"6",version:"DICOM"},"(0066,001B)":{tag:"(0066,001B)",vr:"FL",name:"AxisOfRotation",vm:"3",version:"DICOM"},"(0066,001C)":{tag:"(0066,001C)",vr:"FL",name:"CenterOfRotation",vm:"3",version:"DICOM"},"(0066,001E)":{tag:"(0066,001E)",vr:"UL",name:"NumberOfVectors",vm:"1",version:"DICOM"},"(0066,001F)":{tag:"(0066,001F)",vr:"US",name:"VectorDimensionality",vm:"1",version:"DICOM"},"(0066,0020)":{tag:"(0066,0020)",vr:"FL",name:"VectorAccuracy",vm:"1-n",version:"DICOM"},"(0066,0021)":{tag:"(0066,0021)",vr:"OF",name:"VectorCoordinateData",vm:"1",version:"DICOM"},"(0066,0023)":{tag:"(0066,0023)",vr:"OW",name:"TrianglePointIndexList",vm:"1",version:"DICOM"},"(0066,0024)":{tag:"(0066,0024)",vr:"OW",name:"EdgePointIndexList",vm:"1",version:"DICOM"},"(0066,0025)":{tag:"(0066,0025)",vr:"OW",name:"VertexPointIndexList",vm:"1",version:"DICOM"},"(0066,0026)":{tag:"(0066,0026)",vr:"SQ",name:"TriangleStripSequence",vm:"1",version:"DICOM"},"(0066,0027)":{tag:"(0066,0027)",vr:"SQ",name:"TriangleFanSequence",vm:"1",version:"DICOM"},"(0066,0028)":{tag:"(0066,0028)",vr:"SQ",name:"LineSequence",vm:"1",version:"DICOM"},"(0066,0029)":{tag:"(0066,0029)",vr:"OW",name:"PrimitivePointIndexList",vm:"1",version:"DICOM"},"(0066,002A)":{tag:"(0066,002A)",vr:"UL",name:"SurfaceCount",vm:"1",version:"DICOM"},"(0066,002B)":{tag:"(0066,002B)",vr:"SQ",name:"ReferencedSurfaceSequence",vm:"1",version:"DICOM"},"(0066,002C)":{tag:"(0066,002C)",vr:"UL",name:"ReferencedSurfaceNumber",vm:"1",version:"DICOM"},"(0066,002D)":{tag:"(0066,002D)",vr:"SQ",name:"SegmentSurfaceGenerationAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(0066,002E)":{tag:"(0066,002E)",vr:"SQ",name:"SegmentSurfaceSourceInstanceSequence",vm:"1",version:"DICOM"},"(0066,002F)":{tag:"(0066,002F)",vr:"SQ",name:"AlgorithmFamilyCodeSequence",vm:"1",version:"DICOM"},"(0066,0030)":{tag:"(0066,0030)",vr:"SQ",name:"AlgorithmNameCodeSequence",vm:"1",version:"DICOM"},"(0066,0031)":{tag:"(0066,0031)",vr:"LO",name:"AlgorithmVersion",vm:"1",version:"DICOM"},"(0066,0032)":{tag:"(0066,0032)",vr:"LT",name:"AlgorithmParameters",vm:"1",version:"DICOM"},"(0066,0034)":{tag:"(0066,0034)",vr:"SQ",name:"FacetSequence",vm:"1",version:"DICOM"},"(0066,0035)":{tag:"(0066,0035)",vr:"SQ",name:"SurfaceProcessingAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(0066,0036)":{tag:"(0066,0036)",vr:"LO",name:"AlgorithmName",vm:"1",version:"DICOM"},"(0066,0037)":{tag:"(0066,0037)",vr:"FL",name:"RecommendedPointRadius",vm:"1",version:"DICOM"},"(0066,0038)":{tag:"(0066,0038)",vr:"FL",name:"RecommendedLineThickness",vm:"1",version:"DICOM"},"(0066,0040)":{tag:"(0066,0040)",vr:"UL",name:"LongPrimitivePointIndexList",vm:"1-n",version:"DICOM"},"(0066,0041)":{tag:"(0066,0041)",vr:"UL",name:"LongTrianglePointIndexList",vm:"3-3n",version:"DICOM"},"(0066,0042)":{tag:"(0066,0042)",vr:"UL",name:"LongEdgePointIndexList",vm:"2-2n",version:"DICOM"},"(0066,0043)":{tag:"(0066,0043)",vr:"UL",name:"LongVertexPointIndexList",vm:"1-n",version:"DICOM"},"(0066,0101)":{tag:"(0066,0101)",vr:"SQ",name:"TrackSetSequence",vm:"1",version:"DICOM"},"(0066,0102)":{tag:"(0066,0102)",vr:"SQ",name:"TrackSequence",vm:"1",version:"DICOM"},"(0066,0103)":{tag:"(0066,0103)",vr:"OW",name:"RecommendedDisplayCIELabValueList",vm:"1",version:"DICOM"},"(0066,0104)":{tag:"(0066,0104)",vr:"SQ",name:"TrackingAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(0066,0105)":{tag:"(0066,0105)",vr:"UL",name:"TrackSetNumber",vm:"1",version:"DICOM"},"(0066,0106)":{tag:"(0066,0106)",vr:"LO",name:"TrackSetLabel",vm:"1",version:"DICOM"},"(0066,0107)":{tag:"(0066,0107)",vr:"UT",name:"TrackSetDescription",vm:"1",version:"DICOM"},"(0066,0108)":{tag:"(0066,0108)",vr:"SQ",name:"TrackSetAnatomicalTypeCodeSequence",vm:"1",version:"DICOM"},"(0066,0121)":{tag:"(0066,0121)",vr:"SQ",name:"MeasurementsSequence",vm:"1",version:"DICOM"},"(0066,0124)":{tag:"(0066,0124)",vr:"SQ",name:"TrackSetStatisticsSequence",vm:"1",version:"DICOM"},"(0066,0125)":{tag:"(0066,0125)",vr:"OF",name:"FloatingPointValues",vm:"1",version:"DICOM"},"(0066,0129)":{tag:"(0066,0129)",vr:"OL",name:"TrackPointIndexList",vm:"1",version:"DICOM"},"(0066,0130)":{tag:"(0066,0130)",vr:"SQ",name:"TrackStatisticsSequence",vm:"1",version:"DICOM"},"(0066,0132)":{tag:"(0066,0132)",vr:"SQ",name:"MeasurementValuesSequence",vm:"1",version:"DICOM"},"(0066,0133)":{tag:"(0066,0133)",vr:"SQ",name:"DiffusionAcquisitionCodeSequence",vm:"1",version:"DICOM"},"(0066,0134)":{tag:"(0066,0134)",vr:"SQ",name:"DiffusionModelCodeSequence",vm:"1",version:"DICOM"},"(0068,6210)":{tag:"(0068,6210)",vr:"LO",name:"ImplantSize",vm:"1",version:"DICOM"},"(0068,6221)":{tag:"(0068,6221)",vr:"LO",name:"ImplantTemplateVersion",vm:"1",version:"DICOM"},"(0068,6222)":{tag:"(0068,6222)",vr:"SQ",name:"ReplacedImplantTemplateSequence",vm:"1",version:"DICOM"},"(0068,6223)":{tag:"(0068,6223)",vr:"CS",name:"ImplantType",vm:"1",version:"DICOM"},"(0068,6224)":{tag:"(0068,6224)",vr:"SQ",name:"DerivationImplantTemplateSequence",vm:"1",version:"DICOM"},"(0068,6225)":{tag:"(0068,6225)",vr:"SQ",name:"OriginalImplantTemplateSequence",vm:"1",version:"DICOM"},"(0068,6226)":{tag:"(0068,6226)",vr:"DT",name:"EffectiveDateTime",vm:"1",version:"DICOM"},"(0068,6230)":{tag:"(0068,6230)",vr:"SQ",name:"ImplantTargetAnatomySequence",vm:"1",version:"DICOM"},"(0068,6260)":{tag:"(0068,6260)",vr:"SQ",name:"InformationFromManufacturerSequence",vm:"1",version:"DICOM"},"(0068,6265)":{tag:"(0068,6265)",vr:"SQ",name:"NotificationFromManufacturerSequence",vm:"1",version:"DICOM"},"(0068,6270)":{tag:"(0068,6270)",vr:"DT",name:"InformationIssueDateTime",vm:"1",version:"DICOM"},"(0068,6280)":{tag:"(0068,6280)",vr:"ST",name:"InformationSummary",vm:"1",version:"DICOM"},"(0068,62A0)":{tag:"(0068,62A0)",vr:"SQ",name:"ImplantRegulatoryDisapprovalCodeSequence",vm:"1",version:"DICOM"},"(0068,62A5)":{tag:"(0068,62A5)",vr:"FD",name:"OverallTemplateSpatialTolerance",vm:"1",version:"DICOM"},"(0068,62C0)":{tag:"(0068,62C0)",vr:"SQ",name:"HPGLDocumentSequence",vm:"1",version:"DICOM"},"(0068,62D0)":{tag:"(0068,62D0)",vr:"US",name:"HPGLDocumentID",vm:"1",version:"DICOM"},"(0068,62D5)":{tag:"(0068,62D5)",vr:"LO",name:"HPGLDocumentLabel",vm:"1",version:"DICOM"},"(0068,62E0)":{tag:"(0068,62E0)",vr:"SQ",name:"ViewOrientationCodeSequence",vm:"1",version:"DICOM"},"(0068,62F0)":{tag:"(0068,62F0)",vr:"FD",name:"ViewOrientationModifier",vm:"9",version:"DICOM"},"(0068,62F2)":{tag:"(0068,62F2)",vr:"FD",name:"HPGLDocumentScaling",vm:"1",version:"DICOM"},"(0068,6300)":{tag:"(0068,6300)",vr:"OB",name:"HPGLDocument",vm:"1",version:"DICOM"},"(0068,6310)":{tag:"(0068,6310)",vr:"US",name:"HPGLContourPenNumber",vm:"1",version:"DICOM"},"(0068,6320)":{tag:"(0068,6320)",vr:"SQ",name:"HPGLPenSequence",vm:"1",version:"DICOM"},"(0068,6330)":{tag:"(0068,6330)",vr:"US",name:"HPGLPenNumber",vm:"1",version:"DICOM"},"(0068,6340)":{tag:"(0068,6340)",vr:"LO",name:"HPGLPenLabel",vm:"1",version:"DICOM"},"(0068,6345)":{tag:"(0068,6345)",vr:"ST",name:"HPGLPenDescription",vm:"1",version:"DICOM"},"(0068,6346)":{tag:"(0068,6346)",vr:"FD",name:"RecommendedRotationPoint",vm:"2",version:"DICOM"},"(0068,6347)":{tag:"(0068,6347)",vr:"FD",name:"BoundingRectangle",vm:"4",version:"DICOM"},"(0068,6350)":{tag:"(0068,6350)",vr:"US",name:"ImplantTemplate3DModelSurfaceNumber",vm:"1-n",version:"DICOM"},"(0068,6360)":{tag:"(0068,6360)",vr:"SQ",name:"SurfaceModelDescriptionSequence",vm:"1",version:"DICOM"},"(0068,6380)":{tag:"(0068,6380)",vr:"LO",name:"SurfaceModelLabel",vm:"1",version:"DICOM"},"(0068,6390)":{tag:"(0068,6390)",vr:"FD",name:"SurfaceModelScalingFactor",vm:"1",version:"DICOM"},"(0068,63A0)":{tag:"(0068,63A0)",vr:"SQ",name:"MaterialsCodeSequence",vm:"1",version:"DICOM"},"(0068,63A4)":{tag:"(0068,63A4)",vr:"SQ",name:"CoatingMaterialsCodeSequence",vm:"1",version:"DICOM"},"(0068,63A8)":{tag:"(0068,63A8)",vr:"SQ",name:"ImplantTypeCodeSequence",vm:"1",version:"DICOM"},"(0068,63AC)":{tag:"(0068,63AC)",vr:"SQ",name:"FixationMethodCodeSequence",vm:"1",version:"DICOM"},"(0068,63B0)":{tag:"(0068,63B0)",vr:"SQ",name:"MatingFeatureSetsSequence",vm:"1",version:"DICOM"},"(0068,63C0)":{tag:"(0068,63C0)",vr:"US",name:"MatingFeatureSetID",vm:"1",version:"DICOM"},"(0068,63D0)":{tag:"(0068,63D0)",vr:"LO",name:"MatingFeatureSetLabel",vm:"1",version:"DICOM"},"(0068,63E0)":{tag:"(0068,63E0)",vr:"SQ",name:"MatingFeatureSequence",vm:"1",version:"DICOM"},"(0068,63F0)":{tag:"(0068,63F0)",vr:"US",name:"MatingFeatureID",vm:"1",version:"DICOM"},"(0068,6400)":{tag:"(0068,6400)",vr:"SQ",name:"MatingFeatureDegreeOfFreedomSequence",vm:"1",version:"DICOM"},"(0068,6410)":{tag:"(0068,6410)",vr:"US",name:"DegreeOfFreedomID",vm:"1",version:"DICOM"},"(0068,6420)":{tag:"(0068,6420)",vr:"CS",name:"DegreeOfFreedomType",vm:"1",version:"DICOM"},"(0068,6430)":{tag:"(0068,6430)",vr:"SQ",name:"TwoDMatingFeatureCoordinatesSequence",vm:"1",version:"DICOM"},"(0068,6440)":{tag:"(0068,6440)",vr:"US",name:"ReferencedHPGLDocumentID",vm:"1",version:"DICOM"},"(0068,6450)":{tag:"(0068,6450)",vr:"FD",name:"TwoDMatingPoint",vm:"2",version:"DICOM"},"(0068,6460)":{tag:"(0068,6460)",vr:"FD",name:"TwoDMatingAxes",vm:"4",version:"DICOM"},"(0068,6470)":{tag:"(0068,6470)",vr:"SQ",name:"TwoDDegreeOfFreedomSequence",vm:"1",version:"DICOM"},"(0068,6490)":{tag:"(0068,6490)",vr:"FD",name:"ThreeDDegreeOfFreedomAxis",vm:"3",version:"DICOM"},"(0068,64A0)":{tag:"(0068,64A0)",vr:"FD",name:"RangeOfFreedom",vm:"2",version:"DICOM"},"(0068,64C0)":{tag:"(0068,64C0)",vr:"FD",name:"ThreeDMatingPoint",vm:"3",version:"DICOM"},"(0068,64D0)":{tag:"(0068,64D0)",vr:"FD",name:"ThreeDMatingAxes",vm:"9",version:"DICOM"},"(0068,64F0)":{tag:"(0068,64F0)",vr:"FD",name:"TwoDDegreeOfFreedomAxis",vm:"3",version:"DICOM"},"(0068,6500)":{tag:"(0068,6500)",vr:"SQ",name:"PlanningLandmarkPointSequence",vm:"1",version:"DICOM"},"(0068,6510)":{tag:"(0068,6510)",vr:"SQ",name:"PlanningLandmarkLineSequence",vm:"1",version:"DICOM"},"(0068,6520)":{tag:"(0068,6520)",vr:"SQ",name:"PlanningLandmarkPlaneSequence",vm:"1",version:"DICOM"},"(0068,6530)":{tag:"(0068,6530)",vr:"US",name:"PlanningLandmarkID",vm:"1",version:"DICOM"},"(0068,6540)":{tag:"(0068,6540)",vr:"LO",name:"PlanningLandmarkDescription",vm:"1",version:"DICOM"},"(0068,6545)":{tag:"(0068,6545)",vr:"SQ",name:"PlanningLandmarkIdentificationCodeSequence",vm:"1",version:"DICOM"},"(0068,6550)":{tag:"(0068,6550)",vr:"SQ",name:"TwoDPointCoordinatesSequence",vm:"1",version:"DICOM"},"(0068,6560)":{tag:"(0068,6560)",vr:"FD",name:"TwoDPointCoordinates",vm:"2",version:"DICOM"},"(0068,6590)":{tag:"(0068,6590)",vr:"FD",name:"ThreeDPointCoordinates",vm:"3",version:"DICOM"},"(0068,65A0)":{tag:"(0068,65A0)",vr:"SQ",name:"TwoDLineCoordinatesSequence",vm:"1",version:"DICOM"},"(0068,65B0)":{tag:"(0068,65B0)",vr:"FD",name:"TwoDLineCoordinates",vm:"4",version:"DICOM"},"(0068,65D0)":{tag:"(0068,65D0)",vr:"FD",name:"ThreeDLineCoordinates",vm:"6",version:"DICOM"},"(0068,65E0)":{tag:"(0068,65E0)",vr:"SQ",name:"TwoDPlaneCoordinatesSequence",vm:"1",version:"DICOM"},"(0068,65F0)":{tag:"(0068,65F0)",vr:"FD",name:"TwoDPlaneIntersection",vm:"4",version:"DICOM"},"(0068,6610)":{tag:"(0068,6610)",vr:"FD",name:"ThreeDPlaneOrigin",vm:"3",version:"DICOM"},"(0068,6620)":{tag:"(0068,6620)",vr:"FD",name:"ThreeDPlaneNormal",vm:"3",version:"DICOM"},"(0068,7001)":{tag:"(0068,7001)",vr:"CS",name:"ModelModification",vm:"1",version:"DICOM"},"(0068,7002)":{tag:"(0068,7002)",vr:"CS",name:"ModelMirroring",vm:"1",version:"DICOM"},"(0068,7003)":{tag:"(0068,7003)",vr:"SQ",name:"ModelUsageCodeSequence",vm:"1",version:"DICOM"},"(0068,7004)":{tag:"(0068,7004)",vr:"UI",name:"ModelGroupUID",vm:"1",version:"DICOM"},"(0068,7005)":{tag:"(0068,7005)",vr:"UR",name:"RelativeURIReferenceWithinEncapsulatedDocument",vm:"1",version:"DICOM"},"(0070,0001)":{tag:"(0070,0001)",vr:"SQ",name:"GraphicAnnotationSequence",vm:"1",version:"DICOM"},"(0070,0002)":{tag:"(0070,0002)",vr:"CS",name:"GraphicLayer",vm:"1",version:"DICOM"},"(0070,0003)":{tag:"(0070,0003)",vr:"CS",name:"BoundingBoxAnnotationUnits",vm:"1",version:"DICOM"},"(0070,0004)":{tag:"(0070,0004)",vr:"CS",name:"AnchorPointAnnotationUnits",vm:"1",version:"DICOM"},"(0070,0005)":{tag:"(0070,0005)",vr:"CS",name:"GraphicAnnotationUnits",vm:"1",version:"DICOM"},"(0070,0006)":{tag:"(0070,0006)",vr:"ST",name:"UnformattedTextValue",vm:"1",version:"DICOM"},"(0070,0008)":{tag:"(0070,0008)",vr:"SQ",name:"TextObjectSequence",vm:"1",version:"DICOM"},"(0070,0009)":{tag:"(0070,0009)",vr:"SQ",name:"GraphicObjectSequence",vm:"1",version:"DICOM"},"(0070,0010)":{tag:"(0070,0010)",vr:"FL",name:"BoundingBoxTopLeftHandCorner",vm:"2",version:"DICOM"},"(0070,0011)":{tag:"(0070,0011)",vr:"FL",name:"BoundingBoxBottomRightHandCorner",vm:"2",version:"DICOM"},"(0070,0012)":{tag:"(0070,0012)",vr:"CS",name:"BoundingBoxTextHorizontalJustification",vm:"1",version:"DICOM"},"(0070,0014)":{tag:"(0070,0014)",vr:"FL",name:"AnchorPoint",vm:"2",version:"DICOM"},"(0070,0015)":{tag:"(0070,0015)",vr:"CS",name:"AnchorPointVisibility",vm:"1",version:"DICOM"},"(0070,0020)":{tag:"(0070,0020)",vr:"US",name:"GraphicDimensions",vm:"1",version:"DICOM"},"(0070,0021)":{tag:"(0070,0021)",vr:"US",name:"NumberOfGraphicPoints",vm:"1",version:"DICOM"},"(0070,0022)":{tag:"(0070,0022)",vr:"FL",name:"GraphicData",vm:"2-n",version:"DICOM"},"(0070,0023)":{tag:"(0070,0023)",vr:"CS",name:"GraphicType",vm:"1",version:"DICOM"},"(0070,0024)":{tag:"(0070,0024)",vr:"CS",name:"GraphicFilled",vm:"1",version:"DICOM"},"(0070,0041)":{tag:"(0070,0041)",vr:"CS",name:"ImageHorizontalFlip",vm:"1",version:"DICOM"},"(0070,0042)":{tag:"(0070,0042)",vr:"US",name:"ImageRotation",vm:"1",version:"DICOM"},"(0070,0052)":{tag:"(0070,0052)",vr:"SL",name:"DisplayedAreaTopLeftHandCorner",vm:"2",version:"DICOM"},"(0070,0053)":{tag:"(0070,0053)",vr:"SL",name:"DisplayedAreaBottomRightHandCorner",vm:"2",version:"DICOM"},"(0070,005A)":{tag:"(0070,005A)",vr:"SQ",name:"DisplayedAreaSelectionSequence",vm:"1",version:"DICOM"},"(0070,0060)":{tag:"(0070,0060)",vr:"SQ",name:"GraphicLayerSequence",vm:"1",version:"DICOM"},"(0070,0062)":{tag:"(0070,0062)",vr:"IS",name:"GraphicLayerOrder",vm:"1",version:"DICOM"},"(0070,0066)":{tag:"(0070,0066)",vr:"US",name:"GraphicLayerRecommendedDisplayGrayscaleValue",vm:"1",version:"DICOM"},"(0070,0068)":{tag:"(0070,0068)",vr:"LO",name:"GraphicLayerDescription",vm:"1",version:"DICOM"},"(0070,0080)":{tag:"(0070,0080)",vr:"CS",name:"ContentLabel",vm:"1",version:"DICOM"},"(0070,0081)":{tag:"(0070,0081)",vr:"LO",name:"ContentDescription",vm:"1",version:"DICOM"},"(0070,0082)":{tag:"(0070,0082)",vr:"DA",name:"PresentationCreationDate",vm:"1",version:"DICOM"},"(0070,0083)":{tag:"(0070,0083)",vr:"TM",name:"PresentationCreationTime",vm:"1",version:"DICOM"},"(0070,0084)":{tag:"(0070,0084)",vr:"PN",name:"ContentCreatorName",vm:"1",version:"DICOM"},"(0070,0086)":{tag:"(0070,0086)",vr:"SQ",name:"ContentCreatorIdentificationCodeSequence",vm:"1",version:"DICOM"},"(0070,0087)":{tag:"(0070,0087)",vr:"SQ",name:"AlternateContentDescriptionSequence",vm:"1",version:"DICOM"},"(0070,0100)":{tag:"(0070,0100)",vr:"CS",name:"PresentationSizeMode",vm:"1",version:"DICOM"},"(0070,0101)":{tag:"(0070,0101)",vr:"DS",name:"PresentationPixelSpacing",vm:"2",version:"DICOM"},"(0070,0102)":{tag:"(0070,0102)",vr:"IS",name:"PresentationPixelAspectRatio",vm:"2",version:"DICOM"},"(0070,0103)":{tag:"(0070,0103)",vr:"FL",name:"PresentationPixelMagnificationRatio",vm:"1",version:"DICOM"},"(0070,0207)":{tag:"(0070,0207)",vr:"LO",name:"GraphicGroupLabel",vm:"1",version:"DICOM"},"(0070,0208)":{tag:"(0070,0208)",vr:"ST",name:"GraphicGroupDescription",vm:"1",version:"DICOM"},"(0070,0209)":{tag:"(0070,0209)",vr:"SQ",name:"CompoundGraphicSequence",vm:"1",version:"DICOM"},"(0070,0226)":{tag:"(0070,0226)",vr:"UL",name:"CompoundGraphicInstanceID",vm:"1",version:"DICOM"},"(0070,0227)":{tag:"(0070,0227)",vr:"LO",name:"FontName",vm:"1",version:"DICOM"},"(0070,0228)":{tag:"(0070,0228)",vr:"CS",name:"FontNameType",vm:"1",version:"DICOM"},"(0070,0229)":{tag:"(0070,0229)",vr:"LO",name:"CSSFontName",vm:"1",version:"DICOM"},"(0070,0230)":{tag:"(0070,0230)",vr:"FD",name:"RotationAngle",vm:"1",version:"DICOM"},"(0070,0231)":{tag:"(0070,0231)",vr:"SQ",name:"TextStyleSequence",vm:"1",version:"DICOM"},"(0070,0232)":{tag:"(0070,0232)",vr:"SQ",name:"LineStyleSequence",vm:"1",version:"DICOM"},"(0070,0233)":{tag:"(0070,0233)",vr:"SQ",name:"FillStyleSequence",vm:"1",version:"DICOM"},"(0070,0234)":{tag:"(0070,0234)",vr:"SQ",name:"GraphicGroupSequence",vm:"1",version:"DICOM"},"(0070,0241)":{tag:"(0070,0241)",vr:"US",name:"TextColorCIELabValue",vm:"3",version:"DICOM"},"(0070,0242)":{tag:"(0070,0242)",vr:"CS",name:"HorizontalAlignment",vm:"1",version:"DICOM"},"(0070,0243)":{tag:"(0070,0243)",vr:"CS",name:"VerticalAlignment",vm:"1",version:"DICOM"},"(0070,0244)":{tag:"(0070,0244)",vr:"CS",name:"ShadowStyle",vm:"1",version:"DICOM"},"(0070,0245)":{tag:"(0070,0245)",vr:"FL",name:"ShadowOffsetX",vm:"1",version:"DICOM"},"(0070,0246)":{tag:"(0070,0246)",vr:"FL",name:"ShadowOffsetY",vm:"1",version:"DICOM"},"(0070,0247)":{tag:"(0070,0247)",vr:"US",name:"ShadowColorCIELabValue",vm:"3",version:"DICOM"},"(0070,0248)":{tag:"(0070,0248)",vr:"CS",name:"Underlined",vm:"1",version:"DICOM"},"(0070,0249)":{tag:"(0070,0249)",vr:"CS",name:"Bold",vm:"1",version:"DICOM"},"(0070,0250)":{tag:"(0070,0250)",vr:"CS",name:"Italic",vm:"1",version:"DICOM"},"(0070,0251)":{tag:"(0070,0251)",vr:"US",name:"PatternOnColorCIELabValue",vm:"3",version:"DICOM"},"(0070,0252)":{tag:"(0070,0252)",vr:"US",name:"PatternOffColorCIELabValue",vm:"3",version:"DICOM"},"(0070,0253)":{tag:"(0070,0253)",vr:"FL",name:"LineThickness",vm:"1",version:"DICOM"},"(0070,0254)":{tag:"(0070,0254)",vr:"CS",name:"LineDashingStyle",vm:"1",version:"DICOM"},"(0070,0255)":{tag:"(0070,0255)",vr:"UL",name:"LinePattern",vm:"1",version:"DICOM"},"(0070,0256)":{tag:"(0070,0256)",vr:"OB",name:"FillPattern",vm:"1",version:"DICOM"},"(0070,0257)":{tag:"(0070,0257)",vr:"CS",name:"FillMode",vm:"1",version:"DICOM"},"(0070,0258)":{tag:"(0070,0258)",vr:"FL",name:"ShadowOpacity",vm:"1",version:"DICOM"},"(0070,0261)":{tag:"(0070,0261)",vr:"FL",name:"GapLength",vm:"1",version:"DICOM"},"(0070,0262)":{tag:"(0070,0262)",vr:"FL",name:"DiameterOfVisibility",vm:"1",version:"DICOM"},"(0070,0273)":{tag:"(0070,0273)",vr:"FL",name:"RotationPoint",vm:"2",version:"DICOM"},"(0070,0274)":{tag:"(0070,0274)",vr:"CS",name:"TickAlignment",vm:"1",version:"DICOM"},"(0070,0278)":{tag:"(0070,0278)",vr:"CS",name:"ShowTickLabel",vm:"1",version:"DICOM"},"(0070,0279)":{tag:"(0070,0279)",vr:"CS",name:"TickLabelAlignment",vm:"1",version:"DICOM"},"(0070,0282)":{tag:"(0070,0282)",vr:"CS",name:"CompoundGraphicUnits",vm:"1",version:"DICOM"},"(0070,0284)":{tag:"(0070,0284)",vr:"FL",name:"PatternOnOpacity",vm:"1",version:"DICOM"},"(0070,0285)":{tag:"(0070,0285)",vr:"FL",name:"PatternOffOpacity",vm:"1",version:"DICOM"},"(0070,0287)":{tag:"(0070,0287)",vr:"SQ",name:"MajorTicksSequence",vm:"1",version:"DICOM"},"(0070,0288)":{tag:"(0070,0288)",vr:"FL",name:"TickPosition",vm:"1",version:"DICOM"},"(0070,0289)":{tag:"(0070,0289)",vr:"SH",name:"TickLabel",vm:"1",version:"DICOM"},"(0070,0294)":{tag:"(0070,0294)",vr:"CS",name:"CompoundGraphicType",vm:"1",version:"DICOM"},"(0070,0295)":{tag:"(0070,0295)",vr:"UL",name:"GraphicGroupID",vm:"1",version:"DICOM"},"(0070,0306)":{tag:"(0070,0306)",vr:"CS",name:"ShapeType",vm:"1",version:"DICOM"},"(0070,0308)":{tag:"(0070,0308)",vr:"SQ",name:"RegistrationSequence",vm:"1",version:"DICOM"},"(0070,0309)":{tag:"(0070,0309)",vr:"SQ",name:"MatrixRegistrationSequence",vm:"1",version:"DICOM"},"(0070,030A)":{tag:"(0070,030A)",vr:"SQ",name:"MatrixSequence",vm:"1",version:"DICOM"},"(0070,030B)":{tag:"(0070,030B)",vr:"FD",name:"FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix",vm:"16",version:"DICOM"},"(0070,030C)":{tag:"(0070,030C)",vr:"CS",name:"FrameOfReferenceTransformationMatrixType",vm:"1",version:"DICOM"},"(0070,030D)":{tag:"(0070,030D)",vr:"SQ",name:"RegistrationTypeCodeSequence",vm:"1",version:"DICOM"},"(0070,030F)":{tag:"(0070,030F)",vr:"ST",name:"FiducialDescription",vm:"1",version:"DICOM"},"(0070,0310)":{tag:"(0070,0310)",vr:"SH",name:"FiducialIdentifier",vm:"1",version:"DICOM"},"(0070,0311)":{tag:"(0070,0311)",vr:"SQ",name:"FiducialIdentifierCodeSequence",vm:"1",version:"DICOM"},"(0070,0312)":{tag:"(0070,0312)",vr:"FD",name:"ContourUncertaintyRadius",vm:"1",version:"DICOM"},"(0070,0314)":{tag:"(0070,0314)",vr:"SQ",name:"UsedFiducialsSequence",vm:"1",version:"DICOM"},"(0070,0318)":{tag:"(0070,0318)",vr:"SQ",name:"GraphicCoordinatesDataSequence",vm:"1",version:"DICOM"},"(0070,031A)":{tag:"(0070,031A)",vr:"UI",name:"FiducialUID",vm:"1",version:"DICOM"},"(0070,031B)":{tag:"(0070,031B)",vr:"UI",name:"ReferencedFiducialUID",vm:"1",version:"DICOM"},"(0070,031C)":{tag:"(0070,031C)",vr:"SQ",name:"FiducialSetSequence",vm:"1",version:"DICOM"},"(0070,031E)":{tag:"(0070,031E)",vr:"SQ",name:"FiducialSequence",vm:"1",version:"DICOM"},"(0070,031F)":{tag:"(0070,031F)",vr:"SQ",name:"FiducialsPropertyCategoryCodeSequence",vm:"1",version:"DICOM"},"(0070,0401)":{tag:"(0070,0401)",vr:"US",name:"GraphicLayerRecommendedDisplayCIELabValue",vm:"3",version:"DICOM"},"(0070,0402)":{tag:"(0070,0402)",vr:"SQ",name:"BlendingSequence",vm:"1",version:"DICOM"},"(0070,0403)":{tag:"(0070,0403)",vr:"FL",name:"RelativeOpacity",vm:"1",version:"DICOM"},"(0070,0404)":{tag:"(0070,0404)",vr:"SQ",name:"ReferencedSpatialRegistrationSequence",vm:"1",version:"DICOM"},"(0070,0405)":{tag:"(0070,0405)",vr:"CS",name:"BlendingPosition",vm:"1",version:"DICOM"},"(0070,1209)":{tag:"(0070,1209)",vr:"UI",name:"VolumetricPresentationInputSetUID",vm:"1",version:"DICOM"},"(0070,120A)":{tag:"(0070,120A)",vr:"SQ",name:"VolumetricPresentationInputSetSequence",vm:"1",version:"DICOM"},"(0070,120B)":{tag:"(0070,120B)",vr:"CS",name:"GlobalCrop",vm:"1",version:"DICOM"},"(0070,120C)":{tag:"(0070,120C)",vr:"US",name:"GlobalCroppingSpecificationIndex",vm:"1-n",version:"DICOM"},"(0070,120D)":{tag:"(0070,120D)",vr:"CS",name:"RenderingMethod",vm:"1",version:"DICOM"},"(0070,1602)":{tag:"(0070,1602)",vr:"CS",name:"RenderProjection",vm:"1",version:"DICOM"},"(0070,1603)":{tag:"(0070,1603)",vr:"FD",name:"ViewpointPosition",vm:"3",version:"DICOM"},"(0070,1604)":{tag:"(0070,1604)",vr:"FD",name:"ViewpointLookAtPoint",vm:"3",version:"DICOM"},"(0070,1605)":{tag:"(0070,1605)",vr:"FD",name:"ViewpointUpDirection",vm:"3",version:"DICOM"},"(0070,1606)":{tag:"(0070,1606)",vr:"FD",name:"RenderFieldOfView",vm:"6",version:"DICOM"},"(0070,1607)":{tag:"(0070,1607)",vr:"FD",name:"SamplingStepSize",vm:"1",version:"DICOM"},"(0070,1701)":{tag:"(0070,1701)",vr:"CS",name:"ShadingStyle",vm:"1",version:"DICOM"},"(0070,1702)":{tag:"(0070,1702)",vr:"FD",name:"AmbientReflectionIntensity",vm:"1",version:"DICOM"},"(0070,1703)":{tag:"(0070,1703)",vr:"FD",name:"LightDirection",vm:"3",version:"DICOM"},"(0070,1704)":{tag:"(0070,1704)",vr:"FD",name:"DiffuseReflectionIntensity",vm:"1",version:"DICOM"},"(0070,1705)":{tag:"(0070,1705)",vr:"FD",name:"SpecularReflectionIntensity",vm:"1",version:"DICOM"},"(0070,1706)":{tag:"(0070,1706)",vr:"FD",name:"Shininess",vm:"1",version:"DICOM"},"(0070,1A06)":{tag:"(0070,1A06)",vr:"FD",name:"SwivelRange",vm:"1",version:"DICOM"},"(0070,1A07)":{tag:"(0070,1A07)",vr:"OD",name:"VolumetricCurveUpDirections",vm:"1",version:"DICOM"},"(0070,1A08)":{tag:"(0070,1A08)",vr:"SQ",name:"VolumeStreamSequence",vm:"1",version:"DICOM"},"(0070,1A09)":{tag:"(0070,1A09)",vr:"LO",name:"RGBATransferFunctionDescription",vm:"1",version:"DICOM"},"(0070,1B01)":{tag:"(0070,1B01)",vr:"SQ",name:"AdvancedBlendingSequence",vm:"1",version:"DICOM"},"(0070,1B02)":{tag:"(0070,1B02)",vr:"US",name:"BlendingInputNumber",vm:"1",version:"DICOM"},"(0070,1B03)":{tag:"(0070,1B03)",vr:"SQ",name:"BlendingDisplayInputSequence",vm:"1",version:"DICOM"},"(0070,1B04)":{tag:"(0070,1B04)",vr:"SQ",name:"BlendingDisplaySequence",vm:"1",version:"DICOM"},"(0070,1B06)":{tag:"(0070,1B06)",vr:"CS",name:"BlendingMode",vm:"1",version:"DICOM"},"(0070,1B07)":{tag:"(0070,1B07)",vr:"CS",name:"TimeSeriesBlending",vm:"1",version:"DICOM"},"(0070,1B08)":{tag:"(0070,1B08)",vr:"CS",name:"GeometryForDisplay",vm:"1",version:"DICOM"},"(0070,1B11)":{tag:"(0070,1B11)",vr:"SQ",name:"ThresholdSequence",vm:"1",version:"DICOM"},"(0070,1B12)":{tag:"(0070,1B12)",vr:"SQ",name:"ThresholdValueSequence",vm:"1",version:"DICOM"},"(0070,1B13)":{tag:"(0070,1B13)",vr:"CS",name:"ThresholdType",vm:"1",version:"DICOM"},"(0070,1B14)":{tag:"(0070,1B14)",vr:"FD",name:"ThresholdValue",vm:"1",version:"DICOM"},"(0072,0002)":{tag:"(0072,0002)",vr:"SH",name:"HangingProtocolName",vm:"1",version:"DICOM"},"(0072,0004)":{tag:"(0072,0004)",vr:"LO",name:"HangingProtocolDescription",vm:"1",version:"DICOM"},"(0072,0006)":{tag:"(0072,0006)",vr:"CS",name:"HangingProtocolLevel",vm:"1",version:"DICOM"},"(0072,0008)":{tag:"(0072,0008)",vr:"LO",name:"HangingProtocolCreator",vm:"1",version:"DICOM"},"(0072,000A)":{tag:"(0072,000A)",vr:"DT",name:"HangingProtocolCreationDateTime",vm:"1",version:"DICOM"},"(0072,000C)":{tag:"(0072,000C)",vr:"SQ",name:"HangingProtocolDefinitionSequence",vm:"1",version:"DICOM"},"(0072,000E)":{tag:"(0072,000E)",vr:"SQ",name:"HangingProtocolUserIdentificationCodeSequence",vm:"1",version:"DICOM"},"(0072,0010)":{tag:"(0072,0010)",vr:"LO",name:"HangingProtocolUserGroupName",vm:"1",version:"DICOM"},"(0072,0012)":{tag:"(0072,0012)",vr:"SQ",name:"SourceHangingProtocolSequence",vm:"1",version:"DICOM"},"(0072,0014)":{tag:"(0072,0014)",vr:"US",name:"NumberOfPriorsReferenced",vm:"1",version:"DICOM"},"(0072,0020)":{tag:"(0072,0020)",vr:"SQ",name:"ImageSetsSequence",vm:"1",version:"DICOM"},"(0072,0022)":{tag:"(0072,0022)",vr:"SQ",name:"ImageSetSelectorSequence",vm:"1",version:"DICOM"},"(0072,0024)":{tag:"(0072,0024)",vr:"CS",name:"ImageSetSelectorUsageFlag",vm:"1",version:"DICOM"},"(0072,0026)":{tag:"(0072,0026)",vr:"AT",name:"SelectorAttribute",vm:"1",version:"DICOM"},"(0072,0028)":{tag:"(0072,0028)",vr:"US",name:"SelectorValueNumber",vm:"1",version:"DICOM"},"(0072,0030)":{tag:"(0072,0030)",vr:"SQ",name:"TimeBasedImageSetsSequence",vm:"1",version:"DICOM"},"(0072,0032)":{tag:"(0072,0032)",vr:"US",name:"ImageSetNumber",vm:"1",version:"DICOM"},"(0072,0034)":{tag:"(0072,0034)",vr:"CS",name:"ImageSetSelectorCategory",vm:"1",version:"DICOM"},"(0072,0038)":{tag:"(0072,0038)",vr:"US",name:"RelativeTime",vm:"2",version:"DICOM"},"(0072,003A)":{tag:"(0072,003A)",vr:"CS",name:"RelativeTimeUnits",vm:"1",version:"DICOM"},"(0072,003C)":{tag:"(0072,003C)",vr:"SS",name:"AbstractPriorValue",vm:"2",version:"DICOM"},"(0072,003E)":{tag:"(0072,003E)",vr:"SQ",name:"AbstractPriorCodeSequence",vm:"1",version:"DICOM"},"(0072,0040)":{tag:"(0072,0040)",vr:"LO",name:"ImageSetLabel",vm:"1",version:"DICOM"},"(0072,0050)":{tag:"(0072,0050)",vr:"CS",name:"SelectorAttributeVR",vm:"1",version:"DICOM"},"(0072,0052)":{tag:"(0072,0052)",vr:"AT",name:"SelectorSequencePointer",vm:"1-n",version:"DICOM"},"(0072,0054)":{tag:"(0072,0054)",vr:"LO",name:"SelectorSequencePointerPrivateCreator",vm:"1-n",version:"DICOM"},"(0072,0056)":{tag:"(0072,0056)",vr:"LO",name:"SelectorAttributePrivateCreator",vm:"1",version:"DICOM"},"(0072,005E)":{tag:"(0072,005E)",vr:"AE",name:"SelectorAEValue",vm:"1-n",version:"DICOM"},"(0072,005F)":{tag:"(0072,005F)",vr:"AS",name:"SelectorASValue",vm:"1-n",version:"DICOM"},"(0072,0060)":{tag:"(0072,0060)",vr:"AT",name:"SelectorATValue",vm:"1-n",version:"DICOM"},"(0072,0061)":{tag:"(0072,0061)",vr:"DA",name:"SelectorDAValue",vm:"1-n",version:"DICOM"},"(0072,0062)":{tag:"(0072,0062)",vr:"CS",name:"SelectorCSValue",vm:"1-n",version:"DICOM"},"(0072,0063)":{tag:"(0072,0063)",vr:"DT",name:"SelectorDTValue",vm:"1-n",version:"DICOM"},"(0072,0064)":{tag:"(0072,0064)",vr:"IS",name:"SelectorISValue",vm:"1-n",version:"DICOM"},"(0072,0065)":{tag:"(0072,0065)",vr:"OB",name:"SelectorOBValue",vm:"1",version:"DICOM"},"(0072,0066)":{tag:"(0072,0066)",vr:"LO",name:"SelectorLOValue",vm:"1-n",version:"DICOM"},"(0072,0067)":{tag:"(0072,0067)",vr:"OF",name:"SelectorOFValue",vm:"1",version:"DICOM"},"(0072,0068)":{tag:"(0072,0068)",vr:"LT",name:"SelectorLTValue",vm:"1",version:"DICOM"},"(0072,0069)":{tag:"(0072,0069)",vr:"OW",name:"SelectorOWValue",vm:"1",version:"DICOM"},"(0072,006A)":{tag:"(0072,006A)",vr:"PN",name:"SelectorPNValue",vm:"1-n",version:"DICOM"},"(0072,006B)":{tag:"(0072,006B)",vr:"TM",name:"SelectorTMValue",vm:"1-n",version:"DICOM"},"(0072,006C)":{tag:"(0072,006C)",vr:"SH",name:"SelectorSHValue",vm:"1-n",version:"DICOM"},"(0072,006D)":{tag:"(0072,006D)",vr:"UN",name:"SelectorUNValue",vm:"1",version:"DICOM"},"(0072,006E)":{tag:"(0072,006E)",vr:"ST",name:"SelectorSTValue",vm:"1",version:"DICOM"},"(0072,006F)":{tag:"(0072,006F)",vr:"UC",name:"SelectorUCValue",vm:"1-n",version:"DICOM"},"(0072,0070)":{tag:"(0072,0070)",vr:"UT",name:"SelectorUTValue",vm:"1",version:"DICOM"},"(0072,0071)":{tag:"(0072,0071)",vr:"UR",name:"SelectorURValue",vm:"1",version:"DICOM"},"(0072,0072)":{tag:"(0072,0072)",vr:"DS",name:"SelectorDSValue",vm:"1-n",version:"DICOM"},"(0072,0073)":{tag:"(0072,0073)",vr:"OD",name:"SelectorODValue",vm:"1",version:"DICOM"},"(0072,0074)":{tag:"(0072,0074)",vr:"FD",name:"SelectorFDValue",vm:"1-n",version:"DICOM"},"(0072,0075)":{tag:"(0072,0075)",vr:"OL",name:"SelectorOLValue",vm:"1",version:"DICOM"},"(0072,0076)":{tag:"(0072,0076)",vr:"FL",name:"SelectorFLValue",vm:"1-n",version:"DICOM"},"(0072,0078)":{tag:"(0072,0078)",vr:"UL",name:"SelectorULValue",vm:"1-n",version:"DICOM"},"(0072,007A)":{tag:"(0072,007A)",vr:"US",name:"SelectorUSValue",vm:"1-n",version:"DICOM"},"(0072,007C)":{tag:"(0072,007C)",vr:"SL",name:"SelectorSLValue",vm:"1-n",version:"DICOM"},"(0072,007E)":{tag:"(0072,007E)",vr:"SS",name:"SelectorSSValue",vm:"1-n",version:"DICOM"},"(0072,007F)":{tag:"(0072,007F)",vr:"UI",name:"SelectorUIValue",vm:"1-n",version:"DICOM"},"(0072,0080)":{tag:"(0072,0080)",vr:"SQ",name:"SelectorCodeSequenceValue",vm:"1",version:"DICOM"},"(0072,0081)":{tag:"(0072,0081)",vr:"OV",name:"SelectorOVValue",vm:"1",version:"DICOM"},"(0072,0082)":{tag:"(0072,0082)",vr:"SV",name:"SelectorSVValue",vm:"1-n",version:"DICOM"},"(0072,0083)":{tag:"(0072,0083)",vr:"UV",name:"SelectorUVValue",vm:"1-n",version:"DICOM"},"(0072,0100)":{tag:"(0072,0100)",vr:"US",name:"NumberOfScreens",vm:"1",version:"DICOM"},"(0072,0102)":{tag:"(0072,0102)",vr:"SQ",name:"NominalScreenDefinitionSequence",vm:"1",version:"DICOM"},"(0072,0104)":{tag:"(0072,0104)",vr:"US",name:"NumberOfVerticalPixels",vm:"1",version:"DICOM"},"(0072,0106)":{tag:"(0072,0106)",vr:"US",name:"NumberOfHorizontalPixels",vm:"1",version:"DICOM"},"(0072,0108)":{tag:"(0072,0108)",vr:"FD",name:"DisplayEnvironmentSpatialPosition",vm:"4",version:"DICOM"},"(0072,010A)":{tag:"(0072,010A)",vr:"US",name:"ScreenMinimumGrayscaleBitDepth",vm:"1",version:"DICOM"},"(0072,010C)":{tag:"(0072,010C)",vr:"US",name:"ScreenMinimumColorBitDepth",vm:"1",version:"DICOM"},"(0072,010E)":{tag:"(0072,010E)",vr:"US",name:"ApplicationMaximumRepaintTime",vm:"1",version:"DICOM"},"(0072,0200)":{tag:"(0072,0200)",vr:"SQ",name:"DisplaySetsSequence",vm:"1",version:"DICOM"},"(0072,0202)":{tag:"(0072,0202)",vr:"US",name:"DisplaySetNumber",vm:"1",version:"DICOM"},"(0072,0203)":{tag:"(0072,0203)",vr:"LO",name:"DisplaySetLabel",vm:"1",version:"DICOM"},"(0072,0204)":{tag:"(0072,0204)",vr:"US",name:"DisplaySetPresentationGroup",vm:"1",version:"DICOM"},"(0072,0206)":{tag:"(0072,0206)",vr:"LO",name:"DisplaySetPresentationGroupDescription",vm:"1",version:"DICOM"},"(0072,0208)":{tag:"(0072,0208)",vr:"CS",name:"PartialDataDisplayHandling",vm:"1",version:"DICOM"},"(0072,0210)":{tag:"(0072,0210)",vr:"SQ",name:"SynchronizedScrollingSequence",vm:"1",version:"DICOM"},"(0072,0212)":{tag:"(0072,0212)",vr:"US",name:"DisplaySetScrollingGroup",vm:"2-n",version:"DICOM"},"(0072,0214)":{tag:"(0072,0214)",vr:"SQ",name:"NavigationIndicatorSequence",vm:"1",version:"DICOM"},"(0072,0216)":{tag:"(0072,0216)",vr:"US",name:"NavigationDisplaySet",vm:"1",version:"DICOM"},"(0072,0218)":{tag:"(0072,0218)",vr:"US",name:"ReferenceDisplaySets",vm:"1-n",version:"DICOM"},"(0072,0300)":{tag:"(0072,0300)",vr:"SQ",name:"ImageBoxesSequence",vm:"1",version:"DICOM"},"(0072,0302)":{tag:"(0072,0302)",vr:"US",name:"ImageBoxNumber",vm:"1",version:"DICOM"},"(0072,0304)":{tag:"(0072,0304)",vr:"CS",name:"ImageBoxLayoutType",vm:"1",version:"DICOM"},"(0072,0306)":{tag:"(0072,0306)",vr:"US",name:"ImageBoxTileHorizontalDimension",vm:"1",version:"DICOM"},"(0072,0308)":{tag:"(0072,0308)",vr:"US",name:"ImageBoxTileVerticalDimension",vm:"1",version:"DICOM"},"(0072,0310)":{tag:"(0072,0310)",vr:"CS",name:"ImageBoxScrollDirection",vm:"1",version:"DICOM"},"(0072,0312)":{tag:"(0072,0312)",vr:"CS",name:"ImageBoxSmallScrollType",vm:"1",version:"DICOM"},"(0072,0314)":{tag:"(0072,0314)",vr:"US",name:"ImageBoxSmallScrollAmount",vm:"1",version:"DICOM"},"(0072,0316)":{tag:"(0072,0316)",vr:"CS",name:"ImageBoxLargeScrollType",vm:"1",version:"DICOM"},"(0072,0318)":{tag:"(0072,0318)",vr:"US",name:"ImageBoxLargeScrollAmount",vm:"1",version:"DICOM"},"(0072,0320)":{tag:"(0072,0320)",vr:"US",name:"ImageBoxOverlapPriority",vm:"1",version:"DICOM"},"(0072,0330)":{tag:"(0072,0330)",vr:"FD",name:"CineRelativeToRealTime",vm:"1",version:"DICOM"},"(0072,0400)":{tag:"(0072,0400)",vr:"SQ",name:"FilterOperationsSequence",vm:"1",version:"DICOM"},"(0072,0402)":{tag:"(0072,0402)",vr:"CS",name:"FilterByCategory",vm:"1",version:"DICOM"},"(0072,0404)":{tag:"(0072,0404)",vr:"CS",name:"FilterByAttributePresence",vm:"1",version:"DICOM"},"(0072,0406)":{tag:"(0072,0406)",vr:"CS",name:"FilterByOperator",vm:"1",version:"DICOM"},"(0072,0420)":{tag:"(0072,0420)",vr:"US",name:"StructuredDisplayBackgroundCIELabValue",vm:"3",version:"DICOM"},"(0072,0421)":{tag:"(0072,0421)",vr:"US",name:"EmptyImageBoxCIELabValue",vm:"3",version:"DICOM"},"(0072,0422)":{tag:"(0072,0422)",vr:"SQ",name:"StructuredDisplayImageBoxSequence",vm:"1",version:"DICOM"},"(0072,0424)":{tag:"(0072,0424)",vr:"SQ",name:"StructuredDisplayTextBoxSequence",vm:"1",version:"DICOM"},"(0072,0427)":{tag:"(0072,0427)",vr:"SQ",name:"ReferencedFirstFrameSequence",vm:"1",version:"DICOM"},"(0072,0430)":{tag:"(0072,0430)",vr:"SQ",name:"ImageBoxSynchronizationSequence",vm:"1",version:"DICOM"},"(0072,0432)":{tag:"(0072,0432)",vr:"US",name:"SynchronizedImageBoxList",vm:"2-n",version:"DICOM"},"(0072,0434)":{tag:"(0072,0434)",vr:"CS",name:"TypeOfSynchronization",vm:"1",version:"DICOM"},"(0072,0500)":{tag:"(0072,0500)",vr:"CS",name:"BlendingOperationType",vm:"1",version:"DICOM"},"(0072,0510)":{tag:"(0072,0510)",vr:"CS",name:"ReformattingOperationType",vm:"1",version:"DICOM"},"(0072,0512)":{tag:"(0072,0512)",vr:"FD",name:"ReformattingThickness",vm:"1",version:"DICOM"},"(0072,0514)":{tag:"(0072,0514)",vr:"FD",name:"ReformattingInterval",vm:"1",version:"DICOM"},"(0072,0516)":{tag:"(0072,0516)",vr:"CS",name:"ReformattingOperationInitialViewDirection",vm:"1",version:"DICOM"},"(0072,0520)":{tag:"(0072,0520)",vr:"CS",name:"ThreeDRenderingType",vm:"1-n",version:"DICOM"},"(0072,0600)":{tag:"(0072,0600)",vr:"SQ",name:"SortingOperationsSequence",vm:"1",version:"DICOM"},"(0072,0602)":{tag:"(0072,0602)",vr:"CS",name:"SortByCategory",vm:"1",version:"DICOM"},"(0072,0604)":{tag:"(0072,0604)",vr:"CS",name:"SortingDirection",vm:"1",version:"DICOM"},"(0072,0700)":{tag:"(0072,0700)",vr:"CS",name:"DisplaySetPatientOrientation",vm:"2",version:"DICOM"},"(0072,0702)":{tag:"(0072,0702)",vr:"CS",name:"VOIType",vm:"1",version:"DICOM"},"(0072,0704)":{tag:"(0072,0704)",vr:"CS",name:"PseudoColorType",vm:"1",version:"DICOM"},"(0072,0705)":{tag:"(0072,0705)",vr:"SQ",name:"PseudoColorPaletteInstanceReferenceSequence",vm:"1",version:"DICOM"},"(0072,0706)":{tag:"(0072,0706)",vr:"CS",name:"ShowGrayscaleInverted",vm:"1",version:"DICOM"},"(0072,0710)":{tag:"(0072,0710)",vr:"CS",name:"ShowImageTrueSizeFlag",vm:"1",version:"DICOM"},"(0072,0712)":{tag:"(0072,0712)",vr:"CS",name:"ShowGraphicAnnotationFlag",vm:"1",version:"DICOM"},"(0072,0714)":{tag:"(0072,0714)",vr:"CS",name:"ShowPatientDemographicsFlag",vm:"1",version:"DICOM"},"(0072,0716)":{tag:"(0072,0716)",vr:"CS",name:"ShowAcquisitionTechniquesFlag",vm:"1",version:"DICOM"},"(0072,0717)":{tag:"(0072,0717)",vr:"CS",name:"DisplaySetHorizontalJustification",vm:"1",version:"DICOM"},"(0072,0718)":{tag:"(0072,0718)",vr:"CS",name:"DisplaySetVerticalJustification",vm:"1",version:"DICOM"},"(0074,0120)":{tag:"(0074,0120)",vr:"FD",name:"ContinuationStartMeterset",vm:"1",version:"DICOM"},"(0074,0121)":{tag:"(0074,0121)",vr:"FD",name:"ContinuationEndMeterset",vm:"1",version:"DICOM"},"(0074,1000)":{tag:"(0074,1000)",vr:"CS",name:"ProcedureStepState",vm:"1",version:"DICOM"},"(0074,1002)":{tag:"(0074,1002)",vr:"SQ",name:"ProcedureStepProgressInformationSequence",vm:"1",version:"DICOM"},"(0074,1004)":{tag:"(0074,1004)",vr:"DS",name:"ProcedureStepProgress",vm:"1",version:"DICOM"},"(0074,1006)":{tag:"(0074,1006)",vr:"ST",name:"ProcedureStepProgressDescription",vm:"1",version:"DICOM"},"(0074,1007)":{tag:"(0074,1007)",vr:"SQ",name:"ProcedureStepProgressParametersSequence",vm:"1",version:"DICOM"},"(0074,1008)":{tag:"(0074,1008)",vr:"SQ",name:"ProcedureStepCommunicationsURISequence",vm:"1",version:"DICOM"},"(0074,100A)":{tag:"(0074,100A)",vr:"UR",name:"ContactURI",vm:"1",version:"DICOM"},"(0074,100C)":{tag:"(0074,100C)",vr:"LO",name:"ContactDisplayName",vm:"1",version:"DICOM"},"(0074,100E)":{tag:"(0074,100E)",vr:"SQ",name:"ProcedureStepDiscontinuationReasonCodeSequence",vm:"1",version:"DICOM"},"(0074,1020)":{tag:"(0074,1020)",vr:"SQ",name:"BeamTaskSequence",vm:"1",version:"DICOM"},"(0074,1022)":{tag:"(0074,1022)",vr:"CS",name:"BeamTaskType",vm:"1",version:"DICOM"},"(0074,1025)":{tag:"(0074,1025)",vr:"CS",name:"AutosequenceFlag",vm:"1",version:"DICOM"},"(0074,1026)":{tag:"(0074,1026)",vr:"FD",name:"TableTopVerticalAdjustedPosition",vm:"1",version:"DICOM"},"(0074,1027)":{tag:"(0074,1027)",vr:"FD",name:"TableTopLongitudinalAdjustedPosition",vm:"1",version:"DICOM"},"(0074,1028)":{tag:"(0074,1028)",vr:"FD",name:"TableTopLateralAdjustedPosition",vm:"1",version:"DICOM"},"(0074,102A)":{tag:"(0074,102A)",vr:"FD",name:"PatientSupportAdjustedAngle",vm:"1",version:"DICOM"},"(0074,102B)":{tag:"(0074,102B)",vr:"FD",name:"TableTopEccentricAdjustedAngle",vm:"1",version:"DICOM"},"(0074,102C)":{tag:"(0074,102C)",vr:"FD",name:"TableTopPitchAdjustedAngle",vm:"1",version:"DICOM"},"(0074,102D)":{tag:"(0074,102D)",vr:"FD",name:"TableTopRollAdjustedAngle",vm:"1",version:"DICOM"},"(0074,1030)":{tag:"(0074,1030)",vr:"SQ",name:"DeliveryVerificationImageSequence",vm:"1",version:"DICOM"},"(0074,1032)":{tag:"(0074,1032)",vr:"CS",name:"VerificationImageTiming",vm:"1",version:"DICOM"},"(0074,1034)":{tag:"(0074,1034)",vr:"CS",name:"DoubleExposureFlag",vm:"1",version:"DICOM"},"(0074,1036)":{tag:"(0074,1036)",vr:"CS",name:"DoubleExposureOrdering",vm:"1",version:"DICOM"},"(0074,1040)":{tag:"(0074,1040)",vr:"SQ",name:"RelatedReferenceRTImageSequence",vm:"1",version:"DICOM"},"(0074,1042)":{tag:"(0074,1042)",vr:"SQ",name:"GeneralMachineVerificationSequence",vm:"1",version:"DICOM"},"(0074,1044)":{tag:"(0074,1044)",vr:"SQ",name:"ConventionalMachineVerificationSequence",vm:"1",version:"DICOM"},"(0074,1046)":{tag:"(0074,1046)",vr:"SQ",name:"IonMachineVerificationSequence",vm:"1",version:"DICOM"},"(0074,1048)":{tag:"(0074,1048)",vr:"SQ",name:"FailedAttributesSequence",vm:"1",version:"DICOM"},"(0074,104A)":{tag:"(0074,104A)",vr:"SQ",name:"OverriddenAttributesSequence",vm:"1",version:"DICOM"},"(0074,104C)":{tag:"(0074,104C)",vr:"SQ",name:"ConventionalControlPointVerificationSequence",vm:"1",version:"DICOM"},"(0074,104E)":{tag:"(0074,104E)",vr:"SQ",name:"IonControlPointVerificationSequence",vm:"1",version:"DICOM"},"(0074,1050)":{tag:"(0074,1050)",vr:"SQ",name:"AttributeOccurrenceSequence",vm:"1",version:"DICOM"},"(0074,1052)":{tag:"(0074,1052)",vr:"AT",name:"AttributeOccurrencePointer",vm:"1",version:"DICOM"},"(0074,1054)":{tag:"(0074,1054)",vr:"UL",name:"AttributeItemSelector",vm:"1",version:"DICOM"},"(0074,1056)":{tag:"(0074,1056)",vr:"LO",name:"AttributeOccurrencePrivateCreator",vm:"1",version:"DICOM"},"(0074,1057)":{tag:"(0074,1057)",vr:"IS",name:"SelectorSequencePointerItems",vm:"1-n",version:"DICOM"},"(0074,1200)":{tag:"(0074,1200)",vr:"CS",name:"ScheduledProcedureStepPriority",vm:"1",version:"DICOM"},"(0074,1202)":{tag:"(0074,1202)",vr:"LO",name:"WorklistLabel",vm:"1",version:"DICOM"},"(0074,1204)":{tag:"(0074,1204)",vr:"LO",name:"ProcedureStepLabel",vm:"1",version:"DICOM"},"(0074,1210)":{tag:"(0074,1210)",vr:"SQ",name:"ScheduledProcessingParametersSequence",vm:"1",version:"DICOM"},"(0074,1212)":{tag:"(0074,1212)",vr:"SQ",name:"PerformedProcessingParametersSequence",vm:"1",version:"DICOM"},"(0074,1216)":{tag:"(0074,1216)",vr:"SQ",name:"UnifiedProcedureStepPerformedProcedureSequence",vm:"1",version:"DICOM"},"(0074,1224)":{tag:"(0074,1224)",vr:"SQ",name:"ReplacedProcedureStepSequence",vm:"1",version:"DICOM"},"(0074,1230)":{tag:"(0074,1230)",vr:"LO",name:"DeletionLock",vm:"1",version:"DICOM"},"(0074,1234)":{tag:"(0074,1234)",vr:"AE",name:"ReceivingAE",vm:"1",version:"DICOM"},"(0074,1236)":{tag:"(0074,1236)",vr:"AE",name:"RequestingAE",vm:"1",version:"DICOM"},"(0074,1238)":{tag:"(0074,1238)",vr:"LT",name:"ReasonForCancellation",vm:"1",version:"DICOM"},"(0074,1242)":{tag:"(0074,1242)",vr:"CS",name:"SCPStatus",vm:"1",version:"DICOM"},"(0074,1244)":{tag:"(0074,1244)",vr:"CS",name:"SubscriptionListStatus",vm:"1",version:"DICOM"},"(0074,1246)":{tag:"(0074,1246)",vr:"CS",name:"UnifiedProcedureStepListStatus",vm:"1",version:"DICOM"},"(0074,1324)":{tag:"(0074,1324)",vr:"UL",name:"BeamOrderIndex",vm:"1",version:"DICOM"},"(0074,1338)":{tag:"(0074,1338)",vr:"FD",name:"DoubleExposureMeterset",vm:"1",version:"DICOM"},"(0074,133A)":{tag:"(0074,133A)",vr:"FD",name:"DoubleExposureFieldDelta",vm:"4",version:"DICOM"},"(0074,1401)":{tag:"(0074,1401)",vr:"SQ",name:"BrachyTaskSequence",vm:"1",version:"DICOM"},"(0074,1402)":{tag:"(0074,1402)",vr:"DS",name:"ContinuationStartTotalReferenceAirKerma",vm:"1",version:"DICOM"},"(0074,1403)":{tag:"(0074,1403)",vr:"DS",name:"ContinuationEndTotalReferenceAirKerma",vm:"1",version:"DICOM"},"(0074,1404)":{tag:"(0074,1404)",vr:"IS",name:"ContinuationPulseNumber",vm:"1",version:"DICOM"},"(0074,1405)":{tag:"(0074,1405)",vr:"SQ",name:"ChannelDeliveryOrderSequence",vm:"1",version:"DICOM"},"(0074,1406)":{tag:"(0074,1406)",vr:"IS",name:"ReferencedChannelNumber",vm:"1",version:"DICOM"},"(0074,1407)":{tag:"(0074,1407)",vr:"DS",name:"StartCumulativeTimeWeight",vm:"1",version:"DICOM"},"(0074,1408)":{tag:"(0074,1408)",vr:"DS",name:"EndCumulativeTimeWeight",vm:"1",version:"DICOM"},"(0074,1409)":{tag:"(0074,1409)",vr:"SQ",name:"OmittedChannelSequence",vm:"1",version:"DICOM"},"(0074,140A)":{tag:"(0074,140A)",vr:"CS",name:"ReasonForChannelOmission",vm:"1",version:"DICOM"},"(0074,140B)":{tag:"(0074,140B)",vr:"LO",name:"ReasonForChannelOmissionDescription",vm:"1",version:"DICOM"},"(0074,140C)":{tag:"(0074,140C)",vr:"IS",name:"ChannelDeliveryOrderIndex",vm:"1",version:"DICOM"},"(0074,140D)":{tag:"(0074,140D)",vr:"SQ",name:"ChannelDeliveryContinuationSequence",vm:"1",version:"DICOM"},"(0074,140E)":{tag:"(0074,140E)",vr:"SQ",name:"OmittedApplicationSetupSequence",vm:"1",version:"DICOM"},"(0076,0001)":{tag:"(0076,0001)",vr:"LO",name:"ImplantAssemblyTemplateName",vm:"1",version:"DICOM"},"(0076,0003)":{tag:"(0076,0003)",vr:"LO",name:"ImplantAssemblyTemplateIssuer",vm:"1",version:"DICOM"},"(0076,0006)":{tag:"(0076,0006)",vr:"LO",name:"ImplantAssemblyTemplateVersion",vm:"1",version:"DICOM"},"(0076,0008)":{tag:"(0076,0008)",vr:"SQ",name:"ReplacedImplantAssemblyTemplateSequence",vm:"1",version:"DICOM"},"(0076,000A)":{tag:"(0076,000A)",vr:"CS",name:"ImplantAssemblyTemplateType",vm:"1",version:"DICOM"},"(0076,000C)":{tag:"(0076,000C)",vr:"SQ",name:"OriginalImplantAssemblyTemplateSequence",vm:"1",version:"DICOM"},"(0076,000E)":{tag:"(0076,000E)",vr:"SQ",name:"DerivationImplantAssemblyTemplateSequence",vm:"1",version:"DICOM"},"(0076,0010)":{tag:"(0076,0010)",vr:"SQ",name:"ImplantAssemblyTemplateTargetAnatomySequence",vm:"1",version:"DICOM"},"(0076,0020)":{tag:"(0076,0020)",vr:"SQ",name:"ProcedureTypeCodeSequence",vm:"1",version:"DICOM"},"(0076,0030)":{tag:"(0076,0030)",vr:"LO",name:"SurgicalTechnique",vm:"1",version:"DICOM"},"(0076,0032)":{tag:"(0076,0032)",vr:"SQ",name:"ComponentTypesSequence",vm:"1",version:"DICOM"},"(0076,0034)":{tag:"(0076,0034)",vr:"CS",name:"ComponentTypeCodeSequence",vm:"1",version:"DICOM"},"(0076,0036)":{tag:"(0076,0036)",vr:"CS",name:"ExclusiveComponentType",vm:"1",version:"DICOM"},"(0076,0038)":{tag:"(0076,0038)",vr:"CS",name:"MandatoryComponentType",vm:"1",version:"DICOM"},"(0076,0040)":{tag:"(0076,0040)",vr:"SQ",name:"ComponentSequence",vm:"1",version:"DICOM"},"(0076,0055)":{tag:"(0076,0055)",vr:"US",name:"ComponentID",vm:"1",version:"DICOM"},"(0076,0060)":{tag:"(0076,0060)",vr:"SQ",name:"ComponentAssemblySequence",vm:"1",version:"DICOM"},"(0076,0070)":{tag:"(0076,0070)",vr:"US",name:"Component1ReferencedID",vm:"1",version:"DICOM"},"(0076,0080)":{tag:"(0076,0080)",vr:"US",name:"Component1ReferencedMatingFeatureSetID",vm:"1",version:"DICOM"},"(0076,0090)":{tag:"(0076,0090)",vr:"US",name:"Component1ReferencedMatingFeatureID",vm:"1",version:"DICOM"},"(0076,00A0)":{tag:"(0076,00A0)",vr:"US",name:"Component2ReferencedID",vm:"1",version:"DICOM"},"(0076,00B0)":{tag:"(0076,00B0)",vr:"US",name:"Component2ReferencedMatingFeatureSetID",vm:"1",version:"DICOM"},"(0076,00C0)":{tag:"(0076,00C0)",vr:"US",name:"Component2ReferencedMatingFeatureID",vm:"1",version:"DICOM"},"(0078,0001)":{tag:"(0078,0001)",vr:"LO",name:"ImplantTemplateGroupName",vm:"1",version:"DICOM"},"(0078,0010)":{tag:"(0078,0010)",vr:"ST",name:"ImplantTemplateGroupDescription",vm:"1",version:"DICOM"},"(0078,0020)":{tag:"(0078,0020)",vr:"LO",name:"ImplantTemplateGroupIssuer",vm:"1",version:"DICOM"},"(0078,0024)":{tag:"(0078,0024)",vr:"LO",name:"ImplantTemplateGroupVersion",vm:"1",version:"DICOM"},"(0078,0026)":{tag:"(0078,0026)",vr:"SQ",name:"ReplacedImplantTemplateGroupSequence",vm:"1",version:"DICOM"},"(0078,0028)":{tag:"(0078,0028)",vr:"SQ",name:"ImplantTemplateGroupTargetAnatomySequence",vm:"1",version:"DICOM"},"(0078,002A)":{tag:"(0078,002A)",vr:"SQ",name:"ImplantTemplateGroupMembersSequence",vm:"1",version:"DICOM"},"(0078,002E)":{tag:"(0078,002E)",vr:"US",name:"ImplantTemplateGroupMemberID",vm:"1",version:"DICOM"},"(0078,0050)":{tag:"(0078,0050)",vr:"FD",name:"ThreeDImplantTemplateGroupMemberMatchingPoint",vm:"3",version:"DICOM"},"(0078,0060)":{tag:"(0078,0060)",vr:"FD",name:"ThreeDImplantTemplateGroupMemberMatchingAxes",vm:"9",version:"DICOM"},"(0078,0070)":{tag:"(0078,0070)",vr:"SQ",name:"ImplantTemplateGroupMemberMatching2DCoordinatesSequence",vm:"1",version:"DICOM"},"(0078,0090)":{tag:"(0078,0090)",vr:"FD",name:"TwoDImplantTemplateGroupMemberMatchingPoint",vm:"2",version:"DICOM"},"(0078,00A0)":{tag:"(0078,00A0)",vr:"FD",name:"TwoDImplantTemplateGroupMemberMatchingAxes",vm:"4",version:"DICOM"},"(0078,00B0)":{tag:"(0078,00B0)",vr:"SQ",name:"ImplantTemplateGroupVariationDimensionSequence",vm:"1",version:"DICOM"},"(0078,00B2)":{tag:"(0078,00B2)",vr:"LO",name:"ImplantTemplateGroupVariationDimensionName",vm:"1",version:"DICOM"},"(0078,00B4)":{tag:"(0078,00B4)",vr:"SQ",name:"ImplantTemplateGroupVariationDimensionRankSequence",vm:"1",version:"DICOM"},"(0078,00B6)":{tag:"(0078,00B6)",vr:"US",name:"ReferencedImplantTemplateGroupMemberID",vm:"1",version:"DICOM"},"(0078,00B8)":{tag:"(0078,00B8)",vr:"US",name:"ImplantTemplateGroupVariationDimensionRank",vm:"1",version:"DICOM"},"(0080,0001)":{tag:"(0080,0001)",vr:"SQ",name:"SurfaceScanAcquisitionTypeCodeSequence",vm:"1",version:"DICOM"},"(0080,0002)":{tag:"(0080,0002)",vr:"SQ",name:"SurfaceScanModeCodeSequence",vm:"1",version:"DICOM"},"(0080,0003)":{tag:"(0080,0003)",vr:"SQ",name:"RegistrationMethodCodeSequence",vm:"1",version:"DICOM"},"(0080,0004)":{tag:"(0080,0004)",vr:"FD",name:"ShotDurationTime",vm:"1",version:"DICOM"},"(0080,0005)":{tag:"(0080,0005)",vr:"FD",name:"ShotOffsetTime",vm:"1",version:"DICOM"},"(0080,0006)":{tag:"(0080,0006)",vr:"US",name:"SurfacePointPresentationValueData",vm:"1-n",version:"DICOM"},"(0080,0007)":{tag:"(0080,0007)",vr:"US",name:"SurfacePointColorCIELabValueData",vm:"3-3n",version:"DICOM"},"(0080,0008)":{tag:"(0080,0008)",vr:"SQ",name:"UVMappingSequence",vm:"1",version:"DICOM"},"(0080,0009)":{tag:"(0080,0009)",vr:"SH",name:"TextureLabel",vm:"1",version:"DICOM"},"(0080,0010)":{tag:"(0080,0010)",vr:"OF",name:"UValueData",vm:"1-n",version:"DICOM"},"(0080,0011)":{tag:"(0080,0011)",vr:"OF",name:"VValueData",vm:"1-n",version:"DICOM"},"(0080,0012)":{tag:"(0080,0012)",vr:"SQ",name:"ReferencedTextureSequence",vm:"1",version:"DICOM"},"(0080,0013)":{tag:"(0080,0013)",vr:"SQ",name:"ReferencedSurfaceDataSequence",vm:"1",version:"DICOM"},"(0082,0001)":{tag:"(0082,0001)",vr:"CS",name:"AssessmentSummary",vm:"1",version:"DICOM"},"(0082,0003)":{tag:"(0082,0003)",vr:"UT",name:"AssessmentSummaryDescription",vm:"1",version:"DICOM"},"(0082,0004)":{tag:"(0082,0004)",vr:"SQ",name:"AssessedSOPInstanceSequence",vm:"1",version:"DICOM"},"(0082,0005)":{tag:"(0082,0005)",vr:"SQ",name:"ReferencedComparisonSOPInstanceSequence",vm:"1",version:"DICOM"},"(0082,0006)":{tag:"(0082,0006)",vr:"UL",name:"NumberOfAssessmentObservations",vm:"1",version:"DICOM"},"(0082,0007)":{tag:"(0082,0007)",vr:"SQ",name:"AssessmentObservationsSequence",vm:"1",version:"DICOM"},"(0082,0008)":{tag:"(0082,0008)",vr:"CS",name:"ObservationSignificance",vm:"1",version:"DICOM"},"(0082,000A)":{tag:"(0082,000A)",vr:"UT",name:"ObservationDescription",vm:"1",version:"DICOM"},"(0082,000C)":{tag:"(0082,000C)",vr:"SQ",name:"StructuredConstraintObservationSequence",vm:"1",version:"DICOM"},"(0082,0010)":{tag:"(0082,0010)",vr:"SQ",name:"AssessedAttributeValueSequence",vm:"1",version:"DICOM"},"(0082,0016)":{tag:"(0082,0016)",vr:"LO",name:"AssessmentSetID",vm:"1",version:"DICOM"},"(0082,0017)":{tag:"(0082,0017)",vr:"SQ",name:"AssessmentRequesterSequence",vm:"1",version:"DICOM"},"(0082,0018)":{tag:"(0082,0018)",vr:"LO",name:"SelectorAttributeName",vm:"1",version:"DICOM"},"(0082,0019)":{tag:"(0082,0019)",vr:"LO",name:"SelectorAttributeKeyword",vm:"1",version:"DICOM"},"(0082,0021)":{tag:"(0082,0021)",vr:"SQ",name:"AssessmentTypeCodeSequence",vm:"1",version:"DICOM"},"(0082,0022)":{tag:"(0082,0022)",vr:"SQ",name:"ObservationBasisCodeSequence",vm:"1",version:"DICOM"},"(0082,0023)":{tag:"(0082,0023)",vr:"LO",name:"AssessmentLabel",vm:"1",version:"DICOM"},"(0082,0032)":{tag:"(0082,0032)",vr:"CS",name:"ConstraintType",vm:"1",version:"DICOM"},"(0082,0033)":{tag:"(0082,0033)",vr:"UT",name:"SpecificationSelectionGuidance",vm:"1",version:"DICOM"},"(0082,0034)":{tag:"(0082,0034)",vr:"SQ",name:"ConstraintValueSequence",vm:"1",version:"DICOM"},"(0082,0035)":{tag:"(0082,0035)",vr:"SQ",name:"RecommendedDefaultValueSequence",vm:"1",version:"DICOM"},"(0082,0036)":{tag:"(0082,0036)",vr:"CS",name:"ConstraintViolationSignificance",vm:"1",version:"DICOM"},"(0082,0037)":{tag:"(0082,0037)",vr:"UT",name:"ConstraintViolationCondition",vm:"1",version:"DICOM"},"(0082,0038)":{tag:"(0082,0038)",vr:"CS",name:"ModifiableConstraintFlag",vm:"1",version:"DICOM"},"(0088,0130)":{tag:"(0088,0130)",vr:"SH",name:"StorageMediaFileSetID",vm:"1",version:"DICOM"},"(0088,0140)":{tag:"(0088,0140)",vr:"UI",name:"StorageMediaFileSetUID",vm:"1",version:"DICOM"},"(0088,0200)":{tag:"(0088,0200)",vr:"SQ",name:"IconImageSequence",vm:"1",version:"DICOM"},"(0100,0410)":{tag:"(0100,0410)",vr:"CS",name:"SOPInstanceStatus",vm:"1",version:"DICOM"},"(0100,0420)":{tag:"(0100,0420)",vr:"DT",name:"SOPAuthorizationDateTime",vm:"1",version:"DICOM"},"(0100,0424)":{tag:"(0100,0424)",vr:"LT",name:"SOPAuthorizationComment",vm:"1",version:"DICOM"},"(0100,0426)":{tag:"(0100,0426)",vr:"LO",name:"AuthorizationEquipmentCertificationNumber",vm:"1",version:"DICOM"},"(0400,0005)":{tag:"(0400,0005)",vr:"US",name:"MACIDNumber",vm:"1",version:"DICOM"},"(0400,0010)":{tag:"(0400,0010)",vr:"UI",name:"MACCalculationTransferSyntaxUID",vm:"1",version:"DICOM"},"(0400,0015)":{tag:"(0400,0015)",vr:"CS",name:"MACAlgorithm",vm:"1",version:"DICOM"},"(0400,0020)":{tag:"(0400,0020)",vr:"AT",name:"DataElementsSigned",vm:"1-n",version:"DICOM"},"(0400,0100)":{tag:"(0400,0100)",vr:"UI",name:"DigitalSignatureUID",vm:"1",version:"DICOM"},"(0400,0105)":{tag:"(0400,0105)",vr:"DT",name:"DigitalSignatureDateTime",vm:"1",version:"DICOM"},"(0400,0110)":{tag:"(0400,0110)",vr:"CS",name:"CertificateType",vm:"1",version:"DICOM"},"(0400,0115)":{tag:"(0400,0115)",vr:"OB",name:"CertificateOfSigner",vm:"1",version:"DICOM"},"(0400,0120)":{tag:"(0400,0120)",vr:"OB",name:"Signature",vm:"1",version:"DICOM"},"(0400,0305)":{tag:"(0400,0305)",vr:"CS",name:"CertifiedTimestampType",vm:"1",version:"DICOM"},"(0400,0310)":{tag:"(0400,0310)",vr:"OB",name:"CertifiedTimestamp",vm:"1",version:"DICOM"},"(0400,0401)":{tag:"(0400,0401)",vr:"SQ",name:"DigitalSignaturePurposeCodeSequence",vm:"1",version:"DICOM"},"(0400,0402)":{tag:"(0400,0402)",vr:"SQ",name:"ReferencedDigitalSignatureSequence",vm:"1",version:"DICOM"},"(0400,0403)":{tag:"(0400,0403)",vr:"SQ",name:"ReferencedSOPInstanceMACSequence",vm:"1",version:"DICOM"},"(0400,0404)":{tag:"(0400,0404)",vr:"OB",name:"MAC",vm:"1",version:"DICOM"},"(0400,0500)":{tag:"(0400,0500)",vr:"SQ",name:"EncryptedAttributesSequence",vm:"1",version:"DICOM"},"(0400,0510)":{tag:"(0400,0510)",vr:"UI",name:"EncryptedContentTransferSyntaxUID",vm:"1",version:"DICOM"},"(0400,0520)":{tag:"(0400,0520)",vr:"OB",name:"EncryptedContent",vm:"1",version:"DICOM"},"(0400,0550)":{tag:"(0400,0550)",vr:"SQ",name:"ModifiedAttributesSequence",vm:"1",version:"DICOM"},"(0400,0551)":{tag:"(0400,0551)",vr:"SQ",name:"NonconformingModifiedAttributesSequence",vm:"1",version:"DICOM"},"(0400,0552)":{tag:"(0400,0552)",vr:"OB",name:"NonconformingDataElementValue",vm:"1",version:"DICOM"},"(0400,0561)":{tag:"(0400,0561)",vr:"SQ",name:"OriginalAttributesSequence",vm:"1",version:"DICOM"},"(0400,0562)":{tag:"(0400,0562)",vr:"DT",name:"AttributeModificationDateTime",vm:"1",version:"DICOM"},"(0400,0563)":{tag:"(0400,0563)",vr:"LO",name:"ModifyingSystem",vm:"1",version:"DICOM"},"(0400,0564)":{tag:"(0400,0564)",vr:"LO",name:"SourceOfPreviousValues",vm:"1",version:"DICOM"},"(0400,0565)":{tag:"(0400,0565)",vr:"CS",name:"ReasonForTheAttributeModification",vm:"1",version:"DICOM"},"(0400,0600)":{tag:"(0400,0600)",vr:"CS",name:"InstanceOriginStatus",vm:"1",version:"DICOM"},"(2000,0010)":{tag:"(2000,0010)",vr:"IS",name:"NumberOfCopies",vm:"1",version:"DICOM"},"(2000,001E)":{tag:"(2000,001E)",vr:"SQ",name:"PrinterConfigurationSequence",vm:"1",version:"DICOM"},"(2000,0020)":{tag:"(2000,0020)",vr:"CS",name:"PrintPriority",vm:"1",version:"DICOM"},"(2000,0030)":{tag:"(2000,0030)",vr:"CS",name:"MediumType",vm:"1",version:"DICOM"},"(2000,0040)":{tag:"(2000,0040)",vr:"CS",name:"FilmDestination",vm:"1",version:"DICOM"},"(2000,0050)":{tag:"(2000,0050)",vr:"LO",name:"FilmSessionLabel",vm:"1",version:"DICOM"},"(2000,0060)":{tag:"(2000,0060)",vr:"IS",name:"MemoryAllocation",vm:"1",version:"DICOM"},"(2000,0061)":{tag:"(2000,0061)",vr:"IS",name:"MaximumMemoryAllocation",vm:"1",version:"DICOM"},"(2000,00A0)":{tag:"(2000,00A0)",vr:"US",name:"MemoryBitDepth",vm:"1",version:"DICOM"},"(2000,00A1)":{tag:"(2000,00A1)",vr:"US",name:"PrintingBitDepth",vm:"1",version:"DICOM"},"(2000,00A2)":{tag:"(2000,00A2)",vr:"SQ",name:"MediaInstalledSequence",vm:"1",version:"DICOM"},"(2000,00A4)":{tag:"(2000,00A4)",vr:"SQ",name:"OtherMediaAvailableSequence",vm:"1",version:"DICOM"},"(2000,00A8)":{tag:"(2000,00A8)",vr:"SQ",name:"SupportedImageDisplayFormatsSequence",vm:"1",version:"DICOM"},"(2000,0500)":{tag:"(2000,0500)",vr:"SQ",name:"ReferencedFilmBoxSequence",vm:"1",version:"DICOM"},"(2010,0010)":{tag:"(2010,0010)",vr:"ST",name:"ImageDisplayFormat",vm:"1",version:"DICOM"},"(2010,0030)":{tag:"(2010,0030)",vr:"CS",name:"AnnotationDisplayFormatID",vm:"1",version:"DICOM"},"(2010,0040)":{tag:"(2010,0040)",vr:"CS",name:"FilmOrientation",vm:"1",version:"DICOM"},"(2010,0050)":{tag:"(2010,0050)",vr:"CS",name:"FilmSizeID",vm:"1",version:"DICOM"},"(2010,0052)":{tag:"(2010,0052)",vr:"CS",name:"PrinterResolutionID",vm:"1",version:"DICOM"},"(2010,0054)":{tag:"(2010,0054)",vr:"CS",name:"DefaultPrinterResolutionID",vm:"1",version:"DICOM"},"(2010,0060)":{tag:"(2010,0060)",vr:"CS",name:"MagnificationType",vm:"1",version:"DICOM"},"(2010,0080)":{tag:"(2010,0080)",vr:"CS",name:"SmoothingType",vm:"1",version:"DICOM"},"(2010,00A6)":{tag:"(2010,00A6)",vr:"CS",name:"DefaultMagnificationType",vm:"1",version:"DICOM"},"(2010,00A7)":{tag:"(2010,00A7)",vr:"CS",name:"OtherMagnificationTypesAvailable",vm:"1-n",version:"DICOM"},"(2010,00A8)":{tag:"(2010,00A8)",vr:"CS",name:"DefaultSmoothingType",vm:"1",version:"DICOM"},"(2010,00A9)":{tag:"(2010,00A9)",vr:"CS",name:"OtherSmoothingTypesAvailable",vm:"1-n",version:"DICOM"},"(2010,0100)":{tag:"(2010,0100)",vr:"CS",name:"BorderDensity",vm:"1",version:"DICOM"},"(2010,0110)":{tag:"(2010,0110)",vr:"CS",name:"EmptyImageDensity",vm:"1",version:"DICOM"},"(2010,0120)":{tag:"(2010,0120)",vr:"US",name:"MinDensity",vm:"1",version:"DICOM"},"(2010,0130)":{tag:"(2010,0130)",vr:"US",name:"MaxDensity",vm:"1",version:"DICOM"},"(2010,0140)":{tag:"(2010,0140)",vr:"CS",name:"Trim",vm:"1",version:"DICOM"},"(2010,0150)":{tag:"(2010,0150)",vr:"ST",name:"ConfigurationInformation",vm:"1",version:"DICOM"},"(2010,0152)":{tag:"(2010,0152)",vr:"LT",name:"ConfigurationInformationDescription",vm:"1",version:"DICOM"},"(2010,0154)":{tag:"(2010,0154)",vr:"IS",name:"MaximumCollatedFilms",vm:"1",version:"DICOM"},"(2010,015E)":{tag:"(2010,015E)",vr:"US",name:"Illumination",vm:"1",version:"DICOM"},"(2010,0160)":{tag:"(2010,0160)",vr:"US",name:"ReflectedAmbientLight",vm:"1",version:"DICOM"},"(2010,0376)":{tag:"(2010,0376)",vr:"DS",name:"PrinterPixelSpacing",vm:"2",version:"DICOM"},"(2010,0500)":{tag:"(2010,0500)",vr:"SQ",name:"ReferencedFilmSessionSequence",vm:"1",version:"DICOM"},"(2010,0510)":{tag:"(2010,0510)",vr:"SQ",name:"ReferencedImageBoxSequence",vm:"1",version:"DICOM"},"(2010,0520)":{tag:"(2010,0520)",vr:"SQ",name:"ReferencedBasicAnnotationBoxSequence",vm:"1",version:"DICOM"},"(2020,0010)":{tag:"(2020,0010)",vr:"US",name:"ImageBoxPosition",vm:"1",version:"DICOM"},"(2020,0020)":{tag:"(2020,0020)",vr:"CS",name:"Polarity",vm:"1",version:"DICOM"},"(2020,0030)":{tag:"(2020,0030)",vr:"DS",name:"RequestedImageSize",vm:"1",version:"DICOM"},"(2020,0040)":{tag:"(2020,0040)",vr:"CS",name:"RequestedDecimateCropBehavior",vm:"1",version:"DICOM"},"(2020,0050)":{tag:"(2020,0050)",vr:"CS",name:"RequestedResolutionID",vm:"1",version:"DICOM"},"(2020,00A0)":{tag:"(2020,00A0)",vr:"CS",name:"RequestedImageSizeFlag",vm:"1",version:"DICOM"},"(2020,00A2)":{tag:"(2020,00A2)",vr:"CS",name:"DecimateCropResult",vm:"1",version:"DICOM"},"(2020,0110)":{tag:"(2020,0110)",vr:"SQ",name:"BasicGrayscaleImageSequence",vm:"1",version:"DICOM"},"(2020,0111)":{tag:"(2020,0111)",vr:"SQ",name:"BasicColorImageSequence",vm:"1",version:"DICOM"},"(2030,0010)":{tag:"(2030,0010)",vr:"US",name:"AnnotationPosition",vm:"1",version:"DICOM"},"(2030,0020)":{tag:"(2030,0020)",vr:"LO",name:"TextString",vm:"1",version:"DICOM"},"(2050,0010)":{tag:"(2050,0010)",vr:"SQ",name:"PresentationLUTSequence",vm:"1",version:"DICOM"},"(2050,0020)":{tag:"(2050,0020)",vr:"CS",name:"PresentationLUTShape",vm:"1",version:"DICOM"},"(2050,0500)":{tag:"(2050,0500)",vr:"SQ",name:"ReferencedPresentationLUTSequence",vm:"1",version:"DICOM"},"(2100,0020)":{tag:"(2100,0020)",vr:"CS",name:"ExecutionStatus",vm:"1",version:"DICOM"},"(2100,0030)":{tag:"(2100,0030)",vr:"CS",name:"ExecutionStatusInfo",vm:"1",version:"DICOM"},"(2100,0040)":{tag:"(2100,0040)",vr:"DA",name:"CreationDate",vm:"1",version:"DICOM"},"(2100,0050)":{tag:"(2100,0050)",vr:"TM",name:"CreationTime",vm:"1",version:"DICOM"},"(2100,0070)":{tag:"(2100,0070)",vr:"AE",name:"Originator",vm:"1",version:"DICOM"},"(2100,0160)":{tag:"(2100,0160)",vr:"SH",name:"OwnerID",vm:"1",version:"DICOM"},"(2100,0170)":{tag:"(2100,0170)",vr:"IS",name:"NumberOfFilms",vm:"1",version:"DICOM"},"(2110,0010)":{tag:"(2110,0010)",vr:"CS",name:"PrinterStatus",vm:"1",version:"DICOM"},"(2110,0020)":{tag:"(2110,0020)",vr:"CS",name:"PrinterStatusInfo",vm:"1",version:"DICOM"},"(2110,0030)":{tag:"(2110,0030)",vr:"LO",name:"PrinterName",vm:"1",version:"DICOM"},"(2200,0001)":{tag:"(2200,0001)",vr:"CS",name:"LabelUsingInformationExtractedFromInstances",vm:"1",version:"DICOM"},"(2200,0002)":{tag:"(2200,0002)",vr:"UT",name:"LabelText",vm:"1",version:"DICOM"},"(2200,0003)":{tag:"(2200,0003)",vr:"CS",name:"LabelStyleSelection",vm:"1",version:"DICOM"},"(2200,0004)":{tag:"(2200,0004)",vr:"LT",name:"MediaDisposition",vm:"1",version:"DICOM"},"(2200,0005)":{tag:"(2200,0005)",vr:"LT",name:"BarcodeValue",vm:"1",version:"DICOM"},"(2200,0006)":{tag:"(2200,0006)",vr:"CS",name:"BarcodeSymbology",vm:"1",version:"DICOM"},"(2200,0007)":{tag:"(2200,0007)",vr:"CS",name:"AllowMediaSplitting",vm:"1",version:"DICOM"},"(2200,0008)":{tag:"(2200,0008)",vr:"CS",name:"IncludeNonDICOMObjects",vm:"1",version:"DICOM"},"(2200,0009)":{tag:"(2200,0009)",vr:"CS",name:"IncludeDisplayApplication",vm:"1",version:"DICOM"},"(2200,000A)":{tag:"(2200,000A)",vr:"CS",name:"PreserveCompositeInstancesAfterMediaCreation",vm:"1",version:"DICOM"},"(2200,000B)":{tag:"(2200,000B)",vr:"US",name:"TotalNumberOfPiecesOfMediaCreated",vm:"1",version:"DICOM"},"(2200,000C)":{tag:"(2200,000C)",vr:"LO",name:"RequestedMediaApplicationProfile",vm:"1",version:"DICOM"},"(2200,000D)":{tag:"(2200,000D)",vr:"SQ",name:"ReferencedStorageMediaSequence",vm:"1",version:"DICOM"},"(2200,000E)":{tag:"(2200,000E)",vr:"AT",name:"FailureAttributes",vm:"1-n",version:"DICOM"},"(2200,000F)":{tag:"(2200,000F)",vr:"CS",name:"AllowLossyCompression",vm:"1",version:"DICOM"},"(2200,0020)":{tag:"(2200,0020)",vr:"CS",name:"RequestPriority",vm:"1",version:"DICOM"},"(3002,0002)":{tag:"(3002,0002)",vr:"SH",name:"RTImageLabel",vm:"1",version:"DICOM"},"(3002,0003)":{tag:"(3002,0003)",vr:"LO",name:"RTImageName",vm:"1",version:"DICOM"},"(3002,0004)":{tag:"(3002,0004)",vr:"ST",name:"RTImageDescription",vm:"1",version:"DICOM"},"(3002,000A)":{tag:"(3002,000A)",vr:"CS",name:"ReportedValuesOrigin",vm:"1",version:"DICOM"},"(3002,000C)":{tag:"(3002,000C)",vr:"CS",name:"RTImagePlane",vm:"1",version:"DICOM"},"(3002,000D)":{tag:"(3002,000D)",vr:"DS",name:"XRayImageReceptorTranslation",vm:"3",version:"DICOM"},"(3002,000E)":{tag:"(3002,000E)",vr:"DS",name:"XRayImageReceptorAngle",vm:"1",version:"DICOM"},"(3002,0010)":{tag:"(3002,0010)",vr:"DS",name:"RTImageOrientation",vm:"6",version:"DICOM"},"(3002,0011)":{tag:"(3002,0011)",vr:"DS",name:"ImagePlanePixelSpacing",vm:"2",version:"DICOM"},"(3002,0012)":{tag:"(3002,0012)",vr:"DS",name:"RTImagePosition",vm:"2",version:"DICOM"},"(3002,0020)":{tag:"(3002,0020)",vr:"SH",name:"RadiationMachineName",vm:"1",version:"DICOM"},"(3002,0022)":{tag:"(3002,0022)",vr:"DS",name:"RadiationMachineSAD",vm:"1",version:"DICOM"},"(3002,0024)":{tag:"(3002,0024)",vr:"DS",name:"RadiationMachineSSD",vm:"1",version:"DICOM"},"(3002,0026)":{tag:"(3002,0026)",vr:"DS",name:"RTImageSID",vm:"1",version:"DICOM"},"(3002,0028)":{tag:"(3002,0028)",vr:"DS",name:"SourceToReferenceObjectDistance",vm:"1",version:"DICOM"},"(3002,0029)":{tag:"(3002,0029)",vr:"IS",name:"FractionNumber",vm:"1",version:"DICOM"},"(3002,0030)":{tag:"(3002,0030)",vr:"SQ",name:"ExposureSequence",vm:"1",version:"DICOM"},"(3002,0032)":{tag:"(3002,0032)",vr:"DS",name:"MetersetExposure",vm:"1",version:"DICOM"},"(3002,0034)":{tag:"(3002,0034)",vr:"DS",name:"DiaphragmPosition",vm:"4",version:"DICOM"},"(3002,0040)":{tag:"(3002,0040)",vr:"SQ",name:"FluenceMapSequence",vm:"1",version:"DICOM"},"(3002,0041)":{tag:"(3002,0041)",vr:"CS",name:"FluenceDataSource",vm:"1",version:"DICOM"},"(3002,0042)":{tag:"(3002,0042)",vr:"DS",name:"FluenceDataScale",vm:"1",version:"DICOM"},"(3002,0050)":{tag:"(3002,0050)",vr:"SQ",name:"PrimaryFluenceModeSequence",vm:"1",version:"DICOM"},"(3002,0051)":{tag:"(3002,0051)",vr:"CS",name:"FluenceMode",vm:"1",version:"DICOM"},"(3002,0052)":{tag:"(3002,0052)",vr:"SH",name:"FluenceModeID",vm:"1",version:"DICOM"},"(3004,0001)":{tag:"(3004,0001)",vr:"CS",name:"DVHType",vm:"1",version:"DICOM"},"(3004,0002)":{tag:"(3004,0002)",vr:"CS",name:"DoseUnits",vm:"1",version:"DICOM"},"(3004,0004)":{tag:"(3004,0004)",vr:"CS",name:"DoseType",vm:"1",version:"DICOM"},"(3004,0005)":{tag:"(3004,0005)",vr:"CS",name:"SpatialTransformOfDose",vm:"1",version:"DICOM"},"(3004,0006)":{tag:"(3004,0006)",vr:"LO",name:"DoseComment",vm:"1",version:"DICOM"},"(3004,0008)":{tag:"(3004,0008)",vr:"DS",name:"NormalizationPoint",vm:"3",version:"DICOM"},"(3004,000A)":{tag:"(3004,000A)",vr:"CS",name:"DoseSummationType",vm:"1",version:"DICOM"},"(3004,000C)":{tag:"(3004,000C)",vr:"DS",name:"GridFrameOffsetVector",vm:"2-n",version:"DICOM"},"(3004,000E)":{tag:"(3004,000E)",vr:"DS",name:"DoseGridScaling",vm:"1",version:"DICOM"},"(3004,0010)":{tag:"(3004,0010)",vr:"SQ",name:"RTDoseROISequence",vm:"1",version:"DICOM"},"(3004,0012)":{tag:"(3004,0012)",vr:"DS",name:"DoseValue",vm:"1",version:"DICOM"},"(3004,0014)":{tag:"(3004,0014)",vr:"CS",name:"TissueHeterogeneityCorrection",vm:"1-3",version:"DICOM"},"(3004,0040)":{tag:"(3004,0040)",vr:"DS",name:"DVHNormalizationPoint",vm:"3",version:"DICOM"},"(3004,0042)":{tag:"(3004,0042)",vr:"DS",name:"DVHNormalizationDoseValue",vm:"1",version:"DICOM"},"(3004,0050)":{tag:"(3004,0050)",vr:"SQ",name:"DVHSequence",vm:"1",version:"DICOM"},"(3004,0052)":{tag:"(3004,0052)",vr:"DS",name:"DVHDoseScaling",vm:"1",version:"DICOM"},"(3004,0054)":{tag:"(3004,0054)",vr:"CS",name:"DVHVolumeUnits",vm:"1",version:"DICOM"},"(3004,0056)":{tag:"(3004,0056)",vr:"IS",name:"DVHNumberOfBins",vm:"1",version:"DICOM"},"(3004,0058)":{tag:"(3004,0058)",vr:"DS",name:"DVHData",vm:"2-2n",version:"DICOM"},"(3004,0060)":{tag:"(3004,0060)",vr:"SQ",name:"DVHReferencedROISequence",vm:"1",version:"DICOM"},"(3004,0062)":{tag:"(3004,0062)",vr:"CS",name:"DVHROIContributionType",vm:"1",version:"DICOM"},"(3004,0070)":{tag:"(3004,0070)",vr:"DS",name:"DVHMinimumDose",vm:"1",version:"DICOM"},"(3004,0072)":{tag:"(3004,0072)",vr:"DS",name:"DVHMaximumDose",vm:"1",version:"DICOM"},"(3004,0074)":{tag:"(3004,0074)",vr:"DS",name:"DVHMeanDose",vm:"1",version:"DICOM"},"(3006,0002)":{tag:"(3006,0002)",vr:"SH",name:"StructureSetLabel",vm:"1",version:"DICOM"},"(3006,0004)":{tag:"(3006,0004)",vr:"LO",name:"StructureSetName",vm:"1",version:"DICOM"},"(3006,0006)":{tag:"(3006,0006)",vr:"ST",name:"StructureSetDescription",vm:"1",version:"DICOM"},"(3006,0008)":{tag:"(3006,0008)",vr:"DA",name:"StructureSetDate",vm:"1",version:"DICOM"},"(3006,0009)":{tag:"(3006,0009)",vr:"TM",name:"StructureSetTime",vm:"1",version:"DICOM"},"(3006,0010)":{tag:"(3006,0010)",vr:"SQ",name:"ReferencedFrameOfReferenceSequence",vm:"1",version:"DICOM"},"(3006,0012)":{tag:"(3006,0012)",vr:"SQ",name:"RTReferencedStudySequence",vm:"1",version:"DICOM"},"(3006,0014)":{tag:"(3006,0014)",vr:"SQ",name:"RTReferencedSeriesSequence",vm:"1",version:"DICOM"},"(3006,0016)":{tag:"(3006,0016)",vr:"SQ",name:"ContourImageSequence",vm:"1",version:"DICOM"},"(3006,0018)":{tag:"(3006,0018)",vr:"SQ",name:"PredecessorStructureSetSequence",vm:"1",version:"DICOM"},"(3006,0020)":{tag:"(3006,0020)",vr:"SQ",name:"StructureSetROISequence",vm:"1",version:"DICOM"},"(3006,0022)":{tag:"(3006,0022)",vr:"IS",name:"ROINumber",vm:"1",version:"DICOM"},"(3006,0024)":{tag:"(3006,0024)",vr:"UI",name:"ReferencedFrameOfReferenceUID",vm:"1",version:"DICOM"},"(3006,0026)":{tag:"(3006,0026)",vr:"LO",name:"ROIName",vm:"1",version:"DICOM"},"(3006,0028)":{tag:"(3006,0028)",vr:"ST",name:"ROIDescription",vm:"1",version:"DICOM"},"(3006,002A)":{tag:"(3006,002A)",vr:"IS",name:"ROIDisplayColor",vm:"3",version:"DICOM"},"(3006,002C)":{tag:"(3006,002C)",vr:"DS",name:"ROIVolume",vm:"1",version:"DICOM"},"(3006,0030)":{tag:"(3006,0030)",vr:"SQ",name:"RTRelatedROISequence",vm:"1",version:"DICOM"},"(3006,0033)":{tag:"(3006,0033)",vr:"CS",name:"RTROIRelationship",vm:"1",version:"DICOM"},"(3006,0036)":{tag:"(3006,0036)",vr:"CS",name:"ROIGenerationAlgorithm",vm:"1",version:"DICOM"},"(3006,0037)":{tag:"(3006,0037)",vr:"SQ",name:"ROIDerivationAlgorithmIdentificationSequence",vm:"1",version:"DICOM"},"(3006,0038)":{tag:"(3006,0038)",vr:"LO",name:"ROIGenerationDescription",vm:"1",version:"DICOM"},"(3006,0039)":{tag:"(3006,0039)",vr:"SQ",name:"ROIContourSequence",vm:"1",version:"DICOM"},"(3006,0040)":{tag:"(3006,0040)",vr:"SQ",name:"ContourSequence",vm:"1",version:"DICOM"},"(3006,0042)":{tag:"(3006,0042)",vr:"CS",name:"ContourGeometricType",vm:"1",version:"DICOM"},"(3006,0044)":{tag:"(3006,0044)",vr:"DS",name:"ContourSlabThickness",vm:"1",version:"DICOM"},"(3006,0045)":{tag:"(3006,0045)",vr:"DS",name:"ContourOffsetVector",vm:"3",version:"DICOM"},"(3006,0046)":{tag:"(3006,0046)",vr:"IS",name:"NumberOfContourPoints",vm:"1",version:"DICOM"},"(3006,0048)":{tag:"(3006,0048)",vr:"IS",name:"ContourNumber",vm:"1",version:"DICOM"},"(3006,0049)":{tag:"(3006,0049)",vr:"IS",name:"AttachedContours",vm:"1-n",version:"DICOM"},"(3006,004A)":{tag:"(3006,004A)",vr:"SQ",name:"SourcePixelPlanesCharacteristicsSequence",vm:"1",version:"DICOM"},"(3006,0050)":{tag:"(3006,0050)",vr:"DS",name:"ContourData",vm:"3-3n",version:"DICOM"},"(3006,0080)":{tag:"(3006,0080)",vr:"SQ",name:"RTROIObservationsSequence",vm:"1",version:"DICOM"},"(3006,0082)":{tag:"(3006,0082)",vr:"IS",name:"ObservationNumber",vm:"1",version:"DICOM"},"(3006,0084)":{tag:"(3006,0084)",vr:"IS",name:"ReferencedROINumber",vm:"1",version:"DICOM"},"(3006,0085)":{tag:"(3006,0085)",vr:"SH",name:"ROIObservationLabel",vm:"1",version:"DICOM"},"(3006,0086)":{tag:"(3006,0086)",vr:"SQ",name:"RTROIIdentificationCodeSequence",vm:"1",version:"DICOM"},"(3006,0088)":{tag:"(3006,0088)",vr:"ST",name:"ROIObservationDescription",vm:"1",version:"DICOM"},"(3006,00A0)":{tag:"(3006,00A0)",vr:"SQ",name:"RelatedRTROIObservationsSequence",vm:"1",version:"DICOM"},"(3006,00A4)":{tag:"(3006,00A4)",vr:"CS",name:"RTROIInterpretedType",vm:"1",version:"DICOM"},"(3006,00A6)":{tag:"(3006,00A6)",vr:"PN",name:"ROIInterpreter",vm:"1",version:"DICOM"},"(3006,00B0)":{tag:"(3006,00B0)",vr:"SQ",name:"ROIPhysicalPropertiesSequence",vm:"1",version:"DICOM"},"(3006,00B2)":{tag:"(3006,00B2)",vr:"CS",name:"ROIPhysicalProperty",vm:"1",version:"DICOM"},"(3006,00B4)":{tag:"(3006,00B4)",vr:"DS",name:"ROIPhysicalPropertyValue",vm:"1",version:"DICOM"},"(3006,00B6)":{tag:"(3006,00B6)",vr:"SQ",name:"ROIElementalCompositionSequence",vm:"1",version:"DICOM"},"(3006,00B7)":{tag:"(3006,00B7)",vr:"US",name:"ROIElementalCompositionAtomicNumber",vm:"1",version:"DICOM"},"(3006,00B8)":{tag:"(3006,00B8)",vr:"FL",name:"ROIElementalCompositionAtomicMassFraction",vm:"1",version:"DICOM"},"(3006,00B9)":{tag:"(3006,00B9)",vr:"SQ",name:"AdditionalRTROIIdentificationCodeSequence",vm:"1",version:"DICOM"},"(3006,00C6)":{tag:"(3006,00C6)",vr:"DS",name:"FrameOfReferenceTransformationMatrix",vm:"16",version:"DICOM"},"(3006,00C8)":{tag:"(3006,00C8)",vr:"LO",name:"FrameOfReferenceTransformationComment",vm:"1",version:"DICOM"},"(3006,00C9)":{tag:"(3006,00C9)",vr:"SQ",name:"PatientLocationCoordinatesSequence",vm:"1",version:"DICOM"},"(3006,00CA)":{tag:"(3006,00CA)",vr:"SQ",name:"PatientLocationCoordinatesCodeSequence",vm:"1",version:"DICOM"},"(3006,00CB)":{tag:"(3006,00CB)",vr:"SQ",name:"PatientSupportPositionSequence",vm:"1",version:"DICOM"},"(3008,0010)":{tag:"(3008,0010)",vr:"SQ",name:"MeasuredDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,0012)":{tag:"(3008,0012)",vr:"ST",name:"MeasuredDoseDescription",vm:"1",version:"DICOM"},"(3008,0014)":{tag:"(3008,0014)",vr:"CS",name:"MeasuredDoseType",vm:"1",version:"DICOM"},"(3008,0016)":{tag:"(3008,0016)",vr:"DS",name:"MeasuredDoseValue",vm:"1",version:"DICOM"},"(3008,0020)":{tag:"(3008,0020)",vr:"SQ",name:"TreatmentSessionBeamSequence",vm:"1",version:"DICOM"},"(3008,0021)":{tag:"(3008,0021)",vr:"SQ",name:"TreatmentSessionIonBeamSequence",vm:"1",version:"DICOM"},"(3008,0022)":{tag:"(3008,0022)",vr:"IS",name:"CurrentFractionNumber",vm:"1",version:"DICOM"},"(3008,0024)":{tag:"(3008,0024)",vr:"DA",name:"TreatmentControlPointDate",vm:"1",version:"DICOM"},"(3008,0025)":{tag:"(3008,0025)",vr:"TM",name:"TreatmentControlPointTime",vm:"1",version:"DICOM"},"(3008,002A)":{tag:"(3008,002A)",vr:"CS",name:"TreatmentTerminationStatus",vm:"1",version:"DICOM"},"(3008,002B)":{tag:"(3008,002B)",vr:"SH",name:"TreatmentTerminationCode",vm:"1",version:"DICOM"},"(3008,002C)":{tag:"(3008,002C)",vr:"CS",name:"TreatmentVerificationStatus",vm:"1",version:"DICOM"},"(3008,0030)":{tag:"(3008,0030)",vr:"SQ",name:"ReferencedTreatmentRecordSequence",vm:"1",version:"DICOM"},"(3008,0032)":{tag:"(3008,0032)",vr:"DS",name:"SpecifiedPrimaryMeterset",vm:"1",version:"DICOM"},"(3008,0033)":{tag:"(3008,0033)",vr:"DS",name:"SpecifiedSecondaryMeterset",vm:"1",version:"DICOM"},"(3008,0036)":{tag:"(3008,0036)",vr:"DS",name:"DeliveredPrimaryMeterset",vm:"1",version:"DICOM"},"(3008,0037)":{tag:"(3008,0037)",vr:"DS",name:"DeliveredSecondaryMeterset",vm:"1",version:"DICOM"},"(3008,003A)":{tag:"(3008,003A)",vr:"DS",name:"SpecifiedTreatmentTime",vm:"1",version:"DICOM"},"(3008,003B)":{tag:"(3008,003B)",vr:"DS",name:"DeliveredTreatmentTime",vm:"1",version:"DICOM"},"(3008,0040)":{tag:"(3008,0040)",vr:"SQ",name:"ControlPointDeliverySequence",vm:"1",version:"DICOM"},"(3008,0041)":{tag:"(3008,0041)",vr:"SQ",name:"IonControlPointDeliverySequence",vm:"1",version:"DICOM"},"(3008,0042)":{tag:"(3008,0042)",vr:"DS",name:"SpecifiedMeterset",vm:"1",version:"DICOM"},"(3008,0044)":{tag:"(3008,0044)",vr:"DS",name:"DeliveredMeterset",vm:"1",version:"DICOM"},"(3008,0045)":{tag:"(3008,0045)",vr:"FL",name:"MetersetRateSet",vm:"1",version:"DICOM"},"(3008,0046)":{tag:"(3008,0046)",vr:"FL",name:"MetersetRateDelivered",vm:"1",version:"DICOM"},"(3008,0047)":{tag:"(3008,0047)",vr:"FL",name:"ScanSpotMetersetsDelivered",vm:"1-n",version:"DICOM"},"(3008,0048)":{tag:"(3008,0048)",vr:"DS",name:"DoseRateDelivered",vm:"1",version:"DICOM"},"(3008,0050)":{tag:"(3008,0050)",vr:"SQ",name:"TreatmentSummaryCalculatedDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,0052)":{tag:"(3008,0052)",vr:"DS",name:"CumulativeDoseToDoseReference",vm:"1",version:"DICOM"},"(3008,0054)":{tag:"(3008,0054)",vr:"DA",name:"FirstTreatmentDate",vm:"1",version:"DICOM"},"(3008,0056)":{tag:"(3008,0056)",vr:"DA",name:"MostRecentTreatmentDate",vm:"1",version:"DICOM"},"(3008,005A)":{tag:"(3008,005A)",vr:"IS",name:"NumberOfFractionsDelivered",vm:"1",version:"DICOM"},"(3008,0060)":{tag:"(3008,0060)",vr:"SQ",name:"OverrideSequence",vm:"1",version:"DICOM"},"(3008,0061)":{tag:"(3008,0061)",vr:"AT",name:"ParameterSequencePointer",vm:"1",version:"DICOM"},"(3008,0062)":{tag:"(3008,0062)",vr:"AT",name:"OverrideParameterPointer",vm:"1",version:"DICOM"},"(3008,0063)":{tag:"(3008,0063)",vr:"IS",name:"ParameterItemIndex",vm:"1",version:"DICOM"},"(3008,0064)":{tag:"(3008,0064)",vr:"IS",name:"MeasuredDoseReferenceNumber",vm:"1",version:"DICOM"},"(3008,0065)":{tag:"(3008,0065)",vr:"AT",name:"ParameterPointer",vm:"1",version:"DICOM"},"(3008,0066)":{tag:"(3008,0066)",vr:"ST",name:"OverrideReason",vm:"1",version:"DICOM"},"(3008,0067)":{tag:"(3008,0067)",vr:"US",name:"ParameterValueNumber",vm:"1",version:"DICOM"},"(3008,0068)":{tag:"(3008,0068)",vr:"SQ",name:"CorrectedParameterSequence",vm:"1",version:"DICOM"},"(3008,006A)":{tag:"(3008,006A)",vr:"FL",name:"CorrectionValue",vm:"1",version:"DICOM"},"(3008,0070)":{tag:"(3008,0070)",vr:"SQ",name:"CalculatedDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,0072)":{tag:"(3008,0072)",vr:"IS",name:"CalculatedDoseReferenceNumber",vm:"1",version:"DICOM"},"(3008,0074)":{tag:"(3008,0074)",vr:"ST",name:"CalculatedDoseReferenceDescription",vm:"1",version:"DICOM"},"(3008,0076)":{tag:"(3008,0076)",vr:"DS",name:"CalculatedDoseReferenceDoseValue",vm:"1",version:"DICOM"},"(3008,0078)":{tag:"(3008,0078)",vr:"DS",name:"StartMeterset",vm:"1",version:"DICOM"},"(3008,007A)":{tag:"(3008,007A)",vr:"DS",name:"EndMeterset",vm:"1",version:"DICOM"},"(3008,0080)":{tag:"(3008,0080)",vr:"SQ",name:"ReferencedMeasuredDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,0082)":{tag:"(3008,0082)",vr:"IS",name:"ReferencedMeasuredDoseReferenceNumber",vm:"1",version:"DICOM"},"(3008,0090)":{tag:"(3008,0090)",vr:"SQ",name:"ReferencedCalculatedDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,0092)":{tag:"(3008,0092)",vr:"IS",name:"ReferencedCalculatedDoseReferenceNumber",vm:"1",version:"DICOM"},"(3008,00A0)":{tag:"(3008,00A0)",vr:"SQ",name:"BeamLimitingDeviceLeafPairsSequence",vm:"1",version:"DICOM"},"(3008,00B0)":{tag:"(3008,00B0)",vr:"SQ",name:"RecordedWedgeSequence",vm:"1",version:"DICOM"},"(3008,00C0)":{tag:"(3008,00C0)",vr:"SQ",name:"RecordedCompensatorSequence",vm:"1",version:"DICOM"},"(3008,00D0)":{tag:"(3008,00D0)",vr:"SQ",name:"RecordedBlockSequence",vm:"1",version:"DICOM"},"(3008,00E0)":{tag:"(3008,00E0)",vr:"SQ",name:"TreatmentSummaryMeasuredDoseReferenceSequence",vm:"1",version:"DICOM"},"(3008,00F0)":{tag:"(3008,00F0)",vr:"SQ",name:"RecordedSnoutSequence",vm:"1",version:"DICOM"},"(3008,00F2)":{tag:"(3008,00F2)",vr:"SQ",name:"RecordedRangeShifterSequence",vm:"1",version:"DICOM"},"(3008,00F4)":{tag:"(3008,00F4)",vr:"SQ",name:"RecordedLateralSpreadingDeviceSequence",vm:"1",version:"DICOM"},"(3008,00F6)":{tag:"(3008,00F6)",vr:"SQ",name:"RecordedRangeModulatorSequence",vm:"1",version:"DICOM"},"(3008,0100)":{tag:"(3008,0100)",vr:"SQ",name:"RecordedSourceSequence",vm:"1",version:"DICOM"},"(3008,0105)":{tag:"(3008,0105)",vr:"LO",name:"SourceSerialNumber",vm:"1",version:"DICOM"},"(3008,0110)":{tag:"(3008,0110)",vr:"SQ",name:"TreatmentSessionApplicationSetupSequence",vm:"1",version:"DICOM"},"(3008,0116)":{tag:"(3008,0116)",vr:"CS",name:"ApplicationSetupCheck",vm:"1",version:"DICOM"},"(3008,0120)":{tag:"(3008,0120)",vr:"SQ",name:"RecordedBrachyAccessoryDeviceSequence",vm:"1",version:"DICOM"},"(3008,0122)":{tag:"(3008,0122)",vr:"IS",name:"ReferencedBrachyAccessoryDeviceNumber",vm:"1",version:"DICOM"},"(3008,0130)":{tag:"(3008,0130)",vr:"SQ",name:"RecordedChannelSequence",vm:"1",version:"DICOM"},"(3008,0132)":{tag:"(3008,0132)",vr:"DS",name:"SpecifiedChannelTotalTime",vm:"1",version:"DICOM"},"(3008,0134)":{tag:"(3008,0134)",vr:"DS",name:"DeliveredChannelTotalTime",vm:"1",version:"DICOM"},"(3008,0136)":{tag:"(3008,0136)",vr:"IS",name:"SpecifiedNumberOfPulses",vm:"1",version:"DICOM"},"(3008,0138)":{tag:"(3008,0138)",vr:"IS",name:"DeliveredNumberOfPulses",vm:"1",version:"DICOM"},"(3008,013A)":{tag:"(3008,013A)",vr:"DS",name:"SpecifiedPulseRepetitionInterval",vm:"1",version:"DICOM"},"(3008,013C)":{tag:"(3008,013C)",vr:"DS",name:"DeliveredPulseRepetitionInterval",vm:"1",version:"DICOM"},"(3008,0140)":{tag:"(3008,0140)",vr:"SQ",name:"RecordedSourceApplicatorSequence",vm:"1",version:"DICOM"},"(3008,0142)":{tag:"(3008,0142)",vr:"IS",name:"ReferencedSourceApplicatorNumber",vm:"1",version:"DICOM"},"(3008,0150)":{tag:"(3008,0150)",vr:"SQ",name:"RecordedChannelShieldSequence",vm:"1",version:"DICOM"},"(3008,0152)":{tag:"(3008,0152)",vr:"IS",name:"ReferencedChannelShieldNumber",vm:"1",version:"DICOM"},"(3008,0160)":{tag:"(3008,0160)",vr:"SQ",name:"BrachyControlPointDeliveredSequence",vm:"1",version:"DICOM"},"(3008,0162)":{tag:"(3008,0162)",vr:"DA",name:"SafePositionExitDate",vm:"1",version:"DICOM"},"(3008,0164)":{tag:"(3008,0164)",vr:"TM",name:"SafePositionExitTime",vm:"1",version:"DICOM"},"(3008,0166)":{tag:"(3008,0166)",vr:"DA",name:"SafePositionReturnDate",vm:"1",version:"DICOM"},"(3008,0168)":{tag:"(3008,0168)",vr:"TM",name:"SafePositionReturnTime",vm:"1",version:"DICOM"},"(3008,0171)":{tag:"(3008,0171)",vr:"SQ",name:"PulseSpecificBrachyControlPointDeliveredSequence",vm:"1",version:"DICOM"},"(3008,0172)":{tag:"(3008,0172)",vr:"US",name:"PulseNumber",vm:"1",version:"DICOM"},"(3008,0173)":{tag:"(3008,0173)",vr:"SQ",name:"BrachyPulseControlPointDeliveredSequence",vm:"1",version:"DICOM"},"(3008,0200)":{tag:"(3008,0200)",vr:"CS",name:"CurrentTreatmentStatus",vm:"1",version:"DICOM"},"(3008,0202)":{tag:"(3008,0202)",vr:"ST",name:"TreatmentStatusComment",vm:"1",version:"DICOM"},"(3008,0220)":{tag:"(3008,0220)",vr:"SQ",name:"FractionGroupSummarySequence",vm:"1",version:"DICOM"},"(3008,0223)":{tag:"(3008,0223)",vr:"IS",name:"ReferencedFractionNumber",vm:"1",version:"DICOM"},"(3008,0224)":{tag:"(3008,0224)",vr:"CS",name:"FractionGroupType",vm:"1",version:"DICOM"},"(3008,0230)":{tag:"(3008,0230)",vr:"CS",name:"BeamStopperPosition",vm:"1",version:"DICOM"},"(3008,0240)":{tag:"(3008,0240)",vr:"SQ",name:"FractionStatusSummarySequence",vm:"1",version:"DICOM"},"(3008,0250)":{tag:"(3008,0250)",vr:"DA",name:"TreatmentDate",vm:"1",version:"DICOM"},"(3008,0251)":{tag:"(3008,0251)",vr:"TM",name:"TreatmentTime",vm:"1",version:"DICOM"},"(300A,0002)":{tag:"(300A,0002)",vr:"SH",name:"RTPlanLabel",vm:"1",version:"DICOM"},"(300A,0003)":{tag:"(300A,0003)",vr:"LO",name:"RTPlanName",vm:"1",version:"DICOM"},"(300A,0004)":{tag:"(300A,0004)",vr:"ST",name:"RTPlanDescription",vm:"1",version:"DICOM"},"(300A,0006)":{tag:"(300A,0006)",vr:"DA",name:"RTPlanDate",vm:"1",version:"DICOM"},"(300A,0007)":{tag:"(300A,0007)",vr:"TM",name:"RTPlanTime",vm:"1",version:"DICOM"},"(300A,0009)":{tag:"(300A,0009)",vr:"LO",name:"TreatmentProtocols",vm:"1-n",version:"DICOM"},"(300A,000A)":{tag:"(300A,000A)",vr:"CS",name:"PlanIntent",vm:"1",version:"DICOM"},"(300A,000B)":{tag:"(300A,000B)",vr:"LO",name:"TreatmentSites",vm:"1-n",version:"DICOM"},"(300A,000C)":{tag:"(300A,000C)",vr:"CS",name:"RTPlanGeometry",vm:"1",version:"DICOM"},"(300A,000E)":{tag:"(300A,000E)",vr:"ST",name:"PrescriptionDescription",vm:"1",version:"DICOM"},"(300A,0010)":{tag:"(300A,0010)",vr:"SQ",name:"DoseReferenceSequence",vm:"1",version:"DICOM"},"(300A,0012)":{tag:"(300A,0012)",vr:"IS",name:"DoseReferenceNumber",vm:"1",version:"DICOM"},"(300A,0013)":{tag:"(300A,0013)",vr:"UI",name:"DoseReferenceUID",vm:"1",version:"DICOM"},"(300A,0014)":{tag:"(300A,0014)",vr:"CS",name:"DoseReferenceStructureType",vm:"1",version:"DICOM"},"(300A,0015)":{tag:"(300A,0015)",vr:"CS",name:"NominalBeamEnergyUnit",vm:"1",version:"DICOM"},"(300A,0016)":{tag:"(300A,0016)",vr:"LO",name:"DoseReferenceDescription",vm:"1",version:"DICOM"},"(300A,0018)":{tag:"(300A,0018)",vr:"DS",name:"DoseReferencePointCoordinates",vm:"3",version:"DICOM"},"(300A,001A)":{tag:"(300A,001A)",vr:"DS",name:"NominalPriorDose",vm:"1",version:"DICOM"},"(300A,0020)":{tag:"(300A,0020)",vr:"CS",name:"DoseReferenceType",vm:"1",version:"DICOM"},"(300A,0021)":{tag:"(300A,0021)",vr:"DS",name:"ConstraintWeight",vm:"1",version:"DICOM"},"(300A,0022)":{tag:"(300A,0022)",vr:"DS",name:"DeliveryWarningDose",vm:"1",version:"DICOM"},"(300A,0023)":{tag:"(300A,0023)",vr:"DS",name:"DeliveryMaximumDose",vm:"1",version:"DICOM"},"(300A,0025)":{tag:"(300A,0025)",vr:"DS",name:"TargetMinimumDose",vm:"1",version:"DICOM"},"(300A,0026)":{tag:"(300A,0026)",vr:"DS",name:"TargetPrescriptionDose",vm:"1",version:"DICOM"},"(300A,0027)":{tag:"(300A,0027)",vr:"DS",name:"TargetMaximumDose",vm:"1",version:"DICOM"},"(300A,0028)":{tag:"(300A,0028)",vr:"DS",name:"TargetUnderdoseVolumeFraction",vm:"1",version:"DICOM"},"(300A,002A)":{tag:"(300A,002A)",vr:"DS",name:"OrganAtRiskFullVolumeDose",vm:"1",version:"DICOM"},"(300A,002B)":{tag:"(300A,002B)",vr:"DS",name:"OrganAtRiskLimitDose",vm:"1",version:"DICOM"},"(300A,002C)":{tag:"(300A,002C)",vr:"DS",name:"OrganAtRiskMaximumDose",vm:"1",version:"DICOM"},"(300A,002D)":{tag:"(300A,002D)",vr:"DS",name:"OrganAtRiskOverdoseVolumeFraction",vm:"1",version:"DICOM"},"(300A,0040)":{tag:"(300A,0040)",vr:"SQ",name:"ToleranceTableSequence",vm:"1",version:"DICOM"},"(300A,0042)":{tag:"(300A,0042)",vr:"IS",name:"ToleranceTableNumber",vm:"1",version:"DICOM"},"(300A,0043)":{tag:"(300A,0043)",vr:"SH",name:"ToleranceTableLabel",vm:"1",version:"DICOM"},"(300A,0044)":{tag:"(300A,0044)",vr:"DS",name:"GantryAngleTolerance",vm:"1",version:"DICOM"},"(300A,0046)":{tag:"(300A,0046)",vr:"DS",name:"BeamLimitingDeviceAngleTolerance",vm:"1",version:"DICOM"},"(300A,0048)":{tag:"(300A,0048)",vr:"SQ",name:"BeamLimitingDeviceToleranceSequence",vm:"1",version:"DICOM"},"(300A,004A)":{tag:"(300A,004A)",vr:"DS",name:"BeamLimitingDevicePositionTolerance",vm:"1",version:"DICOM"},"(300A,004B)":{tag:"(300A,004B)",vr:"FL",name:"SnoutPositionTolerance",vm:"1",version:"DICOM"},"(300A,004C)":{tag:"(300A,004C)",vr:"DS",name:"PatientSupportAngleTolerance",vm:"1",version:"DICOM"},"(300A,004E)":{tag:"(300A,004E)",vr:"DS",name:"TableTopEccentricAngleTolerance",vm:"1",version:"DICOM"},"(300A,004F)":{tag:"(300A,004F)",vr:"FL",name:"TableTopPitchAngleTolerance",vm:"1",version:"DICOM"},"(300A,0050)":{tag:"(300A,0050)",vr:"FL",name:"TableTopRollAngleTolerance",vm:"1",version:"DICOM"},"(300A,0051)":{tag:"(300A,0051)",vr:"DS",name:"TableTopVerticalPositionTolerance",vm:"1",version:"DICOM"},"(300A,0052)":{tag:"(300A,0052)",vr:"DS",name:"TableTopLongitudinalPositionTolerance",vm:"1",version:"DICOM"},"(300A,0053)":{tag:"(300A,0053)",vr:"DS",name:"TableTopLateralPositionTolerance",vm:"1",version:"DICOM"},"(300A,0055)":{tag:"(300A,0055)",vr:"CS",name:"RTPlanRelationship",vm:"1",version:"DICOM"},"(300A,0070)":{tag:"(300A,0070)",vr:"SQ",name:"FractionGroupSequence",vm:"1",version:"DICOM"},"(300A,0071)":{tag:"(300A,0071)",vr:"IS",name:"FractionGroupNumber",vm:"1",version:"DICOM"},"(300A,0072)":{tag:"(300A,0072)",vr:"LO",name:"FractionGroupDescription",vm:"1",version:"DICOM"},"(300A,0078)":{tag:"(300A,0078)",vr:"IS",name:"NumberOfFractionsPlanned",vm:"1",version:"DICOM"},"(300A,0079)":{tag:"(300A,0079)",vr:"IS",name:"NumberOfFractionPatternDigitsPerDay",vm:"1",version:"DICOM"},"(300A,007A)":{tag:"(300A,007A)",vr:"IS",name:"RepeatFractionCycleLength",vm:"1",version:"DICOM"},"(300A,007B)":{tag:"(300A,007B)",vr:"LT",name:"FractionPattern",vm:"1",version:"DICOM"},"(300A,0080)":{tag:"(300A,0080)",vr:"IS",name:"NumberOfBeams",vm:"1",version:"DICOM"},"(300A,0082)":{tag:"(300A,0082)",vr:"DS",name:"BeamDoseSpecificationPoint",vm:"3",version:"DICOM"},"(300A,0083)":{tag:"(300A,0083)",vr:"UI",name:"ReferencedDoseReferenceUID",vm:"1",version:"DICOM"},"(300A,0084)":{tag:"(300A,0084)",vr:"DS",name:"BeamDose",vm:"1",version:"DICOM"},"(300A,0086)":{tag:"(300A,0086)",vr:"DS",name:"BeamMeterset",vm:"1",version:"DICOM"},"(300A,008B)":{tag:"(300A,008B)",vr:"CS",name:"BeamDoseMeaning",vm:"1",version:"DICOM"},"(300A,008C)":{tag:"(300A,008C)",vr:"SQ",name:"BeamDoseVerificationControlPointSequence",vm:"1",version:"DICOM"},"(300A,008D)":{tag:"(300A,008D)",vr:"FL",name:"AverageBeamDosePointDepth",vm:"1",version:"DICOM"},"(300A,008E)":{tag:"(300A,008E)",vr:"FL",name:"AverageBeamDosePointEquivalentDepth",vm:"1",version:"DICOM"},"(300A,008F)":{tag:"(300A,008F)",vr:"FL",name:"AverageBeamDosePointSSD",vm:"1",version:"DICOM"},"(300A,0090)":{tag:"(300A,0090)",vr:"CS",name:"BeamDoseType",vm:"1",version:"DICOM"},"(300A,0091)":{tag:"(300A,0091)",vr:"DS",name:"AlternateBeamDose",vm:"1",version:"DICOM"},"(300A,0092)":{tag:"(300A,0092)",vr:"CS",name:"AlternateBeamDoseType",vm:"1",version:"DICOM"},"(300A,0093)":{tag:"(300A,0093)",vr:"CS",name:"DepthValueAveragingFlag",vm:"1",version:"DICOM"},"(300A,0094)":{tag:"(300A,0094)",vr:"DS",name:"BeamDosePointSourceToExternalContourDistance",vm:"1",version:"DICOM"},"(300A,00A0)":{tag:"(300A,00A0)",vr:"IS",name:"NumberOfBrachyApplicationSetups",vm:"1",version:"DICOM"},"(300A,00A2)":{tag:"(300A,00A2)",vr:"DS",name:"BrachyApplicationSetupDoseSpecificationPoint",vm:"3",version:"DICOM"},"(300A,00A4)":{tag:"(300A,00A4)",vr:"DS",name:"BrachyApplicationSetupDose",vm:"1",version:"DICOM"},"(300A,00B0)":{tag:"(300A,00B0)",vr:"SQ",name:"BeamSequence",vm:"1",version:"DICOM"},"(300A,00B2)":{tag:"(300A,00B2)",vr:"SH",name:"TreatmentMachineName",vm:"1",version:"DICOM"},"(300A,00B3)":{tag:"(300A,00B3)",vr:"CS",name:"PrimaryDosimeterUnit",vm:"1",version:"DICOM"},"(300A,00B4)":{tag:"(300A,00B4)",vr:"DS",name:"SourceAxisDistance",vm:"1",version:"DICOM"},"(300A,00B6)":{tag:"(300A,00B6)",vr:"SQ",name:"BeamLimitingDeviceSequence",vm:"1",version:"DICOM"},"(300A,00B8)":{tag:"(300A,00B8)",vr:"CS",name:"RTBeamLimitingDeviceType",vm:"1",version:"DICOM"},"(300A,00BA)":{tag:"(300A,00BA)",vr:"DS",name:"SourceToBeamLimitingDeviceDistance",vm:"1",version:"DICOM"},"(300A,00BB)":{tag:"(300A,00BB)",vr:"FL",name:"IsocenterToBeamLimitingDeviceDistance",vm:"1",version:"DICOM"},"(300A,00BC)":{tag:"(300A,00BC)",vr:"IS",name:"NumberOfLeafJawPairs",vm:"1",version:"DICOM"},"(300A,00BE)":{tag:"(300A,00BE)",vr:"DS",name:"LeafPositionBoundaries",vm:"3-n",version:"DICOM"},"(300A,00C0)":{tag:"(300A,00C0)",vr:"IS",name:"BeamNumber",vm:"1",version:"DICOM"},"(300A,00C2)":{tag:"(300A,00C2)",vr:"LO",name:"BeamName",vm:"1",version:"DICOM"},"(300A,00C3)":{tag:"(300A,00C3)",vr:"ST",name:"BeamDescription",vm:"1",version:"DICOM"},"(300A,00C4)":{tag:"(300A,00C4)",vr:"CS",name:"BeamType",vm:"1",version:"DICOM"},"(300A,00C5)":{tag:"(300A,00C5)",vr:"FD",name:"BeamDeliveryDurationLimit",vm:"1",version:"DICOM"},"(300A,00C6)":{tag:"(300A,00C6)",vr:"CS",name:"RadiationType",vm:"1",version:"DICOM"},"(300A,00C7)":{tag:"(300A,00C7)",vr:"CS",name:"HighDoseTechniqueType",vm:"1",version:"DICOM"},"(300A,00C8)":{tag:"(300A,00C8)",vr:"IS",name:"ReferenceImageNumber",vm:"1",version:"DICOM"},"(300A,00CA)":{tag:"(300A,00CA)",vr:"SQ",name:"PlannedVerificationImageSequence",vm:"1",version:"DICOM"},"(300A,00CC)":{tag:"(300A,00CC)",vr:"LO",name:"ImagingDeviceSpecificAcquisitionParameters",vm:"1-n",version:"DICOM"},"(300A,00CE)":{tag:"(300A,00CE)",vr:"CS",name:"TreatmentDeliveryType",vm:"1",version:"DICOM"},"(300A,00D0)":{tag:"(300A,00D0)",vr:"IS",name:"NumberOfWedges",vm:"1",version:"DICOM"},"(300A,00D1)":{tag:"(300A,00D1)",vr:"SQ",name:"WedgeSequence",vm:"1",version:"DICOM"},"(300A,00D2)":{tag:"(300A,00D2)",vr:"IS",name:"WedgeNumber",vm:"1",version:"DICOM"},"(300A,00D3)":{tag:"(300A,00D3)",vr:"CS",name:"WedgeType",vm:"1",version:"DICOM"},"(300A,00D4)":{tag:"(300A,00D4)",vr:"SH",name:"WedgeID",vm:"1",version:"DICOM"},"(300A,00D5)":{tag:"(300A,00D5)",vr:"IS",name:"WedgeAngle",vm:"1",version:"DICOM"},"(300A,00D6)":{tag:"(300A,00D6)",vr:"DS",name:"WedgeFactor",vm:"1",version:"DICOM"},"(300A,00D7)":{tag:"(300A,00D7)",vr:"FL",name:"TotalWedgeTrayWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,00D8)":{tag:"(300A,00D8)",vr:"DS",name:"WedgeOrientation",vm:"1",version:"DICOM"},"(300A,00D9)":{tag:"(300A,00D9)",vr:"FL",name:"IsocenterToWedgeTrayDistance",vm:"1",version:"DICOM"},"(300A,00DA)":{tag:"(300A,00DA)",vr:"DS",name:"SourceToWedgeTrayDistance",vm:"1",version:"DICOM"},"(300A,00DB)":{tag:"(300A,00DB)",vr:"FL",name:"WedgeThinEdgePosition",vm:"1",version:"DICOM"},"(300A,00DC)":{tag:"(300A,00DC)",vr:"SH",name:"BolusID",vm:"1",version:"DICOM"},"(300A,00DD)":{tag:"(300A,00DD)",vr:"ST",name:"BolusDescription",vm:"1",version:"DICOM"},"(300A,00DE)":{tag:"(300A,00DE)",vr:"DS",name:"EffectiveWedgeAngle",vm:"1",version:"DICOM"},"(300A,00E0)":{tag:"(300A,00E0)",vr:"IS",name:"NumberOfCompensators",vm:"1",version:"DICOM"},"(300A,00E1)":{tag:"(300A,00E1)",vr:"SH",name:"MaterialID",vm:"1",version:"DICOM"},"(300A,00E2)":{tag:"(300A,00E2)",vr:"DS",name:"TotalCompensatorTrayFactor",vm:"1",version:"DICOM"},"(300A,00E3)":{tag:"(300A,00E3)",vr:"SQ",name:"CompensatorSequence",vm:"1",version:"DICOM"},"(300A,00E4)":{tag:"(300A,00E4)",vr:"IS",name:"CompensatorNumber",vm:"1",version:"DICOM"},"(300A,00E5)":{tag:"(300A,00E5)",vr:"SH",name:"CompensatorID",vm:"1",version:"DICOM"},"(300A,00E6)":{tag:"(300A,00E6)",vr:"DS",name:"SourceToCompensatorTrayDistance",vm:"1",version:"DICOM"},"(300A,00E7)":{tag:"(300A,00E7)",vr:"IS",name:"CompensatorRows",vm:"1",version:"DICOM"},"(300A,00E8)":{tag:"(300A,00E8)",vr:"IS",name:"CompensatorColumns",vm:"1",version:"DICOM"},"(300A,00E9)":{tag:"(300A,00E9)",vr:"DS",name:"CompensatorPixelSpacing",vm:"2",version:"DICOM"},"(300A,00EA)":{tag:"(300A,00EA)",vr:"DS",name:"CompensatorPosition",vm:"2",version:"DICOM"},"(300A,00EB)":{tag:"(300A,00EB)",vr:"DS",name:"CompensatorTransmissionData",vm:"1-n",version:"DICOM"},"(300A,00EC)":{tag:"(300A,00EC)",vr:"DS",name:"CompensatorThicknessData",vm:"1-n",version:"DICOM"},"(300A,00ED)":{tag:"(300A,00ED)",vr:"IS",name:"NumberOfBoli",vm:"1",version:"DICOM"},"(300A,00EE)":{tag:"(300A,00EE)",vr:"CS",name:"CompensatorType",vm:"1",version:"DICOM"},"(300A,00EF)":{tag:"(300A,00EF)",vr:"SH",name:"CompensatorTrayID",vm:"1",version:"DICOM"},"(300A,00F0)":{tag:"(300A,00F0)",vr:"IS",name:"NumberOfBlocks",vm:"1",version:"DICOM"},"(300A,00F2)":{tag:"(300A,00F2)",vr:"DS",name:"TotalBlockTrayFactor",vm:"1",version:"DICOM"},"(300A,00F3)":{tag:"(300A,00F3)",vr:"FL",name:"TotalBlockTrayWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,00F4)":{tag:"(300A,00F4)",vr:"SQ",name:"BlockSequence",vm:"1",version:"DICOM"},"(300A,00F5)":{tag:"(300A,00F5)",vr:"SH",name:"BlockTrayID",vm:"1",version:"DICOM"},"(300A,00F6)":{tag:"(300A,00F6)",vr:"DS",name:"SourceToBlockTrayDistance",vm:"1",version:"DICOM"},"(300A,00F7)":{tag:"(300A,00F7)",vr:"FL",name:"IsocenterToBlockTrayDistance",vm:"1",version:"DICOM"},"(300A,00F8)":{tag:"(300A,00F8)",vr:"CS",name:"BlockType",vm:"1",version:"DICOM"},"(300A,00F9)":{tag:"(300A,00F9)",vr:"LO",name:"AccessoryCode",vm:"1",version:"DICOM"},"(300A,00FA)":{tag:"(300A,00FA)",vr:"CS",name:"BlockDivergence",vm:"1",version:"DICOM"},"(300A,00FB)":{tag:"(300A,00FB)",vr:"CS",name:"BlockMountingPosition",vm:"1",version:"DICOM"},"(300A,00FC)":{tag:"(300A,00FC)",vr:"IS",name:"BlockNumber",vm:"1",version:"DICOM"},"(300A,00FE)":{tag:"(300A,00FE)",vr:"LO",name:"BlockName",vm:"1",version:"DICOM"},"(300A,0100)":{tag:"(300A,0100)",vr:"DS",name:"BlockThickness",vm:"1",version:"DICOM"},"(300A,0102)":{tag:"(300A,0102)",vr:"DS",name:"BlockTransmission",vm:"1",version:"DICOM"},"(300A,0104)":{tag:"(300A,0104)",vr:"IS",name:"BlockNumberOfPoints",vm:"1",version:"DICOM"},"(300A,0106)":{tag:"(300A,0106)",vr:"DS",name:"BlockData",vm:"2-2n",version:"DICOM"},"(300A,0107)":{tag:"(300A,0107)",vr:"SQ",name:"ApplicatorSequence",vm:"1",version:"DICOM"},"(300A,0108)":{tag:"(300A,0108)",vr:"SH",name:"ApplicatorID",vm:"1",version:"DICOM"},"(300A,0109)":{tag:"(300A,0109)",vr:"CS",name:"ApplicatorType",vm:"1",version:"DICOM"},"(300A,010A)":{tag:"(300A,010A)",vr:"LO",name:"ApplicatorDescription",vm:"1",version:"DICOM"},"(300A,010C)":{tag:"(300A,010C)",vr:"DS",name:"CumulativeDoseReferenceCoefficient",vm:"1",version:"DICOM"},"(300A,010E)":{tag:"(300A,010E)",vr:"DS",name:"FinalCumulativeMetersetWeight",vm:"1",version:"DICOM"},"(300A,0110)":{tag:"(300A,0110)",vr:"IS",name:"NumberOfControlPoints",vm:"1",version:"DICOM"},"(300A,0111)":{tag:"(300A,0111)",vr:"SQ",name:"ControlPointSequence",vm:"1",version:"DICOM"},"(300A,0112)":{tag:"(300A,0112)",vr:"IS",name:"ControlPointIndex",vm:"1",version:"DICOM"},"(300A,0114)":{tag:"(300A,0114)",vr:"DS",name:"NominalBeamEnergy",vm:"1",version:"DICOM"},"(300A,0115)":{tag:"(300A,0115)",vr:"DS",name:"DoseRateSet",vm:"1",version:"DICOM"},"(300A,0116)":{tag:"(300A,0116)",vr:"SQ",name:"WedgePositionSequence",vm:"1",version:"DICOM"},"(300A,0118)":{tag:"(300A,0118)",vr:"CS",name:"WedgePosition",vm:"1",version:"DICOM"},"(300A,011A)":{tag:"(300A,011A)",vr:"SQ",name:"BeamLimitingDevicePositionSequence",vm:"1",version:"DICOM"},"(300A,011C)":{tag:"(300A,011C)",vr:"DS",name:"LeafJawPositions",vm:"2-2n",version:"DICOM"},"(300A,011E)":{tag:"(300A,011E)",vr:"DS",name:"GantryAngle",vm:"1",version:"DICOM"},"(300A,011F)":{tag:"(300A,011F)",vr:"CS",name:"GantryRotationDirection",vm:"1",version:"DICOM"},"(300A,0120)":{tag:"(300A,0120)",vr:"DS",name:"BeamLimitingDeviceAngle",vm:"1",version:"DICOM"},"(300A,0121)":{tag:"(300A,0121)",vr:"CS",name:"BeamLimitingDeviceRotationDirection",vm:"1",version:"DICOM"},"(300A,0122)":{tag:"(300A,0122)",vr:"DS",name:"PatientSupportAngle",vm:"1",version:"DICOM"},"(300A,0123)":{tag:"(300A,0123)",vr:"CS",name:"PatientSupportRotationDirection",vm:"1",version:"DICOM"},"(300A,0124)":{tag:"(300A,0124)",vr:"DS",name:"TableTopEccentricAxisDistance",vm:"1",version:"DICOM"},"(300A,0125)":{tag:"(300A,0125)",vr:"DS",name:"TableTopEccentricAngle",vm:"1",version:"DICOM"},"(300A,0126)":{tag:"(300A,0126)",vr:"CS",name:"TableTopEccentricRotationDirection",vm:"1",version:"DICOM"},"(300A,0128)":{tag:"(300A,0128)",vr:"DS",name:"TableTopVerticalPosition",vm:"1",version:"DICOM"},"(300A,0129)":{tag:"(300A,0129)",vr:"DS",name:"TableTopLongitudinalPosition",vm:"1",version:"DICOM"},"(300A,012A)":{tag:"(300A,012A)",vr:"DS",name:"TableTopLateralPosition",vm:"1",version:"DICOM"},"(300A,012C)":{tag:"(300A,012C)",vr:"DS",name:"IsocenterPosition",vm:"3",version:"DICOM"},"(300A,012E)":{tag:"(300A,012E)",vr:"DS",name:"SurfaceEntryPoint",vm:"3",version:"DICOM"},"(300A,0130)":{tag:"(300A,0130)",vr:"DS",name:"SourceToSurfaceDistance",vm:"1",version:"DICOM"},"(300A,0131)":{tag:"(300A,0131)",vr:"FL",name:"AverageBeamDosePointSourceToExternalContourSurfaceDistance",vm:"1",version:"DICOM"},"(300A,0132)":{tag:"(300A,0132)",vr:"FL",name:"SourceToExternalContourDistance",vm:"1",version:"DICOM"},"(300A,0133)":{tag:"(300A,0133)",vr:"FL",name:"ExternalContourEntryPoint",vm:"3",version:"DICOM"},"(300A,0134)":{tag:"(300A,0134)",vr:"DS",name:"CumulativeMetersetWeight",vm:"1",version:"DICOM"},"(300A,0140)":{tag:"(300A,0140)",vr:"FL",name:"TableTopPitchAngle",vm:"1",version:"DICOM"},"(300A,0142)":{tag:"(300A,0142)",vr:"CS",name:"TableTopPitchRotationDirection",vm:"1",version:"DICOM"},"(300A,0144)":{tag:"(300A,0144)",vr:"FL",name:"TableTopRollAngle",vm:"1",version:"DICOM"},"(300A,0146)":{tag:"(300A,0146)",vr:"CS",name:"TableTopRollRotationDirection",vm:"1",version:"DICOM"},"(300A,0148)":{tag:"(300A,0148)",vr:"FL",name:"HeadFixationAngle",vm:"1",version:"DICOM"},"(300A,014A)":{tag:"(300A,014A)",vr:"FL",name:"GantryPitchAngle",vm:"1",version:"DICOM"},"(300A,014C)":{tag:"(300A,014C)",vr:"CS",name:"GantryPitchRotationDirection",vm:"1",version:"DICOM"},"(300A,014E)":{tag:"(300A,014E)",vr:"FL",name:"GantryPitchAngleTolerance",vm:"1",version:"DICOM"},"(300A,0150)":{tag:"(300A,0150)",vr:"CS",name:"FixationEye",vm:"1",version:"DICOM"},"(300A,0151)":{tag:"(300A,0151)",vr:"DS",name:"ChairHeadFramePosition",vm:"1",version:"DICOM"},"(300A,0152)":{tag:"(300A,0152)",vr:"DS",name:"HeadFixationAngleTolerance",vm:"1",version:"DICOM"},"(300A,0153)":{tag:"(300A,0153)",vr:"DS",name:"ChairHeadFramePositionTolerance",vm:"1",version:"DICOM"},"(300A,0154)":{tag:"(300A,0154)",vr:"DS",name:"FixationLightAzimuthalAngleTolerance",vm:"1",version:"DICOM"},"(300A,0155)":{tag:"(300A,0155)",vr:"DS",name:"FixationLightPolarAngleTolerance",vm:"1",version:"DICOM"},"(300A,0180)":{tag:"(300A,0180)",vr:"SQ",name:"PatientSetupSequence",vm:"1",version:"DICOM"},"(300A,0182)":{tag:"(300A,0182)",vr:"IS",name:"PatientSetupNumber",vm:"1",version:"DICOM"},"(300A,0183)":{tag:"(300A,0183)",vr:"LO",name:"PatientSetupLabel",vm:"1",version:"DICOM"},"(300A,0184)":{tag:"(300A,0184)",vr:"LO",name:"PatientAdditionalPosition",vm:"1",version:"DICOM"},"(300A,0190)":{tag:"(300A,0190)",vr:"SQ",name:"FixationDeviceSequence",vm:"1",version:"DICOM"},"(300A,0192)":{tag:"(300A,0192)",vr:"CS",name:"FixationDeviceType",vm:"1",version:"DICOM"},"(300A,0194)":{tag:"(300A,0194)",vr:"SH",name:"FixationDeviceLabel",vm:"1",version:"DICOM"},"(300A,0196)":{tag:"(300A,0196)",vr:"ST",name:"FixationDeviceDescription",vm:"1",version:"DICOM"},"(300A,0198)":{tag:"(300A,0198)",vr:"SH",name:"FixationDevicePosition",vm:"1",version:"DICOM"},"(300A,0199)":{tag:"(300A,0199)",vr:"FL",name:"FixationDevicePitchAngle",vm:"1",version:"DICOM"},"(300A,019A)":{tag:"(300A,019A)",vr:"FL",name:"FixationDeviceRollAngle",vm:"1",version:"DICOM"},"(300A,01A0)":{tag:"(300A,01A0)",vr:"SQ",name:"ShieldingDeviceSequence",vm:"1",version:"DICOM"},"(300A,01A2)":{tag:"(300A,01A2)",vr:"CS",name:"ShieldingDeviceType",vm:"1",version:"DICOM"},"(300A,01A4)":{tag:"(300A,01A4)",vr:"SH",name:"ShieldingDeviceLabel",vm:"1",version:"DICOM"},"(300A,01A6)":{tag:"(300A,01A6)",vr:"ST",name:"ShieldingDeviceDescription",vm:"1",version:"DICOM"},"(300A,01A8)":{tag:"(300A,01A8)",vr:"SH",name:"ShieldingDevicePosition",vm:"1",version:"DICOM"},"(300A,01B0)":{tag:"(300A,01B0)",vr:"CS",name:"SetupTechnique",vm:"1",version:"DICOM"},"(300A,01B2)":{tag:"(300A,01B2)",vr:"ST",name:"SetupTechniqueDescription",vm:"1",version:"DICOM"},"(300A,01B4)":{tag:"(300A,01B4)",vr:"SQ",name:"SetupDeviceSequence",vm:"1",version:"DICOM"},"(300A,01B6)":{tag:"(300A,01B6)",vr:"CS",name:"SetupDeviceType",vm:"1",version:"DICOM"},"(300A,01B8)":{tag:"(300A,01B8)",vr:"SH",name:"SetupDeviceLabel",vm:"1",version:"DICOM"},"(300A,01BA)":{tag:"(300A,01BA)",vr:"ST",name:"SetupDeviceDescription",vm:"1",version:"DICOM"},"(300A,01BC)":{tag:"(300A,01BC)",vr:"DS",name:"SetupDeviceParameter",vm:"1",version:"DICOM"},"(300A,01D0)":{tag:"(300A,01D0)",vr:"ST",name:"SetupReferenceDescription",vm:"1",version:"DICOM"},"(300A,01D2)":{tag:"(300A,01D2)",vr:"DS",name:"TableTopVerticalSetupDisplacement",vm:"1",version:"DICOM"},"(300A,01D4)":{tag:"(300A,01D4)",vr:"DS",name:"TableTopLongitudinalSetupDisplacement",vm:"1",version:"DICOM"},"(300A,01D6)":{tag:"(300A,01D6)",vr:"DS",name:"TableTopLateralSetupDisplacement",vm:"1",version:"DICOM"},"(300A,0200)":{tag:"(300A,0200)",vr:"CS",name:"BrachyTreatmentTechnique",vm:"1",version:"DICOM"},"(300A,0202)":{tag:"(300A,0202)",vr:"CS",name:"BrachyTreatmentType",vm:"1",version:"DICOM"},"(300A,0206)":{tag:"(300A,0206)",vr:"SQ",name:"TreatmentMachineSequence",vm:"1",version:"DICOM"},"(300A,0210)":{tag:"(300A,0210)",vr:"SQ",name:"SourceSequence",vm:"1",version:"DICOM"},"(300A,0212)":{tag:"(300A,0212)",vr:"IS",name:"SourceNumber",vm:"1",version:"DICOM"},"(300A,0214)":{tag:"(300A,0214)",vr:"CS",name:"SourceType",vm:"1",version:"DICOM"},"(300A,0216)":{tag:"(300A,0216)",vr:"LO",name:"SourceManufacturer",vm:"1",version:"DICOM"},"(300A,0218)":{tag:"(300A,0218)",vr:"DS",name:"ActiveSourceDiameter",vm:"1",version:"DICOM"},"(300A,021A)":{tag:"(300A,021A)",vr:"DS",name:"ActiveSourceLength",vm:"1",version:"DICOM"},"(300A,021B)":{tag:"(300A,021B)",vr:"SH",name:"SourceModelID",vm:"1",version:"DICOM"},"(300A,021C)":{tag:"(300A,021C)",vr:"LO",name:"SourceDescription",vm:"1",version:"DICOM"},"(300A,0222)":{tag:"(300A,0222)",vr:"DS",name:"SourceEncapsulationNominalThickness",vm:"1",version:"DICOM"},"(300A,0224)":{tag:"(300A,0224)",vr:"DS",name:"SourceEncapsulationNominalTransmission",vm:"1",version:"DICOM"},"(300A,0226)":{tag:"(300A,0226)",vr:"LO",name:"SourceIsotopeName",vm:"1",version:"DICOM"},"(300A,0228)":{tag:"(300A,0228)",vr:"DS",name:"SourceIsotopeHalfLife",vm:"1",version:"DICOM"},"(300A,0229)":{tag:"(300A,0229)",vr:"CS",name:"SourceStrengthUnits",vm:"1",version:"DICOM"},"(300A,022A)":{tag:"(300A,022A)",vr:"DS",name:"ReferenceAirKermaRate",vm:"1",version:"DICOM"},"(300A,022B)":{tag:"(300A,022B)",vr:"DS",name:"SourceStrength",vm:"1",version:"DICOM"},"(300A,022C)":{tag:"(300A,022C)",vr:"DA",name:"SourceStrengthReferenceDate",vm:"1",version:"DICOM"},"(300A,022E)":{tag:"(300A,022E)",vr:"TM",name:"SourceStrengthReferenceTime",vm:"1",version:"DICOM"},"(300A,0230)":{tag:"(300A,0230)",vr:"SQ",name:"ApplicationSetupSequence",vm:"1",version:"DICOM"},"(300A,0232)":{tag:"(300A,0232)",vr:"CS",name:"ApplicationSetupType",vm:"1",version:"DICOM"},"(300A,0234)":{tag:"(300A,0234)",vr:"IS",name:"ApplicationSetupNumber",vm:"1",version:"DICOM"},"(300A,0236)":{tag:"(300A,0236)",vr:"LO",name:"ApplicationSetupName",vm:"1",version:"DICOM"},"(300A,0238)":{tag:"(300A,0238)",vr:"LO",name:"ApplicationSetupManufacturer",vm:"1",version:"DICOM"},"(300A,0240)":{tag:"(300A,0240)",vr:"IS",name:"TemplateNumber",vm:"1",version:"DICOM"},"(300A,0242)":{tag:"(300A,0242)",vr:"SH",name:"TemplateType",vm:"1",version:"DICOM"},"(300A,0244)":{tag:"(300A,0244)",vr:"LO",name:"TemplateName",vm:"1",version:"DICOM"},"(300A,0250)":{tag:"(300A,0250)",vr:"DS",name:"TotalReferenceAirKerma",vm:"1",version:"DICOM"},"(300A,0260)":{tag:"(300A,0260)",vr:"SQ",name:"BrachyAccessoryDeviceSequence",vm:"1",version:"DICOM"},"(300A,0262)":{tag:"(300A,0262)",vr:"IS",name:"BrachyAccessoryDeviceNumber",vm:"1",version:"DICOM"},"(300A,0263)":{tag:"(300A,0263)",vr:"SH",name:"BrachyAccessoryDeviceID",vm:"1",version:"DICOM"},"(300A,0264)":{tag:"(300A,0264)",vr:"CS",name:"BrachyAccessoryDeviceType",vm:"1",version:"DICOM"},"(300A,0266)":{tag:"(300A,0266)",vr:"LO",name:"BrachyAccessoryDeviceName",vm:"1",version:"DICOM"},"(300A,026A)":{tag:"(300A,026A)",vr:"DS",name:"BrachyAccessoryDeviceNominalThickness",vm:"1",version:"DICOM"},"(300A,026C)":{tag:"(300A,026C)",vr:"DS",name:"BrachyAccessoryDeviceNominalTransmission",vm:"1",version:"DICOM"},"(300A,0271)":{tag:"(300A,0271)",vr:"DS",name:"ChannelEffectiveLength",vm:"1",version:"DICOM"},"(300A,0272)":{tag:"(300A,0272)",vr:"DS",name:"ChannelInnerLength",vm:"1",version:"DICOM"},"(300A,0273)":{tag:"(300A,0273)",vr:"SH",name:"AfterloaderChannelID",vm:"1",version:"DICOM"},"(300A,0274)":{tag:"(300A,0274)",vr:"DS",name:"SourceApplicatorTipLength",vm:"1",version:"DICOM"},"(300A,0280)":{tag:"(300A,0280)",vr:"SQ",name:"ChannelSequence",vm:"1",version:"DICOM"},"(300A,0282)":{tag:"(300A,0282)",vr:"IS",name:"ChannelNumber",vm:"1",version:"DICOM"},"(300A,0284)":{tag:"(300A,0284)",vr:"DS",name:"ChannelLength",vm:"1",version:"DICOM"},"(300A,0286)":{tag:"(300A,0286)",vr:"DS",name:"ChannelTotalTime",vm:"1",version:"DICOM"},"(300A,0288)":{tag:"(300A,0288)",vr:"CS",name:"SourceMovementType",vm:"1",version:"DICOM"},"(300A,028A)":{tag:"(300A,028A)",vr:"IS",name:"NumberOfPulses",vm:"1",version:"DICOM"},"(300A,028C)":{tag:"(300A,028C)",vr:"DS",name:"PulseRepetitionInterval",vm:"1",version:"DICOM"},"(300A,0290)":{tag:"(300A,0290)",vr:"IS",name:"SourceApplicatorNumber",vm:"1",version:"DICOM"},"(300A,0291)":{tag:"(300A,0291)",vr:"SH",name:"SourceApplicatorID",vm:"1",version:"DICOM"},"(300A,0292)":{tag:"(300A,0292)",vr:"CS",name:"SourceApplicatorType",vm:"1",version:"DICOM"},"(300A,0294)":{tag:"(300A,0294)",vr:"LO",name:"SourceApplicatorName",vm:"1",version:"DICOM"},"(300A,0296)":{tag:"(300A,0296)",vr:"DS",name:"SourceApplicatorLength",vm:"1",version:"DICOM"},"(300A,0298)":{tag:"(300A,0298)",vr:"LO",name:"SourceApplicatorManufacturer",vm:"1",version:"DICOM"},"(300A,029C)":{tag:"(300A,029C)",vr:"DS",name:"SourceApplicatorWallNominalThickness",vm:"1",version:"DICOM"},"(300A,029E)":{tag:"(300A,029E)",vr:"DS",name:"SourceApplicatorWallNominalTransmission",vm:"1",version:"DICOM"},"(300A,02A0)":{tag:"(300A,02A0)",vr:"DS",name:"SourceApplicatorStepSize",vm:"1",version:"DICOM"},"(300A,02A2)":{tag:"(300A,02A2)",vr:"IS",name:"TransferTubeNumber",vm:"1",version:"DICOM"},"(300A,02A4)":{tag:"(300A,02A4)",vr:"DS",name:"TransferTubeLength",vm:"1",version:"DICOM"},"(300A,02B0)":{tag:"(300A,02B0)",vr:"SQ",name:"ChannelShieldSequence",vm:"1",version:"DICOM"},"(300A,02B2)":{tag:"(300A,02B2)",vr:"IS",name:"ChannelShieldNumber",vm:"1",version:"DICOM"},"(300A,02B3)":{tag:"(300A,02B3)",vr:"SH",name:"ChannelShieldID",vm:"1",version:"DICOM"},"(300A,02B4)":{tag:"(300A,02B4)",vr:"LO",name:"ChannelShieldName",vm:"1",version:"DICOM"},"(300A,02B8)":{tag:"(300A,02B8)",vr:"DS",name:"ChannelShieldNominalThickness",vm:"1",version:"DICOM"},"(300A,02BA)":{tag:"(300A,02BA)",vr:"DS",name:"ChannelShieldNominalTransmission",vm:"1",version:"DICOM"},"(300A,02C8)":{tag:"(300A,02C8)",vr:"DS",name:"FinalCumulativeTimeWeight",vm:"1",version:"DICOM"},"(300A,02D0)":{tag:"(300A,02D0)",vr:"SQ",name:"BrachyControlPointSequence",vm:"1",version:"DICOM"},"(300A,02D2)":{tag:"(300A,02D2)",vr:"DS",name:"ControlPointRelativePosition",vm:"1",version:"DICOM"},"(300A,02D4)":{tag:"(300A,02D4)",vr:"DS",name:"ControlPoint3DPosition",vm:"3",version:"DICOM"},"(300A,02D6)":{tag:"(300A,02D6)",vr:"DS",name:"CumulativeTimeWeight",vm:"1",version:"DICOM"},"(300A,02E0)":{tag:"(300A,02E0)",vr:"CS",name:"CompensatorDivergence",vm:"1",version:"DICOM"},"(300A,02E1)":{tag:"(300A,02E1)",vr:"CS",name:"CompensatorMountingPosition",vm:"1",version:"DICOM"},"(300A,02E2)":{tag:"(300A,02E2)",vr:"DS",name:"SourceToCompensatorDistance",vm:"1-n",version:"DICOM"},"(300A,02E3)":{tag:"(300A,02E3)",vr:"FL",name:"TotalCompensatorTrayWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,02E4)":{tag:"(300A,02E4)",vr:"FL",name:"IsocenterToCompensatorTrayDistance",vm:"1",version:"DICOM"},"(300A,02E5)":{tag:"(300A,02E5)",vr:"FL",name:"CompensatorColumnOffset",vm:"1",version:"DICOM"},"(300A,02E6)":{tag:"(300A,02E6)",vr:"FL",name:"IsocenterToCompensatorDistances",vm:"1-n",version:"DICOM"},"(300A,02E7)":{tag:"(300A,02E7)",vr:"FL",name:"CompensatorRelativeStoppingPowerRatio",vm:"1",version:"DICOM"},"(300A,02E8)":{tag:"(300A,02E8)",vr:"FL",name:"CompensatorMillingToolDiameter",vm:"1",version:"DICOM"},"(300A,02EA)":{tag:"(300A,02EA)",vr:"SQ",name:"IonRangeCompensatorSequence",vm:"1",version:"DICOM"},"(300A,02EB)":{tag:"(300A,02EB)",vr:"LT",name:"CompensatorDescription",vm:"1",version:"DICOM"},"(300A,0302)":{tag:"(300A,0302)",vr:"IS",name:"RadiationMassNumber",vm:"1",version:"DICOM"},"(300A,0304)":{tag:"(300A,0304)",vr:"IS",name:"RadiationAtomicNumber",vm:"1",version:"DICOM"},"(300A,0306)":{tag:"(300A,0306)",vr:"SS",name:"RadiationChargeState",vm:"1",version:"DICOM"},"(300A,0308)":{tag:"(300A,0308)",vr:"CS",name:"ScanMode",vm:"1",version:"DICOM"},"(300A,0309)":{tag:"(300A,0309)",vr:"CS",name:"ModulatedScanModeType",vm:"1",version:"DICOM"},"(300A,030A)":{tag:"(300A,030A)",vr:"FL",name:"VirtualSourceAxisDistances",vm:"2",version:"DICOM"},"(300A,030C)":{tag:"(300A,030C)",vr:"SQ",name:"SnoutSequence",vm:"1",version:"DICOM"},"(300A,030D)":{tag:"(300A,030D)",vr:"FL",name:"SnoutPosition",vm:"1",version:"DICOM"},"(300A,030F)":{tag:"(300A,030F)",vr:"SH",name:"SnoutID",vm:"1",version:"DICOM"},"(300A,0312)":{tag:"(300A,0312)",vr:"IS",name:"NumberOfRangeShifters",vm:"1",version:"DICOM"},"(300A,0314)":{tag:"(300A,0314)",vr:"SQ",name:"RangeShifterSequence",vm:"1",version:"DICOM"},"(300A,0316)":{tag:"(300A,0316)",vr:"IS",name:"RangeShifterNumber",vm:"1",version:"DICOM"},"(300A,0318)":{tag:"(300A,0318)",vr:"SH",name:"RangeShifterID",vm:"1",version:"DICOM"},"(300A,0320)":{tag:"(300A,0320)",vr:"CS",name:"RangeShifterType",vm:"1",version:"DICOM"},"(300A,0322)":{tag:"(300A,0322)",vr:"LO",name:"RangeShifterDescription",vm:"1",version:"DICOM"},"(300A,0330)":{tag:"(300A,0330)",vr:"IS",name:"NumberOfLateralSpreadingDevices",vm:"1",version:"DICOM"},"(300A,0332)":{tag:"(300A,0332)",vr:"SQ",name:"LateralSpreadingDeviceSequence",vm:"1",version:"DICOM"},"(300A,0334)":{tag:"(300A,0334)",vr:"IS",name:"LateralSpreadingDeviceNumber",vm:"1",version:"DICOM"},"(300A,0336)":{tag:"(300A,0336)",vr:"SH",name:"LateralSpreadingDeviceID",vm:"1",version:"DICOM"},"(300A,0338)":{tag:"(300A,0338)",vr:"CS",name:"LateralSpreadingDeviceType",vm:"1",version:"DICOM"},"(300A,033A)":{tag:"(300A,033A)",vr:"LO",name:"LateralSpreadingDeviceDescription",vm:"1",version:"DICOM"},"(300A,033C)":{tag:"(300A,033C)",vr:"FL",name:"LateralSpreadingDeviceWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,0340)":{tag:"(300A,0340)",vr:"IS",name:"NumberOfRangeModulators",vm:"1",version:"DICOM"},"(300A,0342)":{tag:"(300A,0342)",vr:"SQ",name:"RangeModulatorSequence",vm:"1",version:"DICOM"},"(300A,0344)":{tag:"(300A,0344)",vr:"IS",name:"RangeModulatorNumber",vm:"1",version:"DICOM"},"(300A,0346)":{tag:"(300A,0346)",vr:"SH",name:"RangeModulatorID",vm:"1",version:"DICOM"},"(300A,0348)":{tag:"(300A,0348)",vr:"CS",name:"RangeModulatorType",vm:"1",version:"DICOM"},"(300A,034A)":{tag:"(300A,034A)",vr:"LO",name:"RangeModulatorDescription",vm:"1",version:"DICOM"},"(300A,034C)":{tag:"(300A,034C)",vr:"SH",name:"BeamCurrentModulationID",vm:"1",version:"DICOM"},"(300A,0350)":{tag:"(300A,0350)",vr:"CS",name:"PatientSupportType",vm:"1",version:"DICOM"},"(300A,0352)":{tag:"(300A,0352)",vr:"SH",name:"PatientSupportID",vm:"1",version:"DICOM"},"(300A,0354)":{tag:"(300A,0354)",vr:"LO",name:"PatientSupportAccessoryCode",vm:"1",version:"DICOM"},"(300A,0355)":{tag:"(300A,0355)",vr:"LO",name:"TrayAccessoryCode",vm:"1",version:"DICOM"},"(300A,0356)":{tag:"(300A,0356)",vr:"FL",name:"FixationLightAzimuthalAngle",vm:"1",version:"DICOM"},"(300A,0358)":{tag:"(300A,0358)",vr:"FL",name:"FixationLightPolarAngle",vm:"1",version:"DICOM"},"(300A,035A)":{tag:"(300A,035A)",vr:"FL",name:"MetersetRate",vm:"1",version:"DICOM"},"(300A,0360)":{tag:"(300A,0360)",vr:"SQ",name:"RangeShifterSettingsSequence",vm:"1",version:"DICOM"},"(300A,0362)":{tag:"(300A,0362)",vr:"LO",name:"RangeShifterSetting",vm:"1",version:"DICOM"},"(300A,0364)":{tag:"(300A,0364)",vr:"FL",name:"IsocenterToRangeShifterDistance",vm:"1",version:"DICOM"},"(300A,0366)":{tag:"(300A,0366)",vr:"FL",name:"RangeShifterWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,0370)":{tag:"(300A,0370)",vr:"SQ",name:"LateralSpreadingDeviceSettingsSequence",vm:"1",version:"DICOM"},"(300A,0372)":{tag:"(300A,0372)",vr:"LO",name:"LateralSpreadingDeviceSetting",vm:"1",version:"DICOM"},"(300A,0374)":{tag:"(300A,0374)",vr:"FL",name:"IsocenterToLateralSpreadingDeviceDistance",vm:"1",version:"DICOM"},"(300A,0380)":{tag:"(300A,0380)",vr:"SQ",name:"RangeModulatorSettingsSequence",vm:"1",version:"DICOM"},"(300A,0382)":{tag:"(300A,0382)",vr:"FL",name:"RangeModulatorGatingStartValue",vm:"1",version:"DICOM"},"(300A,0384)":{tag:"(300A,0384)",vr:"FL",name:"RangeModulatorGatingStopValue",vm:"1",version:"DICOM"},"(300A,0386)":{tag:"(300A,0386)",vr:"FL",name:"RangeModulatorGatingStartWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,0388)":{tag:"(300A,0388)",vr:"FL",name:"RangeModulatorGatingStopWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,038A)":{tag:"(300A,038A)",vr:"FL",name:"IsocenterToRangeModulatorDistance",vm:"1",version:"DICOM"},"(300A,038F)":{tag:"(300A,038F)",vr:"FL",name:"ScanSpotTimeOffset",vm:"1-n",version:"DICOM"},"(300A,0390)":{tag:"(300A,0390)",vr:"SH",name:"ScanSpotTuneID",vm:"1",version:"DICOM"},"(300A,0391)":{tag:"(300A,0391)",vr:"IS",name:"ScanSpotPrescribedIndices",vm:"1-n",version:"DICOM"},"(300A,0392)":{tag:"(300A,0392)",vr:"IS",name:"NumberOfScanSpotPositions",vm:"1",version:"DICOM"},"(300A,0393)":{tag:"(300A,0393)",vr:"CS",name:"ScanSpotReordered",vm:"1",version:"DICOM"},"(300A,0394)":{tag:"(300A,0394)",vr:"FL",name:"ScanSpotPositionMap",vm:"1-n",version:"DICOM"},"(300A,0395)":{tag:"(300A,0395)",vr:"CS",name:"ScanSpotReorderingAllowed",vm:"1",version:"DICOM"},"(300A,0396)":{tag:"(300A,0396)",vr:"FL",name:"ScanSpotMetersetWeights",vm:"1-n",version:"DICOM"},"(300A,0398)":{tag:"(300A,0398)",vr:"FL",name:"ScanningSpotSize",vm:"2",version:"DICOM"},"(300A,0399)":{tag:"(300A,0399)",vr:"FL",name:"ScanSpotSizesDelivered",vm:"2-2n",version:"DICOM"},"(300A,039A)":{tag:"(300A,039A)",vr:"IS",name:"NumberOfPaintings",vm:"1",version:"DICOM"},"(300A,03A0)":{tag:"(300A,03A0)",vr:"SQ",name:"IonToleranceTableSequence",vm:"1",version:"DICOM"},"(300A,03A2)":{tag:"(300A,03A2)",vr:"SQ",name:"IonBeamSequence",vm:"1",version:"DICOM"},"(300A,03A4)":{tag:"(300A,03A4)",vr:"SQ",name:"IonBeamLimitingDeviceSequence",vm:"1",version:"DICOM"},"(300A,03A6)":{tag:"(300A,03A6)",vr:"SQ",name:"IonBlockSequence",vm:"1",version:"DICOM"},"(300A,03A8)":{tag:"(300A,03A8)",vr:"SQ",name:"IonControlPointSequence",vm:"1",version:"DICOM"},"(300A,03AA)":{tag:"(300A,03AA)",vr:"SQ",name:"IonWedgeSequence",vm:"1",version:"DICOM"},"(300A,03AC)":{tag:"(300A,03AC)",vr:"SQ",name:"IonWedgePositionSequence",vm:"1",version:"DICOM"},"(300A,0401)":{tag:"(300A,0401)",vr:"SQ",name:"ReferencedSetupImageSequence",vm:"1",version:"DICOM"},"(300A,0402)":{tag:"(300A,0402)",vr:"ST",name:"SetupImageComment",vm:"1",version:"DICOM"},"(300A,0410)":{tag:"(300A,0410)",vr:"SQ",name:"MotionSynchronizationSequence",vm:"1",version:"DICOM"},"(300A,0412)":{tag:"(300A,0412)",vr:"FL",name:"ControlPointOrientation",vm:"3",version:"DICOM"},"(300A,0420)":{tag:"(300A,0420)",vr:"SQ",name:"GeneralAccessorySequence",vm:"1",version:"DICOM"},"(300A,0421)":{tag:"(300A,0421)",vr:"SH",name:"GeneralAccessoryID",vm:"1",version:"DICOM"},"(300A,0422)":{tag:"(300A,0422)",vr:"ST",name:"GeneralAccessoryDescription",vm:"1",version:"DICOM"},"(300A,0423)":{tag:"(300A,0423)",vr:"CS",name:"GeneralAccessoryType",vm:"1",version:"DICOM"},"(300A,0424)":{tag:"(300A,0424)",vr:"IS",name:"GeneralAccessoryNumber",vm:"1",version:"DICOM"},"(300A,0425)":{tag:"(300A,0425)",vr:"FL",name:"SourceToGeneralAccessoryDistance",vm:"1",version:"DICOM"},"(300A,0426)":{tag:"(300A,0426)",vr:"DS",name:"IsocenterToGeneralAccessoryDistance",vm:"1",version:"DICOM"},"(300A,0431)":{tag:"(300A,0431)",vr:"SQ",name:"ApplicatorGeometrySequence",vm:"1",version:"DICOM"},"(300A,0432)":{tag:"(300A,0432)",vr:"CS",name:"ApplicatorApertureShape",vm:"1",version:"DICOM"},"(300A,0433)":{tag:"(300A,0433)",vr:"FL",name:"ApplicatorOpening",vm:"1",version:"DICOM"},"(300A,0434)":{tag:"(300A,0434)",vr:"FL",name:"ApplicatorOpeningX",vm:"1",version:"DICOM"},"(300A,0435)":{tag:"(300A,0435)",vr:"FL",name:"ApplicatorOpeningY",vm:"1",version:"DICOM"},"(300A,0436)":{tag:"(300A,0436)",vr:"FL",name:"SourceToApplicatorMountingPositionDistance",vm:"1",version:"DICOM"},"(300A,0440)":{tag:"(300A,0440)",vr:"IS",name:"NumberOfBlockSlabItems",vm:"1",version:"DICOM"},"(300A,0441)":{tag:"(300A,0441)",vr:"SQ",name:"BlockSlabSequence",vm:"1",version:"DICOM"},"(300A,0442)":{tag:"(300A,0442)",vr:"DS",name:"BlockSlabThickness",vm:"1",version:"DICOM"},"(300A,0443)":{tag:"(300A,0443)",vr:"US",name:"BlockSlabNumber",vm:"1",version:"DICOM"},"(300A,0450)":{tag:"(300A,0450)",vr:"SQ",name:"DeviceMotionControlSequence",vm:"1",version:"DICOM"},"(300A,0451)":{tag:"(300A,0451)",vr:"CS",name:"DeviceMotionExecutionMode",vm:"1",version:"DICOM"},"(300A,0452)":{tag:"(300A,0452)",vr:"CS",name:"DeviceMotionObservationMode",vm:"1",version:"DICOM"},"(300A,0453)":{tag:"(300A,0453)",vr:"SQ",name:"DeviceMotionParameterCodeSequence",vm:"1",version:"DICOM"},"(300A,0501)":{tag:"(300A,0501)",vr:"FL",name:"DistalDepthFraction",vm:"1",version:"DICOM"},"(300A,0502)":{tag:"(300A,0502)",vr:"FL",name:"DistalDepth",vm:"1",version:"DICOM"},"(300A,0503)":{tag:"(300A,0503)",vr:"FL",name:"NominalRangeModulationFractions",vm:"2",version:"DICOM"},"(300A,0504)":{tag:"(300A,0504)",vr:"FL",name:"NominalRangeModulatedRegionDepths",vm:"2",version:"DICOM"},"(300A,0505)":{tag:"(300A,0505)",vr:"SQ",name:"DepthDoseParametersSequence",vm:"1",version:"DICOM"},"(300A,0506)":{tag:"(300A,0506)",vr:"SQ",name:"DeliveredDepthDoseParametersSequence",vm:"1",version:"DICOM"},"(300A,0507)":{tag:"(300A,0507)",vr:"FL",name:"DeliveredDistalDepthFraction",vm:"1",version:"DICOM"},"(300A,0508)":{tag:"(300A,0508)",vr:"FL",name:"DeliveredDistalDepth",vm:"1",version:"DICOM"},"(300A,0509)":{tag:"(300A,0509)",vr:"FL",name:"DeliveredNominalRangeModulationFractions",vm:"2",version:"DICOM"},"(300A,0510)":{tag:"(300A,0510)",vr:"FL",name:"DeliveredNominalRangeModulatedRegionDepths",vm:"2",version:"DICOM"},"(300A,0511)":{tag:"(300A,0511)",vr:"CS",name:"DeliveredReferenceDoseDefinition",vm:"1",version:"DICOM"},"(300A,0512)":{tag:"(300A,0512)",vr:"CS",name:"ReferenceDoseDefinition",vm:"1",version:"DICOM"},"(300A,0600)":{tag:"(300A,0600)",vr:"US",name:"RTControlPointIndex",vm:"1",version:"DICOM"},"(300A,0601)":{tag:"(300A,0601)",vr:"US",name:"RadiationGenerationModeIndex",vm:"1",version:"DICOM"},"(300A,0602)":{tag:"(300A,0602)",vr:"US",name:"ReferencedDefinedDeviceIndex",vm:"1",version:"DICOM"},"(300A,0603)":{tag:"(300A,0603)",vr:"US",name:"RadiationDoseIdentificationIndex",vm:"1",version:"DICOM"},"(300A,0604)":{tag:"(300A,0604)",vr:"US",name:"NumberOfRTControlPoints",vm:"1",version:"DICOM"},"(300A,0605)":{tag:"(300A,0605)",vr:"US",name:"ReferencedRadiationGenerationModeIndex",vm:"1",version:"DICOM"},"(300A,0606)":{tag:"(300A,0606)",vr:"US",name:"TreatmentPositionIndex",vm:"1",version:"DICOM"},"(300A,0607)":{tag:"(300A,0607)",vr:"US",name:"ReferencedDeviceIndex",vm:"1",version:"DICOM"},"(300A,0608)":{tag:"(300A,0608)",vr:"LO",name:"TreatmentPositionGroupLabel",vm:"1",version:"DICOM"},"(300A,0609)":{tag:"(300A,0609)",vr:"UI",name:"TreatmentPositionGroupUID",vm:"1",version:"DICOM"},"(300A,060A)":{tag:"(300A,060A)",vr:"SQ",name:"TreatmentPositionGroupSequence",vm:"1",version:"DICOM"},"(300A,060B)":{tag:"(300A,060B)",vr:"US",name:"ReferencedTreatmentPositionIndex",vm:"1",version:"DICOM"},"(300A,060C)":{tag:"(300A,060C)",vr:"US",name:"ReferencedRadiationDoseIdentificationIndex",vm:"1",version:"DICOM"},"(300A,060D)":{tag:"(300A,060D)",vr:"FD",name:"RTAccessoryHolderWaterEquivalentThickness",vm:"1",version:"DICOM"},"(300A,060E)":{tag:"(300A,060E)",vr:"US",name:"ReferencedRTAccessoryHolderDeviceIndex",vm:"1",version:"DICOM"},"(300A,060F)":{tag:"(300A,060F)",vr:"CS",name:"RTAccessoryHolderSlotExistenceFlag",vm:"1",version:"DICOM"},"(300A,0610)":{tag:"(300A,0610)",vr:"SQ",name:"RTAccessoryHolderSlotSequence",vm:"1",version:"DICOM"},"(300A,0611)":{tag:"(300A,0611)",vr:"LO",name:"RTAccessoryHolderSlotID",vm:"1",version:"DICOM"},"(300A,0612)":{tag:"(300A,0612)",vr:"FD",name:"RTAccessoryHolderSlotDistance",vm:"1",version:"DICOM"},"(300A,0613)":{tag:"(300A,0613)",vr:"FD",name:"RTAccessorySlotDistance",vm:"1",version:"DICOM"},"(300A,0614)":{tag:"(300A,0614)",vr:"SQ",name:"RTAccessoryHolderDefinitionSequence",vm:"1",version:"DICOM"},"(300A,0615)":{tag:"(300A,0615)",vr:"LO",name:"RTAccessoryDeviceSlotID",vm:"1",version:"DICOM"},"(300A,0616)":{tag:"(300A,0616)",vr:"SQ",name:"RTRadiationSequence",vm:"1",version:"DICOM"},"(300A,0617)":{tag:"(300A,0617)",vr:"SQ",name:"RadiationDoseSequence",vm:"1",version:"DICOM"},"(300A,0618)":{tag:"(300A,0618)",vr:"SQ",name:"RadiationDoseIdentificationSequence",vm:"1",version:"DICOM"},"(300A,0619)":{tag:"(300A,0619)",vr:"LO",name:"RadiationDoseIdentificationLabel",vm:"1",version:"DICOM"},"(300A,061A)":{tag:"(300A,061A)",vr:"CS",name:"ReferenceDoseType",vm:"1",version:"DICOM"},"(300A,061B)":{tag:"(300A,061B)",vr:"CS",name:"PrimaryDoseValueIndicator",vm:"1",version:"DICOM"},"(300A,061C)":{tag:"(300A,061C)",vr:"SQ",name:"DoseValuesSequence",vm:"1",version:"DICOM"},"(300A,061D)":{tag:"(300A,061D)",vr:"CS",name:"DoseValuePurpose",vm:"1-n",version:"DICOM"},"(300A,061E)":{tag:"(300A,061E)",vr:"FD",name:"ReferenceDosePointCoordinates",vm:"3",version:"DICOM"},"(300A,061F)":{tag:"(300A,061F)",vr:"SQ",name:"RadiationDoseValuesParametersSequence",vm:"1",version:"DICOM"},"(300A,0620)":{tag:"(300A,0620)",vr:"SQ",name:"MetersetToDoseMappingSequence",vm:"1",version:"DICOM"},"(300A,0621)":{tag:"(300A,0621)",vr:"SQ",name:"ExpectedInVivoMeasurementValuesSequence",vm:"1",version:"DICOM"},"(300A,0622)":{tag:"(300A,0622)",vr:"US",name:"ExpectedInVivoMeasurementValueIndex",vm:"1",version:"DICOM"},"(300A,0623)":{tag:"(300A,0623)",vr:"LO",name:"RadiationDoseInVivoMeasurementLabel",vm:"1",version:"DICOM"},"(300A,0624)":{tag:"(300A,0624)",vr:"FD",name:"RadiationDoseCentralAxisDisplacement",vm:"2",version:"DICOM"},"(300A,0625)":{tag:"(300A,0625)",vr:"FD",name:"RadiationDoseValue",vm:"1",version:"DICOM"},"(300A,0626)":{tag:"(300A,0626)",vr:"FD",name:"RadiationDoseSourceToSkinDistance",vm:"1",version:"DICOM"},"(300A,0627)":{tag:"(300A,0627)",vr:"FD",name:"RadiationDoseMeasurementPointCoordinates",vm:"3",version:"DICOM"},"(300A,0628)":{tag:"(300A,0628)",vr:"FD",name:"RadiationDoseSourceToExternalContourDistance",vm:"1",version:"DICOM"},"(300A,0629)":{tag:"(300A,0629)",vr:"SQ",name:"RTToleranceSetSequence",vm:"1",version:"DICOM"},"(300A,062A)":{tag:"(300A,062A)",vr:"LO",name:"RTToleranceSetLabel",vm:"1",version:"DICOM"},"(300A,062B)":{tag:"(300A,062B)",vr:"SQ",name:"AttributeToleranceValuesSequence",vm:"1",version:"DICOM"},"(300A,062C)":{tag:"(300A,062C)",vr:"FD",name:"ToleranceValue",vm:"1",version:"DICOM"},"(300A,062D)":{tag:"(300A,062D)",vr:"SQ",name:"PatientSupportPositionToleranceSequence",vm:"1",version:"DICOM"},"(300A,062E)":{tag:"(300A,062E)",vr:"FD",name:"TreatmentTimeLimit",vm:"1",version:"DICOM"},"(300A,062F)":{tag:"(300A,062F)",vr:"SQ",name:"CArmPhotonElectronControlPointSequence",vm:"1",version:"DICOM"},"(300A,0630)":{tag:"(300A,0630)",vr:"SQ",name:"ReferencedRTRadiationSequence",vm:"1",version:"DICOM"},"(300A,0631)":{tag:"(300A,0631)",vr:"SQ",name:"ReferencedRTInstanceSequence",vm:"1",version:"DICOM"},"(300A,0632)":{tag:"(300A,0632)",vr:"SQ",name:"ReferencedRTPatientSetupSequence",vm:"1",version:"DICOM"},"(300A,0634)":{tag:"(300A,0634)",vr:"FD",name:"SourceToPatientSurfaceDistance",vm:"1",version:"DICOM"},"(300A,0635)":{tag:"(300A,0635)",vr:"SQ",name:"TreatmentMachineSpecialModeCodeSequence",vm:"1",version:"DICOM"},"(300A,0636)":{tag:"(300A,0636)",vr:"US",name:"IntendedNumberOfFractions",vm:"1",version:"DICOM"},"(300A,0637)":{tag:"(300A,0637)",vr:"CS",name:"RTRadiationSetIntent",vm:"1",version:"DICOM"},"(300A,0638)":{tag:"(300A,0638)",vr:"CS",name:"RTRadiationPhysicalAndGeometricContentDetailFlag",vm:"1",version:"DICOM"},"(300A,0639)":{tag:"(300A,0639)",vr:"CS",name:"RTRecordFlag",vm:"1",version:"DICOM"},"(300A,063A)":{tag:"(300A,063A)",vr:"SQ",name:"TreatmentDeviceIdentificationSequence",vm:"1",version:"DICOM"},"(300A,063B)":{tag:"(300A,063B)",vr:"SQ",name:"ReferencedRTPhysicianIntentSequence",vm:"1",version:"DICOM"},"(300A,063C)":{tag:"(300A,063C)",vr:"FD",name:"CumulativeMeterset",vm:"1",version:"DICOM"},"(300A,063D)":{tag:"(300A,063D)",vr:"FD",name:"DeliveryRate",vm:"1",version:"DICOM"},"(300A,063E)":{tag:"(300A,063E)",vr:"SQ",name:"DeliveryRateUnitSequence",vm:"1",version:"DICOM"},"(300A,063F)":{tag:"(300A,063F)",vr:"SQ",name:"TreatmentPositionSequence",vm:"1",version:"DICOM"},"(300A,0640)":{tag:"(300A,0640)",vr:"FD",name:"RadiationSourceAxisDistance",vm:"1",version:"DICOM"},"(300A,0641)":{tag:"(300A,0641)",vr:"US",name:"NumberOfRTBeamLimitingDevices",vm:"1",version:"DICOM"},"(300A,0642)":{tag:"(300A,0642)",vr:"FD",name:"RTBeamLimitingDeviceProximalDistance",vm:"1",version:"DICOM"},"(300A,0643)":{tag:"(300A,0643)",vr:"FD",name:"RTBeamLimitingDeviceDistalDistance",vm:"1",version:"DICOM"},"(300A,0644)":{tag:"(300A,0644)",vr:"SQ",name:"ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence",vm:"1",version:"DICOM"},"(300A,0645)":{tag:"(300A,0645)",vr:"FD",name:"BeamModifierOrientationAngle",vm:"1",version:"DICOM"},"(300A,0646)":{tag:"(300A,0646)",vr:"SQ",name:"FixedRTBeamDelimiterDeviceSequence",vm:"1",version:"DICOM"},"(300A,0647)":{tag:"(300A,0647)",vr:"SQ",name:"ParallelRTBeamDelimiterDeviceSequence",vm:"1",version:"DICOM"},"(300A,0648)":{tag:"(300A,0648)",vr:"US",name:"NumberOfParallelRTBeamDelimiters",vm:"1",version:"DICOM"},"(300A,0649)":{tag:"(300A,0649)",vr:"FD",name:"ParallelRTBeamDelimiterBoundaries",vm:"2-n",version:"DICOM"},"(300A,064A)":{tag:"(300A,064A)",vr:"FD",name:"ParallelRTBeamDelimiterPositions",vm:"2-n",version:"DICOM"},"(300A,064B)":{tag:"(300A,064B)",vr:"FD",name:"RTBeamLimitingDeviceOffset",vm:"2",version:"DICOM"},"(300A,064C)":{tag:"(300A,064C)",vr:"SQ",name:"RTBeamDelimiterGeometrySequence",vm:"1",version:"DICOM"},"(300A,064D)":{tag:"(300A,064D)",vr:"SQ",name:"RTBeamLimitingDeviceDefinitionSequence",vm:"1",version:"DICOM"},"(300A,064E)":{tag:"(300A,064E)",vr:"CS",name:"ParallelRTBeamDelimiterOpeningMode",vm:"1",version:"DICOM"},"(300A,064F)":{tag:"(300A,064F)",vr:"CS",name:"ParallelRTBeamDelimiterLeafMountingSide",vm:"1-n",version:"DICOM"},"(300A,0650)":{tag:"(300A,0650)",vr:"UI",name:"PatientSetupUID",vm:"1",version:"DICOM"},"(300A,0651)":{tag:"(300A,0651)",vr:"SQ",name:"WedgeDefinitionSequence",vm:"1",version:"DICOM"},"(300A,0652)":{tag:"(300A,0652)",vr:"FD",name:"RadiationBeamWedgeAngle",vm:"1",version:"DICOM"},"(300A,0653)":{tag:"(300A,0653)",vr:"FD",name:"RadiationBeamWedgeThinEdgeDistance",vm:"1",version:"DICOM"},"(300A,0654)":{tag:"(300A,0654)",vr:"FD",name:"RadiationBeamEffectiveWedgeAngle",vm:"1",version:"DICOM"},"(300A,0655)":{tag:"(300A,0655)",vr:"US",name:"NumberOfWedgePositions",vm:"1",version:"DICOM"},"(300A,0656)":{tag:"(300A,0656)",vr:"SQ",name:"RTBeamLimitingDeviceOpeningSequence",vm:"1",version:"DICOM"},"(300A,0657)":{tag:"(300A,0657)",vr:"US",name:"NumberOfRTBeamLimitingDeviceOpenings",vm:"1",version:"DICOM"},"(300A,0658)":{tag:"(300A,0658)",vr:"SQ",name:"RadiationDosimeterUnitSequence",vm:"1",version:"DICOM"},"(300A,0659)":{tag:"(300A,0659)",vr:"SQ",name:"RTDeviceDistanceReferenceLocationCodeSequence",vm:"1",version:"DICOM"},"(300A,065A)":{tag:"(300A,065A)",vr:"SQ",name:"RadiationDeviceConfigurationAndCommissioningKeySequence",vm:"1",version:"DICOM"},"(300A,065B)":{tag:"(300A,065B)",vr:"SQ",name:"PatientSupportPositionParameterSequence",vm:"1",version:"DICOM"},"(300A,065C)":{tag:"(300A,065C)",vr:"CS",name:"PatientSupportPositionSpecificationMethod",vm:"1",version:"DICOM"},"(300A,065D)":{tag:"(300A,065D)",vr:"SQ",name:"PatientSupportPositionDeviceParameterSequence",vm:"1",version:"DICOM"},"(300A,065E)":{tag:"(300A,065E)",vr:"US",name:"DeviceOrderIndex",vm:"1",version:"DICOM"},"(300A,065F)":{tag:"(300A,065F)",vr:"US",name:"PatientSupportPositionParameterOrderIndex",vm:"1",version:"DICOM"},"(300A,0660)":{tag:"(300A,0660)",vr:"SQ",name:"PatientSupportPositionDeviceToleranceSequence",vm:"1",version:"DICOM"},"(300A,0661)":{tag:"(300A,0661)",vr:"US",name:"PatientSupportPositionToleranceOrderIndex",vm:"1",version:"DICOM"},"(300A,0662)":{tag:"(300A,0662)",vr:"SQ",name:"CompensatorDefinitionSequence",vm:"1",version:"DICOM"},"(300A,0663)":{tag:"(300A,0663)",vr:"CS",name:"CompensatorMapOrientation",vm:"1",version:"DICOM"},"(300A,0664)":{tag:"(300A,0664)",vr:"OF",name:"CompensatorProximalThicknessMap",vm:"1",version:"DICOM"},"(300A,0665)":{tag:"(300A,0665)",vr:"OF",name:"CompensatorDistalThicknessMap",vm:"1",version:"DICOM"},"(300A,0666)":{tag:"(300A,0666)",vr:"FD",name:"CompensatorBasePlaneOffset",vm:"1",version:"DICOM"},"(300A,0667)":{tag:"(300A,0667)",vr:"SQ",name:"CompensatorShapeFabricationCodeSequence",vm:"1",version:"DICOM"},"(300A,0668)":{tag:"(300A,0668)",vr:"SQ",name:"CompensatorShapeSequence",vm:"1",version:"DICOM"},"(300A,0669)":{tag:"(300A,0669)",vr:"FD",name:"RadiationBeamCompensatorMillingToolDiameter",vm:"1",version:"DICOM"},"(300A,066A)":{tag:"(300A,066A)",vr:"SQ",name:"BlockDefinitionSequence",vm:"1",version:"DICOM"},"(300A,066B)":{tag:"(300A,066B)",vr:"OF",name:"BlockEdgeData",vm:"1",version:"DICOM"},"(300A,066C)":{tag:"(300A,066C)",vr:"CS",name:"BlockOrientation",vm:"1",version:"DICOM"},"(300A,066D)":{tag:"(300A,066D)",vr:"FD",name:"RadiationBeamBlockThickness",vm:"1",version:"DICOM"},"(300A,066E)":{tag:"(300A,066E)",vr:"FD",name:"RadiationBeamBlockSlabThickness",vm:"1",version:"DICOM"},"(300A,066F)":{tag:"(300A,066F)",vr:"SQ",name:"BlockEdgeDataSequence",vm:"1",version:"DICOM"},"(300A,0670)":{tag:"(300A,0670)",vr:"US",name:"NumberOfRTAccessoryHolders",vm:"1",version:"DICOM"},"(300A,0671)":{tag:"(300A,0671)",vr:"SQ",name:"GeneralAccessoryDefinitionSequence",vm:"1",version:"DICOM"},"(300A,0672)":{tag:"(300A,0672)",vr:"US",name:"NumberOfGeneralAccessories",vm:"1",version:"DICOM"},"(300A,0673)":{tag:"(300A,0673)",vr:"SQ",name:"BolusDefinitionSequence",vm:"1",version:"DICOM"},"(300A,0674)":{tag:"(300A,0674)",vr:"US",name:"NumberOfBoluses",vm:"1",version:"DICOM"},"(300A,0675)":{tag:"(300A,0675)",vr:"UI",name:"EquipmentFrameOfReferenceUID",vm:"1",version:"DICOM"},"(300A,0676)":{tag:"(300A,0676)",vr:"ST",name:"EquipmentFrameOfReferenceDescription",vm:"1",version:"DICOM"},"(300A,0677)":{tag:"(300A,0677)",vr:"SQ",name:"EquipmentReferencePointCoordinatesSequence",vm:"1",version:"DICOM"},"(300A,0678)":{tag:"(300A,0678)",vr:"SQ",name:"EquipmentReferencePointCodeSequence",vm:"1",version:"DICOM"},"(300A,0679)":{tag:"(300A,0679)",vr:"FD",name:"RTBeamLimitingDeviceAngle",vm:"1",version:"DICOM"},"(300A,067A)":{tag:"(300A,067A)",vr:"FD",name:"SourceRollAngle",vm:"1",version:"DICOM"},"(300A,067B)":{tag:"(300A,067B)",vr:"SQ",name:"RadiationGenerationModeSequence",vm:"1",version:"DICOM"},"(300A,067C)":{tag:"(300A,067C)",vr:"SH",name:"RadiationGenerationModeLabel",vm:"1",version:"DICOM"},"(300A,067D)":{tag:"(300A,067D)",vr:"ST",name:"RadiationGenerationModeDescription",vm:"1",version:"DICOM"},"(300A,067E)":{tag:"(300A,067E)",vr:"SQ",name:"RadiationGenerationModeMachineCodeSequence",vm:"1",version:"DICOM"},"(300A,067F)":{tag:"(300A,067F)",vr:"SQ",name:"RadiationTypeCodeSequence",vm:"1",version:"DICOM"},"(300A,0680)":{tag:"(300A,0680)",vr:"DS",name:"NominalEnergy",vm:"1",version:"DICOM"},"(300A,0681)":{tag:"(300A,0681)",vr:"DS",name:"MinimumNominalEnergy",vm:"1",version:"DICOM"},"(300A,0682)":{tag:"(300A,0682)",vr:"DS",name:"MaximumNominalEnergy",vm:"1",version:"DICOM"},"(300A,0683)":{tag:"(300A,0683)",vr:"SQ",name:"RadiationFluenceModifierCodeSequence",vm:"1",version:"DICOM"},"(300A,0684)":{tag:"(300A,0684)",vr:"SQ",name:"EnergyUnitCodeSequence",vm:"1",version:"DICOM"},"(300A,0685)":{tag:"(300A,0685)",vr:"US",name:"NumberOfRadiationGenerationModes",vm:"1",version:"DICOM"},"(300A,0686)":{tag:"(300A,0686)",vr:"SQ",name:"PatientSupportDevicesSequence",vm:"1",version:"DICOM"},"(300A,0687)":{tag:"(300A,0687)",vr:"US",name:"NumberOfPatientSupportDevices",vm:"1",version:"DICOM"},"(300A,0688)":{tag:"(300A,0688)",vr:"FD",name:"RTBeamModifierDefinitionDistance",vm:"1",version:"DICOM"},"(300A,0689)":{tag:"(300A,0689)",vr:"SQ",name:"BeamAreaLimitSequence",vm:"1",version:"DICOM"},"(300A,068A)":{tag:"(300A,068A)",vr:"SQ",name:"ReferencedRTPrescriptionSequence",vm:"1",version:"DICOM"},"(300A,0700)":{tag:"(300A,0700)",vr:"UI",name:"TreatmentSessionUID",vm:"1",version:"DICOM"},"(300A,0701)":{tag:"(300A,0701)",vr:"CS",name:"RTRadiationUsage",vm:"1",version:"DICOM"},"(300A,0702)":{tag:"(300A,0702)",vr:"SQ",name:"ReferencedRTRadiationSetSequence",vm:"1",version:"DICOM"},"(300A,0703)":{tag:"(300A,0703)",vr:"SQ",name:"ReferencedRTRadiationRecordSequence",vm:"1",version:"DICOM"},"(300A,0704)":{tag:"(300A,0704)",vr:"US",name:"RTRadiationSetDeliveryNumber",vm:"1",version:"DICOM"},"(300A,0705)":{tag:"(300A,0705)",vr:"US",name:"ClinicalFractionNumber",vm:"1",version:"DICOM"},"(300A,0706)":{tag:"(300A,0706)",vr:"CS",name:"RTTreatmentFractionCompletionStatus",vm:"1",version:"DICOM"},"(300A,0707)":{tag:"(300A,0707)",vr:"CS",name:"RTRadiationSetUsage",vm:"1",version:"DICOM"},"(300A,0708)":{tag:"(300A,0708)",vr:"CS",name:"TreatmentDeliveryContinuationFlag",vm:"1",version:"DICOM"},"(300A,0709)":{tag:"(300A,0709)",vr:"CS",name:"TreatmentRecordContentOrigin",vm:"1",version:"DICOM"},"(300A,0714)":{tag:"(300A,0714)",vr:"CS",name:"RTTreatmentTerminationStatus",vm:"1",version:"DICOM"},"(300A,0715)":{tag:"(300A,0715)",vr:"SQ",name:"RTTreatmentTerminationReasonCodeSequence",vm:"1",version:"DICOM"},"(300A,0716)":{tag:"(300A,0716)",vr:"SQ",name:"MachineSpecificTreatmentTerminationCodeSequence",vm:"1",version:"DICOM"},"(300A,0722)":{tag:"(300A,0722)",vr:"SQ",name:"RTRadiationSalvageRecordControlPointSequence",vm:"1",version:"DICOM"},"(300A,0723)":{tag:"(300A,0723)",vr:"CS",name:"StartingMetersetValueKnownFlag",vm:"1",version:"DICOM"},"(300A,0730)":{tag:"(300A,0730)",vr:"ST",name:"TreatmentTerminationDescription",vm:"1",version:"DICOM"},"(300A,0731)":{tag:"(300A,0731)",vr:"SQ",name:"TreatmentToleranceViolationSequence",vm:"1",version:"DICOM"},"(300A,0732)":{tag:"(300A,0732)",vr:"CS",name:"TreatmentToleranceViolationCategory",vm:"1",version:"DICOM"},"(300A,0733)":{tag:"(300A,0733)",vr:"SQ",name:"TreatmentToleranceViolationAttributeSequence",vm:"1",version:"DICOM"},"(300A,0734)":{tag:"(300A,0734)",vr:"ST",name:"TreatmentToleranceViolationDescription",vm:"1",version:"DICOM"},"(300A,0735)":{tag:"(300A,0735)",vr:"ST",name:"TreatmentToleranceViolationIdentification",vm:"1",version:"DICOM"},"(300A,0736)":{tag:"(300A,0736)",vr:"DT",name:"TreatmentToleranceViolationDateTime",vm:"1",version:"DICOM"},"(300A,073A)":{tag:"(300A,073A)",vr:"DT",name:"RecordedRTControlPointDateTime",vm:"1",version:"DICOM"},"(300A,073B)":{tag:"(300A,073B)",vr:"US",name:"ReferencedRadiationRTControlPointIndex",vm:"1",version:"DICOM"},"(300A,073E)":{tag:"(300A,073E)",vr:"SQ",name:"AlternateValueSequence",vm:"1",version:"DICOM"},"(300A,073F)":{tag:"(300A,073F)",vr:"SQ",name:"ConfirmationSequence",vm:"1",version:"DICOM"},"(300A,0740)":{tag:"(300A,0740)",vr:"SQ",name:"InterlockSequence",vm:"1",version:"DICOM"},"(300A,0741)":{tag:"(300A,0741)",vr:"DT",name:"InterlockDateTime",vm:"1",version:"DICOM"},"(300A,0742)":{tag:"(300A,0742)",vr:"ST",name:"InterlockDescription",vm:"1",version:"DICOM"},"(300A,0743)":{tag:"(300A,0743)",vr:"SQ",name:"InterlockOriginatingDeviceSequence",vm:"1",version:"DICOM"},"(300A,0744)":{tag:"(300A,0744)",vr:"SQ",name:"InterlockCodeSequence",vm:"1",version:"DICOM"},"(300A,0745)":{tag:"(300A,0745)",vr:"SQ",name:"InterlockResolutionCodeSequence",vm:"1",version:"DICOM"},"(300A,0746)":{tag:"(300A,0746)",vr:"SQ",name:"InterlockResolutionUserSequence",vm:"1",version:"DICOM"},"(300A,0760)":{tag:"(300A,0760)",vr:"DT",name:"OverrideDateTime",vm:"1",version:"DICOM"},"(300A,0761)":{tag:"(300A,0761)",vr:"SQ",name:"TreatmentToleranceViolationTypeCodeSequence",vm:"1",version:"DICOM"},"(300A,0762)":{tag:"(300A,0762)",vr:"SQ",name:"TreatmentToleranceViolationCauseCodeSequence",vm:"1",version:"DICOM"},"(300A,0772)":{tag:"(300A,0772)",vr:"SQ",name:"MeasuredMetersetToDoseMappingSequence",vm:"1",version:"DICOM"},"(300A,0773)":{tag:"(300A,0773)",vr:"US",name:"ReferencedExpectedInVivoMeasurementValueIndex",vm:"1",version:"DICOM"},"(300A,0774)":{tag:"(300A,0774)",vr:"SQ",name:"DoseMeasurementDeviceCodeSequence",vm:"1",version:"DICOM"},"(300A,0780)":{tag:"(300A,0780)",vr:"SQ",name:"AdditionalParameterRecordingInstanceSequence",vm:"1",version:"DICOM"},"(300A,0783)":{tag:"(300A,0783)",vr:"ST",name:"InterlockOriginDescription",vm:"1",version:"DICOM"},"(300C,0002)":{tag:"(300C,0002)",vr:"SQ",name:"ReferencedRTPlanSequence",vm:"1",version:"DICOM"},"(300C,0004)":{tag:"(300C,0004)",vr:"SQ",name:"ReferencedBeamSequence",vm:"1",version:"DICOM"},"(300C,0006)":{tag:"(300C,0006)",vr:"IS",name:"ReferencedBeamNumber",vm:"1",version:"DICOM"},"(300C,0007)":{tag:"(300C,0007)",vr:"IS",name:"ReferencedReferenceImageNumber",vm:"1",version:"DICOM"},"(300C,0008)":{tag:"(300C,0008)",vr:"DS",name:"StartCumulativeMetersetWeight",vm:"1",version:"DICOM"},"(300C,0009)":{tag:"(300C,0009)",vr:"DS",name:"EndCumulativeMetersetWeight",vm:"1",version:"DICOM"},"(300C,000A)":{tag:"(300C,000A)",vr:"SQ",name:"ReferencedBrachyApplicationSetupSequence",vm:"1",version:"DICOM"},"(300C,000C)":{tag:"(300C,000C)",vr:"IS",name:"ReferencedBrachyApplicationSetupNumber",vm:"1",version:"DICOM"},"(300C,000E)":{tag:"(300C,000E)",vr:"IS",name:"ReferencedSourceNumber",vm:"1",version:"DICOM"},"(300C,0020)":{tag:"(300C,0020)",vr:"SQ",name:"ReferencedFractionGroupSequence",vm:"1",version:"DICOM"},"(300C,0022)":{tag:"(300C,0022)",vr:"IS",name:"ReferencedFractionGroupNumber",vm:"1",version:"DICOM"},"(300C,0040)":{tag:"(300C,0040)",vr:"SQ",name:"ReferencedVerificationImageSequence",vm:"1",version:"DICOM"},"(300C,0042)":{tag:"(300C,0042)",vr:"SQ",name:"ReferencedReferenceImageSequence",vm:"1",version:"DICOM"},"(300C,0050)":{tag:"(300C,0050)",vr:"SQ",name:"ReferencedDoseReferenceSequence",vm:"1",version:"DICOM"},"(300C,0051)":{tag:"(300C,0051)",vr:"IS",name:"ReferencedDoseReferenceNumber",vm:"1",version:"DICOM"},"(300C,0055)":{tag:"(300C,0055)",vr:"SQ",name:"BrachyReferencedDoseReferenceSequence",vm:"1",version:"DICOM"},"(300C,0060)":{tag:"(300C,0060)",vr:"SQ",name:"ReferencedStructureSetSequence",vm:"1",version:"DICOM"},"(300C,006A)":{tag:"(300C,006A)",vr:"IS",name:"ReferencedPatientSetupNumber",vm:"1",version:"DICOM"},"(300C,0080)":{tag:"(300C,0080)",vr:"SQ",name:"ReferencedDoseSequence",vm:"1",version:"DICOM"},"(300C,00A0)":{tag:"(300C,00A0)",vr:"IS",name:"ReferencedToleranceTableNumber",vm:"1",version:"DICOM"},"(300C,00B0)":{tag:"(300C,00B0)",vr:"SQ",name:"ReferencedBolusSequence",vm:"1",version:"DICOM"},"(300C,00C0)":{tag:"(300C,00C0)",vr:"IS",name:"ReferencedWedgeNumber",vm:"1",version:"DICOM"},"(300C,00D0)":{tag:"(300C,00D0)",vr:"IS",name:"ReferencedCompensatorNumber",vm:"1",version:"DICOM"},"(300C,00E0)":{tag:"(300C,00E0)",vr:"IS",name:"ReferencedBlockNumber",vm:"1",version:"DICOM"},"(300C,00F0)":{tag:"(300C,00F0)",vr:"IS",name:"ReferencedControlPointIndex",vm:"1",version:"DICOM"},"(300C,00F2)":{tag:"(300C,00F2)",vr:"SQ",name:"ReferencedControlPointSequence",vm:"1",version:"DICOM"},"(300C,00F4)":{tag:"(300C,00F4)",vr:"IS",name:"ReferencedStartControlPointIndex",vm:"1",version:"DICOM"},"(300C,00F6)":{tag:"(300C,00F6)",vr:"IS",name:"ReferencedStopControlPointIndex",vm:"1",version:"DICOM"},"(300C,0100)":{tag:"(300C,0100)",vr:"IS",name:"ReferencedRangeShifterNumber",vm:"1",version:"DICOM"},"(300C,0102)":{tag:"(300C,0102)",vr:"IS",name:"ReferencedLateralSpreadingDeviceNumber",vm:"1",version:"DICOM"},"(300C,0104)":{tag:"(300C,0104)",vr:"IS",name:"ReferencedRangeModulatorNumber",vm:"1",version:"DICOM"},"(300C,0111)":{tag:"(300C,0111)",vr:"SQ",name:"OmittedBeamTaskSequence",vm:"1",version:"DICOM"},"(300C,0112)":{tag:"(300C,0112)",vr:"CS",name:"ReasonForOmission",vm:"1",version:"DICOM"},"(300C,0113)":{tag:"(300C,0113)",vr:"LO",name:"ReasonForOmissionDescription",vm:"1",version:"DICOM"},"(300E,0002)":{tag:"(300E,0002)",vr:"CS",name:"ApprovalStatus",vm:"1",version:"DICOM"},"(300E,0004)":{tag:"(300E,0004)",vr:"DA",name:"ReviewDate",vm:"1",version:"DICOM"},"(300E,0005)":{tag:"(300E,0005)",vr:"TM",name:"ReviewTime",vm:"1",version:"DICOM"},"(300E,0008)":{tag:"(300E,0008)",vr:"PN",name:"ReviewerName",vm:"1",version:"DICOM"},"(4010,0001)":{tag:"(4010,0001)",vr:"CS",name:"LowEnergyDetectors",vm:"1",version:"DICOM/DICOS"},"(4010,0002)":{tag:"(4010,0002)",vr:"CS",name:"HighEnergyDetectors",vm:"1",version:"DICOM/DICOS"},"(4010,0004)":{tag:"(4010,0004)",vr:"SQ",name:"DetectorGeometrySequence",vm:"1",version:"DICOM/DICOS"},"(4010,1001)":{tag:"(4010,1001)",vr:"SQ",name:"ThreatROIVoxelSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1004)":{tag:"(4010,1004)",vr:"FL",name:"ThreatROIBase",vm:"3",version:"DICOM/DICOS"},"(4010,1005)":{tag:"(4010,1005)",vr:"FL",name:"ThreatROIExtents",vm:"3",version:"DICOM/DICOS"},"(4010,1006)":{tag:"(4010,1006)",vr:"OB",name:"ThreatROIBitmap",vm:"1",version:"DICOM/DICOS"},"(4010,1007)":{tag:"(4010,1007)",vr:"SH",name:"RouteSegmentID",vm:"1",version:"DICOM/DICOS"},"(4010,1008)":{tag:"(4010,1008)",vr:"CS",name:"GantryType",vm:"1",version:"DICOM/DICOS"},"(4010,1009)":{tag:"(4010,1009)",vr:"CS",name:"OOIOwnerType",vm:"1",version:"DICOM/DICOS"},"(4010,100A)":{tag:"(4010,100A)",vr:"SQ",name:"RouteSegmentSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1010)":{tag:"(4010,1010)",vr:"US",name:"PotentialThreatObjectID",vm:"1",version:"DICOM/DICOS"},"(4010,1011)":{tag:"(4010,1011)",vr:"SQ",name:"ThreatSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1012)":{tag:"(4010,1012)",vr:"CS",name:"ThreatCategory",vm:"1",version:"DICOM/DICOS"},"(4010,1013)":{tag:"(4010,1013)",vr:"LT",name:"ThreatCategoryDescription",vm:"1",version:"DICOM/DICOS"},"(4010,1014)":{tag:"(4010,1014)",vr:"CS",name:"ATDAbilityAssessment",vm:"1",version:"DICOM/DICOS"},"(4010,1015)":{tag:"(4010,1015)",vr:"CS",name:"ATDAssessmentFlag",vm:"1",version:"DICOM/DICOS"},"(4010,1016)":{tag:"(4010,1016)",vr:"FL",name:"ATDAssessmentProbability",vm:"1",version:"DICOM/DICOS"},"(4010,1017)":{tag:"(4010,1017)",vr:"FL",name:"Mass",vm:"1",version:"DICOM/DICOS"},"(4010,1018)":{tag:"(4010,1018)",vr:"FL",name:"Density",vm:"1",version:"DICOM/DICOS"},"(4010,1019)":{tag:"(4010,1019)",vr:"FL",name:"ZEffective",vm:"1",version:"DICOM/DICOS"},"(4010,101A)":{tag:"(4010,101A)",vr:"SH",name:"BoardingPassID",vm:"1",version:"DICOM/DICOS"},"(4010,101B)":{tag:"(4010,101B)",vr:"FL",name:"CenterOfMass",vm:"3",version:"DICOM/DICOS"},"(4010,101C)":{tag:"(4010,101C)",vr:"FL",name:"CenterOfPTO",vm:"3",version:"DICOM/DICOS"},"(4010,101D)":{tag:"(4010,101D)",vr:"FL",name:"BoundingPolygon",vm:"6-n",version:"DICOM/DICOS"},"(4010,101E)":{tag:"(4010,101E)",vr:"SH",name:"RouteSegmentStartLocationID",vm:"1",version:"DICOM/DICOS"},"(4010,101F)":{tag:"(4010,101F)",vr:"SH",name:"RouteSegmentEndLocationID",vm:"1",version:"DICOM/DICOS"},"(4010,1020)":{tag:"(4010,1020)",vr:"CS",name:"RouteSegmentLocationIDType",vm:"1",version:"DICOM/DICOS"},"(4010,1021)":{tag:"(4010,1021)",vr:"CS",name:"AbortReason",vm:"1-n",version:"DICOM/DICOS"},"(4010,1023)":{tag:"(4010,1023)",vr:"FL",name:"VolumeOfPTO",vm:"1",version:"DICOM/DICOS"},"(4010,1024)":{tag:"(4010,1024)",vr:"CS",name:"AbortFlag",vm:"1",version:"DICOM/DICOS"},"(4010,1025)":{tag:"(4010,1025)",vr:"DT",name:"RouteSegmentStartTime",vm:"1",version:"DICOM/DICOS"},"(4010,1026)":{tag:"(4010,1026)",vr:"DT",name:"RouteSegmentEndTime",vm:"1",version:"DICOM/DICOS"},"(4010,1027)":{tag:"(4010,1027)",vr:"CS",name:"TDRType",vm:"1",version:"DICOM/DICOS"},"(4010,1028)":{tag:"(4010,1028)",vr:"CS",name:"InternationalRouteSegment",vm:"1",version:"DICOM/DICOS"},"(4010,1029)":{tag:"(4010,1029)",vr:"LO",name:"ThreatDetectionAlgorithmandVersion",vm:"1-n",version:"DICOM/DICOS"},"(4010,102A)":{tag:"(4010,102A)",vr:"SH",name:"AssignedLocation",vm:"1",version:"DICOM/DICOS"},"(4010,102B)":{tag:"(4010,102B)",vr:"DT",name:"AlarmDecisionTime",vm:"1",version:"DICOM/DICOS"},"(4010,1031)":{tag:"(4010,1031)",vr:"CS",name:"AlarmDecision",vm:"1",version:"DICOM/DICOS"},"(4010,1033)":{tag:"(4010,1033)",vr:"US",name:"NumberOfTotalObjects",vm:"1",version:"DICOM/DICOS"},"(4010,1034)":{tag:"(4010,1034)",vr:"US",name:"NumberOfAlarmObjects",vm:"1",version:"DICOM/DICOS"},"(4010,1037)":{tag:"(4010,1037)",vr:"SQ",name:"PTORepresentationSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1038)":{tag:"(4010,1038)",vr:"SQ",name:"ATDAssessmentSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1039)":{tag:"(4010,1039)",vr:"CS",name:"TIPType",vm:"1",version:"DICOM/DICOS"},"(4010,103A)":{tag:"(4010,103A)",vr:"CS",name:"DICOSVersion",vm:"1",version:"DICOM/DICOS"},"(4010,1041)":{tag:"(4010,1041)",vr:"DT",name:"OOIOwnerCreationTime",vm:"1",version:"DICOM/DICOS"},"(4010,1042)":{tag:"(4010,1042)",vr:"CS",name:"OOIType",vm:"1",version:"DICOM/DICOS"},"(4010,1043)":{tag:"(4010,1043)",vr:"FL",name:"OOISize",vm:"3",version:"DICOM/DICOS"},"(4010,1044)":{tag:"(4010,1044)",vr:"CS",name:"AcquisitionStatus",vm:"1",version:"DICOM/DICOS"},"(4010,1045)":{tag:"(4010,1045)",vr:"SQ",name:"BasisMaterialsCodeSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1046)":{tag:"(4010,1046)",vr:"CS",name:"PhantomType",vm:"1",version:"DICOM/DICOS"},"(4010,1047)":{tag:"(4010,1047)",vr:"SQ",name:"OOIOwnerSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1048)":{tag:"(4010,1048)",vr:"CS",name:"ScanType",vm:"1",version:"DICOM/DICOS"},"(4010,1051)":{tag:"(4010,1051)",vr:"LO",name:"ItineraryID",vm:"1",version:"DICOM/DICOS"},"(4010,1052)":{tag:"(4010,1052)",vr:"SH",name:"ItineraryIDType",vm:"1",version:"DICOM/DICOS"},"(4010,1053)":{tag:"(4010,1053)",vr:"LO",name:"ItineraryIDAssigningAuthority",vm:"1",version:"DICOM/DICOS"},"(4010,1054)":{tag:"(4010,1054)",vr:"SH",name:"RouteID",vm:"1",version:"DICOM/DICOS"},"(4010,1055)":{tag:"(4010,1055)",vr:"SH",name:"RouteIDAssigningAuthority",vm:"1",version:"DICOM/DICOS"},"(4010,1056)":{tag:"(4010,1056)",vr:"CS",name:"InboundArrivalType",vm:"1",version:"DICOM/DICOS"},"(4010,1058)":{tag:"(4010,1058)",vr:"SH",name:"CarrierID",vm:"1",version:"DICOM/DICOS"},"(4010,1059)":{tag:"(4010,1059)",vr:"CS",name:"CarrierIDAssigningAuthority",vm:"1",version:"DICOM/DICOS"},"(4010,1060)":{tag:"(4010,1060)",vr:"FL",name:"SourceOrientation",vm:"3",version:"DICOM/DICOS"},"(4010,1061)":{tag:"(4010,1061)",vr:"FL",name:"SourcePosition",vm:"3",version:"DICOM/DICOS"},"(4010,1062)":{tag:"(4010,1062)",vr:"FL",name:"BeltHeight",vm:"1",version:"DICOM/DICOS"},"(4010,1064)":{tag:"(4010,1064)",vr:"SQ",name:"AlgorithmRoutingCodeSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1067)":{tag:"(4010,1067)",vr:"CS",name:"TransportClassification",vm:"1",version:"DICOM/DICOS"},"(4010,1068)":{tag:"(4010,1068)",vr:"LT",name:"OOITypeDescriptor",vm:"1",version:"DICOM/DICOS"},"(4010,1069)":{tag:"(4010,1069)",vr:"FL",name:"TotalProcessingTime",vm:"1",version:"DICOM/DICOS"},"(4010,106C)":{tag:"(4010,106C)",vr:"OB",name:"DetectorCalibrationData",vm:"1",version:"DICOM/DICOS"},"(4010,106D)":{tag:"(4010,106D)",vr:"CS",name:"AdditionalScreeningPerformed",vm:"1",version:"DICOM/DICOS"},"(4010,106E)":{tag:"(4010,106E)",vr:"CS",name:"AdditionalInspectionSelectionCriteria",vm:"1",version:"DICOM/DICOS"},"(4010,106F)":{tag:"(4010,106F)",vr:"SQ",name:"AdditionalInspectionMethodSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1070)":{tag:"(4010,1070)",vr:"CS",name:"AITDeviceType",vm:"1",version:"DICOM/DICOS"},"(4010,1071)":{tag:"(4010,1071)",vr:"SQ",name:"QRMeasurementsSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1072)":{tag:"(4010,1072)",vr:"SQ",name:"TargetMaterialSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1073)":{tag:"(4010,1073)",vr:"FD",name:"SNRThreshold",vm:"1",version:"DICOM/DICOS"},"(4010,1075)":{tag:"(4010,1075)",vr:"DS",name:"ImageScaleRepresentation",vm:"1",version:"DICOM/DICOS"},"(4010,1076)":{tag:"(4010,1076)",vr:"SQ",name:"ReferencedPTOSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1077)":{tag:"(4010,1077)",vr:"SQ",name:"ReferencedTDRInstanceSequence",vm:"1",version:"DICOM/DICOS"},"(4010,1078)":{tag:"(4010,1078)",vr:"ST",name:"PTOLocationDescription",vm:"1",version:"DICOM/DICOS"},"(4010,1079)":{tag:"(4010,1079)",vr:"SQ",name:"AnomalyLocatorIndicatorSequence",vm:"1",version:"DICOM/DICOS"},"(4010,107A)":{tag:"(4010,107A)",vr:"FL",name:"AnomalyLocatorIndicator",vm:"3",version:"DICOM/DICOS"},"(4010,107B)":{tag:"(4010,107B)",vr:"SQ",name:"PTORegionSequence",vm:"1",version:"DICOM/DICOS"},"(4010,107C)":{tag:"(4010,107C)",vr:"CS",name:"InspectionSelectionCriteria",vm:"1",version:"DICOM/DICOS"},"(4010,107D)":{tag:"(4010,107D)",vr:"SQ",name:"SecondaryInspectionMethodSequence",vm:"1",version:"DICOM/DICOS"},"(4010,107E)":{tag:"(4010,107E)",vr:"DS",name:"PRCSToRCSOrientation",vm:"6",version:"DICOM/DICOS"},"(3010,0001)":{tag:"(3010,0001)",vr:"SQ",name:"RadiobiologicalDoseEffectSequence",vm:"1",version:"DICOM"},"(3010,0002)":{tag:"(3010,0002)",vr:"CS",name:"RadiobiologicalDoseEffectFlag",vm:"1",version:"DICOM"},"(3010,0003)":{tag:"(3010,0003)",vr:"SQ",name:"EffectiveDoseCalculationMethodCategoryCodeSequence",vm:"1",version:"DICOM"},"(3010,0004)":{tag:"(3010,0004)",vr:"SQ",name:"EffectiveDoseCalculationMethodCodeSequence",vm:"1",version:"DICOM"},"(3010,0005)":{tag:"(3010,0005)",vr:"LO",name:"EffectiveDoseCalculationMethodDescription",vm:"1",version:"DICOM"},"(3010,0006)":{tag:"(3010,0006)",vr:"UI",name:"ConceptualVolumeUID",vm:"1",version:"DICOM"},"(3010,0007)":{tag:"(3010,0007)",vr:"SQ",name:"OriginatingSOPInstanceReferenceSequence",vm:"1",version:"DICOM"},"(3010,0008)":{tag:"(3010,0008)",vr:"SQ",name:"ConceptualVolumeConstituentSequence",vm:"1",version:"DICOM"},"(3010,0009)":{tag:"(3010,0009)",vr:"SQ",name:"EquivalentConceptualVolumeInstanceReferenceSequence",vm:"1",version:"DICOM"},"(3010,000A)":{tag:"(3010,000A)",vr:"SQ",name:"EquivalentConceptualVolumesSequence",vm:"1",version:"DICOM"},"(3010,000B)":{tag:"(3010,000B)",vr:"UI",name:"ReferencedConceptualVolumeUID",vm:"1",version:"DICOM"},"(3010,000C)":{tag:"(3010,000C)",vr:"UT",name:"ConceptualVolumeCombinationExpression",vm:"1",version:"DICOM"},"(3010,000D)":{tag:"(3010,000D)",vr:"US",name:"ConceptualVolumeConstituentIndex",vm:"1",version:"DICOM"},"(3010,000E)":{tag:"(3010,000E)",vr:"CS",name:"ConceptualVolumeCombinationFlag",vm:"1",version:"DICOM"},"(3010,000F)":{tag:"(3010,000F)",vr:"ST",name:"ConceptualVolumeCombinationDescription",vm:"1",version:"DICOM"},"(3010,0010)":{tag:"(3010,0010)",vr:"CS",name:"ConceptualVolumeSegmentationDefinedFlag",vm:"1",version:"DICOM"},"(3010,0011)":{tag:"(3010,0011)",vr:"SQ",name:"ConceptualVolumeSegmentationReferenceSequence",vm:"1",version:"DICOM"},"(3010,0012)":{tag:"(3010,0012)",vr:"SQ",name:"ConceptualVolumeConstituentSegmentationReferenceSequence",vm:"1",version:"DICOM"},"(3010,0013)":{tag:"(3010,0013)",vr:"UI",name:"ConstituentConceptualVolumeUID",vm:"1",version:"DICOM"},"(3010,0014)":{tag:"(3010,0014)",vr:"SQ",name:"DerivationConceptualVolumeSequence",vm:"1",version:"DICOM"},"(3010,0015)":{tag:"(3010,0015)",vr:"UI",name:"SourceConceptualVolumeUID",vm:"1",version:"DICOM"},"(3010,0016)":{tag:"(3010,0016)",vr:"SQ",name:"ConceptualVolumeDerivationAlgorithmSequence",vm:"1",version:"DICOM"},"(3010,0017)":{tag:"(3010,0017)",vr:"ST",name:"ConceptualVolumeDescription",vm:"1",version:"DICOM"},"(3010,0018)":{tag:"(3010,0018)",vr:"SQ",name:"SourceConceptualVolumeSequence",vm:"1",version:"DICOM"},"(3010,0019)":{tag:"(3010,0019)",vr:"SQ",name:"AuthorIdentificationSequence",vm:"1",version:"DICOM"},"(3010,001A)":{tag:"(3010,001A)",vr:"LO",name:"ManufacturerModelVersion",vm:"1",version:"DICOM"},"(3010,001B)":{tag:"(3010,001B)",vr:"UC",name:"DeviceAlternateIdentifier",vm:"1",version:"DICOM"},"(3010,001C)":{tag:"(3010,001C)",vr:"CS",name:"DeviceAlternateIdentifierType",vm:"1",version:"DICOM"},"(3010,001D)":{tag:"(3010,001D)",vr:"LT",name:"DeviceAlternateIdentifierFormat",vm:"1",version:"DICOM"},"(3010,001E)":{tag:"(3010,001E)",vr:"LO",name:"SegmentationCreationTemplateLabel",vm:"1",version:"DICOM"},"(3010,001F)":{tag:"(3010,001F)",vr:"UI",name:"SegmentationTemplateUID",vm:"1",version:"DICOM"},"(3010,0020)":{tag:"(3010,0020)",vr:"US",name:"ReferencedSegmentReferenceIndex",vm:"1",version:"DICOM"},"(3010,0021)":{tag:"(3010,0021)",vr:"SQ",name:"SegmentReferenceSequence",vm:"1",version:"DICOM"},"(3010,0022)":{tag:"(3010,0022)",vr:"US",name:"SegmentReferenceIndex",vm:"1",version:"DICOM"},"(3010,0023)":{tag:"(3010,0023)",vr:"SQ",name:"DirectSegmentReferenceSequence",vm:"1",version:"DICOM"},"(3010,0024)":{tag:"(3010,0024)",vr:"SQ",name:"CombinationSegmentReferenceSequence",vm:"1",version:"DICOM"},"(3010,0025)":{tag:"(3010,0025)",vr:"SQ",name:"ConceptualVolumeSequence",vm:"1",version:"DICOM"},"(3010,0026)":{tag:"(3010,0026)",vr:"SQ",name:"SegmentedRTAccessoryDeviceSequence",vm:"1",version:"DICOM"},"(3010,0027)":{tag:"(3010,0027)",vr:"SQ",name:"SegmentCharacteristicsSequence",vm:"1",version:"DICOM"},"(3010,0028)":{tag:"(3010,0028)",vr:"SQ",name:"RelatedSegmentCharacteristicsSequence",vm:"1",version:"DICOM"},"(3010,0029)":{tag:"(3010,0029)",vr:"US",name:"SegmentCharacteristicsPrecedence",vm:"1",version:"DICOM"},"(3010,002A)":{tag:"(3010,002A)",vr:"SQ",name:"RTSegmentAnnotationSequence",vm:"1",version:"DICOM"},"(3010,002B)":{tag:"(3010,002B)",vr:"SQ",name:"SegmentAnnotationCategoryCodeSequence",vm:"1",version:"DICOM"},"(3010,002C)":{tag:"(3010,002C)",vr:"SQ",name:"SegmentAnnotationTypeCodeSequence",vm:"1",version:"DICOM"},"(3010,002D)":{tag:"(3010,002D)",vr:"LO",name:"DeviceLabel",vm:"1",version:"DICOM"},"(3010,002E)":{tag:"(3010,002E)",vr:"SQ",name:"DeviceTypeCodeSequence",vm:"1",version:"DICOM"},"(3010,002F)":{tag:"(3010,002F)",vr:"SQ",name:"SegmentAnnotationTypeModifierCodeSequence",vm:"1",version:"DICOM"},"(3010,0030)":{tag:"(3010,0030)",vr:"SQ",name:"PatientEquipmentRelationshipCodeSequence",vm:"1",version:"DICOM"},"(3010,0031)":{tag:"(3010,0031)",vr:"UI",name:"ReferencedFiducialsUID",vm:"1",version:"DICOM"},"(3010,0032)":{tag:"(3010,0032)",vr:"SQ",name:"PatientTreatmentOrientationSequence",vm:"1",version:"DICOM"},"(3010,0033)":{tag:"(3010,0033)",vr:"SH",name:"UserContentLabel",vm:"1",version:"DICOM"},"(3010,0034)":{tag:"(3010,0034)",vr:"LO",name:"UserContentLongLabel",vm:"1",version:"DICOM"},"(3010,0035)":{tag:"(3010,0035)",vr:"SH",name:"EntityLabel",vm:"1",version:"DICOM"},"(3010,0036)":{tag:"(3010,0036)",vr:"LO",name:"EntityName",vm:"1",version:"DICOM"},"(3010,0037)":{tag:"(3010,0037)",vr:"ST",name:"EntityDescription",vm:"1",version:"DICOM"},"(3010,0038)":{tag:"(3010,0038)",vr:"LO",name:"EntityLongLabel",vm:"1",version:"DICOM"},"(3010,0039)":{tag:"(3010,0039)",vr:"US",name:"DeviceIndex",vm:"1",version:"DICOM"},"(3010,003A)":{tag:"(3010,003A)",vr:"US",name:"RTTreatmentPhaseIndex",vm:"1",version:"DICOM"},"(3010,003B)":{tag:"(3010,003B)",vr:"UI",name:"RTTreatmentPhaseUID",vm:"1",version:"DICOM"},"(3010,003C)":{tag:"(3010,003C)",vr:"US",name:"RTPrescriptionIndex",vm:"1",version:"DICOM"},"(3010,003D)":{tag:"(3010,003D)",vr:"US",name:"RTSegmentAnnotationIndex",vm:"1",version:"DICOM"},"(3010,003E)":{tag:"(3010,003E)",vr:"US",name:"BasisRTTreatmentPhaseIndex",vm:"1",version:"DICOM"},"(3010,003F)":{tag:"(3010,003F)",vr:"US",name:"RelatedRTTreatmentPhaseIndex",vm:"1",version:"DICOM"},"(3010,0040)":{tag:"(3010,0040)",vr:"US",name:"ReferencedRTTreatmentPhaseIndex",vm:"1",version:"DICOM"},"(3010,0041)":{tag:"(3010,0041)",vr:"US",name:"ReferencedRTPrescriptionIndex",vm:"1",version:"DICOM"},"(3010,0042)":{tag:"(3010,0042)",vr:"US",name:"ReferencedParentRTPrescriptionIndex",vm:"1",version:"DICOM"},"(3010,0043)":{tag:"(3010,0043)",vr:"ST",name:"ManufacturerDeviceIdentifier",vm:"1",version:"DICOM"},"(3010,0044)":{tag:"(3010,0044)",vr:"SQ",name:"InstanceLevelReferencedPerformedProcedureStepSequence",vm:"1",version:"DICOM"},"(3010,0045)":{tag:"(3010,0045)",vr:"CS",name:"RTTreatmentPhaseIntentPresenceFlag",vm:"1",version:"DICOM"},"(3010,0046)":{tag:"(3010,0046)",vr:"CS",name:"RadiotherapyTreatmentType",vm:"1",version:"DICOM"},"(3010,0047)":{tag:"(3010,0047)",vr:"CS",name:"TeletherapyRadiationType",vm:"1-n",version:"DICOM"},"(3010,0048)":{tag:"(3010,0048)",vr:"CS",name:"BrachytherapySourceType",vm:"1-n",version:"DICOM"},"(3010,0049)":{tag:"(3010,0049)",vr:"SQ",name:"ReferencedRTTreatmentPhaseSequence",vm:"1",version:"DICOM"},"(3010,004A)":{tag:"(3010,004A)",vr:"SQ",name:"ReferencedDirectSegmentInstanceSequence",vm:"1",version:"DICOM"},"(3010,004B)":{tag:"(3010,004B)",vr:"SQ",name:"IntendedRTTreatmentPhaseSequence",vm:"1",version:"DICOM"},"(3010,004C)":{tag:"(3010,004C)",vr:"DA",name:"IntendedPhaseStartDate",vm:"1",version:"DICOM"},"(3010,004D)":{tag:"(3010,004D)",vr:"DA",name:"IntendedPhaseEndDate",vm:"1",version:"DICOM"},"(3010,004E)":{tag:"(3010,004E)",vr:"SQ",name:"RTTreatmentPhaseIntervalSequence",vm:"1",version:"DICOM"},"(3010,004F)":{tag:"(3010,004F)",vr:"CS",name:"TemporalRelationshipIntervalAnchor",vm:"1",version:"DICOM"},"(3010,0050)":{tag:"(3010,0050)",vr:"FD",name:"MinimumNumberOfIntervalDays",vm:"1",version:"DICOM"},"(3010,0051)":{tag:"(3010,0051)",vr:"FD",name:"MaximumNumberOfIntervalDays",vm:"1",version:"DICOM"},"(3010,0052)":{tag:"(3010,0052)",vr:"UI",name:"PertinentSOPClassesInStudy",vm:"1-n",version:"DICOM"},"(3010,0053)":{tag:"(3010,0053)",vr:"UI",name:"PertinentSOPClassesInSeries",vm:"1-n",version:"DICOM"},"(3010,0054)":{tag:"(3010,0054)",vr:"LO",name:"RTPrescriptionLabel",vm:"1",version:"DICOM"},"(3010,0055)":{tag:"(3010,0055)",vr:"SQ",name:"RTPhysicianIntentPredecessorSequence",vm:"1",version:"DICOM"},"(3010,0056)":{tag:"(3010,0056)",vr:"LO",name:"RTTreatmentApproachLabel",vm:"1",version:"DICOM"},"(3010,0057)":{tag:"(3010,0057)",vr:"SQ",name:"RTPhysicianIntentSequence",vm:"1",version:"DICOM"},"(3010,0058)":{tag:"(3010,0058)",vr:"US",name:"RTPhysicianIntentIndex",vm:"1",version:"DICOM"},"(3010,0059)":{tag:"(3010,0059)",vr:"CS",name:"RTTreatmentIntentType",vm:"1",version:"DICOM"},"(3010,005A)":{tag:"(3010,005A)",vr:"UT",name:"RTPhysicianIntentNarrative",vm:"1",version:"DICOM"},"(3010,005B)":{tag:"(3010,005B)",vr:"SQ",name:"RTProtocolCodeSequence",vm:"1",version:"DICOM"},"(3010,005C)":{tag:"(3010,005C)",vr:"ST",name:"ReasonForSuperseding",vm:"1",version:"DICOM"},"(3010,005D)":{tag:"(3010,005D)",vr:"SQ",name:"RTDiagnosisCodeSequence",vm:"1",version:"DICOM"},"(3010,005E)":{tag:"(3010,005E)",vr:"US",name:"ReferencedRTPhysicianIntentIndex",vm:"1",version:"DICOM"},"(3010,005F)":{tag:"(3010,005F)",vr:"SQ",name:"RTPhysicianIntentInputInstanceSequence",vm:"1",version:"DICOM"},"(3010,0060)":{tag:"(3010,0060)",vr:"SQ",name:"RTAnatomicPrescriptionSequence",vm:"1",version:"DICOM"},"(3010,0061)":{tag:"(3010,0061)",vr:"UT",name:"PriorTreatmentDoseDescription",vm:"1",version:"DICOM"},"(3010,0062)":{tag:"(3010,0062)",vr:"SQ",name:"PriorTreatmentReferenceSequence",vm:"1",version:"DICOM"},"(3010,0063)":{tag:"(3010,0063)",vr:"CS",name:"DosimetricObjectiveEvaluationScope",vm:"1",version:"DICOM"},"(3010,0064)":{tag:"(3010,0064)",vr:"SQ",name:"TherapeuticRoleCategoryCodeSequence",vm:"1",version:"DICOM"},"(3010,0065)":{tag:"(3010,0065)",vr:"SQ",name:"TherapeuticRoleTypeCodeSequence",vm:"1",version:"DICOM"},"(3010,0066)":{tag:"(3010,0066)",vr:"US",name:"ConceptualVolumeOptimizationPrecedence",vm:"1",version:"DICOM"},"(3010,0067)":{tag:"(3010,0067)",vr:"SQ",name:"ConceptualVolumeCategoryCodeSequence",vm:"1",version:"DICOM"},"(3010,0068)":{tag:"(3010,0068)",vr:"CS",name:"ConceptualVolumeBlockingConstraint",vm:"1",version:"DICOM"},"(3010,0069)":{tag:"(3010,0069)",vr:"SQ",name:"ConceptualVolumeTypeCodeSequence",vm:"1",version:"DICOM"},"(3010,006A)":{tag:"(3010,006A)",vr:"SQ",name:"ConceptualVolumeTypeModifierCodeSequence",vm:"1",version:"DICOM"},"(3010,006B)":{tag:"(3010,006B)",vr:"SQ",name:"RTPrescriptionSequence",vm:"1",version:"DICOM"},"(3010,006C)":{tag:"(3010,006C)",vr:"SQ",name:"DosimetricObjectiveSequence",vm:"1",version:"DICOM"},"(3010,006D)":{tag:"(3010,006D)",vr:"SQ",name:"DosimetricObjectiveTypeCodeSequence",vm:"1",version:"DICOM"},"(3010,006E)":{tag:"(3010,006E)",vr:"UI",name:"DosimetricObjectiveUID",vm:"1",version:"DICOM"},"(3010,006F)":{tag:"(3010,006F)",vr:"UI",name:"ReferencedDosimetricObjectiveUID",vm:"1",version:"DICOM"},"(3010,0070)":{tag:"(3010,0070)",vr:"SQ",name:"DosimetricObjectiveParameterSequence",vm:"1",version:"DICOM"},"(3010,0071)":{tag:"(3010,0071)",vr:"SQ",name:"ReferencedDosimetricObjectivesSequence",vm:"1",version:"DICOM"},"(3010,0073)":{tag:"(3010,0073)",vr:"CS",name:"AbsoluteDosimetricObjectiveFlag",vm:"1",version:"DICOM"},"(3010,0074)":{tag:"(3010,0074)",vr:"FD",name:"DosimetricObjectiveWeight",vm:"1",version:"DICOM"},"(3010,0075)":{tag:"(3010,0075)",vr:"CS",name:"DosimetricObjectivePurpose",vm:"1",version:"DICOM"},"(3010,0076)":{tag:"(3010,0076)",vr:"SQ",name:"PlanningInputInformationSequence",vm:"1",version:"DICOM"},"(3010,0077)":{tag:"(3010,0077)",vr:"LO",name:"TreatmentSite",vm:"1",version:"DICOM"},"(3010,0078)":{tag:"(3010,0078)",vr:"SQ",name:"TreatmentSiteCodeSequence",vm:"1",version:"DICOM"},"(3010,0079)":{tag:"(3010,0079)",vr:"SQ",name:"FractionPatternSequence",vm:"1",version:"DICOM"},"(3010,007A)":{tag:"(3010,007A)",vr:"UT",name:"TreatmentTechniqueNotes",vm:"1",version:"DICOM"},"(3010,007B)":{tag:"(3010,007B)",vr:"UT",name:"PrescriptionNotes",vm:"1",version:"DICOM"},"(3010,007C)":{tag:"(3010,007C)",vr:"IS",name:"NumberOfIntervalFractions",vm:"1",version:"DICOM"},"(3010,007D)":{tag:"(3010,007D)",vr:"US",name:"NumberOfFractions",vm:"1",version:"DICOM"},"(3010,007E)":{tag:"(3010,007E)",vr:"US",name:"IntendedDeliveryDuration",vm:"1",version:"DICOM"},"(3010,007F)":{tag:"(3010,007F)",vr:"UT",name:"FractionationNotes",vm:"1",version:"DICOM"},"(3010,0080)":{tag:"(3010,0080)",vr:"SQ",name:"RTTreatmentTechniqueCodeSequence",vm:"1",version:"DICOM"},"(3010,0081)":{tag:"(3010,0081)",vr:"SQ",name:"PrescriptionNotesSequence",vm:"1",version:"DICOM"},"(3010,0082)":{tag:"(3010,0082)",vr:"SQ",name:"FractionBasedRelationshipSequence",vm:"1",version:"DICOM"},"(3010,0083)":{tag:"(3010,0083)",vr:"CS",name:"FractionBasedRelationshipIntervalAnchor",vm:"1",version:"DICOM"},"(3010,0084)":{tag:"(3010,0084)",vr:"FD",name:"MinimumHoursBetweenFractions",vm:"1",version:"DICOM"},"(3010,0085)":{tag:"(3010,0085)",vr:"TM",name:"IntendedFractionStartTime",vm:"1-n",version:"DICOM"},"(3010,0086)":{tag:"(3010,0086)",vr:"LT",name:"IntendedStartDayOfWeek",vm:"1",version:"DICOM"},"(3010,0087)":{tag:"(3010,0087)",vr:"SQ",name:"WeekdayFractionPatternSequence",vm:"1",version:"DICOM"},"(3010,0088)":{tag:"(3010,0088)",vr:"SQ",name:"DeliveryTimeStructureCodeSequence",vm:"1",version:"DICOM"},"(3010,0089)":{tag:"(3010,0089)",vr:"SQ",name:"TreatmentSiteModifierCodeSequence",vm:"1",version:"DICOM"},"(3010,0090)":{tag:"(3010,0090)",vr:"CS",name:"RoboticBaseLocationIndicator",vm:"1",version:"DICOM"},"(3010,0091)":{tag:"(3010,0091)",vr:"SQ",name:"RoboticPathNodeSetCodeSequence",vm:"1",version:"DICOM"},"(3010,0092)":{tag:"(3010,0092)",vr:"UL",name:"RoboticNodeIdentifier",vm:"1",version:"DICOM"},"(3010,0093)":{tag:"(3010,0093)",vr:"FD",name:"RTTreatmentSourceCoordinates",vm:"3",version:"DICOM"},"(3010,0094)":{tag:"(3010,0094)",vr:"FD",name:"RadiationSourceCoordinateSystemYawAngle",vm:"1",version:"DICOM"},"(3010,0095)":{tag:"(3010,0095)",vr:"FD",name:"RadiationSourceCoordinateSystemRollAngle",vm:"1",version:"DICOM"},"(3010,0096)":{tag:"(3010,0096)",vr:"FD",name:"RadiationSourceCoordinateSystemPitchAngle",vm:"1",version:"DICOM"},"(3010,0097)":{tag:"(3010,0097)",vr:"SQ",name:"RoboticPathControlPointSequence",vm:"1",version:"DICOM"},"(3010,0098)":{tag:"(3010,0098)",vr:"SQ",name:"TomotherapeuticControlPointSequence",vm:"1",version:"DICOM"},"(3010,0099)":{tag:"(3010,0099)",vr:"FD",name:"TomotherapeuticLeafOpenDurations",vm:"1-n",version:"DICOM"},"(3010,009A)":{tag:"(3010,009A)",vr:"FD",name:"TomotherapeuticLeafInitialClosedDurations",vm:"1-n",version:"DICOM"},"(4FFE,0001)":{tag:"(4FFE,0001)",vr:"SQ",name:"MACParametersSequence",vm:"1",version:"DICOM"},"(5200,9229)":{tag:"(5200,9229)",vr:"SQ",name:"SharedFunctionalGroupsSequence",vm:"1",version:"DICOM"},"(5200,9230)":{tag:"(5200,9230)",vr:"SQ",name:"PerFrameFunctionalGroupsSequence",vm:"1",version:"DICOM"},"(5400,0100)":{tag:"(5400,0100)",vr:"SQ",name:"WaveformSequence",vm:"1",version:"DICOM"},"(5400,0110)":{tag:"(5400,0110)",vr:"ox",name:"ChannelMinimumValue",vm:"1",version:"DICOM"},"(5400,0112)":{tag:"(5400,0112)",vr:"ox",name:"ChannelMaximumValue",vm:"1",version:"DICOM"},"(5400,1004)":{tag:"(5400,1004)",vr:"US",name:"WaveformBitsAllocated",vm:"1",version:"DICOM"},"(5400,1006)":{tag:"(5400,1006)",vr:"CS",name:"WaveformSampleInterpretation",vm:"1",version:"DICOM"},"(5400,100A)":{tag:"(5400,100A)",vr:"ox",name:"WaveformPaddingValue",vm:"1",version:"DICOM"},"(5400,1010)":{tag:"(5400,1010)",vr:"ox",name:"WaveformData",vm:"1",version:"DICOM"},"(5600,0010)":{tag:"(5600,0010)",vr:"OF",name:"FirstOrderPhaseCorrectionAngle",vm:"1",version:"DICOM"},"(5600,0020)":{tag:"(5600,0020)",vr:"OF",name:"SpectroscopyData",vm:"1",version:"DICOM"},"(6000-60FF,0010)":{tag:"(6000-60FF,0010)",vr:"US",name:"OverlayRows",vm:"1",version:"DICOM"},"(6000-60FF,0011)":{tag:"(6000-60FF,0011)",vr:"US",name:"OverlayColumns",vm:"1",version:"DICOM"},"(6000-60FF,0015)":{tag:"(6000-60FF,0015)",vr:"IS",name:"NumberOfFramesInOverlay",vm:"1",version:"DICOM"},"(6000-60FF,0022)":{tag:"(6000-60FF,0022)",vr:"LO",name:"OverlayDescription",vm:"1",version:"DICOM"},"(6000-60FF,0040)":{tag:"(6000-60FF,0040)",vr:"CS",name:"OverlayType",vm:"1",version:"DICOM"},"(6000-60FF,0045)":{tag:"(6000-60FF,0045)",vr:"LO",name:"OverlaySubtype",vm:"1",version:"DICOM"},"(6000-60FF,0050)":{tag:"(6000-60FF,0050)",vr:"SS",name:"OverlayOrigin",vm:"2",version:"DICOM"},"(6000-60FF,0051)":{tag:"(6000-60FF,0051)",vr:"US",name:"ImageFrameOrigin",vm:"1",version:"DICOM"},"(6000-60FF,0100)":{tag:"(6000-60FF,0100)",vr:"US",name:"OverlayBitsAllocated",vm:"1",version:"DICOM"},"(6000-60FF,0102)":{tag:"(6000-60FF,0102)",vr:"US",name:"OverlayBitPosition",vm:"1",version:"DICOM"},"(6000-60FF,1001)":{tag:"(6000-60FF,1001)",vr:"CS",name:"OverlayActivationLayer",vm:"1",version:"DICOM"},"(6000-60FF,1301)":{tag:"(6000-60FF,1301)",vr:"IS",name:"ROIArea",vm:"1",version:"DICOM"},"(6000-60FF,1302)":{tag:"(6000-60FF,1302)",vr:"DS",name:"ROIMean",vm:"1",version:"DICOM"},"(6000-60FF,1303)":{tag:"(6000-60FF,1303)",vr:"DS",name:"ROIStandardDeviation",vm:"1",version:"DICOM"},"(6000-60FF,1500)":{tag:"(6000-60FF,1500)",vr:"LO",name:"OverlayLabel",vm:"1",version:"DICOM"},"(6000-60FF,3000)":{tag:"(6000-60FF,3000)",vr:"ox",name:"OverlayData",vm:"1",version:"DICOM"},"(7FE0,0001)":{tag:"(7FE0,0001)",vr:"OV",name:"ExtendedOffsetTable",vm:"1",version:"DICOM"},"(7FE0,0002)":{tag:"(7FE0,0002)",vr:"OV",name:"ExtendedOffsetTableLengths",vm:"1",version:"DICOM"},"(7FE0,0008)":{tag:"(7FE0,0008)",vr:"OF",name:"FloatPixelData",vm:"1",version:"DICOM"},"(7FE0,0009)":{tag:"(7FE0,0009)",vr:"OD",name:"DoubleFloatPixelData",vm:"1",version:"DICOM"},"(7FE0,0010)":{tag:"(7FE0,0010)",vr:"ox",name:"PixelData",vm:"1",version:"DICOM"},"(FFFA,FFFA)":{tag:"(FFFA,FFFA)",vr:"SQ",name:"DigitalSignaturesSequence",vm:"1",version:"DICOM"},"(FFFC,FFFC)":{tag:"(FFFC,FFFC)",vr:"OB",name:"DataSetTrailingPadding",vm:"1",version:"DICOM"},"(FFFE,E000)":{tag:"(FFFE,E000)",vr:"na",name:"Item",vm:"1",version:"DICOM"},"(FFFE,E00D)":{tag:"(FFFE,E00D)",vr:"na",name:"ItemDelimitationItem",vm:"1",version:"DICOM"},"(FFFE,E0DD)":{tag:"(FFFE,E0DD)",vr:"na",name:"SequenceDelimitationItem",vm:"1",version:"DICOM"},"(0028,1224)":{tag:"(0028,1224)",vr:"OW",name:"SegmentedAlphaPaletteColorLookupTableData",vm:"1",version:"Supplement_156"},"(0070,1101)":{tag:"(0070,1101)",vr:"UI",name:"PresentationDisplayCollectionUID",vm:"1",version:"Supplement_156"},"(0070,1102)":{tag:"(0070,1102)",vr:"UI",name:"PresentationSequenceCollectionUID",vm:"1",version:"Supplement_156"},"(0070,1103)":{tag:"(0070,1103)",vr:"US",name:"PresentationSequencePositionIndex",vm:"1",version:"Supplement_156"},"(0070,1104)":{tag:"(0070,1104)",vr:"SQ",name:"RenderedImageReferenceSequence",vm:"1",version:"Supplement_156"},"(0070,1201)":{tag:"(0070,1201)",vr:"SQ",name:"VolumetricPresentationStateInputSequence",vm:"1",version:"Supplement_156"},"(0070,1202)":{tag:"(0070,1202)",vr:"CS",name:"PresentationInputType",vm:"1",version:"Supplement_156"},"(0070,1203)":{tag:"(0070,1203)",vr:"US",name:"InputSequencePositionIndex",vm:"1",version:"Supplement_156"},"(0070,1204)":{tag:"(0070,1204)",vr:"CS",name:"Crop",vm:"1",version:"Supplement_156"},"(0070,1205)":{tag:"(0070,1205)",vr:"US",name:"CroppingSpecificationIndex",vm:"1-n",version:"Supplement_156"},"(0070,1206)":{tag:"(0070,1206)",vr:"CS",name:"CompositingMethod",vm:"1",version:"Supplement_156"},"(0070,1207)":{tag:"(0070,1207)",vr:"US",name:"VolumetricPresentationInputNumber",vm:"1",version:"Supplement_156"},"(0070,1208)":{tag:"(0070,1208)",vr:"CS",name:"ImageVolumeGeometry",vm:"1",version:"Supplement_156"},"(0070,1301)":{tag:"(0070,1301)",vr:"SQ",name:"VolumeCroppingSequence",vm:"1",version:"Supplement_156"},"(0070,1302)":{tag:"(0070,1302)",vr:"CS",name:"VolumeCroppingMethod",vm:"1",version:"Supplement_156"},"(0070,1303)":{tag:"(0070,1303)",vr:"FD",name:"BoundingBoxCrop",vm:"6",version:"Supplement_156"},"(0070,1304)":{tag:"(0070,1304)",vr:"SQ",name:"ObliqueCroppingPlaneSequence",vm:"1",version:"Supplement_156"},"(0070,1305)":{tag:"(0070,1305)",vr:"FD",name:"ObliqueCroppingPlane",vm:"4",version:"Supplement_156"},"(0070,1306)":{tag:"(0070,1306)",vr:"FD",name:"ObliqueCroppingPlaneNormal",vm:"3",version:"Supplement_156"},"(0070,1309)":{tag:"(0070,1309)",vr:"US",name:"CroppingSpecificationNumber",vm:"1",version:"Supplement_156"},"(0070,1501)":{tag:"(0070,1501)",vr:"CS",name:"MultiPlanarReconstructionStyle",vm:"1",version:"Supplement_156"},"(0070,1502)":{tag:"(0070,1502)",vr:"CS",name:"MPRThicknessType",vm:"1",version:"Supplement_156"},"(0070,1503)":{tag:"(0070,1503)",vr:"FD",name:"MPRSlabThickness",vm:"1",version:"Supplement_156"},"(0070,1505)":{tag:"(0070,1505)",vr:"FD",name:"MPRTopLeftHandCorner",vm:"3",version:"Supplement_156"},"(0070,1507)":{tag:"(0070,1507)",vr:"FD",name:"MPRViewWidthDirection",vm:"3",version:"Supplement_156"},"(0070,1508)":{tag:"(0070,1508)",vr:"FD",name:"MPRViewWidth",vm:"1",version:"Supplement_156"},"(0070,150C)":{tag:"(0070,150C)",vr:"FL",name:"NumberOfVolumetricCurvePoints",vm:"1",version:"Supplement_156"},"(0070,150D)":{tag:"(0070,150D)",vr:"OD",name:"VolumetricCurvePoints",vm:"1",version:"Supplement_156"},"(0070,1511)":{tag:"(0070,1511)",vr:"FD",name:"MPRViewHeightDirection",vm:"3",version:"Supplement_156"},"(0070,1512)":{tag:"(0070,1512)",vr:"FD",name:"MPRViewHeight",vm:"1",version:"Supplement_156"},"(0070,1801)":{tag:"(0070,1801)",vr:"SQ",name:"PresentationStateClassificationComponentSequence",vm:"1",version:"Supplement_156"},"(0070,1802)":{tag:"(0070,1802)",vr:"CS",name:"ComponentType",vm:"1",version:"Supplement_156"},"(0070,1803)":{tag:"(0070,1803)",vr:"SQ",name:"ComponentInputSequence",vm:"1",version:"Supplement_156"},"(0070,1804)":{tag:"(0070,1804)",vr:"US",name:"VolumetricPresentationInputIndex",vm:"1",version:"Supplement_156"},"(0070,1805)":{tag:"(0070,1805)",vr:"SQ",name:"PresentationStateCompositorComponentSequence",vm:"1",version:"Supplement_156"},"(0070,1806)":{tag:"(0070,1806)",vr:"SQ",name:"WeightingTransferFunctionSequence",vm:"1",version:"Supplement_156"},"(0070,1807)":{tag:"(0070,1807)",vr:"US",name:"WeightingLookupTableDescriptor",vm:"3",version:"Supplement_156"},"(0070,1808)":{tag:"(0070,1808)",vr:"OB",name:"WeightingLookupTableData",vm:"1",version:"Supplement_156"},"(0070,1901)":{tag:"(0070,1901)",vr:"SQ",name:"VolumetricAnnotationSequence",vm:"1",version:"Supplement_156"},"(0070,1903)":{tag:"(0070,1903)",vr:"SQ",name:"ReferencedStructuredContextSequence",vm:"1",version:"Supplement_156"},"(0070,1904)":{tag:"(0070,1904)",vr:"UI",name:"ReferencedContentItem",vm:"1",version:"Supplement_156"},"(0070,1905)":{tag:"(0070,1905)",vr:"SQ",name:"VolumetricPresentationInputAnnotationSequence",vm:"1",version:"Supplement_156"},"(0070,1907)":{tag:"(0070,1907)",vr:"CS",name:"AnnotationClipping",vm:"1",version:"Supplement_156"},"(0070,1A01)":{tag:"(0070,1A01)",vr:"CS",name:"PresentationAnimationStyle",vm:"1",version:"Supplement_156"},"(0070,1A03)":{tag:"(0070,1A03)",vr:"FD",name:"RecommendedAnimationRate",vm:"1",version:"Supplement_156"},"(0070,1A04)":{tag:"(0070,1A04)",vr:"SQ",name:"AnimationCurveSequence",vm:"1",version:"Supplement_156"},"(0070,1A05)":{tag:"(0070,1A05)",vr:"FD",name:"AnimationStepSize",vm:"1",version:"Supplement_156"},"(0040,4070)":{tag:"(0040,4070)",vr:"SQ",name:"OutputDestinationSequence",vm:"1",version:"CP_1441"},"(0040,4071)":{tag:"(0040,4071)",vr:"SQ",name:"DICOMStorageSequence",vm:"1",version:"CP_1441"},"(0040,4072)":{tag:"(0040,4072)",vr:"SQ",name:"STOWRSStorageSequence",vm:"1",version:"CP_1441"},"(0040,4073)":{tag:"(0040,4073)",vr:"UR",name:"StorageURL",vm:"1",version:"CP_1441"},"(0040,4074)":{tag:"(0040,4074)",vr:"SQ",name:"XDSStorageSequence",vm:"1",version:"CP_1441"},"(0028,2002)":{tag:"(0028,2002)",vr:"CS",name:"ColorSpace",vm:"1",version:"CP_1454"},"(0040,9213)":{tag:"(0040,9213)",vr:"FD",name:"DoubleFloatRealWorldValueLastValueMapped",vm:"1",version:"CP_1458"},"(0040,9214)":{tag:"(0040,9214)",vr:"FD",name:"DoubleFloatRealWorldValueFirstValueMapped",vm:"1",version:"CP_1458"},"(0018,1320)":{tag:"(0018,1320)",vr:"FL",name:"B1rms",vm:"1",version:"CP_1461"},"(0009-o-FFFF,0000)":{tag:"(0009-o-FFFF,0000)",vr:"UL",name:"PrivateGroupLength",vm:"1",version:"PRIVATE"},"(0009-o-FFFF,0010-u-00FF)":{tag:"(0009-o-FFFF,0010-u-00FF)",vr:"LO",name:"PrivateCreator",vm:"1",version:"PRIVATE"},"(0001-o-0007,0000)":{tag:"(0001-o-0007,0000)",vr:"UL",name:"IllegalGroupLength",vm:"1",version:"ILLEGAL"},"(0001-o-0007,0010-u-00FF)":{tag:"(0001-o-0007,0010-u-00FF)",vr:"LO",name:"IllegalPrivateCreator",vm:"1",version:"ILLEGAL"},"(0000-u-FFFF,0000)":{tag:"(0000-u-FFFF,0000)",vr:"UL",name:"GenericGroupLength",vm:"1",version:"GENERIC"},"(0000,0001)":{tag:"(0000,0001)",vr:"UL",name:"RETIRED_CommandLengthToEnd",vm:"1",version:"DICOM/retired"},"(0000,0010)":{tag:"(0000,0010)",vr:"SH",name:"RETIRED_CommandRecognitionCode",vm:"1",version:"DICOM/retired"},"(0000,0200)":{tag:"(0000,0200)",vr:"AE",name:"RETIRED_Initiator",vm:"1",version:"DICOM/retired"},"(0000,0300)":{tag:"(0000,0300)",vr:"AE",name:"RETIRED_Receiver",vm:"1",version:"DICOM/retired"},"(0000,0400)":{tag:"(0000,0400)",vr:"AE",name:"RETIRED_FindLocation",vm:"1",version:"DICOM/retired"},"(0000,0850)":{tag:"(0000,0850)",vr:"US",name:"RETIRED_NumberOfMatches",vm:"1",version:"DICOM/retired"},"(0000,0860)":{tag:"(0000,0860)",vr:"US",name:"RETIRED_ResponseSequenceNumber",vm:"1",version:"DICOM/retired"},"(0000,4000)":{tag:"(0000,4000)",vr:"LT",name:"RETIRED_DialogReceiver",vm:"1",version:"DICOM/retired"},"(0000,4010)":{tag:"(0000,4010)",vr:"LT",name:"RETIRED_TerminalType",vm:"1",version:"DICOM/retired"},"(0000,5010)":{tag:"(0000,5010)",vr:"SH",name:"RETIRED_MessageSetID",vm:"1",version:"DICOM/retired"},"(0000,5020)":{tag:"(0000,5020)",vr:"SH",name:"RETIRED_EndMessageID",vm:"1",version:"DICOM/retired"},"(0000,5110)":{tag:"(0000,5110)",vr:"LT",name:"RETIRED_DisplayFormat",vm:"1",version:"DICOM/retired"},"(0000,5120)":{tag:"(0000,5120)",vr:"LT",name:"RETIRED_PagePositionID",vm:"1",version:"DICOM/retired"},"(0000,5130)":{tag:"(0000,5130)",vr:"CS",name:"RETIRED_TextFormatID",vm:"1",version:"DICOM/retired"},"(0000,5140)":{tag:"(0000,5140)",vr:"CS",name:"RETIRED_NormalReverse",vm:"1",version:"DICOM/retired"},"(0000,5150)":{tag:"(0000,5150)",vr:"CS",name:"RETIRED_AddGrayScale",vm:"1",version:"DICOM/retired"},"(0000,5160)":{tag:"(0000,5160)",vr:"CS",name:"RETIRED_Borders",vm:"1",version:"DICOM/retired"},"(0000,5170)":{tag:"(0000,5170)",vr:"IS",name:"RETIRED_Copies",vm:"1",version:"DICOM/retired"},"(0000,5180)":{tag:"(0000,5180)",vr:"CS",name:"RETIRED_CommandMagnificationType",vm:"1",version:"DICOM/retired"},"(0000,5190)":{tag:"(0000,5190)",vr:"CS",name:"RETIRED_Erase",vm:"1",version:"DICOM/retired"},"(0000,51A0)":{tag:"(0000,51A0)",vr:"CS",name:"RETIRED_Print",vm:"1",version:"DICOM/retired"},"(0000,51B0)":{tag:"(0000,51B0)",vr:"US",name:"RETIRED_Overlays",vm:"1-n",version:"DICOM/retired"},"(0004,1504)":{tag:"(0004,1504)",vr:"up",name:"RETIRED_MRDRDirectoryRecordOffset",vm:"1",version:"DICOM/retired"},"(0004,1600)":{tag:"(0004,1600)",vr:"UL",name:"RETIRED_NumberOfReferences",vm:"1",version:"DICOM/retired"},"(0008,0001)":{tag:"(0008,0001)",vr:"UL",name:"RETIRED_LengthToEnd",vm:"1",version:"DICOM/retired"},"(0008,0010)":{tag:"(0008,0010)",vr:"SH",name:"RETIRED_RecognitionCode",vm:"1",version:"DICOM/retired"},"(0008,0024)":{tag:"(0008,0024)",vr:"DA",name:"RETIRED_OverlayDate",vm:"1",version:"DICOM/retired"},"(0008,0025)":{tag:"(0008,0025)",vr:"DA",name:"RETIRED_CurveDate",vm:"1",version:"DICOM/retired"},"(0008,0034)":{tag:"(0008,0034)",vr:"TM",name:"RETIRED_OverlayTime",vm:"1",version:"DICOM/retired"},"(0008,0035)":{tag:"(0008,0035)",vr:"TM",name:"RETIRED_CurveTime",vm:"1",version:"DICOM/retired"},"(0008,0040)":{tag:"(0008,0040)",vr:"US",name:"RETIRED_DataSetType",vm:"1",version:"DICOM/retired"},"(0008,0041)":{tag:"(0008,0041)",vr:"LO",name:"RETIRED_DataSetSubtype",vm:"1",version:"DICOM/retired"},"(0008,0042)":{tag:"(0008,0042)",vr:"CS",name:"RETIRED_NuclearMedicineSeriesType",vm:"1",version:"DICOM/retired"},"(0008,1000)":{tag:"(0008,1000)",vr:"AE",name:"RETIRED_NetworkID",vm:"1",version:"DICOM/retired"},"(0008,1100)":{tag:"(0008,1100)",vr:"SQ",name:"RETIRED_ReferencedResultsSequence",vm:"1",version:"DICOM/retired"},"(0008,1130)":{tag:"(0008,1130)",vr:"SQ",name:"RETIRED_ReferencedOverlaySequence",vm:"1",version:"DICOM/retired"},"(0008,1145)":{tag:"(0008,1145)",vr:"SQ",name:"RETIRED_ReferencedCurveSequence",vm:"1",version:"DICOM/retired"},"(0008,2110)":{tag:"(0008,2110)",vr:"CS",name:"RETIRED_LossyImageCompressionRetired",vm:"1",version:"DICOM/retired"},"(0008,2200)":{tag:"(0008,2200)",vr:"CS",name:"RETIRED_TransducerPosition",vm:"1",version:"DICOM/retired"},"(0008,2204)":{tag:"(0008,2204)",vr:"CS",name:"RETIRED_TransducerOrientation",vm:"1",version:"DICOM/retired"},"(0008,2208)":{tag:"(0008,2208)",vr:"CS",name:"RETIRED_AnatomicStructure",vm:"1",version:"DICOM/retired"},"(0008,2240)":{tag:"(0008,2240)",vr:"SQ",name:"RETIRED_TransducerPositionSequence",vm:"1",version:"DICOM/retired"},"(0008,2242)":{tag:"(0008,2242)",vr:"SQ",name:"RETIRED_TransducerPositionModifierSequence",vm:"1",version:"DICOM/retired"},"(0008,2244)":{tag:"(0008,2244)",vr:"SQ",name:"RETIRED_TransducerOrientationSequence",vm:"1",version:"DICOM/retired"},"(0008,2246)":{tag:"(0008,2246)",vr:"SQ",name:"RETIRED_TransducerOrientationModifierSequence",vm:"1",version:"DICOM/retired"},"(0008,2251)":{tag:"(0008,2251)",vr:"SQ",name:"RETIRED_AnatomicStructureSpaceOrRegionCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,2253)":{tag:"(0008,2253)",vr:"SQ",name:"RETIRED_AnatomicPortalOfEntranceCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,2255)":{tag:"(0008,2255)",vr:"SQ",name:"RETIRED_AnatomicApproachDirectionCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,2256)":{tag:"(0008,2256)",vr:"ST",name:"RETIRED_AnatomicPerspectiveDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0008,2257)":{tag:"(0008,2257)",vr:"SQ",name:"RETIRED_AnatomicPerspectiveCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,2258)":{tag:"(0008,2258)",vr:"ST",name:"RETIRED_AnatomicLocationOfExaminingInstrumentDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0008,2259)":{tag:"(0008,2259)",vr:"SQ",name:"RETIRED_AnatomicLocationOfExaminingInstrumentCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,225A)":{tag:"(0008,225A)",vr:"SQ",name:"RETIRED_AnatomicStructureSpaceOrRegionModifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,225C)":{tag:"(0008,225C)",vr:"SQ",name:"RETIRED_OnAxisBackgroundAnatomicStructureCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0008,4000)":{tag:"(0008,4000)",vr:"LT",name:"RETIRED_IdentifyingComments",vm:"1",version:"DICOM/retired"},"(0010,1050)":{tag:"(0010,1050)",vr:"LO",name:"RETIRED_InsurancePlanIdentification",vm:"1-n",version:"DICOM/retired"},"(0014,0023)":{tag:"(0014,0023)",vr:"ST",name:"RETIRED_CADFileFormat",vm:"1-n",version:"DICOM/retired"},"(0014,0024)":{tag:"(0014,0024)",vr:"ST",name:"RETIRED_ComponentReferenceSystem",vm:"1-n",version:"DICOM/retired"},"(0014,0045)":{tag:"(0014,0045)",vr:"ST",name:"RETIRED_MaterialPropertiesFileFormatRetired",vm:"1-n",version:"DICOM/retired"},"(0018,0030)":{tag:"(0018,0030)",vr:"LO",name:"RETIRED_Radionuclide",vm:"1-n",version:"DICOM/retired"},"(0018,0032)":{tag:"(0018,0032)",vr:"DS",name:"RETIRED_EnergyWindowCenterline",vm:"1",version:"DICOM/retired"},"(0018,0033)":{tag:"(0018,0033)",vr:"DS",name:"RETIRED_EnergyWindowTotalWidth",vm:"1-n",version:"DICOM/retired"},"(0018,0037)":{tag:"(0018,0037)",vr:"CS",name:"RETIRED_TherapyType",vm:"1",version:"DICOM/retired"},"(0018,0039)":{tag:"(0018,0039)",vr:"CS",name:"RETIRED_TherapyDescription",vm:"1",version:"DICOM/retired"},"(0018,0061)":{tag:"(0018,0061)",vr:"DS",name:"RETIRED_undefined",vm:"1",version:"DICOM/retired"},"(0018,1011)":{tag:"(0018,1011)",vr:"LO",name:"RETIRED_HardcopyCreationDeviceID",vm:"1",version:"DICOM/retired"},"(0018,1017)":{tag:"(0018,1017)",vr:"LO",name:"RETIRED_HardcopyDeviceManufacturer",vm:"1",version:"DICOM/retired"},"(0018,101A)":{tag:"(0018,101A)",vr:"LO",name:"RETIRED_HardcopyDeviceSoftwareVersion",vm:"1-n",version:"DICOM/retired"},"(0018,101B)":{tag:"(0018,101B)",vr:"LO",name:"RETIRED_HardcopyDeviceManufacturerModelName",vm:"1",version:"DICOM/retired"},"(0018,1141)":{tag:"(0018,1141)",vr:"DS",name:"RETIRED_AngularPosition",vm:"1",version:"DICOM/retired"},"(0018,1146)":{tag:"(0018,1146)",vr:"DS",name:"RETIRED_RotationOffset",vm:"1-n",version:"DICOM/retired"},"(0018,1240)":{tag:"(0018,1240)",vr:"IS",name:"RETIRED_UpperLowerPixelValues",vm:"1-n",version:"DICOM/retired"},"(0018,4000)":{tag:"(0018,4000)",vr:"LT",name:"RETIRED_AcquisitionComments",vm:"1",version:"DICOM/retired"},"(0018,5021)":{tag:"(0018,5021)",vr:"LO",name:"RETIRED_PostprocessingFunction",vm:"1",version:"DICOM/retired"},"(0018,5030)":{tag:"(0018,5030)",vr:"DS",name:"RETIRED_DynamicRange",vm:"1",version:"DICOM/retired"},"(0018,5040)":{tag:"(0018,5040)",vr:"DS",name:"RETIRED_TotalGain",vm:"1",version:"DICOM/retired"},"(0018,5210)":{tag:"(0018,5210)",vr:"DS",name:"RETIRED_ImageTransformationMatrix",vm:"6",version:"DICOM/retired"},"(0018,5212)":{tag:"(0018,5212)",vr:"DS",name:"RETIRED_ImageTranslationVector",vm:"3",version:"DICOM/retired"},"(0018,6038)":{tag:"(0018,6038)",vr:"UL",name:"RETIRED_DopplerSampleVolumeXPositionRetired",vm:"1",version:"DICOM/retired"},"(0018,603A)":{tag:"(0018,603A)",vr:"UL",name:"RETIRED_DopplerSampleVolumeYPositionRetired",vm:"1",version:"DICOM/retired"},"(0018,603C)":{tag:"(0018,603C)",vr:"UL",name:"RETIRED_TMLinePositionX0Retired",vm:"1",version:"DICOM/retired"},"(0018,603E)":{tag:"(0018,603E)",vr:"UL",name:"RETIRED_TMLinePositionY0Retired",vm:"1",version:"DICOM/retired"},"(0018,6040)":{tag:"(0018,6040)",vr:"UL",name:"RETIRED_TMLinePositionX1Retired",vm:"1",version:"DICOM/retired"},"(0018,6042)":{tag:"(0018,6042)",vr:"UL",name:"RETIRED_TMLinePositionY1Retired",vm:"1",version:"DICOM/retired"},"(0018,9096)":{tag:"(0018,9096)",vr:"FD",name:"RETIRED_ParallelReductionFactorInPlaneRetired",vm:"1",version:"DICOM/retired"},"(0018,9166)":{tag:"(0018,9166)",vr:"CS",name:"RETIRED_BulkMotionStatus",vm:"1",version:"DICOM/retired"},"(0018,9195)":{tag:"(0018,9195)",vr:"FD",name:"RETIRED_ChemicalShiftMinimumIntegrationLimitInHz",vm:"1",version:"DICOM/retired"},"(0018,9196)":{tag:"(0018,9196)",vr:"FD",name:"RETIRED_ChemicalShiftMaximumIntegrationLimitInHz",vm:"1",version:"DICOM/retired"},"(0020,0014)":{tag:"(0020,0014)",vr:"IS",name:"RETIRED_IsotopeNumber",vm:"1",version:"DICOM/retired"},"(0020,0015)":{tag:"(0020,0015)",vr:"IS",name:"RETIRED_PhaseNumber",vm:"1",version:"DICOM/retired"},"(0020,0016)":{tag:"(0020,0016)",vr:"IS",name:"RETIRED_IntervalNumber",vm:"1",version:"DICOM/retired"},"(0020,0017)":{tag:"(0020,0017)",vr:"IS",name:"RETIRED_TimeSlotNumber",vm:"1",version:"DICOM/retired"},"(0020,0018)":{tag:"(0020,0018)",vr:"IS",name:"RETIRED_AngleNumber",vm:"1",version:"DICOM/retired"},"(0020,0022)":{tag:"(0020,0022)",vr:"IS",name:"RETIRED_OverlayNumber",vm:"1",version:"DICOM/retired"},"(0020,0024)":{tag:"(0020,0024)",vr:"IS",name:"RETIRED_CurveNumber",vm:"1",version:"DICOM/retired"},"(0020,0026)":{tag:"(0020,0026)",vr:"IS",name:"RETIRED_LUTNumber",vm:"1",version:"DICOM/retired"},"(0020,0030)":{tag:"(0020,0030)",vr:"DS",name:"RETIRED_ImagePosition",vm:"3",version:"DICOM/retired"},"(0020,0035)":{tag:"(0020,0035)",vr:"DS",name:"RETIRED_ImageOrientation",vm:"6",version:"DICOM/retired"},"(0020,0050)":{tag:"(0020,0050)",vr:"DS",name:"RETIRED_Location",vm:"1",version:"DICOM/retired"},"(0020,0070)":{tag:"(0020,0070)",vr:"LO",name:"RETIRED_ImageGeometryType",vm:"1",version:"DICOM/retired"},"(0020,0080)":{tag:"(0020,0080)",vr:"CS",name:"RETIRED_MaskingImage",vm:"1-n",version:"DICOM/retired"},"(0020,00AA)":{tag:"(0020,00AA)",vr:"IS",name:"RETIRED_ReportNumber",vm:"1",version:"DICOM/retired"},"(0020,1000)":{tag:"(0020,1000)",vr:"IS",name:"RETIRED_SeriesInStudy",vm:"1",version:"DICOM/retired"},"(0020,1001)":{tag:"(0020,1001)",vr:"IS",name:"RETIRED_AcquisitionsInSeries",vm:"1",version:"DICOM/retired"},"(0020,1003)":{tag:"(0020,1003)",vr:"IS",name:"RETIRED_ImagesInSeries",vm:"1",version:"DICOM/retired"},"(0020,1004)":{tag:"(0020,1004)",vr:"IS",name:"RETIRED_AcquisitionsInStudy",vm:"1",version:"DICOM/retired"},"(0020,1005)":{tag:"(0020,1005)",vr:"IS",name:"RETIRED_ImagesInStudy",vm:"1",version:"DICOM/retired"},"(0020,1020)":{tag:"(0020,1020)",vr:"LO",name:"RETIRED_Reference",vm:"1-n",version:"DICOM/retired"},"(0020,1070)":{tag:"(0020,1070)",vr:"IS",name:"RETIRED_OtherStudyNumbers",vm:"1-n",version:"DICOM/retired"},"(0020,3100-31FF)":{tag:"(0020,3100-31FF)",vr:"CS",name:"RETIRED_SourceImageIDs",vm:"1-n",version:"DICOM/retired"},"(0020,3401)":{tag:"(0020,3401)",vr:"CS",name:"RETIRED_ModifyingDeviceID",vm:"1",version:"DICOM/retired"},"(0020,3402)":{tag:"(0020,3402)",vr:"CS",name:"RETIRED_ModifiedImageID",vm:"1",version:"DICOM/retired"},"(0020,3403)":{tag:"(0020,3403)",vr:"DA",name:"RETIRED_ModifiedImageDate",vm:"1",version:"DICOM/retired"},"(0020,3404)":{tag:"(0020,3404)",vr:"LO",name:"RETIRED_ModifyingDeviceManufacturer",vm:"1",version:"DICOM/retired"},"(0020,3405)":{tag:"(0020,3405)",vr:"TM",name:"RETIRED_ModifiedImageTime",vm:"1",version:"DICOM/retired"},"(0020,3406)":{tag:"(0020,3406)",vr:"LO",name:"RETIRED_ModifiedImageDescription",vm:"1",version:"DICOM/retired"},"(0020,5000)":{tag:"(0020,5000)",vr:"AT",name:"RETIRED_OriginalImageIdentification",vm:"1-n",version:"DICOM/retired"},"(0020,5002)":{tag:"(0020,5002)",vr:"LO",name:"RETIRED_OriginalImageIdentificationNomenclature",vm:"1-n",version:"DICOM/retired"},"(0022,1094)":{tag:"(0022,1094)",vr:"LO",name:"RETIRED_LensConstantDescription",vm:"1",version:"DICOM/retired"},"(0022,1153)":{tag:"(0022,1153)",vr:"SQ",name:"RETIRED_OphthalmicAxialLengthAcquisitionMethodCodeSequence",vm:"1",version:"DICOM/retired"},"(0022,1265)":{tag:"(0022,1265)",vr:"SQ",name:"RETIRED_OphthalmicAxialLengthQualityMetricTypeCodeSequence",vm:"1",version:"DICOM/retired"},"(0022,1273)":{tag:"(0022,1273)",vr:"LO",name:"RETIRED_OphthalmicAxialLengthQualityMetricTypeDescription",vm:"1",version:"DICOM/retired"},"(0028,0005)":{tag:"(0028,0005)",vr:"US",name:"RETIRED_ImageDimensions",vm:"1",version:"DICOM/retired"},"(0028,0012)":{tag:"(0028,0012)",vr:"US",name:"RETIRED_Planes",vm:"1",version:"DICOM/retired"},"(0028,0040)":{tag:"(0028,0040)",vr:"CS",name:"RETIRED_ImageFormat",vm:"1",version:"DICOM/retired"},"(0028,0050)":{tag:"(0028,0050)",vr:"LO",name:"RETIRED_ManipulatedImage",vm:"1-n",version:"DICOM/retired"},"(0028,005F)":{tag:"(0028,005F)",vr:"LO",name:"RETIRED_CompressionRecognitionCode",vm:"1",version:"DICOM/retired"},"(0028,0060)":{tag:"(0028,0060)",vr:"CS",name:"RETIRED_CompressionCode",vm:"1",version:"DICOM/retired"},"(0028,0061)":{tag:"(0028,0061)",vr:"SH",name:"RETIRED_CompressionOriginator",vm:"1",version:"DICOM/retired"},"(0028,0062)":{tag:"(0028,0062)",vr:"LO",name:"RETIRED_CompressionLabel",vm:"1",version:"DICOM/retired"},"(0028,0063)":{tag:"(0028,0063)",vr:"SH",name:"RETIRED_CompressionDescription",vm:"1",version:"DICOM/retired"},"(0028,0065)":{tag:"(0028,0065)",vr:"CS",name:"RETIRED_CompressionSequence",vm:"1-n",version:"DICOM/retired"},"(0028,0066)":{tag:"(0028,0066)",vr:"AT",name:"RETIRED_CompressionStepPointers",vm:"1-n",version:"DICOM/retired"},"(0028,0068)":{tag:"(0028,0068)",vr:"US",name:"RETIRED_RepeatInterval",vm:"1",version:"DICOM/retired"},"(0028,0069)":{tag:"(0028,0069)",vr:"US",name:"RETIRED_BitsGrouped",vm:"1",version:"DICOM/retired"},"(0028,0070)":{tag:"(0028,0070)",vr:"US",name:"RETIRED_PerimeterTable",vm:"1-n",version:"DICOM/retired"},"(0028,0071)":{tag:"(0028,0071)",vr:"xs",name:"RETIRED_PerimeterValue",vm:"1",version:"DICOM/retired"},"(0028,0080)":{tag:"(0028,0080)",vr:"US",name:"RETIRED_PredictorRows",vm:"1",version:"DICOM/retired"},"(0028,0081)":{tag:"(0028,0081)",vr:"US",name:"RETIRED_PredictorColumns",vm:"1",version:"DICOM/retired"},"(0028,0082)":{tag:"(0028,0082)",vr:"US",name:"RETIRED_PredictorConstants",vm:"1-n",version:"DICOM/retired"},"(0028,0090)":{tag:"(0028,0090)",vr:"CS",name:"RETIRED_BlockedPixels",vm:"1",version:"DICOM/retired"},"(0028,0091)":{tag:"(0028,0091)",vr:"US",name:"RETIRED_BlockRows",vm:"1",version:"DICOM/retired"},"(0028,0092)":{tag:"(0028,0092)",vr:"US",name:"RETIRED_BlockColumns",vm:"1",version:"DICOM/retired"},"(0028,0093)":{tag:"(0028,0093)",vr:"US",name:"RETIRED_RowOverlap",vm:"1",version:"DICOM/retired"},"(0028,0094)":{tag:"(0028,0094)",vr:"US",name:"RETIRED_ColumnOverlap",vm:"1",version:"DICOM/retired"},"(0028,0104)":{tag:"(0028,0104)",vr:"xs",name:"RETIRED_SmallestValidPixelValue",vm:"1",version:"DICOM/retired"},"(0028,0105)":{tag:"(0028,0105)",vr:"xs",name:"RETIRED_LargestValidPixelValue",vm:"1",version:"DICOM/retired"},"(0028,0110)":{tag:"(0028,0110)",vr:"xs",name:"RETIRED_SmallestImagePixelValueInPlane",vm:"1",version:"DICOM/retired"},"(0028,0111)":{tag:"(0028,0111)",vr:"xs",name:"RETIRED_LargestImagePixelValueInPlane",vm:"1",version:"DICOM/retired"},"(0028,0200)":{tag:"(0028,0200)",vr:"US",name:"RETIRED_ImageLocation",vm:"1",version:"DICOM/retired"},"(0028,0400)":{tag:"(0028,0400)",vr:"LO",name:"RETIRED_TransformLabel",vm:"1",version:"DICOM/retired"},"(0028,0401)":{tag:"(0028,0401)",vr:"LO",name:"RETIRED_TransformVersionNumber",vm:"1",version:"DICOM/retired"},"(0028,0402)":{tag:"(0028,0402)",vr:"US",name:"RETIRED_NumberOfTransformSteps",vm:"1",version:"DICOM/retired"},"(0028,0403)":{tag:"(0028,0403)",vr:"LO",name:"RETIRED_SequenceOfCompressedData",vm:"1-n",version:"DICOM/retired"},"(0028,0404)":{tag:"(0028,0404)",vr:"AT",name:"RETIRED_DetailsOfCoefficients",vm:"1-n",version:"DICOM/retired"},"(0028,0410)":{tag:"(0028,0410)",vr:"US",name:"RETIRED_RowsForNthOrderCoefficients",vm:"1",version:"DICOM/retired"},"(0028,0411)":{tag:"(0028,0411)",vr:"US",name:"RETIRED_ColumnsForNthOrderCoefficients",vm:"1",version:"DICOM/retired"},"(0028,0412)":{tag:"(0028,0412)",vr:"LO",name:"RETIRED_CoefficientCoding",vm:"1-n",version:"DICOM/retired"},"(0028,0413)":{tag:"(0028,0413)",vr:"AT",name:"RETIRED_CoefficientCodingPointers",vm:"1-n",version:"DICOM/retired"},"(0028,0700)":{tag:"(0028,0700)",vr:"LO",name:"RETIRED_DCTLabel",vm:"1",version:"DICOM/retired"},"(0028,0701)":{tag:"(0028,0701)",vr:"CS",name:"RETIRED_DataBlockDescription",vm:"1-n",version:"DICOM/retired"},"(0028,0702)":{tag:"(0028,0702)",vr:"AT",name:"RETIRED_DataBlock",vm:"1-n",version:"DICOM/retired"},"(0028,0710)":{tag:"(0028,0710)",vr:"US",name:"RETIRED_NormalizationFactorFormat",vm:"1",version:"DICOM/retired"},"(0028,0720)":{tag:"(0028,0720)",vr:"US",name:"RETIRED_ZonalMapNumberFormat",vm:"1",version:"DICOM/retired"},"(0028,0721)":{tag:"(0028,0721)",vr:"AT",name:"RETIRED_ZonalMapLocation",vm:"1-n",version:"DICOM/retired"},"(0028,0722)":{tag:"(0028,0722)",vr:"US",name:"RETIRED_ZonalMapFormat",vm:"1",version:"DICOM/retired"},"(0028,0730)":{tag:"(0028,0730)",vr:"US",name:"RETIRED_AdaptiveMapFormat",vm:"1",version:"DICOM/retired"},"(0028,0740)":{tag:"(0028,0740)",vr:"US",name:"RETIRED_CodeNumberFormat",vm:"1",version:"DICOM/retired"},"(0028,0800)":{tag:"(0028,0800)",vr:"CS",name:"RETIRED_CodeLabel",vm:"1-n",version:"DICOM/retired"},"(0028,0802)":{tag:"(0028,0802)",vr:"US",name:"RETIRED_NumberOfTables",vm:"1",version:"DICOM/retired"},"(0028,0803)":{tag:"(0028,0803)",vr:"AT",name:"RETIRED_CodeTableLocation",vm:"1-n",version:"DICOM/retired"},"(0028,0804)":{tag:"(0028,0804)",vr:"US",name:"RETIRED_BitsForCodeWord",vm:"1",version:"DICOM/retired"},"(0028,0808)":{tag:"(0028,0808)",vr:"AT",name:"RETIRED_ImageDataLocation",vm:"1-n",version:"DICOM/retired"},"(0028,1080)":{tag:"(0028,1080)",vr:"CS",name:"RETIRED_GrayScale",vm:"1",version:"DICOM/retired"},"(0028,1100)":{tag:"(0028,1100)",vr:"xs",name:"RETIRED_GrayLookupTableDescriptor",vm:"3",version:"DICOM/retired"},"(0028,1111)":{tag:"(0028,1111)",vr:"xs",name:"RETIRED_LargeRedPaletteColorLookupTableDescriptor",vm:"4",version:"DICOM/retired"},"(0028,1112)":{tag:"(0028,1112)",vr:"xs",name:"RETIRED_LargeGreenPaletteColorLookupTableDescriptor",vm:"4",version:"DICOM/retired"},"(0028,1113)":{tag:"(0028,1113)",vr:"xs",name:"RETIRED_LargeBluePaletteColorLookupTableDescriptor",vm:"4",version:"DICOM/retired"},"(0028,1200)":{tag:"(0028,1200)",vr:"lt",name:"RETIRED_GrayLookupTableData",vm:"1-n",version:"DICOM/retired"},"(0028,1211)":{tag:"(0028,1211)",vr:"OW",name:"RETIRED_LargeRedPaletteColorLookupTableData",vm:"1",version:"DICOM/retired"},"(0028,1212)":{tag:"(0028,1212)",vr:"OW",name:"RETIRED_LargeGreenPaletteColorLookupTableData",vm:"1",version:"DICOM/retired"},"(0028,1213)":{tag:"(0028,1213)",vr:"OW",name:"RETIRED_LargeBluePaletteColorLookupTableData",vm:"1",version:"DICOM/retired"},"(0028,1214)":{tag:"(0028,1214)",vr:"UI",name:"RETIRED_LargePaletteColorLookupTableUID",vm:"1",version:"DICOM/retired"},"(0028,4000)":{tag:"(0028,4000)",vr:"LT",name:"RETIRED_ImagePresentationComments",vm:"1",version:"DICOM/retired"},"(0028,5000)":{tag:"(0028,5000)",vr:"SQ",name:"RETIRED_BiPlaneAcquisitionSequence",vm:"1",version:"DICOM/retired"},"(0028,6030)":{tag:"(0028,6030)",vr:"US",name:"RETIRED_MaskPointers",vm:"1-n",version:"DICOM/retired"},"(0028,9099)":{tag:"(0028,9099)",vr:"US",name:"RETIRED_LargestMonochromePixelValue",vm:"1",version:"DICOM/retired"},"(0032,000A)":{tag:"(0032,000A)",vr:"CS",name:"RETIRED_StudyStatusID",vm:"1",version:"DICOM/retired"},"(0032,000C)":{tag:"(0032,000C)",vr:"CS",name:"RETIRED_StudyPriorityID",vm:"1",version:"DICOM/retired"},"(0032,0012)":{tag:"(0032,0012)",vr:"LO",name:"RETIRED_StudyIDIssuer",vm:"1",version:"DICOM/retired"},"(0032,0032)":{tag:"(0032,0032)",vr:"DA",name:"RETIRED_StudyVerifiedDate",vm:"1",version:"DICOM/retired"},"(0032,0033)":{tag:"(0032,0033)",vr:"TM",name:"RETIRED_StudyVerifiedTime",vm:"1",version:"DICOM/retired"},"(0032,0034)":{tag:"(0032,0034)",vr:"DA",name:"RETIRED_StudyReadDate",vm:"1",version:"DICOM/retired"},"(0032,0035)":{tag:"(0032,0035)",vr:"TM",name:"RETIRED_StudyReadTime",vm:"1",version:"DICOM/retired"},"(0032,1000)":{tag:"(0032,1000)",vr:"DA",name:"RETIRED_ScheduledStudyStartDate",vm:"1",version:"DICOM/retired"},"(0032,1001)":{tag:"(0032,1001)",vr:"TM",name:"RETIRED_ScheduledStudyStartTime",vm:"1",version:"DICOM/retired"},"(0032,1010)":{tag:"(0032,1010)",vr:"DA",name:"RETIRED_ScheduledStudyStopDate",vm:"1",version:"DICOM/retired"},"(0032,1011)":{tag:"(0032,1011)",vr:"TM",name:"RETIRED_ScheduledStudyStopTime",vm:"1",version:"DICOM/retired"},"(0032,1020)":{tag:"(0032,1020)",vr:"LO",name:"RETIRED_ScheduledStudyLocation",vm:"1",version:"DICOM/retired"},"(0032,1021)":{tag:"(0032,1021)",vr:"AE",name:"RETIRED_ScheduledStudyLocationAETitle",vm:"1-n",version:"DICOM/retired"},"(0032,1030)":{tag:"(0032,1030)",vr:"LO",name:"RETIRED_ReasonForStudy",vm:"1",version:"DICOM/retired"},"(0032,1040)":{tag:"(0032,1040)",vr:"DA",name:"RETIRED_StudyArrivalDate",vm:"1",version:"DICOM/retired"},"(0032,1041)":{tag:"(0032,1041)",vr:"TM",name:"RETIRED_StudyArrivalTime",vm:"1",version:"DICOM/retired"},"(0032,1050)":{tag:"(0032,1050)",vr:"DA",name:"RETIRED_StudyCompletionDate",vm:"1",version:"DICOM/retired"},"(0032,1051)":{tag:"(0032,1051)",vr:"TM",name:"RETIRED_StudyCompletionTime",vm:"1",version:"DICOM/retired"},"(0032,1055)":{tag:"(0032,1055)",vr:"CS",name:"RETIRED_StudyComponentStatusID",vm:"1",version:"DICOM/retired"},"(0032,4000)":{tag:"(0032,4000)",vr:"LT",name:"RETIRED_StudyComments",vm:"1",version:"DICOM/retired"},"(0038,0011)":{tag:"(0038,0011)",vr:"LO",name:"RETIRED_IssuerOfAdmissionID",vm:"1",version:"DICOM/retired"},"(0038,001A)":{tag:"(0038,001A)",vr:"DA",name:"RETIRED_ScheduledAdmissionDate",vm:"1",version:"DICOM/retired"},"(0038,001B)":{tag:"(0038,001B)",vr:"TM",name:"RETIRED_ScheduledAdmissionTime",vm:"1",version:"DICOM/retired"},"(0038,001C)":{tag:"(0038,001C)",vr:"DA",name:"RETIRED_ScheduledDischargeDate",vm:"1",version:"DICOM/retired"},"(0038,001D)":{tag:"(0038,001D)",vr:"TM",name:"RETIRED_ScheduledDischargeTime",vm:"1",version:"DICOM/retired"},"(0038,001E)":{tag:"(0038,001E)",vr:"LO",name:"RETIRED_ScheduledPatientInstitutionResidence",vm:"1",version:"DICOM/retired"},"(0038,0030)":{tag:"(0038,0030)",vr:"DA",name:"RETIRED_DischargeDate",vm:"1",version:"DICOM/retired"},"(0038,0032)":{tag:"(0038,0032)",vr:"TM",name:"RETIRED_DischargeTime",vm:"1",version:"DICOM/retired"},"(0038,0040)":{tag:"(0038,0040)",vr:"LO",name:"RETIRED_DischargeDiagnosisDescription",vm:"1",version:"DICOM/retired"},"(0038,0044)":{tag:"(0038,0044)",vr:"SQ",name:"RETIRED_DischargeDiagnosisCodeSequence",vm:"1",version:"DICOM/retired"},"(0038,0061)":{tag:"(0038,0061)",vr:"LO",name:"RETIRED_IssuerOfServiceEpisodeID",vm:"1",version:"DICOM/retired"},"(0040,0307)":{tag:"(0040,0307)",vr:"DS",name:"RETIRED_DistanceSourceToSupport",vm:"1",version:"DICOM/retired"},"(0040,0330)":{tag:"(0040,0330)",vr:"SQ",name:"RETIRED_ReferencedProcedureStepSequence",vm:"1",version:"DICOM/retired"},"(0040,050A)":{tag:"(0040,050A)",vr:"LO",name:"RETIRED_SpecimenAccessionNumber",vm:"1",version:"DICOM/retired"},"(0040,0550)":{tag:"(0040,0550)",vr:"SQ",name:"RETIRED_SpecimenSequence",vm:"1",version:"DICOM/retired"},"(0040,0552)":{tag:"(0040,0552)",vr:"SQ",name:"RETIRED_SpecimenDescriptionSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,0553)":{tag:"(0040,0553)",vr:"ST",name:"RETIRED_SpecimenDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0040,06FA)":{tag:"(0040,06FA)",vr:"LO",name:"RETIRED_SlideIdentifier",vm:"1",version:"DICOM/retired"},"(0040,08D8)":{tag:"(0040,08D8)",vr:"SQ",name:"RETIRED_PixelSpacingSequence",vm:"1",version:"DICOM/retired"},"(0040,08DA)":{tag:"(0040,08DA)",vr:"SQ",name:"RETIRED_CoordinateSystemAxisCodeSequence",vm:"1",version:"DICOM/retired"},"(0040,09F8)":{tag:"(0040,09F8)",vr:"SQ",name:"RETIRED_VitalStainCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,1006)":{tag:"(0040,1006)",vr:"SH",name:"RETIRED_PlacerOrderNumberProcedure",vm:"1",version:"DICOM/retired"},"(0040,1007)":{tag:"(0040,1007)",vr:"SH",name:"RETIRED_FillerOrderNumberProcedure",vm:"1",version:"DICOM/retired"},"(0040,1060)":{tag:"(0040,1060)",vr:"LO",name:"RETIRED_RequestedProcedureDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0040,2001)":{tag:"(0040,2001)",vr:"LO",name:"RETIRED_ReasonForTheImagingServiceRequest",vm:"1",version:"DICOM/retired"},"(0040,2006)":{tag:"(0040,2006)",vr:"SH",name:"RETIRED_PlacerOrderNumberImagingServiceRequestRetired",vm:"1",version:"DICOM/retired"},"(0040,2007)":{tag:"(0040,2007)",vr:"SH",name:"RETIRED_FillerOrderNumberImagingServiceRequestRetired",vm:"1",version:"DICOM/retired"},"(0040,4001)":{tag:"(0040,4001)",vr:"CS",name:"RETIRED_GeneralPurposeScheduledProcedureStepStatus",vm:"1",version:"DICOM/retired"},"(0040,4002)":{tag:"(0040,4002)",vr:"CS",name:"RETIRED_GeneralPurposePerformedProcedureStepStatus",vm:"1",version:"DICOM/retired"},"(0040,4003)":{tag:"(0040,4003)",vr:"CS",name:"RETIRED_GeneralPurposeScheduledProcedureStepPriority",vm:"1",version:"DICOM/retired"},"(0040,4004)":{tag:"(0040,4004)",vr:"SQ",name:"RETIRED_ScheduledProcessingApplicationsCodeSequence",vm:"1",version:"DICOM/retired"},"(0040,4006)":{tag:"(0040,4006)",vr:"CS",name:"RETIRED_MultipleCopiesFlag",vm:"1",version:"DICOM/retired"},"(0040,4015)":{tag:"(0040,4015)",vr:"SQ",name:"RETIRED_ResultingGeneralPurposePerformedProcedureStepsSequence",vm:"1",version:"DICOM/retired"},"(0040,4016)":{tag:"(0040,4016)",vr:"SQ",name:"RETIRED_ReferencedGeneralPurposeScheduledProcedureStepSequence",vm:"1",version:"DICOM/retired"},"(0040,4022)":{tag:"(0040,4022)",vr:"SQ",name:"RETIRED_RelevantInformationSequence",vm:"1",version:"DICOM/retired"},"(0040,4023)":{tag:"(0040,4023)",vr:"UI",name:"RETIRED_ReferencedGeneralPurposeScheduledProcedureStepTransactionUID",vm:"1",version:"DICOM/retired"},"(0040,4031)":{tag:"(0040,4031)",vr:"SQ",name:"RETIRED_RequestedSubsequentWorkitemCodeSequence",vm:"1",version:"DICOM/retired"},"(0040,4032)":{tag:"(0040,4032)",vr:"SQ",name:"RETIRED_NonDICOMOutputCodeSequence",vm:"1",version:"DICOM/retired"},"(0040,A007)":{tag:"(0040,A007)",vr:"CS",name:"RETIRED_FindingsFlagTrial",vm:"1",version:"DICOM/retired"},"(0040,A020)":{tag:"(0040,A020)",vr:"SQ",name:"RETIRED_FindingsSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A021)":{tag:"(0040,A021)",vr:"UI",name:"RETIRED_FindingsGroupUIDTrial",vm:"1",version:"DICOM/retired"},"(0040,A022)":{tag:"(0040,A022)",vr:"UI",name:"RETIRED_ReferencedFindingsGroupUIDTrial",vm:"1",version:"DICOM/retired"},"(0040,A023)":{tag:"(0040,A023)",vr:"DA",name:"RETIRED_FindingsGroupRecordingDateTrial",vm:"1",version:"DICOM/retired"},"(0040,A024)":{tag:"(0040,A024)",vr:"TM",name:"RETIRED_FindingsGroupRecordingTimeTrial",vm:"1",version:"DICOM/retired"},"(0040,A026)":{tag:"(0040,A026)",vr:"SQ",name:"RETIRED_FindingsSourceCategoryCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A028)":{tag:"(0040,A028)",vr:"SQ",name:"RETIRED_DocumentingOrganizationIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A047)":{tag:"(0040,A047)",vr:"LO",name:"RETIRED_MeasurementPrecisionDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0040,A057)":{tag:"(0040,A057)",vr:"CS",name:"RETIRED_UrgencyOrPriorityAlertsTrial",vm:"1-n",version:"DICOM/retired"},"(0040,A060)":{tag:"(0040,A060)",vr:"LO",name:"RETIRED_SequencingIndicatorTrial",vm:"1",version:"DICOM/retired"},"(0040,A066)":{tag:"(0040,A066)",vr:"SQ",name:"RETIRED_DocumentIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A067)":{tag:"(0040,A067)",vr:"PN",name:"RETIRED_DocumentAuthorTrial",vm:"1",version:"DICOM/retired"},"(0040,A068)":{tag:"(0040,A068)",vr:"SQ",name:"RETIRED_DocumentAuthorIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A070)":{tag:"(0040,A070)",vr:"SQ",name:"RETIRED_IdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A074)":{tag:"(0040,A074)",vr:"OB",name:"RETIRED_ObjectBinaryIdentifierTrial",vm:"1",version:"DICOM/retired"},"(0040,A076)":{tag:"(0040,A076)",vr:"SQ",name:"RETIRED_DocumentingObserverIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A085)":{tag:"(0040,A085)",vr:"SQ",name:"RETIRED_ProcedureIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A089)":{tag:"(0040,A089)",vr:"OB",name:"RETIRED_ObjectDirectoryBinaryIdentifierTrial",vm:"1",version:"DICOM/retired"},"(0040,A090)":{tag:"(0040,A090)",vr:"SQ",name:"RETIRED_EquivalentCDADocumentSequence",vm:"1",version:"DICOM/retired"},"(0040,A110)":{tag:"(0040,A110)",vr:"DA",name:"RETIRED_DateOfDocumentOrVerbalTransactionTrial",vm:"1",version:"DICOM/retired"},"(0040,A112)":{tag:"(0040,A112)",vr:"TM",name:"RETIRED_TimeOfDocumentCreationOrVerbalTransactionTrial",vm:"1",version:"DICOM/retired"},"(0040,A125)":{tag:"(0040,A125)",vr:"CS",name:"RETIRED_ReportStatusIDTrial",vm:"2",version:"DICOM/retired"},"(0040,A167)":{tag:"(0040,A167)",vr:"SQ",name:"RETIRED_ObservationCategoryCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A16A)":{tag:"(0040,A16A)",vr:"ST",name:"RETIRED_BibliographicCitationTrial",vm:"1",version:"DICOM/retired"},"(0040,A172)":{tag:"(0040,A172)",vr:"UI",name:"RETIRED_ReferencedObservationUIDTrial",vm:"1",version:"DICOM/retired"},"(0040,A173)":{tag:"(0040,A173)",vr:"CS",name:"RETIRED_ReferencedObservationClassTrial",vm:"1",version:"DICOM/retired"},"(0040,A174)":{tag:"(0040,A174)",vr:"CS",name:"RETIRED_ReferencedObjectObservationClassTrial",vm:"1",version:"DICOM/retired"},"(0040,A192)":{tag:"(0040,A192)",vr:"DA",name:"RETIRED_ObservationDateTrial",vm:"1",version:"DICOM/retired"},"(0040,A193)":{tag:"(0040,A193)",vr:"TM",name:"RETIRED_ObservationTimeTrial",vm:"1",version:"DICOM/retired"},"(0040,A194)":{tag:"(0040,A194)",vr:"CS",name:"RETIRED_MeasurementAutomationTrial",vm:"1",version:"DICOM/retired"},"(0040,A224)":{tag:"(0040,A224)",vr:"ST",name:"RETIRED_IdentificationDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0040,A290)":{tag:"(0040,A290)",vr:"CS",name:"RETIRED_CoordinatesSetGeometricTypeTrial",vm:"1",version:"DICOM/retired"},"(0040,A296)":{tag:"(0040,A296)",vr:"SQ",name:"RETIRED_AlgorithmCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A297)":{tag:"(0040,A297)",vr:"ST",name:"RETIRED_AlgorithmDescriptionTrial",vm:"1",version:"DICOM/retired"},"(0040,A29A)":{tag:"(0040,A29A)",vr:"SL",name:"RETIRED_PixelCoordinatesSetTrial",vm:"2-2n",version:"DICOM/retired"},"(0040,A307)":{tag:"(0040,A307)",vr:"PN",name:"RETIRED_CurrentObserverTrial",vm:"1",version:"DICOM/retired"},"(0040,A313)":{tag:"(0040,A313)",vr:"SQ",name:"RETIRED_ReferencedAccessionSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A33A)":{tag:"(0040,A33A)",vr:"ST",name:"RETIRED_ReportStatusCommentTrial",vm:"1",version:"DICOM/retired"},"(0040,A340)":{tag:"(0040,A340)",vr:"SQ",name:"RETIRED_ProcedureContextSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A352)":{tag:"(0040,A352)",vr:"PN",name:"RETIRED_VerbalSourceTrial",vm:"1",version:"DICOM/retired"},"(0040,A353)":{tag:"(0040,A353)",vr:"ST",name:"RETIRED_AddressTrial",vm:"1",version:"DICOM/retired"},"(0040,A354)":{tag:"(0040,A354)",vr:"LO",name:"RETIRED_TelephoneNumberTrial",vm:"1",version:"DICOM/retired"},"(0040,A358)":{tag:"(0040,A358)",vr:"SQ",name:"RETIRED_VerbalSourceIdentifierCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A380)":{tag:"(0040,A380)",vr:"SQ",name:"RETIRED_ReportDetailSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A402)":{tag:"(0040,A402)",vr:"UI",name:"RETIRED_ObservationSubjectUIDTrial",vm:"1",version:"DICOM/retired"},"(0040,A403)":{tag:"(0040,A403)",vr:"CS",name:"RETIRED_ObservationSubjectClassTrial",vm:"1",version:"DICOM/retired"},"(0040,A404)":{tag:"(0040,A404)",vr:"SQ",name:"RETIRED_ObservationSubjectTypeCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A600)":{tag:"(0040,A600)",vr:"CS",name:"RETIRED_ObservationSubjectContextFlagTrial",vm:"1",version:"DICOM/retired"},"(0040,A601)":{tag:"(0040,A601)",vr:"CS",name:"RETIRED_ObserverContextFlagTrial",vm:"1",version:"DICOM/retired"},"(0040,A603)":{tag:"(0040,A603)",vr:"CS",name:"RETIRED_ProcedureContextFlagTrial",vm:"1",version:"DICOM/retired"},"(0040,A731)":{tag:"(0040,A731)",vr:"SQ",name:"RETIRED_RelationshipSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A732)":{tag:"(0040,A732)",vr:"SQ",name:"RETIRED_RelationshipTypeCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A744)":{tag:"(0040,A744)",vr:"SQ",name:"RETIRED_LanguageCodeSequenceTrial",vm:"1",version:"DICOM/retired"},"(0040,A992)":{tag:"(0040,A992)",vr:"ST",name:"RETIRED_UniformResourceLocatorTrial",vm:"1",version:"DICOM/retired"},"(0040,DB06)":{tag:"(0040,DB06)",vr:"DT",name:"RETIRED_TemplateVersion",vm:"1",version:"DICOM/retired"},"(0040,DB07)":{tag:"(0040,DB07)",vr:"DT",name:"RETIRED_TemplateLocalVersion",vm:"1",version:"DICOM/retired"},"(0040,DB0B)":{tag:"(0040,DB0B)",vr:"CS",name:"RETIRED_TemplateExtensionFlag",vm:"1",version:"DICOM/retired"},"(0040,DB0C)":{tag:"(0040,DB0C)",vr:"UI",name:"RETIRED_TemplateExtensionOrganizationUID",vm:"1",version:"DICOM/retired"},"(0040,DB0D)":{tag:"(0040,DB0D)",vr:"UI",name:"RETIRED_TemplateExtensionCreatorUID",vm:"1",version:"DICOM/retired"},"(0054,1400)":{tag:"(0054,1400)",vr:"CS",name:"RETIRED_CountsIncluded",vm:"1-n",version:"DICOM/retired"},"(0054,1401)":{tag:"(0054,1401)",vr:"CS",name:"RETIRED_DeadTimeCorrectionFlag",vm:"1",version:"DICOM/retired"},"(0070,0040)":{tag:"(0070,0040)",vr:"IS",name:"RETIRED_ImageRotationRetired",vm:"1",version:"DICOM/retired"},"(0070,0050)":{tag:"(0070,0050)",vr:"US",name:"RETIRED_DisplayedAreaTopLeftHandCornerTrial",vm:"2",version:"DICOM/retired"},"(0070,0051)":{tag:"(0070,0051)",vr:"US",name:"RETIRED_DisplayedAreaBottomRightHandCornerTrial",vm:"2",version:"DICOM/retired"},"(0070,0067)":{tag:"(0070,0067)",vr:"US",name:"RETIRED_GraphicLayerRecommendedDisplayRGBValue",vm:"3",version:"DICOM/retired"},"(0074,1024)":{tag:"(0074,1024)",vr:"IS",name:"RETIRED_BeamOrderIndexTrial",vm:"1",version:"DICOM/retired"},"(0074,1038)":{tag:"(0074,1038)",vr:"DS",name:"RETIRED_DoubleExposureMetersetTrial",vm:"1",version:"DICOM/retired"},"(0074,103A)":{tag:"(0074,103A)",vr:"DS",name:"RETIRED_DoubleExposureFieldDeltaTrial",vm:"4",version:"DICOM/retired"},"(0074,1220)":{tag:"(0074,1220)",vr:"SQ",name:"RETIRED_RelatedProcedureStepSequence",vm:"1",version:"DICOM/retired"},"(0074,1222)":{tag:"(0074,1222)",vr:"LO",name:"RETIRED_ProcedureStepRelationshipType",vm:"1",version:"DICOM/retired"},"(0088,0904)":{tag:"(0088,0904)",vr:"LO",name:"RETIRED_TopicTitle",vm:"1",version:"DICOM/retired"},"(0088,0906)":{tag:"(0088,0906)",vr:"ST",name:"RETIRED_TopicSubject",vm:"1",version:"DICOM/retired"},"(0088,0910)":{tag:"(0088,0910)",vr:"LO",name:"RETIRED_TopicAuthor",vm:"1",version:"DICOM/retired"},"(0088,0912)":{tag:"(0088,0912)",vr:"LO",name:"RETIRED_TopicKeywords",vm:"1-32",version:"DICOM/retired"},"(0400,0315)":{tag:"(0400,0315)",vr:"FL",name:"RETIRED_undefined",vm:"1",version:"DICOM/retired"},"(1000,0010)":{tag:"(1000,0010)",vr:"US",name:"RETIRED_EscapeTriplet",vm:"3",version:"DICOM/retired"},"(1000,0011)":{tag:"(1000,0011)",vr:"US",name:"RETIRED_RunLengthTriplet",vm:"3",version:"DICOM/retired"},"(1000,0012)":{tag:"(1000,0012)",vr:"US",name:"RETIRED_HuffmanTableSize",vm:"1",version:"DICOM/retired"},"(1000,0013)":{tag:"(1000,0013)",vr:"US",name:"RETIRED_HuffmanTableTriplet",vm:"3",version:"DICOM/retired"},"(1000,0014)":{tag:"(1000,0014)",vr:"US",name:"RETIRED_ShiftTableSize",vm:"1",version:"DICOM/retired"},"(1000,0015)":{tag:"(1000,0015)",vr:"US",name:"RETIRED_ShiftTableTriplet",vm:"3",version:"DICOM/retired"},"(1010,0004)":{tag:"(1010,0004)",vr:"US",name:"RETIRED_ZonalMap",vm:"1-n",version:"DICOM/retired"},"(2000,0062)":{tag:"(2000,0062)",vr:"CS",name:"RETIRED_ColorImagePrintingFlag",vm:"1",version:"DICOM/retired"},"(2000,0063)":{tag:"(2000,0063)",vr:"CS",name:"RETIRED_CollationFlag",vm:"1",version:"DICOM/retired"},"(2000,0065)":{tag:"(2000,0065)",vr:"CS",name:"RETIRED_AnnotationFlag",vm:"1",version:"DICOM/retired"},"(2000,0067)":{tag:"(2000,0067)",vr:"CS",name:"RETIRED_ImageOverlayFlag",vm:"1",version:"DICOM/retired"},"(2000,0069)":{tag:"(2000,0069)",vr:"CS",name:"RETIRED_PresentationLUTFlag",vm:"1",version:"DICOM/retired"},"(2000,006A)":{tag:"(2000,006A)",vr:"CS",name:"RETIRED_ImageBoxPresentationLUTFlag",vm:"1",version:"DICOM/retired"},"(2000,0510)":{tag:"(2000,0510)",vr:"SQ",name:"RETIRED_ReferencedStoredPrintSequence",vm:"1",version:"DICOM/retired"},"(2020,0130)":{tag:"(2020,0130)",vr:"SQ",name:"RETIRED_ReferencedImageOverlayBoxSequence",vm:"1",version:"DICOM/retired"},"(2020,0140)":{tag:"(2020,0140)",vr:"SQ",name:"RETIRED_ReferencedVOILUTBoxSequence",vm:"1",version:"DICOM/retired"},"(2040,0010)":{tag:"(2040,0010)",vr:"SQ",name:"RETIRED_ReferencedOverlayPlaneSequence",vm:"1",version:"DICOM/retired"},"(2040,0011)":{tag:"(2040,0011)",vr:"US",name:"RETIRED_ReferencedOverlayPlaneGroups",vm:"1-99",version:"DICOM/retired"},"(2040,0020)":{tag:"(2040,0020)",vr:"SQ",name:"RETIRED_OverlayPixelDataSequence",vm:"1",version:"DICOM/retired"},"(2040,0060)":{tag:"(2040,0060)",vr:"CS",name:"RETIRED_OverlayMagnificationType",vm:"1",version:"DICOM/retired"},"(2040,0070)":{tag:"(2040,0070)",vr:"CS",name:"RETIRED_OverlaySmoothingType",vm:"1",version:"DICOM/retired"},"(2040,0072)":{tag:"(2040,0072)",vr:"CS",name:"RETIRED_OverlayOrImageMagnification",vm:"1",version:"DICOM/retired"},"(2040,0074)":{tag:"(2040,0074)",vr:"US",name:"RETIRED_MagnifyToNumberOfColumns",vm:"1",version:"DICOM/retired"},"(2040,0080)":{tag:"(2040,0080)",vr:"CS",name:"RETIRED_OverlayForegroundDensity",vm:"1",version:"DICOM/retired"},"(2040,0082)":{tag:"(2040,0082)",vr:"CS",name:"RETIRED_OverlayBackgroundDensity",vm:"1",version:"DICOM/retired"},"(2040,0090)":{tag:"(2040,0090)",vr:"CS",name:"RETIRED_OverlayMode",vm:"1",version:"DICOM/retired"},"(2040,0100)":{tag:"(2040,0100)",vr:"CS",name:"RETIRED_ThresholdDensity",vm:"1",version:"DICOM/retired"},"(2040,0500)":{tag:"(2040,0500)",vr:"SQ",name:"RETIRED_ReferencedImageBoxSequenceRetired",vm:"1",version:"DICOM/retired"},"(2100,0010)":{tag:"(2100,0010)",vr:"SH",name:"RETIRED_PrintJobID",vm:"1",version:"DICOM/retired"},"(2100,0140)":{tag:"(2100,0140)",vr:"AE",name:"RETIRED_DestinationAE",vm:"1",version:"DICOM/retired"},"(2100,0500)":{tag:"(2100,0500)",vr:"SQ",name:"RETIRED_ReferencedPrintJobSequencePullStoredPrint",vm:"1",version:"DICOM/retired"},"(2110,0099)":{tag:"(2110,0099)",vr:"SH",name:"RETIRED_PrintQueueID",vm:"1",version:"DICOM/retired"},"(2120,0010)":{tag:"(2120,0010)",vr:"CS",name:"RETIRED_QueueStatus",vm:"1",version:"DICOM/retired"},"(2120,0050)":{tag:"(2120,0050)",vr:"SQ",name:"RETIRED_PrintJobDescriptionSequence",vm:"1",version:"DICOM/retired"},"(2120,0070)":{tag:"(2120,0070)",vr:"SQ",name:"RETIRED_ReferencedPrintJobSequence",vm:"1",version:"DICOM/retired"},"(2130,0010)":{tag:"(2130,0010)",vr:"SQ",name:"RETIRED_PrintManagementCapabilitiesSequence",vm:"1",version:"DICOM/retired"},"(2130,0015)":{tag:"(2130,0015)",vr:"SQ",name:"RETIRED_PrinterCharacteristicsSequence",vm:"1",version:"DICOM/retired"},"(2130,0030)":{tag:"(2130,0030)",vr:"SQ",name:"RETIRED_FilmBoxContentSequence",vm:"1",version:"DICOM/retired"},"(2130,0040)":{tag:"(2130,0040)",vr:"SQ",name:"RETIRED_ImageBoxContentSequence",vm:"1",version:"DICOM/retired"},"(2130,0050)":{tag:"(2130,0050)",vr:"SQ",name:"RETIRED_AnnotationContentSequence",vm:"1",version:"DICOM/retired"},"(2130,0060)":{tag:"(2130,0060)",vr:"SQ",name:"RETIRED_ImageOverlayBoxContentSequence",vm:"1",version:"DICOM/retired"},"(2130,0080)":{tag:"(2130,0080)",vr:"SQ",name:"RETIRED_PresentationLUTContentSequence",vm:"1",version:"DICOM/retired"},"(2130,00A0)":{tag:"(2130,00A0)",vr:"SQ",name:"RETIRED_ProposedStudySequence",vm:"1",version:"DICOM/retired"},"(2130,00C0)":{tag:"(2130,00C0)",vr:"SQ",name:"RETIRED_OriginalImageSequence",vm:"1",version:"DICOM/retired"},"(3006,00C0)":{tag:"(3006,00C0)",vr:"SQ",name:"RETIRED_FrameOfReferenceRelationshipSequence",vm:"1",version:"DICOM/retired"},"(3006,00C2)":{tag:"(3006,00C2)",vr:"UI",name:"RETIRED_RelatedFrameOfReferenceUID",vm:"1",version:"DICOM/retired"},"(3006,00C4)":{tag:"(3006,00C4)",vr:"CS",name:"RETIRED_FrameOfReferenceTransformationType",vm:"1",version:"DICOM/retired"},"(300A,0088)":{tag:"(300A,0088)",vr:"FL",name:"RETIRED_BeamDosePointDepth",vm:"1",version:"DICOM/retired"},"(300A,0089)":{tag:"(300A,0089)",vr:"FL",name:"RETIRED_BeamDosePointEquivalentDepth",vm:"1",version:"DICOM/retired"},"(300A,008A)":{tag:"(300A,008A)",vr:"FL",name:"RETIRED_BeamDosePointSSD",vm:"1",version:"DICOM/retired"},"(300A,0782)":{tag:"(300A,0782)",vr:"US",name:"RETIRED_undefined",vm:"1",version:"DICOM/retired"},"(4000,0010)":{tag:"(4000,0010)",vr:"LT",name:"RETIRED_Arbitrary",vm:"1",version:"DICOM/retired"},"(4000,4000)":{tag:"(4000,4000)",vr:"LT",name:"RETIRED_TextComments",vm:"1",version:"DICOM/retired"},"(4008,0040)":{tag:"(4008,0040)",vr:"SH",name:"RETIRED_ResultsID",vm:"1",version:"DICOM/retired"},"(4008,0042)":{tag:"(4008,0042)",vr:"LO",name:"RETIRED_ResultsIDIssuer",vm:"1",version:"DICOM/retired"},"(4008,0050)":{tag:"(4008,0050)",vr:"SQ",name:"RETIRED_ReferencedInterpretationSequence",vm:"1",version:"DICOM/retired"},"(4008,00FF)":{tag:"(4008,00FF)",vr:"CS",name:"RETIRED_ReportProductionStatusTrial",vm:"1",version:"DICOM/retired"},"(4008,0100)":{tag:"(4008,0100)",vr:"DA",name:"RETIRED_InterpretationRecordedDate",vm:"1",version:"DICOM/retired"},"(4008,0101)":{tag:"(4008,0101)",vr:"TM",name:"RETIRED_InterpretationRecordedTime",vm:"1",version:"DICOM/retired"},"(4008,0102)":{tag:"(4008,0102)",vr:"PN",name:"RETIRED_InterpretationRecorder",vm:"1",version:"DICOM/retired"},"(4008,0103)":{tag:"(4008,0103)",vr:"LO",name:"RETIRED_ReferenceToRecordedSound",vm:"1",version:"DICOM/retired"},"(4008,0108)":{tag:"(4008,0108)",vr:"DA",name:"RETIRED_InterpretationTranscriptionDate",vm:"1",version:"DICOM/retired"},"(4008,0109)":{tag:"(4008,0109)",vr:"TM",name:"RETIRED_InterpretationTranscriptionTime",vm:"1",version:"DICOM/retired"},"(4008,010A)":{tag:"(4008,010A)",vr:"PN",name:"RETIRED_InterpretationTranscriber",vm:"1",version:"DICOM/retired"},"(4008,010B)":{tag:"(4008,010B)",vr:"ST",name:"RETIRED_InterpretationText",vm:"1",version:"DICOM/retired"},"(4008,010C)":{tag:"(4008,010C)",vr:"PN",name:"RETIRED_InterpretationAuthor",vm:"1",version:"DICOM/retired"},"(4008,0111)":{tag:"(4008,0111)",vr:"SQ",name:"RETIRED_InterpretationApproverSequence",vm:"1",version:"DICOM/retired"},"(4008,0112)":{tag:"(4008,0112)",vr:"DA",name:"RETIRED_InterpretationApprovalDate",vm:"1",version:"DICOM/retired"},"(4008,0113)":{tag:"(4008,0113)",vr:"TM",name:"RETIRED_InterpretationApprovalTime",vm:"1",version:"DICOM/retired"},"(4008,0114)":{tag:"(4008,0114)",vr:"PN",name:"RETIRED_PhysicianApprovingInterpretation",vm:"1",version:"DICOM/retired"},"(4008,0115)":{tag:"(4008,0115)",vr:"LT",name:"RETIRED_InterpretationDiagnosisDescription",vm:"1",version:"DICOM/retired"},"(4008,0117)":{tag:"(4008,0117)",vr:"SQ",name:"RETIRED_InterpretationDiagnosisCodeSequence",vm:"1",version:"DICOM/retired"},"(4008,0118)":{tag:"(4008,0118)",vr:"SQ",name:"RETIRED_ResultsDistributionListSequence",vm:"1",version:"DICOM/retired"},"(4008,0119)":{tag:"(4008,0119)",vr:"PN",name:"RETIRED_DistributionName",vm:"1",version:"DICOM/retired"},"(4008,011A)":{tag:"(4008,011A)",vr:"LO",name:"RETIRED_DistributionAddress",vm:"1",version:"DICOM/retired"},"(4008,0200)":{tag:"(4008,0200)",vr:"SH",name:"RETIRED_InterpretationID",vm:"1",version:"DICOM/retired"},"(4008,0202)":{tag:"(4008,0202)",vr:"LO",name:"RETIRED_InterpretationIDIssuer",vm:"1",version:"DICOM/retired"},"(4008,0210)":{tag:"(4008,0210)",vr:"CS",name:"RETIRED_InterpretationTypeID",vm:"1",version:"DICOM/retired"},"(4008,0212)":{tag:"(4008,0212)",vr:"CS",name:"RETIRED_InterpretationStatusID",vm:"1",version:"DICOM/retired"},"(4008,0300)":{tag:"(4008,0300)",vr:"ST",name:"RETIRED_Impressions",vm:"1",version:"DICOM/retired"},"(4008,4000)":{tag:"(4008,4000)",vr:"ST",name:"RETIRED_ResultsComments",vm:"1",version:"DICOM/retired"},"(5000-50FF,0005)":{tag:"(5000-50FF,0005)",vr:"US",name:"RETIRED_CurveDimensions",vm:"1",version:"DICOM/retired"},"(5000-50FF,0010)":{tag:"(5000-50FF,0010)",vr:"US",name:"RETIRED_NumberOfPoints",vm:"1",version:"DICOM/retired"},"(5000-50FF,0020)":{tag:"(5000-50FF,0020)",vr:"CS",name:"RETIRED_TypeOfData",vm:"1",version:"DICOM/retired"},"(5000-50FF,0022)":{tag:"(5000-50FF,0022)",vr:"LO",name:"RETIRED_CurveDescription",vm:"1",version:"DICOM/retired"},"(5000-50FF,0030)":{tag:"(5000-50FF,0030)",vr:"SH",name:"RETIRED_AxisUnits",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0040)":{tag:"(5000-50FF,0040)",vr:"SH",name:"RETIRED_AxisLabels",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0103)":{tag:"(5000-50FF,0103)",vr:"US",name:"RETIRED_DataValueRepresentation",vm:"1",version:"DICOM/retired"},"(5000-50FF,0104)":{tag:"(5000-50FF,0104)",vr:"US",name:"RETIRED_MinimumCoordinateValue",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0105)":{tag:"(5000-50FF,0105)",vr:"US",name:"RETIRED_MaximumCoordinateValue",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0106)":{tag:"(5000-50FF,0106)",vr:"SH",name:"RETIRED_CurveRange",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0110)":{tag:"(5000-50FF,0110)",vr:"US",name:"RETIRED_CurveDataDescriptor",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0112)":{tag:"(5000-50FF,0112)",vr:"US",name:"RETIRED_CoordinateStartValue",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,0114)":{tag:"(5000-50FF,0114)",vr:"US",name:"RETIRED_CoordinateStepValue",vm:"1-n",version:"DICOM/retired"},"(5000-50FF,1001)":{tag:"(5000-50FF,1001)",vr:"CS",name:"RETIRED_CurveActivationLayer",vm:"1",version:"DICOM/retired"},"(5000-50FF,2000)":{tag:"(5000-50FF,2000)",vr:"US",name:"RETIRED_AudioType",vm:"1",version:"DICOM/retired"},"(5000-50FF,2002)":{tag:"(5000-50FF,2002)",vr:"US",name:"RETIRED_AudioSampleFormat",vm:"1",version:"DICOM/retired"},"(5000-50FF,2004)":{tag:"(5000-50FF,2004)",vr:"US",name:"RETIRED_NumberOfChannels",vm:"1",version:"DICOM/retired"},"(5000-50FF,2006)":{tag:"(5000-50FF,2006)",vr:"UL",name:"RETIRED_NumberOfSamples",vm:"1",version:"DICOM/retired"},"(5000-50FF,2008)":{tag:"(5000-50FF,2008)",vr:"UL",name:"RETIRED_SampleRate",vm:"1",version:"DICOM/retired"},"(5000-50FF,200A)":{tag:"(5000-50FF,200A)",vr:"UL",name:"RETIRED_TotalTime",vm:"1",version:"DICOM/retired"},"(5000-50FF,200C)":{tag:"(5000-50FF,200C)",vr:"ox",name:"RETIRED_AudioSampleData",vm:"1",version:"DICOM/retired"},"(5000-50FF,200E)":{tag:"(5000-50FF,200E)",vr:"LT",name:"RETIRED_AudioComments",vm:"1",version:"DICOM/retired"},"(5000-50FF,2500)":{tag:"(5000-50FF,2500)",vr:"LO",name:"RETIRED_CurveLabel",vm:"1",version:"DICOM/retired"},"(5000-50FF,2600)":{tag:"(5000-50FF,2600)",vr:"SQ",name:"RETIRED_CurveReferencedOverlaySequence",vm:"1",version:"DICOM/retired"},"(5000-50FF,2610)":{tag:"(5000-50FF,2610)",vr:"US",name:"RETIRED_CurveReferencedOverlayGroup",vm:"1",version:"DICOM/retired"},"(5000-50FF,3000)":{tag:"(5000-50FF,3000)",vr:"ox",name:"RETIRED_CurveData",vm:"1",version:"DICOM/retired"},"(6000-60FF,0012)":{tag:"(6000-60FF,0012)",vr:"US",name:"RETIRED_OverlayPlanes",vm:"1",version:"DICOM/retired"},"(6000-60FF,0052)":{tag:"(6000-60FF,0052)",vr:"US",name:"RETIRED_OverlayPlaneOrigin",vm:"1",version:"DICOM/retired"},"(6000-60FF,0060)":{tag:"(6000-60FF,0060)",vr:"CS",name:"RETIRED_OverlayCompressionCode",vm:"1",version:"DICOM/retired"},"(6000-60FF,0061)":{tag:"(6000-60FF,0061)",vr:"SH",name:"RETIRED_OverlayCompressionOriginator",vm:"1",version:"DICOM/retired"},"(6000-60FF,0062)":{tag:"(6000-60FF,0062)",vr:"SH",name:"RETIRED_OverlayCompressionLabel",vm:"1",version:"DICOM/retired"},"(6000-60FF,0063)":{tag:"(6000-60FF,0063)",vr:"CS",name:"RETIRED_OverlayCompressionDescription",vm:"1",version:"DICOM/retired"},"(6000-60FF,0066)":{tag:"(6000-60FF,0066)",vr:"AT",name:"RETIRED_OverlayCompressionStepPointers",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,0068)":{tag:"(6000-60FF,0068)",vr:"US",name:"RETIRED_OverlayRepeatInterval",vm:"1",version:"DICOM/retired"},"(6000-60FF,0069)":{tag:"(6000-60FF,0069)",vr:"US",name:"RETIRED_OverlayBitsGrouped",vm:"1",version:"DICOM/retired"},"(6000-60FF,0110)":{tag:"(6000-60FF,0110)",vr:"CS",name:"RETIRED_OverlayFormat",vm:"1",version:"DICOM/retired"},"(6000-60FF,0200)":{tag:"(6000-60FF,0200)",vr:"US",name:"RETIRED_OverlayLocation",vm:"1",version:"DICOM/retired"},"(6000-60FF,0800)":{tag:"(6000-60FF,0800)",vr:"CS",name:"RETIRED_OverlayCodeLabel",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,0802)":{tag:"(6000-60FF,0802)",vr:"US",name:"RETIRED_OverlayNumberOfTables",vm:"1",version:"DICOM/retired"},"(6000-60FF,0803)":{tag:"(6000-60FF,0803)",vr:"AT",name:"RETIRED_OverlayCodeTableLocation",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,0804)":{tag:"(6000-60FF,0804)",vr:"US",name:"RETIRED_OverlayBitsForCodeWord",vm:"1",version:"DICOM/retired"},"(6000-60FF,1100)":{tag:"(6000-60FF,1100)",vr:"US",name:"RETIRED_OverlayDescriptorGray",vm:"1",version:"DICOM/retired"},"(6000-60FF,1101)":{tag:"(6000-60FF,1101)",vr:"US",name:"RETIRED_OverlayDescriptorRed",vm:"1",version:"DICOM/retired"},"(6000-60FF,1102)":{tag:"(6000-60FF,1102)",vr:"US",name:"RETIRED_OverlayDescriptorGreen",vm:"1",version:"DICOM/retired"},"(6000-60FF,1103)":{tag:"(6000-60FF,1103)",vr:"US",name:"RETIRED_OverlayDescriptorBlue",vm:"1",version:"DICOM/retired"},"(6000-60FF,1200)":{tag:"(6000-60FF,1200)",vr:"US",name:"RETIRED_OverlaysGray",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,1201)":{tag:"(6000-60FF,1201)",vr:"US",name:"RETIRED_OverlaysRed",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,1202)":{tag:"(6000-60FF,1202)",vr:"US",name:"RETIRED_OverlaysGreen",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,1203)":{tag:"(6000-60FF,1203)",vr:"US",name:"RETIRED_OverlaysBlue",vm:"1-n",version:"DICOM/retired"},"(6000-60FF,4000)":{tag:"(6000-60FF,4000)",vr:"LT",name:"RETIRED_OverlayComments",vm:"1",version:"DICOM/retired"},"(7FE0,0020)":{tag:"(7FE0,0020)",vr:"OW",name:"RETIRED_CoefficientsSDVN",vm:"1",version:"DICOM/retired"},"(7FE0,0030)":{tag:"(7FE0,0030)",vr:"OW",name:"RETIRED_CoefficientsSDHN",vm:"1",version:"DICOM/retired"},"(7FE0,0040)":{tag:"(7FE0,0040)",vr:"OW",name:"RETIRED_CoefficientsSDDN",vm:"1",version:"DICOM/retired"},"(7F00-7FFF,0010)":{tag:"(7F00-7FFF,0010)",vr:"ox",name:"RETIRED_VariablePixelData",vm:"1",version:"DICOM/retired"},"(7F00-7FFF,0011)":{tag:"(7F00-7FFF,0011)",vr:"US",name:"RETIRED_VariableNextDataGroup",vm:"1",version:"DICOM/retired"},"(7F00-7FFF,0020)":{tag:"(7F00-7FFF,0020)",vr:"OW",name:"RETIRED_VariableCoefficientsSDVN",vm:"1",version:"DICOM/retired"},"(7F00-7FFF,0030)":{tag:"(7F00-7FFF,0030)",vr:"OW",name:"RETIRED_VariableCoefficientsSDHN",vm:"1",version:"DICOM/retired"},"(7F00-7FFF,0040)":{tag:"(7F00-7FFF,0040)",vr:"OW",name:"RETIRED_VariableCoefficientsSDDN",vm:"1",version:"DICOM/retired"},"":{tag:""},'(0019,"1.2.840.113681",10)':{tag:'(0019,"1.2.840.113681",10)',vr:"ST",name:"CRImageParamsCommon",vm:"1",version:"PrivateTag"},'(0019,"1.2.840.113681",11)':{tag:'(0019,"1.2.840.113681",11)',vr:"ST",name:"CRImageIPParamsSingle",vm:"1",version:"PrivateTag"},'(0019,"1.2.840.113681",12)':{tag:'(0019,"1.2.840.113681",12)',vr:"ST",name:"CRImageIPParamsLeft",vm:"1",version:"PrivateTag"},'(0019,"1.2.840.113681",13)':{tag:'(0019,"1.2.840.113681",13)',vr:"ST",name:"CRImageIPParamsRight",vm:"1",version:"PrivateTag"},'(0087,"1.2.840.113708.794.1.1.2.0",10)':{tag:'(0087,"1.2.840.113708.794.1.1.2.0",10)',vr:"CS",name:"MediaType",vm:"1",version:"PrivateTag"},'(0087,"1.2.840.113708.794.1.1.2.0",20)':{tag:'(0087,"1.2.840.113708.794.1.1.2.0",20)',vr:"CS",name:"MediaLocation",vm:"1",version:"PrivateTag"},'(0087,"1.2.840.113708.794.1.1.2.0",50)':{tag:'(0087,"1.2.840.113708.794.1.1.2.0",50)',vr:"IS",name:"EstimatedRetrieveTime",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",00)':{tag:'(0009,"ACUSON",00)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",01)':{tag:'(0009,"ACUSON",01)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",02)':{tag:'(0009,"ACUSON",02)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",03)':{tag:'(0009,"ACUSON",03)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",04)':{tag:'(0009,"ACUSON",04)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",05)':{tag:'(0009,"ACUSON",05)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",06)':{tag:'(0009,"ACUSON",06)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",07)':{tag:'(0009,"ACUSON",07)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",08)':{tag:'(0009,"ACUSON",08)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",09)':{tag:'(0009,"ACUSON",09)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0a)':{tag:'(0009,"ACUSON",0a)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0b)':{tag:'(0009,"ACUSON",0b)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0c)':{tag:'(0009,"ACUSON",0c)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0d)':{tag:'(0009,"ACUSON",0d)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0e)':{tag:'(0009,"ACUSON",0e)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",0f)':{tag:'(0009,"ACUSON",0f)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",10)':{tag:'(0009,"ACUSON",10)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",11)':{tag:'(0009,"ACUSON",11)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",12)':{tag:'(0009,"ACUSON",12)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",13)':{tag:'(0009,"ACUSON",13)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",14)':{tag:'(0009,"ACUSON",14)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ACUSON",15)':{tag:'(0009,"ACUSON",15)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0003,"AEGIS_DICOM_2.00",00)':{tag:'(0003,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0005,"AEGIS_DICOM_2.00",00)':{tag:'(0005,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0009,"AEGIS_DICOM_2.00",00)':{tag:'(0009,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"AEGIS_DICOM_2.00",00)':{tag:'(0019,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0029,"AEGIS_DICOM_2.00",00)':{tag:'(0029,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(1369,"AEGIS_DICOM_2.00",00)':{tag:'(1369,"AEGIS_DICOM_2.00",00)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0009,"AGFA",10)':{tag:'(0009,"AGFA",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"AGFA",11)':{tag:'(0009,"AGFA",11)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"AGFA",13)':{tag:'(0009,"AGFA",13)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"AGFA",14)':{tag:'(0009,"AGFA",14)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"AGFA",15)':{tag:'(0009,"AGFA",15)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0031,"AGFA PACS Archive Mirroring 1.0",00)':{tag:'(0031,"AGFA PACS Archive Mirroring 1.0",00)',vr:"CS",name:"StudyStatus",vm:"1",version:"PrivateTag"},'(0031,"AGFA PACS Archive Mirroring 1.0",01)':{tag:'(0031,"AGFA PACS Archive Mirroring 1.0",01)',vr:"UL",name:"DateTimeVerified",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS IP",10)':{tag:'(0029,"CAMTRONICS IP",10)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS IP",20)':{tag:'(0029,"CAMTRONICS IP",20)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS IP",30)':{tag:'(0029,"CAMTRONICS IP",30)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS IP",40)':{tag:'(0029,"CAMTRONICS IP",40)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",10)':{tag:'(0029,"CAMTRONICS",10)',vr:"LT",name:"Commentline",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",20)':{tag:'(0029,"CAMTRONICS",20)',vr:"DS",name:"EdgeEnhancementCoefficient",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",50)':{tag:'(0029,"CAMTRONICS",50)',vr:"LT",name:"SceneText",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",60)':{tag:'(0029,"CAMTRONICS",60)',vr:"LT",name:"ImageText",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",70)':{tag:'(0029,"CAMTRONICS",70)',vr:"IS",name:"PixelShiftHorizontal",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",80)':{tag:'(0029,"CAMTRONICS",80)',vr:"IS",name:"PixelShiftVertical",vm:"1",version:"PrivateTag"},'(0029,"CAMTRONICS",90)':{tag:'(0029,"CAMTRONICS",90)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"CARDIO-D.R. 1.0",00)':{tag:'(0009,"CARDIO-D.R. 1.0",00)',vr:"UL",name:"FileLocation",vm:"1",version:"PrivateTag"},'(0009,"CARDIO-D.R. 1.0",01)':{tag:'(0009,"CARDIO-D.R. 1.0",01)',vr:"UL",name:"FileSize",vm:"1",version:"PrivateTag"},'(0009,"CARDIO-D.R. 1.0",40)':{tag:'(0009,"CARDIO-D.R. 1.0",40)',vr:"SQ",name:"AlternateImageSequence",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",00)':{tag:'(0019,"CARDIO-D.R. 1.0",00)',vr:"CS",name:"ImageBlankingShape",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",02)':{tag:'(0019,"CARDIO-D.R. 1.0",02)',vr:"IS",name:"ImageBlankingLeftVerticalEdge",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",04)':{tag:'(0019,"CARDIO-D.R. 1.0",04)',vr:"IS",name:"ImageBlankingRightVerticalEdge",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",06)':{tag:'(0019,"CARDIO-D.R. 1.0",06)',vr:"IS",name:"ImageBlankingUpperHorizontalEdge",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",08)':{tag:'(0019,"CARDIO-D.R. 1.0",08)',vr:"IS",name:"ImageBlankingLowerHorizontalEdge",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",10)':{tag:'(0019,"CARDIO-D.R. 1.0",10)',vr:"IS",name:"CenterOfCircularImageBlanking",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",12)':{tag:'(0019,"CARDIO-D.R. 1.0",12)',vr:"IS",name:"RadiusOfCircularImageBlanking",vm:"1",version:"PrivateTag"},'(0019,"CARDIO-D.R. 1.0",30)':{tag:'(0019,"CARDIO-D.R. 1.0",30)',vr:"UL",name:"MaximumImageFrameSize",vm:"1",version:"PrivateTag"},'(0021,"CARDIO-D.R. 1.0",13)':{tag:'(0021,"CARDIO-D.R. 1.0",13)',vr:"IS",name:"ImageSequenceNumber",vm:"1",version:"PrivateTag"},'(0029,"CARDIO-D.R. 1.0",00)':{tag:'(0029,"CARDIO-D.R. 1.0",00)',vr:"SQ",name:"EdgeEnhancementSequence",vm:"1",version:"PrivateTag"},'(0029,"CARDIO-D.R. 1.0",01)':{tag:'(0029,"CARDIO-D.R. 1.0",01)',vr:"US",name:"ConvolutionKernelSize",vm:"2",version:"PrivateTag"},'(0029,"CARDIO-D.R. 1.0",02)':{tag:'(0029,"CARDIO-D.R. 1.0",02)',vr:"DS",name:"ConvolutionKernelCoefficients",vm:"1-n",version:"PrivateTag"},'(0029,"CARDIO-D.R. 1.0",03)':{tag:'(0029,"CARDIO-D.R. 1.0",03)',vr:"DS",name:"EdgeEnhancementGain",vm:"1",version:"PrivateTag"},'(0025,"CMR42 CIRCLECVI",1010)':{tag:'(0025,"CMR42 CIRCLECVI",1010)',vr:"LO",name:"WorkspaceID",vm:"1",version:"PrivateTag"},'(0025,"CMR42 CIRCLECVI",1020)':{tag:'(0025,"CMR42 CIRCLECVI",1020)',vr:"LO",name:"WorkspaceTimeString",vm:"1",version:"PrivateTag"},'(0025,"CMR42 CIRCLECVI",1030)':{tag:'(0025,"CMR42 CIRCLECVI",1030)',vr:"OB",name:"WorkspaceStream",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",00)':{tag:'(0009,"DCMTK_ANONYMIZER",00)',vr:"SQ",name:"AnonymizerUIDMap",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",10)':{tag:'(0009,"DCMTK_ANONYMIZER",10)',vr:"UI",name:"AnonymizerUIDKey",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",20)':{tag:'(0009,"DCMTK_ANONYMIZER",20)',vr:"UI",name:"AnonymizerUIDValue",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",30)':{tag:'(0009,"DCMTK_ANONYMIZER",30)',vr:"SQ",name:"AnonymizerPatientIDMap",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",40)':{tag:'(0009,"DCMTK_ANONYMIZER",40)',vr:"LO",name:"AnonymizerPatientIDKey",vm:"1",version:"PrivateTag"},'(0009,"DCMTK_ANONYMIZER",50)':{tag:'(0009,"DCMTK_ANONYMIZER",50)',vr:"LO",name:"AnonymizerPatientIDValue",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",22)':{tag:'(0019,"DIDI TO PCR 1.1",22)',vr:"UN",name:"RouteAET",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",23)':{tag:'(0019,"DIDI TO PCR 1.1",23)',vr:"DS",name:"PCRPrintScale",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",24)':{tag:'(0019,"DIDI TO PCR 1.1",24)',vr:"UN",name:"PCRPrintJobEnd",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",25)':{tag:'(0019,"DIDI TO PCR 1.1",25)',vr:"IS",name:"PCRNoFilmCopies",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",26)':{tag:'(0019,"DIDI TO PCR 1.1",26)',vr:"IS",name:"PCRFilmLayoutPosition",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",27)':{tag:'(0019,"DIDI TO PCR 1.1",27)',vr:"UN",name:"PCRPrintReportName",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",70)':{tag:'(0019,"DIDI TO PCR 1.1",70)',vr:"UN",name:"RADProtocolPrinter",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",71)':{tag:'(0019,"DIDI TO PCR 1.1",71)',vr:"UN",name:"RADProtocolMedium",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",90)':{tag:'(0019,"DIDI TO PCR 1.1",90)',vr:"LO",name:"UnprocessedFlag",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",91)':{tag:'(0019,"DIDI TO PCR 1.1",91)',vr:"UN",name:"KeyValues",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",92)':{tag:'(0019,"DIDI TO PCR 1.1",92)',vr:"UN",name:"DestinationPostprocessingFunction",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A0)':{tag:'(0019,"DIDI TO PCR 1.1",A0)',vr:"UN",name:"Version",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A1)':{tag:'(0019,"DIDI TO PCR 1.1",A1)',vr:"UN",name:"RangingMode",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A2)':{tag:'(0019,"DIDI TO PCR 1.1",A2)',vr:"UN",name:"AbdomenBrightness",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A3)':{tag:'(0019,"DIDI TO PCR 1.1",A3)',vr:"UN",name:"FixedBrightness",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A4)':{tag:'(0019,"DIDI TO PCR 1.1",A4)',vr:"UN",name:"DetailContrast",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A5)':{tag:'(0019,"DIDI TO PCR 1.1",A5)',vr:"UN",name:"ContrastBalance",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A6)':{tag:'(0019,"DIDI TO PCR 1.1",A6)',vr:"UN",name:"StructureBoost",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A7)':{tag:'(0019,"DIDI TO PCR 1.1",A7)',vr:"UN",name:"StructurePreference",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A8)':{tag:'(0019,"DIDI TO PCR 1.1",A8)',vr:"UN",name:"NoiseRobustness",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",A9)':{tag:'(0019,"DIDI TO PCR 1.1",A9)',vr:"UN",name:"NoiseDoseLimit",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AA)':{tag:'(0019,"DIDI TO PCR 1.1",AA)',vr:"UN",name:"NoiseDoseStep",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AB)':{tag:'(0019,"DIDI TO PCR 1.1",AB)',vr:"UN",name:"NoiseFrequencyLimit",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AC)':{tag:'(0019,"DIDI TO PCR 1.1",AC)',vr:"UN",name:"WeakContrastLimit",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AD)':{tag:'(0019,"DIDI TO PCR 1.1",AD)',vr:"UN",name:"StrongContrastLimit",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AE)':{tag:'(0019,"DIDI TO PCR 1.1",AE)',vr:"UN",name:"StructureBoostOffset",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",AF)':{tag:'(0019,"DIDI TO PCR 1.1",AF)',vr:"UN",name:"SmoothGain",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B0)':{tag:'(0019,"DIDI TO PCR 1.1",B0)',vr:"UN",name:"MeasureField1",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B1)':{tag:'(0019,"DIDI TO PCR 1.1",B1)',vr:"UN",name:"MeasureField2",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B2)':{tag:'(0019,"DIDI TO PCR 1.1",B2)',vr:"UN",name:"KeyPercentile1",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B3)':{tag:'(0019,"DIDI TO PCR 1.1",B3)',vr:"UN",name:"KeyPercentile2",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B4)':{tag:'(0019,"DIDI TO PCR 1.1",B4)',vr:"UN",name:"DensityLUT",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B5)':{tag:'(0019,"DIDI TO PCR 1.1",B5)',vr:"UN",name:"Brightness",vm:"1",version:"PrivateTag"},'(0019,"DIDI TO PCR 1.1",B6)':{tag:'(0019,"DIDI TO PCR 1.1",B6)',vr:"UN",name:"Gamma",vm:"1",version:"PrivateTag"},'(0089,"DIDI TO PCR 1.1",10)':{tag:'(0089,"DIDI TO PCR 1.1",10)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"DIGISCAN IMAGE",31)':{tag:'(0029,"DIGISCAN IMAGE",31)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0029,"DIGISCAN IMAGE",32)':{tag:'(0029,"DIGISCAN IMAGE",32)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0029,"DIGISCAN IMAGE",33)':{tag:'(0029,"DIGISCAN IMAGE",33)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"DIGISCAN IMAGE",34)':{tag:'(0029,"DIGISCAN IMAGE",34)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(7001-o-70ff,"DLX_ANNOT_01",04)':{tag:'(7001-o-70ff,"DLX_ANNOT_01",04)',vr:"ST",name:"TextAnnotation",vm:"1",version:"PrivateTag"},'(7001-o-70ff,"DLX_ANNOT_01",05)':{tag:'(7001-o-70ff,"DLX_ANNOT_01",05)',vr:"IS",name:"Box",vm:"2",version:"PrivateTag"},'(7001-o-70ff,"DLX_ANNOT_01",07)':{tag:'(7001-o-70ff,"DLX_ANNOT_01",07)',vr:"IS",name:"ArrowEnd",vm:"2",version:"PrivateTag"},'(0015,"DLX_EXAMS_01",01)':{tag:'(0015,"DLX_EXAMS_01",01)',vr:"DS",name:"StenosisCalibrationRatio",vm:"1",version:"PrivateTag"},'(0015,"DLX_EXAMS_01",02)':{tag:'(0015,"DLX_EXAMS_01",02)',vr:"DS",name:"StenosisMagnification",vm:"1",version:"PrivateTag"},'(0015,"DLX_EXAMS_01",03)':{tag:'(0015,"DLX_EXAMS_01",03)',vr:"DS",name:"CardiacCalibrationRatio",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"DLX_LKUP_01",01)':{tag:'(6001-o-60ff,"DLX_LKUP_01",01)',vr:"US",name:"GrayPaletteColorLookupTableDescriptor",vm:"3",version:"PrivateTag"},'(6001-o-60ff,"DLX_LKUP_01",02)':{tag:'(6001-o-60ff,"DLX_LKUP_01",02)',vr:"US",name:"GrayPaletteColorLookupTableData",vm:"1",version:"PrivateTag"},'(0011,"DLX_PATNT_01",01)':{tag:'(0011,"DLX_PATNT_01",01)',vr:"LT",name:"PatientDOB",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",01)':{tag:'(0019,"DLX_SERIE_01",01)',vr:"DS",name:"AngleValueLArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",02)':{tag:'(0019,"DLX_SERIE_01",02)',vr:"DS",name:"AngleValuePArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",03)':{tag:'(0019,"DLX_SERIE_01",03)',vr:"DS",name:"AngleValueCArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",04)':{tag:'(0019,"DLX_SERIE_01",04)',vr:"CS",name:"AngleLabelLArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",05)':{tag:'(0019,"DLX_SERIE_01",05)',vr:"CS",name:"AngleLabelPArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",06)':{tag:'(0019,"DLX_SERIE_01",06)',vr:"CS",name:"AngleLabelCArm",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",07)':{tag:'(0019,"DLX_SERIE_01",07)',vr:"ST",name:"ProcedureName",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",08)':{tag:'(0019,"DLX_SERIE_01",08)',vr:"ST",name:"ExamName",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",09)':{tag:'(0019,"DLX_SERIE_01",09)',vr:"SH",name:"PatientSize",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",0a)':{tag:'(0019,"DLX_SERIE_01",0a)',vr:"IS",name:"RecordView",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",10)':{tag:'(0019,"DLX_SERIE_01",10)',vr:"DS",name:"InjectorDelay",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",11)':{tag:'(0019,"DLX_SERIE_01",11)',vr:"CS",name:"AutoInject",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",14)':{tag:'(0019,"DLX_SERIE_01",14)',vr:"IS",name:"AcquisitionMode",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",15)':{tag:'(0019,"DLX_SERIE_01",15)',vr:"CS",name:"CameraRotationEnabled",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",16)':{tag:'(0019,"DLX_SERIE_01",16)',vr:"CS",name:"ReverseSweep",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",17)':{tag:'(0019,"DLX_SERIE_01",17)',vr:"IS",name:"SpatialFilterStrength",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",18)':{tag:'(0019,"DLX_SERIE_01",18)',vr:"IS",name:"ZoomFactor",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",19)':{tag:'(0019,"DLX_SERIE_01",19)',vr:"IS",name:"XZoomCenter",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1a)':{tag:'(0019,"DLX_SERIE_01",1a)',vr:"IS",name:"YZoomCenter",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1b)':{tag:'(0019,"DLX_SERIE_01",1b)',vr:"DS",name:"Focus",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1c)':{tag:'(0019,"DLX_SERIE_01",1c)',vr:"CS",name:"Dose",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1d)':{tag:'(0019,"DLX_SERIE_01",1d)',vr:"IS",name:"SideMark",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1e)':{tag:'(0019,"DLX_SERIE_01",1e)',vr:"IS",name:"PercentageLandscape",vm:"1",version:"PrivateTag"},'(0019,"DLX_SERIE_01",1f)':{tag:'(0019,"DLX_SERIE_01",1f)',vr:"DS",name:"ExposureDuration",vm:"1",version:"PrivateTag"},'(00E1,"ELSCINT1",01)':{tag:'(00E1,"ELSCINT1",01)',vr:"US",name:"DataDictionaryVersion",vm:"1",version:"PrivateTag"},'(00E1,"ELSCINT1",14)':{tag:'(00E1,"ELSCINT1",14)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(00E1,"ELSCINT1",22)':{tag:'(00E1,"ELSCINT1",22)',vr:"DS",name:"Unknown",vm:"2",version:"PrivateTag"},'(00E1,"ELSCINT1",23)':{tag:'(00E1,"ELSCINT1",23)',vr:"DS",name:"Unknown",vm:"2",version:"PrivateTag"},'(00E1,"ELSCINT1",24)':{tag:'(00E1,"ELSCINT1",24)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(00E1,"ELSCINT1",25)':{tag:'(00E1,"ELSCINT1",25)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(00E1,"ELSCINT1",40)':{tag:'(00E1,"ELSCINT1",40)',vr:"SH",name:"OffsetFromCTMRImages",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",00)':{tag:'(0601,"ELSCINT1",00)',vr:"SH",name:"ImplementationVersion",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",20)':{tag:'(0601,"ELSCINT1",20)',vr:"DS",name:"RelativeTablePosition",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",21)':{tag:'(0601,"ELSCINT1",21)',vr:"DS",name:"RelativeTableHeight",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",30)':{tag:'(0601,"ELSCINT1",30)',vr:"SH",name:"SurviewDirection",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",31)':{tag:'(0601,"ELSCINT1",31)',vr:"DS",name:"SurviewLength",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",50)':{tag:'(0601,"ELSCINT1",50)',vr:"SH",name:"ImageViewType",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",70)':{tag:'(0601,"ELSCINT1",70)',vr:"DS",name:"BatchNumber",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",71)':{tag:'(0601,"ELSCINT1",71)',vr:"DS",name:"BatchSize",vm:"1",version:"PrivateTag"},'(0601,"ELSCINT1",72)':{tag:'(0601,"ELSCINT1",72)',vr:"DS",name:"BatchSliceNumber",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",04)':{tag:'(0009,"FDMS 1.0",04)',vr:"SH",name:"ImageControlUnit",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",05)':{tag:'(0009,"FDMS 1.0",05)',vr:"OW",name:"ImageUID",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",06)':{tag:'(0009,"FDMS 1.0",06)',vr:"OW",name:"RouteImageUID",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",08)':{tag:'(0009,"FDMS 1.0",08)',vr:"UL",name:"ImageDisplayInformationVersionNo",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",09)':{tag:'(0009,"FDMS 1.0",09)',vr:"UL",name:"PatientInformationVersionNo",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",0C)':{tag:'(0009,"FDMS 1.0",0C)',vr:"OW",name:"FilmUID",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",10)':{tag:'(0009,"FDMS 1.0",10)',vr:"CS",name:"ExposureUnitTypeCode",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",80)':{tag:'(0009,"FDMS 1.0",80)',vr:"LO",name:"KanjiHospitalName",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",90)':{tag:'(0009,"FDMS 1.0",90)',vr:"ST",name:"DistributionCode",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",92)':{tag:'(0009,"FDMS 1.0",92)',vr:"SH",name:"KanjiDepartmentName",vm:"1",version:"PrivateTag"},'(0009,"FDMS 1.0",F0)':{tag:'(0009,"FDMS 1.0",F0)',vr:"CS",name:"BlackeningProcessFlag",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",15)':{tag:'(0019,"FDMS 1.0",15)',vr:"LO",name:"KanjiBodyPartForExposure",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",32)':{tag:'(0019,"FDMS 1.0",32)',vr:"LO",name:"KanjiMenuName",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",40)':{tag:'(0019,"FDMS 1.0",40)',vr:"CS",name:"ImageProcessingType",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",50)':{tag:'(0019,"FDMS 1.0",50)',vr:"CS",name:"EDRMode",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",60)':{tag:'(0019,"FDMS 1.0",60)',vr:"SH",name:"RadiographersCode",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",70)':{tag:'(0019,"FDMS 1.0",70)',vr:"IS",name:"SplitExposureFormat",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",71)':{tag:'(0019,"FDMS 1.0",71)',vr:"IS",name:"NoOfSplitExposureFrames",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",80)':{tag:'(0019,"FDMS 1.0",80)',vr:"IS",name:"ReadingPositionSpecification",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",81)':{tag:'(0019,"FDMS 1.0",81)',vr:"IS",name:"ReadingSensitivityCenter",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",90)':{tag:'(0019,"FDMS 1.0",90)',vr:"SH",name:"FilmAnnotationCharacterString1",vm:"1",version:"PrivateTag"},'(0019,"FDMS 1.0",91)':{tag:'(0019,"FDMS 1.0",91)',vr:"SH",name:"FilmAnnotationCharacterString2",vm:"1",version:"PrivateTag"},'(0021,"FDMS 1.0",10)':{tag:'(0021,"FDMS 1.0",10)',vr:"CS",name:"FCRImageID",vm:"1",version:"PrivateTag"},'(0021,"FDMS 1.0",30)':{tag:'(0021,"FDMS 1.0",30)',vr:"CS",name:"SetNo",vm:"1",version:"PrivateTag"},'(0021,"FDMS 1.0",40)':{tag:'(0021,"FDMS 1.0",40)',vr:"IS",name:"ImageNoInTheSet",vm:"1",version:"PrivateTag"},'(0021,"FDMS 1.0",50)':{tag:'(0021,"FDMS 1.0",50)',vr:"CS",name:"PairProcessingInformation",vm:"1",version:"PrivateTag"},'(0021,"FDMS 1.0",80)':{tag:'(0021,"FDMS 1.0",80)',vr:"OB",name:"EquipmentTypeSpecificInformation",vm:"1",version:"PrivateTag"},'(0023,"FDMS 1.0",10)':{tag:'(0023,"FDMS 1.0",10)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0023,"FDMS 1.0",20)':{tag:'(0023,"FDMS 1.0",20)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0023,"FDMS 1.0",30)':{tag:'(0023,"FDMS 1.0",30)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",10)':{tag:'(0025,"FDMS 1.0",10)',vr:"US",name:"RelativeLightEmissionAmountSk",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",11)':{tag:'(0025,"FDMS 1.0",11)',vr:"US",name:"TermOfCorrectionForEachIPTypeSt",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",12)':{tag:'(0025,"FDMS 1.0",12)',vr:"US",name:"ReadingGainGp",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",13)':{tag:'(0025,"FDMS 1.0",13)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",15)':{tag:'(0025,"FDMS 1.0",15)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",20)':{tag:'(0025,"FDMS 1.0",20)',vr:"US",name:"Unknown",vm:"2",version:"PrivateTag"},'(0025,"FDMS 1.0",21)':{tag:'(0025,"FDMS 1.0",21)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",30)':{tag:'(0025,"FDMS 1.0",30)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",31)':{tag:'(0025,"FDMS 1.0",31)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",32)':{tag:'(0025,"FDMS 1.0",32)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",33)':{tag:'(0025,"FDMS 1.0",33)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",34)':{tag:'(0025,"FDMS 1.0",34)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",40)':{tag:'(0025,"FDMS 1.0",40)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",41)':{tag:'(0025,"FDMS 1.0",41)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",42)':{tag:'(0025,"FDMS 1.0",42)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",43)':{tag:'(0025,"FDMS 1.0",43)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",50)':{tag:'(0025,"FDMS 1.0",50)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",51)':{tag:'(0025,"FDMS 1.0",51)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",52)':{tag:'(0025,"FDMS 1.0",52)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",53)':{tag:'(0025,"FDMS 1.0",53)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",60)':{tag:'(0025,"FDMS 1.0",60)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",61)':{tag:'(0025,"FDMS 1.0",61)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",62)':{tag:'(0025,"FDMS 1.0",62)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",63)':{tag:'(0025,"FDMS 1.0",63)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",70)':{tag:'(0025,"FDMS 1.0",70)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",71)':{tag:'(0025,"FDMS 1.0",71)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",72)':{tag:'(0025,"FDMS 1.0",72)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",73)':{tag:'(0025,"FDMS 1.0",73)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0025,"FDMS 1.0",74)':{tag:'(0025,"FDMS 1.0",74)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0025,"FDMS 1.0",80)':{tag:'(0025,"FDMS 1.0",80)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",81)':{tag:'(0025,"FDMS 1.0",81)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",82)':{tag:'(0025,"FDMS 1.0",82)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",83)':{tag:'(0025,"FDMS 1.0",83)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0025,"FDMS 1.0",84)':{tag:'(0025,"FDMS 1.0",84)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0025,"FDMS 1.0",90)':{tag:'(0025,"FDMS 1.0",90)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",91)':{tag:'(0025,"FDMS 1.0",91)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",92)':{tag:'(0025,"FDMS 1.0",92)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",93)':{tag:'(0025,"FDMS 1.0",93)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",94)':{tag:'(0025,"FDMS 1.0",94)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",95)':{tag:'(0025,"FDMS 1.0",95)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",96)':{tag:'(0025,"FDMS 1.0",96)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",a0)':{tag:'(0025,"FDMS 1.0",a0)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",a1)':{tag:'(0025,"FDMS 1.0",a1)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",a2)':{tag:'(0025,"FDMS 1.0",a2)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0025,"FDMS 1.0",a3)':{tag:'(0025,"FDMS 1.0",a3)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",10)':{tag:'(0027,"FDMS 1.0",10)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",20)':{tag:'(0027,"FDMS 1.0",20)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",30)':{tag:'(0027,"FDMS 1.0",30)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",40)':{tag:'(0027,"FDMS 1.0",40)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",50)':{tag:'(0027,"FDMS 1.0",50)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",60)':{tag:'(0027,"FDMS 1.0",60)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",70)':{tag:'(0027,"FDMS 1.0",70)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",80)':{tag:'(0027,"FDMS 1.0",80)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",a0)':{tag:'(0027,"FDMS 1.0",a0)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"FDMS 1.0",a1)':{tag:'(0027,"FDMS 1.0",a1)',vr:"CS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0027,"FDMS 1.0",a2)':{tag:'(0027,"FDMS 1.0",a2)',vr:"CS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0027,"FDMS 1.0",a3)':{tag:'(0027,"FDMS 1.0",a3)',vr:"SS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0029,"FDMS 1.0",20)':{tag:'(0029,"FDMS 1.0",20)',vr:"CS",name:"ImageScanningDirection",vm:"1",version:"PrivateTag"},'(0029,"FDMS 1.0",30)':{tag:'(0029,"FDMS 1.0",30)',vr:"CS",name:"ExtendedReadingSizeValue",vm:"1",version:"PrivateTag"},'(0029,"FDMS 1.0",34)':{tag:'(0029,"FDMS 1.0",34)',vr:"US",name:"MagnificationReductionRatio",vm:"1",version:"PrivateTag"},'(0029,"FDMS 1.0",44)':{tag:'(0029,"FDMS 1.0",44)',vr:"CS",name:"LineDensityCode",vm:"1",version:"PrivateTag"},'(0029,"FDMS 1.0",50)':{tag:'(0029,"FDMS 1.0",50)',vr:"CS",name:"DataCompressionCode",vm:"1",version:"PrivateTag"},'(2011,"FDMS 1.0",11)':{tag:'(2011,"FDMS 1.0",11)',vr:"CS",name:"ImagePosition SpecifyingFlag",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",06)':{tag:'(50F1,"FDMS 1.0",06)',vr:"CS",name:"EnergySubtractionParam",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",07)':{tag:'(50F1,"FDMS 1.0",07)',vr:"CS",name:"SubtractionRegistrationResult",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",08)':{tag:'(50F1,"FDMS 1.0",08)',vr:"CS",name:"EnergySubtractionParam2",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",09)':{tag:'(50F1,"FDMS 1.0",09)',vr:"SL",name:"AfinConversionCoefficient",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",10)':{tag:'(50F1,"FDMS 1.0",10)',vr:"CS",name:"FilmOutputFormat",vm:"1",version:"PrivateTag"},'(50F1,"FDMS 1.0",20)':{tag:'(50F1,"FDMS 1.0",20)',vr:"CS",name:"ImageProcessingModificationFlag",vm:"1",version:"PrivateTag"},'(0009,"FFP DATA",01)':{tag:'(0009,"FFP DATA",01)',vr:"UN",name:"CRHeaderInformation",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",30)':{tag:'(0019,"GE ??? From Adantage Review CS",30)',vr:"LO",name:"CREDRMode",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",40)':{tag:'(0019,"GE ??? From Adantage Review CS",40)',vr:"LO",name:"CRLatitude",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",50)':{tag:'(0019,"GE ??? From Adantage Review CS",50)',vr:"LO",name:"CRGroupNumber",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",70)':{tag:'(0019,"GE ??? From Adantage Review CS",70)',vr:"LO",name:"CRImageSerialNumber",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",80)':{tag:'(0019,"GE ??? From Adantage Review CS",80)',vr:"LO",name:"CRBarCodeNumber",vm:"1",version:"PrivateTag"},'(0019,"GE ??? From Adantage Review CS",90)':{tag:'(0019,"GE ??? From Adantage Review CS",90)',vr:"LO",name:"CRFilmOutputExposures",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",24)':{tag:'(0009,"GEMS_ACQU_01",24)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",25)':{tag:'(0009,"GEMS_ACQU_01",25)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",3e)':{tag:'(0009,"GEMS_ACQU_01",3e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",3f)':{tag:'(0009,"GEMS_ACQU_01",3f)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",42)':{tag:'(0009,"GEMS_ACQU_01",42)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",43)':{tag:'(0009,"GEMS_ACQU_01",43)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",f8)':{tag:'(0009,"GEMS_ACQU_01",f8)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_ACQU_01",fb)':{tag:'(0009,"GEMS_ACQU_01",fb)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",01)':{tag:'(0019,"GEMS_ACQU_01",01)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",02)':{tag:'(0019,"GEMS_ACQU_01",02)',vr:"SL",name:"NumberOfCellsInDetector",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",03)':{tag:'(0019,"GEMS_ACQU_01",03)',vr:"DS",name:"CellNumberAtTheta",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",04)':{tag:'(0019,"GEMS_ACQU_01",04)',vr:"DS",name:"CellSpacing",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",05)':{tag:'(0019,"GEMS_ACQU_01",05)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",06)':{tag:'(0019,"GEMS_ACQU_01",06)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",0e)':{tag:'(0019,"GEMS_ACQU_01",0e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",0f)':{tag:'(0019,"GEMS_ACQU_01",0f)',vr:"DS",name:"HorizontalFrameOfReference",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",11)':{tag:'(0019,"GEMS_ACQU_01",11)',vr:"SS",name:"SeriesContrast",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",12)':{tag:'(0019,"GEMS_ACQU_01",12)',vr:"SS",name:"LastPseq",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",13)':{tag:'(0019,"GEMS_ACQU_01",13)',vr:"SS",name:"StartNumberForBaseline",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",14)':{tag:'(0019,"GEMS_ACQU_01",14)',vr:"SS",name:"End NumberForBaseline",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",15)':{tag:'(0019,"GEMS_ACQU_01",15)',vr:"SS",name:"StartNumberForEnhancedScans",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",16)':{tag:'(0019,"GEMS_ACQU_01",16)',vr:"SS",name:"EndNumberForEnhancedScans",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",17)':{tag:'(0019,"GEMS_ACQU_01",17)',vr:"SS",name:"SeriesPlane",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",18)':{tag:'(0019,"GEMS_ACQU_01",18)',vr:"LO",name:"FirstScanRAS",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",19)':{tag:'(0019,"GEMS_ACQU_01",19)',vr:"DS",name:"FirstScanLocation",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",1a)':{tag:'(0019,"GEMS_ACQU_01",1a)',vr:"LO",name:"LastScanRAS",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",1b)':{tag:'(0019,"GEMS_ACQU_01",1b)',vr:"DS",name:"LastScanLocation",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",1e)':{tag:'(0019,"GEMS_ACQU_01",1e)',vr:"DS",name:"DisplayFieldOfView",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",20)':{tag:'(0019,"GEMS_ACQU_01",20)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",22)':{tag:'(0019,"GEMS_ACQU_01",22)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",23)':{tag:'(0019,"GEMS_ACQU_01",23)',vr:"DS",name:"TableSpeed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",24)':{tag:'(0019,"GEMS_ACQU_01",24)',vr:"DS",name:"MidScanTime",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",25)':{tag:'(0019,"GEMS_ACQU_01",25)',vr:"SS",name:"MidScanFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",26)':{tag:'(0019,"GEMS_ACQU_01",26)',vr:"SL",name:"DegreesOfAzimuth",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",27)':{tag:'(0019,"GEMS_ACQU_01",27)',vr:"DS",name:"GantryPeriod",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2a)':{tag:'(0019,"GEMS_ACQU_01",2a)',vr:"DS",name:"XrayOnPosition",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2b)':{tag:'(0019,"GEMS_ACQU_01",2b)',vr:"DS",name:"XrayOffPosition",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2c)':{tag:'(0019,"GEMS_ACQU_01",2c)',vr:"SL",name:"NumberOfTriggers",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2d)':{tag:'(0019,"GEMS_ACQU_01",2d)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2e)':{tag:'(0019,"GEMS_ACQU_01",2e)',vr:"DS",name:"AngleOfFirstView",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",2f)':{tag:'(0019,"GEMS_ACQU_01",2f)',vr:"DS",name:"TriggerFrequency",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",39)':{tag:'(0019,"GEMS_ACQU_01",39)',vr:"SS",name:"ScanFOVType",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",3a)':{tag:'(0019,"GEMS_ACQU_01",3a)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",3b)':{tag:'(0019,"GEMS_ACQU_01",3b)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",3c)':{tag:'(0019,"GEMS_ACQU_01",3c)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",3e)':{tag:'(0019,"GEMS_ACQU_01",3e)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",3f)':{tag:'(0019,"GEMS_ACQU_01",3f)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",40)':{tag:'(0019,"GEMS_ACQU_01",40)',vr:"SS",name:"StatReconFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",41)':{tag:'(0019,"GEMS_ACQU_01",41)',vr:"SS",name:"ComputeType",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",42)':{tag:'(0019,"GEMS_ACQU_01",42)',vr:"SS",name:"SegmentNumber",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",43)':{tag:'(0019,"GEMS_ACQU_01",43)',vr:"SS",name:"TotalSegmentsRequested",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",44)':{tag:'(0019,"GEMS_ACQU_01",44)',vr:"DS",name:"InterscanDelay",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",47)':{tag:'(0019,"GEMS_ACQU_01",47)',vr:"SS",name:"ViewCompressionFactor",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",48)':{tag:'(0019,"GEMS_ACQU_01",48)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",49)':{tag:'(0019,"GEMS_ACQU_01",49)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",4a)':{tag:'(0019,"GEMS_ACQU_01",4a)',vr:"SS",name:"TotalNumberOfRefChannels",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",4b)':{tag:'(0019,"GEMS_ACQU_01",4b)',vr:"SL",name:"DataSizeForScanData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",52)':{tag:'(0019,"GEMS_ACQU_01",52)',vr:"SS",name:"ReconPostProcessingFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",54)':{tag:'(0019,"GEMS_ACQU_01",54)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",57)':{tag:'(0019,"GEMS_ACQU_01",57)',vr:"SS",name:"CTWaterNumber",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",58)':{tag:'(0019,"GEMS_ACQU_01",58)',vr:"SS",name:"CTBoneNumber",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",5a)':{tag:'(0019,"GEMS_ACQU_01",5a)',vr:"FL",name:"AcquisitionDuration",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",5d)':{tag:'(0019,"GEMS_ACQU_01",5d)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",5e)':{tag:'(0019,"GEMS_ACQU_01",5e)',vr:"SL",name:"NumberOfChannels1To512",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",5f)':{tag:'(0019,"GEMS_ACQU_01",5f)',vr:"SL",name:"IncrementBetweenChannels",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",60)':{tag:'(0019,"GEMS_ACQU_01",60)',vr:"SL",name:"StartingView",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",61)':{tag:'(0019,"GEMS_ACQU_01",61)',vr:"SL",name:"NumberOfViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",62)':{tag:'(0019,"GEMS_ACQU_01",62)',vr:"SL",name:"IncrementBetweenViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",6a)':{tag:'(0019,"GEMS_ACQU_01",6a)',vr:"SS",name:"DependantOnNumberOfViewsProcessed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",6b)':{tag:'(0019,"GEMS_ACQU_01",6b)',vr:"SS",name:"FieldOfViewInDetectorCells",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",70)':{tag:'(0019,"GEMS_ACQU_01",70)',vr:"SS",name:"ValueOfBackProjectionButton",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",71)':{tag:'(0019,"GEMS_ACQU_01",71)',vr:"SS",name:"SetIfFatqEstimatesWereUsed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",72)':{tag:'(0019,"GEMS_ACQU_01",72)',vr:"DS",name:"ZChannelAvgOverViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",73)':{tag:'(0019,"GEMS_ACQU_01",73)',vr:"DS",name:"AvgOfLeftRefChannelsOverViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",74)':{tag:'(0019,"GEMS_ACQU_01",74)',vr:"DS",name:"MaxLeftChannelOverViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",75)':{tag:'(0019,"GEMS_ACQU_01",75)',vr:"DS",name:"AvgOfRightRefChannelsOverViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",76)':{tag:'(0019,"GEMS_ACQU_01",76)',vr:"DS",name:"MaxRightChannelOverViews",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",7d)':{tag:'(0019,"GEMS_ACQU_01",7d)',vr:"DS",name:"SecondEcho",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",7e)':{tag:'(0019,"GEMS_ACQU_01",7e)',vr:"SS",name:"NumberOfEchos",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",7f)':{tag:'(0019,"GEMS_ACQU_01",7f)',vr:"DS",name:"TableDelta",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",81)':{tag:'(0019,"GEMS_ACQU_01",81)',vr:"SS",name:"Contiguous",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",82)':{tag:'(0019,"GEMS_ACQU_01",82)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",83)':{tag:'(0019,"GEMS_ACQU_01",83)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",84)':{tag:'(0019,"GEMS_ACQU_01",84)',vr:"DS",name:"PeakSAR",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",85)':{tag:'(0019,"GEMS_ACQU_01",85)',vr:"SS",name:"MonitorSAR",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",86)':{tag:'(0019,"GEMS_ACQU_01",86)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",87)':{tag:'(0019,"GEMS_ACQU_01",87)',vr:"DS",name:"CardiacRepetition Time",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",88)':{tag:'(0019,"GEMS_ACQU_01",88)',vr:"SS",name:"ImagesPerCardiacCycle",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",8a)':{tag:'(0019,"GEMS_ACQU_01",8a)',vr:"SS",name:"ActualReceiveGainAnalog",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",8b)':{tag:'(0019,"GEMS_ACQU_01",8b)',vr:"SS",name:"ActualReceiveGainDigital",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",8d)':{tag:'(0019,"GEMS_ACQU_01",8d)',vr:"DS",name:"DelayAfterTrigger",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",8f)':{tag:'(0019,"GEMS_ACQU_01",8f)',vr:"SS",name:"SwapPhaseFrequency",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",90)':{tag:'(0019,"GEMS_ACQU_01",90)',vr:"SS",name:"PauseInterval",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",91)':{tag:'(0019,"GEMS_ACQU_01",91)',vr:"DS",name:"PulseTime",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",92)':{tag:'(0019,"GEMS_ACQU_01",92)',vr:"SL",name:"SliceOffsetOnFrequencyAxis",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",93)':{tag:'(0019,"GEMS_ACQU_01",93)',vr:"DS",name:"CenterFrequency",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",94)':{tag:'(0019,"GEMS_ACQU_01",94)',vr:"SS",name:"TransmitGain",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",95)':{tag:'(0019,"GEMS_ACQU_01",95)',vr:"SS",name:"AnalogReceiverGain",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",96)':{tag:'(0019,"GEMS_ACQU_01",96)',vr:"SS",name:"DigitalReceiverGain",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",97)':{tag:'(0019,"GEMS_ACQU_01",97)',vr:"SL",name:"BitmapDefiningCVs",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",98)':{tag:'(0019,"GEMS_ACQU_01",98)',vr:"SS",name:"CenterFrequencyMethod",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",99)':{tag:'(0019,"GEMS_ACQU_01",99)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",9b)':{tag:'(0019,"GEMS_ACQU_01",9b)',vr:"SS",name:"PulseSequenceMode",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",9c)':{tag:'(0019,"GEMS_ACQU_01",9c)',vr:"LO",name:"PulseSequenceName",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",9d)':{tag:'(0019,"GEMS_ACQU_01",9d)',vr:"DT",name:"PulseSequenceDate",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",9e)':{tag:'(0019,"GEMS_ACQU_01",9e)',vr:"LO",name:"InternalPulseSequenceName",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",9f)':{tag:'(0019,"GEMS_ACQU_01",9f)',vr:"SS",name:"TransmittingCoil",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a0)':{tag:'(0019,"GEMS_ACQU_01",a0)',vr:"SS",name:"SurfaceCoilType",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a1)':{tag:'(0019,"GEMS_ACQU_01",a1)',vr:"SS",name:"ExtremityCoilFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a2)':{tag:'(0019,"GEMS_ACQU_01",a2)',vr:"SL",name:"RawDataRunNumber",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a3)':{tag:'(0019,"GEMS_ACQU_01",a3)',vr:"UL",name:"CalibratedFieldStrength",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a4)':{tag:'(0019,"GEMS_ACQU_01",a4)',vr:"SS",name:"SATFatWaterBone",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a5)':{tag:'(0019,"GEMS_ACQU_01",a5)',vr:"DS",name:"ReceiveBandwidth",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a7)':{tag:'(0019,"GEMS_ACQU_01",a7)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a8)':{tag:'(0019,"GEMS_ACQU_01",a8)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",a9)':{tag:'(0019,"GEMS_ACQU_01",a9)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",aa)':{tag:'(0019,"GEMS_ACQU_01",aa)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ab)':{tag:'(0019,"GEMS_ACQU_01",ab)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ac)':{tag:'(0019,"GEMS_ACQU_01",ac)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ad)':{tag:'(0019,"GEMS_ACQU_01",ad)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ae)':{tag:'(0019,"GEMS_ACQU_01",ae)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",af)':{tag:'(0019,"GEMS_ACQU_01",af)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b0)':{tag:'(0019,"GEMS_ACQU_01",b0)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b1)':{tag:'(0019,"GEMS_ACQU_01",b1)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b2)':{tag:'(0019,"GEMS_ACQU_01",b2)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b3)':{tag:'(0019,"GEMS_ACQU_01",b3)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b4)':{tag:'(0019,"GEMS_ACQU_01",b4)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b5)':{tag:'(0019,"GEMS_ACQU_01",b5)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b6)':{tag:'(0019,"GEMS_ACQU_01",b6)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b7)':{tag:'(0019,"GEMS_ACQU_01",b7)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b8)':{tag:'(0019,"GEMS_ACQU_01",b8)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",b9)':{tag:'(0019,"GEMS_ACQU_01",b9)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ba)':{tag:'(0019,"GEMS_ACQU_01",ba)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",bb)':{tag:'(0019,"GEMS_ACQU_01",bb)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",bc)':{tag:'(0019,"GEMS_ACQU_01",bc)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",bd)':{tag:'(0019,"GEMS_ACQU_01",bd)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",be)':{tag:'(0019,"GEMS_ACQU_01",be)',vr:"DS",name:"ProjectionAngle",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c0)':{tag:'(0019,"GEMS_ACQU_01",c0)',vr:"SS",name:"SaturationPlanes",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c1)':{tag:'(0019,"GEMS_ACQU_01",c1)',vr:"SS",name:"SurfaceCoilIntensityCorrectionFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c2)':{tag:'(0019,"GEMS_ACQU_01",c2)',vr:"SS",name:"SATLocationR",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c3)':{tag:'(0019,"GEMS_ACQU_01",c3)',vr:"SS",name:"SATLocationL",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c4)':{tag:'(0019,"GEMS_ACQU_01",c4)',vr:"SS",name:"SATLocationA",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c5)':{tag:'(0019,"GEMS_ACQU_01",c5)',vr:"SS",name:"SATLocationP",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c6)':{tag:'(0019,"GEMS_ACQU_01",c6)',vr:"SS",name:"SATLocationH",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c7)':{tag:'(0019,"GEMS_ACQU_01",c7)',vr:"SS",name:"SATLocationF",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c8)':{tag:'(0019,"GEMS_ACQU_01",c8)',vr:"SS",name:"SATThicknessRL",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",c9)':{tag:'(0019,"GEMS_ACQU_01",c9)',vr:"SS",name:"SATThicknessAP",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ca)':{tag:'(0019,"GEMS_ACQU_01",ca)',vr:"SS",name:"SATThicknessHF",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",cb)':{tag:'(0019,"GEMS_ACQU_01",cb)',vr:"SS",name:"PrescribedFlowAxis",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",cc)':{tag:'(0019,"GEMS_ACQU_01",cc)',vr:"SS",name:"VelocityEncoding",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",cd)':{tag:'(0019,"GEMS_ACQU_01",cd)',vr:"SS",name:"ThicknessDisclaimer",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ce)':{tag:'(0019,"GEMS_ACQU_01",ce)',vr:"SS",name:"PrescanType",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",cf)':{tag:'(0019,"GEMS_ACQU_01",cf)',vr:"SS",name:"PrescanStatus",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d0)':{tag:'(0019,"GEMS_ACQU_01",d0)',vr:"SH",name:"RawDataType",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d2)':{tag:'(0019,"GEMS_ACQU_01",d2)',vr:"SS",name:"ProjectionAlgorithm",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d3)':{tag:'(0019,"GEMS_ACQU_01",d3)',vr:"SH",name:"ProjectionAlgorithm",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d4)':{tag:'(0019,"GEMS_ACQU_01",d4)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d5)':{tag:'(0019,"GEMS_ACQU_01",d5)',vr:"SS",name:"FractionalEcho",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d6)':{tag:'(0019,"GEMS_ACQU_01",d6)',vr:"SS",name:"PrepPulse",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d7)':{tag:'(0019,"GEMS_ACQU_01",d7)',vr:"SS",name:"CardiacPhases",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d8)':{tag:'(0019,"GEMS_ACQU_01",d8)',vr:"SS",name:"VariableEchoFlag",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",d9)':{tag:'(0019,"GEMS_ACQU_01",d9)',vr:"DS",name:"ConcatenatedSAT",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",da)':{tag:'(0019,"GEMS_ACQU_01",da)',vr:"SS",name:"ReferenceChannelUsed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",db)':{tag:'(0019,"GEMS_ACQU_01",db)',vr:"DS",name:"BackProjectorCoefficient",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",dc)':{tag:'(0019,"GEMS_ACQU_01",dc)',vr:"SS",name:"PrimarySpeedCorrectionUsed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",dd)':{tag:'(0019,"GEMS_ACQU_01",dd)',vr:"SS",name:"OverrangeCorrectionUsed",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",de)':{tag:'(0019,"GEMS_ACQU_01",de)',vr:"DS",name:"DynamicZAlphaValue",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",df)':{tag:'(0019,"GEMS_ACQU_01",df)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e0)':{tag:'(0019,"GEMS_ACQU_01",e0)',vr:"DS",name:"UserData",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e1)':{tag:'(0019,"GEMS_ACQU_01",e1)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e2)':{tag:'(0019,"GEMS_ACQU_01",e2)',vr:"DS",name:"VelocityEncodeScale",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e3)':{tag:'(0019,"GEMS_ACQU_01",e3)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e4)':{tag:'(0019,"GEMS_ACQU_01",e4)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e5)':{tag:'(0019,"GEMS_ACQU_01",e5)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e6)':{tag:'(0019,"GEMS_ACQU_01",e6)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e8)':{tag:'(0019,"GEMS_ACQU_01",e8)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",e9)':{tag:'(0019,"GEMS_ACQU_01",e9)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",eb)':{tag:'(0019,"GEMS_ACQU_01",eb)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",ec)':{tag:'(0019,"GEMS_ACQU_01",ec)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f0)':{tag:'(0019,"GEMS_ACQU_01",f0)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f1)':{tag:'(0019,"GEMS_ACQU_01",f1)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f2)':{tag:'(0019,"GEMS_ACQU_01",f2)',vr:"SS",name:"FastPhases",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f3)':{tag:'(0019,"GEMS_ACQU_01",f3)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f4)':{tag:'(0019,"GEMS_ACQU_01",f4)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GEMS_ACQU_01",f9)':{tag:'(0019,"GEMS_ACQU_01",f9)',vr:"DS",name:"TransmitGain",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",00)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",00)',vr:"LO",name:"CRExposureMenuCode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",10)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",10)',vr:"LO",name:"CRExposureMenuString",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",20)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",20)',vr:"LO",name:"CREDRMode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",30)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",30)',vr:"LO",name:"CRLatitude",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",40)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",40)',vr:"LO",name:"CRGroupNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",50)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",50)',vr:"US",name:"CRImageSerialNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",60)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",60)',vr:"LO",name:"CRBarCodeNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",70)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",70)',vr:"LO",name:"CRFilmOutputExposure",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",80)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",80)',vr:"LO",name:"CRFilmFormat",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK1",90)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK1",90)',vr:"LO",name:"CRSShiftString",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",00)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",00)',vr:"US",name:"CRSShift",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",10)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",10)',vr:"DS",name:"CRCShift",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",20)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",20)',vr:"DS",name:"CRGT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",30)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",30)',vr:"DS",name:"CRGA",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",40)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",40)',vr:"DS",name:"CRGC",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",50)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",50)',vr:"DS",name:"CRGS",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",60)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",60)',vr:"DS",name:"CRRT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",70)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",70)',vr:"DS",name:"CRRE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",80)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",80)',vr:"US",name:"CRRN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK2",90)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK2",90)',vr:"DS",name:"CRDRT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",00)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",00)',vr:"DS",name:"CRDRE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",10)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",10)',vr:"US",name:"CRDRN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",20)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",20)',vr:"DS",name:"CRORE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",30)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",30)',vr:"US",name:"CRORN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",40)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",40)',vr:"US",name:"CRORD",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",50)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",50)',vr:"LO",name:"CRCassetteSize",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",60)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",60)',vr:"LO",name:"CRMachineID",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",70)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",70)',vr:"LO",name:"CRMachineType",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",80)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",80)',vr:"LO",name:"CRTechnicianCode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_1.0 BLOCK3",90)':{tag:'(0023,"GEMS_ACRQA_1.0 BLOCK3",90)',vr:"LO",name:"CREnergySubtractionParameters",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",00)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",00)',vr:"LO",name:"CRExposureMenuCode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",10)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",10)',vr:"LO",name:"CRExposureMenuString",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",20)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",20)',vr:"LO",name:"CREDRMode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",30)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",30)',vr:"LO",name:"CRLatitude",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",40)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",40)',vr:"LO",name:"CRGroupNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",50)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",50)',vr:"US",name:"CRImageSerialNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",60)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",60)',vr:"LO",name:"CRBarCodeNumber",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",70)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",70)',vr:"LO",name:"CRFilmOutputExposure",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",80)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",80)',vr:"LO",name:"CRFilmFormat",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK1",90)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK1",90)',vr:"LO",name:"CRSShiftString",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",00)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",00)',vr:"US",name:"CRSShift",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",10)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",10)',vr:"LO",name:"CRCShift",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",20)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",20)',vr:"LO",name:"CRGT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",30)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",30)',vr:"DS",name:"CRGA",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",40)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",40)',vr:"DS",name:"CRGC",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",50)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",50)',vr:"DS",name:"CRGS",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",60)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",60)',vr:"LO",name:"CRRT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",70)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",70)',vr:"DS",name:"CRRE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",80)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",80)',vr:"US",name:"CRRN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK2",90)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK2",90)',vr:"DS",name:"CRDRT",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",00)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",00)',vr:"DS",name:"CRDRE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",10)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",10)',vr:"US",name:"CRDRN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",20)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",20)',vr:"DS",name:"CRORE",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",30)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",30)',vr:"US",name:"CRORN",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",40)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",40)',vr:"US",name:"CRORD",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",50)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",50)',vr:"LO",name:"CRCassetteSize",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",60)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",60)',vr:"LO",name:"CRMachineID",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",70)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",70)',vr:"LO",name:"CRMachineType",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",80)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",80)',vr:"LO",name:"CRTechnicianCode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",90)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",90)',vr:"LO",name:"CREnergySubtractionParameters",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",f0)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",f0)',vr:"LO",name:"CRDistributionCode",vm:"1",version:"PrivateTag"},'(0023,"GEMS_ACRQA_2.0 BLOCK3",ff)':{tag:'(0023,"GEMS_ACRQA_2.0 BLOCK3",ff)',vr:"US",name:"CRShuttersApplied",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",01)':{tag:'(0047,"GEMS_ADWSoft_3D1",01)',vr:"SQ",name:"Reconstruction Parameters Sequence",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",50)':{tag:'(0047,"GEMS_ADWSoft_3D1",50)',vr:"UL",name:"VolumeVoxelCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",51)':{tag:'(0047,"GEMS_ADWSoft_3D1",51)',vr:"UL",name:"VolumeSegmentCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",53)':{tag:'(0047,"GEMS_ADWSoft_3D1",53)',vr:"US",name:"VolumeSliceSize",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",54)':{tag:'(0047,"GEMS_ADWSoft_3D1",54)',vr:"US",name:"VolumeSliceCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",55)':{tag:'(0047,"GEMS_ADWSoft_3D1",55)',vr:"SL",name:"VolumeThresholdValue",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",57)':{tag:'(0047,"GEMS_ADWSoft_3D1",57)',vr:"DS",name:"VolumeVoxelRatio",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",58)':{tag:'(0047,"GEMS_ADWSoft_3D1",58)',vr:"DS",name:"VolumeVoxelSize",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",59)':{tag:'(0047,"GEMS_ADWSoft_3D1",59)',vr:"US",name:"VolumeZPositionSize",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",60)':{tag:'(0047,"GEMS_ADWSoft_3D1",60)',vr:"DS",name:"VolumeBaseLine",vm:"9",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",61)':{tag:'(0047,"GEMS_ADWSoft_3D1",61)',vr:"DS",name:"VolumeCenterPoint",vm:"3",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",63)':{tag:'(0047,"GEMS_ADWSoft_3D1",63)',vr:"SL",name:"VolumeSkewBase",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",64)':{tag:'(0047,"GEMS_ADWSoft_3D1",64)',vr:"DS",name:"VolumeRegistrationTransformRotationMatrix",vm:"9",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",65)':{tag:'(0047,"GEMS_ADWSoft_3D1",65)',vr:"DS",name:"VolumeRegistrationTransformTranslationVector",vm:"3",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",70)':{tag:'(0047,"GEMS_ADWSoft_3D1",70)',vr:"DS",name:"KVPList",vm:"1-n",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",71)':{tag:'(0047,"GEMS_ADWSoft_3D1",71)',vr:"IS",name:"XRayTubeCurrentList",vm:"1-n",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",72)':{tag:'(0047,"GEMS_ADWSoft_3D1",72)',vr:"IS",name:"ExposureList",vm:"1-n",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",80)':{tag:'(0047,"GEMS_ADWSoft_3D1",80)',vr:"LO",name:"AcquisitionDLXIdentifier",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",85)':{tag:'(0047,"GEMS_ADWSoft_3D1",85)',vr:"SQ",name:"AcquisitionDLX2DSeriesSequence",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",89)':{tag:'(0047,"GEMS_ADWSoft_3D1",89)',vr:"DS",name:"ContrastAgentVolumeList",vm:"1-n",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",8A)':{tag:'(0047,"GEMS_ADWSoft_3D1",8A)',vr:"US",name:"NumberOfInjections",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",8B)':{tag:'(0047,"GEMS_ADWSoft_3D1",8B)',vr:"US",name:"FrameCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",91)':{tag:'(0047,"GEMS_ADWSoft_3D1",91)',vr:"LO",name:"XA3DReconstructionAlgorithmName",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",92)':{tag:'(0047,"GEMS_ADWSoft_3D1",92)',vr:"CS",name:"XA3DReconstructionAlgorithmVersion",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",93)':{tag:'(0047,"GEMS_ADWSoft_3D1",93)',vr:"DA",name:"DLXCalibrationDate",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",94)':{tag:'(0047,"GEMS_ADWSoft_3D1",94)',vr:"TM",name:"DLXCalibrationTime",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",95)':{tag:'(0047,"GEMS_ADWSoft_3D1",95)',vr:"CS",name:"DLXCalibrationStatus",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",96)':{tag:'(0047,"GEMS_ADWSoft_3D1",96)',vr:"IS",name:"UsedFrames",vm:"1-n",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",98)':{tag:'(0047,"GEMS_ADWSoft_3D1",98)',vr:"US",name:"TransformCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",99)':{tag:'(0047,"GEMS_ADWSoft_3D1",99)',vr:"SQ",name:"TransformSequence",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",9A)':{tag:'(0047,"GEMS_ADWSoft_3D1",9A)',vr:"DS",name:"TransformRotationMatrix",vm:"9",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",9B)':{tag:'(0047,"GEMS_ADWSoft_3D1",9B)',vr:"DS",name:"TransformTranslationVector",vm:"3",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",9C)':{tag:'(0047,"GEMS_ADWSoft_3D1",9C)',vr:"LO",name:"TransformLabel",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B0)':{tag:'(0047,"GEMS_ADWSoft_3D1",B0)',vr:"SQ",name:"WireframeList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B1)':{tag:'(0047,"GEMS_ADWSoft_3D1",B1)',vr:"US",name:"WireframeCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B2)':{tag:'(0047,"GEMS_ADWSoft_3D1",B2)',vr:"US",name:"LocationSystem",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B5)':{tag:'(0047,"GEMS_ADWSoft_3D1",B5)',vr:"LO",name:"WireframeName",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B6)':{tag:'(0047,"GEMS_ADWSoft_3D1",B6)',vr:"LO",name:"WireframeGroupName",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B7)':{tag:'(0047,"GEMS_ADWSoft_3D1",B7)',vr:"LO",name:"WireframeColor",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B8)':{tag:'(0047,"GEMS_ADWSoft_3D1",B8)',vr:"SL",name:"WireframeAttributes",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",B9)':{tag:'(0047,"GEMS_ADWSoft_3D1",B9)',vr:"SL",name:"WireframePointCount",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",BA)':{tag:'(0047,"GEMS_ADWSoft_3D1",BA)',vr:"SL",name:"WireframeTimestamp",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",BB)':{tag:'(0047,"GEMS_ADWSoft_3D1",BB)',vr:"SQ",name:"WireframePointList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",BC)':{tag:'(0047,"GEMS_ADWSoft_3D1",BC)',vr:"DS",name:"WireframePointsCoordinates",vm:"3",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",C0)':{tag:'(0047,"GEMS_ADWSoft_3D1",C0)',vr:"DS",name:"VolumeUpperLeftHighCornerRAS",vm:"3",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",C1)':{tag:'(0047,"GEMS_ADWSoft_3D1",C1)',vr:"DS",name:"VolumeSliceToRASRotationMatrix",vm:"9",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",C2)':{tag:'(0047,"GEMS_ADWSoft_3D1",C2)',vr:"DS",name:"VolumeUpperLeftHighCornerTLOC",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",D1)':{tag:'(0047,"GEMS_ADWSoft_3D1",D1)',vr:"OB",name:"VolumeSegmentList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",D2)':{tag:'(0047,"GEMS_ADWSoft_3D1",D2)',vr:"OB",name:"VolumeGradientList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",D3)':{tag:'(0047,"GEMS_ADWSoft_3D1",D3)',vr:"OB",name:"VolumeDensityList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",D4)':{tag:'(0047,"GEMS_ADWSoft_3D1",D4)',vr:"OB",name:"VolumeZPositionList",vm:"1",version:"PrivateTag"},'(0047,"GEMS_ADWSoft_3D1",D5)':{tag:'(0047,"GEMS_ADWSoft_3D1",D5)',vr:"OB",name:"VolumeOriginalIndexList",vm:"1",version:"PrivateTag"},'(0039,"GEMS_ADWSoft_DPO",80)':{tag:'(0039,"GEMS_ADWSoft_DPO",80)',vr:"IS",name:"PrivateEntityNumber",vm:"1",version:"PrivateTag"},'(0039,"GEMS_ADWSoft_DPO",85)':{tag:'(0039,"GEMS_ADWSoft_DPO",85)',vr:"DA",name:"PrivateEntityDate",vm:"1",version:"PrivateTag"},'(0039,"GEMS_ADWSoft_DPO",90)':{tag:'(0039,"GEMS_ADWSoft_DPO",90)',vr:"TM",name:"PrivateEntityTime",vm:"1",version:"PrivateTag"},'(0039,"GEMS_ADWSoft_DPO",95)':{tag:'(0039,"GEMS_ADWSoft_DPO",95)',vr:"LO",name:"PrivateEntityLaunchCommand",vm:"1",version:"PrivateTag"},'(0039,"GEMS_ADWSoft_DPO",AA)':{tag:'(0039,"GEMS_ADWSoft_DPO",AA)',vr:"CS",name:"PrivateEntityType",vm:"1",version:"PrivateTag"},'(0033,"GEMS_CTHD_01",02)':{tag:'(0033,"GEMS_CTHD_01",02)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",10)':{tag:'(0037,"GEMS_DRS_1",10)',vr:"LO",name:"ReferringDepartment",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",20)':{tag:'(0037,"GEMS_DRS_1",20)',vr:"US",name:"ScreenNumber",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",40)':{tag:'(0037,"GEMS_DRS_1",40)',vr:"SH",name:"LeftOrientation",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",42)':{tag:'(0037,"GEMS_DRS_1",42)',vr:"SH",name:"RightOrientation",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",50)':{tag:'(0037,"GEMS_DRS_1",50)',vr:"CS",name:"Inversion",vm:"1",version:"PrivateTag"},'(0037,"GEMS_DRS_1",60)':{tag:'(0037,"GEMS_DRS_1",60)',vr:"US",name:"DSA",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",10)':{tag:'(0009,"GEMS_GENIE_1",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",11)':{tag:'(0009,"GEMS_GENIE_1",11)',vr:"SL",name:"StudyFlags",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",12)':{tag:'(0009,"GEMS_GENIE_1",12)',vr:"SL",name:"StudyType",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",1e)':{tag:'(0009,"GEMS_GENIE_1",1e)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",20)':{tag:'(0009,"GEMS_GENIE_1",20)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",21)':{tag:'(0009,"GEMS_GENIE_1",21)',vr:"SL",name:"SeriesFlags",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",22)':{tag:'(0009,"GEMS_GENIE_1",22)',vr:"SH",name:"UserOrientation",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",23)':{tag:'(0009,"GEMS_GENIE_1",23)',vr:"SL",name:"InitiationType",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",24)':{tag:'(0009,"GEMS_GENIE_1",24)',vr:"SL",name:"InitiationDelay",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",25)':{tag:'(0009,"GEMS_GENIE_1",25)',vr:"SL",name:"InitiationCountRate",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",26)':{tag:'(0009,"GEMS_GENIE_1",26)',vr:"SL",name:"NumberEnergySets",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",27)':{tag:'(0009,"GEMS_GENIE_1",27)',vr:"SL",name:"NumberDetectors",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",29)':{tag:'(0009,"GEMS_GENIE_1",29)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",2a)':{tag:'(0009,"GEMS_GENIE_1",2a)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",2c)':{tag:'(0009,"GEMS_GENIE_1",2c)',vr:"LO",name:"SeriesComments",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",2d)':{tag:'(0009,"GEMS_GENIE_1",2d)',vr:"SL",name:"TrackBeatAverage",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",2e)':{tag:'(0009,"GEMS_GENIE_1",2e)',vr:"FD",name:"DistancePrescribed",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",30)':{tag:'(0009,"GEMS_GENIE_1",30)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",35)':{tag:'(0009,"GEMS_GENIE_1",35)',vr:"SL",name:"GantryLocusType",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",37)':{tag:'(0009,"GEMS_GENIE_1",37)',vr:"SL",name:"StartingHeartRate",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",38)':{tag:'(0009,"GEMS_GENIE_1",38)',vr:"SL",name:"RRWindowWidth",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",39)':{tag:'(0009,"GEMS_GENIE_1",39)',vr:"SL",name:"RRWindowOffset",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",3a)':{tag:'(0009,"GEMS_GENIE_1",3a)',vr:"SL",name:"PercentCycleImaged",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",40)':{tag:'(0009,"GEMS_GENIE_1",40)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",41)':{tag:'(0009,"GEMS_GENIE_1",41)',vr:"SL",name:"PatientFlags",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",42)':{tag:'(0009,"GEMS_GENIE_1",42)',vr:"DA",name:"PatientCreationDate",vm:"1",version:"PrivateTag"},'(0009,"GEMS_GENIE_1",43)':{tag:'(0009,"GEMS_GENIE_1",43)',vr:"TM",name:"PatientCreationTime",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",0a)':{tag:'(0011,"GEMS_GENIE_1",0a)',vr:"SL",name:"SeriesType",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",0b)':{tag:'(0011,"GEMS_GENIE_1",0b)',vr:"SL",name:"EffectiveSeriesDuration",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",0c)':{tag:'(0011,"GEMS_GENIE_1",0c)',vr:"SL",name:"NumBeats",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",0d)':{tag:'(0011,"GEMS_GENIE_1",0d)',vr:"LO",name:"RadioNuclideName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",10)':{tag:'(0011,"GEMS_GENIE_1",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",12)':{tag:'(0011,"GEMS_GENIE_1",12)',vr:"LO",name:"DatasetName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",13)':{tag:'(0011,"GEMS_GENIE_1",13)',vr:"SL",name:"DatasetType",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",15)':{tag:'(0011,"GEMS_GENIE_1",15)',vr:"SL",name:"DetectorNumber",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",16)':{tag:'(0011,"GEMS_GENIE_1",16)',vr:"SL",name:"EnergyNumber",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",17)':{tag:'(0011,"GEMS_GENIE_1",17)',vr:"SL",name:"RRIntervalWindowNumber",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",18)':{tag:'(0011,"GEMS_GENIE_1",18)',vr:"SL",name:"MGBinNumber",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",19)':{tag:'(0011,"GEMS_GENIE_1",19)',vr:"FD",name:"RadiusOfRotation",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",1a)':{tag:'(0011,"GEMS_GENIE_1",1a)',vr:"SL",name:"DetectorCountZone",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",1b)':{tag:'(0011,"GEMS_GENIE_1",1b)',vr:"SL",name:"NumEnergyWindows",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",1c)':{tag:'(0011,"GEMS_GENIE_1",1c)',vr:"SL",name:"EnergyOffset",vm:"4",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",1d)':{tag:'(0011,"GEMS_GENIE_1",1d)',vr:"SL",name:"EnergyRange",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",1f)':{tag:'(0011,"GEMS_GENIE_1",1f)',vr:"SL",name:"ImageOrientation",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",23)':{tag:'(0011,"GEMS_GENIE_1",23)',vr:"SL",name:"UseFOVMask",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",24)':{tag:'(0011,"GEMS_GENIE_1",24)',vr:"SL",name:"FOVMaskYCutoffAngle",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",25)':{tag:'(0011,"GEMS_GENIE_1",25)',vr:"SL",name:"FOVMaskCutoffAngle",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",26)':{tag:'(0011,"GEMS_GENIE_1",26)',vr:"SL",name:"TableOrientation",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",27)':{tag:'(0011,"GEMS_GENIE_1",27)',vr:"SL",name:"ROITopLeft",vm:"2",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",28)':{tag:'(0011,"GEMS_GENIE_1",28)',vr:"SL",name:"ROIBottomRight",vm:"2",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",30)':{tag:'(0011,"GEMS_GENIE_1",30)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",33)':{tag:'(0011,"GEMS_GENIE_1",33)',vr:"LO",name:"EnergyCorrectName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",34)':{tag:'(0011,"GEMS_GENIE_1",34)',vr:"LO",name:"SpatialCorrectName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",35)':{tag:'(0011,"GEMS_GENIE_1",35)',vr:"LO",name:"TuningCalibName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",36)':{tag:'(0011,"GEMS_GENIE_1",36)',vr:"LO",name:"UniformityCorrectName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",37)':{tag:'(0011,"GEMS_GENIE_1",37)',vr:"LO",name:"AcquisitionSpecificCorrectName",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",38)':{tag:'(0011,"GEMS_GENIE_1",38)',vr:"SL",name:"ByteOrder",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",3a)':{tag:'(0011,"GEMS_GENIE_1",3a)',vr:"SL",name:"PictureFormat",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",3b)':{tag:'(0011,"GEMS_GENIE_1",3b)',vr:"FD",name:"PixelScale",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",3c)':{tag:'(0011,"GEMS_GENIE_1",3c)',vr:"FD",name:"PixelOffset",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",3e)':{tag:'(0011,"GEMS_GENIE_1",3e)',vr:"SL",name:"FOVShape",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",3f)':{tag:'(0011,"GEMS_GENIE_1",3f)',vr:"SL",name:"DatasetFlags",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",44)':{tag:'(0011,"GEMS_GENIE_1",44)',vr:"FD",name:"ThresholdCenter",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",45)':{tag:'(0011,"GEMS_GENIE_1",45)',vr:"FD",name:"ThresholdWidth",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",46)':{tag:'(0011,"GEMS_GENIE_1",46)',vr:"SL",name:"InterpolationType",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",55)':{tag:'(0011,"GEMS_GENIE_1",55)',vr:"FD",name:"Period",vm:"1",version:"PrivateTag"},'(0011,"GEMS_GENIE_1",56)':{tag:'(0011,"GEMS_GENIE_1",56)',vr:"FD",name:"ElapsedTime",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",10)':{tag:'(0013,"GEMS_GENIE_1",10)',vr:"FD",name:"DigitalFOV",vm:"2",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",11)':{tag:'(0013,"GEMS_GENIE_1",11)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",12)':{tag:'(0013,"GEMS_GENIE_1",12)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",16)':{tag:'(0013,"GEMS_GENIE_1",16)',vr:"SL",name:"AutoTrackPeak",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",17)':{tag:'(0013,"GEMS_GENIE_1",17)',vr:"SL",name:"AutoTrackWidth",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",18)':{tag:'(0013,"GEMS_GENIE_1",18)',vr:"FD",name:"TransmissionScanTime",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",19)':{tag:'(0013,"GEMS_GENIE_1",19)',vr:"FD",name:"TransmissionMaskWidth",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",1a)':{tag:'(0013,"GEMS_GENIE_1",1a)',vr:"FD",name:"CopperAttenuatorThickness",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",1c)':{tag:'(0013,"GEMS_GENIE_1",1c)',vr:"FD",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",1d)':{tag:'(0013,"GEMS_GENIE_1",1d)',vr:"FD",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",1e)':{tag:'(0013,"GEMS_GENIE_1",1e)',vr:"FD",name:"TomoViewOffset",vm:"1-n",version:"PrivateTag"},'(0013,"GEMS_GENIE_1",26)':{tag:'(0013,"GEMS_GENIE_1",26)',vr:"LT",name:"StudyComments",vm:"1",version:"PrivateTag"},'(0033,"GEMS_GNHD_01",01)':{tag:'(0033,"GEMS_GNHD_01",01)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0033,"GEMS_GNHD_01",02)':{tag:'(0033,"GEMS_GNHD_01",02)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",01)':{tag:'(0009,"GEMS_IDEN_01",01)',vr:"LO",name:"FullFidelity",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",02)':{tag:'(0009,"GEMS_IDEN_01",02)',vr:"SH",name:"SuiteId",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",04)':{tag:'(0009,"GEMS_IDEN_01",04)',vr:"SH",name:"ProductId",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",17)':{tag:'(0009,"GEMS_IDEN_01",17)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",1a)':{tag:'(0009,"GEMS_IDEN_01",1a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",20)':{tag:'(0009,"GEMS_IDEN_01",20)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",27)':{tag:'(0009,"GEMS_IDEN_01",27)',vr:"SL",name:"ImageActualDate",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",2f)':{tag:'(0009,"GEMS_IDEN_01",2f)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",30)':{tag:'(0009,"GEMS_IDEN_01",30)',vr:"SH",name:"ServiceId",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",31)':{tag:'(0009,"GEMS_IDEN_01",31)',vr:"SH",name:"MobileLocationNumber",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e2)':{tag:'(0009,"GEMS_IDEN_01",e2)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e3)':{tag:'(0009,"GEMS_IDEN_01",e3)',vr:"UI",name:"EquipmentUID",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e6)':{tag:'(0009,"GEMS_IDEN_01",e6)',vr:"SH",name:"GenesisVersionNow",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e7)':{tag:'(0009,"GEMS_IDEN_01",e7)',vr:"UL",name:"ExamRecordChecksum",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e8)':{tag:'(0009,"GEMS_IDEN_01",e8)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"GEMS_IDEN_01",e9)':{tag:'(0009,"GEMS_IDEN_01",e9)',vr:"SL",name:"ActualSeriesDataTimeStamp",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",06)':{tag:'(0027,"GEMS_IMAG_01",06)',vr:"SL",name:"ImageArchiveFlag",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",10)':{tag:'(0027,"GEMS_IMAG_01",10)',vr:"SS",name:"ScoutType",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",1c)':{tag:'(0027,"GEMS_IMAG_01",1c)',vr:"SL",name:"VmaMamp",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",1d)':{tag:'(0027,"GEMS_IMAG_01",1d)',vr:"SS",name:"VmaPhase",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",1e)':{tag:'(0027,"GEMS_IMAG_01",1e)',vr:"SL",name:"VmaMod",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",1f)':{tag:'(0027,"GEMS_IMAG_01",1f)',vr:"SL",name:"VmaClip",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",20)':{tag:'(0027,"GEMS_IMAG_01",20)',vr:"SS",name:"SmartScanOnOffFlag",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",30)':{tag:'(0027,"GEMS_IMAG_01",30)',vr:"SH",name:"ForeignImageRevision",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",31)':{tag:'(0027,"GEMS_IMAG_01",31)',vr:"SS",name:"ImagingMode",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",32)':{tag:'(0027,"GEMS_IMAG_01",32)',vr:"SS",name:"PulseSequence",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",33)':{tag:'(0027,"GEMS_IMAG_01",33)',vr:"SL",name:"ImagingOptions",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",35)':{tag:'(0027,"GEMS_IMAG_01",35)',vr:"SS",name:"PlaneType",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",36)':{tag:'(0027,"GEMS_IMAG_01",36)',vr:"SL",name:"ObliquePlane",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",40)':{tag:'(0027,"GEMS_IMAG_01",40)',vr:"SH",name:"RASLetterOfImageLocation",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",41)':{tag:'(0027,"GEMS_IMAG_01",41)',vr:"FL",name:"ImageLocation",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",42)':{tag:'(0027,"GEMS_IMAG_01",42)',vr:"FL",name:"CenterRCoordOfPlaneImage",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",43)':{tag:'(0027,"GEMS_IMAG_01",43)',vr:"FL",name:"CenterACoordOfPlaneImage",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",44)':{tag:'(0027,"GEMS_IMAG_01",44)',vr:"FL",name:"CenterSCoordOfPlaneImage",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",45)':{tag:'(0027,"GEMS_IMAG_01",45)',vr:"FL",name:"NormalRCoord",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",46)':{tag:'(0027,"GEMS_IMAG_01",46)',vr:"FL",name:"NormalACoord",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",47)':{tag:'(0027,"GEMS_IMAG_01",47)',vr:"FL",name:"NormalSCoord",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",48)':{tag:'(0027,"GEMS_IMAG_01",48)',vr:"FL",name:"RCoordOfTopRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",49)':{tag:'(0027,"GEMS_IMAG_01",49)',vr:"FL",name:"ACoordOfTopRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",4a)':{tag:'(0027,"GEMS_IMAG_01",4a)',vr:"FL",name:"SCoordOfTopRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",4b)':{tag:'(0027,"GEMS_IMAG_01",4b)',vr:"FL",name:"RCoordOfBottomRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",4c)':{tag:'(0027,"GEMS_IMAG_01",4c)',vr:"FL",name:"ACoordOfBottomRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",4d)':{tag:'(0027,"GEMS_IMAG_01",4d)',vr:"FL",name:"SCoordOfBottomRightCorner",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",50)':{tag:'(0027,"GEMS_IMAG_01",50)',vr:"FL",name:"TableStartLocation",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",51)':{tag:'(0027,"GEMS_IMAG_01",51)',vr:"FL",name:"TableEndLocation",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",52)':{tag:'(0027,"GEMS_IMAG_01",52)',vr:"SH",name:"RASLetterForSideOfImage",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",53)':{tag:'(0027,"GEMS_IMAG_01",53)',vr:"SH",name:"RASLetterForAnteriorPosterior",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",54)':{tag:'(0027,"GEMS_IMAG_01",54)',vr:"SH",name:"RASLetterForScoutStartLoc",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",55)':{tag:'(0027,"GEMS_IMAG_01",55)',vr:"SH",name:"RASLetterForScoutEndLoc",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",60)':{tag:'(0027,"GEMS_IMAG_01",60)',vr:"FL",name:"ImageDimensionX",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",61)':{tag:'(0027,"GEMS_IMAG_01",61)',vr:"FL",name:"ImageDimensionY",vm:"1",version:"PrivateTag"},'(0027,"GEMS_IMAG_01",62)':{tag:'(0027,"GEMS_IMAG_01",62)',vr:"FL",name:"NumberOfExcitations",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",04)':{tag:'(0029,"GEMS_IMPS_01",04)',vr:"SL",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",05)':{tag:'(0029,"GEMS_IMPS_01",05)',vr:"DS",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",06)':{tag:'(0029,"GEMS_IMPS_01",06)',vr:"DS",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",07)':{tag:'(0029,"GEMS_IMPS_01",07)',vr:"SL",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",08)':{tag:'(0029,"GEMS_IMPS_01",08)',vr:"SH",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",09)':{tag:'(0029,"GEMS_IMPS_01",09)',vr:"SH",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",0a)':{tag:'(0029,"GEMS_IMPS_01",0a)',vr:"SS",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",15)':{tag:'(0029,"GEMS_IMPS_01",15)',vr:"SL",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",16)':{tag:'(0029,"GEMS_IMPS_01",16)',vr:"SL",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",17)':{tag:'(0029,"GEMS_IMPS_01",17)',vr:"SL",name:"LowerRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",18)':{tag:'(0029,"GEMS_IMPS_01",18)',vr:"SL",name:"UpperRangeOfPixels",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",1a)':{tag:'(0029,"GEMS_IMPS_01",1a)',vr:"SL",name:"LengthOfTotalHeaderInBytes",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",26)':{tag:'(0029,"GEMS_IMPS_01",26)',vr:"SS",name:"VersionOfHeaderStructure",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",34)':{tag:'(0029,"GEMS_IMPS_01",34)',vr:"SL",name:"AdvantageCompOverflow",vm:"1",version:"PrivateTag"},'(0029,"GEMS_IMPS_01",35)':{tag:'(0029,"GEMS_IMPS_01",35)',vr:"SL",name:"AdvantageCompUnderflow",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",01)':{tag:'(0043,"GEMS_PARM_01",01)',vr:"SS",name:"BitmapOfPrescanOptions",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",02)':{tag:'(0043,"GEMS_PARM_01",02)',vr:"SS",name:"GradientOffsetInX",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",03)':{tag:'(0043,"GEMS_PARM_01",03)',vr:"SS",name:"GradientOffsetInY",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",04)':{tag:'(0043,"GEMS_PARM_01",04)',vr:"SS",name:"GradientOffsetInZ",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",05)':{tag:'(0043,"GEMS_PARM_01",05)',vr:"SS",name:"ImageIsOriginalOrUnoriginal",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",06)':{tag:'(0043,"GEMS_PARM_01",06)',vr:"SS",name:"NumberOfEPIShots",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",07)':{tag:'(0043,"GEMS_PARM_01",07)',vr:"SS",name:"ViewsPerSegment",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",08)':{tag:'(0043,"GEMS_PARM_01",08)',vr:"SS",name:"RespiratoryRateInBPM",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",09)':{tag:'(0043,"GEMS_PARM_01",09)',vr:"SS",name:"RespiratoryTriggerPoint",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0a)':{tag:'(0043,"GEMS_PARM_01",0a)',vr:"SS",name:"TypeOfReceiverUsed",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0b)':{tag:'(0043,"GEMS_PARM_01",0b)',vr:"DS",name:"PeakRateOfChangeOfGradientField",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0c)':{tag:'(0043,"GEMS_PARM_01",0c)',vr:"DS",name:"LimitsInUnitsOfPercent",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0d)':{tag:'(0043,"GEMS_PARM_01",0d)',vr:"DS",name:"PSDEstimatedLimit",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0e)':{tag:'(0043,"GEMS_PARM_01",0e)',vr:"DS",name:"PSDEstimatedLimitInTeslaPerSecond",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",0f)':{tag:'(0043,"GEMS_PARM_01",0f)',vr:"DS",name:"SARAvgHead",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",10)':{tag:'(0043,"GEMS_PARM_01",10)',vr:"US",name:"WindowValue",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",11)':{tag:'(0043,"GEMS_PARM_01",11)',vr:"US",name:"TotalInputViews",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",12)':{tag:'(0043,"GEMS_PARM_01",12)',vr:"SS",name:"XrayChain",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",13)':{tag:'(0043,"GEMS_PARM_01",13)',vr:"SS",name:"ReconKernelParameters",vm:"5",version:"PrivateTag"},'(0043,"GEMS_PARM_01",14)':{tag:'(0043,"GEMS_PARM_01",14)',vr:"SS",name:"CalibrationParameters",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",15)':{tag:'(0043,"GEMS_PARM_01",15)',vr:"SS",name:"TotalOutputViews",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",16)':{tag:'(0043,"GEMS_PARM_01",16)',vr:"SS",name:"NumberOfOverranges",vm:"5",version:"PrivateTag"},'(0043,"GEMS_PARM_01",17)':{tag:'(0043,"GEMS_PARM_01",17)',vr:"DS",name:"IBHImageScaleFactors",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",18)':{tag:'(0043,"GEMS_PARM_01",18)',vr:"DS",name:"BBHCoefficients",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",19)':{tag:'(0043,"GEMS_PARM_01",19)',vr:"SS",name:"NumberOfBBHChainsToBlend",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1a)':{tag:'(0043,"GEMS_PARM_01",1a)',vr:"SL",name:"StartingChannelNumber",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1b)':{tag:'(0043,"GEMS_PARM_01",1b)',vr:"SS",name:"PPScanParameters",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1c)':{tag:'(0043,"GEMS_PARM_01",1c)',vr:"SS",name:"GEImageIntegrity",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1d)':{tag:'(0043,"GEMS_PARM_01",1d)',vr:"SS",name:"LevelValue",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1e)':{tag:'(0043,"GEMS_PARM_01",1e)',vr:"DS",name:"DeltaStartTime",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",1f)':{tag:'(0043,"GEMS_PARM_01",1f)',vr:"SL",name:"MaxOverrangesInAView",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",20)':{tag:'(0043,"GEMS_PARM_01",20)',vr:"DS",name:"AvgOverrangesAllViews",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",21)':{tag:'(0043,"GEMS_PARM_01",21)',vr:"SS",name:"CorrectedAfterglowTerms",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",25)':{tag:'(0043,"GEMS_PARM_01",25)',vr:"SS",name:"ReferenceChannels",vm:"6",version:"PrivateTag"},'(0043,"GEMS_PARM_01",26)':{tag:'(0043,"GEMS_PARM_01",26)',vr:"US",name:"NoViewsRefChannelsBlocked",vm:"6",version:"PrivateTag"},'(0043,"GEMS_PARM_01",27)':{tag:'(0043,"GEMS_PARM_01",27)',vr:"SH",name:"ScanPitchRatio",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",28)':{tag:'(0043,"GEMS_PARM_01",28)',vr:"OB",name:"UniqueImageIdentifier",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",29)':{tag:'(0043,"GEMS_PARM_01",29)',vr:"OB",name:"HistogramTables",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2a)':{tag:'(0043,"GEMS_PARM_01",2a)',vr:"OB",name:"UserDefinedData",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2b)':{tag:'(0043,"GEMS_PARM_01",2b)',vr:"SS",name:"PrivateScanOptions",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2c)':{tag:'(0043,"GEMS_PARM_01",2c)',vr:"SS",name:"EffectiveEchoSpacing",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2d)':{tag:'(0043,"GEMS_PARM_01",2d)',vr:"SH",name:"StringSlopField1",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2e)':{tag:'(0043,"GEMS_PARM_01",2e)',vr:"SH",name:"StringSlopField2",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",2f)':{tag:'(0043,"GEMS_PARM_01",2f)',vr:"SS",name:"RawDataType",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",30)':{tag:'(0043,"GEMS_PARM_01",30)',vr:"SS",name:"RawDataType",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",31)':{tag:'(0043,"GEMS_PARM_01",31)',vr:"DS",name:"RACoordOfTargetReconCentre",vm:"2",version:"PrivateTag"},'(0043,"GEMS_PARM_01",32)':{tag:'(0043,"GEMS_PARM_01",32)',vr:"SS",name:"RawDataType",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",33)':{tag:'(0043,"GEMS_PARM_01",33)',vr:"FL",name:"NegScanSpacing",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",34)':{tag:'(0043,"GEMS_PARM_01",34)',vr:"IS",name:"OffsetFrequency",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",35)':{tag:'(0043,"GEMS_PARM_01",35)',vr:"UL",name:"UserUsageTag",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",36)':{tag:'(0043,"GEMS_PARM_01",36)',vr:"UL",name:"UserFillMapMSW",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",37)':{tag:'(0043,"GEMS_PARM_01",37)',vr:"UL",name:"UserFillMapLSW",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",38)':{tag:'(0043,"GEMS_PARM_01",38)',vr:"FL",name:"User25ToUser48",vm:"24",version:"PrivateTag"},'(0043,"GEMS_PARM_01",39)':{tag:'(0043,"GEMS_PARM_01",39)',vr:"IS",name:"SlopInteger6ToSlopInteger9",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",40)':{tag:'(0043,"GEMS_PARM_01",40)',vr:"FL",name:"TriggerOnPosition",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",41)':{tag:'(0043,"GEMS_PARM_01",41)',vr:"FL",name:"DegreeOfRotation",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",42)':{tag:'(0043,"GEMS_PARM_01",42)',vr:"SL",name:"DASTriggerSource",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",43)':{tag:'(0043,"GEMS_PARM_01",43)',vr:"SL",name:"DASFpaGain",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",44)':{tag:'(0043,"GEMS_PARM_01",44)',vr:"SL",name:"DASOutputSource",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",45)':{tag:'(0043,"GEMS_PARM_01",45)',vr:"SL",name:"DASAdInput",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",46)':{tag:'(0043,"GEMS_PARM_01",46)',vr:"SL",name:"DASCalMode",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",47)':{tag:'(0043,"GEMS_PARM_01",47)',vr:"SL",name:"DASCalFrequency",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",48)':{tag:'(0043,"GEMS_PARM_01",48)',vr:"SL",name:"DASRegXm",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",49)':{tag:'(0043,"GEMS_PARM_01",49)',vr:"SL",name:"DASAutoZero",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",4a)':{tag:'(0043,"GEMS_PARM_01",4a)',vr:"SS",name:"StartingChannelOfView",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",4b)':{tag:'(0043,"GEMS_PARM_01",4b)',vr:"SL",name:"DASXmPattern",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",4c)':{tag:'(0043,"GEMS_PARM_01",4c)',vr:"SS",name:"TGGCTriggerMode",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",4d)':{tag:'(0043,"GEMS_PARM_01",4d)',vr:"FL",name:"StartScanToXrayOnDelay",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",4e)':{tag:'(0043,"GEMS_PARM_01",4e)',vr:"FL",name:"DurationOfXrayOn",vm:"4",version:"PrivateTag"},'(0043,"GEMS_PARM_01",60)':{tag:'(0043,"GEMS_PARM_01",60)',vr:"IS",name:"SlopInteger10ToSlopInteger17",vm:"8",version:"PrivateTag"},'(0043,"GEMS_PARM_01",61)':{tag:'(0043,"GEMS_PARM_01",61)',vr:"UI",name:"ScannerStudyEntityUID",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",62)':{tag:'(0043,"GEMS_PARM_01",62)',vr:"SH",name:"ScannerStudyID",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",6f)':{tag:'(0043,"GEMS_PARM_01",6f)',vr:"DS",name:"ScannerTableEntry",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",70)':{tag:'(0043,"GEMS_PARM_01",70)',vr:"LO",name:"ParadigmName",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",71)':{tag:'(0043,"GEMS_PARM_01",71)',vr:"ST",name:"ParadigmDescription",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",72)':{tag:'(0043,"GEMS_PARM_01",72)',vr:"UI",name:"ParadigmUID",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",73)':{tag:'(0043,"GEMS_PARM_01",73)',vr:"US",name:"ExperimentType",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",74)':{tag:'(0043,"GEMS_PARM_01",74)',vr:"US",name:"NumberOfRestVolumes",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",75)':{tag:'(0043,"GEMS_PARM_01",75)',vr:"US",name:"NumberOfActiveVolumes",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",76)':{tag:'(0043,"GEMS_PARM_01",76)',vr:"US",name:"NumberOfDummyScans",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",77)':{tag:'(0043,"GEMS_PARM_01",77)',vr:"SH",name:"ApplicationName",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",78)':{tag:'(0043,"GEMS_PARM_01",78)',vr:"SH",name:"ApplicationVersion",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",79)':{tag:'(0043,"GEMS_PARM_01",79)',vr:"US",name:"SlicesPerVolume",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7a)':{tag:'(0043,"GEMS_PARM_01",7a)',vr:"US",name:"ExpectedTimePoints",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7b)':{tag:'(0043,"GEMS_PARM_01",7b)',vr:"FL",name:"RegressorValues",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7c)':{tag:'(0043,"GEMS_PARM_01",7c)',vr:"FL",name:"DelayAfterSliceGroup",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7d)':{tag:'(0043,"GEMS_PARM_01",7d)',vr:"US",name:"ReconModeFlagWord",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7e)':{tag:'(0043,"GEMS_PARM_01",7e)',vr:"LO",name:"PACCSpecificInformation",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",7f)':{tag:'(0043,"GEMS_PARM_01",7f)',vr:"DS",name:"EDWIScaleFactor",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",80)':{tag:'(0043,"GEMS_PARM_01",80)',vr:"LO",name:"CoilIDData",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",81)':{tag:'(0043,"GEMS_PARM_01",81)',vr:"LO",name:"GECoilName",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",82)':{tag:'(0043,"GEMS_PARM_01",82)',vr:"LO",name:"SystemConfigurationInformation",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",83)':{tag:'(0043,"GEMS_PARM_01",83)',vr:"DS",name:"AssetRFactors",vm:"1-2",version:"PrivateTag"},'(0043,"GEMS_PARM_01",84)':{tag:'(0043,"GEMS_PARM_01",84)',vr:"LO",name:"AdditionalAssetData",vm:"5-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",85)':{tag:'(0043,"GEMS_PARM_01",85)',vr:"UT",name:"DebugDataTextFormat",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",86)':{tag:'(0043,"GEMS_PARM_01",86)',vr:"OB",name:"DebugDataBinaryFormat",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",87)':{tag:'(0043,"GEMS_PARM_01",87)',vr:"UT",name:"ScannerSoftwareVersionLongForm",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",88)':{tag:'(0043,"GEMS_PARM_01",88)',vr:"UI",name:"PUREAcquisitionCalibrationSeriesUID",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",89)':{tag:'(0043,"GEMS_PARM_01",89)',vr:"LO",name:"GoverningBodydBdtAndSARDefinition",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8a)':{tag:'(0043,"GEMS_PARM_01",8a)',vr:"CS",name:"PrivateInPlanePhaseEncodingDirection",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8b)':{tag:'(0043,"GEMS_PARM_01",8b)',vr:"OB",name:"FMRIBinaryDataBlock",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8c)':{tag:'(0043,"GEMS_PARM_01",8c)',vr:"DS",name:"VoxelLocation",vm:"6",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8d)':{tag:'(0043,"GEMS_PARM_01",8d)',vr:"DS",name:"SATBandLocations",vm:"7-7n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8e)':{tag:'(0043,"GEMS_PARM_01",8e)',vr:"DS",name:"SpectroPrescanValues",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",8f)':{tag:'(0043,"GEMS_PARM_01",8f)',vr:"DS",name:"SpectroParameters",vm:"3",version:"PrivateTag"},'(0043,"GEMS_PARM_01",90)':{tag:'(0043,"GEMS_PARM_01",90)',vr:"LO",name:"SARDefinition",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",91)':{tag:'(0043,"GEMS_PARM_01",91)',vr:"DS",name:"SARValue",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",92)':{tag:'(0043,"GEMS_PARM_01",92)',vr:"LO",name:"ImageErrorText",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",93)':{tag:'(0043,"GEMS_PARM_01",93)',vr:"DS",name:"SpectroQuantitationValues",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",94)':{tag:'(0043,"GEMS_PARM_01",94)',vr:"DS",name:"SpectroRatioValues",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",95)':{tag:'(0043,"GEMS_PARM_01",95)',vr:"LO",name:"PrescanReuseString",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",96)':{tag:'(0043,"GEMS_PARM_01",96)',vr:"CS",name:"ContentQualification",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",97)':{tag:'(0043,"GEMS_PARM_01",97)',vr:"LO",name:"ImageFilteringParameters",vm:"9",version:"PrivateTag"},'(0043,"GEMS_PARM_01",98)':{tag:'(0043,"GEMS_PARM_01",98)',vr:"UI",name:"ASSETAcquisitionCalibrationSeriesUID",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",99)':{tag:'(0043,"GEMS_PARM_01",99)',vr:"LO",name:"ExtendedOptions",vm:"1-n",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9a)':{tag:'(0043,"GEMS_PARM_01",9a)',vr:"IS",name:"RxStackIdentification",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9b)':{tag:'(0043,"GEMS_PARM_01",9b)',vr:"DS",name:"NPWFactor",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9c)':{tag:'(0043,"GEMS_PARM_01",9c)',vr:"OB",name:"ResearchTag1",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9d)':{tag:'(0043,"GEMS_PARM_01",9d)',vr:"OB",name:"ResearchTag2",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9e)':{tag:'(0043,"GEMS_PARM_01",9e)',vr:"OB",name:"ResearchTag3",vm:"1",version:"PrivateTag"},'(0043,"GEMS_PARM_01",9f)':{tag:'(0043,"GEMS_PARM_01",9f)',vr:"OB",name:"ResearchTag4",vm:"1",version:"PrivateTag"},'(0011,"GEMS_PATI_01",10)':{tag:'(0011,"GEMS_PATI_01",10)',vr:"SS",name:"PatientStatus",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",03)':{tag:'(0021,"GEMS_RELA_01",03)',vr:"SS",name:"SeriesFromWhichPrescribed",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",05)':{tag:'(0021,"GEMS_RELA_01",05)',vr:"SH",name:"GenesisVersionNow",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",07)':{tag:'(0021,"GEMS_RELA_01",07)',vr:"UL",name:"SeriesRecordChecksum",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",15)':{tag:'(0021,"GEMS_RELA_01",15)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",16)':{tag:'(0021,"GEMS_RELA_01",16)',vr:"SS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",18)':{tag:'(0021,"GEMS_RELA_01",18)',vr:"SH",name:"GenesisVersionNow",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",19)':{tag:'(0021,"GEMS_RELA_01",19)',vr:"UL",name:"AcqReconRecordChecksum",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",20)':{tag:'(0021,"GEMS_RELA_01",20)',vr:"DS",name:"TableStartLocation",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",35)':{tag:'(0021,"GEMS_RELA_01",35)',vr:"SS",name:"SeriesFromWhichPrescribed",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",36)':{tag:'(0021,"GEMS_RELA_01",36)',vr:"SS",name:"ImageFromWhichPrescribed",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",37)':{tag:'(0021,"GEMS_RELA_01",37)',vr:"SS",name:"ScreenFormat",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",4a)':{tag:'(0021,"GEMS_RELA_01",4a)',vr:"LO",name:"AnatomicalReferenceForScout",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",4e)':{tag:'(0021,"GEMS_RELA_01",4e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",4f)':{tag:'(0021,"GEMS_RELA_01",4f)',vr:"SS",name:"LocationsInAcquisition",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",50)':{tag:'(0021,"GEMS_RELA_01",50)',vr:"SS",name:"GraphicallyPrescribed",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",51)':{tag:'(0021,"GEMS_RELA_01",51)',vr:"DS",name:"RotationFromSourceXRot",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",52)':{tag:'(0021,"GEMS_RELA_01",52)',vr:"DS",name:"RotationFromSourceYRot",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",53)':{tag:'(0021,"GEMS_RELA_01",53)',vr:"DS",name:"RotationFromSourceZRot",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",54)':{tag:'(0021,"GEMS_RELA_01",54)',vr:"SH",name:"ImagePosition",vm:"3",version:"PrivateTag"},'(0021,"GEMS_RELA_01",55)':{tag:'(0021,"GEMS_RELA_01",55)',vr:"SH",name:"ImageOrientation",vm:"6",version:"PrivateTag"},'(0021,"GEMS_RELA_01",56)':{tag:'(0021,"GEMS_RELA_01",56)',vr:"SL",name:"IntegerSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",57)':{tag:'(0021,"GEMS_RELA_01",57)',vr:"SL",name:"IntegerSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",58)':{tag:'(0021,"GEMS_RELA_01",58)',vr:"SL",name:"IntegerSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",59)':{tag:'(0021,"GEMS_RELA_01",59)',vr:"SL",name:"IntegerSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5a)':{tag:'(0021,"GEMS_RELA_01",5a)',vr:"SL",name:"IntegerSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5b)':{tag:'(0021,"GEMS_RELA_01",5b)',vr:"DS",name:"FloatSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5c)':{tag:'(0021,"GEMS_RELA_01",5c)',vr:"DS",name:"FloatSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5d)':{tag:'(0021,"GEMS_RELA_01",5d)',vr:"DS",name:"FloatSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5e)':{tag:'(0021,"GEMS_RELA_01",5e)',vr:"DS",name:"FloatSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",5f)':{tag:'(0021,"GEMS_RELA_01",5f)',vr:"DS",name:"FloatSlop",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",70)':{tag:'(0021,"GEMS_RELA_01",70)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",71)':{tag:'(0021,"GEMS_RELA_01",71)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",81)':{tag:'(0021,"GEMS_RELA_01",81)',vr:"DS",name:"AutoWindowLevelAlpha",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",82)':{tag:'(0021,"GEMS_RELA_01",82)',vr:"DS",name:"AutoWindowLevelBeta",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",83)':{tag:'(0021,"GEMS_RELA_01",83)',vr:"DS",name:"AutoWindowLevelWindow",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",84)':{tag:'(0021,"GEMS_RELA_01",84)',vr:"DS",name:"AutoWindowLevelLevel",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",90)':{tag:'(0021,"GEMS_RELA_01",90)',vr:"SS",name:"TubeFocalSpotPosition",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",91)':{tag:'(0021,"GEMS_RELA_01",91)',vr:"SS",name:"BiopsyPosition",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",92)':{tag:'(0021,"GEMS_RELA_01",92)',vr:"FL",name:"BiopsyTLocation",vm:"1",version:"PrivateTag"},'(0021,"GEMS_RELA_01",93)':{tag:'(0021,"GEMS_RELA_01",93)',vr:"FL",name:"BiopsyRefLocation",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",04)':{tag:'(0045,"GEMS_SENO_02",04)',vr:"CS",name:"AES",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",06)':{tag:'(0045,"GEMS_SENO_02",06)',vr:"DS",name:"Angulation",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",09)':{tag:'(0045,"GEMS_SENO_02",09)',vr:"DS",name:"RealMagnificationFactor",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",0b)':{tag:'(0045,"GEMS_SENO_02",0b)',vr:"CS",name:"SenographType",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",0c)':{tag:'(0045,"GEMS_SENO_02",0c)',vr:"DS",name:"IntegrationTime",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",0d)':{tag:'(0045,"GEMS_SENO_02",0d)',vr:"DS",name:"ROIOriginXY",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",11)':{tag:'(0045,"GEMS_SENO_02",11)',vr:"DS",name:"ReceptorSizeCmXY",vm:"2",version:"PrivateTag"},'(0045,"GEMS_SENO_02",12)':{tag:'(0045,"GEMS_SENO_02",12)',vr:"IS",name:"ReceptorSizePixelsXY",vm:"2",version:"PrivateTag"},'(0045,"GEMS_SENO_02",13)':{tag:'(0045,"GEMS_SENO_02",13)',vr:"ST",name:"Screen",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",14)':{tag:'(0045,"GEMS_SENO_02",14)',vr:"DS",name:"PixelPitchMicrons",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",15)':{tag:'(0045,"GEMS_SENO_02",15)',vr:"IS",name:"PixelDepthBits",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",16)':{tag:'(0045,"GEMS_SENO_02",16)',vr:"IS",name:"BinningFactorXY",vm:"2",version:"PrivateTag"},'(0045,"GEMS_SENO_02",1B)':{tag:'(0045,"GEMS_SENO_02",1B)',vr:"CS",name:"ClinicalView",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",1D)':{tag:'(0045,"GEMS_SENO_02",1D)',vr:"DS",name:"MeanOfRawGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",1E)':{tag:'(0045,"GEMS_SENO_02",1E)',vr:"DS",name:"MeanOfOffsetGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",1F)':{tag:'(0045,"GEMS_SENO_02",1F)',vr:"DS",name:"MeanOfCorrectedGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",20)':{tag:'(0045,"GEMS_SENO_02",20)',vr:"DS",name:"MeanOfRegionGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",21)':{tag:'(0045,"GEMS_SENO_02",21)',vr:"DS",name:"MeanOfLogRegionGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",22)':{tag:'(0045,"GEMS_SENO_02",22)',vr:"DS",name:"StandardDeviationOfRawGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",23)':{tag:'(0045,"GEMS_SENO_02",23)',vr:"DS",name:"StandardDeviationOfCorrectedGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",24)':{tag:'(0045,"GEMS_SENO_02",24)',vr:"DS",name:"StandardDeviationOfRegionGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",25)':{tag:'(0045,"GEMS_SENO_02",25)',vr:"DS",name:"StandardDeviationOfLogRegionGrayLevels",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",26)':{tag:'(0045,"GEMS_SENO_02",26)',vr:"OB",name:"MAOBuffer",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",27)':{tag:'(0045,"GEMS_SENO_02",27)',vr:"IS",name:"SetNumber",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",28)':{tag:'(0045,"GEMS_SENO_02",28)',vr:"CS",name:"WindowingType",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",29)':{tag:'(0045,"GEMS_SENO_02",29)',vr:"DS",name:"WindowingParameters",vm:"1-n",version:"PrivateTag"},'(0045,"GEMS_SENO_02",2a)':{tag:'(0045,"GEMS_SENO_02",2a)',vr:"IS",name:"CrosshairCursorXCoordinates",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",2b)':{tag:'(0045,"GEMS_SENO_02",2b)',vr:"IS",name:"CrosshairCursorYCoordinates",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",39)':{tag:'(0045,"GEMS_SENO_02",39)',vr:"US",name:"VignetteRows",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3a)':{tag:'(0045,"GEMS_SENO_02",3a)',vr:"US",name:"VignetteColumns",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3b)':{tag:'(0045,"GEMS_SENO_02",3b)',vr:"US",name:"VignetteBitsAllocated",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3c)':{tag:'(0045,"GEMS_SENO_02",3c)',vr:"US",name:"VignetteBitsStored",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3d)':{tag:'(0045,"GEMS_SENO_02",3d)',vr:"US",name:"VignetteHighBit",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3e)':{tag:'(0045,"GEMS_SENO_02",3e)',vr:"US",name:"VignettePixelRepresentation",vm:"1",version:"PrivateTag"},'(0045,"GEMS_SENO_02",3f)':{tag:'(0045,"GEMS_SENO_02",3f)',vr:"OB",name:"VignettePixelData",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",06)':{tag:'(0025,"GEMS_SERS_01",06)',vr:"SS",name:"LastPulseSequenceUsed",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",07)':{tag:'(0025,"GEMS_SERS_01",07)',vr:"SL",name:"ImagesInSeries",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",10)':{tag:'(0025,"GEMS_SERS_01",10)',vr:"SL",name:"LandmarkCounter",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",11)':{tag:'(0025,"GEMS_SERS_01",11)',vr:"SS",name:"NumberOfAcquisitions",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",14)':{tag:'(0025,"GEMS_SERS_01",14)',vr:"SL",name:"IndicatesNumberOfUpdatesToHeader",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",17)':{tag:'(0025,"GEMS_SERS_01",17)',vr:"SL",name:"SeriesCompleteFlag",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",18)':{tag:'(0025,"GEMS_SERS_01",18)',vr:"SL",name:"NumberOfImagesArchived",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",19)':{tag:'(0025,"GEMS_SERS_01",19)',vr:"SL",name:"LastImageNumberUsed",vm:"1",version:"PrivateTag"},'(0025,"GEMS_SERS_01",1a)':{tag:'(0025,"GEMS_SERS_01",1a)',vr:"SH",name:"PrimaryReceiverSuiteAndHost",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",01)':{tag:'(0023,"GEMS_STDY_01",01)',vr:"SL",name:"NumberOfSeriesInStudy",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",02)':{tag:'(0023,"GEMS_STDY_01",02)',vr:"SL",name:"NumberOfUnarchivedSeries",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",10)':{tag:'(0023,"GEMS_STDY_01",10)',vr:"SS",name:"ReferenceImageField",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",50)':{tag:'(0023,"GEMS_STDY_01",50)',vr:"SS",name:"SummaryImage",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",70)':{tag:'(0023,"GEMS_STDY_01",70)',vr:"FD",name:"StartTimeSecsInFirstAxial",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",74)':{tag:'(0023,"GEMS_STDY_01",74)',vr:"SL",name:"NumberOfUpdatesToHeader",vm:"1",version:"PrivateTag"},'(0023,"GEMS_STDY_01",7d)':{tag:'(0023,"GEMS_STDY_01",7d)',vr:"SS",name:"IndicatesIfStudyHasCompleteInfo",vm:"1",version:"PrivateTag"},'(0033,"GEMS_YMHD_01",05)':{tag:'(0033,"GEMS_YMHD_01",05)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0033,"GEMS_YMHD_01",06)':{tag:'(0033,"GEMS_YMHD_01",06)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",39)':{tag:'(0019,"GE_GENESIS_REV3.0",39)',vr:"SS",name:"AxialType",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",8f)':{tag:'(0019,"GE_GENESIS_REV3.0",8f)',vr:"SS",name:"SwapPhaseFrequency",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",9c)':{tag:'(0019,"GE_GENESIS_REV3.0",9c)',vr:"SS",name:"PulseSequenceName",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",9f)':{tag:'(0019,"GE_GENESIS_REV3.0",9f)',vr:"SS",name:"CoilType",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",a4)':{tag:'(0019,"GE_GENESIS_REV3.0",a4)',vr:"SS",name:"SATFatWaterBone",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",c0)':{tag:'(0019,"GE_GENESIS_REV3.0",c0)',vr:"SS",name:"BitmapOfSATSelections",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",c1)':{tag:'(0019,"GE_GENESIS_REV3.0",c1)',vr:"SS",name:"SurfaceCoilIntensityCorrectionFlag",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",cb)':{tag:'(0019,"GE_GENESIS_REV3.0",cb)',vr:"SS",name:"PhaseContrastFlowAxis",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",cc)':{tag:'(0019,"GE_GENESIS_REV3.0",cc)',vr:"SS",name:"PhaseContrastVelocityEncoding",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",d5)':{tag:'(0019,"GE_GENESIS_REV3.0",d5)',vr:"SS",name:"FractionalEcho",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",d8)':{tag:'(0019,"GE_GENESIS_REV3.0",d8)',vr:"SS",name:"VariableEchoFlag",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",d9)':{tag:'(0019,"GE_GENESIS_REV3.0",d9)',vr:"DS",name:"ConcatenatedSat",vm:"1",version:"PrivateTag"},'(0019,"GE_GENESIS_REV3.0",f2)':{tag:'(0019,"GE_GENESIS_REV3.0",f2)',vr:"SS",name:"NumberOfPhases",vm:"1",version:"PrivateTag"},'(0043,"GE_GENESIS_REV3.0",1e)':{tag:'(0043,"GE_GENESIS_REV3.0",1e)',vr:"DS",name:"DeltaStartTime",vm:"1",version:"PrivateTag"},'(0043,"GE_GENESIS_REV3.0",27)':{tag:'(0043,"GE_GENESIS_REV3.0",27)',vr:"SH",name:"ScanPitchRatio",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",01)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",01)',vr:"FD",name:"ImageCompressionFraction",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",02)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",02)',vr:"FD",name:"ImageQuality",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",03)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",03)',vr:"FD",name:"ImageBytesTransferred",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",10)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",10)',vr:"SH",name:"J2cParameterType",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",11)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",11)',vr:"US",name:"J2cPixelRepresentation",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",12)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",12)',vr:"US",name:"J2cBitsAllocated",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",13)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",13)',vr:"US",name:"J2cPixelShiftValue",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",14)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",14)',vr:"US",name:"J2cPlanarConfiguration",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",15)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",15)',vr:"DS",name:"J2cRescaleIntercept",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",20)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",20)',vr:"LO",name:"PixelDataMD5SumPerFrame",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",21)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",21)',vr:"US",name:"HistogramPercentileLabels",vm:"1",version:"PrivateTag"},'(0029,"INTELERAD MEDICAL SYSTEMS",22)':{tag:'(0029,"INTELERAD MEDICAL SYSTEMS",22)',vr:"FD",name:"HistogramPercentileValues",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",01)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",01)',vr:"LO",name:"InstitutionCode",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",02)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",02)',vr:"LO",name:"RoutedTransferAE",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",03)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",03)',vr:"LO",name:"SourceAE",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",04)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",04)',vr:"SH",name:"DeferredValidation",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",05)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",05)',vr:"LO",name:"SeriesOwner",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",06)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",06)',vr:"LO",name:"OrderGroupNumber",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",07)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",07)',vr:"SH",name:"StrippedPixelData",vm:"1",version:"PrivateTag"},'(3f01,"INTELERAD MEDICAL SYSTEMS",08)':{tag:'(3f01,"INTELERAD MEDICAL SYSTEMS",08)',vr:"SH",name:"PendingMoveRequest",vm:"1",version:"PrivateTag"},'(0041,"INTEGRIS 1.0",20)':{tag:'(0041,"INTEGRIS 1.0",20)',vr:"FL",name:"AccumulatedFluoroscopyDose",vm:"1",version:"PrivateTag"},'(0041,"INTEGRIS 1.0",30)':{tag:'(0041,"INTEGRIS 1.0",30)',vr:"FL",name:"AccumulatedExposureDose",vm:"1",version:"PrivateTag"},'(0041,"INTEGRIS 1.0",40)':{tag:'(0041,"INTEGRIS 1.0",40)',vr:"FL",name:"TotalDose",vm:"1",version:"PrivateTag"},'(0041,"INTEGRIS 1.0",41)':{tag:'(0041,"INTEGRIS 1.0",41)',vr:"FL",name:"TotalNumberOfFrames",vm:"1",version:"PrivateTag"},'(0041,"INTEGRIS 1.0",50)':{tag:'(0041,"INTEGRIS 1.0",50)',vr:"SQ",name:"ExposureInformationSequence",vm:"1",version:"PrivateTag"},'(0009,"INTEGRIS 1.0",08)':{tag:'(0009,"INTEGRIS 1.0",08)',vr:"CS",name:"ExposureChannel",vm:"1-n",version:"PrivateTag"},'(0009,"INTEGRIS 1.0",32)':{tag:'(0009,"INTEGRIS 1.0",32)',vr:"TM",name:"ExposureStartTime",vm:"1",version:"PrivateTag"},'(0019,"INTEGRIS 1.0",00)':{tag:'(0019,"INTEGRIS 1.0",00)',vr:"LO",name:"APRName",vm:"1",version:"PrivateTag"},'(0019,"INTEGRIS 1.0",40)':{tag:'(0019,"INTEGRIS 1.0",40)',vr:"DS",name:"FrameRate",vm:"1",version:"PrivateTag"},'(0021,"INTEGRIS 1.0",12)':{tag:'(0021,"INTEGRIS 1.0",12)',vr:"IS",name:"ExposureNumber",vm:"1",version:"PrivateTag"},'(0029,"INTEGRIS 1.0",08)':{tag:'(0029,"INTEGRIS 1.0",08)',vr:"IS",name:"NumberOfExposureResults",vm:"1",version:"PrivateTag"},'(0029,"ISG shadow",70)':{tag:'(0029,"ISG shadow",70)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"ISG shadow",80)':{tag:'(0029,"ISG shadow",80)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"ISG shadow",90)':{tag:'(0029,"ISG shadow",90)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"ISI",01)':{tag:'(0009,"ISI",01)',vr:"UN",name:"SIENETGeneralPurposeIMGEF",vm:"1",version:"PrivateTag"},'(0009,"MERGE TECHNOLOGIES, INC.",00)':{tag:'(0009,"MERGE TECHNOLOGIES, INC.",00)',vr:"OB",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"OCULUS Optikgeraete GmbH",1010)':{tag:'(0029,"OCULUS Optikgeraete GmbH",1010)',vr:"OB",name:"OriginalMeasuringData",vm:"1",version:"PrivateTag"},'(0029,"OCULUS Optikgeraete GmbH",1012)':{tag:'(0029,"OCULUS Optikgeraete GmbH",1012)',vr:"UL",name:"OriginalMeasuringDataLength",vm:"1",version:"PrivateTag"},'(0029,"OCULUS Optikgeraete GmbH",1020)':{tag:'(0029,"OCULUS Optikgeraete GmbH",1020)',vr:"OB",name:"OriginalMeasuringRawData",vm:"1",version:"PrivateTag"},'(0029,"OCULUS Optikgeraete GmbH",1022)':{tag:'(0029,"OCULUS Optikgeraete GmbH",1022)',vr:"UL",name:"OriginalMeasuringRawDataLength",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",00)':{tag:'(0041,"PAPYRUS 3.0",00)',vr:"LT",name:"PapyrusComments",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",10)':{tag:'(0041,"PAPYRUS 3.0",10)',vr:"SQ",name:"PointerSequence",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",11)':{tag:'(0041,"PAPYRUS 3.0",11)',vr:"UL",name:"ImagePointer",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",12)':{tag:'(0041,"PAPYRUS 3.0",12)',vr:"UL",name:"PixelOffset",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",13)':{tag:'(0041,"PAPYRUS 3.0",13)',vr:"SQ",name:"ImageIdentifierSequence",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",14)':{tag:'(0041,"PAPYRUS 3.0",14)',vr:"SQ",name:"ExternalFileReferenceSequence",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",15)':{tag:'(0041,"PAPYRUS 3.0",15)',vr:"US",name:"NumberOfImages",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",21)':{tag:'(0041,"PAPYRUS 3.0",21)',vr:"UI",name:"ReferencedSOPClassUID",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",22)':{tag:'(0041,"PAPYRUS 3.0",22)',vr:"UI",name:"ReferencedSOPInstanceUID",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",31)':{tag:'(0041,"PAPYRUS 3.0",31)',vr:"LT",name:"ReferencedFileName",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",32)':{tag:'(0041,"PAPYRUS 3.0",32)',vr:"LT",name:"ReferencedFilePath",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",41)':{tag:'(0041,"PAPYRUS 3.0",41)',vr:"UI",name:"ReferencedImageSOPClassUID",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",42)':{tag:'(0041,"PAPYRUS 3.0",42)',vr:"UI",name:"ReferencedImageSOPInstanceUID",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS 3.0",50)':{tag:'(0041,"PAPYRUS 3.0",50)',vr:"SQ",name:"ImageSequence",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",00)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",00)',vr:"IS",name:"OverlayID",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",01)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",01)',vr:"LT",name:"LinkedOverlays",vm:"1-n",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",10)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",10)',vr:"US",name:"OverlayRows",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",11)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",11)',vr:"US",name:"OverlayColumns",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",40)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",40)',vr:"LO",name:"OverlayType",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",50)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",50)',vr:"US",name:"OverlayOrigin",vm:"1-n",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",60)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",60)',vr:"LO",name:"Editable",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",70)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",70)',vr:"LO",name:"OverlayFont",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",72)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",72)',vr:"LO",name:"OverlayStyle",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",74)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",74)',vr:"US",name:"OverlayFontSize",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",76)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",76)',vr:"LO",name:"OverlayColor",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",78)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",78)',vr:"US",name:"ShadowSize",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",80)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",80)',vr:"LO",name:"FillPattern",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",82)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",82)',vr:"US",name:"OverlayPenSize",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",a0)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",a0)',vr:"LO",name:"Label",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",a2)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",a2)',vr:"LT",name:"PostItText",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",a4)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",a4)',vr:"US",name:"AnchorPoint",vm:"2",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",b0)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",b0)',vr:"LO",name:"ROIType",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",b2)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",b2)',vr:"LT",name:"AttachedAnnotation",vm:"1",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",ba)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",ba)',vr:"US",name:"ContourPoints",vm:"1-n",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",bc)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",bc)',vr:"US",name:"MaskData",vm:"1-n",version:"PrivateTag"},'(6001-o-60ff,"PAPYRUS 3.0",c0)':{tag:'(6001-o-60ff,"PAPYRUS 3.0",c0)',vr:"SQ",name:"UINOverlaySequence",vm:"1",version:"PrivateTag"},'(0009,"PAPYRUS",00)':{tag:'(0009,"PAPYRUS",00)',vr:"LT",name:"OriginalFileName",vm:"1",version:"PrivateTag"},'(0009,"PAPYRUS",10)':{tag:'(0009,"PAPYRUS",10)',vr:"LT",name:"OriginalFileLocation",vm:"1",version:"PrivateTag"},'(0009,"PAPYRUS",18)':{tag:'(0009,"PAPYRUS",18)',vr:"LT",name:"DataSetIdentifier",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",00)':{tag:'(0041,"PAPYRUS",00)',vr:"LT",name:"PapyrusComments",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",10)':{tag:'(0041,"PAPYRUS",10)',vr:"US",name:"FolderType",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",11)':{tag:'(0041,"PAPYRUS",11)',vr:"LT",name:"PatientFolderDataSetID",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",20)':{tag:'(0041,"PAPYRUS",20)',vr:"LT",name:"FolderName",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",30)':{tag:'(0041,"PAPYRUS",30)',vr:"DA",name:"CreationDate",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",32)':{tag:'(0041,"PAPYRUS",32)',vr:"TM",name:"CreationTime",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",34)':{tag:'(0041,"PAPYRUS",34)',vr:"DA",name:"ModifiedDate",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",36)':{tag:'(0041,"PAPYRUS",36)',vr:"TM",name:"ModifiedTime",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",40)':{tag:'(0041,"PAPYRUS",40)',vr:"LT",name:"OwnerName",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",50)':{tag:'(0041,"PAPYRUS",50)',vr:"LT",name:"FolderStatus",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",60)':{tag:'(0041,"PAPYRUS",60)',vr:"UL",name:"NumberOfImages",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",62)':{tag:'(0041,"PAPYRUS",62)',vr:"UL",name:"NumberOfOther",vm:"1",version:"PrivateTag"},'(0041,"PAPYRUS",a0)':{tag:'(0041,"PAPYRUS",a0)',vr:"LT",name:"ExternalFolderElementDSID",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",a1)':{tag:'(0041,"PAPYRUS",a1)',vr:"US",name:"ExternalFolderElementDataSetType",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",a2)':{tag:'(0041,"PAPYRUS",a2)',vr:"LT",name:"ExternalFolderElementFileLocation",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",a3)':{tag:'(0041,"PAPYRUS",a3)',vr:"UL",name:"ExternalFolderElementLength",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",b0)':{tag:'(0041,"PAPYRUS",b0)',vr:"LT",name:"InternalFolderElementDSID",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",b1)':{tag:'(0041,"PAPYRUS",b1)',vr:"US",name:"InternalFolderElementDataSetType",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",b2)':{tag:'(0041,"PAPYRUS",b2)',vr:"UL",name:"InternalOffsetToDataSet",vm:"1-n",version:"PrivateTag"},'(0041,"PAPYRUS",b3)':{tag:'(0041,"PAPYRUS",b3)',vr:"UL",name:"InternalOffsetToImage",vm:"1-n",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",01)':{tag:'(2001,"Philips Imaging DD 001",01)',vr:"FL",name:"ChemicalShift",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",02)':{tag:'(2001,"Philips Imaging DD 001",02)',vr:"IS",name:"ChemicalShiftNumberMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",03)':{tag:'(2001,"Philips Imaging DD 001",03)',vr:"FL",name:"DiffusionBFactor",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",04)':{tag:'(2001,"Philips Imaging DD 001",04)',vr:"CS",name:"DiffusionDirection",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",06)':{tag:'(2001,"Philips Imaging DD 001",06)',vr:"CS",name:"ImageEnhanced",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",07)':{tag:'(2001,"Philips Imaging DD 001",07)',vr:"CS",name:"ImageTypeEDES",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",08)':{tag:'(2001,"Philips Imaging DD 001",08)',vr:"IS",name:"PhaseNumber",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",09)':{tag:'(2001,"Philips Imaging DD 001",09)',vr:"FL",name:"ImagePrepulseDelay",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",0a)':{tag:'(2001,"Philips Imaging DD 001",0a)',vr:"IS",name:"SliceNumberMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",0b)':{tag:'(2001,"Philips Imaging DD 001",0b)',vr:"CS",name:"SliceOrientation",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",0c)':{tag:'(2001,"Philips Imaging DD 001",0c)',vr:"CS",name:"ArrhythmiaRejection",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",0e)':{tag:'(2001,"Philips Imaging DD 001",0e)',vr:"CS",name:"CardiacCycled",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",0f)':{tag:'(2001,"Philips Imaging DD 001",0f)',vr:"SS",name:"CardiacGateWidth",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",10)':{tag:'(2001,"Philips Imaging DD 001",10)',vr:"CS",name:"CardiacSync",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",11)':{tag:'(2001,"Philips Imaging DD 001",11)',vr:"FL",name:"DiffusionEchoTime",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",12)':{tag:'(2001,"Philips Imaging DD 001",12)',vr:"CS",name:"DynamicSeries",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",13)':{tag:'(2001,"Philips Imaging DD 001",13)',vr:"SL",name:"EPIFactor",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",14)':{tag:'(2001,"Philips Imaging DD 001",14)',vr:"SL",name:"NumberOfEchoes",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",15)':{tag:'(2001,"Philips Imaging DD 001",15)',vr:"SS",name:"NumberOfLocations",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",16)':{tag:'(2001,"Philips Imaging DD 001",16)',vr:"SS",name:"NumberOfPCDirections",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",17)':{tag:'(2001,"Philips Imaging DD 001",17)',vr:"SL",name:"NumberOfPhasesMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",18)':{tag:'(2001,"Philips Imaging DD 001",18)',vr:"SL",name:"NumberOfSlicesMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",19)':{tag:'(2001,"Philips Imaging DD 001",19)',vr:"CS",name:"PartialMatrixScanned",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",1a)':{tag:'(2001,"Philips Imaging DD 001",1a)',vr:"FL",name:"PCVelocity",vm:"1-n",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",1b)':{tag:'(2001,"Philips Imaging DD 001",1b)',vr:"FL",name:"PrepulseDelay",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",1c)':{tag:'(2001,"Philips Imaging DD 001",1c)',vr:"CS",name:"PrepulseType",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",1d)':{tag:'(2001,"Philips Imaging DD 001",1d)',vr:"IS",name:"ReconstructionNumberMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",1f)':{tag:'(2001,"Philips Imaging DD 001",1f)',vr:"CS",name:"RespirationSync",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",20)':{tag:'(2001,"Philips Imaging DD 001",20)',vr:"LO",name:"ScanningTechnique",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",21)':{tag:'(2001,"Philips Imaging DD 001",21)',vr:"CS",name:"SPIR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",22)':{tag:'(2001,"Philips Imaging DD 001",22)',vr:"FL",name:"WaterFatShift",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",23)':{tag:'(2001,"Philips Imaging DD 001",23)',vr:"DS",name:"FlipAnglePhilips",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",24)':{tag:'(2001,"Philips Imaging DD 001",24)',vr:"CS",name:"SeriesIsInteractive",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",25)':{tag:'(2001,"Philips Imaging DD 001",25)',vr:"SH",name:"EchoTimeDisplayMR",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",26)':{tag:'(2001,"Philips Imaging DD 001",26)',vr:"CS",name:"PresentationStateSubtractionActive",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",2d)':{tag:'(2001,"Philips Imaging DD 001",2d)',vr:"SS",name:"StackNumberOfSlices",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",32)':{tag:'(2001,"Philips Imaging DD 001",32)',vr:"FL",name:"StackRadialAngle",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",33)':{tag:'(2001,"Philips Imaging DD 001",33)',vr:"CS",name:"StackRadialAxis",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",35)':{tag:'(2001,"Philips Imaging DD 001",35)',vr:"SS",name:"StackSliceNumber",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",36)':{tag:'(2001,"Philips Imaging DD 001",36)',vr:"CS",name:"StackType",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",3f)':{tag:'(2001,"Philips Imaging DD 001",3f)',vr:"CS",name:"ZoomMode",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",58)':{tag:'(2001,"Philips Imaging DD 001",58)',vr:"UL",name:"ContrastTransferTaste",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",5f)':{tag:'(2001,"Philips Imaging DD 001",5f)',vr:"SQ",name:"StackSequence",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",60)':{tag:'(2001,"Philips Imaging DD 001",60)',vr:"SL",name:"NumberOfStacks",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",61)':{tag:'(2001,"Philips Imaging DD 001",61)',vr:"CS",name:"SeriesTransmitted",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",62)':{tag:'(2001,"Philips Imaging DD 001",62)',vr:"CS",name:"SeriesCommitted",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",63)':{tag:'(2001,"Philips Imaging DD 001",63)',vr:"CS",name:"ExaminationSource",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",67)':{tag:'(2001,"Philips Imaging DD 001",67)',vr:"CS",name:"LinearPresentationGLTrafoShapeSub",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",77)':{tag:'(2001,"Philips Imaging DD 001",77)',vr:"CS",name:"GLTrafoType",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",7b)':{tag:'(2001,"Philips Imaging DD 001",7b)',vr:"IS",name:"AcquisitionNumber",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",81)':{tag:'(2001,"Philips Imaging DD 001",81)',vr:"IS",name:"NumberOfDynamicScans",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",9f)':{tag:'(2001,"Philips Imaging DD 001",9f)',vr:"US",name:"PixelProcessingKernelSize",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",a1)':{tag:'(2001,"Philips Imaging DD 001",a1)',vr:"CS",name:"IsRawImage",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",f1)':{tag:'(2001,"Philips Imaging DD 001",f1)',vr:"FL",name:"ProspectiveMotionCorrection",vm:"1",version:"PrivateTag"},'(2001,"Philips Imaging DD 001",f2)':{tag:'(2001,"Philips Imaging DD 001",f2)',vr:"FL",name:"RetrospectiveMotionCorrection",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",01)':{tag:'(2001,"PHILIPS IMAGING DD 001",01)',vr:"FL",name:"ChemicalShift",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",02)':{tag:'(2001,"PHILIPS IMAGING DD 001",02)',vr:"IS",name:"ChemicalShiftNumberMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",03)':{tag:'(2001,"PHILIPS IMAGING DD 001",03)',vr:"FL",name:"DiffusionBFactor",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",04)':{tag:'(2001,"PHILIPS IMAGING DD 001",04)',vr:"CS",name:"DiffusionDirection",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",06)':{tag:'(2001,"PHILIPS IMAGING DD 001",06)',vr:"CS",name:"ImageEnhanced",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",07)':{tag:'(2001,"PHILIPS IMAGING DD 001",07)',vr:"CS",name:"ImageTypeEDES",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",08)':{tag:'(2001,"PHILIPS IMAGING DD 001",08)',vr:"IS",name:"PhaseNumber",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",09)':{tag:'(2001,"PHILIPS IMAGING DD 001",09)',vr:"FL",name:"ImagePrepulseDelay",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",0a)':{tag:'(2001,"PHILIPS IMAGING DD 001",0a)',vr:"IS",name:"SliceNumberMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",0b)':{tag:'(2001,"PHILIPS IMAGING DD 001",0b)',vr:"CS",name:"SliceOrientation",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",0c)':{tag:'(2001,"PHILIPS IMAGING DD 001",0c)',vr:"CS",name:"ArrhythmiaRejection",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",0e)':{tag:'(2001,"PHILIPS IMAGING DD 001",0e)',vr:"CS",name:"CardiacCycled",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",0f)':{tag:'(2001,"PHILIPS IMAGING DD 001",0f)',vr:"SS",name:"CardiacGateWidth",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",10)':{tag:'(2001,"PHILIPS IMAGING DD 001",10)',vr:"CS",name:"CardiacSync",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",11)':{tag:'(2001,"PHILIPS IMAGING DD 001",11)',vr:"FL",name:"DiffusionEchoTime",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",12)':{tag:'(2001,"PHILIPS IMAGING DD 001",12)',vr:"CS",name:"DynamicSeries",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",13)':{tag:'(2001,"PHILIPS IMAGING DD 001",13)',vr:"SL",name:"EPIFactor",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",14)':{tag:'(2001,"PHILIPS IMAGING DD 001",14)',vr:"SL",name:"NumberOfEchoes",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",15)':{tag:'(2001,"PHILIPS IMAGING DD 001",15)',vr:"SS",name:"NumberOfLocations",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",16)':{tag:'(2001,"PHILIPS IMAGING DD 001",16)',vr:"SS",name:"NumberOfPCDirections",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",17)':{tag:'(2001,"PHILIPS IMAGING DD 001",17)',vr:"SL",name:"NumberOfPhasesMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",18)':{tag:'(2001,"PHILIPS IMAGING DD 001",18)',vr:"SL",name:"NumberOfSlicesMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",19)':{tag:'(2001,"PHILIPS IMAGING DD 001",19)',vr:"CS",name:"PartialMatrixScanned",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",1a)':{tag:'(2001,"PHILIPS IMAGING DD 001",1a)',vr:"FL",name:"PCVelocity",vm:"1-n",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",1b)':{tag:'(2001,"PHILIPS IMAGING DD 001",1b)',vr:"FL",name:"PrepulseDelay",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",1c)':{tag:'(2001,"PHILIPS IMAGING DD 001",1c)',vr:"CS",name:"PrepulseType",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",1d)':{tag:'(2001,"PHILIPS IMAGING DD 001",1d)',vr:"IS",name:"ReconstructionNumberMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",1f)':{tag:'(2001,"PHILIPS IMAGING DD 001",1f)',vr:"CS",name:"RespirationSync",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",20)':{tag:'(2001,"PHILIPS IMAGING DD 001",20)',vr:"LO",name:"ScanningTechnique",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",21)':{tag:'(2001,"PHILIPS IMAGING DD 001",21)',vr:"CS",name:"SPIR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",22)':{tag:'(2001,"PHILIPS IMAGING DD 001",22)',vr:"FL",name:"WaterFatShift",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",23)':{tag:'(2001,"PHILIPS IMAGING DD 001",23)',vr:"DS",name:"FlipAnglePhilips",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",24)':{tag:'(2001,"PHILIPS IMAGING DD 001",24)',vr:"CS",name:"SeriesIsInteractive",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",25)':{tag:'(2001,"PHILIPS IMAGING DD 001",25)',vr:"SH",name:"EchoTimeDisplayMR",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",26)':{tag:'(2001,"PHILIPS IMAGING DD 001",26)',vr:"CS",name:"PresentationStateSubtractionActive",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",2d)':{tag:'(2001,"PHILIPS IMAGING DD 001",2d)',vr:"SS",name:"StackNumberOfSlices",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",32)':{tag:'(2001,"PHILIPS IMAGING DD 001",32)',vr:"FL",name:"StackRadialAngle",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",33)':{tag:'(2001,"PHILIPS IMAGING DD 001",33)',vr:"CS",name:"StackRadialAxis",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",35)':{tag:'(2001,"PHILIPS IMAGING DD 001",35)',vr:"SS",name:"StackSliceNumber",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",36)':{tag:'(2001,"PHILIPS IMAGING DD 001",36)',vr:"CS",name:"StackType",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",3f)':{tag:'(2001,"PHILIPS IMAGING DD 001",3f)',vr:"CS",name:"ZoomMode",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",58)':{tag:'(2001,"PHILIPS IMAGING DD 001",58)',vr:"UL",name:"ContrastTransferTaste",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",5f)':{tag:'(2001,"PHILIPS IMAGING DD 001",5f)',vr:"SQ",name:"StackSequence",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",60)':{tag:'(2001,"PHILIPS IMAGING DD 001",60)',vr:"SL",name:"NumberOfStacks",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",61)':{tag:'(2001,"PHILIPS IMAGING DD 001",61)',vr:"CS",name:"SeriesTransmitted",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",62)':{tag:'(2001,"PHILIPS IMAGING DD 001",62)',vr:"CS",name:"SeriesCommitted",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",63)':{tag:'(2001,"PHILIPS IMAGING DD 001",63)',vr:"CS",name:"ExaminationSource",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",67)':{tag:'(2001,"PHILIPS IMAGING DD 001",67)',vr:"CS",name:"LinearPresentationGLTrafoShapeSub",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",77)':{tag:'(2001,"PHILIPS IMAGING DD 001",77)',vr:"CS",name:"GLTrafoType",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",7b)':{tag:'(2001,"PHILIPS IMAGING DD 001",7b)',vr:"IS",name:"AcquisitionNumber",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",81)':{tag:'(2001,"PHILIPS IMAGING DD 001",81)',vr:"IS",name:"NumberOfDynamicScans",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",9f)':{tag:'(2001,"PHILIPS IMAGING DD 001",9f)',vr:"US",name:"PixelProcessingKernelSize",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",a1)':{tag:'(2001,"PHILIPS IMAGING DD 001",a1)',vr:"CS",name:"IsRawImage",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",f1)':{tag:'(2001,"PHILIPS IMAGING DD 001",f1)',vr:"FL",name:"ProspectiveMotionCorrection",vm:"1",version:"PrivateTag"},'(2001,"PHILIPS IMAGING DD 001",f2)':{tag:'(2001,"PHILIPS IMAGING DD 001",f2)',vr:"FL",name:"RetrospectiveMotionCorrection",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",05)':{tag:'(2005,"Philips MR Imaging DD 001",05)',vr:"CS",name:"SynergyReconstructionType",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",1e)':{tag:'(2005,"Philips MR Imaging DD 001",1e)',vr:"SH",name:"MIPProtocol",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",1f)':{tag:'(2005,"Philips MR Imaging DD 001",1f)',vr:"SH",name:"MPRProtocol",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",20)':{tag:'(2005,"Philips MR Imaging DD 001",20)',vr:"SL",name:"NumberOfChemicalShifts",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",2d)':{tag:'(2005,"Philips MR Imaging DD 001",2d)',vr:"SS",name:"NumberOfStackSlices",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",83)':{tag:'(2005,"Philips MR Imaging DD 001",83)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",a1)':{tag:'(2005,"Philips MR Imaging DD 001",a1)',vr:"CS",name:"SyncraScanType",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",b0)':{tag:'(2005,"Philips MR Imaging DD 001",b0)',vr:"FL",name:"DiffusionDirectionRL",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",b1)':{tag:'(2005,"Philips MR Imaging DD 001",b1)',vr:"FL",name:"DiffusionDirectionAP",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 001",b2)':{tag:'(2005,"Philips MR Imaging DD 001",b2)',vr:"FL",name:"DiffusionDirectionFH",vm:"1",version:"PrivateTag"},'(2005,"Philips MR Imaging DD 005",02)':{tag:'(2005,"Philips MR Imaging DD 005",02)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",05)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",05)',vr:"CS",name:"SynergyReconstructionType",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",1e)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",1e)',vr:"SH",name:"MIPProtocol",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",1f)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",1f)',vr:"SH",name:"MPRProtocol",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",20)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",20)',vr:"SL",name:"NumberOfChemicalShifts",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",2d)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",2d)',vr:"SS",name:"NumberOfStackSlices",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",83)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",83)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",a1)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",a1)',vr:"CS",name:"SyncraScanType",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",b0)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",b0)',vr:"FL",name:"DiffusionDirectionRL",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",b1)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",b1)',vr:"FL",name:"DiffusionDirectionAP",vm:"1",version:"PrivateTag"},'(2005,"PHILIPS MR IMAGING DD 001",b2)':{tag:'(2005,"PHILIPS MR IMAGING DD 001",b2)',vr:"FL",name:"DiffusionDirectionFH",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR R5.5/PART",1000)':{tag:'(0019,"PHILIPS MR R5.5/PART",1000)',vr:"DS",name:"FieldOfView",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR R5.6/PART",1000)':{tag:'(0019,"PHILIPS MR R5.6/PART",1000)',vr:"DS",name:"FieldOfView",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",01)':{tag:'(0019,"PHILIPS MR SPECTRO;1",01)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",02)':{tag:'(0019,"PHILIPS MR SPECTRO;1",02)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",03)':{tag:'(0019,"PHILIPS MR SPECTRO;1",03)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",04)':{tag:'(0019,"PHILIPS MR SPECTRO;1",04)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",05)':{tag:'(0019,"PHILIPS MR SPECTRO;1",05)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",06)':{tag:'(0019,"PHILIPS MR SPECTRO;1",06)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",07)':{tag:'(0019,"PHILIPS MR SPECTRO;1",07)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",08)':{tag:'(0019,"PHILIPS MR SPECTRO;1",08)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",09)':{tag:'(0019,"PHILIPS MR SPECTRO;1",09)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",10)':{tag:'(0019,"PHILIPS MR SPECTRO;1",10)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",12)':{tag:'(0019,"PHILIPS MR SPECTRO;1",12)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",13)':{tag:'(0019,"PHILIPS MR SPECTRO;1",13)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",14)':{tag:'(0019,"PHILIPS MR SPECTRO;1",14)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",15)':{tag:'(0019,"PHILIPS MR SPECTRO;1",15)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",16)':{tag:'(0019,"PHILIPS MR SPECTRO;1",16)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",17)':{tag:'(0019,"PHILIPS MR SPECTRO;1",17)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",18)':{tag:'(0019,"PHILIPS MR SPECTRO;1",18)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",20)':{tag:'(0019,"PHILIPS MR SPECTRO;1",20)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",21)':{tag:'(0019,"PHILIPS MR SPECTRO;1",21)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",22)':{tag:'(0019,"PHILIPS MR SPECTRO;1",22)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",23)':{tag:'(0019,"PHILIPS MR SPECTRO;1",23)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",24)':{tag:'(0019,"PHILIPS MR SPECTRO;1",24)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",25)':{tag:'(0019,"PHILIPS MR SPECTRO;1",25)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",26)':{tag:'(0019,"PHILIPS MR SPECTRO;1",26)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",27)':{tag:'(0019,"PHILIPS MR SPECTRO;1",27)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",28)':{tag:'(0019,"PHILIPS MR SPECTRO;1",28)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",29)':{tag:'(0019,"PHILIPS MR SPECTRO;1",29)',vr:"IS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",31)':{tag:'(0019,"PHILIPS MR SPECTRO;1",31)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",32)':{tag:'(0019,"PHILIPS MR SPECTRO;1",32)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",41)':{tag:'(0019,"PHILIPS MR SPECTRO;1",41)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",42)':{tag:'(0019,"PHILIPS MR SPECTRO;1",42)',vr:"IS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",43)':{tag:'(0019,"PHILIPS MR SPECTRO;1",43)',vr:"IS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",45)':{tag:'(0019,"PHILIPS MR SPECTRO;1",45)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",46)':{tag:'(0019,"PHILIPS MR SPECTRO;1",46)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",47)':{tag:'(0019,"PHILIPS MR SPECTRO;1",47)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",48)':{tag:'(0019,"PHILIPS MR SPECTRO;1",48)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",49)':{tag:'(0019,"PHILIPS MR SPECTRO;1",49)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",50)':{tag:'(0019,"PHILIPS MR SPECTRO;1",50)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",60)':{tag:'(0019,"PHILIPS MR SPECTRO;1",60)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",61)':{tag:'(0019,"PHILIPS MR SPECTRO;1",61)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",70)':{tag:'(0019,"PHILIPS MR SPECTRO;1",70)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",71)':{tag:'(0019,"PHILIPS MR SPECTRO;1",71)',vr:"IS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",72)':{tag:'(0019,"PHILIPS MR SPECTRO;1",72)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",73)':{tag:'(0019,"PHILIPS MR SPECTRO;1",73)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",74)':{tag:'(0019,"PHILIPS MR SPECTRO;1",74)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",76)':{tag:'(0019,"PHILIPS MR SPECTRO;1",76)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",77)':{tag:'(0019,"PHILIPS MR SPECTRO;1",77)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",78)':{tag:'(0019,"PHILIPS MR SPECTRO;1",78)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",79)':{tag:'(0019,"PHILIPS MR SPECTRO;1",79)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR SPECTRO;1",80)':{tag:'(0019,"PHILIPS MR SPECTRO;1",80)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"PHILIPS MR",10)':{tag:'(0009,"PHILIPS MR",10)',vr:"LO",name:"SPIRelease",vm:"1",version:"PrivateTag"},'(0009,"PHILIPS MR",12)':{tag:'(0009,"PHILIPS MR",12)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",09)':{tag:'(0019,"PHILIPS MR/LAST",09)',vr:"DS",name:"MainMagneticField",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",0e)':{tag:'(0019,"PHILIPS MR/LAST",0e)',vr:"IS",name:"FlowCompensation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",b1)':{tag:'(0019,"PHILIPS MR/LAST",b1)',vr:"IS",name:"MinimumRRInterval",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",b2)':{tag:'(0019,"PHILIPS MR/LAST",b2)',vr:"IS",name:"MaximumRRInterval",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",b3)':{tag:'(0019,"PHILIPS MR/LAST",b3)',vr:"IS",name:"NumberOfRejections",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",b4)':{tag:'(0019,"PHILIPS MR/LAST",b4)',vr:"IS",name:"NumberOfRRIntervals",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",b5)':{tag:'(0019,"PHILIPS MR/LAST",b5)',vr:"IS",name:"ArrhythmiaRejection",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",c0)':{tag:'(0019,"PHILIPS MR/LAST",c0)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",c6)':{tag:'(0019,"PHILIPS MR/LAST",c6)',vr:"IS",name:"CycledMultipleSlice",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",ce)':{tag:'(0019,"PHILIPS MR/LAST",ce)',vr:"IS",name:"REST",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",d5)':{tag:'(0019,"PHILIPS MR/LAST",d5)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",d6)':{tag:'(0019,"PHILIPS MR/LAST",d6)',vr:"IS",name:"FourierInterpolation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",d9)':{tag:'(0019,"PHILIPS MR/LAST",d9)',vr:"IS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",e0)':{tag:'(0019,"PHILIPS MR/LAST",e0)',vr:"IS",name:"Prepulse",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",e1)':{tag:'(0019,"PHILIPS MR/LAST",e1)',vr:"DS",name:"PrepulseDelay",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",e2)':{tag:'(0019,"PHILIPS MR/LAST",e2)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",e3)':{tag:'(0019,"PHILIPS MR/LAST",e3)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",f0)':{tag:'(0019,"PHILIPS MR/LAST",f0)',vr:"LT",name:"WSProtocolString1",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",f1)':{tag:'(0019,"PHILIPS MR/LAST",f1)',vr:"LT",name:"WSProtocolString2",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",f2)':{tag:'(0019,"PHILIPS MR/LAST",f2)',vr:"LT",name:"WSProtocolString3",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/LAST",f3)':{tag:'(0019,"PHILIPS MR/LAST",f3)',vr:"LT",name:"WSProtocolString4",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/LAST",00)':{tag:'(0021,"PHILIPS MR/LAST",00)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/LAST",10)':{tag:'(0021,"PHILIPS MR/LAST",10)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/LAST",20)':{tag:'(0021,"PHILIPS MR/LAST",20)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/LAST",21)':{tag:'(0021,"PHILIPS MR/LAST",21)',vr:"DS",name:"SliceGap",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/LAST",22)':{tag:'(0021,"PHILIPS MR/LAST",22)',vr:"DS",name:"StackRadialAngle",vm:"1",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",00)':{tag:'(0027,"PHILIPS MR/LAST",00)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",11)':{tag:'(0027,"PHILIPS MR/LAST",11)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",12)':{tag:'(0027,"PHILIPS MR/LAST",12)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",13)':{tag:'(0027,"PHILIPS MR/LAST",13)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",14)':{tag:'(0027,"PHILIPS MR/LAST",14)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",15)':{tag:'(0027,"PHILIPS MR/LAST",15)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0027,"PHILIPS MR/LAST",16)':{tag:'(0027,"PHILIPS MR/LAST",16)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",10)':{tag:'(0029,"PHILIPS MR/LAST",10)',vr:"DS",name:"FPMin",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",20)':{tag:'(0029,"PHILIPS MR/LAST",20)',vr:"DS",name:"FPMax",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",30)':{tag:'(0029,"PHILIPS MR/LAST",30)',vr:"DS",name:"ScaledMinimum",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",40)':{tag:'(0029,"PHILIPS MR/LAST",40)',vr:"DS",name:"ScaledMaximum",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",50)':{tag:'(0029,"PHILIPS MR/LAST",50)',vr:"DS",name:"WindowMinimum",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",60)':{tag:'(0029,"PHILIPS MR/LAST",60)',vr:"DS",name:"WindowMaximum",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",61)':{tag:'(0029,"PHILIPS MR/LAST",61)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",70)':{tag:'(0029,"PHILIPS MR/LAST",70)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",71)':{tag:'(0029,"PHILIPS MR/LAST",71)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",72)':{tag:'(0029,"PHILIPS MR/LAST",72)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",80)':{tag:'(0029,"PHILIPS MR/LAST",80)',vr:"IS",name:"ViewCenter",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",81)':{tag:'(0029,"PHILIPS MR/LAST",81)',vr:"IS",name:"ViewSize",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",82)':{tag:'(0029,"PHILIPS MR/LAST",82)',vr:"IS",name:"ViewZoom",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/LAST",83)':{tag:'(0029,"PHILIPS MR/LAST",83)',vr:"IS",name:"ViewTransform",vm:"1",version:"PrivateTag"},'(6001,"PHILIPS MR/LAST",00)':{tag:'(6001,"PHILIPS MR/LAST",00)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1000)':{tag:'(0019,"PHILIPS MR/PART",1000)',vr:"DS",name:"FieldOfView",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1005)':{tag:'(0019,"PHILIPS MR/PART",1005)',vr:"DS",name:"CCAngulation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1006)':{tag:'(0019,"PHILIPS MR/PART",1006)',vr:"DS",name:"APAngulation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1007)':{tag:'(0019,"PHILIPS MR/PART",1007)',vr:"DS",name:"LRAngulation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1008)':{tag:'(0019,"PHILIPS MR/PART",1008)',vr:"IS",name:"PatientPosition",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1009)':{tag:'(0019,"PHILIPS MR/PART",1009)',vr:"IS",name:"PatientOrientation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100a)':{tag:'(0019,"PHILIPS MR/PART",100a)',vr:"IS",name:"SliceOrientation",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100b)':{tag:'(0019,"PHILIPS MR/PART",100b)',vr:"DS",name:"LROffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100c)':{tag:'(0019,"PHILIPS MR/PART",100c)',vr:"DS",name:"CCOffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100d)':{tag:'(0019,"PHILIPS MR/PART",100d)',vr:"DS",name:"APOffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100e)':{tag:'(0019,"PHILIPS MR/PART",100e)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",100f)':{tag:'(0019,"PHILIPS MR/PART",100f)',vr:"IS",name:"NumberOfSlices",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1010)':{tag:'(0019,"PHILIPS MR/PART",1010)',vr:"DS",name:"SliceFactor",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1011)':{tag:'(0019,"PHILIPS MR/PART",1011)',vr:"DS",name:"EchoTimes",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1015)':{tag:'(0019,"PHILIPS MR/PART",1015)',vr:"IS",name:"DynamicStudy",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1018)':{tag:'(0019,"PHILIPS MR/PART",1018)',vr:"DS",name:"HeartbeatInterval",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1019)':{tag:'(0019,"PHILIPS MR/PART",1019)',vr:"DS",name:"RepetitionTimeFFE",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",101a)':{tag:'(0019,"PHILIPS MR/PART",101a)',vr:"DS",name:"FFEFlipAngle",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",101b)':{tag:'(0019,"PHILIPS MR/PART",101b)',vr:"IS",name:"NumberOfScans",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1021)':{tag:'(0019,"PHILIPS MR/PART",1021)',vr:"DS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1022)':{tag:'(0019,"PHILIPS MR/PART",1022)',vr:"DS",name:"DynamicScanTimeBegin",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1024)':{tag:'(0019,"PHILIPS MR/PART",1024)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1064)':{tag:'(0019,"PHILIPS MR/PART",1064)',vr:"DS",name:"RepetitionTimeSE",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1065)':{tag:'(0019,"PHILIPS MR/PART",1065)',vr:"DS",name:"RepetitionTimeIR",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1069)':{tag:'(0019,"PHILIPS MR/PART",1069)',vr:"IS",name:"NumberOfPhases",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",106a)':{tag:'(0019,"PHILIPS MR/PART",106a)',vr:"IS",name:"CardiacFrequency",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",106b)':{tag:'(0019,"PHILIPS MR/PART",106b)',vr:"DS",name:"InversionDelay",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",106c)':{tag:'(0019,"PHILIPS MR/PART",106c)',vr:"DS",name:"GateDelay",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",106d)':{tag:'(0019,"PHILIPS MR/PART",106d)',vr:"DS",name:"GateWidth",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",106e)':{tag:'(0019,"PHILIPS MR/PART",106e)',vr:"DS",name:"TriggerDelayTime",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1080)':{tag:'(0019,"PHILIPS MR/PART",1080)',vr:"IS",name:"NumberOfChemicalShifts",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1081)':{tag:'(0019,"PHILIPS MR/PART",1081)',vr:"DS",name:"ChemicalShift",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1084)':{tag:'(0019,"PHILIPS MR/PART",1084)',vr:"IS",name:"NumberOfRows",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1085)':{tag:'(0019,"PHILIPS MR/PART",1085)',vr:"IS",name:"NumberOfSamples",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1094)':{tag:'(0019,"PHILIPS MR/PART",1094)',vr:"LO",name:"MagnetizationTransferContrast",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1095)':{tag:'(0019,"PHILIPS MR/PART",1095)',vr:"LO",name:"SpectralPresaturationWithInversionRecovery",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1096)':{tag:'(0019,"PHILIPS MR/PART",1096)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1097)':{tag:'(0019,"PHILIPS MR/PART",1097)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10a0)':{tag:'(0019,"PHILIPS MR/PART",10a0)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10a1)':{tag:'(0019,"PHILIPS MR/PART",10a1)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10a3)':{tag:'(0019,"PHILIPS MR/PART",10a3)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10a4)':{tag:'(0019,"PHILIPS MR/PART",10a4)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10c8)':{tag:'(0019,"PHILIPS MR/PART",10c8)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10c9)':{tag:'(0019,"PHILIPS MR/PART",10c9)',vr:"IS",name:"FoldoverDirectionTransverse",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10ca)':{tag:'(0019,"PHILIPS MR/PART",10ca)',vr:"IS",name:"FoldoverDirectionSagittal",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10cb)':{tag:'(0019,"PHILIPS MR/PART",10cb)',vr:"IS",name:"FoldoverDirectionCoronal",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10cc)':{tag:'(0019,"PHILIPS MR/PART",10cc)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10cd)':{tag:'(0019,"PHILIPS MR/PART",10cd)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10ce)':{tag:'(0019,"PHILIPS MR/PART",10ce)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10cf)':{tag:'(0019,"PHILIPS MR/PART",10cf)',vr:"IS",name:"NumberOfEchoes",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d0)':{tag:'(0019,"PHILIPS MR/PART",10d0)',vr:"IS",name:"ScanResolution",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d2)':{tag:'(0019,"PHILIPS MR/PART",10d2)',vr:"LO",name:"WaterFatShift",vm:"2",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d4)':{tag:'(0019,"PHILIPS MR/PART",10d4)',vr:"IS",name:"ArtifactReduction",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d5)':{tag:'(0019,"PHILIPS MR/PART",10d5)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d6)':{tag:'(0019,"PHILIPS MR/PART",10d6)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d7)':{tag:'(0019,"PHILIPS MR/PART",10d7)',vr:"DS",name:"ScanPercentage",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d8)':{tag:'(0019,"PHILIPS MR/PART",10d8)',vr:"IS",name:"Halfscan",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10d9)':{tag:'(0019,"PHILIPS MR/PART",10d9)',vr:"IS",name:"EPIFactor",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10da)':{tag:'(0019,"PHILIPS MR/PART",10da)',vr:"IS",name:"TurboFactor",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10db)':{tag:'(0019,"PHILIPS MR/PART",10db)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10e0)':{tag:'(0019,"PHILIPS MR/PART",10e0)',vr:"IS",name:"PercentageOfScanCompleted",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",10e1)':{tag:'(0019,"PHILIPS MR/PART",10e1)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1100)':{tag:'(0019,"PHILIPS MR/PART",1100)',vr:"IS",name:"NumberOfStacks",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1101)':{tag:'(0019,"PHILIPS MR/PART",1101)',vr:"IS",name:"StackType",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1102)':{tag:'(0019,"PHILIPS MR/PART",1102)',vr:"IS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",110b)':{tag:'(0019,"PHILIPS MR/PART",110b)',vr:"DS",name:"LROffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",110c)':{tag:'(0019,"PHILIPS MR/PART",110c)',vr:"DS",name:"CCOffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",110d)':{tag:'(0019,"PHILIPS MR/PART",110d)',vr:"DS",name:"APOffcenter",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",1145)':{tag:'(0019,"PHILIPS MR/PART",1145)',vr:"IS",name:"ReconstructionResolution",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",11fc)':{tag:'(0019,"PHILIPS MR/PART",11fc)',vr:"IS",name:"ResonanceFrequency",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",12c0)':{tag:'(0019,"PHILIPS MR/PART",12c0)',vr:"DS",name:"TriggerDelayTimes",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",12e0)':{tag:'(0019,"PHILIPS MR/PART",12e0)',vr:"IS",name:"PrepulseType",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",12e1)':{tag:'(0019,"PHILIPS MR/PART",12e1)',vr:"DS",name:"PrepulseDelay",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS MR/PART",12e3)':{tag:'(0019,"PHILIPS MR/PART",12e3)',vr:"DS",name:"PhaseContrastVelocity",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1000)':{tag:'(0021,"PHILIPS MR/PART",1000)',vr:"IS",name:"ReconstructionNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1010)':{tag:'(0021,"PHILIPS MR/PART",1010)',vr:"IS",name:"ImageType",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1020)':{tag:'(0021,"PHILIPS MR/PART",1020)',vr:"IS",name:"SliceNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1030)':{tag:'(0021,"PHILIPS MR/PART",1030)',vr:"IS",name:"EchoNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1031)':{tag:'(0021,"PHILIPS MR/PART",1031)',vr:"DS",name:"PatientReferenceID",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1035)':{tag:'(0021,"PHILIPS MR/PART",1035)',vr:"IS",name:"ChemicalShiftNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1040)':{tag:'(0021,"PHILIPS MR/PART",1040)',vr:"IS",name:"PhaseNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1050)':{tag:'(0021,"PHILIPS MR/PART",1050)',vr:"IS",name:"DynamicScanNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1060)':{tag:'(0021,"PHILIPS MR/PART",1060)',vr:"IS",name:"NumberOfRowsInObject",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1061)':{tag:'(0021,"PHILIPS MR/PART",1061)',vr:"IS",name:"RowNumber",vm:"1-n",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1062)':{tag:'(0021,"PHILIPS MR/PART",1062)',vr:"IS",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1100)':{tag:'(0021,"PHILIPS MR/PART",1100)',vr:"DA",name:"ScanDate",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1110)':{tag:'(0021,"PHILIPS MR/PART",1110)',vr:"TM",name:"ScanTime",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS MR/PART",1221)':{tag:'(0021,"PHILIPS MR/PART",1221)',vr:"IS",name:"SliceGap",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",00)':{tag:'(0029,"PHILIPS MR/PART",00)',vr:"DS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",04)':{tag:'(0029,"PHILIPS MR/PART",04)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",10)':{tag:'(0029,"PHILIPS MR/PART",10)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",11)':{tag:'(0029,"PHILIPS MR/PART",11)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",20)':{tag:'(0029,"PHILIPS MR/PART",20)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",31)':{tag:'(0029,"PHILIPS MR/PART",31)',vr:"DS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",32)':{tag:'(0029,"PHILIPS MR/PART",32)',vr:"DS",name:"Unknown",vm:"2",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",c3)':{tag:'(0029,"PHILIPS MR/PART",c3)',vr:"IS",name:"ScanResolution",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",c4)':{tag:'(0029,"PHILIPS MR/PART",c4)',vr:"IS",name:"FieldOfView",vm:"1",version:"PrivateTag"},'(0029,"PHILIPS MR/PART",d5)':{tag:'(0029,"PHILIPS MR/PART",d5)',vr:"LT",name:"SliceThickness",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS-MR-1",11)':{tag:'(0019,"PHILIPS-MR-1",11)',vr:"IS",name:"ChemicalShiftNumber",vm:"1",version:"PrivateTag"},'(0019,"PHILIPS-MR-1",12)':{tag:'(0019,"PHILIPS-MR-1",12)',vr:"IS",name:"PhaseNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS-MR-1",01)':{tag:'(0021,"PHILIPS-MR-1",01)',vr:"IS",name:"ReconstructionNumber",vm:"1",version:"PrivateTag"},'(0021,"PHILIPS-MR-1",02)':{tag:'(0021,"PHILIPS-MR-1",02)',vr:"IS",name:"SliceNumber",vm:"1",version:"PrivateTag"},'(7001,"Picker NM Private Group",01)':{tag:'(7001,"Picker NM Private Group",01)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(7001,"Picker NM Private Group",02)':{tag:'(7001,"Picker NM Private Group",02)',vr:"OB",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 ACQU",10)':{tag:'(0019,"SIEMENS CM VA0 ACQU",10)',vr:"LT",name:"ParameterFileName",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 ACQU",11)':{tag:'(0019,"SIEMENS CM VA0 ACQU",11)',vr:"LO",name:"SequenceFileName",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 ACQU",12)':{tag:'(0019,"SIEMENS CM VA0 ACQU",12)',vr:"LT",name:"SequenceFileOwner",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 ACQU",13)':{tag:'(0019,"SIEMENS CM VA0 ACQU",13)',vr:"LT",name:"SequenceDescription",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 ACQU",14)':{tag:'(0019,"SIEMENS CM VA0 ACQU",14)',vr:"LT",name:"EPIFileName",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 CMS",00)':{tag:'(0009,"SIEMENS CM VA0 CMS",00)',vr:"DS",name:"NumberOfMeasurements",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 CMS",10)':{tag:'(0009,"SIEMENS CM VA0 CMS",10)',vr:"LT",name:"StorageMode",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 CMS",12)':{tag:'(0009,"SIEMENS CM VA0 CMS",12)',vr:"UL",name:"EvaluationMaskImage",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 CMS",26)':{tag:'(0009,"SIEMENS CM VA0 CMS",26)',vr:"DA",name:"LastMoveDate",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 CMS",27)':{tag:'(0009,"SIEMENS CM VA0 CMS",27)',vr:"TM",name:"LastMoveTime",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",0a)':{tag:'(0011,"SIEMENS CM VA0 CMS",0a)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",10)':{tag:'(0011,"SIEMENS CM VA0 CMS",10)',vr:"DA",name:"RegistrationDate",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",11)':{tag:'(0011,"SIEMENS CM VA0 CMS",11)',vr:"TM",name:"RegistrationTime",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",22)':{tag:'(0011,"SIEMENS CM VA0 CMS",22)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",23)':{tag:'(0011,"SIEMENS CM VA0 CMS",23)',vr:"DS",name:"UsedPatientWeight",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS CM VA0 CMS",40)':{tag:'(0011,"SIEMENS CM VA0 CMS",40)',vr:"IS",name:"OrganCode",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",00)':{tag:'(0013,"SIEMENS CM VA0 CMS",00)',vr:"LT",name:"ModifyingPhysician",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",10)':{tag:'(0013,"SIEMENS CM VA0 CMS",10)',vr:"DA",name:"ModificationDate",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",12)':{tag:'(0013,"SIEMENS CM VA0 CMS",12)',vr:"TM",name:"ModificationTime",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",20)':{tag:'(0013,"SIEMENS CM VA0 CMS",20)',vr:"LO",name:"PatientName",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",22)':{tag:'(0013,"SIEMENS CM VA0 CMS",22)',vr:"LO",name:"PatientId",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",30)':{tag:'(0013,"SIEMENS CM VA0 CMS",30)',vr:"DA",name:"PatientBirthdate",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",31)':{tag:'(0013,"SIEMENS CM VA0 CMS",31)',vr:"DS",name:"PatientWeight",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",32)':{tag:'(0013,"SIEMENS CM VA0 CMS",32)',vr:"LT",name:"PatientsMaidenName",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",33)':{tag:'(0013,"SIEMENS CM VA0 CMS",33)',vr:"LT",name:"ReferringPhysician",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",34)':{tag:'(0013,"SIEMENS CM VA0 CMS",34)',vr:"LT",name:"AdmittingDiagnosis",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",35)':{tag:'(0013,"SIEMENS CM VA0 CMS",35)',vr:"LO",name:"PatientSex",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",40)':{tag:'(0013,"SIEMENS CM VA0 CMS",40)',vr:"LO",name:"ProcedureDescription",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",42)':{tag:'(0013,"SIEMENS CM VA0 CMS",42)',vr:"LO",name:"RestDirection",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",44)':{tag:'(0013,"SIEMENS CM VA0 CMS",44)',vr:"LO",name:"PatientPosition",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",46)':{tag:'(0013,"SIEMENS CM VA0 CMS",46)',vr:"LT",name:"ViewDirection",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",50)':{tag:'(0013,"SIEMENS CM VA0 CMS",50)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",51)':{tag:'(0013,"SIEMENS CM VA0 CMS",51)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",52)':{tag:'(0013,"SIEMENS CM VA0 CMS",52)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",53)':{tag:'(0013,"SIEMENS CM VA0 CMS",53)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",54)':{tag:'(0013,"SIEMENS CM VA0 CMS",54)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",55)':{tag:'(0013,"SIEMENS CM VA0 CMS",55)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0013,"SIEMENS CM VA0 CMS",56)':{tag:'(0013,"SIEMENS CM VA0 CMS",56)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 CMS",10)':{tag:'(0019,"SIEMENS CM VA0 CMS",10)',vr:"DS",name:"NetFrequency",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 CMS",20)':{tag:'(0019,"SIEMENS CM VA0 CMS",20)',vr:"LT",name:"MeasurementMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 CMS",30)':{tag:'(0019,"SIEMENS CM VA0 CMS",30)',vr:"LT",name:"CalculationMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 CMS",50)':{tag:'(0019,"SIEMENS CM VA0 CMS",50)',vr:"IS",name:"NoiseLevel",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CM VA0 CMS",60)':{tag:'(0019,"SIEMENS CM VA0 CMS",60)',vr:"IS",name:"NumberOfDataBytes",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",20)':{tag:'(0021,"SIEMENS CM VA0 CMS",20)',vr:"DS",name:"FoV",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",22)':{tag:'(0021,"SIEMENS CM VA0 CMS",22)',vr:"DS",name:"ImageMagnificationFactor",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",24)':{tag:'(0021,"SIEMENS CM VA0 CMS",24)',vr:"DS",name:"ImageScrollOffset",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",26)':{tag:'(0021,"SIEMENS CM VA0 CMS",26)',vr:"IS",name:"ImagePixelOffset",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",30)':{tag:'(0021,"SIEMENS CM VA0 CMS",30)',vr:"LT",name:"ViewDirection",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",32)':{tag:'(0021,"SIEMENS CM VA0 CMS",32)',vr:"CS",name:"PatientRestDirection",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",60)':{tag:'(0021,"SIEMENS CM VA0 CMS",60)',vr:"DS",name:"ImagePosition",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",61)':{tag:'(0021,"SIEMENS CM VA0 CMS",61)',vr:"DS",name:"ImageNormal",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",63)':{tag:'(0021,"SIEMENS CM VA0 CMS",63)',vr:"DS",name:"ImageDistance",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",65)':{tag:'(0021,"SIEMENS CM VA0 CMS",65)',vr:"US",name:"ImagePositioningHistoryMask",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",6a)':{tag:'(0021,"SIEMENS CM VA0 CMS",6a)',vr:"DS",name:"ImageRow",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",6b)':{tag:'(0021,"SIEMENS CM VA0 CMS",6b)',vr:"DS",name:"ImageColumn",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",70)':{tag:'(0021,"SIEMENS CM VA0 CMS",70)',vr:"LT",name:"PatientOrientationSet1",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",71)':{tag:'(0021,"SIEMENS CM VA0 CMS",71)',vr:"LT",name:"PatientOrientationSet2",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",80)':{tag:'(0021,"SIEMENS CM VA0 CMS",80)',vr:"LT",name:"StudyName",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CM VA0 CMS",82)':{tag:'(0021,"SIEMENS CM VA0 CMS",82)',vr:"LT",name:"StudyType",vm:"3",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",10)':{tag:'(0029,"SIEMENS CM VA0 CMS",10)',vr:"LT",name:"WindowStyle",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",11)':{tag:'(0029,"SIEMENS CM VA0 CMS",11)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",13)':{tag:'(0029,"SIEMENS CM VA0 CMS",13)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",20)':{tag:'(0029,"SIEMENS CM VA0 CMS",20)',vr:"LT",name:"PixelQualityCode",vm:"3",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",22)':{tag:'(0029,"SIEMENS CM VA0 CMS",22)',vr:"IS",name:"PixelQualityValue",vm:"3",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",50)':{tag:'(0029,"SIEMENS CM VA0 CMS",50)',vr:"LT",name:"ArchiveCode",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",51)':{tag:'(0029,"SIEMENS CM VA0 CMS",51)',vr:"LT",name:"ExposureCode",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",52)':{tag:'(0029,"SIEMENS CM VA0 CMS",52)',vr:"LT",name:"SortCode",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",53)':{tag:'(0029,"SIEMENS CM VA0 CMS",53)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CM VA0 CMS",60)':{tag:'(0029,"SIEMENS CM VA0 CMS",60)',vr:"LT",name:"Splash",vm:"1",version:"PrivateTag"},'(0051,"SIEMENS CM VA0 CMS",10)':{tag:'(0051,"SIEMENS CM VA0 CMS",10)',vr:"LT",name:"ImageText",vm:"1-n",version:"PrivateTag"},'(6021,"SIEMENS CM VA0 CMS",00)':{tag:'(6021,"SIEMENS CM VA0 CMS",00)',vr:"LT",name:"ImageGraphicsFormatCode",vm:"1",version:"PrivateTag"},'(6021,"SIEMENS CM VA0 CMS",10)':{tag:'(6021,"SIEMENS CM VA0 CMS",10)',vr:"LT",name:"ImageGraphics",vm:"1",version:"PrivateTag"},'(7fe1,"SIEMENS CM VA0 CMS",00)':{tag:'(7fe1,"SIEMENS CM VA0 CMS",00)',vr:"OB",name:"BinaryData",vm:"1-n",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",10)':{tag:'(0009,"SIEMENS CM VA0 LAB",10)',vr:"LT",name:"GeneratorIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",11)':{tag:'(0009,"SIEMENS CM VA0 LAB",11)',vr:"LT",name:"GantryIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",12)':{tag:'(0009,"SIEMENS CM VA0 LAB",12)',vr:"LT",name:"X-RayTubeIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",13)':{tag:'(0009,"SIEMENS CM VA0 LAB",13)',vr:"LT",name:"DetectorIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",14)':{tag:'(0009,"SIEMENS CM VA0 LAB",14)',vr:"LT",name:"DASIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",15)':{tag:'(0009,"SIEMENS CM VA0 LAB",15)',vr:"LT",name:"SMIIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",16)':{tag:'(0009,"SIEMENS CM VA0 LAB",16)',vr:"LT",name:"CPUIdentificationLabel",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CM VA0 LAB",20)':{tag:'(0009,"SIEMENS CM VA0 LAB",20)',vr:"LT",name:"HeaderVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",08)':{tag:'(0029,"SIEMENS CSA HEADER",08)',vr:"CS",name:"CSAImageHeaderType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",09)':{tag:'(0029,"SIEMENS CSA HEADER",09)',vr:"LO",name:"CSAImageHeaderVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",10)':{tag:'(0029,"SIEMENS CSA HEADER",10)',vr:"OB",name:"CSAImageHeaderInfo",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",18)':{tag:'(0029,"SIEMENS CSA HEADER",18)',vr:"CS",name:"CSASeriesHeaderType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",19)':{tag:'(0029,"SIEMENS CSA HEADER",19)',vr:"LO",name:"CSASeriesHeaderVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA HEADER",20)':{tag:'(0029,"SIEMENS CSA HEADER",20)',vr:"OB",name:"CSASeriesHeaderInfo",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA NON-IMAGE",08)':{tag:'(0029,"SIEMENS CSA NON-IMAGE",08)',vr:"CS",name:"CSADataType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA NON-IMAGE",09)':{tag:'(0029,"SIEMENS CSA NON-IMAGE",09)',vr:"LO",name:"CSADataVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS CSA NON-IMAGE",10)':{tag:'(0029,"SIEMENS CSA NON-IMAGE",10)',vr:"OB",name:"CSADataInfo",vm:"1",version:"PrivateTag"},'(7FE1,"SIEMENS CSA NON-IMAGE",10)':{tag:'(7FE1,"SIEMENS CSA NON-IMAGE",10)',vr:"OB",name:"CSAData",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",10)':{tag:'(0019,"SIEMENS CT VA0 COAD",10)',vr:"DS",name:"DistanceSourceToSourceSideCollimator",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",11)':{tag:'(0019,"SIEMENS CT VA0 COAD",11)',vr:"DS",name:"DistanceSourceToDetectorSideCollimator",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",20)':{tag:'(0019,"SIEMENS CT VA0 COAD",20)',vr:"IS",name:"NumberOfPossibleChannels",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",21)':{tag:'(0019,"SIEMENS CT VA0 COAD",21)',vr:"IS",name:"MeanChannelNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",22)':{tag:'(0019,"SIEMENS CT VA0 COAD",22)',vr:"DS",name:"DetectorSpacing",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",23)':{tag:'(0019,"SIEMENS CT VA0 COAD",23)',vr:"DS",name:"DetectorCenter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",24)':{tag:'(0019,"SIEMENS CT VA0 COAD",24)',vr:"DS",name:"ReadingIntegrationTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",50)':{tag:'(0019,"SIEMENS CT VA0 COAD",50)',vr:"DS",name:"DetectorAlignment",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",52)':{tag:'(0019,"SIEMENS CT VA0 COAD",52)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",54)':{tag:'(0019,"SIEMENS CT VA0 COAD",54)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",60)':{tag:'(0019,"SIEMENS CT VA0 COAD",60)',vr:"DS",name:"FocusAlignment",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",65)':{tag:'(0019,"SIEMENS CT VA0 COAD",65)',vr:"UL",name:"FocalSpotDeflectionAmplitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",66)':{tag:'(0019,"SIEMENS CT VA0 COAD",66)',vr:"UL",name:"FocalSpotDeflectionPhase",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",67)':{tag:'(0019,"SIEMENS CT VA0 COAD",67)',vr:"UL",name:"FocalSpotDeflectionOffset",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",70)':{tag:'(0019,"SIEMENS CT VA0 COAD",70)',vr:"DS",name:"WaterScalingFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",71)':{tag:'(0019,"SIEMENS CT VA0 COAD",71)',vr:"DS",name:"InterpolationFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",80)':{tag:'(0019,"SIEMENS CT VA0 COAD",80)',vr:"LT",name:"PatientRegion",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",82)':{tag:'(0019,"SIEMENS CT VA0 COAD",82)',vr:"LT",name:"PatientPhaseOfLife",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",90)':{tag:'(0019,"SIEMENS CT VA0 COAD",90)',vr:"DS",name:"OsteoOffset",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",92)':{tag:'(0019,"SIEMENS CT VA0 COAD",92)',vr:"DS",name:"OsteoRegressionLineSlope",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",93)':{tag:'(0019,"SIEMENS CT VA0 COAD",93)',vr:"DS",name:"OsteoRegressionLineIntercept",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",94)':{tag:'(0019,"SIEMENS CT VA0 COAD",94)',vr:"DS",name:"OsteoStandardizationCode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",96)':{tag:'(0019,"SIEMENS CT VA0 COAD",96)',vr:"IS",name:"OsteoPhantomNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A3)':{tag:'(0019,"SIEMENS CT VA0 COAD",A3)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A4)':{tag:'(0019,"SIEMENS CT VA0 COAD",A4)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A5)':{tag:'(0019,"SIEMENS CT VA0 COAD",A5)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A6)':{tag:'(0019,"SIEMENS CT VA0 COAD",A6)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A7)':{tag:'(0019,"SIEMENS CT VA0 COAD",A7)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A8)':{tag:'(0019,"SIEMENS CT VA0 COAD",A8)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",A9)':{tag:'(0019,"SIEMENS CT VA0 COAD",A9)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AA)':{tag:'(0019,"SIEMENS CT VA0 COAD",AA)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AB)':{tag:'(0019,"SIEMENS CT VA0 COAD",AB)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AC)':{tag:'(0019,"SIEMENS CT VA0 COAD",AC)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AD)':{tag:'(0019,"SIEMENS CT VA0 COAD",AD)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AE)':{tag:'(0019,"SIEMENS CT VA0 COAD",AE)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",AF)':{tag:'(0019,"SIEMENS CT VA0 COAD",AF)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",B0)':{tag:'(0019,"SIEMENS CT VA0 COAD",B0)',vr:"DS",name:"FeedPerRotation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",BD)':{tag:'(0019,"SIEMENS CT VA0 COAD",BD)',vr:"IS",name:"PulmoTriggerLevel",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",BE)':{tag:'(0019,"SIEMENS CT VA0 COAD",BE)',vr:"DS",name:"ExpiratoricReserveVolume",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",BF)':{tag:'(0019,"SIEMENS CT VA0 COAD",BF)',vr:"DS",name:"VitalCapacity",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",C0)':{tag:'(0019,"SIEMENS CT VA0 COAD",C0)',vr:"DS",name:"PulmoWater",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",C1)':{tag:'(0019,"SIEMENS CT VA0 COAD",C1)',vr:"DS",name:"PulmoAir",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",C2)':{tag:'(0019,"SIEMENS CT VA0 COAD",C2)',vr:"DA",name:"PulmoDate",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 COAD",C3)':{tag:'(0019,"SIEMENS CT VA0 COAD",C3)',vr:"TM",name:"PulmoTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",10)':{tag:'(0019,"SIEMENS CT VA0 GEN",10)',vr:"DS",name:"SourceSideCollimatorAperture",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",11)':{tag:'(0019,"SIEMENS CT VA0 GEN",11)',vr:"DS",name:"DetectorSideCollimatorAperture",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",20)':{tag:'(0019,"SIEMENS CT VA0 GEN",20)',vr:"DS",name:"ExposureTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",21)':{tag:'(0019,"SIEMENS CT VA0 GEN",21)',vr:"DS",name:"ExposureCurrent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",25)':{tag:'(0019,"SIEMENS CT VA0 GEN",25)',vr:"DS",name:"KVPGeneratorPowerCurrent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",26)':{tag:'(0019,"SIEMENS CT VA0 GEN",26)',vr:"DS",name:"GeneratorVoltage",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",40)':{tag:'(0019,"SIEMENS CT VA0 GEN",40)',vr:"UL",name:"MasterControlMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",42)':{tag:'(0019,"SIEMENS CT VA0 GEN",42)',vr:"US",name:"ProcessingMask",vm:"5",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",44)':{tag:'(0019,"SIEMENS CT VA0 GEN",44)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",45)':{tag:'(0019,"SIEMENS CT VA0 GEN",45)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",62)':{tag:'(0019,"SIEMENS CT VA0 GEN",62)',vr:"IS",name:"NumberOfVirtuellChannels",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",70)':{tag:'(0019,"SIEMENS CT VA0 GEN",70)',vr:"IS",name:"NumberOfReadings",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",71)':{tag:'(0019,"SIEMENS CT VA0 GEN",71)',vr:"LT",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",74)':{tag:'(0019,"SIEMENS CT VA0 GEN",74)',vr:"IS",name:"NumberOfProjections",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",75)':{tag:'(0019,"SIEMENS CT VA0 GEN",75)',vr:"IS",name:"NumberOfBytes",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",80)':{tag:'(0019,"SIEMENS CT VA0 GEN",80)',vr:"LT",name:"ReconstructionAlgorithmSet",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",81)':{tag:'(0019,"SIEMENS CT VA0 GEN",81)',vr:"LT",name:"ReconstructionAlgorithmIndex",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",82)':{tag:'(0019,"SIEMENS CT VA0 GEN",82)',vr:"LT",name:"RegenerationSoftwareVersion",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS CT VA0 GEN",88)':{tag:'(0019,"SIEMENS CT VA0 GEN",88)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",10)':{tag:'(0021,"SIEMENS CT VA0 GEN",10)',vr:"IS",name:"RotationAngle",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",11)':{tag:'(0021,"SIEMENS CT VA0 GEN",11)',vr:"IS",name:"StartAngle",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",20)':{tag:'(0021,"SIEMENS CT VA0 GEN",20)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",30)':{tag:'(0021,"SIEMENS CT VA0 GEN",30)',vr:"IS",name:"TopogramTubePosition",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",32)':{tag:'(0021,"SIEMENS CT VA0 GEN",32)',vr:"DS",name:"LengthOfTopogram",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",34)':{tag:'(0021,"SIEMENS CT VA0 GEN",34)',vr:"DS",name:"TopogramCorrectionFactor",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",36)':{tag:'(0021,"SIEMENS CT VA0 GEN",36)',vr:"DS",name:"MaximumTablePosition",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",40)':{tag:'(0021,"SIEMENS CT VA0 GEN",40)',vr:"IS",name:"TableMoveDirectionCode",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",45)':{tag:'(0021,"SIEMENS CT VA0 GEN",45)',vr:"IS",name:"VOIStartRow",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",46)':{tag:'(0021,"SIEMENS CT VA0 GEN",46)',vr:"IS",name:"VOIStopRow",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",47)':{tag:'(0021,"SIEMENS CT VA0 GEN",47)',vr:"IS",name:"VOIStartColumn",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",48)':{tag:'(0021,"SIEMENS CT VA0 GEN",48)',vr:"IS",name:"VOIStopColumn",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",49)':{tag:'(0021,"SIEMENS CT VA0 GEN",49)',vr:"IS",name:"VOIStartSlice",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",4a)':{tag:'(0021,"SIEMENS CT VA0 GEN",4a)',vr:"IS",name:"VOIStopSlice",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",50)':{tag:'(0021,"SIEMENS CT VA0 GEN",50)',vr:"IS",name:"VectorStartRow",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",51)':{tag:'(0021,"SIEMENS CT VA0 GEN",51)',vr:"IS",name:"VectorRowStep",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",52)':{tag:'(0021,"SIEMENS CT VA0 GEN",52)',vr:"IS",name:"VectorStartColumn",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",53)':{tag:'(0021,"SIEMENS CT VA0 GEN",53)',vr:"IS",name:"VectorColumnStep",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",60)':{tag:'(0021,"SIEMENS CT VA0 GEN",60)',vr:"IS",name:"RangeTypeCode",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",62)':{tag:'(0021,"SIEMENS CT VA0 GEN",62)',vr:"IS",name:"ReferenceTypeCode",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",70)':{tag:'(0021,"SIEMENS CT VA0 GEN",70)',vr:"DS",name:"ObjectOrientation",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",72)':{tag:'(0021,"SIEMENS CT VA0 GEN",72)',vr:"DS",name:"LightOrientation",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",75)':{tag:'(0021,"SIEMENS CT VA0 GEN",75)',vr:"DS",name:"LightBrightness",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",76)':{tag:'(0021,"SIEMENS CT VA0 GEN",76)',vr:"DS",name:"LightContrast",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",7a)':{tag:'(0021,"SIEMENS CT VA0 GEN",7a)',vr:"IS",name:"OverlayThreshold",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",7b)':{tag:'(0021,"SIEMENS CT VA0 GEN",7b)',vr:"IS",name:"SurfaceThreshold",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",7c)':{tag:'(0021,"SIEMENS CT VA0 GEN",7c)',vr:"IS",name:"GreyScaleThreshold",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",a0)':{tag:'(0021,"SIEMENS CT VA0 GEN",a0)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",a2)':{tag:'(0021,"SIEMENS CT VA0 GEN",a2)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 GEN",a7)':{tag:'(0021,"SIEMENS CT VA0 GEN",a7)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",10)':{tag:'(0009,"SIEMENS CT VA0 IDE",10)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",30)':{tag:'(0009,"SIEMENS CT VA0 IDE",30)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",31)':{tag:'(0009,"SIEMENS CT VA0 IDE",31)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",32)':{tag:'(0009,"SIEMENS CT VA0 IDE",32)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",34)':{tag:'(0009,"SIEMENS CT VA0 IDE",34)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",40)':{tag:'(0009,"SIEMENS CT VA0 IDE",40)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",42)':{tag:'(0009,"SIEMENS CT VA0 IDE",42)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",50)':{tag:'(0009,"SIEMENS CT VA0 IDE",50)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 IDE",51)':{tag:'(0009,"SIEMENS CT VA0 IDE",51)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 ORI",20)':{tag:'(0009,"SIEMENS CT VA0 ORI",20)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS CT VA0 ORI",30)':{tag:'(0009,"SIEMENS CT VA0 ORI",30)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(6021,"SIEMENS CT VA0 OST",00)':{tag:'(6021,"SIEMENS CT VA0 OST",00)',vr:"LT",name:"OsteoContourComment",vm:"1",version:"PrivateTag"},'(6021,"SIEMENS CT VA0 OST",10)':{tag:'(6021,"SIEMENS CT VA0 OST",10)',vr:"US",name:"OsteoContourBuffer",vm:"256",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",10)':{tag:'(0021,"SIEMENS CT VA0 RAW",10)',vr:"UL",name:"CreationMask",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",20)':{tag:'(0021,"SIEMENS CT VA0 RAW",20)',vr:"UL",name:"EvaluationMask",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",30)':{tag:'(0021,"SIEMENS CT VA0 RAW",30)',vr:"US",name:"ExtendedProcessingMask",vm:"7",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",40)':{tag:'(0021,"SIEMENS CT VA0 RAW",40)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",41)':{tag:'(0021,"SIEMENS CT VA0 RAW",41)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",42)':{tag:'(0021,"SIEMENS CT VA0 RAW",42)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",43)':{tag:'(0021,"SIEMENS CT VA0 RAW",43)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",44)':{tag:'(0021,"SIEMENS CT VA0 RAW",44)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS CT VA0 RAW",50)':{tag:'(0021,"SIEMENS CT VA0 RAW",50)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS DICOM",10)':{tag:'(0009,"SIEMENS DICOM",10)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS DICOM",12)':{tag:'(0009,"SIEMENS DICOM",12)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",10)':{tag:'(0019,"SIEMENS DLR.01",10)',vr:"LT",name:"MeasurementMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",11)':{tag:'(0019,"SIEMENS DLR.01",11)',vr:"LT",name:"ImageType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",15)':{tag:'(0019,"SIEMENS DLR.01",15)',vr:"LT",name:"SoftwareVersion",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",20)':{tag:'(0019,"SIEMENS DLR.01",20)',vr:"LT",name:"MPMCode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",21)':{tag:'(0019,"SIEMENS DLR.01",21)',vr:"LT",name:"Latitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",22)':{tag:'(0019,"SIEMENS DLR.01",22)',vr:"LT",name:"Sensitivity",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",23)':{tag:'(0019,"SIEMENS DLR.01",23)',vr:"LT",name:"EDR",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",24)':{tag:'(0019,"SIEMENS DLR.01",24)',vr:"LT",name:"LFix",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",25)':{tag:'(0019,"SIEMENS DLR.01",25)',vr:"LT",name:"SFix",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",26)':{tag:'(0019,"SIEMENS DLR.01",26)',vr:"LT",name:"PresetMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",27)':{tag:'(0019,"SIEMENS DLR.01",27)',vr:"LT",name:"Region",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",28)':{tag:'(0019,"SIEMENS DLR.01",28)',vr:"LT",name:"Subregion",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",30)':{tag:'(0019,"SIEMENS DLR.01",30)',vr:"LT",name:"Orientation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",31)':{tag:'(0019,"SIEMENS DLR.01",31)',vr:"LT",name:"MarkOnFilm",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",32)':{tag:'(0019,"SIEMENS DLR.01",32)',vr:"LT",name:"RotationOnDRC",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",40)':{tag:'(0019,"SIEMENS DLR.01",40)',vr:"LT",name:"ReaderType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",41)':{tag:'(0019,"SIEMENS DLR.01",41)',vr:"LT",name:"SubModality",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",42)':{tag:'(0019,"SIEMENS DLR.01",42)',vr:"LT",name:"ReaderSerialNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",50)':{tag:'(0019,"SIEMENS DLR.01",50)',vr:"LT",name:"CassetteScale",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",51)':{tag:'(0019,"SIEMENS DLR.01",51)',vr:"LT",name:"CassetteMatrix",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",52)':{tag:'(0019,"SIEMENS DLR.01",52)',vr:"LT",name:"CassetteSubmatrix",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",53)':{tag:'(0019,"SIEMENS DLR.01",53)',vr:"LT",name:"Barcode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",60)':{tag:'(0019,"SIEMENS DLR.01",60)',vr:"LT",name:"ContrastType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",61)':{tag:'(0019,"SIEMENS DLR.01",61)',vr:"LT",name:"RotationAmount",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",62)':{tag:'(0019,"SIEMENS DLR.01",62)',vr:"LT",name:"RotationCenter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",63)':{tag:'(0019,"SIEMENS DLR.01",63)',vr:"LT",name:"DensityShift",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",64)':{tag:'(0019,"SIEMENS DLR.01",64)',vr:"US",name:"FrequencyRank",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",65)':{tag:'(0019,"SIEMENS DLR.01",65)',vr:"LT",name:"FrequencyEnhancement",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",66)':{tag:'(0019,"SIEMENS DLR.01",66)',vr:"LT",name:"FrequencyType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",67)':{tag:'(0019,"SIEMENS DLR.01",67)',vr:"LT",name:"KernelLength",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",68)':{tag:'(0019,"SIEMENS DLR.01",68)',vr:"UL",name:"KernelMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",69)':{tag:'(0019,"SIEMENS DLR.01",69)',vr:"UL",name:"ConvolutionMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",70)':{tag:'(0019,"SIEMENS DLR.01",70)',vr:"LT",name:"PLASource",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",71)':{tag:'(0019,"SIEMENS DLR.01",71)',vr:"LT",name:"PLADestination",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",75)':{tag:'(0019,"SIEMENS DLR.01",75)',vr:"LT",name:"UIDOriginalImage",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",76)':{tag:'(0019,"SIEMENS DLR.01",76)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",80)':{tag:'(0019,"SIEMENS DLR.01",80)',vr:"LT",name:"ReaderHeader",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",90)':{tag:'(0019,"SIEMENS DLR.01",90)',vr:"LT",name:"PLAOfSecondaryDestination",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",a0)':{tag:'(0019,"SIEMENS DLR.01",a0)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS DLR.01",a1)':{tag:'(0019,"SIEMENS DLR.01",a1)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0041,"SIEMENS DLR.01",10)':{tag:'(0041,"SIEMENS DLR.01",10)',vr:"US",name:"NumberOfHardcopies",vm:"1",version:"PrivateTag"},'(0041,"SIEMENS DLR.01",20)':{tag:'(0041,"SIEMENS DLR.01",20)',vr:"LT",name:"FilmFormat",vm:"1",version:"PrivateTag"},'(0041,"SIEMENS DLR.01",30)':{tag:'(0041,"SIEMENS DLR.01",30)',vr:"LT",name:"FilmSize",vm:"1",version:"PrivateTag"},'(0041,"SIEMENS DLR.01",31)':{tag:'(0041,"SIEMENS DLR.01",31)',vr:"LT",name:"FullFilmFormat",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",08)':{tag:'(0003,"SIEMENS ISI",08)',vr:"US",name:"ISICommandField",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",11)':{tag:'(0003,"SIEMENS ISI",11)',vr:"US",name:"AttachIDApplicationCode",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",12)':{tag:'(0003,"SIEMENS ISI",12)',vr:"UL",name:"AttachIDMessageCount",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",13)':{tag:'(0003,"SIEMENS ISI",13)',vr:"DA",name:"AttachIDDate",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",14)':{tag:'(0003,"SIEMENS ISI",14)',vr:"TM",name:"AttachIDTime",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",20)':{tag:'(0003,"SIEMENS ISI",20)',vr:"US",name:"MessageType",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",30)':{tag:'(0003,"SIEMENS ISI",30)',vr:"DA",name:"MaxWaitingDate",vm:"1",version:"PrivateTag"},'(0003,"SIEMENS ISI",31)':{tag:'(0003,"SIEMENS ISI",31)',vr:"TM",name:"MaxWaitingTime",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS ISI",01)':{tag:'(0009,"SIEMENS ISI",01)',vr:"UN",name:"RISPatientInfoIMGEF",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",03)':{tag:'(0011,"SIEMENS ISI",03)',vr:"LT",name:"PatientUID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",04)':{tag:'(0011,"SIEMENS ISI",04)',vr:"LT",name:"PatientID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",0a)':{tag:'(0011,"SIEMENS ISI",0a)',vr:"LT",name:"CaseID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",22)':{tag:'(0011,"SIEMENS ISI",22)',vr:"LT",name:"RequestID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",23)':{tag:'(0011,"SIEMENS ISI",23)',vr:"LT",name:"ExaminationUID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",a1)':{tag:'(0011,"SIEMENS ISI",a1)',vr:"DA",name:"PatientRegistrationDate",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",a2)':{tag:'(0011,"SIEMENS ISI",a2)',vr:"TM",name:"PatientRegistrationTime",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",b0)':{tag:'(0011,"SIEMENS ISI",b0)',vr:"LT",name:"PatientLastName",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",b2)':{tag:'(0011,"SIEMENS ISI",b2)',vr:"LT",name:"PatientFirstName",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",b4)':{tag:'(0011,"SIEMENS ISI",b4)',vr:"LT",name:"PatientHospitalStatus",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",bc)':{tag:'(0011,"SIEMENS ISI",bc)',vr:"TM",name:"CurrentLocationTime",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",c0)':{tag:'(0011,"SIEMENS ISI",c0)',vr:"LT",name:"PatientInsuranceStatus",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",d0)':{tag:'(0011,"SIEMENS ISI",d0)',vr:"LT",name:"PatientBillingType",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS ISI",d2)':{tag:'(0011,"SIEMENS ISI",d2)',vr:"LT",name:"PatientBillingAddress",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",12)':{tag:'(0031,"SIEMENS ISI",12)',vr:"LT",name:"ExaminationReason",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",30)':{tag:'(0031,"SIEMENS ISI",30)',vr:"DA",name:"RequestedDate",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",32)':{tag:'(0031,"SIEMENS ISI",32)',vr:"TM",name:"WorklistRequestStartTime",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",33)':{tag:'(0031,"SIEMENS ISI",33)',vr:"TM",name:"WorklistRequestEndTime",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",4a)':{tag:'(0031,"SIEMENS ISI",4a)',vr:"TM",name:"RequestedTime",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS ISI",80)':{tag:'(0031,"SIEMENS ISI",80)',vr:"LT",name:"RequestedLocation",vm:"1",version:"PrivateTag"},'(0055,"SIEMENS ISI",46)':{tag:'(0055,"SIEMENS ISI",46)',vr:"LT",name:"CurrentWard",vm:"1",version:"PrivateTag"},'(0193,"SIEMENS ISI",02)':{tag:'(0193,"SIEMENS ISI",02)',vr:"DS",name:"RISKey",vm:"1",version:"PrivateTag"},'(0307,"SIEMENS ISI",01)':{tag:'(0307,"SIEMENS ISI",01)',vr:"UN",name:"RISWorklistIMGEF",vm:"1",version:"PrivateTag"},'(0309,"SIEMENS ISI",01)':{tag:'(0309,"SIEMENS ISI",01)',vr:"UN",name:"RISReportIMGEF",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",01)':{tag:'(4009,"SIEMENS ISI",01)',vr:"LT",name:"ReportID",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",20)':{tag:'(4009,"SIEMENS ISI",20)',vr:"LT",name:"ReportStatus",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",30)':{tag:'(4009,"SIEMENS ISI",30)',vr:"DA",name:"ReportCreationDate",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",70)':{tag:'(4009,"SIEMENS ISI",70)',vr:"LT",name:"ReportApprovingPhysician",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",e0)':{tag:'(4009,"SIEMENS ISI",e0)',vr:"LT",name:"ReportText",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",e1)':{tag:'(4009,"SIEMENS ISI",e1)',vr:"LT",name:"ReportAuthor",vm:"1",version:"PrivateTag"},'(4009,"SIEMENS ISI",e3)':{tag:'(4009,"SIEMENS ISI",e3)',vr:"LT",name:"ReportingRadiologist",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",04)':{tag:'(0029,"SIEMENS MED DISPLAY",04)',vr:"LT",name:"PhotometricInterpretation",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",10)':{tag:'(0029,"SIEMENS MED DISPLAY",10)',vr:"US",name:"RowsOfSubmatrix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",11)':{tag:'(0029,"SIEMENS MED DISPLAY",11)',vr:"US",name:"ColumnsOfSubmatrix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",20)':{tag:'(0029,"SIEMENS MED DISPLAY",20)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",21)':{tag:'(0029,"SIEMENS MED DISPLAY",21)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",50)':{tag:'(0029,"SIEMENS MED DISPLAY",50)',vr:"US",name:"OriginOfSubmatrix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",99)':{tag:'(0029,"SIEMENS MED DISPLAY",99)',vr:"LT",name:"ShutterType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",a0)':{tag:'(0029,"SIEMENS MED DISPLAY",a0)',vr:"US",name:"RowsOfRectangularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",a1)':{tag:'(0029,"SIEMENS MED DISPLAY",a1)',vr:"US",name:"ColumnsOfRectangularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",a2)':{tag:'(0029,"SIEMENS MED DISPLAY",a2)',vr:"US",name:"OriginOfRectangularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",b0)':{tag:'(0029,"SIEMENS MED DISPLAY",b0)',vr:"US",name:"RadiusOfCircularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",b2)':{tag:'(0029,"SIEMENS MED DISPLAY",b2)',vr:"US",name:"OriginOfCircularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED DISPLAY",c1)':{tag:'(0029,"SIEMENS MED DISPLAY",c1)',vr:"US",name:"ContourOfIrregularShutter",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",10)':{tag:'(0029,"SIEMENS MED HG",10)',vr:"US",name:"ListOfGroupNumbers",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",15)':{tag:'(0029,"SIEMENS MED HG",15)',vr:"LT",name:"ListOfShadowOwnerCodes",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",20)':{tag:'(0029,"SIEMENS MED HG",20)',vr:"US",name:"ListOfElementNumbers",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",30)':{tag:'(0029,"SIEMENS MED HG",30)',vr:"US",name:"ListOfTotalDisplayLength",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",40)':{tag:'(0029,"SIEMENS MED HG",40)',vr:"LT",name:"ListOfDisplayPrefix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",50)':{tag:'(0029,"SIEMENS MED HG",50)',vr:"LT",name:"ListOfDisplayPostfix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",60)':{tag:'(0029,"SIEMENS MED HG",60)',vr:"US",name:"ListOfTextPosition",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED HG",70)':{tag:'(0029,"SIEMENS MED HG",70)',vr:"LT",name:"ListOfTextConcatenation",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",10)':{tag:'(0029,"SIEMENS MED MG",10)',vr:"US",name:"ListOfGroupNumbers",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",15)':{tag:'(0029,"SIEMENS MED MG",15)',vr:"LT",name:"ListOfShadowOwnerCodes",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",20)':{tag:'(0029,"SIEMENS MED MG",20)',vr:"US",name:"ListOfElementNumbers",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",30)':{tag:'(0029,"SIEMENS MED MG",30)',vr:"US",name:"ListOfTotalDisplayLength",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",40)':{tag:'(0029,"SIEMENS MED MG",40)',vr:"LT",name:"ListOfDisplayPrefix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",50)':{tag:'(0029,"SIEMENS MED MG",50)',vr:"LT",name:"ListOfDisplayPostfix",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",60)':{tag:'(0029,"SIEMENS MED MG",60)',vr:"US",name:"ListOfTextPosition",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MED MG",70)':{tag:'(0029,"SIEMENS MED MG",70)',vr:"LT",name:"ListOfTextConcatenation",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",10)':{tag:'(0009,"SIEMENS MED",10)',vr:"LO",name:"RecognitionCode",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",30)':{tag:'(0009,"SIEMENS MED",30)',vr:"UL",name:"ByteOffsetOfOriginalHeader",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",31)':{tag:'(0009,"SIEMENS MED",31)',vr:"UL",name:"LengthOfOriginalHeader",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",40)':{tag:'(0009,"SIEMENS MED",40)',vr:"UL",name:"ByteOffsetOfPixelmatrix",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",41)':{tag:'(0009,"SIEMENS MED",41)',vr:"UL",name:"LengthOfPixelmatrixInBytes",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",50)':{tag:'(0009,"SIEMENS MED",50)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",51)':{tag:'(0009,"SIEMENS MED",51)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",f5)':{tag:'(0009,"SIEMENS MED",f5)',vr:"LT",name:"PDMEFIDPlaceholder",vm:"1",version:"PrivateTag"},'(0009,"SIEMENS MED",f6)':{tag:'(0009,"SIEMENS MED",f6)',vr:"LT",name:"PDMDataObjectTypeExtension",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MED",10)':{tag:'(0021,"SIEMENS MED",10)',vr:"DS",name:"Zoom",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MED",11)':{tag:'(0021,"SIEMENS MED",11)',vr:"DS",name:"Target",vm:"2",version:"PrivateTag"},'(0021,"SIEMENS MED",12)':{tag:'(0021,"SIEMENS MED",12)',vr:"IS",name:"TubeAngle",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MED",20)':{tag:'(0021,"SIEMENS MED",20)',vr:"US",name:"ROIMask",vm:"1",version:"PrivateTag"},'(7001,"SIEMENS MED",10)':{tag:'(7001,"SIEMENS MED",10)',vr:"LT",name:"Dummy",vm:"1",version:"PrivateTag"},'(7003,"SIEMENS MED",10)':{tag:'(7003,"SIEMENS MED",10)',vr:"LT",name:"Header",vm:"1",version:"PrivateTag"},'(7005,"SIEMENS MED",10)':{tag:'(7005,"SIEMENS MED",10)',vr:"LT",name:"Dummy",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",08)':{tag:'(0029,"SIEMENS MEDCOM HEADER",08)',vr:"CS",name:"MedComHeaderType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",09)':{tag:'(0029,"SIEMENS MEDCOM HEADER",09)',vr:"LO",name:"MedComHeaderVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",10)':{tag:'(0029,"SIEMENS MEDCOM HEADER",10)',vr:"OB",name:"MedComHeaderInfo",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",20)':{tag:'(0029,"SIEMENS MEDCOM HEADER",20)',vr:"OB",name:"MedComHistoryInformation",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",31)':{tag:'(0029,"SIEMENS MEDCOM HEADER",31)',vr:"LO",name:"PMTFInformation1",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",32)':{tag:'(0029,"SIEMENS MEDCOM HEADER",32)',vr:"UL",name:"PMTFInformation2",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",33)':{tag:'(0029,"SIEMENS MEDCOM HEADER",33)',vr:"UL",name:"PMTFInformation3",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",34)':{tag:'(0029,"SIEMENS MEDCOM HEADER",34)',vr:"CS",name:"PMTFInformation4",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",35)':{tag:'(0029,"SIEMENS MEDCOM HEADER",35)',vr:"UL",name:"PMTFInformation5",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",40)':{tag:'(0029,"SIEMENS MEDCOM HEADER",40)',vr:"SQ",name:"ApplicationHeaderSequence",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",41)':{tag:'(0029,"SIEMENS MEDCOM HEADER",41)',vr:"CS",name:"ApplicationHeaderType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",42)':{tag:'(0029,"SIEMENS MEDCOM HEADER",42)',vr:"LO",name:"ApplicationHeaderID",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",43)':{tag:'(0029,"SIEMENS MEDCOM HEADER",43)',vr:"LO",name:"ApplicationHeaderVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",44)':{tag:'(0029,"SIEMENS MEDCOM HEADER",44)',vr:"OB",name:"ApplicationHeaderInfo",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",50)':{tag:'(0029,"SIEMENS MEDCOM HEADER",50)',vr:"LO",name:"WorkflowControlFlags",vm:"8",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",51)':{tag:'(0029,"SIEMENS MEDCOM HEADER",51)',vr:"CS",name:"ArchiveManagementFlagKeepOnline",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",52)':{tag:'(0029,"SIEMENS MEDCOM HEADER",52)',vr:"CS",name:"ArchiveManagementFlagDoNotArchive",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",53)':{tag:'(0029,"SIEMENS MEDCOM HEADER",53)',vr:"CS",name:"ImageLocationStatus",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",54)':{tag:'(0029,"SIEMENS MEDCOM HEADER",54)',vr:"DS",name:"EstimatedRetrieveTime",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",55)':{tag:'(0029,"SIEMENS MEDCOM HEADER",55)',vr:"DS",name:"DataSizeOfRetrievedImages",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",70)':{tag:'(0029,"SIEMENS MEDCOM HEADER",70)',vr:"SQ",name:"SiemensLinkSequence",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",71)':{tag:'(0029,"SIEMENS MEDCOM HEADER",71)',vr:"AT",name:"ReferencedTag",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",72)':{tag:'(0029,"SIEMENS MEDCOM HEADER",72)',vr:"CS",name:"ReferencedTagType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",73)':{tag:'(0029,"SIEMENS MEDCOM HEADER",73)',vr:"UL",name:"ReferencedValueLength",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",74)':{tag:'(0029,"SIEMENS MEDCOM HEADER",74)',vr:"CS",name:"ReferencedObjectDeviceType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",75)':{tag:'(0029,"SIEMENS MEDCOM HEADER",75)',vr:"OB",name:"ReferencedObjectDeviceLocation",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER",76)':{tag:'(0029,"SIEMENS MEDCOM HEADER",76)',vr:"OB",name:"ReferencedObjectDeviceID",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM HEADER2",60)':{tag:'(0029,"SIEMENS MEDCOM HEADER2",60)',vr:"LO",name:"SeriesWorkflowStatus",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM OOG",08)':{tag:'(0029,"SIEMENS MEDCOM OOG",08)',vr:"CS",name:"MEDCOMOOGType",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM OOG",09)':{tag:'(0029,"SIEMENS MEDCOM OOG",09)',vr:"LO",name:"MEDCOMOOGVersion",vm:"1",version:"PrivateTag"},'(0029,"SIEMENS MEDCOM OOG",10)':{tag:'(0029,"SIEMENS MEDCOM OOG",10)',vr:"OB",name:"MEDCOMOOGInfo",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",12)':{tag:'(0019,"SIEMENS MR VA0 COAD",12)',vr:"DS",name:"MagneticFieldStrength",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",14)':{tag:'(0019,"SIEMENS MR VA0 COAD",14)',vr:"DS",name:"ADCVoltage",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",16)':{tag:'(0019,"SIEMENS MR VA0 COAD",16)',vr:"DS",name:"ADCOffset",vm:"2",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",20)':{tag:'(0019,"SIEMENS MR VA0 COAD",20)',vr:"DS",name:"TransmitterAmplitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",21)':{tag:'(0019,"SIEMENS MR VA0 COAD",21)',vr:"IS",name:"NumberOfTransmitterAmplitudes",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",22)':{tag:'(0019,"SIEMENS MR VA0 COAD",22)',vr:"DS",name:"TransmitterAttenuator",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",24)':{tag:'(0019,"SIEMENS MR VA0 COAD",24)',vr:"DS",name:"TransmitterCalibration",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",26)':{tag:'(0019,"SIEMENS MR VA0 COAD",26)',vr:"DS",name:"TransmitterReference",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",50)':{tag:'(0019,"SIEMENS MR VA0 COAD",50)',vr:"DS",name:"ReceiverTotalGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",51)':{tag:'(0019,"SIEMENS MR VA0 COAD",51)',vr:"DS",name:"ReceiverAmplifierGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",52)':{tag:'(0019,"SIEMENS MR VA0 COAD",52)',vr:"DS",name:"ReceiverPreamplifierGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",54)':{tag:'(0019,"SIEMENS MR VA0 COAD",54)',vr:"DS",name:"ReceiverCableAttenuation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",55)':{tag:'(0019,"SIEMENS MR VA0 COAD",55)',vr:"DS",name:"ReceiverReferenceGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",56)':{tag:'(0019,"SIEMENS MR VA0 COAD",56)',vr:"DS",name:"ReceiverFilterFrequency",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",60)':{tag:'(0019,"SIEMENS MR VA0 COAD",60)',vr:"DS",name:"ReconstructionScaleFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",62)':{tag:'(0019,"SIEMENS MR VA0 COAD",62)',vr:"DS",name:"ReferenceScaleFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",70)':{tag:'(0019,"SIEMENS MR VA0 COAD",70)',vr:"DS",name:"PhaseGradientAmplitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",71)':{tag:'(0019,"SIEMENS MR VA0 COAD",71)',vr:"DS",name:"ReadoutGradientAmplitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",72)':{tag:'(0019,"SIEMENS MR VA0 COAD",72)',vr:"DS",name:"SelectionGradientAmplitude",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",80)':{tag:'(0019,"SIEMENS MR VA0 COAD",80)',vr:"DS",name:"GradientDelayTime",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",82)':{tag:'(0019,"SIEMENS MR VA0 COAD",82)',vr:"DS",name:"TotalGradientDelayTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",90)':{tag:'(0019,"SIEMENS MR VA0 COAD",90)',vr:"LT",name:"SensitivityCorrectionLabel",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",91)':{tag:'(0019,"SIEMENS MR VA0 COAD",91)',vr:"DS",name:"SaturationPhaseEncodingVectorCoronalComponent",vm:"6",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",92)':{tag:'(0019,"SIEMENS MR VA0 COAD",92)',vr:"DS",name:"SaturationReadoutVectorCoronalComponent",vm:"6",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",a0)':{tag:'(0019,"SIEMENS MR VA0 COAD",a0)',vr:"US",name:"RFWatchdogMask",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",a1)':{tag:'(0019,"SIEMENS MR VA0 COAD",a1)',vr:"DS",name:"EPIReconstructionSlope",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",a2)':{tag:'(0019,"SIEMENS MR VA0 COAD",a2)',vr:"DS",name:"RFPowerErrorIndicator",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",a5)':{tag:'(0019,"SIEMENS MR VA0 COAD",a5)',vr:"DS",name:"SpecificAbsorptionRateWholeBody",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",a6)':{tag:'(0019,"SIEMENS MR VA0 COAD",a6)',vr:"DS",name:"SpecificEnergyDose",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",b0)':{tag:'(0019,"SIEMENS MR VA0 COAD",b0)',vr:"UL",name:"AdjustmentStatusMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",c1)':{tag:'(0019,"SIEMENS MR VA0 COAD",c1)',vr:"DS",name:"EPICapacity",vm:"6",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",c2)':{tag:'(0019,"SIEMENS MR VA0 COAD",c2)',vr:"DS",name:"EPIInductance",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",c3)':{tag:'(0019,"SIEMENS MR VA0 COAD",c3)',vr:"IS",name:"EPISwitchConfigurationCode",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",c4)':{tag:'(0019,"SIEMENS MR VA0 COAD",c4)',vr:"IS",name:"EPISwitchHardwareCode",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",c5)':{tag:'(0019,"SIEMENS MR VA0 COAD",c5)',vr:"DS",name:"EPISwitchDelayTime",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d1)':{tag:'(0019,"SIEMENS MR VA0 COAD",d1)',vr:"DS",name:"FlowSensitivity",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d2)':{tag:'(0019,"SIEMENS MR VA0 COAD",d2)',vr:"LT",name:"CalculationSubmode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d3)':{tag:'(0019,"SIEMENS MR VA0 COAD",d3)',vr:"DS",name:"FieldOfViewRatio",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d4)':{tag:'(0019,"SIEMENS MR VA0 COAD",d4)',vr:"IS",name:"BaseRawMatrixSize",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d5)':{tag:'(0019,"SIEMENS MR VA0 COAD",d5)',vr:"IS",name:"2DOversamplingLines",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d6)':{tag:'(0019,"SIEMENS MR VA0 COAD",d6)',vr:"IS",name:"3DPhaseOversamplingPartitions",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d7)':{tag:'(0019,"SIEMENS MR VA0 COAD",d7)',vr:"IS",name:"EchoLinePosition",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d8)':{tag:'(0019,"SIEMENS MR VA0 COAD",d8)',vr:"IS",name:"EchoColumnPosition",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",d9)':{tag:'(0019,"SIEMENS MR VA0 COAD",d9)',vr:"IS",name:"LinesPerSegment",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 COAD",da)':{tag:'(0019,"SIEMENS MR VA0 COAD",da)',vr:"LT",name:"PhaseCodingDirection",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",10)':{tag:'(0019,"SIEMENS MR VA0 GEN",10)',vr:"DS",name:"TotalMeasurementTimeNominal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",11)':{tag:'(0019,"SIEMENS MR VA0 GEN",11)',vr:"DS",name:"TotalMeasurementTimeCurrent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",12)':{tag:'(0019,"SIEMENS MR VA0 GEN",12)',vr:"DS",name:"StartDelayTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",13)':{tag:'(0019,"SIEMENS MR VA0 GEN",13)',vr:"DS",name:"DwellTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",14)':{tag:'(0019,"SIEMENS MR VA0 GEN",14)',vr:"IS",name:"NumberOfPhases",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",16)':{tag:'(0019,"SIEMENS MR VA0 GEN",16)',vr:"UL",name:"SequenceControlMask",vm:"2",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",18)':{tag:'(0019,"SIEMENS MR VA0 GEN",18)',vr:"UL",name:"MeasurementStatusMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",20)':{tag:'(0019,"SIEMENS MR VA0 GEN",20)',vr:"IS",name:"NumberOfFourierLinesNominal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",21)':{tag:'(0019,"SIEMENS MR VA0 GEN",21)',vr:"IS",name:"NumberOfFourierLinesCurrent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",26)':{tag:'(0019,"SIEMENS MR VA0 GEN",26)',vr:"IS",name:"NumberOfFourierLinesAfterZero",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",28)':{tag:'(0019,"SIEMENS MR VA0 GEN",28)',vr:"IS",name:"FirstMeasuredFourierLine",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",30)':{tag:'(0019,"SIEMENS MR VA0 GEN",30)',vr:"IS",name:"AcquisitionColumns",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",31)':{tag:'(0019,"SIEMENS MR VA0 GEN",31)',vr:"IS",name:"ReconstructionColumns",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",40)':{tag:'(0019,"SIEMENS MR VA0 GEN",40)',vr:"IS",name:"ArrayCoilElementNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",41)':{tag:'(0019,"SIEMENS MR VA0 GEN",41)',vr:"UL",name:"ArrayCoilElementSelectMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",42)':{tag:'(0019,"SIEMENS MR VA0 GEN",42)',vr:"UL",name:"ArrayCoilElementDataMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",43)':{tag:'(0019,"SIEMENS MR VA0 GEN",43)',vr:"IS",name:"ArrayCoilElementToADCConnect",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",44)':{tag:'(0019,"SIEMENS MR VA0 GEN",44)',vr:"DS",name:"ArrayCoilElementNoiseLevel",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",45)':{tag:'(0019,"SIEMENS MR VA0 GEN",45)',vr:"IS",name:"ArrayCoilADCPairNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",46)':{tag:'(0019,"SIEMENS MR VA0 GEN",46)',vr:"UL",name:"ArrayCoilCombinationMask",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",50)':{tag:'(0019,"SIEMENS MR VA0 GEN",50)',vr:"IS",name:"NumberOfAverages",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",60)':{tag:'(0019,"SIEMENS MR VA0 GEN",60)',vr:"DS",name:"FlipAngle",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",70)':{tag:'(0019,"SIEMENS MR VA0 GEN",70)',vr:"IS",name:"NumberOfPrescans",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",81)':{tag:'(0019,"SIEMENS MR VA0 GEN",81)',vr:"LT",name:"FilterTypeForRawData",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",82)':{tag:'(0019,"SIEMENS MR VA0 GEN",82)',vr:"DS",name:"FilterParameterForRawData",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",83)':{tag:'(0019,"SIEMENS MR VA0 GEN",83)',vr:"LT",name:"FilterTypeForImageData",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",84)':{tag:'(0019,"SIEMENS MR VA0 GEN",84)',vr:"DS",name:"FilterParameterForImageData",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",85)':{tag:'(0019,"SIEMENS MR VA0 GEN",85)',vr:"LT",name:"FilterTypeForPhaseCorrection",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",86)':{tag:'(0019,"SIEMENS MR VA0 GEN",86)',vr:"DS",name:"FilterParameterForPhaseCorrection",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",87)':{tag:'(0019,"SIEMENS MR VA0 GEN",87)',vr:"LT",name:"NormalizationFilterTypeForImageData",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",88)':{tag:'(0019,"SIEMENS MR VA0 GEN",88)',vr:"DS",name:"NormalizationFilterParameterForImageData",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",90)':{tag:'(0019,"SIEMENS MR VA0 GEN",90)',vr:"IS",name:"NumberOfSaturationRegions",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",91)':{tag:'(0019,"SIEMENS MR VA0 GEN",91)',vr:"DS",name:"SaturationPhaseEncodingVectorSagittalComponent",vm:"6",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",92)':{tag:'(0019,"SIEMENS MR VA0 GEN",92)',vr:"DS",name:"SaturationReadoutVectorSagittalComponent",vm:"6",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",93)':{tag:'(0019,"SIEMENS MR VA0 GEN",93)',vr:"DS",name:"EPIStimulationMonitorMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",94)':{tag:'(0019,"SIEMENS MR VA0 GEN",94)',vr:"DS",name:"ImageRotationAngle",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",96)':{tag:'(0019,"SIEMENS MR VA0 GEN",96)',vr:"UL",name:"CoilIDMask",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",97)':{tag:'(0019,"SIEMENS MR VA0 GEN",97)',vr:"UL",name:"CoilClassMask",vm:"2",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",98)':{tag:'(0019,"SIEMENS MR VA0 GEN",98)',vr:"DS",name:"CoilPosition",vm:"3",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",a0)':{tag:'(0019,"SIEMENS MR VA0 GEN",a0)',vr:"DS",name:"EPIReconstructionPhase",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS MR VA0 GEN",a1)':{tag:'(0019,"SIEMENS MR VA0 GEN",a1)',vr:"DS",name:"EPIReconstructionSlope",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",20)':{tag:'(0021,"SIEMENS MR VA0 GEN",20)',vr:"IS",name:"PhaseCorrectionRowsSequence",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",21)':{tag:'(0021,"SIEMENS MR VA0 GEN",21)',vr:"IS",name:"PhaseCorrectionColumnsSequence",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",22)':{tag:'(0021,"SIEMENS MR VA0 GEN",22)',vr:"IS",name:"PhaseCorrectionRowsReconstruction",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",24)':{tag:'(0021,"SIEMENS MR VA0 GEN",24)',vr:"IS",name:"PhaseCorrectionColumnsReconstruction",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",30)':{tag:'(0021,"SIEMENS MR VA0 GEN",30)',vr:"IS",name:"NumberOf3DRawPartitionsNominal",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",31)':{tag:'(0021,"SIEMENS MR VA0 GEN",31)',vr:"IS",name:"NumberOf3DRawPartitionsCurrent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",34)':{tag:'(0021,"SIEMENS MR VA0 GEN",34)',vr:"IS",name:"NumberOf3DImagePartitions",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",36)':{tag:'(0021,"SIEMENS MR VA0 GEN",36)',vr:"IS",name:"Actual3DImagePartitionNumber",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",39)':{tag:'(0021,"SIEMENS MR VA0 GEN",39)',vr:"DS",name:"SlabThickness",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",40)':{tag:'(0021,"SIEMENS MR VA0 GEN",40)',vr:"IS",name:"NumberOfSlicesNominal",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",41)':{tag:'(0021,"SIEMENS MR VA0 GEN",41)',vr:"IS",name:"NumberOfSlicesCurrent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",42)':{tag:'(0021,"SIEMENS MR VA0 GEN",42)',vr:"IS",name:"CurrentSliceNumber",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",43)':{tag:'(0021,"SIEMENS MR VA0 GEN",43)',vr:"IS",name:"CurrentGroupNumber",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",44)':{tag:'(0021,"SIEMENS MR VA0 GEN",44)',vr:"DS",name:"CurrentSliceDistanceFactor",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",45)':{tag:'(0021,"SIEMENS MR VA0 GEN",45)',vr:"IS",name:"MIPStartRow",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",46)':{tag:'(0021,"SIEMENS MR VA0 GEN",46)',vr:"IS",name:"MIPStopRow",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",47)':{tag:'(0021,"SIEMENS MR VA0 GEN",47)',vr:"IS",name:"MIPStartColumn",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",48)':{tag:'(0021,"SIEMENS MR VA0 GEN",48)',vr:"IS",name:"MIPStartColumn",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",49)':{tag:'(0021,"SIEMENS MR VA0 GEN",49)',vr:"IS",name:"MIPStartSlice Name=",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",4a)':{tag:'(0021,"SIEMENS MR VA0 GEN",4a)',vr:"IS",name:"MIPStartSlice",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",4f)':{tag:'(0021,"SIEMENS MR VA0 GEN",4f)',vr:"LT",name:"OrderofSlices",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",50)':{tag:'(0021,"SIEMENS MR VA0 GEN",50)',vr:"US",name:"SignalMask",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",52)':{tag:'(0021,"SIEMENS MR VA0 GEN",52)',vr:"DS",name:"DelayAfterTrigger",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",53)':{tag:'(0021,"SIEMENS MR VA0 GEN",53)',vr:"IS",name:"RRInterval",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",54)':{tag:'(0021,"SIEMENS MR VA0 GEN",54)',vr:"DS",name:"NumberOfTriggerPulses",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",56)':{tag:'(0021,"SIEMENS MR VA0 GEN",56)',vr:"DS",name:"RepetitionTimeEffective",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",57)':{tag:'(0021,"SIEMENS MR VA0 GEN",57)',vr:"LT",name:"GatePhase",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",58)':{tag:'(0021,"SIEMENS MR VA0 GEN",58)',vr:"DS",name:"GateThreshold",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",59)':{tag:'(0021,"SIEMENS MR VA0 GEN",59)',vr:"DS",name:"GatedRatio",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",60)':{tag:'(0021,"SIEMENS MR VA0 GEN",60)',vr:"IS",name:"NumberOfInterpolatedImages",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",70)':{tag:'(0021,"SIEMENS MR VA0 GEN",70)',vr:"IS",name:"NumberOfEchoes",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",72)':{tag:'(0021,"SIEMENS MR VA0 GEN",72)',vr:"DS",name:"SecondEchoTime",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",73)':{tag:'(0021,"SIEMENS MR VA0 GEN",73)',vr:"DS",name:"SecondRepetitionTime",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",80)':{tag:'(0021,"SIEMENS MR VA0 GEN",80)',vr:"IS",name:"CardiacCode",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",91)':{tag:'(0021,"SIEMENS MR VA0 GEN",91)',vr:"DS",name:"SaturationPhaseEncodingVectorTransverseComponent",vm:"6",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",92)':{tag:'(0021,"SIEMENS MR VA0 GEN",92)',vr:"DS",name:"SaturationReadoutVectorTransverseComponent",vm:"6",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",93)':{tag:'(0021,"SIEMENS MR VA0 GEN",93)',vr:"DS",name:"EPIChangeValueOfMagnitude",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",94)':{tag:'(0021,"SIEMENS MR VA0 GEN",94)',vr:"DS",name:"EPIChangeValueOfXComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",95)':{tag:'(0021,"SIEMENS MR VA0 GEN",95)',vr:"DS",name:"EPIChangeValueOfYComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 GEN",96)':{tag:'(0021,"SIEMENS MR VA0 GEN",96)',vr:"DS",name:"EPIChangeValueOfZComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",00)':{tag:'(0021,"SIEMENS MR VA0 RAW",00)',vr:"LT",name:"SequenceType",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",01)':{tag:'(0021,"SIEMENS MR VA0 RAW",01)',vr:"IS",name:"VectorSizeOriginal",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",02)':{tag:'(0021,"SIEMENS MR VA0 RAW",02)',vr:"IS",name:"VectorSizeExtended",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",03)':{tag:'(0021,"SIEMENS MR VA0 RAW",03)',vr:"DS",name:"AcquiredSpectralRange",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",04)':{tag:'(0021,"SIEMENS MR VA0 RAW",04)',vr:"DS",name:"VOIPosition",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",05)':{tag:'(0021,"SIEMENS MR VA0 RAW",05)',vr:"DS",name:"VOISize",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",06)':{tag:'(0021,"SIEMENS MR VA0 RAW",06)',vr:"IS",name:"CSIMatrixSizeOriginal",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",07)':{tag:'(0021,"SIEMENS MR VA0 RAW",07)',vr:"IS",name:"CSIMatrixSizeExtended",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",08)':{tag:'(0021,"SIEMENS MR VA0 RAW",08)',vr:"DS",name:"SpatialGridShift",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",09)':{tag:'(0021,"SIEMENS MR VA0 RAW",09)',vr:"DS",name:"SignalLimitsMinimum",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",10)':{tag:'(0021,"SIEMENS MR VA0 RAW",10)',vr:"DS",name:"SignalLimitsMaximum",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",11)':{tag:'(0021,"SIEMENS MR VA0 RAW",11)',vr:"DS",name:"SpecInfoMask",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",12)':{tag:'(0021,"SIEMENS MR VA0 RAW",12)',vr:"DS",name:"EPITimeRateOfChangeOfMagnitude",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",13)':{tag:'(0021,"SIEMENS MR VA0 RAW",13)',vr:"DS",name:"EPITimeRateOfChangeOfXComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",14)':{tag:'(0021,"SIEMENS MR VA0 RAW",14)',vr:"DS",name:"EPITimeRateOfChangeOfYComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",15)':{tag:'(0021,"SIEMENS MR VA0 RAW",15)',vr:"DS",name:"EPITimeRateOfChangeOfZComponent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",16)':{tag:'(0021,"SIEMENS MR VA0 RAW",16)',vr:"DS",name:"EPITimeRateOfChangeLegalLimit1",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",17)':{tag:'(0021,"SIEMENS MR VA0 RAW",17)',vr:"DS",name:"EPIOperationModeFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",18)':{tag:'(0021,"SIEMENS MR VA0 RAW",18)',vr:"DS",name:"EPIFieldCalculationSafetyFactor",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",19)':{tag:'(0021,"SIEMENS MR VA0 RAW",19)',vr:"DS",name:"EPILegalLimit1OfChangeValue",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",20)':{tag:'(0021,"SIEMENS MR VA0 RAW",20)',vr:"DS",name:"EPILegalLimit2OfChangeValue",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",21)':{tag:'(0021,"SIEMENS MR VA0 RAW",21)',vr:"DS",name:"EPIRiseTime",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",30)':{tag:'(0021,"SIEMENS MR VA0 RAW",30)',vr:"DS",name:"ArrayCoilADCOffset",vm:"16",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",31)':{tag:'(0021,"SIEMENS MR VA0 RAW",31)',vr:"DS",name:"ArrayCoilPreamplifierGain",vm:"16",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",50)':{tag:'(0021,"SIEMENS MR VA0 RAW",50)',vr:"LT",name:"SaturationType",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",51)':{tag:'(0021,"SIEMENS MR VA0 RAW",51)',vr:"DS",name:"SaturationNormalVector",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",52)':{tag:'(0021,"SIEMENS MR VA0 RAW",52)',vr:"DS",name:"SaturationPositionVector",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",53)':{tag:'(0021,"SIEMENS MR VA0 RAW",53)',vr:"DS",name:"SaturationThickness",vm:"6",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",54)':{tag:'(0021,"SIEMENS MR VA0 RAW",54)',vr:"DS",name:"SaturationWidth",vm:"6",version:"PrivateTag"},'(0021,"SIEMENS MR VA0 RAW",55)':{tag:'(0021,"SIEMENS MR VA0 RAW",55)',vr:"DS",name:"SaturationDistance",vm:"6",version:"PrivateTag"},'(7fe3,"SIEMENS NUMARIS II",00)':{tag:'(7fe3,"SIEMENS NUMARIS II",00)',vr:"LT",name:"ImageGraphicsFormatCode",vm:"1",version:"PrivateTag"},'(7fe3,"SIEMENS NUMARIS II",10)':{tag:'(7fe3,"SIEMENS NUMARIS II",10)',vr:"OB",name:"ImageGraphics",vm:"1",version:"PrivateTag"},'(7fe3,"SIEMENS NUMARIS II",20)':{tag:'(7fe3,"SIEMENS NUMARIS II",20)',vr:"OB",name:"ImageGraphicsDummy",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",20)':{tag:'(0011,"SIEMENS RA GEN",20)',vr:"SL",name:"FluoroTimer",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",25)':{tag:'(0011,"SIEMENS RA GEN",25)',vr:"SL",name:"PtopDoseAreaProduct",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",26)':{tag:'(0011,"SIEMENS RA GEN",26)',vr:"SL",name:"PtopTotalSkinDose",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",30)':{tag:'(0011,"SIEMENS RA GEN",30)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",35)':{tag:'(0011,"SIEMENS RA GEN",35)',vr:"LO",name:"PatientInitialPuckCounter",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA GEN",40)':{tag:'(0011,"SIEMENS RA GEN",40)',vr:"SS",name:"SPIDataObjectType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",15)':{tag:'(0019,"SIEMENS RA GEN",15)',vr:"LO",name:"AcquiredPlane",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",1f)':{tag:'(0019,"SIEMENS RA GEN",1f)',vr:"SS",name:"DefaultTableIsoCenterHeight",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",20)':{tag:'(0019,"SIEMENS RA GEN",20)',vr:"SL",name:"SceneFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",22)':{tag:'(0019,"SIEMENS RA GEN",22)',vr:"SL",name:"RefPhotofileFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",24)':{tag:'(0019,"SIEMENS RA GEN",24)',vr:"LO",name:"SceneName",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",26)':{tag:'(0019,"SIEMENS RA GEN",26)',vr:"SS",name:"AcquisitionIndex",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",28)':{tag:'(0019,"SIEMENS RA GEN",28)',vr:"SS",name:"MixedPulseMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",2a)':{tag:'(0019,"SIEMENS RA GEN",2a)',vr:"SS",name:"NoOfPositions",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",2c)':{tag:'(0019,"SIEMENS RA GEN",2c)',vr:"SS",name:"NoOfPhases",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",2e)':{tag:'(0019,"SIEMENS RA GEN",2e)',vr:"SS",name:"FrameRateForPositions",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",30)':{tag:'(0019,"SIEMENS RA GEN",30)',vr:"SS",name:"NoOfFramesForPositions",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",32)':{tag:'(0019,"SIEMENS RA GEN",32)',vr:"SS",name:"SteppingDirection",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",34)':{tag:'(0019,"SIEMENS RA GEN",34)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",36)':{tag:'(0019,"SIEMENS RA GEN",36)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",38)':{tag:'(0019,"SIEMENS RA GEN",38)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",3a)':{tag:'(0019,"SIEMENS RA GEN",3a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",3c)':{tag:'(0019,"SIEMENS RA GEN",3c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",3e)':{tag:'(0019,"SIEMENS RA GEN",3e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",40)':{tag:'(0019,"SIEMENS RA GEN",40)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",42)':{tag:'(0019,"SIEMENS RA GEN",42)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",44)':{tag:'(0019,"SIEMENS RA GEN",44)',vr:"SS",name:"ImageTransferDelay",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",46)':{tag:'(0019,"SIEMENS RA GEN",46)',vr:"SL",name:"InversFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",48)':{tag:'(0019,"SIEMENS RA GEN",48)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",4a)':{tag:'(0019,"SIEMENS RA GEN",4a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",4c)':{tag:'(0019,"SIEMENS RA GEN",4c)',vr:"SS",name:"BlankingCircleDiameter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",50)':{tag:'(0019,"SIEMENS RA GEN",50)',vr:"SL",name:"StandDataValid",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",52)':{tag:'(0019,"SIEMENS RA GEN",52)',vr:"SS",name:"TableTilt",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",54)':{tag:'(0019,"SIEMENS RA GEN",54)',vr:"SS",name:"TableAxisRotation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",56)':{tag:'(0019,"SIEMENS RA GEN",56)',vr:"SS",name:"TableLongitudalPosition",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",58)':{tag:'(0019,"SIEMENS RA GEN",58)',vr:"SS",name:"TableSideOffset",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",5a)':{tag:'(0019,"SIEMENS RA GEN",5a)',vr:"SS",name:"TableIsoCenterHeight",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",5c)':{tag:'(0019,"SIEMENS RA GEN",5c)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",5e)':{tag:'(0019,"SIEMENS RA GEN",5e)',vr:"SL",name:"CollimationDataValid",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",60)':{tag:'(0019,"SIEMENS RA GEN",60)',vr:"SL",name:"PeriSequenceNo",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",62)':{tag:'(0019,"SIEMENS RA GEN",62)',vr:"SL",name:"PeriTotalScenes",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",64)':{tag:'(0019,"SIEMENS RA GEN",64)',vr:"SL",name:"PeriOverlapTop",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",66)':{tag:'(0019,"SIEMENS RA GEN",66)',vr:"SL",name:"PeriOverlapBottom",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",68)':{tag:'(0019,"SIEMENS RA GEN",68)',vr:"SL",name:"RawImageNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",6a)':{tag:'(0019,"SIEMENS RA GEN",6a)',vr:"SL",name:"XRayDataValid",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",70)':{tag:'(0019,"SIEMENS RA GEN",70)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",72)':{tag:'(0019,"SIEMENS RA GEN",72)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",74)':{tag:'(0019,"SIEMENS RA GEN",74)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",76)':{tag:'(0019,"SIEMENS RA GEN",76)',vr:"SL",name:"FillingAverageFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",78)':{tag:'(0019,"SIEMENS RA GEN",78)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",7a)':{tag:'(0019,"SIEMENS RA GEN",7a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",7c)':{tag:'(0019,"SIEMENS RA GEN",7c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",7e)':{tag:'(0019,"SIEMENS RA GEN",7e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",80)':{tag:'(0019,"SIEMENS RA GEN",80)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",82)':{tag:'(0019,"SIEMENS RA GEN",82)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",84)':{tag:'(0019,"SIEMENS RA GEN",84)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",86)':{tag:'(0019,"SIEMENS RA GEN",86)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",88)':{tag:'(0019,"SIEMENS RA GEN",88)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",8a)':{tag:'(0019,"SIEMENS RA GEN",8a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",8c)':{tag:'(0019,"SIEMENS RA GEN",8c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",8e)':{tag:'(0019,"SIEMENS RA GEN",8e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",92)':{tag:'(0019,"SIEMENS RA GEN",92)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",94)':{tag:'(0019,"SIEMENS RA GEN",94)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",96)':{tag:'(0019,"SIEMENS RA GEN",96)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",98)':{tag:'(0019,"SIEMENS RA GEN",98)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",9a)':{tag:'(0019,"SIEMENS RA GEN",9a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",9c)':{tag:'(0019,"SIEMENS RA GEN",9c)',vr:"SL",name:"IntensifierLevelCalibrationFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",9e)':{tag:'(0019,"SIEMENS RA GEN",9e)',vr:"SL",name:"NativeReviewFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a2)':{tag:'(0019,"SIEMENS RA GEN",a2)',vr:"SL",name:"SceneNumber",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a4)':{tag:'(0019,"SIEMENS RA GEN",a4)',vr:"SS",name:"AcquisitionMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a5)':{tag:'(0019,"SIEMENS RA GEN",a5)',vr:"SS",name:"AcquisitonFrameRate",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a6)':{tag:'(0019,"SIEMENS RA GEN",a6)',vr:"SL",name:"ECGFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a7)':{tag:'(0019,"SIEMENS RA GEN",a7)',vr:"SL",name:"AdditionalSceneData",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a8)':{tag:'(0019,"SIEMENS RA GEN",a8)',vr:"SL",name:"FileCopyFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",a9)':{tag:'(0019,"SIEMENS RA GEN",a9)',vr:"SL",name:"PhlebovisionFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",aa)':{tag:'(0019,"SIEMENS RA GEN",aa)',vr:"SL",name:"Co2Flag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",ab)':{tag:'(0019,"SIEMENS RA GEN",ab)',vr:"SS",name:"MaxSpeed",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",ac)':{tag:'(0019,"SIEMENS RA GEN",ac)',vr:"SS",name:"StepWidth",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",ad)':{tag:'(0019,"SIEMENS RA GEN",ad)',vr:"SL",name:"DigitalAcquisitionZoom",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA GEN",ff)':{tag:'(0019,"SIEMENS RA GEN",ff)',vr:"SS",name:"Internal",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",15)':{tag:'(0021,"SIEMENS RA GEN",15)',vr:"SS",name:"ImagesInStudy",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",20)':{tag:'(0021,"SIEMENS RA GEN",20)',vr:"SS",name:"ScenesInStudy",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",25)':{tag:'(0021,"SIEMENS RA GEN",25)',vr:"SS",name:"ImagesInPhotofile",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",27)':{tag:'(0021,"SIEMENS RA GEN",27)',vr:"SS",name:"PlaneBImagesExist",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",28)':{tag:'(0021,"SIEMENS RA GEN",28)',vr:"SS",name:"NoOf2MBChunks",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",30)':{tag:'(0021,"SIEMENS RA GEN",30)',vr:"SS",name:"ImagesInAllScenes",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS RA GEN",40)':{tag:'(0021,"SIEMENS RA GEN",40)',vr:"SS",name:"ArchiveSWInternalVersion",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE A",28)':{tag:'(0011,"SIEMENS RA PLANE A",28)',vr:"SL",name:"FluoroTimerA",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE A",29)':{tag:'(0011,"SIEMENS RA PLANE A",29)',vr:"SL",name:"FluoroSkinDoseA",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE A",2a)':{tag:'(0011,"SIEMENS RA PLANE A",2a)',vr:"SL",name:"TotalSkinDoseA",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE A",2b)':{tag:'(0011,"SIEMENS RA PLANE A",2b)',vr:"SL",name:"FluoroDoseAreaProductA",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE A",2c)':{tag:'(0011,"SIEMENS RA PLANE A",2c)',vr:"SL",name:"TotalDoseAreaProductA",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",15)':{tag:'(0019,"SIEMENS RA PLANE A",15)',vr:"LT",name:"OfflineUID",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",18)':{tag:'(0019,"SIEMENS RA PLANE A",18)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",19)':{tag:'(0019,"SIEMENS RA PLANE A",19)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1a)':{tag:'(0019,"SIEMENS RA PLANE A",1a)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1b)':{tag:'(0019,"SIEMENS RA PLANE A",1b)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1c)':{tag:'(0019,"SIEMENS RA PLANE A",1c)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1d)':{tag:'(0019,"SIEMENS RA PLANE A",1d)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1e)':{tag:'(0019,"SIEMENS RA PLANE A",1e)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",1f)':{tag:'(0019,"SIEMENS RA PLANE A",1f)',vr:"SS",name:"Internal",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",20)':{tag:'(0019,"SIEMENS RA PLANE A",20)',vr:"SS",name:"SystemCalibFactorPlaneA",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",22)':{tag:'(0019,"SIEMENS RA PLANE A",22)',vr:"SS",name:"XRayParameterSetNo",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",24)':{tag:'(0019,"SIEMENS RA PLANE A",24)',vr:"SS",name:"XRaySystem",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",26)':{tag:'(0019,"SIEMENS RA PLANE A",26)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",28)':{tag:'(0019,"SIEMENS RA PLANE A",28)',vr:"SS",name:"AcquiredDisplayMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",2a)':{tag:'(0019,"SIEMENS RA PLANE A",2a)',vr:"SS",name:"AcquisitionDelay",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",2c)':{tag:'(0019,"SIEMENS RA PLANE A",2c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",2e)':{tag:'(0019,"SIEMENS RA PLANE A",2e)',vr:"SS",name:"MaxFramesLimit",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",30)':{tag:'(0019,"SIEMENS RA PLANE A",30)',vr:"US",name:"MaximumFrameSizeNIU",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",32)':{tag:'(0019,"SIEMENS RA PLANE A",32)',vr:"SS",name:"SubtractedFilterType",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",34)':{tag:'(0019,"SIEMENS RA PLANE A",34)',vr:"SS",name:"FilterFactorNative",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",36)':{tag:'(0019,"SIEMENS RA PLANE A",36)',vr:"SS",name:"AnatomicBackgroundFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",38)':{tag:'(0019,"SIEMENS RA PLANE A",38)',vr:"SS",name:"WindowUpperLimitNative",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",3a)':{tag:'(0019,"SIEMENS RA PLANE A",3a)',vr:"SS",name:"WindowLowerLimitNative",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",3c)':{tag:'(0019,"SIEMENS RA PLANE A",3c)',vr:"SS",name:"WindowBrightnessPhase1",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",3e)':{tag:'(0019,"SIEMENS RA PLANE A",3e)',vr:"SS",name:"WindowBrightnessPhase2",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",40)':{tag:'(0019,"SIEMENS RA PLANE A",40)',vr:"SS",name:"WindowContrastPhase1",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",42)':{tag:'(0019,"SIEMENS RA PLANE A",42)',vr:"SS",name:"WindowContrastPhase2",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",44)':{tag:'(0019,"SIEMENS RA PLANE A",44)',vr:"SS",name:"FilterFactorSub",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",46)':{tag:'(0019,"SIEMENS RA PLANE A",46)',vr:"SS",name:"PeakOpacified",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",48)':{tag:'(0019,"SIEMENS RA PLANE A",48)',vr:"SL",name:"MaskFrame",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",4a)':{tag:'(0019,"SIEMENS RA PLANE A",4a)',vr:"SL",name:"BIHFrame",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",4c)':{tag:'(0019,"SIEMENS RA PLANE A",4c)',vr:"SS",name:"CentBeamAngulationCaudCran",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",4e)':{tag:'(0019,"SIEMENS RA PLANE A",4e)',vr:"SS",name:"CentBeamAngulationLRAnterior",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",50)':{tag:'(0019,"SIEMENS RA PLANE A",50)',vr:"SS",name:"LongitudinalPosition",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",52)':{tag:'(0019,"SIEMENS RA PLANE A",52)',vr:"SS",name:"SideOffset",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",54)':{tag:'(0019,"SIEMENS RA PLANE A",54)',vr:"SS",name:"IsoCenterHeight",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",56)':{tag:'(0019,"SIEMENS RA PLANE A",56)',vr:"SS",name:"ImageTwist",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",58)':{tag:'(0019,"SIEMENS RA PLANE A",58)',vr:"SS",name:"SourceImageDistance",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",5a)':{tag:'(0019,"SIEMENS RA PLANE A",5a)',vr:"SS",name:"MechanicalMagnificationFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",5c)':{tag:'(0019,"SIEMENS RA PLANE A",5c)',vr:"SL",name:"CalibrationFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",5e)':{tag:'(0019,"SIEMENS RA PLANE A",5e)',vr:"SL",name:"CalibrationAngleCranCaud",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",60)':{tag:'(0019,"SIEMENS RA PLANE A",60)',vr:"SL",name:"CalibrationAngleRAOLAO",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",62)':{tag:'(0019,"SIEMENS RA PLANE A",62)',vr:"SL",name:"CalibrationTableToFloorDist",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",64)':{tag:'(0019,"SIEMENS RA PLANE A",64)',vr:"SL",name:"CalibrationIsocenterToFloorDist",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",66)':{tag:'(0019,"SIEMENS RA PLANE A",66)',vr:"SL",name:"CalibrationIsocenterToSourceDist",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",68)':{tag:'(0019,"SIEMENS RA PLANE A",68)',vr:"SL",name:"CalibrationSourceToII",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",6a)':{tag:'(0019,"SIEMENS RA PLANE A",6a)',vr:"SL",name:"CalibrationIIZoom",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",6c)':{tag:'(0019,"SIEMENS RA PLANE A",6c)',vr:"SL",name:"CalibrationIIField",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",6e)':{tag:'(0019,"SIEMENS RA PLANE A",6e)',vr:"SL",name:"CalibrationFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",70)':{tag:'(0019,"SIEMENS RA PLANE A",70)',vr:"SL",name:"CalibrationObjectToImageDistance",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",72)':{tag:'(0019,"SIEMENS RA PLANE A",72)',vr:"SL",name:"CalibrationSystemFactor",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",74)':{tag:'(0019,"SIEMENS RA PLANE A",74)',vr:"SL",name:"CalibrationSystemCorrection",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",76)':{tag:'(0019,"SIEMENS RA PLANE A",76)',vr:"SL",name:"CalibrationSystemIIFormats",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",78)':{tag:'(0019,"SIEMENS RA PLANE A",78)',vr:"SL",name:"CalibrationGantryDataValid",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",7a)':{tag:'(0019,"SIEMENS RA PLANE A",7a)',vr:"SS",name:"CollimatorSquareBreadth",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",7c)':{tag:'(0019,"SIEMENS RA PLANE A",7c)',vr:"SS",name:"CollimatorSquareHeight",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",7e)':{tag:'(0019,"SIEMENS RA PLANE A",7e)',vr:"SS",name:"CollimatorSquareDiameter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",80)':{tag:'(0019,"SIEMENS RA PLANE A",80)',vr:"SS",name:"CollimaterFingerTurnAngle",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",82)':{tag:'(0019,"SIEMENS RA PLANE A",82)',vr:"SS",name:"CollimaterFingerPosition",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",84)':{tag:'(0019,"SIEMENS RA PLANE A",84)',vr:"SS",name:"CollimaterDiaphragmTurnAngle",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",86)':{tag:'(0019,"SIEMENS RA PLANE A",86)',vr:"SS",name:"CollimaterDiaphragmPosition1",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",88)':{tag:'(0019,"SIEMENS RA PLANE A",88)',vr:"SS",name:"CollimaterDiaphragmPosition2",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",8a)':{tag:'(0019,"SIEMENS RA PLANE A",8a)',vr:"SS",name:"CollimaterDiaphragmMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",8c)':{tag:'(0019,"SIEMENS RA PLANE A",8c)',vr:"SS",name:"CollimaterBeamLimitBreadth",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",8e)':{tag:'(0019,"SIEMENS RA PLANE A",8e)',vr:"SS",name:"CollimaterBeamLimitHeight",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",90)':{tag:'(0019,"SIEMENS RA PLANE A",90)',vr:"SS",name:"CollimaterBeamLimitDiameter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",92)':{tag:'(0019,"SIEMENS RA PLANE A",92)',vr:"SS",name:"X-RayControlMOde",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",94)':{tag:'(0019,"SIEMENS RA PLANE A",94)',vr:"SS",name:"X-RaySystem",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",96)':{tag:'(0019,"SIEMENS RA PLANE A",96)',vr:"SS",name:"FocalSpot",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",98)':{tag:'(0019,"SIEMENS RA PLANE A",98)',vr:"SS",name:"ExposureControl",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",9a)':{tag:'(0019,"SIEMENS RA PLANE A",9a)',vr:"SL",name:"XRayVoltage",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",9c)':{tag:'(0019,"SIEMENS RA PLANE A",9c)',vr:"SL",name:"XRayCurrent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",9e)':{tag:'(0019,"SIEMENS RA PLANE A",9e)',vr:"SL",name:"XRayCurrentTimeProduct",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",a0)':{tag:'(0019,"SIEMENS RA PLANE A",a0)',vr:"SL",name:"XRayPulseTime",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",a2)':{tag:'(0019,"SIEMENS RA PLANE A",a2)',vr:"SL",name:"XRaySceneTimeFluoroClock",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",a4)':{tag:'(0019,"SIEMENS RA PLANE A",a4)',vr:"SS",name:"MaximumPulseRate",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",a6)':{tag:'(0019,"SIEMENS RA PLANE A",a6)',vr:"SS",name:"PulsesPerScene",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",a8)':{tag:'(0019,"SIEMENS RA PLANE A",a8)',vr:"SL",name:"DoseAreaProductOfScene",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",aa)':{tag:'(0019,"SIEMENS RA PLANE A",aa)',vr:"SS",name:"Dose",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",ac)':{tag:'(0019,"SIEMENS RA PLANE A",ac)',vr:"SS",name:"DoseRate",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",ae)':{tag:'(0019,"SIEMENS RA PLANE A",ae)',vr:"SL",name:"IIToCoverDistance",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b0)':{tag:'(0019,"SIEMENS RA PLANE A",b0)',vr:"SS",name:"LastFramePhase1",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b1)':{tag:'(0019,"SIEMENS RA PLANE A",b1)',vr:"SS",name:"FrameRatePhase1",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b2)':{tag:'(0019,"SIEMENS RA PLANE A",b2)',vr:"SS",name:"LastFramePhase2",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b3)':{tag:'(0019,"SIEMENS RA PLANE A",b3)',vr:"SS",name:"FrameRatePhase2",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b4)':{tag:'(0019,"SIEMENS RA PLANE A",b4)',vr:"SS",name:"LastFramePhase3",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b5)':{tag:'(0019,"SIEMENS RA PLANE A",b5)',vr:"SS",name:"FrameRatePhase3",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b6)':{tag:'(0019,"SIEMENS RA PLANE A",b6)',vr:"SS",name:"LastFramePhase4",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b7)':{tag:'(0019,"SIEMENS RA PLANE A",b7)',vr:"SS",name:"FrameRatePhase4",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b8)':{tag:'(0019,"SIEMENS RA PLANE A",b8)',vr:"SS",name:"GammaOfNativeImage",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",b9)':{tag:'(0019,"SIEMENS RA PLANE A",b9)',vr:"SS",name:"GammaOfTVSystem",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",bb)':{tag:'(0019,"SIEMENS RA PLANE A",bb)',vr:"SL",name:"PixelshiftX",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",bc)':{tag:'(0019,"SIEMENS RA PLANE A",bc)',vr:"SL",name:"PixelshiftY",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",bd)':{tag:'(0019,"SIEMENS RA PLANE A",bd)',vr:"SL",name:"MaskAverageFactor",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",be)':{tag:'(0019,"SIEMENS RA PLANE A",be)',vr:"SL",name:"BlankingCircleFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",bf)':{tag:'(0019,"SIEMENS RA PLANE A",bf)',vr:"SL",name:"CircleRowStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c0)':{tag:'(0019,"SIEMENS RA PLANE A",c0)',vr:"SL",name:"CircleRowEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c1)':{tag:'(0019,"SIEMENS RA PLANE A",c1)',vr:"SL",name:"CircleColumnStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c2)':{tag:'(0019,"SIEMENS RA PLANE A",c2)',vr:"SL",name:"CircleColumnEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c3)':{tag:'(0019,"SIEMENS RA PLANE A",c3)',vr:"SL",name:"CircleDiameter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c4)':{tag:'(0019,"SIEMENS RA PLANE A",c4)',vr:"SL",name:"RectangularCollimaterFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c5)':{tag:'(0019,"SIEMENS RA PLANE A",c5)',vr:"SL",name:"RectangleRowStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c6)':{tag:'(0019,"SIEMENS RA PLANE A",c6)',vr:"SL",name:"RectangleRowEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c7)':{tag:'(0019,"SIEMENS RA PLANE A",c7)',vr:"SL",name:"RectangleColumnStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c8)':{tag:'(0019,"SIEMENS RA PLANE A",c8)',vr:"SL",name:"RectangleColumnEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",c9)':{tag:'(0019,"SIEMENS RA PLANE A",c9)',vr:"SL",name:"RectangleAngulation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",ca)':{tag:'(0019,"SIEMENS RA PLANE A",ca)',vr:"SL",name:"IrisCollimatorFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",cb)':{tag:'(0019,"SIEMENS RA PLANE A",cb)',vr:"SL",name:"IrisRowStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",cc)':{tag:'(0019,"SIEMENS RA PLANE A",cc)',vr:"SL",name:"IrisRowEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",cd)':{tag:'(0019,"SIEMENS RA PLANE A",cd)',vr:"SL",name:"IrisColumnStart",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",ce)':{tag:'(0019,"SIEMENS RA PLANE A",ce)',vr:"SL",name:"IrisColumnEnd",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",cf)':{tag:'(0019,"SIEMENS RA PLANE A",cf)',vr:"SL",name:"IrisAngulation",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d1)':{tag:'(0019,"SIEMENS RA PLANE A",d1)',vr:"SS",name:"NumberOfFramesPlane",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d2)':{tag:'(0019,"SIEMENS RA PLANE A",d2)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d3)':{tag:'(0019,"SIEMENS RA PLANE A",d3)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d4)':{tag:'(0019,"SIEMENS RA PLANE A",d4)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d5)':{tag:'(0019,"SIEMENS RA PLANE A",d5)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d6)':{tag:'(0019,"SIEMENS RA PLANE A",d6)',vr:"SS",name:"Internal",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d7)':{tag:'(0019,"SIEMENS RA PLANE A",d7)',vr:"SS",name:"Internal",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d8)':{tag:'(0019,"SIEMENS RA PLANE A",d8)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",d9)':{tag:'(0019,"SIEMENS RA PLANE A",d9)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",da)':{tag:'(0019,"SIEMENS RA PLANE A",da)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",db)':{tag:'(0019,"SIEMENS RA PLANE A",db)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",dc)':{tag:'(0019,"SIEMENS RA PLANE A",dc)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",dd)':{tag:'(0019,"SIEMENS RA PLANE A",dd)',vr:"SL",name:"AnatomicBackground",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",de)':{tag:'(0019,"SIEMENS RA PLANE A",de)',vr:"SL",name:"AutoWindowBase",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",df)':{tag:'(0019,"SIEMENS RA PLANE A",df)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE A",e0)':{tag:'(0019,"SIEMENS RA PLANE A",e0)',vr:"SL",name:"Internal",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE B",28)':{tag:'(0011,"SIEMENS RA PLANE B",28)',vr:"SL",name:"FluoroTimerB",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE B",29)':{tag:'(0011,"SIEMENS RA PLANE B",29)',vr:"SL",name:"FluoroSkinDoseB",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE B",2a)':{tag:'(0011,"SIEMENS RA PLANE B",2a)',vr:"SL",name:"TotalSkinDoseB",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE B",2b)':{tag:'(0011,"SIEMENS RA PLANE B",2b)',vr:"SL",name:"FluoroDoseAreaProductB",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RA PLANE B",2c)':{tag:'(0011,"SIEMENS RA PLANE B",2c)',vr:"SL",name:"TotalDoseAreaProductB",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",18)':{tag:'(0019,"SIEMENS RA PLANE B",18)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",19)':{tag:'(0019,"SIEMENS RA PLANE B",19)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1a)':{tag:'(0019,"SIEMENS RA PLANE B",1a)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1b)':{tag:'(0019,"SIEMENS RA PLANE B",1b)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1c)':{tag:'(0019,"SIEMENS RA PLANE B",1c)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1d)':{tag:'(0019,"SIEMENS RA PLANE B",1d)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1e)':{tag:'(0019,"SIEMENS RA PLANE B",1e)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",1f)':{tag:'(0019,"SIEMENS RA PLANE B",1f)',vr:"SS",name:"Internal",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",20)':{tag:'(0019,"SIEMENS RA PLANE B",20)',vr:"SL",name:"SystemCalibFactorPlaneB",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",22)':{tag:'(0019,"SIEMENS RA PLANE B",22)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",24)':{tag:'(0019,"SIEMENS RA PLANE B",24)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",26)':{tag:'(0019,"SIEMENS RA PLANE B",26)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",28)':{tag:'(0019,"SIEMENS RA PLANE B",28)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",2a)':{tag:'(0019,"SIEMENS RA PLANE B",2a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",2c)':{tag:'(0019,"SIEMENS RA PLANE B",2c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",2e)':{tag:'(0019,"SIEMENS RA PLANE B",2e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",30)':{tag:'(0019,"SIEMENS RA PLANE B",30)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",32)':{tag:'(0019,"SIEMENS RA PLANE B",32)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",34)':{tag:'(0019,"SIEMENS RA PLANE B",34)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",36)':{tag:'(0019,"SIEMENS RA PLANE B",36)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",38)':{tag:'(0019,"SIEMENS RA PLANE B",38)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",3a)':{tag:'(0019,"SIEMENS RA PLANE B",3a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",3c)':{tag:'(0019,"SIEMENS RA PLANE B",3c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",3e)':{tag:'(0019,"SIEMENS RA PLANE B",3e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",40)':{tag:'(0019,"SIEMENS RA PLANE B",40)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",42)':{tag:'(0019,"SIEMENS RA PLANE B",42)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",44)':{tag:'(0019,"SIEMENS RA PLANE B",44)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",46)':{tag:'(0019,"SIEMENS RA PLANE B",46)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",48)':{tag:'(0019,"SIEMENS RA PLANE B",48)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",4a)':{tag:'(0019,"SIEMENS RA PLANE B",4a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",4c)':{tag:'(0019,"SIEMENS RA PLANE B",4c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",4e)':{tag:'(0019,"SIEMENS RA PLANE B",4e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",50)':{tag:'(0019,"SIEMENS RA PLANE B",50)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",52)':{tag:'(0019,"SIEMENS RA PLANE B",52)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",54)':{tag:'(0019,"SIEMENS RA PLANE B",54)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",56)':{tag:'(0019,"SIEMENS RA PLANE B",56)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",58)':{tag:'(0019,"SIEMENS RA PLANE B",58)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",5a)':{tag:'(0019,"SIEMENS RA PLANE B",5a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",5c)':{tag:'(0019,"SIEMENS RA PLANE B",5c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",5e)':{tag:'(0019,"SIEMENS RA PLANE B",5e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",60)':{tag:'(0019,"SIEMENS RA PLANE B",60)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",62)':{tag:'(0019,"SIEMENS RA PLANE B",62)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",64)':{tag:'(0019,"SIEMENS RA PLANE B",64)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",66)':{tag:'(0019,"SIEMENS RA PLANE B",66)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",68)':{tag:'(0019,"SIEMENS RA PLANE B",68)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",6a)':{tag:'(0019,"SIEMENS RA PLANE B",6a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",6c)':{tag:'(0019,"SIEMENS RA PLANE B",6c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",6e)':{tag:'(0019,"SIEMENS RA PLANE B",6e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",70)':{tag:'(0019,"SIEMENS RA PLANE B",70)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",72)':{tag:'(0019,"SIEMENS RA PLANE B",72)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",74)':{tag:'(0019,"SIEMENS RA PLANE B",74)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",76)':{tag:'(0019,"SIEMENS RA PLANE B",76)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",78)':{tag:'(0019,"SIEMENS RA PLANE B",78)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",7a)':{tag:'(0019,"SIEMENS RA PLANE B",7a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",7c)':{tag:'(0019,"SIEMENS RA PLANE B",7c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",7e)':{tag:'(0019,"SIEMENS RA PLANE B",7e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",80)':{tag:'(0019,"SIEMENS RA PLANE B",80)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",82)':{tag:'(0019,"SIEMENS RA PLANE B",82)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",84)':{tag:'(0019,"SIEMENS RA PLANE B",84)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",86)':{tag:'(0019,"SIEMENS RA PLANE B",86)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",88)':{tag:'(0019,"SIEMENS RA PLANE B",88)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",8a)':{tag:'(0019,"SIEMENS RA PLANE B",8a)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",8c)':{tag:'(0019,"SIEMENS RA PLANE B",8c)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",8e)':{tag:'(0019,"SIEMENS RA PLANE B",8e)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",90)':{tag:'(0019,"SIEMENS RA PLANE B",90)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",92)':{tag:'(0019,"SIEMENS RA PLANE B",92)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",94)':{tag:'(0019,"SIEMENS RA PLANE B",94)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",96)':{tag:'(0019,"SIEMENS RA PLANE B",96)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",98)':{tag:'(0019,"SIEMENS RA PLANE B",98)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",9a)':{tag:'(0019,"SIEMENS RA PLANE B",9a)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",9c)':{tag:'(0019,"SIEMENS RA PLANE B",9c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",9e)':{tag:'(0019,"SIEMENS RA PLANE B",9e)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",a0)':{tag:'(0019,"SIEMENS RA PLANE B",a0)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",a2)':{tag:'(0019,"SIEMENS RA PLANE B",a2)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",a4)':{tag:'(0019,"SIEMENS RA PLANE B",a4)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",a6)':{tag:'(0019,"SIEMENS RA PLANE B",a6)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",a8)':{tag:'(0019,"SIEMENS RA PLANE B",a8)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",aa)':{tag:'(0019,"SIEMENS RA PLANE B",aa)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS RA PLANE B",ac)':{tag:'(0019,"SIEMENS RA PLANE B",ac)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",10)':{tag:'(0011,"SIEMENS RIS",10)',vr:"LT",name:"PatientUID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",11)':{tag:'(0011,"SIEMENS RIS",11)',vr:"LT",name:"PatientID",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",20)':{tag:'(0011,"SIEMENS RIS",20)',vr:"DA",name:"PatientRegistrationDate",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",21)':{tag:'(0011,"SIEMENS RIS",21)',vr:"TM",name:"PatientRegistrationTime",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",30)':{tag:'(0011,"SIEMENS RIS",30)',vr:"LT",name:"PatientnameRIS",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",31)':{tag:'(0011,"SIEMENS RIS",31)',vr:"LT",name:"PatientprenameRIS",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",40)':{tag:'(0011,"SIEMENS RIS",40)',vr:"LT",name:"PatientHospitalStatus",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",41)':{tag:'(0011,"SIEMENS RIS",41)',vr:"LT",name:"MedicalAlerts",vm:"1",version:"PrivateTag"},'(0011,"SIEMENS RIS",42)':{tag:'(0011,"SIEMENS RIS",42)',vr:"LT",name:"ContrastAllergies",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS RIS",10)':{tag:'(0031,"SIEMENS RIS",10)',vr:"LT",name:"RequestUID",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS RIS",45)':{tag:'(0031,"SIEMENS RIS",45)',vr:"LT",name:"RequestingPhysician",vm:"1",version:"PrivateTag"},'(0031,"SIEMENS RIS",50)':{tag:'(0031,"SIEMENS RIS",50)',vr:"LT",name:"RequestedPhysician",vm:"1",version:"PrivateTag"},'(0033,"SIEMENS RIS",10)':{tag:'(0033,"SIEMENS RIS",10)',vr:"LT",name:"PatientStudyUID",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",00)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",00)',vr:"US",name:"AcquisitionType",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",01)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",01)',vr:"US",name:"AcquisitionMode",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",02)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",02)',vr:"US",name:"FootswitchIndex",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",03)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",03)',vr:"US",name:"AcquisitionRoom",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",04)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",04)',vr:"SL",name:"CurrentTimeProduct",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",05)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",05)',vr:"SL",name:"Dose",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",06)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",06)',vr:"SL",name:"SkinDosePercent",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",07)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",07)',vr:"SL",name:"SkinDoseAccumulation",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",08)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",08)',vr:"SL",name:"SkinDoseRate",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0A)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0A)',vr:"UL",name:"CopperFilter",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0B)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0B)',vr:"US",name:"MeasuringField",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0C)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0C)',vr:"SS",name:"PostBlankingCircle",vm:"3",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0D)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0D)',vr:"SS",name:"DynaAngles",vm:"2-2n",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0E)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0E)',vr:"SS",name:"TotalSteps",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",0F)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",0F)',vr:"SL",name:"DynaXRayInfo",vm:"3-3n",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",10)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",10)',vr:"US",name:"ModalityLUTInputGamma",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",11)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",11)',vr:"US",name:"ModalityLUTOutputGamma",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",12)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",12)',vr:"OB",name:"SH_STPAR",vm:"1-n",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",13)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",13)',vr:"US",name:"AcquisitionZoom",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",14)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",14)',vr:"SS",name:"DynaAngulationStepWidth",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",15)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",15)',vr:"US",name:"Harmonization",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",16)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",16)',vr:"US",name:"DRSingleFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",17)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",17)',vr:"SL",name:"SourceToIsocenter",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",18)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",18)',vr:"US",name:"PressureData",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",19)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",19)',vr:"SL",name:"ECGIndexArray",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1A)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1A)',vr:"US",name:"FDFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1B)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1B)',vr:"OB",name:"SH_ZOOM",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1C)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1C)',vr:"OB",name:"SH_COLPAR",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1D)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1D)',vr:"US",name:"K_Factor",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1E)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1E)',vr:"US",name:"EVE",vm:"8",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",1F)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",1F)',vr:"SL",name:"TotalSceneTime",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",20)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",20)',vr:"US",name:"RestoreFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",21)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",21)',vr:"US",name:"StandMovementFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",22)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",22)',vr:"US",name:"FDRows",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",23)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",23)',vr:"US",name:"FDColumns",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",24)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",24)',vr:"US",name:"TableMovementFlag",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",25)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",25)',vr:"LO",name:"OriginalOrganProgramName",vm:"1",version:"PrivateTag"},'(0021,"SIEMENS SMS-AX ACQ 1.0",26)':{tag:'(0021,"SIEMENS SMS-AX ACQ 1.0",26)',vr:"DS",name:"CrispyXPIFilter",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",00)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",00)',vr:"US",name:"ViewNative",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",01)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",01)',vr:"US",name:"OriginalSeriesNumber",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",02)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",02)',vr:"US",name:"OriginalImageNumber",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",03)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",03)',vr:"US",name:"WinCenter",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",04)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",04)',vr:"US",name:"WinWidth",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",05)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",05)',vr:"US",name:"WinBrightness",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",06)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",06)',vr:"US",name:"WinContrast",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",07)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",07)',vr:"US",name:"OriginalFrameNumber",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",08)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",08)',vr:"US",name:"OriginalMaskFrameNumber",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",09)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",09)',vr:"US",name:"Opac",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0A)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0A)',vr:"US",name:"OriginalNumberOfFrames",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0B)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0B)',vr:"DS",name:"OriginalSceneDuration",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0C)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0C)',vr:"LO",name:"IdentifierLOID",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0D)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0D)',vr:"SS",name:"OriginalSceneVFRInfo",vm:"1-n",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0E)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0E)',vr:"SS",name:"OriginalFrameECGPosition",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0F)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",0F)',vr:"SS",name:"OriginalECG1stFrameOffset_retired",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",10)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",10)',vr:"SS",name:"ZoomFlag",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",11)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",11)',vr:"US",name:"Flex",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",12)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",12)',vr:"US",name:"NumberOfMaskFrames",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",13)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",13)',vr:"US",name:"NumberOfFillFrames",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",14)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",14)',vr:"US",name:"SeriesNumber",vm:"1",version:"PrivateTag"},'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",15)':{tag:'(0025,"SIEMENS SMS-AX ORIGINAL IMAGE INFO 1.0",15)',vr:"IS",name:"ImageNumber",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",00)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",00)',vr:"DS",name:"HorizontalCalibrationPixelSize",vm:"2",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",01)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",01)',vr:"DS",name:"VerticalCalibrationPixelSize",vm:"2",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",02)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",02)',vr:"LO",name:"CalibrationObject",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",03)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",03)',vr:"DS",name:"CalibrationObjectSize",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",04)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",04)',vr:"LO",name:"CalibrationMethod",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",05)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",05)',vr:"ST",name:"Filename",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",06)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",06)',vr:"IS",name:"FrameNumber",vm:"1",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",07)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",07)',vr:"IS",name:"CalibrationFactorMultiplicity",vm:"2",version:"PrivateTag"},'(0023,"SIEMENS SMS-AX QUANT 1.0",08)':{tag:'(0023,"SIEMENS SMS-AX QUANT 1.0",08)',vr:"IS",name:"CalibrationTODValue",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",00)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",00)',vr:"US",name:"ReviewMode",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",01)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",01)',vr:"US",name:"AnatomicalBackgroundPercent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",02)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",02)',vr:"US",name:"NumberOfPhases",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",03)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",03)',vr:"US",name:"ApplyAnatomicalBackground",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",04)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",04)',vr:"SS",name:"PixelShiftArray",vm:"4-4n",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",05)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",05)',vr:"US",name:"Brightness",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",06)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",06)',vr:"US",name:"Contrast",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",07)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",07)',vr:"US",name:"Enabled",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",08)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",08)',vr:"US",name:"NativeEdgeEnhancementPercentGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",09)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",09)',vr:"SS",name:"NativeEdgeEnhancementLUTIndex",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0A)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0A)',vr:"SS",name:"NativeEdgeEnhancementKernelSize",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0B)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0B)',vr:"US",name:"SubtrEdgeEnhancementPercentGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0C)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0C)',vr:"SS",name:"SubtrEdgeEnhancementLUTIndex",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0D)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0D)',vr:"SS",name:"SubtrEdgeEnhancementKernelSize",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0E)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0E)',vr:"US",name:"FadePercent",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",0F)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",0F)',vr:"US",name:"FlippedBeforeLateralityApplied",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",10)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",10)',vr:"US",name:"ApplyFade",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",12)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",12)',vr:"US",name:"Zoom",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",13)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",13)',vr:"SS",name:"PanX",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",14)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",14)',vr:"SS",name:"PanY",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",15)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",15)',vr:"SS",name:"NativeEdgeEnhancementAdvPercGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",16)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",16)',vr:"SS",name:"SubtrEdgeEnhancementAdvPercGain",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",17)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",17)',vr:"US",name:"InvertFlag",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",1A)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",1A)',vr:"OB",name:"Quant1KOverlay",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",1B)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",1B)',vr:"US",name:"OriginalResolution",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",1C)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",1C)',vr:"DS",name:"AutoWindowCenter",vm:"1",version:"PrivateTag"},'(0019,"SIEMENS SMS-AX VIEW 1.0",1D)':{tag:'(0019,"SIEMENS SMS-AX VIEW 1.0",1D)',vr:"DS",name:"AutoWindowWidth",vm:"1",version:"PrivateTag"},'(0009,"SIENET",01)':{tag:'(0009,"SIENET",01)',vr:"US",name:"SIENETCommandField",vm:"1",version:"PrivateTag"},'(0009,"SIENET",14)':{tag:'(0009,"SIENET",14)',vr:"LT",name:"ReceiverPLA",vm:"1",version:"PrivateTag"},'(0009,"SIENET",16)':{tag:'(0009,"SIENET",16)',vr:"US",name:"TransferPriority",vm:"1",version:"PrivateTag"},'(0009,"SIENET",29)':{tag:'(0009,"SIENET",29)',vr:"LT",name:"ActualUser",vm:"1",version:"PrivateTag"},'(0095,"SIENET",01)':{tag:'(0095,"SIENET",01)',vr:"LT",name:"ExaminationFolderID",vm:"1",version:"PrivateTag"},'(0095,"SIENET",04)':{tag:'(0095,"SIENET",04)',vr:"UL",name:"FolderReportedStatus",vm:"1",version:"PrivateTag"},'(0095,"SIENET",05)':{tag:'(0095,"SIENET",05)',vr:"LT",name:"FolderReportingRadiologist",vm:"1",version:"PrivateTag"},'(0095,"SIENET",07)':{tag:'(0095,"SIENET",07)',vr:"LT",name:"SIENETISAPLA",vm:"1",version:"PrivateTag"},'(0099,"SIENET",02)':{tag:'(0099,"SIENET",02)',vr:"UL",name:"DataObjectAttributes",vm:"1",version:"PrivateTag"},'(0009,"SPI RELEASE 1",10)':{tag:'(0009,"SPI RELEASE 1",10)',vr:"LT",name:"Comments",vm:"1",version:"PrivateTag"},'(0009,"SPI RELEASE 1",15)':{tag:'(0009,"SPI RELEASE 1",15)',vr:"LO",name:"SPIImageUID",vm:"1",version:"PrivateTag"},'(0009,"SPI RELEASE 1",40)':{tag:'(0009,"SPI RELEASE 1",40)',vr:"US",name:"DataObjectType",vm:"1",version:"PrivateTag"},'(0009,"SPI RELEASE 1",41)':{tag:'(0009,"SPI RELEASE 1",41)',vr:"LO",name:"DataObjectSubtype",vm:"1",version:"PrivateTag"},'(0011,"SPI RELEASE 1",10)':{tag:'(0011,"SPI RELEASE 1",10)',vr:"LO",name:"Organ",vm:"1",version:"PrivateTag"},'(0011,"SPI RELEASE 1",15)':{tag:'(0011,"SPI RELEASE 1",15)',vr:"LO",name:"AllergyIndication",vm:"1",version:"PrivateTag"},'(0011,"SPI RELEASE 1",20)':{tag:'(0011,"SPI RELEASE 1",20)',vr:"LO",name:"Pregnancy",vm:"1",version:"PrivateTag"},'(0029,"SPI RELEASE 1",60)':{tag:'(0029,"SPI RELEASE 1",60)',vr:"LT",name:"CompressionAlgorithm",vm:"1",version:"PrivateTag"},'(0009,"SPI Release 1",10)':{tag:'(0009,"SPI Release 1",10)',vr:"LT",name:"Comments",vm:"1",version:"PrivateTag"},'(0009,"SPI Release 1",15)':{tag:'(0009,"SPI Release 1",15)',vr:"LO",name:"SPIImageUID",vm:"1",version:"PrivateTag"},'(0009,"SPI Release 1",40)':{tag:'(0009,"SPI Release 1",40)',vr:"US",name:"DataObjectType",vm:"1",version:"PrivateTag"},'(0009,"SPI Release 1",41)':{tag:'(0009,"SPI Release 1",41)',vr:"LO",name:"DataObjectSubtype",vm:"1",version:"PrivateTag"},'(0011,"SPI Release 1",10)':{tag:'(0011,"SPI Release 1",10)',vr:"LO",name:"Organ",vm:"1",version:"PrivateTag"},'(0011,"SPI Release 1",15)':{tag:'(0011,"SPI Release 1",15)',vr:"LO",name:"AllergyIndication",vm:"1",version:"PrivateTag"},'(0011,"SPI Release 1",20)':{tag:'(0011,"SPI Release 1",20)',vr:"LO",name:"Pregnancy",vm:"1",version:"PrivateTag"},'(0029,"SPI Release 1",60)':{tag:'(0029,"SPI Release 1",60)',vr:"LT",name:"CompressionAlgorithm",vm:"1",version:"PrivateTag"},'(0009,"SPI",10)':{tag:'(0009,"SPI",10)',vr:"LO",name:"Comments",vm:"1",version:"PrivateTag"},'(0009,"SPI",15)':{tag:'(0009,"SPI",15)',vr:"LO",name:"SPIImageUID",vm:"1",version:"PrivateTag"},'(0009,"SPI",40)':{tag:'(0009,"SPI",40)',vr:"US",name:"DataObjectType",vm:"1",version:"PrivateTag"},'(0009,"SPI",41)':{tag:'(0009,"SPI",41)',vr:"LT",name:"DataObjectSubtype",vm:"1",version:"PrivateTag"},'(0011,"SPI",10)':{tag:'(0011,"SPI",10)',vr:"LT",name:"Organ",vm:"1",version:"PrivateTag"},'(0011,"SPI",15)':{tag:'(0011,"SPI",15)',vr:"LT",name:"AllergyIndication",vm:"1",version:"PrivateTag"},'(0011,"SPI",20)':{tag:'(0011,"SPI",20)',vr:"LT",name:"Pregnancy",vm:"1",version:"PrivateTag"},'(0029,"SPI",60)':{tag:'(0029,"SPI",60)',vr:"LT",name:"CompressionAlgorithm",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",00)':{tag:'(0009,"SPI-P Release 1",00)',vr:"LT",name:"DataObjectRecognitionCode",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",04)':{tag:'(0009,"SPI-P Release 1",04)',vr:"LO",name:"ImageDataConsistence",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",08)':{tag:'(0009,"SPI-P Release 1",08)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",12)':{tag:'(0009,"SPI-P Release 1",12)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",15)':{tag:'(0009,"SPI-P Release 1",15)',vr:"LO",name:"UniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",16)':{tag:'(0009,"SPI-P Release 1",16)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",18)':{tag:'(0009,"SPI-P Release 1",18)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",21)':{tag:'(0009,"SPI-P Release 1",21)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",31)':{tag:'(0009,"SPI-P Release 1",31)',vr:"LT",name:"PACSUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",34)':{tag:'(0009,"SPI-P Release 1",34)',vr:"LT",name:"ClusterUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",38)':{tag:'(0009,"SPI-P Release 1",38)',vr:"LT",name:"SystemUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",39)':{tag:'(0009,"SPI-P Release 1",39)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",51)':{tag:'(0009,"SPI-P Release 1",51)',vr:"LT",name:"StudyUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",61)':{tag:'(0009,"SPI-P Release 1",61)',vr:"LT",name:"SeriesUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",91)':{tag:'(0009,"SPI-P Release 1",91)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",f2)':{tag:'(0009,"SPI-P Release 1",f2)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",f3)':{tag:'(0009,"SPI-P Release 1",f3)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",f4)':{tag:'(0009,"SPI-P Release 1",f4)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",f5)':{tag:'(0009,"SPI-P Release 1",f5)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1",f7)':{tag:'(0009,"SPI-P Release 1",f7)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 1",10)':{tag:'(0011,"SPI-P Release 1",10)',vr:"LT",name:"PatientEntryID",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 1",21)':{tag:'(0011,"SPI-P Release 1",21)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 1",22)':{tag:'(0011,"SPI-P Release 1",22)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 1",31)':{tag:'(0011,"SPI-P Release 1",31)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 1",32)':{tag:'(0011,"SPI-P Release 1",32)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",00)':{tag:'(0019,"SPI-P Release 1",00)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",01)':{tag:'(0019,"SPI-P Release 1",01)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",02)':{tag:'(0019,"SPI-P Release 1",02)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",10)':{tag:'(0019,"SPI-P Release 1",10)',vr:"US",name:"MainsFrequency",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",25)':{tag:'(0019,"SPI-P Release 1",25)',vr:"LT",name:"OriginalPixelDataQuality",vm:"1-n",version:"PrivateTag"},'(0019,"SPI-P Release 1",30)':{tag:'(0019,"SPI-P Release 1",30)',vr:"US",name:"ECGTriggering",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",31)':{tag:'(0019,"SPI-P Release 1",31)',vr:"UN",name:"ECG1Offset",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",32)':{tag:'(0019,"SPI-P Release 1",32)',vr:"UN",name:"ECG2Offset1",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",33)':{tag:'(0019,"SPI-P Release 1",33)',vr:"UN",name:"ECG2Offset2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",50)':{tag:'(0019,"SPI-P Release 1",50)',vr:"US",name:"VideoScanMode",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",51)':{tag:'(0019,"SPI-P Release 1",51)',vr:"US",name:"VideoLineRate",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",60)':{tag:'(0019,"SPI-P Release 1",60)',vr:"US",name:"XrayTechnique",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",61)':{tag:'(0019,"SPI-P Release 1",61)',vr:"DS",name:"ImageIdentifierFromat",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",62)':{tag:'(0019,"SPI-P Release 1",62)',vr:"US",name:"IrisDiaphragm",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",63)':{tag:'(0019,"SPI-P Release 1",63)',vr:"CS",name:"Filter",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",64)':{tag:'(0019,"SPI-P Release 1",64)',vr:"CS",name:"CineParallel",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",65)':{tag:'(0019,"SPI-P Release 1",65)',vr:"CS",name:"CineMaster",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",70)':{tag:'(0019,"SPI-P Release 1",70)',vr:"US",name:"ExposureChannel",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",71)':{tag:'(0019,"SPI-P Release 1",71)',vr:"UN",name:"ExposureChannelFirstImage",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",72)':{tag:'(0019,"SPI-P Release 1",72)',vr:"US",name:"ProcessingChannel",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",80)':{tag:'(0019,"SPI-P Release 1",80)',vr:"DS",name:"AcquisitionDelay",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",81)':{tag:'(0019,"SPI-P Release 1",81)',vr:"UN",name:"RelativeImageTime",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",90)':{tag:'(0019,"SPI-P Release 1",90)',vr:"CS",name:"VideoWhiteCompression",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",a0)':{tag:'(0019,"SPI-P Release 1",a0)',vr:"US",name:"Angulation",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1",a1)':{tag:'(0019,"SPI-P Release 1",a1)',vr:"US",name:"Rotation",vm:"1",version:"PrivateTag"},'(0021,"SPI-P Release 1",12)':{tag:'(0021,"SPI-P Release 1",12)',vr:"LT",name:"SeriesUniqueIdentifier",vm:"1",version:"PrivateTag"},'(0021,"SPI-P Release 1",14)':{tag:'(0021,"SPI-P Release 1",14)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",00)':{tag:'(0029,"SPI-P Release 1",00)',vr:"DS",name:"Unknown",vm:"4",version:"PrivateTag"},'(0029,"SPI-P Release 1",20)':{tag:'(0029,"SPI-P Release 1",20)',vr:"DS",name:"PixelAspectRatio",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",25)':{tag:'(0029,"SPI-P Release 1",25)',vr:"LO",name:"ProcessedPixelDataQuality",vm:"1-n",version:"PrivateTag"},'(0029,"SPI-P Release 1",30)':{tag:'(0029,"SPI-P Release 1",30)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",38)':{tag:'(0029,"SPI-P Release 1",38)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",60)':{tag:'(0029,"SPI-P Release 1",60)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",61)':{tag:'(0029,"SPI-P Release 1",61)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",67)':{tag:'(0029,"SPI-P Release 1",67)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",70)':{tag:'(0029,"SPI-P Release 1",70)',vr:"LT",name:"WindowID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",71)':{tag:'(0029,"SPI-P Release 1",71)',vr:"CS",name:"VideoInvertSubtracted",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",72)':{tag:'(0029,"SPI-P Release 1",72)',vr:"CS",name:"VideoInvertNonsubtracted",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",77)':{tag:'(0029,"SPI-P Release 1",77)',vr:"CS",name:"WindowSelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",78)':{tag:'(0029,"SPI-P Release 1",78)',vr:"LT",name:"ECGDisplayPrintingID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",79)':{tag:'(0029,"SPI-P Release 1",79)',vr:"CS",name:"ECGDisplayPrinting",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",7e)':{tag:'(0029,"SPI-P Release 1",7e)',vr:"CS",name:"ECGDisplayPrintingEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",7f)':{tag:'(0029,"SPI-P Release 1",7f)',vr:"CS",name:"ECGDisplayPrintingSelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",80)':{tag:'(0029,"SPI-P Release 1",80)',vr:"LT",name:"PhysiologicalDisplayID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",81)':{tag:'(0029,"SPI-P Release 1",81)',vr:"US",name:"PreferredPhysiologicalChannelDisplay",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",8e)':{tag:'(0029,"SPI-P Release 1",8e)',vr:"CS",name:"PhysiologicalDisplayEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",8f)':{tag:'(0029,"SPI-P Release 1",8f)',vr:"CS",name:"PhysiologicalDisplaySelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",c0)':{tag:'(0029,"SPI-P Release 1",c0)',vr:"LT",name:"FunctionalShutterID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",c1)':{tag:'(0029,"SPI-P Release 1",c1)',vr:"US",name:"FieldOfShutter",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",c5)':{tag:'(0029,"SPI-P Release 1",c5)',vr:"LT",name:"FieldOfShutterRectangle",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",ce)':{tag:'(0029,"SPI-P Release 1",ce)',vr:"CS",name:"ShutterEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1",cf)':{tag:'(0029,"SPI-P Release 1",cf)',vr:"CS",name:"ShutterSelectStatus",vm:"1",version:"PrivateTag"},'(7FE1,"SPI-P Release 1",10)':{tag:'(7FE1,"SPI-P Release 1",10)',vr:"ox",name:"PixelData",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1;1",c0)':{tag:'(0009,"SPI-P Release 1;1",c0)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P Release 1;1",c1)':{tag:'(0009,"SPI-P Release 1;1",c1)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",00)':{tag:'(0019,"SPI-P Release 1;1",00)',vr:"UN",name:"PhysiologicalDataType",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",01)':{tag:'(0019,"SPI-P Release 1;1",01)',vr:"UN",name:"PhysiologicalDataChannelAndKind",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",02)':{tag:'(0019,"SPI-P Release 1;1",02)',vr:"US",name:"SampleBitsAllocated",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",03)':{tag:'(0019,"SPI-P Release 1;1",03)',vr:"US",name:"SampleBitsStored",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",04)':{tag:'(0019,"SPI-P Release 1;1",04)',vr:"US",name:"SampleHighBit",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",05)':{tag:'(0019,"SPI-P Release 1;1",05)',vr:"US",name:"SampleRepresentation",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",06)':{tag:'(0019,"SPI-P Release 1;1",06)',vr:"UN",name:"SmallestSampleValue",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",07)':{tag:'(0019,"SPI-P Release 1;1",07)',vr:"UN",name:"LargestSampleValue",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",08)':{tag:'(0019,"SPI-P Release 1;1",08)',vr:"UN",name:"NumberOfSamples",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",09)':{tag:'(0019,"SPI-P Release 1;1",09)',vr:"UN",name:"SampleData",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",0a)':{tag:'(0019,"SPI-P Release 1;1",0a)',vr:"UN",name:"SampleRate",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",10)':{tag:'(0019,"SPI-P Release 1;1",10)',vr:"UN",name:"PhysiologicalDataType2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",11)':{tag:'(0019,"SPI-P Release 1;1",11)',vr:"UN",name:"PhysiologicalDataChannelAndKind2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",12)':{tag:'(0019,"SPI-P Release 1;1",12)',vr:"US",name:"SampleBitsAllocated2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",13)':{tag:'(0019,"SPI-P Release 1;1",13)',vr:"US",name:"SampleBitsStored2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",14)':{tag:'(0019,"SPI-P Release 1;1",14)',vr:"US",name:"SampleHighBit2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",15)':{tag:'(0019,"SPI-P Release 1;1",15)',vr:"US",name:"SampleRepresentation2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",16)':{tag:'(0019,"SPI-P Release 1;1",16)',vr:"UN",name:"SmallestSampleValue2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",17)':{tag:'(0019,"SPI-P Release 1;1",17)',vr:"UN",name:"LargestSampleValue2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",18)':{tag:'(0019,"SPI-P Release 1;1",18)',vr:"UN",name:"NumberOfSamples2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",19)':{tag:'(0019,"SPI-P Release 1;1",19)',vr:"UN",name:"SampleData2",vm:"1",version:"PrivateTag"},'(0019,"SPI-P Release 1;1",1a)':{tag:'(0019,"SPI-P Release 1;1",1a)',vr:"UN",name:"SampleRate2",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",00)':{tag:'(0029,"SPI-P Release 1;1",00)',vr:"LT",name:"ZoomID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",01)':{tag:'(0029,"SPI-P Release 1;1",01)',vr:"DS",name:"ZoomRectangle",vm:"1-n",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",03)':{tag:'(0029,"SPI-P Release 1;1",03)',vr:"DS",name:"ZoomFactor",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",04)':{tag:'(0029,"SPI-P Release 1;1",04)',vr:"US",name:"ZoomFunction",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",0e)':{tag:'(0029,"SPI-P Release 1;1",0e)',vr:"CS",name:"ZoomEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",0f)':{tag:'(0029,"SPI-P Release 1;1",0f)',vr:"CS",name:"ZoomSelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",40)':{tag:'(0029,"SPI-P Release 1;1",40)',vr:"LT",name:"MagnifyingGlassID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",41)':{tag:'(0029,"SPI-P Release 1;1",41)',vr:"DS",name:"MagnifyingGlassRectangle",vm:"1-n",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",43)':{tag:'(0029,"SPI-P Release 1;1",43)',vr:"DS",name:"MagnifyingGlassFactor",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",44)':{tag:'(0029,"SPI-P Release 1;1",44)',vr:"US",name:"MagnifyingGlassFunction",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",4e)':{tag:'(0029,"SPI-P Release 1;1",4e)',vr:"CS",name:"MagnifyingGlassEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;1",4f)':{tag:'(0029,"SPI-P Release 1;1",4f)',vr:"CS",name:"MagnifyingGlassSelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;2",00)':{tag:'(0029,"SPI-P Release 1;2",00)',vr:"LT",name:"SubtractionMaskID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;2",04)':{tag:'(0029,"SPI-P Release 1;2",04)',vr:"UN",name:"MaskingFunction",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;2",0c)':{tag:'(0029,"SPI-P Release 1;2",0c)',vr:"UN",name:"ProprietaryMaskingParameters",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;2",1e)':{tag:'(0029,"SPI-P Release 1;2",1e)',vr:"CS",name:"SubtractionMaskEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;2",1f)':{tag:'(0029,"SPI-P Release 1;2",1f)',vr:"CS",name:"SubtractionMaskSelectStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",00)':{tag:'(0029,"SPI-P Release 1;3",00)',vr:"LT",name:"ImageEnhancementID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",01)':{tag:'(0029,"SPI-P Release 1;3",01)',vr:"LT",name:"ImageEnhancement",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",02)':{tag:'(0029,"SPI-P Release 1;3",02)',vr:"LT",name:"ConvolutionID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",03)':{tag:'(0029,"SPI-P Release 1;3",03)',vr:"LT",name:"ConvolutionType",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",04)':{tag:'(0029,"SPI-P Release 1;3",04)',vr:"LT",name:"ConvolutionKernelSizeID",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",05)':{tag:'(0029,"SPI-P Release 1;3",05)',vr:"US",name:"ConvolutionKernelSize",vm:"2",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",06)':{tag:'(0029,"SPI-P Release 1;3",06)',vr:"US",name:"ConvolutionKernel",vm:"1-n",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",0c)':{tag:'(0029,"SPI-P Release 1;3",0c)',vr:"DS",name:"EnhancementGain",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",1e)':{tag:'(0029,"SPI-P Release 1;3",1e)',vr:"CS",name:"ImageEnhancementEnableStatus",vm:"1",version:"PrivateTag"},'(0029,"SPI-P Release 1;3",1f)':{tag:'(0029,"SPI-P Release 1;3",1f)',vr:"CS",name:"ImageEnhancementSelectStatus",vm:"1",version:"PrivateTag"},'(0011,"SPI-P Release 2;1",18)':{tag:'(0011,"SPI-P Release 2;1",18)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0023,"SPI-P Release 2;1",0d)':{tag:'(0023,"SPI-P Release 2;1",0d)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(0023,"SPI-P Release 2;1",0e)':{tag:'(0023,"SPI-P Release 2;1",0e)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",00)':{tag:'(0009,"SPI-P-GV-CT Release 1",00)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",10)':{tag:'(0009,"SPI-P-GV-CT Release 1",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",20)':{tag:'(0009,"SPI-P-GV-CT Release 1",20)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",30)':{tag:'(0009,"SPI-P-GV-CT Release 1",30)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",40)':{tag:'(0009,"SPI-P-GV-CT Release 1",40)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",50)':{tag:'(0009,"SPI-P-GV-CT Release 1",50)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",60)':{tag:'(0009,"SPI-P-GV-CT Release 1",60)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",70)':{tag:'(0009,"SPI-P-GV-CT Release 1",70)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",75)':{tag:'(0009,"SPI-P-GV-CT Release 1",75)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",80)':{tag:'(0009,"SPI-P-GV-CT Release 1",80)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"SPI-P-GV-CT Release 1",90)':{tag:'(0009,"SPI-P-GV-CT Release 1",90)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",08)':{tag:'(0019,"SPI-P-GV-CT Release 1",08)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",09)':{tag:'(0019,"SPI-P-GV-CT Release 1",09)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",0a)':{tag:'(0019,"SPI-P-GV-CT Release 1",0a)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",10)':{tag:'(0019,"SPI-P-GV-CT Release 1",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",20)':{tag:'(0019,"SPI-P-GV-CT Release 1",20)',vr:"TM",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",50)':{tag:'(0019,"SPI-P-GV-CT Release 1",50)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",60)':{tag:'(0019,"SPI-P-GV-CT Release 1",60)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",61)':{tag:'(0019,"SPI-P-GV-CT Release 1",61)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",63)':{tag:'(0019,"SPI-P-GV-CT Release 1",63)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",64)':{tag:'(0019,"SPI-P-GV-CT Release 1",64)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",65)':{tag:'(0019,"SPI-P-GV-CT Release 1",65)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",70)':{tag:'(0019,"SPI-P-GV-CT Release 1",70)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",80)':{tag:'(0019,"SPI-P-GV-CT Release 1",80)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",81)':{tag:'(0019,"SPI-P-GV-CT Release 1",81)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",90)':{tag:'(0019,"SPI-P-GV-CT Release 1",90)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",a0)':{tag:'(0019,"SPI-P-GV-CT Release 1",a0)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",a1)':{tag:'(0019,"SPI-P-GV-CT Release 1",a1)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",a2)':{tag:'(0019,"SPI-P-GV-CT Release 1",a2)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",a3)':{tag:'(0019,"SPI-P-GV-CT Release 1",a3)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",b0)':{tag:'(0019,"SPI-P-GV-CT Release 1",b0)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-GV-CT Release 1",b1)':{tag:'(0019,"SPI-P-GV-CT Release 1",b1)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",20)':{tag:'(0021,"SPI-P-GV-CT Release 1",20)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",30)':{tag:'(0021,"SPI-P-GV-CT Release 1",30)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",40)':{tag:'(0021,"SPI-P-GV-CT Release 1",40)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",50)':{tag:'(0021,"SPI-P-GV-CT Release 1",50)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",60)':{tag:'(0021,"SPI-P-GV-CT Release 1",60)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",70)':{tag:'(0021,"SPI-P-GV-CT Release 1",70)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",80)':{tag:'(0021,"SPI-P-GV-CT Release 1",80)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",90)':{tag:'(0021,"SPI-P-GV-CT Release 1",90)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",a0)':{tag:'(0021,"SPI-P-GV-CT Release 1",a0)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",a1)':{tag:'(0021,"SPI-P-GV-CT Release 1",a1)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",a2)':{tag:'(0021,"SPI-P-GV-CT Release 1",a2)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",a3)':{tag:'(0021,"SPI-P-GV-CT Release 1",a3)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",a4)':{tag:'(0021,"SPI-P-GV-CT Release 1",a4)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",b0)':{tag:'(0021,"SPI-P-GV-CT Release 1",b0)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-GV-CT Release 1",c0)':{tag:'(0021,"SPI-P-GV-CT Release 1",c0)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",10)':{tag:'(0029,"SPI-P-GV-CT Release 1",10)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",30)':{tag:'(0029,"SPI-P-GV-CT Release 1",30)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",31)':{tag:'(0029,"SPI-P-GV-CT Release 1",31)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",32)':{tag:'(0029,"SPI-P-GV-CT Release 1",32)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",33)':{tag:'(0029,"SPI-P-GV-CT Release 1",33)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",80)':{tag:'(0029,"SPI-P-GV-CT Release 1",80)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",90)':{tag:'(0029,"SPI-P-GV-CT Release 1",90)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",d0)':{tag:'(0029,"SPI-P-GV-CT Release 1",d0)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-GV-CT Release 1",d1)':{tag:'(0029,"SPI-P-GV-CT Release 1",d1)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-PCR Release 2",30)':{tag:'(0019,"SPI-P-PCR Release 2",30)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-Private-CWS Release 1",00)':{tag:'(0021,"SPI-P-Private-CWS Release 1",00)',vr:"LT",name:"WindowOfImagesID",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-Private-CWS Release 1",01)':{tag:'(0021,"SPI-P-Private-CWS Release 1",01)',vr:"CS",name:"WindowOfImagesType",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-Private-CWS Release 1",02)':{tag:'(0021,"SPI-P-Private-CWS Release 1",02)',vr:"IS",name:"WindowOfImagesScope",vm:"1-n",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",10)':{tag:'(0019,"SPI-P-Private-DCI Release 1",10)',vr:"UN",name:"ECGTimeMapDataBitsAllocated",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",11)':{tag:'(0019,"SPI-P-Private-DCI Release 1",11)',vr:"UN",name:"ECGTimeMapDataBitsStored",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",12)':{tag:'(0019,"SPI-P-Private-DCI Release 1",12)',vr:"UN",name:"ECGTimeMapDataHighBit",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",13)':{tag:'(0019,"SPI-P-Private-DCI Release 1",13)',vr:"UN",name:"ECGTimeMapDataRepresentation",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",14)':{tag:'(0019,"SPI-P-Private-DCI Release 1",14)',vr:"UN",name:"ECGTimeMapDataSmallestDataValue",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",15)':{tag:'(0019,"SPI-P-Private-DCI Release 1",15)',vr:"UN",name:"ECGTimeMapDataLargestDataValue",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",16)':{tag:'(0019,"SPI-P-Private-DCI Release 1",16)',vr:"UN",name:"ECGTimeMapDataNumberOfDataValues",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private-DCI Release 1",17)':{tag:'(0019,"SPI-P-Private-DCI Release 1",17)',vr:"UN",name:"ECGTimeMapData",vm:"1",version:"PrivateTag"},'(0021,"SPI-P-Private_CDS Release 1",40)':{tag:'(0021,"SPI-P-Private_CDS Release 1",40)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_CDS Release 1",00)':{tag:'(0029,"SPI-P-Private_CDS Release 1",00)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private_ICS Release 1",30)':{tag:'(0019,"SPI-P-Private_ICS Release 1",30)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-Private_ICS Release 1",31)':{tag:'(0019,"SPI-P-Private_ICS Release 1",31)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",08)':{tag:'(0029,"SPI-P-Private_ICS Release 1",08)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",0f)':{tag:'(0029,"SPI-P-Private_ICS Release 1",0f)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",10)':{tag:'(0029,"SPI-P-Private_ICS Release 1",10)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",1b)':{tag:'(0029,"SPI-P-Private_ICS Release 1",1b)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",1c)':{tag:'(0029,"SPI-P-Private_ICS Release 1",1c)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",21)':{tag:'(0029,"SPI-P-Private_ICS Release 1",21)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",43)':{tag:'(0029,"SPI-P-Private_ICS Release 1",43)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",44)':{tag:'(0029,"SPI-P-Private_ICS Release 1",44)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",4C)':{tag:'(0029,"SPI-P-Private_ICS Release 1",4C)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",67)':{tag:'(0029,"SPI-P-Private_ICS Release 1",67)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",68)':{tag:'(0029,"SPI-P-Private_ICS Release 1",68)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",6A)':{tag:'(0029,"SPI-P-Private_ICS Release 1",6A)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1",6B)':{tag:'(0029,"SPI-P-Private_ICS Release 1",6B)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",00)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",00)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",05)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",05)',vr:"FL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",06)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",06)',vr:"FL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",20)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",20)',vr:"FL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",21)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",21)',vr:"FL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;1",CD)':{tag:'(0029,"SPI-P-Private_ICS Release 1;1",CD)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",00)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",00)',vr:"FD",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",01)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",01)',vr:"FD",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",02)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",02)',vr:"FD",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",03)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",03)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",04)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",04)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;2",05)':{tag:'(0029,"SPI-P-Private_ICS Release 1;2",05)',vr:"SL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C0)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C0)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C1)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C1)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C2)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C2)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C3)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C3)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C4)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C4)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;3",C5)':{tag:'(0029,"SPI-P-Private_ICS Release 1;3",C5)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;4",02)':{tag:'(0029,"SPI-P-Private_ICS Release 1;4",02)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;4",9A)':{tag:'(0029,"SPI-P-Private_ICS Release 1;4",9A)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;4",E0)':{tag:'(0029,"SPI-P-Private_ICS Release 1;4",E0)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;5",50)':{tag:'(0029,"SPI-P-Private_ICS Release 1;5",50)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"SPI-P-Private_ICS Release 1;5",55)':{tag:'(0029,"SPI-P-Private_ICS Release 1;5",55)',vr:"CS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-XSB-DCI Release 1",10)':{tag:'(0019,"SPI-P-XSB-DCI Release 1",10)',vr:"LT",name:"VideoBeamBoost",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-XSB-DCI Release 1",11)':{tag:'(0019,"SPI-P-XSB-DCI Release 1",11)',vr:"US",name:"ChannelGeneratingVideoSync",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-XSB-DCI Release 1",12)':{tag:'(0019,"SPI-P-XSB-DCI Release 1",12)',vr:"US",name:"VideoGain",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-XSB-DCI Release 1",13)':{tag:'(0019,"SPI-P-XSB-DCI Release 1",13)',vr:"US",name:"VideoOffset",vm:"1",version:"PrivateTag"},'(0019,"SPI-P-XSB-DCI Release 1",20)':{tag:'(0019,"SPI-P-XSB-DCI Release 1",20)',vr:"DS",name:"RTDDataCompressionFactor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",11)':{tag:'(0029,"Silhouette Annot V1.0",11)',vr:"IS",name:"AnnotationName",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",12)':{tag:'(0029,"Silhouette Annot V1.0",12)',vr:"LT",name:"AnnotationFont",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",13)':{tag:'(0029,"Silhouette Annot V1.0",13)',vr:"LT",name:"AnnotationTextForegroundColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",14)':{tag:'(0029,"Silhouette Annot V1.0",14)',vr:"LT",name:"AnnotationTextBackgroundColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",15)':{tag:'(0029,"Silhouette Annot V1.0",15)',vr:"UL",name:"AnnotationTextBackingMode",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",16)':{tag:'(0029,"Silhouette Annot V1.0",16)',vr:"UL",name:"AnnotationTextJustification",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",17)':{tag:'(0029,"Silhouette Annot V1.0",17)',vr:"UL",name:"AnnotationTextLocation",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",18)':{tag:'(0029,"Silhouette Annot V1.0",18)',vr:"LT",name:"AnnotationTextString",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",19)':{tag:'(0029,"Silhouette Annot V1.0",19)',vr:"UL",name:"AnnotationTextAttachMode",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",20)':{tag:'(0029,"Silhouette Annot V1.0",20)',vr:"UL",name:"AnnotationTextCursorMode",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",21)':{tag:'(0029,"Silhouette Annot V1.0",21)',vr:"UL",name:"AnnotationTextShadowOffsetX",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",22)':{tag:'(0029,"Silhouette Annot V1.0",22)',vr:"UL",name:"AnnotationTextShadowOffsetY",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",23)':{tag:'(0029,"Silhouette Annot V1.0",23)',vr:"LT",name:"AnnotationLineColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",24)':{tag:'(0029,"Silhouette Annot V1.0",24)',vr:"UL",name:"AnnotationLineThickness",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",25)':{tag:'(0029,"Silhouette Annot V1.0",25)',vr:"UL",name:"AnnotationLineType",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",26)':{tag:'(0029,"Silhouette Annot V1.0",26)',vr:"UL",name:"AnnotationLineStyle",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",27)':{tag:'(0029,"Silhouette Annot V1.0",27)',vr:"UL",name:"AnnotationLineDashLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",28)':{tag:'(0029,"Silhouette Annot V1.0",28)',vr:"UL",name:"AnnotationLineAttachMode",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",29)':{tag:'(0029,"Silhouette Annot V1.0",29)',vr:"UL",name:"AnnotationLinePointCount",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",30)':{tag:'(0029,"Silhouette Annot V1.0",30)',vr:"FD",name:"AnnotationLinePoints",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",31)':{tag:'(0029,"Silhouette Annot V1.0",31)',vr:"UL",name:"AnnotationLineControlSize",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",32)':{tag:'(0029,"Silhouette Annot V1.0",32)',vr:"LT",name:"AnnotationMarkerColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",33)':{tag:'(0029,"Silhouette Annot V1.0",33)',vr:"UL",name:"AnnotationMarkerType",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",34)':{tag:'(0029,"Silhouette Annot V1.0",34)',vr:"UL",name:"AnnotationMarkerSize",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",35)':{tag:'(0029,"Silhouette Annot V1.0",35)',vr:"FD",name:"AnnotationMarkerLocation",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",36)':{tag:'(0029,"Silhouette Annot V1.0",36)',vr:"UL",name:"AnnotationMarkerAttachMode",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",37)':{tag:'(0029,"Silhouette Annot V1.0",37)',vr:"LT",name:"AnnotationGeomColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",38)':{tag:'(0029,"Silhouette Annot V1.0",38)',vr:"UL",name:"AnnotationGeomThickness",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",39)':{tag:'(0029,"Silhouette Annot V1.0",39)',vr:"UL",name:"AnnotationGeomLineStyle",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",40)':{tag:'(0029,"Silhouette Annot V1.0",40)',vr:"UL",name:"AnnotationGeomDashLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",41)':{tag:'(0029,"Silhouette Annot V1.0",41)',vr:"UL",name:"AnnotationGeomFillPattern",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",42)':{tag:'(0029,"Silhouette Annot V1.0",42)',vr:"UL",name:"AnnotationInteractivity",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",43)':{tag:'(0029,"Silhouette Annot V1.0",43)',vr:"FD",name:"AnnotationArrowLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",44)':{tag:'(0029,"Silhouette Annot V1.0",44)',vr:"FD",name:"AnnotationArrowAngle",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Annot V1.0",45)':{tag:'(0029,"Silhouette Annot V1.0",45)',vr:"UL",name:"AnnotationDontSave",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Graphics Export V1.0",00)':{tag:'(0029,"Silhouette Graphics Export V1.0",00)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",11)':{tag:'(0029,"Silhouette Line V1.0",11)',vr:"IS",name:"LineName",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",12)':{tag:'(0029,"Silhouette Line V1.0",12)',vr:"LT",name:"LineNameFont",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",13)':{tag:'(0029,"Silhouette Line V1.0",13)',vr:"UL",name:"LineNameDisplay",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",14)':{tag:'(0029,"Silhouette Line V1.0",14)',vr:"LT",name:"LineNormalColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",15)':{tag:'(0029,"Silhouette Line V1.0",15)',vr:"UL",name:"LineType",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",16)':{tag:'(0029,"Silhouette Line V1.0",16)',vr:"UL",name:"LineThickness",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",17)':{tag:'(0029,"Silhouette Line V1.0",17)',vr:"UL",name:"LineStyle",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",18)':{tag:'(0029,"Silhouette Line V1.0",18)',vr:"UL",name:"LineDashLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",19)':{tag:'(0029,"Silhouette Line V1.0",19)',vr:"UL",name:"LineInteractivity",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",20)':{tag:'(0029,"Silhouette Line V1.0",20)',vr:"LT",name:"LineMeasurementColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",21)':{tag:'(0029,"Silhouette Line V1.0",21)',vr:"LT",name:"LineMeasurementFont",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",22)':{tag:'(0029,"Silhouette Line V1.0",22)',vr:"UL",name:"LineMeasurementDashLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",23)':{tag:'(0029,"Silhouette Line V1.0",23)',vr:"UL",name:"LinePointSpace",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",24)':{tag:'(0029,"Silhouette Line V1.0",24)',vr:"FD",name:"LinePoints",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",25)':{tag:'(0029,"Silhouette Line V1.0",25)',vr:"UL",name:"LineControlPointSize",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",26)':{tag:'(0029,"Silhouette Line V1.0",26)',vr:"UL",name:"LineControlPointSpace",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",27)':{tag:'(0029,"Silhouette Line V1.0",27)',vr:"FD",name:"LineControlPoints",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",28)':{tag:'(0029,"Silhouette Line V1.0",28)',vr:"LT",name:"LineLabel",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Line V1.0",29)':{tag:'(0029,"Silhouette Line V1.0",29)',vr:"UL",name:"LineDontSave",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",11)':{tag:'(0029,"Silhouette ROI V1.0",11)',vr:"IS",name:"ROIName",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",12)':{tag:'(0029,"Silhouette ROI V1.0",12)',vr:"LT",name:"ROINameFont",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",13)':{tag:'(0029,"Silhouette ROI V1.0",13)',vr:"LT",name:"ROINormalColor",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",14)':{tag:'(0029,"Silhouette ROI V1.0",14)',vr:"UL",name:"ROIFillPattern",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",15)':{tag:'(0029,"Silhouette ROI V1.0",15)',vr:"UL",name:"ROIBpSeg",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",16)':{tag:'(0029,"Silhouette ROI V1.0",16)',vr:"UN",name:"ROIBpSegPairs",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",17)':{tag:'(0029,"Silhouette ROI V1.0",17)',vr:"UL",name:"ROISeedSpace",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",18)':{tag:'(0029,"Silhouette ROI V1.0",18)',vr:"UN",name:"ROISeeds",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",19)':{tag:'(0029,"Silhouette ROI V1.0",19)',vr:"UL",name:"ROILineThickness",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",20)':{tag:'(0029,"Silhouette ROI V1.0",20)',vr:"UL",name:"ROILineStyle",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",21)':{tag:'(0029,"Silhouette ROI V1.0",21)',vr:"UL",name:"ROILineDashLength",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",22)':{tag:'(0029,"Silhouette ROI V1.0",22)',vr:"UL",name:"ROIInteractivity",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",23)':{tag:'(0029,"Silhouette ROI V1.0",23)',vr:"UL",name:"ROINamePosition",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",24)':{tag:'(0029,"Silhouette ROI V1.0",24)',vr:"UL",name:"ROINameDisplay",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",25)':{tag:'(0029,"Silhouette ROI V1.0",25)',vr:"LT",name:"ROILabel",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",26)':{tag:'(0029,"Silhouette ROI V1.0",26)',vr:"UL",name:"ROIShape",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",27)':{tag:'(0029,"Silhouette ROI V1.0",27)',vr:"FD",name:"ROIShapeTilt",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",28)':{tag:'(0029,"Silhouette ROI V1.0",28)',vr:"UL",name:"ROIShapePointsCount",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",29)':{tag:'(0029,"Silhouette ROI V1.0",29)',vr:"UL",name:"ROIShapePointsSpace",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",30)':{tag:'(0029,"Silhouette ROI V1.0",30)',vr:"FD",name:"ROIShapePoints",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",31)':{tag:'(0029,"Silhouette ROI V1.0",31)',vr:"UL",name:"ROIShapeControlPointsCount",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",32)':{tag:'(0029,"Silhouette ROI V1.0",32)',vr:"UL",name:"ROIShapeControlPointsSpace",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",33)':{tag:'(0029,"Silhouette ROI V1.0",33)',vr:"FD",name:"ROIShapeControlPoints",vm:"1",version:"PrivateTag"},'(0029,"Silhouette ROI V1.0",34)':{tag:'(0029,"Silhouette ROI V1.0",34)',vr:"UL",name:"ROIDontSave",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Sequence Ids V1.0",41)':{tag:'(0029,"Silhouette Sequence Ids V1.0",41)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Sequence Ids V1.0",42)':{tag:'(0029,"Silhouette Sequence Ids V1.0",42)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette Sequence Ids V1.0",43)':{tag:'(0029,"Silhouette Sequence Ids V1.0",43)',vr:"SQ",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",13)':{tag:'(0029,"Silhouette V1.0",13)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",14)':{tag:'(0029,"Silhouette V1.0",14)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",17)':{tag:'(0029,"Silhouette V1.0",17)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",18)':{tag:'(0029,"Silhouette V1.0",18)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",19)':{tag:'(0029,"Silhouette V1.0",19)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",1a)':{tag:'(0029,"Silhouette V1.0",1a)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",1b)':{tag:'(0029,"Silhouette V1.0",1b)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",1c)':{tag:'(0029,"Silhouette V1.0",1c)',vr:"UL",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",1d)':{tag:'(0029,"Silhouette V1.0",1d)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",1e)':{tag:'(0029,"Silhouette V1.0",1e)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",21)':{tag:'(0029,"Silhouette V1.0",21)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",22)':{tag:'(0029,"Silhouette V1.0",22)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",23)':{tag:'(0029,"Silhouette V1.0",23)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",24)':{tag:'(0029,"Silhouette V1.0",24)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",25)':{tag:'(0029,"Silhouette V1.0",25)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",27)':{tag:'(0029,"Silhouette V1.0",27)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",28)':{tag:'(0029,"Silhouette V1.0",28)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",29)':{tag:'(0029,"Silhouette V1.0",29)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",30)':{tag:'(0029,"Silhouette V1.0",30)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",52)':{tag:'(0029,"Silhouette V1.0",52)',vr:"US",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",53)':{tag:'(0029,"Silhouette V1.0",53)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",54)':{tag:'(0029,"Silhouette V1.0",54)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",55)':{tag:'(0029,"Silhouette V1.0",55)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",56)':{tag:'(0029,"Silhouette V1.0",56)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0029,"Silhouette V1.0",57)':{tag:'(0029,"Silhouette V1.0",57)',vr:"UN",name:"Unknown",vm:"1",version:"PrivateTag"},'(0135,"SONOWAND AS",10)':{tag:'(0135,"SONOWAND AS",10)',vr:"LO",name:"UltrasoundScannerName",vm:"1",version:"PrivateTag"},'(0135,"SONOWAND AS",11)':{tag:'(0135,"SONOWAND AS",11)',vr:"LO",name:"TransducerSerial",vm:"1",version:"PrivateTag"},'(0135,"SONOWAND AS",12)':{tag:'(0135,"SONOWAND AS",12)',vr:"LO",name:"ProbeApplication",vm:"1",version:"PrivateTag"},'(0017,"SVISION",00)':{tag:'(0017,"SVISION",00)',vr:"LO",name:"ExtendedBodyPart",vm:"1",version:"PrivateTag"},'(0017,"SVISION",10)':{tag:'(0017,"SVISION",10)',vr:"LO",name:"ExtendedViewPosition",vm:"1",version:"PrivateTag"},'(0017,"SVISION",F0)':{tag:'(0017,"SVISION",F0)',vr:"IS",name:"ImagesSOPClass",vm:"1",version:"PrivateTag"},'(0019,"SVISION",00)':{tag:'(0019,"SVISION",00)',vr:"IS",name:"AECField",vm:"1",version:"PrivateTag"},'(0019,"SVISION",01)':{tag:'(0019,"SVISION",01)',vr:"IS",name:"AECFilmScreen",vm:"1",version:"PrivateTag"},'(0019,"SVISION",02)':{tag:'(0019,"SVISION",02)',vr:"IS",name:"AECDensity",vm:"1",version:"PrivateTag"},'(0019,"SVISION",10)':{tag:'(0019,"SVISION",10)',vr:"IS",name:"PatientThickness",vm:"1",version:"PrivateTag"},'(0019,"SVISION",18)':{tag:'(0019,"SVISION",18)',vr:"IS",name:"BeamDistance",vm:"1",version:"PrivateTag"},'(0019,"SVISION",20)':{tag:'(0019,"SVISION",20)',vr:"IS",name:"WorkstationNumber",vm:"1",version:"PrivateTag"},'(0019,"SVISION",28)':{tag:'(0019,"SVISION",28)',vr:"IS",name:"TubeNumber",vm:"1",version:"PrivateTag"},'(0019,"SVISION",30)':{tag:'(0019,"SVISION",30)',vr:"IS",name:"BuckyGrid",vm:"1",version:"PrivateTag"},'(0019,"SVISION",34)':{tag:'(0019,"SVISION",34)',vr:"IS",name:"Focus",vm:"1",version:"PrivateTag"},'(0019,"SVISION",38)':{tag:'(0019,"SVISION",38)',vr:"IS",name:"Child",vm:"1",version:"PrivateTag"},'(0019,"SVISION",40)':{tag:'(0019,"SVISION",40)',vr:"IS",name:"CollimatorDistanceX",vm:"1",version:"PrivateTag"},'(0019,"SVISION",41)':{tag:'(0019,"SVISION",41)',vr:"IS",name:"CollimatorDistanceY",vm:"1",version:"PrivateTag"},'(0019,"SVISION",50)':{tag:'(0019,"SVISION",50)',vr:"IS",name:"CentralBeamHeight",vm:"1",version:"PrivateTag"},'(0019,"SVISION",60)':{tag:'(0019,"SVISION",60)',vr:"IS",name:"BuckyAngle",vm:"1",version:"PrivateTag"},'(0019,"SVISION",68)':{tag:'(0019,"SVISION",68)',vr:"IS",name:"CArmAngle",vm:"1",version:"PrivateTag"},'(0019,"SVISION",69)':{tag:'(0019,"SVISION",69)',vr:"IS",name:"CollimatorAngle",vm:"1",version:"PrivateTag"},'(0019,"SVISION",70)':{tag:'(0019,"SVISION",70)',vr:"IS",name:"FilterNumber",vm:"1",version:"PrivateTag"},'(0019,"SVISION",74)':{tag:'(0019,"SVISION",74)',vr:"LO",name:"FilterMaterial1",vm:"1",version:"PrivateTag"},'(0019,"SVISION",75)':{tag:'(0019,"SVISION",75)',vr:"LO",name:"FilterMaterial2",vm:"1",version:"PrivateTag"},'(0019,"SVISION",78)':{tag:'(0019,"SVISION",78)',vr:"DS",name:"FilterThickness1",vm:"1",version:"PrivateTag"},'(0019,"SVISION",79)':{tag:'(0019,"SVISION",79)',vr:"DS",name:"FilterThickness2",vm:"1",version:"PrivateTag"},'(0019,"SVISION",80)':{tag:'(0019,"SVISION",80)',vr:"IS",name:"BuckyFormat",vm:"1",version:"PrivateTag"},'(0019,"SVISION",81)':{tag:'(0019,"SVISION",81)',vr:"IS",name:"ObjectPosition",vm:"1",version:"PrivateTag"},'(0019,"SVISION",90)':{tag:'(0019,"SVISION",90)',vr:"LO",name:"DeskCommand",vm:"1",version:"PrivateTag"},'(0019,"SVISION",A0)':{tag:'(0019,"SVISION",A0)',vr:"DS",name:"ExtendedExposureTime",vm:"1",version:"PrivateTag"},'(0019,"SVISION",A1)':{tag:'(0019,"SVISION",A1)',vr:"DS",name:"ActualExposureTime",vm:"1",version:"PrivateTag"},'(0019,"SVISION",A8)':{tag:'(0019,"SVISION",A8)',vr:"DS",name:"ExtendedXRayTubeCurrent",vm:"1",version:"PrivateTag"},'(0021,"SVISION",00)':{tag:'(0021,"SVISION",00)',vr:"DS",name:"NoiseReduction",vm:"1",version:"PrivateTag"},'(0021,"SVISION",01)':{tag:'(0021,"SVISION",01)',vr:"DS",name:"ContrastAmplification",vm:"1",version:"PrivateTag"},'(0021,"SVISION",02)':{tag:'(0021,"SVISION",02)',vr:"DS",name:"EdgeContrastBoosting",vm:"1",version:"PrivateTag"},'(0021,"SVISION",03)':{tag:'(0021,"SVISION",03)',vr:"DS",name:"LatitudeReduction",vm:"1",version:"PrivateTag"},'(0021,"SVISION",10)':{tag:'(0021,"SVISION",10)',vr:"LO",name:"FindRangeAlgorithm",vm:"1",version:"PrivateTag"},'(0021,"SVISION",11)':{tag:'(0021,"SVISION",11)',vr:"DS",name:"ThresholdCAlgorithm",vm:"1",version:"PrivateTag"},'(0021,"SVISION",20)':{tag:'(0021,"SVISION",20)',vr:"LO",name:"SensometricCurve",vm:"1",version:"PrivateTag"},'(0021,"SVISION",30)':{tag:'(0021,"SVISION",30)',vr:"DS",name:"LowerWindowOffset",vm:"1",version:"PrivateTag"},'(0021,"SVISION",31)':{tag:'(0021,"SVISION",31)',vr:"DS",name:"UpperWindowOffset",vm:"1",version:"PrivateTag"},'(0021,"SVISION",40)':{tag:'(0021,"SVISION",40)',vr:"DS",name:"MinPrintableDensity",vm:"1",version:"PrivateTag"},'(0021,"SVISION",41)':{tag:'(0021,"SVISION",41)',vr:"DS",name:"MaxPrintableDensity",vm:"1",version:"PrivateTag"},'(0021,"SVISION",90)':{tag:'(0021,"SVISION",90)',vr:"DS",name:"Brightness",vm:"1",version:"PrivateTag"},'(0021,"SVISION",91)':{tag:'(0021,"SVISION",91)',vr:"DS",name:"Contrast",vm:"1",version:"PrivateTag"},'(0021,"SVISION",92)':{tag:'(0021,"SVISION",92)',vr:"DS",name:"ShapeFactor",vm:"1",version:"PrivateTag"},'(0023,"SVISION",00)':{tag:'(0023,"SVISION",00)',vr:"LO",name:"ImageLaterality",vm:"1",version:"PrivateTag"},'(0023,"SVISION",01)':{tag:'(0023,"SVISION",01)',vr:"IS",name:"LetterPosition",vm:"1",version:"PrivateTag"},'(0023,"SVISION",02)':{tag:'(0023,"SVISION",02)',vr:"IS",name:"BurnedInAnnotation",vm:"1",version:"PrivateTag"},'(0023,"SVISION",03)':{tag:'(0023,"SVISION",03)',vr:"LO",name:"Unknown",vm:"1",version:"PrivateTag"},'(0023,"SVISION",F0)':{tag:'(0023,"SVISION",F0)',vr:"IS",name:"ImageSOPClass",vm:"1",version:"PrivateTag"},'(0025,"SVISION",00)':{tag:'(0025,"SVISION",00)',vr:"IS",name:"OriginalImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",01)':{tag:'(0025,"SVISION",01)',vr:"IS",name:"NotProcessedImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",02)':{tag:'(0025,"SVISION",02)',vr:"IS",name:"CutOutImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",03)':{tag:'(0025,"SVISION",03)',vr:"IS",name:"DuplicatedImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",04)':{tag:'(0025,"SVISION",04)',vr:"IS",name:"StoredImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",05)':{tag:'(0025,"SVISION",05)',vr:"IS",name:"RetrievedImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",06)':{tag:'(0025,"SVISION",06)',vr:"IS",name:"RemoteImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",07)':{tag:'(0025,"SVISION",07)',vr:"IS",name:"MediaStoredImage",vm:"1",version:"PrivateTag"},'(0025,"SVISION",08)':{tag:'(0025,"SVISION",08)',vr:"IS",name:"ImageState",vm:"1",version:"PrivateTag"},'(0025,"SVISION",20)':{tag:'(0025,"SVISION",20)',vr:"LO",name:"SourceImageFile",vm:"1",version:"PrivateTag"},'(0025,"SVISION",21)':{tag:'(0025,"SVISION",21)',vr:"UI",name:"Unknown",vm:"1",version:"PrivateTag"},'(0027,"SVISION",00)':{tag:'(0027,"SVISION",00)',vr:"IS",name:"NumberOfSeries",vm:"1",version:"PrivateTag"},'(0027,"SVISION",01)':{tag:'(0027,"SVISION",01)',vr:"IS",name:"NumberOfStudies",vm:"1",version:"PrivateTag"},'(0027,"SVISION",10)':{tag:'(0027,"SVISION",10)',vr:"DT",name:"OldestSeries",vm:"1",version:"PrivateTag"},'(0027,"SVISION",11)':{tag:'(0027,"SVISION",11)',vr:"DT",name:"NewestSeries",vm:"1",version:"PrivateTag"},'(0027,"SVISION",12)':{tag:'(0027,"SVISION",12)',vr:"DT",name:"OldestStudy",vm:"1",version:"PrivateTag"},'(0027,"SVISION",13)':{tag:'(0027,"SVISION",13)',vr:"DT",name:"NewestStudy",vm:"1",version:"PrivateTag"},'(0009,"TOSHIBA_MEC_1.0",01)':{tag:'(0009,"TOSHIBA_MEC_1.0",01)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0009,"TOSHIBA_MEC_1.0",02)':{tag:'(0009,"TOSHIBA_MEC_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0009,"TOSHIBA_MEC_1.0",03)':{tag:'(0009,"TOSHIBA_MEC_1.0",03)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0009,"TOSHIBA_MEC_1.0",04)':{tag:'(0009,"TOSHIBA_MEC_1.0",04)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0011,"TOSHIBA_MEC_1.0",01)':{tag:'(0011,"TOSHIBA_MEC_1.0",01)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0011,"TOSHIBA_MEC_1.0",02)':{tag:'(0011,"TOSHIBA_MEC_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_1.0",01)':{tag:'(0019,"TOSHIBA_MEC_1.0",01)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_1.0",02)':{tag:'(0019,"TOSHIBA_MEC_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"TOSHIBA_MEC_1.0",01)':{tag:'(0021,"TOSHIBA_MEC_1.0",01)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"TOSHIBA_MEC_1.0",02)':{tag:'(0021,"TOSHIBA_MEC_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0021,"TOSHIBA_MEC_1.0",03)':{tag:'(0021,"TOSHIBA_MEC_1.0",03)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_1.0",01)':{tag:'(7ff1,"TOSHIBA_MEC_1.0",01)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_1.0",02)':{tag:'(7ff1,"TOSHIBA_MEC_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_1.0",03)':{tag:'(7ff1,"TOSHIBA_MEC_1.0",03)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_1.0",10)':{tag:'(7ff1,"TOSHIBA_MEC_1.0",10)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",01)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",01)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",02)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",02)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",03)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",03)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",04)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",04)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",05)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",05)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",06)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",06)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",07)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",07)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",08)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",08)',vr:"LT",name:"OrientationHeadFeet",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",09)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",09)',vr:"LT",name:"ViewDirection",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",0a)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",0a)',vr:"LT",name:"OrientationSupineProne",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",0b)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",0b)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",0c)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",0c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",0d)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",0d)',vr:"TM",name:"Time",vm:"1",version:"PrivateTag"},'(0019,"TOSHIBA_MEC_CT_1.0",0e)':{tag:'(0019,"TOSHIBA_MEC_CT_1.0",0e)',vr:"DS",name:"Unknown",vm:"1",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",01)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",01)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",02)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",02)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",03)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",03)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",04)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",04)',vr:"IS",name:"Unknown",vm:"1",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",05)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",05)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",07)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",07)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",08)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",08)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",09)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",09)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",0a)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",0a)',vr:"LT",name:"Unknown",vm:"1",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",0b)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",0b)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",0c)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",0c)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"},'(7ff1,"TOSHIBA_MEC_CT_1.0",0d)':{tag:'(7ff1,"TOSHIBA_MEC_CT_1.0",0d)',vr:"US",name:"Unknown",vm:"1-n",version:"PrivateTag"}}; + + var handler = { + /** + * Get a proxied value from the array or property value + * Note that the property value get works even if you update the underlying object. + * Also, return true of proxy.__isProxy in order to distinguish proxies and not double proxy them. + */ + get: function get(target, prop) { + if (prop == "__isProxy") return true; + if (prop in target) return target[prop]; + return target[0][prop]; + }, + set: function set(obj, prop, value) { + if (typeof prop === "number") { + obj[prop] = value; + } else if (prop in obj) { + obj[prop] = value; + } else { + obj[0][prop] = value; + } + + return true; + } + }; + /** + * Add a proxy object for sqZero or the src[0] element if sqZero is unspecified, AND + * src is an array of length 1. + * + * If sqZero isn't passed in, then assume this is a create call on the destination object + * itself, by: + * 1. If not an object, return dest + * 2. If an array of length != 1, return dest + * 3. If an array, use dest[0] as sqZero + * 4. Use dest as sqZero + * + * @example + * src = [{a:5,b:'string', c:null}] + * addAccessors(src) + * src.c = 'outerChange' + * src[0].b='innerChange' + * + * assert src.a===5 + * assert src[0].c === 'outerChange' + * assert src.b === 'innerChange' + */ + + var addAccessors = function addAccessors(dest, sqZero) { + if (dest.__isProxy) return dest; + var itemZero = sqZero; + + if (itemZero === undefined) { + if (_typeof(dest) !== "object") return dest; + if (Array.isArray(dest) && dest.length !== 1) return dest; + itemZero = Array.isArray(dest) ? dest[0] : dest; + } + + var ret = [itemZero]; + return new Proxy(ret, handler); + }; + + function paddingLeft(paddingValue, string) { + return String(paddingValue + string).slice(-paddingValue.length); + } + + var Tag = /*#__PURE__*/function () { + function Tag(value) { + _classCallCheck(this, Tag); + + this.value = value; + } + + _createClass(Tag, [{ + key: "toString", + value: function toString() { + return "(" + paddingLeft("0000", this.group().toString(16).toUpperCase()) + "," + paddingLeft("0000", this.element().toString(16).toUpperCase()) + ")"; + } + }, { + key: "toCleanString", + value: function toCleanString() { + return paddingLeft("0000", this.group().toString(16).toUpperCase()) + paddingLeft("0000", this.element().toString(16).toUpperCase()); + } + }, { + key: "is", + value: function is(t) { + return this.value == t; + } + }, { + key: "group", + value: function group() { + return this.value >>> 16; + } + }, { + key: "element", + value: function element() { + return this.value & 0xffff; + } + }, { + key: "isPixelDataTag", + value: function isPixelDataTag() { + return this.is(0x7fe00010); + } + }, { + key: "isPrivateCreator", + value: function isPrivateCreator() { + var group = this.group(); + var element = this.element(); + return group % 2 === 1 && element < 0x100 && element > 0x00; + } + }, { + key: "write", + value: function write(stream, vrType, values, syntax, writeOptions) { + var vr = ValueRepresentation.createByTypeString(vrType), + useSyntax = DicomMessage._normalizeSyntax(syntax); + + var implicit = useSyntax == IMPLICIT_LITTLE_ENDIAN ? true : false, + isLittleEndian = useSyntax == IMPLICIT_LITTLE_ENDIAN || useSyntax == EXPLICIT_LITTLE_ENDIAN$1 ? true : false, + isEncapsulated = this.isPixelDataTag() && DicomMessage.isEncapsulated(syntax); + var oldEndian = stream.isLittleEndian; + stream.setEndian(isLittleEndian); + stream.writeUint16(this.group()); + stream.writeUint16(this.element()); + var tagStream = new WriteBufferStream(256), + valueLength; + tagStream.setEndian(isLittleEndian); + + if (vrType == "OW" || vrType == "OB" || vrType == "UN") { + valueLength = vr.writeBytes(tagStream, values, useSyntax, isEncapsulated, writeOptions); + } else if (vrType == "SQ") { + valueLength = vr.writeBytes(tagStream, values, useSyntax, writeOptions); + } else { + valueLength = vr.writeBytes(tagStream, values, writeOptions); + } + + if (vrType == "SQ") { + valueLength = 0xffffffff; + } + + var written = tagStream.size + 4; + + if (implicit) { + stream.writeUint32(valueLength); + written += 4; + } else { + if (vr.isExplicit()) { + stream.writeAsciiString(vr.type); + stream.writeUint16(0); + stream.writeUint32(valueLength); + written += 8; + } else { + stream.writeAsciiString(vr.type); + stream.writeUint16(valueLength); + written += 4; + } + } + + stream.concat(tagStream); + stream.setEndian(oldEndian); + return written; + } + }], [{ + key: "fromString", + value: function fromString(str) { + var group = parseInt(str.substring(0, 4), 16), + element = parseInt(str.substring(4), 16); + return Tag.fromNumbers(group, element); + } + }, { + key: "fromPString", + value: function fromPString(str) { + var group = parseInt(str.substring(1, 5), 16), + element = parseInt(str.substring(6, 10), 16); + return Tag.fromNumbers(group, element); + } + }, { + key: "fromNumbers", + value: function fromNumbers(group, element) { + return new Tag((group << 16 | element) >>> 0); + } + }, { + key: "readTag", + value: function readTag(stream) { + var group = stream.readUint16(), + element = stream.readUint16(); + return Tag.fromNumbers(group, element); + } + }]); + + return Tag; + }(); + + function rtrim(str) { + return str.replace(/\s*$/g, ""); + } + + function toWindows(inputArray, size) { + return Array.from({ + length: inputArray.length - (size - 1) + }, //get the appropriate length + function (_, index) { + return inputArray.slice(index, index + size); + } //create the windows + ); + } + + var binaryVRs = ["FL", "FD", "SL", "SS", "UL", "US", "AT"], + explicitVRs = ["OB", "OW", "OF", "SQ", "UC", "UR", "UT", "UN"], + singleVRs$1 = ["SQ", "OF", "OW", "OB", "UN"]; + + var ValueRepresentation = /*#__PURE__*/function () { + function ValueRepresentation(type) { + _classCallCheck(this, ValueRepresentation); + + this.type = type; + this.multi = false; + this._isBinary = binaryVRs.indexOf(this.type) != -1; + this._allowMultiple = !this._isBinary && singleVRs$1.indexOf(this.type) == -1; + this._isExplicit = explicitVRs.indexOf(this.type) != -1; + } + + _createClass(ValueRepresentation, [{ + key: "isBinary", + value: function isBinary() { + return this._isBinary; + } + }, { + key: "allowMultiple", + value: function allowMultiple() { + return this._allowMultiple; + } + }, { + key: "isExplicit", + value: function isExplicit() { + return this._isExplicit; + } + }, { + key: "read", + value: function read(stream, length, syntax) { + if (this.fixed && this.maxLength) { + if (!length) return this.defaultValue; + if (this.maxLength != length) log.error("Invalid length for fixed length tag, vr " + this.type + ", length " + this.maxLength + " != " + length); + } + + return this.readBytes(stream, length, syntax); + } + }, { + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readAsciiString(length); + } + }, { + key: "readNullPaddedString", + value: function readNullPaddedString(stream, length) { + if (!length) return ""; + + if (stream.peekUint8(length - 1) !== 0) { + return stream.readAsciiString(length); + } else { + var val = stream.readAsciiString(length - 1); + stream.increment(1); + return val; + } + } + }, { + key: "write", + value: function write(stream, type) { + var args = Array.from(arguments); + + if (args[2] === null || args[2] === "" || args[2] === undefined) { + return [stream.writeAsciiString("")]; + } else { + var written = [], + valueArgs = args.slice(2), + func = stream["write" + type]; + + if (Array.isArray(valueArgs[0])) { + if (valueArgs[0].length < 1) { + written.push(0); + } else { + var self = this; + valueArgs[0].forEach(function (v, k) { + if (self.allowMultiple() && k > 0) { + stream.writeUint8(0x5c); + } + + var singularArgs = [v].concat(valueArgs.slice(1)); + var byteCount = func.apply(stream, singularArgs); + written.push(byteCount); + }); + } + } else { + written.push(func.apply(stream, valueArgs)); + } + + return written; + } + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, lengths) { + var writeOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { + allowInvalidVRLength: false + }; + var allowInvalidVRLength = writeOptions.allowInvalidVRLength; + var valid = true, + valarr = Array.isArray(value) ? value : [value], + total = 0; + + for (var i = 0; i < valarr.length; i++) { + var checkValue = valarr[i], + checklen = lengths[i], + isString = false, + displaylen = checklen; + + if (checkValue === null || allowInvalidVRLength) { + valid = true; + } else if (this.checkLength) { + valid = this.checkLength(checkValue); + } else if (this.maxCharLength) { + var check = this.maxCharLength; //, checklen = checkValue.length; + + valid = checkValue.length <= check; + displaylen = checkValue.length; + isString = true; + } else if (this.maxLength) { + valid = checklen <= this.maxLength; + } + + if (!valid) { + var errmsg = "Value exceeds max length, vr: " + this.type + ", value: " + checkValue + ", length: " + displaylen; + if (isString) log.log(errmsg);else throw new Error(errmsg); + } + + total += checklen; + } + + if (this.allowMultiple()) { + total += valarr.length ? valarr.length - 1 : 0; + } //check for odd + + + var written = total; + + if (total & 1) { + stream.writeUint8(this.padByte); + written++; + } + + return written; + } + }], [{ + key: "createByTypeString", + value: function createByTypeString(type) { + var vr = VRinstances[type]; + + if (vr === undefined) { + if (type == "ox") { + // TODO: determine VR based on context (could be 1 byte pixel data) + // https://github.com/dgobbi/vtk-dicom/issues/38 + validationLog.error("Invalid vr type", type, "- using OW"); + vr = VRinstances["OW"]; + } else if (type == "xs") { + validationLog.error("Invalid vr type", type, "- using US"); + vr = VRinstances["US"]; + } else { + validationLog.error("Invalid vr type", type, "- using UN"); + vr = VRinstances["UN"]; + } + } + + return vr; + } + }]); + + return ValueRepresentation; + }(); + + var AsciiStringRepresentation = /*#__PURE__*/function (_ValueRepresentation) { + _inherits(AsciiStringRepresentation, _ValueRepresentation); + + var _super = _createSuper(AsciiStringRepresentation); + + function AsciiStringRepresentation(type) { + _classCallCheck(this, AsciiStringRepresentation); + + return _super.call(this, type); + } + + _createClass(AsciiStringRepresentation, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readAsciiString(length); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + var written = _get(_getPrototypeOf(AsciiStringRepresentation.prototype), "write", this).call(this, stream, "AsciiString", value); + + return _get(_getPrototypeOf(AsciiStringRepresentation.prototype), "writeBytes", this).call(this, stream, value, written, writeOptions); + } + }]); + + return AsciiStringRepresentation; + }(ValueRepresentation); + + var EncodedStringRepresentation = /*#__PURE__*/function (_ValueRepresentation2) { + _inherits(EncodedStringRepresentation, _ValueRepresentation2); + + var _super2 = _createSuper(EncodedStringRepresentation); + + function EncodedStringRepresentation(type) { + _classCallCheck(this, EncodedStringRepresentation); + + return _super2.call(this, type); + } + + _createClass(EncodedStringRepresentation, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readEncodedString(length); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + var written = _get(_getPrototypeOf(EncodedStringRepresentation.prototype), "write", this).call(this, stream, "UTF8String", value); + + return _get(_getPrototypeOf(EncodedStringRepresentation.prototype), "writeBytes", this).call(this, stream, value, written, writeOptions); + } + }]); + + return EncodedStringRepresentation; + }(ValueRepresentation); + + var BinaryRepresentation = /*#__PURE__*/function (_ValueRepresentation3) { + _inherits(BinaryRepresentation, _ValueRepresentation3); + + var _super3 = _createSuper(BinaryRepresentation); + + function BinaryRepresentation(type) { + _classCallCheck(this, BinaryRepresentation); + + return _super3.call(this, type); + } + + _createClass(BinaryRepresentation, [{ + key: "writeBytes", + value: function writeBytes(stream, value, syntax, isEncapsulated) { + var writeOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var i; + var binaryStream; + var _writeOptions$fragmen = writeOptions.fragmentMultiframe, + fragmentMultiframe = _writeOptions$fragmen === void 0 ? true : _writeOptions$fragmen; + value = value === null || value === undefined ? [] : value; + + if (isEncapsulated) { + var fragmentSize = 1024 * 20, + frames = value.length, + startOffset = []; // Calculate a total length for storing binary stream + + var bufferLength = 0; + + for (i = 0; i < frames; i++) { + var needsPadding = Boolean(value[i].byteLength & 1); + bufferLength += value[i].byteLength + (needsPadding ? 1 : 0); + var _fragmentsLength = 1; + + if (fragmentMultiframe) { + _fragmentsLength = Math.ceil(value[i].byteLength / fragmentSize); + } // 8 bytes per fragment are needed to store 0xffff (2 bytes), 0xe000 (2 bytes), and frageStream size (4 bytes) + + + bufferLength += _fragmentsLength * 8; + } + + binaryStream = new WriteBufferStream(bufferLength, stream.isLittleEndian); + + for (i = 0; i < frames; i++) { + var _needsPadding = Boolean(value[i].byteLength & 1); + + startOffset.push(binaryStream.size); + var frameBuffer = value[i], + frameStream = new ReadBufferStream(frameBuffer); + var fragmentsLength = 1; + + if (fragmentMultiframe) { + fragmentsLength = Math.ceil(frameStream.size / fragmentSize); + } + + for (var j = 0, fragmentStart = 0; j < fragmentsLength; j++) { + var isFinalFragment = j === fragmentsLength - 1; + var fragmentEnd = fragmentStart + frameStream.size; + + if (fragmentMultiframe) { + fragmentEnd = fragmentStart + fragmentSize; + } + + if (isFinalFragment) { + fragmentEnd = frameStream.size; + } + + var fragStream = new ReadBufferStream(frameStream.getBuffer(fragmentStart, fragmentEnd)); + fragmentStart = fragmentEnd; + binaryStream.writeUint16(0xfffe); + binaryStream.writeUint16(0xe000); + var addPaddingByte = isFinalFragment && _needsPadding; + binaryStream.writeUint32(fragStream.size + (addPaddingByte ? 1 : 0)); + binaryStream.concat(fragStream); + + if (addPaddingByte) { + binaryStream.writeInt8(this.padByte); + } + } + } + + stream.writeUint16(0xfffe); + stream.writeUint16(0xe000); + stream.writeUint32(startOffset.length * 4); + + for (i = 0; i < startOffset.length; i++) { + stream.writeUint32(startOffset[i]); + } + + stream.concat(binaryStream); + stream.writeUint16(0xfffe); + stream.writeUint16(0xe0dd); + stream.writeUint32(0x0); + return 0xffffffff; + } else { + var binaryData = value[0]; + binaryStream = new ReadBufferStream(binaryData); + stream.concat(binaryStream); + return _get(_getPrototypeOf(BinaryRepresentation.prototype), "writeBytes", this).call(this, stream, binaryData, [binaryStream.size], writeOptions); + } + } + }, { + key: "readBytes", + value: function readBytes(stream, length) { + if (length == 0xffffffff) { + var itemTagValue = Tag.readTag(stream), + frames = []; + + if (itemTagValue.is(0xfffee000)) { + var itemLength = stream.readUint32(), + numOfFrames = 1, + offsets = []; + + if (itemLength > 0x0) { + //has frames + numOfFrames = itemLength / 4; + var i = 0; + + while (i++ < numOfFrames) { + offsets.push(stream.readUint32()); + } + } else { + offsets = []; + } + + var SequenceItemTag = 0xfffee000; + var SequenceDelimiterTag = 0xfffee0dd; + + var getNextSequenceItemData = function getNextSequenceItemData(stream) { + var nextTag = Tag.readTag(stream); + + if (nextTag.is(SequenceItemTag)) { + var _itemLength = stream.readUint32(); + + var buffer = stream.getBuffer(stream.offset, stream.offset + _itemLength); + stream.increment(_itemLength); + return buffer; + } else if (nextTag.is(SequenceDelimiterTag)) { + // Read SequenceDelimiterItem value for the SequenceDelimiterTag + if (stream.readUint32() !== 0) { + throw Error("SequenceDelimiterItem tag value was not zero"); + } + + return null; + } + + throw Error("Invalid tag in sequence"); + }; // If there is an offset table, use that to loop through pixel data sequence + + + if (offsets.length > 0) { + // make offsets relative to the stream, not tag + offsets = offsets.map(function (e) { + return e + stream.offset; + }); + offsets.push(stream.size); // window offsets to an array of [start,stop] locations + + frames = toWindows(offsets, 2).map(function (range) { + var fragments = []; + + var _range = _slicedToArray(range, 2), + start = _range[0], + stop = _range[1]; // create a new readable stream based on the range + + + var rangeStream = new ReadBufferStream(stream.buffer, stream.isLittleEndian, { + start: start, + stop: stop, + noCopy: stream.noCopy + }); + var frameSize = 0; + + while (!rangeStream.end()) { + var buf = getNextSequenceItemData(rangeStream); + + if (buf === null) { + break; + } + + fragments.push(buf); + frameSize += buf.byteLength; + } // Ensure the parent stream's offset is kept up to date + + + stream.offset = rangeStream.offset; // If there's only one buffer thne just return it directly + + if (fragments.length === 1) { + return fragments[0]; + } + + if (rangeStream.noCopy) { + // return the fragments for downstream application to process + return fragments; + } else { + // Allocate a final ArrayBuffer and concat all buffers into it + var mergedFrame = new ArrayBuffer(frameSize); + var u8Data = new Uint8Array(mergedFrame); + fragments.reduce(function (offset, buffer) { + u8Data.set(new Uint8Array(buffer), offset); + return offset + buffer.byteLength; + }, 0); + return mergedFrame; + } + }); + } // If no offset table, loop through remainder of stream looking for termination tag + else { + while (!stream.end()) { + var buffer = getNextSequenceItemData(stream); + + if (buffer === null) { + break; + } + + frames.push(buffer); + } + } + } else { + throw new Error("Item tag not found after undefined binary length"); + } + + return frames; + } else { + var bytes; + /*if (this.type == 'OW') { + bytes = stream.readUint16Array(length); + } else if (this.type == 'OB') { + bytes = stream.readUint8Array(length); + }*/ + + bytes = stream.getBuffer(stream.offset, stream.offset + length); + stream.increment(length); + return [bytes]; + } + } + }]); + + return BinaryRepresentation; + }(ValueRepresentation); + + var ApplicationEntity = /*#__PURE__*/function (_AsciiStringRepresent) { + _inherits(ApplicationEntity, _AsciiStringRepresent); + + var _super4 = _createSuper(ApplicationEntity); + + function ApplicationEntity() { + var _this; + + _classCallCheck(this, ApplicationEntity); + + _this = _super4.call(this, "AE"); + _this.maxLength = 16; + _this.padByte = 0x20; + return _this; + } + + _createClass(ApplicationEntity, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readAsciiString(length).trim(); + } + }]); + + return ApplicationEntity; + }(AsciiStringRepresentation); + + var CodeString = /*#__PURE__*/function (_AsciiStringRepresent2) { + _inherits(CodeString, _AsciiStringRepresent2); + + var _super5 = _createSuper(CodeString); + + function CodeString() { + var _this2; + + _classCallCheck(this, CodeString); + + _this2 = _super5.call(this, "CS"); + _this2.maxLength = 16; + _this2.padByte = 0x20; + return _this2; + } + + _createClass(CodeString, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readAsciiString(length).trim(); + } + }]); + + return CodeString; + }(AsciiStringRepresentation); + + var AgeString = /*#__PURE__*/function (_AsciiStringRepresent3) { + _inherits(AgeString, _AsciiStringRepresent3); + + var _super6 = _createSuper(AgeString); + + function AgeString() { + var _this3; + + _classCallCheck(this, AgeString); + + _this3 = _super6.call(this, "AS"); + _this3.maxLength = 4; + _this3.padByte = 0x20; + _this3.fixed = true; + _this3.defaultValue = ""; + return _this3; + } + + return _createClass(AgeString); + }(AsciiStringRepresentation); + + var AttributeTag = /*#__PURE__*/function (_ValueRepresentation4) { + _inherits(AttributeTag, _ValueRepresentation4); + + var _super7 = _createSuper(AttributeTag); + + function AttributeTag() { + var _this4; + + _classCallCheck(this, AttributeTag); + + _this4 = _super7.call(this, "AT"); + _this4.maxLength = 4; + _this4.valueLength = 4; + _this4.padByte = 0; + _this4.fixed = true; + return _this4; + } + + _createClass(AttributeTag, [{ + key: "readBytes", + value: function readBytes(stream) { + return Tag.readTag(stream).value; + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(AttributeTag.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(AttributeTag.prototype), "write", this).call(this, stream, "TwoUint16s", value), writeOptions); + } + }]); + + return AttributeTag; + }(ValueRepresentation); + + var DateValue = /*#__PURE__*/function (_AsciiStringRepresent4) { + _inherits(DateValue, _AsciiStringRepresent4); + + var _super8 = _createSuper(DateValue); + + function DateValue(value) { + var _this5; + + _classCallCheck(this, DateValue); + + _this5 = _super8.call(this, "DA", value); + _this5.maxLength = 18; + _this5.padByte = 0x20; //this.fixed = true; + + _this5.defaultValue = ""; + return _this5; + } + + return _createClass(DateValue); + }(AsciiStringRepresentation); + + var DecimalString = /*#__PURE__*/function (_AsciiStringRepresent5) { + _inherits(DecimalString, _AsciiStringRepresent5); + + var _super9 = _createSuper(DecimalString); + + function DecimalString() { + var _this6; + + _classCallCheck(this, DecimalString); + + _this6 = _super9.call(this, "DS"); + _this6.maxLength = 16; + _this6.padByte = 0x20; + return _this6; + } + + _createClass(DecimalString, [{ + key: "readBytes", + value: function readBytes(stream, length) { + var BACKSLASH = String.fromCharCode(0x5c); + var ds = stream.readAsciiString(length); + ds = ds.replace(/[^0-9.\\\-+e]/gi, ""); + + if (ds.indexOf(BACKSLASH) !== -1) { + // handle decimal string with multiplicity + var dsArray = ds.split(BACKSLASH); + ds = dsArray.map(function (ds) { + return ds === "" ? null : Number(ds); + }); + } else { + ds = [ds === "" ? null : Number(ds)]; + } + + return ds; + } + }, { + key: "formatValue", + value: function formatValue(value) { + if (value === null) { + return ""; + } + + var str = String(value); + + if (str.length > this.maxLength) { + return value.toExponential(); + } + + return str; + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + var _this7 = this; + + var val = Array.isArray(value) ? value.map(function (ds) { + return _this7.formatValue(ds); + }) : [this.formatValue(value)]; + return _get(_getPrototypeOf(DecimalString.prototype), "writeBytes", this).call(this, stream, val, writeOptions); + } + }]); + + return DecimalString; + }(AsciiStringRepresentation); + + var DateTime = /*#__PURE__*/function (_AsciiStringRepresent6) { + _inherits(DateTime, _AsciiStringRepresent6); + + var _super10 = _createSuper(DateTime); + + function DateTime() { + var _this8; + + _classCallCheck(this, DateTime); + + _this8 = _super10.call(this, "DT"); + _this8.maxLength = 26; + _this8.padByte = 0x20; + return _this8; + } + + return _createClass(DateTime); + }(AsciiStringRepresentation); + + var FloatingPointSingle = /*#__PURE__*/function (_ValueRepresentation5) { + _inherits(FloatingPointSingle, _ValueRepresentation5); + + var _super11 = _createSuper(FloatingPointSingle); + + function FloatingPointSingle() { + var _this9; + + _classCallCheck(this, FloatingPointSingle); + + _this9 = _super11.call(this, "FL"); + _this9.maxLength = 4; + _this9.padByte = 0; + _this9.fixed = true; + _this9.defaultValue = 0.0; + return _this9; + } + + _createClass(FloatingPointSingle, [{ + key: "readBytes", + value: function readBytes(stream) { + return Number(stream.readFloat()); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(FloatingPointSingle.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(FloatingPointSingle.prototype), "write", this).call(this, stream, "Float", value), writeOptions); + } + }]); + + return FloatingPointSingle; + }(ValueRepresentation); + + var FloatingPointDouble = /*#__PURE__*/function (_ValueRepresentation6) { + _inherits(FloatingPointDouble, _ValueRepresentation6); + + var _super12 = _createSuper(FloatingPointDouble); + + function FloatingPointDouble() { + var _this10; + + _classCallCheck(this, FloatingPointDouble); + + _this10 = _super12.call(this, "FD"); + _this10.maxLength = 8; + _this10.padByte = 0; + _this10.fixed = true; + _this10.defaultValue = 0.0; + return _this10; + } + + _createClass(FloatingPointDouble, [{ + key: "readBytes", + value: function readBytes(stream) { + return Number(stream.readDouble()); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(FloatingPointDouble.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(FloatingPointDouble.prototype), "write", this).call(this, stream, "Double", value), writeOptions); + } + }]); + + return FloatingPointDouble; + }(ValueRepresentation); + + var IntegerString = /*#__PURE__*/function (_AsciiStringRepresent7) { + _inherits(IntegerString, _AsciiStringRepresent7); + + var _super13 = _createSuper(IntegerString); + + function IntegerString() { + var _this11; + + _classCallCheck(this, IntegerString); + + _this11 = _super13.call(this, "IS"); + _this11.maxLength = 12; + _this11.padByte = 0x20; + return _this11; + } + + _createClass(IntegerString, [{ + key: "readBytes", + value: function readBytes(stream, length) { + var BACKSLASH = String.fromCharCode(0x5c); + var is = stream.readAsciiString(length).trim(); + is = is.replace(/[^0-9.\\\-+e]/gi, ""); + + if (is.indexOf(BACKSLASH) !== -1) { + // handle integer string with multiplicity + var integerStringArray = is.split(BACKSLASH); + is = integerStringArray.map(function (is) { + return is === "" ? null : Number(is); + }); + } else { + is = [is === "" ? null : Number(is)]; + } + + return is; + } + }, { + key: "formatValue", + value: function formatValue(value) { + return value === null ? "" : String(value); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + var _this12 = this; + + var val = Array.isArray(value) ? value.map(function (is) { + return _this12.formatValue(is); + }) : [this.formatValue(value)]; + return _get(_getPrototypeOf(IntegerString.prototype), "writeBytes", this).call(this, stream, val, writeOptions); + } + }]); + + return IntegerString; + }(AsciiStringRepresentation); + + var LongString = /*#__PURE__*/function (_EncodedStringReprese) { + _inherits(LongString, _EncodedStringReprese); + + var _super14 = _createSuper(LongString); + + function LongString() { + var _this13; + + _classCallCheck(this, LongString); + + _this13 = _super14.call(this, "LO"); + _this13.maxCharLength = 64; + _this13.padByte = 0x20; + return _this13; + } + + _createClass(LongString, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readEncodedString(length).trim(); + } + }]); + + return LongString; + }(EncodedStringRepresentation); + + var LongText = /*#__PURE__*/function (_EncodedStringReprese2) { + _inherits(LongText, _EncodedStringReprese2); + + var _super15 = _createSuper(LongText); + + function LongText() { + var _this14; + + _classCallCheck(this, LongText); + + _this14 = _super15.call(this, "LT"); + _this14.maxCharLength = 10240; + _this14.padByte = 0x20; + return _this14; + } + + _createClass(LongText, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readEncodedString(length)); + } + }]); + + return LongText; + }(EncodedStringRepresentation); + + var PersonName = /*#__PURE__*/function (_EncodedStringReprese3) { + _inherits(PersonName, _EncodedStringReprese3); + + var _super16 = _createSuper(PersonName); + + function PersonName() { + var _this15; + + _classCallCheck(this, PersonName); + + _this15 = _super16.call(this, "PN"); + _this15.maxLength = null; + _this15.padByte = 0x20; + return _this15; + } + + _createClass(PersonName, [{ + key: "checkLength", + value: function checkLength(value) { + var components = []; + + if (_typeof(value) === "object" && value !== null) { + // In DICOM JSON, components are encoded as a mapping (object), + // where the keys are one or more of the following: "Alphabetic", + // "Ideographic", "Phonetic". + // http://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_F.2.2.html + components = Object.keys(value).forEach(function (key) { + return value[key]; + }); + } else if (typeof value === "string" || value instanceof String) { + // In DICOM Part10, components are encoded as a string, + // where components ("Alphabetic", "Ideographic", "Phonetic") + // are separated by the "=" delimeter. + // http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + components = value.split(/\=/); + } + + for (var i in components) { + var cmp = components[i]; + if (cmp.length > 64) return false; + } + + return true; + } + }, { + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readEncodedString(length)); + } + }]); + + return PersonName; + }(EncodedStringRepresentation); + + var ShortString = /*#__PURE__*/function (_EncodedStringReprese4) { + _inherits(ShortString, _EncodedStringReprese4); + + var _super17 = _createSuper(ShortString); + + function ShortString() { + var _this16; + + _classCallCheck(this, ShortString); + + _this16 = _super17.call(this, "SH"); + _this16.maxCharLength = 16; + _this16.padByte = 0x20; + return _this16; + } + + _createClass(ShortString, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readEncodedString(length).trim(); + } + }]); + + return ShortString; + }(EncodedStringRepresentation); + + var SignedLong = /*#__PURE__*/function (_ValueRepresentation7) { + _inherits(SignedLong, _ValueRepresentation7); + + var _super18 = _createSuper(SignedLong); + + function SignedLong() { + var _this17; + + _classCallCheck(this, SignedLong); + + _this17 = _super18.call(this, "SL"); + _this17.maxLength = 4; + _this17.padByte = 0; + _this17.fixed = true; + _this17.defaultValue = 0; + return _this17; + } + + _createClass(SignedLong, [{ + key: "readBytes", + value: function readBytes(stream) { + return stream.readInt32(); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(SignedLong.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(SignedLong.prototype), "write", this).call(this, stream, "Int32", value), writeOptions); + } + }]); + + return SignedLong; + }(ValueRepresentation); + + var SequenceOfItems = /*#__PURE__*/function (_ValueRepresentation8) { + _inherits(SequenceOfItems, _ValueRepresentation8); + + var _super19 = _createSuper(SequenceOfItems); + + function SequenceOfItems() { + var _this18; + + _classCallCheck(this, SequenceOfItems); + + _this18 = _super19.call(this, "SQ"); + _this18.maxLength = null; + _this18.padByte = 0; + _this18.noMultiple = true; + return _this18; + } + + _createClass(SequenceOfItems, [{ + key: "readBytes", + value: function readBytes(stream, sqlength, syntax) { + if (sqlength == 0x0) { + return []; //contains no dataset + } else { + var undefLength = sqlength == 0xffffffff, + elements = [], + read = 0; + /* eslint-disable-next-line no-constant-condition */ + + while (true) { + var tag = Tag.readTag(stream), + length = null; + read += 4; + + if (tag.is(0xfffee0dd)) { + stream.readUint32(); + break; + } else if (!undefLength && read == sqlength) { + break; + } else if (tag.is(0xfffee000)) { + length = stream.readUint32(); + read += 4; + var itemStream = null, + toRead = 0, + undef = length == 0xffffffff; + + if (undef) { + var stack = 0; + /* eslint-disable-next-line no-constant-condition */ + + while (1) { + var g = stream.readUint16(); + + if (g == 0xfffe) { + // some control tag is about to be read + var ge = stream.readUint16(); + var itemLength = stream.readUint32(); + stream.increment(-4); + + if (ge == 0xe00d) { + if (itemLength === 0) { + // item delimitation tag (0xfffee00d) + item length (0x00000000) has been read + stack--; + + if (stack < 0) { + // if we are outside every stack, then we are finished reading the sequence of items + stream.increment(4); + read += 8; + break; + } else { + // otherwise, we were in a nested sequence of items + toRead += 4; + } + } else { + // anything else has been read + toRead += 2; + } + } else if (ge == 0xe000) { + // a new item has been found + toRead += 4; + + if (itemLength == 0xffffffff) { + // a new item with undefined length has been found + stack++; + } + } else { + // some control tag that does not concern sequence of items has been read + toRead += 2; + stream.increment(-2); + } + } else { + // anything else has been read + toRead += 2; + } + } + } else { + toRead = length; + } + + if (toRead) { + stream.increment(undef ? -toRead - 8 : 0); + itemStream = stream.more(toRead); //parseElements + + read += toRead; + if (undef) stream.increment(8); + + var items = DicomMessage._read(itemStream, syntax); + + elements.push(items); + } + + if (!undefLength && read == sqlength) { + break; + } + } + } + + return elements; + } + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, syntax, writeOptions) { + var written = 0; + + if (value) { + for (var i = 0; i < value.length; i++) { + var item = value[i]; + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xfffe); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xe000); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint32", 0xffffffff); + + written += DicomMessage.write(item, stream, syntax, writeOptions); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xfffe); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xe00d); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint32", 0x00000000); + + written += 16; + } + } + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xfffe); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint16", 0xe0dd); + + _get(_getPrototypeOf(SequenceOfItems.prototype), "write", this).call(this, stream, "Uint32", 0x00000000); + + written += 8; + return _get(_getPrototypeOf(SequenceOfItems.prototype), "writeBytes", this).call(this, stream, value, [written], writeOptions); + } + }]); + + return SequenceOfItems; + }(ValueRepresentation); + + var SignedShort = /*#__PURE__*/function (_ValueRepresentation9) { + _inherits(SignedShort, _ValueRepresentation9); + + var _super20 = _createSuper(SignedShort); + + function SignedShort() { + var _this19; + + _classCallCheck(this, SignedShort); + + _this19 = _super20.call(this, "SS"); + _this19.maxLength = 2; + _this19.valueLength = 2; + _this19.padByte = 0; + _this19.fixed = true; + _this19.defaultValue = 0; + return _this19; + } + + _createClass(SignedShort, [{ + key: "readBytes", + value: function readBytes(stream) { + return stream.readInt16(); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(SignedShort.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(SignedShort.prototype), "write", this).call(this, stream, "Int16", value), writeOptions); + } + }]); + + return SignedShort; + }(ValueRepresentation); + + var ShortText = /*#__PURE__*/function (_EncodedStringReprese5) { + _inherits(ShortText, _EncodedStringReprese5); + + var _super21 = _createSuper(ShortText); + + function ShortText() { + var _this20; + + _classCallCheck(this, ShortText); + + _this20 = _super21.call(this, "ST"); + _this20.maxCharLength = 1024; + _this20.padByte = 0x20; + return _this20; + } + + _createClass(ShortText, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readEncodedString(length)); + } + }]); + + return ShortText; + }(EncodedStringRepresentation); + + var TimeValue = /*#__PURE__*/function (_AsciiStringRepresent8) { + _inherits(TimeValue, _AsciiStringRepresent8); + + var _super22 = _createSuper(TimeValue); + + function TimeValue() { + var _this21; + + _classCallCheck(this, TimeValue); + + _this21 = _super22.call(this, "TM"); + _this21.maxLength = 14; + _this21.padByte = 0x20; + return _this21; + } + + _createClass(TimeValue, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readAsciiString(length)); + } + }]); + + return TimeValue; + }(AsciiStringRepresentation); + + var UnlimitedCharacters = /*#__PURE__*/function (_EncodedStringReprese6) { + _inherits(UnlimitedCharacters, _EncodedStringReprese6); + + var _super23 = _createSuper(UnlimitedCharacters); + + function UnlimitedCharacters() { + var _this22; + + _classCallCheck(this, UnlimitedCharacters); + + _this22 = _super23.call(this, "UC"); + _this22.maxLength = null; + _this22.multi = true; + _this22.padByte = 0x20; + return _this22; + } + + _createClass(UnlimitedCharacters, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readEncodedString(length)); + } + }]); + + return UnlimitedCharacters; + }(EncodedStringRepresentation); + + var UnlimitedText = /*#__PURE__*/function (_EncodedStringReprese7) { + _inherits(UnlimitedText, _EncodedStringReprese7); + + var _super24 = _createSuper(UnlimitedText); + + function UnlimitedText() { + var _this23; + + _classCallCheck(this, UnlimitedText); + + _this23 = _super24.call(this, "UT"); + _this23.maxLength = null; + _this23.padByte = 0x20; + return _this23; + } + + _createClass(UnlimitedText, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return rtrim(stream.readEncodedString(length)); + } + }]); + + return UnlimitedText; + }(EncodedStringRepresentation); + + var UnsignedShort = /*#__PURE__*/function (_ValueRepresentation10) { + _inherits(UnsignedShort, _ValueRepresentation10); + + var _super25 = _createSuper(UnsignedShort); + + function UnsignedShort() { + var _this24; + + _classCallCheck(this, UnsignedShort); + + _this24 = _super25.call(this, "US"); + _this24.maxLength = 2; + _this24.padByte = 0; + _this24.fixed = true; + _this24.defaultValue = 0; + return _this24; + } + + _createClass(UnsignedShort, [{ + key: "readBytes", + value: function readBytes(stream) { + return stream.readUint16(); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(UnsignedShort.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(UnsignedShort.prototype), "write", this).call(this, stream, "Uint16", value), writeOptions); + } + }]); + + return UnsignedShort; + }(ValueRepresentation); + + var UnsignedLong = /*#__PURE__*/function (_ValueRepresentation11) { + _inherits(UnsignedLong, _ValueRepresentation11); + + var _super26 = _createSuper(UnsignedLong); + + function UnsignedLong() { + var _this25; + + _classCallCheck(this, UnsignedLong); + + _this25 = _super26.call(this, "UL"); + _this25.maxLength = 4; + _this25.padByte = 0; + _this25.fixed = true; + _this25.defaultValue = 0; + return _this25; + } + + _createClass(UnsignedLong, [{ + key: "readBytes", + value: function readBytes(stream) { + return stream.readUint32(); + } + }, { + key: "writeBytes", + value: function writeBytes(stream, value, writeOptions) { + return _get(_getPrototypeOf(UnsignedLong.prototype), "writeBytes", this).call(this, stream, value, _get(_getPrototypeOf(UnsignedLong.prototype), "write", this).call(this, stream, "Uint32", value), writeOptions); + } + }]); + + return UnsignedLong; + }(ValueRepresentation); + + var UniqueIdentifier = /*#__PURE__*/function (_AsciiStringRepresent9) { + _inherits(UniqueIdentifier, _AsciiStringRepresent9); + + var _super27 = _createSuper(UniqueIdentifier); + + function UniqueIdentifier() { + var _this26; + + _classCallCheck(this, UniqueIdentifier); + + _this26 = _super27.call(this, "UI"); + _this26.maxLength = 64; + _this26.padByte = 0; + return _this26; + } + + _createClass(UniqueIdentifier, [{ + key: "readBytes", + value: function readBytes(stream, length) { + var result = this.readNullPaddedString(stream, length); + var BACKSLASH = String.fromCharCode(0x5c); + var uidRegExp = /[^0-9.]/g; // Treat backslashes as a delimiter for multiple UIDs, in which case an + // array of UIDs is returned. This is used by DICOM Q&R to support + // querying and matching multiple items on a UID field in a single + // query. For more details see: + // + // https://dicom.nema.org/medical/dicom/current/output/chtml/part04/sect_C.2.2.2.2.html + // https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.4.html + + if (result.indexOf(BACKSLASH) === -1) { + return result.replace(uidRegExp, ""); + } else { + return result.split(BACKSLASH).map(function (uid) { + return uid.replace(uidRegExp, ""); + }); + } + } + }]); + + return UniqueIdentifier; + }(AsciiStringRepresentation); + + var UniversalResource = /*#__PURE__*/function (_AsciiStringRepresent10) { + _inherits(UniversalResource, _AsciiStringRepresent10); + + var _super28 = _createSuper(UniversalResource); + + function UniversalResource() { + var _this27; + + _classCallCheck(this, UniversalResource); + + _this27 = _super28.call(this, "UR"); + _this27.maxLength = null; + _this27.padByte = 0x20; + return _this27; + } + + _createClass(UniversalResource, [{ + key: "readBytes", + value: function readBytes(stream, length) { + return stream.readAsciiString(length); + } + }]); + + return UniversalResource; + }(AsciiStringRepresentation); + + var UnknownValue = /*#__PURE__*/function (_BinaryRepresentation) { + _inherits(UnknownValue, _BinaryRepresentation); + + var _super29 = _createSuper(UnknownValue); + + function UnknownValue() { + var _this28; + + _classCallCheck(this, UnknownValue); + + _this28 = _super29.call(this, "UN"); + _this28.maxLength = null; + _this28.padByte = 0; + _this28.noMultiple = true; + return _this28; + } + + return _createClass(UnknownValue); + }(BinaryRepresentation); + + var OtherWordString = /*#__PURE__*/function (_BinaryRepresentation2) { + _inherits(OtherWordString, _BinaryRepresentation2); + + var _super30 = _createSuper(OtherWordString); + + function OtherWordString() { + var _this29; + + _classCallCheck(this, OtherWordString); + + _this29 = _super30.call(this, "OW"); + _this29.maxLength = null; + _this29.padByte = 0; + _this29.noMultiple = true; + return _this29; + } + + return _createClass(OtherWordString); + }(BinaryRepresentation); + + var OtherByteString = /*#__PURE__*/function (_BinaryRepresentation3) { + _inherits(OtherByteString, _BinaryRepresentation3); + + var _super31 = _createSuper(OtherByteString); + + function OtherByteString() { + var _this30; + + _classCallCheck(this, OtherByteString); + + _this30 = _super31.call(this, "OB"); + _this30.maxLength = null; + _this30.padByte = 0; + _this30.noMultiple = true; + return _this30; + } + + return _createClass(OtherByteString); + }(BinaryRepresentation); + + var OtherDoubleString = /*#__PURE__*/function (_BinaryRepresentation4) { + _inherits(OtherDoubleString, _BinaryRepresentation4); + + var _super32 = _createSuper(OtherDoubleString); + + function OtherDoubleString() { + var _this31; + + _classCallCheck(this, OtherDoubleString); + + _this31 = _super32.call(this, "OD"); + _this31.maxLength = null; + _this31.padByte = 0; + _this31.noMultiple = true; + return _this31; + } + + return _createClass(OtherDoubleString); + }(BinaryRepresentation); + + var OtherFloatString = /*#__PURE__*/function (_BinaryRepresentation5) { + _inherits(OtherFloatString, _BinaryRepresentation5); + + var _super33 = _createSuper(OtherFloatString); + + function OtherFloatString() { + var _this32; + + _classCallCheck(this, OtherFloatString); + + _this32 = _super33.call(this, "OF"); + _this32.maxLength = null; + _this32.padByte = 0; + _this32.noMultiple = true; + return _this32; + } + + return _createClass(OtherFloatString); + }(BinaryRepresentation); // these VR instances are precreate and are reused for each requested vr/tag + + + var VRinstances = { + AE: new ApplicationEntity(), + AS: new AgeString(), + AT: new AttributeTag(), + CS: new CodeString(), + DA: new DateValue(), + DS: new DecimalString(), + DT: new DateTime(), + FL: new FloatingPointSingle(), + FD: new FloatingPointDouble(), + IS: new IntegerString(), + LO: new LongString(), + LT: new LongText(), + OB: new OtherByteString(), + OD: new OtherDoubleString(), + OF: new OtherFloatString(), + OW: new OtherWordString(), + PN: new PersonName(), + SH: new ShortString(), + SL: new SignedLong(), + SQ: new SequenceOfItems(), + SS: new SignedShort(), + ST: new ShortText(), + TM: new TimeValue(), + UC: new UnlimitedCharacters(), + UI: new UniqueIdentifier(), + UL: new UnsignedLong(), + UN: new UnknownValue(), + UR: new UniversalResource(), + US: new UnsignedShort(), + UT: new UnlimitedText() + }; + + var DicomMetaDictionary = /*#__PURE__*/function () { + // intakes a custom dictionary that will be used to parse/denaturalize the dataset + function DicomMetaDictionary(customDictionary) { + _classCallCheck(this, DicomMetaDictionary); + + this.customDictionary = customDictionary; + this.customNameMap = DicomMetaDictionary._generateCustomNameMap(customDictionary); + } + + _createClass(DicomMetaDictionary, [{ + key: "denaturalizeDataset", + value: // denaturalizes dataset using custom dictionary and nameMap + function denaturalizeDataset(dataset) { + return DicomMetaDictionary.denaturalizeDataset(dataset, this.customNameMap); + } + }], [{ + key: "punctuateTag", + value: function punctuateTag(rawTag) { + if (rawTag.indexOf(",") !== -1) { + return rawTag; + } + + if (rawTag.length === 8 && rawTag === rawTag.match(/[0-9a-fA-F]*/)[0]) { + var tag = rawTag.toUpperCase(); + return "(" + tag.substring(0, 4) + "," + tag.substring(4, 8) + ")"; + } + } + }, { + key: "unpunctuateTag", + value: function unpunctuateTag(tag) { + if (tag.indexOf(",") === -1) { + return tag; + } + + return tag.substring(1, 10).replace(",", ""); + } + }, { + key: "parseIntFromTag", + value: function parseIntFromTag(tag) { + var integerValue = parseInt("0x" + DicomMetaDictionary.unpunctuateTag(tag)); + return integerValue; + } + }, { + key: "tagAsIntegerFromName", + value: function tagAsIntegerFromName(name) { + var item = DicomMetaDictionary.nameMap[name]; + + if (item != undefined) { + return this.parseIntFromTag(item.tag); + } else { + return undefined; + } + } // fixes some common errors in VRs + // TODO: if this gets longer it could go in ValueRepresentation.js + // or in a dedicated class + + }, { + key: "cleanDataset", + value: function cleanDataset(dataset) { + var cleanedDataset = {}; + Object.keys(dataset).forEach(function (tag) { + var data = Object.assign({}, dataset[tag]); + + if (data.vr == "SQ") { + var cleanedValues = []; + Object.keys(data.Value).forEach(function (index) { + cleanedValues.push(DicomMetaDictionary.cleanDataset(data.Value[index])); + }); + data.Value = cleanedValues; + } else { + // remove null characters from strings + data.Value = Object.keys(data.Value).map(function (index) { + var item = data.Value[index]; + + if (item.constructor.name == "String") { + return item.replace(/\0/, ""); + } + + return item; + }); + } + + cleanedDataset[tag] = data; + }); + return cleanedDataset; + } // unlike naturalizeDataset, this only + // changes the names of the member variables + // but leaves the values intact + + }, { + key: "namifyDataset", + value: function namifyDataset(dataset) { + var namedDataset = {}; + Object.keys(dataset).forEach(function (tag) { + var data = Object.assign({}, dataset[tag]); + + if (data.vr == "SQ") { + var namedValues = []; + Object.keys(data.Value).forEach(function (index) { + namedValues.push(DicomMetaDictionary.namifyDataset(data.Value[index])); + }); + data.Value = namedValues; + } + + var punctuatedTag = DicomMetaDictionary.punctuateTag(tag); + var entry = DicomMetaDictionary.dictionary[punctuatedTag]; + var name = tag; + + if (entry) { + name = entry.name; + } + + namedDataset[name] = data; + }); + return namedDataset; + } + /** converts from DICOM JSON Model dataset to a natural dataset + * - sequences become lists + * - single element lists are replaced by their first element, + * with single element lists remaining lists, but being a + * proxy for the child values, see addAccessors for examples + * - object member names are dictionary, not group/element tag + */ + + }, { + key: "naturalizeDataset", + value: function naturalizeDataset(dataset) { + var naturalDataset = { + _vrMap: {} + }; + Object.keys(dataset).forEach(function (tag) { + var data = dataset[tag]; + var punctuatedTag = DicomMetaDictionary.punctuateTag(tag); + var entry = DicomMetaDictionary.dictionary[punctuatedTag]; + var naturalName = tag; + + if (entry) { + naturalName = entry.name; + + if (entry.vr == "ox") { + // when the vr is data-dependent, keep track of the original type + naturalDataset._vrMap[naturalName] = data.vr; + } + } + + if (data.Value === undefined) { + // In the case of type 2, add this tag but explictly set it null to indicate its empty. + naturalDataset[naturalName] = null; + + if (data.InlineBinary) { + naturalDataset[naturalName] = { + InlineBinary: data.InlineBinary + }; + } else if (data.BulkDataURI) { + naturalDataset[naturalName] = { + BulkDataURI: data.BulkDataURI + }; + } + } else { + if (data.vr === "SQ") { + // convert sequence to list of values + var naturalValues = []; + Object.keys(data.Value).forEach(function (index) { + naturalValues.push(DicomMetaDictionary.naturalizeDataset(data.Value[index])); + }); + naturalDataset[naturalName] = naturalValues; + } else { + naturalDataset[naturalName] = data.Value; + } + + if (naturalDataset[naturalName].length === 1) { + var sqZero = naturalDataset[naturalName][0]; + + if (sqZero && _typeof(sqZero) === "object" && !sqZero.length) { + naturalDataset[naturalName] = addAccessors(naturalDataset[naturalName], sqZero); + } else { + naturalDataset[naturalName] = sqZero; + } + } + } + }); + return naturalDataset; + } + }, { + key: "denaturalizeValue", + value: function denaturalizeValue(naturalValue) { + var value = naturalValue; + + if (!Array.isArray(value)) { + value = [value]; + } else { + var thereIsUndefinedValues = naturalValue.some(function (item) { + return item === undefined; + }); + + if (thereIsUndefinedValues) { + throw new Error("There are undefined values at the array naturalValue in DicomMetaDictionary.denaturalizeValue"); + } + } + + value = value.map(function (entry) { + return entry.constructor.name == "Number" ? String(entry) : entry; + }); + return value; + } // keep the static function to support previous calls to the class + + }, { + key: "denaturalizeDataset", + value: function denaturalizeDataset(dataset) { + var nameMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DicomMetaDictionary.nameMap; + var unnaturalDataset = {}; + Object.keys(dataset).forEach(function (naturalName) { + // check if it's a sequence + var name = naturalName; + var entry = nameMap[name]; + + if (entry) { + var dataValue = dataset[naturalName]; + + if (dataValue === undefined) { + // handle the case where it was deleted from the object but is in keys + return; + } // process this one entry + + + var dataItem = { + vr: entry.vr, + Value: dataset[naturalName] + }; + + if (dataValue !== null) { + if (entry.vr == "ox") { + if (dataset._vrMap && dataset._vrMap[naturalName]) { + dataItem.vr = dataset._vrMap[naturalName]; + } else { + log.error("No value representation given for", naturalName); + } + } + + dataItem.Value = DicomMetaDictionary.denaturalizeValue(dataItem.Value); + + if (entry.vr == "SQ") { + var unnaturalValues = []; + + for (var datasetIndex = 0; datasetIndex < dataItem.Value.length; datasetIndex++) { + var nestedDataset = dataItem.Value[datasetIndex]; + unnaturalValues.push(DicomMetaDictionary.denaturalizeDataset(nestedDataset, nameMap)); + } + + dataItem.Value = unnaturalValues; + } + + var vr = ValueRepresentation.createByTypeString(dataItem.vr); + + if (!vr.isBinary() && vr.maxLength) { + dataItem.Value = dataItem.Value.map(function (value) { + if (value.length > vr.maxLength) { + log.warn("Truncating value ".concat(value, " of ").concat(naturalName, " because it is longer than ").concat(vr.maxLength)); + return value.slice(0, vr.maxLength); + } else { + return value; + } + }); + } + } + + var tag = DicomMetaDictionary.unpunctuateTag(entry.tag); + unnaturalDataset[tag] = dataItem; + } else { + var validMetaNames = ["_vrMap", "_meta"]; + + if (validMetaNames.indexOf(name) == -1) { + log.warn("Unknown name in dataset", name, ":", dataset[name]); + } + } + }); + return unnaturalDataset; + } + }, { + key: "uid", + value: function uid() { + var uid = "2.25." + Math.floor(1 + Math.random() * 9); + + for (var index = 0; index < 38; index++) { + uid = uid + Math.floor(Math.random() * 10); + } + + return uid; + } // date and time in UTC + + }, { + key: "date", + value: function date() { + var now = new Date(); + return now.toISOString().replace(/-/g, "").slice(0, 8); + } + }, { + key: "time", + value: function time() { + var now = new Date(); + return now.toISOString().replace(/:/g, "").slice(11, 17); + } + }, { + key: "dateTime", + value: function dateTime() { + // "2017-07-07T16:09:18.079Z" -> "20170707160918.079" + var now = new Date(); + return now.toISOString().replace(/[:\-TZ]/g, ""); + } + }, { + key: "_generateNameMap", + value: function _generateNameMap() { + DicomMetaDictionary.nameMap = {}; + Object.keys(DicomMetaDictionary.dictionary).forEach(function (tag) { + var dict = DicomMetaDictionary.dictionary[tag]; + + if (dict.version != "PrivateTag") { + DicomMetaDictionary.nameMap[dict.name] = dict; + } + }); + } + }, { + key: "_generateCustomNameMap", + value: function _generateCustomNameMap(dictionary) { + var nameMap = {}; + Object.keys(dictionary).forEach(function (tag) { + var dict = dictionary[tag]; + + if (dict.version != "PrivateTag") { + nameMap[dict.name] = dict; + } + }); + return nameMap; + } + }, { + key: "_generateUIDMap", + value: function _generateUIDMap() { + DicomMetaDictionary.sopClassUIDsByName = {}; + Object.keys(DicomMetaDictionary.sopClassNamesByUID).forEach(function (uid) { + var name = DicomMetaDictionary.sopClassNamesByUID[uid]; + DicomMetaDictionary.sopClassUIDsByName[name] = uid; + }); + } + }]); + + return DicomMetaDictionary; + }(); // Subset of those listed at: + // http://dicom.nema.org/medical/dicom/current/output/html/part04.html#sect_B.5 + + + DicomMetaDictionary.sopClassNamesByUID = { + "1.2.840.10008.5.1.4.1.1.2": "CTImage", + "1.2.840.10008.5.1.4.1.1.2.1": "EnhancedCTImage", + "1.2.840.10008.5.1.4.1.1.2.2": "LegacyConvertedEnhancedCTImage", + "1.2.840.10008.5.1.4.1.1.3.1": "USMultiframeImage", + "1.2.840.10008.5.1.4.1.1.4": "MRImage", + "1.2.840.10008.5.1.4.1.1.4.1": "EnhancedMRImage", + "1.2.840.10008.5.1.4.1.1.4.2": "MRSpectroscopy", + "1.2.840.10008.5.1.4.1.1.4.3": "EnhancedMRColorImage", + "1.2.840.10008.5.1.4.1.1.4.4": "LegacyConvertedEnhancedMRImage", + "1.2.840.10008.5.1.4.1.1.6.1": "USImage", + "1.2.840.10008.5.1.4.1.1.6.2": "EnhancedUSVolume", + "1.2.840.10008.5.1.4.1.1.7": "SecondaryCaptureImage", + "1.2.840.10008.5.1.4.1.1.30": "ParametricMapStorage", + "1.2.840.10008.5.1.4.1.1.66": "RawData", + "1.2.840.10008.5.1.4.1.1.66.1": "SpatialRegistration", + "1.2.840.10008.5.1.4.1.1.66.2": "SpatialFiducials", + "1.2.840.10008.5.1.4.1.1.66.3": "DeformableSpatialRegistration", + "1.2.840.10008.5.1.4.1.1.66.4": "Segmentation", + "1.2.840.10008.5.1.4.1.1.67": "RealWorldValueMapping", + "1.2.840.10008.5.1.4.1.1.88.11": "BasicTextSR", + "1.2.840.10008.5.1.4.1.1.88.22": "EnhancedSR", + "1.2.840.10008.5.1.4.1.1.88.33": "ComprehensiveSR", + "1.2.840.10008.5.1.4.1.1.128": "PETImage", + "1.2.840.10008.5.1.4.1.1.130": "EnhancedPETImage", + "1.2.840.10008.5.1.4.1.1.128.1": "LegacyConvertedEnhancedPETImage" + }; + DicomMetaDictionary.dictionary = dictionary; + + DicomMetaDictionary._generateNameMap(); + + DicomMetaDictionary._generateUIDMap(); + + var singleVRs = ["SQ", "OF", "OW", "OB", "UN", "LT"]; + var encodingMapping = { + "": "iso-8859-1", + "iso-ir-6": "iso-8859-1", + "iso-ir-13": "shift-jis", + "iso-ir-100": "latin1", + "iso-ir-101": "iso-8859-2", + "iso-ir-109": "iso-8859-3", + "iso-ir-110": "iso-8859-4", + "iso-ir-126": "iso-ir-126", + "iso-ir-127": "iso-ir-127", + "iso-ir-138": "iso-ir-138", + "iso-ir-144": "iso-ir-144", + "iso-ir-148": "iso-ir-148", + "iso-ir-166": "tis-620", + "iso-2022-ir-6": "iso-8859-1", + "iso-2022-ir-13": "shift-jis", + "iso-2022-ir-87": "iso-2022-jp", + "iso-2022-ir-100": "latin1", + "iso-2022-ir-101": "iso-8859-2", + "iso-2022-ir-109": "iso-8859-3", + "iso-2022-ir-110": "iso-8859-4", + "iso-2022-ir-126": "iso-ir-126", + "iso-2022-ir-127": "iso-ir-127", + "iso-2022-ir-138": "iso-ir-138", + "iso-2022-ir-144": "iso-ir-144", + "iso-2022-ir-148": "iso-ir-148", + "iso-2022-ir-149": "euc-kr", + "iso-2022-ir-159": "iso-2022-jp", + "iso-2022-ir-166": "tis-620", + "iso-2022-ir-58": "iso-ir-58", + "iso-ir-192": "utf-8", + gb18030: "gb18030", + "iso-2022-gbk": "gbk", + "iso-2022-58": "gb2312", + gbk: "gbk" + }; + var encapsulatedSyntaxes = ["1.2.840.10008.1.2.4.50", "1.2.840.10008.1.2.4.51", "1.2.840.10008.1.2.4.57", "1.2.840.10008.1.2.4.70", "1.2.840.10008.1.2.4.80", "1.2.840.10008.1.2.4.81", "1.2.840.10008.1.2.4.90", "1.2.840.10008.1.2.4.91", "1.2.840.10008.1.2.4.92", "1.2.840.10008.1.2.4.93", "1.2.840.10008.1.2.4.94", "1.2.840.10008.1.2.4.95", "1.2.840.10008.1.2.5", "1.2.840.10008.1.2.6.1", "1.2.840.10008.1.2.4.100", "1.2.840.10008.1.2.4.102", "1.2.840.10008.1.2.4.103"]; + + var DicomMessage = /*#__PURE__*/function () { + function DicomMessage() { + _classCallCheck(this, DicomMessage); + } + + _createClass(DicomMessage, null, [{ + key: "read", + value: function read(bufferStream, syntax, ignoreErrors) { + var untilTag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var includeUntilTagValue = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + log.warn("DicomMessage.read to be deprecated after dcmjs 0.24.x"); + return this._read(bufferStream, syntax, { + ignoreErrors: ignoreErrors, + untilTag: untilTag, + includeUntilTagValue: includeUntilTagValue + }); + } + }, { + key: "readTag", + value: function readTag(bufferStream, syntax) { + var untilTag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var includeUntilTagValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + log.warn("DicomMessage.readTag to be deprecated after dcmjs 0.24.x"); + return this._readTag(bufferStream, syntax, { + untilTag: untilTag, + includeUntilTagValue: includeUntilTagValue + }); + } + }, { + key: "_read", + value: function _read(bufferStream, syntax) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { + ignoreErrors: false, + untilTag: null, + includeUntilTagValue: false + }; + var ignoreErrors = options.ignoreErrors, + untilTag = options.untilTag; + var dict = {}; + + try { + while (!bufferStream.end()) { + var readInfo = DicomMessage._readTag(bufferStream, syntax, options); + + var cleanTagString = readInfo.tag.toCleanString(); + + if (cleanTagString === "00080005") { + if (readInfo.values.length > 0) { + var coding = readInfo.values[0]; + coding = coding.replace(/[_ ]/g, "-").toLowerCase(); + + if (coding in encodingMapping) { + coding = encodingMapping[coding]; + bufferStream.setDecoder(new TextDecoder(coding)); + } else if (ignoreErrors) { + log.warn("Unsupported character set: ".concat(coding, ", using default character set")); + } else { + throw Error("Unsupported character set: ".concat(coding)); + } + } + + // if (readInfo.values.length > 1) { + // if (ignoreErrors) { + // log.warn("Using multiple character sets is not supported, proceeding with just the first character set", readInfo.values); + // } else { + // throw Error("Using multiple character sets is not supported: ".concat(readInfo.values)); + // } + // } + + readInfo.values = ["ISO_IR 192"]; // change SpecificCharacterSet to UTF-8 + } + + dict[cleanTagString] = { + vr: readInfo.vr.type, + Value: readInfo.values + }; + + if (untilTag && untilTag === cleanTagString) { + break; + } + } + + return dict; + } catch (err) { + if (ignoreErrors) { + log.warn("WARN:", err); + return dict; + } + + throw err; + } + } + }, { + key: "_normalizeSyntax", + value: function _normalizeSyntax(syntax) { + if (syntax == IMPLICIT_LITTLE_ENDIAN || syntax == EXPLICIT_LITTLE_ENDIAN$1 || syntax == EXPLICIT_BIG_ENDIAN) { + return syntax; + } else { + return EXPLICIT_LITTLE_ENDIAN$1; + } + } + }, { + key: "isEncapsulated", + value: function isEncapsulated(syntax) { + return encapsulatedSyntaxes.indexOf(syntax) != -1; + } + }, { + key: "readFile", + value: function readFile(buffer) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + ignoreErrors: false, + untilTag: null, + includeUntilTagValue: false, + noCopy: false + }; + var stream = new ReadBufferStream(buffer, null, { + noCopy: options.noCopy + }), + useSyntax = EXPLICIT_LITTLE_ENDIAN$1; + stream.reset(); + stream.increment(128); + + if (stream.readAsciiString(4) !== "DICM") { + throw new Error("Invalid DICOM file, expected header is missing"); + } + + var el = DicomMessage._readTag(stream, useSyntax); + + if (el.tag.toCleanString() !== "00020000") { + throw new Error("Invalid DICOM file, meta length tag is malformed or not present."); + } + + var metaLength = el.values[0]; //read header buffer + + var metaStream = stream.more(metaLength); + + var metaHeader = DicomMessage._read(metaStream, useSyntax, options); //get the syntax + + + var mainSyntax = metaHeader["00020010"].Value[0]; //in case of deflated dataset, decompress and continue + + if (mainSyntax === DEFLATED_EXPLICIT_LITTLE_ENDIAN) { + stream = new DeflatedReadBufferStream(stream, { + noCopy: options.noCopy + }); + } + + mainSyntax = DicomMessage._normalizeSyntax(mainSyntax); + + var objects = DicomMessage._read(stream, mainSyntax, options); + + var dicomDict = new DicomDict(metaHeader); + dicomDict.dict = objects; + return dicomDict; + } + }, { + key: "writeTagObject", + value: function writeTagObject(stream, tagString, vr, values, syntax, writeOptions) { + var tag = Tag.fromString(tagString); + tag.write(stream, vr, values, syntax, writeOptions); + } + }, { + key: "write", + value: function write(jsonObjects, useStream, syntax, writeOptions) { + var written = 0; + var sortedTags = Object.keys(jsonObjects).sort(); + sortedTags.forEach(function (tagString) { + var tag = Tag.fromString(tagString), + tagObject = jsonObjects[tagString], + vrType = tagObject.vr, + values = tagObject.Value; + written += tag.write(useStream, vrType, values, syntax, writeOptions); + }); + return written; + } + }, { + key: "_readTag", + value: function _readTag(stream, syntax) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { + untilTag: null, + includeUntilTagValue: false + }; + var untilTag = options.untilTag, + includeUntilTagValue = options.includeUntilTagValue; + var implicit = syntax == IMPLICIT_LITTLE_ENDIAN ? true : false, + isLittleEndian = syntax == IMPLICIT_LITTLE_ENDIAN || syntax == EXPLICIT_LITTLE_ENDIAN$1 ? true : false; + var oldEndian = stream.isLittleEndian; + stream.setEndian(isLittleEndian); + var tag = Tag.readTag(stream); + + if (untilTag === tag.toCleanString() && untilTag !== null) { + if (!includeUntilTagValue) { + return { + tag: tag, + vr: 0, + values: 0 + }; + } + } + + var length = null, + vr = null, + vrType; + + if (implicit) { + length = stream.readUint32(); + var elementData = DicomMessage.lookupTag(tag); + + if (elementData) { + vrType = elementData.vr; + } else { + //unknown tag + if (length == 0xffffffff) { + vrType = "SQ"; + } else if (tag.isPixelDataTag()) { + vrType = "OW"; + } else if (vrType == "xs") { + vrType = "US"; + } else if (tag.isPrivateCreator()) { + vrType = "LO"; + } else { + vrType = "UN"; + } + } + + vr = ValueRepresentation.createByTypeString(vrType); + } else { + vrType = stream.readVR(); + vr = ValueRepresentation.createByTypeString(vrType); + + if (vr.isExplicit()) { + stream.increment(2); + length = stream.readUint32(); + } else { + length = stream.readUint16(); + } + } + + var values = []; + + if (vr.isBinary() && length > vr.maxLength && !vr.noMultiple) { + var times = length / vr.maxLength, + i = 0; + + while (i++ < times) { + values.push(vr.read(stream, vr.maxLength, syntax)); + } + } else { + var val = vr.read(stream, length, syntax); + + if (!vr.isBinary() && singleVRs.indexOf(vr.type) == -1) { + values = val; + + if (typeof val === "string") { + values = val.split(String.fromCharCode(0x5c)); + } + } else if (vr.type == "SQ") { + values = val; + } else if (vr.type == "OW" || vr.type == "OB") { + values = val; + } else { + Array.isArray(val) ? values = val : values.push(val); + } + } + + stream.setEndian(oldEndian); + return { + tag: tag, + vr: vr, + values: values + }; + } + }, { + key: "lookupTag", + value: function lookupTag(tag) { + return DicomMetaDictionary.dictionary[tag.toString()]; + } + }]); + + return DicomMessage; + }(); + + var EXPLICIT_LITTLE_ENDIAN = "1.2.840.10008.1.2.1"; + + var DicomDict = /*#__PURE__*/function () { + function DicomDict(meta) { + _classCallCheck(this, DicomDict); + + this.meta = meta; + this.dict = {}; + } + + _createClass(DicomDict, [{ + key: "upsertTag", + value: function upsertTag(tag, vr, values) { + if (this.dict[tag]) { + this.dict[tag].Value = values; + } else { + this.dict[tag] = { + vr: vr, + Value: values + }; + } + } + }, { + key: "write", + value: function write() { + var writeOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + allowInvalidVRLength: false + }; + var metaSyntax = EXPLICIT_LITTLE_ENDIAN; + var fileStream = new WriteBufferStream(4096, true); + fileStream.writeUint8Repeat(0, 128); + fileStream.writeAsciiString("DICM"); + var metaStream = new WriteBufferStream(1024); + + if (!this.meta["00020010"]) { + this.meta["00020010"] = { + vr: "UI", + Value: [EXPLICIT_LITTLE_ENDIAN] + }; + } + + DicomMessage.write(this.meta, metaStream, metaSyntax, writeOptions); + DicomMessage.writeTagObject(fileStream, "00020000", "UL", metaStream.size, metaSyntax, writeOptions); + fileStream.concat(metaStream); + var useSyntax = this.meta["00020010"].Value[0]; + DicomMessage.write(this.dict, fileStream, useSyntax, writeOptions); + return fileStream.getBuffer(); + } + }]); + + return DicomDict; + }(); + + var DICOMWEB = /*#__PURE__*/function () { + /* + JavaScript DICOMweb REST API for browser use. + Design: + * map rest api to high-level code with modern conventions + ** ES6: classes, arrow functions, let... + ** promises + ** json converted to objects + examples: see tests() method below. + */ + function DICOMWEB() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, DICOMWEB); + + this.rootURL = options.rootURL; + this.progressCallback = options.progressCallback; + } + + _createClass(DICOMWEB, [{ + key: "request", + value: function request(endpoint) { + var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var payload = arguments.length > 2 ? arguments[2] : undefined; + var responseType = DICOMWEB.responseType(endpoint); + var service = DICOMWEB.endpointService(endpoint); + var url = this.rootURL + "/" + service + endpoint; + var firstParameter = true; + Object.keys(parameters).forEach(function (parameter) { + if (firstParameter) { + url += "?"; + firstParameter = false; + } else { + url += "&"; + } + + url += parameter + "=" + encodeURIComponent(parameters[parameter]); + }); + + function promiseHandler(resolve, reject) { + var request = new XMLHttpRequest(); + request.open("GET", url); + request.responseType = responseType; + + request.onload = function () { + resolve(request.response); + }; + + request.onprogress = this.progressCallback; + + request.onerror = function (error) { + log.error(request.response); + reject(error); + }; + + request.send(payload); + } + + var promise = new Promise(promiseHandler.bind(this)); + return promise; + } + }, { + key: "patients", + value: function patients() { + return this.request("patients"); + } + }, { + key: "studies", + value: function studies(patientID) { + return this.request("studies", { + PatientID: patientID + }); + } + }, { + key: "series", + value: function series(studyInstanceUID) { + return this.request("series", { + StudyInstanceUID: studyInstanceUID + }); + } + }, { + key: "instances", + value: function instances(studyInstanceUID, seriesInstanceUID) { + return this.request("instances", { + StudyInstanceUID: studyInstanceUID, + SeriesInstanceUID: seriesInstanceUID + }); + } + }, { + key: "instance", + value: function instance(studyInstanceUID, seriesInstanceUID, sopInstanceUID) { + return this.request("wado", { + requestType: "WADO", + studyUID: studyInstanceUID, + seriesUID: seriesInstanceUID, + objectUID: sopInstanceUID, + contentType: "application/dicom" + }); + } + }, { + key: "tests", + value: function tests() { + var testingServerURL = "http://quantome.org:4242/dcm4chee-arc/aets/DCM4CHEE"; + var testOptions = { + rootURL: testingServerURL + }; + new DICOMWEB(testOptions).patients().then(function (responses) { + responses.forEach(function (patient) { + log.log(patient); + }); + }); + } + }], [{ + key: "responseType", + value: function responseType(endpoint) { + var types = { + wado: "arraybuffer" + }; + return types[endpoint] ? types[endpoint] : "json"; + } // which URL service to use for each of the high level services + + }, { + key: "endpointService", + value: function endpointService(endpoint) { + var services = { + wado: "" + }; + return Object.keys(services).indexOf(endpoint) != -1 ? services[endpoint] : "rs/"; + } + }, { + key: "randomEntry", + value: function randomEntry(array) { + return array[Math.floor(Math.random() * array.length)]; + } + }]); + + return DICOMWEB; + }(); + + // + // Handle DICOM and CIELAB colors + // based on: + // https://github.com/michaelonken/dcmtk/blob/3c68f0e882e22e6d9e2a42f836332c0ca21b3e7f/dcmiod/libsrc/cielabutil.cc + // + // RGB here refers to sRGB 0-1 per component. + // dicomlab is CIELAB values as defined in the dicom standard + // XYZ is CIEXYZ convention + // + // TODO: needs a test suite + // TODO: only dicomlab2RGB tested on real data + // + // + var Colors = /*#__PURE__*/function () { + function Colors() { + _classCallCheck(this, Colors); + } + + _createClass(Colors, null, [{ + key: "d65WhitePointXYZ", + value: function d65WhitePointXYZ() { + // white points of D65 light point (CIELAB standard white point) + return [0.950456, 1.0, 1.088754]; + } + }, { + key: "dicomlab2RGB", + value: function dicomlab2RGB(dicomlab) { + return Colors.lab2RGB(Colors.dicomlab2LAB(dicomlab)); + } + }, { + key: "rgb2DICOMLAB", + value: function rgb2DICOMLAB(rgb) { + return Colors.lab2DICOMLAB(Colors.rgb2LAB(rgb)); + } + }, { + key: "dicomlab2LAB", + value: function dicomlab2LAB(dicomlab) { + return [dicomlab[0] * 100.0 / 65535.0, // results in 0 <= L <= 100 + dicomlab[1] * 255.0 / 65535.0 - 128, // results in -128 <= a <= 127 + dicomlab[2] * 255.0 / 65535.0 - 128 // results in -128 <= b <= 127 + ]; + } + }, { + key: "lab2DICOMLAB", + value: function lab2DICOMLAB(lab) { + return [lab[0] * 65535.0 / 100.0, // results in 0 <= L <= 65535 + (lab[1] + 128) * 65535.0 / 255.0, // results in 0 <= a <= 65535 + (lab[2] + 128) * 65535.0 / 255.0 // results in 0 <= b <= 65535 + ]; + } + }, { + key: "rgb2LAB", + value: function rgb2LAB(rgb) { + return Colors.xyz2LAB(Colors.rgb2XYZ(rgb)); + } + }, { + key: "gammaCorrection", + value: function gammaCorrection(n) { + if (n <= 0.0031306684425005883) { + return 12.92 * n; + } else { + return 1.055 * Math.pow(n, 0.416666666666666667) - 0.055; + } + } + }, { + key: "invGammaCorrection", + value: function invGammaCorrection(n) { + if (n <= 0.0404482362771076) { + return n / 12.92; + } else { + return Math.pow((n + 0.055) / 1.055, 2.4); + } + } + }, { + key: "rgb2XYZ", + value: function rgb2XYZ(rgb) { + var R = Colors.invGammaCorrection(rgb[0]); + var G = Colors.invGammaCorrection(rgb[1]); + var B = Colors.invGammaCorrection(rgb[2]); + return [0.4123955889674142161 * R + 0.3575834307637148171 * G + 0.1804926473817015735 * B, 0.2125862307855955516 * R + 0.7151703037034108499 * G + 0.07220049864333622685 * B, 0.01929721549174694484 * R + 0.1191838645808485318 * G + 0.950497125131579766 * B]; + } + }, { + key: "xyz2LAB", + value: function xyz2LAB(xyz) { + var whitePoint = Colors.d65WhitePointXYZ(); + var X = xyz[0] / whitePoint[0]; + var Y = xyz[1] / whitePoint[1]; + var Z = xyz[2] / whitePoint[2]; + X = Colors.labf(X); + Y = Colors.labf(Y); + Z = Colors.labf(Z); + return [116 * Y - 16, 500 * (X - Y), 200 * (Y - Z)]; + } + }, { + key: "lab2RGB", + value: function lab2RGB(lab) { + return Colors.xyz2RGB(Colors.lab2XYZ(lab)); + } + }, { + key: "lab2XYZ", + value: function lab2XYZ(lab) { + var L = (lab[0] + 16) / 116; + var a = L + lab[1] / 500; + var b = L - lab[2] / 200; + var whitePoint = Colors.d65WhitePointXYZ(); + return [whitePoint[0] * Colors.labfInv(a), whitePoint[1] * Colors.labfInv(L), whitePoint[2] * Colors.labfInv(b)]; + } + }, { + key: "xyz2RGB", + value: function xyz2RGB(xyz) { + var R1 = 3.2406 * xyz[0] - 1.5372 * xyz[1] - 0.4986 * xyz[2]; + var G1 = -0.9689 * xyz[0] + 1.8758 * xyz[1] + 0.0415 * xyz[2]; + var B1 = 0.0557 * xyz[0] - 0.204 * xyz[1] + 1.057 * xyz[2]; + /* Force nonnegative values so that gamma correction is well-defined. */ + + var minimumComponent = Math.min(R1, G1); + minimumComponent = Math.min(minimumComponent, B1); + + if (minimumComponent < 0) { + R1 -= minimumComponent; + G1 -= minimumComponent; + B1 -= minimumComponent; + } + /* Transform from RGB to R'G'B' */ + + + return [Colors.gammaCorrection(R1), Colors.gammaCorrection(G1), Colors.gammaCorrection(B1)]; + } + }, { + key: "labf", + value: function labf(n) { + if (n >= 8.85645167903563082e-3) { + return Math.pow(n, 0.333333333333333); + } else { + return 841.0 / 108.0 * n + 4.0 / 29.0; + } + } + }, { + key: "labfInv", + value: function labfInv(n) { + if (n >= 0.206896551724137931) { + return n * n * n; + } else { + return 108.0 / 841.0 * (n - 4.0 / 29.0); + } + } + }]); + + return Colors; + }(); + + function datasetToDict(dataset) { + var fileMetaInformationVersionArray = new Uint8Array(2); + fileMetaInformationVersionArray[1] = 1; + var TransferSyntaxUID = dataset._meta.TransferSyntaxUID && dataset._meta.TransferSyntaxUID.Value && dataset._meta.TransferSyntaxUID.Value[0] ? dataset._meta.TransferSyntaxUID.Value[0] : "1.2.840.10008.1.2.1"; + dataset._meta = { + MediaStorageSOPClassUID: dataset.SOPClassUID, + MediaStorageSOPInstanceUID: dataset.SOPInstanceUID, + ImplementationVersionName: "dcmjs-0.0", + TransferSyntaxUID: TransferSyntaxUID, + ImplementationClassUID: "2.25.80302813137786398554742050926734630921603366648225212145404", + FileMetaInformationVersion: fileMetaInformationVersionArray.buffer + }; + var denaturalized = DicomMetaDictionary.denaturalizeDataset(dataset._meta); + var dicomDict = new DicomDict(denaturalized); + dicomDict.dict = DicomMetaDictionary.denaturalizeDataset(dataset); + return dicomDict; + } + + function datasetToBuffer(dataset) { + return Buffer.from(datasetToDict(dataset).write()); + } + + function datasetToBlob(dataset) { + var buffer = datasetToBuffer(dataset); + return new Blob([buffer], { + type: "application/dicom" + }); + } + + var DerivedDataset = /*#__PURE__*/function () { + function DerivedDataset(datasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, DerivedDataset); + + this.options = JSON.parse(JSON.stringify(options)); + var o = this.options; + o.Manufacturer = options.Manufacturer || "Unspecified"; + o.ManufacturerModelName = options.ManufacturerModelName || "Unspecified"; + o.SeriesDescription = options.SeriesDescription || "Research Derived series"; + o.SeriesNumber = options.SeriesNumber || "99"; + o.SoftwareVersions = options.SoftwareVersions || "0"; + o.DeviceSerialNumber = options.DeviceSerialNumber || "1"; + var date = DicomMetaDictionary.date(); + var time = DicomMetaDictionary.time(); + o.SeriesDate = options.SeriesDate || date; + o.SeriesTime = options.SeriesTime || time; + o.ContentDate = options.ContentDate || date; + o.ContentTime = options.ContentTime || time; + o.SOPInstanceUID = options.SOPInstanceUID || DicomMetaDictionary.uid(); + o.SeriesInstanceUID = options.SeriesInstanceUID || DicomMetaDictionary.uid(); + o.ClinicalTrialTimePointID = options.ClinicalTrialTimePointID || ""; + o.ClinicalTrialCoordinatingCenterName = options.ClinicalTrialCoordinatingCenterName || ""; + o.ClinicalTrialSeriesID = options.ClinicalTrialSeriesID || ""; + o.ImageComments = options.ImageComments || "NOT FOR CLINICAL USE"; + o.ContentQualification = "RESEARCH"; + this.referencedDatasets = datasets; // list of one or more dicom-like object instances + + this.referencedDataset = this.referencedDatasets[0]; + this.dataset = { + _vrMap: this.referencedDataset._vrMap, + _meta: this.referencedDataset._meta + }; + this.derive(); + } + + _createClass(DerivedDataset, [{ + key: "assignToDataset", + value: function assignToDataset(data) { + var _this = this; + + Object.keys(data).forEach(function (key) { + return _this.dataset[key] = data[key]; + }); + } + }, { + key: "assignFromReference", + value: function assignFromReference(tags) { + var _this2 = this; + + tags.forEach(function (tag) { + return _this2.dataset[tag] = _this2.referencedDataset[tag] || ""; + }); + } + }, { + key: "assignFromOptions", + value: function assignFromOptions(tags) { + var _this3 = this; + + tags.forEach(function (tag) { + return _this3.dataset[tag] = _this3.options[tag] || ""; + }); + } + }, { + key: "derive", + value: function derive() { + // common for all instances in study + this.assignFromReference(["AccessionNumber", "ReferringPhysicianName", "StudyDate", "StudyID", "StudyTime", "PatientName", "PatientID", "PatientBirthDate", "PatientSex", "PatientAge", "StudyInstanceUID", "StudyID"]); + this.assignFromOptions(["Manufacturer", "SoftwareVersions", "DeviceSerialNumber", "ManufacturerModelName", "SeriesDescription", "SeriesNumber", "ImageComments", "SeriesDate", "SeriesTime", "ContentDate", "ContentTime", "ContentQualification", "SOPInstanceUID", "SeriesInstanceUID"]); + } + }], [{ + key: "copyDataset", + value: function copyDataset(dataset) { + // copies everything but the buffers + return JSON.parse(JSON.stringify(dataset)); + } + }]); + + return DerivedDataset; + }(); + + var DerivedPixels = /*#__PURE__*/function (_DerivedDataset) { + _inherits(DerivedPixels, _DerivedDataset); + + var _super = _createSuper(DerivedPixels); + + function DerivedPixels(datasets) { + var _this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, DerivedPixels); + + _this = _super.call(this, datasets, options); + var o = _this.options; + o.ContentLabel = options.ContentLabel || ""; + o.ContentDescription = options.ContentDescription || ""; + o.ContentCreatorName = options.ContentCreatorName || ""; + return _this; + } // this assumes a normalized multiframe input and will create + // a multiframe derived image + + + _createClass(DerivedPixels, [{ + key: "derive", + value: function derive() { + _get(_getPrototypeOf(DerivedPixels.prototype), "derive", this).call(this); + + this.assignToDataset({ + ImageType: ["DERIVED", "PRIMARY"], + LossyImageCompression: "00", + InstanceNumber: "1" + }); + this.assignFromReference(["SOPClassUID", "Modality", "FrameOfReferenceUID", "PositionReferenceIndicator", "NumberOfFrames", "Rows", "Columns", "SamplesPerPixel", "PhotometricInterpretation", "BitsStored", "HighBit"]); + this.assignFromOptions(["ContentLabel", "ContentDescription", "ContentCreatorName"]); // + // TODO: more carefully copy only PixelMeasures and related + // TODO: add derivation references + // + + if (this.referencedDataset.SharedFunctionalGroupsSequence) { + this.dataset.SharedFunctionalGroupsSequence = DerivedDataset.copyDataset(this.referencedDataset.SharedFunctionalGroupsSequence); + } + + if (this.referencedDataset.PerFrameFunctionalGroupsSequence) { + this.dataset.PerFrameFunctionalGroupsSequence = DerivedDataset.copyDataset(this.referencedDataset.PerFrameFunctionalGroupsSequence); + } // make an array of zeros for the pixels + + + this.dataset.PixelData = new ArrayBuffer(this.referencedDataset.PixelData.byteLength); + } + }]); + + return DerivedPixels; + }(DerivedDataset); + + var DerivedImage = /*#__PURE__*/function (_DerivedPixels) { + _inherits(DerivedImage, _DerivedPixels); + + var _super = _createSuper(DerivedImage); + + function DerivedImage(datasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, DerivedImage); + + return _super.call(this, datasets, options); + } + + _createClass(DerivedImage, [{ + key: "derive", + value: function derive() { + _get(_getPrototypeOf(DerivedImage.prototype), "derive", this).call(this); + + this.assignFromReference(["WindowCenter", "WindowWidth", "BitsAllocated", "PixelRepresentation", "BodyPartExamined", "Laterality", "PatientPosition", "RescaleSlope", "RescaleIntercept", "PixelPresentation", "VolumetricProperties", "VolumeBasedCalculationTechnique", "PresentationLUTShape"]); + } + }]); + + return DerivedImage; + }(DerivedPixels); + + var Normalizer = /*#__PURE__*/function () { + function Normalizer(datasets) { + _classCallCheck(this, Normalizer); + + this.datasets = datasets; // one or more dicom-like object instances + + this.dataset = undefined; // a normalized multiframe dicom object instance + } + + _createClass(Normalizer, [{ + key: "normalize", + value: function normalize() { + return "No normalization defined"; + } + }], [{ + key: "consistentSOPClassUIDs", + value: function consistentSOPClassUIDs(datasets) { + // return sopClassUID if all exist and match, otherwise undefined + var sopClassUID; + datasets.forEach(function (dataset) { + if (!dataset.SOPClassUID) { + return undefined; + } + + if (!sopClassUID) { + sopClassUID = dataset.SOPClassUID; + } + + if (dataset.SOPClassUID !== sopClassUID) { + log.error("inconsistent sopClassUIDs: ", dataset.SOPClassUID, sopClassUID); + return undefined; + } + }); + return sopClassUID; + } + }, { + key: "normalizerForSOPClassUID", + value: function normalizerForSOPClassUID(sopClassUID) { + sopClassUID = sopClassUID.replace(/[^0-9.]/g, ""); // TODO: clean all VRs as part of normalizing + + var toUID = DicomMetaDictionary.sopClassUIDsByName; + var sopClassUIDMap = {}; + sopClassUIDMap[toUID.CTImage] = CTImageNormalizer; + sopClassUIDMap[toUID.ParametricMapStorage] = PMImageNormalizer; + sopClassUIDMap[toUID.MRImage] = MRImageNormalizer; + sopClassUIDMap[toUID.EnhancedCTImage] = EnhancedCTImageNormalizer; + sopClassUIDMap[toUID.LegacyConvertedEnhancedCTImage] = EnhancedCTImageNormalizer; + sopClassUIDMap[toUID.EnhancedMRImage] = EnhancedMRImageNormalizer; + sopClassUIDMap[toUID.LegacyConvertedEnhancedMRImage] = EnhancedMRImageNormalizer; + sopClassUIDMap[toUID.EnhancedUSVolume] = EnhancedUSVolumeNormalizer; + sopClassUIDMap[toUID.PETImage] = PETImageNormalizer; + sopClassUIDMap[toUID.EnhancedPETImage] = PETImageNormalizer; + sopClassUIDMap[toUID.LegacyConvertedEnhancedPETImage] = PETImageNormalizer; + sopClassUIDMap[toUID.Segmentation] = SEGImageNormalizer; + sopClassUIDMap[toUID.DeformableSpatialRegistration] = DSRNormalizer; + return sopClassUIDMap[sopClassUID]; + } + }, { + key: "isMultiframeSOPClassUID", + value: function isMultiframeSOPClassUID(sopClassUID) { + var toUID = DicomMetaDictionary.sopClassUIDsByName; + var multiframeSOPClasses = [toUID.EnhancedMRImage, toUID.LegacyConvertedEnhancedMRImage, toUID.EnhancedCTImage, toUID.LegacyConvertedEnhancedCTImage, toUID.EnhancedUSVolume, toUID.EnhancedPETImage, toUID.LegacyConvertedEnhancedPETImage, toUID.Segmentation, toUID.ParametricMapStorage]; + return multiframeSOPClasses.indexOf(sopClassUID) !== -1; + } + }, { + key: "isMultiframeDataset", + value: function isMultiframeDataset() { + var ds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.dataset; + var sopClassUID = ds.SOPClassUID.replace(/[^0-9.]/g, ""); // TODO: clean all VRs as part of normalizing + + return Normalizer.isMultiframeSOPClassUID(sopClassUID); + } + }, { + key: "normalizeToDataset", + value: function normalizeToDataset(datasets) { + var sopClassUID = Normalizer.consistentSOPClassUIDs(datasets); + var normalizerClass = Normalizer.normalizerForSOPClassUID(sopClassUID); + + if (!normalizerClass) { + log.error("no normalizerClass for ", sopClassUID); + return undefined; + } + + var normalizer = new normalizerClass(datasets); + normalizer.normalize(); + return normalizer.dataset; + } + }]); + + return Normalizer; + }(); + + var ImageNormalizer = /*#__PURE__*/function (_Normalizer) { + _inherits(ImageNormalizer, _Normalizer); + + var _super = _createSuper(ImageNormalizer); + + function ImageNormalizer() { + _classCallCheck(this, ImageNormalizer); + + return _super.apply(this, arguments); + } + + _createClass(ImageNormalizer, [{ + key: "normalize", + value: function normalize() { + this.convertToMultiframe(); + this.normalizeMultiframe(); + } + }, { + key: "convertToMultiframe", + value: function convertToMultiframe() { + if (this.datasets.length === 1 && Normalizer.isMultiframeDataset(this.datasets[0])) { + // already a multiframe, so just use it + this.dataset = this.datasets[0]; + return; + } + + this.derivation = new DerivedImage(this.datasets); + this.dataset = this.derivation.dataset; + var ds = this.dataset; // create a new multiframe from the source datasets + // fill in only those elements required to make a valid image + // for volumetric processing + + var referenceDataset = this.datasets[0]; + ds.NumberOfFrames = this.datasets.length; // TODO: develop sets of elements to copy over in loops + + ds.SOPClassUID = referenceDataset.SOPClassUID; + ds.Rows = referenceDataset.Rows; + ds.Columns = referenceDataset.Columns; + ds.BitsAllocated = referenceDataset.BitsAllocated; + ds.PixelRepresentation = referenceDataset.PixelRepresentation; + ds.RescaleSlope = referenceDataset.RescaleSlope || "1"; + ds.RescaleIntercept = referenceDataset.RescaleIntercept || "0"; //ds.BurnedInAnnotation = referenceDataset.BurnedInAnnotation || "YES"; + // sort + // https://github.com/pieper/Slicer3/blob/master/Base/GUI/Tcl/LoadVolume.tcl + // TODO: add spacing checks: + // https://github.com/Slicer/Slicer/blob/master/Modules/Scripted/DICOMPlugins/DICOMScalarVolumePlugin.py#L228-L250 + // TODO: put this information into the Shared and PerFrame functional groups + // TODO: sorting of frames could happen in normalizeMultiframe instead, since other + // multiframe converters may not sort the images + // TODO: sorting can be seen as part of generation of the Dimension Multiframe Dimension Module + // and should really be done in an acquisition-specific way (e.g. for DCE) + + var referencePosition = referenceDataset.ImagePositionPatient; + var rowVector = referenceDataset.ImageOrientationPatient.slice(0, 3); + var columnVector = referenceDataset.ImageOrientationPatient.slice(3, 6); + var scanAxis = ImageNormalizer.vec3CrossProduct(rowVector, columnVector); + var distanceDatasetPairs = []; + this.datasets.forEach(function (dataset) { + var position = dataset.ImagePositionPatient.slice(); + var positionVector = ImageNormalizer.vec3Subtract(position, referencePosition); + var distance = ImageNormalizer.vec3Dot(positionVector, scanAxis); + distanceDatasetPairs.push([distance, dataset]); + }); + distanceDatasetPairs.sort(function (a, b) { + return b[0] - a[0]; + }); // assign array buffers + + if (ds.BitsAllocated !== 16) { + log.error("Only works with 16 bit data, not " + String(this.dataset.BitsAllocated)); + } + + if (referenceDataset._vrMap && !referenceDataset._vrMap.PixelData) { + log.warn("No vr map given for pixel data, using OW"); + ds._vrMap = { + PixelData: "OW" + }; + } else { + ds._vrMap = { + PixelData: referenceDataset._vrMap.PixelData + }; + } + + var frameSize = referenceDataset.PixelData.byteLength; + ds.PixelData = new ArrayBuffer(ds.NumberOfFrames * frameSize); + var frame = 0; + distanceDatasetPairs.forEach(function (pair) { + var dataset = pair[1]; + var pixels = new Uint16Array(dataset.PixelData); + var frameView = new Uint16Array(ds.PixelData, frame * frameSize, frameSize / 2); + + try { + frameView.set(pixels); + } catch (e) { + if (e instanceof RangeError) { + var message = "Error inserting pixels in PixelData\n" + "frameSize ".concat(frameSize, "\n") + "NumberOfFrames ".concat(ds.NumberOfFrames, "\n") + "pair ".concat(pair, "\n") + "dataset PixelData size ".concat(dataset.PixelData.length); + log.error(message); + } + } + + frame++; + }); + + if (ds.NumberOfFrames < 2) { + // TODO + log.error("Cannot populate shared groups uniquely without multiple frames"); + } + + var _distanceDatasetPairs = _slicedToArray(distanceDatasetPairs[0], 2), + distance0 = _distanceDatasetPairs[0], + dataset0 = _distanceDatasetPairs[1]; + + var distance1 = distanceDatasetPairs[1][0]; // + // make the functional groups + // + // shared + + var SpacingBetweenSlices = Math.abs(distance1 - distance0); + ds.SharedFunctionalGroupsSequence = { + PlaneOrientationSequence: { + ImageOrientationPatient: dataset0.ImageOrientationPatient + }, + PixelMeasuresSequence: { + PixelSpacing: dataset0.PixelSpacing, + SpacingBetweenSlices: SpacingBetweenSlices, + SliceThickness: SpacingBetweenSlices + } + }; + ds.ReferencedSeriesSequence = { + SeriesInstanceUID: dataset0.SeriesInstanceUID, + ReferencedInstanceSequence: [] + }; // per-frame + + ds.PerFrameFunctionalGroupsSequence = []; // copy over each datasets window/level into the per-frame groups + // and set the referenced series uid + + distanceDatasetPairs.forEach(function (pair) { + var dataset = pair[1]; + ds.PerFrameFunctionalGroupsSequence.push({ + PlanePositionSequence: { + ImagePositionPatient: dataset.ImagePositionPatient + }, + FrameVOILUTSequence: { + WindowCenter: dataset.WindowCenter, + WindowWidth: dataset.WindowWidth + } + }); + ds.ReferencedSeriesSequence.ReferencedInstanceSequence.push({ + ReferencedSOPClassUID: dataset.SOPClassUID, + ReferencedSOPInstanceUID: dataset.SOPInstanceUID + }); + }); + var dimensionUID = DicomMetaDictionary.uid(); + this.dataset.DimensionOrganizationSequence = { + DimensionOrganizationUID: dimensionUID + }; + this.dataset.DimensionIndexSequence = [{ + DimensionOrganizationUID: dimensionUID, + DimensionIndexPointer: 2097202, + FunctionalGroupPointer: 2134291, + // PlanePositionSequence + DimensionDescriptionLabel: "ImagePositionPatient" + }]; + } + }, { + key: "normalizeMultiframe", + value: function normalizeMultiframe() { + var ds = this.dataset; + + if (!ds.NumberOfFrames) { + log.error("Missing number or frames not supported"); + return; + } + + if (!ds.PixelRepresentation) { + // Required tag: guess signed + ds.PixelRepresentation = 1; + } + + if (!ds.StudyID || ds.StudyID === "") { + // Required tag: fill in if needed + ds.StudyID = "No Study ID"; + } + + var validLateralities = ["R", "L"]; + + if (validLateralities.indexOf(ds.Laterality) === -1) { + delete ds.Laterality; + } + + if (!ds.PresentationLUTShape) { + ds.PresentationLUTShape = "IDENTITY"; + } + + if (!ds.SharedFunctionalGroupsSequence) { + log.error("Can only process multiframe data with SharedFunctionalGroupsSequence"); + } // TODO: special case! + + + if (ds.BodyPartExamined === "PROSTATE") { + ds.SharedFunctionalGroupsSequence.FrameAnatomySequence = { + AnatomicRegionSequence: { + CodeValue: "T-9200B", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Prostate" + }, + FrameLaterality: "U" + }; + } + + var rescaleIntercept = ds.RescaleIntercept || 0; + var rescaleSlope = ds.RescaleSlope || 1; + ds.SharedFunctionalGroupsSequence.PixelValueTransformationSequence = { + RescaleIntercept: rescaleIntercept, + RescaleSlope: rescaleSlope, + RescaleType: "US" + }; + var frameNumber = 1; + this.datasets.forEach(function (dataset) { + if (ds.NumberOfFrames === 1) ds.PerFrameFunctionalGroupsSequence = [ds.PerFrameFunctionalGroupsSequence]; + ds.PerFrameFunctionalGroupsSequence[frameNumber - 1].FrameContentSequence = { + FrameAcquisitionDuration: 0, + StackID: 1, + InStackPositionNumber: frameNumber, + DimensionIndexValues: frameNumber + }; + var frameTime = dataset.AcquisitionDate + dataset.AcquisitionTime; + + if (!isNaN(frameTime)) { + var frameContentSequence = ds.PerFrameFunctionalGroupsSequence[frameNumber - 1].FrameContentSequence; + frameContentSequence.FrameAcquisitionDateTime = frameTime; + frameContentSequence.FrameReferenceDateTime = frameTime; + } + + frameNumber++; + }); // + // TODO: convert this to shared functional group not top level element + // + + if (ds.WindowCenter && ds.WindowWidth) { + // if they exist as single values, make them lists for consistency + if (!Array.isArray(ds.WindowCenter)) { + ds.WindowCenter = [ds.WindowCenter]; + } + + if (!Array.isArray(ds.WindowWidth)) { + ds.WindowWidth = [ds.WindowWidth]; + } + } + + if (!ds.WindowCenter || !ds.WindowWidth) { + // if they don't exist, make them empty lists and try to initialize them + ds.WindowCenter = []; // both must exist and be the same length + + ds.WindowWidth = []; // provide a volume-level window/level guess (mean of per-frame) + + if (ds.PerFrameFunctionalGroupsSequence) { + var wcww = { + center: 0, + width: 0, + count: 0 + }; + ds.PerFrameFunctionalGroupsSequence.forEach(function (functionalGroup) { + if (functionalGroup.FrameVOILUT) { + var wc = functionalGroup.FrameVOILUTSequence.WindowCenter; + var ww = functionalGroup.FrameVOILUTSequence.WindowWidth; + + if (functionalGroup.FrameVOILUTSequence && wc && ww) { + if (Array.isArray(wc)) { + wc = wc[0]; + } + + if (Array.isArray(ww)) { + ww = ww[0]; + } + + wcww.center += Number(wc); + wcww.width += Number(ww); + wcww.count++; + } + } + }); + + if (wcww.count > 0) { + ds.WindowCenter.push(String(wcww.center / wcww.count)); + ds.WindowWidth.push(String(wcww.width / wcww.count)); + } + } + } // last gasp, pick an arbitrary default + + + if (ds.WindowCenter.length === 0) { + ds.WindowCenter = [300]; + } + + if (ds.WindowWidth.length === 0) { + ds.WindowWidth = [500]; + } + } + }], [{ + key: "vec3CrossProduct", + value: function vec3CrossProduct(a, b) { + var ax = a[0], + ay = a[1], + az = a[2], + bx = b[0], + by = b[1], + bz = b[2]; + var out = []; + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; + } + }, { + key: "vec3Subtract", + value: function vec3Subtract(a, b) { + var out = []; + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + return out; + } + }, { + key: "vec3Dot", + value: function vec3Dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + }]); + + return ImageNormalizer; + }(Normalizer); + + var MRImageNormalizer = /*#__PURE__*/function (_ImageNormalizer) { + _inherits(MRImageNormalizer, _ImageNormalizer); + + var _super2 = _createSuper(MRImageNormalizer); + + function MRImageNormalizer() { + _classCallCheck(this, MRImageNormalizer); + + return _super2.apply(this, arguments); + } + + _createClass(MRImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(MRImageNormalizer.prototype), "normalize", this).call(this); // TODO: make specialization for LegacyConverted vs normal EnhanceMRImage + //let toUID = DicomMetaDictionary.sopClassUIDsByName; + + + this.dataset.SOPClassUID = "LegacyConvertedEnhancedMRImage"; //this.dataset.SOPClassUID = toUID.EnhancedMRImage; + } + }, { + key: "normalizeMultiframe", + value: function normalizeMultiframe() { + _get(_getPrototypeOf(MRImageNormalizer.prototype), "normalizeMultiframe", this).call(this); + + var ds = this.dataset; + + if (!ds.ImageType || !ds.ImageType.constructor || ds.ImageType.constructor.name != "Array" || ds.ImageType.length != 4) { + ds.ImageType = ["ORIGINAL", "PRIMARY", "OTHER", "NONE"]; + } + + ds.SharedFunctionalGroupsSequence.MRImageFrameTypeSequence = { + FrameType: ds.ImageType, + PixelPresentation: "MONOCHROME", + VolumetricProperties: "VOLUME", + VolumeBasedCalculationTechnique: "NONE", + ComplexImageComponent: "MAGNITUDE", + AcquisitionContrast: "UNKNOWN" + }; + } + }]); + + return MRImageNormalizer; + }(ImageNormalizer); + + var EnhancedCTImageNormalizer = /*#__PURE__*/function (_ImageNormalizer2) { + _inherits(EnhancedCTImageNormalizer, _ImageNormalizer2); + + var _super3 = _createSuper(EnhancedCTImageNormalizer); + + function EnhancedCTImageNormalizer() { + _classCallCheck(this, EnhancedCTImageNormalizer); + + return _super3.apply(this, arguments); + } + + _createClass(EnhancedCTImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(EnhancedCTImageNormalizer.prototype), "normalize", this).call(this); + } + }]); + + return EnhancedCTImageNormalizer; + }(ImageNormalizer); + + var EnhancedMRImageNormalizer = /*#__PURE__*/function (_ImageNormalizer3) { + _inherits(EnhancedMRImageNormalizer, _ImageNormalizer3); + + var _super4 = _createSuper(EnhancedMRImageNormalizer); + + function EnhancedMRImageNormalizer() { + _classCallCheck(this, EnhancedMRImageNormalizer); + + return _super4.apply(this, arguments); + } + + _createClass(EnhancedMRImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(EnhancedMRImageNormalizer.prototype), "normalize", this).call(this); + } + }]); + + return EnhancedMRImageNormalizer; + }(ImageNormalizer); + + var EnhancedUSVolumeNormalizer = /*#__PURE__*/function (_ImageNormalizer4) { + _inherits(EnhancedUSVolumeNormalizer, _ImageNormalizer4); + + var _super5 = _createSuper(EnhancedUSVolumeNormalizer); + + function EnhancedUSVolumeNormalizer() { + _classCallCheck(this, EnhancedUSVolumeNormalizer); + + return _super5.apply(this, arguments); + } + + _createClass(EnhancedUSVolumeNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(EnhancedUSVolumeNormalizer.prototype), "normalize", this).call(this); + } + }]); + + return EnhancedUSVolumeNormalizer; + }(ImageNormalizer); + + var CTImageNormalizer = /*#__PURE__*/function (_ImageNormalizer5) { + _inherits(CTImageNormalizer, _ImageNormalizer5); + + var _super6 = _createSuper(CTImageNormalizer); + + function CTImageNormalizer() { + _classCallCheck(this, CTImageNormalizer); + + return _super6.apply(this, arguments); + } + + _createClass(CTImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(CTImageNormalizer.prototype), "normalize", this).call(this); // TODO: provide option at export to swap in LegacyConverted UID + + + var toUID = DicomMetaDictionary.sopClassUIDsByName; //this.dataset.SOPClassUID = "LegacyConvertedEnhancedCTImage"; + + this.dataset.SOPClassUID = toUID.EnhancedCTImage; + } + }]); + + return CTImageNormalizer; + }(ImageNormalizer); + + var PETImageNormalizer = /*#__PURE__*/function (_ImageNormalizer6) { + _inherits(PETImageNormalizer, _ImageNormalizer6); + + var _super7 = _createSuper(PETImageNormalizer); + + function PETImageNormalizer() { + _classCallCheck(this, PETImageNormalizer); + + return _super7.apply(this, arguments); + } + + _createClass(PETImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(PETImageNormalizer.prototype), "normalize", this).call(this); // TODO: provide option at export to swap in LegacyConverted UID + + + var toUID = DicomMetaDictionary.sopClassUIDsByName; //this.dataset.SOPClassUID = "LegacyConvertedEnhancedPETImage"; + + this.dataset.SOPClassUID = toUID.EnhancedPETImage; + } + }]); + + return PETImageNormalizer; + }(ImageNormalizer); + + var SEGImageNormalizer = /*#__PURE__*/function (_ImageNormalizer7) { + _inherits(SEGImageNormalizer, _ImageNormalizer7); + + var _super8 = _createSuper(SEGImageNormalizer); + + function SEGImageNormalizer() { + _classCallCheck(this, SEGImageNormalizer); + + return _super8.apply(this, arguments); + } + + _createClass(SEGImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(SEGImageNormalizer.prototype), "normalize", this).call(this); + } + }]); + + return SEGImageNormalizer; + }(ImageNormalizer); + + var PMImageNormalizer = /*#__PURE__*/function (_ImageNormalizer8) { + _inherits(PMImageNormalizer, _ImageNormalizer8); + + var _super9 = _createSuper(PMImageNormalizer); + + function PMImageNormalizer() { + _classCallCheck(this, PMImageNormalizer); + + return _super9.apply(this, arguments); + } + + _createClass(PMImageNormalizer, [{ + key: "normalize", + value: function normalize() { + _get(_getPrototypeOf(PMImageNormalizer.prototype), "normalize", this).call(this); + + var ds = this.datasets[0]; + + if (ds.BitsAllocated !== 32) { + log.error("Only works with 32 bit data, not " + String(ds.BitsAllocated)); + } + } + }]); + + return PMImageNormalizer; + }(ImageNormalizer); + + var DSRNormalizer = /*#__PURE__*/function (_Normalizer2) { + _inherits(DSRNormalizer, _Normalizer2); + + var _super10 = _createSuper(DSRNormalizer); + + function DSRNormalizer() { + _classCallCheck(this, DSRNormalizer); + + return _super10.apply(this, arguments); + } + + _createClass(DSRNormalizer, [{ + key: "normalize", + value: function normalize() { + this.dataset = this.datasets[0]; // only one dataset per series and for now we assume it is normalized + } + }]); + + return DSRNormalizer; + }(Normalizer); + + var Segmentation$4 = /*#__PURE__*/function (_DerivedPixels) { + _inherits(Segmentation, _DerivedPixels); + + var _super = _createSuper(Segmentation); + + function Segmentation(datasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + includeSliceSpacing: true + }; + + _classCallCheck(this, Segmentation); + + return _super.call(this, datasets, options); + } + + _createClass(Segmentation, [{ + key: "derive", + value: function derive() { + _get(_getPrototypeOf(Segmentation.prototype), "derive", this).call(this); + + this.assignToDataset({ + SOPClassUID: DicomMetaDictionary.sopClassUIDsByName.Segmentation, + Modality: "SEG", + SamplesPerPixel: "1", + PhotometricInterpretation: "MONOCHROME2", + BitsAllocated: "1", + BitsStored: "1", + HighBit: "0", + PixelRepresentation: "0", + LossyImageCompression: "00", + SegmentationType: "BINARY", + ContentLabel: "SEGMENTATION" + }); + var dimensionUID = DicomMetaDictionary.uid(); + this.dataset.DimensionOrganizationSequence = { + DimensionOrganizationUID: dimensionUID + }; + this.dataset.DimensionIndexSequence = [{ + DimensionOrganizationUID: dimensionUID, + DimensionIndexPointer: 6422539, + FunctionalGroupPointer: 6422538, + // SegmentIdentificationSequence + DimensionDescriptionLabel: "ReferencedSegmentNumber" + }, { + DimensionOrganizationUID: dimensionUID, + DimensionIndexPointer: 2097202, + FunctionalGroupPointer: 2134291, + // PlanePositionSequence + DimensionDescriptionLabel: "ImagePositionPatient" + }]; + this.dataset.SegmentSequence = []; // TODO: check logic here. + // If the referenced dataset itself references a series, then copy. + // Otherwise, reference the dataset itself. + // This should allow Slicer and others to get the correct original + // images when loading Legacy Converted Images, but it's a workaround + // that really doesn't belong here. + + if (this.referencedDataset.ReferencedSeriesSequence) { + this.dataset.ReferencedSeriesSequence = DerivedDataset.copyDataset(this.referencedDataset.ReferencedSeriesSequence); + } else { + var ReferencedInstanceSequence = []; + + for (var i = 0; i < this.referencedDatasets.length; i++) { + ReferencedInstanceSequence.push({ + ReferencedSOPClassUID: this.referencedDatasets[i].SOPClassUID, + ReferencedSOPInstanceUID: this.referencedDatasets[i].SOPInstanceUID + }); + } + + this.dataset.ReferencedSeriesSequence = { + SeriesInstanceUID: this.referencedDataset.SeriesInstanceUID, + StudyInstanceUID: this.referencedDataset.StudyInstanceUID, + ReferencedInstanceSequence: ReferencedInstanceSequence + }; + } + + if (!this.options.includeSliceSpacing) { + // per dciodvfy this should not be included, but dcmqi/Slicer requires it + delete this.dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence.SpacingBetweenSlices; + } + + if (this.dataset.SharedFunctionalGroupsSequence.PixelValueTransformationSequence) { + // If derived from a CT, this shouldn't be left in the SEG. + delete this.dataset.SharedFunctionalGroupsSequence.PixelValueTransformationSequence; + } // The pixelData array needs to be defined once you know how many frames you'll have. + + + this.dataset.PixelData = undefined; + this.dataset.NumberOfFrames = 0; + this.dataset.PerFrameFunctionalGroupsSequence = []; + } + /** + * setNumberOfFrames - Sets the number of frames of the segmentation object + * and allocates (non-bitpacked) memory for the PixelData for constuction. + * + * @param {type} NumberOfFrames The number of segmentation frames. + */ + + }, { + key: "setNumberOfFrames", + value: function setNumberOfFrames(NumberOfFrames) { + var dataset = this.dataset; + dataset.NumberOfFrames = NumberOfFrames; + dataset.PixelData = new ArrayBuffer(dataset.Rows * dataset.Columns * NumberOfFrames); + } + /** + * bitPackPixelData - Bitpacks the pixeldata, should be called after all + * segments are addded. + * + * @returns {type} description + */ + + }, { + key: "bitPackPixelData", + value: function bitPackPixelData() { + if (this.isBitpacked) { + console.warn("This.bitPackPixelData has already been called, it should only be called once, when all frames have been added. Exiting."); + } + + var dataset = this.dataset; + var unpackedPixelData = dataset.PixelData; + var uInt8ViewUnpackedPixelData = new Uint8Array(unpackedPixelData); + var bitPackedPixelData = BitArray.pack(uInt8ViewUnpackedPixelData); + dataset.PixelData = bitPackedPixelData.buffer; + this.isBitpacked = true; + } + /** + * addSegmentFromLabelmap - Adds a segment to the dataset, + * where the labelmaps are a set of 2D labelmaps, from which to extract the binary maps. + * + * @param {type} Segment The segment metadata. + * @param {Uint8Array[]} labelmaps labelmap arrays for each index of referencedFrameNumbers. + * @param {number} segmentIndexInLabelmap The segment index to extract from the labelmap + * (might be different to the segment metadata depending on implementation). + * @param {number[]} referencedFrameNumbers The frames that the + * segmentation references. + * + */ + + }, { + key: "addSegmentFromLabelmap", + value: function addSegmentFromLabelmap(Segment, labelmaps, segmentIndexInLabelmap, referencedFrameNumbers) { + if (this.dataset.NumberOfFrames === 0) { + throw new Error("Must set the total number of frames via setNumberOfFrames() before adding segments to the segmentation."); + } + + this._addSegmentPixelDataFromLabelmaps(labelmaps, segmentIndexInLabelmap); + + var ReferencedSegmentNumber = this._addSegmentMetadata(Segment); + + this._addPerFrameFunctionalGroups(ReferencedSegmentNumber, referencedFrameNumbers); + } + }, { + key: "_addSegmentPixelDataFromLabelmaps", + value: function _addSegmentPixelDataFromLabelmaps(labelmaps, segmentIndex) { + var dataset = this.dataset; + var existingFrames = dataset.PerFrameFunctionalGroupsSequence.length; + var sliceLength = dataset.Rows * dataset.Columns; + var byteOffset = existingFrames * sliceLength; + var pixelDataUInt8View = new Uint8Array(dataset.PixelData, byteOffset, labelmaps.length * sliceLength); + + var occupiedValue = this._getOccupiedValue(); + + for (var l = 0; l < labelmaps.length; l++) { + var labelmap = labelmaps[l]; + + for (var i = 0; i < labelmap.length; i++) { + if (labelmap[i] === segmentIndex) { + pixelDataUInt8View[l * sliceLength + i] = occupiedValue; + } + } + } + } + }, { + key: "_getOccupiedValue", + value: function _getOccupiedValue() { + if (this.dataset.SegmentationType === "FRACTIONAL") { + return 255; + } + + return 1; + } + /** + * addSegment - Adds a segment to the dataset. + * + * @param {type} Segment The segment metadata. + * @param {Uint8Array} pixelData The pixelData array containing all frames + * of the segmentation. + * @param {Number[]} referencedFrameNumbers The frames that the + * segmentation references. + * + */ + + }, { + key: "addSegment", + value: function addSegment(Segment, pixelData, referencedFrameNumbers) { + if (this.dataset.NumberOfFrames === 0) { + throw new Error("Must set the total number of frames via setNumberOfFrames() before adding segments to the segmentation."); + } + + this._addSegmentPixelData(pixelData); + + var ReferencedSegmentNumber = this._addSegmentMetadata(Segment); + + this._addPerFrameFunctionalGroups(ReferencedSegmentNumber, referencedFrameNumbers); + } + }, { + key: "_addSegmentPixelData", + value: function _addSegmentPixelData(pixelData) { + var dataset = this.dataset; + var existingFrames = dataset.PerFrameFunctionalGroupsSequence.length; + var sliceLength = dataset.Rows * dataset.Columns; + var byteOffset = existingFrames * sliceLength; + var pixelDataUInt8View = new Uint8Array(dataset.PixelData, byteOffset, pixelData.length); + + for (var i = 0; i < pixelData.length; i++) { + pixelDataUInt8View[i] = pixelData[i]; + } + } + }, { + key: "_addPerFrameFunctionalGroups", + value: function _addPerFrameFunctionalGroups(ReferencedSegmentNumber, referencedFrameNumbers) { + var PerFrameFunctionalGroupsSequence = this.dataset.PerFrameFunctionalGroupsSequence; + var ReferencedSeriesSequence = this.referencedDataset.ReferencedSeriesSequence; + + for (var i = 0; i < referencedFrameNumbers.length; i++) { + var frameNumber = referencedFrameNumbers[i]; + var perFrameFunctionalGroups = {}; + perFrameFunctionalGroups.PlanePositionSequence = DerivedDataset.copyDataset(this.referencedDataset.PerFrameFunctionalGroupsSequence[frameNumber - 1].PlanePositionSequence); // If the PlaneOrientationSequence is not in the SharedFunctionalGroupsSequence, + // extract it from the PerFrameFunctionalGroupsSequence. + + if (!this.dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence) { + perFrameFunctionalGroups.PlaneOrientationSequence = DerivedDataset.copyDataset(this.referencedDataset.PerFrameFunctionalGroupsSequence[frameNumber - 1].PlaneOrientationSequence); + } + + perFrameFunctionalGroups.FrameContentSequence = { + DimensionIndexValues: [ReferencedSegmentNumber, frameNumber] + }; + perFrameFunctionalGroups.SegmentIdentificationSequence = { + ReferencedSegmentNumber: ReferencedSegmentNumber + }; + var ReferencedSOPClassUID = void 0; + var ReferencedSOPInstanceUID = void 0; + var ReferencedFrameNumber = void 0; + + if (ReferencedSeriesSequence) { + var referencedInstanceSequenceI = ReferencedSeriesSequence.ReferencedInstanceSequence[frameNumber - 1]; + ReferencedSOPClassUID = referencedInstanceSequenceI.ReferencedSOPClassUID; + ReferencedSOPInstanceUID = referencedInstanceSequenceI.ReferencedSOPInstanceUID; + + if (Normalizer.isMultiframeSOPClassUID(ReferencedSOPClassUID)) { + ReferencedFrameNumber = frameNumber; + } + } else { + ReferencedSOPClassUID = this.referencedDataset.SOPClassUID; + ReferencedSOPInstanceUID = this.referencedDataset.SOPInstanceUID; + ReferencedFrameNumber = frameNumber; + } + + if (ReferencedFrameNumber) { + perFrameFunctionalGroups.DerivationImageSequence = { + SourceImageSequence: { + ReferencedSOPClassUID: ReferencedSOPClassUID, + ReferencedSOPInstanceUID: ReferencedSOPInstanceUID, + ReferencedFrameNumber: ReferencedFrameNumber, + PurposeOfReferenceCodeSequence: { + CodeValue: "121322", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Source image for image processing operation" + } + }, + DerivationCodeSequence: { + CodeValue: "113076", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Segmentation" + } + }; + } else { + perFrameFunctionalGroups.DerivationImageSequence = { + SourceImageSequence: { + ReferencedSOPClassUID: ReferencedSOPClassUID, + ReferencedSOPInstanceUID: ReferencedSOPInstanceUID, + PurposeOfReferenceCodeSequence: { + CodeValue: "121322", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Source image for image processing operation" + } + }, + DerivationCodeSequence: { + CodeValue: "113076", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Segmentation" + } + }; + } + + PerFrameFunctionalGroupsSequence.push(perFrameFunctionalGroups); + } + } + }, { + key: "_addSegmentMetadata", + value: function _addSegmentMetadata(Segment) { + if (!Segment.SegmentLabel || !Segment.SegmentedPropertyCategoryCodeSequence || !Segment.SegmentedPropertyTypeCodeSequence || !Segment.SegmentAlgorithmType) { + throw new Error("Segment does not contain all the required fields."); + } // Capitalise the SegmentAlgorithmType if it happens to be given in + // Lower/mixed case. + + + Segment.SegmentAlgorithmType = Segment.SegmentAlgorithmType.toUpperCase(); // Check SegmentAlgorithmType and SegmentAlgorithmName if necessary. + + switch (Segment.SegmentAlgorithmType) { + case "AUTOMATIC": + case "SEMIAUTOMATIC": + if (!Segment.SegmentAlgorithmName) { + throw new Error("If the SegmentAlgorithmType is SEMIAUTOMATIC or AUTOMATIC,\n SegmentAlgorithmName must be provided"); + } + + break; + + case "MANUAL": + break; + + default: + throw new Error("SegmentAlgorithmType ".concat(Segment.SegmentAlgorithmType, " invalid.")); + } // Deep copy, so we don't change the segment index stored in cornerstoneTools. + + + var SegmentSequence = this.dataset.SegmentSequence; + var SegmentAlgorithmType = Segment.SegmentAlgorithmType; + var reNumberedSegmentCopy = { + SegmentedPropertyCategoryCodeSequence: Segment.SegmentedPropertyCategoryCodeSequence, + SegmentNumber: (SegmentSequence.length + 1).toString(), + SegmentLabel: Segment.SegmentLabel, + SegmentAlgorithmType: SegmentAlgorithmType, + RecommendedDisplayCIELabValue: Segment.RecommendedDisplayCIELabValue, + SegmentedPropertyTypeCodeSequence: Segment.SegmentedPropertyTypeCodeSequence + }; + + if (SegmentAlgorithmType === "AUTOMATIC" || SegmentAlgorithmType === "SEMIAUTOMATIC") { + reNumberedSegmentCopy.SegmentAlgorithmName = Segment.SegmentAlgorithmName; + } + + SegmentSequence.push(reNumberedSegmentCopy); + return reNumberedSegmentCopy.SegmentNumber; + } + }]); + + return Segmentation; + }(DerivedPixels); + + var ParametricMap = /*#__PURE__*/function (_DerivedDataset) { + _inherits(ParametricMap, _DerivedDataset); + + var _super = _createSuper(ParametricMap); + + function ParametricMap(datasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, ParametricMap); + + return _super.call(this, datasets, options); + } // this assumes a normalized multiframe input and will create + // a multiframe derived image + + + _createClass(ParametricMap, [{ + key: "derive", + value: function derive() { + _get(_getPrototypeOf(ParametricMap.prototype), "derive", this).call(this); + + this.assignToDataset({// TODO: ??? + }); + this.assignFromReference([]); + } + }]); + + return ParametricMap; + }(DerivedDataset); + + var StructuredReport = /*#__PURE__*/function (_DerivedDataset) { + _inherits(StructuredReport, _DerivedDataset); + + var _super = _createSuper(StructuredReport); + + function StructuredReport(datasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, StructuredReport); + + return _super.call(this, datasets, options); + } // this assumes a normalized multiframe input and will create + // a multiframe derived image + + + _createClass(StructuredReport, [{ + key: "derive", + value: function derive() { + _get(_getPrototypeOf(StructuredReport.prototype), "derive", this).call(this); + + this.assignToDataset({ + SOPClassUID: DicomMetaDictionary.sopClassUIDsByName.EnhancedSR, + Modality: "SR", + ValueType: "CONTAINER" + }); + this.assignFromReference([]); + } + }]); + + return StructuredReport; + }(DerivedDataset); + + var TID1500MeasurementReport = /*#__PURE__*/function () { + function TID1500MeasurementReport(TIDIncludeGroups) { + _classCallCheck(this, TID1500MeasurementReport); + + this.TIDIncludeGroups = TIDIncludeGroups; + var ImageLibraryContentSequence = []; + var CurrentRequestedProcedureEvidenceSequence = []; + this.ImageLibraryContentSequence = ImageLibraryContentSequence; + this.CurrentRequestedProcedureEvidenceSequence = CurrentRequestedProcedureEvidenceSequence; + this.PersonObserverName = { + RelationshipType: "HAS OBS CONTEXT", + ValueType: "PNAME", + ConceptNameCodeSequence: { + CodeValue: "121008", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Person Observer Name" + }, + PersonName: "unknown^unknown" + }; + this.tid1500 = { + ConceptNameCodeSequence: { + CodeValue: "126000", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Imaging Measurement Report" + }, + ContinuityOfContent: "SEPARATE", + PerformedProcedureCodeSequence: [], + CompletionFlag: "COMPLETE", + VerificationFlag: "UNVERIFIED", + ReferencedPerformedProcedureStepSequence: [], + InstanceNumber: 1, + CurrentRequestedProcedureEvidenceSequence: CurrentRequestedProcedureEvidenceSequence, + CodingSchemeIdentificationSequence: { + CodingSchemeDesignator: "99dcmjs", + CodingSchemeName: "Codes used for dcmjs", + CodingSchemeVersion: "0", + CodingSchemeResponsibleOrganization: "https://github.com/dcmjs-org/dcmjs" + }, + ContentTemplateSequence: { + MappingResource: "DCMR", + TemplateIdentifier: "1500" + }, + ContentSequence: [{ + RelationshipType: "HAS CONCEPT MOD", + ValueType: "CODE", + ConceptNameCodeSequence: addAccessors({ + CodeValue: "121049", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Language of Content Item and Descendants" + }), + ConceptCodeSequence: addAccessors({ + CodeValue: "eng", + CodingSchemeDesignator: "RFC5646", + CodeMeaning: "English" + }), + ContentSequence: addAccessors({ + RelationshipType: "HAS CONCEPT MOD", + ValueType: "CODE", + ConceptNameCodeSequence: addAccessors({ + CodeValue: "121046", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Country of Language" + }), + ConceptCodeSequence: addAccessors({ + CodeValue: "US", + CodingSchemeDesignator: "ISO3166_1", + CodeMeaning: "United States" + }) + }) + }, this.PersonObserverName, { + RelationshipType: "HAS CONCEPT MOD", + ValueType: "CODE", + ConceptNameCodeSequence: addAccessors({ + CodeValue: "121058", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Procedure reported" + }), + ConceptCodeSequence: addAccessors({ + CodeValue: "1", + CodingSchemeDesignator: "99dcmjs", + CodeMeaning: "Unknown procedure" + }) + }, { + RelationshipType: "CONTAINS", + ValueType: "CONTAINER", + ConceptNameCodeSequence: { + CodeValue: "111028", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Image Library" + }, + ContinuityOfContent: "SEPARATE", + ContentSequence: { + RelationshipType: "CONTAINS", + ValueType: "CONTAINER", + ConceptNameCodeSequence: { + CodeValue: "126200", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Image Library Group" + }, + ContinuityOfContent: "SEPARATE", + ContentSequence: ImageLibraryContentSequence + } + }] + }; + } + + _createClass(TID1500MeasurementReport, [{ + key: "validate", + value: function validate() {} + }, { + key: "contentItem", + value: function contentItem(derivationSourceDatasetOrDatasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (options.PersonName) { + this.PersonObserverName.PersonName = options.PersonName; + } // Note this is left in for compatibility with the Cornerstone Legacy adapter which only supports one series for now. + + + var derivationSourceDatasets = Array.isArray(derivationSourceDatasetOrDatasets) ? derivationSourceDatasetOrDatasets : [derivationSourceDatasetOrDatasets]; // Add the Measurement Groups to the Measurement Report + + this.addTID1501MeasurementGroups(derivationSourceDatasets, options); + return this.tid1500; + } + }, { + key: "addTID1501MeasurementGroups", + value: function addTID1501MeasurementGroups(derivationSourceDatasets) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var CurrentRequestedProcedureEvidenceSequence = this.CurrentRequestedProcedureEvidenceSequence, + ImageLibraryContentSequence = this.ImageLibraryContentSequence; + var sopInstanceUIDsToSeriesInstanceUIDMap = options.sopInstanceUIDsToSeriesInstanceUIDMap; + + if (derivationSourceDatasets.length > 1 && sopInstanceUIDsToSeriesInstanceUIDMap === undefined) { + throw new Error("addTID1501MeasurementGroups provided with ".concat(derivationSourceDatasets.length, " derivationSourceDatasets, with no sopInstanceUIDsToSeriesInstanceUIDMap in options.")); + } + + var TID1501MeasurementGroups = this.TIDIncludeGroups.TID1501MeasurementGroups; + + if (!TID1501MeasurementGroups) { + return; + } + + var ContentSequence = []; + TID1501MeasurementGroups.forEach(function (child) { + ContentSequence = ContentSequence.concat(child.contentItem()); + }); + var parsedSOPInstances = []; // For each measurement that is referenced, add a link to the + // Image Library Group and the Current Requested Procedure Evidence + // with the proper ReferencedSOPSequence + + TID1501MeasurementGroups.forEach(function (measurementGroup) { + measurementGroup.TID300Measurements.forEach(function (measurement) { + var ReferencedSOPInstanceUID = measurement.ReferencedSOPSequence.ReferencedSOPInstanceUID; + + if (!parsedSOPInstances.includes(ReferencedSOPInstanceUID)) { + ImageLibraryContentSequence.push({ + RelationshipType: "CONTAINS", + ValueType: "IMAGE", + ReferencedSOPSequence: measurement.ReferencedSOPSequence + }); + var derivationSourceDataset; + + if (derivationSourceDatasets.length === 1) { + // If there is only one derivationSourceDataset, use it. + derivationSourceDataset = derivationSourceDatasets[0]; + } else { + var SeriesInstanceUID = sopInstanceUIDsToSeriesInstanceUIDMap[ReferencedSOPInstanceUID]; + derivationSourceDataset = derivationSourceDatasets.find(function (dsd) { + return dsd.SeriesInstanceUID === SeriesInstanceUID; + }); + } + /** + * Note: the VM of the ReferencedSeriesSequence and ReferencedSOPSequence are 1, so + * it is correct that we have a full `CurrentRequestedProcedureEvidenceSequence` + * item per `SOPInstanceUID`. + */ + + + CurrentRequestedProcedureEvidenceSequence.push({ + StudyInstanceUID: derivationSourceDataset.StudyInstanceUID, + ReferencedSeriesSequence: { + SeriesInstanceUID: derivationSourceDataset.SeriesInstanceUID, + ReferencedSOPSequence: measurement.ReferencedSOPSequence + } + }); + parsedSOPInstances.push(ReferencedSOPInstanceUID); + } + }); + }); + var ImagingMeasurments = { + RelationshipType: "CONTAINS", + ValueType: "CONTAINER", + ConceptNameCodeSequence: { + CodeValue: "126010", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Imaging Measurements" // TODO: would be nice to abstract the code sequences (in a dictionary? a service?) + + }, + ContinuityOfContent: "SEPARATE", + ContentSequence: ContentSequence + }; + this.tid1500.ContentSequence.push(ImagingMeasurments); + } + }]); + + return TID1500MeasurementReport; + }(); + + var TID1501MeasurementGroup = /*#__PURE__*/function () { + function TID1501MeasurementGroup(TID300Measurements) { + _classCallCheck(this, TID1501MeasurementGroup); + + this.TID300Measurements = TID300Measurements; + } + + _createClass(TID1501MeasurementGroup, [{ + key: "contentItem", + value: function contentItem() { + var _this = this; + + var TID300Measurements = this.TID300Measurements; // TODO: Is there nothing else in this group? + + var measurementGroups = []; + TID300Measurements.forEach(function (TID300Measurement) { + measurementGroups.push(_this.getMeasurementGroup(TID300Measurement.contentItem())); + }); + return measurementGroups; + } + }, { + key: "getMeasurementGroup", + value: function getMeasurementGroup(contentSequenceEntries) { + return { + RelationshipType: "CONTAINS", + ValueType: "CONTAINER", + ConceptNameCodeSequence: { + CodeValue: "125007", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Measurement Group" + }, + ContinuityOfContent: "SEPARATE", + ContentSequence: _toConsumableArray(contentSequenceEntries) + }; + } + }]); + + return TID1501MeasurementGroup; + }(); + + var toArray = function toArray(x) { + return Array.isArray(x) ? x : [x]; + }; + + var codeMeaningEquals = function codeMeaningEquals(codeMeaningName) { + return function (contentItem) { + return contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName; + }; + }; + + var graphicTypeEquals = function graphicTypeEquals(graphicType) { + return function (contentItem) { + return contentItem && contentItem.GraphicType === graphicType; + }; + }; + + var FINDING$2 = { + CodingSchemeDesignator: "DCM", + CodeValue: "121071" + }; + var FINDING_SITE$2 = { + CodingSchemeDesignator: "SCT", + CodeValue: "363698007" + }; + var FINDING_SITE_OLD$1 = { + CodingSchemeDesignator: "SRT", + CodeValue: "G-C0E3" + }; + + var codeValueMatch$1 = function codeValueMatch(group, code, oldCode) { + var ConceptNameCodeSequence = group.ConceptNameCodeSequence; + if (!ConceptNameCodeSequence) return; + var CodingSchemeDesignator = ConceptNameCodeSequence.CodingSchemeDesignator, + CodeValue = ConceptNameCodeSequence.CodeValue; + return CodingSchemeDesignator == code.CodingSchemeDesignator && CodeValue == code.CodeValue || oldCode && CodingSchemeDesignator == oldCode.CodingSchemeDesignator && CodeValue == oldCode.CodeValue; + }; + + function getTID300ContentItem$2(tool, toolType, ReferencedSOPSequence, toolClass) { + var args = toolClass.getTID300RepresentationArguments(tool); + args.ReferencedSOPSequence = ReferencedSOPSequence; + var TID300Measurement = new toolClass.TID300Representation(args); + return TID300Measurement; + } + + function getMeasurementGroup$2(toolType, toolData, ReferencedSOPSequence) { + var toolTypeData = toolData[toolType]; + var toolClass = MeasurementReport$3.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType]; + + if (!toolTypeData || !toolTypeData.data || !toolTypeData.data.length || !toolClass) { + return; + } // Loop through the array of tool instances + // for this tool + + + var Measurements = toolTypeData.data.map(function (tool) { + return getTID300ContentItem$2(tool, toolType, ReferencedSOPSequence, toolClass); + }); + return new TID1501MeasurementGroup(Measurements); + } + + var MeasurementReport$3 = /*#__PURE__*/function () { + function MeasurementReport() { + _classCallCheck(this, MeasurementReport); + } + + _createClass(MeasurementReport, null, [{ + key: "getSetupMeasurementData", + value: function getSetupMeasurementData(MeasurementGroup) { + var ContentSequence = MeasurementGroup.ContentSequence; + var contentSequenceArr = toArray(ContentSequence); + var findingGroup = contentSequenceArr.find(function (group) { + return codeValueMatch$1(group, FINDING$2); + }); + var findingSiteGroups = contentSequenceArr.filter(function (group) { + return codeValueMatch$1(group, FINDING_SITE$2, FINDING_SITE_OLD$1); + }) || []; + var NUMGroup = contentSequenceArr.find(function (group) { + return group.ValueType === "NUM"; + }); + var SCOORDGroup = toArray(NUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var ReferencedSOPSequence = SCOORDGroup.ContentSequence.ReferencedSOPSequence; + var ReferencedSOPInstanceUID = ReferencedSOPSequence.ReferencedSOPInstanceUID, + ReferencedFrameNumber = ReferencedSOPSequence.ReferencedFrameNumber; + var defaultState = { + sopInstanceUid: ReferencedSOPInstanceUID, + frameIndex: ReferencedFrameNumber || 1, + complete: true, + finding: findingGroup ? addAccessors(findingGroup.ConceptCodeSequence) : undefined, + findingSites: findingSiteGroups.map(function (fsg) { + return addAccessors(fsg.ConceptCodeSequence); + }) + }; + + if (defaultState.finding) { + defaultState.description = defaultState.finding.CodeMeaning; + } + + var findingSite = defaultState.findingSites && defaultState.findingSites[0]; + + if (findingSite) { + defaultState.location = findingSite[0] && findingSite[0].CodeMeaning || findingSite.CodeMeaning; + } + + return { + defaultState: defaultState, + findingGroup: findingGroup, + findingSiteGroups: findingSiteGroups, + NUMGroup: NUMGroup, + SCOORDGroup: SCOORDGroup, + ReferencedSOPSequence: ReferencedSOPSequence, + ReferencedSOPInstanceUID: ReferencedSOPInstanceUID, + ReferencedFrameNumber: ReferencedFrameNumber + }; + } + }, { + key: "generateReport", + value: function generateReport(toolState, metadataProvider, options) { + // ToolState for array of imageIDs to a Report + // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID + var allMeasurementGroups = []; + var firstImageId = Object.keys(toolState)[0]; + + if (!firstImageId) { + throw new Error("No measurements provided."); + } + /* Patient ID + Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID + */ + + + var generalSeriesModule = metadataProvider.get("generalSeriesModule", firstImageId); //const sopCommonModule = metadataProvider.get('sopCommonModule', firstImageId); + // NOTE: We are getting the Series and Study UIDs from the first imageId of the toolState + // which means that if the toolState is for multiple series, the report will have the incorrect + // SeriesInstanceUIDs + + var studyInstanceUID = generalSeriesModule.studyInstanceUID, + seriesInstanceUID = generalSeriesModule.seriesInstanceUID; // Loop through each image in the toolData + + Object.keys(toolState).forEach(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + var frameNumber = metadataProvider.get("frameNumber", imageId); + var toolData = toolState[imageId]; + var toolTypes = Object.keys(toolData); + var ReferencedSOPSequence = { + ReferencedSOPClassUID: sopCommonModule.sopClassUID, + ReferencedSOPInstanceUID: sopCommonModule.sopInstanceUID + }; + + if (Normalizer.isMultiframeSOPClassUID(sopCommonModule.sopClassUID)) { + ReferencedSOPSequence.ReferencedFrameNumber = frameNumber; + } // Loop through each tool type for the image + + + var measurementGroups = []; + toolTypes.forEach(function (toolType) { + var group = getMeasurementGroup$2(toolType, toolData, ReferencedSOPSequence); + + if (group) { + measurementGroups.push(group); + } + }); + allMeasurementGroups = allMeasurementGroups.concat(measurementGroups); + }); + + var _MeasurementReport = new TID1500MeasurementReport({ + TID1501MeasurementGroups: allMeasurementGroups + }, options); // TODO: what is the correct metaheader + // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html + // TODO: move meta creation to happen in derivations.js + + + var fileMetaInformationVersionArray = new Uint8Array(2); + fileMetaInformationVersionArray[1] = 1; + var derivationSourceDataset = { + StudyInstanceUID: studyInstanceUID, + SeriesInstanceUID: seriesInstanceUID //SOPInstanceUID: sopInstanceUID, // TODO: Necessary? + //SOPClassUID: sopClassUID, + + }; + var _meta = { + FileMetaInformationVersion: { + Value: [fileMetaInformationVersionArray.buffer], + vr: "OB" + }, + //MediaStorageSOPClassUID + //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID, + TransferSyntaxUID: { + Value: ["1.2.840.10008.1.2.1"], + vr: "UI" + }, + ImplementationClassUID: { + Value: [DicomMetaDictionary.uid()], + // TODO: could be git hash or other valid id + vr: "UI" + }, + ImplementationVersionName: { + Value: ["dcmjs"], + vr: "SH" + } + }; + var _vrMap = { + PixelData: "OW" + }; + derivationSourceDataset._meta = _meta; + derivationSourceDataset._vrMap = _vrMap; + var report = new StructuredReport([derivationSourceDataset]); + + var contentItem = _MeasurementReport.contentItem(derivationSourceDataset); // Merge the derived dataset with the content from the Measurement Report + + + report.dataset = Object.assign(report.dataset, contentItem); + report.dataset._meta = _meta; + return report; + } + /** + * Generate Cornerstone tool state from dataset + * @param {object} dataset dataset + * @param {object} hooks + * @param {function} hooks.getToolClass Function to map dataset to a tool class + * @returns + */ + + }, { + key: "generateToolState", + value: function generateToolState(dataset) { + var hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // For now, bail out if the dataset is not a TID1500 SR with length measurements + if (dataset.ContentTemplateSequence.TemplateIdentifier !== "1500") { + throw new Error("This package can currently only interpret DICOM SR TID 1500"); + } + + var REPORT = "Imaging Measurements"; + var GROUP = "Measurement Group"; + var TRACKING_IDENTIFIER = "Tracking Identifier"; // Identify the Imaging Measurements + + var imagingMeasurementContent = toArray(dataset.ContentSequence).find(codeMeaningEquals(REPORT)); // Retrieve the Measurements themselves + + var measurementGroups = toArray(imagingMeasurementContent.ContentSequence).filter(codeMeaningEquals(GROUP)); // For each of the supported measurement types, compute the measurement data + + var measurementData = {}; + var cornerstoneToolClasses = MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE; + var registeredToolClasses = []; + Object.keys(cornerstoneToolClasses).forEach(function (key) { + registeredToolClasses.push(cornerstoneToolClasses[key]); + measurementData[key] = []; + }); + measurementGroups.forEach(function (measurementGroup) { + var measurementGroupContentSequence = toArray(measurementGroup.ContentSequence); + var TrackingIdentifierGroup = measurementGroupContentSequence.find(function (contentItem) { + return contentItem.ConceptNameCodeSequence.CodeMeaning === TRACKING_IDENTIFIER; + }); + var TrackingIdentifierValue = TrackingIdentifierGroup.TextValue; + var toolClass = hooks.getToolClass ? hooks.getToolClass(measurementGroup, dataset, registeredToolClasses) : registeredToolClasses.find(function (tc) { + return tc.isValidCornerstoneTrackingIdentifier(TrackingIdentifierValue); + }); + + if (toolClass) { + var measurement = toolClass.getMeasurementData(measurementGroup); + console.log("=== ".concat(toolClass.toolType, " ===")); + console.log(measurement); + measurementData[toolClass.toolType].push(measurement); + } + }); // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything. + // That is up to the consumer to derive from the SOPInstanceUIDs. + + return measurementData; + } + }, { + key: "registerTool", + value: function registerTool(toolClass) { + MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[toolClass.utilityToolType] = toolClass; + MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolClass.toolType] = toolClass; + MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] = toolClass.utilityToolType; + } + }]); + + return MeasurementReport; + }(); + MeasurementReport$3.MEASUREMENT_BY_TOOLTYPE = {}; + MeasurementReport$3.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {}; + MeasurementReport$3.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {}; + + var TID300Measurement = /*#__PURE__*/function () { + function TID300Measurement(props) { + _classCallCheck(this, TID300Measurement); + + this.ReferencedSOPSequence = props.ReferencedSOPSequence; + this.props = props; + } + + _createClass(TID300Measurement, [{ + key: "getMeasurement", + value: function getMeasurement(contentSequenceEntries) { + return [].concat(_toConsumableArray(this.getTrackingGroups()), _toConsumableArray(this.getFindingGroup()), _toConsumableArray(this.getFindingSiteGroups()), _toConsumableArray(contentSequenceEntries)); + } + }, { + key: "getTrackingGroups", + value: function getTrackingGroups() { + var trackingIdentifierTextValue = this.props.trackingIdentifierTextValue; + return [{ + RelationshipType: "HAS OBS CONTEXT", + ValueType: "TEXT", + ConceptNameCodeSequence: { + CodeValue: "112039", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Tracking Identifier" + }, + TextValue: trackingIdentifierTextValue || "web annotation" + }, { + RelationshipType: "HAS OBS CONTEXT", + ValueType: "UIDREF", + ConceptNameCodeSequence: { + CodeValue: "112040", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Tracking Unique Identifier" + }, + UID: DicomMetaDictionary.uid() + }]; + } + }, { + key: "getFindingGroup", + value: function getFindingGroup() { + var finding = this.props.finding; + + if (!finding) { + return []; + } + + var CodeValue = finding.CodeValue, + CodingSchemeDesignator = finding.CodingSchemeDesignator, + CodeMeaning = finding.CodeMeaning; + return [{ + RelationshipType: "CONTAINS", + ValueType: "CODE", + ConceptNameCodeSequence: addAccessors({ + CodeValue: "121071", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Finding" + }), + ConceptCodeSequence: addAccessors({ + CodeValue: CodeValue, + //: "SAMPLE FINDING", + CodingSchemeDesignator: CodingSchemeDesignator, + //: "99dcmjs", + CodeMeaning: CodeMeaning //: "Sample Finding" + + }) + }]; + } + }, { + key: "getFindingSiteGroups", + value: function getFindingSiteGroups() { + var findingSites = this.props.findingSites || []; + return findingSites.map(function (findingSite) { + var CodeValue = findingSite.CodeValue, + CodingSchemeDesignator = findingSite.CodingSchemeDesignator, + CodeMeaning = findingSite.CodeMeaning; + return { + RelationshipType: "CONTAINS", + ValueType: "CODE", + ConceptNameCodeSequence: addAccessors({ + CodeValue: "363698007", + CodingSchemeDesignator: "SCT", + CodeMeaning: "Finding Site" + }), + ConceptCodeSequence: addAccessors({ + CodeValue: CodeValue, + //: "SAMPLE FINDING SITE", + CodingSchemeDesignator: CodingSchemeDesignator, + //: "99dcmjs", + CodeMeaning: CodeMeaning //: "Sample Finding Site" + + }) + }; + }); + } + }]); + + return TID300Measurement; + }(); + + var MM_UNIT = { + CodeValue: "mm", + CodingSchemeDesignator: "UCUM", + CodingSchemeVersion: "1.4", + CodeMeaning: "millimeter" + }; + var MM2_UNIT = { + CodeValue: "mm2", + CodingSchemeDesignator: "UCUM", + CodingSchemeVersion: "1.4", + CodeMeaning: "SquareMilliMeter" + }; + var NO_UNIT = { + CodeValue: "1", + CodingSchemeDesignator: "UCUM", + CodingSchemeVersion: "1.4", + CodeMeaning: "px" + }; + var NO2_UNIT = NO_UNIT; + var measurementMap = { + px: NO_UNIT, + mm: MM_UNIT, + mm2: MM2_UNIT, + "mm\xB2": MM2_UNIT, + "px\xB2": NO2_UNIT + }; + /** Converts the given unit into the + * specified coding values. + * Has .measurementMap on the function specifying global units for measurements. + */ + + var unit2CodingValue = function unit2CodingValue(units) { + if (!units) return NO_UNIT; + var space = units.indexOf(" "); + var baseUnit = space === -1 ? units : units.substring(0, space); + var codingUnit = measurementMap[units] || measurementMap[baseUnit]; + + if (!codingUnit) { + log.error("Unspecified units", units); + return MM_UNIT; + } + + return codingUnit; + }; + + unit2CodingValue.measurementMap = measurementMap; + + var Length$2 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Length, _TID300Measurement); + + var _super = _createSuper(Length); + + function Length() { + _classCallCheck(this, Length); + + return _super.apply(this, arguments); + } + + _createClass(Length, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + point1 = _this$props.point1, + point2 = _this$props.point2, + _this$props$unit = _this$props.unit, + unit = _this$props$unit === void 0 ? "mm" : _this$props$unit, + distance = _this$props.distance, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence; + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-D7FE", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Length" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: distance + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "POLYLINE", + GraphicData: [point1.x, point1.y, point2.x, point2.y], + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Length; + }(TID300Measurement); + + var CORNERSTONE_4_TAG = "cornerstoneTools@^4.0.0"; + + var LENGTH$1 = "Length"; + + var Length$1 = /*#__PURE__*/function () { + function Length() { + _classCallCheck(this, Length); + } // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport. + + + _createClass(Length, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + length: NUMGroup.MeasuredValueSequence.NumericValue, + toolType: Length.toolType, + handles: { + start: {}, + end: {}, + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + } + }); + + var _SCOORDGroup$GraphicD = _slicedToArray(SCOORDGroup.GraphicData, 4); + + state.handles.start.x = _SCOORDGroup$GraphicD[0]; + state.handles.start.y = _SCOORDGroup$GraphicD[1]; + state.handles.end.x = _SCOORDGroup$GraphicD[2]; + state.handles.end.y = _SCOORDGroup$GraphicD[3]; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites; + var point1 = handles.start; + var point2 = handles.end; + var distance = tool.length; + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:Length"; + return { + point1: point1, + point2: point2, + distance: distance, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return Length; + }(); + + Length$1.toolType = LENGTH$1; + Length$1.utilityToolType = LENGTH$1; + Length$1.TID300Representation = Length$2; + + Length$1.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === LENGTH$1; + }; + + MeasurementReport$3.registerTool(Length$1); + + /** + * Expand an array of points stored as objects into + * a flattened array of points + * + * @param points [{x: 0, y: 1}, {x: 1, y: 2}] or [{x: 0, y: 1, z: 0}, {x: 1, y: 2, z: 0}] + * @return {Array} [point1x, point1y, point2x, point2y] or [point1x, point1y, point1z, point2x, point2y, point2z] + */ + + function expandPoints$3(points) { + var allPoints = []; + points.forEach(function (point) { + allPoints.push(point[0] || point.x); + allPoints.push(point[1] || point.y); + + if (point[2] !== undefined || point.z !== undefined) { + allPoints.push(point[2] || point.z); + } + }); + return allPoints; + } + + var Polyline$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Polyline, _TID300Measurement); + + var _super = _createSuper(Polyline); + + function Polyline() { + _classCallCheck(this, Polyline); + + return _super.apply(this, arguments); + } + + _createClass(Polyline, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + points = _this$props.points, + area = _this$props.area, + _this$props$areaUnit = _this$props.areaUnit, + areaUnit = _this$props$areaUnit === void 0 ? "mm2" : _this$props$areaUnit, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence, + _this$props$use3DSpat = _this$props.use3DSpatialCoordinates, + use3DSpatialCoordinates = _this$props$use3DSpat === void 0 ? false : _this$props$use3DSpat, + perimeter = _this$props.perimeter, + _this$props$unit = _this$props.unit, + unit = _this$props$unit === void 0 ? "mm" : _this$props$unit; + var GraphicData = expandPoints$3(points); // TODO: Add Mean and STDev value of (modality?) pixels + + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "131191004", + CodingSchemeDesignator: "SCT", + CodeMeaning: "Perimeter" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: perimeter + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "POLYLINE", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }, { + // TODO: This feels weird to repeat the GraphicData + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A166", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Area" // TODO: Look this up from a Code Meaning dictionary + + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(areaUnit), + NumericValue: area + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "POLYLINE", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Polyline; + }(TID300Measurement); + + var FreehandRoi = /*#__PURE__*/function () { + function FreehandRoi() { + _classCallCheck(this, FreehandRoi); + } + + _createClass(FreehandRoi, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + NUMGroup = _MeasurementReport$ge.NUMGroup; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + toolType: FreehandRoi.toolType, + handles: { + points: [], + textBox: { + active: false, + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + }, + cachedStats: { + area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0 + }, + color: undefined, + invalidated: true + }); + + var GraphicData = SCOORDGroup.GraphicData; + + for (var i = 0; i < GraphicData.length; i += 2) { + state.handles.points.push({ + x: GraphicData[i], + y: GraphicData[i + 1] + }); + } + + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites, + _tool$cachedStats = tool.cachedStats, + cachedStats = _tool$cachedStats === void 0 ? {} : _tool$cachedStats; + var points = handles.points; + var _cachedStats$area = cachedStats.area, + area = _cachedStats$area === void 0 ? 0 : _cachedStats$area, + _cachedStats$perimete = cachedStats.perimeter, + perimeter = _cachedStats$perimete === void 0 ? 0 : _cachedStats$perimete; + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:FreehandRoi"; + return { + points: points, + area: area, + perimeter: perimeter, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return FreehandRoi; + }(); + + FreehandRoi.toolType = "FreehandRoi"; + FreehandRoi.utilityToolType = "FreehandRoi"; + FreehandRoi.TID300Representation = Polyline$1; + + FreehandRoi.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === FreehandRoi.toolType; + }; + + MeasurementReport$3.registerTool(FreehandRoi); + + var Bidirectional$2 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Bidirectional, _TID300Measurement); + + var _super = _createSuper(Bidirectional); + + function Bidirectional() { + _classCallCheck(this, Bidirectional); + + return _super.apply(this, arguments); + } + + _createClass(Bidirectional, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + longAxis = _this$props.longAxis, + shortAxis = _this$props.shortAxis, + longAxisLength = _this$props.longAxisLength, + shortAxisLength = _this$props.shortAxisLength, + unit = _this$props.unit, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence; + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A185", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Long Axis" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: longAxisLength + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "POLYLINE", + GraphicData: [longAxis.point1.x, longAxis.point1.y, longAxis.point2.x, longAxis.point2.y], + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }, { + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A186", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Short Axis" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: shortAxisLength + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "POLYLINE", + GraphicData: [shortAxis.point1.x, shortAxis.point1.y, shortAxis.point2.x, shortAxis.point2.y], + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Bidirectional; + }(TID300Measurement); + + var BIDIRECTIONAL$1 = "Bidirectional"; + var LONG_AXIS$1 = "Long Axis"; + var SHORT_AXIS$1 = "Short Axis"; + var FINDING$1 = "121071"; + var FINDING_SITE$1 = "G-C0E3"; + + var Bidirectional$1 = /*#__PURE__*/function () { + function Bidirectional() { + _classCallCheck(this, Bidirectional); + } // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport. + + + _createClass(Bidirectional, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _state; + + var ContentSequence = MeasurementGroup.ContentSequence; + var findingGroup = toArray(ContentSequence).find(function (group) { + return group.ConceptNameCodeSequence.CodeValue === FINDING$1; + }); + var findingSiteGroups = toArray(ContentSequence).filter(function (group) { + return group.ConceptNameCodeSequence.CodeValue === FINDING_SITE$1; + }); + var longAxisNUMGroup = toArray(ContentSequence).find(function (group) { + return group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS$1; + }); + var longAxisSCOORDGroup = toArray(longAxisNUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var shortAxisNUMGroup = toArray(ContentSequence).find(function (group) { + return group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS$1; + }); + var shortAxisSCOORDGroup = toArray(shortAxisNUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var ReferencedSOPSequence = longAxisSCOORDGroup.ContentSequence.ReferencedSOPSequence; + var ReferencedSOPInstanceUID = ReferencedSOPSequence.ReferencedSOPInstanceUID, + ReferencedFrameNumber = ReferencedSOPSequence.ReferencedFrameNumber; // Long axis + + var longestDiameter = String(longAxisNUMGroup.MeasuredValueSequence.NumericValue); + var shortestDiameter = String(shortAxisNUMGroup.MeasuredValueSequence.NumericValue); + var bottomRight = { + x: Math.max(longAxisSCOORDGroup.GraphicData[0], longAxisSCOORDGroup.GraphicData[2], shortAxisSCOORDGroup.GraphicData[0], shortAxisSCOORDGroup.GraphicData[2]), + y: Math.max(longAxisSCOORDGroup.GraphicData[1], longAxisSCOORDGroup.GraphicData[3], shortAxisSCOORDGroup.GraphicData[1], shortAxisSCOORDGroup.GraphicData[3]) + }; + var state = (_state = { + sopInstanceUid: ReferencedSOPInstanceUID, + frameIndex: ReferencedFrameNumber || 1, + toolType: Bidirectional.toolType, + active: false, + handles: { + start: { + x: longAxisSCOORDGroup.GraphicData[0], + y: longAxisSCOORDGroup.GraphicData[1], + drawnIndependently: false, + allowedOutsideImage: false, + active: false, + highlight: false, + index: 0 + }, + end: { + x: longAxisSCOORDGroup.GraphicData[2], + y: longAxisSCOORDGroup.GraphicData[3], + drawnIndependently: false, + allowedOutsideImage: false, + active: false, + highlight: false, + index: 1 + }, + perpendicularStart: { + x: shortAxisSCOORDGroup.GraphicData[0], + y: shortAxisSCOORDGroup.GraphicData[1], + drawnIndependently: false, + allowedOutsideImage: false, + active: false, + highlight: false, + index: 2 + }, + perpendicularEnd: { + x: shortAxisSCOORDGroup.GraphicData[2], + y: shortAxisSCOORDGroup.GraphicData[3], + drawnIndependently: false, + allowedOutsideImage: false, + active: false, + highlight: false, + index: 3 + }, + textBox: { + highlight: false, + hasMoved: true, + active: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true, + x: bottomRight.x + 10, + y: bottomRight.y + 10 + } + }, + invalidated: false, + isCreating: false, + longestDiameter: longestDiameter, + shortestDiameter: shortestDiameter + }, _defineProperty(_state, "toolType", "Bidirectional"), _defineProperty(_state, "toolName", "Bidirectional"), _defineProperty(_state, "visible", true), _defineProperty(_state, "finding", findingGroup ? findingGroup.ConceptCodeSequence : undefined), _defineProperty(_state, "findingSites", findingSiteGroups.map(function (fsg) { + return fsg.ConceptCodeSequence; + })), _state); + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var _tool$handles = tool.handles, + start = _tool$handles.start, + end = _tool$handles.end, + perpendicularStart = _tool$handles.perpendicularStart, + perpendicularEnd = _tool$handles.perpendicularEnd; + var shortestDiameter = tool.shortestDiameter, + longestDiameter = tool.longestDiameter, + finding = tool.finding, + findingSites = tool.findingSites; + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:Bidirectional"; + return { + longAxis: { + point1: start, + point2: end + }, + shortAxis: { + point1: perpendicularStart, + point2: perpendicularEnd + }, + longAxisLength: longestDiameter, + shortAxisLength: shortestDiameter, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return Bidirectional; + }(); + + Bidirectional$1.toolType = BIDIRECTIONAL$1; + Bidirectional$1.utilityToolType = BIDIRECTIONAL$1; + Bidirectional$1.TID300Representation = Bidirectional$2; + + Bidirectional$1.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === BIDIRECTIONAL$1; + }; + + MeasurementReport$3.registerTool(Bidirectional$1); + + /** + * Expand an array of points stored as objects into + * a flattened array of points + * + * @param points + * @return {Array} + */ + + function expandPoints$2(points) { + var allPoints = []; + points.forEach(function (point) { + allPoints.push(point.x); + allPoints.push(point.y); + }); + return allPoints; + } + + var Ellipse$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Ellipse, _TID300Measurement); + + var _super = _createSuper(Ellipse); + + function Ellipse() { + _classCallCheck(this, Ellipse); + + return _super.apply(this, arguments); + } + + _createClass(Ellipse, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + points = _this$props.points, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence, + area = _this$props.area, + areaUnit = _this$props.areaUnit; + var GraphicData = expandPoints$2(points); + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-D7FE", + CodingSchemeDesignator: "SRT", + CodeMeaning: "AREA" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(areaUnit), + NumericValue: area + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "ELLIPSE", + GraphicData: GraphicData, + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Ellipse; + }(TID300Measurement); + + var ELLIPTICALROI$1 = "EllipticalRoi"; + + var EllipticalRoi = /*#__PURE__*/function () { + function EllipticalRoi() { + _classCallCheck(this, EllipticalRoi); + } // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport. + + + _createClass(EllipticalRoi, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup; + + var GraphicData = SCOORDGroup.GraphicData; + var majorAxis = [{ + x: GraphicData[0], + y: GraphicData[1] + }, { + x: GraphicData[2], + y: GraphicData[3] + }]; + var minorAxis = [{ + x: GraphicData[4], + y: GraphicData[5] + }, { + x: GraphicData[6], + y: GraphicData[7] + }]; // Calculate two opposite corners of box defined by two axes. + + var minorAxisLength = Math.sqrt(Math.pow(minorAxis[0].x - minorAxis[1].x, 2) + Math.pow(minorAxis[0].y - minorAxis[1].y, 2)); + var minorAxisDirection = { + x: (minorAxis[1].x - minorAxis[0].x) / minorAxisLength, + y: (minorAxis[1].y - minorAxis[0].y) / minorAxisLength + }; + var halfMinorAxisLength = minorAxisLength / 2; // First end point of major axis + half minor axis vector + + var corner1 = { + x: majorAxis[0].x + minorAxisDirection.x * halfMinorAxisLength, + y: majorAxis[0].y + minorAxisDirection.y * halfMinorAxisLength + }; // Second end point of major axis - half of minor axis vector + + var corner2 = { + x: majorAxis[1].x - minorAxisDirection.x * halfMinorAxisLength, + y: majorAxis[1].y - minorAxisDirection.y * halfMinorAxisLength + }; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + toolType: EllipticalRoi.toolType, + active: false, + cachedStats: { + area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0 + }, + handles: { + end: { + x: corner1.x, + y: corner1.y, + highlight: false, + active: false + }, + initialRotation: 0, + start: { + x: corner2.x, + y: corner2.y, + highlight: false, + active: false + }, + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + }, + invalidated: true, + visible: true + }); + + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var _tool$cachedStats = tool.cachedStats, + cachedStats = _tool$cachedStats === void 0 ? {} : _tool$cachedStats, + handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites; + var start = handles.start, + end = handles.end; + var area = cachedStats.area; + var halfXLength = Math.abs(start.x - end.x) / 2; + var halfYLength = Math.abs(start.y - end.y) / 2; + var points = []; + var center = { + x: (start.x + end.x) / 2, + y: (start.y + end.y) / 2 + }; + + if (halfXLength > halfYLength) { + // X-axis major + // Major axis + points.push({ + x: center.x - halfXLength, + y: center.y + }); + points.push({ + x: center.x + halfXLength, + y: center.y + }); // Minor axis + + points.push({ + x: center.x, + y: center.y - halfYLength + }); + points.push({ + x: center.x, + y: center.y + halfYLength + }); + } else { + // Y-axis major + // Major axis + points.push({ + x: center.x, + y: center.y - halfYLength + }); + points.push({ + x: center.x, + y: center.y + halfYLength + }); // Minor axis + + points.push({ + x: center.x - halfXLength, + y: center.y + }); + points.push({ + x: center.x + halfXLength, + y: center.y + }); + } + + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:EllipticalRoi"; + return { + area: area, + points: points, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return EllipticalRoi; + }(); + + EllipticalRoi.toolType = ELLIPTICALROI$1; + EllipticalRoi.utilityToolType = ELLIPTICALROI$1; + EllipticalRoi.TID300Representation = Ellipse$1; + + EllipticalRoi.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === ELLIPTICALROI$1; + }; + + MeasurementReport$3.registerTool(EllipticalRoi); + + /** + * Expand an array of points stored as objects into + * a flattened array of points + * + * @param points [{x: 0, y: 1}, {x: 1, y: 2}] or [{x: 0, y: 1, z: 0}, {x: 1, y: 2, z: 0}] + * @return {Array} [point1x, point1y, point2x, point2y] or [point1x, point1y, point1z, point2x, point2y, point2z] + */ + + function expandPoints$1(points) { + var allPoints = []; + points.forEach(function (point) { + allPoints.push(point.x); + allPoints.push(point.y); + }); + return allPoints; + } + + var Circle$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Circle, _TID300Measurement); + + var _super = _createSuper(Circle); + + function Circle() { + _classCallCheck(this, Circle); + + return _super.apply(this, arguments); + } + + _createClass(Circle, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + points = _this$props.points, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence, + _this$props$use3DSpat = _this$props.use3DSpatialCoordinates, + use3DSpatialCoordinates = _this$props$use3DSpat === void 0 ? false : _this$props$use3DSpat, + perimeter = _this$props.perimeter, + area = _this$props.area, + _this$props$areaUnit = _this$props.areaUnit, + areaUnit = _this$props$areaUnit === void 0 ? "mm2" : _this$props$areaUnit, + _this$props$unit = _this$props.unit, + unit = _this$props$unit === void 0 ? "mm" : _this$props$unit; // Combine all lengths to save the perimeter + // @ToDO The permiter has to be implemented + // const reducer = (accumulator, currentValue) => accumulator + currentValue; + // const perimeter = lengths.reduce(reducer); + + var GraphicData = expandPoints$1(points); // TODO: Add Mean and STDev value of (modality?) pixels + + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A197", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Perimeter" // TODO: Look this up from a Code Meaning dictionary + + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: perimeter + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "CIRCLE", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }, { + // TODO: This feels weird to repeat the GraphicData + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A166", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Area" // TODO: Look this up from a Code Meaning dictionary + + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(areaUnit), + NumericValue: area + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "CIRCLE", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Circle; + }(TID300Measurement); + + var CIRCLEROI = "CircleRoi"; + + var CircleRoi = /*#__PURE__*/function () { + function CircleRoi() { + _classCallCheck(this, CircleRoi); + } + /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */ + + + _createClass(CircleRoi, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup; + + var GraphicData = SCOORDGroup.GraphicData; + var center = { + x: GraphicData[0], + y: GraphicData[1] + }; + var end = { + x: GraphicData[2], + y: GraphicData[3] + }; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + toolType: CircleRoi.toolType, + active: false, + cachedStats: { + area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0, + // Dummy values to be updated by cornerstone + radius: 0, + perimeter: 0 + }, + handles: { + end: _objectSpread2(_objectSpread2({}, end), {}, { + highlight: false, + active: false + }), + initialRotation: 0, + start: _objectSpread2(_objectSpread2({}, center), {}, { + highlight: false, + active: false + }), + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + }, + invalidated: true, + visible: true + }); + + return state; + } + /** + * Gets the TID 300 representation of a circle, given the cornerstone representation. + * + * @param {Object} tool + * @returns + */ + + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var _tool$cachedStats = tool.cachedStats, + cachedStats = _tool$cachedStats === void 0 ? {} : _tool$cachedStats, + handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites; + var center = handles.start, + end = handles.end; + var area = cachedStats.area, + _cachedStats$areaUnit = cachedStats.areaUnit, + areaUnit = _cachedStats$areaUnit === void 0 ? "mm2" : _cachedStats$areaUnit, + _cachedStats$unit = cachedStats.unit, + unit = _cachedStats$unit === void 0 ? "mm" : _cachedStats$unit, + radius = cachedStats.radius; + var perimeter = 2 * Math.PI * radius; + var points = []; + points.push(center); + points.push(end); + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:CircleRoi"; + return { + area: area, + areaUnit: areaUnit, + perimeter: perimeter, + unit: unit, + radius: radius, + points: points, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return CircleRoi; + }(); + + CircleRoi.toolType = CIRCLEROI; + CircleRoi.utilityToolType = CIRCLEROI; + CircleRoi.TID300Representation = Circle$1; + + CircleRoi.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === CIRCLEROI; + }; + + MeasurementReport$3.registerTool(CircleRoi); + + var Point$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Point, _TID300Measurement); + + var _super = _createSuper(Point); + + function Point() { + _classCallCheck(this, Point); + + return _super.apply(this, arguments); + } + + _createClass(Point, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + points = _this$props.points, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence, + _this$props$use3DSpat = _this$props.use3DSpatialCoordinates, + use3DSpatialCoordinates = _this$props$use3DSpat === void 0 ? false : _this$props$use3DSpat; + var GraphicData = use3DSpatialCoordinates ? [points[0].x, points[0].y, points[0].z] : [points[0].x, points[0].y]; // Allow storing another point as part of an indicator showing a single point + + if (points.length == 2) { + GraphicData.push(points[1].x); + GraphicData.push(points[1].y); + if (use3DSpatialCoordinates) GraphicData.push(points[1].z); + } + + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "111010", + CodingSchemeDesignator: "DCM", + CodeMeaning: "Center" + }, + //MeasuredValueSequence: , + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "POINT", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Point; + }(TID300Measurement); + + var ARROW_ANNOTATE$1 = "ArrowAnnotate"; + var CORNERSTONEFREETEXT$1 = "CORNERSTONEFREETEXT"; + + var ArrowAnnotate$1 = /*#__PURE__*/function () { + function ArrowAnnotate() { + _classCallCheck(this, ArrowAnnotate); + } + + _createClass(ArrowAnnotate, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + findingGroup = _MeasurementReport$ge.findingGroup; + + var text = findingGroup.ConceptCodeSequence.CodeMeaning; + var GraphicData = SCOORDGroup.GraphicData; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + toolType: ArrowAnnotate.toolType, + active: false, + handles: { + start: { + x: GraphicData[0], + y: GraphicData[1], + highlight: true, + active: false + }, + // Use a generic offset if the stored data doesn't have the endpoint, otherwise + // use the actual endpoint. + end: { + x: GraphicData.length == 4 ? GraphicData[2] : GraphicData[0] + 20, + y: GraphicData.length == 4 ? GraphicData[3] : GraphicData[1] + 20, + highlight: true, + active: false + }, + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + }, + invalidated: true, + text: text, + visible: true + }); + + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var points = [tool.handles.start, tool.handles.end]; + var finding = tool.finding, + findingSites = tool.findingSites; + var TID300RepresentationArguments = { + points: points, + trackingIdentifierTextValue: "cornerstoneTools@^4.0.0:ArrowAnnotate", + findingSites: findingSites || [] + }; // If freetext finding isn't present, add it from the tool text. + + if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT$1) { + finding = { + CodeValue: CORNERSTONEFREETEXT$1, + CodingSchemeDesignator: "CST4", + CodeMeaning: tool.text + }; + } + + TID300RepresentationArguments.finding = finding; + return TID300RepresentationArguments; + } + }]); + + return ArrowAnnotate; + }(); + + ArrowAnnotate$1.toolType = ARROW_ANNOTATE$1; + ArrowAnnotate$1.utilityToolType = ARROW_ANNOTATE$1; + ArrowAnnotate$1.TID300Representation = Point$1; + + ArrowAnnotate$1.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === ARROW_ANNOTATE$1; + }; + + MeasurementReport$3.registerTool(ArrowAnnotate$1); + + function iota$1(n) { + var result = new Array(n); + for(var i=0; i + * @license MIT + */ + + // The _isBuffer check is for Safari 5-7 support, because it's missing + // Object.prototype.constructor. Remove this eventually + var isBuffer_1 = function (obj) { + return obj != null && (isBuffer$1(obj) || isSlowBuffer(obj) || !!obj._isBuffer) + }; + + function isBuffer$1 (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) + } + + // For Node v0.10 support. Remove this eventually. + function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer$1(obj.slice(0, 0)) + } + + var iota = iota_1; + var isBuffer = isBuffer_1; + + var hasTypedArrays = ((typeof Float64Array) !== "undefined"); + + function compare1st(a, b) { + return a[0] - b[0] + } + + function order() { + var stride = this.stride; + var terms = new Array(stride.length); + var i; + for(i=0; iMath.abs(this.stride[1]))?[1,0]:[0,1]}})"); + } else if(dimension === 3) { + code.push( + "var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);\ +if(s0>s1){\ +if(s1>s2){\ +return [2,1,0];\ +}else if(s0>s2){\ +return [1,2,0];\ +}else{\ +return [1,0,2];\ +}\ +}else if(s0>s2){\ +return [2,0,1];\ +}else if(s2>s1){\ +return [0,1,2];\ +}else{\ +return [0,2,1];\ +}}})"); + } + } else { + code.push("ORDER})"); + } + } + + //view.set(i0, ..., v): + code.push( + "proto.set=function "+className+"_set("+args.join(",")+",v){"); + if(useGetters) { + code.push("return this.data.set("+index_str+",v)}"); + } else { + code.push("return this.data["+index_str+"]=v}"); + } + + //view.get(i0, ...): + code.push("proto.get=function "+className+"_get("+args.join(",")+"){"); + if(useGetters) { + code.push("return this.data.get("+index_str+")}"); + } else { + code.push("return this.data["+index_str+"]}"); + } + + //view.index: + code.push( + "proto.index=function "+className+"_index(", args.join(), "){return "+index_str+"}"); + + //view.hi(): + code.push("proto.hi=function "+className+"_hi("+args.join(",")+"){return new "+className+"(this.data,"+ + indices.map(function(i) { + return ["(typeof i",i,"!=='number'||i",i,"<0)?this.shape[", i, "]:i", i,"|0"].join("") + }).join(",")+","+ + indices.map(function(i) { + return "this.stride["+i + "]" + }).join(",")+",this.offset)}"); + + //view.lo(): + var a_vars = indices.map(function(i) { return "a"+i+"=this.shape["+i+"]" }); + var c_vars = indices.map(function(i) { return "c"+i+"=this.stride["+i+"]" }); + code.push("proto.lo=function "+className+"_lo("+args.join(",")+"){var b=this.offset,d=0,"+a_vars.join(",")+","+c_vars.join(",")); + for(var i=0; i=0){\ +d=i"+i+"|0;\ +b+=c"+i+"*d;\ +a"+i+"-=d}"); + } + code.push("return new "+className+"(this.data,"+ + indices.map(function(i) { + return "a"+i + }).join(",")+","+ + indices.map(function(i) { + return "c"+i + }).join(",")+",b)}"); + + //view.step(): + code.push("proto.step=function "+className+"_step("+args.join(",")+"){var "+ + indices.map(function(i) { + return "a"+i+"=this.shape["+i+"]" + }).join(",")+","+ + indices.map(function(i) { + return "b"+i+"=this.stride["+i+"]" + }).join(",")+",c=this.offset,d=0,ceil=Math.ceil"); + for(var i=0; i=0){c=(c+this.stride["+i+"]*i"+i+")|0}else{a.push(this.shape["+i+"]);b.push(this.stride["+i+"])}"); + } + code.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"); + + //Add return statement + code.push("return function construct_"+className+"(data,shape,stride,offset){return new "+className+"(data,"+ + indices.map(function(i) { + return "shape["+i+"]" + }).join(",")+","+ + indices.map(function(i) { + return "stride["+i+"]" + }).join(",")+",offset)}"); + + //Compile procedure + var procedure = new Function("CTOR_LIST", "ORDER", code.join("\n")); + return procedure(CACHED_CONSTRUCTORS[dtype], order) + } + + function arrayDType(data) { + if(isBuffer(data)) { + return "buffer" + } + if(hasTypedArrays) { + switch(Object.prototype.toString.call(data)) { + case "[object Float64Array]": + return "float64" + case "[object Float32Array]": + return "float32" + case "[object Int8Array]": + return "int8" + case "[object Int16Array]": + return "int16" + case "[object Int32Array]": + return "int32" + case "[object Uint8Array]": + return "uint8" + case "[object Uint16Array]": + return "uint16" + case "[object Uint32Array]": + return "uint32" + case "[object Uint8ClampedArray]": + return "uint8_clamped" + case "[object BigInt64Array]": + return "bigint64" + case "[object BigUint64Array]": + return "biguint64" + } + } + if(Array.isArray(data)) { + return "array" + } + return "generic" + } + + var CACHED_CONSTRUCTORS = { + "float32":[], + "float64":[], + "int8":[], + "int16":[], + "int32":[], + "uint8":[], + "uint16":[], + "uint32":[], + "array":[], + "uint8_clamped":[], + "bigint64": [], + "biguint64": [], + "buffer":[], + "generic":[] + } + + ; + function wrappedNDArrayCtor(data, shape, stride, offset) { + if(data === undefined) { + var ctor = CACHED_CONSTRUCTORS.array[0]; + return ctor([]) + } else if(typeof data === "number") { + data = [data]; + } + if(shape === undefined) { + shape = [ data.length ]; + } + var d = shape.length; + if(stride === undefined) { + stride = new Array(d); + for(var i=d-1, sz=1; i>=0; --i) { + stride[i] = sz; + sz *= shape[i]; + } + } + if(offset === undefined) { + offset = 0; + for(var i=0; i 2 && arguments[2] !== undefined ? arguments[2] : { + includeSliceSpacing: true + }; + var toolState = brushData.toolState, + segments = brushData.segments; // Calculate the dimensions of the data cube. + + var image0 = images[0]; + var dims = { + x: image0.columns, + y: image0.rows, + z: images.length + }; + dims.xy = dims.x * dims.y; + + var numSegments = _getSegCount(seg, segments); + + if (!numSegments) { + throw new Error("No segments to export!"); + } + + var isMultiframe = image0.imageId.includes("?frame"); + + var seg = _createSegFromImages$1(images, isMultiframe, options); + + var _getNumberOfFramesPer = _getNumberOfFramesPerSegment(toolState, images, segments), + referencedFramesPerSegment = _getNumberOfFramesPer.referencedFramesPerSegment, + segmentIndicies = _getNumberOfFramesPer.segmentIndicies; + + var NumberOfFrames = 0; + + for (var i = 0; i < referencedFramesPerSegment.length; i++) { + NumberOfFrames += referencedFramesPerSegment[i].length; + } + + seg.setNumberOfFrames(NumberOfFrames); + + for (var _i = 0; _i < segmentIndicies.length; _i++) { + var segmentIndex = segmentIndicies[_i]; + var referencedFrameIndicies = referencedFramesPerSegment[_i]; // Frame numbers start from 1. + + var referencedFrameNumbers = referencedFrameIndicies.map(function (element) { + return element + 1; + }); + var segment = segments[segmentIndex]; + seg.addSegment(segment, _extractCornerstoneToolsPixelData(segmentIndex, referencedFrameIndicies, toolState, images, dims), referencedFrameNumbers); + } + + seg.bitPackPixelData(); + var segBlob = datasetToBlob(seg.dataset); + return segBlob; + } + + function _extractCornerstoneToolsPixelData(segmentIndex, referencedFrames, toolState, images, dims) { + var pixelData = new Uint8Array(dims.xy * referencedFrames.length); + var pixelDataIndex = 0; + + for (var i = 0; i < referencedFrames.length; i++) { + var frame = referencedFrames[i]; + var imageId = images[frame].imageId; + var imageIdSpecificToolState = toolState[imageId]; + var brushPixelData = imageIdSpecificToolState.brush.data[segmentIndex].pixelData; + + for (var p = 0; p < brushPixelData.length; p++) { + pixelData[pixelDataIndex] = brushPixelData[p]; + pixelDataIndex++; + } + } + + return pixelData; + } + + function _getNumberOfFramesPerSegment(toolState, images, segments) { + var segmentIndicies = []; + var referencedFramesPerSegment = []; + + for (var i = 0; i < segments.length; i++) { + if (segments[i]) { + segmentIndicies.push(i); + referencedFramesPerSegment.push([]); + } + } + + for (var z = 0; z < images.length; z++) { + var imageId = images[z].imageId; + var imageIdSpecificToolState = toolState[imageId]; + + for (var _i2 = 0; _i2 < segmentIndicies.length; _i2++) { + var segIdx = segmentIndicies[_i2]; + + if (imageIdSpecificToolState && imageIdSpecificToolState.brush && imageIdSpecificToolState.brush.data && imageIdSpecificToolState.brush.data[segIdx] && imageIdSpecificToolState.brush.data[segIdx].pixelData) { + referencedFramesPerSegment[_i2].push(z); + } + } + } + + return { + referencedFramesPerSegment: referencedFramesPerSegment, + segmentIndicies: segmentIndicies + }; + } + + function _getSegCount(seg, segments) { + var numSegments = 0; + + for (var i = 0; i < segments.length; i++) { + if (segments[i]) { + numSegments++; + } + } + + return numSegments; + } + /** + * _createSegFromImages - description + * + * @param {Object[]} images An array of the cornerstone image objects. + * @param {Boolean} isMultiframe Whether the images are multiframe. + * @returns {Object} The Seg derived dataSet. + */ + + + function _createSegFromImages$1(images, isMultiframe, options) { + var datasets = []; + + if (isMultiframe) { + var image = images[0]; + var arrayBuffer = image.data.byteArray.buffer; + var dicomData = DicomMessage.readFile(arrayBuffer); + var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict); + dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta); + datasets.push(dataset); + } else { + for (var i = 0; i < images.length; i++) { + var _image = images[i]; + var _arrayBuffer = _image.data.byteArray.buffer; + + var _dicomData = DicomMessage.readFile(_arrayBuffer); + + var _dataset = DicomMetaDictionary.naturalizeDataset(_dicomData.dict); + + _dataset._meta = DicomMetaDictionary.namifyDataset(_dicomData.meta); + datasets.push(_dataset); + } + } + + var multiframe = Normalizer.normalizeToDataset(datasets); + return new Segmentation$4([multiframe], options); + } + /** + * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer, + * derive cornerstoneTools toolState and brush metadata. + * + * @param {string[]} imageIds An array of the imageIds. + * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer. + * @param {*} metadataProvider + * @returns {Object} The toolState and an object from which the + * segment metadata can be derived. + */ + + + function generateToolState$2(imageIds, arrayBuffer, metadataProvider) { + var dicomData = DicomMessage.readFile(arrayBuffer); + var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict); + dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta); + var multiframe = Normalizer.normalizeToDataset([dataset]); + var imagePlaneModule = metadataProvider.get("imagePlaneModule", imageIds[0]); + + if (!imagePlaneModule) { + console.warn("Insufficient metadata, imagePlaneModule missing."); + } + + var ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [].concat(_toConsumableArray(imagePlaneModule.rowCosines), _toConsumableArray(imagePlaneModule.columnCosines)) : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z]; // Get IOP from ref series, compute supported orientations: + + var validOrientations = getValidOrientations$1(ImageOrientationPatient); + var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence; + var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined; + var sliceLength = multiframe.Columns * multiframe.Rows; + var segMetadata = getSegmentMetadata$1(multiframe); + var pixelData = unpackPixelData$1(multiframe); + var PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence; + var toolState = {}; + var inPlane = true; + + for (var i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) { + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i]; + var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient; + var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength), [multiframe.Rows, multiframe.Columns]); + var alignedPixelDataI = alignPixelDataWithSourceData$1(pixelDataI2D, ImageOrientationPatientI, validOrientations); + + if (!alignedPixelDataI) { + console.warn("This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. "); + inPlane = false; + break; + } + + var segmentIndex = PerFrameFunctionalGroups.SegmentIdentificationSequence.ReferencedSegmentNumber - 1; + var SourceImageSequence = void 0; + + if (SharedFunctionalGroupsSequence.DerivationImageSequence && SharedFunctionalGroupsSequence.DerivationImageSequence.SourceImageSequence) { + SourceImageSequence = SharedFunctionalGroupsSequence.DerivationImageSequence.SourceImageSequence[i]; + } else { + SourceImageSequence = PerFrameFunctionalGroups.DerivationImageSequence.SourceImageSequence; + } + + var imageId = getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider); + addImageIdSpecificBrushToolState(toolState, imageId, segmentIndex, alignedPixelDataI); + } + + if (!inPlane) { + return; + } + + return { + toolState: toolState, + segMetadata: segMetadata + }; + } + /** + * unpackPixelData - Unpacks bitpacked pixelData if the Segmentation is BINARY. + * + * @param {Object} multiframe The multiframe dataset. + * @return {Uint8Array} The unpacked pixelData. + */ + + + function unpackPixelData$1(multiframe) { + var segType = multiframe.SegmentationType; + + if (segType === "BINARY") { + return BitArray.unpack(multiframe.PixelData); + } + + var pixelData = new Uint8Array(multiframe.PixelData); + var max = multiframe.MaximumFractionalValue; + var onlyMaxAndZero = pixelData.find(function (element) { + return element !== 0 && element !== max; + }) === undefined; + + if (!onlyMaxAndZero) { + log.warn("This is a fractional segmentation, which is not currently supported."); + return; + } + + log.warn("This segmentation object is actually binary... processing as such."); + return pixelData; + } + /** + * addImageIdSpecificBrushToolState - Adds brush pixel data to cornerstoneTools + * formatted toolState object. + * + * @param {Object} toolState The toolState object to modify + * @param {String} imageId The imageId of the toolState to add the data. + * @param {Number} segmentIndex The index of the segment data being added. + * @param {Ndarray} pixelData2D The pixelData in Ndarry 2D format. + */ + + + function addImageIdSpecificBrushToolState(toolState, imageId, segmentIndex, pixelData2D) { + if (!toolState[imageId]) { + toolState[imageId] = {}; + toolState[imageId].brush = {}; + toolState[imageId].brush.data = []; + } else if (!toolState[imageId].brush) { + toolState[imageId].brush = {}; + toolState[imageId].brush.data = []; + } else if (!toolState[imageId].brush.data) { + toolState[imageId].brush.data = []; + } + + toolState[imageId].brush.data[segmentIndex] = {}; + var brushDataI = toolState[imageId].brush.data[segmentIndex]; + brushDataI.pixelData = new Uint8Array(pixelData2D.data.length); + var cToolsPixelData = brushDataI.pixelData; + + var _pixelData2D$shape = _slicedToArray(pixelData2D.shape, 2); + _pixelData2D$shape[0]; + _pixelData2D$shape[1]; + + for (var p = 0; p < cToolsPixelData.length; p++) { + if (pixelData2D.data[p]) { + cToolsPixelData[p] = 1; + } else { + cToolsPixelData[p] = 0; + } + } + } + /** + * getImageIdOfSourceImage - Returns the Cornerstone imageId of the source image. + * + * @param {Object} SourceImageSequence Sequence describing the source image. + * @param {String[]} imageIds A list of imageIds. + * @param {Object} metadataProvider A Cornerstone metadataProvider to query + * metadata from imageIds. + * @return {String} The corresponding imageId. + */ + + + function getImageIdOfSourceImage(SourceImageSequence, imageIds, metadataProvider) { + var ReferencedSOPInstanceUID = SourceImageSequence.ReferencedSOPInstanceUID, + ReferencedFrameNumber = SourceImageSequence.ReferencedFrameNumber; + return ReferencedFrameNumber ? getImageIdOfReferencedFrame$1(ReferencedSOPInstanceUID, ReferencedFrameNumber, imageIds, metadataProvider) : getImageIdOfReferencedSingleFramedSOPInstance$1(ReferencedSOPInstanceUID, imageIds, metadataProvider); + } + /** + * getImageIdOfReferencedSingleFramedSOPInstance - Returns the imageId + * corresponding to the specified sopInstanceUid for single-frame images. + * + * @param {String} sopInstanceUid The sopInstanceUid of the desired image. + * @param {String[]} imageIds The list of imageIds. + * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids + * from the cornerstone imageIds. + * @return {String} The imageId that corresponds to the sopInstanceUid. + */ + + + function getImageIdOfReferencedSingleFramedSOPInstance$1(sopInstanceUid, imageIds, metadataProvider) { + return imageIds.find(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + + if (!sopCommonModule) { + return; + } + + return sopCommonModule.sopInstanceUID === sopInstanceUid; + }); + } + /** + * getImageIdOfReferencedFrame - Returns the imageId corresponding to the + * specified sopInstanceUid and frameNumber for multi-frame images. + * + * @param {String} sopInstanceUid The sopInstanceUid of the desired image. + * @param {Number} frameNumber The frame number. + * @param {String} imageIds The list of imageIds. + * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids + * from the cornerstone imageIds. + * @return {String} The imageId that corresponds to the sopInstanceUid. + */ + + + function getImageIdOfReferencedFrame$1(sopInstanceUid, frameNumber, imageIds, metadataProvider) { + var imageId = imageIds.find(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + + if (!sopCommonModule) { + return; + } + + var imageIdFrameNumber = Number(imageId.split("frame=")[1]); + return (//frameNumber is zero indexed for cornerstoneWADOImageLoader image Ids. + sopCommonModule.sopInstanceUID === sopInstanceUid && imageIdFrameNumber === frameNumber - 1 + ); + }); + return imageId; + } + /** + * getValidOrientations - returns an array of valid orientations. + * + * @param {Number[6]} iop The row (0..2) an column (3..5) direction cosines. + * @return {Number[8][6]} An array of valid orientations. + */ + + + function getValidOrientations$1(iop) { + var orientations = []; // [0, 1, 2]: 0, 0hf, 0vf + // [3, 4, 5]: 90, 90hf, 90vf + // [6, 7]: 180, 270 + + orientations[0] = iop; + orientations[1] = flipImageOrientationPatient.h(iop); + orientations[2] = flipImageOrientationPatient.v(iop); + var iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2); + orientations[3] = iop90; + orientations[4] = flipImageOrientationPatient.h(iop90); + orientations[5] = flipImageOrientationPatient.v(iop90); + orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI); + orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI); + return orientations; + } + /** + * alignPixelDataWithSourceData - + * + * @param {Ndarray} pixelData2D The data to align. + * @param {Number[6]} iop The orientation of the image slice. + * @param {Number[8][6]} orientations An array of valid imageOrientationPatient values. + * @return {Ndarray} The aligned pixelData. + */ + + + function alignPixelDataWithSourceData$1(pixelData2D, iop, orientations) { + if (compareIOP(iop, orientations[0])) { + //Same orientation. + return pixelData2D; + } else if (compareIOP(iop, orientations[1])) { + //Flipped vertically. + return flipMatrix2D.v(pixelData2D); + } else if (compareIOP(iop, orientations[2])) { + //Flipped horizontally. + return flipMatrix2D.h(pixelData2D); + } else if (compareIOP(iop, orientations[3])) { + //Rotated 90 degrees. + return rotateMatrix902D(pixelData2D); + } else if (compareIOP(iop, orientations[4])) { + //Rotated 90 degrees and fliped horizontally. + return flipMatrix2D.h(rotateMatrix902D(pixelData2D)); + } else if (compareIOP(iop, orientations[5])) { + //Rotated 90 degrees and fliped vertically. + return flipMatrix2D.v(rotateMatrix902D(pixelData2D)); + } else if (compareIOP(iop, orientations[6])) { + //Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation. + return rotateMatrix902D(rotateMatrix902D(pixelData2D)); + } else if (compareIOP(iop, orientations[7])) { + //Rotated 270 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation. + return rotateMatrix902D(rotateMatrix902D(rotateMatrix902D(pixelData2D))); + } + } + + var dx = 1e-5; + /** + * compareIOP - Returns true if iop1 and iop2 are equal + * within a tollerance, dx. + * + * @param {Number[6]} iop1 An ImageOrientationPatient array. + * @param {Number[6]} iop2 An ImageOrientationPatient array. + * @return {Boolean} True if iop1 and iop2 are equal. + */ + + function compareIOP(iop1, iop2) { + return Math.abs(iop1[0] - iop2[0]) < dx && Math.abs(iop1[1] - iop2[1]) < dx && Math.abs(iop1[2] - iop2[2]) < dx && Math.abs(iop1[3] - iop2[3]) < dx && Math.abs(iop1[4] - iop2[4]) < dx && Math.abs(iop1[5] - iop2[5]) < dx; + } + + function getSegmentMetadata$1(multiframe) { + var data = []; + var segmentSequence = multiframe.SegmentSequence; + + if (Array.isArray(segmentSequence)) { + for (var segIdx = 0; segIdx < segmentSequence.length; segIdx++) { + data.push(segmentSequence[segIdx]); + } + } else { + // Only one segment, will be stored as an object. + data.push(segmentSequence); + } + + return { + seriesInstanceUid: multiframe.ReferencedSeriesSequence.SeriesInstanceUID, + data: data + }; + } + + /** + * Common utilities + * @module glMatrix + */ + // Configuration Constants + var EPSILON$1 = 0.000001; + var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array; + var RANDOM = Math.random; + if (!Math.hypot) Math.hypot = function () { + var y = 0, + i = arguments.length; + + while (i--) { + y += arguments[i] * arguments[i]; + } + + return Math.sqrt(y); + }; + + /** + * 3 Dimensional Vector + * @module vec3 + */ + + /** + * Creates a new, empty vec3 + * + * @returns {vec3} a new 3D vector + */ + + function create() { + var out = new ARRAY_TYPE(3); + + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + + return out; + } + /** + * Creates a new vec3 initialized with values from an existing vector + * + * @param {ReadonlyVec3} a vector to clone + * @returns {vec3} a new 3D vector + */ + + function clone(a) { + var out = new ARRAY_TYPE(3); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; + } + /** + * Calculates the length of a vec3 + * + * @param {ReadonlyVec3} a vector to calculate length of + * @returns {Number} length of a + */ + + function length(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return Math.hypot(x, y, z); + } + /** + * Creates a new vec3 initialized with the given values + * + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @returns {vec3} a new 3D vector + */ + + function fromValues(x, y, z) { + var out = new ARRAY_TYPE(3); + out[0] = x; + out[1] = y; + out[2] = z; + return out; + } + /** + * Copy the values from one vec3 to another + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the source vector + * @returns {vec3} out + */ + + function copy(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; + } + /** + * Set the components of a vec3 to the given values + * + * @param {vec3} out the receiving vector + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @returns {vec3} out + */ + + function set(out, x, y, z) { + out[0] = x; + out[1] = y; + out[2] = z; + return out; + } + /** + * Adds two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function add(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + return out; + } + /** + * Subtracts vector b from vector a + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function subtract$1(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + return out; + } + /** + * Multiplies two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function multiply(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + return out; + } + /** + * Divides two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function divide(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + return out; + } + /** + * Math.ceil the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to ceil + * @returns {vec3} out + */ + + function ceil(out, a) { + out[0] = Math.ceil(a[0]); + out[1] = Math.ceil(a[1]); + out[2] = Math.ceil(a[2]); + return out; + } + /** + * Math.floor the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to floor + * @returns {vec3} out + */ + + function floor(out, a) { + out[0] = Math.floor(a[0]); + out[1] = Math.floor(a[1]); + out[2] = Math.floor(a[2]); + return out; + } + /** + * Returns the minimum of two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function min(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + return out; + } + /** + * Returns the maximum of two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function max(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + return out; + } + /** + * Math.round the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to round + * @returns {vec3} out + */ + + function round(out, a) { + out[0] = Math.round(a[0]); + out[1] = Math.round(a[1]); + out[2] = Math.round(a[2]); + return out; + } + /** + * Scales a vec3 by a scalar number + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the vector to scale + * @param {Number} b amount to scale the vector by + * @returns {vec3} out + */ + + function scale(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + return out; + } + /** + * Adds two vec3's after scaling the second operand by a scalar value + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @param {Number} scale the amount to scale b by before adding + * @returns {vec3} out + */ + + function scaleAndAdd(out, a, b, scale) { + out[0] = a[0] + b[0] * scale; + out[1] = a[1] + b[1] * scale; + out[2] = a[2] + b[2] * scale; + return out; + } + /** + * Calculates the euclidian distance between two vec3's + * + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {Number} distance between a and b + */ + + function distance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return Math.hypot(x, y, z); + } + /** + * Calculates the squared euclidian distance between two vec3's + * + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {Number} squared distance between a and b + */ + + function squaredDistance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return x * x + y * y + z * z; + } + /** + * Calculates the squared length of a vec3 + * + * @param {ReadonlyVec3} a vector to calculate squared length of + * @returns {Number} squared length of a + */ + + function squaredLength(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return x * x + y * y + z * z; + } + /** + * Negates the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to negate + * @returns {vec3} out + */ + + function negate(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + return out; + } + /** + * Returns the inverse of the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to invert + * @returns {vec3} out + */ + + function inverse(out, a) { + out[0] = 1.0 / a[0]; + out[1] = 1.0 / a[1]; + out[2] = 1.0 / a[2]; + return out; + } + /** + * Normalize a vec3 + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a vector to normalize + * @returns {vec3} out + */ + + function normalize$1(out, a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var len = x * x + y * y + z * z; + + if (len > 0) { + //TODO: evaluate use of glm_invsqrt here? + len = 1 / Math.sqrt(len); + } + + out[0] = a[0] * len; + out[1] = a[1] * len; + out[2] = a[2] * len; + return out; + } + /** + * Calculates the dot product of two vec3's + * + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {Number} dot product of a and b + */ + + function dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + /** + * Computes the cross product of two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @returns {vec3} out + */ + + function cross$1(out, a, b) { + var ax = a[0], + ay = a[1], + az = a[2]; + var bx = b[0], + by = b[1], + bz = b[2]; + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; + } + /** + * Performs a linear interpolation between two vec3's + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @param {Number} t interpolation amount, in the range [0-1], between the two inputs + * @returns {vec3} out + */ + + function lerp(out, a, b, t) { + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + return out; + } + /** + * Performs a hermite interpolation with two control points + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @param {ReadonlyVec3} c the third operand + * @param {ReadonlyVec3} d the fourth operand + * @param {Number} t interpolation amount, in the range [0-1], between the two inputs + * @returns {vec3} out + */ + + function hermite(out, a, b, c, d, t) { + var factorTimes2 = t * t; + var factor1 = factorTimes2 * (2 * t - 3) + 1; + var factor2 = factorTimes2 * (t - 2) + t; + var factor3 = factorTimes2 * (t - 1); + var factor4 = factorTimes2 * (3 - 2 * t); + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; + } + /** + * Performs a bezier interpolation with two control points + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the first operand + * @param {ReadonlyVec3} b the second operand + * @param {ReadonlyVec3} c the third operand + * @param {ReadonlyVec3} d the fourth operand + * @param {Number} t interpolation amount, in the range [0-1], between the two inputs + * @returns {vec3} out + */ + + function bezier(out, a, b, c, d, t) { + var inverseFactor = 1 - t; + var inverseFactorTimesTwo = inverseFactor * inverseFactor; + var factorTimes2 = t * t; + var factor1 = inverseFactorTimesTwo * inverseFactor; + var factor2 = 3 * t * inverseFactorTimesTwo; + var factor3 = 3 * factorTimes2 * inverseFactor; + var factor4 = factorTimes2 * t; + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; + } + /** + * Generates a random vector with the given scale + * + * @param {vec3} out the receiving vector + * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned + * @returns {vec3} out + */ + + function random(out, scale) { + scale = scale || 1.0; + var r = RANDOM() * 2.0 * Math.PI; + var z = RANDOM() * 2.0 - 1.0; + var zScale = Math.sqrt(1.0 - z * z) * scale; + out[0] = Math.cos(r) * zScale; + out[1] = Math.sin(r) * zScale; + out[2] = z * scale; + return out; + } + /** + * Transforms the vec3 with a mat4. + * 4th vector component is implicitly '1' + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the vector to transform + * @param {ReadonlyMat4} m matrix to transform with + * @returns {vec3} out + */ + + function transformMat4(out, a, m) { + var x = a[0], + y = a[1], + z = a[2]; + var w = m[3] * x + m[7] * y + m[11] * z + m[15]; + w = w || 1.0; + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; + return out; + } + /** + * Transforms the vec3 with a mat3. + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the vector to transform + * @param {ReadonlyMat3} m the 3x3 matrix to transform with + * @returns {vec3} out + */ + + function transformMat3(out, a, m) { + var x = a[0], + y = a[1], + z = a[2]; + out[0] = x * m[0] + y * m[3] + z * m[6]; + out[1] = x * m[1] + y * m[4] + z * m[7]; + out[2] = x * m[2] + y * m[5] + z * m[8]; + return out; + } + /** + * Transforms the vec3 with a quat + * Can also be used for dual quaternions. (Multiply it with the real part) + * + * @param {vec3} out the receiving vector + * @param {ReadonlyVec3} a the vector to transform + * @param {ReadonlyQuat} q quaternion to transform with + * @returns {vec3} out + */ + + function transformQuat(out, a, q) { + // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed + var qx = q[0], + qy = q[1], + qz = q[2], + qw = q[3]; + var x = a[0], + y = a[1], + z = a[2]; // var qvec = [qx, qy, qz]; + // var uv = vec3.cross([], qvec, a); + + var uvx = qy * z - qz * y, + uvy = qz * x - qx * z, + uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv); + + var uuvx = qy * uvz - qz * uvy, + uuvy = qz * uvx - qx * uvz, + uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w); + + var w2 = qw * 2; + uvx *= w2; + uvy *= w2; + uvz *= w2; // vec3.scale(uuv, uuv, 2); + + uuvx *= 2; + uuvy *= 2; + uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv)); + + out[0] = x + uvx + uuvx; + out[1] = y + uvy + uuvy; + out[2] = z + uvz + uuvz; + return out; + } + /** + * Rotate a 3D vector around the x-axis + * @param {vec3} out The receiving vec3 + * @param {ReadonlyVec3} a The vec3 point to rotate + * @param {ReadonlyVec3} b The origin of the rotation + * @param {Number} rad The angle of rotation in radians + * @returns {vec3} out + */ + + function rotateX(out, a, b, rad) { + var p = [], + r = []; //Translate point to the origin + + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; //perform rotation + + r[0] = p[0]; + r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad); + r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position + + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; + } + /** + * Rotate a 3D vector around the y-axis + * @param {vec3} out The receiving vec3 + * @param {ReadonlyVec3} a The vec3 point to rotate + * @param {ReadonlyVec3} b The origin of the rotation + * @param {Number} rad The angle of rotation in radians + * @returns {vec3} out + */ + + function rotateY(out, a, b, rad) { + var p = [], + r = []; //Translate point to the origin + + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; //perform rotation + + r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad); + r[1] = p[1]; + r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position + + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; + } + /** + * Rotate a 3D vector around the z-axis + * @param {vec3} out The receiving vec3 + * @param {ReadonlyVec3} a The vec3 point to rotate + * @param {ReadonlyVec3} b The origin of the rotation + * @param {Number} rad The angle of rotation in radians + * @returns {vec3} out + */ + + function rotateZ(out, a, b, rad) { + var p = [], + r = []; //Translate point to the origin + + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; //perform rotation + + r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad); + r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad); + r[2] = p[2]; //translate to correct position + + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; + } + /** + * Get the angle between two 3D vectors + * @param {ReadonlyVec3} a The first operand + * @param {ReadonlyVec3} b The second operand + * @returns {Number} The angle in radians + */ + + function angle(a, b) { + var ax = a[0], + ay = a[1], + az = a[2], + bx = b[0], + by = b[1], + bz = b[2], + mag1 = Math.sqrt(ax * ax + ay * ay + az * az), + mag2 = Math.sqrt(bx * bx + by * by + bz * bz), + mag = mag1 * mag2, + cosine = mag && dot(a, b) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); + } + /** + * Set the components of a vec3 to zero + * + * @param {vec3} out the receiving vector + * @returns {vec3} out + */ + + function zero(out) { + out[0] = 0.0; + out[1] = 0.0; + out[2] = 0.0; + return out; + } + /** + * Returns a string representation of a vector + * + * @param {ReadonlyVec3} a vector to represent as a string + * @returns {String} string representation of the vector + */ + + function str(a) { + return "vec3(" + a[0] + ", " + a[1] + ", " + a[2] + ")"; + } + /** + * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===) + * + * @param {ReadonlyVec3} a The first vector. + * @param {ReadonlyVec3} b The second vector. + * @returns {Boolean} True if the vectors are equal, false otherwise. + */ + + function exactEquals(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; + } + /** + * Returns whether or not the vectors have approximately the same elements in the same position. + * + * @param {ReadonlyVec3} a The first vector. + * @param {ReadonlyVec3} b The second vector. + * @returns {Boolean} True if the vectors are equal, false otherwise. + */ + + function equals(a, b) { + var a0 = a[0], + a1 = a[1], + a2 = a[2]; + var b0 = b[0], + b1 = b[1], + b2 = b[2]; + return Math.abs(a0 - b0) <= EPSILON$1 * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON$1 * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON$1 * Math.max(1.0, Math.abs(a2), Math.abs(b2)); + } + /** + * Alias for {@link vec3.subtract} + * @function + */ + + var sub = subtract$1; + /** + * Alias for {@link vec3.multiply} + * @function + */ + + var mul = multiply; + /** + * Alias for {@link vec3.divide} + * @function + */ + + var div = divide; + /** + * Alias for {@link vec3.distance} + * @function + */ + + var dist = distance; + /** + * Alias for {@link vec3.squaredDistance} + * @function + */ + + var sqrDist = squaredDistance; + /** + * Alias for {@link vec3.length} + * @function + */ + + var len = length; + /** + * Alias for {@link vec3.squaredLength} + * @function + */ + + var sqrLen = squaredLength; + /** + * Perform some operation over an array of vec3s. + * + * @param {Array} a the array of vectors to iterate over + * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed + * @param {Number} offset Number of elements to skip at the beginning of the array + * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array + * @param {Function} fn Function to call for each vector in the array + * @param {Object} [arg] additional argument to pass to fn + * @returns {Array} a + * @function + */ + + var forEach = function () { + var vec = create(); + return function (a, stride, offset, count, fn, arg) { + var i, l; + + if (!stride) { + stride = 3; + } + + if (!offset) { + offset = 0; + } + + if (count) { + l = Math.min(count * stride + offset, a.length); + } else { + l = a.length; + } + + for (i = offset; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + vec[2] = a[i + 2]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + a[i + 2] = vec[2]; + } + + return a; + }; + }(); + + var vec3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + add: add, + angle: angle, + bezier: bezier, + ceil: ceil, + clone: clone, + copy: copy, + create: create, + cross: cross$1, + dist: dist, + distance: distance, + div: div, + divide: divide, + dot: dot, + equals: equals, + exactEquals: exactEquals, + floor: floor, + forEach: forEach, + fromValues: fromValues, + hermite: hermite, + inverse: inverse, + len: len, + length: length, + lerp: lerp, + max: max, + min: min, + mul: mul, + multiply: multiply, + negate: negate, + normalize: normalize$1, + random: random, + rotateX: rotateX, + rotateY: rotateY, + rotateZ: rotateZ, + round: round, + scale: scale, + scaleAndAdd: scaleAndAdd, + set: set, + sqrDist: sqrDist, + sqrLen: sqrLen, + squaredDistance: squaredDistance, + squaredLength: squaredLength, + str: str, + sub: sub, + subtract: subtract$1, + transformMat3: transformMat3, + transformMat4: transformMat4, + transformQuat: transformQuat, + zero: zero + }); + + /** + * Encodes a non-bitpacked frame which has one sample per pixel. + * + * @param {*} buffer + * @param {*} numberOfFrames + * @param {*} rows + * @param {*} cols + */ + + function encode(buffer, numberOfFrames, rows, cols) { + var frameLength = rows * cols; + var header = createHeader(); + var encodedFrames = []; + + for (var frame = 0; frame < numberOfFrames; frame++) { + var frameOffset = frameLength * frame; + encodedFrames.push(encodeFrame(buffer, frameOffset, rows, cols, header)); + } + + return encodedFrames; + } + + function encodeFrame(buffer, frameOffset, rows, cols, header) { + // Add header to frame: + var rleArray = []; + + for (var r = 0; r < rows; r++) { + var rowOffset = r * cols; + var uint8Row = new Uint8Array(buffer, frameOffset + rowOffset, cols); + var i = 0; + + while (i < uint8Row.length) { + var literalRunLength = getLiteralRunLength(uint8Row, i); + + if (literalRunLength) { + // State how many in litteral run + rleArray.push(literalRunLength - 1); // Append litteral run. + + var literalRun = uint8Row.slice(i, i + literalRunLength); + rleArray = [].concat(_toConsumableArray(rleArray), _toConsumableArray(literalRun)); + i += literalRunLength; + } + + if (i >= uint8Row.length) { + break; + } // Next must be a replicate run. + + + var replicateRunLength = getReplicateRunLength(uint8Row, i); + + if (replicateRunLength) { + // State how many in replicate run + rleArray.push(257 - replicateRunLength); + rleArray.push(uint8Row[i]); + i += replicateRunLength; + } + } + } + + var headerLength = 64; + var bodyLength = rleArray.length % 2 === 0 ? rleArray.length : rleArray.length + 1; + var encodedFrameBuffer = new ArrayBuffer(headerLength + bodyLength); // Copy header into encodedFrameBuffer. + + var headerView = new Uint32Array(encodedFrameBuffer, 0, 16); + + for (var _i = 0; _i < headerView.length; _i++) { + headerView[_i] = header[_i]; + } + + for (var _i2 = 0; _i2 < headerView.length; _i2++) { + rleArray.push(headerView[_i2]); + } // Copy rle data into encodedFrameBuffer. + + + var bodyView = new Uint8Array(encodedFrameBuffer, 64); + + for (var _i3 = 0; _i3 < rleArray.length; _i3++) { + bodyView[_i3] = rleArray[_i3]; + } + + return encodedFrameBuffer; + } + + function createHeader() { + var headerUint32 = new Uint32Array(16); + headerUint32[0] = 1; // 1 Segment. + + headerUint32[1] = 64; // Data offset is 64 bytes. + // Return byte-array version of header: + + return headerUint32; + } + + function getLiteralRunLength(uint8Row, i) { + for (var l = 0; l < uint8Row.length - i; l++) { + if (uint8Row[i + l] === uint8Row[i + l + 1] && uint8Row[i + l + 1] === uint8Row[i + l + 2]) { + return l; + } + + if (l === 128) { + return l; + } + } + + return uint8Row.length - i; + } + + function getReplicateRunLength(uint8Row, i) { + var first = uint8Row[i]; + + for (var l = 1; l < uint8Row.length - i; l++) { + if (uint8Row[i + l] !== first) { + return l; + } + + if (l === 128) { + return l; + } + } + + return uint8Row.length - i; + } + + function decode(rleEncodedFrames, rows, cols) { + var pixelData = new Uint8Array(rows * cols * rleEncodedFrames.length); + var buffer = pixelData.buffer; + var frameLength = rows * cols; + + for (var i = 0; i < rleEncodedFrames.length; i++) { + var rleEncodedFrame = rleEncodedFrames[i]; + var uint8FrameView = new Uint8Array(buffer, i * frameLength, frameLength); + decodeFrame(rleEncodedFrame, uint8FrameView); + } + + return pixelData; + } + + function decodeFrame(rleEncodedFrame, pixelData) { + // Check HEADER: + var header = new Uint32Array(rleEncodedFrame, 0, 16); + + if (header[0] !== 1) { + log.error("rleSingleSamplePerPixel only supports fragments with single Byte Segments (for rle encoded segmentation data) at the current time. This rleEncodedFrame has ".concat(header[0], " Byte Segments.")); + return; + } + + if (header[1] !== 64) { + log.error("Data offset of Byte Segment 1 should be 64 bytes, this rle fragment is encoded incorrectly."); + return; + } + + var uInt8Frame = new Uint8Array(rleEncodedFrame, 64); + var pixelDataIndex = 0; + var i = 0; + + while (pixelDataIndex < pixelData.length) { + var byteValue = uInt8Frame[i]; + + if (byteValue === undefined) { + break; + } + + if (byteValue <= 127) { + // TODO -> Interpret the next N+1 bytes literally. + var N = byteValue + 1; + var next = i + 1; // Read the next N bytes literally. + + for (var p = next; p < next + N; p++) { + pixelData[pixelDataIndex] = uInt8Frame[p]; + pixelDataIndex++; + } + + i += N + 1; + } + + if (byteValue >= 129) { + var _N = 257 - byteValue; + + var _next = i + 1; // Repeat the next byte N times. + + + for (var _p = 0; _p < _N; _p++) { + pixelData[pixelDataIndex] = uInt8Frame[_next]; + pixelDataIndex++; + } + + i += 2; + } + + if (i === uInt8Frame.length) { + break; + } + } + } + + var compression = /*#__PURE__*/Object.freeze({ + __proto__: null, + decode: decode, + encode: encode + }); + + var lodash_clonedeep = {exports: {}}; + + /** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + lodash_clonedeep.exports; + + (function (module, exports) { + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** + * Adds the key-value `pair` to `map`. + * + * @private + * @param {Object} map The map to modify. + * @param {Array} pair The key-value pair to add. + * @returns {Object} Returns `map`. + */ + function addMapEntry(map, pair) { + // Don't return `map.set` because it's not chainable in IE 11. + map.set(pair[0], pair[1]); + return map; + } + + /** + * Adds `value` to `set`. + * + * @private + * @param {Object} set The set to modify. + * @param {*} value The value to add. + * @returns {Object} Returns `set`. + */ + function addSetEntry(set, value) { + // Don't return `set.add` because it's not chainable in IE 11. + set.add(value); + return set; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ + function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = root['__core-js_shared__']; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString = objectProto.toString; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + this.__data__ = new ListCache(entries); + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + return this.__data__['delete'](key); + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {boolean} [isFull] Specify a clone including symbols. + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, isDeep, isFull, customizer, key, object, stack) { + var result; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + if (isHostObject(value)) { + return object ? value : {}; + } + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (!isArr) { + var props = isFull ? getAllKeys(value) : keys(value); + } + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ + function baseCreate(proto) { + return isObject(proto) ? objectCreate(proto) : {}; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + return objectToString.call(value); + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var result = new buffer.constructor(buffer.length); + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `map`. + * + * @private + * @param {Object} map The map to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned map. + */ + function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of `set`. + * + * @private + * @param {Object} set The set to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned set. + */ + function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; + } + + /** + * Copies own symbol properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * Creates an array of the own enumerable symbol properties of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11, + // for data views in Edge < 14, and promises in Node.js. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, true, true); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + module.exports = cloneDeep; + } (lodash_clonedeep, lodash_clonedeep.exports)); + + var lodash_clonedeepExports = lodash_clonedeep.exports; + var cloneDeep = /*@__PURE__*/getDefaultExportFromCjs(lodash_clonedeepExports); + + var Segmentation$2 = { + generateSegmentation: generateSegmentation$1, + generateToolState: generateToolState$1, + fillSegmentation: fillSegmentation$1 + }; + /** + * + * @typedef {Object} BrushData + * @property {Object} toolState - The cornerstoneTools global toolState. + * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the + * seriesInstanceUid. + */ + + var generateSegmentationDefaultOptions = { + includeSliceSpacing: true, + rleEncode: true + }; + /** + * generateSegmentation - Generates cornerstoneTools brush data, given a stack of + * imageIds, images and the cornerstoneTools brushData. + * + * @param {object[]} images An array of cornerstone images that contain the source + * data under `image.data.byteArray.buffer`. + * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects. + * @param {Object} userOptions Options to pass to the segmentation derivation and `fillSegmentation`. + * @returns {Blob} + */ + + function generateSegmentation$1(images, inputLabelmaps3D) { + var userOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var isMultiframe = images[0].imageId.includes("?frame"); + + var segmentation = _createSegFromImages(images, isMultiframe, userOptions); + + return fillSegmentation$1(segmentation, inputLabelmaps3D, userOptions); + } + /** + * fillSegmentation - Fills a derived segmentation dataset with cornerstoneTools `LabelMap3D` data. + * + * @param {object[]} segmentation An empty segmentation derived dataset. + * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects. + * @param {Object} userOptions Options object to override default options. + * @returns {Blob} description + */ + + + function fillSegmentation$1(segmentation, inputLabelmaps3D) { + var userOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var options = Object.assign({}, generateSegmentationDefaultOptions, userOptions); // Use another variable so we don't redefine labelmaps3D. + + var labelmaps3D = Array.isArray(inputLabelmaps3D) ? inputLabelmaps3D : [inputLabelmaps3D]; + var numberOfFrames = 0; + var referencedFramesPerLabelmap = []; + + var _loop = function _loop(labelmapIndex) { + var labelmap3D = labelmaps3D[labelmapIndex]; + var labelmaps2D = labelmap3D.labelmaps2D, + metadata = labelmap3D.metadata; + var referencedFramesPerSegment = []; + + for (var i = 1; i < metadata.length; i++) { + if (metadata[i]) { + referencedFramesPerSegment[i] = []; + } + } + + var _loop2 = function _loop2(_i) { + var labelmap2D = labelmaps2D[_i]; + + if (labelmaps2D[_i]) { + var segmentsOnLabelmap = labelmap2D.segmentsOnLabelmap; + segmentsOnLabelmap.forEach(function (segmentIndex) { + if (segmentIndex !== 0) { + referencedFramesPerSegment[segmentIndex].push(_i); + numberOfFrames++; + } + }); + } + }; + + for (var _i = 0; _i < labelmaps2D.length; _i++) { + _loop2(_i); + } + + referencedFramesPerLabelmap[labelmapIndex] = referencedFramesPerSegment; + }; + + for (var labelmapIndex = 0; labelmapIndex < labelmaps3D.length; labelmapIndex++) { + _loop(labelmapIndex); + } + + segmentation.setNumberOfFrames(numberOfFrames); + + for (var _labelmapIndex = 0; _labelmapIndex < labelmaps3D.length; _labelmapIndex++) { + var referencedFramesPerSegment = referencedFramesPerLabelmap[_labelmapIndex]; + var labelmap3D = labelmaps3D[_labelmapIndex]; + var metadata = labelmap3D.metadata; + + for (var segmentIndex = 1; segmentIndex < referencedFramesPerSegment.length; segmentIndex++) { + var referencedFrameIndicies = referencedFramesPerSegment[segmentIndex]; + + if (referencedFrameIndicies) { + // Frame numbers start from 1. + var referencedFrameNumbers = referencedFrameIndicies.map(function (element) { + return element + 1; + }); + var segmentMetadata = metadata[segmentIndex]; + + var labelmaps = _getLabelmapsFromRefernecedFrameIndicies(labelmap3D, referencedFrameIndicies); + + segmentation.addSegmentFromLabelmap(segmentMetadata, labelmaps, segmentIndex, referencedFrameNumbers); + } + } + } + + if (options.rleEncode) { + var rleEncodedFrames = encode(segmentation.dataset.PixelData, numberOfFrames, segmentation.dataset.Rows, segmentation.dataset.Columns); // Must use fractional now to RLE encode, as the DICOM standard only allows BitStored && BitsAllocated + // to be 1 for BINARY. This is not ideal and there should be a better format for compression in this manner + // added to the standard. + + segmentation.assignToDataset({ + BitsAllocated: "8", + BitsStored: "8", + HighBit: "7", + SegmentationType: "FRACTIONAL", + SegmentationFractionalType: "PROBABILITY", + MaximumFractionalValue: "255" + }); + segmentation.dataset._meta.TransferSyntaxUID = { + Value: ["1.2.840.10008.1.2.5"], + vr: "UI" + }; + segmentation.dataset._vrMap.PixelData = "OB"; + segmentation.dataset.PixelData = rleEncodedFrames; + } else { + // If no rleEncoding, at least bitpack the data. + segmentation.bitPackPixelData(); + } + + var segBlob = datasetToBlob(segmentation.dataset); + return segBlob; + } + + function _getLabelmapsFromRefernecedFrameIndicies(labelmap3D, referencedFrameIndicies) { + var labelmaps2D = labelmap3D.labelmaps2D; + var labelmaps = []; + + for (var i = 0; i < referencedFrameIndicies.length; i++) { + var frame = referencedFrameIndicies[i]; + labelmaps.push(labelmaps2D[frame].pixelData); + } + + return labelmaps; + } + /** + * _createSegFromImages - description + * + * @param {Object[]} images An array of the cornerstone image objects. + * @param {Boolean} isMultiframe Whether the images are multiframe. + * @returns {Object} The Seg derived dataSet. + */ + + + function _createSegFromImages(images, isMultiframe, options) { + var datasets = []; + + if (isMultiframe) { + var image = images[0]; + var arrayBuffer = image.data.byteArray.buffer; + var dicomData = DicomMessage.readFile(arrayBuffer); + var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict); + dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta); + datasets.push(dataset); + } else { + for (var i = 0; i < images.length; i++) { + var _image = images[i]; + var _arrayBuffer = _image.data.byteArray.buffer; + + var _dicomData = DicomMessage.readFile(_arrayBuffer); + + var _dataset = DicomMetaDictionary.naturalizeDataset(_dicomData.dict); + + _dataset._meta = DicomMetaDictionary.namifyDataset(_dicomData.meta); + datasets.push(_dataset); + } + } + + var multiframe = Normalizer.normalizeToDataset(datasets); + return new Segmentation$4([multiframe], options); + } + /** + * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer, + * derive cornerstoneTools toolState and brush metadata. + * + * @param {string[]} imageIds - An array of the imageIds. + * @param {ArrayBuffer} arrayBuffer - The SEG arrayBuffer. + * @param {*} metadataProvider. + * @param {bool} skipOverlapping - skip checks for overlapping segs, default value false. + * @param {number} tolerance - default value 1.e-3. + * + * @return {[]ArrayBuffer}a list of array buffer for each labelMap + * @return {Object} an object from which the segment metadata can be derived + * @return {[][][]} 2D list containing the track of segments per frame + * @return {[][][]} 3D list containing the track of segments per frame for each labelMap + * (available only for the overlapping case). + */ + + + function generateToolState$1(imageIds, arrayBuffer, metadataProvider) { + var skipOverlapping = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var tolerance = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1e-3; + var dicomData = DicomMessage.readFile(arrayBuffer); + var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict); + dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta); + var multiframe = Normalizer.normalizeToDataset([dataset]); + var imagePlaneModule = metadataProvider.get("imagePlaneModule", imageIds[0]); + var generalSeriesModule = metadataProvider.get("generalSeriesModule", imageIds[0]); + var SeriesInstanceUID = generalSeriesModule.seriesInstanceUID; + + if (!imagePlaneModule) { + console.warn("Insufficient metadata, imagePlaneModule missing."); + } + + var ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [].concat(_toConsumableArray(imagePlaneModule.rowCosines), _toConsumableArray(imagePlaneModule.columnCosines)) : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z]; // Get IOP from ref series, compute supported orientations: + + var validOrientations = getValidOrientations(ImageOrientationPatient); + var sliceLength = multiframe.Columns * multiframe.Rows; + var segMetadata = getSegmentMetadata(multiframe, SeriesInstanceUID); + var TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0]; + var pixelData; + + if (TransferSyntaxUID === "1.2.840.10008.1.2.5") { + var rleEncodedFrames = Array.isArray(multiframe.PixelData) ? multiframe.PixelData : [multiframe.PixelData]; + pixelData = decode(rleEncodedFrames, multiframe.Rows, multiframe.Columns); + + if (multiframe.BitsStored === 1) { + console.warn("No implementation for rle + bitbacking."); + return; + } + } else { + pixelData = unpackPixelData(multiframe); + + if (!pixelData) { + throw new Error("Fractional segmentations are not yet supported"); + } + } + + var orientation = checkOrientation(multiframe, validOrientations, [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length], tolerance); + var overlapping = false; + + if (!skipOverlapping) { + overlapping = checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance); + } + + var insertFunction; + + switch (orientation) { + case "Planar": + if (overlapping) { + insertFunction = insertOverlappingPixelDataPlanar; + } else { + insertFunction = insertPixelDataPlanar; + } + + break; + + case "Perpendicular": + //insertFunction = insertPixelDataPerpendicular; + throw new Error("Segmentations orthogonal to the acquisition plane of the source data are not yet supported."); + + case "Oblique": + throw new Error("Segmentations oblique to the acquisition plane of the source data are not yet supported."); + } + /* if SEGs are overlapping: + 1) the labelmapBuffer will contain M volumes which have non-overlapping segments; + 2) segmentsOnFrame will have M * numberOfFrames values to track in which labelMap are the segments; + 3) insertFunction will return the number of LabelMaps + 4) generateToolState return is an array*/ + + + var segmentsOnFrameArray = []; + segmentsOnFrameArray[0] = []; + var segmentsOnFrame = []; + var arrayBufferLength = sliceLength * imageIds.length * 2; // 2 bytes per label voxel in cst4. + + var labelmapBufferArray = []; + labelmapBufferArray[0] = new ArrayBuffer(arrayBufferLength); + insertFunction(segmentsOnFrame, segmentsOnFrameArray, labelmapBufferArray, pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance); + return { + labelmapBufferArray: labelmapBufferArray, + segMetadata: segMetadata, + segmentsOnFrame: segmentsOnFrame, + segmentsOnFrameArray: segmentsOnFrameArray + }; + } + /** + * Find the reference frame of the segmentation frame in the source data. + * + * @param {Object} multiframe dicom metadata + * @param {Int} frameSegment frame dicom index + * @param {String[]} imageIds A list of imageIds. + * @param {Object} metadataProvider A Cornerstone metadataProvider to query + * metadata from imageIds. + * @param {Float} tolerance The tolerance parameter + * + * @returns {String} Returns the imageId + */ + + + function findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadataProvider, tolerance) { + var imageId = undefined; + + if (!multiframe) { + return imageId; + } + + var FrameOfReferenceUID = multiframe.FrameOfReferenceUID, + PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence, + SourceImageSequence = multiframe.SourceImageSequence, + ReferencedSeriesSequence = multiframe.ReferencedSeriesSequence; + + if (!PerFrameFunctionalGroupsSequence || PerFrameFunctionalGroupsSequence.length === 0) { + return imageId; + } + + var PerFrameFunctionalGroup = PerFrameFunctionalGroupsSequence[frameSegment]; + + if (!PerFrameFunctionalGroup) { + return imageId; + } + + var frameSourceImageSequence = undefined; + + if (SourceImageSequence && SourceImageSequence.length !== 0) { + frameSourceImageSequence = SourceImageSequence[frameSegment]; + } else if (PerFrameFunctionalGroup.DerivationImageSequence) { + var DerivationImageSequence = PerFrameFunctionalGroup.DerivationImageSequence; + + if (Array.isArray(DerivationImageSequence)) { + if (DerivationImageSequence.length !== 0) { + DerivationImageSequence = DerivationImageSequence[0]; + } else { + DerivationImageSequence = undefined; + } + } + + if (DerivationImageSequence) { + frameSourceImageSequence = DerivationImageSequence.SourceImageSequence; + + if (Array.isArray(frameSourceImageSequence)) { + if (frameSourceImageSequence.length !== 0) { + frameSourceImageSequence = frameSourceImageSequence[0]; + } else { + frameSourceImageSequence = undefined; + } + } + } + } + + if (frameSourceImageSequence) { + imageId = getImageIdOfSourceImagebySourceImageSequence(frameSourceImageSequence, imageIds, metadataProvider); + } + + if (imageId === undefined && ReferencedSeriesSequence) { + var referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence) ? ReferencedSeriesSequence[0] : ReferencedSeriesSequence; + var ReferencedSeriesInstanceUID = referencedSeriesSequence.SeriesInstanceUID; + imageId = getImageIdOfSourceImagebyGeometry(ReferencedSeriesInstanceUID, FrameOfReferenceUID, PerFrameFunctionalGroup, imageIds, metadataProvider, tolerance); + } + + return imageId; + } + /** + * Checks if there is any overlapping segmentations. + * @returns {boolean} Returns a flag if segmentations overlapping + */ + + + function checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance) { + var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence, + PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence, + SegmentSequence = multiframe.SegmentSequence, + Rows = multiframe.Rows, + Columns = multiframe.Columns; + var numberOfSegs = SegmentSequence.length; + + if (numberOfSegs < 2) { + return false; + } + + var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined; + var sliceLength = Columns * Rows; + var groupsLen = PerFrameFunctionalGroupsSequence.length; + /** sort groupsLen to have all the segments for each frame in an array + * frame 2 : 1, 2 + * frame 4 : 1, 3 + * frame 5 : 4 + */ + + var frameSegmentsMapping = new Map(); + + var _loop3 = function _loop3(frameSegment) { + var segmentIndex = getSegmentIndex(multiframe, frameSegment); + + if (segmentIndex === undefined) { + console.warn("Could not retrieve the segment index for frame segment " + frameSegment + ", skipping this frame."); + return "continue"; + } + + var imageId = findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadataProvider, tolerance); + + if (!imageId) { + console.warn("Image not present in stack, can't import frame : " + frameSegment + "."); + return "continue"; + } + + var imageIdIndex = imageIds.findIndex(function (element) { + return element === imageId; + }); + + if (frameSegmentsMapping.has(imageIdIndex)) { + var segmentArray = frameSegmentsMapping.get(imageIdIndex); + + if (!segmentArray.includes(frameSegment)) { + segmentArray.push(frameSegment); + frameSegmentsMapping.set(imageIdIndex, segmentArray); + } + } else { + frameSegmentsMapping.set(imageIdIndex, [frameSegment]); + } + }; + + for (var frameSegment = 0; frameSegment < groupsLen; ++frameSegment) { + var _ret = _loop3(frameSegment); + + if (_ret === "continue") continue; + } + + var _iterator = _createForOfIteratorHelper(frameSegmentsMapping.entries()), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _step$value = _slicedToArray(_step.value, 2), + user = _step$value[0], + role = _step$value[1]; + + var temp2DArray = new Uint16Array(sliceLength).fill(0); + + for (var i = 0; i < role.length; ++i) { + var _frameSegment = role[i]; + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[_frameSegment]; + var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient; + var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _frameSegment * sliceLength, sliceLength), [Rows, Columns]); + var alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance); + + if (!alignedPixelDataI) { + console.warn("Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame."); + continue; + } + + var data = alignedPixelDataI.data; + + for (var j = 0, len = data.length; j < len; ++j) { + if (data[j] !== 0) { + temp2DArray[j]++; + + if (temp2DArray[j] > 1) { + return true; + } + } + } + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return false; + } + + function insertOverlappingPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBufferArray, pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance) { + var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence, + PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence, + Rows = multiframe.Rows, + Columns = multiframe.Columns; + var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined; + var sliceLength = Columns * Rows; + var arrayBufferLength = sliceLength * imageIds.length * 2; // 2 bytes per label voxel in cst4. + // indicate the number of labelMaps + + var M = 1; // indicate the current labelMap array index; + + var m = 0; // temp array for checking overlaps + + var tempBuffer = labelmapBufferArray[m].slice(0); // temp list for checking overlaps + + var tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]); + /** split overlapping SEGs algorithm for each segment: + * A) copy the labelmapBuffer in the array with index 0 + * B) add the segment pixel per pixel on the copied buffer from (A) + * C) if no overlap, copy the results back on the orignal array from (A) + * D) if overlap, repeat increasing the index m up to M (if out of memory, add new buffer in the array and M++); + */ + + var numberOfSegs = multiframe.SegmentSequence.length; + + for (var segmentIndexToProcess = 1; segmentIndexToProcess <= numberOfSegs; ++segmentIndexToProcess) { + var _loop4 = function _loop4(_i2, groupsLen) { + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[_i2]; + var segmentIndex = getSegmentIndex(multiframe, _i2); + + if (segmentIndex === undefined) { + throw new Error("Could not retrieve the segment index. Aborting segmentation loading."); + } + + if (segmentIndex !== segmentIndexToProcess) { + i = _i2; + return "continue"; + } + + var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient; + var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _i2 * sliceLength, sliceLength), [Rows, Columns]); + var alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance); + + if (!alignedPixelDataI) { + throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. " + "This is not yet supported. Aborting segmentation loading."); + } + + var imageId = findReferenceSourceImageId(multiframe, _i2, imageIds, metadataProvider, tolerance); + + if (!imageId) { + console.warn("Image not present in stack, can't import frame : " + _i2 + "."); + i = _i2; + return "continue"; + } + + var sourceImageMetadata = metadataProvider.get("instance", imageId); + + if (Rows !== sourceImageMetadata.Rows || Columns !== sourceImageMetadata.Columns) { + throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) " + "respect to the source image reference frame. This is not yet supported. " + "Aborting segmentation loading. "); + } + + var imageIdIndex = imageIds.findIndex(function (element) { + return element === imageId; + }); + var byteOffset = sliceLength * 2 * imageIdIndex; // 2 bytes/pixel + + var labelmap2DView = new Uint16Array(tempBuffer, byteOffset, sliceLength); + var data = alignedPixelDataI.data; + var segmentOnFrame = false; + + for (var j = 0, len = alignedPixelDataI.data.length; j < len; ++j) { + if (data[j]) { + if (labelmap2DView[j] !== 0) { + m++; + + if (m >= M) { + labelmapBufferArray[m] = new ArrayBuffer(arrayBufferLength); + segmentsOnFrameArray[m] = []; + M++; + } + + tempBuffer = labelmapBufferArray[m].slice(0); + tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]); + _i2 = 0; + break; + } else { + labelmap2DView[j] = segmentIndex; + segmentOnFrame = true; + } + } + } + + if (segmentOnFrame) { + if (!tempSegmentsOnFrame[imageIdIndex]) { + tempSegmentsOnFrame[imageIdIndex] = []; + } + + tempSegmentsOnFrame[imageIdIndex].push(segmentIndex); + + if (!segmentsOnFrame[imageIdIndex]) { + segmentsOnFrame[imageIdIndex] = []; + } + + segmentsOnFrame[imageIdIndex].push(segmentIndex); + } + + i = _i2; + }; + + for (var i = 0, groupsLen = PerFrameFunctionalGroupsSequence.length; i < groupsLen; ++i) { + var _ret2 = _loop4(i, groupsLen); + + if (_ret2 === "continue") continue; + } + + labelmapBufferArray[m] = tempBuffer.slice(0); + segmentsOnFrameArray[m] = cloneDeep(tempSegmentsOnFrame); // reset temp variables/buffers for new segment + + m = 0; + tempBuffer = labelmapBufferArray[m].slice(0); + tempSegmentsOnFrame = cloneDeep(segmentsOnFrameArray[m]); + } + } + + var getSegmentIndex = function getSegmentIndex(multiframe, frame) { + var PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence, + SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence; + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[frame]; + return PerFrameFunctionalGroups && PerFrameFunctionalGroups.SegmentIdentificationSequence ? PerFrameFunctionalGroups.SegmentIdentificationSequence.ReferencedSegmentNumber : SharedFunctionalGroupsSequence.SegmentIdentificationSequence ? SharedFunctionalGroupsSequence.SegmentIdentificationSequence.ReferencedSegmentNumber : undefined; + }; + + function insertPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBufferArray, pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance) { + var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence, + PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence, + Rows = multiframe.Rows, + Columns = multiframe.Columns; + var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined; + var sliceLength = Columns * Rows; + + var _loop5 = function _loop5(groupsLen, _i3) { + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[_i3]; + var ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient; + var pixelDataI2D = ndarray$1(new Uint8Array(pixelData.buffer, _i3 * sliceLength, sliceLength), [Rows, Columns]); + var alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance); + + if (!alignedPixelDataI) { + throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. " + "This is not yet supported. Aborting segmentation loading."); + } + + var segmentIndex = getSegmentIndex(multiframe, _i3); + + if (segmentIndex === undefined) { + throw new Error("Could not retrieve the segment index. Aborting segmentation loading."); + } + + var imageId = findReferenceSourceImageId(multiframe, _i3, imageIds, metadataProvider, tolerance); + + if (!imageId) { + console.warn("Image not present in stack, can't import frame : " + _i3 + "."); + return "continue"; + } + + var sourceImageMetadata = metadataProvider.get("instance", imageId); + + if (Rows !== sourceImageMetadata.Rows || Columns !== sourceImageMetadata.Columns) { + throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) " + "respect to the source image reference frame. This is not yet supported. " + "Aborting segmentation loading. "); + } + + var imageIdIndex = imageIds.findIndex(function (element) { + return element === imageId; + }); + var byteOffset = sliceLength * 2 * imageIdIndex; // 2 bytes/pixel + + var labelmap2DView = new Uint16Array(labelmapBufferArray[0], byteOffset, sliceLength); + var data = alignedPixelDataI.data; + + for (var j = 0, len = alignedPixelDataI.data.length; j < len; ++j) { + if (data[j]) { + for (var x = j; x < len; ++x) { + if (data[x]) { + labelmap2DView[x] = segmentIndex; + } + } + + if (!segmentsOnFrame[imageIdIndex]) { + segmentsOnFrame[imageIdIndex] = []; + } + + segmentsOnFrame[imageIdIndex].push(segmentIndex); + break; + } + } + }; + + for (var _i3 = 0, groupsLen = PerFrameFunctionalGroupsSequence.length; _i3 < groupsLen; ++_i3) { + var _ret3 = _loop5(groupsLen, _i3); + + if (_ret3 === "continue") continue; + } + } + + function checkOrientation(multiframe, validOrientations, sourceDataDimensions, tolerance) { + var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence, + PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence; + var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined; // Check if in plane. + + var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[0]; + var iop = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient; + var inPlane = validOrientations.some(function (operation) { + return compareArrays(iop, operation, tolerance); + }); + + if (inPlane) { + return "Planar"; + } + + if (checkIfPerpendicular(iop, validOrientations[0], tolerance) && sourceDataDimensions.includes(multiframe.Rows) && sourceDataDimensions.includes(multiframe.Columns)) { + // Perpendicular and fits on same grid. + return "Perpendicular"; + } + + return "Oblique"; + } + /** + * checkIfPerpendicular - Returns true if iop1 and iop2 are perpendicular + * within a tolerance. + * + * @param {Number[6]} iop1 An ImageOrientationPatient array. + * @param {Number[6]} iop2 An ImageOrientationPatient array. + * @param {Number} tolerance. + * @return {Boolean} True if iop1 and iop2 are equal. + */ + + + function checkIfPerpendicular(iop1, iop2, tolerance) { + var absDotColumnCosines = Math.abs(iop1[0] * iop2[0] + iop1[1] * iop2[1] + iop1[2] * iop2[2]); + var absDotRowCosines = Math.abs(iop1[3] * iop2[3] + iop1[4] * iop2[4] + iop1[5] * iop2[5]); + return (absDotColumnCosines < tolerance || Math.abs(absDotColumnCosines - 1) < tolerance) && (absDotRowCosines < tolerance || Math.abs(absDotRowCosines - 1) < tolerance); + } + /** + * unpackPixelData - Unpacks bitpacked pixelData if the Segmentation is BINARY. + * + * @param {Object} multiframe The multiframe dataset. + * @return {Uint8Array} The unpacked pixelData. + */ + + + function unpackPixelData(multiframe) { + var segType = multiframe.SegmentationType; + var data; + + if (Array.isArray(multiframe.PixelData)) { + data = multiframe.PixelData[0]; + } else { + data = multiframe.PixelData; + } + + if (data === undefined) { + log.error("This segmentation pixeldata is undefined."); + } + + if (segType === "BINARY") { + return BitArray.unpack(data); + } + + var pixelData = new Uint8Array(data); + var max = multiframe.MaximumFractionalValue; + var onlyMaxAndZero = pixelData.find(function (element) { + return element !== 0 && element !== max; + }) === undefined; + + if (!onlyMaxAndZero) { + // This is a fractional segmentation, which is not currently supported. + return; + } + + log.warn("This segmentation object is actually binary... processing as such."); + return pixelData; + } + /** + * getImageIdOfSourceImagebySourceImageSequence - Returns the Cornerstone imageId of the source image. + * + * @param {Object} SourceImageSequence Sequence describing the source image. + * @param {String[]} imageIds A list of imageIds. + * @param {Object} metadataProvider A Cornerstone metadataProvider to query + * metadata from imageIds. + * @return {String} The corresponding imageId. + */ + + + function getImageIdOfSourceImagebySourceImageSequence(SourceImageSequence, imageIds, metadataProvider) { + var ReferencedSOPInstanceUID = SourceImageSequence.ReferencedSOPInstanceUID, + ReferencedFrameNumber = SourceImageSequence.ReferencedFrameNumber; + return ReferencedFrameNumber ? getImageIdOfReferencedFrame(ReferencedSOPInstanceUID, ReferencedFrameNumber, imageIds, metadataProvider) : getImageIdOfReferencedSingleFramedSOPInstance(ReferencedSOPInstanceUID, imageIds, metadataProvider); + } + /** + * getImageIdOfSourceImagebyGeometry - Returns the Cornerstone imageId of the source image. + * + * @param {String} ReferencedSeriesInstanceUID Referenced series of the source image. + * @param {String} FrameOfReferenceUID Frame of reference. + * @param {Object} PerFrameFunctionalGroup Sequence describing segmentation reference attributes per frame. + * @param {String[]} imageIds A list of imageIds. + * @param {Object} metadataProvider A Cornerstone metadataProvider to query + * @param {Float} tolerance The tolerance parameter + * + * @return {String} The corresponding imageId. + */ + + + function getImageIdOfSourceImagebyGeometry(ReferencedSeriesInstanceUID, FrameOfReferenceUID, PerFrameFunctionalGroup, imageIds, metadataProvider, tolerance) { + if (ReferencedSeriesInstanceUID === undefined || PerFrameFunctionalGroup.PlanePositionSequence === undefined || PerFrameFunctionalGroup.PlanePositionSequence[0] === undefined || PerFrameFunctionalGroup.PlanePositionSequence[0].ImagePositionPatient === undefined) { + return undefined; + } + + for (var imageIdsIndexc = 0; imageIdsIndexc < imageIds.length; ++imageIdsIndexc) { + var sourceImageMetadata = metadataProvider.get("instance", imageIds[imageIdsIndexc]); + + if (sourceImageMetadata === undefined || sourceImageMetadata.ImagePositionPatient === undefined || sourceImageMetadata.FrameOfReferenceUID !== FrameOfReferenceUID || sourceImageMetadata.SeriesInstanceUID !== ReferencedSeriesInstanceUID) { + continue; + } + + if (compareArrays(PerFrameFunctionalGroup.PlanePositionSequence[0].ImagePositionPatient, sourceImageMetadata.ImagePositionPatient, tolerance)) { + return imageIds[imageIdsIndexc]; + } + } + } + /** + * getImageIdOfReferencedSingleFramedSOPInstance - Returns the imageId + * corresponding to the specified sopInstanceUid for single-frame images. + * + * @param {String} sopInstanceUid The sopInstanceUid of the desired image. + * @param {String[]} imageIds The list of imageIds. + * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids + * from the cornerstone imageIds. + * @return {String} The imageId that corresponds to the sopInstanceUid. + */ + + + function getImageIdOfReferencedSingleFramedSOPInstance(sopInstanceUid, imageIds, metadataProvider) { + return imageIds.find(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + + if (!sopCommonModule) { + return; + } + + return sopCommonModule.sopInstanceUID === sopInstanceUid; + }); + } + /** + * getImageIdOfReferencedFrame - Returns the imageId corresponding to the + * specified sopInstanceUid and frameNumber for multi-frame images. + * + * @param {String} sopInstanceUid The sopInstanceUid of the desired image. + * @param {Number} frameNumber The frame number. + * @param {String} imageIds The list of imageIds. + * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids + * from the cornerstone imageIds. + * @return {String} The imageId that corresponds to the sopInstanceUid. + */ + + + function getImageIdOfReferencedFrame(sopInstanceUid, frameNumber, imageIds, metadataProvider) { + var imageId = imageIds.find(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + + if (!sopCommonModule) { + return; + } + + var imageIdFrameNumber = Number(imageId.split("frame=")[1]); + return (//frameNumber is zero indexed for cornerstoneWADOImageLoader image Ids. + sopCommonModule.sopInstanceUID === sopInstanceUid && imageIdFrameNumber === frameNumber - 1 + ); + }); + return imageId; + } + /** + * getValidOrientations - returns an array of valid orientations. + * + * @param {Number[6]} iop The row (0..2) an column (3..5) direction cosines. + * @return {Number[8][6]} An array of valid orientations. + */ + + + function getValidOrientations(iop) { + var orientations = []; // [0, 1, 2]: 0, 0hf, 0vf + // [3, 4, 5]: 90, 90hf, 90vf + // [6, 7]: 180, 270 + + orientations[0] = iop; + orientations[1] = flipImageOrientationPatient.h(iop); + orientations[2] = flipImageOrientationPatient.v(iop); + var iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2); + orientations[3] = iop90; + orientations[4] = flipImageOrientationPatient.h(iop90); + orientations[5] = flipImageOrientationPatient.v(iop90); + orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI); + orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI); + return orientations; + } + /** + * alignPixelDataWithSourceData - + * + * @param {Ndarray} pixelData2D - The data to align. + * @param {Number[6]} iop - The orientation of the image slice. + * @param {Number[8][6]} orientations - An array of valid imageOrientationPatient values. + * @param {Number} tolerance. + * @return {Ndarray} The aligned pixelData. + */ + + + function alignPixelDataWithSourceData(pixelData2D, iop, orientations, tolerance) { + if (compareArrays(iop, orientations[0], tolerance)) { + return pixelData2D; + } else if (compareArrays(iop, orientations[1], tolerance)) { + // Flipped vertically. + // Undo Flip + return flipMatrix2D.v(pixelData2D); + } else if (compareArrays(iop, orientations[2], tolerance)) { + // Flipped horizontally. + // Unfo flip + return flipMatrix2D.h(pixelData2D); + } else if (compareArrays(iop, orientations[3], tolerance)) { + //Rotated 90 degrees + // Rotate back + return rotateMatrix902D(pixelData2D); + } else if (compareArrays(iop, orientations[4], tolerance)) { + //Rotated 90 degrees and fliped horizontally. + // Undo flip and rotate back. + return rotateMatrix902D(flipMatrix2D.h(pixelData2D)); + } else if (compareArrays(iop, orientations[5], tolerance)) { + // Rotated 90 degrees and fliped vertically + // Unfo flip and rotate back. + return rotateMatrix902D(flipMatrix2D.v(pixelData2D)); + } else if (compareArrays(iop, orientations[6], tolerance)) { + // Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation. + return rotateMatrix902D(rotateMatrix902D(pixelData2D)); + } else if (compareArrays(iop, orientations[7], tolerance)) { + // Rotated 270 degrees + // Rotate back. + return rotateMatrix902D(rotateMatrix902D(rotateMatrix902D(pixelData2D))); + } + } + /** + * compareArrays - Returns true if array1 and array2 are equal + * within a tolerance. + * + * @param {Number[]} array1 - An array. + * @param {Number[]} array2 - An array. + * @param {Number} tolerance. + * @return {Boolean} True if array1 and array2 are equal. + */ + + + function compareArrays(array1, array2, tolerance) { + if (array1.length != array2.length) { + return false; + } + + for (var _i4 = 0; _i4 < array1.length; ++_i4) { + if (!nearlyEqual(array1[_i4], array2[_i4], tolerance)) { + return false; + } + } + + return true; + } + + function getSegmentMetadata(multiframe, seriesInstanceUid) { + var segmentSequence = multiframe.SegmentSequence; + var data = []; + + if (Array.isArray(segmentSequence)) { + data = [undefined].concat(_toConsumableArray(segmentSequence)); + } else { + // Only one segment, will be stored as an object. + data = [undefined, segmentSequence]; + } + + return { + seriesInstanceUid: seriesInstanceUid, + data: data + }; + } + + var Segmentation$1 = { + generateSegmentation: generateSegmentation, + generateToolState: generateToolState, + fillSegmentation: fillSegmentation + }; + /** + * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data. + * + * @param {object[]} images An array of the cornerstone image objects. + * @param {Object|Object[]} labelmaps3DorBrushData For 4.X: The cornerstone `Labelmap3D` object, or an array of objects. + * For 3.X: the BrushData. + * @param {number} cornerstoneToolsVersion The cornerstoneTools major version to map against. + * @returns {Object} + */ + + function generateSegmentation(images, labelmaps3DorBrushData) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { + includeSliceSpacing: true + }; + var cornerstoneToolsVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 4; + + if (cornerstoneToolsVersion === 4) { + return Segmentation$2.generateSegmentation(images, labelmaps3DorBrushData, options); + } + + if (cornerstoneToolsVersion === 3) { + return Segmentation$3.generateSegmentation(images, labelmaps3DorBrushData, options); + } + + console.warn("No generateSegmentation adapater for cornerstone version ".concat(cornerstoneToolsVersion, ", exiting.")); + } + /** + * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer, + * derive cornerstoneTools toolState and brush metadata. + * + * @param {string[]} imageIds An array of the imageIds. + * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer. + * @param {*} metadataProvider + * @param {bool} skipOverlapping - skip checks for overlapping segs, default value false. + * @param {number} tolerance - default value 1.e-3. + * @param {number} cornerstoneToolsVersion - default value 4. + * + * @returns {Object} The toolState and an object from which the + * segment metadata can be derived. + */ + + + function generateToolState(imageIds, arrayBuffer, metadataProvider) { + var skipOverlapping = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + var tolerance = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1e-3; + var cornerstoneToolsVersion = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 4; + + if (cornerstoneToolsVersion === 4) { + return Segmentation$2.generateToolState(imageIds, arrayBuffer, metadataProvider, skipOverlapping, tolerance); + } + + if (cornerstoneToolsVersion === 3) { + return Segmentation$3.generateToolState(imageIds, arrayBuffer, metadataProvider); + } + + console.warn("No generateToolState adapater for cornerstone version ".concat(cornerstoneToolsVersion, ", exiting.")); + } + /** + * fillSegmentation - Fills a derived segmentation dataset with cornerstoneTools `LabelMap3D` data. + * + * @param {object[]} segmentation An empty segmentation derived dataset. + * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects. + * @param {Object} userOptions Options object to override default options. + * @returns {Blob} description + */ + + + function fillSegmentation(segmentation, inputLabelmaps3D) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { + includeSliceSpacing: true + }; + var cornerstoneToolsVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 4; + + if (cornerstoneToolsVersion === 4) { + return Segmentation$2.fillSegmentation(segmentation, inputLabelmaps3D, options); + } + + console.warn("No generateSegmentation adapater for cornerstone version ".concat(cornerstoneToolsVersion, ", exiting.")); + } + + var CobbAngle$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(CobbAngle, _TID300Measurement); + + var _super = _createSuper(CobbAngle); + + function CobbAngle() { + _classCallCheck(this, CobbAngle); + + return _super.apply(this, arguments); + } + + _createClass(CobbAngle, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + point1 = _this$props.point1, + point2 = _this$props.point2, + point3 = _this$props.point3, + point4 = _this$props.point4, + rAngle = _this$props.rAngle, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence; + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "285285000", + CodingSchemeDesignator: "SCT", + CodeMeaning: "Cobb angle" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: { + CodeValue: "deg", + CodingSchemeDesignator: "UCUM", + CodingSchemeVersion: "1.4", + CodeMeaning: "\xB0" + }, + NumericValue: rAngle + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "POLYLINE", + GraphicData: [point1.x, point1.y, point2.x, point2.y, point3.x, point3.y, point4.x, point4.y], + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return CobbAngle; + }(TID300Measurement); + + var COBB_ANGLE = "CobbAngle"; + + var CobbAngle = /*#__PURE__*/function () { + function CobbAngle() { + _classCallCheck(this, CobbAngle); + } // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport. + + + _createClass(CobbAngle, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + rAngle: NUMGroup.MeasuredValueSequence.NumericValue, + toolType: CobbAngle.toolType, + handles: { + start: {}, + end: {}, + start2: { + highlight: true, + drawnIndependently: true + }, + end2: { + highlight: true, + drawnIndependently: true + }, + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + } + }); + + var _SCOORDGroup$GraphicD = _slicedToArray(SCOORDGroup.GraphicData, 8); + + state.handles.start.x = _SCOORDGroup$GraphicD[0]; + state.handles.start.y = _SCOORDGroup$GraphicD[1]; + state.handles.end.x = _SCOORDGroup$GraphicD[2]; + state.handles.end.y = _SCOORDGroup$GraphicD[3]; + state.handles.start2.x = _SCOORDGroup$GraphicD[4]; + state.handles.start2.y = _SCOORDGroup$GraphicD[5]; + state.handles.end2.x = _SCOORDGroup$GraphicD[6]; + state.handles.end2.y = _SCOORDGroup$GraphicD[7]; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites; + var point1 = handles.start; + var point2 = handles.end; + var point3 = handles.start2; + var point4 = handles.end2; + var rAngle = tool.rAngle; + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:CobbAngle"; + return { + point1: point1, + point2: point2, + point3: point3, + point4: point4, + rAngle: rAngle, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return CobbAngle; + }(); + + CobbAngle.toolType = COBB_ANGLE; + CobbAngle.utilityToolType = COBB_ANGLE; + CobbAngle.TID300Representation = CobbAngle$1; + + CobbAngle.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === COBB_ANGLE; + }; + + MeasurementReport$3.registerTool(CobbAngle); + + var ANGLE = "Angle"; + + var Angle = /*#__PURE__*/function () { + function Angle() { + _classCallCheck(this, Angle); + } + /** + * Generate TID300 measurement data for a plane angle measurement - use a CobbAngle, but label it as Angle + * @param MeasurementGroup + * @returns + */ + + + _createClass(Angle, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + rAngle: NUMGroup.MeasuredValueSequence.NumericValue, + toolType: Angle.toolType, + handles: { + start: {}, + middle: {}, + end: {}, + textBox: { + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + } + } + }); + + var _SCOORDGroup$GraphicD = _slicedToArray(SCOORDGroup.GraphicData, 8); + + state.handles.start.x = _SCOORDGroup$GraphicD[0]; + state.handles.start.y = _SCOORDGroup$GraphicD[1]; + state.handles.middle.x = _SCOORDGroup$GraphicD[2]; + state.handles.middle.y = _SCOORDGroup$GraphicD[3]; + state.handles.middle.x = _SCOORDGroup$GraphicD[4]; + state.handles.middle.y = _SCOORDGroup$GraphicD[5]; + state.handles.end.x = _SCOORDGroup$GraphicD[6]; + state.handles.end.y = _SCOORDGroup$GraphicD[7]; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var handles = tool.handles, + finding = tool.finding, + findingSites = tool.findingSites; + var point1 = handles.start; + var point2 = handles.middle; + var point3 = handles.middle; + var point4 = handles.end; + var rAngle = tool.rAngle; + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:Angle"; + return { + point1: point1, + point2: point2, + point3: point3, + point4: point4, + rAngle: rAngle, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return Angle; + }(); + + Angle.toolType = ANGLE; + Angle.utilityToolType = ANGLE; + Angle.TID300Representation = CobbAngle$1; + + Angle.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === ANGLE; + }; + + MeasurementReport$3.registerTool(Angle); + + var RectangleRoi = /*#__PURE__*/function () { + function RectangleRoi() { + _classCallCheck(this, RectangleRoi); + } + + _createClass(RectangleRoi, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup) { + var _MeasurementReport$ge = MeasurementReport$3.getSetupMeasurementData(MeasurementGroup), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + NUMGroup = _MeasurementReport$ge.NUMGroup; + + var state = _objectSpread2(_objectSpread2({}, defaultState), {}, { + toolType: RectangleRoi.toolType, + handles: { + start: {}, + end: {}, + textBox: { + active: false, + hasMoved: false, + movesIndependently: false, + drawnIndependently: true, + allowedOutsideImage: true, + hasBoundingBox: true + }, + initialRotation: 0 + }, + cachedStats: { + area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0 + }, + color: undefined, + invalidated: true + }); + + var _SCOORDGroup$GraphicD = _slicedToArray(SCOORDGroup.GraphicData, 6); + + state.handles.start.x = _SCOORDGroup$GraphicD[0]; + state.handles.start.y = _SCOORDGroup$GraphicD[1]; + _SCOORDGroup$GraphicD[2]; + _SCOORDGroup$GraphicD[3]; + state.handles.end.x = _SCOORDGroup$GraphicD[4]; + state.handles.end.y = _SCOORDGroup$GraphicD[5]; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool) { + var finding = tool.finding, + findingSites = tool.findingSites, + _tool$cachedStats = tool.cachedStats, + cachedStats = _tool$cachedStats === void 0 ? {} : _tool$cachedStats, + handles = tool.handles; + console.log("getTID300 Rectangle", tool, cachedStats, handles); + var start = handles.start, + end = handles.end; + var points = [start, { + x: start.x, + y: end.y + }, end, { + x: end.x, + y: start.y + }]; + var area = cachedStats.area, + perimeter = cachedStats.perimeter; + console.log("Point=", points, "cachedStats=", cachedStats); + var trackingIdentifierTextValue = "cornerstoneTools@^4.0.0:RectangleRoi"; + return { + points: points, + area: area, + perimeter: perimeter, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return RectangleRoi; + }(); + + RectangleRoi.toolType = "RectangleRoi"; + RectangleRoi.utilityToolType = "RectangleRoi"; + RectangleRoi.TID300Representation = Polyline$1; + + RectangleRoi.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone4Tag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { + return false; + } + + return toolType === RectangleRoi.toolType; + }; + + MeasurementReport$3.registerTool(RectangleRoi); + + var Cornerstone = { + Length: Length$1, + FreehandRoi: FreehandRoi, + Bidirectional: Bidirectional$1, + EllipticalRoi: EllipticalRoi, + CircleRoi: CircleRoi, + ArrowAnnotate: ArrowAnnotate$1, + MeasurementReport: MeasurementReport$3, + Segmentation: Segmentation$1, + CobbAngle: CobbAngle, + Angle: Angle, + RectangleRoi: RectangleRoi + }; + + // This is a custom coding scheme defined to store some annotations from Cornerstone. + // Note: CodeMeaning is VR type LO, which means we only actually support 64 characters + // here this is fine for most labels, but may be problematic at some point. + var CORNERSTONEFREETEXT = "CORNERSTONEFREETEXT"; // Cornerstone specified coding scheme for storing findings + + var CodingSchemeDesignator$1 = "CORNERSTONEJS"; + var CodingScheme = { + CodingSchemeDesignator: CodingSchemeDesignator$1, + codeValues: { + CORNERSTONEFREETEXT: CORNERSTONEFREETEXT + } + }; + + var FINDING = { + CodingSchemeDesignator: "DCM", + CodeValue: "121071" + }; + var FINDING_SITE = { + CodingSchemeDesignator: "SCT", + CodeValue: "363698007" + }; + var FINDING_SITE_OLD = { + CodingSchemeDesignator: "SRT", + CodeValue: "G-C0E3" + }; + + var codeValueMatch = function codeValueMatch(group, code, oldCode) { + var ConceptNameCodeSequence = group.ConceptNameCodeSequence; + if (!ConceptNameCodeSequence) return; + var CodingSchemeDesignator = ConceptNameCodeSequence.CodingSchemeDesignator, + CodeValue = ConceptNameCodeSequence.CodeValue; + return CodingSchemeDesignator == code.CodingSchemeDesignator && CodeValue == code.CodeValue || oldCode && CodingSchemeDesignator == oldCode.CodingSchemeDesignator && CodeValue == oldCode.CodeValue; + }; + + function getTID300ContentItem$1(tool, toolType, ReferencedSOPSequence, toolClass, worldToImageCoords) { + var args = toolClass.getTID300RepresentationArguments(tool, worldToImageCoords); + args.ReferencedSOPSequence = ReferencedSOPSequence; + var TID300Measurement = new toolClass.TID300Representation(args); + return TID300Measurement; + } + + function getMeasurementGroup$1(toolType, toolData, ReferencedSOPSequence, worldToImageCoords) { + var toolTypeData = toolData[toolType]; + var toolClass = MeasurementReport$2.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType]; + + if (!toolTypeData || !toolTypeData.data || !toolTypeData.data.length || !toolClass) { + return; + } // Loop through the array of tool instances + // for this tool + + + var Measurements = toolTypeData.data.map(function (tool) { + return getTID300ContentItem$1(tool, toolType, ReferencedSOPSequence, toolClass, worldToImageCoords); + }); + return new TID1501MeasurementGroup(Measurements); + } + + var MeasurementReport$2 = /*#__PURE__*/function () { + function MeasurementReport() { + _classCallCheck(this, MeasurementReport); + } + + _createClass(MeasurementReport, null, [{ + key: "getCornerstoneLabelFromDefaultState", + value: function getCornerstoneLabelFromDefaultState(defaultState) { + var _defaultState$finding = defaultState.findingSites, + findingSites = _defaultState$finding === void 0 ? [] : _defaultState$finding, + finding = defaultState.finding; + var cornersoneFreeTextCodingValue = CodingScheme.codeValues.CORNERSTONEFREETEXT; + var freeTextLabel = findingSites.find(function (fs) { + return fs.CodeValue === cornersoneFreeTextCodingValue; + }); + + if (freeTextLabel) { + return freeTextLabel.CodeMeaning; + } + + if (finding && finding.CodeValue === cornersoneFreeTextCodingValue) { + return finding.CodeMeaning; + } + } + }, { + key: "generateDatasetMeta", + value: function generateDatasetMeta() { + // TODO: what is the correct metaheader + // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html + // TODO: move meta creation to happen in derivations.js + var fileMetaInformationVersionArray = new Uint8Array(2); + fileMetaInformationVersionArray[1] = 1; + var _meta = { + FileMetaInformationVersion: { + Value: [fileMetaInformationVersionArray.buffer], + vr: "OB" + }, + //MediaStorageSOPClassUID + //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID, + TransferSyntaxUID: { + Value: ["1.2.840.10008.1.2.1"], + vr: "UI" + }, + ImplementationClassUID: { + Value: [DicomMetaDictionary.uid()], + // TODO: could be git hash or other valid id + vr: "UI" + }, + ImplementationVersionName: { + Value: ["dcmjs"], + vr: "SH" + } + }; + return _meta; + } + }, { + key: "generateDerivationSourceDataset", + value: function generateDerivationSourceDataset(StudyInstanceUID, SeriesInstanceUID) { + var _vrMap = { + PixelData: "OW" + }; + + var _meta = MeasurementReport.generateDatasetMeta(); + + var derivationSourceDataset = { + StudyInstanceUID: StudyInstanceUID, + SeriesInstanceUID: SeriesInstanceUID, + _meta: _meta, + _vrMap: _vrMap + }; + return derivationSourceDataset; + } + }, { + key: "getSetupMeasurementData", + value: function getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, toolType) { + var ContentSequence = MeasurementGroup.ContentSequence; + var contentSequenceArr = toArray(ContentSequence); + var findingGroup = contentSequenceArr.find(function (group) { + return codeValueMatch(group, FINDING); + }); + var findingSiteGroups = contentSequenceArr.filter(function (group) { + return codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD); + }) || []; + var NUMGroup = contentSequenceArr.find(function (group) { + return group.ValueType === "NUM"; + }); + var SCOORDGroup = toArray(NUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var ReferencedSOPSequence = SCOORDGroup.ContentSequence.ReferencedSOPSequence; + var ReferencedSOPInstanceUID = ReferencedSOPSequence.ReferencedSOPInstanceUID, + ReferencedFrameNumber = ReferencedSOPSequence.ReferencedFrameNumber; + var referencedImageId = sopInstanceUIDToImageIdMap[ReferencedSOPInstanceUID]; + var imagePlaneModule = metadata.get("imagePlaneModule", referencedImageId); + var finding = findingGroup ? addAccessors(findingGroup.ConceptCodeSequence) : undefined; + var findingSites = findingSiteGroups.map(function (fsg) { + return addAccessors(fsg.ConceptCodeSequence); + }); + var defaultState = { + sopInstanceUid: ReferencedSOPInstanceUID, + annotation: { + annotationUID: DicomMetaDictionary.uid(), + metadata: { + toolName: toolType, + referencedImageId: referencedImageId, + FrameOfReferenceUID: imagePlaneModule.frameOfReferenceUID, + label: "" + } + }, + finding: finding, + findingSites: findingSites + }; + + if (defaultState.finding) { + defaultState.description = defaultState.finding.CodeMeaning; + } + + defaultState.annotation.metadata.label = MeasurementReport.getCornerstoneLabelFromDefaultState(defaultState); + return { + defaultState: defaultState, + NUMGroup: NUMGroup, + SCOORDGroup: SCOORDGroup, + ReferencedSOPSequence: ReferencedSOPSequence, + ReferencedSOPInstanceUID: ReferencedSOPInstanceUID, + ReferencedFrameNumber: ReferencedFrameNumber + }; + } + }, { + key: "generateReport", + value: function generateReport(toolState, metadataProvider, worldToImageCoords, options) { + // ToolState for array of imageIDs to a Report + // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID + var allMeasurementGroups = []; + /* Patient ID + Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time + Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID + */ + + var sopInstanceUIDsToSeriesInstanceUIDMap = {}; + var derivationSourceDatasets = []; + + var _meta = MeasurementReport.generateDatasetMeta(); // Loop through each image in the toolData + + + Object.keys(toolState).forEach(function (imageId) { + var sopCommonModule = metadataProvider.get("sopCommonModule", imageId); + var generalSeriesModule = metadataProvider.get("generalSeriesModule", imageId); + var sopInstanceUID = sopCommonModule.sopInstanceUID, + sopClassUID = sopCommonModule.sopClassUID; + var studyInstanceUID = generalSeriesModule.studyInstanceUID, + seriesInstanceUID = generalSeriesModule.seriesInstanceUID; + sopInstanceUIDsToSeriesInstanceUIDMap[sopInstanceUID] = seriesInstanceUID; + + if (!derivationSourceDatasets.find(function (dsd) { + return dsd.SeriesInstanceUID === seriesInstanceUID; + })) { + // Entry not present for series, create one. + var derivationSourceDataset = MeasurementReport.generateDerivationSourceDataset(studyInstanceUID, seriesInstanceUID); + derivationSourceDatasets.push(derivationSourceDataset); + } + + var frameNumber = metadataProvider.get("frameNumber", imageId); + var toolData = toolState[imageId]; + var toolTypes = Object.keys(toolData); + var ReferencedSOPSequence = { + ReferencedSOPClassUID: sopClassUID, + ReferencedSOPInstanceUID: sopInstanceUID + }; + var instance = metadataProvider.get("instance", imageId); + + if (instance && instance.NumberOfFrames && instance.NumberOfFrames > 1 || Normalizer.isMultiframeSOPClassUID(sopClassUID)) { + ReferencedSOPSequence.ReferencedFrameNumber = frameNumber; + } // Loop through each tool type for the image + + + var measurementGroups = []; + toolTypes.forEach(function (toolType) { + var group = getMeasurementGroup$1(toolType, toolData, ReferencedSOPSequence, worldToImageCoords); + + if (group) { + measurementGroups.push(group); + } + }); + allMeasurementGroups = allMeasurementGroups.concat(measurementGroups); + }); + var tid1500MeasurementReport = new TID1500MeasurementReport({ + TID1501MeasurementGroups: allMeasurementGroups + }, options); + var report = new StructuredReport(derivationSourceDatasets); + var contentItem = tid1500MeasurementReport.contentItem(derivationSourceDatasets, { + sopInstanceUIDsToSeriesInstanceUIDMap: sopInstanceUIDsToSeriesInstanceUIDMap + }); // Merge the derived dataset with the content from the Measurement Report + + report.dataset = Object.assign(report.dataset, contentItem); + report.dataset._meta = _meta; + return report; + } + /** + * Generate Cornerstone tool state from dataset + * @param {object} dataset dataset + * @param {object} hooks + * @param {function} hooks.getToolClass Function to map dataset to a tool class + * @returns + */ + + }, { + key: "generateToolState", + value: function generateToolState(dataset, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var hooks = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + + // For now, bail out if the dataset is not a TID1500 SR with length measurements + if (dataset.ContentTemplateSequence.TemplateIdentifier !== "1500") { + throw new Error("This package can currently only interpret DICOM SR TID 1500"); + } + + var REPORT = "Imaging Measurements"; + var GROUP = "Measurement Group"; + var TRACKING_IDENTIFIER = "Tracking Identifier"; // Identify the Imaging Measurements + + var imagingMeasurementContent = toArray(dataset.ContentSequence).find(codeMeaningEquals(REPORT)); // Retrieve the Measurements themselves + + var measurementGroups = toArray(imagingMeasurementContent.ContentSequence).filter(codeMeaningEquals(GROUP)); // For each of the supported measurement types, compute the measurement data + + var measurementData = {}; + var cornerstoneToolClasses = MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE; + var registeredToolClasses = []; + Object.keys(cornerstoneToolClasses).forEach(function (key) { + registeredToolClasses.push(cornerstoneToolClasses[key]); + measurementData[key] = []; + }); + measurementGroups.forEach(function (measurementGroup, index) { + var measurementGroupContentSequence = toArray(measurementGroup.ContentSequence); + var TrackingIdentifierGroup = measurementGroupContentSequence.find(function (contentItem) { + return contentItem.ConceptNameCodeSequence.CodeMeaning === TRACKING_IDENTIFIER; + }); + var TrackingIdentifierValue = TrackingIdentifierGroup.TextValue; + var toolClass = hooks.getToolClass ? hooks.getToolClass(measurementGroup, dataset, registeredToolClasses) : registeredToolClasses.find(function (tc) { + return tc.isValidCornerstoneTrackingIdentifier(TrackingIdentifierValue); + }); + + if (toolClass) { + var measurement = toolClass.getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata); + console.log("=== ".concat(toolClass.toolType, " ===")); + console.log(measurement); + measurementData[toolClass.toolType].push(measurement); + } + }); // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything. + // That is up to the consumer to derive from the SOPInstanceUIDs. + + return measurementData; + } + }, { + key: "registerTool", + value: function registerTool(toolClass) { + MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[toolClass.utilityToolType] = toolClass; + MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolClass.toolType] = toolClass; + MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] = toolClass.utilityToolType; + } + }]); + + return MeasurementReport; + }(); + MeasurementReport$2.MEASUREMENT_BY_TOOLTYPE = {}; + MeasurementReport$2.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {}; + MeasurementReport$2.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {}; + + var CORNERSTONE_3D_TAG = "Cornerstone3DTools@^0.1.0"; + + var LENGTH = "Length"; + var trackingIdentifierTextValue$5 = "".concat(CORNERSTONE_3D_TAG, ":").concat(LENGTH); + + var Length = /*#__PURE__*/function () { + function Length() { + _classCallCheck(this, Length); + } // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport. + + + _createClass(Length, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Length.toolType), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var GraphicData = SCOORDGroup.GraphicData; + var worldCoords = []; + + for (var i = 0; i < GraphicData.length; i += 2) { + var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + worldCoords.push(point); + } + + var state = defaultState; + state.annotation.data = { + handles: { + points: [worldCoords[0], worldCoords[1]], + activeHandleIndex: 0, + textBox: { + hasMoved: false + } + }, + cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), { + length: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0 + }), + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + finding = tool.finding, + findingSites = tool.findingSites, + metadata = tool.metadata; + var _data$cachedStats = data.cachedStats, + cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats, + handles = data.handles; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("Length.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var start = worldToImageCoords(referencedImageId, handles.points[0]); + var end = worldToImageCoords(referencedImageId, handles.points[1]); + var point1 = { + x: start[0], + y: start[1] + }; + var point2 = { + x: end[0], + y: end[1] + }; + + var _ref = cachedStats["imageId:".concat(referencedImageId)] || {}, + distance = _ref.length; + + return { + point1: point1, + point2: point2, + distance: distance, + trackingIdentifierTextValue: trackingIdentifierTextValue$5, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return Length; + }(); + + Length.toolType = LENGTH; + Length.utilityToolType = LENGTH; + Length.TID300Representation = Length$2; + + Length.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } + + return toolType === LENGTH; + }; + + MeasurementReport$2.registerTool(Length); + + var BIDIRECTIONAL = "Bidirectional"; + var LONG_AXIS = "Long Axis"; + var SHORT_AXIS = "Short Axis"; + var trackingIdentifierTextValue$4 = "".concat(CORNERSTONE_3D_TAG, ":").concat(BIDIRECTIONAL); + + var Bidirectional = /*#__PURE__*/function () { + function Bidirectional() { + _classCallCheck(this, Bidirectional); + } + + _createClass(Bidirectional, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Bidirectional.toolType), + defaultState = _MeasurementReport$ge.defaultState, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var ContentSequence = MeasurementGroup.ContentSequence; + var longAxisNUMGroup = toArray(ContentSequence).find(function (group) { + return group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS; + }); + var longAxisSCOORDGroup = toArray(longAxisNUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var shortAxisNUMGroup = toArray(ContentSequence).find(function (group) { + return group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS; + }); + var shortAxisSCOORDGroup = toArray(shortAxisNUMGroup.ContentSequence).find(function (group) { + return group.ValueType === "SCOORD"; + }); + var worldCoords = []; + [longAxisSCOORDGroup, shortAxisSCOORDGroup].forEach(function (group) { + var GraphicData = group.GraphicData; + + for (var i = 0; i < GraphicData.length; i += 2) { + var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + worldCoords.push(point); + } + }); + var state = defaultState; + state.annotation.data = { + handles: { + points: [worldCoords[0], worldCoords[1], worldCoords[2], worldCoords[3]], + activeHandleIndex: 0, + textBox: { + hasMoved: false + } + }, + cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), { + length: longAxisNUMGroup.MeasuredValueSequence.NumericValue, + width: shortAxisNUMGroup.MeasuredValueSequence.NumericValue + }), + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + finding = tool.finding, + findingSites = tool.findingSites, + metadata = tool.metadata; + var _data$cachedStats = data.cachedStats, + cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats, + handles = data.handles; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("Bidirectional.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var _ref = cachedStats["imageId:".concat(referencedImageId)] || {}, + length = _ref.length, + width = _ref.width; + + var points = handles.points; // Find the length and width point pairs by comparing the distances of the points at 0,1 to points at 2,3 + + var firstPointPairs = [points[0], points[1]]; + var secondPointPairs = [points[2], points[3]]; + var firstPointPairsDistance = Math.sqrt(Math.pow(firstPointPairs[0][0] - firstPointPairs[1][0], 2) + Math.pow(firstPointPairs[0][1] - firstPointPairs[1][1], 2) + Math.pow(firstPointPairs[0][2] - firstPointPairs[1][2], 2)); + var secondPointPairsDistance = Math.sqrt(Math.pow(secondPointPairs[0][0] - secondPointPairs[1][0], 2) + Math.pow(secondPointPairs[0][1] - secondPointPairs[1][1], 2) + Math.pow(secondPointPairs[0][2] - secondPointPairs[1][2], 2)); + var shortAxisPoints; + var longAxisPoints; + + if (firstPointPairsDistance > secondPointPairsDistance) { + shortAxisPoints = firstPointPairs; + longAxisPoints = secondPointPairs; + } else { + shortAxisPoints = secondPointPairs; + longAxisPoints = firstPointPairs; + } + + var longAxisStartImage = worldToImageCoords(referencedImageId, shortAxisPoints[0]); + var longAxisEndImage = worldToImageCoords(referencedImageId, shortAxisPoints[1]); + var shortAxisStartImage = worldToImageCoords(referencedImageId, longAxisPoints[0]); + var shortAxisEndImage = worldToImageCoords(referencedImageId, longAxisPoints[1]); + return { + longAxis: { + point1: { + x: longAxisStartImage[0], + y: longAxisStartImage[1] + }, + point2: { + x: longAxisEndImage[0], + y: longAxisEndImage[1] + } + }, + shortAxis: { + point1: { + x: shortAxisStartImage[0], + y: shortAxisStartImage[1] + }, + point2: { + x: shortAxisEndImage[0], + y: shortAxisEndImage[1] + } + }, + longAxisLength: length, + shortAxisLength: width, + trackingIdentifierTextValue: trackingIdentifierTextValue$4, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return Bidirectional; + }(); + + Bidirectional.toolType = BIDIRECTIONAL; + Bidirectional.utilityToolType = BIDIRECTIONAL; + Bidirectional.TID300Representation = Bidirectional$2; + + Bidirectional.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } + + return toolType === BIDIRECTIONAL; + }; + + MeasurementReport$2.registerTool(Bidirectional); + + var ELLIPTICALROI = "EllipticalROI"; + var EPSILON = 1e-4; + var trackingIdentifierTextValue$3 = "".concat(CORNERSTONE_3D_TAG, ":").concat(ELLIPTICALROI); + + var EllipticalROI = /*#__PURE__*/function () { + function EllipticalROI() { + _classCallCheck(this, EllipticalROI); + } + + _createClass(EllipticalROI, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, EllipticalROI.toolType), + defaultState = _MeasurementReport$ge.defaultState, + NUMGroup = _MeasurementReport$ge.NUMGroup, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var GraphicData = SCOORDGroup.GraphicData; // GraphicData is ordered as [majorAxisStartX, majorAxisStartY, majorAxisEndX, majorAxisEndY, minorAxisStartX, minorAxisStartY, minorAxisEndX, minorAxisEndY] + // But Cornerstone3D points are ordered as top, bottom, left, right for the + // ellipse so we need to identify if the majorAxis is horizontal or vertical + // in the image plane and then choose the correct points to use for the ellipse. + + var pointsWorld = []; + + for (var i = 0; i < GraphicData.length; i += 2) { + var worldPos = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + pointsWorld.push(worldPos); + } + + var majorAxisStart = fromValues.apply(vec3, _toConsumableArray(pointsWorld[0])); + var majorAxisEnd = fromValues.apply(vec3, _toConsumableArray(pointsWorld[1])); + var minorAxisStart = fromValues.apply(vec3, _toConsumableArray(pointsWorld[2])); + var minorAxisEnd = fromValues.apply(vec3, _toConsumableArray(pointsWorld[3])); + var majorAxisVec = create(); + sub(majorAxisVec, majorAxisEnd, majorAxisStart); // normalize majorAxisVec to avoid scaling issues + + normalize$1(majorAxisVec, majorAxisVec); + var minorAxisVec = create(); + sub(minorAxisVec, minorAxisEnd, minorAxisStart); + normalize$1(minorAxisVec, minorAxisVec); + var imagePlaneModule = metadata.get("imagePlaneModule", referencedImageId); + + if (!imagePlaneModule) { + throw new Error("imageId does not have imagePlaneModule metadata"); + } + + var columnCosines = imagePlaneModule.columnCosines; // find which axis is parallel to the columnCosines + + var columnCosinesVec = fromValues.apply(vec3, _toConsumableArray(columnCosines)); + var projectedMajorAxisOnColVec = dot(columnCosinesVec, majorAxisVec); + var projectedMinorAxisOnColVec = dot(columnCosinesVec, minorAxisVec); + var absoluteOfMajorDotProduct = Math.abs(projectedMajorAxisOnColVec); + var absoluteOfMinorDotProduct = Math.abs(projectedMinorAxisOnColVec); + var ellipsePoints = []; + + if (Math.abs(absoluteOfMajorDotProduct - 1) < EPSILON) { + ellipsePoints = [pointsWorld[0], pointsWorld[1], pointsWorld[2], pointsWorld[3]]; + } else if (Math.abs(absoluteOfMinorDotProduct - 1) < EPSILON) { + ellipsePoints = [pointsWorld[2], pointsWorld[3], pointsWorld[0], pointsWorld[1]]; + } else { + console.warn("OBLIQUE ELLIPSE NOT YET SUPPORTED"); + } + + var state = defaultState; + state.annotation.data = { + handles: { + points: _toConsumableArray(ellipsePoints), + activeHandleIndex: 0, + textBox: { + hasMoved: false + } + }, + cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), { + area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0 + }), + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + finding = tool.finding, + findingSites = tool.findingSites, + metadata = tool.metadata; + var _data$cachedStats = data.cachedStats, + cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats, + handles = data.handles; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var top = worldToImageCoords(referencedImageId, handles.points[0]); + var bottom = worldToImageCoords(referencedImageId, handles.points[1]); + var left = worldToImageCoords(referencedImageId, handles.points[2]); + var right = worldToImageCoords(referencedImageId, handles.points[3]); // find the major axis and minor axis + + var topBottomLength = Math.abs(top[1] - bottom[1]); + var leftRightLength = Math.abs(left[0] - right[0]); + var points = []; + + if (topBottomLength > leftRightLength) { + // major axis is bottom to top + points.push({ + x: top[0], + y: top[1] + }); + points.push({ + x: bottom[0], + y: bottom[1] + }); // minor axis is left to right + + points.push({ + x: left[0], + y: left[1] + }); + points.push({ + x: right[0], + y: right[1] + }); + } else { + // major axis is left to right + points.push({ + x: left[0], + y: left[1] + }); + points.push({ + x: right[0], + y: right[1] + }); // minor axis is bottom to top + + points.push({ + x: top[0], + y: top[1] + }); + points.push({ + x: bottom[0], + y: bottom[1] + }); + } + + var _ref = cachedStats["imageId:".concat(referencedImageId)] || {}, + area = _ref.area; + + return { + area: area, + points: points, + trackingIdentifierTextValue: trackingIdentifierTextValue$3, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return EllipticalROI; + }(); + + EllipticalROI.toolType = ELLIPTICALROI; + EllipticalROI.utilityToolType = ELLIPTICALROI; + EllipticalROI.TID300Representation = Ellipse$1; + + EllipticalROI.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } // The following is needed since the new cornerstone3D has changed + // the EllipticalRoi toolName (which was in the old cornerstone) to EllipticalROI + + + return toolType.toLowerCase() === ELLIPTICALROI.toLowerCase(); + }; + + MeasurementReport$2.registerTool(EllipticalROI); + + var ARROW_ANNOTATE = "ArrowAnnotate"; + var trackingIdentifierTextValue$2 = "".concat(CORNERSTONE_3D_TAG, ":").concat(ARROW_ANNOTATE); + var codeValues = CodingScheme.codeValues, + CodingSchemeDesignator = CodingScheme.CodingSchemeDesignator; + + var ArrowAnnotate = /*#__PURE__*/function () { + function ArrowAnnotate() { + _classCallCheck(this, ArrowAnnotate); + } + + _createClass(ArrowAnnotate, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, ArrowAnnotate.toolType), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var text = defaultState.annotation.metadata.label; + var GraphicData = SCOORDGroup.GraphicData; + var worldCoords = []; + + for (var i = 0; i < GraphicData.length; i += 2) { + var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + worldCoords.push(point); + } // Since the arrowAnnotate measurement is just a point, to generate the tool state + // we derive the second point based on the image size relative to the first point. + + + if (worldCoords.length === 1) { + var imagePixelModule = metadata.get("imagePixelModule", referencedImageId); + var xOffset = 10; + var yOffset = 10; + + if (imagePixelModule) { + var columns = imagePixelModule.columns, + rows = imagePixelModule.rows; + xOffset = columns / 10; + yOffset = rows / 10; + } + + var secondPoint = imageToWorldCoords(referencedImageId, [GraphicData[0] + xOffset, GraphicData[1] + yOffset]); + worldCoords.push(secondPoint); + } + + var state = defaultState; + state.annotation.data = { + text: text, + handles: { + arrowFirst: true, + points: [worldCoords[0], worldCoords[1]], + activeHandleIndex: 0, + textBox: { + hasMoved: false + } + }, + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + metadata = tool.metadata; + var finding = tool.finding, + findingSites = tool.findingSites; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("ArrowAnnotate.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var _data$handles = data.handles, + points = _data$handles.points, + arrowFirst = _data$handles.arrowFirst; + var point; + + if (arrowFirst) { + point = points[0]; + } else { + point = points[1]; + } + + var pointImage = worldToImageCoords(referencedImageId, point); + var TID300RepresentationArguments = { + points: [{ + x: pointImage[0], + y: pointImage[1] + }], + trackingIdentifierTextValue: trackingIdentifierTextValue$2, + findingSites: findingSites || [] + }; // If freetext finding isn't present, add it from the tool text. + + if (!finding || finding.CodeValue !== codeValues.CORNERSTONEFREETEXT) { + finding = { + CodeValue: codeValues.CORNERSTONEFREETEXT, + CodingSchemeDesignator: CodingSchemeDesignator, + CodeMeaning: data.text + }; + } + + TID300RepresentationArguments.finding = finding; + return TID300RepresentationArguments; + } + }]); + + return ArrowAnnotate; + }(); + + ArrowAnnotate.toolType = ARROW_ANNOTATE; + ArrowAnnotate.utilityToolType = ARROW_ANNOTATE; + ArrowAnnotate.TID300Representation = Point$1; + + ArrowAnnotate.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } + + return toolType === ARROW_ANNOTATE; + }; + + MeasurementReport$2.registerTool(ArrowAnnotate); + + var PROBE = "Probe"; + var trackingIdentifierTextValue$1 = "".concat(CORNERSTONE_3D_TAG, ":").concat(PROBE); + + var Probe = /*#__PURE__*/function () { + function Probe() { + _classCallCheck(this, Probe); + } + + _createClass(Probe, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Probe.toolType), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var GraphicData = SCOORDGroup.GraphicData; + var worldCoords = []; + + for (var i = 0; i < GraphicData.length; i += 2) { + var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + worldCoords.push(point); + } + + var state = defaultState; + state.annotation.data = { + handles: { + points: worldCoords, + activeHandleIndex: null, + textBox: { + hasMoved: false + } + }, + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + metadata = tool.metadata; + var finding = tool.finding, + findingSites = tool.findingSites; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("Probe.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var points = data.handles.points; + var pointsImage = points.map(function (point) { + var pointImage = worldToImageCoords(referencedImageId, point); + return { + x: pointImage[0], + y: pointImage[1] + }; + }); + var TID300RepresentationArguments = { + points: pointsImage, + trackingIdentifierTextValue: trackingIdentifierTextValue$1, + findingSites: findingSites || [], + finding: finding + }; + return TID300RepresentationArguments; + } + }]); + + return Probe; + }(); + + Probe.toolType = PROBE; + Probe.utilityToolType = PROBE; + Probe.TID300Representation = Point$1; + + Probe.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } + + return toolType === PROBE; + }; + + MeasurementReport$2.registerTool(Probe); + + var PLANARFREEHANDROI = "PlanarFreehandROI"; + var trackingIdentifierTextValue = "".concat(CORNERSTONE_3D_TAG, ":").concat(PLANARFREEHANDROI); + var closedContourThreshold = 1e-5; + + var PlanarFreehandROI = /*#__PURE__*/function () { + function PlanarFreehandROI() { + _classCallCheck(this, PlanarFreehandROI); + } + + _createClass(PlanarFreehandROI, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) { + var _MeasurementReport$ge = MeasurementReport$2.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, PlanarFreehandROI.toolType), + defaultState = _MeasurementReport$ge.defaultState, + SCOORDGroup = _MeasurementReport$ge.SCOORDGroup, + ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber; + + var referencedImageId = defaultState.annotation.metadata.referencedImageId; + var GraphicData = SCOORDGroup.GraphicData; + var worldCoords = []; + + for (var i = 0; i < GraphicData.length; i += 2) { + var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]); + worldCoords.push(point); + } + + var distanceBetweenFirstAndLastPoint = distance(worldCoords[worldCoords.length - 1], worldCoords[0]); + var isOpenContour = true; // If the contour is closed, this should have been encoded as exactly the same point, so check for a very small difference. + + if (distanceBetweenFirstAndLastPoint < closedContourThreshold) { + worldCoords.pop(); // Remove the last element which is duplicated. + + isOpenContour = false; + } + + var points = []; + + if (isOpenContour) { + points.push(worldCoords[0], worldCoords[worldCoords.length - 1]); + } + + var state = defaultState; + state.annotation.data = { + polyline: worldCoords, + isOpenContour: isOpenContour, + handles: { + points: points, + activeHandleIndex: null, + textBox: { + hasMoved: false + } + }, + frameNumber: ReferencedFrameNumber + }; + return state; + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(tool, worldToImageCoords) { + var data = tool.data, + finding = tool.finding, + findingSites = tool.findingSites, + metadata = tool.metadata; + var isOpenContour = data.isOpenContour, + polyline = data.polyline; + var referencedImageId = metadata.referencedImageId; + + if (!referencedImageId) { + throw new Error("PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined"); + } + + var points = polyline.map(function (worldPos) { + return worldToImageCoords(referencedImageId, worldPos); + }); + + if (!isOpenContour) { + // Need to repeat the first point at the end of to have an explicitly closed contour. + var firstPoint = points[0]; // Explicitly expand to avoid ciruclar references. + + points.push([firstPoint[0], firstPoint[1]]); + } + + var area = 0; // TODO -> The tool doesn't have these stats yet. + + var perimeter = 0; + return { + points: points, + area: area, + perimeter: perimeter, + trackingIdentifierTextValue: trackingIdentifierTextValue, + finding: finding, + findingSites: findingSites || [] + }; + } + }]); + + return PlanarFreehandROI; + }(); + + PlanarFreehandROI.toolType = PLANARFREEHANDROI; + PlanarFreehandROI.utilityToolType = PLANARFREEHANDROI; + PlanarFreehandROI.TID300Representation = Polyline$1; + + PlanarFreehandROI.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) { + if (!TrackingIdentifier.includes(":")) { + return false; + } + + var _TrackingIdentifier$s = TrackingIdentifier.split(":"), + _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2), + cornerstone3DTag = _TrackingIdentifier$s2[0], + toolType = _TrackingIdentifier$s2[1]; + + if (cornerstone3DTag !== CORNERSTONE_3D_TAG) { + return false; + } + + return toolType === PLANARFREEHANDROI; + }; + + MeasurementReport$2.registerTool(PlanarFreehandROI); + + var Cornerstone3D = { + Length: Length, + Bidirectional: Bidirectional, + EllipticalROI: EllipticalROI, + ArrowAnnotate: ArrowAnnotate, + Probe: Probe, + PlanarFreehandROI: PlanarFreehandROI, + MeasurementReport: MeasurementReport$2, + CodeScheme: CodingScheme, + CORNERSTONE_3D_TAG: CORNERSTONE_3D_TAG + }; + + // Should we move it to Colors.js + + function dicomlab2RGBA(cielab) { + var rgba = Colors.dicomlab2RGB(cielab).map(function (x) { + return Math.round(x * 255); + }); + rgba.push(255); + return rgba; + } // TODO: Copied these functions in from VTK Math so we don't need a dependency. + // I guess we should put them somewhere + // https://github.com/Kitware/vtk-js/blob/master/Sources/Common/Core/Math/index.js + + + function cross(x, y, out) { + var Zx = x[1] * y[2] - x[2] * y[1]; + var Zy = x[2] * y[0] - x[0] * y[2]; + var Zz = x[0] * y[1] - x[1] * y[0]; + out[0] = Zx; + out[1] = Zy; + out[2] = Zz; + } + + function norm(x) { + var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3; + + switch (n) { + case 1: + return Math.abs(x); + + case 2: + return Math.sqrt(x[0] * x[0] + x[1] * x[1]); + + case 3: + return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]); + + default: + { + var sum = 0; + + for (var i = 0; i < n; i++) { + sum += x[i] * x[i]; + } + + return Math.sqrt(sum); + } + } + } + + function normalize(x) { + var den = norm(x); + + if (den !== 0.0) { + x[0] /= den; + x[1] /= den; + x[2] /= den; + } + + return den; + } + + function subtract(a, b, out) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + } // TODO: This is a useful utility on its own. We should move it somewhere? + // dcmjs.adapters.vtk.Multiframe? dcmjs.utils? + + + function geometryFromFunctionalGroups(dataset, PerFrameFunctionalGroups) { + var geometry = {}; + var pixelMeasures = dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence; + var planeOrientation = dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence; // Find the origin of the volume from the PerFrameFunctionalGroups' ImagePositionPatient values + // + // TODO: assumes sorted frames. This should read the ImagePositionPatient from each frame and + // sort them to obtain the first and last position along the acquisition axis. + + var firstFunctionalGroup = PerFrameFunctionalGroups[0]; + var lastFunctionalGroup = PerFrameFunctionalGroups[PerFrameFunctionalGroups.length - 1]; + var firstPosition = firstFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(Number); + var lastPosition = lastFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(Number); + geometry.origin = firstPosition; // NB: DICOM PixelSpacing is defined as Row then Column, + // unlike ImageOrientationPatient + + geometry.spacing = [pixelMeasures.PixelSpacing[1], pixelMeasures.PixelSpacing[0], pixelMeasures.SpacingBetweenSlices].map(Number); + geometry.dimensions = [dataset.Columns, dataset.Rows, PerFrameFunctionalGroups.length].map(Number); + var orientation = planeOrientation.ImageOrientationPatient.map(Number); + var columnStepToPatient = orientation.slice(0, 3); + var rowStepToPatient = orientation.slice(3, 6); + geometry.planeNormal = []; + cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal); + geometry.sliceStep = []; + subtract(lastPosition, firstPosition, geometry.sliceStep); + normalize(geometry.sliceStep); + geometry.direction = columnStepToPatient.concat(rowStepToPatient).concat(geometry.sliceStep); + return geometry; + } + + var Segmentation = /*#__PURE__*/function () { + function Segmentation() { + _classCallCheck(this, Segmentation); + } + /** + * Produces an array of Segments from an input DICOM Segmentation dataset + * + * Segments are returned with Geometry values that can be used to create + * VTK Image Data objects. + * + * @example Example usage to create VTK Volume actors from each segment: + * + * const actors = []; + * const segments = generateToolState(dataset); + * segments.forEach(segment => { + * // now make actors using the segment information + * const scalarArray = vtk.Common.Core.vtkDataArray.newInstance({ + * name: "Scalars", + * numberOfComponents: 1, + * values: segment.pixelData, + * }); + * + * const imageData = vtk.Common.DataModel.vtkImageData.newInstance(); + * imageData.getPointData().setScalars(scalarArray); + * imageData.setDimensions(geometry.dimensions); + * imageData.setSpacing(geometry.spacing); + * imageData.setOrigin(geometry.origin); + * imageData.setDirection(geometry.direction); + * + * const mapper = vtk.Rendering.Core.vtkVolumeMapper.newInstance(); + * mapper.setInputData(imageData); + * mapper.setSampleDistance(2.); + * + * const actor = vtk.Rendering.Core.vtkVolume.newInstance(); + * actor.setMapper(mapper); + * + * actors.push(actor); + * }); + * + * @param dataset + * @return {{}} + */ + + + _createClass(Segmentation, null, [{ + key: "generateSegments", + value: function generateSegments(dataset) { + if (dataset.SegmentSequence.constructor.name !== "Array") { + dataset.SegmentSequence = [dataset.SegmentSequence]; + } + + dataset.SegmentSequence.forEach(function (segment) { + // TODO: other interesting fields could be extracted from the segment + // TODO: Read SegmentsOverlay field + // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.20.2.html + // TODO: Looks like vtkColor only wants RGB in 0-1 values. + // Why was this example converting to RGBA with 0-255 values? + var color = dicomlab2RGBA(segment.RecommendedDisplayCIELabValue); + segments[segment.SegmentNumber] = { + color: color, + functionalGroups: [], + offset: null, + size: null, + pixelData: null + }; + }); // make a list of functional groups per segment + + dataset.PerFrameFunctionalGroupsSequence.forEach(function (functionalGroup) { + var segmentNumber = functionalGroup.SegmentIdentificationSequence.ReferencedSegmentNumber; + segments[segmentNumber].functionalGroups.push(functionalGroup); + }); // determine per-segment index into the pixel data + // TODO: only handles one-bit-per pixel + + var frameSize = Math.ceil(dataset.Rows * dataset.Columns / 8); + var nextOffset = 0; + Object.keys(segments).forEach(function (segmentNumber) { + var segment = segments[segmentNumber]; + segment.numberOfFrames = segment.functionalGroups.length; + segment.size = segment.numberOfFrames * frameSize; + segment.offset = nextOffset; + nextOffset = segment.offset + segment.size; + var packedSegment = dataset.PixelData.slice(segment.offset, nextOffset); + segment.pixelData = BitArray.unpack(packedSegment); + var geometry = geometryFromFunctionalGroups(dataset, segment.functionalGroups); + segment.geometry = geometry; + }); + return segments; + } + }]); + + return Segmentation; + }(); + + var VTKjs = { + Segmentation: Segmentation + }; + + function getTID300ContentItem(tool, toolClass) { + var args = toolClass.getTID300RepresentationArguments(tool); + args.use3DSpatialCoordinates = true; + return new toolClass.TID300Representation(args); + } + + function getMeasurementGroup(graphicType, measurements) { + var toolClass = MeasurementReport$1.MICROSCOPY_TOOL_CLASSES_BY_TOOL_TYPE[graphicType]; // Loop through the array of tool instances + // for this tool + + var Measurements = measurements.map(function (tool) { + return getTID300ContentItem(tool, toolClass); + }); + return new TID1501MeasurementGroup(Measurements); + } + + var MeasurementReport$1 = /*#__PURE__*/function () { + function MeasurementReport() { + _classCallCheck(this, MeasurementReport); + } + + _createClass(MeasurementReport, null, [{ + key: "generateReport", + value: function generateReport(rois, metadataProvider, options) { + // Input is all ROIS returned via viewer.getALLROIs() + // let report = MeasurementReport.generateReport(viewer.getAllROIs()); + // Sort and split into arrays by scoord3d.graphicType + var measurementsByGraphicType = {}; + rois.forEach(function (roi) { + var graphicType = roi.scoord3d.graphicType; + + if (graphicType !== "POINT") { + // adding z coord as 0 + roi.scoord3d.graphicData.map(function (coord) { + return coord.push(0); + }); + } + + if (!measurementsByGraphicType[graphicType]) { + measurementsByGraphicType[graphicType] = []; + } + + measurementsByGraphicType[graphicType].push(roi.scoord3d); + }); // For each measurement, get the utility arguments using the adapter, and create TID300 Measurement + // Group these TID300 Measurements into a TID1501 Measurement Group (for each graphicType) + // Use TID1500MeasurementReport utility to create a single report from the created groups + // return report; + + var allMeasurementGroups = []; + var measurementGroups = []; + Object.keys(measurementsByGraphicType).forEach(function (graphicType) { + var measurements = measurementsByGraphicType[graphicType]; + var group = getMeasurementGroup(graphicType, measurements); + + if (group) { + measurementGroups.push(group); + } + + allMeasurementGroups = allMeasurementGroups.concat(measurementGroups); + }); + + var _MeasurementReport = new TID1500MeasurementReport({ + TID1501MeasurementGroups: allMeasurementGroups + }, options); // TODO: what is the correct metaheader + // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html + // TODO: move meta creation to happen in derivations.js + + + var fileMetaInformationVersionArray = new Uint8Array(2); + fileMetaInformationVersionArray[1] = 1; // TODO: Find out how to reference the data from dicom-microscopy-viewer + + var studyInstanceUID = "12.4"; + var seriesInstanceUID = "12.4"; + var derivationSourceDataset = { + StudyInstanceUID: studyInstanceUID, + SeriesInstanceUID: seriesInstanceUID //SOPInstanceUID: sopInstanceUID, // TODO: Necessary? + //SOPClassUID: sopClassUID, + + }; + var _meta = { + FileMetaInformationVersion: { + Value: [fileMetaInformationVersionArray.buffer], + vr: "OB" + }, + //MediaStorageSOPClassUID + //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID, + TransferSyntaxUID: { + Value: ["1.2.840.10008.1.2.1"], + vr: "UI" + }, + ImplementationClassUID: { + Value: [DicomMetaDictionary.uid()], + // TODO: could be git hash or other valid id + vr: "UI" + }, + ImplementationVersionName: { + Value: ["dcmjs"], + vr: "SH" + } + }; + var _vrMap = { + PixelData: "OW" + }; + derivationSourceDataset._meta = _meta; + derivationSourceDataset._vrMap = _vrMap; + var report = new StructuredReport([derivationSourceDataset]); + + var contentItem = _MeasurementReport.contentItem(derivationSourceDataset); // Merge the derived dataset with the content from the Measurement Report + + + report.dataset = Object.assign(report.dataset, contentItem); + report.dataset._meta = _meta; + return report; + } //@ToDo + + }, { + key: "generateToolState", + value: function generateToolState(dataset) { + // For now, bail out if the dataset is not a TID1500 SR with length measurements + if (dataset.ContentTemplateSequence.TemplateIdentifier !== "1500") { + throw new Error("This package can currently only interpret DICOM SR TID 1500"); + } + + var REPORT = "Imaging Measurements"; + var GROUP = "Measurement Group"; // Split the imagingMeasurementContent into measurement groups by their code meaning + + var imagingMeasurementContent = toArray(dataset.ContentSequence).find(codeMeaningEquals(REPORT)); // Retrieve the Measurements themselves + + var measurementGroups = toArray(imagingMeasurementContent.ContentSequence).filter(codeMeaningEquals(GROUP)); // // For each of the supported measurement types, compute the measurement data + + var measurementData = {}; + measurementGroups.forEach(function (mg) { + Object.keys(MeasurementReport.MICROSCOPY_TOOL_CLASSES_BY_UTILITY_TYPE).forEach(function (measurementType) { + // Find supported measurement types in the Structured Report + var measurementGroupContentSequence = toArray(mg.ContentSequence); + var measurementContent = measurementGroupContentSequence.filter(graphicTypeEquals(measurementType.toUpperCase())); + + if (!measurementContent || measurementContent.length === 0) { + return; + } + + var toolClass = MeasurementReport.MICROSCOPY_TOOL_CLASSES_BY_UTILITY_TYPE[measurementType]; + var toolType = toolClass.toolType; + + if (!toolClass.getMeasurementData) { + throw new Error("MICROSCOPY Tool Adapters must define a getMeasurementData static method."); + } + + if (!measurementData[toolType]) { + measurementData[toolType] = []; + } + + measurementData[toolType] = [].concat(_toConsumableArray(measurementData[toolType]), _toConsumableArray(toolClass.getMeasurementData(measurementContent))); + }); + }); + return measurementData; + } + }, { + key: "registerTool", + value: function registerTool(toolClass) { + MeasurementReport.MICROSCOPY_TOOL_CLASSES_BY_UTILITY_TYPE[toolClass.utilityToolType] = toolClass; + MeasurementReport.MICROSCOPY_TOOL_CLASSES_BY_TOOL_TYPE[toolClass.graphicType] = toolClass; + MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.graphicType] = toolClass.utilityToolType; + } + }]); + + return MeasurementReport; + }(); + MeasurementReport$1.MEASUREMENT_BY_TOOLTYPE = {}; + MeasurementReport$1.MICROSCOPY_TOOL_CLASSES_BY_UTILITY_TYPE = {}; + MeasurementReport$1.MICROSCOPY_TOOL_CLASSES_BY_TOOL_TYPE = {}; + + var Polyline = /*#__PURE__*/function () { + function Polyline() { + _classCallCheck(this, Polyline); + } + + _createClass(Polyline, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(measurementContent) { + // removing duplication and Getting only the graphicData information + var measurement = measurementContent.map(function (item) { + return item.GraphicData; + }).filter(function (s) { + return function (a) { + return function (j) { + return !s.has(j) && s.add(j); + }(JSON.stringify(a)); + }; + }(new Set())); // Chunking the array into size of three + + return measurement.map(function (measurement) { + return measurement.reduce(function (all, one, i) { + var ch = Math.floor(i / 3); + all[ch] = [].concat(all[ch] || [], one); + return all; + }, []); + }); + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(scoord3d) { + if (scoord3d.graphicType !== "POLYLINE") { + throw new Error("We expected a POLYLINE graphicType"); + } + + var points = scoord3d.graphicData; + var lengths = 1; + return { + points: points, + lengths: lengths + }; + } + }]); + + return Polyline; + }(); + + Polyline.graphicType = "POLYLINE"; + Polyline.toolType = "Polyline"; + Polyline.utilityToolType = "Polyline"; + Polyline.TID300Representation = Polyline$1; + MeasurementReport$1.registerTool(Polyline); + + /** + * Expand an array of points stored as objects into + * a flattened array of points + * + * @param points [{x: 0, y: 1}, {x: 1, y: 2}] or [{x: 0, y: 1, z: 0}, {x: 1, y: 2, z: 0}] + * @return {Array} [point1x, point1y, point2x, point2y] or [point1x, point1y, point1z, point2x, point2y, point2z] + */ + + function expandPoints(points) { + var allPoints = []; + points.forEach(function (point) { + allPoints.push(point[0]); + allPoints.push(point[1]); + + if (point[2] !== undefined) { + allPoints.push(point[2]); + } + }); + return allPoints; + } + + var Polygon$1 = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Polygon, _TID300Measurement); + + var _super = _createSuper(Polygon); + + function Polygon() { + _classCallCheck(this, Polygon); + + return _super.apply(this, arguments); + } + + _createClass(Polygon, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + points = _this$props.points, + perimeter = _this$props.perimeter, + _this$props$unit = _this$props.unit, + unit = _this$props$unit === void 0 ? "mm" : _this$props$unit, + area = _this$props.area, + areaUnit = _this$props.areaUnit, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence, + _this$props$use3DSpat = _this$props.use3DSpatialCoordinates, + use3DSpatialCoordinates = _this$props$use3DSpat === void 0 ? false : _this$props$use3DSpat; + var GraphicData = expandPoints(points); + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A197", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Perimeter" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: perimeter + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "POLYGON", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }, { + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "G-A166", + CodingSchemeDesignator: "SRT", + CodeMeaning: "Area" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(areaUnit), + NumericValue: area + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: use3DSpatialCoordinates ? "SCOORD3D" : "SCOORD", + GraphicType: "POLYGON", + GraphicData: GraphicData, + ContentSequence: use3DSpatialCoordinates ? undefined : { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Polygon; + }(TID300Measurement); + + var Polygon = /*#__PURE__*/function () { + function Polygon() { + _classCallCheck(this, Polygon); + } + + _createClass(Polygon, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(measurementContent) { + // removing duplication and Getting only the graphicData information + var measurement = measurementContent.map(function (item) { + return item.GraphicData; + }).filter(function (s) { + return function (a) { + return function (j) { + return !s.has(j) && s.add(j); + }(JSON.stringify(a)); + }; + }(new Set())); // Chunking the array into size of three + + return measurement.map(function (measurement) { + return measurement.reduce(function (all, one, i) { + var ch = Math.floor(i / 3); + all[ch] = [].concat(all[ch] || [], one); + return all; + }, []); + }); + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(scoord3d) { + if (scoord3d.graphicType !== "POLYGON") { + throw new Error("We expected a POLYGON graphicType"); + } + + var points = scoord3d.graphicData; + var lengths = 1; + return { + points: points, + lengths: lengths + }; + } + }]); + + return Polygon; + }(); + + Polygon.graphicType = "POLYGON"; + Polygon.toolType = "Polygon"; + Polygon.utilityToolType = "Polygon"; + Polygon.TID300Representation = Polygon$1; + MeasurementReport$1.registerTool(Polygon); + + var Point = /*#__PURE__*/function () { + function Point() { + _classCallCheck(this, Point); + } + + _createClass(Point, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(measurementContent) { + var measurement = measurementContent.map(function (item) { + return item.GraphicData; + }); + return measurement.filter(function (s) { + return function (a) { + return function (j) { + return !s.has(j) && s.add(j); + }(JSON.stringify(a)); + }; + }(new Set())); + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(scoord3d) { + if (scoord3d.graphicType !== "POINT") { + throw new Error("We expected a POINT graphicType"); + } + + var points = [scoord3d.graphicData]; + var lengths = 1; + return { + points: points, + lengths: lengths + }; + } + }]); + + return Point; + }(); + + Point.graphicType = "POINT"; + Point.toolType = "Point"; + Point.utilityToolType = "Point"; + Point.TID300Representation = Point$1; + MeasurementReport$1.registerTool(Point); + + var Circle = /*#__PURE__*/function () { + function Circle() { + _classCallCheck(this, Circle); + } + + _createClass(Circle, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(measurementContent) { + // removing duplication and Getting only the graphicData information + var measurement = measurementContent.map(function (item) { + return item.GraphicData; + }).filter(function (s) { + return function (a) { + return function (j) { + return !s.has(j) && s.add(j); + }(JSON.stringify(a)); + }; + }(new Set())); // Chunking the array into size of three + + return measurement.map(function (measurement) { + return measurement.reduce(function (all, one, i) { + var ch = Math.floor(i / 3); + all[ch] = [].concat(all[ch] || [], one); + return all; + }, []); + }); + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(scoord3d) { + if (scoord3d.graphicType !== "CIRCLE") { + throw new Error("We expected a CIRCLE graphicType"); + } + + var points = scoord3d.graphicData; + var lengths = 1; + return { + points: points, + lengths: lengths + }; + } + }]); + + return Circle; + }(); + + Circle.graphicType = "CIRCLE"; + Circle.toolType = "Circle"; + Circle.utilityToolType = "Circle"; + Circle.TID300Representation = Circle$1; + MeasurementReport$1.registerTool(Circle); + + var Ellipse = /*#__PURE__*/function () { + function Ellipse() { + _classCallCheck(this, Ellipse); + } + + _createClass(Ellipse, null, [{ + key: "getMeasurementData", + value: function getMeasurementData(measurementContent) { + // removing duplication and Getting only the graphicData information + var measurement = measurementContent.map(function (item) { + return item.GraphicData; + }).filter(function (s) { + return function (a) { + return function (j) { + return !s.has(j) && s.add(j); + }(JSON.stringify(a)); + }; + }(new Set())); // Chunking the array into size of three + + return measurement.map(function (measurement) { + return measurement.reduce(function (all, one, i) { + var ch = Math.floor(i / 3); + all[ch] = [].concat(all[ch] || [], one); + return all; + }, []); + }); + } + }, { + key: "getTID300RepresentationArguments", + value: function getTID300RepresentationArguments(scoord3d) { + if (scoord3d.graphicType !== "Ellipse") { + throw new Error("We expected a Ellipse graphicType"); + } + + var points = scoord3d.graphicData; + var lengths = 1; + return { + points: points, + lengths: lengths + }; + } + }]); + + return Ellipse; + }(); + + Ellipse.graphicType = "ELLIPSE"; + Ellipse.toolType = "Ellipse"; + Ellipse.utilityToolType = "Ellipse"; + Ellipse.TID300Representation = Ellipse$1; + MeasurementReport$1.registerTool(Ellipse); + + var DICOMMicroscopyViewer = { + Polyline: Polyline, + Polygon: Polygon, + Point: Point, + Circle: Circle, + Ellipse: Ellipse, + MeasurementReport: MeasurementReport$1 + }; + + var adapters = { + Cornerstone: Cornerstone, + Cornerstone3D: Cornerstone3D, + VTKjs: VTKjs, + DICOMMicroscopyViewer: DICOMMicroscopyViewer + }; + + var TID1500 = { + TID1500MeasurementReport: TID1500MeasurementReport, + TID1501MeasurementGroup: TID1501MeasurementGroup + }; + + var Calibration = /*#__PURE__*/function (_TID300Measurement) { + _inherits(Calibration, _TID300Measurement); + + var _super = _createSuper(Calibration); + + function Calibration() { + _classCallCheck(this, Calibration); + + return _super.apply(this, arguments); + } + + _createClass(Calibration, [{ + key: "contentItem", + value: function contentItem() { + var _this$props = this.props, + point1 = _this$props.point1, + point2 = _this$props.point2, + _this$props$unit = _this$props.unit, + unit = _this$props$unit === void 0 ? "mm" : _this$props$unit, + distance = _this$props.distance, + ReferencedSOPSequence = _this$props.ReferencedSOPSequence; + return this.getMeasurement([{ + RelationshipType: "CONTAINS", + ValueType: "NUM", + ConceptNameCodeSequence: { + CodeValue: "102304005", + CodingSchemeDesignator: "SCT", + CodeMeaning: "Calibration Ruler" + }, + MeasuredValueSequence: { + MeasurementUnitsCodeSequence: unit2CodingValue(unit), + NumericValue: distance + }, + ContentSequence: { + RelationshipType: "INFERRED FROM", + ValueType: "SCOORD", + GraphicType: "POLYLINE", + GraphicData: [point1.x, point1.y, point2.x, point2.y], + ContentSequence: { + RelationshipType: "SELECTED FROM", + ValueType: "IMAGE", + ReferencedSOPSequence: ReferencedSOPSequence + } + } + }]); + } + }]); + + return Calibration; + }(TID300Measurement); + + // - Cornerstone Probe + // Note: OHIF currently uses Cornerstone's 'dragProbe'. We need to add the regular Probe tool, which drops a single point. + // + // Hierarchy + // TID 1500 MeasurementReport + // --TID 1501 Measurement Group + // ---Measurement Group (DCM 125007) + // ----TID 300 Measurement + // ------SCOORD. Graphic Type: POINT + // + // + // - Cornerstone Ellipse: + // + // Should specify the Mean Modality Pixel Value measured in whatever units the image is in + // Should specify the Standard Deviation Modality Pixel Value measured in whatever units the image is in + // + // + // - Cornerstone Rectangle ROI + // + // Hierarchy + // TID 1500 MeasurementReport + // --TID 1501 Measurement Group + // ---Measurement Group (DCM 125007) + // ----TID 300 Measurement + // ------SCOORD. Graphic Type: POLYLINE + // ------ Use concept corresponding to Rectangle measurement + // + // http://dicom.nema.org/medical/dicom/current/output/html/part16.html#sect_TID_4019 + // + // OR + // Note: This should be the same as a Freehand ROI, more or less. We add a TID 4019: Algorithm Identification flag to specify that this was created (and should be rehydrated) into a Rectangle ROI. + // TODO: Should we use a Derivation instead? http://dicom.nema.org/medical/dicom/current/output/html/part16.html#DCM_121401 + // Should specify the Area measured in mmˆ2, including the units in UCUM + // Should specify the Mean Modality Pixel Value measured in whatever units the image is in + // Should specify the Standard Deviation Modality Pixel Value measured in whatever units the image is in + // + // + // - Cornerstone Simple Angle tool + // + // Hierarchy + // TID 1500 MeasurementReport + // --TID 1501 Measurement Group + // ---Measurement Group (DCM 125007) + // ----TID 300 Measurement + // ------SCOORD. Graphic Type: POLYLINE + // (ftp://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part03/sect_C.10.5.html) + // ----TID 300 Measurement + // ------SCOORD. Graphic Type: POLYLINE + // (ftp://dicom.nema.org/MEDICAL/dicom/current/output/chtml/part03/sect_C.10.5.html) + // + // ------ Use concept corresponding to Angle measurement + // + // Two lines specify the angle + // Should specify the Angle measured in Degrees, including the units in UCUM + // + + var TID300 = { + TID300Measurement: TID300Measurement, + Point: Point$1, + Length: Length$2, + CobbAngle: CobbAngle$1, + Bidirectional: Bidirectional$2, + Polyline: Polyline$1, + Polygon: Polygon$1, + Ellipse: Ellipse$1, + Circle: Circle$1, + Calibration: Calibration, + unit2CodingValue: unit2CodingValue + }; + + /** + * Converts a Uint8Array to a String. + * @param {Uint8Array} array that should be converted + * @param {Number} offset array offset in case only subset of array items should be extracted (default: 0) + * @param {Number} limit maximum number of array items that should be extracted (defaults to length of array) + * @returns {String} + */ + function uint8ArrayToString(arr, offset, limit) { + offset = offset || 0; + limit = limit || arr.length - offset; + var str = ""; + + for (var i = offset; i < offset + limit; i++) { + str += String.fromCharCode(arr[i]); + } + + return str; + } + /** + * Converts a String to a Uint8Array. + * @param {String} str string that should be converted + * @returns {Uint8Array} + */ + + + function stringToUint8Array(str) { + var arr = new Uint8Array(str.length); + + for (var i = 0, j = str.length; i < j; i++) { + arr[i] = str.charCodeAt(i); + } + + return arr; + } + /** + * Identifies the boundary in a multipart/related message header. + * @param {String} header message header + * @returns {String} boundary + */ + + + function identifyBoundary(header) { + var parts = header.split("\r\n"); + + for (var i = 0; i < parts.length; i++) { + if (parts[i].substr(0, 2) === "--") { + return parts[i]; + } + } + } + /** + * Checks whether a given token is contained by a message at a given offset. + * @param {Uint8Array} message message content + * @param {Uint8Array} token substring that should be present + * @param {Number} offset offset in message content from where search should start + * @returns {Boolean} whether message contains token at offset + */ + + + function containsToken(message, token) { + var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + if (offset + token.length > message.length) { + return false; + } + + var index = offset; + + for (var i = 0; i < token.length; i++) { + if (token[i] !== message[index++]) { + return false; + } + } + + return true; + } + /** + * Finds a given token in a message at a given offset. + * @param {Uint8Array} message message content + * @param {Uint8Array} token substring that should be found + * @param {Number} offset message body offset from where search should start + * @returns {Boolean} whether message has a part at given offset or not + */ + + + function findToken(message, token) { + var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var maxSearchLength = arguments.length > 3 ? arguments[3] : undefined; + var searchLength = message.length; + + if (maxSearchLength) { + searchLength = Math.min(offset + maxSearchLength, message.length); + } + + for (var i = offset; i < searchLength; i++) { + // If the first value of the message matches + // the first value of the token, check if + // this is the full token. + if (message[i] === token[0]) { + if (containsToken(message, token, i)) { + return i; + } + } + } + + return -1; + } + /** + * @typedef {Object} MultipartEncodedData + * @property {ArrayBuffer} data The encoded Multipart Data + * @property {String} boundary The boundary used to divide pieces of the encoded data + */ + + /** + * Encode one or more DICOM datasets into a single body so it can be + * sent using the Multipart Content-Type. + * + * @param {ArrayBuffer[]} datasets Array containing each file to be encoded in the multipart body, passed as ArrayBuffers. + * @param {String} [boundary] Optional string to define a boundary between each part of the multipart body. If this is not specified, a random GUID will be generated. + * @return {MultipartEncodedData} The Multipart encoded data returned as an Object. This contains both the data itself, and the boundary string used to divide it. + */ + + + function multipartEncode(datasets) { + var boundary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : guid(); + var contentType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "application/dicom"; + var contentTypeString = "Content-Type: ".concat(contentType); + var header = "\r\n--".concat(boundary, "\r\n").concat(contentTypeString, "\r\n\r\n"); + var footer = "\r\n--".concat(boundary, "--"); + var headerArray = stringToUint8Array(header); + var footerArray = stringToUint8Array(footer); + var headerLength = headerArray.length; + var footerLength = footerArray.length; + var length = 0; // Calculate the total length for the final array + + var contentArrays = datasets.map(function (datasetBuffer) { + var contentArray = new Uint8Array(datasetBuffer); + var contentLength = contentArray.length; + length += headerLength + contentLength + footerLength; + return contentArray; + }); // Allocate the array + + var multipartArray = new Uint8Array(length); // Set the initial header + + multipartArray.set(headerArray, 0); // Write each dataset into the multipart array + + var position = 0; + contentArrays.forEach(function (contentArray) { + contentArray.length; + multipartArray.set(headerArray, position); + multipartArray.set(contentArray, position + headerLength); + position += headerLength + contentArray.length; + }); + multipartArray.set(footerArray, position); + return { + data: multipartArray.buffer, + boundary: boundary + }; + } + /** + * Decode a Multipart encoded ArrayBuffer and return the components as an Array. + * + * @param {ArrayBuffer} response Data encoded as a 'multipart/related' message + * @returns {Array} The content + */ + + + function multipartDecode(response) { + var message = new Uint8Array(response); + /* Set a maximum length to search for the header boundaries, otherwise + findToken can run for a long time + */ + + var maxSearchLength = 1000; // First look for the multipart mime header + + var separator = stringToUint8Array("\r\n\r\n"); + var headerIndex = findToken(message, separator, 0, maxSearchLength); + + if (headerIndex === -1) { + throw new Error("Response message has no multipart mime header"); + } + + var header = uint8ArrayToString(message, 0, headerIndex); + var boundaryString = identifyBoundary(header); + + if (!boundaryString) { + throw new Error("Header of response message does not specify boundary"); + } + + var boundary = stringToUint8Array(boundaryString); + boundary.length; + var components = []; + var offset = headerIndex + separator.length; // Loop until we cannot find any more boundaries + + var boundaryIndex; + + while (boundaryIndex !== -1) { + // Search for the next boundary in the message, starting + // from the current offset position + boundaryIndex = findToken(message, boundary, offset); // If no further boundaries are found, stop here. + + if (boundaryIndex === -1) { + break; + } // Extract data from response message, excluding "\r\n" + + + var spacingLength = 2; + var length = boundaryIndex - offset - spacingLength; + var data = response.slice(offset, offset + length); // Add the data to the array of results + + components.push(data); // find the end of the boundary + + var boundaryEnd = findToken(message, separator, boundaryIndex + 1, maxSearchLength); + if (boundaryEnd === -1) break; // Move the offset to the end of the identified boundary + + offset = boundaryEnd + separator.length; + } + + return components; + } + /** + * Create a random GUID + * + * @return {string} + */ + + + function guid() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); + } + + return s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4(); + } + + var message = { + containsToken: containsToken, + findToken: findToken, + identifyBoundary: identifyBoundary, + uint8ArrayToString: uint8ArrayToString, + stringToUint8Array: stringToUint8Array, + multipartEncode: multipartEncode, + multipartDecode: multipartDecode, + guid: guid + }; + + var utilities = { + TID1500: TID1500, + TID300: TID300, + message: message, + addAccessors: addAccessors, + orientation: orientation, + compression: compression + }; + + var Code = /*#__PURE__*/function () { + function Code(options) { + _classCallCheck(this, Code); + + this[_value] = options.value; + this[_meaning] = options.meaning; + this[_schemeDesignator] = options.schemeDesignator; + this[_schemeVersion] = options.schemeVersion || null; + } + + _createClass(Code, [{ + key: "value", + get: function get() { + return this[_value]; + } + }, { + key: "meaning", + get: function get() { + return this[_meaning]; + } + }, { + key: "schemeDesignator", + get: function get() { + return this[_schemeDesignator]; + } + }, { + key: "schemeVersion", + get: function get() { + return this[_schemeVersion]; + } + }]); + + return Code; + }(); + + var CodedConcept = /*#__PURE__*/function () { + function CodedConcept(options) { + _classCallCheck(this, CodedConcept); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for CodedConcept."); + } + + if (options.meaning === undefined) { + throw new Error("Option 'meaning' is required for CodedConcept."); + } + + if (options.schemeDesignator === undefined) { + throw new Error("Option 'schemeDesignator' is required for CodedConcept."); + } + + this.CodeValue = options.value; + this.CodeMeaning = options.meaning; + this.CodingSchemeDesignator = options.schemeDesignator; + + if ("schemeVersion" in options) { + this.CodingSchemeVersion = options.schemeVersion; + } + } + + _createClass(CodedConcept, [{ + key: "equals", + value: function equals(other) { + if (other.value === this.value && other.schemeDesignator === this.schemeDesignator) { + if (other.schemeVersion && this.schemeVersion) { + return other.schemeVersion === this.schemeVersion; + } + + return true; + } + + return false; + } + }, { + key: "value", + get: function get() { + return this.CodeValue; + } + }, { + key: "meaning", + get: function get() { + return this.CodeMeaning; + } + }, { + key: "schemeDesignator", + get: function get() { + return this.CodingSchemeDesignator; + } + }, { + key: "schemeVersion", + get: function get() { + return this.CodingSchemeVersion; + } + }]); + + return CodedConcept; + }(); + + var coding = /*#__PURE__*/Object.freeze({ + __proto__: null, + Code: Code, + CodedConcept: CodedConcept + }); + + var ValueTypes = { + CODE: "CODE", + COMPOSITE: "COMPOSITE", + CONTAINER: "CONTAINER", + DATE: "DATE", + DATETIME: "DATETIME", + IMAGE: "IMAGE", + NUM: "NUM", + PNAME: "PNAME", + SCOORD: "SCOORD", + SCOORD3D: "SCOORD3D", + TCOORD: "TCOORD", + TEXT: "TEXT", + TIME: "TIME", + UIDREF: "UIDREF", + WAVEFORM: "WAVEFORM" + }; + Object.freeze(ValueTypes); + var GraphicTypes = { + CIRCLE: "CIRCLE", + ELLIPSE: "ELLIPSE", + ELLIPSOID: "ELLIPSOID", + MULTIPOINT: "MULTIPOINT", + POINT: "POINT", + POLYLINE: "POLYLINE" + }; + Object.freeze(GraphicTypes); + var GraphicTypes3D = { + ELLIPSE: "ELLIPSE", + ELLIPSOID: "ELLIPSOID", + MULTIPOINT: "MULTIPOINT", + POINT: "POINT", + POLYLINE: "POLYLINE", + POLYGON: "POLYGON" + }; + Object.freeze(GraphicTypes3D); + var TemporalRangeTypes = { + BEGIN: "BEGIN", + END: "END", + MULTIPOINT: "MULTIPOINT", + MULTISEGMENT: "MULTISEGMENT", + POINT: "POINT", + SEGMENT: "SEGMENT" + }; + Object.freeze(TemporalRangeTypes); + var RelationshipTypes = { + CONTAINS: "CONTAINS", + HAS_ACQ_CONTENT: "HAS ACQ CONTENT", + HAS_CONCEPT_MOD: "HAS CONCEPT MOD", + HAS_OBS_CONTEXT: "HAS OBS CONTEXT", + HAS_PROPERTIES: "HAS PROPERTIES", + INFERRED_FROM: "INFERRED FROM", + SELECTED_FROM: "SELECTED FROM" + }; + Object.freeze(RelationshipTypes); + var PixelOriginInterpretations = { + FRAME: "FRAME", + VOLUME: "VOLUME" + }; + Object.freeze(RelationshipTypes); + + function isFloat(n) { + return n === +n && n !== (n | 0); + } + + function zeroPad(value) { + return (value > 9 ? "" : "0") + value; + } + + function TM(date) { + // %H%M%S.%f + var hours = date.getHours(); + var minutes = date.getMinutes(); + var seconds = date.getSeconds(); + var milliseconds = date.getMilliseconds(); + return zeroPad(hours) + zeroPad(minutes) + zeroPad(seconds) + milliseconds; + } + + function DA(date) { + var year = date.getFullYear(); + var month = date.getMonth() + 1; + var day = date.getDate(); + return year + zeroPad(month) + zeroPad(day); + } + + function DT(date) { + return DA(date) + TM(date); + } + + var ContentSequence$1 = /*#__PURE__*/function (_Array) { + _inherits(ContentSequence, _Array); + + var _super = _createSuper(ContentSequence); + + function ContentSequence() { + _classCallCheck(this, ContentSequence); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _super.call.apply(_super, [this].concat(args)); + } // filterBy(options) { + // } + + + return _createClass(ContentSequence); + }( /*#__PURE__*/_wrapNativeSuper(Array)); + + var ContentItem = /*#__PURE__*/_createClass(function ContentItem(options) { + _classCallCheck(this, ContentItem); + + if (options.name === undefined) { + throw new Error("Option 'name' is required for ContentItem."); + } + + if (options.name.constructor !== CodedConcept) { + throw new Error("Option 'name' must have type CodedConcept."); + } + + this.ConceptNameCodeSequence = [options.name]; + + if (options.valueType === undefined) { + throw new Error("Option 'valueType' is required for ContentItem."); + } + + if (!(Object.values(ValueTypes).indexOf(options.valueType) !== -1)) { + throw new Error("Invalid value type ".concat(options.valueType)); + } + + this.ValueType = options.valueType; + + if (options.relationshipType !== undefined) { + if (!(Object.values(RelationshipTypes).indexOf(options.relationshipType) !== -1)) { + throw new Error("Invalid relationship type ".concat(options.relationshipTypes)); + } + + this.RelationshipType = options.relationshipType; + } // TODO: relationship type is required + + } // getContentItems(options) { + // // TODO: filter by name, value type and relationship type + // return this.ContentSequence; + // } + ); + + var CodeContentItem = /*#__PURE__*/function (_ContentItem) { + _inherits(CodeContentItem, _ContentItem); + + var _super2 = _createSuper(CodeContentItem); + + function CodeContentItem(options) { + var _this; + + _classCallCheck(this, CodeContentItem); + + _this = _super2.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.CODE + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for CodeContentItem."); + } + + if (!(options.value || options.value.constructor === CodedConcept)) { + throw new Error("Option 'value' must have type CodedConcept."); + } + + _this.ConceptCodeSequence = [options.value]; + return _this; + } + + return _createClass(CodeContentItem); + }(ContentItem); + + var TextContentItem = /*#__PURE__*/function (_ContentItem2) { + _inherits(TextContentItem, _ContentItem2); + + var _super3 = _createSuper(TextContentItem); + + function TextContentItem(options) { + var _this2; + + _classCallCheck(this, TextContentItem); + + _this2 = _super3.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.TEXT + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for TextContentItem."); + } + + if (!(typeof options.value === "string" || options.value instanceof String)) { + throw new Error("Option 'value' must have type String."); + } + + _this2.TextValue = options.value; + return _this2; + } + + return _createClass(TextContentItem); + }(ContentItem); + + var PNameContentItem = /*#__PURE__*/function (_ContentItem3) { + _inherits(PNameContentItem, _ContentItem3); + + var _super4 = _createSuper(PNameContentItem); + + function PNameContentItem(options) { + var _this3; + + _classCallCheck(this, PNameContentItem); + + _this3 = _super4.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.PNAME + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for PNameContentItem."); + } + + if (!(typeof options.value === "string" || options.value instanceof String)) { + throw new Error("Option 'value' must have type String."); + } + + _this3.PersonName = options.value; + return _this3; + } + + return _createClass(PNameContentItem); + }(ContentItem); + + var TimeContentItem = /*#__PURE__*/function (_ContentItem4) { + _inherits(TimeContentItem, _ContentItem4); + + var _super5 = _createSuper(TimeContentItem); + + function TimeContentItem(options) { + var _this4; + + _classCallCheck(this, TimeContentItem); + + _this4 = _super5.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.TIME + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for TimeContentItem."); + } + + if (!(_typeof(options.value) === "object" || options.value instanceof Date)) { + throw new Error("Option 'value' must have type Date."); + } + + _this4.Time = TM(options.value); + return _this4; + } + + return _createClass(TimeContentItem); + }(ContentItem); + + var DateContentItem = /*#__PURE__*/function (_ContentItem5) { + _inherits(DateContentItem, _ContentItem5); + + var _super6 = _createSuper(DateContentItem); + + function DateContentItem(options) { + var _this5; + + _classCallCheck(this, DateContentItem); + + _this5 = _super6.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.DATE + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for DateContentItem."); + } + + if (!(_typeof(options.value) === "object" || options.value instanceof Date)) { + throw new Error("Option 'value' must have type Date."); + } + + _this5.Date = DA(options.value); + return _this5; + } + + return _createClass(DateContentItem); + }(ContentItem); + + var DateTimeContentItem = /*#__PURE__*/function (_ContentItem6) { + _inherits(DateTimeContentItem, _ContentItem6); + + var _super7 = _createSuper(DateTimeContentItem); + + function DateTimeContentItem(options) { + var _this6; + + _classCallCheck(this, DateTimeContentItem); + + _this6 = _super7.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.DATETIME + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for DateTimeContentItem."); + } + + if (!(_typeof(options.value) === "object" || options.value instanceof Date)) { + throw new Error("Option 'value' must have type Date."); + } + + _this6.DateTime = DT(otions.value); + return _this6; + } + + return _createClass(DateTimeContentItem); + }(ContentItem); + + var UIDRefContentItem = /*#__PURE__*/function (_ContentItem7) { + _inherits(UIDRefContentItem, _ContentItem7); + + var _super8 = _createSuper(UIDRefContentItem); + + function UIDRefContentItem(options) { + var _this7; + + _classCallCheck(this, UIDRefContentItem); + + _this7 = _super8.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.UIDREF + }); + + if (options.value === undefined) { + throw new Error("Option 'value' is required for UIDRefContentItem."); + } + + if (!(typeof options.value === "string" || options.value instanceof String)) { + throw new Error("Option 'value' must have type String."); + } + + _this7.UID = options.value; + return _this7; + } + + return _createClass(UIDRefContentItem); + }(ContentItem); + + var NumContentItem = /*#__PURE__*/function (_ContentItem8) { + _inherits(NumContentItem, _ContentItem8); + + var _super9 = _createSuper(NumContentItem); + + function NumContentItem(options) { + var _this8; + + _classCallCheck(this, NumContentItem); + + _this8 = _super9.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.NUM + }); + + if (options.value !== undefined) { + if (!(typeof options.value === "number" || options.value instanceof Number)) { + throw new Error("Option 'value' must have type Number."); + } + + if (options.unit === undefined) { + throw new Error("Option 'unit' is required for NumContentItem with 'value'."); + } + + if (options.unit.constructor !== CodedConcept) { + throw new Error("Option 'unit' must have type CodedConcept."); + } + + var item = {}; + item.NumericValue = options.value; + + if (isFloat(options.value)) { + item.FloatingPointValue = options.value; + } + + item.MeasurementUnitsCodeSequence = [options.unit]; + _this8.MeasuredValueSequence = [item]; + } else if (options.qualifier !== undefined) { + if (!(options.qualifier || options.qualifier.constructor === CodedConcept)) { + throw new Error("Option 'qualifier' must have type CodedConcept."); + } + + _this8.NumericValueQualifierCodeSequence = [options.qualifier]; + } else { + throw new Error("Either option 'value' or 'qualifier' is required for NumContentItem."); + } + + return _this8; + } + + return _createClass(NumContentItem); + }(ContentItem); + + var ContainerContentItem = /*#__PURE__*/function (_ContentItem9) { + _inherits(ContainerContentItem, _ContentItem9); + + var _super10 = _createSuper(ContainerContentItem); + + function ContainerContentItem(options) { + var _this9; + + _classCallCheck(this, ContainerContentItem); + + _this9 = _super10.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.CONTAINER + }); + + if (options.isContentContinuous !== undefined) { + _this9.ContinuityOfContent = "CONTINUOUS"; + } else { + _this9.ContinuityOfContent = "SEPARATE"; + } + + if (options.templateID !== undefined) { + if (!(typeof options.templateID === "string" || options.templateID instanceof String)) { + throw new Error("Option 'templateID' must have type String."); + } + + var item = {}; + item.MappingResource = "DCMR"; + item.TemplateIdentifier = options.templateID; + _this9.ContentTemplateSequence = [item]; + } + + return _this9; + } + + return _createClass(ContainerContentItem); + }(ContentItem); + + var CompositeContentItem = /*#__PURE__*/function (_ContentItem10) { + _inherits(CompositeContentItem, _ContentItem10); + + var _super11 = _createSuper(CompositeContentItem); + + function CompositeContentItem(options) { + var _this10; + + _classCallCheck(this, CompositeContentItem); + + _this10 = _super11.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.COMPOSITE + }); + + if (options.referencedSOPClassUID === undefined) { + throw new Error("Option 'referencedSOPClassUID' is required for CompositeContentItem."); + } + + if (options.referencedSOPInstanceUID === undefined) { + throw new Error("Option 'referencedSOPInstanceUID' is required for CompositeContentItem."); + } + + if (!(typeof options.referencedSOPClassUID === "string" || options.referencedSOPClassUID instanceof String)) { + throw new Error("Option 'referencedSOPClassUID' must have type String."); + } + + if (!(typeof options.referencedSOPInstanceUID === "string" || options.referencedSOPInstanceUID instanceof String)) { + throw new Error("Option 'referencedSOPInstanceUID' must have type String."); + } + + var item = {}; + item.ReferencedSOPClassUID = options.referencedSOPClassUID; + item.ReferencedSOPInstanceUID = options.referencedSOPInstanceUID; + _this10.ReferenceSOPSequence = [item]; + return _this10; + } + + return _createClass(CompositeContentItem); + }(ContentItem); + + var ImageContentItem = /*#__PURE__*/function (_ContentItem11) { + _inherits(ImageContentItem, _ContentItem11); + + var _super12 = _createSuper(ImageContentItem); + + function ImageContentItem(options) { + var _this11; + + _classCallCheck(this, ImageContentItem); + + _this11 = _super12.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.IMAGE + }); + + if (options.referencedSOPClassUID === undefined) { + throw new Error("Option 'referencedSOPClassUID' is required for ImageContentItem."); + } + + if (options.referencedSOPInstanceUID === undefined) { + throw new Error("Option 'referencedSOPInstanceUID' is required for ImageContentItem."); + } + + if (!(typeof options.referencedSOPClassUID === "string" || options.referencedSOPClassUID instanceof String)) { + throw new Error("Option 'referencedSOPClassUID' must have type String."); + } + + if (!(typeof options.referencedSOPInstanceUID === "string" || options.referencedSOPInstanceUID instanceof String)) { + throw new Error("Option 'referencedSOPInstanceUID' must have type String."); + } + + var item = {}; + item.ReferencedSOPClassUID = options.referencedSOPClassUID; + item.ReferencedSOPInstanceUID = options.referencedSOPInstanceUID; + + if (options.referencedFrameNumbers !== undefined) { + if (!(_typeof(options.referencedFrameNumbers) === "object" || options.referencedFrameNumbers instanceof Array)) { + throw new Error("Option 'referencedFrameNumbers' must have type Array."); + } // FIXME: value multiplicity + + + item.ReferencedFrameNumber = options.referencedFrameNumbers; + } + + if (options.referencedFrameSegmentNumber !== undefined) { + if (!(_typeof(options.referencedSegmentNumbers) === "object" || options.referencedSegmentNumbers instanceof Array)) { + throw new Error("Option 'referencedSegmentNumbers' must have type Array."); + } // FIXME: value multiplicity + + + item.ReferencedSegmentNumber = options.referencedSegmentNumbers; + } + + _this11.ReferencedSOPSequence = [item]; + return _this11; + } + + return _createClass(ImageContentItem); + }(ContentItem); + + var ScoordContentItem = /*#__PURE__*/function (_ContentItem12) { + _inherits(ScoordContentItem, _ContentItem12); + + var _super13 = _createSuper(ScoordContentItem); + + function ScoordContentItem(options) { + var _this12; + + _classCallCheck(this, ScoordContentItem); + + _this12 = _super13.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.SCOORD + }); + + if (options.graphicType === undefined) { + throw new Error("Option 'graphicType' is required for ScoordContentItem."); + } + + if (!(typeof options.graphicType === "string" || options.graphicType instanceof String)) { + throw new Error("Option 'graphicType' of ScoordContentItem must have type String."); + } + + if (options.graphicData === undefined) { + throw new Error("Option 'graphicData' is required for ScoordContentItem."); + } + + if (!(_typeof(options.graphicData) === "object" || options.graphicData instanceof Array)) { + throw new Error("Option 'graphicData' of ScoordContentItem must have type Array."); + } + + if (Object.values(GraphicTypes).indexOf(options.graphicType) === -1) { + throw new Error("Invalid graphic type '".concat(options.graphicType, "'.")); + } + + if (options.graphicData[0] instanceof Array) { + options.graphicData = [].concat.apply([], options.graphicData); + } + + _this12.GraphicData = options.graphicData; + options.pixelOriginInterpretation = options.pixelOriginInterpretation || PixelOriginInterpretations.VOLUME; + + if (!(typeof options.pixelOriginInterpretation === "string" || options.pixelOriginInterpretation instanceof String)) { + throw new Error("Option 'pixelOriginInterpretation' must have type String."); + } + + if (Object.values(PixelOriginInterpretations).indexOf(options.pixelOriginInterpretation) === -1) { + throw new Error("Invalid pixel origin interpretation '".concat(options.pixelOriginInterpretation, "'.")); + } + + if (options.fiducialUID !== undefined) { + if (!(typeof options.fiducialUID === "string" || options.fiducialUID instanceof String)) { + throw new Error("Option 'fiducialUID' must have type String."); + } + + _this12.FiducialUID = options.fiducialUID; + } + + return _this12; + } + + return _createClass(ScoordContentItem); + }(ContentItem); + + var Scoord3DContentItem = /*#__PURE__*/function (_ContentItem13) { + _inherits(Scoord3DContentItem, _ContentItem13); + + var _super14 = _createSuper(Scoord3DContentItem); + + function Scoord3DContentItem(options) { + var _this13; + + _classCallCheck(this, Scoord3DContentItem); + + _this13 = _super14.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.SCOORD3D + }); + + if (options.graphicType === undefined) { + throw new Error("Option 'graphicType' is required for Scoord3DContentItem."); + } + + if (!(typeof options.graphicType === "string" || options.graphicType instanceof String)) { + throw new Error("Option 'graphicType' must have type String."); + } + + if (options.graphicData === undefined) { + throw new Error("Option 'graphicData' is required for Scoord3DContentItem."); + } + + if (!(_typeof(options.graphicData) === "object" || options.graphicData instanceof Array)) { + throw new Error("Option 'graphicData' must have type Array."); + } + + if (Object.values(GraphicTypes3D).indexOf(options.graphicType) === -1) { + throw new Error("Invalid graphic type '".concat(options.graphicType, "'.")); + } + + if (options.graphicData[0] instanceof Array) { + options.graphicData = [].concat.apply([], options.graphicData); + } + + _this13.GraphicType = options.graphicType; + _this13.GraphicData = options.graphicData; + + if (options.frameOfReferenceUID === undefined) { + throw new Error("Option 'frameOfReferenceUID' is required for Scoord3DContentItem."); + } + + if (!(typeof options.frameOfReferenceUID === "string" || options.frameOfReferenceUID instanceof String)) { + throw new Error("Option 'frameOfReferenceUID' must have type String."); + } + + _this13.ReferencedFrameOfReferenceUID = options.frameOfReferenceUID; + + if ("fiducialUID" in options) { + if (!(typeof options.fiducialUID === "string" || options.fiducialUID instanceof String)) { + throw new Error("Option 'fiducialUID' must have type String."); + } + + _this13.FiducialUID = fiducialUID; + } + + return _this13; + } + + return _createClass(Scoord3DContentItem); + }(ContentItem); + + var TcoordContentItem = /*#__PURE__*/function (_ContentItem14) { + _inherits(TcoordContentItem, _ContentItem14); + + var _super15 = _createSuper(TcoordContentItem); + + function TcoordContentItem(options) { + var _this14; + + _classCallCheck(this, TcoordContentItem); + + _this14 = _super15.call(this, { + name: options.name, + relationshipType: options.relationshipType, + valueType: ValueTypes.TCOORD + }); + + if (options.temporalRangeType === undefined) { + throw new Error("Option 'temporalRangeType' is required for TcoordContentItem."); + } + + if (Object.values(TemporalRangeTypes).indexOf(options.temporalRangeType) === -1) { + throw new Error("Invalid temporal range type '".concat(options.temporalRangeType, "'.")); + } + + if (options.referencedSamplePositions === undefined) { + if (!(_typeof(options.referencedSamplePositions) === "object" || options.referencedSamplePositions instanceof Array)) { + throw new Error("Option 'referencedSamplePositions' must have type Array."); + } // TODO: ensure values are integers + + + _this14.ReferencedSamplePositions = options.referencedSamplePositions; + } else if (options.referencedTimeOffsets === undefined) { + if (!(_typeof(options.referencedTimeOffsets) === "object" || options.referencedTimeOffsets instanceof Array)) { + throw new Error("Option 'referencedTimeOffsets' must have type Array."); + } // TODO: ensure values are floats + + + _this14.ReferencedTimeOffsets = options.referencedTimeOffsets; + } else if (options.referencedDateTime === undefined) { + if (!(_typeof(options.referencedDateTime) === "object" || options.referencedDateTime instanceof Array)) { + throw new Error("Option 'referencedDateTime' must have type Array."); + } + + _this14.ReferencedDateTime = options.referencedDateTime; + } else { + throw new Error("One of the following options is required for TcoordContentItem: " + "'referencedSamplePositions', 'referencedTimeOffsets', or " + "'referencedDateTime'."); + } + + return _this14; + } + + return _createClass(TcoordContentItem); + }(ContentItem); + + var valueTypes = /*#__PURE__*/Object.freeze({ + __proto__: null, + CodeContentItem: CodeContentItem, + CompositeContentItem: CompositeContentItem, + ContainerContentItem: ContainerContentItem, + ContentSequence: ContentSequence$1, + DateContentItem: DateContentItem, + DateTimeContentItem: DateTimeContentItem, + GraphicTypes: GraphicTypes, + GraphicTypes3D: GraphicTypes3D, + ImageContentItem: ImageContentItem, + NumContentItem: NumContentItem, + PNameContentItem: PNameContentItem, + PixelOriginInterpretations: PixelOriginInterpretations, + RelationshipTypes: RelationshipTypes, + Scoord3DContentItem: Scoord3DContentItem, + ScoordContentItem: ScoordContentItem, + TcoordContentItem: TcoordContentItem, + TemporalRangeTypes: TemporalRangeTypes, + TextContentItem: TextContentItem, + TimeContentItem: TimeContentItem, + UIDRefContentItem: UIDRefContentItem, + ValueTypes: ValueTypes + }); + + var LongitudinalTemporalOffsetFromEvent = /*#__PURE__*/function (_NumContentItem) { + _inherits(LongitudinalTemporalOffsetFromEvent, _NumContentItem); + + var _super = _createSuper(LongitudinalTemporalOffsetFromEvent); + + function LongitudinalTemporalOffsetFromEvent(options) { + var _this; + + _classCallCheck(this, LongitudinalTemporalOffsetFromEvent); + + _this = _super.call(this, { + name: new CodedConcept({ + value: "128740", + meaning: "Longitudinal Temporal Offset from Event", + schemeDesignator: "DCM" + }), + value: options.value, + unit: options.unit, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + _this.ContentSequence = new ContentSequence$1(); + var item = new CodeContentItem({ + name: new CodedConcept({ + value: "128741", + meaning: "Longitudinal Temporal Event Type", + schemeDesignator: "DCM" + }), + value: options.eventType, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this.ContentSequence.push(item); + + return _this; + } + + return _createClass(LongitudinalTemporalOffsetFromEvent); + }(NumContentItem); + + var SourceImageForRegion = /*#__PURE__*/function (_ImageContentItem) { + _inherits(SourceImageForRegion, _ImageContentItem); + + var _super2 = _createSuper(SourceImageForRegion); + + function SourceImageForRegion(options) { + _classCallCheck(this, SourceImageForRegion); + + return _super2.call(this, { + name: new CodedConcept({ + value: "121324", + meaning: "Source Image", + schemeDesignator: "DCM" + }), + referencedSOPClassUID: options.referencedSOPClassUID, + referencedSOPInstanceUID: options.referencedSOPInstanceUID, + referencedFrameNumbers: options.referencedFrameNumbers, + relationshipType: RelationshipTypes.SELECTED_FROM + }); + } + + return _createClass(SourceImageForRegion); + }(ImageContentItem); + + var SourceImageForSegmentation = /*#__PURE__*/function (_ImageContentItem2) { + _inherits(SourceImageForSegmentation, _ImageContentItem2); + + var _super3 = _createSuper(SourceImageForSegmentation); + + function SourceImageForSegmentation(options) { + _classCallCheck(this, SourceImageForSegmentation); + + return _super3.call(this, { + name: new CodedConcept({ + value: "121233", + meaning: "Source Image for Segmentation", + schemeDesignator: "DCM" + }), + referencedSOPClassUID: options.referencedSOPClassUID, + referencedSOPInstanceUID: options.referencedSOPInstanceUID, + referencedFrameNumbers: options.referencedFrameNumbers, + relationshipType: RelationshipTypes.SELECTED_FROM + }); + } + + return _createClass(SourceImageForSegmentation); + }(ImageContentItem); + + var SourceSeriesForSegmentation = /*#__PURE__*/function (_UIDRefContentItem) { + _inherits(SourceSeriesForSegmentation, _UIDRefContentItem); + + var _super4 = _createSuper(SourceSeriesForSegmentation); + + function SourceSeriesForSegmentation(options) { + _classCallCheck(this, SourceSeriesForSegmentation); + + return _super4.call(this, { + name: new CodedConcept({ + value: "121232", + meaning: "Source Series for Segmentation", + schemeDesignator: "DCM" + }), + value: options.referencedSeriesInstanceUID, + relationshipType: RelationshipTypes.CONTAINS + }); + } + + return _createClass(SourceSeriesForSegmentation); + }(UIDRefContentItem); + + var ImageRegion = /*#__PURE__*/function (_ScoordContentItem) { + _inherits(ImageRegion, _ScoordContentItem); + + var _super5 = _createSuper(ImageRegion); + + function ImageRegion(options) { + var _this2; + + _classCallCheck(this, ImageRegion); + + _this2 = _super5.call(this, { + name: new CodedConcept({ + value: "111030", + meaning: "Image Region", + schemeDesignator: "DCM" + }), + graphicType: options.graphicType, + graphicData: options.graphicData, + pixelOriginInterpretation: options.pixelOriginInterpretation, + relationshipType: RelationshipTypes.CONTAINS + }); + + if (options.graphicType === GraphicTypes.MULTIPOINT) { + throw new Error("Graphic type 'MULTIPOINT' is not valid for region."); + } + + if (options.sourceImage === undefined) { + throw Error("Option 'sourceImage' is required for ImageRegion."); + } + + if (!(options.sourceImage || options.sourceImage.constructor === SourceImageForRegion)) { + throw new Error("Option 'sourceImage' of ImageRegion must have type " + "SourceImageForRegion."); + } + + _this2.ContentSequence = new ContentSequence$1(); + + _this2.ContentSequence.push(options.sourceImage); + + return _this2; + } + + return _createClass(ImageRegion); + }(ScoordContentItem); + + var ImageRegion3D = /*#__PURE__*/function (_Scoord3DContentItem) { + _inherits(ImageRegion3D, _Scoord3DContentItem); + + var _super6 = _createSuper(ImageRegion3D); + + function ImageRegion3D(options) { + var _this3; + + _classCallCheck(this, ImageRegion3D); + + _this3 = _super6.call(this, { + name: new CodedConcept({ + value: "111030", + meaning: "Image Region", + schemeDesignator: "DCM" + }), + graphicType: options.graphicType, + graphicData: options.graphicData, + frameOfReferenceUID: options.frameOfReferenceUID, + relationshipType: RelationshipTypes.CONTAINS + }); + + if (options.graphicType === GraphicTypes3D.MULTIPOINT) { + throw new Error("Graphic type 'MULTIPOINT' is not valid for region."); + } + + if (options.graphicType === GraphicTypes3D.ELLIPSOID) { + throw new Error("Graphic type 'ELLIPSOID' is not valid for region."); + } + + return _this3; + } + + return _createClass(ImageRegion3D); + }(Scoord3DContentItem); + + var VolumeSurface = /*#__PURE__*/function (_Scoord3DContentItem2) { + _inherits(VolumeSurface, _Scoord3DContentItem2); + + var _super7 = _createSuper(VolumeSurface); + + function VolumeSurface(options) { + var _this4; + + _classCallCheck(this, VolumeSurface); + + _this4 = _super7.call(this, { + name: new CodedConcept({ + value: "121231", + meaning: "Volume Surface", + schemeDesignator: "DCM" + }), + graphicType: options.graphicType, + graphicData: options.graphicData, + frameOfFeferenceUID: options.frameOfFeferenceUID, + relationshipType: RelationshipTypes.CONTAINS + }); + + if (options.graphicType !== GraphicTypes3D.ELLIPSOID) { + throw new Error("Graphic type for volume surface must be 'ELLIPSOID'."); + } + + _this4.ContentSequence = new ContentSequence$1(); + + if (options.sourceImages) { + options.sourceImages.forEach(function (image) { + if (!(image || image.constructor === SourceImageForRegion)) { + throw new Error("Items of option 'sourceImages' of VolumeSurface " + "must have type SourceImageForRegion."); + } + + _this4.ContentSequence.push(image); + }); + } else if (options.sourceSeries) { + if (!(options.sourceSeries || options.sourceSeries.constructor === SourceSeriesForRegion)) { + throw new Error("Option 'sourceSeries' of VolumeSurface " + "must have type SourceSeriesForRegion."); + } + + _this4.ContentSequence.push(options.sourceSeries); + } else { + throw new Error("One of the following two options must be provided: " + "'sourceImage' or 'sourceSeries'."); + } + + return _this4; + } + + return _createClass(VolumeSurface); + }(Scoord3DContentItem); + + var ReferencedRealWorldValueMap = /*#__PURE__*/function (_CompositeContentItem) { + _inherits(ReferencedRealWorldValueMap, _CompositeContentItem); + + var _super8 = _createSuper(ReferencedRealWorldValueMap); + + function ReferencedRealWorldValueMap(options) { + _classCallCheck(this, ReferencedRealWorldValueMap); + + return _super8.call(this, { + name: new CodedConcept({ + value: "126100", + meaning: "Real World Value Map used for measurement", + schemeDesignator: "DCM" + }), + referencedSOPClassUID: option.referencedSOPClassUID, + referencedSOPInstanceUID: options.referencedSOPInstanceUID, + relationshipType: RelationshipTypes.CONTAINS + }); + } + + return _createClass(ReferencedRealWorldValueMap); + }(CompositeContentItem); + + var FindingSite = /*#__PURE__*/function (_CodeContentItem) { + _inherits(FindingSite, _CodeContentItem); + + var _super9 = _createSuper(FindingSite); + + function FindingSite(options) { + var _this5; + + _classCallCheck(this, FindingSite); + + _this5 = _super9.call(this, { + name: new CodedConcept({ + value: "363698007", + meaning: "Finding Site", + schemeDesignator: "SCT" + }), + value: options.anatomicLocation, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + _this5.ContentSequence = new ContentSequence$1(); + + if (options.laterality) { + var item = new CodeContentItem({ + name: new CodedConcept({ + value: "272741003", + meaning: "Laterality", + schemeDesignator: "SCT" + }), + value: options.laterality, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this5.ContentSequence.push(item); + } + + if (options.topographicalModifier) { + var _item = new CodeContentItem({ + name: new CodedConcept({ + value: "106233006", + meaning: "Topographical Modifier", + schemeDesignator: "SCT" + }), + value: options.topographicalModifier, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this5.ContentSequence.push(_item); + } + + return _this5; + } + + return _createClass(FindingSite); + }(CodeContentItem); + + var ReferencedSegmentationFrame = /*#__PURE__*/function (_ContentSequence) { + _inherits(ReferencedSegmentationFrame, _ContentSequence); + + var _super10 = _createSuper(ReferencedSegmentationFrame); + + function ReferencedSegmentationFrame(options) { + var _this6; + + _classCallCheck(this, ReferencedSegmentationFrame); + + if (options.sopClassUID === undefined) { + throw new Error("Option 'sopClassUID' is required for ReferencedSegmentationFrame."); + } + + if (options.sopInstanceUID === undefined) { + throw new Error("Option 'sopInstanceUID' is required for ReferencedSegmentationFrame."); + } + + if (options.frameNumber === undefined) { + throw new Error("Option 'frameNumber' is required for ReferencedSegmentationFrame."); + } + + if (options.segmentNumber === undefined) { + throw new Error("Option 'segmentNumber' is required for ReferencedSegmentationFrame."); + } + + if (options.sourceImage === undefined) { + throw new Error("Option 'sourceImage' is required for ReferencedSegmentationFrame."); + } + + _this6 = _super10.call(this); + var segmentationItem = ImageContentItem({ + name: new CodedConcept({ + value: "121214", + meaning: "Referenced Segmentation Frame", + schemeDesignator: "DCM" + }), + referencedSOPClassUid: options.sopClassUid, + referencedSOPInstanceUid: options.sopInstanceUid, + referencedFrameNumber: options.frameNumber, + referencedSegmentNumber: options.segmentNumber + }); + + _this6.push(segmentationItem); + + if (options.sourceImage.constructor !== SourceImageForSegmentation) { + throw new Error("Option 'sourceImage' must have type SourceImageForSegmentation."); + } + + _this6.push(sourceImage); + + return _this6; + } + + return _createClass(ReferencedSegmentationFrame); + }(ContentSequence$1); + + var ReferencedSegmentation = /*#__PURE__*/function (_ContentSequence2) { + _inherits(ReferencedSegmentation, _ContentSequence2); + + var _super11 = _createSuper(ReferencedSegmentation); + + function ReferencedSegmentation(options) { + var _this7; + + _classCallCheck(this, ReferencedSegmentation); + + if (options.sopClassUID === undefined) { + throw new Error("Option 'sopClassUID' is required for ReferencedSegmentation."); + } + + if (options.sopInstanceUID === undefined) { + throw new Error("Option 'sopInstanceUID' is required for ReferencedSegmentation."); + } + + if (options.frameNumbers === undefined) { + throw new Error("Option 'frameNumbers' is required for ReferencedSegmentation."); + } + + if (options.segmentNumber === undefined) { + throw new Error("Option 'segmentNumber' is required for ReferencedSegmentation."); + } + + _this7 = _super11.call(this); + var segmentationItem = new ImageContentItem({ + name: new CodedConcept({ + value: "121191", + meaning: "Referenced Segment", + schemeDesignator: "DCM" + }), + referencedSOPClassUid: options.sopClassUid, + referencedSOPInstanceUid: options.sopInstanceUid, + referencedFrameNumber: options.frameNumbers, + referencedSegmentNumber: options.segmentNumber + }); + + _this7.push(segmentationItem); + + if (options.sourceImages !== undefined) { + options.sourceImages.forEach(function (image) { + if (!image || image.constructor !== SourceImageForSegmentation) { + throw new Error("Items of option 'sourceImages' must have type " + "SourceImageForSegmentation."); + } + + _this7.push(image); + }); + } else if (options.sourceSeries !== undefined) { + if (options.sourceSeries.constructor !== SourceSeriesForSegmentation) { + throw new Error("Option 'sourceSeries' must have type SourceSeriesForSegmentation."); + } + + _this7.push(sourceSeries); + } else { + throw new Error("One of the following two options must be provided: " + "'sourceImages' or 'sourceSeries'."); + } + + return _this7; + } + + return _createClass(ReferencedSegmentation); + }(ContentSequence$1); + + var contentItems = /*#__PURE__*/Object.freeze({ + __proto__: null, + FindingSite: FindingSite, + ImageRegion: ImageRegion, + ImageRegion3D: ImageRegion3D, + LongitudinalTemporalOffsetFromEvent: LongitudinalTemporalOffsetFromEvent, + ReferencedRealWorldValueMap: ReferencedRealWorldValueMap, + ReferencedSegmentation: ReferencedSegmentation, + ReferencedSegmentationFrame: ReferencedSegmentationFrame, + SourceImageForRegion: SourceImageForRegion, + SourceImageForSegmentation: SourceImageForSegmentation, + SourceSeriesForSegmentation: SourceSeriesForSegmentation, + VolumeSurface: VolumeSurface + }); + + var Template = /*#__PURE__*/function (_ContentSequence) { + _inherits(Template, _ContentSequence); + + var _super = _createSuper(Template); + + function Template() { + _classCallCheck(this, Template); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _super.call.apply(_super, [this].concat(args)); + } + + return _createClass(Template); + }(ContentSequence$1); + + var Measurement = /*#__PURE__*/function (_Template) { + _inherits(Measurement, _Template); + + var _super2 = _createSuper(Measurement); + + function Measurement(options) { + var _valueItem$ContentSeq; + + var _this; + + _classCallCheck(this, Measurement); + + _this = _super2.call(this); + var valueItem = new NumContentItem({ + name: options.name, + value: options.value, + unit: options.unit, + qualifier: options.qualifier, + relationshipType: RelationshipTypes.CONTAINS + }); + valueItem.ContentSequence = new ContentSequence$1(); + + if (options.trackingIdentifier === undefined) { + throw new Error("Option 'trackingIdentifier' is required for Measurement."); + } + + if (options.trackingIdentifier.constructor === TrackingIdentifier) { + throw new Error("Option 'trackingIdentifier' must have type TrackingIdentifier."); + } + + (_valueItem$ContentSeq = valueItem.ContentSequence).push.apply(_valueItem$ContentSeq, _toConsumableArray(options.trackingIdentifier)); + + if (options.method !== undefined) { + var methodItem = new CodeContentItem({ + name: new CodedConcept({ + value: "370129005", + meaning: "Measurement Method", + schemeDesignator: "SCT" + }), + value: options.method, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + valueItem.ContentSequence.push(methodItem); + } + + if (options.derivation !== undefined) { + var derivationItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121401", + meaning: "Derivation", + schemeDesignator: "DCM" + }), + value: options.derivation, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + valueItem.ContentSequence.push(derivationItem); + } + + if (options.findingSites !== undefined) { + if (!(_typeof(options.findingSites) === "object" || options.findingSites instanceof Array)) { + throw new Error("Option 'findingSites' must have type Array."); + } + + options.findingSites.forEach(function (site) { + if (!site || site.constructor !== FindingSite) { + throw new Error("Items of option 'findingSites' must have type FindingSite."); + } + + valueItem.ContentSequence.push(site); + }); + } + + if (options.properties !== undefined) { + var _valueItem$ContentSeq2; + + if (options.properties.constructor !== MeasurementProperties) { + throw new Error("Option 'properties' must have type MeasurementProperties."); + } + + (_valueItem$ContentSeq2 = valueItem.ContentSequence).push.apply(_valueItem$ContentSeq2, _toConsumableArray(options.properties)); + } + + if (options.referencedRegions !== undefined) { + if (!(_typeof(options.referencedRegions) === "object" || options.referencedRegions instanceof Array)) { + throw new Error("Option 'referencedRegions' must have type Array."); + } + + options.referencedRegions.forEach(function (region) { + if (!region || region.constructor !== ImageRegion && region.constructor !== ImageRegion3D) { + throw new Error("Items of option 'referencedRegion' must have type " + "ImageRegion or ImageRegion3D."); + } + + valueItem.ContentSequence.push(region); + }); + } else if (options.referencedVolume !== undefined) { + if (options.referencedVolume.constructor !== VolumeSurface) { + throw new Error("Option 'referencedVolume' must have type VolumeSurface."); + } + + valueItem.ContentSequence.push(options.referencedVolume); + } else if (options.referencedSegmentation !== undefined) { + if (options.referencedSegmentation.constructor !== ReferencedSegmentation && options.referencedSegmentation.constructor !== ReferencedSegmentationFrame) { + throw new Error("Option 'referencedSegmentation' must have type " + "ReferencedSegmentation or ReferencedSegmentationFrame."); + } + + valueItem.ContentSequence.push(options.referencedSegmentation); + } + + if (options.referencedRealWorldValueMap !== undefined) { + if (options.referencedRealWorldValueMap.constructor !== ReferencedRealWorldValueMap) { + throw new Error("Option 'referencedRealWorldValueMap' must have type " + "ReferencedRealWorldValueMap."); + } + + valueItem.ContentSequence.push(options.referencedRealWorldValueMap); + } + + if (options.algorithmId !== undefined) { + var _valueItem$ContentSeq3; + + if (options.algorithmId.constructor !== AlgorithmIdentification) { + throw new Error("Option 'algorithmId' must have type AlgorithmIdentification."); + } + + (_valueItem$ContentSeq3 = valueItem.ContentSequence).push.apply(_valueItem$ContentSeq3, _toConsumableArray(options.algorithmId)); + } + + _this.push(valueItem); + + return _this; + } + + return _createClass(Measurement); + }(Template); + + var MeasurementProperties = /*#__PURE__*/function (_Template2) { + _inherits(MeasurementProperties, _Template2); + + var _super3 = _createSuper(MeasurementProperties); + + function MeasurementProperties(options) { + var _this2; + + _classCallCheck(this, MeasurementProperties); + + _this2 = _super3.call(this); + + if (options.normality !== undefined) { + var normalityItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121402", + schemeDesignator: "DCM", + meaning: "Normality" + }), + value: options.normality, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this2.push(normalityItem); + } + + if (options.measurementStatisticalProperties !== undefined) { + var _this3; + + if (options.measurementStatisticalProperties.constructor !== MeasurementStatisticalProperties) { + throw new Error("Option 'measurmentStatisticalProperties' must have type " + "MeasurementStatisticalProperties."); + } + + (_this3 = _this2).push.apply(_this3, _toConsumableArray(measurementStatisticalProperties)); + } + + if (options.normalRangeProperties !== undefined) { + var _this4; + + if (options.normalRangeProperties.constructor !== NormalRangeProperties) { + throw new Error("Option 'normalRangeProperties' must have type NormalRangeProperties."); + } + + (_this4 = _this2).push.apply(_this4, _toConsumableArray(normalRangeProperties)); + } + + if (options.levelOfSignificance !== undefined) { + var levelOfSignificanceItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121403", + schemeDesignator: "DCM", + meaning: "Level of Significance" + }), + value: options.levelOfSignificance, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this2.push(levelOfSignificanceItem); + } + + if (options.selectionStatus !== undefined) { + var selectionStatusItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121404", + schemeDesignator: "DCM", + meaning: "Selection Status" + }), + value: options.selectionStatus, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this2.push(selectionStatusItem); + } + + if (options.upperMeasurementUncertainty !== undefined) { + var upperMeasurementUncertaintyItem = new CodeContentItem({ + name: new CodedConcept({ + value: "R-00364", + schemeDesignator: "SRT", + meaning: "Range of Upper Measurement Uncertainty" + }), + value: options.upperMeasurementUncertainty, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this2.push(upperMeasurementUncertaintyItem); + } + + if (options.lowerMeasurementUncertainty !== undefined) { + var lowerMeasurementUncertaintyItem = new CodeContentItem({ + name: new CodedConcept({ + value: "R-00362", + schemeDesignator: "SRT", + meaning: "Range of Lower Measurement Uncertainty" + }), + value: options.lowerMeasurementUncertainty, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this2.push(lowerMeasurementUncertaintyItem); + } + + return _this2; + } + + return _createClass(MeasurementProperties); + }(Template); + + var MeasurementStatisticalProperties = /*#__PURE__*/function (_Template3) { + _inherits(MeasurementStatisticalProperties, _Template3); + + var _super4 = _createSuper(MeasurementStatisticalProperties); + + function MeasurementStatisticalProperties(options) { + var _this5; + + _classCallCheck(this, MeasurementStatisticalProperties); + + _this5 = _super4.call(this); + + if (options.values === undefined) { + throw new Error("Option 'values' is required for MeasurementStatisticalProperties."); + } + + if (!(_typeof(options.values) === "object" || options.values instanceof Array)) { + throw new Error("Option 'values' must have type Array."); + } + + options.values.forEach(function (value) { + if (!options.concept || options.concept.constructor !== NumContentItem) { + throw new Error("Items of option 'values' must have type NumContentItem."); + } + + _this5.push(value); + }); + + if (options.description !== undefined) { + new TextContentItem({ + name: new CodedConcept({ + value: "121405", + schemeDesignator: "DCM", + meaning: "Population Description" + }), + value: options.authority, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this5.push(authorityItem); + } + + if (options.authority !== undefined) { + var _authorityItem = new TextContentItem({ + name: new CodedConcept({ + value: "121406", + schemeDesignator: "DCM", + meaning: "Population Authority" + }), + value: options.authority, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this5.push(_authorityItem); + } + + return _this5; + } + + return _createClass(MeasurementStatisticalProperties); + }(Template); + + var NormalRangeProperties = /*#__PURE__*/function (_Template4) { + _inherits(NormalRangeProperties, _Template4); + + var _super5 = _createSuper(NormalRangeProperties); + + function NormalRangeProperties(options) { + var _this6; + + _classCallCheck(this, NormalRangeProperties); + + _this6 = _super5.call(this); + + if (options.values === undefined) { + throw new Error("Option 'values' is required for NormalRangeProperties."); + } + + if (!(_typeof(options.values) === "object" || options.values instanceof Array)) { + throw new Error("Option 'values' must have type Array."); + } + + options.values.forEach(function (value) { + if (!options.concept || options.concept.constructor !== NumContentItem) { + throw new Error("Items of option 'values' must have type NumContentItem."); + } + + _this6.push(value); + }); + + if (options.description !== undefined) { + new TextContentItem({ + name: new CodedConcept({ + value: "121407", + schemeDesignator: "DCM", + meaning: "Normal Range Description" + }), + value: options.authority, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this6.push(authorityItem); + } + + if (options.authority !== undefined) { + var _authorityItem2 = new TextContentItem({ + name: new CodedConcept({ + value: "121408", + schemeDesignator: "DCM", + meaning: "Normal Range Authority" + }), + value: options.authority, + relationshipType: RelationshipTypes.HAS_PROPERTIES + }); + + _this6.push(_authorityItem2); + } + + return _this6; + } + + return _createClass(NormalRangeProperties); + }(Template); + + var ObservationContext = /*#__PURE__*/function (_Template5) { + _inherits(ObservationContext, _Template5); + + var _super6 = _createSuper(ObservationContext); + + function ObservationContext(options) { + var _this8; + + var _this7; + + _classCallCheck(this, ObservationContext); + + _this7 = _super6.call(this); + + if (options.observerPersonContext === undefined) { + throw new Error("Option 'observerPersonContext' is required for ObservationContext."); + } + + if (options.observerPersonContext.constructor !== ObserverContext) { + throw new Error("Option 'observerPersonContext' must have type ObserverContext"); + } + + (_this8 = _this7).push.apply(_this8, _toConsumableArray(options.observerPersonContext)); + + if (options.observerDeviceContext !== undefined) { + var _this9; + + if (options.observerDeviceContext.constructor !== ObserverContext) { + throw new Error("Option 'observerDeviceContext' must have type ObserverContext"); + } + + (_this9 = _this7).push.apply(_this9, _toConsumableArray(options.observerDeviceContext)); + } + + if (options.subjectContext !== undefined) { + var _this10; + + if (options.subjectContext.constructor !== SubjectContext) { + throw new Error("Option 'subjectContext' must have type SubjectContext"); + } + + (_this10 = _this7).push.apply(_this10, _toConsumableArray(options.subjectContext)); + } + + return _this7; + } + + return _createClass(ObservationContext); + }(Template); + + var ObserverContext = /*#__PURE__*/function (_Template6) { + _inherits(ObserverContext, _Template6); + + var _super7 = _createSuper(ObserverContext); + + function ObserverContext(options) { + var _this12; + + var _this11; + + _classCallCheck(this, ObserverContext); + + _this11 = _super7.call(this); + + if (options.observerType === undefined) { + throw new Error("Option 'observerType' is required for ObserverContext."); + } else { + if (options.observerType.constructor !== Code && options.observerType.constructor !== CodedConcept) { + throw new Error("Option 'observerType' must have type Code or CodedConcept."); + } + } + + var observerTypeItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121005", + meaning: "Observer Type", + schemeDesignator: "DCM" + }), + value: options.observerType, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this11.push(observerTypeItem); + + if (options.observerIdentifyingAttributes === undefined) { + throw new Error("Option 'observerIdentifyingAttributes' is required for ObserverContext."); + } // FIXME + + + var person = new CodedConcept({ + value: "121006", + schemeDesignator: "DCM", + meaning: "Person" + }); + var device = new CodedConcept({ + value: "121007", + schemeDesignator: "DCM", + meaning: "Device" + }); + + if (person.equals(options.observerType)) { + if (options.observerIdentifyingAttributes.constructor !== PersonObserverIdentifyingAttributes) { + throw new Error("Option 'observerIdentifyingAttributes' must have type " + "PersonObserverIdentifyingAttributes for 'Person' observer type."); + } + } else if (device.equals(options.observerType)) { + if (options.observerIdentifyingAttributes.constructor !== DeviceObserverIdentifyingAttributes) { + throw new Error("Option 'observerIdentifyingAttributes' must have type " + "DeviceObserverIdentifyingAttributes for 'Device' observer type."); + } + } else { + throw new Error("Option 'oberverType' must be either 'Person' or 'Device'."); + } + + (_this12 = _this11).push.apply(_this12, _toConsumableArray(options.observerIdentifyingAttributes)); + + return _this11; + } + + return _createClass(ObserverContext); + }(Template); + + var PersonObserverIdentifyingAttributes = /*#__PURE__*/function (_Template7) { + _inherits(PersonObserverIdentifyingAttributes, _Template7); + + var _super8 = _createSuper(PersonObserverIdentifyingAttributes); + + function PersonObserverIdentifyingAttributes(options) { + var _this13; + + _classCallCheck(this, PersonObserverIdentifyingAttributes); + + _this13 = _super8.call(this); + + if (options.name === undefined) { + throw new Error("Option 'name' is required for PersonObserverIdentifyingAttributes."); + } + + var nameItem = new PNameContentItem({ + name: new CodedConcept({ + value: "121008", + meaning: "Person Observer Name", + schemeDesignator: "DCM" + }), + value: options.name, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this13.push(nameItem); + + if (options.loginName !== undefined) { + var loginNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "128774", + meaning: "Person Observer's Login Name", + schemeDesignator: "DCM" + }), + value: options.loginName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this13.push(loginNameItem); + } + + if (options.organizationName !== undefined) { + var organizationNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121009", + meaning: "Person Observer's Organization Name", + schemeDesignator: "DCM" + }), + value: options.organizationName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this13.push(organizationNameItem); + } + + if (options.roleInOrganization !== undefined) { + var roleInOrganizationItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121010", + meaning: "Person Observer's Role in the Organization", + schemeDesignator: "DCM" + }), + value: options.roleInOrganization, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this13.push(roleInOrganizationItem); + } + + if (options.roleInProcedure !== undefined) { + var roleInProcedureItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121011", + meaning: "Person Observer's Role in this Procedure", + schemeDesignator: "DCM" + }), + value: options.roleInProcedure, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this13.push(roleInProcedureItem); + } + + return _this13; + } + + return _createClass(PersonObserverIdentifyingAttributes); + }(Template); + + var DeviceObserverIdentifyingAttributes = /*#__PURE__*/function (_Template8) { + _inherits(DeviceObserverIdentifyingAttributes, _Template8); + + var _super9 = _createSuper(DeviceObserverIdentifyingAttributes); + + function DeviceObserverIdentifyingAttributes(options) { + var _this14; + + _classCallCheck(this, DeviceObserverIdentifyingAttributes); + + _this14 = _super9.call(this); + + if (options.uid === undefined) { + throw new Error("Option 'uid' is required for DeviceObserverIdentifyingAttributes."); + } + + var deviceObserverItem = new UIDRefContentItem({ + name: new CodedConcept({ + value: "121012", + meaning: "Device Observer UID", + schemeDesignator: "DCM" + }), + value: options.uid, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(deviceObserverItem); + + if (options.manufacturerName !== undefined) { + var manufacturerNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121013", + meaning: "Device Observer Manufacturer", + schemeDesignator: "DCM" + }), + value: options.manufacturerName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(manufacturerNameItem); + } + + if (options.modelName !== undefined) { + var modelNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121015", + meaning: "Device Observer Model Name", + schemeDesignator: "DCM" + }), + value: options.modelName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(modelNameItem); + } + + if (options.serialNumber !== undefined) { + var serialNumberItem = new TextContentItem({ + name: new CodedConcept({ + value: "121016", + meaning: "Device Observer Serial Number", + schemeDesignator: "DCM" + }), + value: options.serialNumber, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(serialNumberItem); + } + + if (options.physicalLocation !== undefined) { + var physicalLocationItem = new TextContentItem({ + name: new CodedConcept({ + value: "121017", + meaning: "Device Observer Physical Location During Observation", + schemeDesignator: "DCM" + }), + value: options.physicalLocation, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(physicalLocationItem); + } + + if (options.roleInProcedure !== undefined) { + var roleInProcedureItem = new CodeContentItem({ + name: new CodedConcept({ + value: "113876", + meaning: "Device Role in Procedure", + schemeDesignator: "DCM" + }), + value: options.roleInProcedure, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this14.push(roleInProcedureItem); + } + + return _this14; + } + + return _createClass(DeviceObserverIdentifyingAttributes); + }(Template); + + var SubjectContext = /*#__PURE__*/function (_Template9) { + _inherits(SubjectContext, _Template9); + + var _super10 = _createSuper(SubjectContext); + + function SubjectContext(options) { + var _this16; + + var _this15; + + _classCallCheck(this, SubjectContext); + + _this15 = _super10.call(this); + + if (options.subjectClass === undefined) { + throw new Error("Option 'subjectClass' is required for SubjectContext."); + } + + if (options.subjectClassSpecificContext === undefined) { + throw new Error("Option 'subjectClassSpecificContext' is required for SubjectContext."); + } + + var subjectClassItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121024", + meaning: "Subject Class", + schemeDesignator: "DCM" + }), + value: options.subjectClass, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this15.push(subjectClassItem); + + var fetus = new CodedConcept({ + value: "121026 ", + schemeDesignator: "DCM", + meaning: "Fetus" + }); + var specimen = new CodedConcept({ + value: "121027", + schemeDesignator: "DCM", + meaning: "Specimen" + }); + var device = new CodedConcept({ + value: "121192", + schemeDesignator: "DCM", + meaning: "Device Subject" + }); + + if (fetus.equals(options.subjectClass)) { + if (options.subjectClassSpecificContext.constructor !== SubjectContextFetus) { + throw new Error("Option 'subjectClass' must have type " + "SubjectContextFetus for 'Fetus' subject class."); + } + } else if (specimen.equals(options.subjectClass)) { + if (options.subjectClassSpecificContext.constructor !== SubjectContextSpecimen) { + throw new Error("Option 'subjectClass' must have type " + "SubjectContextSpecimen for 'Specimen' subject class."); + } + } else if (device.equals(options.subjectClass)) { + if (options.subjectClassSpecificContext.constructor !== SubjectContextDevice) { + throw new Error("Option 'subjectClass' must have type " + "SubjectContextDevice for 'Device' subject class."); + } + } else { + throw new Error("Option 'subjectClass' must be either 'Fetus', 'Specimen', or 'Device'."); + } + + (_this16 = _this15).push.apply(_this16, _toConsumableArray(options.subjectClassSpecificContext)); + + return _this15; + } + + return _createClass(SubjectContext); + }(Template); + + var SubjectContextFetus = /*#__PURE__*/function (_Template10) { + _inherits(SubjectContextFetus, _Template10); + + var _super11 = _createSuper(SubjectContextFetus); + + function SubjectContextFetus(options) { + var _this17; + + _classCallCheck(this, SubjectContextFetus); + + _this17 = _super11.call(this); + + if (options.subjectID === undefined) { + throw new Error("Option 'subjectID' is required for SubjectContextFetus."); + } + + var subjectIdItem = new TextContentItem({ + name: new CodedConcept({ + value: "121030", + meaning: "Subject ID", + schemeDesignator: "DCM" + }), + value: options.subjectID, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this17.push(subjectIdItem); + + return _this17; + } + + return _createClass(SubjectContextFetus); + }(Template); + + var SubjectContextSpecimen = /*#__PURE__*/function (_Template11) { + _inherits(SubjectContextSpecimen, _Template11); + + var _super12 = _createSuper(SubjectContextSpecimen); + + function SubjectContextSpecimen(options) { + var _this18; + + _classCallCheck(this, SubjectContextSpecimen); + + _this18 = _super12.call(this); + + if (options.uid === undefined) { + throw new Error("Option 'uid' is required for SubjectContextSpecimen."); + } + + var specimenUidItem = new UIDRefContentItem({ + name: new CodedConcept({ + value: "121039", + meaning: "Specimen UID", + schemeDesignator: "DCM" + }), + value: options.uid, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this18.push(specimenUidItem); + + if (options.identifier !== undefined) { + var specimenIdentifierItem = new TextContentItem({ + name: new CodedConcept({ + value: "121041", + meaning: "Specimen Identifier", + schemeDesignator: "DCM" + }), + value: options.identifier, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this18.push(specimenIdentifierItem); + } + + if (options.containerIdentifier !== undefined) { + var containerIdentifierItem = new TextContentItem({ + name: new CodedConcept({ + value: "111700", + meaning: "Specimen Container Identifier", + schemeDesignator: "DCM" + }), + value: options.containerIdentifier, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this18.push(containerIdentifierItem); + } + + if (options.specimenType !== undefined) { + var specimenTypeItem = new CodeContentItem({ + name: new CodedConcept({ + value: "R-00254", + meaning: "Specimen Type", + schemeDesignator: "DCM" + }), + value: options.specimenType, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this18.push(specimenTypeItem); + } + + return _this18; + } + + return _createClass(SubjectContextSpecimen); + }(Template); + + var SubjectContextDevice = /*#__PURE__*/function (_Template12) { + _inherits(SubjectContextDevice, _Template12); + + _createSuper(SubjectContextDevice); + + function SubjectContextDevice(options) { + var _this19; + + _classCallCheck(this, SubjectContextDevice); + + if (options.name === undefined) { + throw new Error("Option 'name' is required for SubjectContextDevice."); + } + + var deviceNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121193", + meaning: "Device Subject Name", + schemeDesignator: "DCM" + }), + value: options.name, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(deviceNameItem); + + if (options.uid !== undefined) { + var deviceUidItem = new UIDRefContentItem({ + name: new CodedConcept({ + value: "121198", + meaning: "Device Subject UID", + schemeDesignator: "DCM" + }), + value: options.uid, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(deviceUidItem); + } + + if (options.manufacturerName !== undefined) { + var manufacturerNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121194", + meaning: "Device Subject Manufacturer", + schemeDesignator: "DCM" + }), + value: options.manufacturerName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(manufacturerNameItem); + } + + if (options.modelName !== undefined) { + var modelNameItem = new TextContentItem({ + name: new CodedConcept({ + value: "121195", + meaning: "Device Subject Model Name", + schemeDesignator: "DCM" + }), + value: options.modelName, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(modelNameItem); + } + + if (options.serialNumber !== undefined) { + var serialNumberItem = new TextContentItem({ + name: new CodedConcept({ + value: "121196", + meaning: "Device Subject Serial Number", + schemeDesignator: "DCM" + }), + value: options.serialNumber, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(serialNumberItem); + } + + if (options.physicalLocation !== undefined) { + var physicalLocationItem = new TextContentItem({ + name: new CodedConcept({ + value: "121197", + meaning: "Device Subject Physical Location During Observation", + schemeDesignator: "DCM" + }), + value: options.physicalLocation, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this19.push(physicalLocationItem); + } + + return _possibleConstructorReturn(_this19); + } + + return _createClass(SubjectContextDevice); + }(Template); + + var LanguageOfContentItemAndDescendants = /*#__PURE__*/function (_Template13) { + _inherits(LanguageOfContentItemAndDescendants, _Template13); + + var _super14 = _createSuper(LanguageOfContentItemAndDescendants); + + function LanguageOfContentItemAndDescendants(options) { + var _this20; + + _classCallCheck(this, LanguageOfContentItemAndDescendants); + + _this20 = _super14.call(this); + + if (options.language === undefined) { + options.language = new CodedConcept({ + value: "en-US", + schemeDesignator: "RFC5646", + meaning: "English (United States)" + }); + } + + var languageItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121049", + meaning: "Language of Content Item and Descendants", + schemeDesignator: "DCM" + }), + value: options.language, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this20.push(languageItem); + + return _this20; + } + + return _createClass(LanguageOfContentItemAndDescendants); + }(Template); + + var _MeasurementsAndQualitatitiveEvaluations = /*#__PURE__*/function (_Template14) { + _inherits(_MeasurementsAndQualitatitiveEvaluations, _Template14); + + var _super15 = _createSuper(_MeasurementsAndQualitatitiveEvaluations); + + function _MeasurementsAndQualitatitiveEvaluations(options) { + var _groupItem$ContentSeq; + + var _this21; + + _classCallCheck(this, _MeasurementsAndQualitatitiveEvaluations); + + _this21 = _super15.call(this); + var groupItem = new ContainerContentItem({ + name: new CodedConcept({ + value: "125007", + meaning: "Measurement Group", + schemeDesignator: "DCM" + }), + relationshipType: RelationshipTypes.CONTAINS + }); + groupItem.ContentSequence = new ContentSequence$1(); + + if (options.trackingIdentifier === undefined) { + throw new Error("Option 'trackingIdentifier' is required for measurements group."); + } + + if (options.trackingIdentifier.constructor !== TrackingIdentifier) { + throw new Error("Option 'trackingIdentifier' must have type TrackingIdentifier."); + } + + if (options.trackingIdentifier.length !== 2) { + throw new Error("Option 'trackingIdentifier' must include a human readable tracking " + "identifier and a tracking unique identifier."); + } + + (_groupItem$ContentSeq = groupItem.ContentSequence).push.apply(_groupItem$ContentSeq, _toConsumableArray(options.trackingIdentifier)); + + if (options.session !== undefined) { + var sessionItem = new TextContentItem({ + name: new CodedConcept({ + value: "C67447", + meaning: "Activity Session", + schemeDesignator: "NCIt" + }), + value: options.session, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + groupItem.ContentSequence.push(sessionItem); + } + + if (options.findingType !== undefined) { + var findingTypeItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121071", + meaning: "Finding", + schemeDesignator: "DCM" + }), + value: options.findingType, + relationshipType: RelationshipTypes.CONTAINS + }); + groupItem.ContentSequence.push(findingTypeItem); + } + + if (options.timePointContext !== undefined) { + var _groupItem$ContentSeq2; + + if (options.timePointContext.constructor !== TimePointContext) { + throw new Error("Option 'timePointContext' must have type TimePointContext."); + } + + (_groupItem$ContentSeq2 = groupItem.ContentSequence).push.apply(_groupItem$ContentSeq2, _toConsumableArray(timePointContext)); + } + + if (options.referencedRealWorldValueMap !== undefined) { + if (options.referencedRealWorldValueMap.constructor !== ReferencedRealWorldValueMap) { + throw new Error("Option 'referencedRealWorldValleMap' must have type " + "ReferencedRealWorldValueMap."); + } + + groupItem.ContentSequence.push(options.referencedRealWorldValueMap); + } + + if (options.measurements !== undefined) { + if (!(_typeof(options.measurements) === "object" || options.measurements instanceof Array)) { + throw new Error("Option 'measurements' must have type Array."); + } + + options.measurements.forEach(function (measurement) { + console.log(measurement); + + if (!measurement || measurement.constructor !== NumContentItem) { + throw new Error("Items of option 'measurement' must have type NumContentItem."); + } + + groupItem.ContentSequence.push(measurement); + }); + } + + if (options.qualitativeEvaluations !== undefined) { + if (!(_typeof(options.qualitativeEvaluations) === "object" || options.qualitativeEvaluations instanceof Array)) { + throw new Error("Option 'qualitativeEvaluations' must have type Array."); + } + + options.qualitativeEvaluations.forEach(function (evaluation) { + if (!evaluation || evaluation.constructor !== CodeContentItem && evaluation.constructor !== TextContentItem) { + throw new Error("Items of option 'qualitativeEvaluations' must have type " + "CodeContentItem or TextContentItem."); + } + + groupItem.ContentSequence.push(evaluation); + }); + } + + _this21.push(groupItem); + + return _this21; + } + + return _createClass(_MeasurementsAndQualitatitiveEvaluations); + }(Template); + + var _ROIMeasurementsAndQualitativeEvaluations = /*#__PURE__*/function (_MeasurementsAndQuali) { + _inherits(_ROIMeasurementsAndQualitativeEvaluations, _MeasurementsAndQuali); + + var _super16 = _createSuper(_ROIMeasurementsAndQualitativeEvaluations); + + function _ROIMeasurementsAndQualitativeEvaluations(options) { + var _this22; + + _classCallCheck(this, _ROIMeasurementsAndQualitativeEvaluations); + + _this22 = _super16.call(this, { + trackingIdentifier: options.trackingIdentifier, + timePointContext: options.timePointContext, + findingType: options.findingType, + session: options.session, + measurements: options.measurements, + qualitativeEvaluations: options.qualitativeEvaluations + }); + var groupItem = _this22[0]; + var wereReferencesProvided = [options.referencedRegions !== undefined, options.referencedVolume !== undefined, options.referencedSegmentation !== undefined]; + var numReferences = wereReferencesProvided.reduce(function (a, b) { + return a + b; + }); + + if (numReferences === 0) { + throw new Error("One of the following options must be provided: " + "'referencedRegions', 'referencedVolume', or " + "'referencedSegmentation'."); + } else if (numReferences > 1) { + throw new Error("Only one of the following options should be provided: " + "'referencedRegions', 'referencedVolume', or " + "'referencedSegmentation'."); + } + + if (options.referencedRegions !== undefined) { + if (!(_typeof(options.referencedRegions) === "object" || options.referencedRegions instanceof Array)) { + throw new Error("Option 'referencedRegions' must have type Array."); + } + + if (options.referencedRegions.length === 0) { + throw new Error("Option 'referencedRegion' must have non-zero length."); + } + + options.referencedRegions.forEach(function (region) { + if (region === undefined || region.constructor !== ImageRegion && region.constructor !== ImageRegion3D) { + throw new Error("Items of option 'referencedRegion' must have type " + "ImageRegion or ImageRegion3D."); + } + + groupItem.ContentSequence.push(region); + }); + } else if (options.referencedVolume !== undefined) { + if (options.referencedVolume.constructor !== VolumeSurface) { + throw new Error("Items of option 'referencedVolume' must have type VolumeSurface."); + } + + groupItem.ContentSequence.push(referencedVolume); + } else if (options.referencedSegmentation !== undefined) { + if (options.referencedSegmentation.constructor !== ReferencedSegmentation && options.referencedSegmentation.constructor !== ReferencedSegmentationFrame) { + throw new Error("Option 'referencedSegmentation' must have type " + "ReferencedSegmentation or ReferencedSegmentationFrame."); + } + + groupItem.ContentSequence.push(referencedSegmentation); + } + + _this22[0] = groupItem; + return _this22; + } + + return _createClass(_ROIMeasurementsAndQualitativeEvaluations); + }(_MeasurementsAndQualitatitiveEvaluations); + + var PlanarROIMeasurementsAndQualitativeEvaluations = /*#__PURE__*/function (_ROIMeasurementsAndQu) { + _inherits(PlanarROIMeasurementsAndQualitativeEvaluations, _ROIMeasurementsAndQu); + + var _super17 = _createSuper(PlanarROIMeasurementsAndQualitativeEvaluations); + + function PlanarROIMeasurementsAndQualitativeEvaluations(options) { + _classCallCheck(this, PlanarROIMeasurementsAndQualitativeEvaluations); + + var wereReferencesProvided = [options.referencedRegion !== undefined, options.referencedSegmentation !== undefined]; + var numReferences = wereReferencesProvided.reduce(function (a, b) { + return a + b; + }); + + if (numReferences === 0) { + throw new Error("One of the following options must be provided: " + "'referencedRegion', 'referencedSegmentation'."); + } else if (numReferences > 1) { + throw new Error("Only one of the following options should be provided: " + "'referencedRegion', 'referencedSegmentation'."); + } + + return _super17.call(this, { + trackingIdentifier: options.trackingIdentifier, + referencedRegions: [options.referencedRegion], + referencedSegmentation: options.referencedSegmentation, + referencedRealWorldValueMap: options.referencedRealWorldValueMap, + timePointContext: options.timePointContext, + findingType: options.findingType, + session: options.session, + measurements: options.measurements, + qualitativeEvaluations: options.qualitativeEvaluations + }); + } + + return _createClass(PlanarROIMeasurementsAndQualitativeEvaluations); + }(_ROIMeasurementsAndQualitativeEvaluations); + + var VolumetricROIMeasurementsAndQualitativeEvaluations = /*#__PURE__*/function (_ROIMeasurementsAndQu2) { + _inherits(VolumetricROIMeasurementsAndQualitativeEvaluations, _ROIMeasurementsAndQu2); + + var _super18 = _createSuper(VolumetricROIMeasurementsAndQualitativeEvaluations); + + function VolumetricROIMeasurementsAndQualitativeEvaluations(options) { + _classCallCheck(this, VolumetricROIMeasurementsAndQualitativeEvaluations); + + return _super18.call(this, { + trackingIdentifier: options.trackingIdentifier, + referencedRegions: options.referencedRegions, + referencedSegmentation: options.referencedSegmentation, + referencedRealWorldValueMap: options.referencedRealWorldValueMap, + timePointContext: options.timePointContext, + findingType: options.findingType, + session: options.session, + measurements: options.measurements, + qualitativeEvaluations: options.qualitativeEvaluations + }); + } + + return _createClass(VolumetricROIMeasurementsAndQualitativeEvaluations); + }(_ROIMeasurementsAndQualitativeEvaluations); + + var MeasurementsDerivedFromMultipleROIMeasurements = /*#__PURE__*/function (_Template15) { + _inherits(MeasurementsDerivedFromMultipleROIMeasurements, _Template15); + + _createSuper(MeasurementsDerivedFromMultipleROIMeasurements); + + function MeasurementsDerivedFromMultipleROIMeasurements(options) { + var _this23; + + _classCallCheck(this, MeasurementsDerivedFromMultipleROIMeasurements); + + if (options.derivation === undefined) { + throw new Error("Option 'derivation' is required for " + "MeasurementsDerivedFromMultipleROIMeasurements."); + } // FIXME + + + var valueItem = new NumContentItem({ + name: options.derivation + }); + valueItem.ContentSequence = new ContentSequence$1(); + + if (options.measurementGroups === undefined) { + throw new Error("Option 'measurementGroups' is required for " + "MeasurementsDerivedFromMultipleROIMeasurements."); + } + + if (!(_typeof(options.measurementGroups) === "object" || options.measurementGroups instanceof Array)) { + throw new Error("Option 'measurementGroups' must have type Array."); + } + + options.measurementGroups.forEach(function (group) { + var _valueItem$ContentSeq4; + + if (!group || group.constructor !== PlanarROIMeasurementsAndQualitativeEvaluations && group.constructor !== VolumetricROIMeasurementsAndQualitativeEvaluations) { + throw new Error("Items of option 'measurementGroups' must have type " + "PlanarROIMeasurementsAndQualitativeEvaluations or " + "VolumetricROIMeasurementsAndQualitativeEvaluations."); + } + + group[0].RelationshipType = "R-INFERRED FROM"; + + (_valueItem$ContentSeq4 = valueItem.ContentSequence).push.apply(_valueItem$ContentSeq4, _toConsumableArray(group)); + }); + + if (options.measurementProperties !== undefined) { + var _valueItem$ContentSeq5; + + if (options.measurementProperties.constructor !== MeasurementProperties) { + throw new Error("Option 'measurementProperties' must have type MeasurementProperties."); + } + + (_valueItem$ContentSeq5 = valueItem.ContentSequence).push.apply(_valueItem$ContentSeq5, _toConsumableArray(options.measurementProperties)); + } + + _this23.push(valueItem); + + return _possibleConstructorReturn(_this23); + } + + return _createClass(MeasurementsDerivedFromMultipleROIMeasurements); + }(Template); + + var MeasurementAndQualitativeEvaluationGroup = /*#__PURE__*/function (_MeasurementsAndQuali2) { + _inherits(MeasurementAndQualitativeEvaluationGroup, _MeasurementsAndQuali2); + + var _super20 = _createSuper(MeasurementAndQualitativeEvaluationGroup); + + function MeasurementAndQualitativeEvaluationGroup(options) { + _classCallCheck(this, MeasurementAndQualitativeEvaluationGroup); + + return _super20.call(this, { + trackingIdentifier: options.trackingIdentifier, + referencedRealWorldValueMap: options.referencedRealWorldValueMap, + timePointContext: options.timePointContext, + findingType: options.findingType, + session: options.session, + measurements: options.measurements, + qualitativeEvaluations: options.qualitativeEvaluations + }); + } + + return _createClass(MeasurementAndQualitativeEvaluationGroup); + }(_MeasurementsAndQualitatitiveEvaluations); + + var ROIMeasurements = /*#__PURE__*/function (_Template16) { + _inherits(ROIMeasurements, _Template16); + + var _super21 = _createSuper(ROIMeasurements); + + function ROIMeasurements(options) { + var _this24; + + _classCallCheck(this, ROIMeasurements); + + _this24 = _super21.call(this); + + if (options.method !== undefined) { + var methodItem = new CodeContentItem({ + name: new CodedConcept({ + value: "370129005", + meaning: "Measurement Method", + schemeDesignator: "SCT" + }), + value: options.method, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this24.push(methodItem); + } + + if (options.findingSites !== undefined) { + if (!(_typeof(options.findingSites) === "object" || options.findingSites instanceof Array)) { + throw new Error("Option 'findingSites' must have type Array."); + } + + options.findingSites.forEach(function (site) { + if (!site || site.constructor !== FindingSite) { + throw new Error("Items of option 'findingSites' must have type FindingSite."); + } + + _this24.push(site); + }); + } + + if (options.measurements === undefined) { + throw new Error("Options 'measurements' is required ROIMeasurements."); + } + + if (!(_typeof(options.measurements) === "object" || options.measurements instanceof Array)) { + throw new Error("Option 'measurements' must have type Array."); + } + + if (options.measurements.length === 0) { + throw new Error("Option 'measurements' must have non-zero length."); + } + + options.measurements.forEach(function (measurement) { + if (!measurement || measurement.constructor !== Measurement) { + throw new Error("Items of option 'measurements' must have type Measurement."); + } + + _this24.push(measurement); + }); + return _this24; + } + + return _createClass(ROIMeasurements); + }(Template); + + var MeasurementReport = /*#__PURE__*/function (_Template17) { + _inherits(MeasurementReport, _Template17); + + var _super22 = _createSuper(MeasurementReport); + + function MeasurementReport(options) { + var _item$ContentSequence, _item$ContentSequence2, _item$ContentSequence3; + + var _this25; + + _classCallCheck(this, MeasurementReport); + + _this25 = _super22.call(this); + + if (options.observationContext === undefined) { + throw new Error("Option 'observationContext' is required for MeasurementReport."); + } + + if (options.procedureReported === undefined) { + throw new Error("Option 'procedureReported' is required for MeasurementReport."); + } + + var item = new ContainerContentItem({ + name: new CodedConcept({ + value: "126000", + schemeDesignator: "DCM", + meaning: "Imaging Measurement Report" + }), + templateID: "1500" + }); + item.ContentSequence = new ContentSequence$1(); + + if (options.languageOfContentItemAndDescendants === undefined) { + throw new Error("Option 'languageOfContentItemAndDescendants' is required for " + "MeasurementReport."); + } + + if (options.languageOfContentItemAndDescendants.constructor !== LanguageOfContentItemAndDescendants) { + throw new Error("Option 'languageOfContentItemAndDescendants' must have type " + "LanguageOfContentItemAndDescendants."); + } + + (_item$ContentSequence = item.ContentSequence).push.apply(_item$ContentSequence, _toConsumableArray(options.languageOfContentItemAndDescendants)); + + (_item$ContentSequence2 = item.ContentSequence).push.apply(_item$ContentSequence2, _toConsumableArray(options.observationContext)); + + if (options.procedureReported.constructor === CodedConcept || options.procedureReported.constructor === Code) { + options.procedureReported = [options.procedureReported]; + } + + if (!(_typeof(options.procedureReported) === "object" || options.procedureReported instanceof Array)) { + throw new Error("Option 'procedureReported' must have type Array."); + } + + options.procedureReported.forEach(function (procedure) { + var procedureItem = new CodeContentItem({ + name: new CodedConcept({ + value: "121058", + meaning: "Procedure reported", + schemeDesignator: "DCM" + }), + value: procedure, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + item.ContentSequence.push(procedureItem); + }); + var imageLibraryItem = new ImageLibrary(); + + (_item$ContentSequence3 = item.ContentSequence).push.apply(_item$ContentSequence3, _toConsumableArray(imageLibraryItem)); + + var wereOptionsProvided = [options.imagingMeasurements !== undefined, options.derivedImagingMeasurements !== undefined, options.qualitativeEvaluations !== undefined]; + var numOptionsProvided = wereOptionsProvided.reduce(function (a, b) { + return a + b; + }); + + if (numOptionsProvided > 1) { + throw new Error("Only one of the following options should be provided: " + "'imagingMeasurements', 'derivedImagingMeasurement', " + "'qualitativeEvaluations'."); + } + + if (options.imagingMeasurements !== undefined) { + var containerItem = new ContainerContentItem({ + name: new CodedConcept({ + value: "126010", + meaning: "Imaging Measurements", + schemeDesignator: "DCM" + }), + relationshipType: RelationshipTypes.CONTAINS + }); + containerItem.ContentSequence = _construct(ContentSequence$1, _toConsumableArray(options.imagingMeasurements)); + item.ContentSequence.push(containerItem); + } else if (options.derivedImagingMeasurements !== undefined) { + var _containerItem = new ContainerContentItem({ + name: new CodedConcept({ + value: "126011", + meaning: "Derived Imaging Measurements", + schemeDesignator: "DCM" + }), + relationshipType: RelationshipTypes.CONTAINS + }); + + _containerItem.ContentSequence = _construct(ContentSequence$1, _toConsumableArray(options.derivedImagingMeasurements)); + item.ContentSequence.push(_containerItem); + } else if (options.qualitativeEvaluations !== undefined) { + var _containerItem2 = new ContainerContentItem({ + name: new CodedConcept({ + value: "C0034375", + meaning: "Qualitative Evaluations", + schemeDesignator: "UMLS" + }), + relationshipType: RelationshipTypes.CONTAINS + }); + + _containerItem2.ContentSequence = _construct(ContentSequence$1, _toConsumableArray(options.qualitativeEvaluations)); + item.ContentSequence.push(_containerItem2); + } + + _this25.push(item); + + return _this25; + } + + return _createClass(MeasurementReport); + }(Template); + + var TimePointContext = /*#__PURE__*/function (_Template18) { + _inherits(TimePointContext, _Template18); + + _createSuper(TimePointContext); + + function TimePointContext(options) { + var _this26; + + _classCallCheck(this, TimePointContext); + + if (options.timePoint === undefined) { + throw new Error("Option 'timePoint' is required for TimePointContext."); + } + + var timePointItem = new TextContentItem({ + name: new CodedConcept({ + value: "C2348792", + meaning: "Time Point", + schemeDesignator: "UMLS" + }), + value: options.timePoint, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this26.push(timePointItem); + + if (options.timePointType !== undefined) { + var timePointTypeItem = new CodeContentItem({ + name: new CodedConcept({ + value: "126072", + meaning: "Time Point Type", + schemeDesignator: "DCM" + }), + value: options.timePointType, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this26.push(timePointTypeItem); + } + + if (options.timePointOrder !== undefined) { + var timePointOrderItem = new NumContentItem({ + name: new CodedConcept({ + value: "126073", + meaning: "Time Point Order", + schemeDesignator: "DCM" + }), + value: options.timePointOrder, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this26.push(timePointOrderItem); + } + + if (options.subjectTimePointIdentifier !== undefined) { + var subjectTimePointIdentifierItem = new NumContentItem({ + name: new CodedConcept({ + value: "126070", + meaning: "Subject Time Point Identifier", + schemeDesignator: "DCM" + }), + value: options.subjectTimePointIdentifier, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this26.push(subjectTimePointIdentifierItem); + } + + if (options.protocolTimePointIdentifier !== undefined) { + var protocolTimePointIdentifierItem = new NumContentItem({ + name: new CodedConcept({ + value: "126071", + meaning: "Protocol Time Point Identifier", + schemeDesignator: "DCM" + }), + value: options.protocolTimePointIdentifier, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this26.push(protocolTimePointIdentifierItem); + } + + if (options.temporalOffsetFromEvent !== undefined) { + if (options.temporalOffsetFromEvent.constructor !== LongitudinalTemporalOffsetFromEventContentItem) { + throw new Error("Option 'temporalOffsetFromEvent' must have type " + "LongitudinalTemporalOffsetFromEventContentItem."); + } + + _this26.push(temporalOffsetFromEvent); + } + + return _possibleConstructorReturn(_this26); + } + + return _createClass(TimePointContext); + }(Template); + + var ImageLibrary = /*#__PURE__*/function (_Template19) { + _inherits(ImageLibrary, _Template19); + + var _super24 = _createSuper(ImageLibrary); + + function ImageLibrary(options) { + var _this27; + + _classCallCheck(this, ImageLibrary); + + _this27 = _super24.call(this); + var libraryItem = new ContainerContentItem({ + name: new CodedConcept({ + value: "111028", + meaning: "Image Library", + schemeDesignator: "DCM" + }), + relationshipType: RelationshipTypes.CONTAINS + }); + + _this27.push(libraryItem); + + return _this27; + } + + return _createClass(ImageLibrary); + }(Template); + + var AlgorithmIdentification = /*#__PURE__*/function (_Template20) { + _inherits(AlgorithmIdentification, _Template20); + + var _super25 = _createSuper(AlgorithmIdentification); + + function AlgorithmIdentification(options) { + var _this28; + + _classCallCheck(this, AlgorithmIdentification); + + _this28 = _super25.call(this); + + if (options.name === undefined) { + throw new Error("Option 'name' is required for AlgorithmIdentification."); + } + + if (options.version === undefined) { + throw new Error("Option 'version' is required for AlgorithmIdentification."); + } + + var nameItem = new TextContentItem({ + name: new CodedConcept({ + value: "111001", + meaning: "Algorithm Name", + schemeDesignator: "DCM" + }), + value: options.name, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this28.push(nameItem); + + var versionItem = new TextContentItem({ + name: new CodedConcept({ + value: "111003", + meaning: "Algorithm Version", + schemeDesignator: "DCM" + }), + value: options.version, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this28.push(versionItem); + + if (options.parameters !== undefined) { + if (!(_typeof(options.parameters) === "object" || options.parameters instanceof Array)) { + throw new Error("Option 'parameters' must have type Array."); + } + + options.parameters.forEach(function (parameter) { + var parameterItem = new TextContentItem({ + name: new CodedConcept({ + value: "111002", + meaning: "Algorithm Parameter", + schemeDesignator: "DCM" + }), + value: param, + relationshipType: RelationshipTypes.HAS_CONCEPT_MOD + }); + + _this28.push(parameterItem); + }); + } + + return _this28; + } + + return _createClass(AlgorithmIdentification); + }(Template); + + var TrackingIdentifier = /*#__PURE__*/function (_Template21) { + _inherits(TrackingIdentifier, _Template21); + + var _super26 = _createSuper(TrackingIdentifier); + + function TrackingIdentifier(options) { + var _this29; + + _classCallCheck(this, TrackingIdentifier); + + _this29 = _super26.call(this); + + if (options.uid === undefined) { + throw new Error("Option 'uid' is required for TrackingIdentifier."); + } + + if (options.identifier !== undefined) { + var trackingIdentifierItem = new TextContentItem({ + name: new CodedConcept({ + value: "112039", + meaning: "Tracking Identifier", + schemeDesignator: "DCM" + }), + value: options.identifier, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this29.push(trackingIdentifierItem); + } + + var trackingUIDItem = new UIDRefContentItem({ + name: new CodedConcept({ + value: "112040", + meaning: "Tracking Unique Identifier", + schemeDesignator: "DCM" + }), + value: options.uid, + relationshipType: RelationshipTypes.HAS_OBS_CONTEXT + }); + + _this29.push(trackingUIDItem); + + return _this29; + } + + return _createClass(TrackingIdentifier); + }(Template); + + var templates = /*#__PURE__*/Object.freeze({ + __proto__: null, + AlgorithmIdentification: AlgorithmIdentification, + DeviceObserverIdentifyingAttributes: DeviceObserverIdentifyingAttributes, + ImageLibrary: ImageLibrary, + LanguageOfContentItemAndDescendants: LanguageOfContentItemAndDescendants, + Measurement: Measurement, + MeasurementAndQualitativeEvaluationGroup: MeasurementAndQualitativeEvaluationGroup, + MeasurementReport: MeasurementReport, + MeasurementsDerivedFromMultipleROIMeasurements: MeasurementsDerivedFromMultipleROIMeasurements, + ObservationContext: ObservationContext, + ObserverContext: ObserverContext, + PersonObserverIdentifyingAttributes: PersonObserverIdentifyingAttributes, + PlanarROIMeasurementsAndQualitativeEvaluations: PlanarROIMeasurementsAndQualitativeEvaluations, + ROIMeasurements: ROIMeasurements, + SubjectContext: SubjectContext, + SubjectContextDevice: SubjectContextDevice, + SubjectContextFetus: SubjectContextFetus, + SubjectContextSpecimen: SubjectContextSpecimen, + TimePointContext: TimePointContext, + TrackingIdentifier: TrackingIdentifier, + VolumetricROIMeasurementsAndQualitativeEvaluations: VolumetricROIMeasurementsAndQualitativeEvaluations + }); + + var _attributesToInclude = [// Patient + "00080054", "00080100", "00080102", "00080103", "00080104", "00080105", "00080106", "00080107", "0008010B", "0008010D", "0008010F", "00080117", "00080118", "00080119", "00080120", "00080121", "00080122", "00081120", "00081150", "00081155", "00081160", "00081190", "00081199", "00100010", "00100020", "00100021", "00100022", "00100024", "00100026", "00100027", "00100028", "00100030", "00100032", "00100033", "00100034", "00100035", "00100040", "00100200", "00100212", "00100213", "00100214", "00100215", "00100216", "00100217", "00100218", "00100219", "00100221", "00100222", "00100223", "00100229", "00101001", "00101002", "00101100", "00102160", "00102201", "00102202", "00102292", "00102293", "00102294", "00102295", "00102296", "00102297", "00102298", "00102299", "00104000", "00120062", "00120063", "00120064", "0020000D", "00400031", "00400032", "00400033", "00400035", "00400036", "00400039", "0040003A", "0040E001", "0040E010", "0040E020", "0040E021", "0040E022", "0040E023", "0040E024", "0040E025", "0040E030", "0040E031", "0062000B", "00880130", "00880140", // Patient Study + "00080100", "00080102", "00080103", "00080104", "00080105", "00080106", "00080107", "0008010B", "0008010D", "0008010F", "00080117", "00080118", "00080119", "00080120", "00080121", "00080122", "00081080", "00081084", "00101010", "00101020", "00101021", "00101022", "00101023", "00101024", "00101030", "00102000", "00102110", "00102180", "001021A0", "001021B0", "001021C0", "001021D0", "00102203", "00380010", "00380014", "00380060", "00380062", "00380064", "00380500", "00400031", "00400032", "00400033", // General Study + "00080020", "00080030", "00080050", "00080051", "00080080", "00080081", "00080082", "00080090", "00080096", "0008009C", "0008009D", "00080100", "00080102", "00080103", "00080104", "00080105", "00080106", "00080107", "0008010B", "0008010D", "0008010F", "00080117", "00080118", "00080119", "00080120", "00080121", "00080122", "00081030", "00081032", "00081048", "00081049", "00081060", "00081062", "00081110", "00081150", "00081155", "0020000D", "00200010", "00321034", "00400031", "00400032", "00400033", "00401012", "00401101", "00401102", "00401103", "00401104", // Clinical Trial Subject + "00120010", "00120020", "00120021", "00120030", "00120031", "00120040", "00120042", "00120081", "00120082", // Clinical Trial Study + "00120020", "00120050", "00120051", "00120052", "00120053", "00120083", "00120084", "00120085"]; + + var Comprehensive3DSR = /*#__PURE__*/_createClass(function Comprehensive3DSR(options) { + var _this = this; + + _classCallCheck(this, Comprehensive3DSR); + + if (options.evidence === undefined) { + throw new Error("Option 'evidence' is required for Comprehensive3DSR."); + } + + if (!(_typeof(options.evidence) === "object" || options.evidence instanceof Array)) { + throw new Error("Option 'evidence' must have type Array."); + } + + if (options.evidence.length === 0) { + throw new Error("Option 'evidence' must have non-zero length."); + } + + if (options.content === undefined) { + throw new Error("Option 'content' is required for Comprehensive3DSR."); + } + + if (options.seriesInstanceUID === undefined) { + throw new Error("Option 'seriesInstanceUID' is required for Comprehensive3DSR."); + } + + if (options.seriesNumber === undefined) { + throw new Error("Option 'seriesNumber' is required for Comprehensive3DSR."); + } + + if (options.seriesDescription === undefined) { + throw new Error("Option 'seriesDescription' is required for Comprehensive3DSR."); + } + + if (options.sopInstanceUID === undefined) { + throw new Error("Option 'sopInstanceUID' is required for Comprehensive3DSR."); + } + + if (options.instanceNumber === undefined) { + throw new Error("Option 'instanceNumber' is required for Comprehensive3DSR."); + } + + if (options.manufacturer === undefined) { + throw new Error("Option 'manufacturer' is required for Comprehensive3DSR."); + } + + this.SOPClassUID = "1.2.840.10008.5.1.4.1.1.88.34"; + this.SOPInstanceUID = options.sopInstanceUID; + this.Modality = "SR"; + this.SeriesDescription = options.seriesDescription; + this.SeriesInstanceUID = options.seriesInstanceUID; + this.SeriesNumber = options.seriesNumber; + this.InstanceNumber = options.instanceNumber; + this.Manufacturer = options.manufacturer; + + if (options.institutionName !== undefined) { + this.InstitutionName = options.institutionName; + + if (options.institutionalDepartmentName !== undefined) { + this.InstitutionalDepartmentName = options.institutionDepartmentName; + } + } + + if (options.isComplete) { + this.CompletionFlag = "COMPLETE"; + } else { + this.CompletionFlag = "PARTIAL"; + } + + if (options.isVerified) { + if (options.verifyingObserverName === undefined) { + throw new Error("Verifying Observer Name must be specified if SR document " + "has been verified."); + } + + if (options.verifyingOrganization === undefined) { + throw new Error("Verifying Organization must be specified if SR document " + "has been verified."); + } + + this.VerificationFlag = "VERIFIED"; + var ovserver_item = {}; + ovserver_item.VerifyingObserverName = options.verifyingObserverName; + ovserver_item.VerifyingOrganization = options.verifyingOrganization; + ovserver_item.VerificationDateTime = DicomMetaDictionary.dateTime(); + this.VerifyingObserverSequence = [observer_item]; + } else { + this.VerificationFlag = "UNVERIFIED"; + } + + if (options.isFinal) { + this.PreliminaryFlag = "FINAL"; + } else { + this.PreliminaryFlag = "PRELIMINARY"; + } + + this.ContentDate = DicomMetaDictionary.date(); + this.ContentTime = DicomMetaDictionary.time(); + Object.keys(options.content).forEach(function (keyword) { + _this[keyword] = options.content[keyword]; + }); + var evidenceCollection = {}; + options.evidence.forEach(function (evidence) { + if (evidence.StudyInstanceUID !== options.evidence[0].StudyInstanceUID) { + throw new Error("Referenced data sets must all belong to the same study."); + } + + if (!(evidence.SeriesInstanceUID in evidenceCollection)) { + evidenceCollection[evidence.SeriesInstanceUID] = []; + } + + var instanceItem = {}; + instanceItem.ReferencedSOPClassUID = evidence.SOPClassUID; + instanceItem.ReferencedSOPInstanceUID = evidence.SOPInstanceUID; + evidenceCollection[evidence.SeriesInstanceUID].push(instanceItem); + }); + var evidenceStudyItem = {}; + evidenceStudyItem.StudyInstanceUID = options.evidence[0].StudyInstanceUID; + evidenceStudyItem.ReferencedSeriesSequence = []; + Object.keys(evidenceCollection).forEach(function (seriesInstanceUID) { + var seriesItem = {}; + seriesItem.SeriesInstanceUID = seriesInstanceUID; + seriesItem.ReferencedSOPSequence = evidenceCollection[seriesInstanceUID]; + evidenceStudyItem.ReferencedSeriesSequence.push(seriesItem); + }); + + if (options.requestedProcedures !== undefined) { + if (!(_typeof(options.requestedProcedures) === "object" || options.requestedProcedures instanceof Array)) { + throw new Error("Option 'requestedProcedures' must have type Array."); + } + + this.ReferencedRequestSequence = _construct(ContentSequence, _toConsumableArray(options.requestedProcedures)); + this.CurrentRequestedProcedureEvidenceSequence = [evidenceStudyItem]; + } else { + this.PertinentOtherEvidenceSequence = [evidenceStudyItem]; + } + + if (options.previousVersions !== undefined) { + var preCollection = {}; + options.previousVersions.forEach(function (version) { + if (version.StudyInstanceUID != options.evidence[0].StudyInstanceUID) { + throw new Error("Previous version data sets must belong to the same study."); + } + + var instanceItem = {}; + instanceItem.ReferencedSOPClassUID = version.SOPClassUID; + instanceItem.ReferencedSOPInstanceUID = version.SOPInstanceUID; + preCollection[version.SeriesInstanceUID].push(instanceItem); + }); + var preStudyItem = {}; + preStudyItem.StudyInstanceUID = options.previousVersions[0].StudyInstanceUID; + preStudyItem.ReferencedSeriesSequence = []; + Object.keys(preCollection).forEach(function (seriesInstanceUID) { + var seriesItem = {}; + seriesItem.SeriesInstanceUID = seriesInstanceUID; + seriesItem.ReferencedSOPSequence = preCollection[seriesInstanceUID]; + preStudyItem.ReferencedSeriesSequence.push(seriesItem); + }); + this.PredecessorDocumentsSequence = [preStudyItem]; + } + + if (options.performedProcedureCodes !== undefined) { + if (!(_typeof(options.performedProcedureCodes) === "object" || options.performedProcedureCodes instanceof Array)) { + throw new Error("Option 'performedProcedureCodes' must have type Array."); + } + + this.PerformedProcedureCodeSequence = _construct(ContentSequence, _toConsumableArray(options.performedProcedureCodes)); + } else { + this.PerformedProcedureCodeSequence = []; + } + + this.ReferencedPerformedProcedureStepSequence = []; + + _attributesToInclude.forEach(function (tag) { + var key = DicomMetaDictionary.punctuateTag(tag); + var element = DicomMetaDictionary.dictionary[key]; + + if (element !== undefined) { + var keyword = element.name; + var value = options.evidence[0][keyword]; + + if (value !== undefined) { + _this[keyword] = value; + } + } + }); + }); + + var documents = /*#__PURE__*/Object.freeze({ + __proto__: null, + Comprehensive3DSR: Comprehensive3DSR + }); + + var sr = { + coding: coding, + contentItems: contentItems, + documents: documents, + templates: templates, + valueTypes: valueTypes + }; + + var tagNamesToEmpty = [// please override these in specificReplaceDefaults to have useful values + "PatientID", "PatientName", // 0/3: those that appear missing in CTP + "SeriesDate", "AccessionNumber", // (valuable, but sometimes manually filled) + "SeriesDescription", // cat 1/3: CTP: set to empty explicitely using @empty + "StudyTime", "ContentTime", "ReferringPhysicianName", "PatientBirthDate", "PatientSex", "ClinicalTrialSiteID", "ClinicalTrialSiteName", "ClinicalTrialSubjectID", "ClinicalTrialSubjectReadingID", "ClinicalTrialTimePointID", "ClinicalTrialTimePointDescription", "ContrastBolusAgent", "StudyID", // cat 2/3: CTP: set to increment dates + "InstanceCreationDate", "StudyDate", "ContentDate", "DateOfSecondaryCapture", "DateOfLastCalibration", "DateOfLastDetectorCalibration", "FrameAcquisitionDatetime", "FrameReferenceDatetime", "StudyVerifiedDate", "StudyReadDate", "ScheduledStudyStartDate", "ScheduledStudyStopDate", "StudyArrivalDate", "StudyCompletionDate", "ScheduledAdmissionDate", "ScheduledDischargeDate", "DischargeDate", "SPSStartDate", "SPSEndDate", "PPSStartDate", "PPSEndDate", "IssueDateOfImagingServiceRequest", "VerificationDateTime", "ObservationDateTime", "DateTime", "Date", "RefDatetime", // cat 3/3: CTP: set to remove using @remove + "AcquisitionDate", "OverlayDate", "CurveDate", "AcquisitionDatetime", "SeriesTime", "AcquisitionTime", "OverlayTime", "CurveTime", "InstitutionName", "InstitutionAddress", "ReferringPhysicianAddress", "ReferringPhysicianPhoneNumbers", "ReferringPhysiciansIDSeq", "TimezoneOffsetFromUTC", "StationName", "StudyDescription", "InstitutionalDepartmentName", "PhysicianOfRecord", "PhysicianOfRecordIdSeq", "PerformingPhysicianName", "PerformingPhysicianIdSeq", "NameOfPhysicianReadingStudy", "PhysicianReadingStudyIdSeq", "OperatorName", "OperatorsIdentificationSeq", "AdmittingDiagnosisDescription", "AdmittingDiagnosisCodeSeq", "RefStudySeq", "RefPPSSeq", "RefPatientSeq", "RefImageSeq", "DerivationDescription", "SourceImageSeq", "IdentifyingComments", "IssuerOfPatientID", "PatientBirthTime", "PatientInsurancePlanCodeSeq", "PatientPrimaryLanguageCodeSeq", "PatientPrimaryLanguageModifierCodeSeq", "OtherPatientIDs", "OtherPatientNames", "OtherPatientIDsSeq", "PatientBirthName", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "InsurancePlanIdentification", "PatientMotherBirthName", "MilitaryRank", "BranchOfService", "MedicalRecordLocator", "MedicalAlerts", "ContrastAllergies", "CountryOfResidence", "RegionOfResidence", "PatientPhoneNumbers", "EthnicGroup", "Occupation", "SmokingStatus", "AdditionalPatientHistory", "PregnancyStatus", "LastMenstrualDate", "PatientReligiousPreference", "PatientSexNeutered", "ResponsiblePerson", "ResponsibleOrganization", "PatientComments", "DeviceSerialNumber", "PlateID", "GeneratorID", "CassetteID", "GantryID", // we keep - should be SoftwareVersions anyway + // "SoftwareVersion", + "ProtocolName", "AcquisitionDeviceProcessingDescription", "AcquisitionComments", "DetectorID", "AcquisitionProtocolDescription", "ContributionDescription", "ModifyingDeviceID", "ModifyingDeviceManufacturer", "ModifiedImageDescription", "ImageComments", "ImagePresentationComments", "StudyIDIssuer", "ScheduledStudyLocation", "ScheduledStudyLocationAET", "ReasonforStudy", "RequestingPhysician", "RequestingService", "RequestedProcedureDescription", "RequestedContrastAgent", "StudyComments", "AdmissionID", "IssuerOfAdmissionID", "ScheduledPatientInstitutionResidence", "AdmittingDate", "AdmittingTime", "DischargeDiagnosisDescription", "SpecialNeeds", "ServiceEpisodeID", "IssuerOfServiceEpisodeId", "ServiceEpisodeDescription", "CurrentPatientLocation", "PatientInstitutionResidence", "PatientState", "ReferencedPatientAliasSeq", "VisitComments", "ScheduledStationAET", "ScheduledPerformingPhysicianName", "SPSDescription", "ScheduledStationName", "SPSLocation", "PreMedication", "PerformedStationAET", "PerformedStationName", "PerformedLocation", "PerformedStationNameCodeSeq", "PPSID", "PPSDescription", "RequestAttributesSeq", "PPSComments", "AcquisitionContextSeq", "PatientTransportArrangements", "RequestedProcedureLocation", "NamesOfIntendedRecipientsOfResults", "IntendedRecipientsOfResultsIDSequence", "PersonAddress", "PersonTelephoneNumbers", "RequestedProcedureComments", "ReasonForTheImagingServiceRequest", "OrderEnteredBy", "OrderEntererLocation", "OrderCallbackPhoneNumber", "ImagingServiceRequestComments", "ConfidentialityPatientData", "ScheduledStationNameCodeSeq", "ScheduledStationGeographicLocCodeSeq", "PerformedStationGeoLocCodeSeq", "ScheduledHumanPerformersSeq", "ActualHumanPerformersSequence", "HumanPerformersOrganization", "HumanPerformersName", "VerifyingOrganization", "VerifyingObserverName", "AuthorObserverSequence", "ParticipantSequence", "CustodialOrganizationSeq", "VerifyingObserverIdentificationCodeSeq", "PersonName", "ContentSeq", "OverlayData", "OverlayComments", "IconImageSequence", "TopicSubject", "TopicAuthor", "TopicKeyWords", "TextString", "Arbitrary", "TextComments", "ResultsIDIssuer", "InterpretationRecorder", "InterpretationTranscriber", "InterpretationText", "InterpretationAuthor", "InterpretationApproverSequence", "PhysicianApprovingInterpretation", "InterpretationDiagnosisDescription", "ResultsDistributionListSeq", "DistributionName", "DistributionAddress", "InterpretationIdIssuer", "Impressions", "ResultComments", "DigitalSignaturesSeq", "DataSetTrailingPadding"]; + function getTagsNameToEmpty() { + return [].concat(tagNamesToEmpty); + } + function cleanTags(dict) { + var tagNamesToReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + var customTagNamesToEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + + if (tagNamesToReplace == undefined) { + tagNamesToReplace = { + "00100010": "ANON^PATIENT", + "00100020": "ANON^ID" + }; + } + + var tags = customTagNamesToEmpty != undefined ? customTagNamesToEmpty : tagNamesToEmpty; + tags.forEach(function (tag) { + var tagInfo = DicomMetaDictionary.nameMap[tag]; + + if (tagInfo && tagInfo.version != "PrivateTag") { + var tagNumber = tagInfo.tag, + tagString = Tag.fromPString(tagNumber).toCleanString(); + + if (dict[tagString]) { + var newValue; + + if (tagString in tagNamesToReplace) { + newValue = [tagNamesToReplace[tagString]]; + } else { + newValue = []; + } + + dict[tagString].Value = newValue; + } + } + }); + } + + // Data + var data = { + BitArray: BitArray, + ReadBufferStream: ReadBufferStream, + DeflatedReadBufferStream: DeflatedReadBufferStream, + WriteBufferStream: WriteBufferStream, + DicomDict: DicomDict, + DicomMessage: DicomMessage, + DicomMetaDictionary: DicomMetaDictionary, + Tag: Tag, + ValueRepresentation: ValueRepresentation, + Colors: Colors, + datasetToDict: datasetToDict, + datasetToBuffer: datasetToBuffer, + datasetToBlob: datasetToBlob + }; + var derivations = { + DerivedDataset: DerivedDataset, + DerivedPixels: DerivedPixels, + DerivedImage: DerivedImage, + Segmentation: Segmentation$4, + StructuredReport: StructuredReport, + ParametricMap: ParametricMap + }; + var normalizers = { + Normalizer: Normalizer, + ImageNormalizer: ImageNormalizer, + MRImageNormalizer: MRImageNormalizer, + EnhancedMRImageNormalizer: EnhancedMRImageNormalizer, + EnhancedUSVolumeNormalizer: EnhancedUSVolumeNormalizer, + CTImageNormalizer: CTImageNormalizer, + PETImageNormalizer: PETImageNormalizer, + SEGImageNormalizer: SEGImageNormalizer, + DSRNormalizer: DSRNormalizer + }; + var anonymizer = { + cleanTags: cleanTags, + getTagsNameToEmpty: getTagsNameToEmpty + }; + var dcmjs = { + DICOMWEB: DICOMWEB, + adapters: adapters, + data: data, + derivations: derivations, + normalizers: normalizers, + sr: sr, + utilities: utilities, + log: log, + anonymizer: anonymizer + }; + + exports.DICOMWEB = DICOMWEB; + exports.adapters = adapters; + exports.anonymizer = anonymizer; + exports.data = data; + exports.default = dcmjs; + exports.derivations = derivations; + exports.log = log; + exports.normalizers = normalizers; + exports.sr = sr; + exports.utilities = utilities; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=dcmjs.js.map diff --git a/src/views/blindResumeInfo/components/Agreements.vue b/src/views/blindResumeInfo/components/Agreements.vue index d8ec72d6..c2683ecb 100644 --- a/src/views/blindResumeInfo/components/Agreements.vue +++ b/src/views/blindResumeInfo/components/Agreements.vue @@ -10,7 +10,7 @@ - + - + - + - +