@cornerstonejs/adapters 4.22.7 → 4.22.9

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.
Files changed (53) hide show
  1. package/dist/esm/adapters/Cornerstone/Angle.js +22 -15
  2. package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +13 -18
  3. package/dist/esm/adapters/Cornerstone/Bidirectional.js +22 -27
  4. package/dist/esm/adapters/Cornerstone/CircleRoi.js +20 -26
  5. package/dist/esm/adapters/Cornerstone/CobbAngle.js +22 -15
  6. package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +19 -25
  7. package/dist/esm/adapters/Cornerstone/FreehandRoi.js +21 -25
  8. package/dist/esm/adapters/Cornerstone/Length.js +18 -15
  9. package/dist/esm/adapters/Cornerstone/MeasurementReport.js +20 -40
  10. package/dist/esm/adapters/Cornerstone/ParametricMap.js +15 -26
  11. package/dist/esm/adapters/Cornerstone/RectangleRoi.js +26 -25
  12. package/dist/esm/adapters/Cornerstone/Segmentation_3X.js +19 -31
  13. package/dist/esm/adapters/Cornerstone/Segmentation_4X.js +69 -90
  14. package/dist/esm/adapters/Cornerstone3D/Angle.js +17 -24
  15. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.js +21 -35
  16. package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.js +12 -23
  17. package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +21 -33
  18. package/dist/esm/adapters/Cornerstone3D/CircleROI.js +27 -35
  19. package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +25 -28
  20. package/dist/esm/adapters/Cornerstone3D/ControlPointPolyline.js +10 -17
  21. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +25 -33
  22. package/dist/esm/adapters/Cornerstone3D/KeyImage.js +3 -9
  23. package/dist/esm/adapters/Cornerstone3D/LabelData.js +22 -33
  24. package/dist/esm/adapters/Cornerstone3D/Length.js +19 -27
  25. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +73 -116
  26. package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.js +2 -6
  27. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +26 -35
  28. package/dist/esm/adapters/Cornerstone3D/Probe.js +16 -27
  29. package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +13 -29
  30. package/dist/esm/adapters/Cornerstone3D/RTStruct/index.js +1 -3
  31. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js +1 -3
  32. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js +7 -13
  33. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +1 -3
  34. package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +21 -28
  35. package/dist/esm/adapters/Cornerstone3D/Segmentation/compactMergeSegData.js +5 -9
  36. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.js +2 -4
  37. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +5 -15
  38. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.js +3 -4
  39. package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.js +124 -156
  40. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.js +12 -23
  41. package/dist/esm/adapters/Cornerstone3D/metricHandler.js +8 -5
  42. package/dist/esm/adapters/VTKjs/Segmentation.js +2 -4
  43. package/dist/esm/adapters/helpers/checkOrientation.js +2 -4
  44. package/dist/esm/adapters/helpers/downloadDICOMData.js +1 -3
  45. package/dist/esm/adapters/helpers/getDatasetsFromImages.js +3 -7
  46. package/dist/esm/adapters/helpers/scoordToWorld.js +5 -13
  47. package/dist/esm/adapters/helpers/toPoint3.js +1 -3
  48. package/dist/esm/adapters/helpers/toScoordType.js +3 -7
  49. package/dist/esm/adapters/index.js +3 -2
  50. package/dist/esm/utilities/createInstance.js +9 -8
  51. package/dist/esm/utilities/referencedMetadataProvider.js +7 -13
  52. package/dist/esm/version.d.ts +1 -1
  53. package/package.json +6 -6
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
- import { metaData, Enums } from '@cornerstonejs/core';
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
- } = utilities.contours;
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
- segmentationId,
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,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 };
@@ -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 { metaData, Enums } from '@cornerstonejs/core';
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
- ReferencedSeriesInstanceUID: newSeriesUid,
16
- ReferencedInstanceSequence: [{
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,7 +1,5 @@
1
1
  function getStructureSetModule(contour, segment) {
2
- const {
3
- FrameOfReferenceUID
4
- } = contour.metadata;
2
+ const FrameOfReferenceUID = contour.metadata.FrameOfReferenceUID;
5
3
  return {
6
4
  ROINumber: segment.segmentIndex,
7
5
  ROIName: segment.label,
@@ -1,7 +1,8 @@
1
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 '@cornerstonejs/core';
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,9 +10,7 @@ import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.j
9
10
  var _RectangleROI;
10
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; }
11
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; }
12
- const {
13
- Polyline: TID300Polyline
14
- } = utilities.TID300;
13
+ const TID300Polyline = utilities.TID300.Polyline;
15
14
  class RectangleROI extends BaseAdapter3D {
16
15
  static isValidMeasurement(measurement) {
17
16
  const graphicItem = this.getGraphicItem(measurement);
@@ -20,12 +19,11 @@ class RectangleROI extends BaseAdapter3D {
20
19
  }
21
20
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
22
21
  var _areaGroup$MeasuredVa, _areaGroup$MeasuredVa2;
23
- const {
24
- state,
25
- worldCoords,
26
- referencedImageId,
27
- ReferencedFrameNumber
28
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
22
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
23
+ state = _MeasurementReport$ge.state,
24
+ worldCoords = _MeasurementReport$ge.worldCoords,
25
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
26
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
29
27
  const points = worldCoords.length === 5 ? worldCoords.slice(0, 4) : worldCoords;
30
28
  const areaGroup = MeasurementGroup.ContentSequence.find(g => g.ValueType === 'NUM' && g.ConceptNameCodeSequence.CodeMeaning === 'Area');
31
29
  const referencedSOPInstanceUID = state.sopInstanceUid;
@@ -49,29 +47,24 @@ class RectangleROI extends BaseAdapter3D {
49
47
  }
50
48
  static getTID300RepresentationArguments(tool) {
51
49
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
52
- const {
53
- data,
54
- finding,
55
- findingSites,
56
- metadata
57
- } = tool;
58
- const {
59
- referencedImageId
60
- } = metadata;
50
+ const data = tool.data,
51
+ finding = tool.finding,
52
+ findingSites = tool.findingSites,
53
+ metadata = tool.metadata;
54
+ const referencedImageId = metadata.referencedImageId;
61
55
  const scoordProps = {
62
56
  is3DMeasurement,
63
57
  referencedImageId
64
58
  };
65
59
  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)] || {};
60
+ const _ref = data.cachedStats["imageId:".concat(referencedImageId)] || {},
61
+ area = _ref.area,
62
+ perimeter = _ref.perimeter,
63
+ max = _ref.max,
64
+ mean = _ref.mean,
65
+ stdDev = _ref.stdDev,
66
+ areaUnit = _ref.areaUnit,
67
+ modalityUnit = _ref.modalityUnit;
75
68
  return {
76
69
  points: [corners[0], corners[1], corners[3], corners[2], corners[0]],
77
70
  area,
@@ -1,9 +1,7 @@
1
1
  const checkHasOverlapping = _ref => {
2
- let {
3
- largerArray,
4
- currentTestedArray,
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
- arrayOfSegmentData,
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
- scalarData,
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++) {
@@ -5,15 +5,9 @@ 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
- MetadataModules
10
- } = Enums;
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
- metadataProvider,
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
  });