UNPKG

dicomweb-proxy

Version:

A proxy to translate between dicomweb and dimse

2 lines 7.35 kB
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4526],{58295:(e,t,n)=>{n.r(t),n.d(t,{default:()=>m});var a=n(86326),s=n(99993),i=n(2836);const r=function(e,t,n){const a=t.getCustomization("cornerstone.overlayViewportTools");return e.createToolGroupAndAddTools(n,a)},o={NO_NEVER:-1,CANCEL:0,HYDRATE_SEG:5};const l=function({servicesManager:e,segDisplaySet:t,viewportId:n,preHydrateCallbacks:a,hydrateCallback:s}){const{uiViewportDialogService:i,customizationService:r}=e.services,l=e._extensionManager._appConfig;return new Promise((async function(e,c){const d=l?.disableConfirmationPrompts?o.HYDRATE_SEG:await function(e,t,n){return new Promise((function(a,s){const i=t.getCustomization("viewportNotification.hydrateSEGMessage"),r=[{id:"no-hydrate",type:"secondary",text:"No",value:o.CANCEL},{id:"yes-hydrate",type:"primary",text:"Yes",value:o.HYDRATE_SEG}],l=t=>{e.hide(),a(t)};e.show({viewportId:n,type:"info",message:i,actions:r,onSubmit:l,onOutsideClick:()=>{e.hide(),a(o.CANCEL)},onKeyPress:e=>{"Enter"===e.key&&l(o.HYDRATE_SEG)}})}))}(i,r,n);d===o.HYDRATE_SEG&&(a?.forEach((e=>{e()})),window.setTimeout((async()=>{const a=await s({segDisplaySet:t,viewportId:n});e(a)}),0))}))};function c({isHydrated:e,onStatusClick:t}){let n=null,r=null;switch(e){case!0:r=()=>a.createElement(i.FI1.ByName,{name:"status-alert"}),n=()=>a.createElement("div",null,"This Segmentation is loaded in the segmentation panel");break;case!1:r=()=>a.createElement(i.FI1.ByName,{className:"text-muted-foreground h-4 w-4",name:"status-untracked"}),n=()=>a.createElement("div",null,"Click LOAD to load segmentation.")}const o=()=>{const{t:n}=(0,s.Bd)("Common"),o=n("LOAD");return 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(r,null),a.createElement("span",{className:"ml-1"},"SEG")),!e&&a.createElement(i.N8H,{onInteraction:t},o))};return a.createElement(a.Fragment,null,n&&a.createElement(i.m_M,null,a.createElement(i.k$k,{asChild:!0},a.createElement("span",null,a.createElement(o,null))),a.createElement(i.ZIw,{side:"bottom"},a.createElement(n,null))),!n&&a.createElement(o,null))}var d=n(7241),u=n(99737);function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},p.apply(null,arguments)}const m=function(e){const{children:t,displaySets:n,viewportOptions:o,servicesManager:m,extensionManager:S,commandsManager:E}=e,{t:y}=(0,s.Bd)("SEGViewport"),I=o.viewportId,{displaySetService:g,toolGroupService:v,segmentationService:w,customizationService:f,viewportActionCornersService:C}=m.services,b=f.getCustomization("ui.loadingIndicatorTotalPercent"),D=`SEGToolGroup-${I}`;if(n.length>1)throw new Error("SEG viewport should only have a single display set");const h=n[0],[N,T]=(0,i.ihW)(),{setPositionPresentation:P}=(0,d.usePositionPresentationStore)(),[A,k]=(0,a.useState)(h.isHydrated),[G,x]=(0,a.useState)(!h.isLoaded),[M,O]=(0,a.useState)(null),[L,R]=(0,a.useState)({percentComplete:null,totalSegments:null}),U=(0,a.useRef)(null),{viewports:_,activeViewportId:H}=N,V=h.referencedDisplaySetInstanceUID,B=g.getDisplaySetByUID(V),F=function(e,t){const{SharedFunctionalGroupsSequence:n}=t.instance,a=Array.isArray(n)?n[0]:n,{PixelMeasuresSequence:s}=a,i=Array.isArray(s)?s[0]:s,{SpacingBetweenSlices:r,SliceThickness:o}=i,l=e.images[0],c={PatientID:l.PatientID,PatientName:l.PatientName,PatientSex:l.PatientSex,PatientAge:l.PatientAge,SliceThickness:l.SliceThickness||o,StudyDate:l.StudyDate,SeriesDescription:l.SeriesDescription,SeriesInstanceUID:l.SeriesInstanceUID,SeriesNumber:l.SeriesNumber,ManufacturerModelName:l.ManufacturerModelName,SpacingBetweenSlices:l.SpacingBetweenSlices||r};return c}(B,h);U.current={displaySet:B,metadata:F};const Y=()=>{O(null)},z=(0,a.useCallback)((()=>{N?.viewports.forEach((({viewportId:e})=>{E.runCommand("storePresentation",{viewportId:e})}))}),[N]),j=(0,a.useCallback)((()=>{const{component:t}=S.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone");return a.createElement(t,p({},e,{displaySets:[h],viewportOptions:{viewportType:o.viewportType,toolGroupId:D,orientation:o.orientation,viewportId:o.viewportId,presentationIds:o.presentationIds},onElementEnabled:t=>{e.onElementEnabled?.(t),(e=>{O(e.detail.element)})(t)},onElementDisabled:Y}))}),[I,h,D]),$=(0,a.useCallback)((e=>{d.utils.handleSegmentChange({direction:e,segDisplaySet:h,viewportId:I,selectedSegmentObjectIndex:0,segmentationService:w})}),[0]),q=(0,a.useCallback)((()=>{E.runCommand("updateStoredSegmentationPresentation",{displaySet:h,type:u.SegmentationRepresentations.Labelmap}),E.runCommand("updateStoredPositionPresentation",{viewportId:I,displaySetInstanceUID:B.displaySetInstanceUID}),E.runCommand("loadSegmentationDisplaySetsForViewport",{viewportId:I,displaySetInstanceUIDs:[B.displaySetInstanceUID]})}),[E,I,B,h]);(0,a.useEffect)((()=>{G||l({servicesManager:m,viewportId:I,segDisplaySet:h,preHydrateCallbacks:[z],hydrateCallback:q}).then((e=>{e&&k(!0)}))}),[m,I,h,G,q]),(0,a.useEffect)((()=>{w.clearSegmentationRepresentations(I);const{unsubscribe:e}=w.subscribe(w.EVENTS.SEGMENTATION_LOADING_COMPLETE,(e=>{if(e.segDisplaySet.displaySetInstanceUID===h.displaySetInstanceUID&&x(!1),h?.firstSegmentedSliceImageId&&o?.presentationIds){const{firstSegmentedSliceImageId:e}=h,{presentationIds:t}=o;P(t.positionPresentationId,{viewReference:{referencedImageId:e}})}}));return()=>{e()}}),[h]),(0,a.useEffect)((()=>{const{unsubscribe:e}=w.subscribe(w.EVENTS.SEGMENT_LOADING_COMPLETE,(({percentComplete:e,numSegments:t})=>{R({percentComplete:e,totalSegments:t})}));return()=>{e()}}),[h]),(0,a.useEffect)((()=>{const e=g.subscribe(g.EVENTS.DISPLAY_SETS_REMOVED,(({displaySetInstanceUIDs:e})=>{const t=_.get(H);e.includes(t.displaySetInstanceUID)&&T.setDisplaySetsForViewport({viewportId:H,displaySetInstanceUIDs:[]})}));return()=>{e.unsubscribe()}}),[]),(0,a.useEffect)((()=>{let e=v.getToolGroup(D);if(!e)return E.runCommand("updateStoredSegmentationPresentation",{displaySet:h,type:u.SegmentationRepresentations.Labelmap}),w.clearSegmentationRepresentations(I),e=r(v,f,D),()=>{w.clearSegmentationRepresentations(I),v.destroyToolGroup(D)}}),[]);const K=(0,a.useCallback)((async()=>{z(),q()}),[z,q]);(0,a.useEffect)((()=>{C.addComponents([{viewportId:I,id:"viewportStatusComponent",component:c({isHydrated:A,onStatusClick:K}),indexPriority:-100,location:C.LOCATIONS.topLeft},{viewportId:I,id:"viewportActionArrowsComponent",component:a.createElement(i.$IX,{key:"actionArrows",onArrowsClick:$,className:I===H?"visible":"invisible group-hover/pane:visible"}),indexPriority:0,location:C.LOCATIONS.topRight}])}),[H,A,$,K,C,I]);let W=null;return U.current&&B.displaySetInstanceUID===U.current.displaySet.displaySetInstanceUID?(t&&t.length&&(W=t.map(((e,t)=>e&&a.cloneElement(e,{viewportId:I,key:t})))),a.createElement(a.Fragment,null,a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},G&&a.createElement(b,{className:"h-full w-full",totalNumbers:L.totalSegments,percentComplete:L.percentComplete,loadingText:"Loading SEG..."}),j(),W))):null}}}]); //# sourceMappingURL=4526.bundle.899a0c5ca6654a1e5bab.js.map