COBAS生化分析仪接口打印程序的研制

2015-06-01 08:58施俏春
中国医疗设备 2015年11期
关键词:输液泵控件字符

施俏春

南京扬子医院 信息科,江苏 南京210048

COBAS生化分析仪接口打印程序的研制

施俏春

南京扬子医院 信息科,江苏 南京210048

开发COBAS生化分析仪接口打印软件,实现计算机串口与生化分析仪的COM口连接。软件的处理模块对计算机串口传过来的生化仪检验数据进行分析,提取有效字段写入数据库,并与数据库中患者信息关联,实现查询、打印功能。该软件的应用弥补了医院缺乏实验室信息系统(LIS)或在LIS出现故障的情况下生化检验报告不能及时发出的问题。

生化分析仪;实验室信息系统;计算机串口;医院数字化

0 前言

COBAS生化分析仪是被广泛使用的一种全自动生化分析仪器,其自带的打印系统为纯英文界面,使用并不方便。为了解决这一不足,笔者开发了中文打印程序,并且增加数据导出功能以便于后期的数据分析。

1 系统设计思想和开发环境

(1)系统设计思想:采用RS232数据线连接计算机和生化仪的COM口,获取生化仪实时产生的原始数据,对原始数据进行分析,提取有效字段写入数据库,与数据库的患者信息关联后进行查询、打印。

(2)系统开发环境:以Microsoft Visual Studio 2005为开发环境,采用Vb.net为开发工具;数据库采用Access2003。

(3)系统硬件:采用RS232 九针数据线,其2、3脚数据线交叉,5脚直连[1]。

2 系统的主要功能模块和数据库设计

(1)系统的主要功能模块:①标本信息录入模块:录入患者的相关信息、样本接收时间及自动分配样本号;②端口设置模块:对串口的端口号进行设置保存;③通道配置模块:设置维护COBAS生化仪的通道号及对应的项目名称;④数据接收处理模块;⑤查询、打印及数据导出模块。

(2)数据库设计:建数据库(名称为cobas1.mdb),设计3张数据库表:①病人信息表(BRXXK),用于存放接收样本的病人信息,为防止样本号在分配过程中出错,每天采用自动分配样本号的方式分配样本号,并给予修改功能;②数据接收表(MIDDLETEXT),用于接收生化仪传过来的原始数据;③通道配置表(PASSBY1),用于对应通道号和项目名称。

3 软件设计

3.1 数据接收处理模块的软件设计

利用VB.NET工具箱中的serialport[2]控件,对计算机串口传过来的数据进行接收。Serialport控件的串口配置代码如下:

Sub portstart()

Serialport1.portname= COM1 ‘计算机串口号设置为COM1

Serialport1.BaudRate = 9600 ‘波特率设置

Serialport1.DataBit =8 ‘ 数据位设置

Serialport1.StopBits = StopBits.One ‘停止位设置

Serialport1.Parity = None ‘奇偶校验无

End sub

增加定时器控件TIMER[3],interval设置为30000。如果在串口打开的情况下,获取接收缓冲区中数据的字节数,否则弹出窗口提示串口未打开。在缓冲区有字节数的情况下,设置线程暂停100 ms,读取缓冲区中的数据。从工具箱添加文本框receivebox作为数据接收池,将仪器数据读至数据接收池之中。然后对receivebox中的字符进行整理,找出其中的有用字段。

(1)用InSt()函数找出receivebox中第一个正文开始符号STX(start of text)[4]及第一个正文结束符号ETX(end of text)的字符位置,当首字符位置不存在时,跳出搜寻。第一个正文开始符号位置:strpos_STX = InStr(1, receivebox. Text, “┓”);第一个正文结束符号位置:strpos_ETX = InStr(2, receivebox.Text, “┗”)。这两个符号必须同时存在,这两个符号之间的内容代表一个样本号的数据,否则程序跳出处理过程。将第一段样本用mid()函数取出后放入文本框TextBox2中进行处理。

TextBox2.Text = Mid(receivebox.Text, strpos_STX, strpos_ ETX)。获取第一段样本字符后,用剩余字符覆盖receivebox里的字符以除去第一段样本字符。

receivebox.Text = Mid(receivebox.Text, strpos_ETX),用从strpos_ETX位置到文本结束长度的字符进行覆盖。

(2)提取TextBox2中的有用字符,其方法如下:

根据定位符找出样本号:定位符号"|"的位置:strpos_1 = InStr(90, TextBox2.Text, "|");定位符号"^"的位置:strpos_j = InStr(90, TextBox2.Text, "^")。取出样本号值赋给变量xh :xh = Mid(TextBox2.Text, strpos_1 + 1, strpos_j - strpos_1 - 1)。

找出检测时间:定位符号"F"的位置:strpos_time1 = InStr(90, TextBox2.Text, "F")。取出检测时间值赋给变量timer :timer = Mid(TextBox2.Text, strpos_time1 - 17, 14);用剩余字符覆盖TextBox2以去除已经获取的样本号和检测时间字符:TextBox2.Text = Mid(TextBox2.Text, strpos_time1)。

根据定位符找出每一条检测项目的开始符号“R”与结束符号“N”并将它们之间的字符存入TextBox3。

定位符号"R"的位置:strpos_r = InStr(1, Trim(TextBox2. Text), "R");定位符号"N"的位置:strpos_p = InStr(1, Trim(TextBox2.Text), "N")。将"R"和"N"之间的字符取出放入TextBox3中:TextBox3.Text = Mid(Trim(TextBox2.Text), strpos_r, strpos_p - strpos_r + 1)。

找出通道号的定位符后取出通道号并用剩余字符覆盖TextBox3。

定位符号"^"的位置:strpos_j = InStr(1, TextBox3.Text, "^");定位"/"的位置:strpos_xie = InStr(strpos_j, TextBox3. Text, "/")。取出通道号赋值给变量samplename:samplename = Mid(TextBox3.Text, strpos_j + 3, strpos_xie -(strpos_j)- 3)。用TextBox3的剩余字符覆盖TextBox3:TextBox3.Text = Mid(TextBox3.Text, strpos_xie + 2, strpos_p - strpos_xie + 1)。

(3)找出检测结果的定位符,取出检测结果并用剩余字符覆盖TextBox3:定位符号"|"的位置:strpos_1 = InStr(1, TextBox3.Text, "|")。取出结果值赋值给变量result :result = Mid(TextBox3.Text, 1, strpos_1 - 1)。用TextBox3的剩余字符覆盖TextBox3:TextBox3.Text = Mid(TextBox3.Text, strpos_1 + 1, strpos_p - strpos_1 + 1)。

(4)找出计量单位的定位符,取出计量单位并进入下一条项目的读取:定位符号"|"的位置:strpos_1 = InStr(1, TextBox3.Text, "|")。取出计量单位值赋值给变量unit :unit = Mid(TextBox3.Text, 1, strpos_1 - 1)。将TextBox2的剩余字符覆盖TextBox2:TextBox2.Text = Mid(TextBox2.Text, strpos_ p + 10, Len(TextBox2.Text))。

(5)将数据存入数据库表中:Me.MiddletextTableAdapter. InsertQuery(xh, samplename, timer, result, unit)。

这样一个样本读取完毕,进入循环读剩余样本。处理过程犹如贪吃蛇游戏里的蛇,一段一段的消化仪器传过来的字符。全部读取完毕后通过表格控件DataGridView显示表格控件界图。

3.2 标本信息录入模块的设计

为了保证不同的病人在同一天样本号的唯一性,减少录入错误,样本号采用自动分配原则,先求出当日最大的样本号,加1后分配给新录入者。

3.2.1 串口设置模块的软件设计

不同的计算机,串口号也不尽相同,所以本研究提供了一个可以设置端口的界面。将设置好的端口号写入文本port.txt中以备下次开机时读取[5],这样只要设置一次就可以。如要重新配置端口,则先删除以往文本,再添加新文本port.txt,最后写入端口号,保存。在程序加载时,执行以下代码读取端口号:

f = New System.IO.FileStream("port.txt", IO.FileMode. Open,IO.FileAccess.Read);r = New System.IO.StreamReader(f);r.Read(mybuffer, 0, 5);Me.SerialPort1.PortName = mybuffer’将端口号赋值给串口。

3.2.2 通道配置模块的软件设计

生化仪的每一通道对应相关的生化项目,传到计算机上的原始数据里只有通道号,因而需要事前做好项目通道号的对应工作(图1)。

图1 通道与项目对应关系图

3.2.3 报告查询及打印模块的软件设计

用控件datetimepicker做时间t选择器,将datetimepicker的FORMAT属性设置为Custom。Custom format,属性设置为:yyy-MM-dd。这样datetimepicker.text输出短日期。添加查询按钮,输入代码:Me.DataTable1TableAdapter. FillBysearch(Me.Cobas1DataSet1.DataTable1, Me.DateTime Picker11.Value, Me.DateTimePicker12.Value);查询结果填充:DataGridView2。打印分单条打印及批量打印。单条打印通过双击所选条目获取ID号后打印结果,批量打印则采用输入起始ID号和结束ID号的方式获取打印结果。用控件ReportViewer报表设计器[6]设计显示报表。在ReportViewer属性里点击“设计新报表”,产生一个RDLC文件。从工具箱选择列表list,将属性datasetname设置为cobas1DataSet1_DataTable1。打开数据源,将相关字段拉入列表list相应位置,再往list列表中添加表table,在表table中设置“项目名称”、“化验结果”、“单位”字段。这样打印报表就设计好了,在预览界面可以方便的以EXCEL或PDF格式对相关结果进行保存和导出[7-8]。

3 结束语

该系统操作简单,每隔30 s自动接收、处理数据,在工作过程中无需人员过问。此软件既适用于无LIS系统的医院,同时也是对医院在LIS系统故障情况下的很好应用补充。

[1]李丽萍,魏权利.NET中SerialPort类在短信收发软件中的应用[J].微型机与应用,2012,31(21):11-13.

[2]刘东.基于VB.NET的串口通信方法设计[J].电脑知识与技术,2012,8(34):8304-8307.

[3]崔淼,刘瑞新.Visual Basic.Net程序设计教程[M].2版.北京:机械工业出版社,2009.

[4]范逸之,陈立元.Visual Basic与RS-232串行通信控制[M].北京:清华大学出版社,2005.

[5]李江全,张茜,李伟,等.Visual Basic.Net串口通信及测控应用典型实例[M].北京:电子工业出版社,2007.

[6]唐学军,甄廷忠,张琪.RDLC图表报表宽度自适应和多个报表切换显示的实现方法[J].电脑编程技巧与维护,2013,24(10):30-32.

[7]邱李华,曹青,郭志强.Visual Basic.NET程序设计教程[M].北京:机械工业出版社,2014.

[8]杨燕红,马玉桂.基于H IS的静脉输液瓶贴与巡视卡打印程序的设计与实现[J].中国医疗设备,2015,30(1):80-81,89.

落,将其焊好后,启动输液泵,故障排除。

3 结论

输液泵作为专用医疗设备会对医疗过程和医疗结果产生一定的影响,本文讲述的校准方法既能让我们掌握输液泵的性能,又能对输液泵进行现场校准,可以消除医护人员采用量筒标定带来的读数误差。本文总结的输液泵常见故障处理方法可以使医护人员和维修人员及时有效地排除故障,提高对患者的救治率。

[参考文献]

[1]陈玲.医用输液泵校准方法和测量结果不确定度评定[J].检测与测试,2008,6(1):68-70.

[2]商洪涛,徐涛,唐辉.输液泵和注射泵检测技术探讨[J].中国医学装备,2013,10(8):42-44.

[3]杨阳,胡生伟.浅谈注射泵计量校准时常见问题与校准经验[J].计量与检测技术,2014,41(10):46-47.

[4]商洪涛,徐涛,唐辉.输液泵和注射泵检测技术探讨[J].中国医学装备,2013,10(8):42-44.

[5]杨虎,杨国忠,胡逸民.临床医学工程教程[M].北京:人民教育出版社,2007:513-516.

[6]程起元,李广义,李远洋,等.TE-112型输液泵故障分析[J].中国医疗设备,2014,29(7):159-159,182.

[7]王功华,赵伟,袁园.ATOMP-600输液泵常见故障及检修[J].设备运行与保障,2011,26(4):112-116.

Research and Development of a Printing Software for Interface w ith COBAS Biochem ical Analyzer

SHI Qiao-chun
Department o f Information, Nan jing Yangzi Hospital, Nanjing Jiangsu 210048, China

A printing software was developed to interface w ith COBAS biochem ical analyzer, which realized the connection between the computer serial port and biochem ical analyzer COM port. The processing module of the software was used to analyze the test data of the computer serial port, extract the effective field to w rite into the database and connect w ith the patients’ information in the database so as to realize functions of query and printing. Application of the software made up for the lack of laboratory information system(LIS)or the failure to issue the LIS biochemical test report in a timely manner.

biochem ical analyzer;laboratory information system ;serial port;hospital digitalization

TP311.52

A

10.3969/j.issn.1674-1633.2015.11.030

1674-1633(2015)11-0095-03

2015-03-16

2015-07-13

作者邮箱:13952044797@139.com

猜你喜欢
输液泵控件字符
两款输液泵的输血安全性评估
基于.net的用户定义验证控件的应用分析
基于专利分析的输液泵在战创伤救治中应用的研究进展
集束化管理策略在输液泵安全管理中的应用
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
关于.net控件数组的探讨
1例百特输液泵持续滴注过程中内囊自行破裂的护理