From af9ec01c19074413ae7f25f3a6ec76de5def2dc7 Mon Sep 17 00:00:00 2001 From: AlfandiMario Date: Tue, 4 Nov 2025 11:47:12 +0700 Subject: [PATCH] additional field untuk overlay MRI OHIF --- src/dimse/parseMeta.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/dimse/parseMeta.ts b/src/dimse/parseMeta.ts index f190f49..a9147fc 100644 --- a/src/dimse/parseMeta.ts +++ b/src/dimse/parseMeta.ts @@ -58,10 +58,19 @@ function parseFile(filename: string): Promise { const sliceThickness = dataset.string('x00180050'); const sliceLocation = dataset.string('x00201041'); - // MR-specific tags for overlay // TODO: buat ini dynamic berdasarkan includefields atau modality + // TODO: hapus tambahan di bawah ini yang tidak diperlukan + + // MR-specific tags for overlay const spacingBetweenSlices = dataset.string('x00180088'); const percentPhaseFieldOfView = dataset.string('x00180094'); + const fovDimensionElement = dataset.elements.x00181149; + const fovDimension = fovDimensionElement + ? [ + dataset.uint16('x00181130', 0), + dataset.uint16('x00181130', 1), + ] + : null; const acquisitionMatrixElement = dataset.elements.x00181310; const acquisitionMatrix = acquisitionMatrixElement ? [ @@ -78,10 +87,13 @@ function parseFile(filename: string): Promise { const receiveCoilName = dataset.string('x00181250'); const mrAcquisitionType = dataset.string('x00180023'); const phaseEncodingDirection = dataset.string('x00181312'); + const numOfAverages = dataset.string('x00180083'); const echoTrainLength = dataset.string('x00180091'); const flipAngle = dataset.string('x00181314'); const pixelBandwidth = dataset.string('x00180095'); const acquisitionTime = dataset.string('x00080032'); + const acquistionDurationTotal = dataset.string('x00189073'); // in seconds + const acquistionDurationPerFrame = dataset.string('x00189220'); // in ms const parallelAcquisitionTechnique = dataset.string('x00181316'); // append to all results @@ -116,6 +128,7 @@ function parseFile(filename: string): Promise { '00201041': { Value: [sliceLocation], vr: 'DS' }, '00180088': { Value: [spacingBetweenSlices], vr: 'DS' }, '00180094': { Value: [percentPhaseFieldOfView], vr: 'DS' }, + ...(fovDimension && { '00181149': { Value: fovDimension, vr: 'IS' } }), ...(acquisitionMatrix && { '00181310': { Value: acquisitionMatrix, vr: 'US' } }), '00180020': { Value: [scanningSequence], vr: 'CS' }, '00180080': { Value: [repetitionTime], vr: 'DS' }, @@ -124,10 +137,13 @@ function parseFile(filename: string): Promise { '00181250': { Value: [receiveCoilName], vr: 'SH' }, '00180023': { Value: [mrAcquisitionType], vr: 'CS' }, '00181312': { Value: [phaseEncodingDirection], vr: 'CS' }, + '00180083': { Value: [numOfAverages], vr: 'DS' }, '00180091': { Value: [echoTrainLength], vr: 'IS' }, '00181314': { Value: [flipAngle], vr: 'DS' }, '00180095': { Value: [pixelBandwidth], vr: 'DS' }, '00080032': { Value: [acquisitionTime], vr: 'TM' }, + '00189073': { Value: [acquistionDurationTotal], vr: 'DS' }, + '00189220': { Value: [acquistionDurationPerFrame], vr: 'FD' }, '00181316': { Value: [parallelAcquisitionTechnique], vr: 'CS' }, };