@cornerstonejs/core
Version:
Cornerstone3D Core
88 lines (87 loc) • 3.18 kB
JavaScript
import genericViewportDisplaySetMetadataProvider from '../../utilities/genericViewportDisplaySetMetadataProvider.js';
export function getGenericViewportRegisteredDisplaySet(displaySetId) {
return genericViewportDisplaySetMetadataProvider.get(genericViewportDisplaySetMetadataProvider.VIEWPORT_V2_DISPLAY_SET, displaySetId);
}
export function getGenericViewportImageDisplaySet(displaySetId) {
const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
if (isStringArray(registered)) {
return {
imageIds: registered,
};
}
if (!isGenericViewportImageDisplaySet(registered)) {
return;
}
return registered;
}
export function getGenericViewportPlanarDisplaySet(displaySetId) {
const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
if (isStringArray(registered)) {
return {
imageIds: registered,
};
}
if (!isGenericViewportImageDisplaySet(registered)) {
return;
}
if ('kind' in registered && registered.kind && registered.kind !== 'planar') {
return;
}
return registered;
}
export function getGenericViewportWSIDisplaySet(displaySetId) {
const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
if (isGenericViewportWSIDisplaySet(registered)) {
return registered;
}
if (isRecord(registered) &&
isStringArray(registered.imageIds) &&
isRecord(registered.options) &&
isWSIClientLike(registered.options.webClient)) {
return {
imageIds: registered.imageIds,
kind: 'wsi',
options: {
miniNavigationOverlay: registered.options.miniNavigationOverlay,
webClient: registered.options.webClient,
},
};
}
}
export function getGenericViewportSourceDataId(displaySetId) {
const registered = getGenericViewportRegisteredDisplaySet(displaySetId);
if (typeof registered === 'string') {
return registered;
}
if (isStringArray(registered) && registered[0]) {
return registered[0];
}
if (isGenericViewportSourceAliasDisplaySet(registered)) {
return registered.sourceDataId;
}
return displaySetId;
}
export function isGenericViewportImageDisplaySet(value) {
return isRecord(value) && isStringArray(value.imageIds);
}
export function isGenericViewportWSIDisplaySet(value) {
return (isRecord(value) &&
value.kind === 'wsi' &&
isStringArray(value.imageIds) &&
isRecord(value.options) &&
isWSIClientLike(value.options.webClient));
}
export function isGenericViewportSourceAliasDisplaySet(value) {
return (isRecord(value) &&
(value.kind === 'video' || value.kind === 'ecg') &&
typeof value.sourceDataId === 'string');
}
function isRecord(value) {
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
}
function isStringArray(value) {
return (Array.isArray(value) && value.every((item) => typeof item === 'string'));
}
function isWSIClientLike(value) {
return isRecord(value) && typeof value.getDICOMwebMetadata === 'function';
}