@cornerstonejs/adapters 5.0.0-beta.1 → 5.0.1
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
|
@@ -8,7 +8,7 @@ declare function createLabelmapsFromBufferInternal(referencedImageIds: any, arra
|
|
|
8
8
|
centroids: Map<any, any>;
|
|
9
9
|
overlappingSegments: any;
|
|
10
10
|
}>;
|
|
11
|
-
export declare function insertPixelDataPlanar({ segmentsOnFrame, labelMapImages, pixelDataChunks, multiframe, referencedImageIds, validOrientations, metadataProvider, tolerance, segmentsPixelIndices, sopUIDImageIdIndexMap, imageIdMaps }: {
|
|
11
|
+
export declare function insertPixelDataPlanar({ segmentsOnFrame, labelMapImages, pixelDataChunks, multiframe, referencedImageIds, validOrientations, metadataProvider, tolerance, segmentsPixelIndices, sopUIDImageIdIndexMap, imageIdMaps, }: {
|
|
12
12
|
segmentsOnFrame: any;
|
|
13
13
|
labelMapImages: any;
|
|
14
14
|
pixelDataChunks: any;
|
|
@@ -21,7 +21,7 @@ export declare function insertPixelDataPlanar({ segmentsOnFrame, labelMapImages,
|
|
|
21
21
|
sopUIDImageIdIndexMap: any;
|
|
22
22
|
imageIdMaps: any;
|
|
23
23
|
}): Promise<unknown>;
|
|
24
|
-
export declare function insertOverlappingPixelDataPlanar({ segmentsOnFrame, labelMapImages, pixelDataChunks, multiframe, referencedImageIds, validOrientations, metadataProvider, tolerance, segmentsPixelIndices, sopUIDImageIdIndexMap, imageIdMaps }: {
|
|
24
|
+
export declare function insertOverlappingPixelDataPlanar({ segmentsOnFrame, labelMapImages, pixelDataChunks, multiframe, referencedImageIds, validOrientations, metadataProvider, tolerance, segmentsPixelIndices, sopUIDImageIdIndexMap, imageIdMaps, }: {
|
|
25
25
|
segmentsOnFrame: any;
|
|
26
26
|
labelMapImages: any;
|
|
27
27
|
pixelDataChunks: any;
|
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
import { triggerEvent, eventTarget, imageLoader } from '@cornerstonejs/core';
|
|
2
2
|
import { utilities as utilities$1 } from '@cornerstonejs/tools';
|
|
3
|
-
import {
|
|
3
|
+
import { data, normalizers, utilities } from 'dcmjs';
|
|
4
4
|
import ndarray from 'ndarray';
|
|
5
5
|
import checkOrientation from '../../helpers/checkOrientation.js';
|
|
6
6
|
import { getValidOrientations, getSegmentMetadata, unpackPixelData, calculateCentroid, readFromUnpackedChunks, alignPixelDataWithSourceData, getSegmentIndex, findReferenceSourceImageId } from '../../Cornerstone/Segmentation_4X.js';
|
|
7
7
|
import { compactMergeSegmentDataWithoutInformationLoss } from './compactMergeSegData.js';
|
|
8
8
|
import { Events } from '../../enums/Events.js';
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const {
|
|
15
|
-
Normalizer
|
|
16
|
-
} = normalizers;
|
|
17
|
-
const {
|
|
18
|
-
decode
|
|
19
|
-
} = utilities.compression;
|
|
10
|
+
const DicomMessage = data.DicomMessage,
|
|
11
|
+
DicomMetaDictionary = data.DicomMetaDictionary;
|
|
12
|
+
const Normalizer = normalizers.Normalizer;
|
|
13
|
+
const decode = utilities.compression.decode;
|
|
20
14
|
const updateSegmentsOnFrame = _ref => {
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
segmentIndex
|
|
25
|
-
} = _ref;
|
|
15
|
+
let segmentsOnFrame = _ref.segmentsOnFrame,
|
|
16
|
+
imageIdIndex = _ref.imageIdIndex,
|
|
17
|
+
segmentIndex = _ref.segmentIndex;
|
|
26
18
|
if (!segmentsOnFrame[imageIdIndex]) {
|
|
27
19
|
segmentsOnFrame[imageIdIndex] = [];
|
|
28
20
|
}
|
|
29
21
|
segmentsOnFrame[imageIdIndex].push(segmentIndex);
|
|
30
22
|
};
|
|
31
23
|
const updateSegmentsPixelIndices = _ref2 => {
|
|
32
|
-
let
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
indexCache
|
|
37
|
-
} = _ref2;
|
|
24
|
+
let segmentsPixelIndices = _ref2.segmentsPixelIndices,
|
|
25
|
+
segmentIndex = _ref2.segmentIndex,
|
|
26
|
+
imageIdIndex = _ref2.imageIdIndex,
|
|
27
|
+
indexCache = _ref2.indexCache;
|
|
38
28
|
if (!segmentsPixelIndices.has(segmentIndex)) {
|
|
39
29
|
segmentsPixelIndices.set(segmentIndex, {});
|
|
40
30
|
}
|
|
@@ -43,12 +33,10 @@ const updateSegmentsPixelIndices = _ref2 => {
|
|
|
43
33
|
segmentsPixelIndices.set(segmentIndex, segmentIndexObject);
|
|
44
34
|
};
|
|
45
35
|
const extractInfoFromPerFrameFunctionalGroups = _ref3 => {
|
|
46
|
-
let
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
multiframe
|
|
51
|
-
} = _ref3;
|
|
36
|
+
let PerFrameFunctionalGroups = _ref3.PerFrameFunctionalGroups,
|
|
37
|
+
sequenceIndex = _ref3.sequenceIndex,
|
|
38
|
+
sopUIDImageIdIndexMap = _ref3.sopUIDImageIdIndexMap,
|
|
39
|
+
multiframe = _ref3.multiframe;
|
|
52
40
|
const referencedSOPInstanceUid = PerFrameFunctionalGroups.DerivationImageSequence[0].SourceImageSequence[0].ReferencedSOPInstanceUID;
|
|
53
41
|
const referencedImageId = sopUIDImageIdIndexMap[referencedSOPInstanceUid];
|
|
54
42
|
const segmentIndex = getSegmentIndex(multiframe, sequenceIndex);
|
|
@@ -59,20 +47,21 @@ const extractInfoFromPerFrameFunctionalGroups = _ref3 => {
|
|
|
59
47
|
};
|
|
60
48
|
};
|
|
61
49
|
async function createLabelmapsFromBufferInternal(referencedImageIds, arrayBuffer, metadataProvider, options) {
|
|
62
|
-
const
|
|
63
|
-
tolerance = 1e-3,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
50
|
+
const _options$tolerance = options.tolerance,
|
|
51
|
+
tolerance = _options$tolerance === void 0 ? 1e-3 : _options$tolerance,
|
|
52
|
+
_options$TypedArrayCo = options.TypedArrayConstructor,
|
|
53
|
+
TypedArrayConstructor = _options$TypedArrayCo === void 0 ? Uint8Array : _options$TypedArrayCo,
|
|
54
|
+
_options$maxBytesPerC = options.maxBytesPerChunk,
|
|
55
|
+
maxBytesPerChunk = _options$maxBytesPerC === void 0 ? 199000000 : _options$maxBytesPerC;
|
|
67
56
|
const dicomData = DicomMessage.readFile(arrayBuffer);
|
|
68
57
|
const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
|
|
69
58
|
dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);
|
|
70
59
|
const multiframe = Normalizer.normalizeToDataset([dataset]);
|
|
71
|
-
const imagePlaneModule = metadataProvider.get(
|
|
72
|
-
const generalSeriesModule = metadataProvider.get(
|
|
60
|
+
const imagePlaneModule = metadataProvider.get('imagePlaneModule', referencedImageIds[0]);
|
|
61
|
+
const generalSeriesModule = metadataProvider.get('generalSeriesModule', referencedImageIds[0]);
|
|
73
62
|
const SeriesInstanceUID = generalSeriesModule.seriesInstanceUID;
|
|
74
63
|
if (!imagePlaneModule) {
|
|
75
|
-
console.warn(
|
|
64
|
+
console.warn('Insufficient metadata, imagePlaneModule missing.');
|
|
76
65
|
}
|
|
77
66
|
const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines) ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines] : [imagePlaneModule.rowCosines.x, imagePlaneModule.rowCosines.y, imagePlaneModule.rowCosines.z, imagePlaneModule.columnCosines.x, imagePlaneModule.columnCosines.y, imagePlaneModule.columnCosines.z];
|
|
78
67
|
const validOrientations = getValidOrientations(ImageOrientationPatient);
|
|
@@ -80,11 +69,11 @@ async function createLabelmapsFromBufferInternal(referencedImageIds, arrayBuffer
|
|
|
80
69
|
const TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0];
|
|
81
70
|
let pixelData;
|
|
82
71
|
let pixelDataChunks;
|
|
83
|
-
if (TransferSyntaxUID ===
|
|
72
|
+
if (TransferSyntaxUID === '1.2.840.10008.1.2.5') {
|
|
84
73
|
const rleEncodedFrames = Array.isArray(multiframe.PixelData) ? multiframe.PixelData : [multiframe.PixelData];
|
|
85
74
|
pixelData = decode(rleEncodedFrames, multiframe.Rows, multiframe.Columns);
|
|
86
75
|
if (multiframe.BitsStored === 1) {
|
|
87
|
-
console.warn(
|
|
76
|
+
console.warn('No implementation for rle + bit packing.');
|
|
88
77
|
return;
|
|
89
78
|
}
|
|
90
79
|
pixelDataChunks = [pixelData];
|
|
@@ -93,26 +82,25 @@ async function createLabelmapsFromBufferInternal(referencedImageIds, arrayBuffer
|
|
|
93
82
|
maxBytesPerChunk
|
|
94
83
|
});
|
|
95
84
|
if (!pixelDataChunks) {
|
|
96
|
-
throw new Error(
|
|
85
|
+
throw new Error('Fractional segmentations are not yet supported');
|
|
97
86
|
}
|
|
98
87
|
}
|
|
99
88
|
const orientation = checkOrientation(multiframe, validOrientations, [imagePlaneModule.rows, imagePlaneModule.columns, referencedImageIds.length], tolerance);
|
|
100
89
|
const sopUIDImageIdIndexMap = referencedImageIds.reduce((acc, imageId) => {
|
|
101
|
-
const
|
|
102
|
-
sopInstanceUID
|
|
103
|
-
} = metadataProvider.get("generalImageModule", imageId);
|
|
90
|
+
const _metadataProvider$get = metadataProvider.get('generalImageModule', imageId),
|
|
91
|
+
sopInstanceUID = _metadataProvider$get.sopInstanceUID;
|
|
104
92
|
acc[sopInstanceUID] = imageId;
|
|
105
93
|
return acc;
|
|
106
94
|
}, {});
|
|
107
95
|
let insertFunction;
|
|
108
96
|
switch (orientation) {
|
|
109
|
-
case
|
|
97
|
+
case 'Planar':
|
|
110
98
|
insertFunction = insertPixelDataPlanar;
|
|
111
99
|
break;
|
|
112
|
-
case
|
|
113
|
-
throw new Error(
|
|
114
|
-
case
|
|
115
|
-
throw new Error(
|
|
100
|
+
case 'Perpendicular':
|
|
101
|
+
throw new Error('Segmentations orthogonal to the acquisition plane of the source data are not yet supported.');
|
|
102
|
+
case 'Oblique':
|
|
103
|
+
throw new Error('Segmentations oblique to the acquisition plane of the source data are not yet supported.');
|
|
116
104
|
}
|
|
117
105
|
const segmentsOnFrame = [];
|
|
118
106
|
const imageIdMaps = {
|
|
@@ -123,28 +111,27 @@ async function createLabelmapsFromBufferInternal(referencedImageIds, arrayBuffer
|
|
|
123
111
|
for (let i = 0; i < referencedImageIds.length; i++) {
|
|
124
112
|
const referenceImageId = referencedImageIds[i];
|
|
125
113
|
imageIdMaps.indices[referenceImageId] = i;
|
|
126
|
-
imageIdMaps.metadata[referenceImageId] = metadataProvider.get(
|
|
114
|
+
imageIdMaps.metadata[referenceImageId] = metadataProvider.get('instance', referenceImageId);
|
|
127
115
|
const labelMapImage = imageLoader.createAndCacheDerivedLabelmapImage(referenceImageId);
|
|
128
116
|
labelMapImages.push(labelMapImage);
|
|
129
117
|
}
|
|
130
118
|
const segmentsPixelIndices = new Map();
|
|
131
|
-
const {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
});
|
|
119
|
+
const _await$insertFunction = await insertFunction({
|
|
120
|
+
segmentsOnFrame,
|
|
121
|
+
labelMapImages,
|
|
122
|
+
pixelDataChunks,
|
|
123
|
+
multiframe,
|
|
124
|
+
referencedImageIds,
|
|
125
|
+
validOrientations,
|
|
126
|
+
metadataProvider,
|
|
127
|
+
tolerance,
|
|
128
|
+
segmentsPixelIndices,
|
|
129
|
+
sopUIDImageIdIndexMap,
|
|
130
|
+
imageIdMaps,
|
|
131
|
+
TypedArrayConstructor
|
|
132
|
+
}),
|
|
133
|
+
hasOverlappingSegments = _await$insertFunction.hasOverlappingSegments,
|
|
134
|
+
arrayOfLabelMapImages = _await$insertFunction.arrayOfLabelMapImages;
|
|
148
135
|
const centroidXYZ = new Map();
|
|
149
136
|
segmentsPixelIndices.forEach((imageIdIndexBufferIndex, segmentIndex) => {
|
|
150
137
|
const centroids = calculateCentroid(imageIdIndexBufferIndex, multiframe, metadataProvider, referencedImageIds);
|
|
@@ -164,25 +151,21 @@ const throttledTriggerLoadProgressEvent = utilities$1.throttle(percentComplete =
|
|
|
164
151
|
});
|
|
165
152
|
}, 200);
|
|
166
153
|
function insertPixelDataPlanar(_ref4) {
|
|
167
|
-
let
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
PerFrameFunctionalGroupsSequence,
|
|
183
|
-
Rows,
|
|
184
|
-
Columns
|
|
185
|
-
} = multiframe;
|
|
154
|
+
let segmentsOnFrame = _ref4.segmentsOnFrame,
|
|
155
|
+
labelMapImages = _ref4.labelMapImages,
|
|
156
|
+
pixelDataChunks = _ref4.pixelDataChunks,
|
|
157
|
+
multiframe = _ref4.multiframe,
|
|
158
|
+
referencedImageIds = _ref4.referencedImageIds,
|
|
159
|
+
validOrientations = _ref4.validOrientations,
|
|
160
|
+
metadataProvider = _ref4.metadataProvider,
|
|
161
|
+
tolerance = _ref4.tolerance,
|
|
162
|
+
segmentsPixelIndices = _ref4.segmentsPixelIndices,
|
|
163
|
+
sopUIDImageIdIndexMap = _ref4.sopUIDImageIdIndexMap,
|
|
164
|
+
imageIdMaps = _ref4.imageIdMaps;
|
|
165
|
+
const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
|
|
166
|
+
PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
|
|
167
|
+
Rows = multiframe.Rows,
|
|
168
|
+
Columns = multiframe.Columns;
|
|
186
169
|
const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
|
|
187
170
|
const sliceLength = Columns * Rows;
|
|
188
171
|
const groupsLen = PerFrameFunctionalGroupsSequence.length;
|
|
@@ -198,23 +181,23 @@ function insertPixelDataPlanar(_ref4) {
|
|
|
198
181
|
const pixelDataI2D = ndarray(view, [Rows, Columns]);
|
|
199
182
|
const alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
200
183
|
if (!alignedPixelDataI) {
|
|
201
|
-
throw new Error(
|
|
184
|
+
throw new Error('Individual SEG frames are out of plane with respect to the first SEG frame. ' + 'This is not yet supported. Aborting segmentation loading.');
|
|
202
185
|
}
|
|
203
186
|
const segmentIndex = getSegmentIndex(multiframe, i);
|
|
204
187
|
if (segmentIndex === undefined) {
|
|
205
|
-
throw new Error(
|
|
188
|
+
throw new Error('Could not retrieve the segment index. Aborting segmentation loading.');
|
|
206
189
|
}
|
|
207
190
|
if (!segmentsPixelIndices.has(segmentIndex)) {
|
|
208
191
|
segmentsPixelIndices.set(segmentIndex, {});
|
|
209
192
|
}
|
|
210
193
|
const imageId = findReferenceSourceImageId(multiframe, i, referencedImageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap);
|
|
211
194
|
if (!imageId) {
|
|
212
|
-
console.warn("Image not present in stack, can't import frame : " + i +
|
|
195
|
+
console.warn("Image not present in stack, can't import frame : " + i + '.');
|
|
213
196
|
return;
|
|
214
197
|
}
|
|
215
198
|
const sourceImageMetadata = imageIdMaps.metadata[imageId];
|
|
216
199
|
if (Rows !== sourceImageMetadata.Rows || Columns !== sourceImageMetadata.Columns) {
|
|
217
|
-
throw new Error(
|
|
200
|
+
throw new Error('Individual SEG frames have different geometry dimensions (Rows and Columns) ' + 'respect to the source image reference frame. This is not yet supported. ' + 'Aborting segmentation loading. ');
|
|
218
201
|
}
|
|
219
202
|
const imageIdIndex = imageIdMaps.indices[imageId];
|
|
220
203
|
const labelmapImage = labelMapImages[imageIdIndex];
|
|
@@ -283,7 +266,7 @@ function insertPixelDataPlanar(_ref4) {
|
|
|
283
266
|
const pixelDataI2D = ndarray(view, [Rows, Columns]);
|
|
284
267
|
const alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
285
268
|
if (!alignedPixelDataI) {
|
|
286
|
-
throw new Error(
|
|
269
|
+
throw new Error('Individual Labelmap SEG frames are out of plane with respect to the first SEG frame. ' + 'This is not yet supported. Aborting segmentation loading.');
|
|
287
270
|
}
|
|
288
271
|
const imageId = findReferenceSourceImageId(multiframe, i, referencedImageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap);
|
|
289
272
|
if (!imageId) {
|
|
@@ -292,7 +275,7 @@ function insertPixelDataPlanar(_ref4) {
|
|
|
292
275
|
}
|
|
293
276
|
const sourceImageMetadata = imageIdMaps.metadata[imageId];
|
|
294
277
|
if (Rows !== sourceImageMetadata.Rows || Columns !== sourceImageMetadata.Columns) {
|
|
295
|
-
throw new Error(
|
|
278
|
+
throw new Error('Individual Labelmap SEG frames have different geometry dimensions (Rows and Columns) ' + 'respect to the source image reference frame. This is not yet supported. ' + 'Aborting segmentation loading. ');
|
|
296
279
|
}
|
|
297
280
|
const imageIdIndex = imageIdMaps.indices[imageId];
|
|
298
281
|
const labelmapImage = labelMapImages[imageIdIndex];
|
|
@@ -334,7 +317,7 @@ function insertPixelDataPlanar(_ref4) {
|
|
|
334
317
|
});
|
|
335
318
|
}
|
|
336
319
|
};
|
|
337
|
-
if (multiframe.SegmentationType ===
|
|
320
|
+
if (multiframe.SegmentationType === 'LABELMAP') {
|
|
338
321
|
processLabelmapChunk(0);
|
|
339
322
|
} else {
|
|
340
323
|
processChunk(0);
|
|
@@ -342,43 +325,37 @@ function insertPixelDataPlanar(_ref4) {
|
|
|
342
325
|
});
|
|
343
326
|
}
|
|
344
327
|
const getAlignedPixelData = _ref5 => {
|
|
345
|
-
let
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
tolerance
|
|
355
|
-
} = _ref5;
|
|
328
|
+
let sharedImageOrientationPatient = _ref5.sharedImageOrientationPatient,
|
|
329
|
+
PerFrameFunctionalGroups = _ref5.PerFrameFunctionalGroups,
|
|
330
|
+
pixelDataChunks = _ref5.pixelDataChunks,
|
|
331
|
+
sequenceIndex = _ref5.sequenceIndex,
|
|
332
|
+
sliceLength = _ref5.sliceLength,
|
|
333
|
+
Rows = _ref5.Rows,
|
|
334
|
+
Columns = _ref5.Columns,
|
|
335
|
+
validOrientations = _ref5.validOrientations,
|
|
336
|
+
tolerance = _ref5.tolerance;
|
|
356
337
|
const ImageOrientationPatientI = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
|
|
357
338
|
const view = readFromUnpackedChunks(pixelDataChunks, sequenceIndex * sliceLength, sliceLength);
|
|
358
339
|
const pixelDataI2D = ndarray(view, [Rows, Columns]);
|
|
359
340
|
const alignedPixelDataI = alignPixelDataWithSourceData(pixelDataI2D, ImageOrientationPatientI, validOrientations, tolerance);
|
|
360
341
|
if (!alignedPixelDataI) {
|
|
361
|
-
throw new Error(
|
|
342
|
+
throw new Error('Individual SEG frames are out of plane with respect to the first SEG frame. ' + 'This is not yet supported. Aborting segmentation loading.');
|
|
362
343
|
}
|
|
363
344
|
return alignedPixelDataI;
|
|
364
345
|
};
|
|
365
346
|
const checkImageDimensions = _ref6 => {
|
|
366
|
-
let
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
} = _ref6;
|
|
372
|
-
const sourceImageMetadata = metadataProvider.get("instance", imageId);
|
|
347
|
+
let metadataProvider = _ref6.metadataProvider,
|
|
348
|
+
imageId = _ref6.imageId,
|
|
349
|
+
Rows = _ref6.Rows,
|
|
350
|
+
Columns = _ref6.Columns;
|
|
351
|
+
const sourceImageMetadata = metadataProvider.get('instance', imageId);
|
|
373
352
|
if (Rows !== sourceImageMetadata.Rows || Columns !== sourceImageMetadata.Columns) {
|
|
374
|
-
throw new Error(
|
|
353
|
+
throw new Error('Individual SEG frames have different geometry dimensions (Rows and Columns) ' + 'respect to the source image reference frame. This is not yet supported. ' + 'Aborting segmentation loading. ');
|
|
375
354
|
}
|
|
376
355
|
};
|
|
377
356
|
const getArrayOfLabelMapImagesWithSegmentData = _ref7 => {
|
|
378
|
-
let
|
|
379
|
-
|
|
380
|
-
referencedImageIds
|
|
381
|
-
} = _ref7;
|
|
357
|
+
let arrayOfSegmentData = _ref7.arrayOfSegmentData,
|
|
358
|
+
referencedImageIds = _ref7.referencedImageIds;
|
|
382
359
|
let largestArray = [];
|
|
383
360
|
for (let i = 0; i < arrayOfSegmentData.length; i++) {
|
|
384
361
|
const segmentData = arrayOfSegmentData[i];
|
|
@@ -402,25 +379,21 @@ const getArrayOfLabelMapImagesWithSegmentData = _ref7 => {
|
|
|
402
379
|
});
|
|
403
380
|
};
|
|
404
381
|
function insertOverlappingPixelDataPlanar(_ref8) {
|
|
405
|
-
let
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
PerFrameFunctionalGroupsSequence,
|
|
421
|
-
Rows,
|
|
422
|
-
Columns
|
|
423
|
-
} = multiframe;
|
|
382
|
+
let segmentsOnFrame = _ref8.segmentsOnFrame,
|
|
383
|
+
labelMapImages = _ref8.labelMapImages,
|
|
384
|
+
pixelDataChunks = _ref8.pixelDataChunks,
|
|
385
|
+
multiframe = _ref8.multiframe,
|
|
386
|
+
referencedImageIds = _ref8.referencedImageIds,
|
|
387
|
+
validOrientations = _ref8.validOrientations,
|
|
388
|
+
metadataProvider = _ref8.metadataProvider,
|
|
389
|
+
tolerance = _ref8.tolerance,
|
|
390
|
+
segmentsPixelIndices = _ref8.segmentsPixelIndices,
|
|
391
|
+
sopUIDImageIdIndexMap = _ref8.sopUIDImageIdIndexMap,
|
|
392
|
+
imageIdMaps = _ref8.imageIdMaps;
|
|
393
|
+
const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
|
|
394
|
+
PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
|
|
395
|
+
Rows = multiframe.Rows,
|
|
396
|
+
Columns = multiframe.Columns;
|
|
424
397
|
const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
|
|
425
398
|
const sliceLength = Columns * Rows;
|
|
426
399
|
const arrayOfSegmentData = getArrayOfSegmentData({
|
|
@@ -450,23 +423,21 @@ function insertOverlappingPixelDataPlanar(_ref8) {
|
|
|
450
423
|
};
|
|
451
424
|
}
|
|
452
425
|
const getArrayOfSegmentData = _ref9 => {
|
|
453
|
-
let
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
segmentsPixelIndices
|
|
469
|
-
} = _ref9;
|
|
426
|
+
let sliceLength = _ref9.sliceLength,
|
|
427
|
+
Rows = _ref9.Rows,
|
|
428
|
+
Columns = _ref9.Columns,
|
|
429
|
+
validOrientations = _ref9.validOrientations,
|
|
430
|
+
metadataProvider = _ref9.metadataProvider,
|
|
431
|
+
imageIdMaps = _ref9.imageIdMaps,
|
|
432
|
+
segmentsOnFrame = _ref9.segmentsOnFrame,
|
|
433
|
+
tolerance = _ref9.tolerance,
|
|
434
|
+
pixelDataChunks = _ref9.pixelDataChunks,
|
|
435
|
+
PerFrameFunctionalGroupsSequence = _ref9.PerFrameFunctionalGroupsSequence,
|
|
436
|
+
labelMapImages = _ref9.labelMapImages,
|
|
437
|
+
sopUIDImageIdIndexMap = _ref9.sopUIDImageIdIndexMap,
|
|
438
|
+
multiframe = _ref9.multiframe,
|
|
439
|
+
sharedImageOrientationPatient = _ref9.sharedImageOrientationPatient,
|
|
440
|
+
segmentsPixelIndices = _ref9.segmentsPixelIndices;
|
|
470
441
|
const arrayOfSegmentData = [];
|
|
471
442
|
const numberOfSegments = multiframe.SegmentSequence.length;
|
|
472
443
|
for (let currentSegmentIndex = 1; currentSegmentIndex <= numberOfSegments; ++currentSegmentIndex) {
|
|
@@ -495,39 +466,36 @@ const getArrayOfSegmentData = _ref9 => {
|
|
|
495
466
|
}
|
|
496
467
|
return arrayOfSegmentData;
|
|
497
468
|
};
|
|
498
|
-
const getSegmentData =
|
|
499
|
-
let
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
segmentsPixelIndices
|
|
516
|
-
} = _ref10;
|
|
469
|
+
const getSegmentData = _ref0 => {
|
|
470
|
+
let PerFrameFunctionalGroupsSequence = _ref0.PerFrameFunctionalGroupsSequence,
|
|
471
|
+
labelMapImages = _ref0.labelMapImages,
|
|
472
|
+
sopUIDImageIdIndexMap = _ref0.sopUIDImageIdIndexMap,
|
|
473
|
+
multiframe = _ref0.multiframe,
|
|
474
|
+
segmentIndex = _ref0.segmentIndex,
|
|
475
|
+
sliceLength = _ref0.sliceLength,
|
|
476
|
+
Rows = _ref0.Rows,
|
|
477
|
+
Columns = _ref0.Columns,
|
|
478
|
+
validOrientations = _ref0.validOrientations,
|
|
479
|
+
tolerance = _ref0.tolerance,
|
|
480
|
+
pixelDataChunks = _ref0.pixelDataChunks,
|
|
481
|
+
sharedImageOrientationPatient = _ref0.sharedImageOrientationPatient,
|
|
482
|
+
metadataProvider = _ref0.metadataProvider,
|
|
483
|
+
imageIdMaps = _ref0.imageIdMaps,
|
|
484
|
+
segmentsOnFrame = _ref0.segmentsOnFrame,
|
|
485
|
+
segmentsPixelIndices = _ref0.segmentsPixelIndices;
|
|
517
486
|
const segmentData = [];
|
|
518
487
|
for (let currentLabelMapImageIndex = 0; currentLabelMapImageIndex < labelMapImages.length; currentLabelMapImageIndex++) {
|
|
519
488
|
const currentLabelMapImage = labelMapImages[currentLabelMapImageIndex];
|
|
520
489
|
const referencedImageId = currentLabelMapImage.referencedImageId;
|
|
521
490
|
const PerFrameFunctionalGroupsIndex = PerFrameFunctionalGroupsSequence.findIndex((PerFrameFunctionalGroups, currentSequenceIndex) => {
|
|
522
|
-
const {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
});
|
|
491
|
+
const _extractInfoFromPerFr = extractInfoFromPerFrameFunctionalGroups({
|
|
492
|
+
PerFrameFunctionalGroups,
|
|
493
|
+
sequenceIndex: currentSequenceIndex,
|
|
494
|
+
sopUIDImageIdIndexMap,
|
|
495
|
+
multiframe
|
|
496
|
+
}),
|
|
497
|
+
groupsSegmentIndex = _extractInfoFromPerFr.segmentIndex,
|
|
498
|
+
groupsReferenceImageId = _extractInfoFromPerFr.referencedImageId;
|
|
531
499
|
const isCorrectPerFrameFunctionalGroup = groupsSegmentIndex === segmentIndex && groupsReferenceImageId === currentLabelMapImage.referencedImageId;
|
|
532
500
|
return isCorrectPerFrameFunctionalGroup;
|
|
533
501
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import BaseAdapter3D from
|
|
1
|
+
import BaseAdapter3D from './BaseAdapter3D';
|
|
2
2
|
declare class UltrasoundDirectional extends BaseAdapter3D {
|
|
3
3
|
static getMeasurementData(measurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
|
|
4
4
|
description?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import { utilities } from 'dcmjs';
|
|
3
3
|
import { utilities as utilities$1 } from '@cornerstonejs/core';
|
|
4
4
|
import MeasurementReport from './MeasurementReport.js';
|
|
@@ -7,19 +7,14 @@ import BaseAdapter3D from './BaseAdapter3D.js';
|
|
|
7
7
|
var _UltrasoundDirectional;
|
|
8
8
|
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; }
|
|
9
9
|
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; }
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
} = utilities.TID300;
|
|
13
|
-
const {
|
|
14
|
-
worldToImageCoords
|
|
15
|
-
} = utilities$1;
|
|
10
|
+
const TID300Length = utilities.TID300.Length;
|
|
11
|
+
const worldToImageCoords = utilities$1.worldToImageCoords;
|
|
16
12
|
class UltrasoundDirectional extends BaseAdapter3D {
|
|
17
13
|
static getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, metadata) {
|
|
18
|
-
const
|
|
19
|
-
state,
|
|
20
|
-
worldCoords,
|
|
21
|
-
ReferencedFrameNumber
|
|
22
|
-
} = MeasurementReport.getSetupMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
|
|
14
|
+
const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
|
|
15
|
+
state = _MeasurementReport$ge.state,
|
|
16
|
+
worldCoords = _MeasurementReport$ge.worldCoords,
|
|
17
|
+
ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
|
|
23
18
|
state.annotation.data = _objectSpread(_objectSpread({}, state.annotation.data), {}, {
|
|
24
19
|
handles: _objectSpread(_objectSpread({}, state.annotation.data.handles), {}, {
|
|
25
20
|
points: worldCoords
|
|
@@ -29,20 +24,14 @@ class UltrasoundDirectional extends BaseAdapter3D {
|
|
|
29
24
|
return state;
|
|
30
25
|
}
|
|
31
26
|
static getTID300RepresentationArguments(tool, is3DMeasurement) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const {
|
|
39
|
-
handles
|
|
40
|
-
} = data;
|
|
41
|
-
const {
|
|
42
|
-
referencedImageId
|
|
43
|
-
} = metadata;
|
|
27
|
+
const data = tool.data,
|
|
28
|
+
finding = tool.finding,
|
|
29
|
+
findingSites = tool.findingSites,
|
|
30
|
+
metadata = tool.metadata;
|
|
31
|
+
const handles = data.handles;
|
|
32
|
+
const referencedImageId = metadata.referencedImageId;
|
|
44
33
|
if (!referencedImageId) {
|
|
45
|
-
throw new Error(
|
|
34
|
+
throw new Error('UltrasoundDirectionalTool.getTID300RepresentationArguments: referencedImageId is not defined');
|
|
46
35
|
}
|
|
47
36
|
const start = worldToImageCoords(referencedImageId, handles.points[0]);
|
|
48
37
|
const end = worldToImageCoords(referencedImageId, handles.points[1]);
|
|
@@ -64,6 +53,6 @@ class UltrasoundDirectional extends BaseAdapter3D {
|
|
|
64
53
|
}
|
|
65
54
|
}
|
|
66
55
|
_UltrasoundDirectional = UltrasoundDirectional;
|
|
67
|
-
_UltrasoundDirectional.init(
|
|
56
|
+
_UltrasoundDirectional.init('UltrasoundDirectionalTool', TID300Length);
|
|
68
57
|
|
|
69
58
|
export { UltrasoundDirectional as default };
|
|
@@ -5,6 +5,16 @@ export declare const TEXT_ANNOTATION_POSITION: {
|
|
|
5
5
|
meaning: string;
|
|
6
6
|
value: string;
|
|
7
7
|
};
|
|
8
|
+
export declare const CONTROL_POINTS_CODE: {
|
|
9
|
+
schemeDesignator: string;
|
|
10
|
+
meaning: string;
|
|
11
|
+
value: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const SPLINE_TYPE_CODE: {
|
|
14
|
+
schemeDesignator: string;
|
|
15
|
+
meaning: string;
|
|
16
|
+
value: string;
|
|
17
|
+
};
|
|
8
18
|
export declare const COMMENT_CODE: {
|
|
9
19
|
schemeDesignator: string;
|
|
10
20
|
meaning: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _defineProperty from '
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
|
|
3
3
|
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; }
|
|
4
4
|
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 +9,16 @@ const TEXT_ANNOTATION_POSITION = {
|
|
|
9
9
|
meaning: 'Text Annotation Position',
|
|
10
10
|
value: 'TextPosition'
|
|
11
11
|
};
|
|
12
|
+
const CONTROL_POINTS_CODE = {
|
|
13
|
+
schemeDesignator: CS3D_DESIGNATOR,
|
|
14
|
+
meaning: 'Control Points',
|
|
15
|
+
value: 'ControlPoints'
|
|
16
|
+
};
|
|
17
|
+
const SPLINE_TYPE_CODE = {
|
|
18
|
+
schemeDesignator: CS3D_DESIGNATOR,
|
|
19
|
+
meaning: 'Spline Type',
|
|
20
|
+
value: 'SplineType'
|
|
21
|
+
};
|
|
12
22
|
const COMMENT_CODE = {
|
|
13
23
|
schemeDesignator: 'DCM',
|
|
14
24
|
meaning: 'Comment',
|
|
@@ -47,4 +57,4 @@ const metaRTSSContour = _objectSpread(_objectSpread({}, metaSRAnnotation), {}, {
|
|
|
47
57
|
}
|
|
48
58
|
});
|
|
49
59
|
|
|
50
|
-
export { COMMENT_CODE, CS3D_DESIGNATOR, ImplementationClassRtssContours, ImplementationClassUidSRAnnotation, NO_IMAGE_ID, TEXT_ANNOTATION_POSITION, fileMetaInformationVersionArray1, fileMetaInformationVersionArray2, metaRTSSContour, metaSRAnnotation };
|
|
60
|
+
export { COMMENT_CODE, CONTROL_POINTS_CODE, CS3D_DESIGNATOR, ImplementationClassRtssContours, ImplementationClassUidSRAnnotation, NO_IMAGE_ID, SPLINE_TYPE_CODE, TEXT_ANNOTATION_POSITION, fileMetaInformationVersionArray1, fileMetaInformationVersionArray2, metaRTSSContour, metaSRAnnotation };
|