modified-dicom-pacs
Version:
A modified version of DICOM PACS implementation
2 lines • 84 kB
JavaScript
/*! For license information please see 342.bundle.90d7a113c414ce542357.js.LICENSE.txt */
(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[342],{83342:(e,t,n)=>{"use strict";n.d(t,{QX:()=>Hn,_$:()=>w,fX:()=>_e,f_:()=>Wn,ql:()=>Xn});var r=n(31426),a=n(58181),i=n(29133),o=n.n(i),u=n(48463),s=n.n(u),c=n(44753),l=n(39371);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){S(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(){p=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=t&&t.prototype instanceof S?t:S,o=Object.create(i.prototype),u=new P(r||[]);return a(o,"_invoke",{value:x(e,n,u)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var f="suspendedStart",g="suspendedYield",h="executing",m="completed",v={};function S(){}function y(){}function I(){}var T={};c(T,o,(function(){return this}));var D=Object.getPrototypeOf,O=D&&D(D(A([])));O&&O!==n&&r.call(O,o)&&(T=O);var R=I.prototype=S.prototype=Object.create(T);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(a,i,o,u){var s=d(e[a],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,o,u)}),(function(e){n("throw",e,o,u)})):t.resolve(l).then((function(e){c.value=e,o(c)}),(function(e){return n("throw",e,o,u)}))}u(s.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function x(t,n,r){var a=f;return function(i,o){if(a===h)throw new Error("Generator is already running");if(a===m){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var u=r.delegate;if(u){var s=w(u,r);if(s){if(s===v)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===f)throw a=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=h;var c=d(t,n,r);if("normal"===c.type){if(a=r.done?m:g,c.arg===v)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(a=m,r.method="throw",r.arg=c.arg)}}}function w(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,w(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function M(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(typeof t+" is not iterable")}return y.prototype=I,a(R,"constructor",{value:I,configurable:!0}),a(I,"constructor",{value:y,configurable:!0}),y.displayName=c(I,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,I):(e.__proto__=I,c(e,s,"GeneratorFunction")),e.prototype=Object.create(R),e},t.awrap=function(e){return{__await:e}},b(C.prototype),c(C.prototype,u,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new C(l(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},b(R),c(R,s,"Generator"),c(R,o,(function(){return this})),c(R,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=A,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(E),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return u.type="throw",u.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],u=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;E(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function g(e,t,n,r,a,i,o){try{var u=e[i](o),s=u.value}catch(e){return void n(e)}u.done?t(s):Promise.resolve(s).then(r,a)}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,R(r.key),r)}}function v(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function S(e,t,n){return(t=R(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,u=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw a}}return u}}(e,t)||T(e,t)||function(){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 I(e){return function(e){if(Array.isArray(e))return D(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||T(e)||function(){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 T(e,t){if(e){if("string"==typeof e)return D(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?D(e,t):void 0}}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function O(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=T(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 i,o=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){u=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(u)throw i}}}}function R(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var b=function(e){return Array.isArray(e)?e:[e]},C=function(e){return function(t){return t.ConceptNameCodeSequence.CodeMeaning===e}},x=r.p.datasetToDict;var w=Object.freeze({__proto__:null,codeMeaningEquals:C,downloadDICOMData:function(e,t){var n;if(e instanceof ArrayBuffer)n=new Blob([e],{type:"application/dicom"});else{if(!e._meta)throw new Error("Dataset must have a _meta property");var r=a.hp.from(x(e).write());n=new Blob([r],{type:"application/dicom"})}var i=document.createElement("a");i.href=window.URL.createObjectURL(n),i.download=t,i.click()},graphicTypeEquals:function(e){return function(t){return t&&t.GraphicType===e}},toArray:b}),M=r.BF.TID1500,E=r.BF.addAccessors,P=r.h4.StructuredReport,A=r.z8.Normalizer,N=M.TID1500MeasurementReport,q=M.TID1501MeasurementGroup,_=r.p.DicomMetaDictionary,U={CodingSchemeDesignator:"DCM",CodeValue:"121071"},V={CodingSchemeDesignator:"SCT",CodeValue:"363698007"},F={CodingSchemeDesignator:"SRT",CodeValue:"G-C0E3"},k=function(e,t,n){var r=e.ConceptNameCodeSequence;if(r){var a=r.CodingSchemeDesignator,i=r.CodeValue;return a==t.CodingSchemeDesignator&&i==t.CodeValue||n&&a==n.CodingSchemeDesignator&&i==n.CodeValue}};var B=function(){function e(){h(this,e)}return v(e,null,[{key:"getSetupMeasurementData",value:function(e){var t=e.ContentSequence,n=b(t),r=n.find((function(e){return k(e,U)})),a=n.filter((function(e){return k(e,V,F)}))||[],i=n.find((function(e){return"NUM"===e.ValueType})),o=b(i.ContentSequence).find((function(e){return"SCOORD"===e.ValueType})),u=o.ContentSequence.ReferencedSOPSequence,s=u.ReferencedSOPInstanceUID,c=u.ReferencedFrameNumber,l={sopInstanceUid:s,frameIndex:c||1,complete:!0,finding:r?E(r.ConceptCodeSequence):void 0,findingSites:a.map((function(e){return E(e.ConceptCodeSequence)}))};l.finding&&(l.description=l.finding.CodeMeaning);var d=l.findingSites&&l.findingSites[0];return d&&(l.location=d[0]&&d[0].CodeMeaning||d.CodeMeaning),{defaultState:l,findingGroup:r,findingSiteGroups:a,NUMGroup:i,SCOORDGroup:o,ReferencedSOPSequence:u,ReferencedSOPInstanceUID:s,ReferencedFrameNumber:c}}},{key:"generateReport",value:function(e,t,n){var r=[],a=Object.keys(e)[0];if(!a)throw new Error("No measurements provided.");var i=t.get("generalSeriesModule",a),o=i.studyInstanceUID,u=i.seriesInstanceUID;Object.keys(e).forEach((function(n){var a=t.get("sopCommonModule",n),i=t.get("frameNumber",n),o=e[n],u=Object.keys(o),s={ReferencedSOPClassUID:a.sopClassUID,ReferencedSOPInstanceUID:a.sopInstanceUID};A.isMultiframeSOPClassUID(a.sopClassUID)&&(s.ReferencedFrameNumber=i);var c=[];u.forEach((function(e){var t=function(e,t,n){var r=t[e],a=B.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[e];if(r&&r.data&&r.data.length&&a){var i=r.data.map((function(e){return function(e,t,n,r){var a=r.getTID300RepresentationArguments(e);return a.ReferencedSOPSequence=n,new r.TID300Representation(a)}(e,0,n,a)}));return new q(i)}}(e,o,s);t&&c.push(t)})),r=r.concat(c)}));var s=new N({TID1501MeasurementGroups:r},n),c=new Uint8Array(2);c[1]=1;var l={StudyInstanceUID:o,SeriesInstanceUID:u},d={FileMetaInformationVersion:{Value:[c.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[_.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}};l._meta=d,l._vrMap={PixelData:"OW"};var f=new P([l]),p=s.contentItem(l);return f.dataset=Object.assign(f.dataset,p),f.dataset._meta=d,f}},{key:"generateToolState",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("1500"!==t.ContentTemplateSequence.TemplateIdentifier)throw new Error("This package can currently only interpret DICOM SR TID 1500");var r=b(t.ContentSequence).find(C("Imaging Measurements")),a=b(r.ContentSequence).filter(C("Measurement Group")),i={},o=e.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE,u=[];return Object.keys(o).forEach((function(e){u.push(o[e]),i[e]=[]})),a.forEach((function(e){var r=b(e.ContentSequence).find((function(e){return"Tracking Identifier"===e.ConceptNameCodeSequence.CodeMeaning})).TextValue,a=n.getToolClass?n.getToolClass(e,t,u):u.find((function(e){return e.isValidCornerstoneTrackingIdentifier(r)}));if(a){var o=a.getMeasurementData(e);console.log("=== ".concat(a.toolType," ===")),console.log(o),i[a.toolType].push(o)}})),i}},{key:"registerTool",value:function(t){e.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[t.utilityToolType]=t,e.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[t.toolType]=t,e.MEASUREMENT_BY_TOOLTYPE[t.toolType]=t.utilityToolType}}]),e}();B.MEASUREMENT_BY_TOOLTYPE={},B.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE={},B.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE={};var G="cornerstoneTools@^4.0.0",L=r.BF.TID300.Length,j="Length",Y=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.NUMGroup,i=n.SCOORDGroup,o=f(f({},r),{},{length:a.MeasuredValueSequence.NumericValue,toolType:e.toolType,handles:{start:{},end:{},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}),u=y(i.GraphicData,4);return o.handles.start.x=u[0],o.handles.start.y=u[1],o.handles.end.x=u[2],o.handles.end.y=u[3],o}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.handles,n=e.finding,r=e.findingSites;return{point1:t.start,point2:t.end,distance:e.length,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Length",finding:n,findingSites:r||[]}}}]),e}();Y.toolType=j,Y.utilityToolType=j,Y.TID300Representation=L,Y.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===j},B.registerTool(Y);var z=r.BF.TID300.Polyline,H=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){for(var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.SCOORDGroup,i=n.NUMGroup,o=f(f({},r),{},{toolType:e.toolType,handles:{points:[],textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},cachedStats:{area:i?i.MeasuredValueSequence.NumericValue:0},color:void 0,invalidated:!0}),u=a.GraphicData,s=0;s<u.length;s+=2)o.handles.points.push({x:u[s],y:u[s+1]});return o}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.handles,n=e.finding,r=e.findingSites,a=e.cachedStats,i=void 0===a?{}:a,o=t.points,u=i.area,s=void 0===u?0:u,c=i.perimeter;return{points:o,area:s,perimeter:void 0===c?0:c,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:FreehandRoi",finding:n,findingSites:r||[]}}}]),e}();H.toolType="FreehandRoi",H.utilityToolType="FreehandRoi",H.TID300Representation=z,H.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===H.toolType},B.registerTool(H);var X=r.BF.TID300.Bidirectional,W="Bidirectional",Q=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=t.ContentSequence,r=b(n).find((function(e){return"121071"===e.ConceptNameCodeSequence.CodeValue})),a=b(n).filter((function(e){return"G-C0E3"===e.ConceptNameCodeSequence.CodeValue})),i=b(n).find((function(e){return"Long Axis"===e.ConceptNameCodeSequence.CodeMeaning})),o=b(i.ContentSequence).find((function(e){return"SCOORD"===e.ValueType})),u=b(n).find((function(e){return"Short Axis"===e.ConceptNameCodeSequence.CodeMeaning})),s=b(u.ContentSequence).find((function(e){return"SCOORD"===e.ValueType})),c=o.ContentSequence.ReferencedSOPSequence,l=c.ReferencedSOPInstanceUID,d=c.ReferencedFrameNumber,f=String(i.MeasuredValueSequence.NumericValue),p=String(u.MeasuredValueSequence.NumericValue),g=Math.max(o.GraphicData[0],o.GraphicData[2],s.GraphicData[0],s.GraphicData[2]),h=Math.max(o.GraphicData[1],o.GraphicData[3],s.GraphicData[1],s.GraphicData[3]);return{sopInstanceUid:l,frameIndex:d||1,toolType:e.toolType,active:!1,handles:{start:{x:o.GraphicData[0],y:o.GraphicData[1],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:0},end:{x:o.GraphicData[2],y:o.GraphicData[3],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:1},perpendicularStart:{x:s.GraphicData[0],y:s.GraphicData[1],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:2},perpendicularEnd:{x:s.GraphicData[2],y:s.GraphicData[3],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:3},textBox:{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0,x:g+10,y:h+10}},invalidated:!1,isCreating:!1,longestDiameter:f,shortestDiameter:p,toolName:"Bidirectional",visible:!0,finding:r?r.ConceptCodeSequence:void 0,findingSites:a.map((function(e){return e.ConceptCodeSequence}))}}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.handles,n=t.start,r=t.end,a=t.perpendicularStart,i=t.perpendicularEnd,o=e.shortestDiameter;return{longAxis:{point1:n,point2:r},shortAxis:{point1:a,point2:i},longAxisLength:e.longestDiameter,shortAxisLength:o,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Bidirectional",finding:e.finding,findingSites:e.findingSites||[]}}}]),e}();Q.toolType=W,Q.utilityToolType=W,Q.TID300Representation=X,Q.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===W},B.registerTool(Q);var $=r.BF.TID300.Ellipse,J="EllipticalRoi",K=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.NUMGroup,i=n.SCOORDGroup.GraphicData,o=[{x:i[0],y:i[1]},{x:i[2],y:i[3]}],u=[{x:i[4],y:i[5]},{x:i[6],y:i[7]}],s=Math.sqrt(Math.pow(u[0].x-u[1].x,2)+Math.pow(u[0].y-u[1].y,2)),c=(u[1].x-u[0].x)/s,l=(u[1].y-u[0].y)/s,d=s/2,p={x:o[0].x+c*d,y:o[0].y+l*d},g={x:o[1].x-c*d,y:o[1].y-l*d};return f(f({},r),{},{toolType:e.toolType,active:!1,cachedStats:{area:a?a.MeasuredValueSequence.NumericValue:0},handles:{end:{x:p.x,y:p.y,highlight:!1,active:!1},initialRotation:0,start:{x:g.x,y:g.y,highlight:!1,active:!1},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,visible:!0})}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.cachedStats,n=void 0===t?{}:t,r=e.handles,a=e.finding,i=e.findingSites,o=r.start,u=r.end,s=n.area,c=Math.abs(o.x-u.x)/2,l=Math.abs(o.y-u.y)/2,d=[],f={x:(o.x+u.x)/2,y:(o.y+u.y)/2};c>l?(d.push({x:f.x-c,y:f.y}),d.push({x:f.x+c,y:f.y}),d.push({x:f.x,y:f.y-l}),d.push({x:f.x,y:f.y+l})):(d.push({x:f.x,y:f.y-l}),d.push({x:f.x,y:f.y+l}),d.push({x:f.x-c,y:f.y}),d.push({x:f.x+c,y:f.y}));return{area:s,points:d,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:EllipticalRoi",finding:a,findingSites:i||[]}}}]),e}();K.toolType=J,K.utilityToolType=J,K.TID300Representation=$,K.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===J},B.registerTool(K);var Z=r.BF.TID300.Circle,ee="CircleRoi",te=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.NUMGroup,i=n.SCOORDGroup.GraphicData,o={x:i[0],y:i[1]},u={x:i[2],y:i[3]};return f(f({},r),{},{toolType:e.toolType,active:!1,cachedStats:{area:a?a.MeasuredValueSequence.NumericValue:0,radius:0,perimeter:0},handles:{end:f(f({},u),{},{highlight:!1,active:!1}),initialRotation:0,start:f(f({},o),{},{highlight:!1,active:!1}),textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,visible:!0})}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.cachedStats,n=void 0===t?{}:t,r=e.handles,a=e.finding,i=e.findingSites,o=r.start,u=r.end,s=n.area,c=n.radius,l=2*Math.PI*c,d=[];d.push(o),d.push(u);return{area:s,perimeter:l,radius:c,points:d,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:CircleRoi",finding:a,findingSites:i||[]}}}]),e}();te.toolType=ee,te.utilityToolType=ee,te.TID300Representation=Z,te.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===ee},B.registerTool(te);var ne=r.BF.TID300.Point,re="ArrowAnnotate",ae="CORNERSTONEFREETEXT",ie=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.SCOORDGroup,i=n.findingGroup.ConceptCodeSequence.CodeMeaning,o=a.GraphicData;return f(f({},r),{},{toolType:e.toolType,active:!1,handles:{start:{x:o[0],y:o[1],highlight:!0,active:!1},end:{x:4==o.length?o[2]:o[0]+20,y:4==o.length?o[3]:o[1]+20,highlight:!0,active:!1},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,text:i,visible:!0})}},{key:"getTID300RepresentationArguments",value:function(e){var t=[e.handles.start,e.handles.end],n=e.finding,r={points:t,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:ArrowAnnotate",findingSites:e.findingSites||[]};return n&&n.CodeValue===ae||(n={CodeValue:ae,CodingSchemeDesignator:"CST4",CodeMeaning:e.text}),r.finding=n,r}}]),e}();ie.toolType=re,ie.utilityToolType=re,ie.TID300Representation=ne,ie.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===re},B.registerTool(ie);var oe=r.BF.TID300.CobbAngle,ue="CobbAngle",se=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.NUMGroup,i=n.SCOORDGroup,o=f(f({},r),{},{rAngle:a.MeasuredValueSequence.NumericValue,toolType:e.toolType,handles:{start:{},end:{},start2:{highlight:!0,drawnIndependently:!0},end2:{highlight:!0,drawnIndependently:!0},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}),u=y(i.GraphicData,8);return o.handles.start.x=u[0],o.handles.start.y=u[1],o.handles.end.x=u[2],o.handles.end.y=u[3],o.handles.start2.x=u[4],o.handles.start2.y=u[5],o.handles.end2.x=u[6],o.handles.end2.y=u[7],o}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.handles,n=e.finding,r=e.findingSites;return{point1:t.start,point2:t.end,point3:t.start2,point4:t.end2,rAngle:e.rAngle,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:CobbAngle",finding:n,findingSites:r||[]}}}]),e}();se.toolType=ue,se.utilityToolType=ue,se.TID300Representation=oe,se.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===ue},B.registerTool(se);var ce=r.BF.TID300.Angle,le="Angle",de=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.NUMGroup,i=n.SCOORDGroup,o=f(f({},r),{},{rAngle:a.MeasuredValueSequence.NumericValue,toolType:e.toolType,handles:{start:{},middle:{},end:{},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}),u=y(i.GraphicData,8);return o.handles.start.x=u[0],o.handles.start.y=u[1],o.handles.middle.x=u[2],o.handles.middle.y=u[3],o.handles.middle.x=u[4],o.handles.middle.y=u[5],o.handles.end.x=u[6],o.handles.end.y=u[7],o}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.handles,n=e.finding,r=e.findingSites;return{point1:t.start,point2:t.middle,point3:t.middle,point4:t.end,rAngle:e.rAngle,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Angle",finding:n,findingSites:r||[]}}}]),e}();de.toolType=le,de.utilityToolType=le,de.TID300Representation=ce,de.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===le},B.registerTool(de);var fe=r.BF.TID300.Polyline,pe=function(){function e(){h(this,e)}return v(e,null,[{key:"getMeasurementData",value:function(t){var n=B.getSetupMeasurementData(t),r=n.defaultState,a=n.SCOORDGroup,i=n.NUMGroup,o=f(f({},r),{},{toolType:e.toolType,handles:{start:{},end:{},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},initialRotation:0},cachedStats:{area:i?i.MeasuredValueSequence.NumericValue:0},color:void 0,invalidated:!0}),u=y(a.GraphicData,6);return o.handles.start.x=u[0],o.handles.start.y=u[1],u[2],u[3],o.handles.end.x=u[4],o.handles.end.y=u[5],o}},{key:"getTID300RepresentationArguments",value:function(e){var t=e.finding,n=e.findingSites,r=e.cachedStats,a=void 0===r?{}:r,i=e.handles,o=i.start,u=i.end;return{points:[o,{x:o.x,y:u.y},u,{x:u.x,y:o.y}],area:a.area,perimeter:a.perimeter,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:RectangleRoi",finding:t,findingSites:n||[]}}}]),e}();pe.toolType="RectangleRoi",pe.utilityToolType="RectangleRoi",pe.TID300Representation=fe,pe.isValidCornerstoneTrackingIdentifier=function(e){if(!e.includes(":"))return!1;var t=y(e.split(":"),2),n=t[0],r=t[1];return n===G&&r===pe.toolType},B.registerTool(pe);var ge=r.BF.orientation,he=ge.rotateDirectionCosinesInPlane,me=ge.flipImageOrientationPatient,ve=ge.flipMatrix2D,Se=ge.rotateMatrix902D,ye=r.BF.datasetToBlob,Ie=r.BF.BitArray,Te=r.BF.DicomMessage,De=r.BF.DicomMetaDictionary,Oe=r.z8.Normalizer,Re=r.h4.Segmentation,be={generateSegmentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0},r=t.toolState,a=t.segments,i=e[0],o={x:i.columns,y:i.rows,z:e.length};if(o.xy=o.x*o.y,!xe(s,a))throw new Error("No segments to export!");for(var u=i.imageId.includes("?frame"),s=function(e,t,n){var r=[];if(t){var a=e[0].data.byteArray.buffer,i=Te.readFile(a),o=De.naturalizeDataset(i.dict);o._meta=De.namifyDataset(i.meta),r.push(o)}else for(var u=0;u<e.length;u++){var s=e[u].data.byteArray.buffer,c=Te.readFile(s),l=De.naturalizeDataset(c.dict);l._meta=De.namifyDataset(c.meta),r.push(l)}var d=Oe.normalizeToDataset(r);return new Re([d],n)}(e,u,n),c=function(e,t,n){for(var r=[],a=[],i=0;i<n.length;i++)n[i]&&(r.push(i),a.push([]));for(var o=0;o<t.length;o++)for(var u=e[t[o].imageId],s=0;s<r.length;s++){var c=r[s];u&&u.brush&&u.brush.data&&u.brush.data[c]&&u.brush.data[c].pixelData&&a[s].push(o)}return{referencedFramesPerSegment:a,segmentIndicies:r}}(r,e,a),l=c.referencedFramesPerSegment,d=c.segmentIndicies,f=0,p=0;p<l.length;p++)f+=l[p].length;s.setNumberOfFrames(f);for(var g=0;g<d.length;g++){var h=d[g],m=l[g],v=m.map((function(e){return e+1})),S=a[h];s.addSegment(S,Ce(h,m,r,e,o),v)}return s.bitPackPixelData(),ye(s.dataset)},generateToolState:function(e,t,n){var a=Te.readFile(t),i=De.naturalizeDataset(a.dict);i._meta=De.namifyDataset(a.meta);var u=Oe.normalizeToDataset([i]),s=n.get("imagePlaneModule",e[0]);s||console.warn("Insufficient metadata, imagePlaneModule missing.");for(var c=function(e){var t=[];t[0]=e,t[1]=me.h(e),t[2]=me.v(e);var n=he(e,Math.PI/2);return t[3]=n,t[4]=me.h(n),t[5]=me.v(n),t[6]=he(e,Math.PI),t[7]=he(e,1.5*Math.PI),t}(Array.isArray(s.rowCosines)?[].concat(I(s.rowCosines),I(s.columnCosines)):[s.rowCosines.x,s.rowCosines.y,s.rowCosines.z,s.columnCosines.x,s.columnCosines.y,s.columnCosines.z]),l=u.SharedFunctionalGroupsSequence,d=l.PlaneOrientationSequence?l.PlaneOrientationSequence.ImageOrientationPatient:void 0,f=u.Columns*u.Rows,p=function(e){var t=[],n=e.SegmentSequence;if(Array.isArray(n))for(var r=0;r<n.length;r++)t.push(n[r]);else t.push(n);return{seriesInstanceUid:e.ReferencedSeriesSequence.SeriesInstanceUID,data:t}}(u),g=function(e){var t=e.SegmentationType;if("BINARY"===t)return Ie.unpack(e.PixelData);var n=new Uint8Array(e.PixelData),a=e.MaximumFractionalValue,i=void 0===n.find((function(e){return 0!==e&&e!==a}));if(!i)return void r.Rm.warn("This is a fractional segmentation, which is not currently supported.");return r.Rm.warn("This segmentation object is actually binary... processing as such."),n}(u),h=u.PerFrameFunctionalGroupsSequence,m={},v=!0,S=0;S<h.length;S++){var y=h[S],T=d||y.PlaneOrientationSequence.ImageOrientationPatient,D=Ee(o()(new Uint8Array(g.buffer,S*f,f),[u.Rows,u.Columns]),T,c);if(!D){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. "),v=!1;break}var O=y.SegmentIdentificationSequence.ReferencedSegmentNumber-1;we(m,Me(l.DerivationImageSequence&&l.DerivationImageSequence.SourceImageSequence?l.DerivationImageSequence.SourceImageSequence[S]:y.DerivationImageSequence.SourceImageSequence,e,n),O,D)}if(!v)return;return{toolState:m,segMetadata:p}}};function Ce(e,t,n,r,a){for(var i=new Uint8Array(a.xy*t.length),o=0,u=0;u<t.length;u++)for(var s=n[r[t[u]].imageId].brush.data[e].pixelData,c=0;c<s.length;c++)i[o]=s[c],o++;return i}function xe(e,t){for(var n=0,r=0;r<t.length;r++)t[r]&&n++;return n}function we(e,t,n,r){e[t]?e[t].brush?e[t].brush.data||(e[t].brush.data=[]):(e[t].brush={},e[t].brush.data=[]):(e[t]={},e[t].brush={},e[t].brush.data=[]),e[t].brush.data[n]={};var a=e[t].brush.data[n];a.pixelData=new Uint8Array(r.data.length);for(var i=a.pixelData,o=0;o<i.length;o++)r.data[o]?i[o]=1:i[o]=0}function Me(e,t,n){var r=e.ReferencedSOPInstanceUID,a=e.ReferencedFrameNumber;return a?function(e,t,n,r){var a=n.find((function(n){var a=r.get("sopCommonModule",n);if(a){var i=Number(n.split("frame=")[1]);return a.sopInstanceUID===e&&i===t-1}}));return a}(r,a,t,n):function(e,t,n){return t.find((function(t){var r=n.get("sopCommonModule",t);if(r)return r.sopInstanceUID===e}))}(r,t,n)}function Ee(e,t,n){return Ne(t,n[0])?e:Ne(t,n[1])?ve.v(e):Ne(t,n[2])?ve.h(e):Ne(t,n[3])?Se(e):Ne(t,n[4])?ve.h(Se(e)):Ne(t,n[5])?ve.v(Se(e)):Ne(t,n[6])?Se(Se(e)):Ne(t,n[7])?Se(Se(Se(e))):void 0}var Pe,Ae=1e-5;function Ne(e,t){return Math.abs(e[0]-t[0])<Ae&&Math.abs(e[1]-t[1])<Ae&&Math.abs(e[2]-t[2])<Ae&&Math.abs(e[3]-t[3])<Ae&&Math.abs(e[4]-t[4])<Ae&&Math.abs(e[5]-t[5])<Ae}!function(e){e.SEGMENTATION_LOAD_PROGRESS="CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS"}(Pe||(Pe={}));var qe=Pe,_e=Object.freeze({__proto__:null,Events:qe}),Ue=r.BF.orientation,Ve=Ue.rotateDirectionCosinesInPlane,Fe=Ue.flipImageOrientationPatient,ke=Ue.flipMatrix2D,Be=Ue.rotateMatrix902D,Ge=Ue.nearlyEqual,Le=r.p.BitArray,je=r.p.DicomMessage,Ye=r.p.DicomMetaDictionary,ze=r.z8.Normalizer,He=r.h4.Segmentation,Xe=r.BF.compression,We=Xe.encode,Qe=Xe.decode,$e={includeSliceSpacing:!0,rleEncode:!1};function Je(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Object.assign({},$e,n),a=Array.isArray(t)?t:[t],i=0,o=[],u=function(){for(var e=a[s],t=e.labelmaps2D,n=e.metadata,r=[],u=1;u<n.length;u++)n[u]&&(r[u]=[]);for(var c=function(e){var n=t[e];t[e]&&n.segmentsOnLabelmap.forEach((function(t){0!==t&&(r[t].push(e),i++)}))},l=0;l<t.length;l++)c(l);o[s]=r},s=0;s<a.length;s++)u();e.setNumberOfFrames(i);for(var c=0;c<a.length;c++)for(var l=o[c],d=a[c],f=d.metadata,p=1;p<l.length;p++){var g=l[p];if(g){var h=g.map((function(e){return e+1})),m=f[p],v=Ke(d,g);e.addSegmentFromLabelmap(m,v,p,h)}}if(r.rleEncode){var S=We(e.dataset.PixelData,i,e.dataset.Rows,e.dataset.Columns);e.assignToDataset({BitsAllocated:"8",BitsStored:"8",HighBit:"7",SegmentationType:"FRACTIONAL",SegmentationFractionalType:"PROBABILITY",MaximumFractionalValue:"255"}),e.dataset._meta.TransferSyntaxUID={Value:["1.2.840.10008.1.2.5"],vr:"UI"},e.dataset._vrMap.PixelData="OB",e.dataset.PixelData=S}else e.bitPackPixelData();return e}function Ke(e,t){for(var n=e.labelmaps2D,r=[],a=0;a<t.length;a++){var i=t[a];r.push(n[i].pixelData)}return r}function Ze(){var e;return e=p().mark((function e(t,n,r,a){var i,o,u,s,c,l,d,f,g,h,m,v,S,y,T,D,O,R,b,C,x,w,M,E,P,A,N,q,_,U,V,F,k,B,G;return p().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.skipOverlapping,o=void 0!==i&&i,u=a.tolerance,s=void 0===u?.001:u,c=a.TypedArrayConstructor,l=void 0===c?Uint8Array:c,d=a.maxBytesPerChunk,f=void 0===d?199e6:d,g=a.eventTarget,h=a.triggerEvent,m=je.readFile(n),(v=Ye.naturalizeDataset(m.dict))._meta=Ye.namifyDataset(m.meta),S=ze.normalizeToDataset([v]),y=r.get("imagePlaneModule",t[0]),T=r.get("generalSeriesModule",t[0]),D=T.seriesInstanceUID,y||console.warn("Insufficient metadata, imagePlaneModule missing."),O=Array.isArray(y.rowCosines)?[].concat(I(y.rowCosines),I(y.columnCosines)):[y.rowCosines.x,y.rowCosines.y,y.rowCosines.z,y.columnCosines.x,y.columnCosines.y,y.columnCosines.z],R=ut(O),b=S.Columns*S.Rows,C=lt(S,D),"1.2.840.10008.1.2.5"!==S._meta.TransferSyntaxUID.Value[0]){e.next=23;break}if(M=Array.isArray(S.PixelData)?S.PixelData:[S.PixelData],x=Qe(M,S.Rows,S.Columns),1!==S.BitsStored){e.next=20;break}return console.warn("No implementation for rle + bitbacking."),e.abrupt("return");case 20:w=[x],e.next=26;break;case 23:if(w=ot(S,{maxBytesPerChunk:f})){e.next=26;break}throw new Error("Fractional segmentations are not yet supported");case 26:E=it(S,R,[y.rows,y.columns,t.length],s),P=t.reduce((function(e,t){return e[r.get("generalImageModule",t).sopInstanceUID]=t,e}),{}),A=!1,o||(A=tt(w,S,t,R,r,s,l,P)),e.t0=E,e.next="Planar"===e.t0?33:"Perpendicular"===e.t0?35:"Oblique"===e.t0?36:37;break;case 33:return N=A?nt:at,e.abrupt("break",37);case 35:throw new Error("Segmentations orthogonal to the acquisition plane of the source data are not yet supported.");case 36:throw new Error("Segmentations oblique to the acquisition plane of the source data are not yet supported.");case 37:return(q=[])[0]=[],_=[],U=b*t.length*l.BYTES_PER_ELEMENT,(V=[])[0]=new ArrayBuffer(U),F=t.reduce((function(e,t,n){return e.indices[t]=n,e.metadata[t]=r.get("instance",t),e}),{indices:{},metadata:{}}),k=new Map,e.next=47,N(_,q,V,w,S,t,R,r,s,l,k,P,F,g,h);case 47:return B=e.sent,G=new Map,k.forEach((function(e,t){var n=ft(e,S),r=n.xAcc,a=n.yAcc,i=n.zAcc,o=n.count;G.set(t,{x:Math.floor(r/o),y:Math.floor(a/o),z:Math.floor(i/o)})})),e.abrupt("return",{labelmapBufferArray:V,segMetadata:C,segmentsOnFrame:_,segmentsOnFrameArray:q,centroids:G,overlappingSegments:B});case 51:case"end":return e.stop()}}),e)})),Ze=function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function o(e){g(i,r,a,o,u,"next",e)}function u(e){g(i,r,a,o,u,"throw",e)}o(void 0)}))},Ze.apply(this,arguments)}function et(e,t,n,r,a,i){var o=void 0;if(!e)return o;var u=e.FrameOfReferenceUID,s=e.PerFrameFunctionalGroupsSequence,c=e.SourceImageSequence,l=e.ReferencedSeriesSequence;if(!s||0===s.length)return o;var d=s[t];if(!d)return o;var f=void 0;if(d.DerivationImageSequence){var p=d.DerivationImageSequence;Array.isArray(p)&&(p=0!==p.length?p[0]:void 0),p&&(f=p.SourceImageSequence,Array.isArray(f)&&(f=0!==f.length?f[0]:void 0))}else c&&0!==c.length&&(console.warn("DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image."),f=c[t]);(f&&(o=function(e,t){var n=e.ReferencedSOPInstanceUID,r=e.ReferencedFrameNumber;return r?function(e,t,n){var r=n[e];if(!r)return;var a=Number(r.split("frame=")[1]);return a===t-1?r:void 0}(n,r,t):t[n]}(f,i)),void 0===o&&l)&&(o=function(e,t,n,r,a,i){if(void 0===e||void 0===n.PlanePositionSequence||void 0===n.PlanePositionSequence[0]||void 0===n.PlanePositionSequence[0].ImagePositionPatient)return;for(var o=0;o<r.length;++o){var u=a.get("instance",r[o]);if(void 0!==u&&void 0!==u.ImagePositionPatient&&u.FrameOfReferenceUID===t&&u.SeriesInstanceUID===e&&ct(n.PlanePositionSequence[0].ImagePositionPatient,u.ImagePositionPatient,i))return r[o]}}((Array.isArray(l)?l[0]:l).SeriesInstanceUID,u,d,n,r,a));return o}function tt(e,t,n,r,a,i,u,s){var c=t.SharedFunctionalGroupsSequence,l=t.PerFrameFunctionalGroupsSequence,d=t.SegmentSequence,f=t.Rows,p=t.Columns;if(d.length<2)return!1;for(var g=c.PlaneOrientationSequence?c.PlaneOrientationSequence.ImageOrientationPatient:void 0,h=p*f,m=l.length,v=new Map,S=function(){if(void 0===rt(t,I))return console.warn("Could not retrieve the segment index for frame segment "+I+", skipping this frame."),0;var e=et(t,I,n,a,i,s);if(!e)return console.warn("Image not present in stack, can't import frame : "+I+"."),0;var r=n.findIndex((function(t){return t===e}));if(v.has(r)){var o=v.get(r);o.includes(I)||(o.push(I),v.set(r,o))}else v.set(r,[I])},I=0;I<m;++I)S();var T,D=O(v.entries());try{for(D.s();!(T=D.n()).done;)for(var R=y(T.value,2)[1],b=new u(h).fill(0),C=0;C<R.length;++C){var x=R[C],w=l[x],M=g||w.PlaneOrientationSequence.ImageOrientationPatient,E=dt(e,x*h,h),P=st(o()(E,[f,p]),M,r,i);if(P){for(var A=P.data,N=0,q=A.length;N<q;++N)if(0!==A[N]&&(b[N]++,b[N]>1))return!0}else console.warn("Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.")}}catch(e){D.e(e)}finally{D.f()}return!1}function nt(e,t,n,r,a,i,u,c,l,d,f,p){for(var g=a.SharedFunctionalGroupsSequence,h=a.PerFrameFunctionalGroupsSequence,m=a.Rows,v=a.Columns,S=g.PlaneOrientationSequence?g.PlaneOrientationSequence.ImageOrientationPatient:void 0,y=v*m,I=y*i.length*d.BYTES_PER_ELEMENT,T=1,D=0,O=n[D].slice(0),R=s()(t[D]),b=a.SegmentSequence.length,C=1;C<=b;++C){for(var x=function(f){var g=h[f],b=rt(a,f);if(void 0===b)throw new Error("Could not retrieve the segment index. Aborting segmentation loading.");if(b!==C)return w=f,0;var x=S||g.PlaneOrientationSequence.ImageOrientationPatient,M=dt(r,f*y,y),E=st(o()(M,[m,v]),x,u,l);if(!E)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 P=et(a,f,i,c,l,p);if(!P)return console.warn("Image not present in stack, can't import frame : "+f+"."),w=f,0;var A=c.get("instance",P);if(m!==A.Rows||v!==A.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. ");for(var N=i.findIndex((function(e){return e===P})),q=y*N*d.BYTES_PER_ELEMENT,_=new d(O,q,y),U=E.data,V=!1,F=0,k=E.data.length;F<k;++F)if(U[F]){if(0!==_[F]){++D>=T&&(n[D]=new ArrayBuffer(I),t[D]=[],T++),O=n[D].slice(0),R=s()(t[D]),f=0;break}_[F]=b,V=!0}V&&(R[N]||(R[N]=[]),R[N].push(b),e[N]||(e[N]=[]),e[N].push(b)),w=f},w=0,M=h.length;w<M;++w)x(w);n[D]=O.slice(0),t[D]=s()(R),O=n[D=0].slice(0),R=s()(t[D])}}var rt=function(e,t){var n=e.PerFrameFunctionalGroupsSequence,r=e.SharedFunctionalGroupsSequence,a=n[t];return a&&a.SegmentIdentificationSequence?a.SegmentIdentificationSequence.ReferencedSegmentNumber:r.SegmentIdentificationSequence?r.SegmentIdentificationSequence.ReferencedSegmentNumber:void 0};function at(e,t,n,r,a,i,u,s,c,l,d,f,p,g,h){var m=a.SharedFunctionalGroupsSequence,v=a.PerFrameFunctionalGroupsSequence,S=a.Rows,y=a.Columns,I=m.PlaneOrientationSequence?m.PlaneOrientationSequence.ImageOrientationPatient:void 0,T=y*S,D=0,O=v.length,R=Math.ceil(O/10),b=h&&g,C=!1;return new Promise((function(t){!function m(){for(var x=Math.min(D+R,O);D<x;++D){var w=v[D],M=I||w.PlaneOrientationSequence.ImageOrientationPatient,E=dt(r,D*T,T),P=st(o()(E,[S,y]),M,u,c);if(!P)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 A=rt(a,D);if(void 0===A)throw new Error("Could not retrieve the segment index. Aborting segmentation loading.");d.has(A)||d.set(A,{});var N=et(a,D,i,s,c,f);if(N){var q=p.metadata[N];if(S!==q.Rows||y!==q.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. ");for(var _=p.indices[N],U=T*_*l.BYTES_PER_ELEMENT,V=new l(n[0],U,T),F=P.data,k=[],B=0,G=P.data.length;B<G;++B)if(F[B]){for(var L=B;L<G;++L)F[L]&&(C||0===V[L]||(C=!0),V[L]=A,k.push(L));e[_]||(e[_]=[]),e[_].push(A);break}var j=d.get(A);j[_]=k,d.set(A,j)}else console.warn("Image not present in stack, can't import frame : "+D+".")}if(b){var Y=Math.round(D/O*100);h(g,qe.SEGMENTATION_LOAD_PROGRESS,{percentComplete:Y})}D<O?setTimeout(m,0):t(C)}()}))}function it(e,t,n,r){var a=e.SharedFunctionalGroupsSequence,i=e.PerFrameFunctionalGroupsSequence,o=a.PlaneOrientationSequence?a.PlaneOrientationSequence.ImageOrientationPatient:void 0,u=i[0],s=o||u.PlaneOrientationSequence.ImageOrientationPatient;return t.some((function(e){return ct(s,e,r)}))?"Planar":function(e,t,n){var r=Math.abs(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]),a=Math.abs(e[3]*t[3]+e[4]*t[4]+e[5]*t[5]);return(r<n||Math.abs(r-1)<n)&&(a<n||Math.abs(a-1)<n)}(s,t[0],r)&&n.includes(e.Rows)&&n.includes(e.Columns)?"Perpendicular":"Oblique"}function ot(e,t){var n,a=e.SegmentationType;if(void 0===(n=Array.isArray(e.PixelData)?e.PixelData[0]:e.PixelData)&&r.Rm.error("This segmentation pixeldata is undefined."),"BINARY"===a)return function(e,t){for(var n=new Uint8Array(e),r=[],a=8*t,i=Math.ceil(8*n.length/a),o=0;o<i;o++){var u=o*a,s=Math.min(u+a,8*n.length),c=Math.floor(u/8),l=Math.ceil(s/8),d=n.slice(c,l),f=Le.unpack(d);r.push(f)}return r}(n,t.maxBytesPerChunk);var i=new Uint8Array(n),o=e.MaximumFractionalValue;return void 0===i.find((function(e){return 0!==e&&e!==o}))?(r.Rm.warn("This segmentation object is actually binary... processing as such."),i):void 0}function ut(e){var t=[];t[0]=e,t[1]=Fe.h(e),t[2]=Fe.v(e);var n=Ve(e,Math.PI/2);return t[3]=n,t[4]=Fe.h(n),t[5]=Fe.v(n),t[6]=Ve(e,Math.PI),t[7]=Ve(e,1.5*Math.PI),t}function st(e,t,n,r){return ct(t,n[0],r)?e:ct(t,n[1],r)?ke.v(e):ct(t,n[2],r)?ke.h(e):ct(t,n[3],r)?Be(e):ct(t,n[4],r)?Be(ke.h(e)):ct(t,n[5],r)?Be(ke.v(e)):ct(t,n[6],r)?Be(Be(e)):ct(t,n[7],r)?Be(Be(Be(e))):void 0}function ct(e,t,n){if(e.length!=t.length)return!1;for(var r=0;r<e.length;++r)if(!Ge(e[r],t[r],n))return!1;return!0}function lt(e,t){var n=e.SegmentSequence;return{seriesInstanceUid:t,data:Array.isArray(n)?[void 0].concat(I(n)):[void 0,n]}}function dt(e,t,n){var r=function(e,t,n){var r=e.reduce((function(e,t){return e+t.length}),0);if(t<0||t+n>r)throw new Error("Offset and length out of bounds");var a=0,i=t;for(;i>=e[a].length;)i-=e[a].length,a++;var o=a,u=i+n;for(;u>e[o].length;)u-=e[o].length,o++;return{start:{chunkIndex:a,offset:i},end:{chunkIndex:o,offset:u}}}(e,t,n);if(r.start.chunkIndex===r.end.chunkIndex)return new Uint8Array(e[r.start.chunkIndex].buffer,r.start.offset,n);for(var a=new Uint8Array(n),i=0,o=r.start.chunkIndex;o<=r.end.chunkIndex;o++){var u=o===r.start.chunkIndex?r.start.offset:0,s=o===r.end.chunkIndex?r.end.offset:e[o].length;a.set(new Uint8Array(e[o].buffer,u,s-u),i),i+=s-u}return a}function ft(e,t){for(var n=0,r=0,a=0,i=0,o=0,u=Object.entries(e);o<u.length;o++){var s=y(u[o],2),c=s[0],l=s[1],d=Number(c);if(l&&0!==l.length){var f,p=O(l);try{for(p.s();!(f=p.n()).done;){var g=f.value,h=Math.floor(g/t.Rows);n+=g%t.Rows,r+=h,a+=d,i++}}catch(e){p.e(e)}finally{p.f()}}}return{xAcc:n,yAcc:r,zAcc:a,count:i}}var pt={generateSegmentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e[0].imageId.includes("?frame");return Je(function(e,t,n){var r=[];if(t){var a=e[0].data.byteArray.buffer,i=je.readFile(a),o=Ye.naturalizeDataset(i.dict);o._meta=Ye.namifyDataset(i.meta),r.push(o)}else for(var u=0;u<e.length;u++){var s=e[u].data.byteArray.buffer,c=je.readFile(s),l=Ye.naturalizeDataset(c.dict);l._meta=Ye.namifyDataset(c.meta),r.push(l)}var d=ze.normalizeToDataset(r);return new He([d],n)}(e,r,n),t,n)},generateToolState:function(e,t,n,r){return Ze.apply(this,arguments)},fillSegmentation:Je};var gt={Length:Y,FreehandRoi:H,Bidirectional:Q,EllipticalRoi:K,CircleRoi:te,ArrowAnnotate:ie,MeasurementReport:B,CobbAngle:se,Angle:de,RectangleRoi:pe},ht={Segmentation:{generateSegmentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:4;if(4===r)return pt.generateSegmentation(e,t,n);if(3===r)return be.generateSegmentation(e,t,n);console.warn("No generateSegmentation adapater for cornerstone version ".concat(r,", exiting."))},generateToolState:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.001,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:4;if(4===i)return pt.generateToolState(e,t,n,r,a);if(3===i)return be.generateToolState(e,t,n);console.warn("No generateToolState adapater for cornerstone version ".concat(i,", exiting."))},fillSegmentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:4;if(4===r)return pt.fillSegmentation(e,t,n);console.warn("No generateSegmentation adapater for cornerstone version ".concat(r,", exiting."))}}},mt=function(){return mt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},mt.apply(this,arguments)};function vt(e,t,n){if(n||2===arguments.length)for(var r,a=0,i=t.length;a<i;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var St="Cornerstone3DTools@^0.1.0",yt={CodingSchemeDesignator:"CORNERSTONEJS",codeValues:{CORNERSTONEFREETEXT:"CORNERSTONEFREETEXT"}},It=r.BF.TID1500,Tt=r.BF.addAccessors,Dt=r.h4.StructuredReport,Ot=r.z8.Normalizer,Rt=It.TID1500MeasurementReport,bt=It.TID1501MeasurementGroup,Ct=r.p.DicomMetaDictionary,xt={CodingSchemeDesignator:"DCM",CodeValue:"121071"},wt={CodingSchemeDesignator:"SCT",CodeValue:"363698007"},Mt={CodingSchemeDesignator:"SRT",CodeValue:"G-C0E3"},Et=function(e,t,n){var r=e.ConceptNameCodeSequence;if(r){var a=r.CodingSchemeDesignator,i=r.CodeValue;return a==t.CodingSchemeDesignator&&i==t.CodeValue||n&&a==n.CodingSchemeDesignator&&i==n.CodeValue}};function Pt(e,t,n,r){var a=t[e],i=At.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[e];if(a&&a.data&&a.data.length&&i){var o=a.data.map((function(e){return function(e,t,n,r,a){var i=r.getTID300RepresentationArguments(e,a);return i.ReferencedSOPSequence=n,new r.TID300Representation(i)}(e,0,n,i,r)}));return new bt(o)}}var At=function(){function e(){}return e.getCornerstoneLabelFromDefaultState=function(e){var t=e.findingSites,n=void 0===t?[]:t,r=e.finding,a=yt.codeValues.CORNERSTONEFREETEXT,i=n.find((function(e){return e.CodeValue===a}));return i?i.CodeMeaning:r&&r.CodeValue===a?r.CodeMeaning:void 0},e.generateDatasetMeta=function(){var e=new Uint8Array(2);return e[1]=1,{FileMetaInformationVersion:{Value:[e.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[Ct.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}}},e.getSetupMeasurementData=function(t,n,r,a){var i=t.ContentSequence,o=b(i),u=o.find((function(e){return Et(e,xt)})),s=o.filter((function(e){return Et(e,wt,Mt)}))||[],c=o.find((function(e){return"NUM"===e.ValueType})),l=b(c.ContentSequence).find((function(e){return"SCOORD"===e.ValueType})),d=l.ContentSequence.ReferencedSOPSequence,f=d.ReferencedSOPInstanceUID,p=d.ReferencedFrameNumber,g=n[f],h=r.get("imagePlaneModule",g),m=u?Tt(u.ConceptCodeSequence):void 0,v=s.map((function(e){return Tt(e.ConceptCodeSequence)})),S={description:void 0,sopInstanceUid:f,annotation:{annotationUID:Ct.uid(),metadata:{toolName:a,referencedImageId:g,FrameOfReferenceUID:h.frameOfReferenceUID,label:""},data:void 0},finding:m,findingSites:v};return S.finding&&(S.description=S.finding.CodeMeaning),S.annotation.metadata.label=e.getCornerstoneLabelFromDefaultState(S),{defaultState:S,NUMGroup:c,SCOORDGroup:l,Refe