@cornerstonejs/adapters 2.0.0-beta.8 → 2.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 (138) hide show
  1. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +493 -0
  2. package/dist/esm/adapters/Cornerstone/Angle.d.ts +42 -0
  3. package/dist/esm/adapters/Cornerstone/Angle.js +93 -0
  4. package/dist/esm/adapters/Cornerstone/ArrowAnnotate.d.ts +49 -0
  5. package/dist/esm/adapters/Cornerstone/ArrowAnnotate.js +97 -0
  6. package/dist/esm/adapters/Cornerstone/Bidirectional.d.ts +89 -0
  7. package/dist/esm/adapters/Cornerstone/Bidirectional.js +170 -0
  8. package/dist/esm/adapters/Cornerstone/CircleRoi.d.ts +58 -0
  9. package/dist/esm/adapters/Cornerstone/CircleRoi.js +115 -0
  10. package/dist/esm/adapters/Cornerstone/CobbAngle.d.ts +49 -0
  11. package/dist/esm/adapters/Cornerstone/CobbAngle.js +98 -0
  12. package/dist/esm/adapters/Cornerstone/EllipticalRoi.d.ts +57 -0
  13. package/dist/esm/adapters/Cornerstone/EllipticalRoi.js +178 -0
  14. package/dist/esm/adapters/Cornerstone/FreehandRoi.d.ts +42 -0
  15. package/dist/esm/adapters/Cornerstone/FreehandRoi.js +89 -0
  16. package/dist/esm/adapters/Cornerstone/Length.d.ts +39 -0
  17. package/dist/esm/adapters/Cornerstone/Length.js +82 -0
  18. package/dist/esm/adapters/Cornerstone/MeasurementReport.d.ts +29 -0
  19. package/dist/esm/adapters/Cornerstone/MeasurementReport.js +276 -0
  20. package/dist/esm/adapters/Cornerstone/ParametricMap.d.ts +7 -0
  21. package/dist/esm/adapters/Cornerstone/ParametricMap.js +210 -0
  22. package/dist/esm/adapters/Cornerstone/RectangleRoi.d.ts +44 -0
  23. package/dist/esm/adapters/Cornerstone/RectangleRoi.js +97 -0
  24. package/dist/esm/adapters/Cornerstone/Segmentation.d.ts +7 -0
  25. package/dist/esm/adapters/Cornerstone/Segmentation.js +73 -0
  26. package/dist/esm/adapters/Cornerstone/Segmentation_3X.d.ts +13 -0
  27. package/dist/esm/adapters/Cornerstone/Segmentation_3X.js +411 -0
  28. package/dist/esm/adapters/Cornerstone/Segmentation_4X.d.ts +13 -0
  29. package/dist/esm/adapters/Cornerstone/Segmentation_4X.js +1152 -0
  30. package/dist/esm/adapters/Cornerstone/cornerstone4Tag.d.ts +2 -0
  31. package/dist/esm/adapters/Cornerstone/cornerstone4Tag.js +3 -0
  32. package/dist/esm/adapters/Cornerstone/index.d.ts +34 -0
  33. package/dist/esm/adapters/Cornerstone/index.js +33 -0
  34. package/dist/esm/adapters/Cornerstone3D/Angle.js +109 -0
  35. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.d.ts +35 -0
  36. package/dist/esm/adapters/Cornerstone3D/ArrowAnnotate.js +123 -0
  37. package/dist/esm/adapters/Cornerstone3D/Bidirectional.js +147 -0
  38. package/dist/{types → esm}/adapters/Cornerstone3D/CircleROI.d.ts +0 -7
  39. package/dist/esm/adapters/Cornerstone3D/CircleROI.js +96 -0
  40. package/dist/esm/adapters/Cornerstone3D/CobbAngle.js +113 -0
  41. package/dist/esm/adapters/Cornerstone3D/CodingScheme.d.ts +9 -0
  42. package/dist/esm/adapters/Cornerstone3D/CodingScheme.js +15 -0
  43. package/dist/esm/adapters/Cornerstone3D/EllipticalROI.js +160 -0
  44. package/dist/esm/adapters/Cornerstone3D/Length.d.ts +41 -0
  45. package/dist/esm/adapters/Cornerstone3D/Length.js +101 -0
  46. package/dist/{types → esm}/adapters/Cornerstone3D/MeasurementReport.d.ts +1 -8
  47. package/dist/esm/adapters/Cornerstone3D/MeasurementReport.js +281 -0
  48. package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.d.ts +3 -0
  49. package/dist/esm/adapters/Cornerstone3D/ParametricMap/generateToolState.js +11 -0
  50. package/dist/esm/adapters/Cornerstone3D/ParametricMap/index.d.ts +1 -0
  51. package/dist/esm/adapters/Cornerstone3D/ParametricMap/index.js +1 -0
  52. package/dist/{types → esm}/adapters/Cornerstone3D/PlanarFreehandROI.d.ts +0 -2
  53. package/dist/esm/adapters/Cornerstone3D/PlanarFreehandROI.js +126 -0
  54. package/dist/esm/adapters/Cornerstone3D/Probe.d.ts +33 -0
  55. package/dist/esm/adapters/Cornerstone3D/Probe.js +87 -0
  56. package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.d.ts +67 -0
  57. package/dist/esm/adapters/Cornerstone3D/RTStruct/RTSS.js +175 -0
  58. package/dist/esm/adapters/Cornerstone3D/RTStruct/index.js +6 -0
  59. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.d.ts +13 -0
  60. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.js +22 -0
  61. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getRTROIObservationsSequence.d.ts +6 -0
  62. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getRTROIObservationsSequence.js +10 -0
  63. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getRTSeriesModule.d.ts +4 -0
  64. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getRTSeriesModule.js +9 -0
  65. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.d.ts +11 -0
  66. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js +22 -0
  67. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.d.ts +4 -0
  68. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js +27 -0
  69. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.d.ts +7 -0
  70. package/dist/esm/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js +12 -0
  71. package/dist/esm/adapters/Cornerstone3D/RectangleROI.js +94 -0
  72. package/dist/{types → esm}/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.d.ts +0 -6
  73. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.js +34 -0
  74. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.d.ts +2 -0
  75. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateSegmentation.js +29 -0
  76. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.d.ts +2 -0
  77. package/dist/esm/adapters/Cornerstone3D/Segmentation/generateToolState.js +9 -0
  78. package/dist/esm/adapters/Cornerstone3D/Segmentation/index.js +3 -0
  79. package/dist/esm/adapters/Cornerstone3D/UltrasoundDirectional.js +93 -0
  80. package/dist/esm/adapters/Cornerstone3D/cornerstone3DTag.d.ts +2 -0
  81. package/dist/esm/adapters/Cornerstone3D/cornerstone3DTag.js +3 -0
  82. package/dist/{types → esm}/adapters/Cornerstone3D/index.d.ts +18 -6
  83. package/dist/esm/adapters/Cornerstone3D/index.js +45 -0
  84. package/dist/esm/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.js +18 -0
  85. package/dist/esm/adapters/VTKjs/Segmentation.d.ts +3 -0
  86. package/dist/esm/adapters/VTKjs/Segmentation.js +186 -0
  87. package/dist/esm/adapters/VTKjs/index.d.ts +5 -0
  88. package/dist/esm/adapters/VTKjs/index.js +7 -0
  89. package/dist/{types → esm}/adapters/enums/Events.d.ts +0 -6
  90. package/dist/esm/adapters/enums/Events.js +7 -0
  91. package/dist/esm/adapters/enums/index.js +1 -0
  92. package/dist/esm/adapters/helpers/checkIfPerpendicular.d.ts +1 -0
  93. package/dist/esm/adapters/helpers/checkIfPerpendicular.js +7 -0
  94. package/dist/esm/adapters/helpers/checkOrientation.d.ts +1 -0
  95. package/dist/esm/adapters/helpers/checkOrientation.js +22 -0
  96. package/dist/esm/adapters/helpers/codeMeaningEquals.d.ts +2 -0
  97. package/dist/esm/adapters/helpers/codeMeaningEquals.js +7 -0
  98. package/dist/esm/adapters/helpers/compareArrays.d.ts +1 -0
  99. package/dist/esm/adapters/helpers/compareArrays.js +16 -0
  100. package/dist/esm/adapters/helpers/downloadDICOMData.d.ts +5 -0
  101. package/dist/esm/adapters/helpers/downloadDICOMData.js +26 -0
  102. package/dist/esm/adapters/helpers/getDatasetsFromImages.d.ts +1 -0
  103. package/dist/esm/adapters/helpers/getDatasetsFromImages.js +33 -0
  104. package/dist/esm/adapters/helpers/graphicTypeEquals.d.ts +2 -0
  105. package/dist/esm/adapters/helpers/graphicTypeEquals.js +7 -0
  106. package/dist/esm/adapters/helpers/index.js +4 -0
  107. package/dist/esm/adapters/helpers/toArray.js +5 -0
  108. package/dist/esm/adapters/index.d.ts +66 -0
  109. package/dist/esm/adapters/index.js +24 -0
  110. package/dist/esm/index.d.ts +2 -0
  111. package/dist/esm/index.js +5 -0
  112. package/dist/umd/adapters.umd.js +5769 -0
  113. package/dist/umd/adapters.umd.js.map +1 -0
  114. package/package.json +47 -11
  115. package/dist/adapters.es.js +0 -5585
  116. package/dist/adapters.es.js.map +0 -1
  117. package/dist/types/adapters/Cornerstone/index.d.ts +0 -16
  118. package/dist/types/adapters/Cornerstone3D/RTStruct/RTSS.d.ts +0 -26
  119. package/dist/types/adapters/Cornerstone3D/Segmentation/generateSegmentation.d.ts +0 -8
  120. package/dist/types/adapters/Cornerstone3D/Segmentation/generateToolState.d.ts +0 -16
  121. package/dist/types/adapters/VTKjs/index.d.ts +0 -4
  122. package/dist/types/adapters/helpers/codeMeaningEquals.d.ts +0 -9
  123. package/dist/types/adapters/helpers/downloadDICOMData.d.ts +0 -10
  124. package/dist/types/adapters/helpers/graphicTypeEquals.d.ts +0 -7
  125. package/dist/types/adapters/index.d.ts +0 -49
  126. package/dist/types/index.d.ts +0 -2
  127. /package/dist/{types → esm}/adapters/Cornerstone3D/Angle.d.ts +0 -0
  128. /package/dist/{types → esm}/adapters/Cornerstone3D/Bidirectional.d.ts +0 -0
  129. /package/dist/{types → esm}/adapters/Cornerstone3D/CobbAngle.d.ts +0 -0
  130. /package/dist/{types → esm}/adapters/Cornerstone3D/EllipticalROI.d.ts +0 -0
  131. /package/dist/{types → esm}/adapters/Cornerstone3D/RTStruct/index.d.ts +0 -0
  132. /package/dist/{types → esm}/adapters/Cornerstone3D/RectangleROI.d.ts +0 -0
  133. /package/dist/{types → esm}/adapters/Cornerstone3D/Segmentation/index.d.ts +0 -0
  134. /package/dist/{types → esm}/adapters/Cornerstone3D/UltrasoundDirectional.d.ts +0 -0
  135. /package/dist/{types → esm}/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.d.ts +0 -0
  136. /package/dist/{types → esm}/adapters/enums/index.d.ts +0 -0
  137. /package/dist/{types → esm}/adapters/helpers/index.d.ts +0 -0
  138. /package/dist/{types → esm}/adapters/helpers/toArray.d.ts +0 -0
@@ -0,0 +1,113 @@
1
+ import { slicedToArray as _slicedToArray, createClass as _createClass, defineProperty as _defineProperty, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { utilities } from 'dcmjs';
3
+ import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
4
+ import MeasurementReport from './MeasurementReport.js';
5
+
6
+ var _CobbAngle;
7
+ var TID300CobbAngle = utilities.TID300.CobbAngle;
8
+ var MEASUREMENT_TYPE = "CobbAngle";
9
+ var trackingIdentifierTextValue = "".concat(CORNERSTONE_3D_TAG, ":").concat(MEASUREMENT_TYPE);
10
+ var CobbAngle = /*#__PURE__*/function () {
11
+ function CobbAngle() {
12
+ _classCallCheck(this, CobbAngle);
13
+ }
14
+ return _createClass(CobbAngle, null, [{
15
+ key: "getMeasurementData",
16
+ value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {
17
+ var _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, CobbAngle.toolType),
18
+ defaultState = _MeasurementReport$ge.defaultState,
19
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
20
+ SCOORDGroup = _MeasurementReport$ge.SCOORDGroup,
21
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
22
+ var referencedImageId = defaultState.annotation.metadata.referencedImageId;
23
+ var GraphicData = SCOORDGroup.GraphicData;
24
+ var worldCoords = [];
25
+ for (var i = 0; i < GraphicData.length; i += 2) {
26
+ var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]);
27
+ worldCoords.push(point);
28
+ }
29
+ var state = defaultState;
30
+ state.annotation.data = {
31
+ handles: {
32
+ points: [worldCoords[0], worldCoords[1], worldCoords[2], worldCoords[3]],
33
+ activeHandleIndex: 0,
34
+ textBox: {
35
+ hasMoved: false
36
+ }
37
+ },
38
+ cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), {
39
+ angle: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : null
40
+ }),
41
+ frameNumber: ReferencedFrameNumber
42
+ };
43
+ return state;
44
+ }
45
+ }, {
46
+ key: "getTID300RepresentationArguments",
47
+ value: function getTID300RepresentationArguments(tool, worldToImageCoords) {
48
+ var data = tool.data,
49
+ finding = tool.finding,
50
+ findingSites = tool.findingSites,
51
+ metadata = tool.metadata;
52
+ var _data$cachedStats = data.cachedStats,
53
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
54
+ handles = data.handles;
55
+ var referencedImageId = metadata.referencedImageId;
56
+ if (!referencedImageId) {
57
+ throw new Error("CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined");
58
+ }
59
+ var start1 = worldToImageCoords(referencedImageId, handles.points[0]);
60
+ var end1 = worldToImageCoords(referencedImageId, handles.points[1]);
61
+ var start2 = worldToImageCoords(referencedImageId, handles.points[2]);
62
+ var end2 = worldToImageCoords(referencedImageId, handles.points[3]);
63
+ var point1 = {
64
+ x: start1[0],
65
+ y: start1[1]
66
+ };
67
+ var point2 = {
68
+ x: end1[0],
69
+ y: end1[1]
70
+ };
71
+ var point3 = {
72
+ x: start2[0],
73
+ y: start2[1]
74
+ };
75
+ var point4 = {
76
+ x: end2[0],
77
+ y: end2[1]
78
+ };
79
+ var _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
80
+ angle = _ref.angle;
81
+ return {
82
+ point1: point1,
83
+ point2: point2,
84
+ point3: point3,
85
+ point4: point4,
86
+ rAngle: angle,
87
+ trackingIdentifierTextValue: trackingIdentifierTextValue,
88
+ finding: finding,
89
+ findingSites: findingSites || []
90
+ };
91
+ }
92
+ }]);
93
+ }();
94
+ _CobbAngle = CobbAngle;
95
+ _CobbAngle.toolType = MEASUREMENT_TYPE;
96
+ _CobbAngle.utilityToolType = MEASUREMENT_TYPE;
97
+ _CobbAngle.TID300Representation = TID300CobbAngle;
98
+ _CobbAngle.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) {
99
+ if (!TrackingIdentifier.includes(":")) {
100
+ return false;
101
+ }
102
+ var _TrackingIdentifier$s = TrackingIdentifier.split(":"),
103
+ _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2),
104
+ cornerstone3DTag = _TrackingIdentifier$s2[0],
105
+ toolType = _TrackingIdentifier$s2[1];
106
+ if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {
107
+ return false;
108
+ }
109
+ return toolType === MEASUREMENT_TYPE;
110
+ };
111
+ MeasurementReport.registerTool(CobbAngle);
112
+
113
+ export { CobbAngle as default };
@@ -0,0 +1,9 @@
1
+ export default CodingScheme;
2
+ declare namespace CodingScheme {
3
+ export { CodingSchemeDesignator };
4
+ export namespace codeValues {
5
+ export { CORNERSTONEFREETEXT };
6
+ }
7
+ }
8
+ declare const CodingSchemeDesignator: "CORNERSTONEJS";
9
+ declare const CORNERSTONEFREETEXT: "CORNERSTONEFREETEXT";
@@ -0,0 +1,15 @@
1
+ // This is a custom coding scheme defined to store some annotations from Cornerstone.
2
+ // Note: CodeMeaning is VR type LO, which means we only actually support 64 characters
3
+ // here this is fine for most labels, but may be problematic at some point.
4
+ var CORNERSTONEFREETEXT = "CORNERSTONEFREETEXT";
5
+
6
+ // Cornerstone specified coding scheme for storing findings
7
+ var CodingSchemeDesignator = "CORNERSTONEJS";
8
+ var CodingScheme = {
9
+ CodingSchemeDesignator: CodingSchemeDesignator,
10
+ codeValues: {
11
+ CORNERSTONEFREETEXT: CORNERSTONEFREETEXT
12
+ }
13
+ };
14
+
15
+ export { CodingScheme as default };
@@ -0,0 +1,160 @@
1
+ import { createClass as _createClass, toConsumableArray as _toConsumableArray, defineProperty as _defineProperty, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { vec3 } from 'gl-matrix';
3
+ import { utilities } from 'dcmjs';
4
+ import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
5
+ import MeasurementReport from './MeasurementReport.js';
6
+ import isValidCornerstoneTrackingIdentifier from './isValidCornerstoneTrackingIdentifier.js';
7
+
8
+ var _EllipticalROI;
9
+ var TID300Ellipse = utilities.TID300.Ellipse;
10
+ var ELLIPTICALROI = "EllipticalROI";
11
+ var EPSILON = 1e-4;
12
+ var EllipticalROI = /*#__PURE__*/function () {
13
+ function EllipticalROI() {
14
+ _classCallCheck(this, EllipticalROI);
15
+ }
16
+ return _createClass(EllipticalROI, null, [{
17
+ key: "getMeasurementData",
18
+ value: function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {
19
+ var _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, EllipticalROI.toolType),
20
+ defaultState = _MeasurementReport$ge.defaultState,
21
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
22
+ SCOORDGroup = _MeasurementReport$ge.SCOORDGroup,
23
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
24
+ var referencedImageId = defaultState.annotation.metadata.referencedImageId;
25
+ var GraphicData = SCOORDGroup.GraphicData;
26
+ var pointsWorld = [];
27
+ for (var i = 0; i < GraphicData.length; i += 2) {
28
+ var worldPos = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]);
29
+ pointsWorld.push(worldPos);
30
+ }
31
+ var majorAxisStart = vec3.fromValues.apply(vec3, _toConsumableArray(pointsWorld[0]));
32
+ var majorAxisEnd = vec3.fromValues.apply(vec3, _toConsumableArray(pointsWorld[1]));
33
+ var minorAxisStart = vec3.fromValues.apply(vec3, _toConsumableArray(pointsWorld[2]));
34
+ var minorAxisEnd = vec3.fromValues.apply(vec3, _toConsumableArray(pointsWorld[3]));
35
+ var majorAxisVec = vec3.create();
36
+ vec3.sub(majorAxisVec, majorAxisEnd, majorAxisStart);
37
+ vec3.normalize(majorAxisVec, majorAxisVec);
38
+ var minorAxisVec = vec3.create();
39
+ vec3.sub(minorAxisVec, minorAxisEnd, minorAxisStart);
40
+ vec3.normalize(minorAxisVec, minorAxisVec);
41
+ var imagePlaneModule = metadata.get("imagePlaneModule", referencedImageId);
42
+ if (!imagePlaneModule) {
43
+ throw new Error("imageId does not have imagePlaneModule metadata");
44
+ }
45
+ var columnCosines = imagePlaneModule.columnCosines;
46
+ var columnCosinesVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);
47
+ var projectedMajorAxisOnColVec = vec3.dot(columnCosinesVec, majorAxisVec);
48
+ var projectedMinorAxisOnColVec = vec3.dot(columnCosinesVec, minorAxisVec);
49
+ var absoluteOfMajorDotProduct = Math.abs(projectedMajorAxisOnColVec);
50
+ var absoluteOfMinorDotProduct = Math.abs(projectedMinorAxisOnColVec);
51
+ var ellipsePoints = [];
52
+ if (Math.abs(absoluteOfMajorDotProduct - 1) < EPSILON) {
53
+ ellipsePoints = [pointsWorld[0], pointsWorld[1], pointsWorld[2], pointsWorld[3]];
54
+ } else if (Math.abs(absoluteOfMinorDotProduct - 1) < EPSILON) {
55
+ ellipsePoints = [pointsWorld[2], pointsWorld[3], pointsWorld[0], pointsWorld[1]];
56
+ } else {
57
+ console.warn("OBLIQUE ELLIPSE NOT YET SUPPORTED");
58
+ }
59
+ var state = defaultState;
60
+ state.annotation.data = {
61
+ handles: {
62
+ points: _toConsumableArray(ellipsePoints),
63
+ activeHandleIndex: 0,
64
+ textBox: {
65
+ hasMoved: false
66
+ }
67
+ },
68
+ cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), {
69
+ area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0
70
+ }),
71
+ frameNumber: ReferencedFrameNumber
72
+ };
73
+ return state;
74
+ }
75
+ }, {
76
+ key: "getTID300RepresentationArguments",
77
+ value: function getTID300RepresentationArguments(tool, worldToImageCoords) {
78
+ var data = tool.data,
79
+ finding = tool.finding,
80
+ findingSites = tool.findingSites,
81
+ metadata = tool.metadata;
82
+ var _data$cachedStats = data.cachedStats,
83
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
84
+ handles = data.handles;
85
+ var rotation = data.initialRotation || 0;
86
+ var referencedImageId = metadata.referencedImageId;
87
+ if (!referencedImageId) {
88
+ throw new Error("EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined");
89
+ }
90
+ var top, bottom, left, right;
91
+ if (rotation == 90 || rotation == 270) {
92
+ bottom = worldToImageCoords(referencedImageId, handles.points[2]);
93
+ top = worldToImageCoords(referencedImageId, handles.points[3]);
94
+ left = worldToImageCoords(referencedImageId, handles.points[0]);
95
+ right = worldToImageCoords(referencedImageId, handles.points[1]);
96
+ } else {
97
+ top = worldToImageCoords(referencedImageId, handles.points[0]);
98
+ bottom = worldToImageCoords(referencedImageId, handles.points[1]);
99
+ left = worldToImageCoords(referencedImageId, handles.points[2]);
100
+ right = worldToImageCoords(referencedImageId, handles.points[3]);
101
+ }
102
+ var topBottomLength = Math.abs(top[1] - bottom[1]);
103
+ var leftRightLength = Math.abs(left[0] - right[0]);
104
+ var points = [];
105
+ if (topBottomLength > leftRightLength) {
106
+ points.push({
107
+ x: top[0],
108
+ y: top[1]
109
+ });
110
+ points.push({
111
+ x: bottom[0],
112
+ y: bottom[1]
113
+ });
114
+ points.push({
115
+ x: left[0],
116
+ y: left[1]
117
+ });
118
+ points.push({
119
+ x: right[0],
120
+ y: right[1]
121
+ });
122
+ } else {
123
+ points.push({
124
+ x: left[0],
125
+ y: left[1]
126
+ });
127
+ points.push({
128
+ x: right[0],
129
+ y: right[1]
130
+ });
131
+ points.push({
132
+ x: top[0],
133
+ y: top[1]
134
+ });
135
+ points.push({
136
+ x: bottom[0],
137
+ y: bottom[1]
138
+ });
139
+ }
140
+ var _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
141
+ area = _ref.area;
142
+ return {
143
+ area: area,
144
+ points: points,
145
+ trackingIdentifierTextValue: this.trackingIdentifierTextValue,
146
+ finding: finding,
147
+ findingSites: findingSites || []
148
+ };
149
+ }
150
+ }]);
151
+ }();
152
+ _EllipticalROI = EllipticalROI;
153
+ _EllipticalROI.trackingIdentifierTextValue = "".concat(CORNERSTONE_3D_TAG, ":").concat(ELLIPTICALROI);
154
+ _EllipticalROI.toolType = ELLIPTICALROI;
155
+ _EllipticalROI.utilityToolType = ELLIPTICALROI;
156
+ _EllipticalROI.TID300Representation = TID300Ellipse;
157
+ _EllipticalROI.isValidCornerstoneTrackingIdentifier = isValidCornerstoneTrackingIdentifier;
158
+ MeasurementReport.registerTool(EllipticalROI);
159
+
160
+ export { EllipticalROI as default };
@@ -0,0 +1,41 @@
1
+ export default Length;
2
+ declare class Length {
3
+ static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, imageToWorldCoords: any, metadata: any): {
4
+ description: any;
5
+ sopInstanceUid: any;
6
+ annotation: {
7
+ annotationUID: any;
8
+ metadata: {
9
+ toolName: any;
10
+ referencedImageId: any;
11
+ FrameOfReferenceUID: any;
12
+ label: string;
13
+ };
14
+ data: any;
15
+ };
16
+ finding: any;
17
+ findingSites: any[];
18
+ };
19
+ static getTID300RepresentationArguments(tool: any, worldToImageCoords: any): {
20
+ point1: {
21
+ x: any;
22
+ y: any;
23
+ };
24
+ point2: {
25
+ x: any;
26
+ y: any;
27
+ };
28
+ distance: any;
29
+ trackingIdentifierTextValue: string;
30
+ finding: any;
31
+ findingSites: any;
32
+ };
33
+ }
34
+ declare namespace Length {
35
+ export { LENGTH as toolType };
36
+ export { LENGTH as utilityToolType };
37
+ export { TID300Length as TID300Representation };
38
+ export function isValidCornerstoneTrackingIdentifier(TrackingIdentifier: any): boolean;
39
+ }
40
+ declare const LENGTH: "Length";
41
+ declare const TID300Length: any;
@@ -0,0 +1,101 @@
1
+ import { slicedToArray as _slicedToArray, createClass as _createClass, defineProperty as _defineProperty, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { utilities } from 'dcmjs';
3
+ import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
4
+ import MeasurementReport from './MeasurementReport.js';
5
+
6
+ var TID300Length = utilities.TID300.Length;
7
+ var LENGTH = "Length";
8
+ var trackingIdentifierTextValue = "".concat(CORNERSTONE_3D_TAG, ":").concat(LENGTH);
9
+ var Length = /*#__PURE__*/function () {
10
+ function Length() {
11
+ _classCallCheck(this, Length);
12
+ }
13
+ return _createClass(Length, null, [{
14
+ key: "getMeasurementData",
15
+ value:
16
+ // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.
17
+ function getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {
18
+ var _MeasurementReport$ge = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Length.toolType),
19
+ defaultState = _MeasurementReport$ge.defaultState,
20
+ NUMGroup = _MeasurementReport$ge.NUMGroup,
21
+ SCOORDGroup = _MeasurementReport$ge.SCOORDGroup,
22
+ ReferencedFrameNumber = _MeasurementReport$ge.ReferencedFrameNumber;
23
+ var referencedImageId = defaultState.annotation.metadata.referencedImageId;
24
+ var GraphicData = SCOORDGroup.GraphicData;
25
+ var worldCoords = [];
26
+ for (var i = 0; i < GraphicData.length; i += 2) {
27
+ var point = imageToWorldCoords(referencedImageId, [GraphicData[i], GraphicData[i + 1]]);
28
+ worldCoords.push(point);
29
+ }
30
+ var state = defaultState;
31
+ state.annotation.data = {
32
+ handles: {
33
+ points: [worldCoords[0], worldCoords[1]],
34
+ activeHandleIndex: 0,
35
+ textBox: {
36
+ hasMoved: false
37
+ }
38
+ },
39
+ cachedStats: _defineProperty({}, "imageId:".concat(referencedImageId), {
40
+ length: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0
41
+ }),
42
+ frameNumber: ReferencedFrameNumber
43
+ };
44
+ return state;
45
+ }
46
+ }, {
47
+ key: "getTID300RepresentationArguments",
48
+ value: function getTID300RepresentationArguments(tool, worldToImageCoords) {
49
+ var data = tool.data,
50
+ finding = tool.finding,
51
+ findingSites = tool.findingSites,
52
+ metadata = tool.metadata;
53
+ var _data$cachedStats = data.cachedStats,
54
+ cachedStats = _data$cachedStats === void 0 ? {} : _data$cachedStats,
55
+ handles = data.handles;
56
+ var referencedImageId = metadata.referencedImageId;
57
+ if (!referencedImageId) {
58
+ throw new Error("Length.getTID300RepresentationArguments: referencedImageId is not defined");
59
+ }
60
+ var start = worldToImageCoords(referencedImageId, handles.points[0]);
61
+ var end = worldToImageCoords(referencedImageId, handles.points[1]);
62
+ var point1 = {
63
+ x: start[0],
64
+ y: start[1]
65
+ };
66
+ var point2 = {
67
+ x: end[0],
68
+ y: end[1]
69
+ };
70
+ var _ref = cachedStats["imageId:".concat(referencedImageId)] || {},
71
+ distance = _ref.length;
72
+ return {
73
+ point1: point1,
74
+ point2: point2,
75
+ distance: distance,
76
+ trackingIdentifierTextValue: trackingIdentifierTextValue,
77
+ finding: finding,
78
+ findingSites: findingSites || []
79
+ };
80
+ }
81
+ }]);
82
+ }();
83
+ Length.toolType = LENGTH;
84
+ Length.utilityToolType = LENGTH;
85
+ Length.TID300Representation = TID300Length;
86
+ Length.isValidCornerstoneTrackingIdentifier = function (TrackingIdentifier) {
87
+ if (!TrackingIdentifier.includes(":")) {
88
+ return false;
89
+ }
90
+ var _TrackingIdentifier$s = TrackingIdentifier.split(":"),
91
+ _TrackingIdentifier$s2 = _slicedToArray(_TrackingIdentifier$s, 2),
92
+ cornerstone3DTag = _TrackingIdentifier$s2[0],
93
+ toolType = _TrackingIdentifier$s2[1];
94
+ if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {
95
+ return false;
96
+ }
97
+ return toolType === LENGTH;
98
+ };
99
+ MeasurementReport.registerTool(Length);
100
+
101
+ export { Length as default };
@@ -1,5 +1,5 @@
1
1
  export default class MeasurementReport {
2
- static CORNERSTONE_3D_TAG: any;
2
+ static CORNERSTONE_3D_TAG: string;
3
3
  static MEASUREMENT_BY_TOOLTYPE: {};
4
4
  static CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE: {};
5
5
  static CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE: {};
@@ -47,13 +47,6 @@ export default class MeasurementReport {
47
47
  ReferencedFrameNumber: any;
48
48
  };
49
49
  static generateReport(toolState: any, metadataProvider: any, worldToImageCoords: any, options: any): any;
50
- /**
51
- * Generate Cornerstone tool state from dataset
52
- */
53
50
  static generateToolState(dataset: any, sopInstanceUIDToImageIdMap: any, imageToWorldCoords: any, metadata: any, hooks: any): {};
54
- /**
55
- * Register a new tool type.
56
- * @param toolClass to perform I/O to DICOM for this tool
57
- */
58
51
  static registerTool(toolClass: any): void;
59
52
  }