Check study instances whether they have image data based on sopClassUid instead of rows
This commit is contained in:
parent
dfcb33153f
commit
896cc715ea
@ -22,9 +22,9 @@ createStacks = function(study) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Don't display thumbnails for non-image modalities
|
// Don't display thumbnails for non-image modalities
|
||||||
// All imaging modalities must have a valid value for rows (or columns)
|
// All imaging modalities must have a valid value for sopClassUid
|
||||||
var anInstance = series.instances[0];
|
var anInstance = series.instances[0];
|
||||||
if (!anInstance || !anInstance.rows) {
|
if (!anInstance || !isImage(anInstance.sopClassUid)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
59
Packages/viewerbase/lib/isImage.js
Normal file
59
Packages/viewerbase/lib/isImage.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/**
|
||||||
|
* Checks whether dicom files with specified SOP Class UID have image data
|
||||||
|
* @param {string} sopClassUid - SOP Class UID to be checked
|
||||||
|
* @returns {boolean} - true if it has image data
|
||||||
|
*/
|
||||||
|
isImage = function(sopClassUid) {
|
||||||
|
if (sopClassUid == sopClassDictionary.ComputedRadiographyImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalXRayImageStorageForPresentation
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalXRayImageStorageForProcessing
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalMammographyXRayImageStorageForPresentation
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalMammographyXRayImageStorageForProcessing
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalIntraOralXRayImageStorageForPresentation
|
||||||
|
|| sopClassUid == sopClassDictionary.DigitalIntraOralXRayImageStorageForProcessing
|
||||||
|
|| sopClassUid == sopClassDictionary.CTImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedCTImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.LegacyConvertedEnhancedCTImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.UltrasoundMultiframeImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.MRImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedMRImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedMRColorImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.LegacyConvertedEnhancedMRImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.UltrasoundImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.SecondaryCaptureImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.MultiframeSingleBitSecondaryCaptureImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.MultiframeGrayscaleByteSecondaryCaptureImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.MultiframeGrayscaleWordSecondaryCaptureImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.MultiframeTrueColorSecondaryCaptureImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.XRayAngiographicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedXAImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.XRayRadiofluoroscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedXRFImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.XRay3DAngiographicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.XRay3DCraniofacialImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.BreastTomosynthesisImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.BreastProjectionXRayImageStorageForPresentation
|
||||||
|
|| sopClassUid == sopClassDictionary.BreastProjectionXRayImageStorageForProcessing
|
||||||
|
|| sopClassUid == sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForPresentation
|
||||||
|
|| sopClassUid == sopClassDictionary.IntravascularOpticalCoherenceTomographyImageStorageForProcessing
|
||||||
|
|| sopClassUid == sopClassDictionary.NuclearMedicineImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VLEndoscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VideoEndoscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VLMicroscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VideoMicroscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VLSlideCoordinatesMicroscopicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VLPhotographicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VideoPhotographicImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.OphthalmicPhotography8BitImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.OphthalmicPhotography16BitImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.OphthalmicTomographyImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.VLWholeSlideMicroscopyImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.PositronEmissionTomographyImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.EnhancedPETImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.LegacyConvertedEnhancedPETImageStorage
|
||||||
|
|| sopClassUid == sopClassDictionary.RTImageStorage) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
115
Packages/viewerbase/lib/sopClassDictionary.js
Normal file
115
Packages/viewerbase/lib/sopClassDictionary.js
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
sopClassDictionary = {
|
||||||
|
ComputedRadiographyImageStorage: "1.2.840.10008.5.1.4.1.1.1",
|
||||||
|
DigitalXRayImageStorageForPresentation: "1.2.840.10008.5.1.4.1.1.1.1",
|
||||||
|
DigitalXRayImageStorageForProcessing: "1.2.840.10008.5.1.4.1.1.1.1.1",
|
||||||
|
DigitalMammographyXRayImageStorageForPresentation: "1.2.840.10008.5.1.4.1.1.1.2",
|
||||||
|
DigitalMammographyXRayImageStorageForProcessing: "1.2.840.10008.5.1.4.1.1.1.2.1",
|
||||||
|
DigitalIntraOralXRayImageStorageForPresentation: "1.2.840.10008.5.1.4.1.1.1.3",
|
||||||
|
DigitalIntraOralXRayImageStorageForProcessing: "1.2.840.10008.5.1.4.1.1.1.3.1",
|
||||||
|
CTImageStorage: "1.2.840.10008.5.1.4.1.1.2",
|
||||||
|
EnhancedCTImageStorage: "1.2.840.10008.5.1.4.1.1.2.1",
|
||||||
|
LegacyConvertedEnhancedCTImageStorage: "1.2.840.10008.5.1.4.1.1.2.2",
|
||||||
|
UltrasoundMultiframeImageStorage: "1.2.840.10008.5.1.4.1.1.3.1",
|
||||||
|
MRImageStorage: "1.2.840.10008.5.1.4.1.1.4",
|
||||||
|
EnhancedMRImageStorage: "1.2.840.10008.5.1.4.1.1.4.1",
|
||||||
|
MRSpectroscopyStorage: "1.2.840.10008.5.1.4.1.1.4.2",
|
||||||
|
EnhancedMRColorImageStorage: "1.2.840.10008.5.1.4.1.1.4.3",
|
||||||
|
LegacyConvertedEnhancedMRImageStorage: "1.2.840.10008.5.1.4.1.1.4.4",
|
||||||
|
UltrasoundImageStorage: "1.2.840.10008.5.1.4.1.1.6.1",
|
||||||
|
EnhancedUSVolumeStorage: "1.2.840.10008.5.1.4.1.1.6.2",
|
||||||
|
SecondaryCaptureImageStorage: "1.2.840.10008.5.1.4.1.1.7",
|
||||||
|
MultiframeSingleBitSecondaryCaptureImageStorage: "1.2.840.10008.5.1.4.1.1.7.1",
|
||||||
|
MultiframeGrayscaleByteSecondaryCaptureImageStorage: "1.2.840.10008.5.1.4.1.1.7.2",
|
||||||
|
MultiframeGrayscaleWordSecondaryCaptureImageStorage: "1.2.840.10008.5.1.4.1.1.7.3",
|
||||||
|
MultiframeTrueColorSecondaryCaptureImageStorage: "1.2.840.10008.5.1.4.1.1.7.4",
|
||||||
|
Sop12LeadECGWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.1.1",
|
||||||
|
GeneralECGWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.1.2",
|
||||||
|
AmbulatoryECGWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.1.3",
|
||||||
|
HemodynamicWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.2.1",
|
||||||
|
CardiacElectrophysiologyWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.3.1",
|
||||||
|
BasicVoiceAudioWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.4.1",
|
||||||
|
GeneralAudioWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.4.2",
|
||||||
|
ArterialPulseWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.5.1",
|
||||||
|
RespiratoryWaveformStorage: "1.2.840.10008.5.1.4.1.1.9.6.1",
|
||||||
|
GrayscaleSoftcopyPresentationStateStorage: "1.2.840.10008.5.1.4.1.1.11.1",
|
||||||
|
ColorSoftcopyPresentationStateStorage: "1.2.840.10008.5.1.4.1.1.11.2",
|
||||||
|
PseudoColorSoftcopyPresentationStateStorage: "1.2.840.10008.5.1.4.1.1.11.3",
|
||||||
|
BlendingSoftcopyPresentationStateStorage: "1.2.840.10008.5.1.4.1.1.11.4",
|
||||||
|
XAXRFGrayscaleSoftcopyPresentationStateStorage: "1.2.840.10008.5.1.4.1.1.11.5",
|
||||||
|
XRayAngiographicImageStorage: "1.2.840.10008.5.1.4.1.1.12.1",
|
||||||
|
EnhancedXAImageStorage: "1.2.840.10008.5.1.4.1.1.12.1.1",
|
||||||
|
XRayRadiofluoroscopicImageStorage: "1.2.840.10008.5.1.4.1.1.12.2",
|
||||||
|
EnhancedXRFImageStorage: "1.2.840.10008.5.1.4.1.1.12.2.1",
|
||||||
|
XRay3DAngiographicImageStorage: "1.2.840.10008.5.1.4.1.1.13.1.1",
|
||||||
|
XRay3DCraniofacialImageStorage: "1.2.840.10008.5.1.4.1.1.13.1.2",
|
||||||
|
BreastTomosynthesisImageStorage: "1.2.840.10008.5.1.4.1.1.13.1.3",
|
||||||
|
BreastProjectionXRayImageStorageForPresentation: "1.2.840.10008.5.1.4.1.1.13.1.4",
|
||||||
|
BreastProjectionXRayImageStorageForProcessing: "1.2.840.10008.5.1.4.1.1.13.1.5",
|
||||||
|
IntravascularOpticalCoherenceTomographyImageStorageForPresentation: "1.2.840.10008.5.1.4.1.1.14.1",
|
||||||
|
IntravascularOpticalCoherenceTomographyImageStorageForProcessing: "1.2.840.10008.5.1.4.1.1.14.2",
|
||||||
|
NuclearMedicineImageStorage: "1.2.840.10008.5.1.4.1.1.20",
|
||||||
|
RawDataStorage: "1.2.840.10008.5.1.4.1.1.66",
|
||||||
|
SpatialRegistrationStorage: "1.2.840.10008.5.1.4.1.1.66.1",
|
||||||
|
SpatialFiducialsStorage: "1.2.840.10008.5.1.4.1.1.66.2",
|
||||||
|
DeformableSpatialRegistrationStorage: "1.2.840.10008.5.1.4.1.1.66.3",
|
||||||
|
SegmentationStorage: "1.2.840.10008.5.1.4.1.1.66.4",
|
||||||
|
SurfaceSegmentationStorage: "1.2.840.10008.5.1.4.1.1.66.5",
|
||||||
|
RealWorldValueMappingStorage: "1.2.840.10008.5.1.4.1.1.67",
|
||||||
|
SurfaceScanMeshStorage: "1.2.840.10008.5.1.4.1.1.68.1",
|
||||||
|
SurfaceScanPointCloudStorage: "1.2.840.10008.5.1.4.1.1.68.2",
|
||||||
|
VLEndoscopicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.1",
|
||||||
|
VideoEndoscopicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.1.1",
|
||||||
|
VLMicroscopicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.2",
|
||||||
|
VideoMicroscopicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.2.1",
|
||||||
|
VLSlideCoordinatesMicroscopicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.3",
|
||||||
|
VLPhotographicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.4",
|
||||||
|
VideoPhotographicImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.4.1",
|
||||||
|
OphthalmicPhotography8BitImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.5.1",
|
||||||
|
OphthalmicPhotography16BitImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.5.2",
|
||||||
|
StereometricRelationshipStorage: "1.2.840.10008.5.1.4.1.1.77.1.5.3",
|
||||||
|
OphthalmicTomographyImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.5.4",
|
||||||
|
VLWholeSlideMicroscopyImageStorage: "1.2.840.10008.5.1.4.1.1.77.1.6",
|
||||||
|
LensometryMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.1",
|
||||||
|
AutorefractionMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.2",
|
||||||
|
KeratometryMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.3",
|
||||||
|
SubjectiveRefractionMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.4",
|
||||||
|
VisualAcuityMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.5",
|
||||||
|
SpectaclePrescriptionReportStorage: "1.2.840.10008.5.1.4.1.1.78.6",
|
||||||
|
OphthalmicAxialMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.78.7",
|
||||||
|
IntraocularLensCalculationsStorage: "1.2.840.10008.5.1.4.1.1.78.8",
|
||||||
|
MacularGridThicknessandVolumeReport: "1.2.840.10008.5.1.4.1.1.79.1",
|
||||||
|
OphthalmicVisualFieldStaticPerimetryMeasurementsStorage: "1.2.840.10008.5.1.4.1.1.80.1",
|
||||||
|
OphthalmicThicknessMapStorage: "1.2.840.10008.5.1.4.1.1.81.1",
|
||||||
|
CornealTopographyMapStorage: "1.2.840.10008.5.1.4.1.1.82.1",
|
||||||
|
BasicTextSR: "1.2.840.10008.5.1.4.1.1.88.11",
|
||||||
|
EnhancedSR: "1.2.840.10008.5.1.4.1.1.88.22",
|
||||||
|
ComprehensiveSR: "1.2.840.10008.5.1.4.1.1.88.33",
|
||||||
|
Comprehensive3DSR: "1.2.840.10008.5.1.4.1.1.88.34",
|
||||||
|
ProcedureLog: "1.2.840.10008.5.1.4.1.1.88.40",
|
||||||
|
MammographyCADSR: "1.2.840.10008.5.1.4.1.1.88.50",
|
||||||
|
KeyObjectSelection: "1.2.840.10008.5.1.4.1.1.88.59",
|
||||||
|
ChestCADSR: "1.2.840.10008.5.1.4.1.1.88.65",
|
||||||
|
XRayRadiationDoseSR: "1.2.840.10008.5.1.4.1.1.88.67",
|
||||||
|
RadiopharmaceuticalRadiationDoseSR: "1.2.840.10008.5.1.4.1.1.88.68",
|
||||||
|
ColonCADSR: "1.2.840.10008.5.1.4.1.1.88.69",
|
||||||
|
ImplantationPlanSRDocumentStorage: "1.2.840.10008.5.1.4.1.1.88.70",
|
||||||
|
EncapsulatedPDFStorage: "1.2.840.10008.5.1.4.1.1.104.1",
|
||||||
|
EncapsulatedCDAStorage: "1.2.840.10008.5.1.4.1.1.104.2",
|
||||||
|
PositronEmissionTomographyImageStorage: "1.2.840.10008.5.1.4.1.1.128",
|
||||||
|
EnhancedPETImageStorage: "1.2.840.10008.5.1.4.1.1.130",
|
||||||
|
LegacyConvertedEnhancedPETImageStorage: "1.2.840.10008.5.1.4.1.1.128.1",
|
||||||
|
BasicStructuredDisplayStorage: "1.2.840.10008.5.1.4.1.1.131",
|
||||||
|
RTImageStorage: "1.2.840.10008.5.1.4.1.1.481.1",
|
||||||
|
RTDoseStorage: "1.2.840.10008.5.1.4.1.1.481.2",
|
||||||
|
RTStructureSetStorage: "1.2.840.10008.5.1.4.1.1.481.3",
|
||||||
|
RTBeamsTreatmentRecordStorage: "1.2.840.10008.5.1.4.1.1.481.4",
|
||||||
|
RTPlanStorage: "1.2.840.10008.5.1.4.1.1.481.5",
|
||||||
|
RTBrachyTreatmentRecordStorage: "1.2.840.10008.5.1.4.1.1.481.6",
|
||||||
|
RTTreatmentSummaryRecordStorage: "1.2.840.10008.5.1.4.1.1.481.7",
|
||||||
|
RTIonPlanStorage: "1.2.840.10008.5.1.4.1.1.481.8",
|
||||||
|
RTIonBeamsTreatmentRecordStorage: "1.2.840.10008.5.1.4.1.1.481.9",
|
||||||
|
RTBeamsDeliveryInstructionStorage: "1.2.840.10008.5.1.4.34.7",
|
||||||
|
GenericImplantTemplateStorage: "1.2.840.10008.5.1.4.43.1",
|
||||||
|
ImplantAssemblyTemplateStorage: "1.2.840.10008.5.1.4.44.1",
|
||||||
|
ImplantTemplateGroupStorage: "1.2.840.10008.5.1.4.45.1"
|
||||||
|
};
|
||||||
@ -533,9 +533,9 @@ function defaultHangingProtocol(inputData) {
|
|||||||
study.seriesList.forEach(function(series) {
|
study.seriesList.forEach(function(series) {
|
||||||
|
|
||||||
// Ensure that the series has image data
|
// Ensure that the series has image data
|
||||||
// (All images have rows)
|
// (All images have sopClassUid)
|
||||||
var anInstance = series.instances[0];
|
var anInstance = series.instances[0];
|
||||||
if (!anInstance || !anInstance.rows) {
|
if (!anInstance || !isImage(anInstance.sopClassUid)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -149,6 +149,8 @@ Package.onUse(function(api) {
|
|||||||
api.addFiles('lib/queryStudies.js', 'client');
|
api.addFiles('lib/queryStudies.js', 'client');
|
||||||
api.addFiles('lib/exportStudies.js', 'client');
|
api.addFiles('lib/exportStudies.js', 'client');
|
||||||
api.addFiles('lib/importStudies.js', 'client');
|
api.addFiles('lib/importStudies.js', 'client');
|
||||||
|
api.addFiles('lib/isImage.js', 'client');
|
||||||
|
api.addFiles('lib/sopClassDictionary.js', 'client');
|
||||||
api.addFiles('lib/encodeQueryData.js', 'server');
|
api.addFiles('lib/encodeQueryData.js', 'server');
|
||||||
|
|
||||||
//api.export('accountsConfig', 'client');
|
//api.export('accountsConfig', 'client');
|
||||||
@ -172,6 +174,8 @@ Package.onUse(function(api) {
|
|||||||
api.export('exportStudies', 'client');
|
api.export('exportStudies', 'client');
|
||||||
api.export('importStudies', 'client');
|
api.export('importStudies', 'client');
|
||||||
api.export('getActiveViewportElement', 'client');
|
api.export('getActiveViewportElement', 'client');
|
||||||
|
api.export('isImage', 'client');
|
||||||
|
api.export('sopClassDictionary', 'client');
|
||||||
api.export('encodeQueryData', 'server');
|
api.export('encodeQueryData', 'server');
|
||||||
|
|
||||||
// Viewer management objects
|
// Viewer management objects
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user