@cornerstonejs/adapters 2.0.0-beta.7 → 2.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 (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 -5623
  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
@@ -1,34 +1,46 @@
1
1
  import MeasurementReport from "./MeasurementReport";
2
+ import ArrowAnnotate from "./ArrowAnnotate";
2
3
  import Bidirectional from "./Bidirectional";
3
4
  import Angle from "./Angle";
4
5
  import CobbAngle from "./CobbAngle";
5
6
  import CircleROI from "./CircleROI";
6
7
  import EllipticalROI from "./EllipticalROI";
7
8
  import RectangleROI from "./RectangleROI";
9
+ import Length from "./Length";
8
10
  import PlanarFreehandROI from "./PlanarFreehandROI";
11
+ import Probe from "./Probe";
9
12
  import UltrasoundDirectional from "./UltrasoundDirectional";
10
13
  import * as Segmentation from "./Segmentation";
14
+ import * as ParametricMap from "./ParametricMap";
11
15
  import * as RTSS from "./RTStruct";
12
16
  declare const Cornerstone3DSR: {
13
17
  Bidirectional: typeof Bidirectional;
14
18
  CobbAngle: typeof CobbAngle;
15
19
  Angle: typeof Angle;
16
- Length: any;
20
+ Length: typeof Length;
17
21
  CircleROI: typeof CircleROI;
18
22
  EllipticalROI: typeof EllipticalROI;
19
23
  RectangleROI: typeof RectangleROI;
20
- ArrowAnnotate: any;
21
- Probe: any;
24
+ ArrowAnnotate: typeof ArrowAnnotate;
25
+ Probe: typeof Probe;
22
26
  PlanarFreehandROI: typeof PlanarFreehandROI;
23
27
  UltrasoundDirectional: typeof UltrasoundDirectional;
24
28
  MeasurementReport: typeof MeasurementReport;
25
- CodeScheme: any;
26
- CORNERSTONE_3D_TAG: any;
29
+ CodeScheme: {
30
+ CodingSchemeDesignator: string;
31
+ codeValues: {
32
+ CORNERSTONEFREETEXT: string;
33
+ };
34
+ };
35
+ CORNERSTONE_3D_TAG: string;
27
36
  };
28
37
  declare const Cornerstone3DSEG: {
29
38
  Segmentation: typeof Segmentation;
30
39
  };
40
+ declare const Cornerstone3DPMAP: {
41
+ ParametricMap: typeof ParametricMap;
42
+ };
31
43
  declare const Cornerstone3DRT: {
32
44
  RTSS: typeof RTSS;
33
45
  };
34
- export { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DRT };
46
+ export { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DPMAP, Cornerstone3DRT };
@@ -0,0 +1,45 @@
1
+ import MeasurementReport from './MeasurementReport.js';
2
+ import CodingScheme from './CodingScheme.js';
3
+ import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
4
+ import ArrowAnnotate from './ArrowAnnotate.js';
5
+ import Bidirectional from './Bidirectional.js';
6
+ import Angle from './Angle.js';
7
+ import CobbAngle from './CobbAngle.js';
8
+ import CircleROI from './CircleROI.js';
9
+ import EllipticalROI from './EllipticalROI.js';
10
+ import RectangleROI from './RectangleROI.js';
11
+ import Length from './Length.js';
12
+ import PlanarFreehandROI from './PlanarFreehandROI.js';
13
+ import Probe from './Probe.js';
14
+ import UltrasoundDirectional from './UltrasoundDirectional.js';
15
+ import * as index from './Segmentation/index.js';
16
+ import * as index$1 from './ParametricMap/index.js';
17
+ import * as index$2 from './RTStruct/index.js';
18
+
19
+ var Cornerstone3DSR = {
20
+ Bidirectional: Bidirectional,
21
+ CobbAngle: CobbAngle,
22
+ Angle: Angle,
23
+ Length: Length,
24
+ CircleROI: CircleROI,
25
+ EllipticalROI: EllipticalROI,
26
+ RectangleROI: RectangleROI,
27
+ ArrowAnnotate: ArrowAnnotate,
28
+ Probe: Probe,
29
+ PlanarFreehandROI: PlanarFreehandROI,
30
+ UltrasoundDirectional: UltrasoundDirectional,
31
+ MeasurementReport: MeasurementReport,
32
+ CodeScheme: CodingScheme,
33
+ CORNERSTONE_3D_TAG: CORNERSTONE_3D_TAG
34
+ };
35
+ var Cornerstone3DSEG = {
36
+ Segmentation: index
37
+ };
38
+ var Cornerstone3DPMAP = {
39
+ ParametricMap: index$1
40
+ };
41
+ var Cornerstone3DRT = {
42
+ RTSS: index$2
43
+ };
44
+
45
+ export { Cornerstone3DPMAP, Cornerstone3DRT, Cornerstone3DSEG, Cornerstone3DSR };
@@ -0,0 +1,18 @@
1
+ import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import CORNERSTONE_3D_TAG from './cornerstone3DTag.js';
3
+
4
+ function isValidCornerstoneTrackingIdentifier(trackingIdentifier) {
5
+ if (!trackingIdentifier.includes(":")) {
6
+ return false;
7
+ }
8
+ var _trackingIdentifier$s = trackingIdentifier.split(":"),
9
+ _trackingIdentifier$s2 = _slicedToArray(_trackingIdentifier$s, 2),
10
+ cornerstone3DTag = _trackingIdentifier$s2[0],
11
+ toolType = _trackingIdentifier$s2[1];
12
+ if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {
13
+ return false;
14
+ }
15
+ return toolType.toLowerCase() === this.toolType.toLowerCase();
16
+ }
17
+
18
+ export { isValidCornerstoneTrackingIdentifier as default };
@@ -0,0 +1,3 @@
1
+ export default class Segmentation {
2
+ static generateSegments(dataset: any): {};
3
+ }
@@ -0,0 +1,186 @@
1
+ import { createClass as _createClass, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { data } from 'dcmjs';
3
+
4
+ var Colors = data.Colors,
5
+ BitArray = data.BitArray;
6
+
7
+ // TODO: Is there a better name for this? RGBAInt?
8
+ // Should we move it to Colors.js
9
+ function dicomlab2RGBA(cielab) {
10
+ var rgba = Colors.dicomlab2RGB(cielab).map(function (x) {
11
+ return Math.round(x * 255);
12
+ });
13
+ rgba.push(255);
14
+ return rgba;
15
+ }
16
+
17
+ // TODO: Copied these functions in from VTK Math so we don't need a dependency.
18
+ // I guess we should put them somewhere
19
+ // https://github.com/Kitware/vtk-js/blob/master/Sources/Common/Core/Math/index.js
20
+ function cross(x, y, out) {
21
+ var Zx = x[1] * y[2] - x[2] * y[1];
22
+ var Zy = x[2] * y[0] - x[0] * y[2];
23
+ var Zz = x[0] * y[1] - x[1] * y[0];
24
+ out[0] = Zx;
25
+ out[1] = Zy;
26
+ out[2] = Zz;
27
+ }
28
+ function norm(x) {
29
+ var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
30
+ switch (n) {
31
+ case 1:
32
+ return Math.abs(x);
33
+ case 2:
34
+ return Math.sqrt(x[0] * x[0] + x[1] * x[1]);
35
+ case 3:
36
+ return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);
37
+ default:
38
+ {
39
+ var sum = 0;
40
+ for (var i = 0; i < n; i++) {
41
+ sum += x[i] * x[i];
42
+ }
43
+ return Math.sqrt(sum);
44
+ }
45
+ }
46
+ }
47
+ function normalize(x) {
48
+ var den = norm(x);
49
+ if (den !== 0.0) {
50
+ x[0] /= den;
51
+ x[1] /= den;
52
+ x[2] /= den;
53
+ }
54
+ return den;
55
+ }
56
+ function subtract(a, b, out) {
57
+ out[0] = a[0] - b[0];
58
+ out[1] = a[1] - b[1];
59
+ out[2] = a[2] - b[2];
60
+ }
61
+
62
+ // TODO: This is a useful utility on its own. We should move it somewhere?
63
+ // dcmjs.adapters.vtk.Multiframe? dcmjs.utils?
64
+ function geometryFromFunctionalGroups(dataset, PerFrameFunctionalGroups) {
65
+ var geometry = {};
66
+ var pixelMeasures = dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;
67
+ var planeOrientation = dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;
68
+
69
+ // Find the origin of the volume from the PerFrameFunctionalGroups' ImagePositionPatient values
70
+ //
71
+ // TODO: assumes sorted frames. This should read the ImagePositionPatient from each frame and
72
+ // sort them to obtain the first and last position along the acquisition axis.
73
+ var firstFunctionalGroup = PerFrameFunctionalGroups[0];
74
+ var lastFunctionalGroup = PerFrameFunctionalGroups[PerFrameFunctionalGroups.length - 1];
75
+ var firstPosition = firstFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(Number);
76
+ var lastPosition = lastFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(Number);
77
+ geometry.origin = firstPosition;
78
+
79
+ // NB: DICOM PixelSpacing is defined as Row then Column,
80
+ // unlike ImageOrientationPatient
81
+ geometry.spacing = [pixelMeasures.PixelSpacing[1], pixelMeasures.PixelSpacing[0], pixelMeasures.SpacingBetweenSlices].map(Number);
82
+ geometry.dimensions = [dataset.Columns, dataset.Rows, PerFrameFunctionalGroups.length].map(Number);
83
+ var orientation = planeOrientation.ImageOrientationPatient.map(Number);
84
+ var columnStepToPatient = orientation.slice(0, 3);
85
+ var rowStepToPatient = orientation.slice(3, 6);
86
+ geometry.planeNormal = [];
87
+ cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);
88
+ geometry.sliceStep = [];
89
+ subtract(lastPosition, firstPosition, geometry.sliceStep);
90
+ normalize(geometry.sliceStep);
91
+ geometry.direction = columnStepToPatient.concat(rowStepToPatient).concat(geometry.sliceStep);
92
+ return geometry;
93
+ }
94
+ var Segmentation = /*#__PURE__*/function () {
95
+ function Segmentation() {
96
+ _classCallCheck(this, Segmentation);
97
+ }
98
+
99
+ /**
100
+ * Produces an array of Segments from an input DICOM Segmentation dataset
101
+ *
102
+ * Segments are returned with Geometry values that can be used to create
103
+ * VTK Image Data objects.
104
+ *
105
+ * @example Example usage to create VTK Volume actors from each segment:
106
+ *
107
+ * const actors = [];
108
+ * const segments = generateToolState(dataset);
109
+ * segments.forEach(segment => {
110
+ * // now make actors using the segment information
111
+ * const scalarArray = vtk.Common.Core.vtkDataArray.newInstance({
112
+ * name: "Scalars",
113
+ * numberOfComponents: 1,
114
+ * values: segment.pixelData,
115
+ * });
116
+ *
117
+ * const imageData = vtk.Common.DataModel.vtkImageData.newInstance();
118
+ * imageData.getPointData().setScalars(scalarArray);
119
+ * imageData.setDimensions(geometry.dimensions);
120
+ * imageData.setSpacing(geometry.spacing);
121
+ * imageData.setOrigin(geometry.origin);
122
+ * imageData.setDirection(geometry.direction);
123
+ *
124
+ * const mapper = vtk.Rendering.Core.vtkVolumeMapper.newInstance();
125
+ * mapper.setInputData(imageData);
126
+ * mapper.setSampleDistance(2.);
127
+ *
128
+ * const actor = vtk.Rendering.Core.vtkVolume.newInstance();
129
+ * actor.setMapper(mapper);
130
+ *
131
+ * actors.push(actor);
132
+ * });
133
+ *
134
+ * @param dataset
135
+ * @return {{}}
136
+ */
137
+ return _createClass(Segmentation, null, [{
138
+ key: "generateSegments",
139
+ value: function generateSegments(dataset) {
140
+ if (dataset.SegmentSequence.constructor.name !== "Array") {
141
+ dataset.SegmentSequence = [dataset.SegmentSequence];
142
+ }
143
+ dataset.SegmentSequence.forEach(function (segment) {
144
+ // TODO: other interesting fields could be extracted from the segment
145
+ // TODO: Read SegmentsOverlay field
146
+ // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.20.2.html
147
+
148
+ // TODO: Looks like vtkColor only wants RGB in 0-1 values.
149
+ // Why was this example converting to RGBA with 0-255 values?
150
+ var color = dicomlab2RGBA(segment.RecommendedDisplayCIELabValue);
151
+ segments[segment.SegmentNumber] = {
152
+ color: color,
153
+ functionalGroups: [],
154
+ offset: null,
155
+ size: null,
156
+ pixelData: null
157
+ };
158
+ });
159
+
160
+ // make a list of functional groups per segment
161
+ dataset.PerFrameFunctionalGroupsSequence.forEach(function (functionalGroup) {
162
+ var segmentNumber = functionalGroup.SegmentIdentificationSequence.ReferencedSegmentNumber;
163
+ segments[segmentNumber].functionalGroups.push(functionalGroup);
164
+ });
165
+
166
+ // determine per-segment index into the pixel data
167
+ // TODO: only handles one-bit-per pixel
168
+ var frameSize = Math.ceil(dataset.Rows * dataset.Columns / 8);
169
+ var nextOffset = 0;
170
+ Object.keys(segments).forEach(function (segmentNumber) {
171
+ var segment = segments[segmentNumber];
172
+ segment.numberOfFrames = segment.functionalGroups.length;
173
+ segment.size = segment.numberOfFrames * frameSize;
174
+ segment.offset = nextOffset;
175
+ nextOffset = segment.offset + segment.size;
176
+ var packedSegment = dataset.PixelData.slice(segment.offset, nextOffset);
177
+ segment.pixelData = BitArray.unpack(packedSegment);
178
+ var geometry = geometryFromFunctionalGroups(dataset, segment.functionalGroups);
179
+ segment.geometry = geometry;
180
+ });
181
+ return segments;
182
+ }
183
+ }]);
184
+ }();
185
+
186
+ export { Segmentation as default };
@@ -0,0 +1,5 @@
1
+ import Segmentation from "./Segmentation";
2
+ declare const VTKjsSEG: {
3
+ Segmentation: typeof Segmentation;
4
+ };
5
+ export { VTKjsSEG };
@@ -0,0 +1,7 @@
1
+ import Segmentation from './Segmentation.js';
2
+
3
+ var VTKjsSEG = {
4
+ Segmentation: Segmentation
5
+ };
6
+
7
+ export { VTKjsSEG };
@@ -1,10 +1,4 @@
1
- /**
2
- * Cornerstone adapters events
3
- */
4
1
  declare enum Events {
5
- /**
6
- * Cornerstone segmentation load progress event
7
- */
8
2
  SEGMENTATION_LOAD_PROGRESS = "CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS"
9
3
  }
10
4
  export default Events;
@@ -0,0 +1,7 @@
1
+ var Events;
2
+ (function (Events) {
3
+ Events["SEGMENTATION_LOAD_PROGRESS"] = "CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS";
4
+ })(Events || (Events = {}));
5
+ var Events$1 = Events;
6
+
7
+ export { Events$1 as default };
@@ -0,0 +1 @@
1
+ export { default as Events } from './Events.js';
@@ -0,0 +1 @@
1
+ export default function checkIfPerpendicular(iop1: number[], iop2: number[], tolerance: number): boolean;
@@ -0,0 +1,7 @@
1
+ function checkIfPerpendicular(iop1, iop2, tolerance) {
2
+ var absDotColumnCosines = Math.abs(iop1[0] * iop2[0] + iop1[1] * iop2[1] + iop1[2] * iop2[2]);
3
+ var absDotRowCosines = Math.abs(iop1[3] * iop2[3] + iop1[4] * iop2[4] + iop1[5] * iop2[5]);
4
+ return (absDotColumnCosines < tolerance || Math.abs(absDotColumnCosines - 1) < tolerance) && (absDotRowCosines < tolerance || Math.abs(absDotRowCosines - 1) < tolerance);
5
+ }
6
+
7
+ export { checkIfPerpendicular as default };
@@ -0,0 +1 @@
1
+ export default function checkOrientation(multiframe: any, validOrientations: any, sourceDataDimensions: any, tolerance: any): "Planar" | "Perpendicular" | "Oblique";
@@ -0,0 +1,22 @@
1
+ import checkIfPerpendicular from './checkIfPerpendicular.js';
2
+ import compareArrays from './compareArrays.js';
3
+
4
+ function checkOrientation(multiframe, validOrientations, sourceDataDimensions, tolerance) {
5
+ var SharedFunctionalGroupsSequence = multiframe.SharedFunctionalGroupsSequence,
6
+ PerFrameFunctionalGroupsSequence = multiframe.PerFrameFunctionalGroupsSequence;
7
+ var sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence ? SharedFunctionalGroupsSequence.PlaneOrientationSequence.ImageOrientationPatient : undefined;
8
+ var PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[0];
9
+ var iop = sharedImageOrientationPatient || PerFrameFunctionalGroups.PlaneOrientationSequence.ImageOrientationPatient;
10
+ var inPlane = validOrientations.some(function (operation) {
11
+ return compareArrays(iop, operation, tolerance);
12
+ });
13
+ if (inPlane) {
14
+ return "Planar";
15
+ }
16
+ if (checkIfPerpendicular(iop, validOrientations[0], tolerance) && sourceDataDimensions.includes(multiframe.Rows) && sourceDataDimensions.includes(multiframe.Columns)) {
17
+ return "Perpendicular";
18
+ }
19
+ return "Oblique";
20
+ }
21
+
22
+ export { checkOrientation as default };
@@ -0,0 +1,2 @@
1
+ declare const codeMeaningEquals: (codeMeaningName: string) => (contentItem: any) => boolean;
2
+ export { codeMeaningEquals };
@@ -0,0 +1,7 @@
1
+ var codeMeaningEquals = function codeMeaningEquals(codeMeaningName) {
2
+ return function (contentItem) {
3
+ return contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName;
4
+ };
5
+ };
6
+
7
+ export { codeMeaningEquals };
@@ -0,0 +1 @@
1
+ export default function compareArrays(array1: number[], array2: number[], tolerance: number): boolean;
@@ -0,0 +1,16 @@
1
+ import { utilities } from 'dcmjs';
2
+
3
+ var nearlyEqual = utilities.orientation.nearlyEqual;
4
+ function compareArrays(array1, array2, tolerance) {
5
+ if (array1.length !== array2.length) {
6
+ return false;
7
+ }
8
+ for (var i = 0; i < array1.length; ++i) {
9
+ if (!nearlyEqual(array1[i], array2[i], tolerance)) {
10
+ return false;
11
+ }
12
+ }
13
+ return true;
14
+ }
15
+
16
+ export { compareArrays as default };
@@ -0,0 +1,5 @@
1
+ interface DicomDataset {
2
+ _meta?: unknown;
3
+ }
4
+ export declare function downloadDICOMData(bufferOrDataset: ArrayBuffer | DicomDataset, filename: string): void;
5
+ export {};
@@ -0,0 +1,26 @@
1
+ import { data } from 'dcmjs';
2
+ import { Buffer } from 'buffer';
3
+
4
+ var datasetToDict = data.datasetToDict;
5
+ function downloadDICOMData(bufferOrDataset, filename) {
6
+ var blob;
7
+ if (bufferOrDataset instanceof ArrayBuffer) {
8
+ blob = new Blob([bufferOrDataset], {
9
+ type: "application/dicom"
10
+ });
11
+ } else {
12
+ if (!bufferOrDataset._meta) {
13
+ throw new Error("Dataset must have a _meta property");
14
+ }
15
+ var buffer = Buffer.from(datasetToDict(bufferOrDataset).write());
16
+ blob = new Blob([buffer], {
17
+ type: "application/dicom"
18
+ });
19
+ }
20
+ var link = document.createElement("a");
21
+ link.href = window.URL.createObjectURL(blob);
22
+ link.download = filename;
23
+ link.click();
24
+ }
25
+
26
+ export { downloadDICOMData };
@@ -0,0 +1 @@
1
+ export default function getDatasetsFromImages(images: any, isMultiframe: any, options?: any): any;
@@ -0,0 +1,33 @@
1
+ import { data, normalizers } from 'dcmjs';
2
+
3
+ var DicomMessage = data.DicomMessage,
4
+ DicomMetaDictionary = data.DicomMetaDictionary;
5
+ var Normalizer = normalizers.Normalizer;
6
+ function getDatasetsFromImages(images, isMultiframe, options) {
7
+ var datasets = [];
8
+ if (isMultiframe) {
9
+ var image = images[0];
10
+ var arrayBuffer = image.data.byteArray.buffer;
11
+ var dicomData = DicomMessage.readFile(arrayBuffer);
12
+ var dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);
13
+ dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);
14
+ datasets.push(dataset);
15
+ } else {
16
+ for (var i = 0; i < images.length; i++) {
17
+ var _image = images[i];
18
+ var _arrayBuffer = _image.data.byteArray.buffer;
19
+ var _dicomData = DicomMessage.readFile(_arrayBuffer);
20
+ var _dataset = DicomMetaDictionary.naturalizeDataset(_dicomData.dict);
21
+ _dataset._meta = DicomMetaDictionary.namifyDataset(_dicomData.meta);
22
+ datasets.push(_dataset);
23
+ }
24
+ }
25
+ if (options !== null && options !== void 0 && options.SpecificCharacterSet) {
26
+ datasets.forEach(function (dataset) {
27
+ return dataset.SpecificCharacterSet = options.SpecificCharacterSet;
28
+ });
29
+ }
30
+ return Normalizer.normalizeToDataset(datasets);
31
+ }
32
+
33
+ export { getDatasetsFromImages as default };
@@ -0,0 +1,2 @@
1
+ declare const graphicTypeEquals: (graphicType: any) => (contentItem: any) => boolean;
2
+ export { graphicTypeEquals };
@@ -0,0 +1,7 @@
1
+ var graphicTypeEquals = function graphicTypeEquals(graphicType) {
2
+ return function (contentItem) {
3
+ return contentItem && contentItem.GraphicType === graphicType;
4
+ };
5
+ };
6
+
7
+ export { graphicTypeEquals };
@@ -0,0 +1,4 @@
1
+ export { toArray } from './toArray.js';
2
+ export { codeMeaningEquals } from './codeMeaningEquals.js';
3
+ export { graphicTypeEquals } from './graphicTypeEquals.js';
4
+ export { downloadDICOMData } from './downloadDICOMData.js';
@@ -0,0 +1,5 @@
1
+ var toArray = function toArray(x) {
2
+ return Array.isArray(x) ? x : [x];
3
+ };
4
+
5
+ export { toArray };
@@ -0,0 +1,66 @@
1
+ import * as Enums from "./enums";
2
+ import * as helpers from "./helpers";
3
+ declare const adaptersSR: {
4
+ Cornerstone: {
5
+ Length: typeof import("./Cornerstone/Length").default;
6
+ FreehandRoi: typeof import("./Cornerstone/FreehandRoi").default;
7
+ Bidirectional: typeof import("./Cornerstone/Bidirectional").default;
8
+ EllipticalRoi: typeof import("./Cornerstone/EllipticalRoi").default;
9
+ CircleRoi: typeof import("./Cornerstone/CircleRoi").default;
10
+ ArrowAnnotate: typeof import("./Cornerstone/ArrowAnnotate").default;
11
+ MeasurementReport: typeof import("./Cornerstone/MeasurementReport").default;
12
+ CobbAngle: typeof import("./Cornerstone/CobbAngle").default;
13
+ Angle: typeof import("./Cornerstone/Angle").default;
14
+ RectangleRoi: typeof import("./Cornerstone/RectangleRoi").default;
15
+ };
16
+ Cornerstone3D: {
17
+ Bidirectional: typeof import("./Cornerstone3D/Bidirectional").default;
18
+ CobbAngle: typeof import("./Cornerstone3D/CobbAngle").default;
19
+ Angle: typeof import("./Cornerstone3D/Angle").default;
20
+ Length: typeof import("./Cornerstone3D/Length").default;
21
+ CircleROI: typeof import("./Cornerstone3D/CircleROI").default;
22
+ EllipticalROI: typeof import("./Cornerstone3D/EllipticalROI").default;
23
+ RectangleROI: typeof import("./Cornerstone3D/RectangleROI").default;
24
+ ArrowAnnotate: typeof import("./Cornerstone3D/ArrowAnnotate").default;
25
+ Probe: typeof import("./Cornerstone3D/Probe").default;
26
+ PlanarFreehandROI: typeof import("./Cornerstone3D/PlanarFreehandROI").default;
27
+ UltrasoundDirectional: typeof import("./Cornerstone3D/UltrasoundDirectional").default;
28
+ MeasurementReport: typeof import("./Cornerstone3D/MeasurementReport").default;
29
+ CodeScheme: {
30
+ CodingSchemeDesignator: string;
31
+ codeValues: {
32
+ CORNERSTONEFREETEXT: string;
33
+ };
34
+ };
35
+ CORNERSTONE_3D_TAG: string;
36
+ };
37
+ };
38
+ declare const adaptersSEG: {
39
+ Cornerstone: {
40
+ Segmentation: typeof import("./Cornerstone/Segmentation");
41
+ };
42
+ Cornerstone3D: {
43
+ Segmentation: typeof import("./Cornerstone3D/Segmentation");
44
+ };
45
+ VTKjs: {
46
+ Segmentation: typeof import("./VTKjs/Segmentation").default;
47
+ };
48
+ };
49
+ declare const adaptersPMAP: {
50
+ Cornerstone: {
51
+ ParametricMap: {
52
+ generateToolState: (imageIds: any, arrayBuffer: any, metadataProvider: any, tolerance?: number) => Promise<{
53
+ pixelData: any;
54
+ }>;
55
+ };
56
+ };
57
+ Cornerstone3D: {
58
+ ParametricMap: typeof import("./Cornerstone3D/ParametricMap");
59
+ };
60
+ };
61
+ declare const adaptersRT: {
62
+ Cornerstone3D: {
63
+ RTSS: typeof import("./Cornerstone3D/RTStruct");
64
+ };
65
+ };
66
+ export { adaptersSR, adaptersSEG, adaptersPMAP, adaptersRT, Enums, helpers };
@@ -0,0 +1,24 @@
1
+ import { CornerstoneSR, CornerstoneSEG, CornerstonePMAP } from './Cornerstone/index.js';
2
+ import { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DPMAP, Cornerstone3DRT } from './Cornerstone3D/index.js';
3
+ import { VTKjsSEG } from './VTKjs/index.js';
4
+ import './enums/Events.js';
5
+ import './helpers/downloadDICOMData.js';
6
+
7
+ var adaptersSR = {
8
+ Cornerstone: CornerstoneSR,
9
+ Cornerstone3D: Cornerstone3DSR
10
+ };
11
+ var adaptersSEG = {
12
+ Cornerstone: CornerstoneSEG,
13
+ Cornerstone3D: Cornerstone3DSEG,
14
+ VTKjs: VTKjsSEG
15
+ };
16
+ var adaptersPMAP = {
17
+ Cornerstone: CornerstonePMAP,
18
+ Cornerstone3D: Cornerstone3DPMAP
19
+ };
20
+ var adaptersRT = {
21
+ Cornerstone3D: Cornerstone3DRT
22
+ };
23
+
24
+ export { adaptersPMAP, adaptersRT, adaptersSEG, adaptersSR };
@@ -0,0 +1,2 @@
1
+ import { Enums, adaptersSR, adaptersSEG, adaptersPMAP, adaptersRT, helpers } from "./adapters";
2
+ export { adaptersSR, adaptersSEG, adaptersPMAP, adaptersRT, Enums, helpers };
@@ -0,0 +1,5 @@
1
+ export { adaptersPMAP, adaptersRT, adaptersSEG, adaptersSR } from './adapters/index.js';
2
+ import * as index from './adapters/enums/index.js';
3
+ export { index as Enums };
4
+ import * as index$1 from './adapters/helpers/index.js';
5
+ export { index$1 as helpers };