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