dicomweb-proxy
Version:
A proxy to translate between dicomweb and dimse
2 lines • 7.02 kB
JavaScript
;(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[295],{58295:(e,t,n)=>{n.r(t),n.d(t,{default:()=>S});var r=n(11374),s=n.n(r),a=n(41766),o=n(80619),i=n(5085);const l=function(e,t,n){const{tools:r}=t.get("cornerstone.overlayViewportTools")??{};return e.createToolGroupAndAddTools(n,r)},c={NO_NEVER:-1,CANCEL:0,HYDRATE_SEG:5};const u=function({servicesManager:e,segDisplaySet:t,viewportId:n,preHydrateCallbacks:r,hydrateSEGDisplaySet:s}){const{uiViewportDialogService:a}=e.services;return new Promise((async function(e,o){const l=await function(e,t){return new Promise((function(n,r){const s="Do you want to open this Segmentation?",a=[{type:i.Ny.NW.secondary,text:"No",value:c.CANCEL},{type:i.Ny.NW.primary,text:"Yes",value:c.HYDRATE_SEG}],o=t=>{e.hide(),n(t)};e.show({viewportId:t,type:"info",message:s,actions:a,onSubmit:o,onOutsideClick:()=>{e.hide(),n(c.CANCEL)},onKeyPress:e=>{"Enter"===e.key&&o(c.HYDRATE_SEG)}})}))}(a,n);if(l===c.HYDRATE_SEG){r?.forEach((e=>{e()}));e(await s({segDisplaySet:t,viewportId:n}))}}))};function p({isHydrated:e,onStatusClick:t}){let n=null,r=null;switch(e){case!0:r=()=>a.createElement(i.In,{name:"status-alert"}),n=()=>a.createElement("div",null,"This Segmentation is loaded in the segmentation panel");break;case!1:r=()=>a.createElement(i.In,{className:"text-aqua-pale",name:"status-untracked"}),n=()=>a.createElement("div",null,"Click LOAD to load segmentation.")}const s=()=>{const{t:n}=(0,o.Bd)("Common"),s=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("div",{className:"bg-primary-main hover:bg-primary-light ml-1 cursor-pointer rounded px-1.5 hover:text-black",onMouseUp:t},s))};return a.createElement(a.Fragment,null,n&&a.createElement(i.m_,{content:a.createElement(n,null),position:"bottom-left"},a.createElement(s,null)),!n&&a.createElement(s,null))}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 r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(this,arguments)}function m(e){const{children:t,displaySets:n,viewportOptions:r,servicesManager:s,extensionManager:c,commandsManager:m}=e,{t:S}=(0,o.Bd)("SEGViewport"),E=r.viewportId,{displaySetService:y,toolGroupService:g,segmentationService:v,customizationService:w,viewportActionCornersService:f}=s.services,I=`SEGToolGroup-${E}`;if(n.length>1)throw new Error("SEG viewport should only have a single display set");const b=n[0],[h,D]=(0,i.ih)(),[C,N]=(0,a.useState)(1),[T,A]=(0,a.useState)(b.isHydrated),[k,P]=(0,a.useState)(!b.isLoaded),[G,x]=(0,a.useState)(null),[O,M]=(0,a.useState)({percentComplete:null,totalSegments:null}),L=(0,a.useRef)(null),{viewports:R,activeViewportId:_}=h,U=b.getReferenceDisplaySet(),V=function(e,t){const{SharedFunctionalGroupsSequence:n}=t.instance,r=Array.isArray(n)?n[0]:n,{PixelMeasuresSequence:s}=r,a=Array.isArray(s)?s[0]:s,{SpacingBetweenSlices:o,SliceThickness:i}=a,l=e.images[0],c={PatientID:l.PatientID,PatientName:l.PatientName,PatientSex:l.PatientSex,PatientAge:l.PatientAge,SliceThickness:l.SliceThickness||i,StudyDate:l.StudyDate,SeriesDescription:l.SeriesDescription,SeriesInstanceUID:l.SeriesInstanceUID,SeriesNumber:l.SeriesNumber,ManufacturerModelName:l.ManufacturerModelName,SpacingBetweenSlices:l.SpacingBetweenSlices||o};return c}(U,b);L.current={displaySet:U,metadata:V};const H=()=>{x(null)},j=(0,a.useCallback)((()=>{h?.viewports.forEach((({viewportId:e})=>{m.runCommand("storePresentation",{viewportId:e})}))}),[h]),F=(0,a.useCallback)((()=>{const{component:t}=c.getModuleEntry("@ohif/extension-cornerstone.viewportModule.cornerstone"),{displaySet:n}=L.current;return a.createElement(t,d({},e,{displaySets:[n,b],viewportOptions:{viewportType:"volume",toolGroupId:I,orientation:r.orientation,viewportId:r.viewportId},onElementEnabled:t=>{e.onElementEnabled?.(t),(e=>{x(e.detail.element)})(t)},onElementDisabled:H}))}),[E,b,I]),B=(0,a.useCallback)((e=>{const t=b.displaySetInstanceUID,n=v.getSegmentation(t),{segments:r}=n,s=Object.keys(r).length;let a=C+e;a>s-1?a=1:0===a&&(a=s-1),v.jumpToSegmentCenter(t,a,I),N(a)}),[C]);(0,a.useEffect)((()=>{k||u({servicesManager:s,viewportId:E,segDisplaySet:b,preHydrateCallbacks:[j],hydrateSEGDisplaySet:Y}).then((e=>{e&&A(!0)}))}),[s,E,b,k]),(0,a.useEffect)((()=>{const{unsubscribe:e}=v.subscribe(v.EVENTS.SEGMENTATION_LOADING_COMPLETE,(e=>{e.segDisplaySet.displaySetInstanceUID===b.displaySetInstanceUID&&P(!1)}));return()=>{e()}}),[b]),(0,a.useEffect)((()=>{const{unsubscribe:e}=v.subscribe(v.EVENTS.SEGMENT_LOADING_COMPLETE,(({percentComplete:e,numSegments:t})=>{M({percentComplete:e,totalSegments:t})}));return()=>{e()}}),[b]),(0,a.useEffect)((()=>{const e=y.subscribe(y.EVENTS.DISPLAY_SETS_REMOVED,(({displaySetInstanceUIDs:e})=>{const t=R.get(_);e.includes(t.displaySetInstanceUID)&&D.setDisplaySetsForViewport({viewportId:_,displaySetInstanceUIDs:[]})}));return()=>{e.unsubscribe()}}),[]),(0,a.useEffect)((()=>{let e=g.getToolGroup(I);if(!e)return e=l(g,w,I),()=>{v.removeSegmentationRepresentationFromToolGroup(I),g.destroyToolGroup(I)}}),[]),(0,a.useEffect)((()=>(A(b.isHydrated),()=>{v.removeSegmentationRepresentationFromToolGroup(I),L.current=null})),[b]);const Y=(0,a.useCallback)((({segDisplaySet:e,viewportId:t})=>{m.runCommand("loadSegmentationDisplaySetsForViewport",{displaySets:[e],viewportId:t})}),[m]),q=(0,a.useCallback)((async()=>{j();const e=await Y({segDisplaySet:b,viewportId:E});A(e)}),[Y,b,j,E]);(0,a.useEffect)((()=>{f.setComponents([{viewportId:E,id:"viewportStatusComponent",component:p({isHydrated:T,onStatusClick:q}),indexPriority:-100,location:f.LOCATIONS.topLeft},{viewportId:E,id:"viewportActionArrowsComponent",component:a.createElement(i.$I,{key:"actionArrows",onArrowsClick:B,className:E===_?"visible":"invisible group-hover:visible"}),indexPriority:0,location:f.LOCATIONS.topRight}])}),[_,T,B,q,f,E]);let W=null;if(!L.current||U.displaySetInstanceUID!==L.current.displaySet.displaySetInstanceUID)return null;t&&t.length&&(W=t.map(((e,t)=>e&&a.cloneElement(e,{viewportId:E,key:t}))));const{PatientID:$,PatientName:z,PatientSex:K,PatientAge:J,SliceThickness:Q,ManufacturerModelName:X,StudyDate:Z,SeriesDescription:ee,SpacingBetweenSlices:te}=L.current.metadata;return a.createElement(a.Fragment,null,a.createElement("div",{className:"relative flex h-full w-full flex-row overflow-hidden"},k&&a.createElement(i.pT,{className:"h-full w-full",totalNumbers:O.totalSegments,percentComplete:O.percentComplete,loadingText:"Loading SEG..."}),F(),W))}m.propTypes={displaySets:s().arrayOf(s().object),viewportId:s().string.isRequired,dataSource:s().object,children:s().node,customProps:s().object},m.defaultProps={customProps:{}};const S=m}}]);
//# sourceMappingURL=295.bundle.2d89c137fd3a666aa5fe.js.map