Currently the OHIF viewer suffers from the following metadata related issues:
Cornerstone stores metadata via imageId, which is of the form {loaderTag}:{url}. Where loaderTag tells cornerstone which imageloader to use, and url is the get URL for the resource.
Not all metadata is always available:
RTROIObservationsSequence from an RTSTRUCT).The viewer is mostly tested against a full WADO-RS DicomWeb implementation. This means unexpected edge cases and difficulties occur when we switch to WADO-URI only platforms. E.g. a WADO-URI only backend called via JSON standalone routing doesn't extract enough metadata, or metadata in the expected form for the isDisplaySetReconstructable function to run, unless the required headers are known, and supplied in the JSON.
Different capitalisations of standard variables exist everywhere and this is confusing (e.g. SopInstanceUid, SOPInstanceUID, SopInstanceUID, etc).
Solutions:
WADO-RS headers and WADO-URI retrieved full P10 instances should be parsed to naturalized DICOM JSON (with pixel data removed for the full instances), and this should be the standardised source of truth.
Metadata should be indexed internally on StudyInstanceUID, SeriesInstanceUID and SOPInstanceUID. When an imageId is supplied, this information should be extracted and the appropriate metadata searched for. In the worst case scenario it'll fallback to cornerstoneWADOImageLoader's data.
const RTROIObservationsSequence = cornerstone.metaData.get('RTROIObservationsSequence', imageId);cornerstoneTools.@ohif/core.All variables thoughtout core parts of the application should have all dicom attributes conforming to the DICOM Data Dictionary as source of truth for how these should be capitalised (i.e. SOPInstanceUID is correct).
Please contribute any thoughts to this thread, this is the culmination of a bunch of discussions with @swederik and @dannyrb .
Yes please!
Most helpful comment
Please contribute any thoughts to this thread, this is the culmination of a bunch of discussions with @swederik and @dannyrb .