modified-dicom-pacs
Version:
A modified version of DICOM PACS implementation
2 lines • 10.8 kB
JavaScript
webpackChunk=globalThis.webpackChunk||[]).push([[724],{28724:(e,o,a)=>{a.r(o),a.d(o,{default:()=>C});var t=a(55411);const n={CT:"ctToolGroup",PT:"ptToolGroup",Fusion:"fusionToolGroup",MIP:"mipToolGroup",default:"default"};const r=function(e,o,a,t,r){!function(e,o,a,t,r){const i={active:[{toolName:e.WindowLevel,bindings:[{mouseButton:o.MouseBindings.Primary}]},{toolName:e.Pan,bindings:[{mouseButton:o.MouseBindings.Auxiliary}]},{toolName:e.Zoom,bindings:[{mouseButton:o.MouseBindings.Secondary}]},{toolName:e.StackScrollMouseWheel,bindings:[]}],passive:[{toolName:e.Length},{toolName:e.ArrowAnnotate,configuration:{getTextCallback:(e,o)=>{r?e(" "):t.runCommand("arrowTextCallback",{callback:e,eventDetails:o})},changeTextCallback:(e,o,a)=>{void 0===r&&t.runCommand("arrowTextCallback",{callback:a,data:e,eventDetails:o})}}},{toolName:e.Bidirectional},{toolName:e.DragProbe},{toolName:e.Probe},{toolName:e.EllipticalROI},{toolName:e.RectangleROI},{toolName:e.StackScroll},{toolName:e.Angle},{toolName:e.CobbAngle},{toolName:e.Magnify},{toolName:"CircularBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_CIRCLE"}},{toolName:"CircularEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_CIRCLE"}},{toolName:"SphereBrush",parentTool:"Brush",configuration:{activeStrategy:"FILL_INSIDE_SPHERE"}},{toolName:"SphereEraser",parentTool:"Brush",configuration:{activeStrategy:"ERASE_INSIDE_SPHERE"}},{toolName:"ThresholdCircularBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_CIRCLE"}},{toolName:"ThresholdSphereBrush",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_SPHERE"}},{toolName:"ThresholdCircularBrushDynamic",parentTool:"Brush",configuration:{activeStrategy:"THRESHOLD_INSIDE_CIRCLE",strategySpecificConfiguration:{THRESHOLD:{isDynamic:!0,dynamicRadius:3}}}}],enabled:[{toolName:e.SegmentationDisplay}],disabled:[{toolName:e.Crosshairs,configuration:{viewportIndicators:!1,disableOnPassive:!0,autoPan:{enabled:!1,panSize:10}}}]};a.createToolGroupAndAddTools(n.CT,i),a.createToolGroupAndAddTools(n.PT,{active:i.active,passive:[...i.passive,{toolName:"RectangleROIStartEndThreshold"}],enabled:i.enabled,disabled:i.disabled}),a.createToolGroupAndAddTools(n.Fusion,i),a.createToolGroupAndAddTools(n.default,i);const l={active:[{toolName:e.VolumeRotateMouseWheel,configuration:{rotateIncrementDegrees:5}},{toolName:e.MipJumpToClick,configuration:{toolGroupId:n.PT},bindings:[{mouseButton:o.MouseBindings.Primary}]}],enabled:[{toolName:e.SegmentationDisplay},{toolName:e.OrientationMarker,configuration:{orientationWidget:{viewportCorner:"BOTTOM_LEFT"}}}]};a.createToolGroupAndAddTools(n.MIP,l)}(e,o,a,t,r)},i={commandName:"setToolActiveToolbar",commandOptions:{toolGroupIds:[n.CT,n.PT,n.Fusion]}},l=[{id:"MeasurementTools",uiType:"ohif.splitButton",props:{groupId:"MeasurementTools",primary:t.ToolbarService.createButton({id:"Length",icon:"tool-length",label:"Length",tooltip:"Length Tool",commands:i,evaluate:"evaluate.cornerstoneTool"}),secondary:{icon:"chevron-down",tooltip:"More Measure Tools"},items:[t.ToolbarService.createButton({id:"Bidirectional",icon:"tool-bidirectional",label:"Bidirectional",tooltip:"Bidirectional Tool",commands:i,evaluate:"evaluate.cornerstoneTool"}),t.ToolbarService.createButton({id:"ArrowAnnotate",icon:"tool-annotate",label:"Arrow Annotate",tooltip:"Arrow Annotate Tool",commands:i,evaluate:"evaluate.cornerstoneTool"}),t.ToolbarService.createButton({id:"EllipticalROI",icon:"tool-ellipse",label:"Ellipse",tooltip:"Ellipse Tool",commands:i,evaluate:"evaluate.cornerstoneTool"})]}},{id:"Zoom",uiType:"ohif.radioGroup",props:{icon:"tool-zoom",label:"Zoom",commands:i,evaluate:"evaluate.cornerstoneTool"}},{id:"WindowLevel",uiType:"ohif.radioGroup",props:{icon:"tool-window-level",label:"Window Level",commands:i,evaluate:"evaluate.cornerstoneTool"}},{id:"Crosshairs",uiType:"ohif.radioGroup",props:{icon:"tool-crosshair",label:"Crosshairs",commands:i,evaluate:"evaluate.cornerstoneTool"}},{id:"Pan",uiType:"ohif.radioGroup",props:{icon:"tool-move",label:"Pan",commands:i,evaluate:"evaluate.cornerstoneTool"}},{id:"RectangleROIStartEndThreshold",uiType:"ohif.radioGroup",props:{icon:"tool-create-threshold",label:"Rectangle ROI Threshold",commands:i,evaluate:["evaluate.cornerstone.segmentation",{name:"evaluate.cornerstoneTool",disabledText:"Select the PT Axial to enable this tool"}],options:"tmtv.RectangleROIThresholdOptions"}},{id:"BrushTools",uiType:"ohif.buttonGroup",props:{groupId:"BrushTools",items:[{id:"Brush",icon:"icon-tool-brush",label:"Brush",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularBrush","SphereBrush"],disabledText:"Create new segmentation to enable this tool."},options:[{name:"Radius (mm)",id:"brush-radius",type:"range",min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularBrush","SphereBrush"]}}},{name:"Shape",type:"radio",id:"brush-mode",value:"CircularBrush",values:[{value:"CircularBrush",label:"Circle"},{value:"SphereBrush",label:"Sphere"}],commands:"setToolActiveToolbar"}]},{id:"Eraser",icon:"icon-tool-eraser",label:"Eraser",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["CircularEraser","SphereEraser"]},options:[{name:"Radius (mm)",id:"eraser-radius",type:"range",min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["CircularEraser","SphereEraser"]}}},{name:"Shape",type:"radio",id:"eraser-mode",value:"CircularEraser",values:[{value:"CircularEraser",label:"Circle"},{value:"SphereEraser",label:"Sphere"}],commands:"setToolActiveToolbar"}]},{id:"Threshold",icon:"icon-tool-threshold",label:"Threshold Tool",evaluate:{name:"evaluate.cornerstone.segmentation",toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]},options:[{name:"Radius (mm)",id:"threshold-radius",type:"range",min:.5,max:99.5,step:.5,value:25,commands:{commandName:"setBrushSize",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush","ThresholdCircularBrushDynamic"]}}},{name:"Threshold",type:"radio",id:"dynamic-mode",value:"ThresholdRange",values:[{value:"ThresholdDynamic",label:"Dynamic"},{value:"ThresholdRange",label:"Range"}],commands:({value:e,commandsManager:o})=>{"ThresholdDynamic"===e?o.run("setToolActive",{toolName:"ThresholdCircularBrushDynamic"}):o.run("setToolActive",{toolName:"ThresholdCircularBrush"})}},{name:"Shape",type:"radio",id:"eraser-mode",value:"ThresholdCircularBrush",values:[{value:"ThresholdCircularBrush",label:"Circle"},{value:"ThresholdSphereBrush",label:"Sphere"}],condition:({options:e})=>"ThresholdRange"===e.find((e=>"dynamic-mode"===e.id)).value,commands:"setToolActiveToolbar"},{name:"ThresholdRange",type:"double-range",id:"threshold-range",min:0,max:50,step:.5,values:[2.5,50],condition:({options:e})=>"ThresholdRange"===e.find((e=>"dynamic-mode"===e.id)).value,commands:{commandName:"setThresholdRange",commandOptions:{toolNames:["ThresholdCircularBrush","ThresholdSphereBrush"]}}}]}]}}],s=JSON.parse('{"UU":"@ohif/mode-tmtv"}').UU;var d=a(92344);const{MetadataProvider:u}=t.classes,c="@ohif/extension-default.layoutTemplateModule.viewerLayout",m="@ohif/extension-default.sopClassHandlerModule.stack",h="@ohif/extension-default.panelModule.seriesList",p="@ohif/extension-cornerstone.viewportModule.cornerstone",T="@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation",v="@ohif/extension-tmtv.hangingProtocolModule.ptCT",g="@ohif/extension-tmtv.panelModule.petSUV",S="@ohif/extension-tmtv.panelModule.tmtvBox",b="@ohif/extension-tmtv.panelModule.tmtvExport",y={"@ohif/extension-default":"^3.0.0","@ohif/extension-cornerstone":"^3.0.0","@ohif/extension-cornerstone-dicom-seg":"^3.0.0","@ohif/extension-tmtv":"^3.0.0"};let f=[];const C={id:s,modeFactory:function({modeConfiguration:e}){return{id:s,routeName:"tmtv",displayName:d.A.t("Modes:Total Metabolic Tumor Volume"),onModeEnter:({servicesManager:e,extensionManager:o,commandsManager:a})=>{const{toolbarService:t,toolGroupService:i,customizationService:s,hangingProtocolService:d,displaySetService:c,viewportGridService:m}=e.services,h=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:p,Enums:T}=h.exports;r(p,T,i,a);const{unsubscribe:v}=i.subscribe(i.EVENTS.VIEWPORT_ADDED,(()=>{const{displaySetMatchDetails:e}=d.getMatchDetails();!function(e,o,a,t){const r=e.get("ctDisplaySet");if(!r)return;const{SeriesInstanceUID:i}=r,l=t.getDisplaySetsForSeries(i),s={...a.getToolConfiguration(n.Fusion,o.Crosshairs),filterActorUIDsToSetSlabThickness:[l[0].displaySetInstanceUID]};a.setToolConfiguration(n.Fusion,o.Crosshairs,s)}(e,p,i,c),function(e,o,a,t){const r=e.get("ptDisplaySet");if(!r)return;const{SeriesInstanceUID:i}=r,l=t.getDisplaySetsForSeries(i);if(!l||0===l.length)return;const s=a.getToolConfiguration(n.Fusion,o.WindowLevel),d=a.getToolConfiguration(n.Fusion,o.EllipticalROI),u=`cornerstoneStreamingImageVolume:${l[0].displaySetInstanceUID}`,c={...s,volumeId:u},m={...d,volumeId:u};a.setToolConfiguration(n.Fusion,o.WindowLevel,c),a.setToolConfiguration(n.Fusion,o.EllipticalROI,m)}(e,p,i,c)}));f.push(v),t.addButtons(l),t.createButtonSection("primary",["MeasurementTools","Zoom","WindowLevel","Crosshairs","Pan","SyncToggle"]),t.createButtonSection("ROIThresholdToolbox",["RectangleROIStartEndThreshold","BrushTools"]),s.addModeCustomizations([{id:"segmentation.panel",segmentationPanelMode:"expanded",addSegment:!1,onSegmentationAdd:()=>{a.run("createNewLabelmapFromPT")}}]),d.addCustomAttribute("getPTVOIRange","get PT VOI based on corrected or not",(e=>{const o=e.find((e=>"PT"===e.Modality));if(!o)return;const{imageId:a}=o.images[0],t=u.get("scalingModule",a);return t&&t.suvbw?{windowWidth:5,windowCenter:2.5}:void 0}))},onModeExit:({servicesManager:e})=>{const{toolGroupService:o,syncGroupService:a,segmentationService:t,cornerstoneViewportService:n,uiDialogService:r,uiModalService:i}=e.services;f.forEach((e=>e())),r.dismissAll(),i.hide(),o.destroy(),a.destroy(),t.destroy(),n.destroy()},validationTags:{study:[],series:[]},isValidMode:({modalities:e,study:o})=>{const a=e.split("\\");return{valid:a.includes("CT")&&"M1"!==o.mrn&&a.includes("PT")&&!["SM"].some((e=>a.includes(e)))&&"1.3.6.1.4.1.12842.1.1.14.3.20220915.105557.468.2963630849"!==o.studyInstanceUid,description:"The mode requires both PT and CT series in the study"}},routes:[{path:"tmtv",layoutTemplate:()=>({id:c,props:{leftPanels:[h],leftPanelClosed:!0,rightPanels:[[S,T,b],g],viewports:[{namespace:p,displaySetsToDisplay:[m]}]}})}],extensions:y,hangingProtocol:v,sopClassHandlers:[m],hotkeys:[...t.ot.defaults.hotkeyBindings],...e}},extensionDependencies:y}}}]);
//# sourceMappingURL=724.bundle.51723d5238be474f3507.js.map
;(globalThis.