@ohif/mode-longitudinal 0.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +60 -0
- package/dist/ohif-mode-longitudinal.js +2 -0
- package/dist/ohif-mode-longitudinal.js.map +1 -0
- package/package.json +52 -35
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2018 Open Health Imaging Foundation
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018 Open Health Imaging Foundation
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Measurement Tracking Mode
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Introduction
|
|
6
|
+
Measurement tracking mode allows you to:
|
|
7
|
+
|
|
8
|
+
- Draw annotations and have them shown in the measurement panel
|
|
9
|
+
- Create a report from the tracked measurement and export them as DICOM SR
|
|
10
|
+
- Use already exported DICOM SR to re-hydrate the measurements in the viewer
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Status Icon
|
|
18
|
+
Each viewport has a left icon indicating whether the series within the viewport contains:
|
|
19
|
+
|
|
20
|
+
- tracked measurement OR
|
|
21
|
+
- untracked measurement OR
|
|
22
|
+
- Structured Report OR
|
|
23
|
+
- Locked (uneditable) Structured Report
|
|
24
|
+
|
|
25
|
+
In the following, we will discuss each category.
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+
|
|
29
|
+
### Tracked vs Untracked Measurements
|
|
30
|
+
|
|
31
|
+
OHIF-v3 implements a workflow for measurement tracking that can be seen below.
|
|
32
|
+
In summary, when you create an annotation, a prompt will be shown whether to start tracking or not. If you start the tracking, the annotation style will change to a solid line, and annotation details get displayed on the measurement panel. On the other hand, if you decline the tracking prompt, the measurement will be considered "temporary," and annotation style remains as a dashed line and not shown on the right panel, and cannot be exported.
|
|
33
|
+
|
|
34
|
+
Below, you can see different icons that appear for a tracked vs. untracked series in OHIF-v3.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Reading and Writing DICOM SR
|
|
41
|
+
OHIF-v3 provides full support for reading, writing and mapping the DICOM Structured Report (SR) to interactable Cornerstone Tools. When you load an already exported DICOM SR into the viewer, you will be prompted whether to track the measurements for the series or not.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
If you click Yes, DICOM SR measurements gets re-hydrated into the viewer and the series become a tracked series. However, If you say no and later decide to say track the measurements, you can always click on the SR button that will prompt you with the same message again.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+

|
|
50
|
+
|
|
51
|
+
The full workflow for saving measurements to SR and loading SR into the viewer is shown below.
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Loading DICOM SR into an Already Tracked Series
|
|
57
|
+
|
|
58
|
+
If you have an already tracked series and try to load a DICOM SR measurements, you will be shown the following lock icon. This means that, you can review the DICOM SR measurement, manipulate image and draw "temporary" measurements; however, you cannot edit the DICOM SR measurement.
|
|
59
|
+
|
|
60
|
+

|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("@ohif/core"),require("@ohif/ui")):"function"==typeof define&&define.amd?define(["@ohif/core","@ohif/ui"],e):"object"==typeof exports?exports["ohif-mode-longitudinal"]=e(require("@ohif/core"),require("@ohif/ui")):o["ohif-mode-longitudinal"]=e(o["@ohif/core"],o["@ohif/ui"])}(globalThis,((o,e)=>(()=>{"use strict";var t={762:e=>{e.exports=o},369:o=>{o.exports=e}},n={};function i(o){var e=n[o];if(void 0!==e)return e.exports;var a=n[o]={exports:{}};return t[o](a,a.exports,i),a.exports}i.d=(o,e)=>{for(var t in e)i.o(e,t)&&!i.o(o,t)&&Object.defineProperty(o,t,{enumerable:!0,get:e[t]})},i.o=(o,e)=>Object.prototype.hasOwnProperty.call(o,e);var a={};return(()=>{i.d(a,{default:()=>k});var o=i(762),e=i(369);const{windowLevelPresets:t}=o.defaults;function n(o,e,t,n,i,a,l){return{id:e,icon:t,label:n,type:o,commands:i,tooltip:a,uiType:l}}const l=n.bind(null,"action"),s=n.bind(null,"toggle"),r=n.bind(null,"tool");function c(o,e,n){return{id:o.toString(),title:e,subtitle:n,type:"action",commands:[{commandName:"setWindowLevel",commandOptions:{...t[o]},context:"CORNERSTONE"}]}}const m=["default","mpr","SRToolGroup"];function d(o){return m.map((e=>({commandName:"setToolActive",commandOptions:{toolGroupId:e,toolName:o},context:"CORNERSTONE"})))}const p=[{id:"MeasurementTools",type:"ohif.splitButton",props:{groupId:"MeasurementTools",isRadio:!0,primary:r("Length","tool-length","Length",[{commandName:"setToolActive",commandOptions:{toolName:"Length"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SRLength",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Length"),secondary:{icon:"chevron-down",label:"",isActive:!0,tooltip:"More Measure Tools"},items:[r("Length","tool-length","Length",[{commandName:"setToolActive",commandOptions:{toolName:"Length"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SRLength",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Length Tool"),r("Bidirectional","tool-bidirectional","Bidirectional",[{commandName:"setToolActive",commandOptions:{toolName:"Bidirectional"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SRBidirectional",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Bidirectional Tool"),r("ArrowAnnotate","tool-annotate","Annotation",[{commandName:"setToolActive",commandOptions:{toolName:"ArrowAnnotate"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SRArrowAnnotate",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Arrow Annotate"),r("EllipticalROI","tool-elipse","Ellipse",[{commandName:"setToolActive",commandOptions:{toolName:"EllipticalROI"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SREllipticalROI",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Ellipse Tool"),r("CircleROI","tool-circle","Circle",[{commandName:"setToolActive",commandOptions:{toolName:"CircleROI"},context:"CORNERSTONE"},{commandName:"setToolActive",commandOptions:{toolName:"SRCircleROI",toolGroupId:"SRToolGroup"},context:"CORNERSTONE"}],"Circle Tool")]}},{id:"Zoom",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-zoom",label:"Zoom",commands:d("Zoom")}},{id:"WindowLevel",type:"ohif.splitButton",props:{groupId:"WindowLevel",primary:r("WindowLevel","tool-window-level","Window Level",[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}],"Window Level"),secondary:{icon:"chevron-down",label:"W/L Manual",isActive:!0,tooltip:"W/L Presets"},isAction:!0,renderer:e.WindowLevelMenuItem,items:[c(1,"Soft tissue","400 / 40"),c(2,"Lung","1500 / -600"),c(3,"Liver","150 / 90"),c(4,"Bone","2500 / 480"),c(5,"Brain","80 / 40")]}},{id:"Pan",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-move",label:"Pan",commands:d("Pan")}},{id:"Capture",type:"ohif.action",props:{icon:"tool-capture",label:"Capture",type:"action",commands:[{commandName:"showDownloadViewportModal",commandOptions:{},context:"CORNERSTONE"}]}},{id:"Layout",type:"ohif.layoutSelector",props:{rows:3,columns:3}},{id:"MPR",type:"ohif.action",props:{type:"toggle",icon:"icon-mpr",label:"MPR",commands:[{commandName:"toggleHangingProtocol",commandOptions:{protocolId:"mpr"},context:"DEFAULT"}]}},{id:"Crosshairs",type:"ohif.radioGroup",props:{type:"tool",icon:"tool-crosshair",label:"Crosshairs",commands:[{commandName:"setToolActive",commandOptions:{toolName:"Crosshairs",toolGroupId:"mpr"},context:"CORNERSTONE"}]}},{id:"MoreTools",type:"ohif.splitButton",props:{isRadio:!0,groupId:"MoreTools",primary:l("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),secondary:{icon:"chevron-down",label:"",isActive:!0,tooltip:"More Tools"},items:[l("Reset","tool-reset","Reset View",[{commandName:"resetViewport",commandOptions:{},context:"CORNERSTONE"}],"Reset"),l("rotate-right","tool-rotate-right","Rotate Right",[{commandName:"rotateViewportCW",commandOptions:{},context:"CORNERSTONE"}],"Rotate +90"),l("flip-horizontal","tool-flip-horizontal","Flip Horizontally",[{commandName:"flipViewportHorizontal",commandOptions:{},context:"CORNERSTONE"}],"Flip Horizontal"),s("StackImageSync","link","Stack Image Sync",[{commandName:"toggleStackImageSync",commandOptions:{},context:"CORNERSTONE"}]),s("ReferenceLines","tool-referenceLines","Reference Lines",[{commandName:"toggleReferenceLines",commandOptions:{},context:"CORNERSTONE"}]),r("StackScroll","tool-stack-scroll","Stack Scroll",[{commandName:"setToolActive",commandOptions:{toolName:"StackScroll"},context:"CORNERSTONE"}],"Stack Scroll"),l("invert","tool-invert","Invert",[{commandName:"invertViewport",commandOptions:{},context:"CORNERSTONE"}],"Invert Colors"),r("Probe","tool-probe","Probe",[{commandName:"setToolActive",commandOptions:{toolName:"DragProbe"},context:"CORNERSTONE"}],"Probe"),s("cine","tool-cine","Cine",[{commandName:"toggleCine",context:"CORNERSTONE"}],"Cine"),r("Angle","tool-angle","Angle",[{commandName:"setToolActive",commandOptions:{toolName:"Angle"},context:"CORNERSTONE"}],"Angle"),r("Magnify","tool-magnify","Magnify",[{commandName:"setToolActive",commandOptions:{toolName:"Magnify"},context:"CORNERSTONE"}],"Magnify"),r("Rectangle","tool-rectangle","Rectangle",[{commandName:"setToolActive",commandOptions:{toolName:"RectangleROI"},context:"CORNERSTONE"}],"Rectangle"),r("CalibrationLine","tool-calibration","Calibration",[{commandName:"setToolActive",commandOptions:{toolName:"CalibrationLine"},context:"CORNERSTONE"}],"Calibration Line"),l("TagBrowser","list-bullets","Dicom Tag Browser",[{commandName:"openDICOMTagViewer",commandOptions:{},context:"DEFAULT"}],"Dicom Tag Browser")]}}],u=JSON.parse('{"u2":"@ohif/mode-longitudinal"}').u2;const N=function(o,e,t){!function(o,e,t,n){const i=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:a,Enums:l}=i.exports,s={active:[{toolName:a.WindowLevel,bindings:[{mouseButton:l.MouseBindings.Primary}]},{toolName:a.Pan,bindings:[{mouseButton:l.MouseBindings.Auxiliary}]},{toolName:a.Zoom,bindings:[{mouseButton:l.MouseBindings.Secondary}]},{toolName:a.StackScrollMouseWheel,bindings:[]}],passive:[{toolName:a.Length},{toolName:a.ArrowAnnotate},{toolName:a.Bidirectional},{toolName:a.DragProbe},{toolName:a.EllipticalROI},{toolName:a.CircleROI},{toolName:a.RectangleROI},{toolName:a.StackScroll},{toolName:a.Angle},{toolName:a.CobbAngle},{toolName:a.PlanarFreehandROI},{toolName:a.Magnify},{toolName:a.SegmentationDisplay},{toolName:a.CalibrationLine}],disabled:[{toolName:a.ReferenceLines}]},r={[a.ArrowAnnotate]:{getTextCallback:(o,e)=>t.runCommand("arrowTextCallback",{callback:o,eventDetails:e}),changeTextCallback:(o,e,n)=>t.runCommand("arrowTextCallback",{callback:n,data:o,eventDetails:e})}};e.createToolGroupAndAddTools(n,s,r)}(o,e,t,"default"),function(o,e,t){const n=o.getModuleEntry("@ohif/extension-cornerstone-dicom-sr.utilityModule.tools"),i=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:a}=n.exports,{toolNames:l,Enums:s}=i.exports,r={active:[{toolName:l.WindowLevel,bindings:[{mouseButton:s.MouseBindings.Primary}]},{toolName:l.Pan,bindings:[{mouseButton:s.MouseBindings.Auxiliary}]},{toolName:l.Zoom,bindings:[{mouseButton:s.MouseBindings.Secondary}]},{toolName:l.StackScrollMouseWheel,bindings:[]}],passive:[{toolName:a.SRLength},{toolName:a.SRArrowAnnotate},{toolName:a.SRBidirectional},{toolName:a.SREllipticalROI},{toolName:a.SRCircleROI}],enabled:[{toolName:a.DICOMSRDisplay,bindings:[]}]},c={[l.ArrowAnnotate]:{getTextCallback:(o,e)=>t.runCommand("arrowTextCallback",{callback:o,eventDetails:e}),changeTextCallback:(o,e,n)=>t.runCommand("arrowTextCallback",{callback:n,data:o,eventDetails:e})}};e.createToolGroupAndAddTools("SRToolGroup",r,c)}(o,e,t),function(o,e,t){const n=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:i,Enums:a}=n.exports,l={active:[{toolName:i.WindowLevel,bindings:[{mouseButton:a.MouseBindings.Primary}]},{toolName:i.Pan,bindings:[{mouseButton:a.MouseBindings.Auxiliary}]},{toolName:i.Zoom,bindings:[{mouseButton:a.MouseBindings.Secondary}]},{toolName:i.StackScrollMouseWheel,bindings:[]}],passive:[{toolName:i.Length},{toolName:i.ArrowAnnotate},{toolName:i.Bidirectional},{toolName:i.DragProbe},{toolName:i.EllipticalROI},{toolName:i.CircleROI},{toolName:i.RectangleROI},{toolName:i.StackScroll},{toolName:i.Angle},{toolName:i.CobbAngle},{toolName:i.PlanarFreehandROI},{toolName:i.SegmentationDisplay}],disabled:[{toolName:i.Crosshairs},{toolName:i.ReferenceLines}]},s={[i.Crosshairs]:{viewportIndicators:!1,autoPan:{enabled:!1,panSize:10}},[i.ArrowAnnotate]:{getTextCallback:(o,e)=>t.runCommand("arrowTextCallback",{callback:o,eventDetails:e}),changeTextCallback:(o,e,n)=>t.runCommand("arrowTextCallback",{callback:n,data:o,eventDetails:e})}};e.createToolGroupAndAddTools("mpr",l,s)}(o,e,t),function(o,e){const t=o.getModuleEntry("@ohif/extension-cornerstone.utilityModule.tools"),{toolNames:n,Enums:i}=t.exports,a={active:[{toolName:n.TrackballRotateTool,bindings:[{mouseButton:i.MouseBindings.Primary}]},{toolName:n.Zoom,bindings:[{mouseButton:i.MouseBindings.Secondary}]},{toolName:n.Pan,bindings:[{mouseButton:i.MouseBindings.Auxiliary}]}]};e.createToolGroupAndAddTools("volume3d",a)}(o,e)},g=["SM","ECG","SR","SEG","RTSTRUCT"],R="@ohif/extension-default.layoutTemplateModule.viewerLayout",O="@ohif/extension-default.sopClassHandlerModule.stack",T="@ohif/extension-measurement-tracking.panelModule.trackedMeasurements",S="@ohif/extension-measurement-tracking.panelModule.seriesList",f="@ohif/extension-measurement-tracking.viewportModule.cornerstone-tracked",v="@ohif/extension-cornerstone-dicom-sr.sopClassHandlerModule.dicom-sr",h="@ohif/extension-cornerstone-dicom-sr.viewportModule.dicom-sr",x="@ohif/extension-dicom-video.sopClassHandlerModule.dicom-video",y="@ohif/extension-dicom-video.viewportModule.dicom-video",E="@ohif/extension-dicom-pdf.sopClassHandlerModule.dicom-pdf",C="@ohif/extension-dicom-pdf.viewportModule.dicom-pdf",b="@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg",M="@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg",A="@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation",w="@ohif/extension-cornerstone-dicom-rt.viewportModule.dicom-rt",L="@ohif/extension-cornerstone-dicom-rt.sopClassHandlerModule.dicom-rt",B={"@ohif/extension-default":"^3.0.0","@ohif/extension-cornerstone":"^3.0.0","@ohif/extension-measurement-tracking":"^3.0.0","@ohif/extension-cornerstone-dicom-sr":"^3.0.0","@ohif/extension-cornerstone-dicom-seg":"^3.0.0","@ohif/extension-cornerstone-dicom-rt":"^3.0.0","@ohif/extension-dicom-pdf":"^3.0.1","@ohif/extension-dicom-video":"^3.0.1"};const k={id:u,modeFactory:function(){let e=[];return{id:u,routeName:"viewer",displayName:"Basic Viewer",onModeEnter:o=>{let{servicesManager:e,extensionManager:t,commandsManager:n}=o;const{measurementService:i,toolbarService:a,toolGroupService:l,panelService:s,segmentationService:r}=e.services;let c;i.clearMeasurements(),N(t,l,n);({unsubscribe:c}=l.subscribe(l.EVENTS.VIEWPORT_ADDED,(()=>{a.recordInteraction({groupId:"WindowLevel",itemId:"WindowLevel",interactionType:"tool",commands:[{commandName:"setToolActive",commandOptions:{toolName:"WindowLevel"},context:"CORNERSTONE"}]}),c()}))),a.init(t),a.addButtons(p),a.createButtonSection("primary",["MeasurementTools","Zoom","WindowLevel","Pan","Capture","Layout","MPR","Crosshairs","MoreTools"])},onModeExit:o=>{let{servicesManager:t}=o;const{toolGroupService:n,syncGroupService:i,toolbarService:a,segmentationService:l,cornerstoneViewportService:s}=t.services;e.forEach((o=>o.unsubscribe())),e=[],n.destroy(),i.destroy(),l.destroy(),s.destroy()},validationTags:{study:[],series:[]},isValidMode:function(o){let{modalities:e}=o;return!!e.split("\\").filter((o=>-1===g.indexOf(o))).length},routes:[{path:"longitudinal",layoutTemplate:()=>({id:R,props:{leftPanels:[S],rightPanels:[A,T],rightPanelDefaultClosed:!0,viewports:[{namespace:f,displaySetsToDisplay:[O]},{namespace:h,displaySetsToDisplay:[v]},{namespace:y,displaySetsToDisplay:[x]},{namespace:C,displaySetsToDisplay:[E]},{namespace:M,displaySetsToDisplay:[b]},{namespace:w,displaySetsToDisplay:[L]}]}})}],extensions:B,hangingProtocol:"default",sopClassHandlers:[x,b,O,E,v,L],hotkeys:[...o.hotkeys.defaults.hotkeyBindings]}},extensionDependencies:B}})(),a=a.default})()));
|
|
2
|
+
//# sourceMappingURL=ohif-mode-longitudinal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dist/ohif-mode-longitudinal.js","mappings":"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CE,QACA,aACA,aACA,CACE,CACES,YAAa,gBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,SAEFX,EACE,eACA,oBACA,eACA,CACE,CACES,YAAa,mBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,cAEFX,EACE,kBACA,uBACA,oBACA,CACE,CACES,YAAa,yBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,mBAEFT,EAAoB,iBAAkB,OAAQ,mBAAoB,CAChE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAGbT,EACE,iBACA,sBACA,kBACA,CACE,CACEO,YAAa,uBACbC,eAAgB,CAAC,EACjBC,QAAS,iBAIfR,EACE,cACA,oBACA,eACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,eAEZH,QAAS,gBAGb,gBAEFX,EACE,SACA,cACA,SACA,CACE,CACES,YAAa,iBACbC,eAAgB,CAAC,EACjBC,QAAS,gBAGb,iBAEFR,EACE,QACA,aACA,QACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,aAEZH,QAAS,gBAGb,SAEFT,EACE,OACA,YACA,OACA,CACE,CACEO,YAAa,aACbE,QAAS,gBAGb,QAEFR,EACE,QACA,aACA,QACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,SAEZH,QAAS,gBAGb,SAkCFR,EACE,UACA,eACA,UACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,WAEZH,QAAS,gBAGb,WAEFR,EACE,YACA,iBACA,YACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,gBAEZH,QAAS,gBAGb,aAEFR,EACE,kBACA,mBACA,cACA,CACE,CACEM,YAAa,gBACbC,eAAgB,CACdI,SAAU,mBAEZH,QAAS,gBAGb,oBAEFX,EACE,aACA,eACA,oBACA,CACE,CACES,YAAa,qBACbC,eAAgB,CAAC,EACjBC,QAAS,YAGb,yBCtlBJjB,E,+CAAKoC,GCiQX,QAZA,SAAwBC,EAAkBC,EAAkBC,IAvP5D,SACEF,EACAC,EACAC,EACAjB,GAEA,MA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","sources":["webpack://ohif-mode-longitudinal/webpack/universalModuleDefinition","webpack://ohif-mode-longitudinal/external umd \"@ohif/core\"","webpack://ohif-mode-longitudinal/external umd \"@ohif/ui\"","webpack://ohif-mode-longitudinal/webpack/bootstrap","webpack://ohif-mode-longitudinal/webpack/runtime/define property getters","webpack://ohif-mode-longitudinal/webpack/runtime/hasOwnProperty shorthand","webpack://ohif-mode-longitudinal/./toolbarButtons.js","webpack://ohif-mode-longitudinal/./id.js","webpack://ohif-mode-longitudinal/./initToolGroups.js","webpack://ohif-mode-longitudinal/./index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@ohif/core\", \"@ohif/ui\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ohif-mode-longitudinal\"] = factory(require(\"@ohif/core\"), require(\"@ohif/ui\"));\n\telse\n\t\troot[\"ohif-mode-longitudinal\"] = factory(root[\"@ohif/core\"], root[\"@ohif/ui\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__762__, __WEBPACK_EXTERNAL_MODULE__369__) => {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__762__;","module.exports = __WEBPACK_EXTERNAL_MODULE__369__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// TODO: torn, can either bake this here; or have to create a whole new button type\n// Only ways that you can pass in a custom React component for render :l\nimport {\n // ExpandableToolbarButton,\n // ListMenu,\n WindowLevelMenuItem,\n} from '@ohif/ui';\nimport { defaults } from '@ohif/core';\n\nconst { windowLevelPresets } = defaults;\n/**\n *\n * @param {*} type - 'tool' | 'action' | 'toggle'\n * @param {*} id\n * @param {*} icon\n * @param {*} label\n */\nfunction _createButton(type, id, icon, label, commands, tooltip, uiType) {\n return {\n id,\n icon,\n label,\n type,\n commands,\n tooltip,\n uiType,\n };\n}\n\nconst _createActionButton = _createButton.bind(null, 'action');\nconst _createToggleButton = _createButton.bind(null, 'toggle');\nconst _createToolButton = _createButton.bind(null, 'tool');\n\n/**\n *\n * @param {*} preset - preset number (from above import)\n * @param {*} title\n * @param {*} subtitle\n */\nfunction _createWwwcPreset(preset, title, subtitle) {\n return {\n id: preset.toString(),\n title,\n subtitle,\n type: 'action',\n commands: [\n {\n commandName: 'setWindowLevel',\n commandOptions: {\n ...windowLevelPresets[preset],\n },\n context: 'CORNERSTONE',\n },\n ],\n };\n}\n\nconst toolGroupIds = ['default', 'mpr', 'SRToolGroup'];\n\n/**\n * Creates an array of 'setToolActive' commands for the given toolName - one for\n * each toolGroupId specified in toolGroupIds.\n * @param {string} toolName\n * @returns {Array} an array of 'setToolActive' commands\n */\nfunction _createSetToolActiveCommands(toolName) {\n const temp = toolGroupIds.map(toolGroupId => ({\n commandName: 'setToolActive',\n commandOptions: {\n toolGroupId,\n toolName,\n },\n context: 'CORNERSTONE',\n }));\n return temp;\n}\n\nconst toolbarButtons = [\n // Measurement\n {\n id: 'MeasurementTools',\n type: 'ohif.splitButton',\n props: {\n groupId: 'MeasurementTools',\n isRadio: true, // ?\n // Switch?\n primary: _createToolButton(\n 'Length',\n 'tool-length',\n 'Length',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Length',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRLength',\n toolGroupId: 'SRToolGroup',\n },\n // we can use the setToolActive command for this from Cornerstone commandsModule\n context: 'CORNERSTONE',\n },\n ],\n 'Length'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Measure Tools',\n },\n items: [\n _createToolButton(\n 'Length',\n 'tool-length',\n 'Length',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Length',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRLength',\n toolGroupId: 'SRToolGroup',\n },\n // we can use the setToolActive command for this from Cornerstone commandsModule\n context: 'CORNERSTONE',\n },\n ],\n 'Length Tool'\n ),\n _createToolButton(\n 'Bidirectional',\n 'tool-bidirectional',\n 'Bidirectional',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Bidirectional',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRBidirectional',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Bidirectional Tool'\n ),\n _createToolButton(\n 'ArrowAnnotate',\n 'tool-annotate',\n 'Annotation',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'ArrowAnnotate',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRArrowAnnotate',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Arrow Annotate'\n ),\n _createToolButton(\n 'EllipticalROI',\n 'tool-elipse',\n 'Ellipse',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'EllipticalROI',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SREllipticalROI',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Ellipse Tool'\n ),\n _createToolButton(\n 'CircleROI',\n 'tool-circle',\n 'Circle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'CircleROI',\n },\n context: 'CORNERSTONE',\n },\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'SRCircleROI',\n toolGroupId: 'SRToolGroup',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Circle Tool'\n ),\n ],\n },\n },\n // Zoom..\n {\n id: 'Zoom',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-zoom',\n label: 'Zoom',\n commands: _createSetToolActiveCommands('Zoom'),\n },\n },\n // Window Level + Presets...\n {\n id: 'WindowLevel',\n type: 'ohif.splitButton',\n props: {\n groupId: 'WindowLevel',\n primary: _createToolButton(\n 'WindowLevel',\n 'tool-window-level',\n 'Window Level',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Window Level'\n ),\n secondary: {\n icon: 'chevron-down',\n label: 'W/L Manual',\n isActive: true,\n tooltip: 'W/L Presets',\n },\n isAction: true, // ?\n renderer: WindowLevelMenuItem,\n items: [\n _createWwwcPreset(1, 'Soft tissue', '400 / 40'),\n _createWwwcPreset(2, 'Lung', '1500 / -600'),\n _createWwwcPreset(3, 'Liver', '150 / 90'),\n _createWwwcPreset(4, 'Bone', '2500 / 480'),\n _createWwwcPreset(5, 'Brain', '80 / 40'),\n ],\n },\n },\n // Pan...\n {\n id: 'Pan',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-move',\n label: 'Pan',\n commands: _createSetToolActiveCommands('Pan'),\n },\n },\n {\n id: 'Capture',\n type: 'ohif.action',\n props: {\n icon: 'tool-capture',\n label: 'Capture',\n type: 'action',\n commands: [\n {\n commandName: 'showDownloadViewportModal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n {\n id: 'Layout',\n type: 'ohif.layoutSelector',\n props: {\n rows: 3,\n columns: 3,\n },\n },\n {\n id: 'MPR',\n type: 'ohif.action',\n props: {\n type: 'toggle',\n icon: 'icon-mpr',\n label: 'MPR',\n commands: [\n {\n commandName: 'toggleHangingProtocol',\n commandOptions: {\n protocolId: 'mpr',\n },\n context: 'DEFAULT',\n },\n ],\n },\n },\n {\n id: 'Crosshairs',\n type: 'ohif.radioGroup',\n props: {\n type: 'tool',\n icon: 'tool-crosshair',\n label: 'Crosshairs',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Crosshairs',\n toolGroupId: 'mpr',\n },\n context: 'CORNERSTONE',\n },\n ],\n },\n },\n // More...\n {\n id: 'MoreTools',\n type: 'ohif.splitButton',\n props: {\n isRadio: true, // ?\n groupId: 'MoreTools',\n primary: _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n secondary: {\n icon: 'chevron-down',\n label: '',\n isActive: true,\n tooltip: 'More Tools',\n },\n items: [\n _createActionButton(\n 'Reset',\n 'tool-reset',\n 'Reset View',\n [\n {\n commandName: 'resetViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Reset'\n ),\n _createActionButton(\n 'rotate-right',\n 'tool-rotate-right',\n 'Rotate Right',\n [\n {\n commandName: 'rotateViewportCW',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Rotate +90'\n ),\n _createActionButton(\n 'flip-horizontal',\n 'tool-flip-horizontal',\n 'Flip Horizontally',\n [\n {\n commandName: 'flipViewportHorizontal',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Flip Horizontal'\n ),\n _createToggleButton('StackImageSync', 'link', 'Stack Image Sync', [\n {\n commandName: 'toggleStackImageSync',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]),\n _createToggleButton(\n 'ReferenceLines',\n 'tool-referenceLines', // change this with the new icon\n 'Reference Lines',\n [\n {\n commandName: 'toggleReferenceLines',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ]\n ),\n _createToolButton(\n 'StackScroll',\n 'tool-stack-scroll',\n 'Stack Scroll',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'StackScroll',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Stack Scroll'\n ),\n _createActionButton(\n 'invert',\n 'tool-invert',\n 'Invert',\n [\n {\n commandName: 'invertViewport',\n commandOptions: {},\n context: 'CORNERSTONE',\n },\n ],\n 'Invert Colors'\n ),\n _createToolButton(\n 'Probe',\n 'tool-probe',\n 'Probe',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'DragProbe',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Probe'\n ),\n _createToggleButton(\n 'cine',\n 'tool-cine',\n 'Cine',\n [\n {\n commandName: 'toggleCine',\n context: 'CORNERSTONE',\n },\n ],\n 'Cine'\n ),\n _createToolButton(\n 'Angle',\n 'tool-angle',\n 'Angle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Angle',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Angle'\n ),\n\n // Next two tools can be added once icons are added\n // _createToolButton(\n // 'Cobb Angle',\n // 'tool-cobb-angle',\n // 'Cobb Angle',\n // [\n // {\n // commandName: 'setToolActive',\n // commandOptions: {\n // toolName: 'CobbAngle',\n // },\n // context: 'CORNERSTONE',\n // },\n // ],\n // 'Cobb Angle'\n // ),\n // _createToolButton(\n // 'Planar Freehand ROI',\n // 'tool-freehand',\n // 'PlanarFreehandROI',\n // [\n // {\n // commandName: 'setToolActive',\n // commandOptions: {\n // toolName: 'PlanarFreehandROI',\n // },\n // context: 'CORNERSTONE',\n // },\n // ],\n // 'Planar Freehand ROI'\n // ),\n _createToolButton(\n 'Magnify',\n 'tool-magnify',\n 'Magnify',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'Magnify',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Magnify'\n ),\n _createToolButton(\n 'Rectangle',\n 'tool-rectangle',\n 'Rectangle',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'RectangleROI',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Rectangle'\n ),\n _createToolButton(\n 'CalibrationLine',\n 'tool-calibration',\n 'Calibration',\n [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'CalibrationLine',\n },\n context: 'CORNERSTONE',\n },\n ],\n 'Calibration Line'\n ),\n _createActionButton(\n 'TagBrowser',\n 'list-bullets',\n 'Dicom Tag Browser',\n [\n {\n commandName: 'openDICOMTagViewer',\n commandOptions: {},\n context: 'DEFAULT',\n },\n ],\n 'Dicom Tag Browser'\n ),\n ],\n },\n },\n];\n\nexport default toolbarButtons;\n","import packageJson from '../package.json';\n\nconst id = packageJson.name;\n\nexport { id };\n","function initDefaultToolGroup(\n extensionManager,\n toolGroupService,\n commandsManager,\n toolGroupId\n) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: [\n { toolName: toolNames.Length },\n { toolName: toolNames.ArrowAnnotate },\n { toolName: toolNames.Bidirectional },\n { toolName: toolNames.DragProbe },\n { toolName: toolNames.EllipticalROI },\n { toolName: toolNames.CircleROI },\n { toolName: toolNames.RectangleROI },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Angle },\n { toolName: toolNames.CobbAngle },\n { toolName: toolNames.PlanarFreehandROI },\n { toolName: toolNames.Magnify },\n { toolName: toolNames.SegmentationDisplay },\n { toolName: toolNames.CalibrationLine },\n ],\n // enabled\n // disabled\n disabled: [{ toolName: toolNames.ReferenceLines }],\n };\n\n const toolsConfig = {\n [toolNames.ArrowAnnotate]: {\n getTextCallback: (callback, eventDetails) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n eventDetails,\n }),\n\n changeTextCallback: (data, eventDetails, callback) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n data,\n eventDetails,\n }),\n },\n };\n\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig);\n}\n\nfunction initSRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const SRUtilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone-dicom-sr.utilityModule.tools'\n );\n\n const CS3DUtilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames: SRToolNames } = SRUtilityModule.exports;\n const { toolNames, Enums } = CS3DUtilityModule.exports;\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Primary,\n },\n ],\n },\n {\n toolName: toolNames.Pan,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Auxiliary,\n },\n ],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [\n {\n mouseButton: Enums.MouseBindings.Secondary,\n },\n ],\n },\n {\n toolName: toolNames.StackScrollMouseWheel,\n bindings: [],\n },\n ],\n passive: [\n { toolName: SRToolNames.SRLength },\n { toolName: SRToolNames.SRArrowAnnotate },\n { toolName: SRToolNames.SRBidirectional },\n { toolName: SRToolNames.SREllipticalROI },\n { toolName: SRToolNames.SRCircleROI },\n ],\n enabled: [\n {\n toolName: SRToolNames.DICOMSRDisplay,\n bindings: [],\n },\n ],\n // disabled\n };\n\n const toolsConfig = {\n [toolNames.ArrowAnnotate]: {\n getTextCallback: (callback, eventDetails) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n eventDetails,\n }),\n\n changeTextCallback: (data, eventDetails, callback) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n data,\n eventDetails,\n }),\n },\n };\n\n const toolGroupId = 'SRToolGroup';\n toolGroupService.createToolGroupAndAddTools(toolGroupId, tools, toolsConfig);\n}\n\nfunction initMPRToolGroup(extensionManager, toolGroupService, commandsManager) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.WindowLevel,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n { toolName: toolNames.StackScrollMouseWheel, bindings: [] },\n ],\n passive: [\n { toolName: toolNames.Length },\n { toolName: toolNames.ArrowAnnotate },\n { toolName: toolNames.Bidirectional },\n { toolName: toolNames.DragProbe },\n { toolName: toolNames.EllipticalROI },\n { toolName: toolNames.CircleROI },\n { toolName: toolNames.RectangleROI },\n { toolName: toolNames.StackScroll },\n { toolName: toolNames.Angle },\n { toolName: toolNames.CobbAngle },\n { toolName: toolNames.PlanarFreehandROI },\n { toolName: toolNames.SegmentationDisplay },\n ],\n disabled: [\n { toolName: toolNames.Crosshairs },\n { toolName: toolNames.ReferenceLines },\n ],\n\n // enabled\n // disabled\n };\n\n const toolsConfig = {\n [toolNames.Crosshairs]: {\n viewportIndicators: false,\n autoPan: {\n enabled: false,\n panSize: 10,\n },\n },\n [toolNames.ArrowAnnotate]: {\n getTextCallback: (callback, eventDetails) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n eventDetails,\n }),\n\n changeTextCallback: (data, eventDetails, callback) =>\n commandsManager.runCommand('arrowTextCallback', {\n callback,\n data,\n eventDetails,\n }),\n },\n };\n\n toolGroupService.createToolGroupAndAddTools('mpr', tools, toolsConfig);\n}\nfunction initVolume3DToolGroup(extensionManager, toolGroupService) {\n const utilityModule = extensionManager.getModuleEntry(\n '@ohif/extension-cornerstone.utilityModule.tools'\n );\n\n const { toolNames, Enums } = utilityModule.exports;\n\n const tools = {\n active: [\n {\n toolName: toolNames.TrackballRotateTool,\n bindings: [{ mouseButton: Enums.MouseBindings.Primary }],\n },\n {\n toolName: toolNames.Zoom,\n bindings: [{ mouseButton: Enums.MouseBindings.Secondary }],\n },\n {\n toolName: toolNames.Pan,\n bindings: [{ mouseButton: Enums.MouseBindings.Auxiliary }],\n },\n ],\n };\n\n toolGroupService.createToolGroupAndAddTools('volume3d', tools);\n}\n\nfunction initToolGroups(extensionManager, toolGroupService, commandsManager) {\n initDefaultToolGroup(\n extensionManager,\n toolGroupService,\n commandsManager,\n 'default'\n );\n initSRToolGroup(extensionManager, toolGroupService, commandsManager);\n initMPRToolGroup(extensionManager, toolGroupService, commandsManager);\n initVolume3DToolGroup(extensionManager, toolGroupService);\n}\n\nexport default initToolGroups;\n","import { hotkeys } from '@ohif/core';\nimport toolbarButtons from './toolbarButtons.js';\nimport { id } from './id.js';\nimport initToolGroups from './initToolGroups.js';\n\n// Allow this mode by excluding non-imaging modalities such as SR, SEG\n// Also, SM is not a simple imaging modalities, so exclude it.\nconst NON_IMAGE_MODALITIES = ['SM', 'ECG', 'SR', 'SEG', 'RTSTRUCT'];\n\nconst ohif = {\n layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',\n sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',\n thumbnailList: '@ohif/extension-default.panelModule.seriesList',\n};\n\nconst tracked = {\n measurements:\n '@ohif/extension-measurement-tracking.panelModule.trackedMeasurements',\n thumbnailList: '@ohif/extension-measurement-tracking.panelModule.seriesList',\n viewport:\n '@ohif/extension-measurement-tracking.viewportModule.cornerstone-tracked',\n};\n\nconst dicomsr = {\n sopClassHandler:\n '@ohif/extension-cornerstone-dicom-sr.sopClassHandlerModule.dicom-sr',\n viewport: '@ohif/extension-cornerstone-dicom-sr.viewportModule.dicom-sr',\n};\n\nconst dicomvideo = {\n sopClassHandler:\n '@ohif/extension-dicom-video.sopClassHandlerModule.dicom-video',\n viewport: '@ohif/extension-dicom-video.viewportModule.dicom-video',\n};\n\nconst dicompdf = {\n sopClassHandler: '@ohif/extension-dicom-pdf.sopClassHandlerModule.dicom-pdf',\n viewport: '@ohif/extension-dicom-pdf.viewportModule.dicom-pdf',\n};\n\nconst dicomSeg = {\n sopClassHandler:\n '@ohif/extension-cornerstone-dicom-seg.sopClassHandlerModule.dicom-seg',\n viewport: '@ohif/extension-cornerstone-dicom-seg.viewportModule.dicom-seg',\n panel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation',\n};\n\nconst dicomRt = {\n viewport: '@ohif/extension-cornerstone-dicom-rt.viewportModule.dicom-rt',\n sopClassHandler:\n '@ohif/extension-cornerstone-dicom-rt.sopClassHandlerModule.dicom-rt',\n};\n\nconst extensionDependencies = {\n // Can derive the versions at least process.env.from npm_package_version\n '@ohif/extension-default': '^3.0.0',\n '@ohif/extension-cornerstone': '^3.0.0',\n '@ohif/extension-measurement-tracking': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-sr': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-seg': '^3.0.0',\n '@ohif/extension-cornerstone-dicom-rt': '^3.0.0',\n '@ohif/extension-dicom-pdf': '^3.0.1',\n '@ohif/extension-dicom-video': '^3.0.1',\n};\n\nfunction modeFactory() {\n let _activatePanelTriggersSubscriptions = [];\n return {\n // TODO: We're using this as a route segment\n // We should not be.\n id,\n routeName: 'viewer',\n displayName: 'Basic Viewer',\n /**\n * Lifecycle hooks\n */\n onModeEnter: ({ servicesManager, extensionManager, commandsManager }) => {\n const {\n measurementService,\n toolbarService,\n toolGroupService,\n panelService,\n segmentationService,\n } = servicesManager.services;\n\n measurementService.clearMeasurements();\n\n // Init Default and SR ToolGroups\n initToolGroups(extensionManager, toolGroupService, commandsManager);\n\n let unsubscribe;\n\n const activateTool = () => {\n toolbarService.recordInteraction({\n groupId: 'WindowLevel',\n itemId: 'WindowLevel',\n interactionType: 'tool',\n commands: [\n {\n commandName: 'setToolActive',\n commandOptions: {\n toolName: 'WindowLevel',\n },\n context: 'CORNERSTONE',\n },\n ],\n });\n\n // We don't need to reset the active tool whenever a viewport is getting\n // added to the toolGroup.\n unsubscribe();\n };\n\n // Since we only have one viewport for the basic cs3d mode and it has\n // only one hanging protocol, we can just use the first viewport\n ({ unsubscribe } = toolGroupService.subscribe(\n toolGroupService.EVENTS.VIEWPORT_ADDED,\n activateTool\n ));\n\n toolbarService.init(extensionManager);\n toolbarService.addButtons(toolbarButtons);\n toolbarService.createButtonSection('primary', [\n 'MeasurementTools',\n 'Zoom',\n 'WindowLevel',\n 'Pan',\n 'Capture',\n 'Layout',\n 'MPR',\n 'Crosshairs',\n 'MoreTools',\n ]);\n\n // // ActivatePanel event trigger for when a segmentation or measurement is added.\n // // Do not force activation so as to respect the state the user may have left the UI in.\n // _activatePanelTriggersSubscriptions = [\n // ...panelService.addActivatePanelTriggers(dicomSeg.panel, [\n // {\n // sourcePubSubService: segmentationService,\n // sourceEvents: [\n // segmentationService.EVENTS.SEGMENTATION_PIXEL_DATA_CREATED,\n // ],\n // },\n // ]),\n // ...panelService.addActivatePanelTriggers(tracked.measurements, [\n // {\n // sourcePubSubService: measurementService,\n // sourceEvents: [\n // measurementService.EVENTS.MEASUREMENT_ADDED,\n // measurementService.EVENTS.RAW_MEASUREMENT_ADDED,\n // ],\n // },\n // ]),\n // ];\n },\n onModeExit: ({ servicesManager }) => {\n const {\n toolGroupService,\n syncGroupService,\n toolbarService,\n segmentationService,\n cornerstoneViewportService,\n } = servicesManager.services;\n\n _activatePanelTriggersSubscriptions.forEach(sub => sub.unsubscribe());\n _activatePanelTriggersSubscriptions = [];\n\n toolGroupService.destroy();\n syncGroupService.destroy();\n segmentationService.destroy();\n cornerstoneViewportService.destroy();\n },\n validationTags: {\n study: [],\n series: [],\n },\n\n isValidMode: function({ modalities }) {\n const modalities_list = modalities.split('\\\\');\n\n // Exclude non-image modalities\n return !!modalities_list.filter(\n modality => NON_IMAGE_MODALITIES.indexOf(modality) === -1\n ).length;\n },\n routes: [\n {\n path: 'longitudinal',\n /*init: ({ servicesManager, extensionManager }) => {\n //defaultViewerRouteInit\n },*/\n layoutTemplate: () => {\n return {\n id: ohif.layout,\n props: {\n leftPanels: [tracked.thumbnailList],\n rightPanels: [dicomSeg.panel, tracked.measurements],\n rightPanelDefaultClosed: true,\n viewports: [\n {\n namespace: tracked.viewport,\n displaySetsToDisplay: [ohif.sopClassHandler],\n },\n {\n namespace: dicomsr.viewport,\n displaySetsToDisplay: [dicomsr.sopClassHandler],\n },\n {\n namespace: dicomvideo.viewport,\n displaySetsToDisplay: [dicomvideo.sopClassHandler],\n },\n {\n namespace: dicompdf.viewport,\n displaySetsToDisplay: [dicompdf.sopClassHandler],\n },\n {\n namespace: dicomSeg.viewport,\n displaySetsToDisplay: [dicomSeg.sopClassHandler],\n },\n {\n namespace: dicomRt.viewport,\n displaySetsToDisplay: [dicomRt.sopClassHandler],\n },\n ],\n },\n };\n },\n },\n ],\n extensions: extensionDependencies,\n // Default protocol gets self-registered by default in the init\n hangingProtocol: 'default',\n // Order is important in sop class handlers when two handlers both use\n // the same sop class under different situations. In that case, the more\n // general handler needs to come last. For this case, the dicomvideo must\n // come first to remove video transfer syntax before ohif uses images\n sopClassHandlers: [\n dicomvideo.sopClassHandler,\n dicomSeg.sopClassHandler,\n ohif.sopClassHandler,\n dicompdf.sopClassHandler,\n dicomsr.sopClassHandler,\n dicomRt.sopClassHandler,\n ],\n hotkeys: [...hotkeys.defaults.hotkeyBindings],\n };\n}\n\nconst mode = {\n id,\n modeFactory,\n extensionDependencies,\n};\n\nexport default mode;\nexport { initToolGroups, toolbarButtons };\n"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__762__","__WEBPACK_EXTERNAL_MODULE__369__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","windowLevelPresets","defaults","_createButton","type","id","icon","label","commands","tooltip","uiType","_createActionButton","bind","_createToggleButton","_createToolButton","_createWwwcPreset","preset","title","subtitle","toString","commandName","commandOptions","context","toolGroupIds","_createSetToolActiveCommands","toolName","map","toolGroupId","props","groupId","isRadio","primary","secondary","isActive","items","isAction","renderer","WindowLevelMenuItem","rows","columns","protocolId","packageJson","extensionManager","toolGroupService","commandsManager","utilityModule","getModuleEntry","toolNames","Enums","tools","active","WindowLevel","bindings","mouseButton","MouseBindings","Primary","Pan","Auxiliary","Zoom","Secondary","StackScrollMouseWheel","passive","Length","ArrowAnnotate","Bidirectional","DragProbe","EllipticalROI","CircleROI","RectangleROI","StackScroll","Angle","CobbAngle","PlanarFreehandROI","Magnify","SegmentationDisplay","CalibrationLine","disabled","ReferenceLines","toolsConfig","getTextCallback","callback","eventDetails","runCommand","changeTextCallback","data","createToolGroupAndAddTools","initDefaultToolGroup","SRUtilityModule","CS3DUtilityModule","SRToolNames","SRLength","SRArrowAnnotate","SRBidirectional","SREllipticalROI","SRCircleROI","enabled","DICOMSRDisplay","initSRToolGroup","Crosshairs","viewportIndicators","autoPan","panSize","initMPRToolGroup","TrackballRotateTool","initVolume3DToolGroup","NON_IMAGE_MODALITIES","ohif","tracked","dicomsr","dicomvideo","dicompdf","dicomSeg","dicomRt","extensionDependencies","modeFactory","_activatePanelTriggersSubscriptions","routeName","displayName","onModeEnter","_ref","servicesManager","measurementService","toolbarService","panelService","segmentationService","services","unsubscribe","clearMeasurements","initToolGroups","subscribe","EVENTS","VIEWPORT_ADDED","activateTool","recordInteraction","itemId","interactionType","init","addButtons","toolbarButtons","createButtonSection","onModeExit","_ref2","syncGroupService","cornerstoneViewportService","forEach","sub","destroy","validationTags","study","series","isValidMode","_ref3","modalities","split","filter","modality","indexOf","length","routes","path","layoutTemplate","leftPanels","rightPanels","rightPanelDefaultClosed","viewports","namespace","displaySetsToDisplay","extensions","hangingProtocol","sopClassHandlers","hotkeys"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,35 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@ohif/mode-longitudinal",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "Longitudinal Workflow",
|
|
5
|
-
"author": "OHIF",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"repository": "OHIF/Viewers",
|
|
8
|
-
"main": "dist/
|
|
9
|
-
"module": "src/index.js",
|
|
10
|
-
"engines": {
|
|
11
|
-
"node": ">=
|
|
12
|
-
"npm": ">=6",
|
|
13
|
-
"yarn": ">=1.16.0"
|
|
14
|
-
},
|
|
15
|
-
"files": [
|
|
16
|
-
"dist",
|
|
17
|
-
"README.md"
|
|
18
|
-
],
|
|
19
|
-
"publishConfig": {
|
|
20
|
-
"access": "public"
|
|
21
|
-
},
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@ohif/mode-longitudinal",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Longitudinal Workflow",
|
|
5
|
+
"author": "OHIF",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": "OHIF/Viewers",
|
|
8
|
+
"main": "dist/ohif-mode-longitudinal.js",
|
|
9
|
+
"module": "src/index.js",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=14",
|
|
12
|
+
"npm": ">=6",
|
|
13
|
+
"yarn": ">=1.16.0"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"ohif-mode"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --output-pathinfo",
|
|
27
|
+
"dev:cornerstone": "yarn run dev",
|
|
28
|
+
"build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js",
|
|
29
|
+
"build:package": "yarn run build",
|
|
30
|
+
"start": "yarn run dev",
|
|
31
|
+
"test:unit": "jest --watchAll",
|
|
32
|
+
"test:unit:ci": "jest --ci --runInBand --collectCoverage --passWithNoTests"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@ohif/core": "^3.0.0",
|
|
36
|
+
"@ohif/extension-default": "^3.0.0",
|
|
37
|
+
"@ohif/extension-cornerstone": "^3.0.0",
|
|
38
|
+
"@ohif/extension-cornerstone-dicom-sr": "^3.0.0",
|
|
39
|
+
"@ohif/extension-cornerstone-dicom-seg": "^3.0.0",
|
|
40
|
+
"@ohif/extension-cornerstone-dicom-rt": "^3.0.0",
|
|
41
|
+
"@ohif/extension-dicom-pdf": "^3.0.1",
|
|
42
|
+
"@ohif/extension-dicom-video": "^3.0.1",
|
|
43
|
+
"@ohif/extension-measurement-tracking": "^3.0.0"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@babel/runtime": "^7.20.13"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"webpack": "^5.50.0",
|
|
50
|
+
"webpack-merge": "^5.7.3"
|
|
51
|
+
}
|
|
52
|
+
}
|