feat: Add White Labelling, Hanging Protocols, and tons of Extensions / Mode fixes

* modified

* new files in existing extensions/libraries/modes

* fixed bugs and tests

* Clean up

* fix: viewport display fixed

* Fixed configs for deployment

* Removed unnecessary files and functions

* Fixed default HP module

* Added white labelling

* Fixed hash routing

* Removed unnecessary routers

Co-authored-by: Alireza Sedghi <ar.sedghi@gmail.com>
This commit is contained in:
Erik ZieglerandAlireza Sedghi authored and GitHub committed 2021-05-28 14:32:48 -04:00
1 parent 0db81b30f3
commit 99b8dc4759
93 files changed
+3825 -1293

No files matched your search

+72 -39
View File
@@ -189,7 +189,7 @@ class MetadataProvider {
metadata = {
modality: instance.Modality,
seriesInstanceUID: instance.SeriesInstanceUID,
seriesNumber: instance.SeriesNumber,
seriesNumber: getNumberValues(instance.SeriesNumber),
studyInstanceUID: instance.StudyInstanceUID,
seriesDate,
seriesTime,
@@ -197,9 +197,9 @@ class MetadataProvider {
break;
case WADO_IMAGE_LOADER_TAGS.PATIENT_STUDY_MODULE:
metadata = {
patientAge: instance.PatientAge,
patientSize: instance.PatientSize,
patientWeight: instance.PatientWeight,
patientAge: getNumberValues(instance.PatientAge),
patientSize: getNumberValues(instance.PatientSize),
patientWeight: getNumberValues(instance.PatientWeight),
};
break;
case WADO_IMAGE_LOADER_TAGS.IMAGE_PLANE_MODULE:
@@ -228,51 +228,53 @@ class MetadataProvider {
metadata = {
frameOfReferenceUID: instance.FrameOfReferenceUID,
rows: instance.Rows,
columns: instance.Columns,
imageOrientationPatient: ImageOrientationPatient,
rowCosines,
columnCosines,
imagePositionPatient: instance.ImagePositionPatient,
sliceThickness: instance.SliceThickness,
sliceLocation: instance.SliceLocation,
pixelSpacing: PixelSpacing,
rowPixelSpacing,
columnPixelSpacing,
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),
};
break;
case WADO_IMAGE_LOADER_TAGS.IMAGE_PIXEL_MODULE:
metadata = {
samplesPerPixel: instance.SamplesPerPixel,
photometricInterpretation: instance.PhotometricInterpretation,
rows: instance.Rows,
columns: instance.Columns,
bitsAllocated: instance.BitsAllocated,
bitsStored: instance.BitsStored,
highBit: instance.HighBit,
pixelRepresentation: instance.PixelRepresentation,
planarConfiguration: instance.PlanarConfiguration,
pixelAspectRatio: instance.PixelAspectRatio,
smallestPixelValue: instance.SmallestPixelValue,
largestPixelValue: instance.LargestPixelValue,
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),
redPaletteColorLookupTableDescriptor:
instance.RedPaletteColorLookupTableDescriptor,
getNumberValues(instance.RedPaletteColorLookupTableDescriptor),
greenPaletteColorLookupTableDescriptor:
instance.GreenPaletteColorLookupTableDescriptor,
getNumberValues(instance.GreenPaletteColorLookupTableDescriptor),
bluePaletteColorLookupTableDescriptor:
instance.BluePaletteColorLookupTableDescriptor,
getNumberValues(instance.BluePaletteColorLookupTableDescriptor),
redPaletteColorLookupTableData:
instance.RedPaletteColorLookupTableData,
getNumberValues(instance.RedPaletteColorLookupTableData),
greenPaletteColorLookupTableData:
instance.GreenPaletteColorLookupTableData,
getNumberValues(instance.GreenPaletteColorLookupTableData),
bluePaletteColorLookupTableData:
instance.BluePaletteColorLookupTableData,
getNumberValues(instance.BluePaletteColorLookupTableData),
};
break;
case WADO_IMAGE_LOADER_TAGS.VOI_LUT_MODULE:
const { WindowCenter, WindowWidth } = instance;
if (WindowCenter === undefined || WindowWidth === undefined) {
return;
}
const windowCenter = Array.isArray(WindowCenter)
? WindowCenter
: [WindowCenter];
@@ -281,15 +283,20 @@ class MetadataProvider {
: [WindowWidth];
metadata = {
windowCenter,
windowWidth,
windowCenter: getNumberValues(windowCenter),
windowWidth: getNumberValues(windowWidth),
};
break;
case WADO_IMAGE_LOADER_TAGS.MODALITY_LUT_MODULE:
const { RescaleIntercept, RescaleSlope } = instance;
if (RescaleIntercept === undefined || RescaleSlope === undefined) {
return;
}
metadata = {
rescaleIntercept: instance.RescaleIntercept,
rescaleSlope: instance.RescaleSlope,
rescaleIntercept: getNumberValues(instance.RescaleIntercept),
rescaleSlope: getNumberValues(instance.RescaleSlope),
rescaleType: instance.RescaleType,
};
break;
@@ -401,7 +408,7 @@ class MetadataProvider {
case WADO_IMAGE_LOADER_TAGS.GENERAL_IMAGE_MODULE:
metadata = {
sopInstanceUid: instance.SOPInstanceUID,
instanceNumber: instance.InstanceNumber,
instanceNumber: getNumberValues(instance.InstanceNumber),
lossyImageCompression: instance.LossyImageCompression,
lossyImageCompressionRatio: instance.LossyImageCompressionRatio,
lossyImageCompressionMethod: instance.LossyImageCompressionMethod,
@@ -457,6 +464,31 @@ class MetadataProvider {
const metadataProvider = new MetadataProvider();
/**
* Returns the values as an array of javascript numbers
*
* @param element - The javascript object for the specified element in the metadata
* @returns {*}
*/
function getNumberValues(element) {
if (!element) {
return;
}
if (Array.isArray(element)) {
const values = [];
for (let i = 0; i < element.length; i++) {
values.push(parseFloat(element[i]));
}
return values;
}
return parseFloat(element)
}
export default metadataProvider;
const WADO_IMAGE_LOADER_TAGS = {
@@ -479,3 +511,4 @@ const WADO_IMAGE_LOADER_TAGS = {
};
const INSTANCE = 'instance';
const DICOMWEB = 'dicomweb';