段振剛,韓明璐,廉小親,張曉力
(北京工商大學(xué),計(jì)算機(jī)與信息工程學(xué)院,北京 100048)
檢測(cè)血栓與止血從傳統(tǒng)的手工方法發(fā)展到全自動(dòng)血凝儀[1],從單一的凝結(jié)法發(fā)展到免疫法和生物化學(xué)法[2],在形式和手段上都有了日新月異的變革。然而,目前大部分血凝儀都是由國(guó)外研發(fā),其高程度的自動(dòng)化功能、多樣化的檢測(cè)方法、復(fù)雜的檢測(cè)原理致使血凝儀的價(jià)格昂貴,不利于普及。而對(duì)診斷人體凝血疾病所需凝血時(shí)間的快速、準(zhǔn)確、實(shí)時(shí)檢測(cè),迫切地需要我們開(kāi)發(fā)出一種具備以上功能,成本又可以被普遍接受的血凝儀。本文對(duì)血凝儀參數(shù)檢測(cè)系統(tǒng)的上位機(jī)軟件進(jìn)行了設(shè)計(jì),采用凝結(jié)算法得到了凝血時(shí)間,為血栓與止血參數(shù)的進(jìn)一步計(jì)算打下了基礎(chǔ),給全自動(dòng)血凝儀軟件的實(shí)現(xiàn)提供了可靠地解決方案。
全自動(dòng)血液凝血分析儀,由三層架構(gòu)組成[3]:上位機(jī)PC管理層、主控單元協(xié)調(diào)層、下位機(jī)控制層。系統(tǒng)總體設(shè)計(jì)框架如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)框架
上位機(jī)PC 管理層,即使用計(jì)算機(jī)作為最高層的管理者,管理主控單元和下位機(jī)。要想使上下位機(jī)成功通信,必須為其制定標(biāo)準(zhǔn)統(tǒng)一的通信協(xié)議,要求數(shù)據(jù)傳輸必須遵守協(xié)議,實(shí)現(xiàn)數(shù)據(jù)的快速、精準(zhǔn)的采集。對(duì)于實(shí)驗(yàn)涉及到的溫度控制、光強(qiáng)檢測(cè)以及控制機(jī)構(gòu)所產(chǎn)生的數(shù)據(jù),按照文本文檔的格式將其存儲(chǔ),為之后的數(shù)據(jù)處理做好鋪墊。通過(guò)搭載C#程序語(yǔ)言設(shè)計(jì)平臺(tái),來(lái)創(chuàng)建整個(gè)血凝儀的工作界面,使血凝儀的工作得到可視化。最后根據(jù)實(shí)驗(yàn)所需檢測(cè)的參數(shù),按照凝結(jié)算法,得到結(jié)果。同時(shí)上位機(jī)還能夠保存歷史檢測(cè)數(shù)據(jù)和檢測(cè)曲線圖,方便用戶(hù)查閱。上位機(jī)和打印機(jī)相連,可打印數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)。
主控單元協(xié)調(diào)層,是整個(gè)系統(tǒng)框架的核心部分,它是上位機(jī)與下位機(jī)互相通訊的紐帶。主要負(fù)責(zé)處理上下位機(jī)數(shù)據(jù)和信號(hào)的正常通訊。使用主控單元的創(chuàng)新之處在于它能夠減少上下位機(jī)的負(fù)擔(dān),同時(shí)提高上下位機(jī)之間的工作效率。而主控板和下位機(jī)之間采用的是PCI轉(zhuǎn)CAN的方式通信,更能提高通信速率。
下位機(jī)控制層,根據(jù)主控單元發(fā)出的協(xié)議代碼,在比對(duì)之后,通過(guò)使用步進(jìn)機(jī)來(lái)驅(qū)動(dòng)機(jī)械臂等運(yùn)動(dòng),使對(duì)應(yīng)的功能成功啟動(dòng),完成相應(yīng)的操作。
根據(jù)系統(tǒng)總體設(shè)計(jì)框圖,血凝儀的通信即有兩部分組成。包括上位機(jī)PC與主控單元的通信和主控單元與下位機(jī)的通信。PC機(jī)首先將命令通過(guò)以太網(wǎng)網(wǎng)口傳輸,主控單元在接到PC機(jī)發(fā)來(lái)的進(jìn)樣本、加試劑、補(bǔ)充反應(yīng)杯、樣本試劑檢測(cè)、分析樣本的命令后,對(duì)其進(jìn)行分解,進(jìn)而通過(guò)CAN 總線分解命令發(fā)給下位機(jī)各相關(guān)模塊[4]。下位機(jī)各相關(guān)模塊執(zhí)行完命令后,再將執(zhí)行的最終結(jié)果回饋給主控單元,進(jìn)而反饋給PC機(jī)。下面著重制定上位機(jī)與主控單元的通信協(xié)議。具體通訊協(xié)議見(jiàn)表1。
通過(guò)制定協(xié)議代碼,可以成功將PC 機(jī)與主控單元握手,實(shí)現(xiàn)上下位機(jī)的實(shí)時(shí)通訊。例如,當(dāng)上位機(jī)發(fā)出0301的命令,根據(jù)通訊協(xié)議,主控單元分析解析之后,樣品針到第一個(gè)樣本位置吸取樣本到相應(yīng)的反應(yīng)杯中;當(dāng)發(fā)出0101命令,機(jī)械抓手將加入樣本的比色杯移到第一個(gè)孵育位置孵育一定時(shí)間。
上位機(jī)軟件,通過(guò)以太網(wǎng)串行接口與主控單元通信,進(jìn)行數(shù)據(jù)的存儲(chǔ)與顯示。本上位機(jī)軟件是在Visual Studio 2008.NET編程環(huán)境中使用C#語(yǔ)言編程完成。數(shù)據(jù)庫(kù)模塊采用廣泛使用的SQL Server 2005來(lái)存儲(chǔ)大量數(shù)據(jù)[5]。
表1 PC機(jī)與主控單元通訊協(xié)議
上位機(jī)主要包括如下功能:設(shè)置試劑、數(shù)據(jù)處理、質(zhì)量控制、生成曲線、設(shè)置設(shè)備等??梢灾庇^反應(yīng)上下位通訊結(jié)果;實(shí)時(shí)顯示每個(gè)檢測(cè)實(shí)驗(yàn)的步驟;用曲線形式實(shí)時(shí)顯示所有或某些時(shí)間節(jié)點(diǎn)的檢測(cè)數(shù)據(jù),并結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和調(diào)用;上位機(jī)功能模塊設(shè)計(jì)如圖2所示。
數(shù)據(jù)庫(kù)采用SQL Server,利用C#中的ADO.NET 方式實(shí)現(xiàn)數(shù)據(jù)輸入、查詢(xún)、報(bào)表生成、打印輸出等[6]。數(shù)據(jù)庫(kù)中根據(jù)實(shí)驗(yàn)需要建立五張表即樣本表tb_Sample、分析參數(shù)表tb_AnalysisParameter、試劑表tb_Reagent、試劑設(shè)置表tb_ReagentSet、流程表tb_Process。
樣本表tb_Sample中設(shè)置了時(shí)間Time、條形碼Barcode ID、樣本姓名SampleName、性別Gender、年齡Age、分析參數(shù)AnalysisParameter、實(shí)驗(yàn)結(jié)果Result、進(jìn)度ProgressBar、標(biāo)志位kuFlag字段。
又因?yàn)槊總€(gè)病人所需分析參數(shù)不同,故建立分析參數(shù)表tb_AnalysisParameter,列出所有血凝儀需要完成的分析參數(shù)。供其它表中分析參數(shù)字段與之相關(guān)聯(lián)。
各個(gè)分析參數(shù)所需試劑亦不同,又建立了試劑表tb_Reagent,設(shè)置試劑的ID號(hào)、試劑名稱(chēng)ReagentName、分析參數(shù)AnalysisParameter、試劑制造商ReagentManufacturers、試劑批次ReagentBatch 字段,與試劑設(shè)置表tb_ReagentSet相關(guān)聯(lián)[7]
在試劑設(shè)置表tb_ReagentSet中,設(shè)置字段記錄試劑位置ReagentLocation、試劑名稱(chēng)ReagentName、最大容量Max_volume、剩余容量Re_volume、分析參數(shù)Analysis-Parameter、標(biāo)志位kuFlag。
圖2 上位機(jī)功能模塊設(shè)計(jì)框架
在流程表tb_Process中,設(shè)置流程ID號(hào)ProcessID、樣本姓名SampleName、分析參數(shù)AnalysisParameter、完成一整套流程所需要的各個(gè)步驟、標(biāo)志位kuFlag。便于查看某一個(gè)樣本流程具體進(jìn)行到哪步,掌握整體分析的進(jìn)度。
C#與SQL Server連接,目的是根據(jù)病人需要,調(diào)用需要完成的分析參數(shù)以及該參數(shù)所需試劑,進(jìn)而完成整個(gè)分析步驟。另外將從下位機(jī)讀取上來(lái)的數(shù)據(jù)按文本文件格式存儲(chǔ)在本地機(jī)中,并在數(shù)據(jù)庫(kù)表中建立路徑連接,實(shí)現(xiàn)數(shù)據(jù)的整體調(diào)用[8]。
在通訊設(shè)計(jì)上,采用C#的Socket通信原理建立主控單元和PC機(jī)的連接[9]。客戶(hù)端確定要連接的服務(wù)器的主機(jī)名和端口,然后發(fā)送連接請(qǐng)求到服務(wù)器,并等待服務(wù)器的回饋信息。當(dāng)服務(wù)器端偵聽(tīng)到來(lái)自客戶(hù)端的連接請(qǐng)求時(shí),向客戶(hù)端發(fā)送收到連接請(qǐng)求的信息,客戶(hù)端收到服務(wù)器的SYN+ACK 包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,完成三次握手。在三次握手之后,客戶(hù)端與服務(wù)器開(kāi)始傳送數(shù)據(jù)。當(dāng)完成通信后,關(guān)閉Socket連接。
實(shí)驗(yàn)流程是上位機(jī)軟件設(shè)計(jì)中的重點(diǎn)部分,也是從檢測(cè)血液到得出結(jié)果的重要體現(xiàn)。當(dāng)采集到病人血液后,開(kāi)啟血凝儀進(jìn)行初始狀態(tài)自檢,沒(méi)有檢測(cè)到錯(cuò)誤信息后,檢查反應(yīng)杯數(shù)目是否足夠完成此次實(shí)驗(yàn),若不足立即補(bǔ)充。接著將樣本信息錄入數(shù)據(jù)庫(kù)保存,主程序開(kāi)始載入。然后按步執(zhí)行試劑冷卻、分配、檢測(cè)試劑,分析樣本。當(dāng)有外部某種因素產(chǎn)生中斷或提示是否分析緊急樣本時(shí),提示用戶(hù)選擇是否中斷分析,用戶(hù)選擇后,執(zhí)行相應(yīng)動(dòng)作,最后通過(guò)使用凝結(jié)法,得到血液數(shù)據(jù),完成對(duì)病人血液的檢測(cè)。實(shí)驗(yàn)結(jié)構(gòu)流程如圖3所示。
在血凝儀檢測(cè)系統(tǒng)中,采用凝結(jié)法來(lái)處理數(shù)據(jù)。
圖3 實(shí)驗(yàn)流程結(jié)構(gòu)
3.5.1 檢測(cè)基本原理
將剛加入凝血試劑但是凝血過(guò)程尚未開(kāi)始時(shí)刻的散射光光強(qiáng)度的水平定義為0%,而凝血過(guò)程完全結(jié)束時(shí)的散射光光強(qiáng)度定義為100%。散射光光強(qiáng)度水平到達(dá)預(yù)定值所需的時(shí)間均可以在凝血曲線上查出。將這定義為凝血時(shí)間。(在圖4左中凝血檢測(cè)點(diǎn)設(shè)置為50%)。通過(guò)這種方法,只要發(fā)生很小的散射光光強(qiáng)度變化,就可以測(cè)定凝血時(shí)間[10]。
在儀器內(nèi)部存有各種標(biāo)準(zhǔn)曲線,反映了某種醫(yī)學(xué)指標(biāo)(活性率)與凝血時(shí)間的函數(shù)關(guān)系,如圖4右所示。因此在算出凝血時(shí)間后,只需在該曲線上進(jìn)行查表操作,即可得到最終欲測(cè)的指標(biāo)。
圖4 凝血過(guò)程曲線、凝結(jié)法標(biāo)準(zhǔn)曲線
3.5.2 算法實(shí)現(xiàn)
檢測(cè)系統(tǒng)采集下位傳來(lái)的數(shù)據(jù),獲得凝血曲線。將開(kāi)始檢測(cè)時(shí)的ys值(采樣值)定義為散射光最弱狀態(tài),將檢測(cè)過(guò)程結(jié)束(即化學(xué)反應(yīng)結(jié)束)時(shí)的ys值定義為散射光最強(qiáng)的狀態(tài)。分別找出散射光最弱狀態(tài)下最后一個(gè)ys值所出現(xiàn)的時(shí)刻和散射光最強(qiáng)狀態(tài)下第一個(gè)ys 值出現(xiàn)的時(shí)刻,這兩個(gè)時(shí)間點(diǎn)的中點(diǎn)距零點(diǎn)的時(shí)間即為凝結(jié)時(shí)間。算法流程圖如圖5所示。
圖5 算法流程
算法原理可以簡(jiǎn)單敘述為:若某個(gè)ys 值比它后面的第N1個(gè)值小r1,則找到起始時(shí)刻t1;若某個(gè)ys值比它前面的第N2個(gè)值大r2,則找到終止時(shí)刻t2,利用t1和t2容易算出凝血時(shí)間tcoa。
另外,為避免從下位采集到的數(shù)據(jù)出現(xiàn)壞點(diǎn),在獲得凝血曲線之前對(duì)數(shù)據(jù)進(jìn)行批量平均處理。從測(cè)得的第一個(gè)數(shù)據(jù)開(kāi)始,三個(gè)一組求平均數(shù),作為凝血曲線上的一點(diǎn)。若相鄰數(shù)據(jù)點(diǎn)間的絕對(duì)值大于該段允許的范圍,則剔除壞點(diǎn)并記錄壞點(diǎn)信息以備查詢(xún)。
血凝儀的數(shù)據(jù)處理所需參數(shù)包括溫度采集、樣本臂、機(jī)械臂、試劑臂的動(dòng)作反應(yīng)回饋、以及光強(qiáng)參數(shù)的檢測(cè)。溫度采集涉及到實(shí)驗(yàn)環(huán)境溫度、相對(duì)濕度、試劑針頭、試劑保存區(qū)域溫度。下位機(jī)通過(guò)溫度傳感器將檢測(cè)到的溫度傳給上位機(jī),并實(shí)時(shí)顯示。一旦溫度超過(guò)限定范圍,將停止實(shí)驗(yàn)報(bào)警提示。圖6為實(shí)時(shí)溫度顯示。
圖6 實(shí)時(shí)溫度顯示
在實(shí)驗(yàn)中,試劑、樣本和反應(yīng)杯的位置是固定的,根據(jù)不同的樣本實(shí)驗(yàn)項(xiàng)目不同,需要移動(dòng)試劑臂、樣品臂和反應(yīng)杯,記錄各個(gè)臂的位置以及動(dòng)作反應(yīng)回饋。光強(qiáng)參數(shù)的檢測(cè)包括了8路散射光源和4路透射光源。將透射光的強(qiáng)度和散射光的吸光率實(shí)時(shí)傳到上位機(jī),計(jì)算各個(gè)實(shí)驗(yàn)參數(shù)值并繪制曲線。通過(guò)對(duì)采樣數(shù)據(jù)的計(jì)算,得出被測(cè)樣本的凝血時(shí)間。并通過(guò)預(yù)存在主機(jī)中的標(biāo)準(zhǔn)曲線,計(jì)算出欲測(cè)的醫(yī)學(xué)指標(biāo)。圖7為散射光強(qiáng)度的凝結(jié)過(guò)程曲線。
圖7 散射光強(qiáng)度的凝結(jié)過(guò)程曲線
本文基于C#對(duì)血凝儀參數(shù)檢測(cè)系統(tǒng)的上位機(jī)軟件進(jìn)行了設(shè)計(jì),按照新型的三層架構(gòu)給出了血凝儀的總體構(gòu)成,根據(jù)制定的上下位機(jī)通訊協(xié)議實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)傳輸以及曲線顯示,采用凝結(jié)算法得到了凝血時(shí)間,為血栓與止血參數(shù)的進(jìn)一步計(jì)算打下了基礎(chǔ),給全自動(dòng)血凝儀軟件的實(shí)現(xiàn)提供了可靠地解決方案[11]。測(cè)試結(jié)果顯示,該軟件能夠?qū)?shí)驗(yàn)參數(shù)進(jìn)行檢測(cè),界面友好。
但是,由于高度的自動(dòng)化功能,多種的檢測(cè)方法,以及檢測(cè)原理的復(fù)雜性,血凝儀項(xiàng)目目前仍處于研發(fā)階段。因此,本文只涉及到所有功能的一部分。但它為今后的研究和發(fā)展奠定了一定的基礎(chǔ)。
[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全自動(dòng)血凝儀原理、維護(hù)保養(yǎng)及 常見(jiàn)故障維修[J].中國(guó)醫(yī)療設(shè)備,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).[李美珠,陳棪焜.均相酶增強(qiáng)免疫法監(jiān)測(cè)丙戊酸濃度及臨床應(yīng)用[J].檢驗(yàn)醫(yī)學(xué)與臨床,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三層架構(gòu)的青島市數(shù)字城建檔案館[J].計(jì)算機(jī)技術(shù)與發(fā)展,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ìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)[J].自動(dòng)化與儀表,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#的數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)試,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).[蔣薇,賴(lài)青貴,秦玲,等.基于ADO.NET 數(shù)據(jù)訪問(wèn)技術(shù)的研究和應(yīng)用[J].微計(jì)算機(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查詢(xún)語(yǔ)句在統(tǒng)計(jì)病案程序中的應(yīng)用[J].中國(guó)醫(yī)院統(tǒng)計(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#的極低功耗無(wú)線網(wǎng)絡(luò)溫度監(jiān)測(cè)系統(tǒng)的上位機(jī)軟件設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2010(9):22-24.]
[9]ZHOU Kun,F(xiàn)U 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的網(wǎng)絡(luò)數(shù)據(jù)傳輸及其安全[J].計(jì)算機(jī)工程與設(shè)計(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).[彭黎明,王鴻利,顏存糧.全自動(dòng)凝血分析儀[J].血栓與止血學(xué),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 下三層架構(gòu)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(6):78-81.]