@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.
Files changed (89) hide show
  1. package/dist/esm/adapters/Cornerstone/Angle.js +23 -16
  2. package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +14 -19
  3. package/dist/esm/adapters/Cornerstone/Bidirectional.js +22 -27
  4. package/dist/esm/adapters/Cornerstone/CircleRoi.js +21 -27
  5. package/dist/esm/adapters/Cornerstone/CobbAngle.js +23 -16
  6. package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +20 -26
  7. package/dist/esm/adapters/Cornerstone/FreehandRoi.js +22 -26
  8. package/dist/esm/adapters/Cornerstone/Length.js +19 -16
  9. package/dist/esm/adapters/Cornerstone/MeasurementReport.js +20 -40
  10. package/dist/esm/adapters/Cornerstone/ParametricMap.js +27 -38
  11. package/dist/esm/adapters/Cornerstone/RectangleRoi.js +27 -26
  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/Cornerstone/index.d.ts +11 -11
  15. package/dist/esm/adapters/Cornerstone3D/Angle.d.ts +1 -1
  16. package/dist/esm/adapters/Cornerstone3D/Angle.js +19 -26
  17. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.d.ts +1 -1
  18. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.js +24 -38
  19. package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.d.ts +1 -1
  20. package/dist/esm/adapters/Cornerstone3D/BaseAdapter3D.js +20 -31
  21. package/dist/esm/adapters/Cornerstone3D/Bidirectional.d.ts +1 -1
  22. package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +27 -39
  23. package/dist/esm/adapters/Cornerstone3D/CircleROI.d.ts +1 -1
  24. package/dist/esm/adapters/Cornerstone3D/CircleROI.js +29 -37
  25. package/dist/esm/adapters/Cornerstone3D/CobbAngle.d.ts +1 -1
  26. package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +27 -30
  27. package/dist/esm/adapters/Cornerstone3D/ControlPointPolyline.d.ts +5 -0
  28. package/dist/esm/adapters/Cornerstone3D/ControlPointPolyline.js +85 -0
  29. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.d.ts +1 -1
  30. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +27 -35
  31. package/dist/esm/adapters/Cornerstone3D/KeyImage.d.ts +1 -1
  32. package/dist/esm/adapters/Cornerstone3D/KeyImage.js +5 -11
  33. package/dist/esm/adapters/Cornerstone3D/LabelData.d.ts +3 -1
  34. package/dist/esm/adapters/Cornerstone3D/LabelData.js +41 -33
  35. package/dist/esm/adapters/Cornerstone3D/Length.d.ts +1 -1
  36. package/dist/esm/adapters/Cornerstone3D/Length.js +21 -29
  37. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.d.ts +2 -1
  38. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +108 -120
  39. package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.js +2 -6
  40. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.d.ts +11 -1
  41. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +58 -44
  42. package/dist/esm/adapters/Cornerstone3D/Probe.d.ts +1 -1
  43. package/dist/esm/adapters/Cornerstone3D/Probe.js +21 -32
  44. package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +14 -30
  45. package/dist/esm/adapters/Cornerstone3D/RTStruct/index.d.ts +2 -2
  46. package/dist/esm/adapters/Cornerstone3D/RTStruct/index.js +1 -3
  47. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js +1 -3
  48. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js +7 -13
  49. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +1 -3
  50. package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +30 -32
  51. package/dist/esm/adapters/Cornerstone3D/Segmentation/compactMergeSegData.d.ts +1 -1
  52. package/dist/esm/adapters/Cornerstone3D/Segmentation/compactMergeSegData.js +5 -9
  53. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.js +2 -4
  54. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +6 -16
  55. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.js +3 -4
  56. package/dist/esm/adapters/Cornerstone3D/Segmentation/index.d.ts +4 -4
  57. package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.d.ts +2 -2
  58. package/dist/esm/adapters/Cornerstone3D/Segmentation/labelmapImagesFromBuffer.js +147 -179
  59. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.d.ts +1 -1
  60. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.js +15 -26
  61. package/dist/esm/adapters/Cornerstone3D/constants/index.d.ts +10 -0
  62. package/dist/esm/adapters/Cornerstone3D/constants/index.js +12 -2
  63. package/dist/esm/adapters/Cornerstone3D/metricHandler.js +57 -24
  64. package/dist/esm/adapters/Cornerstone3D/unitMapper.d.ts +5 -0
  65. package/dist/esm/adapters/Cornerstone3D/unitMapper.js +16 -0
  66. package/dist/esm/adapters/VTKjs/Segmentation.js +2 -4
  67. package/dist/esm/adapters/VTKjs/index.d.ts +1 -1
  68. package/dist/esm/adapters/enums/index.d.ts +1 -1
  69. package/dist/esm/adapters/helpers/checkOrientation.js +5 -7
  70. package/dist/esm/adapters/helpers/downloadDICOMData.js +1 -3
  71. package/dist/esm/adapters/helpers/getDatasetsFromImages.js +3 -7
  72. package/dist/esm/adapters/helpers/index.d.ts +9 -9
  73. package/dist/esm/adapters/helpers/scoordToWorld.d.ts +1 -1
  74. package/dist/esm/adapters/helpers/scoordToWorld.js +5 -13
  75. package/dist/esm/adapters/helpers/toPoint3.d.ts +1 -1
  76. package/dist/esm/adapters/helpers/toPoint3.js +1 -3
  77. package/dist/esm/adapters/helpers/toScoordType.d.ts +1 -1
  78. package/dist/esm/adapters/helpers/toScoordType.js +3 -7
  79. package/dist/esm/adapters/index.d.ts +4 -4
  80. package/dist/esm/adapters/index.js +3 -2
  81. package/dist/esm/utilities/createInstance.js +9 -8
  82. package/dist/esm/utilities/referencedMetadataProvider.d.ts +3 -4
  83. package/dist/esm/utilities/referencedMetadataProvider.js +8 -14
  84. package/dist/esm/version.d.ts +1 -1
  85. package/package.json +13 -9
  86. package/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -12
  87. package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -14
  88. package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -9
  89. package/dist/esm/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -11
@@ -1,31 +1,24 @@
1
- import { utilities, log, data, normalizers, derivations } from 'dcmjs';
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import { utilities, data, normalizers, derivations, log } from 'dcmjs';
2
3
  import ndarray from 'ndarray';
3
4
  import getDatasetsFromImages from '../helpers/getDatasetsFromImages.js';
4
5
  import checkOrientation from '../helpers/checkOrientation.js';
5
6
  import { utilities as utilities$1 } from '@cornerstonejs/core';
6
7
  import { Events } from '../enums/Events.js';
7
8
 
8
- const {
9
- rotateDirectionCosinesInPlane,
10
- flipImageOrientationPatient: flipIOP,
11
- flipMatrix2D,
12
- rotateMatrix902D
13
- } = utilities.orientation;
14
- const {
15
- BitArray,
16
- DicomMessage,
17
- DicomMetaDictionary
18
- } = data;
19
- const {
20
- Normalizer
21
- } = normalizers;
22
- const {
23
- Segmentation: SegmentationDerivation
24
- } = derivations;
25
- const {
26
- encode,
27
- decode
28
- } = utilities.compression;
9
+ const _utilities$orientatio = utilities.orientation,
10
+ rotateDirectionCosinesInPlane = _utilities$orientatio.rotateDirectionCosinesInPlane,
11
+ flipIOP = _utilities$orientatio.flipImageOrientationPatient,
12
+ flipMatrix2D = _utilities$orientatio.flipMatrix2D,
13
+ rotateMatrix902D = _utilities$orientatio.rotateMatrix902D;
14
+ const BitArray = data.BitArray,
15
+ DicomMessage = data.DicomMessage,
16
+ DicomMetaDictionary = data.DicomMetaDictionary;
17
+ const Normalizer = normalizers.Normalizer;
18
+ const SegmentationDerivation = derivations.Segmentation;
19
+ const _utilities$compressio = utilities.compression,
20
+ encode = _utilities$compressio.encode,
21
+ decode = _utilities$compressio.decode;
29
22
 
30
23
  /**
31
24
  *
@@ -75,10 +68,8 @@ function fillSegmentation(segmentation, inputLabelmaps3D) {
75
68
  const referencedFramesPerLabelmap = [];
76
69
  for (let labelmapIndex = 0; labelmapIndex < labelmaps3D.length; labelmapIndex++) {
77
70
  const labelmap3D = labelmaps3D[labelmapIndex];
78
- const {
79
- labelmaps2D,
80
- metadata
81
- } = labelmap3D;
71
+ const labelmaps2D = labelmap3D.labelmaps2D,
72
+ metadata = labelmap3D.metadata;
82
73
  const referencedFramesPerSegment = [];
83
74
  for (let i = 1; i < metadata.length; i++) {
84
75
  if (metadata[i]) {
@@ -88,9 +79,7 @@ function fillSegmentation(segmentation, inputLabelmaps3D) {
88
79
  for (let i = 0; i < labelmaps2D.length; i++) {
89
80
  const labelmap2D = labelmaps2D[i];
90
81
  if (labelmaps2D[i]) {
91
- const {
92
- segmentsOnLabelmap
93
- } = labelmap2D;
82
+ const segmentsOnLabelmap = labelmap2D.segmentsOnLabelmap;
94
83
  segmentsOnLabelmap.forEach(segmentIndex => {
95
84
  if (segmentIndex !== 0) {
96
85
  referencedFramesPerSegment[segmentIndex].push(i);
@@ -105,9 +94,7 @@ function fillSegmentation(segmentation, inputLabelmaps3D) {
105
94
  for (let labelmapIndex = 0; labelmapIndex < labelmaps3D.length; labelmapIndex++) {
106
95
  const referencedFramesPerSegment = referencedFramesPerLabelmap[labelmapIndex];
107
96
  const labelmap3D = labelmaps3D[labelmapIndex];
108
- const {
109
- metadata
110
- } = labelmap3D;
97
+ const metadata = labelmap3D.metadata;
111
98
  for (let segmentIndex = 1; segmentIndex < referencedFramesPerSegment.length; segmentIndex++) {
112
99
  const referencedFrameIndicies = referencedFramesPerSegment[segmentIndex];
113
100
  if (referencedFrameIndicies) {
@@ -149,9 +136,7 @@ function fillSegmentation(segmentation, inputLabelmaps3D) {
149
136
  return segmentation;
150
137
  }
151
138
  function _getLabelmapsFromReferencedFrameIndicies(labelmap3D, referencedFrameIndicies) {
152
- const {
153
- labelmaps2D
154
- } = labelmap3D;
139
+ const labelmaps2D = labelmap3D.labelmaps2D;
155
140
  const labelmaps = [];
156
141
  for (let i = 0; i < referencedFrameIndicies.length; i++) {
157
142
  const frame = referencedFrameIndicies[i];
@@ -188,14 +173,18 @@ function _createSegFromImages(images, isMultiframe, options) {
188
173
  * (available only for the overlapping case).
189
174
  */
190
175
  async function generateToolState(referencedImageIds, arrayBuffer, metadataProvider, options) {
191
- const {
192
- skipOverlapping = false,
193
- tolerance = 1e-3,
194
- TypedArrayConstructor = Uint8Array,
195
- maxBytesPerChunk = 199000000,
196
- eventTarget = null,
197
- triggerEvent = null
198
- } = options;
176
+ const _options$skipOverlapp = options.skipOverlapping,
177
+ skipOverlapping = _options$skipOverlapp === void 0 ? false : _options$skipOverlapp,
178
+ _options$tolerance = options.tolerance,
179
+ tolerance = _options$tolerance === void 0 ? 1e-3 : _options$tolerance,
180
+ _options$TypedArrayCo = options.TypedArrayConstructor,
181
+ TypedArrayConstructor = _options$TypedArrayCo === void 0 ? Uint8Array : _options$TypedArrayCo,
182
+ _options$maxBytesPerC = options.maxBytesPerChunk,
183
+ maxBytesPerChunk = _options$maxBytesPerC === void 0 ? 199000000 : _options$maxBytesPerC,
184
+ _options$eventTarget = options.eventTarget,
185
+ eventTarget = _options$eventTarget === void 0 ? null : _options$eventTarget,
186
+ _options$triggerEvent = options.triggerEvent,
187
+ triggerEvent = _options$triggerEvent === void 0 ? null : _options$triggerEvent;
199
188
  const dicomData = DicomMessage.readFile(arrayBuffer);
200
189
  const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
201
190
  dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);
@@ -239,9 +228,8 @@ async function generateToolState(referencedImageIds, arrayBuffer, metadataProvid
239
228
  // we don't have to call metadataProvider.get() for each imageId over
240
229
  // and over again.
241
230
  const sopUIDImageIdIndexMap = referencedImageIds.reduce((acc, imageId) => {
242
- const {
243
- sopInstanceUID
244
- } = metadataProvider.get('generalImageModule', imageId);
231
+ const _metadataProvider$get = metadataProvider.get('generalImageModule', imageId),
232
+ sopInstanceUID = _metadataProvider$get.sopInstanceUID;
245
233
  acc[sopInstanceUID] = imageId;
246
234
  return acc;
247
235
  }, {});
@@ -499,12 +487,10 @@ function findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadata
499
487
  if (!multiframe) {
500
488
  return imageId;
501
489
  }
502
- const {
503
- FrameOfReferenceUID,
504
- PerFrameFunctionalGroupsSequence,
505
- SourceImageSequence,
506
- ReferencedSeriesSequence
507
- } = multiframe;
490
+ const FrameOfReferenceUID = multiframe.FrameOfReferenceUID,
491
+ PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
492
+ SourceImageSequence = multiframe.SourceImageSequence,
493
+ ReferencedSeriesSequence = multiframe.ReferencedSeriesSequence;
508
494
  if (!PerFrameFunctionalGroupsSequence || PerFrameFunctionalGroupsSequence.length === 0) {
509
495
  return imageId;
510
496
  }
@@ -553,13 +539,11 @@ function findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadata
553
539
  */
554
540
 
555
541
  function checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance, TypedArrayConstructor, sopUIDImageIdIndexMap) {
556
- const {
557
- SharedFunctionalGroupsSequence,
558
- PerFrameFunctionalGroupsSequence,
559
- SegmentSequence,
560
- Rows,
561
- Columns
562
- } = multiframe;
542
+ const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
543
+ PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
544
+ SegmentSequence = multiframe.SegmentSequence,
545
+ Rows = multiframe.Rows,
546
+ Columns = multiframe.Columns;
563
547
  let numberOfSegs = SegmentSequence.length;
564
548
  if (numberOfSegs < 2) {
565
549
  return false;
@@ -597,7 +581,9 @@ function checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations
597
581
  frameSegmentsMapping.set(imageIdIndex, [frameSegment]);
598
582
  }
599
583
  }
600
- for (let [, role] of frameSegmentsMapping.entries()) {
584
+ for (let _ref of frameSegmentsMapping.entries()) {
585
+ var _ref2 = _slicedToArray(_ref, 2);
586
+ let role = _ref2[1];
601
587
  let temp2DArray = new TypedArrayConstructor(sliceLength).fill(0);
602
588
  for (let i = 0; i < role.length; ++i) {
603
589
  const frameSegment = role[i];
@@ -624,12 +610,10 @@ function checkSEGsOverlapping(pixelData, multiframe, imageIds, validOrientations
624
610
  return false;
625
611
  }
626
612
  function insertOverlappingPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBufferArray, pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance, TypedArrayConstructor, segmentsPixelIndices, sopUIDImageIdIndexMap) {
627
- const {
628
- SharedFunctionalGroupsSequence,
629
- PerFrameFunctionalGroupsSequence,
630
- Rows,
631
- Columns
632
- } = multiframe;
613
+ const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
614
+ PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
615
+ Rows = multiframe.Rows,
616
+ Columns = multiframe.Columns;
633
617
  const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
634
618
  const sliceLength = Columns * Rows;
635
619
  const arrayBufferLength = sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;
@@ -728,20 +712,16 @@ function insertOverlappingPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray,
728
712
  }
729
713
  }
730
714
  const getSegmentIndex = (multiframe, frame) => {
731
- const {
732
- PerFrameFunctionalGroupsSequence,
733
- SharedFunctionalGroupsSequence
734
- } = multiframe;
715
+ const PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
716
+ SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence;
735
717
  const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[frame];
736
718
  return PerFrameFunctionalGroups && PerFrameFunctionalGroups.SegmentIdentificationSequence ? PerFrameFunctionalGroups.SegmentIdentificationSequence.ReferencedSegmentNumber : SharedFunctionalGroupsSequence.SegmentIdentificationSequence ? SharedFunctionalGroupsSequence.SegmentIdentificationSequence.ReferencedSegmentNumber : undefined;
737
719
  };
738
720
  function insertPixelDataPlanar(segmentsOnFrame, segmentsOnFrameArray, labelmapBufferArray, pixelData, multiframe, imageIds, validOrientations, metadataProvider, tolerance, TypedArrayConstructor, segmentsPixelIndices, sopUIDImageIdIndexMap, imageIdMaps, eventTarget, triggerEvent) {
739
- const {
740
- SharedFunctionalGroupsSequence,
741
- PerFrameFunctionalGroupsSequence,
742
- Rows,
743
- Columns
744
- } = multiframe;
721
+ const SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
722
+ PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence,
723
+ Rows = multiframe.Rows,
724
+ Columns = multiframe.Columns;
745
725
  const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
746
726
  const sliceLength = Columns * Rows;
747
727
  let i = 0;
@@ -901,10 +881,8 @@ function getUnpackedChunks(data, maxBytesPerChunk) {
901
881
  * @return {String} The corresponding imageId.
902
882
  */
903
883
  function getImageIdOfSourceImageBySourceImageSequence(SourceImageSequence, sopUIDImageIdIndexMap) {
904
- const {
905
- ReferencedSOPInstanceUID,
906
- ReferencedFrameNumber
907
- } = SourceImageSequence;
884
+ const ReferencedSOPInstanceUID = SourceImageSequence.ReferencedSOPInstanceUID,
885
+ ReferencedFrameNumber = SourceImageSequence.ReferencedFrameNumber;
908
886
  const baseImageId = sopUIDImageIdIndexMap[ReferencedSOPInstanceUID];
909
887
  if (!baseImageId) {
910
888
  console.warn("No imageId found for SOPInstanceUID: ".concat(ReferencedSOPInstanceUID));
@@ -970,8 +948,8 @@ function getImageIdOfSourceImagebyGeometry(ReferencedSeriesInstanceUID, FrameOfR
970
948
 
971
949
  // For multiframe images, check each frame's position
972
950
  if (isMultiframe) {
973
- var _metadataProvider$get;
974
- const framePosition = (_metadataProvider$get = metadataProvider.get('imagePlaneModule', imageId)) === null || _metadataProvider$get === void 0 ? void 0 : _metadataProvider$get.imagePositionPatient;
951
+ var _metadataProvider$get2;
952
+ const framePosition = (_metadataProvider$get2 = metadataProvider.get('imagePlaneModule', imageId)) === null || _metadataProvider$get2 === void 0 ? void 0 : _metadataProvider$get2.imagePositionPatient;
975
953
  if (framePosition && utilities$1.isEqual(segFramePosition, framePosition, tolerance)) {
976
954
  return imageId;
977
955
  }
@@ -1134,7 +1112,10 @@ function calculateCentroid(imageIdIndexBufferIndex, multiframe, metadataProvider
1134
1112
  let worldYAcc = 0;
1135
1113
  let worldZAcc = 0;
1136
1114
  let count = 0;
1137
- for (const [imageIdIndex, bufferIndices] of Object.entries(imageIdIndexBufferIndex)) {
1115
+ for (const _ref3 of Object.entries(imageIdIndexBufferIndex)) {
1116
+ var _ref4 = _slicedToArray(_ref3, 2);
1117
+ const imageIdIndex = _ref4[0];
1118
+ const bufferIndices = _ref4[1];
1138
1119
  const z = Number(imageIdIndex);
1139
1120
  if (!bufferIndices || bufferIndices.length === 0) {
1140
1121
  continue;
@@ -1147,13 +1128,11 @@ function calculateCentroid(imageIdIndexBufferIndex, multiframe, metadataProvider
1147
1128
  console.debug('Missing imagePlaneModule metadata for centroid calculation');
1148
1129
  continue;
1149
1130
  }
1150
- const {
1151
- imagePositionPatient,
1152
- rowCosines,
1153
- columnCosines,
1154
- rowPixelSpacing,
1155
- columnPixelSpacing
1156
- } = imagePlaneModule;
1131
+ const imagePositionPatient = imagePlaneModule.imagePositionPatient,
1132
+ rowCosines = imagePlaneModule.rowCosines,
1133
+ columnCosines = imagePlaneModule.columnCosines,
1134
+ rowPixelSpacing = imagePlaneModule.rowPixelSpacing,
1135
+ columnPixelSpacing = imagePlaneModule.columnPixelSpacing;
1157
1136
  for (const bufferIndex of bufferIndices) {
1158
1137
  const y = Math.floor(bufferIndex / multiframe.Rows);
1159
1138
  const x = bufferIndex % multiframe.Rows;
@@ -1,14 +1,14 @@
1
- import MeasurementReport from "./MeasurementReport";
2
- import Length from "./Length";
3
- import FreehandRoi from "./FreehandRoi";
4
- import Bidirectional from "./Bidirectional";
5
- import EllipticalRoi from "./EllipticalRoi";
6
- import CircleRoi from "./CircleRoi";
7
- import ArrowAnnotate from "./ArrowAnnotate";
8
- import CobbAngle from "./CobbAngle";
9
- import Angle from "./Angle";
10
- import RectangleRoi from "./RectangleRoi";
11
- import * as Segmentation from "./Segmentation";
1
+ import MeasurementReport from './MeasurementReport';
2
+ import Length from './Length';
3
+ import FreehandRoi from './FreehandRoi';
4
+ import Bidirectional from './Bidirectional';
5
+ import EllipticalRoi from './EllipticalRoi';
6
+ import CircleRoi from './CircleRoi';
7
+ import ArrowAnnotate from './ArrowAnnotate';
8
+ import CobbAngle from './CobbAngle';
9
+ import Angle from './Angle';
10
+ import RectangleRoi from './RectangleRoi';
11
+ import * as Segmentation from './Segmentation';
12
12
  declare const CornerstoneSR: {
13
13
  Length: typeof Length;
14
14
  FreehandRoi: typeof FreehandRoi;
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class Angle extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
4
4
  description?: string;
@@ -1,25 +1,23 @@
1
- import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
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 { toScoord } from '../helpers/toScoordType.js';
6
- import '@cornerstonejs/core';
7
+ import '../helpers/scoordToWorld.js';
7
8
 
8
9
  var _Angle;
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
- CobbAngle: TID300CobbAngle
13
- } = utilities.TID300;
12
+ const TID300CobbAngle = utilities.TID300.CobbAngle;
14
13
  class Angle extends BaseAdapter3D {
15
14
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
16
- const {
17
- state,
18
- NUMGroup,
19
- worldCoords,
20
- referencedImageId,
21
- ReferencedFrameNumber
22
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
15
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
16
+ state = _MeasurementReport$ge.state,
17
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
18
+ worldCoords = _MeasurementReport$ge.worldCoords,
19
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
20
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
23
21
  const cachedStats = referencedImageId ? {
24
22
  ["imageId:".concat(referencedImageId)]: {
25
23
  angle: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : null
@@ -37,19 +35,14 @@ class Angle extends BaseAdapter3D {
37
35
  static getTID300RepresentationArguments(tool) {
38
36
  var _cachedStats;
39
37
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
40
- const {
41
- data,
42
- finding,
43
- findingSites,
44
- metadata
45
- } = tool;
46
- const {
47
- cachedStats = {},
48
- handles
49
- } = data;
50
- const {
51
- referencedImageId
52
- } = metadata;
38
+ const data = tool.data,
39
+ finding = tool.finding,
40
+ findingSites = tool.findingSites,
41
+ metadata = tool.metadata;
42
+ const _data$cachedStats = data.cachedStats,
43
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
44
+ handles = data.handles;
45
+ const referencedImageId = metadata.referencedImageId;
53
46
  const scoordProps = {
54
47
  is3DMeasurement,
55
48
  referencedImageId
@@ -75,7 +68,7 @@ class Angle extends BaseAdapter3D {
75
68
  }
76
69
  _Angle = Angle;
77
70
  (() => {
78
- _Angle.init("Angle", TID300CobbAngle);
71
+ _Angle.init('Angle', TID300CobbAngle);
79
72
  _Angle.registerLegacy();
80
73
  })();
81
74
 
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class ArrowAnnotate extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any, _trackingIdentifier: any): {
4
4
  description?: string;
@@ -1,44 +1,37 @@
1
- import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
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';
5
5
  import BaseAdapter3D from './BaseAdapter3D.js';
6
+ import '../helpers/downloadDICOMData.js';
6
7
  import { toScoord } from '../helpers/toScoordType.js';
8
+ import '../helpers/scoordToWorld.js';
7
9
 
8
10
  var _ArrowAnnotate;
9
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
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; }
11
- const {
12
- ArrowAnnotate: TID300ArrowAnnotate
13
- } = utilities.TID300;
14
- const {
15
- imageToWorldCoords
16
- } = utilities$1;
13
+ const TID300ArrowAnnotate = utilities.TID300.ArrowAnnotate;
14
+ const imageToWorldCoords = utilities$1.imageToWorldCoords;
17
15
  class ArrowAnnotate extends BaseAdapter3D {
18
16
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, _trackingIdentifier) {
19
- const {
20
- state,
21
- SCOORDGroup,
22
- worldCoords,
23
- referencedImageId,
24
- ReferencedFrameNumber
25
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
17
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
18
+ state = _MeasurementReport$ge.state,
19
+ SCOORDGroup = _MeasurementReport$ge.SCOORDGroup,
20
+ worldCoords = _MeasurementReport$ge.worldCoords,
21
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
22
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
26
23
  const text = state.annotation.data.label;
27
24
  if (worldCoords.length === 1 && SCOORDGroup) {
28
- const imagePixelModule = metadata.get("imagePixelModule", referencedImageId);
25
+ const imagePixelModule = metadata.get('imagePixelModule', referencedImageId);
29
26
  let xOffset = 10;
30
27
  let yOffset = 10;
31
28
  if (imagePixelModule) {
32
- const {
33
- columns,
34
- rows
35
- } = imagePixelModule;
29
+ const columns = imagePixelModule.columns,
30
+ rows = imagePixelModule.rows;
36
31
  xOffset = columns / 10;
37
32
  yOffset = rows / 10;
38
33
  }
39
- const {
40
- GraphicData
41
- } = SCOORDGroup;
34
+ const GraphicData = SCOORDGroup.GraphicData;
42
35
  const secondPoint = imageToWorldCoords(referencedImageId, [GraphicData[0] + xOffset, GraphicData[1] + yOffset]);
43
36
  worldCoords.push(secondPoint);
44
37
  }
@@ -54,25 +47,18 @@ class ArrowAnnotate extends BaseAdapter3D {
54
47
  }
55
48
  static getTID300RepresentationArguments(tool) {
56
49
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
57
- const {
58
- data,
59
- metadata,
60
- findingSites
61
- } = tool;
62
- const {
63
- finding
64
- } = tool;
65
- const {
66
- referencedImageId
67
- } = metadata;
50
+ const data = tool.data,
51
+ metadata = tool.metadata,
52
+ findingSites = tool.findingSites;
53
+ const finding = tool.finding;
54
+ const referencedImageId = metadata.referencedImageId;
68
55
  const scoordProps = {
69
56
  is3DMeasurement,
70
57
  referencedImageId
71
58
  };
72
- const {
73
- points,
74
- arrowFirst
75
- } = data.handles;
59
+ const _data$handles = data.handles,
60
+ points = _data$handles.points,
61
+ arrowFirst = _data$handles.arrowFirst;
76
62
  const point = arrowFirst ? points[0] : points[1];
77
63
  const point2 = arrowFirst ? points[1] : points[0];
78
64
  const pointImage = toScoord(scoordProps, point);
@@ -90,7 +76,7 @@ class ArrowAnnotate extends BaseAdapter3D {
90
76
  }
91
77
  _ArrowAnnotate = ArrowAnnotate;
92
78
  (() => {
93
- _ArrowAnnotate.init("ArrowAnnotate", TID300ArrowAnnotate);
79
+ _ArrowAnnotate.init('ArrowAnnotate', TID300ArrowAnnotate);
94
80
  _ArrowAnnotate.registerLegacy();
95
81
  })();
96
82
 
@@ -1,4 +1,4 @@
1
- import { type AdapterOptions, type MeasurementAdapter } from "./MeasurementReport";
1
+ import { type AdapterOptions, type MeasurementAdapter } from './MeasurementReport';
2
2
  export type Point = {
3
3
  x: number;
4
4
  y: number;
@@ -1,30 +1,30 @@
1
1
  import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
2
2
  import MeasurementReport from './MeasurementReport.js';
3
- import 'dcmjs';
3
+ import '../helpers/downloadDICOMData.js';
4
4
  import { toScoords } from '../helpers/toScoordType.js';
5
- import '@cornerstonejs/core';
5
+ import '../helpers/scoordToWorld.js';
6
6
 
7
7
  class BaseAdapter3D {
8
8
  static registerType() {
9
- let code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
10
- let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
9
+ let code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
10
+ let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
11
11
  let count = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
12
12
  let key = code;
13
13
  if (type) {
14
- key = "".concat(key).concat(key.length ? "-" : "").concat(type);
14
+ key = "".concat(key).concat(key.length ? '-' : '').concat(type);
15
15
  }
16
16
  if (count) {
17
- key = "".concat(key).concat(key.length ? "-" : "").concat(count);
17
+ key = "".concat(key).concat(key.length ? '-' : '').concat(count);
18
18
  }
19
19
  MeasurementReport.registerAdapterTypes(this, key);
20
20
  }
21
21
  static getPointsCount(graphicItem) {
22
- const is3DMeasurement = graphicItem.ValueType === "SCOORD3D";
22
+ const is3DMeasurement = graphicItem.ValueType === 'SCOORD3D';
23
23
  const pointSize = is3DMeasurement ? 3 : 2;
24
24
  return graphicItem.GraphicData.length / pointSize;
25
25
  }
26
26
  static getGraphicItems(measurementGroup, filter) {
27
- const items = measurementGroup.ContentSequence.filter(group => group.ValueType === "SCOORD" || group.ValueType === "SCOORD3D");
27
+ const items = measurementGroup.ContentSequence.filter(group => group.ValueType === 'SCOORD' || group.ValueType === 'SCOORD3D');
28
28
  return filter ? items.filter(filter) : items;
29
29
  }
30
30
  static getGraphicItem(measurementGroup) {
@@ -34,13 +34,9 @@ class BaseAdapter3D {
34
34
  return items[offset];
35
35
  }
36
36
  static getGraphicCode(graphicItem) {
37
- const {
38
- ConceptNameCodeSequence: conceptNameItem
39
- } = graphicItem;
40
- const {
41
- CodeValue: graphicValue,
42
- CodingSchemeDesignator: graphicDesignator
43
- } = conceptNameItem;
37
+ const conceptNameItem = graphicItem.ConceptNameCodeSequence;
38
+ const graphicValue = conceptNameItem.CodeValue,
39
+ graphicDesignator = conceptNameItem.CodingSchemeDesignator;
44
40
  return "".concat(graphicDesignator, ":").concat(graphicValue);
45
41
  }
46
42
  static getGraphicType(graphicItem) {
@@ -82,35 +78,28 @@ class BaseAdapter3D {
82
78
  if (this.trackingIdentifiers.has(trackingIdentifier)) {
83
79
  return true;
84
80
  }
85
- if (!trackingIdentifier.includes(":")) {
81
+ if (!trackingIdentifier.includes(':')) {
86
82
  return false;
87
83
  }
88
84
  return trackingIdentifier.startsWith(this.trackingIdentifierTextValue);
89
85
  }
90
86
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, trackingIdentifier) {
91
- const {
92
- defaultState: state,
93
- ReferencedFrameNumber
94
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
87
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
88
+ state = _MeasurementReport$ge.defaultState,
89
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
95
90
  state.annotation.data = {
96
91
  cachedStats: {},
97
92
  frameNumber: ReferencedFrameNumber,
98
- seriesLevel: (trackingIdentifier === null || trackingIdentifier === void 0 ? void 0 : trackingIdentifier.indexOf(":Series")) > 0
93
+ seriesLevel: (trackingIdentifier === null || trackingIdentifier === void 0 ? void 0 : trackingIdentifier.indexOf(':Series')) > 0
99
94
  };
100
95
  return state;
101
96
  }
102
97
  static getTID300RepresentationArguments(tool) {
103
98
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
104
- const {
105
- metadata
106
- } = tool;
107
- const {
108
- finding,
109
- findingSites
110
- } = tool;
111
- const {
112
- referencedImageId
113
- } = metadata;
99
+ const metadata = tool.metadata;
100
+ const finding = tool.finding,
101
+ findingSites = tool.findingSites;
102
+ const referencedImageId = metadata.referencedImageId;
114
103
  const scoordProps = {
115
104
  is3DMeasurement,
116
105
  referencedImageId
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class Bidirectional extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
4
4
  description?: string;