dsh-medical-anonymizer:DSH 下的医疗数据批量匿名化

前言

在 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 预算耗在隐藏推理上。在 批次默认值 中设置输出根目录、最大轮次、并发与分组等。

界面批次

  1. 左侧栏 医疗数据匿名化 选择输入目录,或填写单个文件 / .zip 路径;可选覆盖输出根目录。
  2. 启动批次;模型与轮次取自已保存设置。
  3. 在批次详情中查看报告、复制输出路径,或取消运行中的批次。

/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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜