游海鴻,陳振軍
中藥配方顆粒機與醫(yī)院信息系統(tǒng)接口的設(shè)計與實現(xiàn)
游海鴻,陳振軍
中藥配方顆粒機;醫(yī)院信息系統(tǒng);接口
近年來,由于我院對中醫(yī)科室的投入和建設(shè)不斷加強,中醫(yī)科收治患者的數(shù)量呈直線上升,帶來良好收益的同時也造成中藥房藥師工作量的激增。即使增加了人力、物力,藥師在抓藥-煎藥-打包-分發(fā)這種傳統(tǒng)工作模式下的日工作量仍達到了飽和。為了解決以上問題,使中醫(yī)科能得到持續(xù)發(fā)展,我院引進了廣東一方制藥有限公司提供的MD 6100中藥配方顆粒機(以下簡稱顆粒機)。由于顆粒機廠家只提供了一套用戶圖形界面,供藥房操作人員手工錄入中藥顆粒劑處方,并未提供與醫(yī)院信息系統(tǒng) (hospital information system , HIS)的接口,HIS中的電子處方無法自動傳輸?shù)筋w粒機中。因此,為了實現(xiàn)電子處方的自動傳輸,降低人力投入和減少手工操作的錯誤率,決定開發(fā)實現(xiàn)顆粒機與HIS的接口。
顆粒機由容器柜和配方調(diào)劑設(shè)備這兩大部分組成,其功能是根據(jù)處方將相應的顆粒劑一起分裝到小包裝袋中,每個包裝袋中的配方和含量都相同。其中容器柜又由多組柜子組成,每組柜子都安插了許多存放單品顆粒劑的罐裝密封容器,并配備了控制電路模塊,以提示每次配方所用到的單品顆粒劑。配方調(diào)劑設(shè)備由機械和控制電路模塊以及協(xié)調(diào)各部件工作的固件構(gòu)成,其主要負責控制每次配方所需要的單品顆粒劑用量并進行配方和分裝。同時為了與HIS進行數(shù)據(jù)交換,實現(xiàn)自動調(diào)劑分裝,該設(shè)備還安裝了嵌入式數(shù)據(jù)庫,實現(xiàn)了符合SQL92標準的數(shù)據(jù)庫訪問接口。因此,在接口的開發(fā)過程中,開發(fā)人員只需要像使用普通的網(wǎng)絡(luò)數(shù)據(jù)庫一樣,將顆粒機所需要的數(shù)據(jù)用SQL語言提交即可。
接口程序的主要功能就是從HIS中讀取顆粒劑處方數(shù)據(jù)并將相應的字段值進行合并或截取再寫入到顆粒機數(shù)據(jù)庫表中,實現(xiàn)HIS中顆粒劑處方數(shù)據(jù)向顆粒機數(shù)據(jù)庫的自動傳輸。接口程序在運行時并不是實時將HIS中的數(shù)據(jù)寫入顆粒機數(shù)據(jù)庫,而是每隔6 s掃描一次HIS數(shù)據(jù)庫中相應的表,再進行數(shù)據(jù)傳輸。這樣設(shè)計的優(yōu)點是既避免了頻繁掃描數(shù)據(jù)庫表而造成系統(tǒng)開銷的增加,又不至于使未進行配方的顆粒劑處方積壓過多。
3.1 搭建接口運行環(huán)境
3.1.1 安裝并配置Firebird數(shù)據(jù)庫 (1)選擇一臺電腦運行Firebird-2.0.3.12981-1-Win32.exe數(shù)據(jù)庫安裝軟件。安裝完畢后,啟動控制面板中Firebird 2.0 Server Manager,檢查數(shù)據(jù)庫服務是否處于運行狀態(tài),如果未運行,點擊“Start”即可。(2)將顆粒機廠商提供的數(shù)據(jù)庫文件MDDB.fdb復制到Firebird數(shù)據(jù)庫的安裝目錄下,用記事本打開C:Program FilesFirebirdFirebird_2_0下的aliases.conf文件,在文件尾部追加一行:mddb = d:databasemddb.fdb。(3)安裝ibexpert數(shù)據(jù)庫管理工具,設(shè)置ibexpert與Firebird數(shù)據(jù)庫的連接參數(shù),并測試連接情況。
3.1.2 安裝Firebird ODBC驅(qū)動程序并配置ODBC數(shù)據(jù)源 接口程序通過ODBC方式與Firebird數(shù)據(jù)庫連接。Firebird數(shù)據(jù)庫符合SQL92標準,可通過其驅(qū)動程序設(shè)置為ODBC數(shù)據(jù)源,使得接口程序能夠連接Firebird數(shù)據(jù)庫。運行安裝軟件Firebird_ODBC_2.0.0-Win32.exe。安裝完畢后,打開控制面板中管理工具,雙擊數(shù)據(jù)源(ODBC)打開數(shù)據(jù)源管理器,創(chuàng)建Firebird ODBC,數(shù)據(jù)源名稱(DSN)設(shè)為FBDSN。
3.2 接口的設(shè)計與實現(xiàn)
3.2.1 接口流程設(shè)計 考慮到顆粒劑配方包裝無法退藥的特點,必須在患者繳費前將所有由誤操作帶來的數(shù)據(jù)錯誤,如顆粒劑處方中出現(xiàn)非顆粒劑數(shù)據(jù)等的錯誤予以提示和糾正,這樣才能既保障患者的利益又避免藥房的經(jīng)濟損失,有效防范醫(yī)患矛盾的發(fā)生。筆者把上述這部分校驗糾錯功能放在醫(yī)師工作站,而根據(jù)接口功能設(shè)計了如下流程(圖1)。
圖1 中藥配方顆粒機與醫(yī)院信息系統(tǒng)接口流程
接口程序讀取HIS中drug_presc_master表記錄,根據(jù)標記字段,判斷該處方是否為顆粒劑處方。若否,則重新讀取,若是,則繼續(xù)根據(jù)相應字段判斷是否為已傳輸過的顆粒劑處方,若為未傳輸處方則將drug_presc_master與drug_presc_detail表中的相關(guān)字段數(shù)據(jù)寫入顆粒機數(shù)據(jù)庫表中,若為已傳輸過的顆粒劑處方則重新讀取。
3.2.2 接口的實現(xiàn) 修改HIS中drug_presc_master表,增加字段send_flag,字段值為0表示該處方數(shù)據(jù)未傳輸至顆粒機中的Firebird數(shù)據(jù)庫,字段值為1表示處方數(shù)據(jù)已傳輸。語句如下:
alter table pharmacy.drug_presc_master
add send_flag number(1);
在HIS中建立觸發(fā)器實現(xiàn)在將處方數(shù)據(jù)插入表drug_presc_master之前,將send_flag字段值置為0。語句如下:
create or replace trigger pharmacy.drug_presc_master_insert
before insert on pharmacy.drug_presc_master
referencing new as new old as old
for each row
begin
if :new.presc_type = 2 then
:new.send_flag := 0;
end if;
end;
其中presc_type=2表示該處方為顆粒劑處方。檢索HIS表drug_presc_master,當檢索到presc_type=2和sen_flag=0的記錄時,合并該記錄的presc_date和presc_no字段作為每張?zhí)幏降奈ㄒ粯俗R,同時將相關(guān)字段一起寫入顆粒機數(shù)據(jù)庫中存儲電子處方主記錄的表data_prescription。根據(jù)處方號,檢索HIS中表data_prescription_detail處方明細記錄表,將相關(guān)字段寫入顆粒機數(shù)據(jù)庫中存儲電子處方明細記錄的表data_prescription_detail。
在接口程序的配置文件中添加[IntDatabase]段,通過數(shù)據(jù)源FBDSN實現(xiàn)對Firebird數(shù)據(jù)庫的訪問。
[IntDatabase]
DSN=FBDSN
UID=SYSDBA
PWD=masterkey
接口程序連接Firebird數(shù)據(jù)庫時需要使用其提供的客戶端動態(tài)鏈接庫gds32.dll或者fbclient.dll,將其任意一個拷貝到接口文件目錄下即可。
中藥顆粒機與HIS之間接口的實現(xiàn),使得顆粒機能夠自動接收到來自HIS醫(yī)師站的顆粒劑處方數(shù)據(jù),并根據(jù)處方進行配藥和包裝。這種小包裝的顆粒劑具有完全藥效、免煎、易攜帶等優(yōu)點,患者不再需要排隊等待煎煮中藥,為醫(yī)院節(jié)省了資源也為患者節(jié)約了時間,更大大降低了藥房工作人員的勞動量,使其能夠服務于更多的患者。
[1] 劉志敏. Oracle 數(shù)據(jù)庫應用管理解決方案[M]. 北京:電子工業(yè)出版社,2002:13-96.
[2] 成占林,朱玉彬,李 晉,等.加快所屬醫(yī)院“軍字一號”工程的建設(shè)步伐[J].解放軍醫(yī)院管理,1999,6(5):381-382.
(2014-04-25收稿 2014-10-21修回)
(責任編輯 岳建華)
游海鴻,本科學歷,高級工程師,E-mail:yhh_1223@163.com
100027,武警北京總隊醫(yī)院信息科
R197.324;R197.39