AI PLAY玩法更新持续收录
← 回到更新流

2026-10-02 · 原文发布日

用n8n按危急程度路由化验结果并追踪确认

一套化验结果通知工作流:webhook或定时从LIS取结果,读Google Sheets里的阈值和医生联系方式,解析JSON或HL7文本、统一单位、去重,按阈值把结果分为危急、异常、正常等。Gemini生成不涉诊断的简短说明;危急结果发Slack私信和Twilio短信并附确认链接,15分钟未确认自动升级给备份医生;异常结果走Gmail邮件,全程写入日志供审计。

原文要点

免费模板。其事实要点:webhook接收或定时轮询LIS接口取化验结果;从Google Sheets的Limits、Doctors、Log三个页签读取阈值、医生联系方式和历史记录;解析JSON或HL7 ORU文本、统一单位(含受支持的换算)、检查缺字段、按日志去重;按Limits阈值分为危急、异常、正常、重复、需实验室复核五类;Gemini只生成复述严重程度、数值、单位和所需行动的非诊断性短说明;危急结果发Slack私信,有手机号再发Twilio短信,附确认链接,15分钟未确认升级给备份医生;异常结果走Gmail邮件;消息不携带直接患者标识,只有结果参考ID,医生自行登EHR查看;全部状态写入Log页签供审计。

这次做成什么

搭建一条按危急程度路由化验结果的练习流水线:合成结果进入→阈值分类→分级通知→确认追踪与15分钟升级→全程审计日志。用本站合成数据和测试凭据跑通,不接真实患者数据。

准备什么

  • n8n实例(Cloud或自托管)
  • Google Sheets一张,建Limits、Doctors、Log三个页签并按下方CSV填列
  • Slack测试工作区(可发私信和频道消息),Gmail测试账号
  • Google Gemini API key或等价聊天模型;Twilio为可选,练习可用合成短信节点替代
  • 仅使用虚构的化验结果与结果参考ID,不接入真实LIS

具体怎么做

  1. 建三张配置表

    按artifacts中的CSV建立Limits(项目编码、单位、危急上下限、异常上下限)、Doctors(医生ID、Slack用户ID、备份Slack ID、邮箱、手机号)、Log(留空,仅写表头)。在n8n连接Google Sheets凭据并把表格ID配到各读取节点。

  2. 接入测试数据

    用Webhook节点生成测试URL,用Postman或curl POST下方artifacts中的合成JSON结果;或先用Manual Trigger+Code节点输出同样数据。接Code节点解析:统一单位(如mmol/L与mg/dL换算按本站示例系数)、校验缺字段、按Log中已有resultRef去重。

  3. 阈值分类

    Code节点把数值与Limits表匹配:低于危急下限或高于危急上限→critical;超出异常区间→abnormal;区间内→normal;Log已有同resultRef→duplicate;缺字段→lab_review。用Switch按类别分流。

  4. 生成说明并分级通知

    critical与abnormal分支先调Gemini,用artifacts中的说明提示词生成非诊断短说明。critical分支:查Doctors表发Slack私信,有手机号再走Twilio;附确认链接(Wait节点配webhook形式的恢复链接,界面配置以你的n8n版本为准,本站未实测原模板),等待15分钟,超时未确认则向备份医生Slack ID升级。abnormal分支:Gmail发邮件给开单医生。

  5. 审计日志与兜底

    每条结果把resultRef、分类、通知渠道、确认状态、时间追加到Log页签;路由失败或缺联系方式的项目发到实验室Slack频道,由人工处理。

可直接复制的材料

Limits页签CSV

本站虚构的练习阈值,真实阈值必须由医疗机构确认,勿用于临床

testCode,testName,unit,criticalLow,criticalHigh,abnormalLow,abnormalHigh
K,血钾,mmol/L,2.8,6.2,3.5,5.3
GLU,血糖,mmol/L,2.2,22.2,3.9,6.1
HGB,血红蛋白,g/L,50,200,110,160

Doctors页签CSV

全部为虚构测试身份,手机号与Slack ID需替换为你测试环境的数据

doctorId,name,slackUserId,backupSlackUserId,email,phone
D001,测试医生甲,U0TEST001,U0TEST002,doc-a@example.test,+8613800000001
D002,测试医生乙,U0TEST003,U0TEST004,doc-b@example.test,

化验说明文案生成提示词

本站独立编写;输入字段在n8n中用表达式引用

你是化验结果通知文案生成器。根据下面的化验结果生成一段不超过80字的中文简短说明,只复述:严重程度、项目名、数值、单位、需要采取的动作(立即确认/择期查看)。严禁给出任何诊断、病因推测或治疗建议,严禁出现患者姓名等身份信息,只能使用结果参考编号。输入:{"resultRef":"R-20261004-001","severity":"critical","testName":"血钾","value":6.8,"unit":"mmol/L"}

webhook合成测试负载

本站虚构测试数据,不含任何患者标识,与原模板“仅传结果参考ID”的设计一致

{
  "resultRef": "R-20261004-001",
  "doctorId": "D001",
  "testCode": "K",
  "testName": "血钾",
  "value": 6.8,
  "unit": "mmol/L",
  "reportedAt": "2026-10-04T10:30:00+08:00"
}

输入与输出示例

本站虚构演示,分类由阈值表推导,说明文案为提示词预期输出样式,未调用真实模型

输入

POST合成负载:resultRef=R-20261004-001,doctorId=D001,testCode=K(血钾),value=6.8 mmol/L;Limits中K的criticalHigh=6.2。

对应输出

分类结果:{"resultRef":"R-20261004-001","category":"critical","reason":"6.8 > criticalHigh 6.2"};Gemini说明示意:「危急:血钾 6.8 mmol/L,超出危急上限,请立即确认(编号R-20261004-001)。」Log追加行:R-20261004-001,critical,slack+sms,pending,2026-10-04T10:30:05+08:00;15分钟未确认后向U0TEST002发送升级消息。

做完检查这些

  • value=6.8的血钾按Limits被判为critical并同时触发Slack私信分支,value=5.8时只走abnormal邮件分支
  • 同一resultRef重复POST第二次时被判为duplicate且不再发送任何通知
  • 缺少value字段的负载被判为lab_review并出现在实验室频道消息中
  • critical分支15分钟内无确认后,Log中该行确认状态变为escalated且备份医生收到消息

容易卡住的地方

  • 本流程只做LIS到医生的路由与升级,不是完整的EHR/FHIR集成,原模板明确说明不含该能力
  • 消息设计上不携带患者直接标识,练习时也不要在测试数据里放真实患者信息
  • 15分钟确认窗口、阈值和换算系数都需在Limits表和Wait节点中按机构规范调整,本站数值仅为虚构示例
  • Twilio短信和Gemini调用可能产生费用,练习时建议先关闭短信分支;升级链目前只有一级备份医生

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Route critical lab results using Google Sheets, Slack, Gmail, Gemini, and Twilio
原作者
Ciphernutz IT Services
原始发布日期
2026-10-02T11:26:41.112Z
来源
https://n8n.io/workflows/20335