基于LABVIEW的统计告警算法设计与实现

  • 格式:doc
  • 大小:619.00 KB
  • 文档页数:6

资助项目:云南省应用基础研究计划项目(2011FZ037) 联系作者: 谢培,男,汉族,硕士研究生,研究方向为:通信与信号处理。Email:xiepei6666@163.com。

基于LABVIEW的统计告警算法设计与实现 余炜, 谢培*,马晶晶,韩强 昆明理工大学信息工程与自动化学院,昆明 650500 摘要:本文提出了一个针对麻醉术中血容量不足的实时智能监测告警算法:统计告警算法。该算法综合了血压、心率、脉量和呼气末二氧化碳浓度等指标,能够提供足够的诊断支持信息,并可随时调节告警灵敏度,通过Kappa分析,在线状态下新算法与麻醉师的诊断结果一致性为76%;并基于LabVIEW平台设计了算法的系统框图和各功能模块。 关键词:智能监测;统计告警算法;LabVIEW;血容量不足 Design and Realization of A Novel Probabilistic Alarm Algorithm with LabVIEW

Abstract:A novel real-time intelligent monitoring alarm algorithm called Probabilistic Alarm Algorithm (PA) is presented. The algorithm integrates four physical indices: blood pressure, heart rate, pulse volume, expired CO2 for hypovolemia diagnosis. It can provide decision support to the anesthetist and can easily adjust the alarm sensitivity. Experimental results through Kappa analysis show a satisfactory level of agreement (up to 76%) between the algorithm and the anesthetist. The whole system flow chart and each module are designed with LabVIEW. Keywords: Intelligent Monitoring; Probabilistic Alarm Algorithm; LabVIEW; Hypovolemia

0 引言 在麻醉术中,对病人血容量不足的检测及诊断是一项复杂而艰巨的任务[1~3]。目前临床小范围使用的麻醉监测机是一种简单的基于阈值的系统,会产生很高的误报率[4~7],以至于实际临床操作中,麻醉师常常会直接将其关闭以免影响手术的进行。鉴于这种情况,开发一种实时的术中监测系统以对血容量不足的诊断提供正确的数据支持具有非常重要的意义[8~10]。 虚拟仪器是一种基于计算机的自动化测试系统。虚拟仪器技术具有开发周期短、通用性强和便于维护升级等特点, 为研究人员节省了大量的时间和精力。虚拟仪器软件开发平台LabVIEW支持各种信号分析功能, 基于LabVIEW 设计的信号处理软件可以作为数据采集系统或测试仪器系统的信号处理部分,且具有可视化强、操作直观、功能修改简便等特点[11,12]。 本文的研究目的是针对麻醉术中可能出现的血容量不足开发并提出了一种称为统计告警算法的统计特征变化诊断法的监测告警系统。通过观测一系列生理统计指标的变化来作出相应的诊断,当统计信号发生异常变化时,系统自动告警,并且通过调整警报门限值可实现系统的灵敏度(容错度)调节。本文在LabVIEW环境下,基于统计告警算法进行了系统设计,该系统界面直观、操作简便,实现了对各生理指标信号进行提取、分析处理、显示以及告警等功能。 1 统计告警算法(probabilistic alarm algorithm,简写为PA) 1.1数据的采集 实验中用到的数据来自一台GE Datex-Ohmeda S/5监测机,S/5监测机的数据经串口传送至计算机。这台监测机可以提供动脉血压波形(arterial pressure,简写为BP)、脉量(pulse volume,简写为PV)以及病人呼气末二氧化碳浓度波形(expired carbon dioxide,简写为ETCO2);实验中的数据采集频率均为100Hz;数据采集对象为正在经历中型或大型外科手术而可能产生绝对血容量不足的患者。 1.2 数据预处理算法 BP、PV及ETCO2的数据传送至计算机后首先经过一个数据预处理算法,以便滤除噪声(包括工频噪声、肌电噪声及其它噪声);数据预处理以1000点(10秒数据)每批次进行。 数据预处理算法包括一个低通滤波器(用Matlab FDAtool设计)和一个基于方差的自适应滤波器。每一批数据(1000点)经过低通后做相对于本批样本均值的归一化,然后计算方差,在方差阈值之外的数据点被抛弃;方差初始阈值根据第一批信号值的方差确定,然后做自适应调整。 低通滤波器的参数如下: 通带频率 PF= 1 Hz; 阻带频率 SF= 2 Hz; 通带波动 PR= 0.6 dB,0.0345 dB(分别针对PV、BP信号); 增益 SG= 100 dB。 BP信号的预处理算法中还包括一个斜率检测算法,以检测并消除信号波形中的伪峰,从而得到较准确的心率(heart rate,简写为HR)。而PV信号在经过前述的预处理后被送入一个峰值检测算法,以计算PV的绝对值。呼吸周期内的血压波动(SPV)则通过得到的BP波形的包络计算得出。 数据预处理算法的验证是通过对比校验数据集的输入和输出结果,判断算法中丢弃的数据是否属于伪迹或噪声来实现的。 1.3 数据分析及告警 PA算法是一种实时的、基于病人体征信号统计特征的算法。PA算法将病人的BP、HR、PV和ETCO2相对于群体均值作归一化,再将四种参数指标表示为各自群体标准差的倍数,作为该病人的实时体征警报水平,根据麻醉师给出的专家规则判断是否告警。 算法数据分析及告警的第一步为计算体征警报水平。实际计算时使用了一个长度为60秒(6000点数据)的移动窗,每次窗口后移10秒(后移1000点的数据),如图1所示。

图1 PA算法信号处理过程移动窗口图示 每10秒计算一回体征警报水平(以下以计算PV警报水平为例)。计算步骤如下: (a)如上所述,每10秒计算一次窗口长60秒的信号值;在这个窗口时段内信号变化值为:

6000iiPVPVPV (1)

(b)计算归一化后的时序PV及PV值: npp

i

i

PVPVPVPVSD







(2)

npp

i

i

PV

PVPVPVSD



(3)

其中PVp、PVp分别为目标群体平均PV值及目标群体平均PV值(不同年龄阶段的病人信号值范围及均值都不同),pPVSD、pPVSD分别为目标群体平均PV标准差及目标群体平均PV标准差[12]。

如图2中一个点的值为(PV=5, PV=2.1),而群体PV均值为6.096,标准差为0.75;群体PV均值和标准差分别为0.01、0.55,则最终信号值为: (PV值 – 群体均值) / 标准差 = (5-6.096)/0.75 = -1.46; (PV值 – 群体均值) / 标准差 = (2.1-0.01)/0.55 = 3.8; (c)绘制PV相对于PV的变化图,见图2。

02468-10-50510PV vS Change in PV normalised with SD

current PVChange in PV

图2 归一化后的PV相对于PV的变化图 (d)计算每一信号点的警报水平; 每一点的警报水平为图2中每一点与原点的距离,如上例,信号点的警报水平为: 228.346.1

= 4.07 SD

结果如图3。 67891011120246810current PVAlarm Level

Current PV vS Alarm Level

图3每信号点的警报水平 其它特征值:BP、HR及ETCO2也是采用同样的算法进行处理。 算法数据分析及告警的第二步是在综合考虑病人的HR、BP、PV和ETCO2指标后(通过平均这4项参数每一点的警报水平),得到病人的血液动态状况估计。绝对血容量不足的临床表现为血压下降、脉量下降以及心率增加,在临床上心率的变化有可能是药物的作用(例如一些血管收缩药物往往导致心博徐缓)、心脏传导失常或起博器的作用,因此单纯考虑心率的变化不能作为血容量不足的可靠证据,只能综合分析血压BP、脉量PV及心率HR、呼气末二氧化碳浓度ETCO2等指标,才能做出正确的诊断。 2 系统设计及实现 整个系统基于LabVIEW的设计采用了状态机的技术,即按照数据传递的过程,系统的控制权从上一个状态转移到下一个状态。系统以模块化的设计方式实现,这样可以随时增加或减少模块,以便后续的开发及验证。整个系统的界面设计结果如图4,(图中AHV DIAGNOSIS表示血容量不足的诊断,分为三个模块,本文讨论的PA算法为第一个模块:Probabilistic;图中FCO DIAGNOSIS为心脏输出下降诊断,不在本文讨论范围)。

图4 系统界面 整个系统被分为四个状态,简述如下: 2.1 系统初始化状态 系统控制权首先交给初始状态,这时所有输入输出文件被载入内存,缓冲中的全局变量及标志参数清零。LabVIEW程序图如图5。

图5 系统初始状态程序框图 2.2数据读取状态 初始化变量后,控制权交给数据读取状态。读取状态首先按PA算法要求检查缓冲中的数据是否大于1000个(10s数据),然后按程序设定的病人年龄读入年龄段数据(如病人年龄为43,则读入40~50岁人口