UNPKG

our-medical

Version:

medical image vue component

292 lines (291 loc) 11.4 kB
/** * @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 {};