在手术室数字化进程中,麻醉诱导阶段的「身份、手术、方案」三重核查是《手术安全核查制度》的强制性要求。但手麻系统日志中常存在「诱导已开始,核查未完成」的时序断点,这类缺失难以通过人工抽查发现,却可能成为医疗质量评审与等级医院复审中的高风险项。麻醉诱导核查完整性检测器正是为此设计的一款纯规则引擎驱动的命令行优先工具,不依赖大语言模型,规避幻觉风险,专精于从多品牌手麻系统日志中精准枚举核查缺失案例,并生成可追溯、可整改的 Ledger 式台账。
项目核心定位与技术事实
- Python 3.11+ 构建,MIT 许可证
- 零 LLM 依赖
:全部逻辑基于确定性规则匹配与时间窗口分析,输出结果可验证、可复现 - 多源日志兼容
:原生支持日立、GE 医疗、飞利浦三大主流手麻系统,同时提供通用 CSV/JSON 适配能力 - 输出即交付
:支持 Markdown、CSV、JSON、HTML(含交互功能)四种格式,直接用于科室整改与医务科归档 - 生产就绪设计
:内置 CLI 批量处理、Web 界面交互分析、WebSocket 实时监控、CI/CD 合规率阈值告警(exit code 机制)
核心能力解析:如何定义并识别一次「核查缺失」
该工具的核心判断逻辑严格遵循临床规范:
- 触发点唯一
:以 operation_phase=INDUCTION_START或event_type=INDUCTION_START作为锚点 - 时间窗口限定
:仅检索该时间点之前的所有核查记录(不含诱导开始后补录) - 三重项全覆盖判定
: 身份核查:确认患者姓名、住院号、血型、过敏史等基础身份信息 手术核查:确认手术名称、手术部位、左右侧别等操作信息 方案核查:确认麻醉方式、关键用药、剂量范围、特殊注意事项等执行依据
任一核查项在诱导开始前无有效记录,即标记为违规,并在 Ledger 中明确列出缺失项。
快速上手:安装、运行与典型工作流
安装依赖
pip install -r requirements.txtCLI 命令行使用(主力场景)
所有操作均通过 python -m anesthesia_induction_checker.cli 入口执行,支持细粒度筛选与格式导出:
# 默认检测:仅输出违规案例 Ledgerpython -m anesthesia_induction_checker.cli check data/sample_log.csv# 统计合规率(含按术间、术者、日期聚合)python -m anesthesia_induction_checker.cli stats data/sample_log.csv# 导出 HTML 报告(含排序、筛选、高亮)python -m anesthesia_induction_checker.cli export data/sample_log.csv --format html --output report.html# 按术者 ID 筛选分析python -m anesthesia_induction_checker.cli check data/sample_log.csv --operator-id OP001# 按术间 ID 筛选python -m anesthesia_induction_checker.cli check data/sample_log.csv --room-id R001# 显示全部案例(含合规与违规)python -m anesthesia_induction_checker.cli check data/sample_log.csv --show-compliant# CI/CD 集成:合规率低于阈值时返回非零退出码python -m anesthesia_induction_checker.cli stats data/sample_log.csv --fail-threshold 0.95CLI 输出示例(Ledger 格式):
=== 麻醉诱导核查Ledger ===总手术数: 40 | 合规: 23 | 违规: 17 | 合规率: 57.5%━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━手术ID 患者ID 术间 术者 诱导时间 缺失项 状态SURG003 P003 OR1 DOC1 2024-01-03 14:30 身份核查,方案核查 ✗ 违规SURG007 P007 OR2 DOC2 2024-01-05 09:15 手术核查 ✗ 违规SURG012 P012 OR1 DOC1 2024-01-08 11:00 身份核查 ✗ 违规CLI 输出示例(stats 格式):
=== 麻醉诱导核查统计 ===总手术数: 40 | 合规: 23 | 违规: 17 | 合规率: 57.5%【按术间统计】术间 手术数 合规 违规 合规率OR1 15 8 7 53.3% ⚠️ 偏低OR2 12 7 5 58.3%OR3 13 8 5 61.5%【高频违规模式】1. 身份核查缺失: 12 例 (30.0%)2. 手术核查缺失: 10 例 (25.0%)3. 方案核查缺失: 8 例 (20.0%)Web 界面:交互式分析与实时监控
启动服务后访问 http://localhost:5000:
python webapp/app.pyWeb 功能包括:
文件上传(支持 CSV/JSON/JSONL) 自动适配器识别与字段映射预览 可排序、可筛选的交互式 Ledger 表格 WebSocket 实时监控大屏(需启用 websocket_enabled: true)多语言切换(简体中文 / 繁体中文 / English)
Docker 部署:标准化运行环境
# 构建镜像docker build -t anesthesia-checker .# CLI 批量检测(挂载 data 目录)docker run --rm -v $(pwd)/data:/data anesthesia-checker check /data/sample_log.csv# 启动 Web 服务docker compose up web# CI/CD 流水线中调用合规检查docker run --rm -v $(pwd)/data:/data anesthesia-checker stats /data/sample_log.csv --fail-threshold 0.95配置体系:灵活适配不同部署环境
配置文件 config.yaml 支持多级覆盖策略,优先级从高到低为:
命令行 --config参数指定路径环境变量 ANESTHESIA_CHECKER_CONFIG当前目录 config.yaml~/.config/anesthesia-checker/config.yaml/etc/anesthesia-checker/config.yaml
关键配置项示例:
default_adapter: autocompliance_threshold: 0.95date_format: "%Y-%m-%d %H:%M:%S"check_item_mapping: IDENTITY: - "身份核查" - "patient_verification" - "患者身份确认" SURGERY: - "手术核查" - "surgery_verification" - "手术信息确认" PLAN: - "方案核查" - "plan_verification" - "麻醉方案确认"allowed_extensions: - csv - json - jsonllocale: zh_CNwebsocket_enabled: truemax_upload_size: 104857600环境变量可覆盖部分配置:
ANESTHESIA_CHECKER_ADAPTER | |
ANESTHESIA_CHECKER_THRESHOLD | |
ANESTHESIA_CHECKER_LOCALE | |
ANESTHESIA_CHECKER_WEBSOCKET |
Webhook 与实时监控接入
支持两种实时日志流接入方式:
WebSocket 推送(推荐):前端监听 /ws,后端自动推送新违规事件。
HTTP Webhook 接收(兼容旧系统):
curl -X POST http://localhost:5000/webhook \ -H "Content-Type: application/json" \ -d '{ "surgery_id": "SURG001", "patient_id": "P001", "room_id": "OR1", "operator_id": "DOC1", "timestamp": "2024-01-15 09:00:00", "check_item_code": "身份核查", "operation_phase": "PRE_OP", "event_type": "CHECK" }'SSE 降级方案(浏览器兼容):
curl http://localhost:5000/eventsPython API:嵌入自有系统或定制分析流程
开发者可直接导入核心模块进行程序化调用:
from anesthesia_induction_checker import load_log, InductionCheckEngineentries = load_log("data/sample_log.csv")engine = InductionCheckEngine()results = engine.check_batch(entries)from anesthesia_induction_checker import StatisticsCollectorstats = StatisticsCollector()compliance = stats.compute_compliance_rate(results)print(f"合规率: {compliance:.1%}")项目结构概览:模块清晰,职责分明
anesthesia-induction-checker/├── anesthesia_induction_checker/ # 核心包│ ├── adapters/ # 各品牌适配器(含自动识别逻辑)│ ├── loaders/ # CSV/JSON 加载器│ ├── output/formatters/ # Markdown/CSV/JSON/HTML 输出器│ ├── i18n/ # 多语言资源(zh_CN/zh_TW/en)│ ├── models.py # StandardLogEntry 数据模型│ ├── engine.py # 三重核查规则引擎主逻辑│ ├── stats.py # 统计聚合模块│ ├── config.py # 配置加载与解析│ └── cli.py # Click CLI 入口├── webapp/ # Flask Web 应用(含 WebSocket/SSE)├── scripts/ # 示例数据生成脚本├── tests/ # 单元测试(覆盖引擎、适配器、CLI)├── data/ # 示例日志数据├── config.example.yaml # 配置模板├── Dockerfile # 容器构建定义├── docker-compose.yml # Web 服务编排└── requirements.txt # 依赖清单适用场景与价值边界说明
该工具适用于以下明确场景:
医院信息科对手麻系统日志做周期性合规审计 麻醉科主任对本科室诱导核查执行情况进行质量回溯 医务科在迎评前开展全院手术室核查完整性摸底 第三方质控平台集成日志分析能力 CI/CD 流水线中嵌入合规率门禁(如每日增量日志合规率 < 95% 则阻断发布)
它不解决以下问题:
不替代手麻系统本身的核查流程设计或 UI 交互优化 不提供核查行为的实时拦截或强制阻断能力 不分析核查内容是否真实准确(仅判断是否执行) 不支持非结构化文本日志(如 PDF、扫描件、自由录入字段)
总结:一个专注、轻量、可嵌入的医疗合规审计组件
麻醉诱导核查完整性检测器不是通用日志分析平台,而是一个高度聚焦的垂直工具。它用纯规则引擎保证逻辑透明与结果可信,用 CLI 优先设计满足自动化与批处理需求,用 Web 界面降低一线人员使用门槛,用 Docker 和 Webhook 支持现代 DevOps 与实时监控架构。其价值不在于炫技,而在于将一项强监管、高风险、易疏漏的临床操作,转化为可量化、可追踪、可整改的数据事实。
项目地址:https://github.com/nexorin9/anesthesia-induction-checker国内仓库:https://gitee.com/nexorin9/anesthesia-induction-checker欢迎交流使用问题与适配建议。
夜雨聆风