@ohif/extension-cornerstone-dicom-rt 3.14.0-beta.5 → 3.14.0-beta.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ohif/core"),require("@ohif/extension-cornerstone"),require("dcmjs"),require("@ohif/core/src"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/ui-next"),require("@cornerstonejs/tools/enums")):"function"==typeof define&&define.amd?define(["@ohif/core","@ohif/extension-cornerstone","dcmjs","@ohif/core/src","@ohif/i18n","@cornerstonejs/tools","@ohif/ui-next","@cornerstonejs/tools/enums"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-rt"]=t(require("@ohif/core"),require("@ohif/extension-cornerstone"),require("dcmjs"),require("@ohif/core/src"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@ohif/ui-next"),require("@cornerstonejs/tools/enums")):e["ohif-extension-cornerstone-dicom-rt"]=t(e["@ohif/core"],e["@ohif/extension-cornerstone"],e.dcmjs,e["@ohif/core/src"],e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@ohif/ui-next"],e["@cornerstonejs/tools/enums"])}(globalThis,(e,t,r,n,o,s,a,i)=>(()=>{var l,c,u={561(e,t,r){"use strict";r.r(t),r.d(t,{default:()=>p});var n=r(326),o=r(598),s=r.n(o),a=r(55),i=r(669);let l=function(e,t,r){let n=t.getCustomization("cornerstone.overlayViewportTools");return e.createToolGroupAndAddTools(r,n)};var c=r(459);function u(){return(u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}function f(e){let t,{servicesManager:r,commandsManager:o}=(0,c.useSystem)(),{children:s,displaySets:f,viewportOptions:p}=e,{displaySetService:d,toolGroupService:S,segmentationService:y,customizationService:m}=r.services,I=p.viewportId,h=`RTToolGroup-${I}`;if(f.length>1)throw Error("RT viewport should only have a single display set");let D=m.getCustomization("ui.loadingIndicatorTotalPercent"),R=f[0],[{viewports:b,activeViewportId:v},g]=(0,a.useViewportGrid)(),{setPositionPresentation:O}=(0,i.usePositionPresentationStore)(),[U,T]=(0,n.useState)(!R.isLoaded),[P,E]=(0,n.useState)({percentComplete:null,totalSegments:null}),C=(0,n.useRef)(null),w=R.referencedDisplaySetInstanceUID;if(!w){let{handled:e}=m.getCustomization("missingReferenceDisplaySetHandler")();if(e)return}let _=d.getDisplaySetByUID(w),x={PatientID:(t=_.images[0]).PatientID,PatientName:t.PatientName,PatientSex:t.PatientSex,PatientAge:t.PatientAge,SliceThickness:t.SliceThickness,StudyDate:t.StudyDate,SeriesDescription:t.SeriesDescription,SeriesInstanceUID:t.SeriesInstanceUID,SeriesNumber:t.SeriesNumber,ManufacturerModelName:t.ManufacturerModelName,SpacingBetweenSlices:t.SpacingBetweenSlices};C.current={displaySet:_,metadata:x},(0,n.useEffect)(()=>{U||I===v&&function({servicesManager:e,rtDisplaySet:t,viewportId:r,preHydrateCallbacks:n,hydrateRTDisplaySet:o}){i.utils.promptHydrationDialog({servicesManager:e,viewportId:r,displaySet:t,preHydrateCallbacks:n,hydrateCallback:o,type:"RTSTRUCT"})}({servicesManager:r,viewportId:I,rtDisplaySet:R,hydrateRTDisplaySet:async()=>o.runCommand("hydrateSecondaryDisplaySet",{displaySet:R,viewportId:I})})},[r,I,R,U,o,v]),(0,n.useEffect)(()=>{let{unsubscribe:e}=y.subscribe(y.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{if(e.rtDisplaySet?.displaySetInstanceUID===R.displaySetInstanceUID&&T(!1),R?.firstSegmentedSliceImageId&&p?.presentationIds){let{firstSegmentedSliceImageId:e}=R,{presentationIds:t}=p;O(t.positionPresentationId,{viewportType:"stack",viewReference:{referencedImageId:e},viewPresentation:{}})}});return()=>{e()}},[R]),(0,n.useEffect)(()=>{let e=y.subscribe(y.EVENTS.SEGMENT_LOADING_COMPLETE,({percentComplete:e,numSegments:t})=>{E({percentComplete:e,totalSegments:t})}),t=d.subscribe(d.EVENTS.DISPLAY_SETS_REMOVED,({displaySetInstanceUIDs:e})=>{let t=b.get(v);e.includes(t.displaySetInstanceUID)&&g.setDisplaySetsForViewport({viewportId:v,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe(),t.unsubscribe()}},[R,d,b,v,g]),(0,n.useEffect)(()=>{let e=S.getToolGroup(h);if(!e)return e=l(S,m,h),()=>{y.removeRepresentationsFromViewport(I),C.current=null,S.destroyToolGroup(h)}},[]);let N=(0,n.useCallback)(()=>{let{displaySet:t}=C.current;return n.createElement(i.OHIFCornerstoneViewport,u({},e,{displaySets:[t,R],viewportOptions:{viewportType:p.viewportType,toolGroupId:h,orientation:p.orientation,viewportId:p.viewportId,presentationIds:p.presentationIds},onElementEnabled:t=>{e.onElementEnabled?.(t)}}))},[I,R,h]),j=null;return C.current&&_.displaySetInstanceUID===C.current.displaySet.displaySetInstanceUID?(s&&s.length&&(j=s.map((e,t)=>e&&n.cloneElement(e,{viewportId:I,key:t}))),n.createElement(n.Fragment,null,n.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},U&&n.createElement(D,{className:"h-full w-full",totalNumbers:P.totalSegments,percentComplete:P.percentComplete,loadingText:"Loading RTSTRUCT..."}),N(),j))):null}f.propTypes={displaySets:s().arrayOf(s().object),viewportId:s().string.isRequired,dataSource:s().object,children:s().node};let p=f},856(e,t,r){"use strict";var n=r(183);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,s,a){if(a!==n){var i=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return r.PropTypes=r,r}},598(e,t,r){e.exports=r(856)()},183(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},249(e,t){"use strict";var r=Symbol.for("react.element"),n=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),s=(Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense")),a=(Symbol.for("react.memo"),Symbol.for("react.lazy")),i=Symbol.iterator,l={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},c=Object.assign,u={};function f(e,t,r){this.props=e,this.context=t,this.refs=u,this.updater=r||l}function p(){}function d(e,t,r){this.props=e,this.context=t,this.refs=u,this.updater=r||l}f.prototype.isReactComponent={},f.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},f.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},p.prototype=f.prototype;var S=d.prototype=new p;S.constructor=d,c(S,f.prototype),S.isPureReactComponent=!0;var y=Array.isArray,m=Object.prototype.hasOwnProperty,I=null,h={key:!0,ref:!0,__self:!0,__source:!0};function D(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){(0===e._status||-1===e._status)&&(e._status=1,e._result=t)},function(t){(0===e._status||-1===e._status)&&(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var R=null;t.Fragment=o,t.Suspense=s,t.cloneElement=function(e,t,n){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=c({},e.props),s=e.key,a=e.ref,i=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,i=I),void 0!==t.key&&(s=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(u in t)m.call(t,u)&&!h.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==l?l[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){l=Array(u);for(var f=0;f<u;f++)l[f]=arguments[f+2];o.children=l}return{$$typeof:r,type:e.type,key:s,ref:a,props:o,_owner:i}},t.createElement=function(e,t,n){var o,s={},a=null,i=null;if(null!=t)for(o in void 0!==t.ref&&(i=t.ref),void 0!==t.key&&(a=""+t.key),t)m.call(t,o)&&!h.hasOwnProperty(o)&&(s[o]=t[o]);var l=arguments.length-2;if(1===l)s.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];s.children=c}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===s[o]&&(s[o]=l[o]);return{$$typeof:r,type:e,key:a,ref:i,props:s,_owner:I}},t.lazy=function(e){return{$$typeof:a,_payload:{_status:-1,_result:e},_init:D}},t.useCallback=function(e,t){return R.useCallback(e,t)},t.useEffect=function(e,t){return R.useEffect(e,t)},t.useRef=function(e){return R.useRef(e)},t.useState=function(e){return R.useState(e)}},326(e,t,r){"use strict";e.exports=r(249)},713(e){"use strict";e.exports=s},404(e){"use strict";e.exports=i},2(t){"use strict";t.exports=e},459(e){"use strict";e.exports=n},669(e){"use strict";e.exports=t},545(e){"use strict";e.exports=o},55(e){"use strict";e.exports=a},111(e){"use strict";e.exports=r}},f={};function p(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={exports:{}};return u[e](r,r.exports,p),r.exports}p.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return p.d(t,{a:t}),t},p.d=(e,t)=>{for(var r in t)p.o(t,r)&&!p.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},p.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),p.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l=[],p.O=(e,t,r,n)=>{if(t){n=n||0;for(var o=l.length;o>0&&l[o-1][2]>n;o--)l[o]=l[o-1];l[o]=[t,r,n];return}for(var s=1/0,o=0;o<l.length;o++){for(var[t,r,n]=l[o],a=!0,i=0;i<t.length;i++)(!1&n||s>=n)&&Object.keys(p.O).every(e=>p.O[e](t[i]))?t.splice(i--,1):(a=!1,n<s&&(s=n));if(a){l.splice(o--,1);var c=r();void 0!==c&&(e=c)}}return e},p.F={},p.E=e=>{Object.keys(p.F).map(t=>{p.F[t](e)})},c={509:0},p.F.j=e=>{if(!p.o(c,e)||void 0===c[e]){c[e]=null;var t=document.createElement("link");p.nc&&t.setAttribute("nonce",p.nc),t.rel="prefetch",t.as="script",t.href=p.p+p.u(e),document.head.appendChild(t)}},p.O.j=e=>0===c[e],p.O(0,[509],()=>{[509].map(p.E)},5);var d={};return(()=>{"use strict";p.r(d),p.d(d,{default:()=>O});let e=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-rt"}').UU,t=`${e}.sopClassHandlerModule.dicom-rt`;var r=p(326),n=p(2),o=p(545),s=p.n(o),a=p(713),i=p(111),l=p.n(i);let{DicomMessage:c,DicomMetaDictionary:u}=l().data,f=l().data.Colors.dicomlab2RGB;async function S({instance:e,dataSource:t,extensionManager:r,rtStructDisplaySet:n,headers:o}){let s=e;if((!s||!s.ROIContourSequence)&&(!(s=await y({extensionManager:r,rtStructDisplaySet:n,headers:o}))||!s.ROIContourSequence))return Promise.reject("Invalid instance object or ROIContourSequence");let a=new Map;for(let e of s.ROIContourSequence){let r=e.ReferencedROINumber;if(!e||!e.ContourSequence){a.set(r,[Promise.resolve([])]);continue}for(let n of e.ContourSequence){if(!n||!n.ContourData)return Promise.reject("Invalid Contour or ContourData");let e=n.ContourData;if(Array.isArray(e))a.has(r)?a.get(r).push(Promise.resolve(e)):a.set(r,[Promise.resolve(e)]);else if(e&&e.BulkDataURI){let n=e.BulkDataURI;if(!t||!t.retrieve||!t.retrieve.bulkDataURI)return Promise.reject("Invalid dataSource object or retrieve function");let o=t.retrieve.bulkDataURI({BulkDataURI:n,StudyInstanceUID:s.StudyInstanceUID,SeriesInstanceUID:s.SeriesInstanceUID,SOPInstanceUID:s.SOPInstanceUID});a.has(r)?a.get(r).push(o):a.set(r,[o])}else{if(!e||!e.InlineBinary)return Promise.reject(`Invalid ContourData: ${e}`);let t=atob(e.InlineBinary).split("\\"),n=[];if(t.length%3!=0)return Promise.reject("ContourData raw values not divisible by 3");for(let e=0;e<t.length;e+=3)if(e+2<t.length){let r=parseFloat(t[e]),o=parseFloat(t[e+1]),s=parseFloat(t[e+2]);if(isNaN(r)||isNaN(o)||isNaN(s))return Promise.reject("Error parsing contourData from InlineBinary format");n.push(r),n.push(o),n.push(s)}a.has(r)?a.get(r).push(n):a.set(r,[n])}}}let i=new Map;for(let[e,t]of a.entries())i.set(e,await Promise.allSettled(t));return s.ROIContourSequence.forEach(e=>{try{let t=e.ReferencedROINumber,r=i.get(t);e.ContourSequence&&e.ContourSequence.forEach((e,t)=>{let n=r[t];if("fulfilled"===n.status)if(Array.isArray(n.value)&&n.value.every(e=>Number.isFinite(Number(e))))e.ContourData=n.value.map(Number);else{let t=new Uint8Array(n.value),r=new TextDecoder().decode(t);"string"==typeof r&&r.includes("\\")?e.ContourData=r.split("\\").map(parseFloat):e.ContourData=[]}else console.error(n.reason)})}catch(e){console.error(e)}}),s}let y=async({extensionManager:e,rtStructDisplaySet:t,headers:r})=>{let{dicomLoaderService:n}=e.getModuleEntry("@ohif/extension-cornerstone.utilityModule.common").exports,o=await n.findDicomDataPromise(t,null,r),s=c.readFile(o),a=u.naturalizeDataset(s.dict);return a._meta=u.namifyDataset(s.meta),a};async function m(e,t,r){let n=e.getActiveDataSource()[0],{bulkDataURI:o}=n.getConfig?.()||{};t.isLoaded=!0;let s=t.instance,{StructureSetROISequence:a,ROIContourSequence:i,RTROIObservationsSequence:l}=s=o&&o.enabled?await S({instance:s,dataSource:n,extensionManager:e,rtStructDisplaySet:t,headers:r}):await y({extensionManager:e,rtStructDisplaySet:t,headers:r}),c={StructureSetLabel:s.StructureSetLabel,SeriesInstanceUID:s.SeriesInstanceUID,ROIContours:[],visible:!0,ReferencedSOPInstanceUIDsSet:new Set};for(let e=0;e<i.length;e++){var u;let t=i[e],{ContourSequence:r}=t;if(!r)continue;let n=Array.isArray(u=r)?u:[u],o=[];for(let e of n){let{ContourData:t,NumberOfContourPoints:r,ContourGeometricType:n,ContourImageSequence:s}=e,a=[];for(let e=0;e<3*r;e+=3)a.push({x:t[e],y:t[e+1],z:t[e+2]});let i=new Map([["CLOSED_PLANAR",!1],["OPEN_NONPLANAR",!1],["OPEN_PLANAR",!1],["POINT",!0]]);o.push({numberOfPoints:r,points:a,type:n,isSupported:i.get(n)??!1}),s?.ReferencedSOPInstanceUID&&c.ReferencedSOPInstanceUIDsSet.add(s?.ReferencedSOPInstanceUID)}!function(e,t,r,n,o){let s=t.find(e=>e.ROINumber===n.ReferencedROINumber),a={ROINumber:s.ROINumber,ROIName:s.ROIName,ROIGenerationAlgorithm:s.ROIGenerationAlgorithm,ROIDescription:s.ROIDescription,contourPoints:o,visible:!0,colorArray:[]};(function(e,t){let{ROIDisplayColor:r,RecommendedDisplayCIELabValue:n}=e;!r&&n&&(r=f(n)),r&&(t.colorArray=[...r])})(n,a),r&&function(e,t,r){let n=t.find(e=>e.ReferencedROINumber===r);if(n){let{ObservationNumber:t,ROIObservationDescription:r,RTROIInterpretedType:o,ROIInterpreter:s}=n;e.RTROIObservations={ObservationNumber:t,ROIObservationDescription:r,RTROIInterpretedType:o,ROIInterpreter:s}}}(a,r,n.ReferencedROINumber),e.ROIContours.push(a)}(c,a,l,t,o)}return c}let{sopClassDictionary:I}=n.utils,h=[I.RTStructureSetStorage],D={};var R=p(404);function b(){return(b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}let v=r.lazy(()=>Promise.resolve().then(p.bind(p,561))),g=e=>r.createElement(r.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(v,e)),O={id:e,getCommandsModule:({commandsManager:e,servicesManager:t})=>{let{displaySetService:r,viewportGridService:n}=t.services,o={hydrateRTSDisplaySet:({displaySet:t,viewportId:o})=>{if("RTSTRUCT"!==t.Modality)throw Error("Display set is not an RTSTRUCT");let s=r.getDisplaySetByUID(t.referencedDisplaySetInstanceUID);e.runCommand("updateStoredSegmentationPresentation",{displaySet:t,type:R.SegmentationRepresentations.Contour}),e.runCommand("updateStoredPositionPresentation",{viewportId:o,displaySetInstanceUIDs:[s.displaySetInstanceUID]}),n.setDisplaySetsForViewport({viewportId:o,displaySetInstanceUIDs:[s.displaySetInstanceUID]})}},s={hydrateRTSDisplaySet:{commandFn:o.hydrateRTSDisplaySet,storeContexts:[],options:{}}};return{actions:o,definitions:s,defaultContext:"cornerstone-dicom-rt"}},getViewportModule:({servicesManager:e,extensionManager:t,commandsManager:n})=>[{name:"dicom-rt",component:o=>r.createElement(g,b({servicesManager:e,extensionManager:t,commandsManager:n},o))}],getSopClassHandlerModule:function(e){let{servicesManager:r,extensionManager:o}=e;return[{name:"dicom-rt",sopClassUids:h,getDisplaySetsFromSeries:e=>(function(e,r,o){var i;let l;n.utils.sortStudyInstances(e);let c=e[e.length-1],{StudyInstanceUID:u,SeriesInstanceUID:f,SOPInstanceUID:p,SeriesDescription:d="",SeriesNumber:S,SeriesDate:y,SeriesTime:I,StructureSetDate:R,StructureSetTime:b,SOPClassUID:v,wadoRoot:g,wadoUri:O,wadoUriRoot:U,imageId:T}=c,P={Modality:"RTSTRUCT",loading:!1,isReconstructable:!1,displaySetInstanceUID:n.utils.guid(),SeriesDescription:d,SeriesNumber:S,SeriesDate:R||y,SeriesTime:b||I,SOPInstanceUID:p,SeriesInstanceUID:f,StudyInstanceUID:u,SOPClassHandlerId:t,SOPClassUID:v,FrameOfReferenceUID:null,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,isDerivedDisplaySet:!0,isLoaded:!1,isHydrated:!1,structureSet:null,sopClassUids:h,instance:c,instances:e,predecessorImageId:T,wadoRoot:g,wadoUriRoot:U,wadoUri:O,isOverlayDisplaySet:!0,label:d||`${s().t("Series")} ${S} - ${s().t("RTSTRUCT")}`},E=c.ReferencedSeriesSequence;if(c.ReferencedFrameOfReferenceSequence?.RTReferencedStudySequence&&!c.ReferencedSeriesSequence&&(i=c.ReferencedFrameOfReferenceSequence,l=[],i.forEach(e=>{let{RTReferencedStudySequence:t}=e;t.forEach(e=>{let{RTReferencedSeriesSequence:t}=e;t.forEach(e=>{let t=[],{ContourImageSequence:r,SeriesInstanceUID:n}=e;r.forEach(e=>{t.push({ReferencedSOPInstanceUID:e.ReferencedSOPInstanceUID,ReferencedSOPClassUID:e.ReferencedSOPClassUID})}),l.push({SeriesInstanceUID:n,ReferencedInstanceSequence:t})})})}),c.ReferencedSeriesSequence=l,E=c.ReferencedSeriesSequence),!E)return void console.error("ReferencedSeriesSequence is missing for the RTSTRUCT");let C=E[0];P.referencedImages=c.ReferencedSeriesSequence.ReferencedInstanceSequence,P.referencedSeriesInstanceUID=C.SeriesInstanceUID,P.FrameOfReferenceUID=c.ReferencedFrameOfReferenceSequence?.[0]?.FrameOfReferenceUID;let{displaySetService:w}=r.services,_=w.getDisplaySetsForReferences(E);if(_?.length>1&&console.warn("Reference applies to more than 1 display set for Contours, applying only to first display set"),_&&0!==_.length){let[e]=_;P.referencedDisplaySetInstanceUID=e.displaySetInstanceUID,P.isReconstructable=e.isReconstructable,P.FrameOfReferenceUID=e.FrameOfReferenceUID}else{let{unsubscribe:e}=w.subscribe(w.EVENTS.DISPLAY_SETS_ADDED,({displaySetsAdded:t})=>{let r=t[0];r.SeriesInstanceUID===P.referencedSeriesInstanceUID&&(P.referencedDisplaySetInstanceUID=r.displaySetInstanceUID,P.isReconstructable=r.isReconstructable,P.FrameOfReferenceUID=r.FrameOfReferenceUID,e())})}return P.load=({headers:e,createSegmentation:t=!0})=>(function(e,t,r,n,o=!0){var s;let{SOPInstanceUID:i}=e,{segmentationService:l}=t.services;return(e.loading||e.isLoaded)&&D[i]&&(s=e,a.segmentation.state.getSegmentation(s.displaySetInstanceUID))||(e.loading=!0,D[i]=new Promise(async(t,s)=>{try{if(!e.structureSet){let t=await m(r,e,n);e.structureSet=t}o&&await l.createSegmentationForRTDisplaySet(e),t()}catch(e){s(e)}finally{e.loading=!1}})),D[i]})(P,r,o,e,t),[P]})(e,r,o)}]}}})(),d=p.O(d)})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ohif/core"),require("@ohif/extension-cornerstone"),require("dcmjs"),require("@ohif/core/src"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/ui-next")):"function"==typeof define&&define.amd?define(["@ohif/core","@ohif/extension-cornerstone","dcmjs","@ohif/core/src","@ohif/i18n","@cornerstonejs/tools","@cornerstonejs/tools/enums","@ohif/ui-next"],t):"object"==typeof exports?exports["ohif-extension-cornerstone-dicom-rt"]=t(require("@ohif/core"),require("@ohif/extension-cornerstone"),require("dcmjs"),require("@ohif/core/src"),require("@ohif/i18n"),require("@cornerstonejs/tools"),require("@cornerstonejs/tools/enums"),require("@ohif/ui-next")):e["ohif-extension-cornerstone-dicom-rt"]=t(e["@ohif/core"],e["@ohif/extension-cornerstone"],e.dcmjs,e["@ohif/core/src"],e["@ohif/i18n"],e["@cornerstonejs/tools"],e["@cornerstonejs/tools/enums"],e["@ohif/ui-next"])}(globalThis,(e,t,r,n,o,s,a,i)=>(()=>{"use strict";var l,c,u={561(e,t,r){r.r(t),r.d(t,{default:()=>u});var n=r(184),o=r(326),s=r(55),a=r(669);let i=function(e,t,r){let n=t.getCustomization("cornerstone.overlayViewportTools");return e.createToolGroupAndAddTools(r,n)};var l=r(459),c=r(870);let u=function(e){let t,r,u,f,d,p,S,m,y,I,R,h,D=(0,n.c)(50),{servicesManager:v,commandsManager:b}=(0,l.useSystem)(),{children:g,displaySets:O,viewportOptions:U}=e,{displaySetService:T,toolGroupService:_,segmentationService:E,customizationService:C}=v.services,N=U.viewportId,x=`RTToolGroup-${N}`;if(O.length>1)throw Error("RT viewport should only have a single display set");D[0]!==C?(t=C.getCustomization("ui.loadingIndicatorTotalPercent"),D[0]=C,D[1]=t):t=D[1];let P=t,w=O[0],[j,q]=(0,s.useViewportGrid)(),{viewports:A,activeViewportId:F}=j,{setPositionPresentation:k}=(0,a.usePositionPresentationStore)(),[M,L]=(0,o.useState)(!w.isLoaded);D[2]===Symbol.for("react.memo_cache_sentinel")?(r={percentComplete:null,totalSegments:null},D[2]=r):r=D[2];let[G,H]=(0,o.useState)(r),V=w.referencedDisplaySetInstanceUID,$=!1;if(!V){let e=C.getCustomization("missingReferenceDisplaySetHandler");"function"==typeof e?{handled:$}=e():(console.log("No customization 'missingReferenceDisplaySetHandler' registered. Skipping RT rendering."),$=!0)}let z=V?T.getDisplaySetByUID(V):void 0;D[3]!==F||D[4]!==b||D[5]!==w||D[6]!==M||D[7]!==v||D[8]!==N?(u=()=>{M||N===F&&function({servicesManager:e,rtDisplaySet:t,viewportId:r,preHydrateCallbacks:n,hydrateRTDisplaySet:o}){a.utils.promptHydrationDialog({servicesManager:e,viewportId:r,displaySet:t,preHydrateCallbacks:n,hydrateCallback:o,type:"RTSTRUCT"})}({servicesManager:v,viewportId:N,rtDisplaySet:w,hydrateRTDisplaySet:async()=>b.runCommand("hydrateSecondaryDisplaySet",{displaySet:w,viewportId:N})})},f=[v,N,w,M,b,F],D[3]=F,D[4]=b,D[5]=w,D[6]=M,D[7]=v,D[8]=N,D[9]=u,D[10]=f):(u=D[9],f=D[10]),(0,o.useEffect)(u,f),D[11]!==w||D[12]!==E||D[13]!==k||D[14]!==U?(d=()=>{let{unsubscribe:e}=E.subscribe(E.EVENTS.SEGMENTATION_LOADING_COMPLETE,e=>{if(e.rtDisplaySet?.displaySetInstanceUID===w.displaySetInstanceUID&&L(!1),w?.firstSegmentedSliceImageId&&U?.presentationIds){let{firstSegmentedSliceImageId:e}=w,{presentationIds:t}=U;k(t.positionPresentationId,{viewportType:"stack",viewReference:{referencedImageId:e},viewPresentation:{}})}});return()=>{e()}},D[11]=w,D[12]=E,D[13]=k,D[14]=U,D[15]=d):d=D[15],D[16]!==w?(p=[w],D[16]=w,D[17]=p):p=D[17],(0,o.useEffect)(d,p),D[18]!==F||D[19]!==T||D[20]!==E||D[21]!==q||D[22]!==A?(S=()=>{let e=E.subscribe(E.EVENTS.SEGMENT_LOADING_COMPLETE,e=>{let{percentComplete:t,numSegments:r}=e;H({percentComplete:t,totalSegments:r})}),t=T.subscribe(T.EVENTS.DISPLAY_SETS_REMOVED,e=>{let{displaySetInstanceUIDs:t}=e,r=A.get(F);t.includes(r.displaySetInstanceUID)&&q.setDisplaySetsForViewport({viewportId:F,displaySetInstanceUIDs:[]})});return()=>{e.unsubscribe(),t.unsubscribe()}},D[18]=F,D[19]=T,D[20]=E,D[21]=q,D[22]=A,D[23]=S):S=D[23],D[24]!==F||D[25]!==T||D[26]!==w||D[27]!==q||D[28]!==A?(m=[w,T,A,F,q],D[24]=F,D[25]=T,D[26]=w,D[27]=q,D[28]=A,D[29]=m):m=D[29],(0,o.useEffect)(S,m),D[30]!==C||D[31]!==E||D[32]!==x||D[33]!==_||D[34]!==N?(y=()=>{if(!_.getToolGroup(x))return i(_,C,x),()=>{E.removeRepresentationsFromViewport(N),_.destroyToolGroup(x)}},D[30]=C,D[31]=E,D[32]=x,D[33]=_,D[34]=N,D[35]=y):y=D[35],D[36]===Symbol.for("react.memo_cache_sentinel")?(I=[],D[36]=I):I=D[36],(0,o.useEffect)(y,I);let B=null;if($||!z)return null;if(g&&g.length){let e;if(D[37]!==g||D[38]!==N){let t;D[40]!==N?(t=(e,t)=>e&&o.cloneElement(e,{viewportId:N,key:t}),D[40]=N,D[41]=t):t=D[41],e=g.map(t),D[37]=g,D[38]=N,D[39]=e}else e=D[39];B=e}D[42]!==P||D[43]!==G||D[44]!==M?(R=M&&(0,c.jsx)(P,{className:"h-full w-full",totalNumbers:G.totalSegments,percentComplete:G.percentComplete,loadingText:"Loading RTSTRUCT..."}),D[42]=P,D[43]=G,D[44]=M,D[45]=R):R=D[45];let Y=(0,c.jsx)(a.OHIFCornerstoneViewport,{...e,displaySets:[z,w],viewportOptions:{viewportType:U.viewportType,toolGroupId:x,orientation:U.orientation,viewportId:U.viewportId,presentationIds:U.presentationIds},onElementEnabled:t=>{e.onElementEnabled?.(t)}});return D[46]!==B||D[47]!==R||D[48]!==Y?(h=(0,c.jsx)(c.Fragment,{children:(0,c.jsxs)("div",{className:"relative flex h-full w-full flex-row overflow-hidden",children:[R,Y,B]})}),D[46]=B,D[47]=R,D[48]=Y,D[49]=h):h=D[49],h}},76(e,t,r){var n=r(326).__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;t.c=function(e){return n.H.useMemoCache(e)}},60(e,t){var r=Symbol.for("react.transitional.element");function n(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var s in n={},t)"key"!==s&&(n[s]=t[s]);else n=t;return{$$typeof:r,type:e,key:o,ref:void 0!==(t=n.ref)?t:null,props:n}}t.Fragment=Symbol.for("react.fragment"),t.jsx=n,t.jsxs=n},391(e,t){var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),o=(Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.consumer"),Symbol.for("react.context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense")),s=(Symbol.for("react.memo"),Symbol.for("react.lazy")),a=(Symbol.for("react.activity"),Symbol.iterator),i={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},l=Object.assign,c={};function u(e,t,r){this.props=e,this.context=t,this.refs=c,this.updater=r||i}function f(){}function d(e,t,r){this.props=e,this.context=t,this.refs=c,this.updater=r||i}u.prototype.isReactComponent={},u.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},u.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},f.prototype=u.prototype;var p=d.prototype=new f;p.constructor=d,l(p,u.prototype),p.isPureReactComponent=!0;var S={H:null,A:null,T:null,S:null},m=Object.prototype.hasOwnProperty;function y(e,t,n){var o=n.ref;return{$$typeof:r,type:e,key:t,ref:void 0!==o?o:null,props:n}}function I(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){(0===e._status||-1===e._status)&&(e._status=1,e._result=t)},function(t){(0===e._status||-1===e._status)&&(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}"function"==typeof reportError&&reportError,t.Suspense=o,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=S,t.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=l({},e.props),o=e.key;if(null!=t)for(s in void 0!==t.key&&(o=""+t.key),t)m.call(t,s)&&"key"!==s&&"__self"!==s&&"__source"!==s&&("ref"!==s||void 0!==t.ref)&&(n[s]=t[s]);var s=arguments.length-2;if(1===s)n.children=r;else if(1<s){for(var a=Array(s),i=0;i<s;i++)a[i]=arguments[i+2];n.children=a}return y(e.type,o,n)},t.lazy=function(e){return{$$typeof:s,_payload:{_status:-1,_result:e},_init:I}},t.useEffect=function(e,t){return S.H.useEffect(e,t)},t.useState=function(e){return S.H.useState(e)}},184(e,t,r){e.exports=r(76)},326(e,t,r){e.exports=r(391)},870(e,t,r){e.exports=r(60)},713(e){e.exports=s},404(e){e.exports=a},2(t){t.exports=e},459(e){e.exports=n},669(e){e.exports=t},545(e){e.exports=o},55(e){e.exports=i},111(e){e.exports=r}},f={};function d(e){var t=f[e];if(void 0!==t)return t.exports;var r=f[e]={exports:{}};return u[e](r,r.exports,d),r.exports}d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),d.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l=[],d.O=(e,t,r,n)=>{if(t){n=n||0;for(var o=l.length;o>0&&l[o-1][2]>n;o--)l[o]=l[o-1];l[o]=[t,r,n];return}for(var s=1/0,o=0;o<l.length;o++){for(var[t,r,n]=l[o],a=!0,i=0;i<t.length;i++)(!1&n||s>=n)&&Object.keys(d.O).every(e=>d.O[e](t[i]))?t.splice(i--,1):(a=!1,n<s&&(s=n));if(a){l.splice(o--,1);var c=r();void 0!==c&&(e=c)}}return e},d.F={},d.E=e=>{Object.keys(d.F).map(t=>{d.F[t](e)})},c={509:0},d.F.j=e=>{if(!d.o(c,e)||void 0===c[e]){c[e]=null;var t=document.createElement("link");d.nc&&t.setAttribute("nonce",d.nc),t.rel="prefetch",t.as="script",t.href=d.p+d.u(e),document.head.appendChild(t)}},d.O.j=e=>0===c[e],d.O(0,[509],()=>{[509].map(d.E)},5);var p={};return(()=>{d.r(p),d.d(p,{default:()=>U});var e=d(184);let t=JSON.parse('{"UU":"@ohif/extension-cornerstone-dicom-rt"}').UU,r=`${t}.sopClassHandlerModule.dicom-rt`;var n=d(326),o=d(2),s=d(545),a=d.n(s),i=d(713),l=d(111),c=d.n(l);let{DicomMessage:u,DicomMetaDictionary:f}=c().data,S=c().data.Colors.dicomlab2RGB;async function m({instance:e,dataSource:t,extensionManager:r,rtStructDisplaySet:n,headers:o}){let s=e;if((!s||!s.ROIContourSequence)&&(!(s=await y({extensionManager:r,rtStructDisplaySet:n,headers:o}))||!s.ROIContourSequence))return Promise.reject("Invalid instance object or ROIContourSequence");let a=new Map;for(let e of s.ROIContourSequence){let r=e.ReferencedROINumber;if(!e||!e.ContourSequence){a.set(r,[Promise.resolve([])]);continue}for(let n of e.ContourSequence){if(!n||!n.ContourData)return Promise.reject("Invalid Contour or ContourData");let e=n.ContourData;if(Array.isArray(e))a.has(r)?a.get(r).push(Promise.resolve(e)):a.set(r,[Promise.resolve(e)]);else if(e&&e.BulkDataURI){let n=e.BulkDataURI;if(!t||!t.retrieve||!t.retrieve.bulkDataURI)return Promise.reject("Invalid dataSource object or retrieve function");let o=t.retrieve.bulkDataURI({BulkDataURI:n,StudyInstanceUID:s.StudyInstanceUID,SeriesInstanceUID:s.SeriesInstanceUID,SOPInstanceUID:s.SOPInstanceUID});a.has(r)?a.get(r).push(o):a.set(r,[o])}else{if(!e||!e.InlineBinary)return Promise.reject(`Invalid ContourData: ${e}`);let t=atob(e.InlineBinary).split("\\"),n=[];if(t.length%3!=0)return Promise.reject("ContourData raw values not divisible by 3");for(let e=0;e<t.length;e+=3)if(e+2<t.length){let r=parseFloat(t[e]),o=parseFloat(t[e+1]),s=parseFloat(t[e+2]);if(isNaN(r)||isNaN(o)||isNaN(s))return Promise.reject("Error parsing contourData from InlineBinary format");n.push(r),n.push(o),n.push(s)}a.has(r)?a.get(r).push(n):a.set(r,[n])}}}let i=new Map;for(let[e,t]of a.entries())i.set(e,await Promise.allSettled(t));return s.ROIContourSequence.forEach(e=>{try{let t=e.ReferencedROINumber,r=i.get(t);e.ContourSequence&&e.ContourSequence.forEach((e,t)=>{let n=r[t];if("fulfilled"===n.status)if(Array.isArray(n.value)&&n.value.every(e=>Number.isFinite(Number(e))))e.ContourData=n.value.map(Number);else{let t=new Uint8Array(n.value),r=new TextDecoder().decode(t);"string"==typeof r&&r.includes("\\")?e.ContourData=r.split("\\").map(parseFloat):e.ContourData=[]}else console.error(n.reason)})}catch(e){console.error(e)}}),s}let y=async({extensionManager:e,rtStructDisplaySet:t,headers:r})=>{let{dicomLoaderService:n}=e.getModuleEntry("@ohif/extension-cornerstone.utilityModule.common").exports,o=await n.findDicomDataPromise(t,null,r),s=u.readFile(o),a=f.naturalizeDataset(s.dict);return a._meta=f.namifyDataset(s.meta),a};async function I(e,t,r){let n=e.getActiveDataSource()[0],{bulkDataURI:o}=n.getConfig?.()||{};t.isLoaded=!0;let s=t.instance,{StructureSetROISequence:a,ROIContourSequence:i,RTROIObservationsSequence:l}=s=o&&o.enabled?await m({instance:s,dataSource:n,extensionManager:e,rtStructDisplaySet:t,headers:r}):await y({extensionManager:e,rtStructDisplaySet:t,headers:r}),c={StructureSetLabel:s.StructureSetLabel,SeriesInstanceUID:s.SeriesInstanceUID,ROIContours:[],visible:!0,ReferencedSOPInstanceUIDsSet:new Set};for(let e=0;e<i.length;e++){var u;let t=i[e],{ContourSequence:r}=t;if(!r)continue;let n=Array.isArray(u=r)?u:[u],o=[];for(let e of n){let{ContourData:t,NumberOfContourPoints:r,ContourGeometricType:n,ContourImageSequence:s}=e,a=[];for(let e=0;e<3*r;e+=3)a.push({x:t[e],y:t[e+1],z:t[e+2]});let i=new Map([["CLOSED_PLANAR",!1],["OPEN_NONPLANAR",!1],["OPEN_PLANAR",!1],["POINT",!0]]);o.push({numberOfPoints:r,points:a,type:n,isSupported:i.get(n)??!1}),s?.ReferencedSOPInstanceUID&&c.ReferencedSOPInstanceUIDsSet.add(s?.ReferencedSOPInstanceUID)}!function(e,t,r,n,o){let s=t.find(e=>e.ROINumber===n.ReferencedROINumber),a={ROINumber:s.ROINumber,ROIName:s.ROIName,ROIGenerationAlgorithm:s.ROIGenerationAlgorithm,ROIDescription:s.ROIDescription,contourPoints:o,visible:!0,colorArray:[]};(function(e,t){let{ROIDisplayColor:r,RecommendedDisplayCIELabValue:n}=e;!r&&n&&(r=S(n)),r&&(t.colorArray=[...r])})(n,a),r&&function(e,t,r){let n=t.find(e=>e.ReferencedROINumber===r);if(n){let{ObservationNumber:t,ROIObservationDescription:r,RTROIInterpretedType:o,ROIInterpreter:s}=n;e.RTROIObservations={ObservationNumber:t,ROIObservationDescription:r,RTROIInterpretedType:o,ROIInterpreter:s}}}(a,r,n.ReferencedROINumber),e.ROIContours.push(a)}(c,a,l,t,o)}return c}let{sopClassDictionary:R}=o.utils,h=[R.RTStructureSetStorage],D={};var v=d(404),b=d(870);let g=n.lazy(()=>Promise.resolve().then(d.bind(d,561))),O=t=>{let r,o,s=(0,e.c)(3);return s[0]===Symbol.for("react.memo_cache_sentinel")?(r=(0,b.jsx)("div",{children:"Loading..."}),s[0]=r):r=s[0],s[1]!==t?(o=(0,b.jsx)(n.Suspense,{fallback:r,children:(0,b.jsx)(g,{...t})}),s[1]=t,s[2]=o):o=s[2],o},U={id:t,getCommandsModule:({commandsManager:e,servicesManager:t})=>{let{displaySetService:r,viewportGridService:n}=t.services,o={hydrateRTSDisplaySet:({displaySet:t,viewportId:o})=>{if("RTSTRUCT"!==t.Modality)throw Error("Display set is not an RTSTRUCT");let s=r.getDisplaySetByUID(t.referencedDisplaySetInstanceUID);e.runCommand("updateStoredSegmentationPresentation",{displaySet:t,type:v.SegmentationRepresentations.Contour}),e.runCommand("updateStoredPositionPresentation",{viewportId:o,displaySetInstanceUIDs:[s.displaySetInstanceUID]}),n.setDisplaySetsForViewport({viewportId:o,displaySetInstanceUIDs:[s.displaySetInstanceUID]})}},s={hydrateRTSDisplaySet:{commandFn:o.hydrateRTSDisplaySet,storeContexts:[],options:{}}};return{actions:o,definitions:s,defaultContext:"cornerstone-dicom-rt"}},getViewportModule:({servicesManager:t,extensionManager:r,commandsManager:n})=>[{name:"dicom-rt",component:o=>{let s,a=(0,e.c)(2);return a[0]!==o?(s=(0,b.jsx)(O,{servicesManager:t,extensionManager:r,commandsManager:n,...o}),a[0]=o,a[1]=s):s=a[1],s}}],getSopClassHandlerModule:function(e){let{servicesManager:t,extensionManager:n}=e;return[{name:"dicom-rt",sopClassUids:h,getDisplaySetsFromSeries:e=>(function(e,t,n){var s;let l;o.utils.sortStudyInstances(e);let c=e[e.length-1],{StudyInstanceUID:u,SeriesInstanceUID:f,SOPInstanceUID:d,SeriesDescription:p="",SeriesNumber:S,SOPClassUID:m,wadoRoot:y,wadoUri:R,wadoUriRoot:v,imageId:b}=c,{SeriesDate:g,SeriesTime:O}=o.utils.getLatestInstanceDateTime(c),U={Modality:"RTSTRUCT",loading:!1,isReconstructable:!1,displaySetInstanceUID:o.utils.guid(),SeriesDescription:p,SeriesNumber:S,SeriesDate:g,SeriesTime:O,SOPInstanceUID:d,SeriesInstanceUID:f,StudyInstanceUID:u,SOPClassHandlerId:r,SOPClassUID:m,FrameOfReferenceUID:null,referencedImages:null,referencedSeriesInstanceUID:null,referencedDisplaySetInstanceUID:null,isDerivedDisplaySet:!0,isLoaded:!1,isHydrated:!1,structureSet:null,sopClassUids:h,instance:c,instances:e,predecessorImageId:b,wadoRoot:y,wadoUriRoot:v,wadoUri:R,isOverlayDisplaySet:!0,label:p||`${a().t("Series")} ${S} - ${a().t("RTSTRUCT")}`},T=c.ReferencedSeriesSequence;if(c.ReferencedFrameOfReferenceSequence?.RTReferencedStudySequence&&!c.ReferencedSeriesSequence&&(s=c.ReferencedFrameOfReferenceSequence,l=[],s.forEach(e=>{let{RTReferencedStudySequence:t}=e;t.forEach(e=>{let{RTReferencedSeriesSequence:t}=e;t.forEach(e=>{let t=[],{ContourImageSequence:r,SeriesInstanceUID:n}=e;r.forEach(e=>{t.push({ReferencedSOPInstanceUID:e.ReferencedSOPInstanceUID,ReferencedSOPClassUID:e.ReferencedSOPClassUID})}),l.push({SeriesInstanceUID:n,ReferencedInstanceSequence:t})})})}),c.ReferencedSeriesSequence=l,T=c.ReferencedSeriesSequence),!T)return void console.error("ReferencedSeriesSequence is missing for the RTSTRUCT");let _=T[0];U.referencedImages=c.ReferencedSeriesSequence.ReferencedInstanceSequence,U.referencedSeriesInstanceUID=_.SeriesInstanceUID,U.FrameOfReferenceUID=c.ReferencedFrameOfReferenceSequence?.[0]?.FrameOfReferenceUID;let{displaySetService:E}=t.services,C=E.getDisplaySetsForReferences(T);if(C?.length>1&&console.warn("Reference applies to more than 1 display set for Contours, applying only to first display set"),C&&0!==C.length){let[e]=C;U.referencedDisplaySetInstanceUID=e.displaySetInstanceUID,U.isReconstructable=e.isReconstructable,U.FrameOfReferenceUID=e.FrameOfReferenceUID}else{let{unsubscribe:e}=E.subscribe(E.EVENTS.DISPLAY_SETS_ADDED,({displaySetsAdded:t})=>{let r=t[0];r.SeriesInstanceUID===U.referencedSeriesInstanceUID&&(U.referencedDisplaySetInstanceUID=r.displaySetInstanceUID,U.isReconstructable=r.isReconstructable,U.FrameOfReferenceUID=r.FrameOfReferenceUID,e())})}return U.load=({headers:e,createSegmentation:r=!0})=>(function(e,t,r,n,o=!0){var s;let{SOPInstanceUID:a}=e,{segmentationService:l}=t.services;return(e.loading||e.isLoaded)&&D[a]&&(s=e,i.segmentation.state.getSegmentation(s.displaySetInstanceUID))||(e.loading=!0,D[a]=new Promise(async(t,s)=>{try{if(!e.structureSet){let t=await I(r,e,n);e.structureSet=t}o&&await l.createSegmentationForRTDisplaySet(e),t()}catch(e){s(e)}finally{e.loading=!1}})),D[a]})(U,t,n,e,r),[U]})(e,t,n)}]}}})(),p=d.O(p)})());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ohif/extension-cornerstone-dicom-rt",
|
|
3
|
-
"version": "3.14.0-beta.
|
|
3
|
+
"version": "3.14.0-beta.51",
|
|
4
4
|
"description": "DICOM RT read workflow",
|
|
5
5
|
"author": "OHIF",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,16 +22,15 @@
|
|
|
22
22
|
"access": "public"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
25
|
+
"@ohif/core": "3.14.0-beta.51",
|
|
26
|
+
"@ohif/extension-cornerstone": "3.14.0-beta.51",
|
|
27
|
+
"@ohif/extension-default": "3.14.0-beta.51",
|
|
28
|
+
"@ohif/i18n": "3.14.0-beta.51",
|
|
29
|
+
"react": "19.2.7",
|
|
30
|
+
"react-dom": "19.2.7",
|
|
28
31
|
"react-i18next": "12.3.1",
|
|
29
32
|
"react-router": "6.30.3",
|
|
30
|
-
"react-router-dom": "6.30.3"
|
|
31
|
-
"@ohif/extension-cornerstone": "3.14.0-beta.5",
|
|
32
|
-
"@ohif/core": "3.14.0-beta.5",
|
|
33
|
-
"@ohif/extension-default": "3.14.0-beta.5",
|
|
34
|
-
"@ohif/i18n": "3.14.0-beta.5"
|
|
33
|
+
"react-router-dom": "6.30.3"
|
|
35
34
|
},
|
|
36
35
|
"dependencies": {
|
|
37
36
|
"@babel/runtime": "7.29.7"
|