goalkeeper 合規與稽核依據
給需要稽核的項目維護者:每道檢查的法源依據、狀態怎麼判讀、隱私與稽核如何保證、規範版本如何鎖定與重現。 串接與欄位細節見
api.md,資安姿態見security.md。 本服務收一段「AI 產出的醫療內容」,依台灣醫療法規回報每道檢查的符合狀態,不替使用者做整體放行。
1. 規範主軸與版本
主規範是衛福部《醫療機構應用生成式人工智慧指引》,115.05.29 以衛部醫字第 1151663164 號函頒。目前 ruleset 版本為 medical-115.05.29,線上打 GET /medical/describe 可查。
遵循時機:法規或指引一經公告(公布、通過、施行、正式發布皆算)即納入遵循,不因主管機關未掛牌、施行日未定而緩。此處採從嚴的 proactive 立場,純草案與預告才列監看。
版本可鎖定與可重現:可為特定租戶鎖定規範版本(pinned_ruleset_version),讓同一份內容在整段稽核期間得到一致的判定。回應中的 ruleset_version 標明該次實際採用哪一版。
2. 五道檢查對應的法源
每道檢查各綁多部法律,citation 因此是陣列而非單一條文。
| 檢查 | 看什麼 | 核心法源(節選) |
|---|---|---|
| disclosure(揭露/免責) | 是否註明 AI 生成、可能有誤、僅供參考、必要時由醫事人員確認 | 指引三(三)4(1);病人自主權利法 §4/§5(告知主體限醫事人員);行政院生成式 AI 參考指引 |
| source_attribution(來源標註) | 實質臨床/事實主張是否有溯源 | 指引三(一)2(2)、三(三)1(2);醫療法 §67(病歷完整);電子病歷辦法 §11/§11-1/§12(製作者識別) |
| scope_boundary(越權/越級診斷) | 是否逾越為「下確定診斷/治療指令」或冒充醫事人員親自執行 | 醫師法 §11(親自診察);護理人員法 §24(業務範圍須醫師指示);醫療器材管理法 §3(具診斷治療功能軟體=SaMD 須取證);病主法 §5 |
| pii(個資外洩) | 是否夾帶可識別個資(身分證、電話、病歷號…) | 個資法 §6(特種個資:病歷/醫療/基因/健康檢查);醫療法 §72(病情保密);電子病歷辦法 §3/§4/§5/§21 |
| hallucination(幻覺三子型) | ①編造文獻 ②錯誤藥物交互 ③與臨床指引不符 | 指引二(一)3;TFDA AI 醫材技術指引(臨床/分析效能驗證) |
每道檢查的回應都帶 citation,可逐關卡追溯到上述法條。線上即時清單見 GET /medical/describe。
3. 狀態語意與判讀鐵則
服務只回各關卡狀態,不做整體放行,稽核時須逐關卡判讀。
| status | 意義 |
|---|---|
pass |
該關卡要求達成 |
fail |
明確違反規範,應擋下或要求修正 |
warning |
模糊、部分達成或信心低,需人工覆核,不可當通過 |
error |
該關卡未能查核(LLM 逾時、外部查核失敗等),非通過,視為需覆核 |
判讀鐵則:
error ≠ pass。不可只看summary.fail === 0就視為合規,warning與error都算未通過或需人工覆核。summary只是計數,不能取代逐關卡判讀。- 建議的合規門檻:所有關卡皆
pass才視為自動通過,任一fail擋下,任一warning或error轉人工。 - 臨床指引子型目前定位是輔助提示,多回
warning,以人工複核為準。
4. 隱私保證(個資法 §6、醫療法 §72)
醫療內容受個資法 §6 特種個資與醫療法 §72 保密規範。系統設計上有四層:
- 去識別化先行:呼叫方送原文即可,服務先在內部遮罩身分證、電話、病歷號等欄位,之後全程在遮罩後文本上判定。個資偵測採「寧可錯抓不漏抓」,符合格式就觸發,連通用長數字樣式都算。這會多抓一些其實無害的數字,但漏抓一個病歷號的代價高得多。
- 原值永不持久化:原文與個資原值不寫入稽核,也不進 LLM 的 prompt 或回應。
- 稽核只存遮罩文雜湊與狀態摘要:
audit_log僅存request_id、規範版本、各關卡{id, status},以及對遮罩文取的 HMAC(content_hash),不含任何原文或個資。 - 去識別化失敗即 fail-closed:整個請求回 error,不會退而求其次在未遮罩文本上判定。
5. 稽核軌跡
每次查核都會(best-effort)寫一筆 audit_log:request_id、規範版本、各關卡狀態摘要、遮罩文雜湊、時間,不含原文或個資。
租戶用 GET /medical/audit?limit=&cursor=(需金鑰)自助調閱自己的紀錄,以金鑰歸戶,讀不到別人的。欄位與分頁見 api.md。
稽核寫入是 best-effort,永不把一個成功的查核回應變成錯誤。但在格式錯誤(400)、版本不存在(404)、去識別化失敗這些早退路徑不會寫,因為當下沒有遮罩文可雜湊。
6. 已知限制
幻覺查核目前卡住的地方多半是資料授權與可得性。各子型定位如下:
| 子型 | 現況 | 定位 |
|---|---|---|
| ① 文獻 | PubMed + Crossref 交叉比對抓假 DOI 與捏造文獻;DOI 僅驗存在性,不做書目逐欄位比對 | 可判 fail;台灣無 DOI 的中文期刊需人工 |
| ② 藥物交互 | openFDA 仿單自由文字 + RxNorm 藥名正規化;無結構化 A×B;中文藥名對成分為 12 種 MVP 靜態表 | 偏 warning,需人工複核 |
| ③ 臨床指引 | 真實學會語料卡在書面授權(免費下載不等於可商用、可再散布、可供 AI 訓練),目前接 NullRetriever |
一律 warning,不自動判違規 |
對授權未明、循證假陽性又高的領域,務實定位是降為 warning、要求人工複核,不自動判 fail。法規面與工程面的完整提煉見 notes.md。