在医院信息系统日常运维中,检验科设备(如生化分析仪、免疫分析仪等)一旦出现异常,往往依赖人工巡检日志、电话报修或被动响应告警。这种模式响应慢、描述模糊、信息断层,容易延误故障处置。为解决这一痛点,一款轻量、可定制、开箱即用的 医院信息工具 应运而生,检验仪器主动工单生成器(Instrument Workorder Generator),它让仪器“自己开口说话”,把日志里的异常自动转化为工程师一看就懂的拟人化工单。
项目概述:让仪器学会自述故障
检验仪器主动工单生成器是一款面向医院信息科与检验科协同场景的开源自动化工具。它的核心使命很明确:当 LIS 系统日志中出现异常事件时,无需人工干预,系统即可实时捕获、识别并生成一份以仪器第一人称口吻撰写的工单描述,通过企业微信或飞书即时推送给信息科工程师。
整个流程不依赖外部平台或复杂中间件,纯 Python 实现,本地部署即可运行。它不是通用日志分析平台,而是深度聚焦于检验仪器运维场景的垂直工具,从日志解析、规则判断,到语义润色、多端推送,每一步都围绕「快速定位、降低理解成本、缩短响应时间」设计。
技术亮点:规则保底 + LLM 增强的务实架构
本项目采用「稳态+敏态」双轨设计,在保障稳定可靠的前提下引入大模型能力提升表达质量,拒绝为炫技而堆砌技术。
规则引擎保底,LLM 锦上添花规则引擎负责准确识别已知异常类型,包括关键词匹配、错误码正则识别、单位时间内的错误计数超限、日志级别阈值越界等。所有规则均可在
config_rules.yaml中声明式配置,无需修改代码。LLM 则仅用于将结构化的异常事件转化为自然语言工单,例如将「[ERROR] LIS_001: reagent low at 2024-05-20T08:32:15」生成为「我是贝克曼 AU5800 生化分析仪,刚才试剂余量低于安全阈值,请求尽快补充 R1/R2 试剂盒」。LLM 不参与判断,只负责表达,确保结果可控、可解释。真正的增量日志监控基于
watchdog实现对日志目录的细粒度监听,支持文件创建、追加写入、轮转(logrotate)等多种场景。内置位置记录与轮转检测机制,即使日志被切割重命名,也能无缝续读,杜绝漏报与重复处理。拟人化自述,直击工程师认知习惯工单不再是一行冷冰冰的技术日志,而是由仪器“自述”的故障现场。这种视角转换大幅降低信息解码成本,尤其适合非一线开发出身的信息科工程师快速建立上下文。
开箱即测的 Mock 模式默认启用
use_mock_llm: true,所有 LLM 调用均被替换为模板填充逻辑,无需申请 API Key 即可完整走通扫描、识别、生成、推送全流程。生产环境只需切换开关并配置密钥,平滑升级。全链路可观测性提供丰富 CLI 命令,支持一键扫描、持续监控、规则验证、LLM 生成测试、系统状态查看等,配合
loguru的结构化日志输出,便于部署后快速验证与问题排查。
应用场景:可用于检验科与信息科协同提效的关键环节
本工具并非替代现有 LIS 或 HIS 系统,而是作为其运维增强层,适用于以下典型场景:
LIS 日志自动化巡检替代人工每日翻查大量文本日志,实现 7×24 小时无感监控,尤其适用于日志量大、排班人力有限的三级医院检验科。
跨科室故障协同提效当仪器报错时,信息科工程师收到的不再是「AU5800 ERROR E2001」,而是「我是 AU5800,今天上午 9 点 15 分连续三次进样失败,请检查轨道传感器是否被样本管卡住」,显著减少来回确认时间。
新设备上线初期的快速适配通过编辑
instrument_mappings映射表和config_rules.yaml规则,可在数分钟内完成对新品牌、新型号仪器的日志格式与常见故障定义,无需二次开发。信息科内部知识沉淀辅助自动生成的工单文本可作为故障案例库原始素材,结合历史推送记录,逐步构建本院特有的仪器异常知识图谱。
DevOps 式运维实践落地支持 Docker 部署、环境变量优先级配置、配置即代码(YAML)、完整单元测试(pytest),符合现代基础设施即代码理念,适合纳入医院信息科标准化运维流水线。
使用指南:三步启动,五分钟上手
第一步:安装与初始化
pip install -r requirements.txtcp config.yaml.example config.yamlcp config_rules.yaml.example config_rules.yaml第二步:生成测试数据(可选)
python scripts/generate_sample_logs.py --output data/sample_logs/第三步:运行演示或正式监控
快速体验全部流程:
python scripts/demo.py若需真实监控日志目录:
python -m src.cli watch --config config.yaml --log-dir ./logs/ -v常用 CLI 命令一览:
扫描指定目录一次: python -m src.cli scan --log-dir ./data/sample_logs/持续监听日志变化: python -m src.cli watch验证规则是否生效: python -m src.cli test-rule --log-file ./data/sample_logs/sample.log测试 LLM 工单生成效果: python -m src.cli test-llm查看当前配置与仪器状态: python -m src.cli status -v
所有配置项均支持 YAML 文件与环境变量双源管理,敏感信息(如 API Key、Webhook 地址)建议通过 .env 文件或系统环境变量注入,避免明文泄露。
总结:小而准的医疗信息化开源实践
检验仪器主动工单生成器没有追求大而全的功能覆盖,而是牢牢锚定一个具体、高频、有痛感的临床信息科协作场景,日志驱动的故障主动发现与高效传达。它用成熟的 Python 生态构建稳健底座,用规则引擎守住准确性的底线,再以 LLM 提升表达的人性化上限。模块职责清晰、配置灵活、文档详尽、CLI 友好,既适合单点快速试用,也具备在中小型医院信息科规模化部署的工程成熟度。
项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。
项目地址(如果访问不了可以把链接中的github替换成gitee):
https://github.com/nexorin9/instrument-workorder-generator
夜雨聆风