@cornerstonejs/adapters 4.18.5 → 4.19.2

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.
@@ -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,92 @@
1
+ import { utilities, sr } from 'dcmjs';
2
+ import { CONTROL_POINTS_CODE, SPLINE_TYPE_CODE } from './constants/index.js';
3
+
4
+ const {
5
+ valueTypes
6
+ } = sr;
7
+ const {
8
+ Polyline: TID300Polyline
9
+ } = utilities.TID300;
10
+ class ControlPointPolyline extends TID300Polyline {
11
+ contentItem() {
12
+ const contentEntries = super.contentItem();
13
+ const self = this;
14
+ const {
15
+ controlPoints,
16
+ use3DSpatialCoordinates,
17
+ ReferencedSOPSequence,
18
+ ReferencedFrameOfReferenceUID,
19
+ use3DSpatialCoordinates: is3DMeasurement
20
+ } = self.props;
21
+ if (!(controlPoints !== null && controlPoints !== void 0 && controlPoints.length)) {
22
+ return contentEntries;
23
+ }
24
+ const GraphicData = self.flattenPoints({
25
+ points: controlPoints,
26
+ use3DSpatialCoordinates
27
+ });
28
+ const GraphicType = valueTypes.GraphicTypes.MULTIPOINT;
29
+ const scoordPlain = is3DMeasurement ? {
30
+ RelationshipType: valueTypes.RelationshipTypes.CONTAINS,
31
+ ValueType: 'SCOORD3D',
32
+ ConceptNameCodeSequence: [{
33
+ CodeValue: CONTROL_POINTS_CODE.value,
34
+ CodingSchemeDesignator: CONTROL_POINTS_CODE.schemeDesignator,
35
+ CodeMeaning: CONTROL_POINTS_CODE.meaning
36
+ }],
37
+ GraphicType,
38
+ GraphicData,
39
+ ReferencedFrameOfReferenceUID,
40
+ ContentSequence: [{
41
+ RelationshipType: valueTypes.RelationshipTypes.SELECTED_FROM,
42
+ ValueType: valueTypes.ValueTypes.IMAGE,
43
+ ReferencedSOPSequence
44
+ }]
45
+ } : {
46
+ RelationshipType: valueTypes.RelationshipTypes.CONTAINS,
47
+ ValueType: 'SCOORD',
48
+ ConceptNameCodeSequence: [{
49
+ CodeValue: CONTROL_POINTS_CODE.value,
50
+ CodingSchemeDesignator: CONTROL_POINTS_CODE.schemeDesignator,
51
+ CodeMeaning: CONTROL_POINTS_CODE.meaning
52
+ }],
53
+ GraphicType,
54
+ GraphicData,
55
+ ContentSequence: [{
56
+ RelationshipType: valueTypes.RelationshipTypes.SELECTED_FROM,
57
+ ValueType: valueTypes.ValueTypes.IMAGE,
58
+ ReferencedSOPSequence
59
+ }]
60
+ };
61
+ const {
62
+ splineType
63
+ } = self.props;
64
+ const entries = contentEntries;
65
+ const numEntry = entries.find(e => e.ValueType === 'NUM');
66
+ if (numEntry) {
67
+ const inner = numEntry.ContentSequence;
68
+ const innerArray = Array.isArray(inner) ? inner : inner ? [inner] : [];
69
+ numEntry.ContentSequence = [...innerArray, scoordPlain];
70
+ } else {
71
+ entries.push(scoordPlain);
72
+ }
73
+ if (splineType) {
74
+ const splineTypeObsContext = {
75
+ RelationshipType: valueTypes.RelationshipTypes.HAS_OBS_CONTEXT,
76
+ ValueType: 'TEXT',
77
+ ConceptNameCodeSequence: {
78
+ CodeValue: SPLINE_TYPE_CODE.value,
79
+ CodingSchemeDesignator: SPLINE_TYPE_CODE.schemeDesignator,
80
+ CodeMeaning: SPLINE_TYPE_CODE.meaning
81
+ },
82
+ TextValue: splineType
83
+ };
84
+ const hasObsContextIndex = entries.findIndex(e => e.RelationshipType === valueTypes.RelationshipTypes.HAS_OBS_CONTEXT);
85
+ const insertIndex = hasObsContextIndex >= 0 ? hasObsContextIndex + 2 : 2;
86
+ entries.splice(insertIndex, 0, splineTypeObsContext);
87
+ }
88
+ return entries;
89
+ }
90
+ }
91
+
92
+ export { ControlPointPolyline as default };
@@ -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;
@@ -21,6 +21,7 @@ class LabelData {
21
21
  contentItem() {
22
22
  var _handles$textBox;
23
23
  const contentEntries = this.tid300Item.contentItem();
24
+ this.fixScoordRelationships(contentEntries);
24
25
  const {
25
26
  label,
26
27
  handles
@@ -34,6 +35,24 @@ class LabelData {
34
35
  }
35
36
  return contentEntries;
36
37
  }
38
+ fixScoordRelationships(contentEntries) {
39
+ const INFERRED_FROM = valueTypes.RelationshipTypes.INFERRED_FROM;
40
+ for (const entry of contentEntries) {
41
+ const item = entry;
42
+ const contentSeq = item.ContentSequence;
43
+ const children = this.normalizeContentSequence(contentSeq);
44
+ for (const child of children) {
45
+ if ((child.ValueType === 'SCOORD' || child.ValueType === 'SCOORD3D') && (child.RelationshipType === 'CONTAINS' || child.RelationshipType === 'Contains')) {
46
+ child.RelationshipType = INFERRED_FROM;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ normalizeContentSequence(contentSeq) {
52
+ if (!contentSeq) return [];
53
+ if (Array.isArray(contentSeq)) return contentSeq;
54
+ return [contentSeq];
55
+ }
37
56
  filterCornerstoneFreeText(contentEntries) {
38
57
  const {
39
58
  codeValues
@@ -148,7 +148,7 @@ export default class MeasurementReport {
148
148
  metadata: any;
149
149
  toolType: any;
150
150
  }): SpatialCoordinatesData;
151
- static processSpatialCoordinatesGroup({ NUMGroup, sopInstanceUIDToImageIdMap, metadata, findingGroup, findingSiteGroups, commentGroup, commentPositionGroup, toolType, }: {
151
+ static processSpatialCoordinatesGroup({ NUMGroup, sopInstanceUIDToImageIdMap, metadata, findingGroup, findingSiteGroups, commentGroup, commentPositionGroup, controlPointsGroup, toolType, }: {
152
152
  NUMGroup: any;
153
153
  sopInstanceUIDToImageIdMap: any;
154
154
  metadata: any;
@@ -156,6 +156,7 @@ export default class MeasurementReport {
156
156
  findingSiteGroups: any;
157
157
  commentGroup: any;
158
158
  commentPositionGroup: any;
159
+ controlPointsGroup: any;
159
160
  toolType: any;
160
161
  }): {
161
162
  defaultState: SpatialCoordinatesState;
@@ -9,7 +9,7 @@ import { copySeriesTags } from '../helpers/copySeriesTags.js';
9
9
  import { scoordToWorld } from '../helpers/scoordToWorld.js';
10
10
  import { toPoint3 } from '../helpers/toPoint3.js';
11
11
  import CodingScheme from './CodingScheme.js';
12
- import { COMMENT_CODE, TEXT_ANNOTATION_POSITION, metaSRAnnotation, NO_IMAGE_ID } from './constants/index.js';
12
+ import { COMMENT_CODE, TEXT_ANNOTATION_POSITION, metaSRAnnotation, NO_IMAGE_ID, CONTROL_POINTS_CODE } from './constants/index.js';
13
13
  import LabelData from './LabelData.js';
14
14
 
15
15
  var _MeasurementReport;
@@ -47,6 +47,10 @@ const COMMENT_POSITION = {
47
47
  CodingSchemeDesignator: TEXT_ANNOTATION_POSITION.schemeDesignator,
48
48
  CodeValue: TEXT_ANNOTATION_POSITION.value
49
49
  };
50
+ const CONTROL_POINTS = {
51
+ CodingSchemeDesignator: CONTROL_POINTS_CODE.schemeDesignator,
52
+ CodeValue: CONTROL_POINTS_CODE.value
53
+ };
50
54
  const FINDING_SITE = {
51
55
  CodingSchemeDesignator: 'SCT',
52
56
  CodeValue: '363698007'
@@ -55,6 +59,14 @@ const FINDING_SITE_OLD = {
55
59
  CodingSchemeDesignator: 'SRT',
56
60
  CodeValue: 'G-C0E3'
57
61
  };
62
+ function isSecondaryScoordGroup(group) {
63
+ if (group.ValueType !== 'SCOORD' && group.ValueType !== 'SCOORD3D') {
64
+ return false;
65
+ }
66
+ const conceptNameCodeSequence = group.ConceptNameCodeSequence;
67
+ const conceptCode = Array.isArray(conceptNameCodeSequence) ? conceptNameCodeSequence[0] : conceptNameCodeSequence;
68
+ return !!conceptCode && conceptCode.CodingSchemeDesignator === CONTROL_POINTS.CodingSchemeDesignator && conceptCode.CodeValue === CONTROL_POINTS.CodeValue;
69
+ }
58
70
  class MeasurementReport {
59
71
  static getTID300ContentItem(tool, ReferencedSOPSequence, toolClass, is3DMeasurement) {
60
72
  const args = toolClass.getTID300RepresentationArguments(tool, is3DMeasurement);
@@ -179,6 +191,7 @@ class MeasurementReport {
179
191
  return toolData;
180
192
  }
181
193
  static getSpatialCoordinatesState(_ref3) {
194
+ var _contentSequenceArr$f, _contentSequenceArr$f2;
182
195
  let {
183
196
  NUMGroup,
184
197
  sopInstanceUIDToImageIdMap,
@@ -186,8 +199,8 @@ class MeasurementReport {
186
199
  toolType
187
200
  } = _ref3;
188
201
  const contentSequenceArr = toArray(NUMGroup.ContentSequence);
189
- const SCOORDGroup = contentSequenceArr.find(group => group.ValueType === 'SCOORD');
190
- const SCOORD3DGroup = contentSequenceArr.find(group => group.ValueType === 'SCOORD3D');
202
+ const SCOORDGroup = (_contentSequenceArr$f = contentSequenceArr.find(group => group.ValueType === 'SCOORD' && !isSecondaryScoordGroup(group))) !== null && _contentSequenceArr$f !== void 0 ? _contentSequenceArr$f : contentSequenceArr.find(group => group.ValueType === 'SCOORD');
203
+ const SCOORD3DGroup = (_contentSequenceArr$f2 = contentSequenceArr.find(group => group.ValueType === 'SCOORD3D' && !isSecondaryScoordGroup(group))) !== null && _contentSequenceArr$f2 !== void 0 ? _contentSequenceArr$f2 : contentSequenceArr.find(group => group.ValueType === 'SCOORD3D');
191
204
  const result = SCOORD3DGroup && this.processSCOORD3DGroup({
192
205
  SCOORD3DGroup,
193
206
  toolType
@@ -211,6 +224,7 @@ class MeasurementReport {
211
224
  findingSiteGroups,
212
225
  commentGroup,
213
226
  commentPositionGroup,
227
+ controlPointsGroup,
214
228
  toolType
215
229
  } = _ref4;
216
230
  const {
@@ -244,6 +258,13 @@ class MeasurementReport {
244
258
  worldPosition: textBoxCoords[0]
245
259
  };
246
260
  }
261
+ if (controlPointsGroup) {
262
+ const controlPoints = scoordToWorld({
263
+ is3DMeasurement: !referencedImageId,
264
+ referencedImageId
265
+ }, controlPointsGroup);
266
+ state.annotation.data.handles.points = controlPoints;
267
+ }
247
268
  state.finding = finding;
248
269
  state.findingSites = findingSites;
249
270
  state.commentGroup = commentGroup;
@@ -275,8 +296,13 @@ class MeasurementReport {
275
296
  const findingGroup = contentSequenceArr.find(group => this.codeValueMatch(group, FINDING));
276
297
  const commentGroup = contentSequenceArr.find(group => this.codeValueMatch(group, COMMENT));
277
298
  const commentPositionGroup = contentSequenceArr.find(group => this.codeValueMatch(group, COMMENT_POSITION));
299
+ let controlPointsGroup = contentSequenceArr.find(group => this.codeValueMatch(group, CONTROL_POINTS));
300
+ const NUMGroupForLookup = contentSequenceArr.find(group => group.ValueType === 'NUM');
301
+ if (!controlPointsGroup && NUMGroupForLookup !== null && NUMGroupForLookup !== void 0 && NUMGroupForLookup.ContentSequence) {
302
+ controlPointsGroup = toArray(NUMGroupForLookup.ContentSequence).find(item => this.codeValueMatch(item, CONTROL_POINTS));
303
+ }
278
304
  const findingSiteGroups = contentSequenceArr.filter(group => this.codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)) || [];
279
- const NUMGroup = contentSequenceArr.find(group => group.ValueType === 'NUM') || {
305
+ const NUMGroup = NUMGroupForLookup || {
280
306
  ContentSequence: contentSequenceArr.filter(group => group.ValueType === 'SCOORD' || group.ValueType === 'SCOORD3D')
281
307
  };
282
308
  const spatialGroup = this.processSpatialCoordinatesGroup({
@@ -287,6 +313,7 @@ class MeasurementReport {
287
313
  findingSiteGroups,
288
314
  commentGroup,
289
315
  commentPositionGroup,
316
+ controlPointsGroup,
290
317
  toolType
291
318
  });
292
319
  const {
@@ -529,10 +556,14 @@ _MeasurementReport.codeValueMatch = (group, code, oldCode) => {
529
556
  if (!ConceptNameCodeSequence) {
530
557
  return;
531
558
  }
559
+ const seq = Array.isArray(ConceptNameCodeSequence) ? ConceptNameCodeSequence[0] : ConceptNameCodeSequence;
560
+ if (!seq) {
561
+ return;
562
+ }
532
563
  const {
533
564
  CodingSchemeDesignator,
534
565
  CodeValue
535
- } = ConceptNameCodeSequence;
566
+ } = seq;
536
567
  return CodingSchemeDesignator == code.CodingSchemeDesignator && CodeValue == code.CodeValue || oldCode && CodingSchemeDesignator == oldCode.CodingSchemeDesignator && CodeValue == oldCode.CodeValue;
537
568
  };
538
569
  _MeasurementReport.generateDerivationSourceDataset = instance => {
@@ -1,4 +1,4 @@
1
- import BaseAdapter3D from "./BaseAdapter3D";
1
+ import BaseAdapter3D from './BaseAdapter3D';
2
2
  declare class PlanarFreehandROI extends BaseAdapter3D {
3
3
  static closedContourThreshold: number;
4
4
  static getMeasurementData(MeasurementGroup: any, sopInstanceUIDToImageIdMap: any, metadata: any): {
@@ -20,6 +20,15 @@ declare class PlanarFreehandROI extends BaseAdapter3D {
20
20
  y: number;
21
21
  z?: undefined;
22
22
  })[];
23
+ controlPoints: ({
24
+ x: any;
25
+ y: any;
26
+ z: any;
27
+ } | {
28
+ x: number;
29
+ y: number;
30
+ z?: undefined;
31
+ })[];
23
32
  area: any;
24
33
  areaUnit: any;
25
34
  perimeter: any;
@@ -27,6 +36,7 @@ declare class PlanarFreehandROI extends BaseAdapter3D {
27
36
  mean: any;
28
37
  max: any;
29
38
  stdDev: any;
39
+ splineType: any;
30
40
  trackingIdentifierTextValue: string;
31
41
  finding: any;
32
42
  findingSites: any;
@@ -1,20 +1,21 @@
1
1
  import _defineProperty from '../../node_modules/@babel/runtime/helpers/esm/defineProperty.js';
2
2
  import MeasurementReport from './MeasurementReport.js';
3
- import { utilities } from 'dcmjs';
4
3
  import { vec3 } from 'gl-matrix';
5
4
  import BaseAdapter3D from './BaseAdapter3D.js';
5
+ import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
6
+ import { toArray } from '../helpers/toArray.js';
7
+ import 'dcmjs';
6
8
  import { toScoords } from '../helpers/toScoordType.js';
7
9
  import '@cornerstonejs/core';
8
- import { extractAllNUMGroups, restoreAdditionalMetrics } from './metricHandler.js';
10
+ import ControlPointPolyline from './ControlPointPolyline.js';
11
+ import { SPLINE_TYPE_CODE } from './constants/index.js';
9
12
 
10
13
  var _PlanarFreehandROI;
11
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- const {
14
- Polyline: TID300Polyline
15
- } = utilities.TID300;
16
16
  class PlanarFreehandROI extends BaseAdapter3D {
17
17
  static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata) {
18
+ var _state$annotation$dat, _state$annotation$dat2, _numSeq$find;
18
19
  const {
19
20
  state,
20
21
  NUMGroup,
@@ -28,13 +29,20 @@ class PlanarFreehandROI extends BaseAdapter3D {
28
29
  worldCoords.pop();
29
30
  isOpenContour = false;
30
31
  }
31
- const points = [];
32
- if (isOpenContour) {
33
- points.push(worldCoords[0], worldCoords[worldCoords.length - 1]);
32
+ let points = (_state$annotation$dat = (_state$annotation$dat2 = state.annotation.data.handles) === null || _state$annotation$dat2 === void 0 ? void 0 : _state$annotation$dat2.points) !== null && _state$annotation$dat !== void 0 ? _state$annotation$dat : [];
33
+ if (isOpenContour && points.length === 0) {
34
+ points = [worldCoords[0], worldCoords[worldCoords.length - 1]];
34
35
  }
35
36
  const referencedSOPInstanceUID = state.sopInstanceUid;
36
37
  const allNUMGroups = extractAllNUMGroups(MeasurementGroup, referencedSOPInstanceUID);
37
38
  const measurementNUMGroups = allNUMGroups[referencedSOPInstanceUID] || {};
39
+ const SPLINE_TYPE = {
40
+ CodingSchemeDesignator: SPLINE_TYPE_CODE.schemeDesignator,
41
+ CodeValue: SPLINE_TYPE_CODE.value
42
+ };
43
+ const numSeq = NUMGroup ? toArray(NUMGroup.ContentSequence) : [];
44
+ const mgContentSeq = toArray(MeasurementGroup.ContentSequence);
45
+ const splineTypeItem = (_numSeq$find = numSeq.find(item => MeasurementReport.codeValueMatch(item, SPLINE_TYPE))) !== null && _numSeq$find !== void 0 ? _numSeq$find : mgContentSeq.find(item => MeasurementReport.codeValueMatch(item, SPLINE_TYPE));
38
46
  state.annotation.data = _objectSpread(_objectSpread({}, state.annotation.data), {}, {
39
47
  contour: {
40
48
  polyline: worldCoords,
@@ -44,6 +52,10 @@ class PlanarFreehandROI extends BaseAdapter3D {
44
52
  points
45
53
  }),
46
54
  frameNumber: ReferencedFrameNumber
55
+ }, splineTypeItem && {
56
+ spline: {
57
+ type: splineTypeItem.TextValue
58
+ }
47
59
  });
48
60
  if (referencedImageId) {
49
61
  state.annotation.data.cachedStats = {
@@ -55,6 +67,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
55
67
  return state;
56
68
  }
57
69
  static getTID300RepresentationArguments(tool) {
70
+ var _handles$points, _data$spline;
58
71
  let is3DMeasurement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
59
72
  const {
60
73
  data,
@@ -62,6 +75,9 @@ class PlanarFreehandROI extends BaseAdapter3D {
62
75
  findingSites,
63
76
  metadata
64
77
  } = tool;
78
+ const {
79
+ handles
80
+ } = data;
65
81
  const {
66
82
  polyline,
67
83
  closed
@@ -79,6 +95,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
79
95
  const firstPoint = points[0];
80
96
  points.push(firstPoint);
81
97
  }
98
+ const controlPoints = (handles === null || handles === void 0 || (_handles$points = handles.points) === null || _handles$points === void 0 ? void 0 : _handles$points.length) && toScoords(scoordProps, handles.points);
82
99
  const {
83
100
  area,
84
101
  areaUnit,
@@ -91,6 +108,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
91
108
  } = data.cachedStats["imageId:".concat(referencedImageId)] || {};
92
109
  return {
93
110
  points,
111
+ controlPoints,
94
112
  area,
95
113
  areaUnit,
96
114
  perimeter: perimeter !== null && perimeter !== void 0 ? perimeter : length,
@@ -98,6 +116,7 @@ class PlanarFreehandROI extends BaseAdapter3D {
98
116
  mean,
99
117
  max,
100
118
  stdDev,
119
+ splineType: (_data$spline = data.spline) === null || _data$spline === void 0 ? void 0 : _data$spline.type,
101
120
  trackingIdentifierTextValue: this.trackingIdentifierTextValue,
102
121
  finding,
103
122
  findingSites: findingSites || [],
@@ -108,6 +127,10 @@ class PlanarFreehandROI extends BaseAdapter3D {
108
127
  }
109
128
  _PlanarFreehandROI = PlanarFreehandROI;
110
129
  _PlanarFreehandROI.closedContourThreshold = 1e-5;
111
- _PlanarFreehandROI.init("PlanarFreehandROI", TID300Polyline);
130
+ (() => {
131
+ _PlanarFreehandROI.init('PlanarFreehandROI', ControlPointPolyline);
132
+ _PlanarFreehandROI.registerSubType(_PlanarFreehandROI, 'LivewireContour');
133
+ _PlanarFreehandROI.registerSubType(_PlanarFreehandROI, 'SplineROI');
134
+ })();
112
135
 
113
136
  export { PlanarFreehandROI as default };
@@ -5,6 +5,16 @@ export declare const TEXT_ANNOTATION_POSITION: {
5
5
  meaning: string;
6
6
  value: string;
7
7
  };
8
+ export declare const CONTROL_POINTS_CODE: {
9
+ schemeDesignator: string;
10
+ meaning: string;
11
+ value: string;
12
+ };
13
+ export declare const SPLINE_TYPE_CODE: {
14
+ schemeDesignator: string;
15
+ meaning: string;
16
+ value: string;
17
+ };
8
18
  export declare const COMMENT_CODE: {
9
19
  schemeDesignator: string;
10
20
  meaning: string;
@@ -9,6 +9,16 @@ const TEXT_ANNOTATION_POSITION = {
9
9
  meaning: 'Text Annotation Position',
10
10
  value: 'TextPosition'
11
11
  };
12
+ const CONTROL_POINTS_CODE = {
13
+ schemeDesignator: CS3D_DESIGNATOR,
14
+ meaning: 'Control Points',
15
+ value: 'ControlPoints'
16
+ };
17
+ const SPLINE_TYPE_CODE = {
18
+ schemeDesignator: CS3D_DESIGNATOR,
19
+ meaning: 'Spline Type',
20
+ value: 'SplineType'
21
+ };
12
22
  const COMMENT_CODE = {
13
23
  schemeDesignator: 'DCM',
14
24
  meaning: 'Comment',
@@ -47,4 +57,4 @@ const metaRTSSContour = _objectSpread(_objectSpread({}, metaSRAnnotation), {}, {
47
57
  }
48
58
  });
49
59
 
50
- export { COMMENT_CODE, CS3D_DESIGNATOR, ImplementationClassRtssContours, ImplementationClassUidSRAnnotation, NO_IMAGE_ID, TEXT_ANNOTATION_POSITION, fileMetaInformationVersionArray1, fileMetaInformationVersionArray2, metaRTSSContour, metaSRAnnotation };
60
+ export { COMMENT_CODE, CONTROL_POINTS_CODE, CS3D_DESIGNATOR, ImplementationClassRtssContours, ImplementationClassUidSRAnnotation, NO_IMAGE_ID, SPLINE_TYPE_CODE, TEXT_ANNOTATION_POSITION, fileMetaInformationVersionArray1, fileMetaInformationVersionArray2, metaRTSSContour, metaSRAnnotation };
@@ -1 +1 @@
1
- export declare const version = "4.18.5";
1
+ export declare const version = "4.19.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/adapters",
3
- "version": "4.18.5",
3
+ "version": "4.19.2",
4
4
  "description": "Adapters for Cornerstone3D to/from formats including DICOM SR and others",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -89,8 +89,8 @@
89
89
  "ndarray": "1.0.19"
90
90
  },
91
91
  "peerDependencies": {
92
- "@cornerstonejs/core": "4.18.5",
93
- "@cornerstonejs/tools": "4.18.5"
92
+ "@cornerstonejs/core": "4.19.2",
93
+ "@cornerstonejs/tools": "4.19.2"
94
94
  },
95
- "gitHead": "02e80d90ade8a0e579e6d7c911ec55f7758e173d"
95
+ "gitHead": "24fbe17243ee637b75910de981b8d839c2c063b8"
96
96
  }