* Small refactor into Table Class setting events as static object into class * feature(STOW-SR) : Initial changes to stow when we have Server. * Improvements into requests and small fix into style * Small fix for jumpToRow without refheshing page * Handling STOW-SR once we don't have server * feature(STOW-SR) Refactor * Merge request with makeRequest and delete old file * Expose wadoproxy to client and update measurement-table to start using wadoproxy.getServerUrl * Move WADOProxy.getServerUrl to Measurement-table package. Fix querystring issue. * Remove proxy:enabled in favour of requestOptions.requestFromBrowser * Bcrypt 2.0.0 to fix Travis
78 lines
2.9 KiB
JavaScript
78 lines
2.9 KiB
JavaScript
import { OHIF } from 'meteor/ohif:core';
|
|
import { cornerstone } from 'meteor/ohif:cornerstone';
|
|
import { getInstanceMetadata } from './srUtils';
|
|
|
|
export default getLengthMeasurementData = (lengthMeasurementContent, displaySets) => {
|
|
let lengthStates = [];
|
|
|
|
lengthMeasurementContent.forEach(groupItemContent => {
|
|
const lengthContent = groupItemContent.ContentSequence;
|
|
const reference = lengthContent.ContentSequence.ReferencedSOPSequence;
|
|
const lengthState = {};
|
|
|
|
lengthState.measuredValue = groupItemContent.MeasuredValueSequence.NumericValue;
|
|
lengthState.handles = {start: {}, end: {}};
|
|
[lengthState.handles.start.x,
|
|
lengthState.handles.start.y,
|
|
lengthState.handles.end.x,
|
|
lengthState.handles.end.y] = lengthContent.GraphicData;
|
|
|
|
// TODO: Save textbox position in GraphicData?
|
|
lengthState.handles.textBox = {
|
|
hasMoved: false,
|
|
movesIndependently: false,
|
|
drawnIndependently: true,
|
|
allowedOutsideImage: true,
|
|
hasBoundingBox: true
|
|
}
|
|
|
|
lengthState.ReferencedInstanceUID = reference.ReferencedSOPInstanceUID;
|
|
if (reference.ReferencedFrameNumber && reference.ReferencedFrameNumber !== 'NaN') {
|
|
lengthState.ReferencedFrameNumber = reference.ReferencedFrameNumber;
|
|
} else {
|
|
lengthState.ReferencedFrameNumber = 0;
|
|
}
|
|
|
|
lengthStates.push(lengthState);
|
|
});
|
|
|
|
const lengthMeasurementData = [];
|
|
|
|
let measurementNumber = 0;
|
|
lengthStates.forEach(lengthState => {
|
|
const sopInstanceUid = lengthState.ReferencedInstanceUID;
|
|
const instanceMetadata = getInstanceMetadata(displaySets, sopInstanceUid);
|
|
const imageId = OHIF.viewerbase.getImageId(instanceMetadata);
|
|
if (!imageId) {
|
|
return;
|
|
}
|
|
|
|
const studyInstanceUid = cornerstone.metaData.get('study', imageId).studyInstanceUid;
|
|
const seriesInstanceUid = cornerstone.metaData.get('series', imageId).seriesInstanceUid;
|
|
const patientId = instanceMetadata._study.patientId;
|
|
const frameIndex = lengthState.ReferencedFrameNumber;
|
|
const imagePath = [studyInstanceUid, seriesInstanceUid, sopInstanceUid, frameIndex].join('_');
|
|
const measurement = {
|
|
handles: lengthState.handles,
|
|
length: lengthState.measuredValue,
|
|
imageId,
|
|
imagePath,
|
|
sopInstanceUid,
|
|
seriesInstanceUid,
|
|
studyInstanceUid,
|
|
patientId,
|
|
frameIndex,
|
|
measurementNumber: ++measurementNumber,
|
|
userId: 'UserID',
|
|
timepointId: OHIF.viewer.data.currentTimepointId,
|
|
toolType: 'length',
|
|
_id: imageId + measurementNumber,
|
|
};
|
|
|
|
lengthMeasurementData.push(measurement);
|
|
});
|
|
|
|
|
|
return lengthMeasurementData;
|
|
};
|