@cornerstonejs/core
Version:
Cornerstone3D Core
70 lines (69 loc) • 2.24 kB
JavaScript
import * as metaData from '../metaData.js';
import { MetadataModules } from '../enums/index.js';
import isEqual from './isEqual.js';
function isValidVolume(imageIds) {
if (!imageIds.length) {
return false;
}
const imageId0 = imageIds[0];
const generalSeries = metaData.get(MetadataModules.GENERAL_SERIES, imageId0);
if (!generalSeries) {
return false;
}
const { modality, seriesInstanceUID } = generalSeries;
const imagePlane = metaData.get(MetadataModules.IMAGE_PLANE, imageId0);
if (!imagePlane) {
return false;
}
const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, usingDefaultValues, } = imagePlane;
if (usingDefaultValues) {
return false;
}
const baseMetadata = {
modality,
imageOrientationPatient,
pixelSpacing,
frameOfReferenceUID,
columns,
rows,
seriesInstanceUID,
};
let validVolume = true;
for (let i = 0; i < imageIds.length; i++) {
const imageId = imageIds[i];
const general = metaData.get(MetadataModules.GENERAL_SERIES, imageId);
const plane = metaData.get(MetadataModules.IMAGE_PLANE, imageId);
if (!general || !plane) {
validVolume = false;
break;
}
const { modality, seriesInstanceUID } = general;
const { imageOrientationPatient, pixelSpacing, columns, rows } = plane;
if (seriesInstanceUID !== baseMetadata.seriesInstanceUID) {
validVolume = false;
break;
}
if (modality !== baseMetadata.modality) {
validVolume = false;
break;
}
if (columns !== baseMetadata.columns) {
validVolume = false;
break;
}
if (rows !== baseMetadata.rows) {
validVolume = false;
break;
}
if (!isEqual(imageOrientationPatient, baseMetadata.imageOrientationPatient)) {
validVolume = false;
break;
}
if (!isEqual(pixelSpacing, baseMetadata.pixelSpacing)) {
validVolume = false;
break;
}
}
return validVolume;
}
export { isValidVolume };