陳希,劉翔,潘傳迪
(1.皖南醫(yī)學(xué)院第一附屬醫(yī)院,安徽 蕪湖 241001;2.皖南醫(yī)學(xué)院,安徽 蕪湖 241001)
為了使信息在各種系統(tǒng)之間互聯(lián)互通,信息系統(tǒng)之間的接口應(yīng)用也越來越廣泛。接口其實(shí)是指對(duì)協(xié)定進(jìn)行定義的引用類型,顧名思義,是能讓數(shù)據(jù)從一個(gè)系統(tǒng)導(dǎo)入到另一個(gè)系統(tǒng)之間的應(yīng)用。就以醫(yī)院信息系統(tǒng)為例,接口應(yīng)用于藥庫與藥房系統(tǒng),財(cái)務(wù)與藥房系統(tǒng),醫(yī)生站與護(hù)士站之間。接口主要是解決兩個(gè)系統(tǒng)數(shù)據(jù)相互交換讀寫的問題,接口解決方法主要有如下五種,分別是表或視圖方式、應(yīng)用程序接口方式、中間表方式、消息方式、中間載體方式。下面就介紹這五種方式的實(shí)現(xiàn)、優(yōu)缺點(diǎn)和應(yīng)用體會(huì)。
用直接讀寫目標(biāo)系統(tǒng)數(shù)據(jù)庫表或視圖的方式。按需將目標(biāo)系統(tǒng)數(shù)據(jù)庫表或視圖的讀寫權(quán)限授權(quán)給接入方用戶,如接入方用戶不存在,先建立數(shù)據(jù)庫訪問用戶[1]。
以這種方式接入方直接訪問接口信息相關(guān)的表或視圖,性能最佳,但由于接入方是直接讀寫目標(biāo)系統(tǒng)數(shù)據(jù)庫表或視圖,需要雙方約定數(shù)據(jù)讀寫規(guī)則,且要注意授權(quán)有效性,授權(quán)接入方只能訪問接口信息相關(guān)的表或視圖,確保數(shù)據(jù)安全性和一致性。在實(shí)踐中常用于表或視圖讀操作。如基于Oracle 數(shù)據(jù)庫的臨床路徑系統(tǒng)讀取藥品管理系統(tǒng)(用戶名為drug)中的藥品名稱表(drug_drugname)中的藥品名稱和規(guī)格的代碼如下:
Select drugname,standard from drug.drug_drugname.
應(yīng)用程序接口(Application Programming Interface),又稱為應(yīng)用編程接口,簡稱API。就是軟件系統(tǒng)不同組成部分銜接的約定。日漸龐大的軟件規(guī)模要求我們將系統(tǒng)劃分成各個(gè)部分來處理,設(shè)計(jì)編程接口則顯得十分關(guān)鍵。程序設(shè)計(jì)實(shí)踐中,編程接口的設(shè)計(jì)首先要使軟件系統(tǒng)的職責(zé)得到合理劃分。良好的接口設(shè)計(jì)可以降低系統(tǒng)各部分的相互依賴,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度,從而提高系統(tǒng)的維護(hù)性和擴(kuò)展性[2]。如圖1 所示。
通過接口雙方各自開發(fā)自己的API 接口,讓對(duì)方系統(tǒng)調(diào)用,來實(shí)現(xiàn)數(shù)據(jù)訪問。這是一種常用的信息系統(tǒng)之間接口方式,其數(shù)據(jù)安全性和一致性高,但性能不如直接讀寫目標(biāo)系統(tǒng)數(shù)據(jù)庫表或視圖的方式。常用的應(yīng)用程序接口方案包括WEB Service、WEB API、DLL 和數(shù)據(jù)庫存儲(chǔ)過程及函數(shù)等。
圖1 應(yīng)用程序接口方式
在數(shù)據(jù)庫中建立中間表,中間表一般由接口雙方中一方創(chuàng)建,也可由第三方創(chuàng)建,按需將中間表訪問權(quán)限授權(quán)給接口雙方,接口雙方將需要交互的數(shù)據(jù)寫入到中間表,對(duì)方通過讀取中間表實(shí)現(xiàn)數(shù)據(jù)交互[3]。這種方式性能、數(shù)據(jù)安全性和一致性均較高,也是一種常用的信息系統(tǒng)之間接口方式。
為什么要使用中間表的接口模式?對(duì)于很多企業(yè)來說,經(jīng)常需要多個(gè)業(yè)務(wù)系統(tǒng)支持。如果采用系統(tǒng)間相互的函數(shù)調(diào)用模式,會(huì)導(dǎo)致接口過多,難以管理。如圖2 所示。
圖2 系統(tǒng)間函數(shù)調(diào)用模式
基于此情況,多數(shù)企業(yè)會(huì)選擇采用中間表,以滿足多個(gè)系統(tǒng)間的數(shù)據(jù)流轉(zhuǎn)。那么,中間表接口模式的工作機(jī)制是什么?
如果兩個(gè)業(yè)務(wù)系統(tǒng),采用建立中間數(shù)據(jù)庫的模式進(jìn)行數(shù)據(jù)交互,其工作原理可以簡單理解為:首先,會(huì)部署一個(gè)專門的數(shù)據(jù)庫或者數(shù)據(jù)系統(tǒng),也有稱為數(shù)據(jù)平臺(tái)等,實(shí)際上,就是個(gè)專門用于存儲(chǔ)系統(tǒng)間交互數(shù)據(jù)的數(shù)據(jù)庫[4]。業(yè)務(wù)系統(tǒng)不會(huì)直接將要傳輸?shù)臄?shù)據(jù)傳輸給其他業(yè)務(wù)系統(tǒng),而是會(huì)傳輸給這個(gè)中間的數(shù)據(jù)庫,要使用這些數(shù)據(jù)的業(yè)務(wù)系統(tǒng),會(huì)主動(dòng)去中間數(shù)據(jù)庫取自己需要的數(shù)據(jù)。如圖3 所示,A 系統(tǒng)會(huì)將數(shù)據(jù)寫入中間數(shù)據(jù)庫,B 系統(tǒng)會(huì)從中間數(shù)據(jù)庫取需要的數(shù)據(jù),反之亦然。
圖3 中間數(shù)據(jù)庫
采取中間表接口的方式,在實(shí)際使用中,一般是存在多個(gè)系統(tǒng)之間有數(shù)據(jù)交互的業(yè)務(wù)情況,如圖4所示。我們對(duì)比之前多系統(tǒng)接口采取RFC 方式的圖例,我們很容易看出來,采取中間表接口的交互方式,其接口更加容易管理,且交互方式更加安全。
圖4 中間表中多個(gè)系統(tǒng)數(shù)據(jù)交互情況
通過消息傳送方式實(shí)現(xiàn)信息系統(tǒng)數(shù)據(jù)交互,常見的有Socket 和HL7 方式。接口雙方將需要交互的數(shù)據(jù)通過消息方式發(fā)送給另一方,接收方收到消息后進(jìn)行數(shù)據(jù)處理,如需反饋信息,同樣以消息方式將反饋信息發(fā)送給發(fā)送方,從而實(shí)現(xiàn)數(shù)據(jù)雙方的數(shù)據(jù)交互。這種方式性能高,數(shù)據(jù)安全性和一致性也高,是一種理想的信息系統(tǒng)之間接口方式,越來越被人們接受。由于該方式需要有消息傳送系統(tǒng),且接口雙方需要提供軟件開發(fā)支持,目前實(shí)現(xiàn)代價(jià)相對(duì)較高。
Socket 是應(yīng)用層與TCP/IP 協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP 協(xié)議族隱藏在Socket 接口后面。對(duì)用戶來說,一組簡單的接口就是全部,讓Socket 去組織數(shù)據(jù),以符合指定的協(xié)議[5]。Socket 方式優(yōu)勢(shì)在于可以實(shí)現(xiàn)跨平臺(tái)的數(shù)據(jù)交換,并能夠解決操作系統(tǒng)、防火墻帶來的困擾。但因部署要求嚴(yán)格,實(shí)現(xiàn)代價(jià)較高,實(shí)際應(yīng)用不是很多。
HL7(Health Level 7)是標(biāo)準(zhǔn)化的衛(wèi)生信息傳輸協(xié)議,用于不同應(yīng)用之間數(shù)據(jù)傳輸。HL7 匯集了不同廠商用來設(shè)計(jì)應(yīng)用軟件之間接口的標(biāo)準(zhǔn)格式,它將允許各個(gè)醫(yī)療機(jī)構(gòu)在異構(gòu)系統(tǒng)之間進(jìn)行數(shù)據(jù)交互[6]。
采用HL7 標(biāo)準(zhǔn)的信息交換的過程是:發(fā)送方在業(yè)務(wù)節(jié)點(diǎn)觸發(fā)后,如果需要把業(yè)務(wù)信息傳遞給其它系統(tǒng),首先要把應(yīng)用系統(tǒng)數(shù)據(jù)按照集成規(guī)范定義的HL7 消息格式進(jìn)行封裝,并把消息發(fā)送給消息引擎[7]。消息引擎在接收消息后按照通道配置情況,依據(jù)標(biāo)準(zhǔn)的通訊規(guī)則將消息發(fā)送到對(duì)方系統(tǒng);接收方在收到發(fā)來的HL7 消息后,解析消息內(nèi)容,對(duì)收到的信息進(jìn)行相關(guān)業(yè)務(wù)處理,將消息內(nèi)容轉(zhuǎn)變成業(yè)務(wù)應(yīng)用系統(tǒng)數(shù)據(jù)。業(yè)務(wù)處理完成后,由接收方發(fā)送一條處理結(jié)果應(yīng)答消息給消息引擎[8]。
使用文本文件、EXCEL、XML 等文件作為中間載體,接口雙方先約定中間載體文件類型和格式,一方將數(shù)據(jù)導(dǎo)出,另一方將數(shù)據(jù)導(dǎo)入。這種方式實(shí)現(xiàn)起來簡單,數(shù)據(jù)安全性和一致性高,但數(shù)據(jù)交互及時(shí)性差,常用于靜態(tài)數(shù)據(jù)交互,不得已情況下才用于動(dòng)態(tài)數(shù)據(jù)交互。
總的來說,上述各種接口解決方式各有優(yōu)缺點(diǎn)。而分析接口解決方式時(shí),主要從安全性、性能、代價(jià)這三個(gè)方面考慮。恰當(dāng)運(yùn)用這些接口方法,才能高效地實(shí)現(xiàn)數(shù)據(jù)的讀寫交換,保證信息系統(tǒng)之間信息交換的準(zhǔn)確性、穩(wěn)定性和安全性。相比而言,上述接口方式中,中間表方式與消息方式是市場(chǎng)應(yīng)用最多的,因?yàn)檫@兩者安全性較高,性能較穩(wěn)定,在代價(jià)方面相對(duì)其他方式也比較合理,因此能被更多廠家、商家和客戶接受。