@cornerstonejs/adapters 5.0.0-beta.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/adapters/Cornerstone/Angle.js +23 -16
- package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +14 -19
- package/dist/esm/adapters/Cornerstone/Bidirectional.js +22 -27
- package/dist/esm/adapters/Cornerstone/CircleRoi.js +21 -27
- package/dist/esm/adapters/Cornerstone/CobbAngle.js +23 -16
- package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +20 -26
- package/dist/esm/adapters/Cornerstone/FreehandRoi.js +22 -26
- package/dist/esm/adapters/Cornerstone/Length.js +19 -16
- package/dist/esm/adapters/Cornerstone/MeasurementReport.js +20 -40
- package/dist/esm/adapters/Cornerstone/ParametricMap.js +27 -38
- package/dist/esm/adapters/Cornerstone/RectangleRoi.js +27 -26
- package/dist/esm/adapters/Cornerstone/Segmentation_3X.js +19 -31
- package/dist/esm/adapters/Cornerstone/Segmentation_4X.js +69 -90
- package/dist/esm/adapters/Cornerstone/index.d.ts +11 -11
- package/dist/esm/adapters/Cornerstone3D/Angle.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/Angle.js +19 -26
- package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.js +24 -38
- package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.js +20 -31
- package/dist/esm/adapters/Cornerstone3D/Bidirectional.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +27 -39
- package/dist/esm/adapters/Cornerstone3D/CircleROI.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/CircleROI.js +29 -37
- package/dist/esm/adapters/Cornerstone3D/CobbAngle.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +27 -30
- package/dist/esm/adapters/Cornerstone3D/ControlPointPolyline.d.ts +5 -0
- package/dist/esm/adapters/Cornerstone3D/ControlPointPolyline.js +85 -0
- package/dist/esm/adapters/Cornerstone3D/EllipticalROI.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +27 -35
- package/dist/esm/adapters/Cornerstone3D/KeyImage.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/KeyImage.js +5 -11
- package/dist/esm/adapters/Cornerstone3D/LabelData.d.ts +3 -1
- package/dist/esm/adapters/Cornerstone3D/LabelData.js +41 -33
- package/dist/esm/adapters/Cornerstone3D/Length.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/Length.js +21 -29
- package/dist/esm/adapters/Cornerstone3D/MeasurementReport.d.ts +2 -1
- package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +108 -120
- package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.js +2 -6
- package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.d.ts +11 -1
- package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +58 -44
- package/dist/esm/adapters/Cornerstone3D/Probe.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/Probe.js +21 -32
- package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +14 -30
- package/dist/esm/adapters/Cornerstone3D/RTStruct/index.d.ts +2 -2
- package/dist/esm/adapters/Cornerstone3D/RTStruct/index.js +1 -3
- package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js +1 -3
- package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js +7 -13
- package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +1 -3
- package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +30 -32
- package/dist/esm/adapters/Cornerstone3D/Segmentation/compactMergeSegData.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/Segmentation/compactMergeSegData.js +5 -9
- package/dist/esm/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.js +2 -4
- package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +6 -16
- package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.js +3 -4
- package/dist/esm/adapters/Cornerstone3D/Segmentation/index.d.ts +4 -4
- package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.d.ts +2 -2
- package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.js +147 -179
- package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.d.ts +1 -1
- package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.js +15 -26
- package/dist/esm/adapters/Cornerstone3D/constants/index.d.ts +10 -0
- package/dist/esm/adapters/Cornerstone3D/constants/index.js +12 -2
- package/dist/esm/adapters/Cornerstone3D/metricHandler.js +57 -24
- package/dist/esm/adapters/Cornerstone3D/unitMapper.d.ts +5 -0
- package/dist/esm/adapters/Cornerstone3D/unitMapper.js +16 -0
- package/dist/esm/adapters/VTKjs/Segmentation.js +2 -4
- package/dist/esm/adapters/VTKjs/index.d.ts +1 -1
- package/dist/esm/adapters/enums/index.d.ts +1 -1
- package/dist/esm/adapters/helpers/checkOrientation.js +5 -7
- package/dist/esm/adapters/helpers/downloadDICOMData.js +1 -3
- package/dist/esm/adapters/helpers/getDatasetsFromImages.js +3 -7
- package/dist/esm/adapters/helpers/index.d.ts +9 -9
- package/dist/esm/adapters/helpers/scoordToWorld.d.ts +1 -1
- package/dist/esm/adapters/helpers/scoordToWorld.js +5 -13
- package/dist/esm/adapters/helpers/toPoint3.d.ts +1 -1
- package/dist/esm/adapters/helpers/toPoint3.js +1 -3
- package/dist/esm/adapters/helpers/toScoordType.d.ts +1 -1
- package/dist/esm/adapters/helpers/toScoordType.js +3 -7
- package/dist/esm/adapters/index.d.ts +4 -4
- package/dist/esm/adapters/index.js +3 -2
- package/dist/esm/utilities/createInstance.js +9 -8
- package/dist/esm/utilities/referencedMetadataProvider.d.ts +3 -4
- package/dist/esm/utilities/referencedMetadataProvider.js +8 -14
- package/dist/esm/version.d.ts +1 -1
- package/package.json +13 -9
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -12
- 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,40 +1,47 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import MeasurementReport from './MeasurementReport.js';
|
|
3
|
-
import { utilities } from 'dcmjs';
|
|
4
3
|
import { vec3 } from 'gl-matrix';
|
|
5
4
|
import BaseAdapter3D from './BaseAdapter3D.js';
|
|
6
|
-
import { toScoords } from '../helpers/toScoordType.js';
|
|
7
|
-
import '@cornerstonejs/core';
|
|
8
5
|
import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
|
|
6
|
+
import { toArray } from '../helpers/toArray.js';
|
|
7
|
+
import '../helpers/downloadDICOMData.js';
|
|
8
|
+
import { toScoords } from '../helpers/toScoordType.js';
|
|
9
|
+
import '../helpers/scoordToWorld.js';
|
|
10
|
+
import ControlPointPolyline from './ControlPointPolyline.js';
|
|
11
|
+
import { SPLINE_TYPE_CODE } from './constants/index.js';
|
|
9
12
|
|
|
10
13
|
var _PlanarFreehandROI;
|
|
11
14
|
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
15
|
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
|
-
const {
|
|
14
|
-
Polyline: TID300Polyline
|
|
15
|
-
} = utilities.TID300;
|
|
16
16
|
class PlanarFreehandROI extends BaseAdapter3D {
|
|
17
17
|
static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
var _state$annotation$dat, _state$annotation$dat2, _numSeq$find;
|
|
19
|
+
const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
|
|
20
|
+
state = _MeasurementReport$ge.state,
|
|
21
|
+
NUMGroup = _MeasurementReport$ge.NUMGroup,
|
|
22
|
+
worldCoords = _MeasurementReport$ge.worldCoords,
|
|
23
|
+
referencedImageId = _MeasurementReport$ge.referencedImageId,
|
|
24
|
+
ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
|
|
25
25
|
const distanceBetweenFirstAndLastPoint = vec3.distance(worldCoords[worldCoords.length - 1], worldCoords[0]);
|
|
26
26
|
let isOpenContour = true;
|
|
27
27
|
if (distanceBetweenFirstAndLastPoint < this.closedContourThreshold) {
|
|
28
28
|
worldCoords.pop();
|
|
29
29
|
isOpenContour = false;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
if (isOpenContour) {
|
|
33
|
-
points
|
|
31
|
+
let points = (_state$annotation$dat = (_state$annotation$dat2 = state.annotation.data.handles) === null || _state$annotation$dat2 === void 0 ? void 0 : _state$annotation$dat2.points) !== null && _state$annotation$dat !== void 0 ? _state$annotation$dat : [];
|
|
32
|
+
if (isOpenContour && points.length === 0) {
|
|
33
|
+
points = [worldCoords[0], worldCoords[worldCoords.length - 1]];
|
|
34
34
|
}
|
|
35
35
|
const referencedSOPInstanceUID = state.sopInstanceUid;
|
|
36
36
|
const allNUMGroups = extractAllNUMGroups(MeasurementGroup, referencedSOPInstanceUID);
|
|
37
37
|
const measurementNUMGroups = allNUMGroups[referencedSOPInstanceUID] || {};
|
|
38
|
+
const SPLINE_TYPE = {
|
|
39
|
+
CodingSchemeDesignator: SPLINE_TYPE_CODE.schemeDesignator,
|
|
40
|
+
CodeValue: SPLINE_TYPE_CODE.value
|
|
41
|
+
};
|
|
42
|
+
const numSeq = NUMGroup ? toArray(NUMGroup.ContentSequence) : [];
|
|
43
|
+
const mgContentSeq = toArray(MeasurementGroup.ContentSequence);
|
|
44
|
+
const splineTypeItem = (_numSeq$find = numSeq.find(item => MeasurementReport.codeValueMatch(item, SPLINE_TYPE))) !== null && _numSeq$find !== void 0 ? _numSeq$find : mgContentSeq.find(item => MeasurementReport.codeValueMatch(item, SPLINE_TYPE));
|
|
38
45
|
state.annotation.data = _objectSpread(_objectSpread({}, state.annotation.data), {}, {
|
|
39
46
|
contour: {
|
|
40
47
|
polyline: worldCoords,
|
|
@@ -44,32 +51,33 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
44
51
|
points
|
|
45
52
|
}),
|
|
46
53
|
frameNumber: ReferencedFrameNumber
|
|
54
|
+
}, splineTypeItem && {
|
|
55
|
+
spline: {
|
|
56
|
+
type: splineTypeItem.TextValue
|
|
57
|
+
}
|
|
47
58
|
});
|
|
48
59
|
if (referencedImageId) {
|
|
49
60
|
state.annotation.data.cachedStats = {
|
|
50
|
-
["imageId:".concat(referencedImageId)]: _objectSpread({
|
|
51
|
-
area: NUMGroup
|
|
52
|
-
}, restoreAdditionalMetrics(measurementNUMGroups))
|
|
61
|
+
["imageId:".concat(referencedImageId)]: _objectSpread(_objectSpread({}, !isOpenContour && NUMGroup ? {
|
|
62
|
+
area: NUMGroup.MeasuredValueSequence.NumericValue
|
|
63
|
+
} : {}), restoreAdditionalMetrics(measurementNUMGroups))
|
|
53
64
|
};
|
|
54
65
|
}
|
|
55
66
|
return state;
|
|
56
67
|
}
|
|
57
68
|
static getTID300RepresentationArguments(tool) {
|
|
69
|
+
var _handles$points, _data$spline;
|
|
58
70
|
let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
closed
|
|
68
|
-
} = data.contour;
|
|
71
|
+
const data = tool.data,
|
|
72
|
+
finding = tool.finding,
|
|
73
|
+
findingSites = tool.findingSites,
|
|
74
|
+
metadata = tool.metadata;
|
|
75
|
+
const handles = data.handles;
|
|
76
|
+
const _data$contour = data.contour,
|
|
77
|
+
polyline = _data$contour.polyline,
|
|
78
|
+
closed = _data$contour.closed;
|
|
69
79
|
const isOpenContour = closed !== true;
|
|
70
|
-
const
|
|
71
|
-
referencedImageId
|
|
72
|
-
} = metadata;
|
|
80
|
+
const referencedImageId = metadata.referencedImageId;
|
|
73
81
|
const scoordProps = {
|
|
74
82
|
is3DMeasurement,
|
|
75
83
|
referencedImageId
|
|
@@ -79,18 +87,19 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
79
87
|
const firstPoint = points[0];
|
|
80
88
|
points.push(firstPoint);
|
|
81
89
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
const controlPoints = (handles === null || handles === void 0 || (_handles$points = handles.points) === null || _handles$points === void 0 ? void 0 : _handles$points.length) && toScoords(scoordProps, handles.points);
|
|
91
|
+
const _ref = data.cachedStats["imageId:".concat(referencedImageId)] || {},
|
|
92
|
+
area = _ref.area,
|
|
93
|
+
areaUnit = _ref.areaUnit,
|
|
94
|
+
modalityUnit = _ref.modalityUnit,
|
|
95
|
+
perimeter = _ref.perimeter,
|
|
96
|
+
mean = _ref.mean,
|
|
97
|
+
max = _ref.max,
|
|
98
|
+
stdDev = _ref.stdDev,
|
|
99
|
+
length = _ref.length;
|
|
92
100
|
return {
|
|
93
101
|
points,
|
|
102
|
+
controlPoints,
|
|
94
103
|
area,
|
|
95
104
|
areaUnit,
|
|
96
105
|
perimeter: perimeter !== null && perimeter !== void 0 ? perimeter : length,
|
|
@@ -98,6 +107,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
98
107
|
mean,
|
|
99
108
|
max,
|
|
100
109
|
stdDev,
|
|
110
|
+
splineType: (_data$spline = data.spline) === null || _data$spline === void 0 ? void 0 : _data$spline.type,
|
|
101
111
|
trackingIdentifierTextValue: this.trackingIdentifierTextValue,
|
|
102
112
|
finding,
|
|
103
113
|
findingSites: findingSites || [],
|
|
@@ -108,6 +118,10 @@ class PlanarFreehandROI extends BaseAdapter3D {
|
|
|
108
118
|
}
|
|
109
119
|
_PlanarFreehandROI = PlanarFreehandROI;
|
|
110
120
|
_PlanarFreehandROI.closedContourThreshold = 1e-5;
|
|
111
|
-
|
|
121
|
+
(() => {
|
|
122
|
+
_PlanarFreehandROI.init('PlanarFreehandROI', ControlPointPolyline);
|
|
123
|
+
_PlanarFreehandROI.registerSubType(_PlanarFreehandROI, 'LivewireContour');
|
|
124
|
+
_PlanarFreehandROI.registerSubType(_PlanarFreehandROI, 'SplineROI');
|
|
125
|
+
})();
|
|
112
126
|
|
|
113
127
|
export { PlanarFreehandROI as default };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import BaseAdapter3D from
|
|
1
|
+
import BaseAdapter3D from './BaseAdapter3D';
|
|
2
2
|
declare class Probe extends BaseAdapter3D {
|
|
3
3
|
static isValidMeasurement(measurement: any): boolean;
|
|
4
4
|
static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any, _trackingIdentifier: any): {
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { utilities } from 'dcmjs';
|
|
3
3
|
import MeasurementReport from './MeasurementReport.js';
|
|
4
4
|
import BaseAdapter3D from './BaseAdapter3D.js';
|
|
5
|
+
import '../helpers/downloadDICOMData.js';
|
|
5
6
|
import { toScoords } from '../helpers/toScoordType.js';
|
|
6
|
-
import '
|
|
7
|
+
import '../helpers/scoordToWorld.js';
|
|
7
8
|
|
|
8
9
|
var _Probe;
|
|
9
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; }
|
|
10
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; }
|
|
11
|
-
const
|
|
12
|
-
Point: TID300Point
|
|
13
|
-
} = utilities.TID300;
|
|
12
|
+
const TID300Point = utilities.TID300.Point;
|
|
14
13
|
class Probe extends BaseAdapter3D {
|
|
15
14
|
static isValidMeasurement(measurement) {
|
|
16
15
|
const graphicItem = this.getGraphicItem(measurement);
|
|
17
|
-
return this.getGraphicType(graphicItem) ===
|
|
16
|
+
return this.getGraphicType(graphicItem) === 'POINT' && this.getPointsCount(graphicItem) <= 2;
|
|
18
17
|
}
|
|
19
18
|
static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, _trackingIdentifier) {
|
|
20
19
|
var _NUMGroup$MeasuredVal, _NUMGroup$MeasuredVal2;
|
|
21
|
-
const
|
|
22
|
-
state,
|
|
23
|
-
NUMGroup,
|
|
24
|
-
worldCoords,
|
|
25
|
-
referencedImageId,
|
|
26
|
-
ReferencedFrameNumber
|
|
27
|
-
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
|
|
20
|
+
const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
|
|
21
|
+
state = _MeasurementReport$ge.state,
|
|
22
|
+
NUMGroup = _MeasurementReport$ge.NUMGroup,
|
|
23
|
+
worldCoords = _MeasurementReport$ge.worldCoords,
|
|
24
|
+
referencedImageId = _MeasurementReport$ge.referencedImageId,
|
|
25
|
+
ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
|
|
28
26
|
const cachedStats = referencedImageId ? {
|
|
29
27
|
["imageId:".concat(referencedImageId)]: {
|
|
30
28
|
value: (_NUMGroup$MeasuredVal = NUMGroup === null || NUMGroup === void 0 || (_NUMGroup$MeasuredVal2 = NUMGroup.MeasuredValueSequence) === null || _NUMGroup$MeasuredVal2 === void 0 ? void 0 : _NUMGroup$MeasuredVal2.NumericValue) !== null && _NUMGroup$MeasuredVal !== void 0 ? _NUMGroup$MeasuredVal : null
|
|
@@ -42,26 +40,17 @@ class Probe extends BaseAdapter3D {
|
|
|
42
40
|
}
|
|
43
41
|
static getTID300RepresentationArguments(tool) {
|
|
44
42
|
let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
finding,
|
|
51
|
-
findingSites
|
|
52
|
-
} = tool;
|
|
53
|
-
const {
|
|
54
|
-
referencedImageId
|
|
55
|
-
} = metadata;
|
|
43
|
+
const data = tool.data,
|
|
44
|
+
metadata = tool.metadata;
|
|
45
|
+
const finding = tool.finding,
|
|
46
|
+
findingSites = tool.findingSites;
|
|
47
|
+
const referencedImageId = metadata.referencedImageId;
|
|
56
48
|
const scoordProps = {
|
|
57
49
|
is3DMeasurement,
|
|
58
50
|
referencedImageId
|
|
59
51
|
};
|
|
60
|
-
const
|
|
61
|
-
handles:
|
|
62
|
-
points = []
|
|
63
|
-
}
|
|
64
|
-
} = data;
|
|
52
|
+
const _data$handles$points = data.handles.points,
|
|
53
|
+
points = _data$handles$points === void 0 ? [] : _data$handles$points;
|
|
65
54
|
const pointsImage = toScoords(scoordProps, points);
|
|
66
55
|
return {
|
|
67
56
|
points: pointsImage,
|
|
@@ -75,10 +64,10 @@ class Probe extends BaseAdapter3D {
|
|
|
75
64
|
}
|
|
76
65
|
_Probe = Probe;
|
|
77
66
|
(() => {
|
|
78
|
-
_Probe.init(
|
|
67
|
+
_Probe.init('Probe', TID300Point);
|
|
79
68
|
_Probe.registerLegacy();
|
|
80
|
-
_Probe.registerType(
|
|
81
|
-
_Probe.registerType(
|
|
69
|
+
_Probe.registerType('DCM:111030', 'POINT', 1);
|
|
70
|
+
_Probe.registerType('DCM:111030', 'POINT', 2);
|
|
82
71
|
})();
|
|
83
72
|
|
|
84
73
|
export { Probe as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
2
|
-
import {
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { Enums, metaData } from '@cornerstonejs/core';
|
|
3
3
|
import { utilities, annotation } from '@cornerstonejs/tools';
|
|
4
4
|
import getReferencedFrameOfReferenceSequence from './utilities/getReferencedFrameOfReferenceSequence.js';
|
|
5
5
|
import getReferencedSeriesSequence from './utilities/getReferencedSeriesSequence.js';
|
|
@@ -10,13 +10,10 @@ import { createInstance } from '../../../utilities/createInstance.js';
|
|
|
10
10
|
|
|
11
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
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
|
-
const
|
|
14
|
-
generateContourSetsFromLabelmap,
|
|
15
|
-
AnnotationToPointData
|
|
16
|
-
|
|
17
|
-
const {
|
|
18
|
-
MetadataModules
|
|
19
|
-
} = Enums;
|
|
13
|
+
const _utilities$contours = utilities.contours,
|
|
14
|
+
generateContourSetsFromLabelmap = _utilities$contours.generateContourSetsFromLabelmap,
|
|
15
|
+
AnnotationToPointData = _utilities$contours.AnnotationToPointData;
|
|
16
|
+
const MetadataModules = Enums.MetadataModules;
|
|
20
17
|
function generateRTSSFromSegmentations(segmentation, metadataProvider, _DicomMetadataStore) {
|
|
21
18
|
return generateRTSSFromLabelmap(segmentation, {
|
|
22
19
|
metadataProvider,
|
|
@@ -25,9 +22,8 @@ function generateRTSSFromSegmentations(segmentation, metadataProvider, _DicomMet
|
|
|
25
22
|
}
|
|
26
23
|
async function generateRTSSFromLabelmap(segmentations, options) {
|
|
27
24
|
var _dataset$ReferencedFr;
|
|
28
|
-
const
|
|
29
|
-
metadataProvider = metaData
|
|
30
|
-
} = options;
|
|
25
|
+
const _options$metadataProv = options.metadataProvider,
|
|
26
|
+
metadataProvider = _options$metadataProv === void 0 ? metaData : _options$metadataProv;
|
|
31
27
|
const roiContours = [];
|
|
32
28
|
const contourSets = await generateContourSetsFromLabelmap({
|
|
33
29
|
segmentations
|
|
@@ -37,9 +33,7 @@ async function generateRTSSFromLabelmap(segmentations, options) {
|
|
|
37
33
|
const contourSequence = [];
|
|
38
34
|
contourSet.sliceContours.forEach(sliceContour => {
|
|
39
35
|
const ContourImageSequence = metadataProvider.get('ImageSopInstanceReference', sliceContour.referencedImageId);
|
|
40
|
-
const
|
|
41
|
-
points: polyDataPoints
|
|
42
|
-
} = sliceContour.polyData;
|
|
36
|
+
const polyDataPoints = sliceContour.polyData.points;
|
|
43
37
|
sliceContour.contours.forEach((contour, index) => {
|
|
44
38
|
const ContourGeometricType = contour.type;
|
|
45
39
|
const NumberOfContourPoints = contour.contourPoints.length;
|
|
@@ -92,19 +86,13 @@ function generateRTSSFromAnnotations(segmentations, annotations, options) {
|
|
|
92
86
|
const dataset = _initializeDataset(segmentations, annotations[0].metadata, options);
|
|
93
87
|
const segmentsContour = new Map();
|
|
94
88
|
annotations.forEach((annotation, index) => {
|
|
95
|
-
const
|
|
96
|
-
data: {
|
|
97
|
-
segmentation
|
|
98
|
-
}
|
|
99
|
-
} = annotation;
|
|
89
|
+
const segmentation = annotation.data.segmentation;
|
|
100
90
|
if (!segmentation) {
|
|
101
91
|
console.warn('Annotation is not a segmentation:', annotation);
|
|
102
92
|
return;
|
|
103
93
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
segmentIndex
|
|
107
|
-
} = segmentation;
|
|
94
|
+
const segmentationId = segmentation.segmentationId,
|
|
95
|
+
segmentIndex = segmentation.segmentIndex;
|
|
108
96
|
const key = "".concat(segmentationId, ":").concat(segmentIndex);
|
|
109
97
|
let segmentAnnotation = segmentsContour.get(key);
|
|
110
98
|
if (!segmentAnnotation) {
|
|
@@ -136,9 +124,7 @@ function generateRTSSFromAnnotations(segmentations, annotations, options) {
|
|
|
136
124
|
return dataset;
|
|
137
125
|
}
|
|
138
126
|
function _initializeDataset(segmentation, imgMetadata, options) {
|
|
139
|
-
const
|
|
140
|
-
referencedImageId: studyExemplarImageId
|
|
141
|
-
} = imgMetadata;
|
|
127
|
+
const studyExemplarImageId = imgMetadata.referencedImageId;
|
|
142
128
|
return createInstance(MetadataModules.RTSS_INSTANCE_DATA, studyExemplarImageId, {
|
|
143
129
|
StructureSetLabel: segmentation.label,
|
|
144
130
|
StructureSetName: segmentation.label,
|
|
@@ -147,9 +133,7 @@ function _initializeDataset(segmentation, imgMetadata, options) {
|
|
|
147
133
|
}, options);
|
|
148
134
|
}
|
|
149
135
|
function generateRTSSFromContour(segmentations, options) {
|
|
150
|
-
const
|
|
151
|
-
annotationUIDsMap
|
|
152
|
-
} = segmentations.representationData.Contour;
|
|
136
|
+
const annotationUIDsMap = segmentations.representationData.Contour.annotationUIDsMap;
|
|
153
137
|
const annotations = [];
|
|
154
138
|
for (const annotationSet of annotationUIDsMap.values()) {
|
|
155
139
|
for (const annotationUID of annotationSet.values()) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { utilities } from
|
|
2
|
-
export * from
|
|
1
|
+
import { utilities } from '@cornerstonejs/tools';
|
|
2
|
+
export * from './RTSS';
|
|
3
3
|
declare const generateContourSetsFromLabelmap: typeof utilities.contours.generateContourSetsFromLabelmap;
|
|
4
4
|
export { generateContourSetsFromLabelmap };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { utilities } from '@cornerstonejs/tools';
|
|
2
2
|
export { generateRTSSFromAnnotations, generateRTSSFromContour, generateRTSSFromLabelmap, generateRTSSFromRepresentation, generateRTSSFromSegmentations } from './RTSS.js';
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
generateContourSetsFromLabelmap
|
|
6
|
-
} = utilities.contours;
|
|
4
|
+
const generateContourSetsFromLabelmap = utilities.contours.generateContourSetsFromLabelmap;
|
|
7
5
|
|
|
8
6
|
export { generateContourSetsFromLabelmap };
|
package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
function getReferencedFrameOfReferenceSequence(referencedFrameOfReferenceSequence, metadata, _options) {
|
|
2
|
-
const
|
|
3
|
-
FrameOfReferenceUID
|
|
4
|
-
} = metadata;
|
|
2
|
+
const FrameOfReferenceUID = metadata.FrameOfReferenceUID;
|
|
5
3
|
referencedFrameOfReferenceSequence || (referencedFrameOfReferenceSequence = []);
|
|
6
4
|
let referencedItem = referencedFrameOfReferenceSequence.find(it => it.FrameOfReferenceUID === FrameOfReferenceUID);
|
|
7
5
|
if (!referencedItem) {
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
import { Enums, metaData } from '@cornerstonejs/core';
|
|
2
3
|
|
|
3
|
-
const
|
|
4
|
-
MetadataModules
|
|
5
|
-
} = Enums;
|
|
4
|
+
const MetadataModules = Enums.MetadataModules;
|
|
6
5
|
function getReferencedSeriesSequence(referencedSeriesSequence, metadata, options) {
|
|
7
6
|
const metadataProvider = (options === null || options === void 0 ? void 0 : options.metadataProvider) || metaData;
|
|
8
|
-
const
|
|
9
|
-
referencedImageId: imageId
|
|
10
|
-
} = metadata;
|
|
7
|
+
const imageId = metadata.referencedImageId;
|
|
11
8
|
const newReferenceSeq = metadataProvider.get(MetadataModules.REFERENCED_SERIES_REFERENCE, imageId);
|
|
12
9
|
referencedSeriesSequence || (referencedSeriesSequence = []);
|
|
13
10
|
if (newReferenceSeq) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
ReferencedSOPInstanceUID: newSopUID
|
|
18
|
-
}]
|
|
19
|
-
} = newReferenceSeq;
|
|
11
|
+
const newSeriesUid = newReferenceSeq.ReferencedSeriesInstanceUID,
|
|
12
|
+
_newReferenceSeq$Refe = _slicedToArray(newReferenceSeq.ReferencedInstanceSequence, 1),
|
|
13
|
+
newSopUID = _newReferenceSeq$Refe[0].ReferencedSOPInstanceUID;
|
|
20
14
|
const existingSeries = referencedSeriesSequence.find(it => it.ReferencedSeriesInstanceUID === newSeriesUid);
|
|
21
15
|
if (!existingSeries) {
|
|
22
16
|
referencedSeriesSequence.push(newReferenceSeq);
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { utilities } from 'dcmjs';
|
|
3
|
+
import '../helpers/downloadDICOMData.js';
|
|
3
4
|
import { toScoords } from '../helpers/toScoordType.js';
|
|
4
|
-
import '
|
|
5
|
+
import '../helpers/scoordToWorld.js';
|
|
5
6
|
import MeasurementReport from './MeasurementReport.js';
|
|
6
7
|
import BaseAdapter3D from './BaseAdapter3D.js';
|
|
7
8
|
import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
|
|
9
|
+
import { mapUnitFromUCUM } from './unitMapper.js';
|
|
8
10
|
|
|
9
11
|
var _RectangleROI;
|
|
10
12
|
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
13
|
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
|
-
const
|
|
13
|
-
Polyline: TID300Polyline
|
|
14
|
-
} = utilities.TID300;
|
|
14
|
+
const TID300Polyline = utilities.TID300.Polyline;
|
|
15
15
|
class RectangleROI extends BaseAdapter3D {
|
|
16
16
|
static isValidMeasurement(measurement) {
|
|
17
17
|
const graphicItem = this.getGraphicItem(measurement);
|
|
@@ -20,22 +20,25 @@ class RectangleROI extends BaseAdapter3D {
|
|
|
20
20
|
}
|
|
21
21
|
static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
|
|
22
22
|
var _areaGroup$MeasuredVa, _areaGroup$MeasuredVa2;
|
|
23
|
-
const
|
|
24
|
-
state,
|
|
25
|
-
worldCoords,
|
|
26
|
-
referencedImageId,
|
|
27
|
-
ReferencedFrameNumber
|
|
28
|
-
} = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
|
|
23
|
+
const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
|
|
24
|
+
state = _MeasurementReport$ge.state,
|
|
25
|
+
worldCoords = _MeasurementReport$ge.worldCoords,
|
|
26
|
+
referencedImageId = _MeasurementReport$ge.referencedImageId,
|
|
27
|
+
ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
|
|
29
28
|
const points = worldCoords.length === 5 ? worldCoords.slice(0, 4) : worldCoords;
|
|
30
29
|
const areaGroup = MeasurementGroup.ContentSequence.find(g => g.ValueType === 'NUM' && g.ConceptNameCodeSequence.CodeMeaning === 'Area');
|
|
31
30
|
const referencedSOPInstanceUID = state.sopInstanceUid;
|
|
32
31
|
const allNUMGroups = extractAllNUMGroups(MeasurementGroup, referencedSOPInstanceUID);
|
|
33
32
|
const measurementNUMGroups = allNUMGroups[referencedSOPInstanceUID] || {};
|
|
33
|
+
const restoredMetrics = restoreAdditionalMetrics(measurementNUMGroups);
|
|
34
|
+
const rawAreaUnit = areaGroup === null || areaGroup === void 0 || (_areaGroup$MeasuredVa = areaGroup.MeasuredValueSequence) === null || _areaGroup$MeasuredVa === void 0 || (_areaGroup$MeasuredVa = _areaGroup$MeasuredVa[0]) === null || _areaGroup$MeasuredVa === void 0 ? void 0 : _areaGroup$MeasuredVa.MeasurementUnitsCodeSequence;
|
|
35
|
+
const areaUnitFromSR = rawAreaUnit === null || rawAreaUnit === void 0 ? void 0 : rawAreaUnit.CodeValue;
|
|
36
|
+
const mappedAreaUnit = areaUnitFromSR ? mapUnitFromUCUM(areaUnitFromSR) : restoredMetrics.areaUnit;
|
|
34
37
|
const cachedStats = referencedImageId ? {
|
|
35
38
|
["imageId:".concat(referencedImageId)]: _objectSpread({
|
|
36
|
-
area: (areaGroup === null || areaGroup === void 0 || (_areaGroup$
|
|
37
|
-
areaUnit:
|
|
38
|
-
},
|
|
39
|
+
area: (areaGroup === null || areaGroup === void 0 || (_areaGroup$MeasuredVa2 = areaGroup.MeasuredValueSequence) === null || _areaGroup$MeasuredVa2 === void 0 || (_areaGroup$MeasuredVa2 = _areaGroup$MeasuredVa2[0]) === null || _areaGroup$MeasuredVa2 === void 0 ? void 0 : _areaGroup$MeasuredVa2.NumericValue) || 0,
|
|
40
|
+
areaUnit: mappedAreaUnit
|
|
41
|
+
}, restoredMetrics)
|
|
39
42
|
} : {};
|
|
40
43
|
const handlesPoints = [points[0], points[1], points[3], points[2]];
|
|
41
44
|
state.annotation.data = _objectSpread(_objectSpread({}, state.annotation.data), {}, {
|
|
@@ -49,29 +52,24 @@ class RectangleROI extends BaseAdapter3D {
|
|
|
49
52
|
}
|
|
50
53
|
static getTID300RepresentationArguments(tool) {
|
|
51
54
|
let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
} = tool;
|
|
58
|
-
const {
|
|
59
|
-
referencedImageId
|
|
60
|
-
} = metadata;
|
|
55
|
+
const data = tool.data,
|
|
56
|
+
finding = tool.finding,
|
|
57
|
+
findingSites = tool.findingSites,
|
|
58
|
+
metadata = tool.metadata;
|
|
59
|
+
const referencedImageId = metadata.referencedImageId;
|
|
61
60
|
const scoordProps = {
|
|
62
61
|
is3DMeasurement,
|
|
63
62
|
referencedImageId
|
|
64
63
|
};
|
|
65
64
|
const corners = toScoords(scoordProps, data.handles.points);
|
|
66
|
-
const {
|
|
67
|
-
area,
|
|
68
|
-
perimeter,
|
|
69
|
-
max,
|
|
70
|
-
mean,
|
|
71
|
-
stdDev,
|
|
72
|
-
areaUnit,
|
|
73
|
-
modalityUnit
|
|
74
|
-
} = data.cachedStats["imageId:".concat(referencedImageId)] || {};
|
|
65
|
+
const _ref = data.cachedStats["imageId:".concat(referencedImageId)] || {},
|
|
66
|
+
area = _ref.area,
|
|
67
|
+
perimeter = _ref.perimeter,
|
|
68
|
+
max = _ref.max,
|
|
69
|
+
mean = _ref.mean,
|
|
70
|
+
stdDev = _ref.stdDev,
|
|
71
|
+
areaUnit = _ref.areaUnit,
|
|
72
|
+
modalityUnit = _ref.modalityUnit;
|
|
75
73
|
return {
|
|
76
74
|
points: [corners[0], corners[1], corners[3], corners[2], corners[0]],
|
|
77
75
|
area,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const compactMergeSegmentDataWithoutInformationLoss: ({ arrayOfSegmentData, newSegmentData }: {
|
|
1
|
+
export declare const compactMergeSegmentDataWithoutInformationLoss: ({ arrayOfSegmentData, newSegmentData, }: {
|
|
2
2
|
arrayOfSegmentData: any;
|
|
3
3
|
newSegmentData: any;
|
|
4
4
|
}) => void;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
const checkHasOverlapping = _ref => {
|
|
2
|
-
let
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
newArray
|
|
6
|
-
} = _ref;
|
|
2
|
+
let largerArray = _ref.largerArray,
|
|
3
|
+
currentTestedArray = _ref.currentTestedArray,
|
|
4
|
+
newArray = _ref.newArray;
|
|
7
5
|
return largerArray.some((_, currentImageIndex) => {
|
|
8
6
|
const originalImagePixelData = currentTestedArray[currentImageIndex];
|
|
9
7
|
const newImagePixelData = newArray[currentImageIndex];
|
|
@@ -17,10 +15,8 @@ const checkHasOverlapping = _ref => {
|
|
|
17
15
|
});
|
|
18
16
|
};
|
|
19
17
|
const compactMergeSegmentDataWithoutInformationLoss = _ref2 => {
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
newSegmentData
|
|
23
|
-
} = _ref2;
|
|
18
|
+
let arrayOfSegmentData = _ref2.arrayOfSegmentData,
|
|
19
|
+
newSegmentData = _ref2.newSegmentData;
|
|
24
20
|
if (arrayOfSegmentData.length === 0) {
|
|
25
21
|
arrayOfSegmentData.push(newSegmentData);
|
|
26
22
|
return;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
function generateLabelMaps2DFrom3D(labelmap3D) {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
dimensions
|
|
5
|
-
} = labelmap3D;
|
|
2
|
+
const scalarData = labelmap3D.scalarData,
|
|
3
|
+
dimensions = labelmap3D.dimensions;
|
|
6
4
|
const labelmaps2D = [];
|
|
7
5
|
const segmentsOnLabelmap3D = new Set();
|
|
8
6
|
for (let z = 0; z < dimensions[2]; z++) {
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { normalizers, derivations } from 'dcmjs';
|
|
3
3
|
import { Enums } from '@cornerstonejs/core';
|
|
4
4
|
import { fillSegmentation } from '../../Cornerstone/Segmentation_4X.js';
|
|
5
5
|
|
|
6
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
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
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const {
|
|
12
|
-
SEGImageNormalizer
|
|
13
|
-
} = normalizers;
|
|
14
|
-
const {
|
|
15
|
-
Segmentation: SegmentationDerivation
|
|
16
|
-
} = derivations;
|
|
8
|
+
const MetadataModules = Enums.MetadataModules;
|
|
9
|
+
const SEGImageNormalizer = normalizers.SEGImageNormalizer;
|
|
10
|
+
const SegmentationDerivation = derivations.Segmentation;
|
|
17
11
|
function generateSegmentation(images, labelmaps, metadata) {
|
|
18
12
|
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
19
13
|
const segmentation = _createMultiframeSegmentationFromReferencedImages(images, metadata, options);
|
|
@@ -29,9 +23,7 @@ function _createMultiframeSegmentationFromReferencedImages(images, metadata, opt
|
|
|
29
23
|
const studyImageId = (options === null || options === void 0 ? void 0 : options.predecessorImageId) || images[0].imageId;
|
|
30
24
|
const studyData = metadata.get(MetadataModules.STUDY_DATA, studyImageId);
|
|
31
25
|
const datasets = images.map(image => {
|
|
32
|
-
const
|
|
33
|
-
imageId
|
|
34
|
-
} = image;
|
|
26
|
+
const imageId = image.imageId;
|
|
35
27
|
const seriesData = metadata.get(MetadataModules.SERIES_DATA, imageId);
|
|
36
28
|
const imageData = metadata.get(MetadataModules.IMAGE_DATA, imageId);
|
|
37
29
|
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, studyData), seriesData), imageData), {}, {
|
|
@@ -49,9 +41,7 @@ function _createMultiframeSegmentationFromReferencedImages(images, metadata, opt
|
|
|
49
41
|
}
|
|
50
42
|
const normalizer = new SEGImageNormalizer(datasets);
|
|
51
43
|
normalizer.normalize();
|
|
52
|
-
const
|
|
53
|
-
dataset: multiframe
|
|
54
|
-
} = normalizer;
|
|
44
|
+
const multiframe = normalizer.dataset;
|
|
55
45
|
if (!multiframe) {
|
|
56
46
|
throw new Error('Failed to normalize the multiframe dataset, the data is not multi-frame.');
|
|
57
47
|
}
|
|
@@ -8,10 +8,9 @@ function generateToolState(imageIds, arrayBuffer, metadataProvider) {
|
|
|
8
8
|
return generateToolState$1(imageIds, arrayBuffer, metadataProvider, skipOverlapping, tolerance, cs3dVersion);
|
|
9
9
|
}
|
|
10
10
|
function createFromDICOMSegBuffer(referencedImageIds, arrayBuffer, _ref) {
|
|
11
|
-
let
|
|
12
|
-
|
|
13
|
-
tolerance = 1e-3
|
|
14
|
-
} = _ref;
|
|
11
|
+
let metadataProvider = _ref.metadataProvider,
|
|
12
|
+
_ref$tolerance = _ref.tolerance,
|
|
13
|
+
tolerance = _ref$tolerance === void 0 ? 1e-3 : _ref$tolerance;
|
|
15
14
|
return createLabelmapsFromBufferInternal(referencedImageIds, arrayBuffer, metadataProvider, {
|
|
16
15
|
tolerance
|
|
17
16
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { generateSegmentation } from
|
|
2
|
-
import { generateLabelMaps2DFrom3D } from
|
|
3
|
-
import { generateToolState, createFromDICOMSegBuffer } from
|
|
4
|
-
export { generateLabelMaps2DFrom3D, generateSegmentation, generateToolState, createFromDICOMSegBuffer };
|
|
1
|
+
import { generateSegmentation } from './generateSegmentation';
|
|
2
|
+
import { generateLabelMaps2DFrom3D } from './generateLabelMaps2DFrom3D';
|
|
3
|
+
import { generateToolState, createFromDICOMSegBuffer } from './generateToolState';
|
|
4
|
+
export { generateLabelMaps2DFrom3D, generateSegmentation, generateToolState, createFromDICOMSegBuffer, };
|