前言¶
在 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