Potato 让临床医生在临床记录中标注实体和关系,对来自 DICOM 或 NIfTI 的 CT 和 MR 体数据做分割,并在全切片病理图像上绘制标注;每个病例可分配多名评阅者,并测量他们的一致性。Potato 免费开源,运行在你自己的服务器上,临床记录和图像始终留在你的机构内部。
临床标注项目往往有两个共同要求。数据不能交给云服务,所以工具必须运行在机构自己的基础设施上;标注者是稀缺的专家,他们的标签需要相互核对。Potato 在你安装它的任何地方都能运行,包括设置完成后没有对外路由的网络。Potato 把病例分配给标注者,保留每名标注者的标签,并为每一种标签报告一致性。
Potato 中的临床标注任务
每一行是 Potato 2.12 自带的一种标注类型或显示类型,链接页面给出了它的配置。
| 任务 | Potato 的做法 | 文档 |
|---|---|---|
| 临床 NER 与关系 | 为问题、治疗、检查或健康社会决定因素打片段标签,并在它们之间建立链接 | 片段标注 |
| 概念规范化 | 把提及链接到 UMLS 概念、Wikidata,或通过 REST API 提供的术语服务 | 实体链接 |
| 医学编码分类体系 | 从文件加载的层级选项,例如某个编码系统的子集 | 层级多选 |
| CT 和 MR 分割 | volume_annotation 以轴位、冠状位和矢状位视图显示 DICOM 序列或 NIfTI 文件,支持用画笔或多边形绘制掩码、层间插值;边界框作为独立形状保存在掩码之外 | 导出格式 |
| 病理切片 | 通过 openslide 读取全切片图像(.svs、.ndpi、.mrxs 等),在任意缩放级别下都能标注 | 深度缩放 |
| 胸部 X 光及其他图像 | 在图像上打标签、画边界框和多边形,并计算边界框上的一致性 | 计算机视觉 |
| 问卷 | 在任务之前或之后施测 PHQ-9 和 GAD-7 等经过验证的量表 | 调查工具 |
DICOM 头中的患者信息
DICOM 头通常包含患者姓名、ID、出生日期和所在机构,因此体数据查看器只向标注者显示你在 display_tags 中列出的头字段。DICOM 去标识化基本规范会删除的字段,例如 PatientName 或 PatientID,只有同时列在 allow_identifying_tags 中才会显示。这份列表由服务器强制执行,浏览器无法请求其他字段。除非你开启下载,原始 DICOM 和 NIfTI 文件不会对外提供下载。
annotation_schemes:
- annotation_type: volume_annotation
name: ct_segmentation
description: Outline the lesion and the bone ring
source_field: volume
labels:
- {name: Lesion, color: "#e6553a", key_value: "1"}
- {name: Bone, color: "#3a8ee6", key_value: "2"}
default_window: Soft tissue
display_tags: [Modality, BodyPartExamined, SliceThickness]这层过滤无法覆盖所有情况。文件名和目录名会传到浏览器,而 PACS 导出常以患者名字命名文件夹,所以请使用 case_001/ 这样的假名。被标记为含有烧录标注的序列会被拒绝,但其他序列中的像素不会被检查,磁盘上的文件也保持上传时的原样。如果运行服务器的人也不能看到身份信息,请在上传前对文件做去标识化处理。体数据支持需要 pip install 'potato-annotation[volumes]',全切片图像需要 wsi 扩展。
一致性与导出
volume_annotation 的掩码按标签在每对标注者之间计算三维 Dice;如果某一对标注者都没有绘制某个标签,这一对在该标签上不计入,而不是算作一致。掩码可以导出为保持源几何结构的 NIfTI 标签体(volume_nifti),或引用源序列的 DICOM SEG 对象(dicom_seg)。文本标注可导出为 JSONL、CSV、CoNLL 或 Parquet,每名标注者的标签都会保留,供裁定使用。
与 3D Slicer、MedCAT 和 REDCap 的分工
3D Slicer 是用于医学图像分析和单人精细分割的桌面平台,MedCATtrainer 是用于训练生物医学概念识别与链接模型的界面。当同一批病例要通过浏览器交给多名阅片者,并且你需要他们的一致性时,Potato 更合适。Potato 不是临床数据采集系统,也没有 REDCap 为受监管研究提供的那种审计追踪,所以可识别身份的健康记录应保存在专门为此设计的系统中,Potato 只用于标注。
常见问题
能否在我们自己的服务器上标注含有 PHI 的临床记录?
Potato 运行在你控制的服务器上,并把标注写入这些服务器的磁盘。除非你配置了外部服务,例如托管的 AI 端点,否则 Potato 不会向任何外部服务发送数据。某个部署能否存放受保护的健康信息,要由你所在机构的隐私与安全部门决定,他们会审查服务器和应用层面的访问控制、登录、加密和日志记录。
自托管的标注工具能让项目符合 HIPAA 吗?
没有哪个工具能单凭自身让项目合规。合规取决于系统如何部署和运营,包括访问控制、协议和服务器上的防护措施。Potato 能在两方面提供帮助:第一,安装完成后,Potato 可以在机构网络内部运行,不需要任何外部连接;第二,体数据查看器会限制标注者能看到哪些 DICOM 头字段。
Potato 能打开 DICOM 或 NIfTI 图像吗?掩码导出为什么格式?
能,从 2.12 版开始。volume_annotation 方案在三个联动视图中打开 DICOM 序列或 .nii、.nii.gz 文件,条目上的 RTSTRUCT 可以提供初始掩码。掩码可导出为 NIfTI 标签体,或引用源序列的 DICOM SEG 对象。不支持四维体数据、PET/CT 融合图像和斜位重建。
如何在阅片者之间分配影像病例并测量他们的一致性?
用 num_annotators_per_item 设置每个病例由多少名阅片者查看,Potato 会分配病例并保留每名阅片者的掩码。一致性报告给出同一病例上每对阅片者按标签计算的三维 Dice。
延伸阅读
- 医学图像与临床文本标注工具对比:3D Slicer、QuPath、MONAI Label、V7、Encord 与 Potato 的比较
- 气隙与离线部署:Potato 在本地提供哪些内容
- SSO 与 OAuth 认证:让标注者通过机构的身份提供方登录
- 本站的相邻领域:生命科学和NLP 与文本