Fix issues with isDisplaySetReconstructable when we have empty DICOM tags (closes #1280) (#1426)

This commit is contained in:
Erik Ziegler 2020-02-07 17:09:37 +01:00 committed by GitHub
parent a4c9a86772
commit a6b92a4505
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 3 deletions

View File

@ -46,7 +46,7 @@ export default class RetrieveMetadataLoader {
} }
if (loaders.next().done && !result) { if (loaders.next().done && !result) {
throw 'cant find data'; throw new Error('RetrieveMetadataLoader failed');
} }
return result; return result;

View File

@ -67,6 +67,12 @@ function processSingleframe(instances) {
if (instances.length > 2) { if (instances.length > 2) {
const firstIpp = _getImagePositionPatient(firstImage); const firstIpp = _getImagePositionPatient(firstImage);
const lastIpp = _getImagePositionPatient(instances[instances.length - 1]); const lastIpp = _getImagePositionPatient(instances[instances.length - 1]);
// We can't reconstruct if we are missing imagePositionPatient values
if (!firstIpp || !lastIpp) {
return { value: false };
}
const averageSpacingBetweenFrames = const averageSpacingBetweenFrames =
_getPerpendicularDistance(firstIpp, lastIpp) / (instances.length - 1); _getPerpendicularDistance(firstIpp, lastIpp) / (instances.length - 1);
@ -136,8 +142,13 @@ function _getSpacingIssue(spacing, averageSpacing) {
} }
function _getImagePositionPatient(instance) { function _getImagePositionPatient(instance) {
return instance const tagValue = instance
.getTagValue('x00200032') .getTagValue('x00200032');
if (!tagValue) {
return;
}
return tagValue
.split('\\') .split('\\')
.map(element => Number(element)); .map(element => Number(element));
} }

View File

@ -253,6 +253,7 @@ function ViewerRetrieveStudyData({
.catch(error => { .catch(error => {
if (error && !error.isCanceled) { if (error && !error.isCanceled) {
setError(true); setError(true);
log.error(error);
} }
}); });
@ -290,11 +291,13 @@ function ViewerRetrieveStudyData({
.catch(error => { .catch(error => {
if (error && !error.isCanceled) { if (error && !error.isCanceled) {
setError(true); setError(true);
log.error(error);
} }
}); });
} catch (error) { } catch (error) {
if (error) { if (error) {
setError(true); setError(true);
log.error(error);
} }
} }
}; };