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',
customizationType: 'ohif.overlayItem',
label: '% Phase FOV: ',
title: '% Phase FOV',
title: 'Percent Phase FOV',
condition: ({ 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 = {
id: 'AcquisitionMatrix',
customizationType: 'ohif.overlayItem',
@@ -166,6 +174,16 @@ const acquisitionMatrixItem = {
condition: ({ mriInstanceData }) => mriInstanceData?.acquisitionMatrix,
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 = {
id: 'cornerstoneOverlayTopLeft',
@@ -174,7 +192,9 @@ const mriTopLeftItems = {
sliceLocationItem,
sliceSpacingItem,
phaseFieldOfViewItem,
phaseFieldOfViewDimensionsItem,
acquisitionMatrixItem,
imageMatrixItem,
],
};
@@ -225,6 +245,14 @@ const phaseEncodingDirectionItem = {
condition: ({ 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 = {
id: 'MRIEchoTrainLength',
customizationType: 'ohif.overlayItem',
@@ -262,6 +290,22 @@ const acquisitionTimeItem = {
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 = {
id: 'MRIParallelImaging',
customizationType: 'ohif.overlayItem',
@@ -279,10 +323,12 @@ const mriBottomLeftItems = {
receiverCoilItem,
mriScanModeItem,
phaseEncodingDirectionItem,
numOfAveragesItem,
echoTrainLengthItem,
flipAngleItem,
pixelBandwidthItem,
acquisitionTimeItem,
acquisitionDurationTotalItem,
acquisitionDurationPerFrameItem,
parallelImagingItem,
],
};

View File

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