2 lines
6.9 KiB
JavaScript
2 lines
6.9 KiB
JavaScript
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[471],{56471:(e,t,n)=>{n.r(t),n.d(t,{default:()=>y});var a=n(43001),r=n(3827),s=n.n(r),o=n(71771),i=n(71783);const l={NO_NEVER:-1,CANCEL:0,HYDRATE_SEG:5};const c=function(e){let{servicesManager:t,rtDisplaySet:n,viewportId:a,toolGroupId:r="default",preHydrateCallbacks:s,hydrateRTDisplaySet:o}=e;const{uiViewportDialogService:c}=t.services;return new Promise((async function(e,u){const p=await function(e,t){return new Promise((function(n,a){const r="Do you want to open this Segmentation?",s=[{type:i.LZ.dt.secondary,text:"No",value:l.CANCEL},{type:i.LZ.dt.primary,text:"Yes",value:l.HYDRATE_SEG}],o=t=>{e.hide(),n(t)};e.show({viewportId:t,type:"info",message:r,actions:s,onSubmit:o,onOutsideClick:()=>{e.hide(),n(l.CANCEL)}})}))}(c,a);if(p===l.HYDRATE_SEG){s?.forEach((e=>{e()}));e(await o({rtDisplaySet:n,viewportId:a,toolGroupId:r,servicesManager:t}))}}))};var u=n(69190);const p=function(e,t,n){const{tools:a}=t.get("cornerstone.overlayViewportTools")??{};return e.createToolGroupAndAddTools(n,a)};function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},d.apply(this,arguments)}const{formatDate:m}=o.utils;function S(e){const{children:t,displaySets:n,viewportOptions:r,viewportLabel:s,servicesManager:l,extensionManager:S,commandsManager:y}=e,{displaySetService:g,toolGroupService:v,segmentationService:f,uiNotificationService:E,customizationService:w}=l.services,D=r.viewportId,I=`RTToolGroup-${D}`;if(n.length>1)throw new Error("RT viewport should only have a single display set");const b=n[0],[h,T]=(0,i.O_)(),[N,C]=(0,a.useState)(!1),[k,P]=(0,a.useState)(1),[O,x]=(0,a.useState)(b.isHydrated),[R,A]=(0,a.useState)(!b.isLoaded),[M,G]=(0,a.useState)(null),[L,U]=(0,a.useState)({percentComplete:null,totalSegments:null}),V=(0,a.useRef)(null),{viewports:_,activeViewportId:H}=h,j=b.getReferenceDisplaySet(),F=function(e){const t=e.images[0],n={PatientID:t.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};return n}(j);V.current={displaySet:j,metadata:F};const Y=e=>{G(e.detail.element)},$=()=>{G(null)},B=(0,a.useCallback)((()=>{h?.viewports.forEach((e=>{let{viewportId:t}=e;y.runCommand("storePresentation",{viewportId:t})}))}),[h]),q=e=>{let{rtDisplaySet:t,viewportId:n}=e;y.runCommand("loadSegmentationDisplaySetsForViewport",{displaySets:[t],viewportId:n})},J=(0,a.useCallback)((()=>{const{component:t}=S.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone"),{displaySet:n}=V.current;return a.createElement(t,d({},e,{displaySets:[n,b],viewportOptions:{viewportType:"volume",toolGroupId:I,orientation:r.orientation,viewportId:r.viewportId},onElementEnabled:Y,onElementDisabled:$}))}),[D,b,I]),Z=(0,a.useCallback)((e=>{e="left"===e?-1:1;const t=b.displaySetInstanceUID,n=f.getSegmentation(t),{segments:a}=n,r=Object.keys(a).length;let s=k+e;s>=r-1?s=1:0===s&&(s=r-1),f.jumpToSegmentCenter(t,s,I),P(s)}),[k]);(0,a.useEffect)((()=>{R||c({servicesManager:l,viewportId:D,rtDisplaySet:b,preHydrateCallbacks:[B],hydrateRTDisplaySet:q}).then((e=>{e&&x(!0)}))}),[l,D,b,R]),(0,a.useEffect)((()=>{const{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENTATION_LOADING_COMPLETE,(e=>{e.rtDisplaySet.displaySetInstanceUID===b.displaySetInstanceUID&&A(!1),e.overlappingSegments&&E.show({title:"Overlapping Segments",message:"Overlapping segments detected which is not currently supported",type:"warning"})}));return()=>{e()}}),[b]),(0,a.useEffect)((()=>{const{unsubscribe:e}=f.subscribe(f.EVENTS.SEGMENT_LOADING_COMPLETE,(e=>{let{percentComplete:t,numSegments:n}=e;U({percentComplete:t,totalSegments:n})}));return()=>{e()}}),[b]),(0,a.useEffect)((()=>{const e=g.subscribe(g.EVENTS.DISPLAY_SETS_REMOVED,(e=>{let{displaySetInstanceUIDs:t}=e;const n=_.get(H);t.includes(n.displaySetInstanceUID)&&T.setDisplaySetsForViewport({viewportId:H,displaySetInstanceUIDs:[]})}));return()=>{e.unsubscribe()}}),[]),(0,a.useEffect)((()=>{let e=v.getToolGroup(I);if(!e)return e=p(v,w,I),C(!0),()=>{f.removeSegmentationRepresentationFromToolGroup(I),v.destroyToolGroup(I)}}),[]),(0,a.useEffect)((()=>(x(b.isHydrated),()=>{f.removeSegmentationRepresentationFromToolGroup(I),V.current=null})),[b]);let z=null;if(!V.current||j.displaySetInstanceUID!==V.current.displaySet.displaySetInstanceUID)return null;t&&t.length&&(z=t.map(((e,t)=>e&&a.cloneElement(e,{viewportId:D,key:t}))));const{PatientID:K,PatientName:Q,PatientSex:W,PatientAge:X,SliceThickness:ee,ManufacturerModelName:te,StudyDate:ne,SeriesDescription:ae,SpacingBetweenSlices:re,SeriesNumber:se}=V.current.metadata,oe=async()=>{B();const e=await q({rtDisplaySet:b,viewportId:D});x(e)};return a.createElement(a.Fragment,null,a.createElement(i.uY,{onDoubleClick:e=>{e.stopPropagation(),e.preventDefault()},onArrowsClick:Z,getStatusComponent:()=>function(e){let{isHydrated:t,onStatusClick:n}=e,r=null,s=null;const{t:o}=(0,u.$G)("Common"),l=o("LOAD");switch(t){case!0:s=()=>a.createElement(i.JO,{name:"status-alert"}),r=()=>a.createElement("div",null,"This Segmentation is loaded in the segmentation panel");break;case!1:s=()=>a.createElement(i.JO,{className:"text-aqua-pale",name:"status-untracked"}),r=()=>a.createElement("div",null,"Click LOAD to load RTSTRUCT.")}const c=()=>a.createElement("div",{className:"flex h-6 cursor-default text-sm leading-6 text-white"},a.createElement("div",{className:"bg-customgray-100 flex min-w-[45px] items-center rounded-l-xl rounded-r p-1"},a.createElement(s,null),a.createElement("span",{className:"ml-1"},"RTSTRUCT")),!t&&a.createElement("div",{className:"bg-primary-main hover:bg-primary-light ml-1 cursor-pointer rounded px-1.5 hover:text-black",onMouseUp:n},l));return a.createElement(a.Fragment,null,r&&a.createElement(i.u,{content:a.createElement(r,null),position:"bottom-left"},a.createElement(c,null)),!r&&a.createElement(c,null))}({isHydrated:O,onStatusClick:oe}),studyData:{label:s,useAltStyling:!0,studyDate:m(ne),currentSeries:se,seriesDescription:`RT Viewport ${ae}`,patientInformation:{patientName:Q?o.default.utils.formatPN(Q.Alphabetic):"",patientSex:W||"",patientAge:X||"",MRN:K||"",thickness:ee?`${ee.toFixed(2)}mm`:"",spacing:void 0!==re?`${re.toFixed(2)}mm`:"",scanner:te||""}}}),a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},R&&a.createElement(i.bk,{className:"h-full w-full",totalNumbers:L.totalSegments,percentComplete:L.percentComplete,loadingText:"Loading RTSTRUCT..."}),J(),z))}S.propTypes={displaySets:s().arrayOf(s().object),viewportId:s().string.isRequired,dataSource:s().object,children:s().node,customProps:s().object},S.defaultProps={customProps:{}};const y=S}}]);
|
|
//# sourceMappingURL=471.bundle.bafce1ad27e0bc5c8db5.js.map
|