fix: MetadataProvider number from string (#2530)

This commit is contained in:
Alireza 2021-09-28 07:23:05 -04:00 committed by GitHub
parent 3c9f3cb273
commit 1ec40d943d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -189,7 +189,7 @@ class MetadataProvider {
metadata = {
modality: instance.Modality,
seriesInstanceUID: instance.SeriesInstanceUID,
seriesNumber: getNumberValues(instance.SeriesNumber),
seriesNumber: validNumber(instance.SeriesNumber),
studyInstanceUID: instance.StudyInstanceUID,
seriesDate,
seriesTime,
@ -197,9 +197,9 @@ class MetadataProvider {
break;
case WADO_IMAGE_LOADER_TAGS.PATIENT_STUDY_MODULE:
metadata = {
patientAge: getNumberValues(instance.PatientAge),
patientSize: getNumberValues(instance.PatientSize),
patientWeight: getNumberValues(instance.PatientWeight),
patientAge: validNumber(instance.PatientAge),
patientSize: validNumber(instance.PatientSize),
patientWeight: validNumber(instance.PatientWeight),
};
break;
case WADO_IMAGE_LOADER_TAGS.IMAGE_PLANE_MODULE:
@ -228,49 +228,50 @@ class MetadataProvider {
metadata = {
frameOfReferenceUID: instance.FrameOfReferenceUID,
rows: getNumberValues(instance.Rows),
columns: getNumberValues(instance.Columns),
imageOrientationPatient: getNumberValues(ImageOrientationPatient),
rowCosines: getNumberValues(rowCosines),
columnCosines: getNumberValues(columnCosines),
imagePositionPatient: getNumberValues(instance.ImagePositionPatient),
sliceThickness: getNumberValues(instance.SliceThickness),
sliceLocation: getNumberValues(instance.SliceLocation),
pixelSpacing: getNumberValues(PixelSpacing),
rowPixelSpacing: getNumberValues(rowPixelSpacing),
columnPixelSpacing: getNumberValues(columnPixelSpacing),
rows: validNumber(instance.Rows),
columns: validNumber(instance.Columns),
imageOrientationPatient: validNumber(ImageOrientationPatient),
rowCosines: validNumber(rowCosines),
columnCosines: validNumber(columnCosines),
imagePositionPatient: validNumber(instance.ImagePositionPatient),
sliceThickness: validNumber(instance.SliceThickness),
sliceLocation: validNumber(instance.SliceLocation),
pixelSpacing: validNumber(PixelSpacing),
rowPixelSpacing: validNumber(rowPixelSpacing),
columnPixelSpacing: validNumber(columnPixelSpacing),
};
break;
case WADO_IMAGE_LOADER_TAGS.IMAGE_PIXEL_MODULE:
metadata = {
samplesPerPixel: getNumberValues(instance.SamplesPerPixel),
photometricInterpretation: getNumberValues(instance.PhotometricInterpretation),
rows: getNumberValues(instance.Rows),
columns: getNumberValues(instance.Columns),
bitsAllocated: getNumberValues(instance.BitsAllocated),
bitsStored: getNumberValues(instance.BitsStored),
highBit: getNumberValues(instance.HighBit),
pixelRepresentation: getNumberValues(instance.PixelRepresentation),
planarConfiguration: getNumberValues(instance.PlanarConfiguration),
pixelAspectRatio: getNumberValues(instance.PixelAspectRatio),
smallestPixelValue: getNumberValues(instance.SmallestPixelValue),
largestPixelValue: getNumberValues(instance.LargestPixelValue),
samplesPerPixel: validNumber(instance.SamplesPerPixel),
photometricInterpretation: validNumber(instance.PhotometricInterpretation),
rows: validNumber(instance.Rows),
columns: validNumber(instance.Columns),
bitsAllocated: validNumber(instance.BitsAllocated),
bitsStored: validNumber(instance.BitsStored),
highBit: validNumber(instance.HighBit),
pixelRepresentation: validNumber(instance.PixelRepresentation),
planarConfiguration: validNumber(instance.PlanarConfiguration),
pixelAspectRatio: validNumber(instance.PixelAspectRatio),
smallestPixelValue: validNumber(instance.SmallestPixelValue),
largestPixelValue: validNumber(instance.LargestPixelValue),
redPaletteColorLookupTableDescriptor:
getNumberValues(instance.RedPaletteColorLookupTableDescriptor),
validNumber(instance.RedPaletteColorLookupTableDescriptor),
greenPaletteColorLookupTableDescriptor:
getNumberValues(instance.GreenPaletteColorLookupTableDescriptor),
validNumber(instance.GreenPaletteColorLookupTableDescriptor),
bluePaletteColorLookupTableDescriptor:
getNumberValues(instance.BluePaletteColorLookupTableDescriptor),
validNumber(instance.BluePaletteColorLookupTableDescriptor),
redPaletteColorLookupTableData:
getNumberValues(instance.RedPaletteColorLookupTableData),
validNumber(instance.RedPaletteColorLookupTableData),
greenPaletteColorLookupTableData:
getNumberValues(instance.GreenPaletteColorLookupTableData),
validNumber(instance.GreenPaletteColorLookupTableData),
bluePaletteColorLookupTableData:
getNumberValues(instance.BluePaletteColorLookupTableData),
validNumber(instance.BluePaletteColorLookupTableData),
};
break;
case WADO_IMAGE_LOADER_TAGS.VOI_LUT_MODULE:
debugger
const { WindowCenter, WindowWidth } = instance;
if (WindowCenter === undefined || WindowWidth === undefined) {
return;
@ -283,8 +284,8 @@ class MetadataProvider {
: [WindowWidth];
metadata = {
windowCenter: getNumberValues(windowCenter),
windowWidth: getNumberValues(windowWidth),
windowCenter: validNumber(windowCenter),
windowWidth: validNumber(windowWidth),
};
break;
@ -295,8 +296,8 @@ class MetadataProvider {
}
metadata = {
rescaleIntercept: getNumberValues(instance.RescaleIntercept),
rescaleSlope: getNumberValues(instance.RescaleSlope),
rescaleIntercept: validNumber(instance.RescaleIntercept),
rescaleSlope: validNumber(instance.RescaleSlope),
rescaleType: instance.RescaleType,
};
break;
@ -408,7 +409,7 @@ class MetadataProvider {
case WADO_IMAGE_LOADER_TAGS.GENERAL_IMAGE_MODULE:
metadata = {
sopInstanceUid: instance.SOPInstanceUID,
instanceNumber: getNumberValues(instance.InstanceNumber),
instanceNumber: validNumber(instance.InstanceNumber),
lossyImageCompression: instance.LossyImageCompression,
lossyImageCompressionRatio: instance.LossyImageCompressionRatio,
lossyImageCompressionMethod: instance.LossyImageCompressionMethod,
@ -471,21 +472,13 @@ const metadataProvider = new MetadataProvider();
* @param element - The javascript object for the specified element in the metadata
* @returns {*}
*/
function getNumberValues(element) {
if (!element) {
return;
const validNumber = val => {
if (Array.isArray(val)) {
return val.map(v => (v !== undefined ? Number(v) : v));
} else {
return val !== undefined ? Number(val) : val;
}
if (Array.isArray(element)) {
const values = [];
for (let i = 0; i < element.length; i++) {
values.push(parseFloat(element[i]));
}
return values;
}
return parseFloat(element)
}
};