UNPKG

@dcm/dicom-parser

Version:

Javascript parser for DICOM Part 10 data.

2 lines 31.8 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("dicomParser",[],t):"object"==typeof exports?exports.dicomParser=t():e.dicomParser=t()}(self,(function(){return(()=>{var e={988:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},590:e=>{function t(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}e.exports=function(e,r,a){return r&&t(e.prototype,r),a&&t(e,a),e}},850:(e,t,r)=>{"use strict";function a(e,t){if("undefined"!=typeof Buffer&&e instanceof Buffer)return Buffer.alloc(t);if(e instanceof Uint8Array)return new Uint8Array(t);throw"dicomParser.alloc: unknown type for byteArray"}r.d(t,{Z:()=>a})},177:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});const a={readUint16(e,t){if(t<0)throw"bigEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>e.length)throw"bigEndianByteArrayParser.readUint16: attempt to read past end of buffer";return(e[t]<<8)+e[t+1]},readInt16(e,t){if(t<0)throw"bigEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>e.length)throw"bigEndianByteArrayParser.readInt16: attempt to read past end of buffer";var r=(e[t]<<8)+e[t+1];return 32768&r&&(r=r-65535-1),r},readUint32(e,t){if(t<0)throw"bigEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readUint32: attempt to read past end of buffer";return 256*(256*(256*e[t]+e[t+1])+e[t+2])+e[t+3]},readInt32(e,t){if(t<0)throw"bigEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readInt32: attempt to read past end of buffer";return(e[t]<<24)+(e[t+1]<<16)+(e[t+2]<<8)+e[t+3]},readFloat(e,t){if(t<0)throw"bigEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>e.length)throw"bigEndianByteArrayParser.readFloat: attempt to read past end of buffer";var r=new Uint8Array(4);return r[3]=e[t],r[2]=e[t+1],r[1]=e[t+2],r[0]=e[t+3],new Float32Array(r.buffer)[0]},readDouble(e,t){if(t<0)throw"bigEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>e.length)throw"bigEndianByteArrayParser.readDouble: attempt to read past end of buffer";var r=new Uint8Array(8);return r[7]=e[t],r[6]=e[t+1],r[5]=e[t+2],r[4]=e[t+3],r[3]=e[t+4],r[2]=e[t+5],r[1]=e[t+6],r[0]=e[t+7],new Float64Array(r.buffer)[0]}}},44:(e,t,r)=>{"use strict";function a(e,t,r){if(r<0)throw"dicomParser.readFixedString - length cannot be less than 0";if(t+r>e.length)throw"dicomParser.readFixedString: attempt to read past end of buffer";for(var a,i="",n=0;n<r;n++){if(0===(a=e[t+n]))return t+=r,i;i+=String.fromCharCode(a)}return i}r.d(t,{s:()=>a})},689:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var a=r(988),i=r.n(a),n=r(590),s=r.n(n),o=r(649),d=r(44),f=function(){function e(t,r,a){if(i()(this,e),void 0===t)throw"dicomParser.ByteStream: missing required parameter 'byteArrayParser'";if(void 0===r)throw"dicomParser.ByteStream: missing required parameter 'byteArray'";if(r instanceof Uint8Array==!1&&r instanceof Buffer==!1)throw"dicomParser.ByteStream: parameter byteArray is not of type Uint8Array or Buffer";if(a<0)throw"dicomParser.ByteStream: parameter 'position' cannot be less than 0";if(a>=r.length)throw"dicomParser.ByteStream: parameter 'position' cannot be greater than or equal to 'byteArray' length";this.byteArrayParser=t,this.byteArray=r,this.position=a||0,this.warnings=[]}return s()(e,[{key:"seek",value:function(e){if(this.position+e<0)throw"dicomParser.ByteStream.prototype.seek: cannot seek to position < 0";this.position+=e}},{key:"readByteStream",value:function(t){if(this.position+t>this.byteArray.length)throw"dicomParser.ByteStream.prototype.readByteStream: readByteStream - buffer overread";var r=(0,o.Z)(this.byteArray,this.position,t);return this.position+=t,new e(this.byteArrayParser,r)}},{key:"readUint16",value:function(){var e=this.byteArrayParser.readUint16(this.byteArray,this.position);return this.position+=2,e}},{key:"readUint32",value:function(){var e=this.byteArrayParser.readUint32(this.byteArray,this.position);return this.position+=4,e}},{key:"readFixedString",value:function(e){var t=(0,d.s)(this.byteArray,this.position,e);return this.position+=e,t}}]),e}()},355:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var a=r(988),i=r.n(a),n=r(590),s=r.n(n),o=r(44);function d(e,t){return void 0!==e.parser?e.parser:t}var f=function(){function e(t,r,a){i()(this,e),this.byteArrayParser=t,this.byteArray=r,this.elements=a}return s()(e,[{key:"uint16",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readUint16(this.byteArray,r.dataOffset+2*t)}},{key:"int16",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readInt16(this.byteArray,r.dataOffset+2*t)}},{key:"uint32",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readUint32(this.byteArray,r.dataOffset+4*t)}},{key:"int32",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readInt32(this.byteArray,r.dataOffset+4*t)}},{key:"float",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readFloat(this.byteArray,r.dataOffset+4*t)}},{key:"double",value:function(e,t){var r=this.elements[e];if(t=void 0!==t?t:0,r&&0!==r.length)return d(r,this.byteArrayParser).readDouble(this.byteArray,r.dataOffset+8*t)}},{key:"numStringValues",value:function(e){var t=this.elements[e];if(t&&t.length>0){var r=(0,o.s)(this.byteArray,t.dataOffset,t.length).match(/\\/g);return null===r?1:r.length+1}}},{key:"string",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var a=(0,o.s)(this.byteArray,r.dataOffset,r.length);return t>=0?a.split("\\")[t].trim():a.trim()}}},{key:"text",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){var a=(0,o.s)(this.byteArray,r.dataOffset,r.length);return t>=0?a.split("\\")[t].replace(/ +$/,""):a.replace(/ +$/,"")}}},{key:"floatString",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var a=this.string(e,t);if(void 0!==a)return parseFloat(a)}}},{key:"intString",value:function(e,t){var r=this.elements[e];if(r&&r.length>0){t=void 0!==t?t:0;var a=this.string(e,t);if(void 0!==a)return parseInt(a)}}},{key:"attributeTag",value:function(e){var t=this.elements[e];if(t&&4===t.length){var r=d(t,this.byteArrayParser).readUint16,a=this.byteArray,i=t.dataOffset;return`x${`00000000${(256*r(a,i)*256+r(a,i+2)).toString(16)}`.substr(-8)}`}}}]),e}()},63:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var a=r(38);function i(e,t,r){if(void 0===e)throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.findEndOfEncapsulatedElement: missing required parameter 'element'";if(t.encapsulatedPixelData=!0,t.basicOffsetTable=[],t.fragments=[],"xfffee000"!==(0,a.Z)(e))throw"dicomParser.findEndOfEncapsulatedElement: basic offset table not found";for(var i=e.readUint32()/4,n=0;n<i;n++){var s=e.readUint32();t.basicOffsetTable.push(s)}for(var o=e.position;e.position<e.byteArray.length;){var d=(0,a.Z)(e),f=e.readUint32();if("xfffee0dd"===d)return e.seek(f),void(t.length=e.position-t.dataOffset);if("xfffee000"!==d)return r&&r.push(`unexpected tag ${d} while searching for end of pixel data element with undefined length`),f>e.byteArray.length-e.position&&(f=e.byteArray.length-e.position),t.fragments.push({offset:e.position-o-8,position:e.position,length:f}),e.seek(f),void(t.length=e.position-t.dataOffset);t.fragments.push({offset:e.position-o-8,position:e.position,length:f}),e.seek(f)}r&&r.push(`pixel data element ${t.tag} missing sequence delimiter tag xfffee0dd`)}},772:(e,t,r)=>{"use strict";function a(e,t){if(void 0===e)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";for(var r=e.byteArray.length-8;e.position<=r;){if(65534===e.readUint16())if(57357===e.readUint16())return 0!==e.readUint32()&&e.warnings(`encountered non zero length following item delimiter at position ${e.position-4} while reading element of undefined length with tag ${t.tag}`),void(t.length=e.position-t.dataOffset)}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}r.d(t,{Z:()=>a})},272:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});const a={readUint16(e,t){if(t<0)throw"littleEndianByteArrayParser.readUint16: position cannot be less than 0";if(t+2>e.length)throw"littleEndianByteArrayParser.readUint16: attempt to read past end of buffer";return e[t]+256*e[t+1]},readInt16(e,t){if(t<0)throw"littleEndianByteArrayParser.readInt16: position cannot be less than 0";if(t+2>e.length)throw"littleEndianByteArrayParser.readInt16: attempt to read past end of buffer";var r=e[t]+(e[t+1]<<8);return 32768&r&&(r=r-65535-1),r},readUint32(e,t){if(t<0)throw"littleEndianByteArrayParser.readUint32: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readUint32: attempt to read past end of buffer";return e[t]+256*e[t+1]+256*e[t+2]*256+256*e[t+3]*256*256},readInt32(e,t){if(t<0)throw"littleEndianByteArrayParser.readInt32: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readInt32: attempt to read past end of buffer";return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24)},readFloat(e,t){if(t<0)throw"littleEndianByteArrayParser.readFloat: position cannot be less than 0";if(t+4>e.length)throw"littleEndianByteArrayParser.readFloat: attempt to read past end of buffer";var r=new Uint8Array(4);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],new Float32Array(r.buffer)[0]},readDouble(e,t){if(t<0)throw"littleEndianByteArrayParser.readDouble: position cannot be less than 0";if(t+8>e.length)throw"littleEndianByteArrayParser.readDouble: attempt to read past end of buffer";var r=new Uint8Array(8);return r[0]=e[t],r[1]=e[t+1],r[2]=e[t+2],r[3]=e[t+3],r[4]=e[t+4],r[5]=e[t+5],r[6]=e[t+6],r[7]=e[t+7],new Float64Array(r.buffer)[0]}}},837:(e,t,r)=>{"use strict";r.d(t,{Z:()=>u});var a=r(850),i=r(177),n=r(689),s=r(355),o=r(272),d=r(563),f=r(649),l=r(44),m=r(413);function u(t,u){if(void 0===t)throw"dicomParser.parseDicom: missing required parameter 'byteArray'";function c(d){var c=function(e){if(void 0===e.elements.x00020010)throw"dicomParser.parseDicom: missing required meta header attribute 0002,0010";var r=e.elements.x00020010;return l.s(t,r.dataOffset,r.length)}(d),p=function(e){return"1.2.840.10008.1.2"!==e}(c),h=function(s,d){if("1.2.840.10008.1.2.1.99"===s){if(u&&u.inflater){var l=u.inflater(t,d);return new n.Z(o.Z,l,0)}if(this.module!==e){var m=r(804),c=(0,f.Z)(t,d,t.length-d),p=m.inflateRawSync(c),h=(0,a.Z)(t,p.length+d);return t.copy(h,0,0,d),p.copy(h,d),new n.Z(o.Z,h,0)}if("undefined"!=typeof pako){var g=t.slice(d),y=pako.inflateRaw(g),v=(0,a.Z)(t,y.length+d);return v.set(t.slice(0,d),0),v.set(y,d),new n.Z(o.Z,v,0)}throw"dicomParser.parseDicom: no inflater available to handle deflate transfer syntax"}return"1.2.840.10008.1.2.2"===s?new n.Z(i.Z,t,d):new n.Z(o.Z,t,d)}(c,d.position),g=new s.Z(h.byteArrayParser,h.byteArray,{});g.warnings=h.warnings;try{p?m._(g,h,h.byteArray.length,u):m.L(g,h,h.byteArray.length,u)}catch(e){throw{exception:e,dataSet:g}}return g}return function(e,t){for(var r in e.elements)e.elements.hasOwnProperty(r)&&(t.elements[r]=e.elements[r]);return void 0!==e.warnings&&(t.warnings=e.warnings.concat(t.warnings)),t}(p=(0,d.Z)(t,u),c(p));var p}e=r.hmd(e)},413:(e,t,r)=>{"use strict";r.d(t,{_:()=>n,L:()=>s});var a=r(691),i=r(670);function n(e,t,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?t.byteArray.length:r,void 0===t)throw"dicomParser.parseDicomDataSetExplicit: missing required parameter 'byteStream'";if(r<t.position||r>t.byteArray.length)throw"dicomParser.parseDicomDataSetExplicit: invalid value for parameter 'maxP osition'";for(var n=e.elements;t.position<r;){var s=(0,a.Z)(t,e.warnings,i.untilTag);if(n[s.tag]=s,s.tag===i.untilTag)return}if(t.position>r)throw"dicomParser:parseDicomDataSetExplicit: buffer overrun"}function s(e,t,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(r=void 0===r?e.byteArray.length:r,void 0===t)throw"dicomParser.parseDicomDataSetImplicit: missing required parameter 'byteStream'";if(r<t.position||r>t.byteArray.length)throw"dicomParser.parseDicomDataSetImplicit: invalid value for parameter 'maxPosition'";for(var n=e.elements;t.position<r;){var s=(0,i.Z)(t,a.untilTag,a.vrCallback);if(n[s.tag]=s,s.tag===a.untilTag)return}}},691:(e,t,r)=>{"use strict";r.d(t,{Z:()=>d});var a=r(63),i=r(728),n=r(38),s=r(772),o=r(185);function d(e,t,r){if(void 0===e)throw"dicomParser.readDicomElementExplicit: missing required parameter 'byteStream'";var d,f={tag:(0,n.Z)(e),vr:e.readFixedString(2)};return 2===("OB"===(d=f.vr)||"OW"===d||"SQ"===d||"OF"===d||"UT"===d||"UN"===d?4:2)?(f.length=e.readUint16(),f.dataOffset=e.position):(e.seek(2),f.length=e.readUint32(),f.dataOffset=e.position),4294967295===f.length&&(f.hadUndefinedLength=!0),f.tag===r?f:"SQ"===f.vr?((0,o.Z)(e,f,t),f):4294967295===f.length?"x7fe00010"===f.tag?((0,a.Z)(e,f,t),f):"UN"===f.vr?((0,i.Z)(e,f),f):((0,s.Z)(e,f),f):(e.seek(f.length),f)}},670:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var a=r(772),i=r(728),n=r(38),s=r(437);function o(e,t,r){if(void 0===e)throw"dicomParser.readDicomElementImplicit: missing required parameter 'byteStream'";var o={tag:(0,n.Z)(e),length:e.readUint32(),dataOffset:e.position};return 4294967295===o.length&&(o.hadUndefinedLength=!0),o.tag===t?o:function(e,t,r){if(void 0!==r)return"SQ"===r(e.tag);if(t.position+4<=t.byteArray.length){var a=(0,n.Z)(t);return t.seek(-4),"xfffee000"===a||"xfffee0dd"===a}return t.warnings.push("eof encountered before finding sequence item tag or sequence delimiter tag in peeking to determine VR"),!1}(o,e,r)&&!(0,s.l7)(o.tag)?((0,i.Z)(e,o),o):o.hadUndefinedLength?((0,a.Z)(e,o),o):(e.seek(o.length),o)}},563:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var a=r(689),i=r(355),n=r(272),s=r(691);function o(e,t){if(void 0===e)throw"dicomParser.readPart10Header: missing required parameter 'byteArray'";var r=new a.Z(n.Z,e);return function(){!function(){if(r.seek(128),"DICM"!==r.readFixedString(4))throw"dicomParser.readPart10Header: DICM prefix not found at location 132 - this is not a valid DICOM P10 file."}();for(var e=[],t={};r.position<r.byteArray.length;){var a=r.position,o=(0,s.Z)(r,e);if(o.tag>"x0002ffff"){r.position=a;break}o.parser=n.Z,t[o.tag]=o}var d=new i.Z(r.byteArrayParser,r.byteArray,t);return d.warnings=r.warnings,d.position=r.position,d}()}},185:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var a=r(355),i=r(691),n=r(827),s=r(38),o=r(413);function d(e,t){var r=(0,n.Z)(e);return 4294967295===r.length?(r.hadUndefinedLength=!0,r.dataSet=function(e,t){for(var r={};e.position<e.byteArray.length;){var n=(0,i.Z)(e,t);if(r[n.tag]=n,"xfffee00d"===n.tag)return new a.Z(e.byteArrayParser,e.byteArray,r)}return t.push("eof encountered before finding item delimiter tag while reading sequence item of undefined length"),new a.Z(e.byteArrayParser,e.byteArray,r)}(e,t),r.length=e.position-r.dataOffset):(r.dataSet=new a.Z(e.byteArrayParser,e.byteArray,{}),o._(r.dataSet,e,e.position+r.length)),r}function f(e,t,r){if(void 0===e)throw"dicomParser.readSequenceItemsExplicit: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.readSequenceItemsExplicit: missing required parameter 'element'";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var a=(0,s.Z)(e);if(e.seek(-4),"xfffee0dd"===a)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=d(e,r);t.items.push(i)}r.push("eof encountered before finding sequence delimitation tag while reading sequence of undefined length"),t.length=e.position-t.dataOffset}(e,t,r):function(e,t,r){for(var a=t.dataOffset+t.length;e.position<a;){var i=d(e,r);t.items.push(i)}}(e,t,r)}},728:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var a=r(355),i=r(670),n=r(827),s=r(38),o=r(413);function d(e,t){var r=(0,n.Z)(e);return 4294967295===r.length?(r.hadUndefinedLength=!0,r.dataSet=function(e,t){for(var r={};e.position<e.byteArray.length;){var n=(0,i.Z)(e,void 0,t);if(r[n.tag]=n,"xfffee00d"===n.tag)return new a.Z(e.byteArrayParser,e.byteArray,r)}return e.warnings.push("eof encountered before finding sequence item delimiter in sequence item of undefined length"),new a.Z(e.byteArrayParser,e.byteArray,r)}(e,t),r.length=e.position-r.dataOffset):(r.dataSet=new a.Z(e.byteArrayParser,e.byteArray,{}),o.L(r.dataSet,e,e.position+r.length,{vrCallback:t})),r}function f(e,t,r){if(void 0===e)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'byteStream'";if(void 0===t)throw"dicomParser.readSequenceItemsImplicit: missing required parameter 'element'";t.items=[],4294967295===t.length?function(e,t,r){for(;e.position+4<=e.byteArray.length;){var a=(0,s.Z)(e);if(e.seek(-4),"xfffee0dd"===a)return t.length=e.position-t.dataOffset,e.seek(8),t;var i=d(e,r);t.items.push(i)}e.warnings.push("eof encountered before finding sequence delimiter in sequence of undefined length"),t.length=e.byteArray.length-t.dataOffset}(e,t,r):function(e,t,r){for(var a=t.dataOffset+t.length;e.position<a;){var i=d(e,r);t.items.push(i)}}(e,t,r)}},827:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var a=r(38);function i(e){if(void 0===e)throw"dicomParser.readSequenceItem: missing required parameter 'byteStream'";var t={tag:(0,a.Z)(e),length:e.readUint32(),dataOffset:e.position};if("xfffee000"!==t.tag)throw`dicomParser.readSequenceItem: item tag (FFFE,E000) not found at offset ${e.position}`;return t}},38:(e,t,r)=>{"use strict";function a(e){if(void 0===e)throw"dicomParser.readTag: missing required parameter 'byteStream'";return`x${`00000000${(256*e.readUint16()*256+e.readUint16()).toString(16)}`.substr(-8)}`}r.d(t,{Z:()=>a})},649:(e,t,r)=>{"use strict";function a(e,t,r){if("undefined"!=typeof Buffer&&e instanceof Buffer)return e.slice(t,t+r);if(e instanceof Uint8Array)return new Uint8Array(e.buffer,e.byteOffset+t,r);throw"dicomParser.from: unknown type for byteArray"}r.d(t,{Z:()=>a})},437:(e,t,r)=>{"use strict";r.d(t,{gj:()=>i,l7:()=>n,kX:()=>s});var a={AE:!0,AS:!0,AT:!1,CS:!0,DA:!0,DS:!0,DT:!0,FL:!1,FD:!1,IS:!0,LO:!0,LT:!0,OB:!1,OD:!1,OF:!1,OW:!1,PN:!0,SH:!0,SL:!1,SQ:!1,SS:!1,ST:!0,TM:!0,UI:!0,UL:!1,UN:void 0,UR:!0,US:!1,UT:!0},i=function(e){return a[e]},n=function(e){return parseInt(e[4],10)%2==1},s=function(e){if(void 0!==e){var t=e.split("^");return{familyName:t[0],givenName:t[1],middleName:t[2],prefix:t[3],suffix:t[4]}}}},804:()=>{}},t={};function r(a){if(t[a])return t[a].exports;var i=t[a]={id:a,loaded:!1,exports:{}};return e[a](i,i.exports,r),i.loaded=!0,i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.r(a),r.d(a,{ByteStream:()=>g.Z,DataSet:()=>v.Z,alloc:()=>c.Z,bigEndianByteArrayParser:()=>h.Z,createJPEGBasicOffsetTable:()=>l,default:()=>k,explicitDataSetToJS:()=>s,explicitElementToString:()=>n,findAndSetUNElementLength:()=>b,findEndOfEncapsulatedElement:()=>P.Z,findItemDelimitationItemAndSetElementLength:()=>x.Z,isPrivateTag:()=>e.l7,isStringVr:()=>e.gj,littleEndianByteArrayParser:()=>w.Z,parseDA:()=>i,parseDicom:()=>E.Z,parseDicomDataSetExplicit:()=>m._,parseDicomDataSetImplicit:()=>m.L,parsePN:()=>e.kX,parseTM:()=>t,readDicomElementExplicit:()=>A.Z,readDicomElementImplicit:()=>S.Z,readEncapsulatedImageFrame:()=>F,readEncapsulatedPixelData:()=>I,readEncapsulatedPixelDataFromFragments:()=>Z,readFixedString:()=>u.s,readPart10Header:()=>U.Z,readSequenceItem:()=>D.Z,readSequenceItemsExplicit:()=>B.Z,readSequenceItemsImplicit:()=>q.Z,readTag:()=>T.Z,sharedCopy:()=>y.Z,version:()=>p});var e=r(437);function t(e,t){if(e.length>=2){var r=parseInt(e.substring(0,2),10),a=e.length>=4?parseInt(e.substring(2,4),10):void 0,i=e.length>=6?parseInt(e.substring(4,6),10):void 0,n=e.length>=8?e.substring(7,13):void 0,s=n?parseInt(n,10)*Math.pow(10,6-n.length):void 0;if(t&&(isNaN(r)||void 0!==a&&isNaN(a)||void 0!==i&&isNaN(i)||void 0!==s&&isNaN(s)||r<0||r>23||a&&(a<0||a>59)||i&&(i<0||i>59)||s&&(s<0||s>999999)))throw`invalid TM '${e}'`;return{hours:r,minutes:a,seconds:i,fractionalSeconds:s}}if(t)throw`invalid TM '${e}'`}function i(e,t){if(e&&8===e.length){var r=parseInt(e.substring(0,4),10),a=parseInt(e.substring(4,6),10),i=parseInt(e.substring(6,8),10);if(t&&!0!=(n=i,s=a,o=r,!isNaN(o)&&s>0&&s<=12&&n>0&&n<=function(e,t){switch(e){case 2:return t%4==0&&t%100||t%400==0?29:28;case 9:case 4:case 6:case 11:return 30;default:return 31}}(s,o)))throw`invalid DA '${e}'`;return{year:r,month:a,day:i}}var n,s,o;if(t)throw`invalid DA '${e}'`}function n(t,r){if(void 0===t||void 0===r)throw"dicomParser.explicitElementToString: missing required parameters";if(void 0===r.vr)throw"dicomParser.explicitElementToString: cannot convert implicit element to string";var a,i=r.vr,n=r.tag;function s(e,r){for(var a="",i=0;i<e;i++)0!==i&&(a+="/"),a+=r.call(t,n,i).toString();return a}if(!0===e.gj(i))a=t.string(n);else{if("AT"===i){var o=t.uint32(n);if(void 0===o)return;return o<0&&(o=4294967295+o+1),`x${o.toString(16).toUpperCase()}`}"US"===i?a=s(r.length/2,t.uint16):"SS"===i?a=s(r.length/2,t.int16):"UL"===i?a=s(r.length/4,t.uint32):"SL"===i?a=s(r.length/4,t.int32):"FD"===i?a=s(r.length/8,t.double):"FL"===i&&(a=s(r.length/4,t.float))}return a}function s(t,r){if(void 0===t)throw"dicomParser.explicitDataSetToJS: missing required parameter dataSet";r=r||{omitPrivateAttibutes:!0,maxElementLength:128};var a={};for(var i in t.elements){var o=t.elements[i];if(!0!==r.omitPrivateAttibutes||!e.l7(i))if(o.items){for(var d=[],f=0;f<o.items.length;f++)d.push(s(o.items[f].dataSet,r));a[i]=d}else{var l;l=void 0,o.length<r.maxElementLength&&(l=n(t,o)),a[i]=void 0!==l?l:{dataOffset:o.dataOffset,length:o.length}}}return a}function o(e,t){return 255===e.byteArray[t]&&217===e.byteArray[t+1]}function d(e,t,r){var a=t.fragments[r];return!(!o(e,a.position+a.length-2)&&!o(e,a.position+a.length-3))}function f(e,t,r){for(var a=r;a<t.fragments.length;a++)if(d(e,t,a))return a}function l(e,t,r){if(void 0===e)throw"dicomParser.createJPEGBasicOffsetTable: missing required parameter dataSet";if(void 0===t)throw"dicomParser.createJPEGBasicOffsetTable: missing required parameter pixelDataElement";if("x7fe00010"!==t.tag)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010'";if(!0!==t.encapsulatedPixelData)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(t.fragments.length<=0)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(r&&r.length<=0)throw"dicomParser.createJPEGBasicOffsetTable: parameter 'fragments' must not be zero length";r=r||t.fragments;for(var a=[],i=0;;){a.push(t.fragments[i].offset);var n=f(e,t,i);if(void 0===n||n===t.fragments.length-1)return a;i=n+1}}var m=r(413),u=r(44),c=r(850);const p="1.8.7";var h=r(177),g=r(689),y=r(649),v=r(355);function b(e,t){if(void 0===e)throw"dicomParser.findAndSetUNElementLength: missing required parameter 'byteStream'";for(var r=e.byteArray.length-8;e.position<=r;){if(65534===e.readUint16())if(57565===e.readUint16())return 0!==e.readUint32()&&e.warnings(`encountered non zero length following item delimiter at position ${e.position-4} while reading element of undefined length with tag ${t.tag}`),void(t.length=e.position-t.dataOffset)}t.length=e.byteArray.length-t.dataOffset,e.seek(e.byteArray.length-e.position)}var P=r(63),x=r(772),w=r(272),E=r(837),A=r(691),S=r(670),D=r(827);function Z(e,t,r,a,i){if(a=a||1,i=i||t.fragments,void 0===e)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'pixelDataElement'";if(void 0===r)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'startFragmentIndex'";if(void 0===a)throw"dicomParser.readEncapsulatedPixelDataFromFragments: missing required parameter 'numFragments'";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(t.fragments.length<=0)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(r<0)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be >= 0";if(r>=t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragmentIndex' must be < number of fragments";if(a<1)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'numFragments' must be > 0";if(r+a>t.fragments.length)throw"dicomParser.readEncapsulatedPixelDataFromFragments: parameter 'startFragment' + 'numFragments' < number of fragments";var n=new g.Z(e.byteArrayParser,e.byteArray,t.dataOffset),s=(0,D.Z)(n);if("xfffee000"!==s.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";n.seek(s.length);var o=n.position;if(1===a)return(0,y.Z)(n.byteArray,o+i[r].offset+8,i[r].length);for(var d=function(e,t,r){for(var a=0,i=t;i<t+r;i++)a+=e[i].length;return a}(i,r,a),f=(0,c.Z)(n.byteArray,d),l=0,m=r;m<r+a;m++)for(var u=o+i[m].offset+8,p=0;p<i[m].length;p++)f[l++]=n.byteArray[u++];return f}function F(e,t,r,a,i){if(a=a||t.basicOffsetTable,i=i||t.fragments,void 0===e)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'pixelDataElement'";if(void 0===r)throw"dicomParser.readEncapsulatedImageFrame: missing required parameter 'frameIndex'";if(void 0===a)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' does not have basicOffsetTable";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to non pixel data tag (expected tag = x7fe00010)";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have undefined length";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedImageFrame: parameter 'pixelDataElement' refers to pixel data element that does not have fragments";if(0===a.length)throw"dicomParser.readEncapsulatedImageFrame: basicOffsetTable has zero entries";if(r<0)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be >= 0";if(r>=a.length)throw"dicomParser.readEncapsulatedImageFrame: parameter 'frameIndex' must be < basicOffsetTable.length";var n=function(e,t){for(var r=0;r<e.length;r++)if(e[r].offset===t)return r}(i,a[r]);if(void 0===n)throw"dicomParser.readEncapsulatedImageFrame: unable to find fragment that matches basic offset table entry";return Z(e,t,n,function(e,t,r,a){if(e===t.length-1)return r.length-a;for(var i=t[e+1],n=a+1;n<r.length;n++)if(r[n].offset===i)return n-a;throw"dicomParser.calculateNumberOfFragmentsForFrame: could not find fragment with offset matching basic offset table"}(r,a,i,n),i)}var O=!1;function I(e,t,r){if(O||(O=!0,console&&console.log&&console.log("WARNING: dicomParser.readEncapsulatedPixelData() has been deprecated")),void 0===e)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'dataSet'";if(void 0===t)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'element'";if(void 0===r)throw"dicomParser.readEncapsulatedPixelData: missing required parameter 'frame'";if("x7fe00010"!==t.tag)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to non pixel data tag (expected tag = x7fe00010)";if(!0!==t.encapsulatedPixelData)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(!0!==t.hadUndefinedLength)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.basicOffsetTable)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(void 0===t.fragments)throw"dicomParser.readEncapsulatedPixelData: parameter 'element' refers to pixel data element that does not have encapsulated pixel data";if(r<0)throw"dicomParser.readEncapsulatedPixelData: parameter 'frame' must be >= 0";return 0!==t.basicOffsetTable.length?F(e,t,r):Z(e,t,0,t.fragments.length)}var U=r(563),B=r(185),q=r(728),T=r(38);const k={isStringVr:e.gj,isPrivateTag:e.l7,parsePN:e.kX,parseTM:t,parseDA:i,explicitElementToString:n,explicitDataSetToJS:s,createJPEGBasicOffsetTable:l,parseDicomDataSetExplicit:m._,parseDicomDataSetImplicit:m.L,readFixedString:u.s,alloc:c.Z,version:p,bigEndianByteArrayParser:h.Z,ByteStream:g.Z,sharedCopy:y.Z,DataSet:v.Z,findAndSetUNElementLength:b,findEndOfEncapsulatedElement:P.Z,findItemDelimitationItemAndSetElementLength:x.Z,littleEndianByteArrayParser:w.Z,parseDicom:E.Z,readDicomElementExplicit:A.Z,readDicomElementImplicit:S.Z,readEncapsulatedImageFrame:F,readEncapsulatedPixelData:I,readEncapsulatedPixelDataFromFragments:Z,readPart10Header:U.Z,readSequenceItemsExplicit:B.Z,readSequenceItemsImplicit:q.Z,readSequenceItem:D.Z,readTag:T.Z}})(),a})()})); //# sourceMappingURL=dicomParser.min.js.map