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

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

小夜