modified-dicom-pacs
Version:
A modified version of DICOM PACS implementation
2 lines • 24.3 kB
JavaScript
webpackChunk=globalThis.webpackChunk||[]).push([[487],{26487:(e,t,a)=>{a.r(t),a.d(t,{default:()=>q});var n={};a.r(n),a.d(n,{updateSegmentationsChartDisplaySet:()=>g});const i=JSON.parse('{"UU":"@ohif/extension-cornerstone-dynamic-volume"}').UU;var o=a(55411),s=a(92136),r=a(39371);const c="CHT",l=o.utils.guid(),p="1.9.451.13215.7.3.2.7.6.1",{utilities:m}=r;function u(e,t){const a=e.imageIds.reduce(((e,a)=>{const n=o.DicomMetadataStore.getInstanceByImageId(a)[t];return void 0!==n&&e.add(n),e}),new Set);return Array.from(a).sort(((e,t)=>e-t))}function d(e,t,a){let n;const i=a.getActiveDisplaySets().find((e=>{const t=e.instances?.[0];return!!t&&(void 0!==t.FrameReferenceTime||void 0!==t.NumberOfTimeSlices)})).displaySetInstanceUID;for(const[e]of s.cache._volumeCache)if(e.includes(i)){n=e;break}let c;n&&(c=s.cache.getVolume(n));const{StudyInstanceUID:l,StudyDescription:p}=o.DicomMetadataStore.getInstanceByImageId(c.imageIds[0]),[d,y]=m.dynamicVolume.getDataInTime(c,{maskVolumeId:e.id}),g=d.length;if(0===g)return[];const S=r.segmentation.state.getSegmentationIdRepresentations(e.id)[0].segmentationRepresentationUID,v=r.segmentation.state.getToolGroupIdFromSegmentationRepresentationUID(S),D=r.segmentation.config.color.getColorForSegmentIndex(v,S,1),h=s.utilities.color.rgbToHex(...D);let f=t.get(c);f||(f=function(e){const t={FrameReferenceTime:{unit:"ms"}},a=Object.keys(t);let n,i;for(let o=0;o<a.length;o++){const s=a[o],r=u(e,s);if(r.length){n=r,i=t[s].unit;break}}if(!n.length){const e=a.join(", ");throw new Error(`Could not extract time points data for the following tags: ${e}`)}const o=function(e,t){const a=["ms","s","m","h"],n=[1e3,60,60],i=a.indexOf(t);let o=1;if(-1!==i){for(let s=i;s<a.length-1;s++){const i=o*n[s];if(e.filter((e=>e>i)).length<=e.length/2)break;o=i,t=a[s+1]}o>1&&(e=e.map((e=>e/o)))}return{timePoints:e,timePointsUnit:t}}(n,i);return n=o.timePoints,i=o.timePointsUnit,{timePoints:n,timePointsUnit:i}}(c),t.set(c,f));const{timePoints:I,timePointsUnit:w}=f;if(I.length!==d[0].length)throw new Error("Invalid number of time points returned");const b=I.length,C=new Array(b);for(let e=0;e<b;e++){const t=d.reduce(((t,a)=>t+a[e]/g),0);C[e]=[I[e],t]}return{StudyInstanceUID:l,StudyDescription:p,chartData:{series:{label:e.label,points:C,color:h},axis:{x:{label:`Time (${w})`},y:{label:"Vl (Bq/ml)"}}}}}function y(e,t){if(!e.length)return;const a=new WeakMap,n=e.map((e=>d(e,a,t))),{date:i,time:s}=function(){const e=new Date;return{date:e.getFullYear()+("0"+e.getUTCMonth()).slice(-2)+("0"+e.getUTCDate()).slice(-2),time:("0"+e.getUTCHours()).slice(-2)+("0"+e.getUTCMinutes()).slice(-2)+("0"+e.getUTCSeconds()).slice(-2)}}(),r=n.reduce(((e,t)=>[...e,t.chartData.series]),[]),m={SOPClassUID:p,Modality:c,SOPInstanceUID:o.utils.guid(),SeriesDate:i,SeriesTime:s,SeriesInstanceUID:l,StudyInstanceUID:n[0].StudyInstanceUID,StudyDescription:n[0].StudyDescription,SeriesNumber:100,SeriesDescription:"Segmentation chart series data",chartData:{series:r,axis:{...n[0].chartData.axis}}};return{seriesMetadata:{StudyInstanceUID:m.StudyInstanceUID,StudyDescription:m.StudyDescription,SeriesInstanceUID:m.SeriesInstanceUID,SeriesDescription:m.SeriesDescription,SeriesNumber:m.SeriesNumber,SeriesTime:m.SeriesTime,SOPClassUID:m.SOPClassUID,Modality:m.Modality},instance:m}}function g({servicesManager:e}){const{segmentationService:t,displaySetService:a}=e.services,n=t.getSegmentations(),{seriesMetadata:i,instance:s}=y(n,a)??{};i&&s&&(o.DicomMetadataStore.addSeriesMetadata([i],!0),o.DicomMetadataStore.addInstances([s],!0))}const S=r.Enums.SegmentationRepresentations.Labelmap,v=({commandsManager:e,servicesManager:t})=>{const a=t.services,{displaySetService:i,viewportGridService:o,segmentationService:c}=a,l={...n,getDynamic4DDisplaySet:()=>i.getActiveDisplaySets().find((e=>{const t=e.instances?.[0];return!!t&&(void 0!==t.FrameReferenceTime||void 0!==t.NumberOfTimeSlices||void 0!==t.TemporalPositionIdentifier)})),getComputedDisplaySets:()=>[...i.getDisplaySetCache().values()].filter((e=>e.isDerived)),exportTimeReportCSV:({segmentations:e,config:t,options:a,summaryStats:n})=>{const i=l.getDynamic4DDisplaySet(),o=i?.displaySetInstanceUID;let c,p;for(const[e]of s.cache._volumeCache)if(e.includes(o)){c=e;break}c&&(p=s.cache.getVolume(c));const m=i.instances[0],u=[];function d(e){const t=e.length,a=e.reduce(((e,t)=>e+t),0)/t,n=e.map((e=>(e-a)**2)).reduce(((e,t)=>e+t),0)/t;return Math.sqrt(n)}u.push(`Patient ID,${m.PatientID},`),u.push(`Study Date,${m.StudyDate},`),u.push(`StudyInstanceUID,${m.StudyInstanceUID},`),u.push(`StudyDescription,${m.StudyDescription},`),u.push(`SeriesInstanceUID,${m.SeriesInstanceUID},`),u.push(""),u.push(""),e.forEach(((e,t)=>{const[a,i]=r.utilities.dynamicVolume.getDataInTime(p,{maskVolumeId:e.id});if(n){let t="Operation,Segmentation Label ID";const n=p.numTimePoints;for(let e=0;e<n;e++)t+=`,Time Point ${e}`;u.push(t);const o=[],s=[],r=[],c=[],l=[],m=[],y=a.length;for(let e=0;e<n;e++){const t=[];for(let n=0;n<y;n++)t.push(a[n][e]);o.push(t.reduce(((e,t)=>e+t),0)/y);const n=Math.min(...t);s.push(n),r.push(i[t.indexOf(n)]);const p=Math.max(...t);c.push(p),l.push(i[t.indexOf(p)]),m.push(d(t))}let g=`Mean,${e.label}`;for(let e=0;e<n;e++)g+=`,${o[e]}`;u.push(g),g=`Standard Deviation,${e.label}`;for(let e=0;e<n;e++)g+=`,${m[e]}`;u.push(g),g=`Min,${e.label}`;for(let e=0;e<n;e++)g+=`,${s[e]}`;u.push(g),g=`Max,${e.label}`;for(let e=0;e<n;e++)g+=`,${c[e]}`;u.push(g)}else{let t="Pixel Identifier (IJK),Segmentation Label ID";const n=p.numTimePoints;for(let e=0;e<n;e++)t+=`,Time Point ${e}`;u.push(t);for(let t=0;t<a.length;t++){let n=`${`${i[t][0]}_${i[t][1]}_${i[t][2]}`},${e.label}`;for(let e=0;e<a[t].length;e++)n+=`,${a[t][e]}`;u.push(n)}}}));const y=u.join("\n"),g=`${m.PatientID}.csv`,S=new Blob([y],{type:"text/csv;charset=utf-8;"}),v=document.createElement("a"),D=URL.createObjectURL(S);v.setAttribute("href",D),v.setAttribute("download",g),v.style.visibility="hidden",document.body.appendChild(v),v.click(),document.body.removeChild(v)},swapDynamicWithComputedDisplaySet:({displaySet:e})=>{const t=e,a=i.getDisplaySetCache(),n=[a.keys()],{displaySetInstanceUID:s}=t;n.includes(s)||a.set(s,t);const{viewports:r}=o.getState(),c=l.getDynamic4DDisplaySet(),p=[];for(const[e,t]of r){const e=t,a=e.viewportOptions,{displaySetInstanceUIDs:n}=e,i=n.indexOf(c.displaySetInstanceUID);if(-1!==i){const t={viewportId:e.viewportId,displaySetInstanceUIDs:[...n.slice(0,i),s,...n.slice(i+1)],viewportOptions:{initialImageOptions:a.initialImageOptions,viewportType:"volume",orientation:a.orientation,background:a.background}};p.push(t)}}o.setDisplaySetsForViewports(p)},swapComputedWithDynamicDisplaySet:()=>{const e=l.getDynamic4DDisplaySet(),t=i.getDisplaySetCache(),a=[...t.keys()],{displaySetInstanceUID:n}=e;a.includes(n)||t.set(n,e);const{viewports:s}=o.getState(),r=l.getComputedDisplaySets()[0],c=[];for(const[e,t]of s){const e=t,a=e.viewportOptions,{displaySetInstanceUIDs:i}=e,o=i.indexOf(r.displaySetInstanceUID);if(-1!==o){const t={viewportId:e.viewportId,displaySetInstanceUIDs:[...i.slice(0,o),n,...i.slice(o+1)],viewportOptions:{initialImageOptions:a.initialImageOptions,viewportType:"volume",orientation:a.orientation,background:a.background}};c.push(t)}}o.setDisplaySetsForViewports(c)},createNewLabelMapForDynamicVolume:async({label:e})=>{const{viewports:t,activeViewportId:a}=o.getState(),n=l.getDynamic4DDisplaySet(),s=n.displaySetInstanceUID;let r;if(t.get(a).displaySetInstanceUIDs.includes(s)&&(r=n),!r){const e=i.getDisplaySetCache();for(const[t,a]of e)if(a.referenceDisplaySetUID===s){r=a;break}}if(!r)throw new Error("No reference display set found based on the dynamic data");const p=await c.createSegmentationForDisplaySet(r.displaySetInstanceUID,{label:e}),m=Array.from(t.values(),(e=>e.viewportOptions.toolGroupId)),u=S;for(const e of m){const t=!0;await c.addSegmentationRepresentationToToolGroup(e,p,t,u),c.setActiveSegmentationForToolGroup(p,e)}return p}},p={updateSegmentationsChartDisplaySet:{commandFn:l.updateSegmentationsChartDisplaySet,storeContexts:[],options:{}},exportTimeReportCSV:{commandFn:l.exportTimeReportCSV,storeContexts:[],options:{}},swapDynamicWithComputedDisplaySet:{commandFn:l.swapDynamicWithComputedDisplaySet,storeContexts:[],options:{}},createNewLabelMapForDynamicVolume:{commandFn:l.createNewLabelMapForDynamicVolume,storeContexts:[],options:{}},swapComputedWithDynamicDisplaySet:{commandFn:l.swapComputedWithDynamicDisplaySet,storeContexts:[],options:{}}};return{actions:l,definitions:p,defaultContext:"DYNAMIC-VOLUME:CORNERSTONE"}};var D=a(41766),h=a(11374),f=a.n(h),I=a(5085),w=a(23722);function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},b.apply(this,arguments)}const C={sizeClassName:"w-[58px] h-[28px]",arrowsDirection:"horizontal",labelPosition:"bottom"},E=({title:e,tooltip:t})=>D.createElement("div",{className:"flex items-center space-x-1"},D.createElement(I.m_,{content:D.createElement("div",{className:"text-white"},t),position:"bottom-left",tight:!0,tooltipBoxClassName:"max-w-xs p-2"},D.createElement(I.In,{name:"info-link",className:"text-primary-active h-[14px] w-[14px]"})),D.createElement("span",{className:"text-aqua-pale text-[11px] uppercase"},e)),T=({isPlaying:e,onPlayPauseChange:t,fps:a,onFpsChange:n,minFps:i,maxFps:o,currentFrameIndex:r,onFrameChange:c,framesLength:l,onGenerate:p,onDoubleRangeChange:m,onDynamicClick:u})=>{const[d,y]=(0,D.useState)(!1),[g,S]=(0,D.useState)(s.Enums.DynamicOperatorType.SUM),[v,h]=(0,D.useState)([l/4,l/2]);(0,D.useEffect)((()=>{h([l/4,l/2])}),[l]);return D.createElement("div",{className:"flex select-none flex-col"},D.createElement(I.aU,{title:"Controls",childrenClassName:"space-y-4 pb-5 px-5"},D.createElement("div",{className:"mt-2"},D.createElement(E,{title:"View",tooltip:"Select the view mode, 4D to view the dynamic volume or Computed to view the computed volume"}),D.createElement(I.e2,{className:"mt-2 w-full"},D.createElement("button",{className:"w-1/2",onClick:()=>{y(!1),u?.()}},"4D"),D.createElement("button",{className:"w-1/2",onClick:()=>{y(!0)}},"Computed"))),D.createElement("div",null,D.createElement(x,{onPlayPauseChange:t,isPlaying:e,computedView:d,fps:a,onFpsChange:n,minFps:i,maxFps:o,framesLength:l,onFrameChange:c,currentFrameIndex:r})),D.createElement("div",{className:"mt-6 flex flex-col "+(d?"":"ohif-disabled")},D.createElement(E,{title:"Computed Operation",tooltip:D.createElement("div",null,"Operation Buttons (SUM, AVERAGE, SUBTRACT): Select the mathematical operation to be applied to the data set.",D.createElement("br",null)," Range Slider: Choose the numeric range within which the operation will be performed.",D.createElement("br",null),"Generate Button: Execute the chosen operation on the specified range of data."," ")}),D.createElement(I.e2,{className:"mt-2 w-full ",separated:!0},D.createElement("button",{className:"w-1/2",onClick:()=>S(s.Enums.DynamicOperatorType.SUM)},s.Enums.DynamicOperatorType.SUM.toString().toUpperCase()),D.createElement("button",{className:"w-1/2",onClick:()=>S(s.Enums.DynamicOperatorType.AVERAGE)},s.Enums.DynamicOperatorType.AVERAGE.toString().toUpperCase()),D.createElement("button",{className:"w-1/2",onClick:()=>S(s.Enums.DynamicOperatorType.SUBTRACT)},s.Enums.DynamicOperatorType.SUBTRACT.toString().toUpperCase())),D.createElement("div",{className:"w-ful mt-2"},D.createElement(I.Z5,{values:v,onChange:e=>{m(e),e[0]===v[0]&&e[1]===v[1]||h(e)},minValue:0,showLabel:!0,allowNumberEdit:!0,maxValue:l,step:1})),D.createElement(I.$n,{className:"mt-2 !h-[26px] !w-[115px] self-start !p-0",onClick:()=>{p(g)}},"Generate"))))};function x({isPlaying:e,onPlayPauseChange:t,fps:a,minFps:n,maxFps:i,onFpsChange:o,framesLength:s,onFrameChange:r,currentFrameIndex:c,computedView:l}){return D.createElement("div",{className:l&&"ohif-disabled"},D.createElement(E,{title:"4D Controls",tooltip:D.createElement("div",null,"Play/Pause Button: Begin or pause the animation of the 4D visualization. ",D.createElement("br",null)," Frame Selector: Navigate through individual frames of the 4D data. ",D.createElement("br",null)," FPS (Frames Per Second) Selector: Adjust the playback speed of the animation.")}),D.createElement("div",{className:"mt-3 flex justify-between"},D.createElement(I.K0,{className:"bg-customblue-30 h-[26px] w-[58px] rounded-[4px]",onClick:()=>t(!e)},D.createElement(I.In,{name:e?"icon-pause":"icon-play",className:" active:text-primary-light hover:bg-customblue-300 h-[24px] w-[24px] cursor-pointer text-white"})),D.createElement(I.YI,b({value:c,onChange:r,minValue:0,maxValue:s,label:"Frame"},C)),D.createElement(I.YI,b({value:a,onChange:o,minValue:n,maxValue:i},C,{label:"FPS"}))))}const M="@ohif/extension-default.sopClassHandlerModule.stack";function O({servicesManager:e,commandsManager:t}){const{cornerstoneViewportService:a,viewportGridService:n,displaySetService:i}=e.services,[{isCineEnabled:o},c]=(0,I.tq)(),[{activeViewportId:l}]=(0,I.ih)(),[p,m]=(0,D.useState)([]),[u,d]=(0,D.useState)([]),[y,g]=(0,D.useState)(null),[S,v]=(0,D.useState)(null),[h,f]=(0,D.useState)(20),[b,C]=(0,D.useState)(o),[E,x]=(0,D.useState)(null),[O,U]=(0,D.useState)(!1),P=(0,D.useRef)(s.utilities.uuidv4()),N=(0,D.useRef)(null),R=`cornerstoneStreamingImageVolume:${P.current}`;function V(e){t.runCommand("swapDynamicWithComputedDisplaySet",{displaySet:e}),U(!0)}(0,D.useEffect)((()=>{const e=a.EVENTS.VIEWPORT_DATA_CHANGED,{unsubscribe:t}=a.subscribe(e,(e=>{e.viewportData.data.forEach((e=>{e.volume.isDynamicVolume()&&(v(e.volume),N.current=e.displaySetInstanceUID,m([1,e.volume.numTimePoints]))}))}));return()=>{t()}}),[a]),(0,D.useEffect)((()=>{const{unsubscribe:t}=e.services.cineService.subscribe(e.services.cineService.EVENTS.CINE_STATE_CHANGED,(e=>{C(e.isPlaying)}));return()=>{t()}}),[c]),(0,D.useEffect)((()=>{const e=n.getDisplaySetsUIDsForViewport(l);if(!e||0===e.length)return;const t=e.map((e=>i.getDisplaySetByUID(e))).find((e=>e.isDynamicVolume));if(!t)return;const a=s.cache.getVolumes().find((e=>e.volumeId.includes(t.displaySetInstanceUID)));a&&(v(a),N.current=t.displaySetInstanceUID,m([1,a.numTimePoints]))}),[l,a]),(0,D.useEffect)((()=>{const e=w.fX.s.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED,t=e=>{x(e.detail.timePointIndex)};return s.eventTarget.addEventListener(e,t),()=>{s.eventTarget.removeEventListener(e,t)}}),[a]);const F=()=>{C(!0);const e=a.getViewportInfo(l);if(!e)return;const{element:t}=e;c.playClip(t,{framesPerSecond:h,viewportId:l})},k=()=>{C(!1);const{element:e}=a.getViewportInfo(l);c.stopClip(e)};return S&&0!==p.length?D.createElement(T,{fps:h,isPlaying:b,onPlayPauseChange:e=>{e?F():k()},minFps:1,maxFps:50,currentFrameIndex:E,onFpsChange:e=>{f(e),k(),F()},framesLength:p[1],onFrameChange:e=>{S.timePointIndex=e},onGenerate:async function(e){const n=S.volumeId;if(!n)return;let i=s.cache.getVolume(R);i||(await async function(e,t){if(!s.cache.getVolume(t)){return await s.volumeLoader.createAndCacheDerivedVolume(e,{volumeId:t})}}(n,R),i=s.cache.getVolume(R));const o=u,c=Array.from({length:o[1]-o[0]+1},((e,t)=>t+o[0])),l=r.utilities.dynamicVolume.generateImageFromTimeData(S,e,"SUBTRACT"===e?o:c);if(i.loadStatus={},i.loadStatus.loaded=!0,i.getScalarData().set(l),y)t.runCommand("updateVolumeData",{volume:i}),a.getRenderingEngine().render(),V(y);else{const e={volumeLoaderSchema:i.volumeId.split(":")[0],displaySetInstanceUID:P.current,SOPClassHandlerId:M,Modality:S.metadata.Modality,isMultiFrame:!1,numImageFrames:1,uid:P.current,referenceDisplaySetUID:S.volumeId.split(":")[1],madeInClient:!0,FrameOfReferenceUID:S.metadata.FrameOfReferenceUID,isDerived:!0};g(e),V(e)}},onDynamicClick:O?()=>{t.runCommand("swapComputedWithDynamicDisplaySet")}:null,onDoubleRangeChange:function(e){e[0]===u[0]&&e[1]===u[1]||d(e)}}):null}O.propTypes={servicesManager:f().shape({services:f().shape({measurementService:f().shape({getMeasurements:f().func.isRequired,subscribe:f().func.isRequired,EVENTS:f().object.isRequired,VALUE_TYPES:f().object.isRequired}).isRequired}).isRequired}).isRequired};const U=function({servicesManager:e,commandsManager:t}){return D.createElement("div",{className:"flex flex-col text-white","data-cy":"dynamic-volume-panel"},D.createElement(O,{commandsManager:t,servicesManager:e}))};var P=a(80619);const N=function({commandsManager:e,servicesManager:t,extensionManager:a}){const{segmentationService:n}=t.services,{t:i}=(0,P.Bd)("dynamicExport"),[o,s]=(0,D.useState)((()=>n.getSegmentations())),r=[{label:"Export Time Data",onClick:()=>{e.runCommand("exportTimeReportCSV",{segmentations:o,options:{filename:"TimeData.csv"}})},disabled:!o?.length},{label:"Export ROI Stats",onClick:()=>{e.runCommand("exportTimeReportCSV",{segmentations:o,summaryStats:!0,options:{filename:"ROIStats.csv"}})},disabled:!o?.length}];return(0,D.useEffect)((()=>{const e=n.EVENTS.SEGMENTATION_ADDED,t=n.EVENTS.SEGMENTATION_UPDATED,a=n.EVENTS.SEGMENTATION_REMOVED,i=[];return[e,t,a].forEach((e=>{const{unsubscribe:t}=n.subscribe(e,(()=>{const e=n.getSegmentations();s(e)}));i.push(t)})),()=>{i.forEach((e=>{e()}))}}),[]),D.createElement("div",null,D.createElement("div",{className:"mt-3 flex justify-center px-2"},D.createElement(I.wr,{actions:r,t:i})))};const R=function({commandsManager:e,extensionManager:t,servicesManager:a}){return[{name:"dynamic-volume",iconName:"tab-4d",iconLabel:"4D Workflow",label:"4D Workflow",component:()=>D.createElement(U,{commandsManager:e,servicesManager:a,extensionManager:t})},{name:"dynamic-toolbox",iconName:"tab-4d",iconLabel:"4D Workflow",label:"Dynamic Toolbox",component:()=>D.createElement(D.Fragment,null,D.createElement(I.OO,{commandsManager:e,servicesManager:a,extensionManager:t,buttonSectionId:"dynamic-toolbox",title:"Threshold Tools"}))},{name:"dynamic-export",iconName:"tab-4d",iconLabel:"4D Workflow",label:"4D Workflow",component:()=>D.createElement(D.Fragment,null,D.createElement(N,{commandsManager:e,servicesManager:a,extensionManager:t}))}]},V="2hot",F="dynamic4D-pt",k="dynamic4D-fusion",A="dynamic4D-ct";function L({colormap:e,voiInverted:t}={}){return{blendMode:"MIP",colormap:e,voi:{windowWidth:5,windowCenter:2.5},voiInverted:t}}function G(){const e={colormap:{name:V,opacity:[{value:0,opacity:0},{value:.1,opacity:1},{value:1,opacity:1}]},voiInverted:!1};return[{viewportOptions:{viewportId:"ptAxial",viewportType:"volume",orientation:"axial",toolGroupId:F,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"axialSync",source:!0,target:!0},{type:"voi",id:"ptWLSync",source:!0,target:!0}]},displaySets:[{id:"ptDisplaySet",options:{...L(e)}}]},{viewportOptions:{viewportId:"ptSagittal",viewportType:"volume",orientation:"sagittal",toolGroupId:F,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"sagittalSync",source:!0,target:!0},{type:"voi",id:"ptWLSync",source:!0,target:!0}]},displaySets:[{id:"ptDisplaySet",options:{...L(e)}}]},{viewportOptions:{viewportId:"ptCoronal",viewportType:"volume",orientation:"coronal",toolGroupId:F,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"coronalSync",source:!0,target:!0},{type:"voi",id:"ptWLSync",source:!0,target:!0}]},displaySets:[{id:"ptDisplaySet",options:{...L(e)}}]}]}function W(){const e={colormap:{name:V,opacity:[{value:0,opacity:0},{value:.1,opacity:.3},{value:1,opacity:.3}]}};return[{viewportOptions:{viewportId:"fusionAxial",viewportType:"volume",orientation:"axial",toolGroupId:k,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"axialSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncInvertState:!1}}]},displaySets:[{id:"ctDisplaySet"},{options:{...L(e)},id:"ptDisplaySet"}]},{viewportOptions:{viewportId:"fusionSagittal",viewportType:"volume",orientation:"sagittal",toolGroupId:k,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"sagittalSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncInvertState:!1}}]},displaySets:[{id:"ctDisplaySet"},{options:{...L(e)},id:"ptDisplaySet"}]},{viewportOptions:{viewportId:"fusionCoronal",viewportType:"volume",orientation:"coronal",toolGroupId:k,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"coronalSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!1,target:!0},{type:"voi",id:"fusionWLSync",source:!0,target:!0},{type:"voi",id:"ptFusionWLSync",source:!1,target:!0,options:{syncInvertState:!1}}]},displaySets:[{id:"ctDisplaySet"},{options:{...L(e)},id:"ptDisplaySet"}]}]}const $={id:"default4D",locked:!0,hasUpdatedPriorsInformation:!1,name:"Default",createdDate:"2023-01-01T00:00:00.000Z",modifiedDate:"2023-01-01T00:00:00.000Z",availableTo:{},editableBy:{},imageLoadStrategy:"default",protocolMatchingRules:[{attribute:"ModalitiesInStudy",constraint:{contains:["CT","PT"]}}],numberOfPriorsReferenced:-1,displaySetSelectors:{defaultDisplaySetId:{imageMatchingRules:[],seriesMatchingRules:[{attribute:"numImageFrames",constraint:{greaterThan:{value:0}}}]},ctDisplaySet:{imageMatchingRules:[],seriesMatchingRules:[{attribute:"Modality",constraint:{equals:{value:"CT"}},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0}]},ptDisplaySet:{imageMatchingRules:[],seriesMatchingRules:[{attribute:"Modality",constraint:{equals:"PT"},required:!0},{attribute:"isReconstructable",constraint:{equals:{value:!0}},required:!0},{attribute:"SeriesDescription",constraint:{contains:"Corrected"}},{weight:2,attribute:"SeriesDescription",constraint:{doesNotContain:{value:"Uncorrected"}}}]},chartDisplaySet:{imageMatchingRules:[],seriesMatchingRules:[{attribute:"Modality",constraint:{equals:{value:"CHT"}},required:!0}]}},stages:[{id:"dataPreparation",name:"Data Preparation",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:3}},viewports:[...G()],createdDate:"2023-01-01T00:00:00.000Z"},{id:"registration",name:"Registration",viewportStructure:{layoutType:"grid",properties:{rows:3,columns:3}},viewports:[...W(),{viewportOptions:{viewportId:"ctAxial",viewportType:"volume",orientation:"axial",toolGroupId:A,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"axialSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!0,target:!0}]},displaySets:[{id:"ctDisplaySet"}]},{viewportOptions:{viewportId:"ctSagittal",viewportType:"volume",orientation:"sagittal",toolGroupId:A,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"sagittalSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!0,target:!0}]},displaySets:[{id:"ctDisplaySet"}]},{viewportOptions:{viewportId:"ctCoronal",viewportType:"volume",orientation:"coronal",toolGroupId:A,initialImageOptions:{preset:"middle"},syncGroups:[{type:"cameraPosition",id:"coronalSync",source:!0,target:!0},{type:"voi",id:"ctWLSync",source:!0,target:!0}]},displaySets:[{id:"ctDisplaySet"}]},...G()],createdDate:"2023-01-01T00:00:00.000Z"},{id:"roiQuantification",name:"ROI Quantification",viewportStructure:{layoutType:"grid",properties:{rows:1,columns:3}},viewports:[...W()],createdDate:"2023-01-01T00:00:00.000Z"},{id:"kineticAnalysis",name:"Kinetic Analysis",viewportStructure:{layoutType:"grid",properties:{rows:2,columns:3,layoutOptions:[{x:0,y:0,width:1/3,height:.5},{x:1/3,y:0,width:1/3,height:.5},{x:2/3,y:0,width:1/3,height:.5},{x:0,y:.5,width:1,height:.5}]}},viewports:[...W(),{viewportOptions:{viewportId:"seriesChart"},displaySets:[{id:"chartDisplaySet",options:{skipLoading:!0}}]}],createdDate:"2023-01-01T00:00:00.000Z"}]};const q={id:i,preRegistration:({servicesManager:e,commandsManager:t,configuration:a={}})=>{s.cache.setMaxCacheSize(5368709120)},getPanelModule:R,getHangingProtocolModule:function(){return[{name:$.id,protocol:$}]},getCommandsModule:({servicesManager:e,commandsManager:t,extensionManager:a})=>v({servicesManager:e,commandsManager:t,extensionManager:a})}}}]);
//# sourceMappingURL=487.bundle.2fcb24e65a7e4254e63a.js.map
;(globalThis.