diff --git a/platform/core/src/DICOMSR/SCOORD3D/parseSCOORD3D.js b/platform/core/src/DICOMSR/SCOORD3D/parseSCOORD3D.js index ce90c6339..dd5590f30 100644 --- a/platform/core/src/DICOMSR/SCOORD3D/parseSCOORD3D.js +++ b/platform/core/src/DICOMSR/SCOORD3D/parseSCOORD3D.js @@ -12,8 +12,7 @@ const parseSCOORD3D = ({ servicesManager, displaySets }) => { ds => ds.Modality !== 'SR' && ds.Modality !== 'SEG' && - ds.Modality !== 'RTSTRUCT' && - ds.Modality !== 'RTDOSE' + ds.Modality !== 'RTSTRUCT' ); imageDisplaySets.forEach(imageDisplaySet => { diff --git a/platform/core/src/classes/metadata/StudyMetadata.js b/platform/core/src/classes/metadata/StudyMetadata.js index ae5aac296..578b7b40b 100644 --- a/platform/core/src/classes/metadata/StudyMetadata.js +++ b/platform/core/src/classes/metadata/StudyMetadata.js @@ -275,6 +275,8 @@ class StudyMetadata extends Metadata { const otherDisplaySets = allDisplaySets.filter( ds => + ds && + derivatedDisplaySet && ds.displaySetInstanceUID !== derivatedDisplaySet.displaySetInstanceUID ); diff --git a/platform/core/src/studies/retrieveStudyMetadata.test.js b/platform/core/src/studies/retrieveStudyMetadata.test.js index 4725ab562..1103a3bdf 100644 --- a/platform/core/src/studies/retrieveStudyMetadata.test.js +++ b/platform/core/src/studies/retrieveStudyMetadata.test.js @@ -19,17 +19,4 @@ describe('retrieveStudyMetadata.js', () => { expect(callWithNoStudyInstanceUID).toThrow(Error); }); - - it('caches and returns the same promise for identical studyInstanceUIDs', () => { - const firstPromise = retrieveStudyMetadata( - fakeDicomWebServer, - 'fake-study-instance-uid' - ); - const secondPromise = retrieveStudyMetadata( - fakeDicomWebServer, - 'fake-study-instance-uid' - ); - - expect(firstPromise).toBe(secondPromise); - }); }); diff --git a/platform/core/src/studies/services/wado/studyInstanceHelpers.js b/platform/core/src/studies/services/wado/studyInstanceHelpers.js index 301342a79..9b7539207 100644 --- a/platform/core/src/studies/services/wado/studyInstanceHelpers.js +++ b/platform/core/src/studies/services/wado/studyInstanceHelpers.js @@ -102,6 +102,35 @@ async function makeSOPInstance(server, study, instance) { SOPInstanceUID, } = naturalizedInstance; + const validate = string => { + let rgx = /[^.0-9]+/g; + return string.match(rgx); + }; + + if (StudyInstanceUID === undefined || validate(StudyInstanceUID)) { + const error = + 'makeSOPInstance: StudyInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.'; + console.error(error); + + return; + } + + if (SeriesInstanceUID === undefined || validate(SeriesInstanceUID)) { + const error = + 'makeSOPInstance: SeriesInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.'; + console.error(error); + + return; + } + + if (SOPInstanceUID === undefined || validate(SOPInstanceUID)) { + const error = + 'makeSOPInstance: SOPInstanceUID is not conforming with the UID (DICOM UI VR) character repertoire, skipping SOPInstance.'; + console.error(error); + + return; + } + let series = study.seriesMap[SeriesInstanceUID]; if (!series) { diff --git a/platform/viewer/src/connectedComponents/Viewer.js b/platform/viewer/src/connectedComponents/Viewer.js index 2a22568e9..9f87b7106 100644 --- a/platform/viewer/src/connectedComponents/Viewer.js +++ b/platform/viewer/src/connectedComponents/Viewer.js @@ -473,7 +473,7 @@ const _checkForDerivedDisplaySets = async function(displaySet, study) { let derivedDisplaySetsNumber = 0; if ( displaySet.Modality && - !['SEG', 'SR', 'RTSTRUCT', 'RTDOSE'].includes(displaySet.Modality) + !['SEG', 'SR', 'RTSTRUCT'].includes(displaySet.Modality) ) { const studyMetadata = studyMetadataManager.get(study.StudyInstanceUID); @@ -612,7 +612,6 @@ const _isDisplaySetActive = function( if ( displaySet.Modality !== 'SEG' && displaySet.Modality !== 'RTSTRUCT' && - displaySet.Modality !== 'RTDOSE' && displaySet.Modality !== 'SR' ) { active = activeDisplaySetInstanceUID === displaySetInstanceUID;