@cornerstonejs/adapters 3.5.3 → 3.6.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/dist/esm/adapters/Cornerstone/Angle.js +3 -5
- package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +4 -6
- package/dist/esm/adapters/Cornerstone/CircleRoi.js +9 -9
- package/dist/esm/adapters/Cornerstone/CobbAngle.js +3 -5
- package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +3 -5
- package/dist/esm/adapters/Cornerstone/FreehandRoi.js +3 -5
- package/dist/esm/adapters/Cornerstone/Length.js +3 -5
- package/dist/esm/adapters/Cornerstone/MeasurementReport.js +1 -1
- package/dist/esm/adapters/Cornerstone/ParametricMap.js +2 -3
- package/dist/esm/adapters/Cornerstone/RectangleRoi.js +3 -5
- package/dist/esm/adapters/Cornerstone/Segmentation.js +3 -3
- package/dist/esm/adapters/Cornerstone3D/Angle.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.js +7 -7
- package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/CircleROI.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/KeyImage.js +3 -3
- package/dist/esm/adapters/Cornerstone3D/Length.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +11 -14
- package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/Probe.js +3 -5
- package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +6 -8
- package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +2 -2
- package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +1 -1
- package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +4 -5
- package/dist/esm/adapters/helpers/getDatasetsFromImages.js +1 -1
- package/package.json +4 -4
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -18
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -14
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -9
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -11
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Angle: TID300Angle
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -19,7 +16,8 @@ class Angle {
|
|
|
19
16
|
NUMGroup,
|
|
20
17
|
SCOORDGroup
|
|
21
18
|
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup);
|
|
22
|
-
const state =
|
|
19
|
+
const state = {
|
|
20
|
+
...defaultState,
|
|
23
21
|
rAngle: NUMGroup.MeasuredValueSequence.NumericValue,
|
|
24
22
|
toolType: Angle.toolType,
|
|
25
23
|
handles: {
|
|
@@ -34,7 +32,7 @@ class Angle {
|
|
|
34
32
|
hasBoundingBox: true
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
|
-
}
|
|
35
|
+
};
|
|
38
36
|
[state.handles.start.x, state.handles.start.y, state.handles.middle.x, state.handles.middle.y, state.handles.middle.x, state.handles.middle.y, state.handles.end.x, state.handles.end.y] = SCOORDGroup.GraphicData;
|
|
39
37
|
return state;
|
|
40
38
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Point: TID300Point
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -21,7 +18,8 @@ class ArrowAnnotate {
|
|
|
21
18
|
const {
|
|
22
19
|
GraphicData
|
|
23
20
|
} = SCOORDGroup;
|
|
24
|
-
const state =
|
|
21
|
+
const state = {
|
|
22
|
+
...defaultState,
|
|
25
23
|
toolType: ArrowAnnotate.toolType,
|
|
26
24
|
active: false,
|
|
27
25
|
handles: {
|
|
@@ -50,7 +48,7 @@ class ArrowAnnotate {
|
|
|
50
48
|
invalidated: true,
|
|
51
49
|
text,
|
|
52
50
|
visible: true
|
|
53
|
-
}
|
|
51
|
+
};
|
|
54
52
|
return state;
|
|
55
53
|
}
|
|
56
54
|
static getTID300RepresentationArguments(tool) {
|
|
@@ -63,7 +61,7 @@ class ArrowAnnotate {
|
|
|
63
61
|
} = tool;
|
|
64
62
|
const TID300RepresentationArguments = {
|
|
65
63
|
points,
|
|
66
|
-
trackingIdentifierTextValue:
|
|
64
|
+
trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`,
|
|
67
65
|
findingSites: findingSites || []
|
|
68
66
|
};
|
|
69
67
|
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Circle: TID300Circle
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -28,7 +25,8 @@ class CircleRoi {
|
|
|
28
25
|
x: GraphicData[2],
|
|
29
26
|
y: GraphicData[3]
|
|
30
27
|
};
|
|
31
|
-
const state =
|
|
28
|
+
const state = {
|
|
29
|
+
...defaultState,
|
|
32
30
|
toolType: CircleRoi.toolType,
|
|
33
31
|
active: false,
|
|
34
32
|
cachedStats: {
|
|
@@ -38,15 +36,17 @@ class CircleRoi {
|
|
|
38
36
|
perimeter: 0
|
|
39
37
|
},
|
|
40
38
|
handles: {
|
|
41
|
-
end:
|
|
39
|
+
end: {
|
|
40
|
+
...end,
|
|
42
41
|
highlight: false,
|
|
43
42
|
active: false
|
|
44
|
-
}
|
|
43
|
+
},
|
|
45
44
|
initialRotation: 0,
|
|
46
|
-
start:
|
|
45
|
+
start: {
|
|
46
|
+
...center,
|
|
47
47
|
highlight: false,
|
|
48
48
|
active: false
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
50
|
textBox: {
|
|
51
51
|
hasMoved: false,
|
|
52
52
|
movesIndependently: false,
|
|
@@ -57,7 +57,7 @@ class CircleRoi {
|
|
|
57
57
|
},
|
|
58
58
|
invalidated: true,
|
|
59
59
|
visible: true
|
|
60
|
-
}
|
|
60
|
+
};
|
|
61
61
|
return state;
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
CobbAngle: TID300CobbAngle
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -17,7 +14,8 @@ class CobbAngle {
|
|
|
17
14
|
NUMGroup,
|
|
18
15
|
SCOORDGroup
|
|
19
16
|
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup);
|
|
20
|
-
const state =
|
|
17
|
+
const state = {
|
|
18
|
+
...defaultState,
|
|
21
19
|
rAngle: NUMGroup.MeasuredValueSequence.NumericValue,
|
|
22
20
|
toolType: CobbAngle.toolType,
|
|
23
21
|
handles: {
|
|
@@ -39,7 +37,7 @@ class CobbAngle {
|
|
|
39
37
|
hasBoundingBox: true
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
|
-
}
|
|
40
|
+
};
|
|
43
41
|
[state.handles.start.x, state.handles.start.y, state.handles.end.x, state.handles.end.y, state.handles.start2.x, state.handles.start2.y, state.handles.end2.x, state.handles.end2.y] = SCOORDGroup.GraphicData;
|
|
44
42
|
return state;
|
|
45
43
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Ellipse: TID300Ellipse
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -55,7 +52,8 @@ class EllipticalRoi {
|
|
|
55
52
|
x: majorAxis[1].x - minorAxisDirection.x * halfMinorAxisLength,
|
|
56
53
|
y: majorAxis[1].y - minorAxisDirection.y * halfMinorAxisLength
|
|
57
54
|
};
|
|
58
|
-
const state =
|
|
55
|
+
const state = {
|
|
56
|
+
...defaultState,
|
|
59
57
|
toolType: EllipticalRoi.toolType,
|
|
60
58
|
active: false,
|
|
61
59
|
cachedStats: {
|
|
@@ -85,7 +83,7 @@ class EllipticalRoi {
|
|
|
85
83
|
},
|
|
86
84
|
invalidated: true,
|
|
87
85
|
visible: true
|
|
88
|
-
}
|
|
86
|
+
};
|
|
89
87
|
return state;
|
|
90
88
|
}
|
|
91
89
|
static getTID300RepresentationArguments(tool) {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Polyline: TID300Polyline
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -15,7 +12,8 @@ class FreehandRoi {
|
|
|
15
12
|
SCOORDGroup,
|
|
16
13
|
NUMGroup
|
|
17
14
|
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup);
|
|
18
|
-
const state =
|
|
15
|
+
const state = {
|
|
16
|
+
...defaultState,
|
|
19
17
|
toolType: FreehandRoi.toolType,
|
|
20
18
|
handles: {
|
|
21
19
|
points: [],
|
|
@@ -33,7 +31,7 @@ class FreehandRoi {
|
|
|
33
31
|
},
|
|
34
32
|
color: undefined,
|
|
35
33
|
invalidated: true
|
|
36
|
-
}
|
|
34
|
+
};
|
|
37
35
|
const {
|
|
38
36
|
GraphicData
|
|
39
37
|
} = SCOORDGroup;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Length: TID300Length
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -17,7 +14,8 @@ class Length {
|
|
|
17
14
|
NUMGroup,
|
|
18
15
|
SCOORDGroup
|
|
19
16
|
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup);
|
|
20
|
-
const state =
|
|
17
|
+
const state = {
|
|
18
|
+
...defaultState,
|
|
21
19
|
length: NUMGroup.MeasuredValueSequence.NumericValue,
|
|
22
20
|
toolType: Length.toolType,
|
|
23
21
|
handles: {
|
|
@@ -31,7 +29,7 @@ class Length {
|
|
|
31
29
|
hasBoundingBox: true
|
|
32
30
|
}
|
|
33
31
|
}
|
|
34
|
-
}
|
|
32
|
+
};
|
|
35
33
|
[state.handles.start.x, state.handles.start.y, state.handles.end.x, state.handles.end.y] = SCOORDGroup.GraphicData;
|
|
36
34
|
return state;
|
|
37
35
|
}
|
|
@@ -250,7 +250,7 @@ class MeasurementReport {
|
|
|
250
250
|
const toolClass = hooks.getToolClass ? hooks.getToolClass(measurementGroup, dataset, registeredToolClasses) : registeredToolClasses.find(tc => tc.isValidCornerstoneTrackingIdentifier(TrackingIdentifierValue));
|
|
251
251
|
if (toolClass) {
|
|
252
252
|
const measurement = toolClass.getMeasurementData(measurementGroup);
|
|
253
|
-
console.log(
|
|
253
|
+
console.log(`=== ${toolClass.toolType} ===`);
|
|
254
254
|
console.log(measurement);
|
|
255
255
|
measurementData[toolClass.toolType].push(measurement);
|
|
256
256
|
}
|
|
@@ -35,7 +35,7 @@ async function generateToolState(imageIds, arrayBuffer, metadataProvider) {
|
|
|
35
35
|
Perpendicular: "orthogonal",
|
|
36
36
|
Oblique: "oblique"
|
|
37
37
|
};
|
|
38
|
-
throw new Error(
|
|
38
|
+
throw new Error(`Parametric maps ${orientationText[orientation]} to the acquisition plane of the source data are not yet supported.`);
|
|
39
39
|
}
|
|
40
40
|
const imageIdMaps = imageIds.reduce((acc, curr, index) => {
|
|
41
41
|
acc.indices[curr] = index;
|
|
@@ -81,9 +81,8 @@ function getPixelData(multiframe) {
|
|
|
81
81
|
let TypedArrayClass;
|
|
82
82
|
let data;
|
|
83
83
|
if (multiframe.PixelData) {
|
|
84
|
-
var _multiframe$PixelRepr;
|
|
85
84
|
const validTypedArrays = multiframe.BitsAllocated === 16 ? [Uint16Array, Int16Array] : [Uint32Array, Int32Array];
|
|
86
|
-
TypedArrayClass = validTypedArrays[
|
|
85
|
+
TypedArrayClass = validTypedArrays[multiframe.PixelRepresentation ?? 0];
|
|
87
86
|
data = multiframe.PixelData;
|
|
88
87
|
} else if (multiframe.FloatPixelData) {
|
|
89
88
|
TypedArrayClass = Float32Array;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import CORNERSTONE_4_TAG from './cornerstone4Tag.js';
|
|
5
4
|
|
|
6
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
const {
|
|
9
6
|
Polyline: TID300Polyline
|
|
10
7
|
} = utilities.TID300;
|
|
@@ -15,7 +12,8 @@ class RectangleRoi {
|
|
|
15
12
|
SCOORDGroup,
|
|
16
13
|
NUMGroup
|
|
17
14
|
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup);
|
|
18
|
-
const state =
|
|
15
|
+
const state = {
|
|
16
|
+
...defaultState,
|
|
19
17
|
toolType: RectangleRoi.toolType,
|
|
20
18
|
handles: {
|
|
21
19
|
start: {},
|
|
@@ -35,7 +33,7 @@ class RectangleRoi {
|
|
|
35
33
|
},
|
|
36
34
|
color: undefined,
|
|
37
35
|
invalidated: true
|
|
38
|
-
}
|
|
36
|
+
};
|
|
39
37
|
const intermediate = {};
|
|
40
38
|
[state.handles.start.x, state.handles.start.y, intermediate.x, intermediate.y, state.handles.end.x, state.handles.end.y] = SCOORDGroup.GraphicData;
|
|
41
39
|
return state;
|
|
@@ -21,7 +21,7 @@ function generateSegmentation(images, labelmaps3DorBrushData) {
|
|
|
21
21
|
if (cornerstoneToolsVersion === 3) {
|
|
22
22
|
return Segmentation$1.generateSegmentation(images, labelmaps3DorBrushData, options);
|
|
23
23
|
}
|
|
24
|
-
console.warn(
|
|
24
|
+
console.warn(`No generateSegmentation adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -48,7 +48,7 @@ function generateToolState(imageIds, arrayBuffer, metadataProvider) {
|
|
|
48
48
|
if (cornerstoneToolsVersion === 3) {
|
|
49
49
|
return Segmentation$1.generateToolState(imageIds, arrayBuffer, metadataProvider);
|
|
50
50
|
}
|
|
51
|
-
console.warn(
|
|
51
|
+
console.warn(`No generateToolState adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
@@ -67,7 +67,7 @@ function fillSegmentation(segmentation, inputLabelmaps3D) {
|
|
|
67
67
|
if (cornerstoneToolsVersion === 4) {
|
|
68
68
|
return Segmentation.fillSegmentation(segmentation, inputLabelmaps3D, options);
|
|
69
69
|
}
|
|
70
|
-
console.warn(
|
|
70
|
+
console.warn(`No generateSegmentation adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
export { fillSegmentation, generateSegmentation, generateToolState };
|
|
@@ -33,7 +33,7 @@ class Angle extends BaseAdapter3D {
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
cachedStats: {
|
|
36
|
-
[
|
|
36
|
+
[`imageId:${referencedImageId}`]: {
|
|
37
37
|
angle: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : null
|
|
38
38
|
}
|
|
39
39
|
},
|
|
@@ -76,7 +76,7 @@ class Angle extends BaseAdapter3D {
|
|
|
76
76
|
};
|
|
77
77
|
const {
|
|
78
78
|
angle
|
|
79
|
-
} = cachedStats[
|
|
79
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
80
80
|
return {
|
|
81
81
|
point1,
|
|
82
82
|
point2,
|
|
@@ -5,23 +5,23 @@ class BaseAdapter3D {
|
|
|
5
5
|
static init(toolType, representation, options) {
|
|
6
6
|
this.toolType = toolType;
|
|
7
7
|
if (BaseAdapter3D.toolType) {
|
|
8
|
-
throw new Error(
|
|
8
|
+
throw new Error(`Base adapter tool type set to ${this.toolType} while setting ${toolType}`);
|
|
9
9
|
}
|
|
10
|
-
this.parentType = options
|
|
10
|
+
this.parentType = options?.parentType;
|
|
11
11
|
this.trackingIdentifiers = new Set();
|
|
12
12
|
this.TID300Representation = representation;
|
|
13
13
|
if (this.parentType) {
|
|
14
|
-
this.trackingIdentifierTextValue =
|
|
15
|
-
const alternateTrackingIdentifier =
|
|
14
|
+
this.trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${this.parentType}:${this.toolType}`;
|
|
15
|
+
const alternateTrackingIdentifier = `${CORNERSTONE_3D_TAG}:${this.toolType}`;
|
|
16
16
|
this.trackingIdentifiers.add(alternateTrackingIdentifier);
|
|
17
17
|
} else {
|
|
18
|
-
this.trackingIdentifierTextValue =
|
|
18
|
+
this.trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${toolType}`;
|
|
19
19
|
}
|
|
20
20
|
this.trackingIdentifiers.add(this.trackingIdentifierTextValue);
|
|
21
21
|
MeasurementReport.registerTool(this);
|
|
22
22
|
}
|
|
23
23
|
static registerLegacy() {
|
|
24
|
-
this.trackingIdentifiers.add(
|
|
24
|
+
this.trackingIdentifiers.add(`cornerstoneTools@^4.0.0:${this.toolType}`);
|
|
25
25
|
}
|
|
26
26
|
static registerSubType(adapter, toolType, replace) {
|
|
27
27
|
const subAdapter = Object.create(adapter);
|
|
@@ -48,7 +48,7 @@ class BaseAdapter3D {
|
|
|
48
48
|
state.annotation.data = {
|
|
49
49
|
cachedStats: {},
|
|
50
50
|
frameNumber: ReferencedFrameNumber,
|
|
51
|
-
seriesLevel:
|
|
51
|
+
seriesLevel: trackingIdentifier?.indexOf(":Series") > 0
|
|
52
52
|
};
|
|
53
53
|
return state;
|
|
54
54
|
}
|
|
@@ -44,7 +44,7 @@ class Bidirectional extends BaseAdapter3D {
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
cachedStats: {
|
|
47
|
-
[
|
|
47
|
+
[`imageId:${referencedImageId}`]: {
|
|
48
48
|
length: longAxisNUMGroup.MeasuredValueSequence.NumericValue,
|
|
49
49
|
width: shortAxisNUMGroup.MeasuredValueSequence.NumericValue
|
|
50
50
|
}
|
|
@@ -73,7 +73,7 @@ class Bidirectional extends BaseAdapter3D {
|
|
|
73
73
|
const {
|
|
74
74
|
length,
|
|
75
75
|
width
|
|
76
|
-
} = cachedStats[
|
|
76
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
77
77
|
const {
|
|
78
78
|
points
|
|
79
79
|
} = handles;
|
|
@@ -33,7 +33,7 @@ class CircleROI extends BaseAdapter3D {
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
cachedStats: {
|
|
36
|
-
[
|
|
36
|
+
[`imageId:${referencedImageId}`]: {
|
|
37
37
|
area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0,
|
|
38
38
|
radius: 0,
|
|
39
39
|
perimeter: 0
|
|
@@ -74,7 +74,7 @@ class CircleROI extends BaseAdapter3D {
|
|
|
74
74
|
const {
|
|
75
75
|
area,
|
|
76
76
|
radius
|
|
77
|
-
} = cachedStats[
|
|
77
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
78
78
|
const perimeter = 2 * Math.PI * radius;
|
|
79
79
|
return {
|
|
80
80
|
area,
|
|
@@ -33,7 +33,7 @@ class CobbAngle extends BaseAdapter3D {
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
cachedStats: {
|
|
36
|
-
[
|
|
36
|
+
[`imageId:${referencedImageId}`]: {
|
|
37
37
|
angle: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : null
|
|
38
38
|
}
|
|
39
39
|
},
|
|
@@ -80,7 +80,7 @@ class CobbAngle extends BaseAdapter3D {
|
|
|
80
80
|
};
|
|
81
81
|
const {
|
|
82
82
|
angle
|
|
83
|
-
} = cachedStats[
|
|
83
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
84
84
|
return {
|
|
85
85
|
point1,
|
|
86
86
|
point2,
|
|
@@ -65,7 +65,7 @@ class EllipticalROI extends BaseAdapter3D {
|
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
cachedStats: {
|
|
68
|
-
[
|
|
68
|
+
[`imageId:${referencedImageId}`]: {
|
|
69
69
|
area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0
|
|
70
70
|
}
|
|
71
71
|
},
|
|
@@ -143,7 +143,7 @@ class EllipticalROI extends BaseAdapter3D {
|
|
|
143
143
|
}
|
|
144
144
|
const {
|
|
145
145
|
area
|
|
146
|
-
} = cachedStats[
|
|
146
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
147
147
|
return {
|
|
148
148
|
area,
|
|
149
149
|
points,
|
|
@@ -42,8 +42,8 @@ _KeyImage = KeyImage;
|
|
|
42
42
|
_KeyImage.init("KeyImage", TID300Point, {
|
|
43
43
|
parentType: Probe.toolType
|
|
44
44
|
});
|
|
45
|
-
_KeyImage.trackingSeriesIdentifier =
|
|
46
|
-
_KeyImage.trackingPointIdentifier =
|
|
47
|
-
_KeyImage.trackingSeriesPointIdentifier =
|
|
45
|
+
_KeyImage.trackingSeriesIdentifier = `${_KeyImage.trackingIdentifierTextValue}:Series`;
|
|
46
|
+
_KeyImage.trackingPointIdentifier = `${_KeyImage.trackingIdentifierTextValue}:Point`;
|
|
47
|
+
_KeyImage.trackingSeriesPointIdentifier = `${_KeyImage.trackingIdentifierTextValue}:SeriesPoint`;
|
|
48
48
|
|
|
49
49
|
export { KeyImage, KeyImage as default };
|
|
@@ -34,7 +34,7 @@ class Length extends BaseAdapter3D {
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
cachedStats: {
|
|
37
|
-
[
|
|
37
|
+
[`imageId:${referencedImageId}`]: {
|
|
38
38
|
length: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0
|
|
39
39
|
}
|
|
40
40
|
},
|
|
@@ -71,7 +71,7 @@ class Length extends BaseAdapter3D {
|
|
|
71
71
|
};
|
|
72
72
|
const {
|
|
73
73
|
length: distance
|
|
74
|
-
} = cachedStats[
|
|
74
|
+
} = cachedStats[`imageId:${referencedImageId}`] || {};
|
|
75
75
|
return {
|
|
76
76
|
point1,
|
|
77
77
|
point2,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities, derivations, normalizers, data } from 'dcmjs';
|
|
3
2
|
import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
|
|
4
3
|
import { toArray } from '../helpers/toArray.js';
|
|
@@ -7,8 +6,6 @@ import 'buffer';
|
|
|
7
6
|
import CodingScheme from './CodingScheme.js';
|
|
8
7
|
|
|
9
8
|
var _MeasurementReport;
|
|
10
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
9
|
const {
|
|
13
10
|
TID1500,
|
|
14
11
|
addAccessors
|
|
@@ -188,9 +185,10 @@ class MeasurementReport {
|
|
|
188
185
|
TID1501MeasurementGroups: allMeasurementGroups
|
|
189
186
|
}, options);
|
|
190
187
|
const report = new StructuredReport(derivationSourceDatasets, options);
|
|
191
|
-
const contentItem = tid1500MeasurementReport.contentItem(derivationSourceDatasets,
|
|
188
|
+
const contentItem = tid1500MeasurementReport.contentItem(derivationSourceDatasets, {
|
|
189
|
+
...options,
|
|
192
190
|
sopInstanceUIDsToSeriesInstanceUIDMap
|
|
193
|
-
})
|
|
191
|
+
});
|
|
194
192
|
report.dataset = Object.assign(report.dataset, contentItem);
|
|
195
193
|
report.dataset._meta = _meta;
|
|
196
194
|
report.SpecificCharacterSet = "ISO_IR 192";
|
|
@@ -209,22 +207,20 @@ class MeasurementReport {
|
|
|
209
207
|
const measurementData = {};
|
|
210
208
|
measurementGroups.forEach(measurementGroup => {
|
|
211
209
|
try {
|
|
212
|
-
var _hooks$getToolClass;
|
|
213
210
|
const measurementGroupContentSequence = toArray(measurementGroup.ContentSequence);
|
|
214
211
|
const trackingIdentifierGroup = measurementGroupContentSequence.find(contentItem => contentItem.ConceptNameCodeSequence.CodeMeaning === TRACKING_IDENTIFIER);
|
|
215
212
|
const {
|
|
216
213
|
TextValue: trackingIdentifierValue
|
|
217
214
|
} = trackingIdentifierGroup;
|
|
218
215
|
const trackingUniqueIdentifierGroup = measurementGroupContentSequence.find(contentItem => contentItem.ConceptNameCodeSequence.CodeMeaning === TRACKING_UNIQUE_IDENTIFIER);
|
|
219
|
-
const trackingUniqueIdentifierValue = trackingUniqueIdentifierGroup
|
|
220
|
-
const toolAdapter =
|
|
216
|
+
const trackingUniqueIdentifierValue = trackingUniqueIdentifierGroup?.UID;
|
|
217
|
+
const toolAdapter = hooks?.getToolClass?.(measurementGroup, dataset, this.measurementAdapterByToolType) || this.getAdapterForTrackingIdentifier(trackingIdentifierValue);
|
|
221
218
|
if (toolAdapter) {
|
|
222
|
-
var _toolAdapter$toolType;
|
|
223
219
|
const measurement = toolAdapter.getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata, trackingIdentifierValue);
|
|
224
220
|
measurement.TrackingUniqueIdentifier = trackingUniqueIdentifierValue;
|
|
225
|
-
console.log(
|
|
221
|
+
console.log(`=== ${toolAdapter.toolType} ===`);
|
|
226
222
|
console.log(measurement);
|
|
227
|
-
measurementData[
|
|
223
|
+
measurementData[toolAdapter.toolType] ||= [];
|
|
228
224
|
measurementData[toolAdapter.toolType].push(measurement);
|
|
229
225
|
}
|
|
230
226
|
} catch (e) {
|
|
@@ -238,7 +234,7 @@ class MeasurementReport {
|
|
|
238
234
|
const registerName = toolAdapter.toolType;
|
|
239
235
|
if (this.measurementAdapterByToolType.has(registerName)) {
|
|
240
236
|
if (!replace) {
|
|
241
|
-
throw new Error(
|
|
237
|
+
throw new Error(`The registered tool name ${registerName} already exists in adapters, use a different toolType or use replace`);
|
|
242
238
|
}
|
|
243
239
|
if (typeof replace === "function") {
|
|
244
240
|
replace(this.measurementAdapterByToolType.get(registerName));
|
|
@@ -290,10 +286,11 @@ _MeasurementReport.generateDerivationSourceDataset = instance => {
|
|
|
290
286
|
PixelData: "OW"
|
|
291
287
|
};
|
|
292
288
|
const _meta = _MeasurementReport.generateDatasetMeta();
|
|
293
|
-
const derivationSourceDataset =
|
|
289
|
+
const derivationSourceDataset = {
|
|
290
|
+
...instance,
|
|
294
291
|
_meta: _meta,
|
|
295
292
|
_vrMap: _vrMap
|
|
296
|
-
}
|
|
293
|
+
};
|
|
297
294
|
return derivationSourceDataset;
|
|
298
295
|
};
|
|
299
296
|
|
|
@@ -48,7 +48,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
cachedStats: {
|
|
51
|
-
[
|
|
51
|
+
[`imageId:${referencedImageId}`]: {
|
|
52
52
|
area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : null
|
|
53
53
|
}
|
|
54
54
|
},
|
|
@@ -87,7 +87,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
87
87
|
mean,
|
|
88
88
|
max,
|
|
89
89
|
stdDev
|
|
90
|
-
} = data.cachedStats[
|
|
90
|
+
} = data.cachedStats[`imageId:${referencedImageId}`] || {};
|
|
91
91
|
return {
|
|
92
92
|
points,
|
|
93
93
|
area,
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from 'dcmjs';
|
|
3
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
3
|
import BaseAdapter3D from './BaseAdapter3D.js';
|
|
5
4
|
|
|
6
5
|
var _Probe;
|
|
7
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
9
6
|
const {
|
|
10
7
|
Point: TID300Point
|
|
11
8
|
} = utilities.TID300;
|
|
@@ -25,7 +22,8 @@ class Probe extends BaseAdapter3D {
|
|
|
25
22
|
const point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]);
|
|
26
23
|
worldCoords.push(point);
|
|
27
24
|
}
|
|
28
|
-
state.annotation.data =
|
|
25
|
+
state.annotation.data = {
|
|
26
|
+
...state.annotation.data,
|
|
29
27
|
handles: {
|
|
30
28
|
points: worldCoords,
|
|
31
29
|
activeHandleIndex: null,
|
|
@@ -33,7 +31,7 @@ class Probe extends BaseAdapter3D {
|
|
|
33
31
|
hasMoved: false
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
}
|
|
34
|
+
};
|
|
37
35
|
return state;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import _defineProperty from '../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { utilities } from '@cornerstonejs/tools';
|
|
3
2
|
import dcmjs from 'dcmjs';
|
|
4
3
|
import getPatientModule from './utilities/getPatientModule.js';
|
|
@@ -8,8 +7,6 @@ import getRTROIObservationsSequence from './utilities/getRTROIObservationsSequen
|
|
|
8
7
|
import getRTSeriesModule from './utilities/getRTSeriesModule.js';
|
|
9
8
|
import getStructureSetModule from './utilities/getStructureSetModule.js';
|
|
10
9
|
|
|
11
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
10
|
const {
|
|
14
11
|
generateContourSetsFromLabelmap,
|
|
15
12
|
AnnotationToPointData
|
|
@@ -56,7 +53,7 @@ function generateRTSSFromSegmentations(segmentations, metadataProvider, DicomMet
|
|
|
56
53
|
});
|
|
57
54
|
});
|
|
58
55
|
});
|
|
59
|
-
const segLabel = contourSet.label ||
|
|
56
|
+
const segLabel = contourSet.label || `Segment ${segIndex + 1}`;
|
|
60
57
|
const ROIContour = {
|
|
61
58
|
name: segLabel,
|
|
62
59
|
description: segLabel,
|
|
@@ -156,13 +153,14 @@ function _initializeDataset(rtMetadata, imgMetadata, metadataProvider) {
|
|
|
156
153
|
} = metadataProvider.get("generalSeriesModule", imageId);
|
|
157
154
|
const patientModule = getPatientModule(imageId, metadataProvider);
|
|
158
155
|
const rtSeriesModule = getRTSeriesModule(DicomMetaDictionary);
|
|
159
|
-
return
|
|
156
|
+
return {
|
|
160
157
|
StructureSetROISequence: [],
|
|
161
158
|
ROIContourSequence: [],
|
|
162
159
|
RTROIObservationsSequence: [],
|
|
163
160
|
ReferencedSeriesSequence: [],
|
|
164
|
-
ReferencedFrameOfReferenceSequence: []
|
|
165
|
-
|
|
161
|
+
ReferencedFrameOfReferenceSequence: [],
|
|
162
|
+
...patientModule,
|
|
163
|
+
...rtSeriesModule,
|
|
166
164
|
StudyInstanceUID: studyInstanceUID,
|
|
167
165
|
SOPClassUID: "1.2.840.10008.5.1.4.1.1.481.3",
|
|
168
166
|
SOPInstanceUID: rtSOPInstanceUID,
|
|
@@ -177,7 +175,7 @@ function _initializeDataset(rtMetadata, imgMetadata, metadataProvider) {
|
|
|
177
175
|
StructureSetDate: DicomMetaDictionary.date(),
|
|
178
176
|
StructureSetTime: DicomMetaDictionary.time(),
|
|
179
177
|
_meta: null
|
|
180
|
-
}
|
|
178
|
+
};
|
|
181
179
|
}
|
|
182
180
|
|
|
183
181
|
export { generateRTSSFromAnnotations, generateRTSSFromSegmentations };
|
|
@@ -4,8 +4,8 @@ function getStructureSetModule(contour, index) {
|
|
|
4
4
|
} = contour.metadata;
|
|
5
5
|
return {
|
|
6
6
|
ROINumber: index + 1,
|
|
7
|
-
ROIName: contour.name ||
|
|
8
|
-
ROIDescription:
|
|
7
|
+
ROIName: contour.name || `Todo: name ${index + 1}`,
|
|
8
|
+
ROIDescription: `Todo: description ${index + 1}`,
|
|
9
9
|
ROIGenerationAlgorithm: "Todo: algorithm",
|
|
10
10
|
ReferencedFrameOfReferenceUID: FrameOfReferenceUID
|
|
11
11
|
};
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import _defineProperty from '../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
|
|
2
1
|
import { normalizers, derivations } from 'dcmjs';
|
|
3
2
|
import { fillSegmentation } from '../../Cornerstone/Segmentation_4X.js';
|
|
4
3
|
|
|
5
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
4
|
const {
|
|
8
5
|
Normalizer
|
|
9
6
|
} = normalizers;
|
|
@@ -18,7 +15,9 @@ function generateSegmentation(images, labelmaps, metadata) {
|
|
|
18
15
|
function _createMultiframeSegmentationFromReferencedImages(images, metadata, options) {
|
|
19
16
|
const datasets = images.map(image => {
|
|
20
17
|
const instance = metadata.get("instance", image.imageId);
|
|
21
|
-
return
|
|
18
|
+
return {
|
|
19
|
+
...image,
|
|
20
|
+
...instance,
|
|
22
21
|
SOPClassUID: instance.SopClassUID || instance.SOPClassUID,
|
|
23
22
|
SOPInstanceUID: instance.SopInstanceUID || instance.SOPInstanceUID,
|
|
24
23
|
PixelData: image.voxelManager.getScalarData(),
|
|
@@ -26,7 +25,7 @@ function _createMultiframeSegmentationFromReferencedImages(images, metadata, opt
|
|
|
26
25
|
PixelData: "OW"
|
|
27
26
|
},
|
|
28
27
|
_meta: {}
|
|
29
|
-
}
|
|
28
|
+
};
|
|
30
29
|
});
|
|
31
30
|
const multiframe = Normalizer.normalizeToDataset(datasets);
|
|
32
31
|
if (!multiframe) {
|
|
@@ -26,7 +26,7 @@ function getDatasetsFromImages(images, isMultiframe, options) {
|
|
|
26
26
|
datasets.push(dataset);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
if (options
|
|
29
|
+
if (options?.SpecificCharacterSet) {
|
|
30
30
|
datasets.forEach(dataset => dataset.SpecificCharacterSet = options.SpecificCharacterSet);
|
|
31
31
|
}
|
|
32
32
|
return Normalizer.normalizeToDataset(datasets);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cornerstonejs/adapters",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Adapters for Cornerstone3D to/from formats including DICOM SR and others",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/esm/index.d.ts",
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"ndarray": "^1.0.19"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
|
-
"@cornerstonejs/core": "^3.
|
|
88
|
-
"@cornerstonejs/tools": "^3.
|
|
87
|
+
"@cornerstonejs/core": "^3.6.0",
|
|
88
|
+
"@cornerstonejs/tools": "^3.6.0"
|
|
89
89
|
},
|
|
90
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "480e48c2a25ce79a4a90be6fe180d1bcdd1b831e"
|
|
91
91
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import _toPropertyKey from './toPropertyKey.js';
|
|
2
|
-
|
|
3
|
-
function _defineProperty(obj, key, value) {
|
|
4
|
-
key = _toPropertyKey(key);
|
|
5
|
-
if (key in obj) {
|
|
6
|
-
Object.defineProperty(obj, key, {
|
|
7
|
-
value: value,
|
|
8
|
-
enumerable: true,
|
|
9
|
-
configurable: true,
|
|
10
|
-
writable: true
|
|
11
|
-
});
|
|
12
|
-
} else {
|
|
13
|
-
obj[key] = value;
|
|
14
|
-
}
|
|
15
|
-
return obj;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { _defineProperty as default };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import _typeof from './typeof.js';
|
|
2
|
-
|
|
3
|
-
function _toPrimitive(input, hint) {
|
|
4
|
-
if (_typeof(input) !== "object" || input === null) return input;
|
|
5
|
-
var prim = input[Symbol.toPrimitive];
|
|
6
|
-
if (prim !== undefined) {
|
|
7
|
-
var res = prim.call(input, hint || "default");
|
|
8
|
-
if (_typeof(res) !== "object") return res;
|
|
9
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
10
|
-
}
|
|
11
|
-
return (hint === "string" ? String : Number)(input);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export { _toPrimitive as default };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
function _typeof(obj) {
|
|
2
|
-
"@babel/helpers - typeof";
|
|
3
|
-
|
|
4
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
5
|
-
return typeof obj;
|
|
6
|
-
} : function (obj) {
|
|
7
|
-
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
8
|
-
}, _typeof(obj);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { _typeof as default };
|