dicomweb-proxy
Version:
A proxy to translate between dicomweb and dimse
2 lines • 5.81 kB
JavaScript
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8228],{48228:(e,t,r)=>{r.r(t),r.d(t,{default:()=>w});var a=r(86326),n=r(43984),i=r(55530),o=r.n(i);const s=e=>{const{list:t,itemGenerator:r}=e;if(t)return t.map((t=>{if(!t)return;const a=t.generator||r;if(!a)throw new Error(`No generator for ${t}`);return a({...e,item:t})}))};var c=r(14867),l=r.n(c);r(15327);function m(e,t){if(null!==e)return parseFloat(e).toFixed(t)}function u(e,t="MMM D, YYYY"){return l()(e,"YYYYMMDD").format(t)}function d(e,t="HH:mm:ss"){return l()(e,"HH:mm:ss").format(t)}var f=r(62037);const{formatPN:v}=f.Wp,p=e=>{const{item:t}=e,{title:r,value:n,condition:i,contents:o}=t;if(e.image={...e.image,...e.metadata},e.formatDate=u,e.formatTime=d,e.formatPN=v,e.formatNumberPrecision=m,i&&!i(e))return null;if(!o&&!n)return null;const s=n&&n(e),c=o&&o(e)||[{className:"mr-1",value:r},{classname:"mr-1 font-light",value:s}];return a.createElement("div",{key:t.id,className:"flex flex-row"},c.map(((e,t)=>a.createElement("span",{key:t,className:e.className},e.value))))},y=({config:e,overlayData:t,...r})=>{const{topLeft:n=[],topRight:i=[],bottomLeft:c=[],bottomRight:l=[]}=t??{},m="absolute pointer-events-none microscopy-viewport-overlay";return a.createElement(a.Fragment,null,n&&n.length>0&&a.createElement("div",{"data-cy":"viewport-overlay-top-left",className:o()(m,"top-viewport left-viewport text-primary-light")},s({...r,list:n,itemGenerator:p})),i&&i.length>0&&a.createElement("div",{"data-cy":"viewport-overlay-top-right",className:o()(m,"top-viewport right-viewport-scrollbar text-primary-light")},s({...r,list:i,itemGenerator:p})),l&&l.length>0&&a.createElement("div",{"data-cy":"viewport-overlay-bottom-right",className:o()(m,"bottom-viewport right-viewport-scrollbar text-primary-light")},s({...r,list:l,itemGenerator:p})),c&&c.length>0&&a.createElement("div",{"data-cy":"viewport-overlay-bottom-left",className:o()(m,"bottom-viewport left-viewport text-primary-light")},s({...r,list:c,itemGenerator:p})))};var g=r(5842);const w=function({activeViewportId:e,setViewportActive:t,displaySets:r,viewportId:i,dataSource:o,resizeRef:s}){const{servicesManager:c,extensionManager:l}=(0,f.Jg)(),[m,u]=(0,a.useState)(!1),[d,v]=(0,a.useState)(null),[p,w]=(0,a.useState)(null),I=(0,a.useRef)(),h=(0,a.useRef)(),{microscopyService:D,customizationService:S}=c.services,E=S.getCustomization("microscopyViewport.overlay"),b=(0,a.useCallback)((async(e,t)=>{D.clearAnnotations();let r=t;"SR"===t.Modality&&(r=t.getSourceDisplaySet()),console.log("Loading viewer metadata",r),await(async r=>{const a=await D.importDicomMicroscopyViewer(),{viewer:s,metadata:m}=a,u=s.VolumeImageViewer,d=function({extensionManager:e,servicesManager:t}){const r=window.config.dataSources.find((t=>t.sourceName===e.activeDataSource)),{userAuthenticationService:a}=t.services,{wadoRoot:i,staticWado:o,singlepart:s}=r.configuration,c={url:i||"/dicomlocal",staticWado:o,singlepart:s,headers:a.getAuthorizationHeader(),errorInterceptor:f.r_.getHTTPErrorHandler()},l=new n.StaticWadoClient(c);return l.wadoURL=c.url,"dicomlocal"===e.activeDataSource&&(l.retrieveInstanceFrames=async e=>{if(!("studyInstanceUID"in e))throw new Error("Study Instance UID is required for retrieval of instance frames");if(!("seriesInstanceUID"in e))throw new Error("Series Instance UID is required for retrieval of instance frames");if(!("sopInstanceUID"in e))throw new Error("SOP Instance UID is required for retrieval of instance frames");if(!("frameNumbers"in e))throw new Error("frame numbers are required for retrieval of instance frames");console.log(`retrieve frames ${e.frameNumbers.toString()} of instance ${e.sopInstanceUID}`);const t=f.H8.getInstance(e.studyInstanceUID,e.seriesInstanceUID,e.sopInstanceUID);return(Array.isArray(e.frameNumbers)?e.frameNumbers:e.frameNumbers.split(",")).map((e=>Array.isArray(t.PixelData)?t.PixelData[+e-1]:t.PixelData))}),l}({extensionManager:l,servicesManager:c}),p=[];r.forEach((e=>{e.ImageType="string"==typeof e.ImageType?e.ImageType.split("\\"):e.ImageType;const t=(0,n.cleanDenaturalizedDataset)(g.Ay.data.DicomMetaDictionary.denaturalizeDataset(e),{StudyInstanceUID:e.StudyInstanceUID,SeriesInstanceUID:e.SeriesInstanceUID,dataSourceConfig:o.getConfig()});t["00480105"]||(t["00480105"]={vr:"SQ",Value:[{"00480106":{vr:"SH",Value:["1"]}}]});const r=new m.VLWholeSlideMicroscopyImage({metadata:t}),a=r.ImageType[2];"VOLUME"!==a&&"THUMBNAIL"!==a||p.push(r)}));const y=new u({client:d,metadata:p,retrieveRendered:!1,controls:["overview","position"]});I&&I.current&&y.addViewportOverlay&&y.addViewportOverlay({element:I.current,coordinates:[0,0],navigate:!0,className:"OpenLayersOverlay"}),y.render({container:e});const{StudyInstanceUID:h,SeriesInstanceUID:S}=t,E=D.addViewer(y,i,e,h,S);E.addContextMenuCallback((e=>{})),v(y),w(E)})(r.others),"SR"===t.Modality&&t.load(r)}),[o,l,D,c,i]);(0,a.useEffect)((()=>{const e=r[0];return b(h.current,e).then((()=>{u(!0)})),()=>{d&&D.removeViewer(d)}}),[]),(0,a.useEffect)((()=>{const e=r[0];if(D.clearAnnotations(),"SR"===e.Modality){const t=e.getSourceDisplaySet();e.load(t)}}),[p,r,D]);const N={width:"100%",height:"100%"},M=r[0],U=M.firstInstance||M.instance,V=S.getCustomization("ui.loadingIndicatorProgress");return a.createElement("div",{className:"DicomMicroscopyViewer",style:N,onClick:()=>{i!==e&&t(i)}},a.createElement("div",{style:{...N,display:"none"}},a.createElement("div",{style:{...N},ref:I},a.createElement("div",{style:{position:"relative",height:"100%",width:"100%"}},M&&U.imageId&&a.createElement(y,{overlayData:E,displaySet:M,instance:M.instance,metadata:M.metadata})))),a.createElement("div",{style:N,ref:e=>{h.current=e,s.current=e}}),m?null:a.createElement(V,{className:"h-full w-full bg-black"}))}}}]);
//# sourceMappingURL=8228.bundle.29ae37b0846c46603dfc.js.map