our-medical
Version:
medical image vue component
292 lines (291 loc) • 11.4 kB
TypeScript
/**
* @description
* @author jiannan.jiao
*/
import type { Types as coreTypes } from '@cornerstonejs/core';
import type { PointLower } from '@doodle3d/clipper-js';
import type { ContourData, Segmentation, DisplayComponentID, MedicalComponentID } from '../types';
import type { VolumeId } from '.';
export declare function getSegmentationIdsFromContourDataMap(): IterableIterator<string>;
/**
* @description 异步获取勾画轮廓数据-在切换segmentation时,可能需要最小化的体积存在前一步勾画
* 此时需要通过异步等待轮廓数据生成后才能进行体积最小化的处理
* @author jiannan.jiao
* @date 13/03/2024
* @export
* @param {VolumeId} segmentationId
* @returns {*}
*/
export declare function getContourData(segmentationId: VolumeId): Promise<ContourData | undefined>;
export declare function setContourData(segmentationId: VolumeId, data: ContourData): void;
export declare function deleteContourData(segmentationId: VolumeId): boolean;
export declare function clearContourData(): void;
/**
* @description 计算segmentation体积的BoundsIJK并存入contourBounds
* @author jiannan.jiao
* @date 08/11/2023
* @param {VolumeId} segmentationId
* @param {number} segmentIndex
*/
declare function caleContourData(segmentationId: VolumeId, segmentIndex: number): void;
/**
* @description 对caleContourData的执行进行节流,防止手动勾画工具中的频繁点击
* @author jiannan.jiao
* @date 13/03/2024
*/
export declare const caleContourDataDebounced: import("lodash").DebouncedFunc<typeof caleContourData>;
/**
* @description
* @author jiannan.jiao
* @date 08/11/2023
* @export
* @param {DisplayComponentID } toolGroupId
* @param {string} segmentationId
* @returns {*}
*/
export declare function getRepresentationUID(toolGroupId: DisplayComponentID, segmentationId: string): string | undefined;
/**
* @description
* @author jiannan.jiao
* @date 08/11/2023
* @export
* @param {DisplayComponentID } toolGroupId
* @returns {*}
*/
export declare function getRepresentationUIDMap(toolGroupId: DisplayComponentID): Map<string, string>;
/**
* @description
* @author jiannan.jiao
* @date 08/11/2023
* @param {DisplayComponentID } toolGroupId
* @returns {*}
*/
export declare function createRepresentationUIDMap(toolGroupId: DisplayComponentID): Map<string, string>;
/**
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
*/
/**
* @description 设置toolGroup中的分割体积颜色
* @author jiannan.jiao
* @date 08/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {string} segmentationId
* @param {number} segmentIndex
* @param {coreTypes.Color} color
* @returns {*}
*/
export declare function setRepresentationColor(componentId: MedicalComponentID | DisplayComponentID, segmentationId: string, segmentIndex: number, color: coreTypes.Color): void;
/**
* @description
* @author jiannan.jiao
* @date 09/11/2023
* @export
* @param {DisplayComponentID } toolGroupId
* @param {string} segmentationId
* @param {number} segmentIndex
* @returns {*}
*/
export declare function getRepresentationColor(toolGroupId: DisplayComponentID, segmentationId: string, segmentIndex: number): coreTypes.Color | undefined;
/**
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
*/
/**
* @description 依赖序列体积创建分割体积,分割体积将比依赖序列在XYZ方向上大一圈
* @author jiannan.jiao
* @date 06/11/2023
* @export
* @param {(Pick<Segmentation, 'seriesId' | 'volumeId'>)} segment
* @returns {*}
*/
export declare function createSegmentation(segment: Pick<Segmentation, 'seriesId' | 'volumeId'>): {
segmentationId: string;
volumeLoaderAsync: Promise<void>;
};
/**
* @description 删除cache、segmentation中的体积
* @author dong.wu
* @date 22/09/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {string[]} segmentationIds
*/
export declare function deleteSegmentation(componentId: MedicalComponentID | DisplayComponentID, segmentationIds: string[], _deleteContourData?: boolean): void;
/**
* @description 根据传入的勾画轮廓数据创建segmentation, 创建体积的方向当前仅考虑轴状位的情况
* @date 17/11/2023
* @export
* @param {(Pick<Segmentation, 'segmentIndex' | 'seriesId' | 'volumeId'>)} segment
* @param {({ contours: { [zPosition: string]: PointLower[][] } } & Pick<
* ContourData,
* 'bounds' | 'volumeValue'
* >)} contoursData
* @param {boolean} [minimize=true]
* @returns {*}
*/
export declare function createSegmentationByContoursData(segment: Pick<Segmentation, 'segmentIndex' | 'seriesId' | 'volumeId'>, contoursData: {
contours: {
[zPosition: string]: PointLower[][];
};
volumeValue?: number;
} & Pick<ContourData, 'bounds'>, minimize?: boolean): {
segmentationId: string;
volumeLoaderAsync: Promise<void>;
volumeFillAsync: Promise<{
segmentationId: string;
volumeValue: number;
}>;
};
/**
* @description 根据传入的勾画轮廓数据更新segmentation, 勾画轮廓数据应当为轴状位上的勾画,
* 且不能超过已存在体积的bounds, 超出bounds的情况下需要createSegmentationByContoursData重新创建体积
* @author jiannan.jiao
* @date 27/11/2023
* @export
* @param {({ segmentationId: string } & Pick<Segmentation, 'segmentIndex'>)} segment
* @param {({ contours: { [zPosition: string]: PointLower[][] } } & Pick<ContourData, 'bounds'>)} contoursData
* @returns {*}
*/
export declare function updateSegmentationByContoursData(segment: {
segmentationId: string;
} & Pick<Segmentation, 'segmentIndex'>, contoursData: {
contours: {
[zPosition: string]: PointLower[][];
};
} & Pick<ContourData, 'bounds'>): number | undefined;
/**
* @description 重置segmentation, 并清空记录的勾画数据
* @author jiannan.jiao
* @date 27/11/2023
* @export
* @param {string} segmentationId
*/
export declare function resetSegmentation(segmentationId: string): Promise<void>;
/**
* @description 清除轴状位方向上指定层上的勾画轮廓, 需要传入segmentIndex计算contoursData
* @author jiannan.jiao
* @date 27/11/2023
* @export
* @param {({ segmentationId: string } & Pick<Segmentation, 'segmentIndex'>)} segment
* @param {number} worldZ
*/
export declare function removeContoursOnSlice(segment: {
segmentationId: string;
} & Pick<Segmentation, 'segmentIndex'>, worldZ: number): Promise<void>;
/**
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
*/
/**
* @description 向toolGroup中异步添加分割体积representation,如果返回Map对象表示添加成功
* @author jiannan.jiao
* @date 08/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {string[]} segmentationIds
* @param {boolean} [active] 可选值,设置新添加的representation的active状态
* @returns {*}
*/
export declare function addRepresentationsAsync(componentId: MedicalComponentID | DisplayComponentID, segmentations: {
segmentationId: string;
segmentIndex: number;
}[], active?: boolean): Promise<Map<`${string}|primary` | `${string}|secondary`, Map<string, string>> | undefined>;
/**
* @description 删除工具组中的segmentationRepresentations
* @author dong.wu
* @date 22/09/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {string[]} segmentationIds
*/
export declare function deleteRepresentations(componentId: MedicalComponentID | DisplayComponentID, segmentationIds: string[]): void;
/**
* @description
* @author jiannan.jiao
* @date 15/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {string} segmentationId
* @returns {*}
*/
export declare function setActiveSegmentationId(componentId: MedicalComponentID | DisplayComponentID, data: {
segmentationId: string;
segmentIndex: number;
}): Map<string, {
segmentationId: string;
segmentIndex: number;
}>;
/**
* @description 获取当前处于Active状态的SegmentationId
* @author jiannan.jiao
* @date 09/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @returns {*}
*/
export declare function getActiveSegmentationId(componentId: MedicalComponentID | DisplayComponentID): {
segmentationId: string;
segmentIndex: number;
} | undefined;
/**
* @description 设置当前选中的勾画体积,不传入segment时不选中任何勾画体积
* @author jiannan.jiao
* @date 08/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {Segmentation} [segment]
* @param {boolean} [needMaximize=true]
*/
export declare function setActiveSegmentation(componentId: MedicalComponentID | DisplayComponentID, segment?: Segmentation, options?: {
activeMaximize: boolean;
inactiveMinimize: boolean;
}): Promise<Segmentation | undefined>;
/**
* @description 设置工具组中所有segmentations的active状态为false
* @author jiannan.jiao
* @date 15/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
*/
export declare function allSegmentationsInactive(componentId: MedicalComponentID | DisplayComponentID): void;
/**
* @description 设置Segmentations的显隐状态
* @author jiannan.jiao
* @date 09/11/2023
* @export
* @param {(MedicalComponentID | DisplayComponentID )} componentId
* @param {Segmentation} segments
* @param {boolean} [visibility=true]
*/
export declare function setSegmentationsVisibility(componentId: MedicalComponentID | DisplayComponentID, segments: Array<{
segmentationId: string;
} & Pick<Segmentation, 'segmentIndex'>>, visibility?: boolean): void;
/**
* @description
* @author jiannan.jiao
* @date 30/04/2024
* @export
* @param {(MedicalComponentID | DisplayComponentID)} componentId
* @param {string} segmentationId
* @returns {*}
*/
export declare function getSegmentationVisibility(componentId: MedicalComponentID | DisplayComponentID, segmentationId: string): boolean | undefined;
/**
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
* ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
*/
/**
* @description 设置segmentation的全局默认样式
* @author dong.wu
* @date 24/11/2023
* @export
* @param {Object} [LabelMap]
*/
export declare function setSegmentationGlobalConfig(LabelMap?: Object): void;
export {};