基于树莓派的无线病床呼叫系统研究与实现引言床边医疗与护理是医疗质量安全的关键环节,是医疗过程管理的核心[1]。实时、快速地将床边患者的呼叫信息传递给医护人员,并及时处理,是保障患者安全,减少医疗事故,提高医护人员工作效率的重要举措[2-3]。作为患者与医护之间直接通讯的载体——病床呼叫系统,显得尤为重要。现在广泛使用的病床呼叫系统多以有线方式连接,具体实现方案有以下两种。 (1)采用数字电路的逻辑门实现译码-编码电路,完成信号传输[4]。该类电路稳定可靠、实时性好,但系统扩展性较差、电路由大量的逻辑单元组成,实现复杂、不便于排查故障。 (2)采用二、四线制方式传输信号,如RS485或MBUS总线[5]、或电力载波方式[6]传输信号,各个模块组建“星型-集线器”拓扑网络,通过微处理器(或单片机)将信号编码成特定格式的协议传输[7]。该设计的缺点是维修不便,当某个模块短路,会导致整个科室的呼叫系统瘫痪;并且,查找短路模块只能逐一断路排查,费时费力。 另外,有线呼叫系统还存在以下隐患:当科室的病床发生动态调整时候,有线呼叫系统均需要对所有床号进行逐一重新编排,过程复杂。呼叫系统各个运行独立的时间模块,会有累积误差,造成与护士站电脑时间不一致。针对病床呼叫系统存在上述不足,我们提出了一套基于树莓派(Raspberry Pi,RPi)和ZigBee自组网的无线病床呼叫系统。 1 系统框架设计本文提出的无线病床呼叫系统(图1),由主机、副屏、过道屏、门灯、病床呼叫终端和厕所应急终端六部分组成,各部分通过无线传输更新状态。当病床端触发呼叫时,病床呼叫终端将信号发给主机,主机接收到数据,然后根据智能寻址逻辑判断,改变对应病房的门灯状态,将呼叫信息依次发给副屏,过道屏,实现整个呼叫的过程。厕所应急终端亦有上述类似的传输链路,不同点在于厕所应急终端呼叫的优先级高于病床终端呼叫,厕所应急终端呼叫时会优先显示并临时屏蔽病床终端呼叫,直至厕所应急终端呼叫确认后。 图1 无线病床呼叫系统 2 核心算法设计为了实现无线病床呼叫系统的动态调整床号便捷,呼叫系统时间一致,信号传输稳定可靠,我们应用RPi作为主机,在RPi上设计并实现了智能编址-寻址算法、时间同步算法和信号碰撞重传机制。 2.1 智能编址-寻址算法无线病床呼叫系统的关键问题包括主机如何分辨呼叫请求来源于哪个终端以及主机如何给指定终端发送状态更新命令。为了解决上述问题,本设计采用RPi作为主机,通过运行Linux内核的操作系统,设计了一种智能编址-寻址算法。智能编址-寻址算法包括编址算法和寻址算法两部分,编址算法用于主机识别呼叫请求来自哪个终端,寻址算法用于主机给指定终端发送命令。 在设计中,以ZigBee的无线模块地址为基础,定义了一套“无线模块地址-房号-床号-门灯地址”字典(1-房号、0-开始床号为1、3-结束房号为4、0x3001-门灯地址),在软件编码中,将每个病房的房号、床号和门灯地址进行的绑定。这个过程实现编址算法,确保了每个病床呼叫终端和厕所应急终端的呼叫请求能够被主机识别。当某病床触发了呼叫(或结束呼叫),呼叫终端会将数据按照一定格式打包发给主机,主机通过起始地址和通道数,计算出床号,更新GUI界面。然后,索引到所在的房号,将房号和床号发送到过道屏和副屏同步显示。最后,汇总当前的厕所应急呼叫和同一病房的其他床号状态,更新对应的门灯状态。 智能寻址算法是指主机给指定终端发送命令的寻址实现过程,该算法同样基于“无线模块地址-房号-床号-门灯地址”字典列表。寻址实现过程:主机通过遍历字典列表中定义的起止床号,当检索到目标床号介于开始床号和结束床号之间,将该字典的主键保存,并根据开始床号,计算出通道数。同时,通过主键可以索引到目标病床的房号和门灯地址。将房号和床号发送到过道屏和副屏同步显示;最后,汇总当前的厕所应急呼叫和同一病房的其他床号状态,更新对应的门灯状态。 智能编址-寻址算法的引入,极大地改善了传统设计中的单独烧录固化程序编址或床边-护士站多次按键编址等复杂操作,实现整个系统的编址,并能简化安装过程中的房号与床号配置。在动态调整床位的过程中,仅需将调整床号所使用的ZigBee无线模块地址修改为新的“无线模块地址-房号-床号-门灯地址”编址列表。同时,兼容同一病房大于四个床号的情况,仅需将房号和门灯地址设为与前四张床一致。智能编址寻址模型解析图如图2所示。 图2 智能编址寻址模型解析图 2.2 时间同步算法为了确保无线病床呼叫系统时间准确,并与HIS的系统时间一致,我们设计了时间自动同步算法(图3)。无线病床呼叫的系统主机开机后,主机发送请求同步指令给护士站电脑获取HIS系统时间,并将获取的时间设定为本地时间。而且,同步发给过道屏和副屏,确保了系统各个终端时间的一致性和准确性。主机端的同步算法可以设定某个时间点自动同步,定期消除了各个终端运行的累积偏差。 图3 时间同步算法流程图 注:a. 主机端;b. 终端。 2.3 信号碰撞重传机制病床呼叫系统一般需要连接几十张甚至上百张病床。当多个终端同时触发呼叫请求时,极易造成信号碰撞的问题,而信号碰撞将导致呼叫信号丢失或遗漏。相比RF无线传输,ZigBee协议的底层实现了CSMA载波侦听多路访问协议[8],其原理为发射终端在发送数据前先进行载波侦听,以确认当前使用的信道未被占用,当侦听到有其他终端在发送数据时会延时等待,从而有效降低发生冲突的可能性。 为了使主机稳定可靠的响应病床端的呼叫信号,我们基于CSMA载波侦听多路访问协议,将呼叫终端进一步封装为一种有反馈信号的呼叫模式,即半双工握手传输机制。当病床端有呼叫信号时,病床端的呼叫终端会按照一定频率持续发送呼叫信号,直至主机端反馈回信号后,才停止发送呼叫信号,并将呼叫状态标识灯点亮。同样,病床端发出结束信号的时候,根据同样的反馈原理,确保主机和终端状态一致。基于反馈机制的半双工通信模型如图4所示。 图4 基于反馈机制的半双工通信模型 3 功能模块实现3.1 无线传输设计现有的无线病床呼叫系统多采用射频RF技术传输信号,射频芯片的工作频率为315 MHz,射频芯片通常频段与许多RF设备频率相同,较容易产生同频干扰[9-10]。当同时有多个呼叫器进行呼叫时会产生信号碰撞、造成呼叫信号丢失、疏漏病房报警[11]。同时,RF传输方式的组网能力差,当距离超出点对点传输的最大距离时,会发生数据丢包的问题、无法确保数据传输的可靠性。 ZigBee技术是一种新兴的近距离、低功耗、低成本、低数据率、低复杂度的双向无线通信技术,它是基于IEEE802.15.4标准开发的无线协议。近年来,ZigBee技术在无线传感领域应用非常广泛[12-13]。基于CC2530的ZigBee模块内部已经集成了相关的协议。根据设计需求,我们采用点对点方式设计的上述数据传输格式包括:FE-包头,07-数据长度,80-发送端口,82-接收端口,16位目标地址-地址低位/地址高位,BedNo-1字节,RoomNo-1字节,CmdType-1字节,FF-包尾。 一帧完整的数据包,共长10字节。其中,发送端口1字节,接收端口为1字节,目标地址为16位二进制,对应2字节,床号和房号位各1字节,命令类型1字节,上述共计7字节,为数据长度;包头、包尾和数据长度各1字节。 发送端口和接收端口,可用于区分不同类型的信号,如呼叫信号,或者时间同步信号等。 16位目标地址为接收端ZigBee模块地址。在接收端,16位目标地址自动填充为发送方的ZigBee模块地址。解包后,根据ZigBee模块地址,判断数据是从哪个终端发出的。 3.2 呼叫终端设计呼叫终端是本设计中数量最多的模块,分为病床呼叫终端和厕所应急终端两类。病床终端是安装在床旁的呼叫终端,包括无线收发模块,单片机最小系统,电源模块和按键面板及手柄组成。单片机内部的定时器中断扫描四个通道的按键状态,直至找到一个下降沿,即当前状态为低电平,前次为高电平,则认为一次有效按键触发。任何一次有效的按键,结合当前是否呼叫的状态,编码打包发给主机进行决策。 厕所应急终端亦采用类似病床终端的设计思路,不同在于按键手柄换成了具有防水功能的拉线开关。这样的设计既考虑了厕所的潮湿环境,又充分考虑了病人的便利性。 本设计中,我们在Altium Design软件中完成了呼叫终端PCB板设计如图5所示。 图5 PCB模块设计与实物图 对于病床呼叫终端,我们设计了一种能同时接4张病床的呼叫终端。根据实际的布线难度,可以选择安装1~4个按键手柄到床旁。而且,大于4张床的病房,也可以由多个呼叫终端来完成布线。这样设计有三个优点:① 灵活性大,完全从布线施工角度设计,提高了实际施工的效率;② 能减少终端的数量,直接降低了系统的成本;③ 能提高系统的稳定性,对于自组网的ZigBee网络而言,每个节点既承担着数据发送的功能,还承担着路由的功能,当节点过多,会导致消耗较大的资源在路由功能上,更有甚者会影响数据传输的可靠性。 考虑到系统的兼容性,无线病床呼叫系统的门灯、过道屏、副屏硬件电路,均复用了上述PCB板,缩短了整个设计的研发周期。 3.3 主机设计本设计将开源硬件平台的RPi作为无线病房呼叫系统主机。RPi由RPi基金会设计,表现为信用卡大小、廉价、基于ARM处理器微型计算机、能运行Linux系统以及包括HDMI、USB接口、以太网端口和TF卡等接口[14-15]。目前,RPi已广泛应用于智能家居、物联网、多媒体、医疗等领域[17-18]。在本设计中,将RPi的HDMI接口接入触屏显示器,不需要额外的电路即可完成显示和交互,操作简单,能输出音频。 无线病房呼叫系统主机采用跨平台的Python语言来实现整个软件架构。Python是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序语言。通过安装pyserial模块,调用内部封装的API接口,可以读写串口。主架构采用了PyQt内部多线程技术[19],一个线程负责通过Pyserial实时读取无线模块接收的数据(模块接收后存入串口缓冲区),进行解包;一个线程负责将更新GUI。GUI界面显示实时接入的床号和状态、系统时间以及最近三次的呼叫信息。整个开发调试过程分为三步:① 在Windows平台完成相应的开发调试;② 在运行Linux平台的RPi主机端配置好相应的库文件;③ 在RPi主机上搭建Samba服务器,将Windows平台调试正常的代码移植到主机端,并运行。我院无线病床呼叫系统的触屏界面如图6所示。 图6 无线病床呼叫系统的触屏界面 基于RPi的主机,数据接收与解包、病床呼叫与厕所应急呼叫优先级判断以及实时呼叫信息状态更新至副屏、过道屏和门灯、声音提醒、呼叫记录存储和走廊时间同步功能均被实现。本系统能在呼叫触发瞬间记录下相关信息,并写入相关文本文档中,一方面为医疗行为溯源提供了可参考性,另一方面可以量化呈现护理的工作量,统计呼叫的次数与处理时间等,提升医疗服务水平。 4 系统测试与结果4.1 自组网络测试为了测试无线病床呼叫系统的各个模块连接情况,我们在网络中加入了一个嗅探节点0x1000(如图7中黑色标识所示),通过网络拓扑软件绘制出各个模块的连接(图7)。测试发现以下两点:① 各个节点均加到网络中,无孤立节点;② 各个节点能通过自组网功能,实现全部节点可靠连接。 图7 系统的网络拓扑图(黑色为嗅探节点) 4.2 功能测试根据功能需求,我们从呼叫功能、时间同步、传输距离与可靠性等方面,制定了一套测试方案,重点测试其呼叫功能(表1)。 测试结果表明:在150 m范围内,无线病床呼叫系统能稳定可靠传递呼叫信号,各个模块正常联动,符合设计预期。连续测试72 h,主机、过道屏、副屏三者的显示时间与HIS时间累计偏差均小于1 min,时间准确一致,同步功能正常。 5 结论本文详细介绍了基于RPi和ZigBee的无线病床呼叫系统,包括系统组成、核心算法设计、功能设计和系统测试等。本研究创新点有: ① 采用ZigBee自组网技术传输信号,解决了传统呼叫系统因短路造成整个网络瘫痪的问题;② 将开源硬件RPi应用于呼叫系统的主机,设计了一种智能编址-寻址算法,通过软件算法代替人工的编排床号,提高了系统的维护便利性和床位可扩展性;③ 设计了时间同步算法,确保整个系统各个终端的时间一致性和准确性。与目前广泛使用的病床呼叫系统相比,该系统的优势是无线化、智能化。同时,采用基于模块化的开源硬件RPi作为主机,也是一种低成本的实现方案。 无线病床呼叫系统已于2018年6月份在我院的感染科上线,替换了科室的有线呼叫系统,试运行稳定可靠;并已陆续在肝病科、产科二区等临床科室完成安装调试。无线病床呼叫系统安装效果图如图8所示。实践表明,该系统具有成本低廉、可靠性好、稳定性高、布线方便、易于维护等优点,一方面解决了科室动态调整床位编排复杂、时间不同步等问题,另一方面,提升医疗工作效率和服务质量,保障了医疗安全,有一定的推广意义。 同时,该系统的研制是物联网技术在医疗行业应用的一次尝试,为后续开发急救生命支持类设备定位,输液报警系统管理[20],设备开机率监测等奠定了基础。将进一步推动医疗设备和医疗服务的信息化、自动化、智能化的发展。 表1 测试报告(部分) images/BZ_108_220_342_2241_401.png病床终端触发呼叫 □√正常□异常病床终端触发取消呼叫手柄上指示灯亮,主机收到请求,界面更新并伴有音乐提醒,呼叫请求能同步到副屏、过道屏闪烁,门灯亮黄灯手柄指示灯亮,主机、副屏、过道屏都正常显示呼叫请求,音乐提醒,门灯亮黄灯□√正常□异常主机确认病床终端的呼叫功能手柄上指示灯灭,主机收到请求,界面更新并关闭音乐提醒,副屏、过道屏显示当前时间,门灯灭手柄指示灯灭,主机、副屏、过道屏均正常,音乐关闭,门灯灭□√正常□异常厕所应急终端触发呼叫通过触摸屏操作,界面更新并关闭音乐提醒,副屏、过道屏显示当前时间,门灯灭,手柄上指示灯灭主机、副屏、过道屏均正常,音乐关闭,手柄指示灯和门灯均灭images/BZ_108_677_787_679_789.png基本功能□√正常□异常厕所应急终端触发取消呼叫拉线面板指示灯亮,主机界面更新并伴有音乐提醒,呼叫请求能同步到副屏、过道屏闪烁,门灯亮红灯拉线面板指示灯亮,主机、副屏、过道屏都正常显示呼叫请求,音乐提醒,门灯亮红灯□√正常□异常主机确认厕所应急终端的呼叫功能拉线面板指示灯灭,主机界面更新并关闭音乐提醒,副屏、过道屏显示当前时间,门灯灭拉线面板指示灯灭,主机、副屏、过道屏均正常,音乐关闭,门灯灭通过触摸屏操作,界面更新并关闭音乐提醒,副屏、过道屏显示当前时间,门灯灭,拉线面板指示灯灭主机、副屏、过道屏均正常,音乐关闭,拉线面板指示灯和门灯均灭□√正常□异常优先级测试病床终端和厕所应急终端同时触发,优先显示厕所应急终端(分多个测试样例,验证过道屏、副屏、门灯对两种类型呼叫请求的优先级判断)厕所应急终端呼叫时候,屏蔽病床终端的呼叫请求。门灯优先显示红灯,过道屏和副屏优先显示。□√正常□异常多个终端触发呼叫(≥3个)主机能同时响应,播放音乐提醒,屏轮询显示副屏、过道屏轮流显示呼叫情况,对应病房的门灯亮□√正常□异常时间同步功能 开机能自动同步时间,开机后也能手动同步时间□√正常□异常时间误差 持续72 h,累积误差≤1 min 主机时间与HIS时间、过道屏或副屏时间,累积偏差<1 min主机开机自动同步时间;手动同步时间正常其他功能□√正常□异常传输距离测试触发50次以上,主机和终端、过道屏、副屏、门灯等均能同步响应,无丢包现象,距离≥100 m距离为150 m,三层墙体的负压病房,连续测试50次,护士站均能收到呼叫信号,并同步到其他终端□√正常□异常 图8 无线病床呼叫系统安装效果图 [1] 陈一君.基于物联网技术的数字化病床系统研究[J].中国数字医学,2014,9(9):102-104. [2] 陈玲,侯诗箐,任博,等.医疗物联网在病区临床护理中的应用[J].医学信息学杂志, 2018,39(2):43-46. [3] 姚文坡,周昂,王娣,等.呼叫器在医院病房合理配置的研究[J].中国医疗设备,2014,(9):87-89. [4] 贺娟,熊飞峤,袁颂岳.病房呼叫系统的设计与研究[J].微计算机信息,2012,28(10):266-267. [5] 魏莱.医院病房语音呼叫系统设计与实现[D].成都:电子科技大学,2015. [6] 熊平,雷英俊,徐敏,等.基于低压电力线的病房呼叫系统[J].医疗卫生装备,2009,30(11):4-6. [7] 王广德,王立忠,刘洪波,等.医用局域有线呼叫系统的硬件设计[J].吉林师范大学学报(自然科学版),2010,31(2):113-115. [8] 刘闯,惠晓威.基于CSMA的无线射频识别防碰撞算法[J].计算机工程,2011,37(18):284-286. [9] 张灵芝,吴国华,张群,等.可移动无线病房呼叫器的设计与制作[J].中国实用护理杂志,2016,32(z1):88-89. [10] 孙黎明,李雷雨,廖乐,等.基于单片机的无线呼叫系统研究[J].福建电脑,2016,32(6):49-50. [11] 王国罡.无线病房呼叫系统主控机与便携式应答器的设计与研究[D].昆明:昆明理工大学,2011. [12] 吴超,江贵平.基于ZigBee的便携式睡眠监测仪设计与实现[J].计算机工程与设计,2014,35(2):478-483. [13] 王世平,王志武,颜国正.基于ZigBee的可穿戴式病房无线监护系统[J].传感技术学报,2015,28(10):1563-1569. [14] 张伟,王宜怀.基于Raspberry Pi 3的智能家居系统设计[J].单片机与嵌入式系统应用,2018,18(2):43-46. [15] 王琳,雷长海,杨勇骥,等.一种显微镜视频无线示教装置的设计[J].中国医疗设备,2018,33(12):91-93. [16] France P.Rasperry Pi le guide de l’utilisateur[J].Pears Schweiz Ag,2013. [17] Gao L,Wang ZX,Zhou JL,et al.Design of smart home system based on zigbee technology and R&D for application[J].Energy Power Eng,2016,8(1):13-22. [18] Valliappan CA,Balaji A,Thandayam SR,et al.A Portable real time ECG device for arrhythmia detection using Raspberry Pi[A].MobiHealth 2016: Wireless Mobile Communication and Healthcare[C].Milan:Springer-Cham,2016,177-184. [19] Summer field M.Rapid GUI Programming With Python and Qt:The Definitive Guide to PyQt Programming[M].Jersey:Prentice Hall,2008. [20] 吴鹏,俞卫林,薛以锋.医护患智能呼叫信息系统的设计与实现[J].中国医疗设备,2015(3):76-78. Research and Implementation of Wireless Bed Call System Based on Raspberry Pi |