fix: panel issues and mpr button (IDC2122-IDC2117)

This commit is contained in:
Igor Octaviano 2020-12-10 13:44:44 -03:00 committed by GitHub
parent d282f72d75
commit 32022f51f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 11 deletions

View File

@ -15,7 +15,7 @@ const OHIFDicomRTStructSopClassHandler = {
id: 'OHIFDicomRTStructSopClassHandler', id: 'OHIFDicomRTStructSopClassHandler',
type: MODULE_TYPES.SOP_CLASS_HANDLER, type: MODULE_TYPES.SOP_CLASS_HANDLER,
sopClassUIDs, sopClassUIDs,
getDisplaySetFromSeries: function( getDisplaySetFromSeries: function (
series, series,
study, study,
dicomWebClient, dicomWebClient,
@ -71,11 +71,11 @@ const OHIFDicomRTStructSopClassHandler = {
} }
} }
rtStructDisplaySet.getSourceDisplaySet = function(studies) { rtStructDisplaySet.getSourceDisplaySet = function (studies) {
return getSourceDisplaySet(studies, rtStructDisplaySet); return getSourceDisplaySet(studies, rtStructDisplaySet);
}; };
rtStructDisplaySet.load = function(referencedDisplaySet, studies) { rtStructDisplaySet.load = function (referencedDisplaySet, studies) {
return loadRTStruct( return loadRTStruct(
rtStructDisplaySet, rtStructDisplaySet,
referencedDisplaySet, referencedDisplaySet,

View File

@ -79,6 +79,8 @@ const RTPanel = ({
* without subscribing to external events. * without subscribing to external events.
*/ */
useEffect(() => { useEffect(() => {
updateStructureSets();
document.addEventListener('extensiondicomrtrtloaded', updateStructureSets); document.addEventListener('extensiondicomrtrtloaded', updateStructureSets);
return () => { return () => {

View File

@ -96,6 +96,11 @@ export default async function loadRTStruct(
imageIdSopInstanceUidPairs imageIdSopInstanceUidPairs
); );
const imageId = _getImageId(imageIdSopInstanceUidPairs, sopInstanceUID); const imageId = _getImageId(imageIdSopInstanceUidPairs, sopInstanceUID);
if (!imageId) {
continue;
}
const imageIdSpecificToolData = _getOrCreateImageIdSpecificToolData( const imageIdSpecificToolData = _getOrCreateImageIdSpecificToolData(
toolState, toolState,
imageId, imageId,
@ -294,7 +299,7 @@ const _getImageId = (imageIdSopInstanceUidPairs, sopInstanceUID) => {
imageIdSopInstanceUidPairsEntry.sopInstanceUID === sopInstanceUID imageIdSopInstanceUidPairsEntry.sopInstanceUID === sopInstanceUID
); );
return imageIdSopInstanceUidPairsEntry.imageId; return imageIdSopInstanceUidPairsEntry ? imageIdSopInstanceUidPairsEntry.imageId : null;
}; };
function _getImageIdSopInstanceUidPairsForDisplaySet( function _getImageIdSopInstanceUidPairsForDisplaySet(

View File

@ -41,14 +41,17 @@ const _isDisplaySetReconstructable = (viewportSpecificData = {}, activeViewportI
// A better heuristic would be checking 4D tags, e.g. the presence of multiple TemporalPositionIdentifier values. // A better heuristic would be checking 4D tags, e.g. the presence of multiple TemporalPositionIdentifier values.
// However, some studies (e.g. https://github.com/OHIF/Viewers/issues/2113) do not have such tags. // However, some studies (e.g. https://github.com/OHIF/Viewers/issues/2113) do not have such tags.
for (let ii = 0; ii < displaySet.numImageFrames; ++ii){ for (let ii = 0; ii < displaySet.numImageFrames; ++ii) {
const imageIdControl = displaySet.images[ii].getImageId() const image = displaySet.images[ii];
if (!image) continue;
const imageIdControl = image.getImageId()
const instanceMetadataControl = cornerstone.metaData.get('instance', imageIdControl) const instanceMetadataControl = cornerstone.metaData.get('instance', imageIdControl)
if (!instanceMetadataControl || if (!instanceMetadataControl ||
instanceMetadataControl === undefined || instanceMetadataControl === undefined ||
!instanceMetadataControl.ImagePositionPatient || !instanceMetadataControl.ImagePositionPatient ||
instanceMetadataControl.ImagePositionPatient === undefined ) { instanceMetadataControl.ImagePositionPatient === undefined) {
// if ImagePositionPatient is missing, skip the 4D datasets check. // if ImagePositionPatient is missing, skip the 4D datasets check.
// do not return false, because it could be a 3D dataset. // do not return false, because it could be a 3D dataset.
continue; continue;
@ -58,8 +61,11 @@ const _isDisplaySetReconstructable = (viewportSpecificData = {}, activeViewportI
let yImagePositionPatientControl = instanceMetadataControl.ImagePositionPatient[1]; let yImagePositionPatientControl = instanceMetadataControl.ImagePositionPatient[1];
let zImagePositionPatientControl = instanceMetadataControl.ImagePositionPatient[2]; let zImagePositionPatientControl = instanceMetadataControl.ImagePositionPatient[2];
for (let jj = ii + 1; jj < displaySet.numImageFrames; ++jj){ for (let jj = ii + 1; jj < displaySet.numImageFrames; ++jj) {
const imageId = displaySet.images[jj].getImageId() const image = displaySet.images[jj];
if (!image) continue;
const imageId = image.getImageId()
const instanceMetadata = cornerstone.metaData.get('instance', imageId) const instanceMetadata = cornerstone.metaData.get('instance', imageId)
if (!instanceMetadata || if (!instanceMetadata ||
@ -76,8 +82,8 @@ const _isDisplaySetReconstructable = (viewportSpecificData = {}, activeViewportI
let zImagePositionPatient = instanceMetadata.ImagePositionPatient[2]; let zImagePositionPatient = instanceMetadata.ImagePositionPatient[2];
if (xImagePositionPatientControl === xImagePositionPatient && if (xImagePositionPatientControl === xImagePositionPatient &&
yImagePositionPatientControl === yImagePositionPatient && yImagePositionPatientControl === yImagePositionPatient &&
zImagePositionPatientControl === zImagePositionPatient){ zImagePositionPatientControl === zImagePositionPatient) {
return false; return false;
} }
} }