施俏春
南京揚子醫院 信息科,江蘇 南京210048
COBAS生化分析儀接口打印程序的研制
施俏春
南京揚子醫院 信息科,江蘇 南京210048
開發COBAS生化分析儀接口打印軟件,實現計算機串口與生化分析儀的COM口連接。軟件的處理模塊對計算機串口傳過來的生化儀檢驗數據進行分析,提取有效字段寫入數據庫,并與數據庫中患者信息關聯,實現查詢、打印功能。該軟件的應用彌補了醫院缺乏實驗室信息系統(LIS)或在LIS出現故障的情況下生化檢驗報告不能及時發出的問題。
生化分析儀;實驗室信息系統;計算機串口;醫院數字化
COBAS生化分析儀是被廣泛使用的一種全自動生化分析儀器,其自帶的打印系統為純英文界面,使用并不方便。為了解決這一不足,筆者開發了中文打印程序,并且增加數據導出功能以便于后期的數據分析。
(1)系統設計思想:采用RS232數據線連接計算機和生化儀的COM口,獲取生化儀實時產生的原始數據,對原始數據進行分析,提取有效字段寫入數據庫,與數據庫的患者信息關聯后進行查詢、打印。
(2)系統開發環境:以Microsoft Visual Studio 2005為開發環境,采用Vb.net為開發工具;數據庫采用Access2003。
(3)系統硬件:采用RS232 九針數據線,其2、3腳數據線交叉,5腳直連[1]。
(1)系統的主要功能模塊:①標本信息錄入模塊:錄入患者的相關信息、樣本接收時間及自動分配樣本號;②端口設置模塊:對串口的端口號進行設置保存;③通道配置模塊:設置維護COBAS生化儀的通道號及對應的項目名稱;④數據接收處理模塊;⑤查詢、打印及數據導出模塊。
(2)數據庫設計:建數據庫(名稱為cobas1.mdb),設計3張數據庫表:①病人信息表(BRXXK),用于存放接收樣本的病人信息,為防止樣本號在分配過程中出錯,每天采用自動分配樣本號的方式分配樣本號,并給予修改功能;②數據接收表(MIDDLETEXT),用于接收生化儀傳過來的原始數據;③通道配置表(PASSBY1),用于對應通道號和項目名稱。
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]。
該系統操作簡單,每隔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.
落,將其焊好后,啟動輸液泵,故障排除。
輸液泵作為專用醫療設備會對醫療過程和醫療結果產生一定的影響,本文講述的校準方法既能讓我們掌握輸液泵的性能,又能對輸液泵進行現場校準,可以消除醫護人員采用量筒標定帶來的讀數誤差。本文總結的輸液泵常見故障處理方法可以使醫護人員和維修人員及時有效地排除故障,提高對患者的救治率。
[參考文獻]
[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