|
1 | | -import { utilities } from "dcmjs"; |
| 1 | +import { utilities } from 'dcmjs'; |
2 | 2 |
|
3 | | -import MeasurementReport from "./MeasurementReport"; |
4 | | -import CORNERSTONE_4_TAG from "./cornerstone4Tag"; |
| 3 | +import MeasurementReport from './MeasurementReport'; |
| 4 | +import CORNERSTONE_4_TAG from './cornerstone4Tag'; |
5 | 5 |
|
6 | 6 | const { Point: TID300Point } = utilities.TID300; |
7 | 7 |
|
8 | | -const ARROW_ANNOTATE = "ArrowAnnotate"; |
9 | | -const CORNERSTONEFREETEXT = "CORNERSTONEFREETEXT"; |
| 8 | +const ARROW_ANNOTATE = 'ArrowAnnotate'; |
| 9 | +const CORNERSTONEFREETEXT = 'CORNERSTONEFREETEXT'; |
10 | 10 |
|
11 | 11 | class ArrowAnnotate { |
12 | | - static getMeasurementData(MeasurementGroup) { |
13 | | - const { defaultState, SCOORDGroup, findingGroup } = |
14 | | - MeasurementReport.getSetupMeasurementData(MeasurementGroup); |
15 | | - |
16 | | - const { GraphicData } = SCOORDGroup; |
17 | | - |
18 | | - const state = { |
19 | | - ...defaultState, |
20 | | - toolType: ArrowAnnotate.toolType, |
21 | | - active: false, |
22 | | - handles: { |
23 | | - start: { |
24 | | - x: GraphicData[0], |
25 | | - y: GraphicData[1], |
26 | | - highlight: true, |
27 | | - active: false |
28 | | - }, |
29 | | - // Use a generic offset if the stored data doesn't have the endpoint, otherwise |
30 | | - // use the actual endpoint. |
31 | | - end: { |
32 | | - x: |
33 | | - GraphicData.length == 4 |
34 | | - ? GraphicData[2] |
35 | | - : GraphicData[0] + 20, |
36 | | - y: |
37 | | - GraphicData.length == 4 |
38 | | - ? GraphicData[3] |
39 | | - : GraphicData[1] + 20, |
40 | | - highlight: true, |
41 | | - active: false |
42 | | - }, |
43 | | - textBox: { |
44 | | - hasMoved: false, |
45 | | - movesIndependently: false, |
46 | | - drawnIndependently: true, |
47 | | - allowedOutsideImage: true, |
48 | | - hasBoundingBox: true |
49 | | - } |
50 | | - }, |
51 | | - invalidated: true, |
52 | | - visible: true |
53 | | - }; |
54 | | - |
55 | | - return state; |
| 12 | + static getMeasurementData(MeasurementGroup) { |
| 13 | + const { defaultState, SCOORDGroup, findingGroup } = |
| 14 | + MeasurementReport.getSetupMeasurementData(MeasurementGroup); |
| 15 | + |
| 16 | + const { GraphicData } = SCOORDGroup; |
| 17 | + |
| 18 | + const state = { |
| 19 | + ...defaultState, |
| 20 | + toolType: ArrowAnnotate.toolType, |
| 21 | + active: false, |
| 22 | + handles: { |
| 23 | + start: { |
| 24 | + x: GraphicData[0], |
| 25 | + y: GraphicData[1], |
| 26 | + highlight: true, |
| 27 | + active: false, |
| 28 | + }, |
| 29 | + // Use a generic offset if the stored data doesn't have the endpoint, otherwise |
| 30 | + // use the actual endpoint. |
| 31 | + end: { |
| 32 | + x: GraphicData.length == 4 ? GraphicData[2] : GraphicData[0] + 20, |
| 33 | + y: GraphicData.length == 4 ? GraphicData[3] : GraphicData[1] + 20, |
| 34 | + highlight: true, |
| 35 | + active: false, |
| 36 | + }, |
| 37 | + textBox: { |
| 38 | + hasMoved: false, |
| 39 | + movesIndependently: false, |
| 40 | + drawnIndependently: true, |
| 41 | + allowedOutsideImage: true, |
| 42 | + hasBoundingBox: true, |
| 43 | + }, |
| 44 | + }, |
| 45 | + invalidated: true, |
| 46 | + visible: true, |
| 47 | + }; |
| 48 | + |
| 49 | + return state; |
| 50 | + } |
| 51 | + |
| 52 | + static getTID300RepresentationArguments(tool) { |
| 53 | + const points = [tool.handles.start, tool.handles.end]; |
| 54 | + |
| 55 | + const { findingSites } = tool; |
| 56 | + let { finding } = tool; |
| 57 | + |
| 58 | + const TID300RepresentationArguments = { |
| 59 | + points, |
| 60 | + trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`, |
| 61 | + findingSites: findingSites || [], |
| 62 | + }; |
| 63 | + |
| 64 | + // If freetext finding isn't present, add it from the tool label. |
| 65 | + if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT) { |
| 66 | + finding = { |
| 67 | + CodeValue: CORNERSTONEFREETEXT, |
| 68 | + CodingSchemeDesignator: 'CST4', |
| 69 | + CodeMeaning: tool.label, |
| 70 | + }; |
56 | 71 | } |
57 | 72 |
|
58 | | - static getTID300RepresentationArguments(tool) { |
59 | | - const points = [tool.handles.start, tool.handles.end]; |
| 73 | + TID300RepresentationArguments.finding = finding; |
60 | 74 |
|
61 | | - const { findingSites } = tool; |
62 | | - let { finding } = tool; |
63 | | - |
64 | | - const TID300RepresentationArguments = { |
65 | | - points, |
66 | | - trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`, |
67 | | - findingSites: findingSites || [] |
68 | | - }; |
69 | | - |
70 | | - // If freetext finding isn't present, add it from the tool label. |
71 | | - if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT) { |
72 | | - finding = { |
73 | | - CodeValue: CORNERSTONEFREETEXT, |
74 | | - CodingSchemeDesignator: "CST4", |
75 | | - CodeMeaning: tool.label |
76 | | - }; |
77 | | - } |
78 | | - |
79 | | - TID300RepresentationArguments.finding = finding; |
80 | | - |
81 | | - return TID300RepresentationArguments; |
82 | | - } |
| 75 | + return TID300RepresentationArguments; |
| 76 | + } |
83 | 77 | } |
84 | 78 |
|
85 | 79 | ArrowAnnotate.toolType = ARROW_ANNOTATE; |
86 | 80 | ArrowAnnotate.utilityToolType = ARROW_ANNOTATE; |
87 | 81 | ArrowAnnotate.TID300Representation = TID300Point; |
88 | | -ArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => { |
89 | | - if (!TrackingIdentifier.includes(":")) { |
90 | | - return false; |
91 | | - } |
| 82 | +ArrowAnnotate.isValidCornerstoneTrackingIdentifier = (TrackingIdentifier) => { |
| 83 | + if (!TrackingIdentifier.includes(':')) { |
| 84 | + return false; |
| 85 | + } |
92 | 86 |
|
93 | | - const [cornerstone4Tag, toolType] = TrackingIdentifier.split(":"); |
| 87 | + const [cornerstone4Tag, toolType] = TrackingIdentifier.split(':'); |
94 | 88 |
|
95 | | - if (cornerstone4Tag !== CORNERSTONE_4_TAG) { |
96 | | - return false; |
97 | | - } |
| 89 | + if (cornerstone4Tag !== CORNERSTONE_4_TAG) { |
| 90 | + return false; |
| 91 | + } |
98 | 92 |
|
99 | | - return toolType === ARROW_ANNOTATE; |
| 93 | + return toolType === ARROW_ANNOTATE; |
100 | 94 | }; |
101 | 95 |
|
102 | 96 | MeasurementReport.registerTool(ArrowAnnotate); |
|
0 commit comments