@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.
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,7 +1,8 @@
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 { toArray } from '../helpers/toArray.js';
5
+ import '../helpers/downloadDICOMData.js';
5
6
  import { toScoord } from '../helpers/toScoordType.js';
6
7
  import { scoordToWorld } from '../helpers/scoordToWorld.js';
7
8
  import BaseAdapter3D from './BaseAdapter3D.js';
@@ -9,26 +10,21 @@ import BaseAdapter3D from './BaseAdapter3D.js';
9
10
  var _Bidirectional;
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
- Bidirectional: TID300Bidirectional
14
- } = utilities.TID300;
15
- const LONG_AXIS = "Long Axis";
16
- const SHORT_AXIS = "Short Axis";
13
+ const TID300Bidirectional = utilities.TID300.Bidirectional;
14
+ const LONG_AXIS = 'Long Axis';
15
+ const SHORT_AXIS = 'Short Axis';
17
16
  class Bidirectional extends BaseAdapter3D {
18
17
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
19
- const {
20
- state,
21
- scoordArgs,
22
- referencedImageId,
23
- ReferencedFrameNumber
24
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
25
- const {
26
- ContentSequence
27
- } = MeasurementGroup;
18
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
19
+ state = _MeasurementReport$ge.state,
20
+ scoordArgs = _MeasurementReport$ge.scoordArgs,
21
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
22
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
23
+ const ContentSequence = MeasurementGroup.ContentSequence;
28
24
  const longAxisNUMGroup = toArray(ContentSequence).find(group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS);
29
25
  const shortAxisNUMGroup = toArray(ContentSequence).find(group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS);
30
- const longAxisScoordGroup = toArray(longAxisNUMGroup.ContentSequence).find(group => group.ValueType === "SCOORD3D" || group.ValueType === "SCOORD");
31
- const shortAxisScoordGroup = toArray(shortAxisNUMGroup.ContentSequence).find(group => group.ValueType === "SCOORD3D" || group.ValueType === "SCOORD");
26
+ const longAxisScoordGroup = toArray(longAxisNUMGroup.ContentSequence).find(group => group.ValueType === 'SCOORD3D' || group.ValueType === 'SCOORD');
27
+ const shortAxisScoordGroup = toArray(shortAxisNUMGroup.ContentSequence).find(group => group.ValueType === 'SCOORD3D' || group.ValueType === 'SCOORD');
32
28
  const worldCoords = [];
33
29
  worldCoords.push(...scoordToWorld(scoordArgs, longAxisScoordGroup));
34
30
  worldCoords.push(...scoordToWorld(scoordArgs, shortAxisScoordGroup));
@@ -52,26 +48,19 @@ class Bidirectional extends BaseAdapter3D {
52
48
  }
53
49
  static getTID300RepresentationArguments(tool) {
54
50
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
55
- const {
56
- data,
57
- finding,
58
- findingSites,
59
- metadata
60
- } = tool;
61
- const {
62
- cachedStats = {},
63
- handles
64
- } = data;
65
- const {
66
- referencedImageId
67
- } = metadata;
51
+ const data = tool.data,
52
+ finding = tool.finding,
53
+ findingSites = tool.findingSites,
54
+ metadata = tool.metadata;
55
+ const _data$cachedStats = data.cachedStats,
56
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
57
+ handles = data.handles;
58
+ const referencedImageId = metadata.referencedImageId;
68
59
  const scoordProps = {
69
60
  is3DMeasurement,
70
61
  referencedImageId
71
62
  };
72
- const {
73
- points
74
- } = handles;
63
+ const points = handles.points;
75
64
  const firstPointPairs = [points[0], points[1]];
76
65
  const secondPointPairs = [points[2], points[3]];
77
66
  const firstPointPairsDistance = Math.sqrt(Math.pow(firstPointPairs[0][0] - firstPointPairs[1][0], 2) + Math.pow(firstPointPairs[0][1] - firstPointPairs[1][1], 2) + Math.pow(firstPointPairs[0][2] - firstPointPairs[1][2], 2));
@@ -89,11 +78,10 @@ class Bidirectional extends BaseAdapter3D {
89
78
  const longAxisEndImage = toScoord(scoordProps, shortAxisPoints[1]);
90
79
  const shortAxisStartImage = toScoord(scoordProps, longAxisPoints[0]);
91
80
  const shortAxisEndImage = toScoord(scoordProps, longAxisPoints[1]);
92
- const {
93
- length,
94
- width,
95
- unit
96
- } = cachedStats["imageId:".concat(referencedImageId)] || {};
81
+ const _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
82
+ length = _ref.length,
83
+ width = _ref.width,
84
+ unit = _ref.unit;
97
85
  return {
98
86
  longAxis: {
99
87
  point1: longAxisStartImage,
@@ -116,7 +104,7 @@ class Bidirectional extends BaseAdapter3D {
116
104
  }
117
105
  _Bidirectional = Bidirectional;
118
106
  (() => {
119
- _Bidirectional.init("Bidirectional", TID300Bidirectional);
107
+ _Bidirectional.init('Bidirectional', TID300Bidirectional);
120
108
  _Bidirectional.registerLegacy();
121
109
  })();
122
110
 
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class CircleROI extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
4
4
  description?: string;
@@ -1,26 +1,24 @@
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
  import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
8
9
 
9
10
  var _CircleROI;
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
- Circle: TID300Circle
14
- } = utilities.TID300;
13
+ const TID300Circle = utilities.TID300.Circle;
15
14
  class CircleROI extends BaseAdapter3D {
16
15
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
17
- const {
18
- state,
19
- NUMGroup,
20
- worldCoords,
21
- referencedImageId,
22
- ReferencedFrameNumber
23
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType);
16
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, this.toolType),
17
+ state = _MeasurementReport$ge.state,
18
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
19
+ worldCoords = _MeasurementReport$ge.worldCoords,
20
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
21
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
24
22
  const referencedSOPInstanceUID = state.sopInstanceUid;
25
23
  const allNUMGroups = extractAllNUMGroups(MeasurementGroup, referencedSOPInstanceUID);
26
24
  const measurementNUMGroups = allNUMGroups[referencedSOPInstanceUID] || {};
@@ -43,36 +41,30 @@ class CircleROI extends BaseAdapter3D {
43
41
  }
44
42
  static getTID300RepresentationArguments(tool) {
45
43
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
46
- const {
47
- data,
48
- finding,
49
- findingSites,
50
- metadata
51
- } = tool;
52
- const {
53
- cachedStats = {},
54
- handles
55
- } = data;
56
- const {
57
- referencedImageId
58
- } = metadata;
44
+ const data = tool.data,
45
+ finding = tool.finding,
46
+ findingSites = tool.findingSites,
47
+ metadata = tool.metadata;
48
+ const _data$cachedStats = data.cachedStats,
49
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
50
+ handles = data.handles;
51
+ const referencedImageId = metadata.referencedImageId;
59
52
  const scoordProps = {
60
53
  is3DMeasurement,
61
54
  referencedImageId
62
55
  };
63
56
  const center = toScoord(scoordProps, handles.points[0]);
64
57
  const end = toScoord(scoordProps, handles.points[1]);
65
- const {
66
- area,
67
- radius,
68
- max,
69
- min,
70
- stdDev,
71
- mean,
72
- modalityUnit,
73
- radiusUnit,
74
- areaUnit
75
- } = cachedStats["imageId:".concat(referencedImageId)] || {};
58
+ const _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
59
+ area = _ref.area,
60
+ radius = _ref.radius,
61
+ max = _ref.max,
62
+ min = _ref.min,
63
+ stdDev = _ref.stdDev,
64
+ mean = _ref.mean,
65
+ modalityUnit = _ref.modalityUnit,
66
+ radiusUnit = _ref.radiusUnit,
67
+ areaUnit = _ref.areaUnit;
76
68
  const perimeter = 2 * Math.PI * radius;
77
69
  return {
78
70
  area,
@@ -96,7 +88,7 @@ class CircleROI extends BaseAdapter3D {
96
88
  }
97
89
  _CircleROI = CircleROI;
98
90
  (() => {
99
- _CircleROI.init("CircleROI", TID300Circle);
91
+ _CircleROI.init('CircleROI', TID300Circle);
100
92
  _CircleROI.registerLegacy();
101
93
  })();
102
94
 
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class CobbAngle extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
4
4
  description?: string;
@@ -1,25 +1,24 @@
1
- import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
3
  import { utilities } from 'dcmjs';
3
4
  import MeasurementReport from './MeasurementReport.js';
4
5
  import BaseAdapter3D from './BaseAdapter3D.js';
6
+ import '../helpers/downloadDICOMData.js';
5
7
  import { toScoords } from '../helpers/toScoordType.js';
6
- import '@cornerstonejs/core';
8
+ import '../helpers/scoordToWorld.js';
7
9
 
8
10
  var _CobbAngle;
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
- CobbAngle: TID300CobbAngle
13
- } = utilities.TID300;
13
+ const TID300CobbAngle = utilities.TID300.CobbAngle;
14
14
  class CobbAngle extends BaseAdapter3D {
15
15
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
16
- const {
17
- state,
18
- NUMGroup,
19
- referencedImageId,
20
- worldCoords,
21
- ReferencedFrameNumber
22
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, CobbAngle.toolType);
16
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, CobbAngle.toolType),
17
+ state = _MeasurementReport$ge.state,
18
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
19
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
20
+ worldCoords = _MeasurementReport$ge.worldCoords,
21
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
23
22
  state.annotation.data = _objectSpread(_objectSpread({}, state.annotation.data), {}, {
24
23
  handles: _objectSpread(_objectSpread({}, state.annotation.data.handles), {}, {
25
24
  points: [worldCoords[0], worldCoords[1], worldCoords[2], worldCoords[3]]
@@ -37,28 +36,26 @@ class CobbAngle extends BaseAdapter3D {
37
36
  }
38
37
  static getTID300RepresentationArguments(tool) {
39
38
  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;
39
+ const data = tool.data,
40
+ finding = tool.finding,
41
+ findingSites = tool.findingSites,
42
+ metadata = tool.metadata;
43
+ const _data$cachedStats = data.cachedStats,
44
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
45
+ handles = data.handles;
46
+ const referencedImageId = metadata.referencedImageId;
53
47
  const scoordProps = {
54
48
  is3DMeasurement,
55
49
  referencedImageId
56
50
  };
57
51
  const points = toScoords(scoordProps, handles.points);
58
- const [point1, point2, point3, point4] = points;
59
- const {
60
- angle
61
- } = cachedStats["imageId:".concat(referencedImageId)] || {};
52
+ const _points = _slicedToArray(points, 4),
53
+ point1 = _points[0],
54
+ point2 = _points[1],
55
+ point3 = _points[2],
56
+ point4 = _points[3];
57
+ const _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
58
+ angle = _ref.angle;
62
59
  return {
63
60
  point1,
64
61
  point2,
@@ -75,7 +72,7 @@ class CobbAngle extends BaseAdapter3D {
75
72
  }
76
73
  _CobbAngle = CobbAngle;
77
74
  (() => {
78
- _CobbAngle.init("CobbAngle", TID300CobbAngle);
75
+ _CobbAngle.init('CobbAngle', TID300CobbAngle);
79
76
  _CobbAngle.registerLegacy();
80
77
  })();
81
78
 
@@ -0,0 +1,5 @@
1
+ declare const TID300Polyline: any;
2
+ export default class ControlPointPolyline extends TID300Polyline {
3
+ contentItem(): any;
4
+ }
5
+ export {};
@@ -0,0 +1,85 @@
1
+ import { sr, utilities } from 'dcmjs';
2
+ import { CONTROL_POINTS_CODE, SPLINE_TYPE_CODE } from './constants/index.js';
3
+
4
+ const valueTypes = sr.valueTypes;
5
+ const TID300Polyline = utilities.TID300.Polyline;
6
+ class ControlPointPolyline extends TID300Polyline {
7
+ contentItem() {
8
+ const contentEntries = super.contentItem();
9
+ const self = this;
10
+ const _self$props = self.props,
11
+ controlPoints = _self$props.controlPoints,
12
+ use3DSpatialCoordinates = _self$props.use3DSpatialCoordinates,
13
+ ReferencedSOPSequence = _self$props.ReferencedSOPSequence,
14
+ ReferencedFrameOfReferenceUID = _self$props.ReferencedFrameOfReferenceUID,
15
+ is3DMeasurement = _self$props.use3DSpatialCoordinates;
16
+ if (!(controlPoints !== null && controlPoints !== void 0 && controlPoints.length)) {
17
+ return contentEntries;
18
+ }
19
+ const GraphicData = self.flattenPoints({
20
+ points: controlPoints,
21
+ use3DSpatialCoordinates
22
+ });
23
+ const GraphicType = valueTypes.GraphicTypes.MULTIPOINT;
24
+ const scoordPlain = is3DMeasurement ? {
25
+ RelationshipType: valueTypes.RelationshipTypes.CONTAINS,
26
+ ValueType: 'SCOORD3D',
27
+ ConceptNameCodeSequence: [{
28
+ CodeValue: CONTROL_POINTS_CODE.value,
29
+ CodingSchemeDesignator: CONTROL_POINTS_CODE.schemeDesignator,
30
+ CodeMeaning: CONTROL_POINTS_CODE.meaning
31
+ }],
32
+ GraphicType,
33
+ GraphicData,
34
+ ReferencedFrameOfReferenceUID,
35
+ ContentSequence: [{
36
+ RelationshipType: valueTypes.RelationshipTypes.SELECTED_FROM,
37
+ ValueType: valueTypes.ValueTypes.IMAGE,
38
+ ReferencedSOPSequence
39
+ }]
40
+ } : {
41
+ RelationshipType: valueTypes.RelationshipTypes.CONTAINS,
42
+ ValueType: 'SCOORD',
43
+ ConceptNameCodeSequence: [{
44
+ CodeValue: CONTROL_POINTS_CODE.value,
45
+ CodingSchemeDesignator: CONTROL_POINTS_CODE.schemeDesignator,
46
+ CodeMeaning: CONTROL_POINTS_CODE.meaning
47
+ }],
48
+ GraphicType,
49
+ GraphicData,
50
+ ContentSequence: [{
51
+ RelationshipType: valueTypes.RelationshipTypes.SELECTED_FROM,
52
+ ValueType: valueTypes.ValueTypes.IMAGE,
53
+ ReferencedSOPSequence
54
+ }]
55
+ };
56
+ const splineType = self.props.splineType;
57
+ const entries = contentEntries;
58
+ const numEntry = entries.find(e => e.ValueType === 'NUM');
59
+ if (numEntry) {
60
+ const inner = numEntry.ContentSequence;
61
+ const innerArray = Array.isArray(inner) ? inner : inner ? [inner] : [];
62
+ numEntry.ContentSequence = [...innerArray, scoordPlain];
63
+ } else {
64
+ entries.push(scoordPlain);
65
+ }
66
+ if (splineType) {
67
+ const splineTypeObsContext = {
68
+ RelationshipType: valueTypes.RelationshipTypes.HAS_OBS_CONTEXT,
69
+ ValueType: 'TEXT',
70
+ ConceptNameCodeSequence: {
71
+ CodeValue: SPLINE_TYPE_CODE.value,
72
+ CodingSchemeDesignator: SPLINE_TYPE_CODE.schemeDesignator,
73
+ CodeMeaning: SPLINE_TYPE_CODE.meaning
74
+ },
75
+ TextValue: splineType
76
+ };
77
+ const hasObsContextIndex = entries.findIndex(e => e.RelationshipType === valueTypes.RelationshipTypes.HAS_OBS_CONTEXT);
78
+ const insertIndex = hasObsContextIndex >= 0 ? hasObsContextIndex + 2 : 2;
79
+ entries.splice(insertIndex, 0, splineTypeObsContext);
80
+ }
81
+ return entries;
82
+ }
83
+ }
84
+
85
+ export { ControlPointPolyline as default };
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class EllipticalROI extends BaseAdapter3D {
3
3
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
4
4
  description?: string;
@@ -1,26 +1,24 @@
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
  import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
8
9
 
9
10
  var _EllipticalROI;
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
- Ellipse: TID300Ellipse
14
- } = utilities.TID300;
13
+ const TID300Ellipse = utilities.TID300.Ellipse;
15
14
  class EllipticalROI extends BaseAdapter3D {
16
15
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
17
- const {
18
- state,
19
- NUMGroup,
20
- worldCoords,
21
- referencedImageId,
22
- ReferencedFrameNumber
23
- } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, EllipticalROI.toolType);
16
+ const _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, EllipticalROI.toolType),
17
+ state = _MeasurementReport$ge.state,
18
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
19
+ worldCoords = _MeasurementReport$ge.worldCoords,
20
+ referencedImageId = _MeasurementReport$ge.referencedImageId,
21
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
24
22
  const referencedSOPInstanceUID = state.sopInstanceUid;
25
23
  const allNUMGroups = extractAllNUMGroups(MeasurementGroup, referencedSOPInstanceUID);
26
24
  const measurementNUMGroups = allNUMGroups[referencedSOPInstanceUID] || {};
@@ -39,20 +37,15 @@ class EllipticalROI extends BaseAdapter3D {
39
37
  }
40
38
  static getTID300RepresentationArguments(tool) {
41
39
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
42
- const {
43
- data,
44
- finding,
45
- findingSites,
46
- metadata
47
- } = tool;
48
- const {
49
- cachedStats = {},
50
- handles
51
- } = data;
40
+ const data = tool.data,
41
+ finding = tool.finding,
42
+ findingSites = tool.findingSites,
43
+ metadata = tool.metadata;
44
+ const _data$cachedStats = data.cachedStats,
45
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
46
+ handles = data.handles;
52
47
  const rotation = data.initialRotation || 0;
53
- const {
54
- referencedImageId
55
- } = metadata;
48
+ const referencedImageId = metadata.referencedImageId;
56
49
  const scoordProps = {
57
50
  is3DMeasurement,
58
51
  referencedImageId
@@ -77,15 +70,14 @@ class EllipticalROI extends BaseAdapter3D {
77
70
  } else {
78
71
  points.push(left, right, top, bottom);
79
72
  }
80
- const {
81
- area,
82
- max,
83
- min,
84
- mean,
85
- stdDev,
86
- modalityUnit,
87
- areaUnit
88
- } = cachedStats["imageId:".concat(referencedImageId)] || {};
73
+ const _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
74
+ area = _ref.area,
75
+ max = _ref.max,
76
+ min = _ref.min,
77
+ mean = _ref.mean,
78
+ stdDev = _ref.stdDev,
79
+ modalityUnit = _ref.modalityUnit,
80
+ areaUnit = _ref.areaUnit;
89
81
  const convertedPoints = points.map(point => toScoord(scoordProps, point));
90
82
  return {
91
83
  area,
@@ -105,6 +97,6 @@ class EllipticalROI extends BaseAdapter3D {
105
97
  }
106
98
  }
107
99
  _EllipticalROI = EllipticalROI;
108
- _EllipticalROI.init("EllipticalROI", TID300Ellipse);
100
+ _EllipticalROI.init('EllipticalROI', TID300Ellipse);
109
101
 
110
102
  export { EllipticalROI as default };
@@ -1,4 +1,4 @@
1
- import Probe from "./Probe";
1
+ import Probe from './Probe';
2
2
  export default class KeyImage extends Probe {
3
3
  static trackingSeriesIdentifier: string;
4
4
  static trackingPointIdentifier: string;
@@ -2,23 +2,17 @@ import { utilities } from 'dcmjs';
2
2
  import Probe from './Probe.js';
3
3
 
4
4
  var _KeyImage;
5
- const {
6
- Point: TID300Point
7
- } = utilities.TID300;
5
+ const TID300Point = utilities.TID300.Point;
8
6
  class KeyImage extends Probe {
9
7
  static getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, metadata, trackingIdentifier) {
10
8
  const baseData = super.getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, metadata, trackingIdentifier);
11
- const {
12
- data
13
- } = baseData.annotation;
14
- data.isPoint = trackingIdentifier.indexOf("Point") !== -1;
9
+ const data = baseData.annotation.data;
10
+ data.isPoint = trackingIdentifier.indexOf('Point') !== -1;
15
11
  return baseData;
16
12
  }
17
13
  static getTID300RepresentationArguments(tool) {
18
14
  const tid300Arguments = super.getTID300RepresentationArguments(tool);
19
- const {
20
- data
21
- } = tool;
15
+ const data = tool.data;
22
16
  if (data.isPoint) {
23
17
  if (data.seriesLevel) {
24
18
  tid300Arguments.trackingIdentifierTextValue = this.trackingSeriesPointIdentifier;
@@ -39,7 +33,7 @@ class KeyImage extends Probe {
39
33
  }
40
34
  }
41
35
  _KeyImage = KeyImage;
42
- _KeyImage.init("KeyImage", TID300Point, {
36
+ _KeyImage.init('KeyImage', TID300Point, {
43
37
  parentType: Probe.toolType
44
38
  });
45
39
  _KeyImage.trackingSeriesIdentifier = "".concat(_KeyImage.trackingIdentifierTextValue, ":Series");
@@ -1,10 +1,12 @@
1
- import type { Types } from "@cornerstonejs/tools";
1
+ import type { Types } from '@cornerstonejs/tools';
2
2
  export default class LabelData {
3
3
  protected tid300Item: any;
4
4
  protected annotation: Types.Annotation;
5
5
  ReferencedSOPSequence: any;
6
6
  constructor(tid300Item: any, annotation: Types.Annotation);
7
7
  contentItem(): any;
8
+ protected fixScoordRelationships(contentEntries: unknown[]): void;
9
+ protected normalizeContentSequence(contentSeq: unknown): Array<Record<string, unknown>>;
8
10
  filterCornerstoneFreeText(contentEntries: any): void;
9
11
  createQualitativeLabel(label: string): any;
10
12
  createQualitativeLabelPosition(annotation: Types.Annotation): any;