@ohif/app 3.8.0-beta.8 → 3.8.0-beta.81
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/dist/{220.bundle.f7e1c96c94245e70f2be.js → 109.bundle.b4fee2a22b622839baf5.js} +4466 -3715
- package/dist/{471.bundle.49c8d281adbae4a2c4df.js → 121.bundle.47f05840a5b3cdf75543.js} +94 -113
- package/dist/141.bundle.556b4c1e4cab770417ac.js +8620 -0
- package/dist/{687.bundle.9065db35c01823286f08.js → 164.bundle.fadc7c5d634402c73b5f.js} +22 -38
- package/dist/17dd54813d5acc10bf8f.wasm +0 -0
- package/dist/183.bundle.a3e238998be71c4b2af8.js +30410 -0
- package/dist/{506.bundle.5731bb4349e266491225.js → 188.bundle.51dc4b37920f45594393.js} +23 -28
- package/dist/{342.bundle.e7c3d500f86fdfcc62b5.js → 206.bundle.fcaa081a0d1f68095c31.js} +1991 -1145
- package/dist/20fc4c659b85ccd2a9c0.wasm +0 -0
- package/dist/217.bundle.d44bbaa50b6fa563fe15.js +115126 -0
- package/dist/{451.bundle.57c21db5d003c75e9d61.js → 295.bundle.5ace95771ced62bdcab8.js} +111 -128
- package/dist/{125.bundle.253395f320b72180da63.js → 297.bundle.194d8985ab974839b5b6.js} +7 -8
- package/dist/{19.bundle.f77c5787b6d8ac0b638b.js → 325.bundle.fd8e0c18db4708d03a91.js} +477 -373
- package/dist/335.bundle.8400aa5a88697a6b9d53.js +2590 -0
- package/dist/{202.bundle.d3490836f71e001dd30f.js → 342.bundle.e6d0bba29351b5650a8c.js} +566 -868
- package/dist/{776.bundle.a2dedb405a12ffd7699b.js → 41.bundle.0905b258a90a7c6437bb.js} +7453 -3624
- package/dist/422.bundle.c6fd037b075dd54f1ba7.js +865 -0
- package/dist/{957.bundle.9ea4506963ef8b2d84ba.js → 433.bundle.e0018820758f5a86fa7f.js} +14797 -27561
- package/dist/445.bundle.38c6d2af64e41cd7c614.js +7835 -0
- package/dist/{126.bundle.6e7111d58bcc937ffd80.js → 448.bundle.5e6da31477887bf53016.js} +356 -430
- package/dist/487.bundle.89d973049defb3ba6cb7.js +1876 -0
- package/dist/{886.bundle.c8dd3ecc42a4253de278.js → 530.bundle.207b38c15c4c01e4db0e.js} +104 -121
- package/dist/{250.bundle.aea3335667054bdefe36.js → 544.bundle.1c1f57118560046649c1.js} +37 -62
- package/dist/574.bundle.d648fea691d6709bf2b4.js +2652 -0
- package/dist/{181.css → 574.css} +1 -1
- package/dist/{410.bundle.15c855b0ff4a1a674fb8.js → 594.bundle.84076375b127b9c7f673.js} +183 -221
- package/dist/{221.bundle.aef554202c58483cb34e.js → 633.bundle.acab89baaa06a299d679.js} +365 -553
- package/dist/{774.bundle.4b2dc46a35012b898e1a.js → 644.bundle.1e77691d2eeb96a423b0.js} +1852 -8945
- package/dist/{663.bundle.d7be28450db14266cdd0.js → 669.bundle.b17e8a621e38d92c653f.js} +310 -265
- package/dist/699.bundle.9367d7ef9f7615b2e733.js +772 -0
- package/dist/702.bundle.963481fbf871984b646f.js +8426 -0
- package/dist/722.bundle.afab1fe6bfcd569130ac.js +1083 -0
- package/dist/{359.bundle.45ecb3d28e8c22142606.js → 724.bundle.55f9f49816de931af91a.js} +165 -260
- package/dist/{757.bundle.ec8301d8e70d2b990f65.js → 726.bundle.0b3d9277d22fe7e15b89.js} +512 -879
- package/dist/{530.bundle.a03b6f942ace3e1baa1e.js → 835.bundle.15aff0b7433bb0dd6d6d.js} +37 -30
- package/dist/{822.bundle.82cdc418f8f56da6060b.js → 862.bundle.d32ab08e64806b2e964d.js} +81 -97
- package/dist/{236.bundle.4e9924934a747afac132.js → 889.bundle.8ef8b723d0163d5d135c.js} +207 -199
- package/dist/{281.bundle.deb7492d143e7768d8bf.js → 905.bundle.8a96e1a75b7cfe5ec093.js} +157 -124
- package/dist/{814.bundle.c8c951d20039b63b865a.js → 907.bundle.5c88ed911bed18582da4.js} +16 -30
- package/dist/{417.bundle.af0a207c29b109f84159.js → 931.bundle.d270a1fda9a2836c3cc5.js} +26 -26
- package/dist/{686.bundle.dccef1f36e4bc79bcc48.js → 939.bundle.9d93b2e47c52338747a2.js} +7 -8
- package/dist/94.bundle.f5f2479c214180d05d42.js +778 -0
- package/dist/{12.bundle.b5ca13e5363f170ecb3b.js → 961.bundle.f4e52bc76d3044d05372.js} +20 -33
- package/dist/app-config.js +1 -0
- package/dist/app.bundle.css +16 -13
- package/dist/{app.bundle.a978edc59b9d82f2eb22.js → app.bundle.ed937512f7d19d61c411.js} +183396 -87682
- package/dist/assets/images/CT-AAA.png +0 -0
- package/dist/assets/images/CT-AAA2.png +0 -0
- package/dist/assets/images/CT-Air.png +0 -0
- package/dist/assets/images/CT-Bone.png +0 -0
- package/dist/assets/images/CT-Bones.png +0 -0
- package/dist/assets/images/CT-Cardiac.png +0 -0
- package/dist/assets/images/CT-Cardiac2.png +0 -0
- package/dist/assets/images/CT-Cardiac3.png +0 -0
- package/dist/assets/images/CT-Chest-Contrast-Enhanced.png +0 -0
- package/dist/assets/images/CT-Chest-Vessels.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-2.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries-3.png +0 -0
- package/dist/assets/images/CT-Coronary-Arteries.png +0 -0
- package/dist/assets/images/CT-Cropped-Volume-Bone.png +0 -0
- package/dist/assets/images/CT-Fat.png +0 -0
- package/dist/assets/images/CT-Liver-Vasculature.png +0 -0
- package/dist/assets/images/CT-Lung.png +0 -0
- package/dist/assets/images/CT-MIP.png +0 -0
- package/dist/assets/images/CT-Muscle.png +0 -0
- package/dist/assets/images/CT-Pulmonary-Arteries.png +0 -0
- package/dist/assets/images/CT-Soft-Tissue.png +0 -0
- package/dist/assets/images/DTI-FA-Brain.png +0 -0
- package/dist/assets/images/MR-Angio.png +0 -0
- package/dist/assets/images/MR-Default.png +0 -0
- package/dist/assets/images/MR-MIP.png +0 -0
- package/dist/assets/images/MR-T2-Brain.png +0 -0
- package/dist/assets/images/VolumeRendering.png +0 -0
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.2c146384eb9466d02ff8.js → dicom-microscopy-viewer.bundle.d3a56dc9f62df5e11019.js} +3 -3
- package/dist/histogram-worker.bundle.829e14ec12c2b41a4323.js +359 -0
- package/dist/index.html +1 -1
- package/dist/{index.worker.e62ecca63f1a2e124230.worker.js → index.worker.64c896c4316fcd506666.worker.js} +2 -2
- package/dist/index.worker.64c896c4316fcd506666.worker.js.map +1 -0
- package/dist/polySeg.bundle.f1a6ece1396dc1385155.js +249 -0
- package/dist/serve.json +12 -0
- package/dist/sw.js +1 -1
- package/package.json +26 -22
- package/dist/181.bundle.a62b9f0ec692299acb35.js +0 -1527
- package/dist/23.bundle.e008ad788170f2ed5569.js +0 -900
- package/dist/604.bundle.a51f83e64004bca5f497.js +0 -1848
- package/dist/613.bundle.9e7072e5b575354fe51e.js +0 -532
- package/dist/743.bundle.489f7df3a089d4d374e1.js +0 -78007
- package/dist/75788f12450d4c5ed494.wasm +0 -0
- package/dist/775.bundle.2285e7e0e67878948c0d.js +0 -1009
- package/dist/788.bundle.207ac23c0dfa70cbe3fb.js +0 -2682
- package/dist/82.bundle.d6fdcca0f67540bb226a.js +0 -1049
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +0 -1
- /package/dist/{19.css → 325.css} +0 -0
- /package/dist/{776.css → 41.css} +0 -0
- /package/dist/{579.css → 481.css} +0 -0
- /package/dist/{250.css → 544.css} +0 -0
- /package/dist/{221.css → 633.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(globalThis["webpackChunk"] = globalThis["webpackChunk"] || []).push([[724],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 28724:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -12,10 +12,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
12
12
|
"default": () => (/* binding */ tmtv_src)
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
16
|
-
var src = __webpack_require__(
|
|
17
|
-
// EXTERNAL MODULE: ../../ui/src/index.js + 486 modules
|
|
18
|
-
var ui_src = __webpack_require__(22582);
|
|
15
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 70 modules
|
|
16
|
+
var src = __webpack_require__(55411);
|
|
19
17
|
;// CONCATENATED MODULE: ../../../modes/tmtv/src/initToolGroups.js
|
|
20
18
|
const toolGroupIds = {
|
|
21
19
|
CT: 'ctToolGroup',
|
|
@@ -25,8 +23,7 @@ const toolGroupIds = {
|
|
|
25
23
|
default: 'default'
|
|
26
24
|
// MPR: 'mpr',
|
|
27
25
|
};
|
|
28
|
-
|
|
29
|
-
function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
26
|
+
function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager, modeLabelConfig) {
|
|
30
27
|
const tools = {
|
|
31
28
|
active: [{
|
|
32
29
|
toolName: toolNames.WindowLevel,
|
|
@@ -53,16 +50,24 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
|
53
50
|
toolName: toolNames.ArrowAnnotate,
|
|
54
51
|
configuration: {
|
|
55
52
|
getTextCallback: (callback, eventDetails) => {
|
|
56
|
-
|
|
57
|
-
callback
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
if (modeLabelConfig) {
|
|
54
|
+
callback(' ');
|
|
55
|
+
} else {
|
|
56
|
+
commandsManager.runCommand('arrowTextCallback', {
|
|
57
|
+
callback,
|
|
58
|
+
eventDetails
|
|
59
|
+
});
|
|
60
|
+
}
|
|
60
61
|
},
|
|
61
|
-
changeTextCallback: (data, eventDetails, callback) =>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
changeTextCallback: (data, eventDetails, callback) => {
|
|
63
|
+
if (modeLabelConfig === undefined) {
|
|
64
|
+
commandsManager.runCommand('arrowTextCallback', {
|
|
65
|
+
callback,
|
|
66
|
+
data,
|
|
67
|
+
eventDetails
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
66
71
|
}
|
|
67
72
|
}, {
|
|
68
73
|
toolName: toolNames.Bidirectional
|
|
@@ -90,6 +95,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
|
90
95
|
toolName: toolNames.Crosshairs,
|
|
91
96
|
configuration: {
|
|
92
97
|
viewportIndicators: false,
|
|
98
|
+
disableOnPassive: true,
|
|
93
99
|
autoPan: {
|
|
94
100
|
enabled: false,
|
|
95
101
|
panSize: 10
|
|
@@ -112,7 +118,7 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
|
112
118
|
active: [{
|
|
113
119
|
toolName: toolNames.VolumeRotateMouseWheel,
|
|
114
120
|
configuration: {
|
|
115
|
-
rotateIncrementDegrees:
|
|
121
|
+
rotateIncrementDegrees: 5
|
|
116
122
|
}
|
|
117
123
|
}, {
|
|
118
124
|
toolName: toolNames.MipJumpToClick,
|
|
@@ -125,236 +131,137 @@ function _initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
|
125
131
|
}],
|
|
126
132
|
enabled: [{
|
|
127
133
|
toolName: toolNames.SegmentationDisplay
|
|
134
|
+
}, {
|
|
135
|
+
toolName: toolNames.OrientationMarker,
|
|
136
|
+
configuration: {
|
|
137
|
+
orientationWidget: {
|
|
138
|
+
viewportCorner: 'BOTTOM_LEFT'
|
|
139
|
+
}
|
|
140
|
+
}
|
|
128
141
|
}]
|
|
129
142
|
};
|
|
130
143
|
toolGroupService.createToolGroupAndAddTools(toolGroupIds.MIP, mipTools);
|
|
131
144
|
}
|
|
132
|
-
function initToolGroups(toolNames, Enums, toolGroupService, commandsManager) {
|
|
133
|
-
_initToolGroups(toolNames, Enums, toolGroupService, commandsManager);
|
|
145
|
+
function initToolGroups(toolNames, Enums, toolGroupService, commandsManager, modeLabelConfig) {
|
|
146
|
+
_initToolGroups(toolNames, Enums, toolGroupService, commandsManager, modeLabelConfig);
|
|
134
147
|
}
|
|
135
148
|
/* harmony default export */ const src_initToolGroups = (initToolGroups);
|
|
136
149
|
;// CONCATENATED MODULE: ../../../modes/tmtv/src/toolbarButtons.js
|
|
137
|
-
// TODO: torn, can either bake this here; or have to create a whole new button type
|
|
138
|
-
// Only ways that you can pass in a custom React component for render :l
|
|
139
|
-
|
|
140
150
|
|
|
141
151
|
|
|
142
152
|
const {
|
|
143
153
|
windowLevelPresets
|
|
144
154
|
} = src.defaults;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
function _createButton(type, id, icon, label, commands, tooltip) {
|
|
153
|
-
return {
|
|
154
|
-
id,
|
|
155
|
-
icon,
|
|
156
|
-
label,
|
|
157
|
-
type,
|
|
158
|
-
commands,
|
|
159
|
-
tooltip
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
function _createColormap(label, colormap) {
|
|
163
|
-
return {
|
|
164
|
-
id: label,
|
|
165
|
-
label,
|
|
166
|
-
type: 'action',
|
|
167
|
-
commands: [{
|
|
168
|
-
commandName: 'setFusionPTColormap',
|
|
169
|
-
commandOptions: {
|
|
170
|
-
toolGroupId: toolGroupIds.Fusion,
|
|
171
|
-
colormap
|
|
172
|
-
}
|
|
173
|
-
}]
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
const _createActionButton = _createButton.bind(null, 'action');
|
|
177
|
-
const _createToggleButton = _createButton.bind(null, 'toggle');
|
|
178
|
-
const _createToolButton = _createButton.bind(null, 'tool');
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
*
|
|
182
|
-
* @param {*} preset - preset number (from above import)
|
|
183
|
-
* @param {*} title
|
|
184
|
-
* @param {*} subtitle
|
|
185
|
-
*/
|
|
186
|
-
function _createWwwcPreset(preset, title, subtitle) {
|
|
187
|
-
return {
|
|
188
|
-
id: preset.toString(),
|
|
189
|
-
title,
|
|
190
|
-
subtitle,
|
|
191
|
-
type: 'action',
|
|
192
|
-
commands: [{
|
|
193
|
-
commandName: 'setWindowLevel',
|
|
194
|
-
commandOptions: {
|
|
195
|
-
...windowLevelPresets[preset]
|
|
196
|
-
},
|
|
197
|
-
context: 'CORNERSTONE'
|
|
198
|
-
}]
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function _createCommands(commandName, toolName, toolGroupIds) {
|
|
202
|
-
return toolGroupIds.map(toolGroupId => ({
|
|
203
|
-
/* It's a command that is being run when the button is clicked. */
|
|
204
|
-
commandName,
|
|
205
|
-
commandOptions: {
|
|
206
|
-
toolName,
|
|
207
|
-
toolGroupId
|
|
208
|
-
},
|
|
209
|
-
context: 'CORNERSTONE'
|
|
210
|
-
}));
|
|
211
|
-
}
|
|
212
|
-
const toolbarButtons = [
|
|
213
|
-
// Measurement
|
|
214
|
-
{
|
|
155
|
+
const setToolActiveToolbar = {
|
|
156
|
+
commandName: 'setToolActiveToolbar',
|
|
157
|
+
commandOptions: {
|
|
158
|
+
toolGroupIds: [toolGroupIds.CT, toolGroupIds.PT, toolGroupIds.Fusion]
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const toolbarButtons = [{
|
|
215
162
|
id: 'MeasurementTools',
|
|
216
|
-
|
|
163
|
+
uiType: 'ohif.splitButton',
|
|
217
164
|
props: {
|
|
218
165
|
groupId: 'MeasurementTools',
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
166
|
+
primary: src.ToolbarService.createButton({
|
|
167
|
+
id: 'Length',
|
|
168
|
+
icon: 'tool-length',
|
|
169
|
+
label: 'Length',
|
|
170
|
+
tooltip: 'Length Tool',
|
|
171
|
+
commands: setToolActiveToolbar,
|
|
172
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
173
|
+
}),
|
|
225
174
|
secondary: {
|
|
226
175
|
icon: 'chevron-down',
|
|
227
|
-
label: '',
|
|
228
|
-
isActive: true,
|
|
229
176
|
tooltip: 'More Measure Tools'
|
|
230
177
|
},
|
|
231
|
-
items: [
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
178
|
+
items: [src.ToolbarService.createButton({
|
|
179
|
+
id: 'Bidirectional',
|
|
180
|
+
icon: 'tool-bidirectional',
|
|
181
|
+
label: 'Bidirectional',
|
|
182
|
+
tooltip: 'Bidirectional Tool',
|
|
183
|
+
commands: setToolActiveToolbar,
|
|
184
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
185
|
+
}), src.ToolbarService.createButton({
|
|
186
|
+
id: 'ArrowAnnotate',
|
|
187
|
+
icon: 'tool-annotate',
|
|
188
|
+
label: 'Arrow Annotate',
|
|
189
|
+
tooltip: 'Arrow Annotate Tool',
|
|
190
|
+
commands: setToolActiveToolbar,
|
|
191
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
192
|
+
}), src.ToolbarService.createButton({
|
|
193
|
+
id: 'EllipticalROI',
|
|
194
|
+
icon: 'tool-ellipse',
|
|
195
|
+
label: 'Ellipse',
|
|
196
|
+
tooltip: 'Ellipse Tool',
|
|
197
|
+
commands: setToolActiveToolbar,
|
|
198
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
199
|
+
})]
|
|
240
200
|
}
|
|
241
|
-
},
|
|
242
|
-
// Zoom..
|
|
243
|
-
{
|
|
201
|
+
}, {
|
|
244
202
|
id: 'Zoom',
|
|
245
|
-
|
|
203
|
+
uiType: 'ohif.radioGroup',
|
|
246
204
|
props: {
|
|
247
|
-
type: 'tool',
|
|
248
205
|
icon: 'tool-zoom',
|
|
249
206
|
label: 'Zoom',
|
|
250
|
-
commands:
|
|
251
|
-
|
|
252
|
-
])]
|
|
253
|
-
}
|
|
254
|
-
}, {
|
|
255
|
-
id: 'MPR',
|
|
256
|
-
type: 'ohif.action',
|
|
257
|
-
props: {
|
|
258
|
-
type: 'toggle',
|
|
259
|
-
icon: 'icon-mpr',
|
|
260
|
-
label: 'MPR',
|
|
261
|
-
commands: [{
|
|
262
|
-
commandName: 'toggleHangingProtocol',
|
|
263
|
-
commandOptions: {
|
|
264
|
-
protocolId: 'mpr'
|
|
265
|
-
},
|
|
266
|
-
context: 'DEFAULT'
|
|
267
|
-
}]
|
|
207
|
+
commands: setToolActiveToolbar,
|
|
208
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
268
209
|
}
|
|
269
210
|
},
|
|
270
|
-
// Window Level + Presets
|
|
211
|
+
// Window Level + Presets
|
|
271
212
|
{
|
|
272
213
|
id: 'WindowLevel',
|
|
273
|
-
|
|
214
|
+
uiType: 'ohif.radioGroup',
|
|
274
215
|
props: {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
secondary: {
|
|
280
|
-
icon: 'chevron-down',
|
|
281
|
-
label: 'W/L Manual',
|
|
282
|
-
isActive: true,
|
|
283
|
-
tooltip: 'W/L Presets'
|
|
284
|
-
},
|
|
285
|
-
isAction: true,
|
|
286
|
-
// ?
|
|
287
|
-
renderer: ui_src/* WindowLevelMenuItem */.eJ,
|
|
288
|
-
items: [_createWwwcPreset(1, 'Soft tissue', '400 / 40'), _createWwwcPreset(2, 'Lung', '1500 / -600'), _createWwwcPreset(3, 'Liver', '150 / 90'), _createWwwcPreset(4, 'Bone', '2500 / 480'), _createWwwcPreset(5, 'Brain', '80 / 40')]
|
|
216
|
+
icon: 'tool-window-level',
|
|
217
|
+
label: 'Window Level',
|
|
218
|
+
commands: setToolActiveToolbar,
|
|
219
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
289
220
|
}
|
|
290
|
-
},
|
|
221
|
+
},
|
|
222
|
+
// Crosshairs Button
|
|
223
|
+
{
|
|
291
224
|
id: 'Crosshairs',
|
|
292
|
-
|
|
225
|
+
uiType: 'ohif.radioGroup',
|
|
293
226
|
props: {
|
|
294
|
-
type: 'tool',
|
|
295
227
|
icon: 'tool-crosshair',
|
|
296
228
|
label: 'Crosshairs',
|
|
297
|
-
commands:
|
|
298
|
-
|
|
299
|
-
])]
|
|
229
|
+
commands: setToolActiveToolbar,
|
|
230
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
300
231
|
}
|
|
301
232
|
},
|
|
302
|
-
// Pan
|
|
233
|
+
// Pan Button
|
|
303
234
|
{
|
|
304
235
|
id: 'Pan',
|
|
305
|
-
|
|
236
|
+
uiType: 'ohif.radioGroup',
|
|
306
237
|
props: {
|
|
307
|
-
type: 'tool',
|
|
308
238
|
icon: 'tool-move',
|
|
309
239
|
label: 'Pan',
|
|
310
|
-
commands:
|
|
311
|
-
|
|
312
|
-
])]
|
|
240
|
+
commands: setToolActiveToolbar,
|
|
241
|
+
evaluate: 'evaluate.cornerstoneTool'
|
|
313
242
|
}
|
|
314
|
-
},
|
|
243
|
+
},
|
|
244
|
+
// Rectangle ROI Start End Threshold Button
|
|
245
|
+
{
|
|
315
246
|
id: 'RectangleROIStartEndThreshold',
|
|
316
|
-
|
|
247
|
+
uiType: 'ohif.radioGroup',
|
|
317
248
|
props: {
|
|
318
|
-
type: 'tool',
|
|
319
249
|
icon: 'tool-create-threshold',
|
|
320
250
|
label: 'Rectangle ROI Threshold',
|
|
321
|
-
commands:
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
text: 'RectangleROI Threshold tool should be used on PT Axial Viewport',
|
|
326
|
-
type: 'info'
|
|
327
|
-
}
|
|
328
|
-
}, {
|
|
329
|
-
commandName: 'setViewportActive',
|
|
330
|
-
commandOptions: {
|
|
331
|
-
viewportId: 'ptAXIAL'
|
|
332
|
-
}
|
|
333
|
-
}]
|
|
334
|
-
}
|
|
335
|
-
}, {
|
|
336
|
-
id: 'fusionPTColormap',
|
|
337
|
-
type: 'ohif.splitButton',
|
|
338
|
-
props: {
|
|
339
|
-
groupId: 'fusionPTColormap',
|
|
340
|
-
primary: _createToolButton('fusionPTColormap', 'tool-fusion-color', 'Fusion PT Colormap', [], 'Fusion PT Colormap'),
|
|
341
|
-
secondary: {
|
|
342
|
-
icon: 'chevron-down',
|
|
343
|
-
label: 'PT Colormap',
|
|
344
|
-
isActive: true,
|
|
345
|
-
tooltip: 'PET Image Colormap'
|
|
251
|
+
commands: setToolActiveToolbar,
|
|
252
|
+
evaluate: {
|
|
253
|
+
name: 'evaluate.cornerstoneTool',
|
|
254
|
+
disabledText: 'Select the PT Axial to enable this tool'
|
|
346
255
|
},
|
|
347
|
-
|
|
348
|
-
// ?
|
|
349
|
-
items: [_createColormap('HSV', 'hsv'), _createColormap('Hot Iron', 'hot_iron'), _createColormap('S PET', 's_pet'), _createColormap('Red Hot', 'red_hot'), _createColormap('Perfusion', 'perfusion'), _createColormap('Rainbow', 'rainbow_2'), _createColormap('SUV', 'suv'), _createColormap('GE 256', 'ge_256'), _createColormap('GE', 'ge'), _createColormap('Siemens', 'siemens')]
|
|
256
|
+
options: 'tmtv.RectangleROIThresholdOptions'
|
|
350
257
|
}
|
|
351
258
|
}];
|
|
352
259
|
/* harmony default export */ const src_toolbarButtons = (toolbarButtons);
|
|
353
260
|
;// CONCATENATED MODULE: ../../../modes/tmtv/package.json
|
|
354
|
-
const package_namespaceObject = JSON.parse('{"
|
|
261
|
+
const package_namespaceObject = /*#__PURE__*/JSON.parse('{"UU":"@ohif/mode-tmtv"}');
|
|
355
262
|
;// CONCATENATED MODULE: ../../../modes/tmtv/src/id.js
|
|
356
263
|
|
|
357
|
-
const id = package_namespaceObject.
|
|
264
|
+
const id = package_namespaceObject.UU;
|
|
358
265
|
|
|
359
266
|
;// CONCATENATED MODULE: ../../../modes/tmtv/src/utils/setCrosshairsConfiguration.js
|
|
360
267
|
|
|
@@ -404,6 +311,8 @@ function setFusionActiveVolume(matches, toolNames, toolGroupService, displaySetS
|
|
|
404
311
|
toolGroupService.setToolConfiguration(toolGroupIds.Fusion, toolNames.WindowLevel, windowLevelConfig);
|
|
405
312
|
toolGroupService.setToolConfiguration(toolGroupIds.Fusion, toolNames.EllipticalROI, ellipticalROIConfig);
|
|
406
313
|
}
|
|
314
|
+
// EXTERNAL MODULE: ../../../node_modules/i18next/dist/esm/i18next.js
|
|
315
|
+
var i18next = __webpack_require__(92344);
|
|
407
316
|
;// CONCATENATED MODULE: ../../../modes/tmtv/src/index.js
|
|
408
317
|
|
|
409
318
|
|
|
@@ -411,6 +320,7 @@ function setFusionActiveVolume(matches, toolNames, toolGroupService, displaySetS
|
|
|
411
320
|
|
|
412
321
|
|
|
413
322
|
|
|
323
|
+
|
|
414
324
|
const {
|
|
415
325
|
MetadataProvider
|
|
416
326
|
} = src.classes;
|
|
@@ -421,44 +331,47 @@ const ohif = {
|
|
|
421
331
|
thumbnailList: '@ohif/extension-default.panelModule.seriesList'
|
|
422
332
|
};
|
|
423
333
|
const cs3d = {
|
|
424
|
-
viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone'
|
|
334
|
+
viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone',
|
|
335
|
+
segPanel: '@ohif/extension-cornerstone-dicom-seg.panelModule.panelSegmentation'
|
|
425
336
|
};
|
|
426
337
|
const tmtv = {
|
|
427
338
|
hangingProtocol: '@ohif/extension-tmtv.hangingProtocolModule.ptCT',
|
|
428
339
|
petSUV: '@ohif/extension-tmtv.panelModule.petSUV',
|
|
429
|
-
|
|
340
|
+
toolbox: '@ohif/extension-tmtv.panelModule.tmtvBox',
|
|
341
|
+
export: '@ohif/extension-tmtv.panelModule.tmtvExport'
|
|
430
342
|
};
|
|
431
343
|
const extensionDependencies = {
|
|
432
344
|
// Can derive the versions at least process.env.from npm_package_version
|
|
433
345
|
'@ohif/extension-default': '^3.0.0',
|
|
434
346
|
'@ohif/extension-cornerstone': '^3.0.0',
|
|
347
|
+
'@ohif/extension-cornerstone-dicom-seg': '^3.0.0',
|
|
435
348
|
'@ohif/extension-tmtv': '^3.0.0'
|
|
436
349
|
};
|
|
437
350
|
let unsubscriptions = [];
|
|
438
|
-
function modeFactory(
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
} = _ref;
|
|
351
|
+
function modeFactory({
|
|
352
|
+
modeConfiguration
|
|
353
|
+
}) {
|
|
442
354
|
return {
|
|
443
355
|
// TODO: We're using this as a route segment
|
|
444
356
|
// We should not be.
|
|
445
357
|
id: id,
|
|
446
358
|
routeName: 'tmtv',
|
|
447
|
-
displayName: 'Total Metabolic Tumor Volume',
|
|
359
|
+
displayName: i18next/* default */.A.t('Modes:Total Metabolic Tumor Volume'),
|
|
448
360
|
/**
|
|
449
361
|
* Lifecycle hooks
|
|
450
362
|
*/
|
|
451
|
-
onModeEnter:
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
} = _ref2;
|
|
363
|
+
onModeEnter: ({
|
|
364
|
+
servicesManager,
|
|
365
|
+
extensionManager,
|
|
366
|
+
commandsManager
|
|
367
|
+
}) => {
|
|
457
368
|
const {
|
|
458
369
|
toolbarService,
|
|
459
370
|
toolGroupService,
|
|
371
|
+
customizationService,
|
|
460
372
|
hangingProtocolService,
|
|
461
|
-
displaySetService
|
|
373
|
+
displaySetService,
|
|
374
|
+
viewportGridService
|
|
462
375
|
} = servicesManager.services;
|
|
463
376
|
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.tools');
|
|
464
377
|
const {
|
|
@@ -468,34 +381,6 @@ function modeFactory(_ref) {
|
|
|
468
381
|
|
|
469
382
|
// Init Default and SR ToolGroups
|
|
470
383
|
src_initToolGroups(toolNames, Enums, toolGroupService, commandsManager);
|
|
471
|
-
const setWindowLevelActive = () => {
|
|
472
|
-
toolbarService.recordInteraction({
|
|
473
|
-
groupId: 'WindowLevel',
|
|
474
|
-
interactionType: 'tool',
|
|
475
|
-
commands: [{
|
|
476
|
-
commandName: 'setToolActive',
|
|
477
|
-
commandOptions: {
|
|
478
|
-
toolName: toolNames.WindowLevel,
|
|
479
|
-
toolGroupId: toolGroupIds.CT
|
|
480
|
-
},
|
|
481
|
-
context: 'CORNERSTONE'
|
|
482
|
-
}, {
|
|
483
|
-
commandName: 'setToolActive',
|
|
484
|
-
commandOptions: {
|
|
485
|
-
toolName: toolNames.WindowLevel,
|
|
486
|
-
toolGroupId: toolGroupIds.PT
|
|
487
|
-
},
|
|
488
|
-
context: 'CORNERSTONE'
|
|
489
|
-
}, {
|
|
490
|
-
commandName: 'setToolActive',
|
|
491
|
-
commandOptions: {
|
|
492
|
-
toolName: toolNames.WindowLevel,
|
|
493
|
-
toolGroupId: toolGroupIds.Fusion
|
|
494
|
-
},
|
|
495
|
-
context: 'CORNERSTONE'
|
|
496
|
-
}]
|
|
497
|
-
});
|
|
498
|
-
};
|
|
499
384
|
const {
|
|
500
385
|
unsubscribe
|
|
501
386
|
} = toolGroupService.subscribe(toolGroupService.EVENTS.VIEWPORT_ADDED, () => {
|
|
@@ -507,12 +392,31 @@ function modeFactory(_ref) {
|
|
|
507
392
|
} = hangingProtocolService.getMatchDetails();
|
|
508
393
|
setCrosshairsConfiguration(displaySetMatchDetails, toolNames, toolGroupService, displaySetService);
|
|
509
394
|
setFusionActiveVolume(displaySetMatchDetails, toolNames, toolGroupService, displaySetService);
|
|
510
|
-
setWindowLevelActive();
|
|
511
395
|
});
|
|
512
396
|
unsubscriptions.push(unsubscribe);
|
|
513
|
-
toolbarService.init(extensionManager);
|
|
514
397
|
toolbarService.addButtons(src_toolbarButtons);
|
|
515
|
-
toolbarService.createButtonSection('primary', ['MeasurementTools', 'Zoom', 'WindowLevel', 'Crosshairs', 'Pan', '
|
|
398
|
+
toolbarService.createButtonSection('primary', ['MeasurementTools', 'Zoom', 'WindowLevel', 'Crosshairs', 'Pan', 'SyncToggle']);
|
|
399
|
+
toolbarService.createButtonSection('ROIThresholdToolbox', ['RectangleROIStartEndThreshold']);
|
|
400
|
+
customizationService.addModeCustomizations([{
|
|
401
|
+
id: 'segmentation.panel',
|
|
402
|
+
segmentationPanelMode: 'expanded',
|
|
403
|
+
addSegment: false,
|
|
404
|
+
onSegmentationAdd: () => {
|
|
405
|
+
commandsManager.run('createNewLabelmapFromPT');
|
|
406
|
+
}
|
|
407
|
+
}]);
|
|
408
|
+
|
|
409
|
+
// This is a hack and we need to find a better way to enable
|
|
410
|
+
// some tools that require the viewport to be ready
|
|
411
|
+
const {
|
|
412
|
+
unsubscribe: unsub1
|
|
413
|
+
} = viewportGridService.subscribe(viewportGridService.EVENTS.VIEWPORTS_READY, () => {
|
|
414
|
+
commandsManager.run('setToolEnabled', {
|
|
415
|
+
toolName: 'OrientationMarker',
|
|
416
|
+
toolGroupId: 'mipToolGroup'
|
|
417
|
+
});
|
|
418
|
+
unsub1();
|
|
419
|
+
});
|
|
516
420
|
|
|
517
421
|
// For the hanging protocol we need to decide on the window level
|
|
518
422
|
// based on whether the SUV is corrected or not, hence we can't hard
|
|
@@ -538,17 +442,20 @@ function modeFactory(_ref) {
|
|
|
538
442
|
return;
|
|
539
443
|
});
|
|
540
444
|
},
|
|
541
|
-
onModeExit:
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
} = _ref3;
|
|
445
|
+
onModeExit: ({
|
|
446
|
+
servicesManager
|
|
447
|
+
}) => {
|
|
545
448
|
const {
|
|
546
449
|
toolGroupService,
|
|
547
450
|
syncGroupService,
|
|
548
451
|
segmentationService,
|
|
549
|
-
cornerstoneViewportService
|
|
452
|
+
cornerstoneViewportService,
|
|
453
|
+
uiDialogService,
|
|
454
|
+
uiModalService
|
|
550
455
|
} = servicesManager.services;
|
|
551
456
|
unsubscriptions.forEach(unsubscribe => unsubscribe());
|
|
457
|
+
uiDialogService.dismissAll();
|
|
458
|
+
uiModalService.hide();
|
|
552
459
|
toolGroupService.destroy();
|
|
553
460
|
syncGroupService.destroy();
|
|
554
461
|
segmentationService.destroy();
|
|
@@ -558,14 +465,13 @@ function modeFactory(_ref) {
|
|
|
558
465
|
study: [],
|
|
559
466
|
series: []
|
|
560
467
|
},
|
|
561
|
-
isValidMode:
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
} = _ref4;
|
|
468
|
+
isValidMode: ({
|
|
469
|
+
modalities,
|
|
470
|
+
study
|
|
471
|
+
}) => {
|
|
566
472
|
const modalities_list = modalities.split('\\');
|
|
567
473
|
const invalidModalities = ['SM'];
|
|
568
|
-
const isValid = modalities_list.includes('CT') && modalities_list.includes('PT') && !invalidModalities.some(modality => modalities_list.includes(modality)) &&
|
|
474
|
+
const isValid = modalities_list.includes('CT') && study.mrn !== 'M1' && modalities_list.includes('PT') && !invalidModalities.some(modality => modalities_list.includes(modality)) &&
|
|
569
475
|
// This is study is a 4D study with PT and CT and not a 3D study for the tmtv
|
|
570
476
|
// mode, until we have a better way to identify 4D studies we will use the
|
|
571
477
|
// StudyInstanceUID to identify the study
|
|
@@ -574,24 +480,23 @@ function modeFactory(_ref) {
|
|
|
574
480
|
study.studyInstanceUid !== '1.3.6.1.4.1.12842.1.1.14.3.20220915.105557.468.2963630849';
|
|
575
481
|
|
|
576
482
|
// there should be both CT and PT modalities and the modality should not be SM
|
|
577
|
-
return
|
|
483
|
+
return {
|
|
484
|
+
valid: isValid,
|
|
485
|
+
description: 'The mode requires both PT and CT series in the study'
|
|
486
|
+
};
|
|
578
487
|
},
|
|
579
488
|
routes: [{
|
|
580
489
|
path: 'tmtv',
|
|
581
490
|
/*init: ({ servicesManager, extensionManager }) => {
|
|
582
491
|
//defaultViewerRouteInit
|
|
583
492
|
},*/
|
|
584
|
-
layoutTemplate:
|
|
585
|
-
let {
|
|
586
|
-
location,
|
|
587
|
-
servicesManager
|
|
588
|
-
} = _ref5;
|
|
493
|
+
layoutTemplate: () => {
|
|
589
494
|
return {
|
|
590
495
|
id: ohif.layout,
|
|
591
496
|
props: {
|
|
592
497
|
leftPanels: [ohif.thumbnailList],
|
|
593
|
-
|
|
594
|
-
rightPanels: [tmtv.
|
|
498
|
+
leftPanelClosed: true,
|
|
499
|
+
rightPanels: [[tmtv.toolbox, cs3d.segPanel, tmtv.export], tmtv.petSUV],
|
|
595
500
|
viewports: [{
|
|
596
501
|
namespace: cs3d.viewport,
|
|
597
502
|
displaySetsToDisplay: [ohif.sopClassHandler]
|
|
@@ -603,7 +508,7 @@ function modeFactory(_ref) {
|
|
|
603
508
|
extensions: extensionDependencies,
|
|
604
509
|
hangingProtocol: tmtv.hangingProtocol,
|
|
605
510
|
sopClassHandlers: [ohif.sopClassHandler],
|
|
606
|
-
hotkeys: [...src/* hotkeys */.
|
|
511
|
+
hotkeys: [...src/* hotkeys */.ot.defaults.hotkeyBindings],
|
|
607
512
|
...modeConfiguration
|
|
608
513
|
};
|
|
609
514
|
}
|