前言¶
在 DeepSeek Harness(Cordis)里做医疗相关智能体或数据处理时,常见需求是把病历导出、检验表格、影像元数据里的直接标识符去掉或换成可审计的假名,同时尽量不改行数、列结构和 JSON 键布局。手写正则或一次性脚本往往难以覆盖身份证校验、医院系统字段名、跨文件同一患者值,也缺少批次报告和可还原映射。下面介绍社区插件 dsh-medical-anonymizer(维护者 wld007,SkillHub 分类 admin-security):规则优先、可选 OpenAI 兼容模型做发现与复核,输出稳定假名与审计报告。
这是什么¶
dsh-medical-anonymizer 是 DSH 插件,用于批量匿名化病历文本和表格。它发现直接标识符,用稳定假名替换,保持文件结构不变,并输出审计报告和可还原的映射库(vault.json)。README 明确说明:这是数据处理工具,不是合规认证;发布任何输出前需对照适用法律和本机构政策审查。
当前 npm 包版本为 0.7.2(MIT 许可证)。GitHub 仓库:wld007/dsh-medical-anonymizer;社区目录页:SkillHub 插件页。
核心功能¶
格式与路径¶
支持 .txt、.md、.csv、.json、.xlsx、嵌套 .zip,以及 DICOM 影像(仅处理元数据,像素原样保留)。路径中的姓名、身份证号、手机号、patient_<编号>、zyh_<住院号>、mzh_<门诊号> 等可与正文一致的假名策略一并处理。
规则优先,模型可选¶
无需模型即可运行:身份证校验位、电话/邮箱模式、带标签字段、列名/键名策略(如 姓名、PTT_NM、ID_CRD_NO、INHOS_NO 等)。配置 OpenAI 兼容端点后,模型负责提高自由文本召回并完成复核;插件在原文中定位精确片段替换,不信任模型坐标。模型名称留空则只跑确定性规则层。
假名、校验与有界修复¶
假名按「类型 + 原值」稳定生成(如 化名-9F3A2C),同一输出根内同一值得到同一假名。校验包括模型复核、规则复扫、原值残留检查、结构比对。未解决问题进入人工复核清单,而不是静默接受;修复轮次受 maxRounds 约束。
匿名化策略¶
默认可还原的稳定假名(pseudonym);也可按类型选择部分遮盖(mask)、类型标签(redact)或保留(keep)。可选准标识符(日期平移/泛化、年龄分段等)在开启 quasiIdentifiers 后以确定性规则处理,不依赖模型。
DICOM¶
按 DICOM PS3.15 附录 E 思路处理元数据;PatientID 换为批次内一致的 cuid 风格编号且不写入映射库、事后无法回查;实例 UID 由映射库盐值派生以保持跨文件一致。单批 DICOM 数量由 maxDicomFiles 控制(默认 50000)。
本地优先与 Agent 边界¶
插件不调用内置云端模型,只访问你配置的端点(如 Ollama http://127.0.0.1:11434/v1)。Agent 工具(anonymize_start 等)不能覆盖端点与 API Key,只能使用设置页已保存的配置;仅 /anonymize 命令可用 --endpoint、--model 覆盖。
安装与启用¶
要求 DSH >= 0.2.1(README 注明在 0.2.1-rc.5 上测试)和 Node.js >= 20。
安装命令(摘自官方 README):
dsh plugin --profile <profile> add github:wld007/dsh-medical-anonymizer
# 或在发布到 npm 之后:
dsh plugin --profile <profile> add dsh-medical-anonymizer
安装后需重启 DSH(插件层在启动时组装)。在 设置 → 医疗数据匿名化 配置模型连接、匿名化规则、批次默认值与可选映射库加密口令;主机端激活后可使用左侧栏入口、/anonymize 命令和 Agent 工具。
典型用法¶
设置页¶
在 模型连接 中填写端点、模型名、API Key,可用 测试连接 验证;关闭思考模式 默认开启,避免推理模型把 token 预算耗在隐藏推理上。在 批次默认值 中设置输出根目录、最大轮次、并发与分组等。
界面批次¶
- 左侧栏 医疗数据匿名化 选择输入目录,或填写单个文件 /
.zip路径;可选覆盖输出根目录。 - 启动批次;模型与轮次取自已保存设置。
- 在批次详情中查看报告、复制输出路径,或取消运行中的批次。
/anonymize 命令¶
命令会直接写出匿名化副本,源文件只读:
/anonymize /path/to/records --model qwen2.5:14b --endpoint http://127.0.0.1:11434/v1
单文件示例:/anonymize /path/to/note.txt 或 /anonymize /path/to/记录.zip。默认输出根目录可在文件旁的 .medical-anonymizer,批次输出在 runs/<批次号>/output/。常用选项:--rounds N、--output DIR、--no-think、--think。
Agent 工具¶
| 工具 | 用途 |
|---|---|
anonymize_start |
启动批次,返回 runId |
anonymize_status |
进度与未解决问题 |
anonymize_report |
读取 Markdown 报告 |
anonymize_cancel |
取消批次(已写文件保留) |
anonymize_undo_mappings |
撤销某批新增映射(不删输出文件) |
anonymize_start 参数包括 inputDir、outputRoot、maxRounds。
适用场景与注意¶
适合需要在 DSH 工作流或智能体里批量处理院内导出文本、表格、压缩包及 CT 等影像元数据的团队;规则层可离线运行,模型层适合提高非结构化病历的召回。
使用时请注意:
- 插件以当前 dsh 进程权限 读写你指定的输入输出路径;安装前应自行审查 GitHub 源码 与 MIT 许可证。
- 远程 OpenAI 兼容端点会把批次文本发往该服务;处理患者数据应使用本机或机构可控端点。
- 映射库
vault.json含原值与假名对应关系,权限为 0600;可选vaultPassphrase加密。报告不打印标识符原值。 - DICOM 的
PatientID替换不可通过映射库还原;同一病人影像宜放在同一批处理。 - SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是其中面向 admin-security 的一类工具。
结尾¶
dsh-medical-anonymizer 把医疗场景常见的规则识别、可选本地模型复核、稳定假名与批次审计报告收进一个 DSH 插件,适合在 Harness 内 repeatable 地脱敏导出数据并为 Agent 提供带边界的 anonymize_* 工具。详情与更新以仓库 README 为准:
- 目录页:https://www.skillhub.cn/plugins/wld007/dsh-medical-anonymizer
- GitHub:https://github.com/wld007/dsh-medical-anonymizer