req custom overlay: additional field untuk MRI

This commit is contained in:
AlfandiMario
2025-11-04 12:08:48 +07:00
parent 62b821df78
commit 923d34e70d
2 changed files with 60 additions and 2 deletions

View File

@@ -154,10 +154,18 @@ const phaseFieldOfViewItem = {
id: 'PhaseFOV', id: 'PhaseFOV',
customizationType: 'ohif.overlayItem', customizationType: 'ohif.overlayItem',
label: '% Phase FOV: ', label: '% Phase FOV: ',
title: '% Phase FOV', title: 'Percent Phase FOV',
condition: ({ mriInstanceData }) => mriInstanceData?.percentPhaseFieldOfView, condition: ({ mriInstanceData }) => mriInstanceData?.percentPhaseFieldOfView,
contentF: ({ mriInstanceData }) => `${mriInstanceData.percentPhaseFieldOfView} %`, contentF: ({ mriInstanceData }) => `${mriInstanceData.percentPhaseFieldOfView} %`,
}; };
const phaseFieldOfViewDimensionsItem = {
id: 'FOVDimensions',
customizationType: 'ohif.overlayItem',
label: 'FOV Dim: ',
title: 'Field of View Dimensions',
condition: ({ mriInstanceData }) => mriInstanceData?.fieldOfViewDimensions,
contentF: ({ mriInstanceData }) => mriInstanceData?.fieldOfViewDimensions.join(' x '),
};
const acquisitionMatrixItem = { const acquisitionMatrixItem = {
id: 'AcquisitionMatrix', id: 'AcquisitionMatrix',
customizationType: 'ohif.overlayItem', customizationType: 'ohif.overlayItem',
@@ -166,6 +174,16 @@ const acquisitionMatrixItem = {
condition: ({ mriInstanceData }) => mriInstanceData?.acquisitionMatrix, condition: ({ mriInstanceData }) => mriInstanceData?.acquisitionMatrix,
contentF: ({ mriInstanceData }) => `${mriInstanceData.acquisitionMatrix.join(' x ')}`, contentF: ({ mriInstanceData }) => `${mriInstanceData.acquisitionMatrix.join(' x ')}`,
}; };
const imageMatrixItem = {
id: 'ImageMatrix',
customizationType: 'ohif.overlayItem',
label: 'Image Matrix (RxC): ',
title: 'Image Matrix',
condition: ({ mriInstanceData }) =>
mriInstanceData?.imageMatrixRows && mriInstanceData?.imageMatrixColumns,
contentF: ({ mriInstanceData }) =>
`${mriInstanceData.imageMatrixRows} x ${mriInstanceData.imageMatrixColumns}`,
};
const mriTopLeftItems = { const mriTopLeftItems = {
id: 'cornerstoneOverlayTopLeft', id: 'cornerstoneOverlayTopLeft',
@@ -174,7 +192,9 @@ const mriTopLeftItems = {
sliceLocationItem, sliceLocationItem,
sliceSpacingItem, sliceSpacingItem,
phaseFieldOfViewItem, phaseFieldOfViewItem,
phaseFieldOfViewDimensionsItem,
acquisitionMatrixItem, acquisitionMatrixItem,
imageMatrixItem,
], ],
}; };
@@ -225,6 +245,14 @@ const phaseEncodingDirectionItem = {
condition: ({ mriInstanceData }) => mriInstanceData?.phaseEncodingDirection, condition: ({ mriInstanceData }) => mriInstanceData?.phaseEncodingDirection,
contentF: ({ mriInstanceData }) => `${mriInstanceData.phaseEncodingDirection} `, contentF: ({ mriInstanceData }) => `${mriInstanceData.phaseEncodingDirection} `,
}; };
const numOfAveragesItem = {
id: 'MRINumOfAverages',
customizationType: 'ohif.overlayItem',
label: 'NEX: ',
title: 'MRI Number of Averages',
condition: ({ mriInstanceData }) => mriInstanceData?.numOfAverages,
contentF: ({ mriInstanceData }) => `${mriInstanceData.numOfAverages} `,
};
const echoTrainLengthItem = { const echoTrainLengthItem = {
id: 'MRIEchoTrainLength', id: 'MRIEchoTrainLength',
customizationType: 'ohif.overlayItem', customizationType: 'ohif.overlayItem',
@@ -262,6 +290,22 @@ const acquisitionTimeItem = {
return `${time}`.trim(); return `${time}`.trim();
}, },
}; };
const acquisitionDurationTotalItem = {
id: 'MRIAcquisitionDurationTotal',
customizationType: 'ohif.overlayItem',
label: 'Total Acq Dur: ',
title: 'MRI Total Duration Acquisition',
condition: ({ mriInstanceData }) => mriInstanceData?.acquisitionDurationTotal,
contentF: ({ mriInstanceData }) => mriInstanceData.acquisitionDurationTotal,
};
const acquisitionDurationPerFrameItem = {
id: 'MRIAcquisitionDurationPerFrame',
customizationType: 'ohif.overlayItem',
label: 'Frame Acq Dur: ',
title: 'MRI Duration Acquisition Per Frame',
condition: ({ mriInstanceData }) => mriInstanceData?.acquisitionDurationPerFrame,
contentF: ({ mriInstanceData }) => mriInstanceData.acquisitionDurationPerFrame,
};
const parallelImagingItem = { const parallelImagingItem = {
id: 'MRIParallelImaging', id: 'MRIParallelImaging',
customizationType: 'ohif.overlayItem', customizationType: 'ohif.overlayItem',
@@ -279,10 +323,12 @@ const mriBottomLeftItems = {
receiverCoilItem, receiverCoilItem,
mriScanModeItem, mriScanModeItem,
phaseEncodingDirectionItem, phaseEncodingDirectionItem,
numOfAveragesItem,
echoTrainLengthItem, echoTrainLengthItem,
flipAngleItem, flipAngleItem,
pixelBandwidthItem, pixelBandwidthItem,
acquisitionTimeItem, acquisitionDurationTotalItem,
acquisitionDurationPerFrameItem,
parallelImagingItem, parallelImagingItem,
], ],
}; };

View File

@@ -148,7 +148,10 @@ interface MriOverlayInstanceData {
sliceLocation?: string; sliceLocation?: string;
spacingBetweenSlices?: string; spacingBetweenSlices?: string;
percentPhaseFieldOfView?: string; percentPhaseFieldOfView?: string;
fieldOfViewDimensions?: string;
acquisitionMatrix?: string; acquisitionMatrix?: string;
imageMatrixRows?: number;
imageMatrixColumns?: number;
scanningSequence?: string; scanningSequence?: string;
repetitionTime?: string; repetitionTime?: string;
echoTime?: string; echoTime?: string;
@@ -156,10 +159,13 @@ interface MriOverlayInstanceData {
receiveCoilName?: string; receiveCoilName?: string;
mrAcquisitionType?: string; mrAcquisitionType?: string;
phaseEncodingDirection?: string; phaseEncodingDirection?: string;
numOfAverages?: string;
echoTrainLength?: string; echoTrainLength?: string;
flipAngle?: string; flipAngle?: string;
pixelBandwidth?: string; pixelBandwidth?: string;
acquisitionTime?: string; acquisitionTime?: string;
acquisitionDurationTotal?: string;
acquisitionDurationPerFrame?: string;
parallelAcquisitionTechnique?: string; parallelAcquisitionTechnique?: string;
} }
@@ -225,7 +231,10 @@ export const instanceDataForMriOverlayItem = (
sliceLocation: instance['00201041']?.Value?.[0], sliceLocation: instance['00201041']?.Value?.[0],
spacingBetweenSlices: instance['00180088']?.Value?.[0], spacingBetweenSlices: instance['00180088']?.Value?.[0],
percentPhaseFieldOfView: instance['00180094']?.Value?.[0], percentPhaseFieldOfView: instance['00180094']?.Value?.[0],
fieldOfViewDimensions: instance['00181149']?.Value,
acquisitionMatrix: instance['00181310']?.Value, acquisitionMatrix: instance['00181310']?.Value,
imageMatrixRows: instance['00280010']?.Value?.[0],
imageMatrixColumns: instance['00280011']?.Value?.[0],
scanningSequence: instance['00180020']?.Value?.[0], scanningSequence: instance['00180020']?.Value?.[0],
repetitionTime: instance['00180080']?.Value?.[0], repetitionTime: instance['00180080']?.Value?.[0],
echoTime: instance['00180081']?.Value?.[0], echoTime: instance['00180081']?.Value?.[0],
@@ -233,10 +242,13 @@ export const instanceDataForMriOverlayItem = (
receiveCoilName: instance['00181250']?.Value?.[0], receiveCoilName: instance['00181250']?.Value?.[0],
mrAcquisitionType: instance['00180023']?.Value?.[0], mrAcquisitionType: instance['00180023']?.Value?.[0],
phaseEncodingDirection: instance['00181312']?.Value?.[0], phaseEncodingDirection: instance['00181312']?.Value?.[0],
numOfAverages: instance['00180083']?.Value?.[0],
echoTrainLength: instance['00180091']?.Value?.[0], echoTrainLength: instance['00180091']?.Value?.[0],
flipAngle: instance['00181314']?.Value?.[0], flipAngle: instance['00181314']?.Value?.[0],
pixelBandwidth: instance['00180095']?.Value?.[0], pixelBandwidth: instance['00180095']?.Value?.[0],
acquisitionTime: instance['00080032']?.Value?.[0], acquisitionTime: instance['00080032']?.Value?.[0],
acquisitionDurationTotal: instance['00181242']?.Value?.[0],
acquisitionDurationPerFrame: instance['00181243']?.Value?.[0],
parallelAcquisitionTechnique: instance['00181316']?.Value?.[0], parallelAcquisitionTechnique: instance['00181316']?.Value?.[0],
}; };