
本项目是专为互联网医院、区域医疗平台及AI辅助用药系统设计的「AI建议→医师确认→患者结果」三角举证链系统,直面犹他州AI医疗纠纷中暴露的问责真空问题。我们不做泛泛的AI日志归档,而是以HMAC-SHA256哈希链为底层锚点,构建可验证、不可篡改、时间序完整的临床决策证据包。面向医务部/质控办用于医疗鉴定举证,面向信息科支撑AI工具准入评估,也面向临床科室提供每日诊疗行为的合规参照。系统交付形态覆盖API服务、CLI命令行、HTML/JSON双格式报告,核心能力包括AI建议结构化记录、医师Override理由归因、冲突检测引擎、完整性校验签名、飞检合规报告生成。技术栈采用FastAPI+Pydantic+SQLAlchemy构建高可信后端,CLI基于Typer,加密依赖cryptography库,全链路支持Docker容器化与docker-compose编排。
定位与能力范围
我们不替代临床决策,也不包装成“全自动审方机器人”。本系统定位清晰:当AI给出一条降压药建议,医师选择采纳或覆盖,患者后续出现改善或不良事件,这三段动作必须形成可回溯、可验证、可举证的闭环链条。它不是给医生看的实时弹窗,而是给质控人员调取的司法级证据包;不是给信息科交差的静态报表,而是支撑AI工具持续准入评估的动态数据基座。
能力边界同样明确:- 不采集原始HIS数据库,只通过REST API或JSONL日志接入结构化事件流;- 不干预临床操作流程,仅记录医师在AI建议后的显式动作(采纳、覆盖、忽略)及理由;- 不预测患者结局,只忠实摄入并关联已发生的患者结果字段(痊愈、恶化、不良事件等);- 不替代电子病历系统,但可与之解耦对接,作为独立的“临床AI行为审计层”。
这套设计源于一个朴素共识:AI在医疗场景的价值不在替代人,而在放大人的判断力;而放大的前提是,每一次人机协作都必须留下可追溯的责任印记。
核心功能分层实现
系统按M1至M8八层模块组织,每层承担明确职责,不重叠、不越界:
这种分层不是为炫技,而是让每一类使用者,质控员查报告、信息科调API、运维跑CLI,都能精准触达所需能力,无需理解全栈。
使用与配置
上手极简,三步即可启动本地验证环境:
pip install -r requirements.txtcp .env.example .env# 编辑 .env 填入 API_KEY 和 DATABASE_URL启动方式任选其一:
uvicorn src.api.main:app --host 0.0.0.0 --port 8000 --reload或使用Docker:
docker-compose up -d系统预置3个脱敏样例场景,位于data/目录,覆盖典型临床路径:
sample_normal_adoption.jsonl | |
sample_override.jsonl | |
sample_conflict.jsonl |
导入样例只需一行CLI命令(服务需已启动):
python -m src.cli.commands logs import --path data/sample_override.jsonl所有样例均不含真实患者信息,符合医疗数据脱敏规范。
环境与运行
部署支持两种主流模式,均默认使用SQLite轻量数据库,生产环境可无缝切换至PostgreSQL:
- Docker单容器模式
:适合快速验证或边缘节点部署,通过 -v挂载data/目录持久化日志与数据库; - docker-compose编排模式
:含服务健康监控、日志集中查看、自动重启策略,适合信息科统一纳管。
关键环境变量需按实际配置:
API_KEY | ||
DATABASE_URL | sqlite:///./data/audit.db,支持postgresql://前缀 | |
CORS_ORIGINS | ||
LOG_LEVEL | DEBUGINFO/WARNING,默认INFO |
HIS系统对接只需调用三个POST端点,示例如下(需携带X-API-Key头):
curl -sS -X POST http://localhost:8000/ingest/ai_suggestion \ -H "Content-Type: application/json" \ -H "X-API-Key: your-api-key-here" \ -d '{"session_id": "S001", "user_id": "U100", "timestamp": "2026-06-05T10:00:00Z", "ai_content": "建议使用头孢曲松", "ai_confidence": 0.92, "limitation_note": "仅供参考"}'curl -sS -X POST http://localhost:8000/ingest/doctor_action \ -H "Content-Type: application/json" \ -H "X-API-Key: your-api-key-here" \ -d '{"session_id": "S001", "action": "override", "override_reason": "患者青霉素过敏,换用喹诺酮", "timestamp": "2026-06-05T10:05:00Z"}'curl -sS -X POST http://localhost:8000/ingest/patient_outcome \ -H "Content-Type: application/json" \ -H "X-API-Key: your-api-key-here" \ -d '{"session_id": "S001", "timestamp": "2026-06-05T14:00:00Z", "outcome": "痊愈", "adverse_event": false}'数据与扩展
最小数据契约极其清晰:AI建议JSONL + 医师操作JSONL + 患者结果JSONL → 举证包JSON/HTML。三类输入各自独立,只要session_id一致,系统自动完成时间序对齐与哈希链组装。
字段设计遵循临床可读性优先原则,不强求技术范式:
ai_suggestion必含 session_id,timestamp,ai_content,ai_confidence,limitation_notedoctor_action必含 session_id,action(adopt/override/ignore),override_reason(仅action=override时必填)patient_outcome必含 session_id,timestamp,outcome,adverse_event
新增字段可通过YAML配置扩展,不影响现有链路。比如某院要求记录“药师审核意见”,只需在config.yaml中声明该字段为patient_outcome的可选扩展项,系统自动纳入哈希计算范围,无需修改代码。
限制与说明
我们坦诚说明当前边界:- 不支持实时流式处理,所有摄入均为HTTP同步请求或批量JSONL导入;- 不提供前端可视化界面,报告以HTML/JSON交付,由医院自有BI系统或质控平台集成展示;- 不内置AI模型,仅作为下游AI工具的“行为记录仪”与“举证生成器”;- SQLite默认配置适用于日均≤5000 session的中小规模部署,超量需切换至PostgreSQL并启用连接池。
所有能力均围绕一个目标:让每一次AI参与的临床决策,都有迹可循、有据可查、有责可溯。这不是锦上添花的功能模块,而是当下AI进入临床前必须铺设的责任基础设施。
项目地址:https://github.com/nexorin9/ai-triangle-evidence
往期热门文章
HIS厂商的"架构收敛":当所有系统长得一模一样,你凭什么收费?
一群鼓吹AI Coding的专家,正在制造医疗信息化的新技术债
夜雨聆风