閆冰洋 李潔 李維鳳
摘 要:本研究利用Excel VBA技術(shù)設(shè)計(jì)門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序,以期提高門(mén)診藥房庫(kù)存盤(pán)點(diǎn)效率。其間建立了藥品基礎(chǔ)數(shù)據(jù)庫(kù),對(duì)HIS系統(tǒng)導(dǎo)出的原始盤(pán)點(diǎn)表、自動(dòng)發(fā)藥機(jī)導(dǎo)出的發(fā)藥機(jī)藥品庫(kù)存信息進(jìn)行數(shù)學(xué)運(yùn)算,得到最終的門(mén)診藥房庫(kù)存盤(pán)點(diǎn)表。結(jié)果表明,單次盤(pán)點(diǎn)時(shí)間由原來(lái)的120min左右降至60min左右,門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序的應(yīng)用能有效提高庫(kù)存盤(pán)點(diǎn)效率。
關(guān)鍵詞:門(mén)診藥房;ExcelVBA;藥品盤(pán)點(diǎn)
中圖分類號(hào):TP311.11文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1003-5168(2020)02-0038-03
Abstract: Excel VBA technology was used to design an outpatient pharmacy-assisted inventory counting program in order to improve the outpatient pharmacy inventory inventory efficiency in this study. In the meantime, a basic medicine database was established, and the original inventory table derived from the HIS system and the medicine inventory information of the dispenser issued by the automatic dispenser were mathematically calculated to obtain the final outpatient pharmacy inventory inventory table. The results show that the single inventory time is reduced from about 120 minutes to about 60 minutes. The application of the outpatient pharmacy-assisted inventory counting program can effectively improve the inventory counting efficiency.
Keywords: outpatient pharmacy;ExcelVBA;drug inventory
門(mén)診藥房藥品盤(pán)點(diǎn)工作是醫(yī)院資產(chǎn)管理的重要工作,對(duì)藥品經(jīng)濟(jì)管理與質(zhì)量管理有著非常重要的作用[1-2]。隨著門(mén)診藥房信息化和自動(dòng)化建設(shè)的深入推進(jìn),近年來(lái),我國(guó)各級(jí)醫(yī)院大力引進(jìn)自動(dòng)發(fā)藥機(jī),以提高門(mén)診藥房取藥準(zhǔn)確率和速度[3-4],提高患者的就醫(yī)體驗(yàn)。但是,自動(dòng)發(fā)藥機(jī)的引進(jìn)也給門(mén)診藥房藥品盤(pán)點(diǎn)工作帶來(lái)挑戰(zhàn)。例如,自動(dòng)發(fā)藥機(jī)藥品庫(kù)存不能與醫(yī)院HIS系統(tǒng)對(duì)接,導(dǎo)致HIS系統(tǒng)導(dǎo)出的藥品庫(kù)存信息與貨架實(shí)存信息不一致,嚴(yán)重影響盤(pán)點(diǎn)效率。VBA是一種宏語(yǔ)言,結(jié)合微軟辦公軟件很容易將日常工作流程轉(zhuǎn)換為VBA程序代碼,使藥學(xué)工作實(shí)現(xiàn)自動(dòng)化,如利用VBA編制中藥采購(gòu)軟件[5]、藥庫(kù)智能化辦公[6]、開(kāi)發(fā)藥品配伍禁忌審查表[7]等。
本文將從新鄉(xiāng)市第一人民醫(yī)院門(mén)診藥房庫(kù)存盤(pán)點(diǎn)實(shí)際工作入手,分析目前盤(pán)點(diǎn)工作的不足,利用Excel VBA語(yǔ)言設(shè)計(jì)輔助庫(kù)存盤(pán)點(diǎn)程序,以提高藥品庫(kù)存盤(pán)點(diǎn)效率,降低藥師的工作強(qiáng)度。
1 資料與方法
1.1 輔助盤(pán)點(diǎn)程序的算法構(gòu)建
此輔助盤(pán)點(diǎn)程序的整體思路是:以HIS系統(tǒng)導(dǎo)出的原始盤(pán)點(diǎn)表、自動(dòng)發(fā)藥機(jī)導(dǎo)出的庫(kù)存數(shù)據(jù)為基礎(chǔ),建立藥品基礎(chǔ)信息庫(kù),設(shè)計(jì)輔助盤(pán)點(diǎn)程序的算法,導(dǎo)入原始盤(pán)點(diǎn)表、自動(dòng)發(fā)藥機(jī)庫(kù)存數(shù)據(jù),得到最終的門(mén)診藥房貨架實(shí)際庫(kù)存盤(pán)點(diǎn)表。
1.1.1 原始盤(pán)點(diǎn)表。從醫(yī)院HIS系統(tǒng)導(dǎo)出原始盤(pán)點(diǎn)表,保存成“.xls”格式。導(dǎo)出的原始盤(pán)點(diǎn)表的內(nèi)容格式如表1所示。
1.1.2 建立藥品基礎(chǔ)信息庫(kù)。藥品基礎(chǔ)信息庫(kù)內(nèi)容包括藥品的貨位、名稱、規(guī)格、單位、取藥順序、上藥類型、單工位最大數(shù)量等信息,數(shù)據(jù)主要來(lái)源于醫(yī)院HIS系統(tǒng)。藥品基礎(chǔ)信息庫(kù)格式如表2所示。
1.1.3 輔助盤(pán)點(diǎn)程序設(shè)計(jì)思路。一是確定藥品唯一性。因庫(kù)存藥品存在同名稱、多規(guī)格、多廠家的情況,只檢索藥品名稱無(wú)法確定藥品的唯一性,故采用藥典編號(hào)確定藥品的唯一性。二是確定門(mén)診藥房庫(kù)存盤(pán)點(diǎn)表信息。根據(jù)門(mén)診藥房庫(kù)存盤(pán)點(diǎn)實(shí)際情況,導(dǎo)出的庫(kù)存盤(pán)點(diǎn)表需要包括貨位、藥品名稱、廠家、規(guī)格、數(shù)量、單位等內(nèi)容。導(dǎo)出的庫(kù)存盤(pán)點(diǎn)表格式如表3所示。三是庫(kù)存盤(pán)點(diǎn)表排序與排版。為保證庫(kù)存盤(pán)點(diǎn)有序進(jìn)行,根據(jù)貨架位置進(jìn)行排序,并進(jìn)行排版。
1.2 輔助庫(kù)存盤(pán)點(diǎn)程序設(shè)計(jì)
輔助庫(kù)存盤(pán)點(diǎn)程序包括導(dǎo)入原始盤(pán)點(diǎn)表、導(dǎo)入自動(dòng)發(fā)藥機(jī)庫(kù)存數(shù)據(jù)、處理庫(kù)存數(shù)據(jù)等過(guò)程。
1.2.1 導(dǎo)入原始盤(pán)點(diǎn)表。從HIS系統(tǒng)中導(dǎo)出原始盤(pán)點(diǎn)表,導(dǎo)入到門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序[8-9],保存在數(shù)組arr_yskc中,藥品基礎(chǔ)信息庫(kù)數(shù)據(jù)導(dǎo)入到數(shù)組arr_db中。VBA代碼示例如下:
Set wb = Workbooks.Open(sht_db.[Q4].Value)
arr_yskc = wb.Worksheets(1).Range("B5").Resize([A5].End(xlDown).Row - 4, 16)
wb.Close
arr_db = sht_db.[A1].CurrentRegion
ReDim arr_kc(1 To UBound(arr_yskc, 1), 1 To 10)
For i = 1 To UBound(arr_db, 1)
dict_ydhj(arr_db(i, 1)) = arr_db(i, 2)
Next i
'獲取不重復(fù)藥典編號(hào),獲取數(shù)量之外所有信息
For i = 2 To UBound(arr_yskc, 1)
If dict_ydzc.exists(arr_yskc(i, 1)) = False Then
k = k + 1
If dict_ydhj.exists(arr_yskc(i, 1)) Then
arr_kc(k, 1) = dict_ydhj(arr_yskc(i, 1))
Else
arr_kc(k, 1) = ""
End If
arr_kc(k, 2) = arr_yskc(i, 1)
arr_kc(k, 3) = arr_yskc(i, 2)
arr_kc(k, 4) = arr_yskc(i, 3)
arr_kc(k, 5) = arr_yskc(i, 16)
arr_kc(k, 7) = arr_yskc(i, 11)
arr_kc(k, 9) = arr_yskc(i, 14)
End If
'累加藥典編號(hào)對(duì)應(yīng)數(shù)量信息
dict_ydzs(arr_yskc(i, 1)) = dict_ydzs(arr_yskc(i, 1)) + arr_yskc(i, 7)
dict_ydzc(arr_yskc(i, 1)) = dict_ydzc(arr_yskc(i, 1)) + arr_yskc(i, 10)
dict_ydlc(arr_yskc(i, 1)) = dict_ydlc(arr_yskc(i, 1)) + arr_yskc(i, 13)
Next i
For i = 1 To UBound(arr_kc, 1)
If dict_ydzc.exists(arr_kc(i, 2)) Then
arr_kc(i, 6) = dict_ydzc(arr_kc(i, 2))
arr_kc(i, 8) = dict_ydlc(arr_kc(i, 2))
arr_kc(i, 10) = dict_ydcl(arr_kc(i, 2))
End If
Next i
'庫(kù)存盤(pán)點(diǎn)表賦值
sht_db.[S2].Resize(UBound(arr_yskc, 1), 10) = arr_kc
1.2.2 導(dǎo)入自動(dòng)發(fā)藥機(jī)庫(kù)存數(shù)據(jù)。從自動(dòng)發(fā)藥機(jī)中導(dǎo)出發(fā)藥機(jī)藥品庫(kù)存數(shù)據(jù),導(dǎo)入到門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序,保存在數(shù)組arr_fyjkc1中。VBA代碼示例如下:
'獲取發(fā)藥機(jī)庫(kù)存
Set wb = Workbooks.Open(sht_db.[Q5].Value)
arr_fyjkc = wb.Worksheets(1).Range("A1").CurrentRegion
wb.Close
ReDim arr_fyjkc1(1 To UBound(arr_fyjkc, 1), 1 To 3)
For i = 1 To UBound(arr_fyjkc, 1)
arr_fyjkc1(i, 1) = arr_fyjkc(i, 2)
arr_fyjkc1(i, 2) = arr_fyjkc(i, 7)
arr_fyjkc1(i, 3) = arr_fyjkc(i, 9)
Next i
sht_db.[AD1].Resize(UBound(arr_fyjkc, 1), 3) = arr_fyjkc1
1.2.3 處理庫(kù)存數(shù)據(jù)。根據(jù)導(dǎo)入的HIS系統(tǒng)原始盤(pán)點(diǎn)表、發(fā)藥機(jī)庫(kù)存藥品信息等數(shù)據(jù),對(duì)所有品種的藥品數(shù)量信息自動(dòng)進(jìn)行加減運(yùn)算,得到最終的門(mén)診藥房貨架實(shí)存數(shù)據(jù),保存在數(shù)組arr_kc中,然后導(dǎo)出到Excel表中。VBA代碼示例如下:
'處理庫(kù)存數(shù)據(jù)
arr_kc = sht_db.[S1].CurrentRegion
arr_fyjkc = sht_db.[AD1].CurrentRegion
arr_jtsj = sht_db.[AH1].CurrentRegion
For i = 2 To UBound(arr_fyjkc, 1)
dict_ydkc(arr_fyjkc(i, 1) &"/"&"zcfyj") = arr_fyjkc(i, 2)
Next i
ReDim Preserve arr_kc(1 To UBound(arr_kc, 1), 1 To 13)
For i = 1 To 4
arr_kc(1, i + 9) = arr_kc(1, i + 5)
Next i
For i = 2 To UBound(arr_kc, 1)
If dict_ydkc.exists(arr_kc(i, 2) &"/"&"zcfyj") = False Then
dict_ydkc(arr_kc(i, 2) &"/"&"zcfyj") = 0
End If
arr_kc(i, 6) = arr_kc(i, 6) - dict_ydkc(arr_kc(i, 2) &"/"&"zcfyj")
arr_kc(i, 10) = ""
arr_kc(i, 11) = arr_kc(i, 7)
arr_kc(i, 12) = ""
arr_kc(i, 13) = arr_kc(i, 9)
Next i
Set dict_ydkc = Nothing
sht1.[A1].Resize(UBound(arr_kc, 1), 13) = arr_kc
2 結(jié)果
使用門(mén)診藥房輔助盤(pán)點(diǎn)程序之前,原始盤(pán)點(diǎn)表上同一藥品存在好幾個(gè)條目,需要二次查詢自動(dòng)發(fā)藥機(jī)單品種藥品庫(kù)存,貨架藥品盤(pán)點(diǎn)后需要進(jìn)行大量的數(shù)學(xué)運(yùn)算,嚴(yán)重影響盤(pán)點(diǎn)效率。而使用門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序,人們可以直接得到門(mén)診貨架實(shí)存藥品數(shù)量,單次盤(pán)點(diǎn)時(shí)間由原來(lái)的120 min左右降至60 min左右,提高了藥師的工作效率。
3 結(jié)論
獲取庫(kù)存數(shù)據(jù)時(shí),該程序以導(dǎo)出數(shù)據(jù)的方式保存在本地計(jì)算機(jī)上,操作不便,若能直接獲取HIS系統(tǒng)和自動(dòng)發(fā)藥機(jī)藥品庫(kù)存信息,會(huì)增加操作的便捷性??傮w來(lái)說(shuō),該門(mén)診藥房輔助庫(kù)存盤(pán)點(diǎn)程序的使用,讓藥師有更多的時(shí)間為患者提供用藥服務(wù),提高了藥師的專業(yè)技術(shù)價(jià)值,同時(shí)也為提高自動(dòng)化藥房庫(kù)存盤(pán)點(diǎn)效率提供了新思路。
參考文獻(xiàn):
[1]唐哲,韋韡,西娜.我院加強(qiáng)藥品盤(pán)點(diǎn)監(jiān)管的探討[J].中國(guó)藥房,2016(10):1378-1380.
[2]袁忠偉.提高醫(yī)院藥品盤(pán)點(diǎn)賬物相符率的經(jīng)驗(yàn)淺談[J].中國(guó)執(zhí)業(yè)藥師,2015(4):51-53.
[3]謝明華,葛敏,彭佳蓓,等.自動(dòng)化發(fā)藥系統(tǒng)在我院門(mén)診藥房的應(yīng)用實(shí)踐與體會(huì)[J].中國(guó)藥房,2014(41):3889-3891.
[4]孫家艷,朱靜.韋樂(lè)海茨發(fā)藥機(jī)在本院門(mén)診藥房應(yīng)用的實(shí)踐與體會(huì)[J].北方藥學(xué),2015(11):125-126.
[5]林永進(jìn).采用VBA編制中藥采購(gòu)軟件[D].濟(jì)南:山東大學(xué),2016.
[6]金朝輝,顧錦建,鄭明琳,等.VBA語(yǔ)言在我院藥庫(kù)智能化辦公中的應(yīng)用[J].中國(guó)藥房,2016(7):987-989.
[7]王柯靜,楊波,周遠(yuǎn)大,等.基于Excel的藥品配伍禁忌審查表的開(kāi)發(fā)[J].中國(guó)藥房,2013(17):1625-1626.
[8]Excle Home.Excel VBA經(jīng)典代碼應(yīng)用大全[M].北京:北京大學(xué)出版社,2019.
[9]Excle Home論壇.常見(jiàn)字典用法集錦及代碼詳解[EB/OL].(2019-10-01)[2019-12-18].http://club.excelhome.net/forum.php?mod=viewthread&tid=868892.