医院危急值信息系统设计与实现
2020-11-25李永革
张 岩 张 剑 李永革 王 茜
(陆军第八十二集团军医院信息科 保定 071000)
1 引言
国家卫健委2018年4月发布的医疗质量安全核心制度中,关于危急值报告制度提出要求:“医疗机构应当分别建立住院和门急诊患者危急值报告具体管理流程和记录规范,确保危急值信息准确,传递及时,信息传递各环节无缝衔接且可追溯”[1]。医院通常采取电话传递信息、记录本手工登记的方式进行危急值报告管理流程处理,处理效率较低、人为因素影响较大,后期危急值报告处理过程追溯难度较高,难以提供详实数据。建设危急值信息系统实现危急值全流程管理可有效解决上述问题,促进危急值报告制度落实,满足医疗质量安全核心制度要求。危急值报告制度的核心是危急值信息传递与记录,保证危急值信息及时、稳定、可靠传输是系统开发的技术重点与难点。消息队列(Message Queue)作为信息传递的中间件得到广泛应用[2]。本文基于消息队列设计并开发危急值信息管理系统,危急值信息传递稳定、可靠且信息流转流程可配置,可较好适应医院不同危急值管理流程,实现对危急值信息的可追溯、闭环式管理。
2 消息队列
危急值信息系统的主要功能之一是出现危急结果后及时、准确、完整地将结果发送给临床医护人员且对信息发送、确认过程进行详细记录[3-4],如果完全自行开发实现工作量较大且难以保证系统稳定性。消息队列中间件是负责对消息进行传输和控制的应用,具有解耦、异步、削峰等优势[5],可降低系统消息传递部分代码耦合性[6],应用需求发生变化时仅需少量代码更改甚至不用更改;异步消息传递方式可提高应用响应速度[7],避免通过业务数据库进行消息传递时造成大量并发、频繁访问。同时消息队列中间件支持集群,为消息传递提供高可用保障。消息队列中间件的引入可减少系统开发工作量、增加系统健壮性[8]。常用消息队列有ActiveMQ、RabbitMQ、RocketMQ等[9-10]。本系统使用ActiveMQ,与其他消息队列相比具有简单易用、可控性好的优势,其设计机制较适合消息量较小但要求短时间内送达的应用,如危急值信息系统。
3 流程及功能设计
3.1 传统流程概述
危急值是指某项或某类检验、检查的异常结果,其出现表明患者可能面临生命危险,需及时传送信息至临床医生,迅速给予患者有效干预措施或治疗,否则可能失去最佳抢救机会[11]。危急值报告制度是医技与临床科室对出现危急值后处理流程的规定,能促进其有效沟通与合作,为确保医疗安全、预防医疗意外提供保障。传统模式下医院危急值报告流程通过电话传递信息、手工登记,见图1。信息传递时效性、记录准确性有待提升,同时手工登记信息给数据汇总统计带来一定困难。
图1 传统模式下危急值处理流程
3.2 危急值系统流程设计(图2)
图2 危急值系统流程
3.2.1 危急值确认需人工判断 主要指对检查报告危急值的确认。检查报告以文字形式存储,危急值规则库中的关键字仅是疑似提示,不能作为最终判断。对结果由具体数值或阴阳性表示的检验结果可选择直接发送危急值报告或进行人工确认。
3.2.2 检验危急值具有不同提示级别 全院通用的检验危急值对于个别专业科室可能并不适用,其可自行定义危急值规则,相应危急值提示信息具有不同级别,以减少无用危急值报告干扰。
3.2.3 检查检验科室人工介入 临床科室超时未确认危急值信息时需要检查检验科室人工介入,及时与临床科室医护人员沟通。不规范操作将被系统记录作为医疗管理部门质量讲评依据。
3.3 功能设计
3.3.1 概述 采用程序一体化、功能模块化方式设计,通过角色和权限配置决定具体用户可用功能,见图3。
图3 系统功能架构
3.3.2 权限管理 完成用户创建及角色和权限分配。角色决定用户可访问功能界面,权限决定同一功能界面中的操作权限。用户口令认证通过医院现有单点登录认证系统进行。角色分为管理员、检验科室人员、检查科室人员、临床医护人员、管理部门人员等。权限分为浏览、新增、修改。
3.3.3 危急值规则库 建立检查、检验规则库为危急值自动捕获提供支持。检查规则为检查类别-关键字形式,当相应类别检查报告中包含规则中任一关键字时系统提示疑似危急值报告;检验规则为检验项目-数值区间或检验项目-阳性,如血清ca≤1.5mmol/L、血清ca≥3.5mmol/L、痰涂片抗酸染色阳性等[12]。检验规则允许科室自定义,其规则仅对本科室有效。
3.3.4 数据采集 通过预定义数据接口实时采集检查报告和检验结果,将采集数据与规则库进行匹配、获得结果。为提高数据采集性能,采集器采用多线程方式[13],见图4。
图4 危急值数据采集流程
3.3.5 信息发送及反馈 根据所采集数据与规则库的自动匹配结果或人工确认信息,通过消息中间件发送所捕获危急值信息。信息携带主题发送(主题为科室代码、医生用户名)保证仅相关科室或经治医生接收;在信息发送同时系统记录此条危急值检查报告、检验结果及对应患者相关信息。所发送和记录危急值报告以列表方式展示,在规定时间内未被确认的报告会不断闪烁直至报告确认。
3.3.6 信息接收及预警 临床科室端计算机按照订阅主题(科室代码、医生用户名)接收危急值信息。收到信息后计算机任务栏预警灯将不断闪烁提示。预警灯为黄色表示检查结果达到全院通用危急值标准;预警灯为红色表示检查结果达到科室自定危急值标准。
3.3.7 报告确认 具有报告确认权限的临床医护人员可通过点击预警灯打开危急值报告信息确认窗口,进行报告确认需输入用户名和口令。确认报告的同时系统记录确认人及确认时间。
3.3.8 检查危急值主动填报 对检查文本报告是否危急值的判断依靠关键字匹配,可能会出现系统未自动判断出为危急值报告,而没有发出提示的情况。对此检查科室医生可通过此功能主动填报危急值报告。
当前许多家长和学生热衷于学习跆拳道,对于中国的武术只是从电视剧或者电影里有些了解。在武术课上我会明确指出:武术是中华民族灿烂文化之一,在增强人民体质和防治疾病中起到积极作用。并会列举一些事例,让学生们感受到武术的作用。比如:给学生讲述中国近代被称为“东亚病夫”的屈辱,再对比现代在国外很多人都在学习中国功夫和太极拳的现状,李小龙用中国武术创造好莱坞功夫影视的奇迹等,可以用来激发学生们的民族自豪感、责任感和爱国热情,并要求他们从小树立远大的理想,为中华民族的振兴,锻炼身体。
3.3.9 浏览统计 按时间、类别、科室查询相应危急值报告信息并浏览具体患者危急值报告;按时间、类别、科室等信息对危急值报告汇总统计,可查询科室报告按时确认率等管理指标。
3.3.10 系统配置 消息队列服务器地址、检查检验数据库、数据采集频次、数据接口错误后再连接间隔时间等配置通过此功能进行。对所采集危急值信息,利用此功能可配置是直接发送给临床科室还是先经检验科室确认后再发送。仅管理员具有系统配置权限。
3.3.11 数据字典 通过此功能维护科室代码、科室名称、检验项目代码、检验项目名称、检查项目代码、检查项目名称等字典中的数据。
3.4 消息传递相关功能实现
通过消息中间件传递危急值信息是本系统的特点。系统采集到危急值数据后即创建与消息中间件的连接,将数据发送到消息队列,成为信息生产者;临床客户端程序按主题从消息队列中接收数据,是信息消费者。消息队列的内部机制可保障消息的可靠投递[14]。下面以C#脚本为例实现临床客户端从消息队列集群按主题接收信息。
//消息接收
mq = ConfigurationManager.AppSettings.Get("failover:(tcp://127.0.0.1:61616,tcp://127.0.0.2:61616)Randomize=false");
factory = new ConnectionFactory(mq);
connection = factory.CreateConnection();
connection.Start();
session = connection.CreateSession();
destination = new ActiveMQTopic(dept_code);
string[] s = dept_code.Split(',');
myConsumers = new IMessageConsumer[s.Length];
for (int i = 0; i < s.Length; i++)
{
if (string.IsNullOrWhiteSpace(s[i]))
{
MessageBox.Show("主题为空,请核查");
return;
}
myConsumers[i] = session.CreateConsumer(new ActiveMQTopic(s[i]));
myConsumers[i].Listener += new MessageListener(consumerListener);
}
4 应用效果及不足
4.1 效果
基于消息队列中间件的危急值系统明显增强危急值信息传输高效性和稳定性,通过部署主、备两个消息队列服务,可实现危急值信息无中断、无丢失发送。在采集器捕获到危急值信息后,检查科室或临床科室收到危急值预警信息的时间<1s。依托消息队列系统可根据工作流程,选择配置将危急值预警信息先发送给检查科室确认,或直接发给临床科室。同时临床科室端可选择配置预警信息发送给经治医生或科室护士又或医护同时接收。灵活的消息流转流程使系统贴合实际工作情况,医护人员应用系统更加便捷。
4.2 不足
由于系统根据自定义关键字判断电子计算机断层扫描(Computed Tomography,CT)、超声等检查文本报告是否符合危急值标准,判断精准度有待提高,需要人工辅助判断。当系统数据积累到一定程度后可引入机器学习算法对检查危急值报告进行学习[15],将所得知识库应用到文字报告危急值判断上,以弥补目前系统仅依靠文本关键字判断的不足。
5 结语
通过消息队列可实现消息稳定、可靠传输。ActiveMQ消息队列能够较好地适应及时、准确、无丢失传输和记录危急值信息的需求,同时实现危急值流转流程可配置,更加贴合检查及临床科室实际工作需要。基于消息队列的危急值信息系统应用实现危急值报告自动采集、记录、信息发送、信息接收、信息反馈,可有效减少危急值漏报、错报,提高报告信息传递效率,降低对临床医护干扰。管理部门应充分利用系统数据进行危急值相关工作讲评,推动危急值报告制度落实。