乐于分享
好东西不私藏

[开源] 我把临床AI模型上线做成了一次软件发布:临床AI模型评估调度系统的三重哈希审计与强制状态流转

[开源] 我把临床AI模型上线做成了一次软件发布:临床AI模型评估调度系统的三重哈希审计与强制状态流转

本项目是临床AI模型评估调度系统。当信息科或临床数据中心把一款临床AI模型登记到算法注册中心后,系统能一键触发评估调度,按模型架构名查表派发到对应评估器,跑完院内脱敏评测集后,归约出带模型哈希、配置哈希、评测集哈希的审计报告。临床主任点确认,模型就能从待复核推进到已上线。我们主要面向信息科工程师、临床项目负责人、医院合规内审员以及测试验证岗,交付形态是命令行工具与HTTP API,底层技术栈采用Python标准库、SQLite与JSONL。

临床AI模型上线的现实困境

现在医院引入的临床AI模型越来越多,从脓毒症早期预警到病历质控规则,再到抗菌药合理使用提示。但我们在调研中发现,这些模型上线前的验证往往缺乏工程化手段。评测集是怎么来的?模型权重在测试期间有没有被悄悄替换?评测指标是谁算的?如果遇到飞行检查,怎么证明当时的评测集和现在跑的一模一样?

过去,信息科和临床科室往往靠微信群沟通、用Excel记录指标,甚至把评测脚本直接写在Jupyter Notebook里。这种做法在模型数量少的时候还能勉强应付,一旦模型变多、版本迭代加快,就会出现指标对不上、责任说不清、审计查不到的问题。我们需要把软件工程中成熟的持续集成与持续交付思路,真正用到医疗AI模型的上线验证上。这就是我们开发这套系统的初衷,让模型上线像代码发布一样有迹可循、有据可查。

算法注册与评估器查表派发

要让模型上线流程标准化,第一步是把模型和评估逻辑解耦。我们设计了算法注册中心,信息科工程师可以把模型登记为唯一的算法标识。登记时,系统会进行严格的模式校验,确保必填字段完整、版本号符合语义化版本规范、架构名称保持一致。

模型登记完成后,系统会根据架构名称在评估器字典里查表。如果命中对应的评估器,就会自动拉起该评估器执行任务。这种查表派发机制意味着,当临床引入一种新类型的模型时,我们只需要在字典里注册一个新的评估器,而不需要修改核心的调度逻辑。

岗位
什么时候用
得到什么
信息科工程师
临床AI模型上线前需要复跑院内脱敏评测集
一键执行评估子命令,输出带模型、配置、评测集三重哈希的评估报告
临床项目负责人
评估跑完需要确认模型是否可上线
在待复核状态下点确认或拒绝,将状态推进到已上线或退回
医院合规内审员
需要追溯某模型何时上线、谁确认的、当时评测集是什么样
按运行标识重放完整哈希链,文件级篡改立即可识别
测试验证岗
新版本模型上线前与历史版本对比
查看当前版本软链指向,必要时回滚到历史已批准版本

三重哈希审计与强制状态流转

医疗AI模型的审计要求极高,任何数据的微小变动都可能导致临床决策的差异。因此,我们在每次评估运行报告中,强制落盘模型哈希、配置哈希和评测集哈希。这三重哈希锁死了评估的输入和过程,只要其中一个文件被修改,哈希值就会改变,审计时立刻就能发现异常。

在状态推进方面,我们设计了严格的六阶段流转路径,包括草稿、待复核、已批准、预发、已上线和已废弃。系统会拦截所有非法的状态跃迁,比如不允许从草稿直接跳到已上线,也不允许从已废弃直接回到待复核。这种强制路径确保了模型上线的每一步都符合医院的管理规范。

为了防篡改,审计日志采用追加写入模式,底层使用SHA-256前链结构。系统在启动时会校验整条哈希链,一旦发现日志被删除或修改,校验失败,系统直接拒绝启动。这从物理层面保证了审计日志的不可抵赖性。

评测集处理与异步预读机制

评测集的质量直接决定了评估结果的可信度。我们规定评测集必须采用JSONL格式,并且严格使用脱敏占位符。患者引用和就诊引用必须形如匿名占位符,绝对禁止填入真实的住院号或处方号。系统在导入评测集时,会计算数据集哈希并校验数据结构。

医疗评测集往往包含大量的患者特征维度,如果采用同步读取,主线程在加载数据时会被阻塞,导致命令行响应迟缓。我们引入了异步预读机制,使用线程池在后台预读下一批数据,主线程则专注于同步计算指标。经过测试,在处理一千条复杂特征数据时,首屏响应时间可以控制在两百毫秒以内,大幅提升了工程师的操作体验。

子命令
用途说明
关键参数
register
注册算法到算法注册中心
算法标识、显示名称、架构名称、模型产物路径、配置引用
task
创建评测任务
任务名称、指标类型、评测集标识
dataset
上传脱敏评测集并计算哈希
任务标识、JSONL文件路径
eval
触发评估并生成审计报告
算法标识、任务标识
decide
临床主任点确认推进状态
运行标识、决策结果、决策人
audit
按运行标识重放审计链
运行标识
status
查看当前版本与状态
运行标识

零外部依赖的API与端到端演示

考虑到医院内网环境的特殊性,很多时候无法随意安装复杂的第三方Web框架。我们采用Python标准库的HTTP服务模块,实现了零外部依赖的HTTP API。系统提供四个核心端点,分别用于触发评估、读取评估记录、主任点确认和重放审计链。

更重要的是,命令行工具与HTTP API共享同一套核心逻辑,包括算法运行器、决策管理和审计日志。这意味着无论用户是通过命令行脚本自动化执行,还是通过前端界面调用API,底层的行为完全同源,避免了多套代码导致的结果不一致。

方法
路径
用途说明
POST
/api/v1/eval/run
触发评估,传入算法标识与任务标识
GET
/api/v1/eval/runs/运行标识
读取指定评估运行的完整记录
POST
/api/v1/eval/runs/运行标识/decide
主任点确认,传入决策结果与决策人
GET
/api/v1/audit/replay/运行标识
按运行标识重放审计链

为了方便大家快速体验,我们提供了一个端到端的演示脚本。运行该脚本后,系统会依次执行模型登记、任务创建、数据集上传、触发评估、主任确认等七个步骤,最终输出模型已上线的状态。

飞行检查与审计链重放

在医院面临飞行检查或内部合规审计时,内审员通常需要追溯某个模型的上线路径。过去,这需要信息科从各个系统里导日志、拼表格,耗时且容易出错。现在,内审员只需要拿到一个运行标识,执行审计重放命令,就能拿到该次运行包含的所有审计事件。

这些事件包括创建运行、派发评估器、计算指标、主任决策等,每一条事件都带有SHA-256前链哈希。审计链的完整性一目了然。如果医院需要对比不同版本的模型表现,测试岗也可以通过查看当前版本的软链指向,或者直接回滚到历史已批准的版本,确保线上运行的始终是经过验证的版本。

典型场景
业务动作
可核对产出
脓毒症模型上线前评估
登记模型,触发评估,跑脱敏样例,主任确认
六维指标报告,状态推进到已上线
病历质控规则模型验证
跑内置质控规则,输出规则命中率,质控科核对
规则命中率与命中次数指标
飞行检查追溯上线路径
拿到运行标识,重放审计链,校验哈希
完整的审计事件流与防篡改证明

安全合规边界与项目结构

在医疗场景下,安全与合规是不可逾越的红线。我们明确了系统的边界:本系统仅评估模型在脱敏评测集上的指标,绝不输出任何诊断或治疗建议,最终上线必须由临床主任人工确认。系统独立运行在本地SQLite与文件评测集上,不直连医院信息系统,也不写回电子病历,医生工作站无须做任何改动。

项目结构清晰,核心代码分为注册中心、评估调度、数据集处理、版本管理、状态流转、存储、API和命令行八个模块。配置文件按业务场景分类,评测集独立存放,测试用例包含全套单元测试与性能测试。我们希望通过这种工程化的设计,让临床AI模型的上线过程变得透明、可控、可追溯。

项目地址: https://github.com/nexorin9/ai-model-eval-schedule

往期热门文章

院长们相信AI,不是因为AI

医保,正在接管医生的鼠标

医院最不缺的,就是数据

互联网医院死了三千家,没人写讣告

有多少人工,就有多少智能

医生的一天,都在给系统打工

几百万,买了个SQL

系统瘫痪,信息科祭天

互联网医院,最后变成了一张线上处方单

自主知识产权,终于可以下载了

医疗数据开始值钱以后

医院买了两个AI:一个写病历,一个查病历

医院信息化最稳定的能力叫迎检

医疗AI:95%的准确率,意味着总有人会成为那5%

医院信息化最成熟的系统:丧事喜办

AI进了医院,但责任还停留在HIS时代

HIS维护费,买不到产品的未来

AI还没成熟,认证先成熟了

代码越便宜,HIS厂商越危险

医院第一次拥有了无限加班系统

医院HIS最大的成功,就是活成了物业

院长大会上,HIS厂商没有名字

院长们正在把AI当许愿池

医院信息科AI Coding:上线一时爽,运维修罗场

牛马造嚼子:当医院信息科开始用AI自我驯化

AI正在帮医院证明:信息科不需要预算

当医院开始自己写系统,HIS厂商的黄金时代结束了

医疗AI做出来了,但没人付钱

医院的“功能无限责任制”逼死了HIS和乙方

HIS厂商最赚钱的产品,是恐惧

医疗AI,连幻觉都谈不上

医疗AI正在被医院HIS“降维打击”

医院数据全进中台了,然后呢?

当整个行业默认HIS不会变好

排队两小时,看病三分钟:医院HIS系统正在改变诊疗

HIS厂商的"架构收敛":当所有系统长得一模一样,你凭什么收费?

十万字病历,AI只配读懂噪音

一群鼓吹AI Coding的专家,正在制造医疗信息化的新技术债

当AI开始学习自己编造的病历

不是AI不行,是HIS系统把门焊死了

医院AI培训:台上教你投喂,台下让你背锅

当AI开始操作医院HIS系统,医疗AI的问题就变了

医院信息网络安全大赛:表演给谁看?

CHIMA年年开,问题年年在

CHIMA2026:AI挤满展厅,但医院已经不买单了

医院的数据不属于医院

医院信息科不会消失,但正在被掏空

谁解释数据,谁就定义医院

一线崩了!医院信息科正在拖垮整个医疗信息化

医疗信息化将进入无人实施时代

当医院信息科主任用AI下场写代码,交付链第一次被打穿

当代码不再是“技术”:HIS厂商的“辜鸿铭时刻”

我用一个Agent,把实施链路压缩到一轮循环

AI狂欢背后:HIS厂商正在成为第一批受害者

离职程序员被炼成AI!但我发现真正该慌的是医生

HIS厂商还没倒,但已经不值钱了!

HIS厂商真正的危机:医院不再必须买系统了

代码不再稀缺,医院HIS厂商还怎么定价?

买国产不会被问责,买进口不会被原谅

把HIS系统的Loading改成Thinking,它就是AI了吗?

Seedance2证明了一件事:医疗AI可能只是另一种幻觉

软件已死:医院未来不需要买系统,只需要买“技能包”

我用OpenClaw干了一件HIS厂商最怕的事

Epic的“美国HIS神话”,为何在中国公立医院无法复制?

中国公立医院的内外网隔离,究竟在保护什么?

Oracle的撤退信号:医疗信息化,正在被资本重新定价

别做梦了,绝大多数公立医院,根本玩不转HIS自研

互联网大厂做不好HIS?因为这不是软件业,是保姆业

为什么开源HIS系统在中国几乎绝迹?

这套HIS系统完美运行,所以:医生全责

当HIS系统真正好用时,病人已经出事了

比“大厂救不了”更残酷的真相,当全国医院共用一套HIS系统

中国式 RWD 祛魅:所谓真实世界数据,其实是 AWD?

都在说医疗数据是金矿,但没人敢提那个尴尬的真相

中国医院信息化正在经历一场反向演化:越评级,越难用

为什么互联网大厂的“降维打击”,救不了中国医院的HIS?