段振刚,韩明璐,廉小亲,张晓力
(北京工商大学,计算机与信息工程学院,北京 100048)
检测血栓与止血从传统的手工方法发展到全自动血凝仪[1],从单一的凝结法发展到免疫法和生物化学法[2],在形式和手段上都有了日新月异的变革。然而,目前大部分血凝仪都是由国外研发,其高程度的自动化功能、多样化的检测方法、复杂的检测原理致使血凝仪的价格昂贵,不利于普及。而对诊断人体凝血疾病所需凝血时间的快速、准确、实时检测,迫切地需要我们开发出一种具备以上功能,成本又可以被普遍接受的血凝仪。本文对血凝仪参数检测系统的上位机软件进行了设计,采用凝结算法得到了凝血时间,为血栓与止血参数的进一步计算打下了基础,给全自动血凝仪软件的实现提供了可靠地解决方案。
全自动血液凝血分析仪,由三层架构组成[3]:上位机PC管理层、主控单元协调层、下位机控制层。系统总体设计框架如图1所示。
图1 系统总体设计框架
上位机PC 管理层,即使用计算机作为最高层的管理者,管理主控单元和下位机。要想使上下位机成功通信,必须为其制定标准统一的通信协议,要求数据传输必须遵守协议,实现数据的快速、精准的采集。对于实验涉及到的温度控制、光强检测以及控制机构所产生的数据,按照文本文档的格式将其存储,为之后的数据处理做好铺垫。通过搭载C#程序语言设计平台,来创建整个血凝仪的工作界面,使血凝仪的工作得到可视化。最后根据实验所需检测的参数,按照凝结算法,得到结果。同时上位机还能够保存历史检测数据和检测曲线图,方便用户查阅。上位机和打印机相连,可打印数据库中保存的数据。
主控单元协调层,是整个系统框架的核心部分,它是上位机与下位机互相通讯的纽带。主要负责处理上下位机数据和信号的正常通讯。使用主控单元的创新之处在于它能够减少上下位机的负担,同时提高上下位机之间的工作效率。而主控板和下位机之间采用的是PCI转CAN的方式通信,更能提高通信速率。
下位机控制层,根据主控单元发出的协议代码,在比对之后,通过使用步进机来驱动机械臂等运动,使对应的功能成功启动,完成相应的操作。
根据系统总体设计框图,血凝仪的通信即有两部分组成。包括上位机PC与主控单元的通信和主控单元与下位机的通信。PC机首先将命令通过以太网网口传输,主控单元在接到PC机发来的进样本、加试剂、补充反应杯、样本试剂检测、分析样本的命令后,对其进行分解,进而通过CAN 总线分解命令发给下位机各相关模块[4]。下位机各相关模块执行完命令后,再将执行的最终结果回馈给主控单元,进而反馈给PC机。下面着重制定上位机与主控单元的通信协议。具体通讯协议见表1。
通过制定协议代码,可以成功将PC 机与主控单元握手,实现上下位机的实时通讯。例如,当上位机发出0301的命令,根据通讯协议,主控单元分析解析之后,样品针到第一个样本位置吸取样本到相应的反应杯中;当发出0101命令,机械抓手将加入样本的比色杯移到第一个孵育位置孵育一定时间。
上位机软件,通过以太网串行接口与主控单元通信,进行数据的存储与显示。本上位机软件是在Visual Studio 2008.NET编程环境中使用C#语言编程完成。数据库模块采用广泛使用的SQL Server 2005来存储大量数据[5]。
表1 PC机与主控单元通讯协议
上位机主要包括如下功能:设置试剂、数据处理、质量控制、生成曲线、设置设备等。可以直观反应上下位通讯结果;实时显示每个检测实验的步骤;用曲线形式实时显示所有或某些时间节点的检测数据,并结合数据库实现数据的存储和调用;上位机功能模块设计如图2所示。
数据库采用SQL Server,利用C#中的ADO.NET 方式实现数据输入、查询、报表生成、打印输出等[6]。数据库中根据实验需要建立五张表即样本表tb_Sample、分析参数表tb_AnalysisParameter、试剂表tb_Reagent、试剂设置表tb_ReagentSet、流程表tb_Process。
样本表tb_Sample中设置了时间Time、条形码Barcode ID、样本姓名SampleName、性别Gender、年龄Age、分析参数AnalysisParameter、实验结果Result、进度ProgressBar、标志位kuFlag字段。
又因为每个病人所需分析参数不同,故建立分析参数表tb_AnalysisParameter,列出所有血凝仪需要完成的分析参数。供其它表中分析参数字段与之相关联。
各个分析参数所需试剂亦不同,又建立了试剂表tb_Reagent,设置试剂的ID号、试剂名称ReagentName、分析参数AnalysisParameter、试剂制造商ReagentManufacturers、试剂批次ReagentBatch 字段,与试剂设置表tb_ReagentSet相关联[7]
在试剂设置表tb_ReagentSet中,设置字段记录试剂位置ReagentLocation、试剂名称ReagentName、最大容量Max_volume、剩余容量Re_volume、分析参数Analysis-Parameter、标志位kuFlag。
图2 上位机功能模块设计框架
在流程表tb_Process中,设置流程ID号ProcessID、样本姓名SampleName、分析参数AnalysisParameter、完成一整套流程所需要的各个步骤、标志位kuFlag。便于查看某一个样本流程具体进行到哪步,掌握整体分析的进度。
C#与SQL Server连接,目的是根据病人需要,调用需要完成的分析参数以及该参数所需试剂,进而完成整个分析步骤。另外将从下位机读取上来的数据按文本文件格式存储在本地机中,并在数据库表中建立路径连接,实现数据的整体调用[8]。
在通讯设计上,采用C#的Socket通信原理建立主控单元和PC机的连接[9]。客户端确定要连接的服务器的主机名和端口,然后发送连接请求到服务器,并等待服务器的回馈信息。当服务器端侦听到来自客户端的连接请求时,向客户端发送收到连接请求的信息,客户端收到服务器的SYN+ACK 包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,完成三次握手。在三次握手之后,客户端与服务器开始传送数据。当完成通信后,关闭Socket连接。
实验流程是上位机软件设计中的重点部分,也是从检测血液到得出结果的重要体现。当采集到病人血液后,开启血凝仪进行初始状态自检,没有检测到错误信息后,检查反应杯数目是否足够完成此次实验,若不足立即补充。接着将样本信息录入数据库保存,主程序开始载入。然后按步执行试剂冷却、分配、检测试剂,分析样本。当有外部某种因素产生中断或提示是否分析紧急样本时,提示用户选择是否中断分析,用户选择后,执行相应动作,最后通过使用凝结法,得到血液数据,完成对病人血液的检测。实验结构流程如图3所示。
在血凝仪检测系统中,采用凝结法来处理数据。
图3 实验流程结构
3.5.1 检测基本原理
将刚加入凝血试剂但是凝血过程尚未开始时刻的散射光光强度的水平定义为0%,而凝血过程完全结束时的散射光光强度定义为100%。散射光光强度水平到达预定值所需的时间均可以在凝血曲线上查出。将这定义为凝血时间。(在图4左中凝血检测点设置为50%)。通过这种方法,只要发生很小的散射光光强度变化,就可以测定凝血时间[10]。
在仪器内部存有各种标准曲线,反映了某种医学指标(活性率)与凝血时间的函数关系,如图4右所示。因此在算出凝血时间后,只需在该曲线上进行查表操作,即可得到最终欲测的指标。
图4 凝血过程曲线、凝结法标准曲线
3.5.2 算法实现
检测系统采集下位传来的数据,获得凝血曲线。将开始检测时的ys值(采样值)定义为散射光最弱状态,将检测过程结束(即化学反应结束)时的ys值定义为散射光最强的状态。分别找出散射光最弱状态下最后一个ys值所出现的时刻和散射光最强状态下第一个ys 值出现的时刻,这两个时间点的中点距零点的时间即为凝结时间。算法流程图如图5所示。
图5 算法流程
算法原理可以简单叙述为:若某个ys 值比它后面的第N1个值小r1,则找到起始时刻t1;若某个ys值比它前面的第N2个值大r2,则找到终止时刻t2,利用t1和t2容易算出凝血时间tcoa。
另外,为避免从下位采集到的数据出现坏点,在获得凝血曲线之前对数据进行批量平均处理。从测得的第一个数据开始,三个一组求平均数,作为凝血曲线上的一点。若相邻数据点间的绝对值大于该段允许的范围,则剔除坏点并记录坏点信息以备查询。
血凝仪的数据处理所需参数包括温度采集、样本臂、机械臂、试剂臂的动作反应回馈、以及光强参数的检测。温度采集涉及到实验环境温度、相对湿度、试剂针头、试剂保存区域温度。下位机通过温度传感器将检测到的温度传给上位机,并实时显示。一旦温度超过限定范围,将停止实验报警提示。图6为实时温度显示。
图6 实时温度显示
在实验中,试剂、样本和反应杯的位置是固定的,根据不同的样本实验项目不同,需要移动试剂臂、样品臂和反应杯,记录各个臂的位置以及动作反应回馈。光强参数的检测包括了8路散射光源和4路透射光源。将透射光的强度和散射光的吸光率实时传到上位机,计算各个实验参数值并绘制曲线。通过对采样数据的计算,得出被测样本的凝血时间。并通过预存在主机中的标准曲线,计算出欲测的医学指标。图7为散射光强度的凝结过程曲线。
图7 散射光强度的凝结过程曲线
本文基于C#对血凝仪参数检测系统的上位机软件进行了设计,按照新型的三层架构给出了血凝仪的总体构成,根据制定的上下位机通讯协议实现了数据的实时传输以及曲线显示,采用凝结算法得到了凝血时间,为血栓与止血参数的进一步计算打下了基础,给全自动血凝仪软件的实现提供了可靠地解决方案[11]。测试结果显示,该软件能够对实验参数进行检测,界面友好。
但是,由于高度的自动化功能,多种的检测方法,以及检测原理的复杂性,血凝仪项目目前仍处于研发阶段。因此,本文只涉及到所有功能的一部分。但它为今后的研究和发展奠定了一定的基础。
[1]HUANG Zuyong.The principle,maintenance,and routine maintenance of the CA1500 automatic coagulation analyzer[J].China Medical Equipment,2010,25(8):119-120(in Chinese).[黄祖勇.CA1500全自动血凝仪原理、维护保养及 常见故障维修[J].中国医疗设备,2010,25(8):119-120.]
[2]LI Meizhu,CHEN Yankun.The homogeneous enzyme enhanced immunoassay monitoring valproic acid concentrations and the clinical applications[J].Laboratory Medicine and Clinical,2011,8(24):2959-2963(in Chinese).[李美珠,陈棪焜.均相酶增强免疫法监测丙戊酸浓度及临床应用[J].检验医学与临床,2011,8(24):2959-2963.]
[3]YU Jiatan,SHAO Baomin,HUANG Baoxiang,et al.Digital qingdao urban construction archives of threetier system based on.net 2.0[J].Computer Technology and Development,2010,20(7):60-64(in Chinese).[于家潭,邵宝民,黄宝香等.基于.net 2.0三层架构的青岛市数字城建档案馆[J].计算机技术与发展,2010,20(7):60-64.]
[4]WEI Henghua,CHEN Genjie,ZHANG Yubin,et al.The design of Stepper motor control system based on CAN bus[J].Automation and Instrumentation,2009(1):29-32(in Chinese).[魏衡华,陈根杰,张玉斌,等.基于CAN 总线的步进电机控制系统的设计[J].自动化与仪表,2009(1):29-32.]
[5]JIANG Tuo,ZHANG Jianping.The PC software design of data acquisition system based on C#[J].Electronic Test,2009(9):58-61(in Chinese).[姜拓,张剑平.基于C#的数据采集系统上位机软件设计与实现[J].电子测试,2009(9):58-61.]
[6]JIANG Wei,LAI Qinggui,QIN Ling,et al.The research and application of data access technology based on ADO.NET[J].Microcomputer Information,2010,26(10-3):141-143(in Chinese).[蒋薇,赖青贵,秦玲,等.基于ADO.NET 数据访问技术的研究和应用[J].微计算机信息,2010,26(10-3):141-143.]
[7]YU Mei.The application of SQL Server query statement in the statistics medical record program[J].Chinese Journal of Hospital Statistics,2008,15(1):94-96(in Chinese).[喻玫.SQL Server查询语句在统计病案程序中的应用[J].中国医院统计,2008,15(1):94-96.]
[8]CHENG Jie.The software design of lower power consumption wireless network temperature monitoring system based on C#[J].Computer age,2010(9):22-24(in Chinese).[成 洁.基于C#的极低功耗无线网络温度监测系统的上位机软件设计[J].计算机时代,2010(9):22-24.]
[9]ZHOU Kun,FU Desheng.Network data transmission and its security based on Windows Socket[J].Computer Engineering and Design,2007,28(22):5381-5386(in Chinese).[周坤,傅德胜.基于Windows Socket的网络数据传输及其安全[J].计算机工程与设计,2007,28(22):5381-5386.]
[10]PENG Liming,WANG Hongli,YAN Cunliang.Automatic coagulation analyzer[J].Thrombosis and Hemostasis,2006,12(4):188-192(in Chinese).[彭黎明,王鸿利,颜存粮.全自动凝血分析仪[J].血栓与止血学,2006,12(4):188-192.]
[11]WANG Haiyan.The development of database application system under the three-tier based on C# .NET[J].Computer Technology and Development,2012,22(6):78-81(in Chinese).[王海燕.C#.NET 下三层架构数据库应用系统开发[J].计算机技术与发展,2012,22(6):78-81.]