@ohif/app 3.7.0-beta.5 → 3.7.0-beta.51
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/{917.bundle.24fc5ca2280d2980bf0f.js → 12.bundle.d02c9736f7bdaabbf1df.js} +6 -6
- package/dist/{295.bundle.957b1159fec14b9199a1.js → 125.bundle.1ae4c6313c31cd0502cc.js} +4 -4
- package/dist/{208.bundle.e50761cf714ac772d9cc.js → 128.bundle.4b39b6452213ebee2101.js} +6 -6
- package/dist/{616.bundle.cbb2e0a23b1343b6441f.js → 150.bundle.4ff43d080c1803b2ccf6.js} +148 -104
- package/dist/{351.bundle.0742237651aef9694a65.js → 181.bundle.234fef330d4fe6baca8b.js} +139 -128
- package/dist/{351.css → 181.css} +1 -1
- package/dist/{606.bundle.5d876f5f3dd8287f0a28.js → 202.bundle.ac1e5e25d4daf54581b1.js} +3705 -981
- package/dist/{926.bundle.dbc9d0e591cb9217fda2.js → 220.bundle.f7e1c96c94245e70f2be.js} +990 -400
- package/dist/{664.bundle.09abae984223969d1bde.js → 23.bundle.e008ad788170f2ed5569.js} +5 -6
- package/dist/{976.bundle.3b8f97b61cdfa7dc32e3.js → 236.bundle.bce2af055e7783bd5df2.js} +38 -24
- package/dist/{55.bundle.550a823e75eb608e8d5e.js → 250.bundle.a523e899f4fb640949f9.js} +37 -25
- package/dist/{82.bundle.0456c9e58fa89b131f14.js → 260.bundle.32abfef92f05f0492bd7.js} +695 -159
- package/dist/{973.bundle.77245411064eaa3ee79a.js → 281.bundle.8b2abf41fb9774a672af.js} +18 -14
- package/dist/{744.bundle.81246dc9f043a17fde8a.js → 30.bundle.910818cf3256bcbe1e7b.js} +77 -89
- package/dist/{192.bundle.6dc1f92074738663620f.js → 348.bundle.90111e66d54917f1b2c2.js} +18 -14
- package/dist/{404.bundle.b7b371a30ca5bc5a0554.js → 359.bundle.86327c3bb486584e88a8.js} +13 -19
- package/dist/{50.bundle.135ada11018fff84d66b.js → 378.bundle.f7018f5e9dc009c1600b.js} +10 -8
- package/dist/{790.bundle.ca48b21507b91b675810.js → 410.bundle.92d296d4b09d8e82f386.js} +6 -6
- package/dist/{151.bundle.31ea35044218837bf73f.js → 417.bundle.720dc8f3a6e99f378aa9.js} +9 -11
- package/dist/{569.bundle.21f8ad57c06a210448b5.js → 451.bundle.9941d9134fcf747d452a.js} +62 -81
- package/dist/{581.bundle.dc6197189f7c88c27d4c.js → 471.bundle.c9e618aeda78362776aa.js} +43 -72
- package/dist/{199.bundle.dff92336f7bc36f2e484.js → 506.bundle.e7e138496747d049843e.js} +79 -15
- package/dist/{935.bundle.deeffff0e4f7b528e3c3.js → 604.bundle.a51f83e64004bca5f497.js} +2 -3
- package/dist/{984.bundle.0301a876361809048be0.js → 663.bundle.8f1eb54994e740164a70.js} +52 -35
- package/dist/{531.bundle.2a82fb1d69e5b57cc72b.js → 677.bundle.ec5f2b4707db33bd4d8e.js} +731 -447
- package/dist/{707.bundle.7068a46e5be26fe60fce.js → 678.bundle.fc6b51e7a4f17c57f311.js} +238 -247
- package/dist/{205.bundle.b5a473c200dcf2bbcdb4.js → 686.bundle.70565410179f1e7d22e6.js} +4 -4
- package/dist/{331.bundle.bd0c13931a21d53086c9.js → 754.bundle.8a16fc8ad21fe00c2e15.js} +12346 -7519
- package/dist/{728.bundle.d13856835357400fef82.js → 774.bundle.8ba82ee206266eb2da5e.js} +90 -63
- package/dist/{381.bundle.0905e683605fcbc0895f.js → 775.bundle.2285e7e0e67878948c0d.js} +16 -16
- package/dist/{283.bundle.f06203ec47c287f44cea.js → 782.bundle.4bcf99c54d62bacf5195.js} +57 -26
- package/dist/{642.bundle.e8d980d4ba95b0b2665f.js → 814.bundle.c0d69af52c06e4409f38.js} +6 -6
- package/dist/{799.bundle.758558e64147e5aad612.js → 822.bundle.d40c439da659f0e8500d.js} +65 -16
- package/dist/{953.bundle.3b0189ebc11cf0946f18.js → 886.bundle.68ef58774a6837f57631.js} +11 -10
- package/dist/{270.bundle.4564621556b0f963a004.js → 925.bundle.a2f1103d968c53a2b8fb.js} +626 -544
- package/dist/945.min.worker.js +1 -1
- package/dist/945.min.worker.js.map +1 -1
- package/dist/app-config.js +7 -7
- package/dist/{app.bundle.3ab8624d0394f1b10a0d.js → app.bundle.cbf4363d789f3e24553e.js} +59258 -59602
- package/dist/app.bundle.css +9 -9
- package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/{dicom-microscopy-viewer.bundle.aa60bdf008c32c39cfd7.js → dicom-microscopy-viewer.bundle.44f7fedc03a58d5911d1.js} +3 -3
- package/dist/google.js +6 -5
- package/dist/index.html +1 -1
- package/dist/{index.worker.1c69152d710fa7b84bce.worker.js → index.worker.e62ecca63f1a2e124230.worker.js} +2 -2
- package/dist/index.worker.e62ecca63f1a2e124230.worker.js.map +1 -0
- package/dist/sw.js +1 -1
- package/package.json +19 -20
- package/dist/780.bundle.fd0f13dc92e9caa0581e.js +0 -4769
- package/dist/index.worker.1c69152d710fa7b84bce.worker.js.map +0 -1
- /package/dist/{55.css → 250.css} +0 -0
- /package/dist/{806.css → 579.css} +0 -0
- /package/dist/{707.css → 678.css} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[12],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 85012:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -13,7 +13,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
16
|
-
var react = __webpack_require__(
|
|
16
|
+
var react = __webpack_require__(43001);
|
|
17
17
|
;// CONCATENATED MODULE: ../../../extensions/dicom-video/package.json
|
|
18
18
|
const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-dicom-video"}');
|
|
19
19
|
;// CONCATENATED MODULE: ../../../extensions/dicom-video/src/id.js
|
|
@@ -21,8 +21,8 @@ const package_namespaceObject = JSON.parse('{"u2":"@ohif/extension-dicom-video"}
|
|
|
21
21
|
const id = package_namespaceObject.u2;
|
|
22
22
|
const SOPClassHandlerId = `${id}.sopClassHandlerModule.dicom-video`;
|
|
23
23
|
|
|
24
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
25
|
-
var src = __webpack_require__(
|
|
24
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 104 modules
|
|
25
|
+
var src = __webpack_require__(24966);
|
|
26
26
|
;// CONCATENATED MODULE: ../../../extensions/dicom-video/src/getSopClassHandlerModule.js
|
|
27
27
|
|
|
28
28
|
|
|
@@ -127,7 +127,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
130
|
-
return __webpack_require__.e(/* import() */
|
|
130
|
+
return __webpack_require__.e(/* import() */ 686).then(__webpack_require__.bind(__webpack_require__, 39686));
|
|
131
131
|
});
|
|
132
132
|
const OHIFCornerstoneVideoViewport = props => {
|
|
133
133
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[125],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 39125:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
__webpack_require__.r(__webpack_exports__);
|
|
8
8
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9
9
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
10
10
|
/* harmony export */ });
|
|
11
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(
|
|
12
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(
|
|
11
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43001);
|
|
12
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3827);
|
|
13
13
|
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
14
14
|
|
|
15
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
(
|
|
2
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[128],{
|
|
3
3
|
|
|
4
|
-
/***/
|
|
4
|
+
/***/ 59128:
|
|
5
5
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
6
|
|
|
7
7
|
// ESM COMPAT FLAG
|
|
@@ -12,10 +12,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
12
12
|
"default": () => (/* binding */ basic_test_mode_src)
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
// EXTERNAL MODULE: ../../core/src/index.ts +
|
|
16
|
-
var src = __webpack_require__(
|
|
17
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
18
|
-
var ui_src = __webpack_require__(
|
|
15
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 104 modules
|
|
16
|
+
var src = __webpack_require__(24966);
|
|
17
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 456 modules
|
|
18
|
+
var ui_src = __webpack_require__(60082);
|
|
19
19
|
;// CONCATENATED MODULE: ../../../modes/basic-test-mode/src/toolbarButtons.js
|
|
20
20
|
// TODO: torn, can either bake this here; or have to create a whole new button type
|
|
21
21
|
// Only ways that you can pass in a custom React component for render :l
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(
|
|
1
|
+
(self["webpackChunk"] = self["webpackChunk"] || []).push([[150],{
|
|
2
2
|
|
|
3
|
-
/***/
|
|
3
|
+
/***/ 48228:
|
|
4
4
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
@@ -9,7 +9,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9
9
|
|
|
10
10
|
// EXPORTS
|
|
11
11
|
__webpack_require__.d(__webpack_exports__, {
|
|
12
|
-
"default": () => (/* binding */ cornerstone_dicom_seg_src)
|
|
12
|
+
"default": () => (/* binding */ cornerstone_dicom_seg_src),
|
|
13
|
+
hydrateSEGDisplaySet: () => (/* reexport */ _hydrateSEG/* default */.Z)
|
|
13
14
|
});
|
|
14
15
|
|
|
15
16
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/package.json
|
|
@@ -21,22 +22,34 @@ const SOPClassHandlerName = 'dicom-seg';
|
|
|
21
22
|
const SOPClassHandlerId = `${id}.sopClassHandlerModule.${SOPClassHandlerName}`;
|
|
22
23
|
|
|
23
24
|
// EXTERNAL MODULE: ../../../node_modules/react/index.js
|
|
24
|
-
var react = __webpack_require__(
|
|
25
|
-
// EXTERNAL MODULE:
|
|
26
|
-
var
|
|
27
|
-
// EXTERNAL MODULE:
|
|
28
|
-
var
|
|
25
|
+
var react = __webpack_require__(43001);
|
|
26
|
+
// EXTERNAL MODULE: ../../core/src/index.ts + 104 modules
|
|
27
|
+
var src = __webpack_require__(24966);
|
|
28
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/index.js + 337 modules
|
|
29
|
+
var esm = __webpack_require__(45754);
|
|
30
|
+
// EXTERNAL MODULE: ../../../node_modules/@cornerstonejs/adapters/dist/adapters.es.js
|
|
31
|
+
var adapters_es = __webpack_require__(91202);
|
|
29
32
|
// EXTERNAL MODULE: ../../../node_modules/dcmjs/build/dcmjs.es.js
|
|
30
|
-
var dcmjs_es = __webpack_require__(
|
|
33
|
+
var dcmjs_es = __webpack_require__(67540);
|
|
34
|
+
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/dicomlabToRGB.ts
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Converts a CIELAB color to an RGB color using the dcmjs library.
|
|
39
|
+
* @param cielab - The CIELAB color to convert.
|
|
40
|
+
* @returns The RGB color as an array of three integers between 0 and 255.
|
|
41
|
+
*/
|
|
42
|
+
function dicomlabToRGB(cielab) {
|
|
43
|
+
const rgb = dcmjs_es["default"].data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
|
|
44
|
+
return rgb;
|
|
45
|
+
}
|
|
46
|
+
|
|
31
47
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/getSopClassHandlerModule.js
|
|
32
48
|
|
|
33
49
|
|
|
34
50
|
|
|
35
51
|
|
|
36
|
-
|
|
37
|
-
DicomMessage,
|
|
38
|
-
DicomMetaDictionary
|
|
39
|
-
} = dcmjs_es["default"].data;
|
|
52
|
+
|
|
40
53
|
const sopClassUids = ['1.2.840.10008.5.1.4.1.1.66.4'];
|
|
41
54
|
let loadPromises = {};
|
|
42
55
|
function _getDisplaySetsFromSeries(instances, servicesManager, extensionManager) {
|
|
@@ -130,8 +143,12 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) {
|
|
|
130
143
|
// and also return the same promise to any other callers.
|
|
131
144
|
loadPromises[SOPInstanceUID] = new Promise(async (resolve, reject) => {
|
|
132
145
|
if (!segDisplaySet.segments || Object.keys(segDisplaySet.segments).length === 0) {
|
|
133
|
-
|
|
134
|
-
|
|
146
|
+
await _loadSegments({
|
|
147
|
+
extensionManager,
|
|
148
|
+
servicesManager,
|
|
149
|
+
segDisplaySet,
|
|
150
|
+
headers
|
|
151
|
+
});
|
|
135
152
|
}
|
|
136
153
|
const suppressEvents = true;
|
|
137
154
|
segmentationService.createSegmentationForSEGDisplaySet(segDisplaySet, null, suppressEvents).then(() => {
|
|
@@ -144,101 +161,62 @@ function _load(segDisplaySet, servicesManager, extensionManager, headers) {
|
|
|
144
161
|
});
|
|
145
162
|
return loadPromises[SOPInstanceUID];
|
|
146
163
|
}
|
|
147
|
-
async function _loadSegments(
|
|
164
|
+
async function _loadSegments(_ref2) {
|
|
165
|
+
let {
|
|
166
|
+
extensionManager,
|
|
167
|
+
servicesManager,
|
|
168
|
+
segDisplaySet,
|
|
169
|
+
headers
|
|
170
|
+
} = _ref2;
|
|
148
171
|
const utilityModule = extensionManager.getModuleEntry('@ohif/extension-cornerstone.utilityModule.common');
|
|
172
|
+
const {
|
|
173
|
+
segmentationService
|
|
174
|
+
} = servicesManager.services;
|
|
149
175
|
const {
|
|
150
176
|
dicomLoaderService
|
|
151
177
|
} = utilityModule.exports;
|
|
152
|
-
const
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!Array.isArray(dataset.SegmentSequence)) {
|
|
157
|
-
dataset.SegmentSequence = [dataset.SegmentSequence];
|
|
178
|
+
const arrayBuffer = await dicomLoaderService.findDicomDataPromise(segDisplaySet, null, headers);
|
|
179
|
+
const cachedReferencedVolume = esm.cache.getVolume(segDisplaySet.referencedVolumeId);
|
|
180
|
+
if (!cachedReferencedVolume) {
|
|
181
|
+
throw new Error('Referenced Volume is missing for the SEG, and stack viewport SEG is not supported yet');
|
|
158
182
|
}
|
|
159
|
-
const
|
|
160
|
-
|
|
183
|
+
const {
|
|
184
|
+
imageIds
|
|
185
|
+
} = cachedReferencedVolume;
|
|
186
|
+
|
|
187
|
+
// Todo: what should be defaults here
|
|
188
|
+
const tolerance = 0.001;
|
|
189
|
+
const skipOverlapping = true;
|
|
190
|
+
esm.eventTarget.addEventListener(adapters_es/* Enums */.Yb.Events.SEGMENTATION_LOAD_PROGRESS, evt => {
|
|
191
|
+
const {
|
|
192
|
+
percentComplete
|
|
193
|
+
} = evt.detail;
|
|
194
|
+
segmentationService._broadcastEvent(segmentationService.EVENTS.SEGMENT_LOADING_COMPLETE, {
|
|
195
|
+
percentComplete
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
const results = await adapters_es/* adaptersSEG */.ok.Cornerstone3D.Segmentation.generateToolState(imageIds, arrayBuffer, esm.metaData, {
|
|
199
|
+
skipOverlapping,
|
|
200
|
+
tolerance,
|
|
201
|
+
eventTarget: esm.eventTarget,
|
|
202
|
+
triggerEvent: esm.triggerEvent
|
|
203
|
+
});
|
|
204
|
+
results.segMetadata.data.forEach((data, i) => {
|
|
205
|
+
if (i > 0) {
|
|
206
|
+
data.rgba = dicomlabToRGB(data.RecommendedDisplayCIELabValue);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
Object.assign(segDisplaySet, results);
|
|
161
210
|
}
|
|
162
211
|
function _segmentationExists(segDisplaySet, segmentationService) {
|
|
163
212
|
// This should be abstracted with the CornerstoneCacheService
|
|
164
213
|
return segmentationService.getSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
165
214
|
}
|
|
166
|
-
function
|
|
167
|
-
let frameSize = Math.ceil(dataset.Rows * dataset.Columns / 8);
|
|
168
|
-
let nextOffset = 0;
|
|
169
|
-
Object.keys(segments).forEach(segmentKey => {
|
|
170
|
-
const segment = segments[segmentKey];
|
|
171
|
-
segment.numberOfFrames = segment.functionalGroups.length;
|
|
172
|
-
segment.size = segment.numberOfFrames * frameSize;
|
|
173
|
-
segment.offset = nextOffset;
|
|
174
|
-
nextOffset = segment.offset + segment.size;
|
|
175
|
-
const packedSegment = dataset.PixelData[0].slice(segment.offset, nextOffset);
|
|
176
|
-
segment.pixelData = dcmjs_es["default"].data.BitArray.unpack(packedSegment);
|
|
177
|
-
segment.geometry = geometryFromFunctionalGroups(dataset, segment.functionalGroups);
|
|
178
|
-
});
|
|
179
|
-
return segments;
|
|
180
|
-
}
|
|
181
|
-
function geometryFromFunctionalGroups(dataset, perFrame) {
|
|
182
|
-
let pixelMeasures = dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;
|
|
183
|
-
let planeOrientation = dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;
|
|
184
|
-
let planePosition = perFrame[0].PlanePositionSequence; // TODO: assume sorted frames!
|
|
185
|
-
|
|
186
|
-
const geometry = {};
|
|
187
|
-
|
|
188
|
-
// NB: DICOM PixelSpacing is defined as Row then Column,
|
|
189
|
-
// unlike ImageOrientationPatient
|
|
190
|
-
let spacingBetweenSlices = pixelMeasures.SpacingBetweenSlices;
|
|
191
|
-
if (!spacingBetweenSlices) {
|
|
192
|
-
if (pixelMeasures.SliceThickness) {
|
|
193
|
-
console.log('Using SliceThickness as SpacingBetweenSlices');
|
|
194
|
-
spacingBetweenSlices = pixelMeasures.SliceThickness;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
geometry.spacing = [pixelMeasures.PixelSpacing[1], pixelMeasures.PixelSpacing[0], spacingBetweenSlices].map(Number);
|
|
198
|
-
geometry.dimensions = [dataset.Columns, dataset.Rows, perFrame.length].map(Number);
|
|
199
|
-
let orientation = planeOrientation.ImageOrientationPatient.map(Number);
|
|
200
|
-
const columnStepToPatient = orientation.slice(0, 3);
|
|
201
|
-
const rowStepToPatient = orientation.slice(3, 6);
|
|
202
|
-
geometry.planeNormal = [];
|
|
203
|
-
Core_Math/* default.cross */.ZP.cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);
|
|
204
|
-
let firstPosition = perFrame[0].PlanePositionSequence.ImagePositionPatient.map(Number);
|
|
205
|
-
let lastPosition = perFrame[perFrame.length - 1].PlanePositionSequence.ImagePositionPatient.map(Number);
|
|
206
|
-
geometry.sliceStep = [];
|
|
207
|
-
Core_Math/* default.subtract */.ZP.subtract(lastPosition, firstPosition, geometry.sliceStep);
|
|
208
|
-
Core_Math/* default.normalize */.ZP.normalize(geometry.sliceStep);
|
|
209
|
-
geometry.direction = columnStepToPatient.concat(rowStepToPatient).concat(geometry.sliceStep);
|
|
210
|
-
geometry.origin = planePosition.ImagePositionPatient.map(Number);
|
|
211
|
-
return geometry;
|
|
212
|
-
}
|
|
213
|
-
function _getSegments(dataset) {
|
|
214
|
-
const segments = {};
|
|
215
|
-
dataset.SegmentSequence.forEach(segment => {
|
|
216
|
-
const cielab = segment.RecommendedDisplayCIELabValue;
|
|
217
|
-
const rgba = dcmjs_es["default"].data.Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));
|
|
218
|
-
rgba.push(255);
|
|
219
|
-
const segmentNumber = segment.SegmentNumber;
|
|
220
|
-
segments[segmentNumber] = {
|
|
221
|
-
color: rgba,
|
|
222
|
-
functionalGroups: [],
|
|
223
|
-
offset: null,
|
|
224
|
-
size: null,
|
|
225
|
-
pixelData: null,
|
|
226
|
-
label: segment.SegmentLabel
|
|
227
|
-
};
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
// make a list of functional groups per segment
|
|
231
|
-
dataset.PerFrameFunctionalGroupsSequence.forEach(functionalGroup => {
|
|
232
|
-
const segmentNumber = functionalGroup.SegmentIdentificationSequence.ReferencedSegmentNumber;
|
|
233
|
-
segments[segmentNumber].functionalGroups.push(functionalGroup);
|
|
234
|
-
});
|
|
235
|
-
return _getPixelData(dataset, segments);
|
|
236
|
-
}
|
|
237
|
-
function getSopClassHandlerModule(_ref2) {
|
|
215
|
+
function getSopClassHandlerModule(_ref3) {
|
|
238
216
|
let {
|
|
239
217
|
servicesManager,
|
|
240
218
|
extensionManager
|
|
241
|
-
} =
|
|
219
|
+
} = _ref3;
|
|
242
220
|
const getDisplaySetsFromSeries = instances => {
|
|
243
221
|
return _getDisplaySetsFromSeries(instances, servicesManager, extensionManager);
|
|
244
222
|
};
|
|
@@ -250,10 +228,10 @@ function getSopClassHandlerModule(_ref2) {
|
|
|
250
228
|
}
|
|
251
229
|
/* harmony default export */ const src_getSopClassHandlerModule = (getSopClassHandlerModule);
|
|
252
230
|
// EXTERNAL MODULE: ../../../node_modules/prop-types/index.js
|
|
253
|
-
var prop_types = __webpack_require__(
|
|
231
|
+
var prop_types = __webpack_require__(3827);
|
|
254
232
|
var prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);
|
|
255
|
-
// EXTERNAL MODULE: ../../ui/src/index.js +
|
|
256
|
-
var ui_src = __webpack_require__(
|
|
233
|
+
// EXTERNAL MODULE: ../../ui/src/index.js + 456 modules
|
|
234
|
+
var ui_src = __webpack_require__(60082);
|
|
257
235
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/callInputDialog.tsx
|
|
258
236
|
|
|
259
237
|
|
|
@@ -339,7 +317,7 @@ function callInputDialog(uiDialogService, label, callback) {
|
|
|
339
317
|
}
|
|
340
318
|
/* harmony default export */ const panels_callInputDialog = (callInputDialog);
|
|
341
319
|
// EXTERNAL MODULE: ../../../node_modules/react-i18next/dist/es/index.js + 15 modules
|
|
342
|
-
var es = __webpack_require__(
|
|
320
|
+
var es = __webpack_require__(69190);
|
|
343
321
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/panels/PanelSegmentation.tsx
|
|
344
322
|
|
|
345
323
|
|
|
@@ -535,7 +513,6 @@ const segProtocol = {
|
|
|
535
513
|
// Don't store this hanging protocol as it applies to the currently active
|
|
536
514
|
// display set by default
|
|
537
515
|
// cacheId: null,
|
|
538
|
-
hasUpdatedPriorsInformation: false,
|
|
539
516
|
name: 'Segmentations',
|
|
540
517
|
// Just apply this one when specifically listed
|
|
541
518
|
protocolMatchingRules: [],
|
|
@@ -594,6 +571,8 @@ function getHangingProtocolModule() {
|
|
|
594
571
|
}
|
|
595
572
|
/* harmony default export */ const src_getHangingProtocolModule = (getHangingProtocolModule);
|
|
596
573
|
|
|
574
|
+
// EXTERNAL MODULE: ../../../extensions/cornerstone-dicom-seg/src/utils/_hydrateSEG.ts
|
|
575
|
+
var _hydrateSEG = __webpack_require__(28417);
|
|
597
576
|
;// CONCATENATED MODULE: ../../../extensions/cornerstone-dicom-seg/src/index.tsx
|
|
598
577
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
599
578
|
|
|
@@ -601,8 +580,9 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
601
580
|
|
|
602
581
|
|
|
603
582
|
|
|
583
|
+
|
|
604
584
|
const Component = /*#__PURE__*/react.lazy(() => {
|
|
605
|
-
return __webpack_require__.e(/* import() */
|
|
585
|
+
return __webpack_require__.e(/* import() */ 451).then(__webpack_require__.bind(__webpack_require__, 4451));
|
|
606
586
|
});
|
|
607
587
|
const OHIFCornerstoneSEGViewport = props => {
|
|
608
588
|
return /*#__PURE__*/react.createElement(react.Suspense, {
|
|
@@ -654,7 +634,8 @@ const extension = {
|
|
|
654
634
|
const ExtendedOHIFCornerstoneSEGViewport = props => {
|
|
655
635
|
return /*#__PURE__*/react.createElement(OHIFCornerstoneSEGViewport, _extends({
|
|
656
636
|
servicesManager: servicesManager,
|
|
657
|
-
extensionManager: extensionManager
|
|
637
|
+
extensionManager: extensionManager,
|
|
638
|
+
commandsManager: commandsManager
|
|
658
639
|
}, props));
|
|
659
640
|
};
|
|
660
641
|
return [{
|
|
@@ -673,6 +654,69 @@ const extension = {
|
|
|
673
654
|
};
|
|
674
655
|
/* harmony default export */ const cornerstone_dicom_seg_src = (extension);
|
|
675
656
|
|
|
657
|
+
|
|
658
|
+
/***/ }),
|
|
659
|
+
|
|
660
|
+
/***/ 28417:
|
|
661
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
662
|
+
|
|
663
|
+
"use strict";
|
|
664
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
665
|
+
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
666
|
+
/* harmony export */ });
|
|
667
|
+
async function _hydrateSEGDisplaySet(_ref) {
|
|
668
|
+
let {
|
|
669
|
+
segDisplaySet,
|
|
670
|
+
viewportIndex,
|
|
671
|
+
servicesManager
|
|
672
|
+
} = _ref;
|
|
673
|
+
const {
|
|
674
|
+
segmentationService,
|
|
675
|
+
hangingProtocolService,
|
|
676
|
+
viewportGridService
|
|
677
|
+
} = servicesManager.services;
|
|
678
|
+
const displaySetInstanceUID = segDisplaySet.referencedDisplaySetInstanceUID;
|
|
679
|
+
let segmentationId = null;
|
|
680
|
+
|
|
681
|
+
// We need the hydration to notify panels about the new segmentation added
|
|
682
|
+
const suppressEvents = false;
|
|
683
|
+
segmentationId = await segmentationService.createSegmentationForSEGDisplaySet(segDisplaySet, segmentationId, suppressEvents);
|
|
684
|
+
segmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
685
|
+
const {
|
|
686
|
+
viewports
|
|
687
|
+
} = viewportGridService.getState();
|
|
688
|
+
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(viewportIndex, displaySetInstanceUID);
|
|
689
|
+
|
|
690
|
+
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
691
|
+
|
|
692
|
+
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
693
|
+
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
694
|
+
// (if already is not using it) since Cornerstone3D currently only supports
|
|
695
|
+
// volume viewport for segmentation
|
|
696
|
+
viewports.forEach((viewport, index) => {
|
|
697
|
+
if (index === viewportIndex) {
|
|
698
|
+
return;
|
|
699
|
+
}
|
|
700
|
+
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(viewport.displaySetInstanceUIDs, segDisplaySet.displaySetInstanceUID);
|
|
701
|
+
if (shouldDisplaySeg) {
|
|
702
|
+
updatedViewports.push({
|
|
703
|
+
viewportIndex: index,
|
|
704
|
+
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
705
|
+
viewportOptions: {
|
|
706
|
+
initialImageOptions: {
|
|
707
|
+
preset: 'middle'
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
});
|
|
713
|
+
|
|
714
|
+
// Do the entire update at once
|
|
715
|
+
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
716
|
+
return true;
|
|
717
|
+
}
|
|
718
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_hydrateSEGDisplaySet);
|
|
719
|
+
|
|
676
720
|
/***/ }),
|
|
677
721
|
|
|
678
722
|
/***/ 78753:
|