摘要:借助Excel的VBA(Visual Basic for Applications, VBA)編程語言開發(fā)應(yīng)用衛(wèi)生部單病種質(zhì)量控制指標(biāo)系統(tǒng)的病例上報(bào)策略。由于Excel具有數(shù)據(jù)處理簡易性,開發(fā)和維護(hù)的低成本性,使該方法在各級(jí)醫(yī)療單位實(shí)用性、可行性高并易于推廣,從而促使我國病種質(zhì)量管理措施評(píng)價(jià)系統(tǒng)的完善與發(fā)展。
關(guān)鍵詞:Excel;VBA編程;單Excel中VBA編程在衛(wèi)生部單病種質(zhì)量控制指標(biāo)系統(tǒng)自動(dòng)處理病例上報(bào)的應(yīng)用
在2005年,我國衛(wèi)生部下發(fā)了《醫(yī)院管理評(píng)價(jià)指南》,并依托中國醫(yī)院協(xié)會(huì)開發(fā)了\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\",通過全國各醫(yī)療單位上傳的病例數(shù)據(jù),對(duì)各病種診療過程的進(jìn)行橫向、縱向分析,以達(dá)到提高醫(yī)療質(zhì)量的目的。作為醫(yī)療單位,如何保證全院數(shù)千甚至數(shù)萬病例數(shù)據(jù)準(zhǔn)確、及時(shí)、高效上報(bào),值得深入研究。Excel電子表格的數(shù)據(jù)處理在現(xiàn)今在醫(yī)學(xué)領(lǐng)域得到廣泛應(yīng)用[1-2],利用其中的VBA編寫的自動(dòng)化處理程序可為醫(yī)學(xué)領(lǐng)域中樣本數(shù)據(jù)提供低成本、高效率應(yīng)用。VBA為本文將詳細(xì)闡述應(yīng)用Excel對(duì)病例數(shù)據(jù)進(jìn)行自動(dòng)化上報(bào)的應(yīng)用,可為各醫(yī)療單位提供一套免費(fèi)、高效的病例上報(bào)解決方案。
1 方法
本院電子病歷系統(tǒng)為內(nèi)網(wǎng)系統(tǒng),衛(wèi)生部\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"為外網(wǎng)系統(tǒng),故本院上報(bào)需進(jìn)行內(nèi)外網(wǎng)切換,在此背景下,本實(shí)驗(yàn)對(duì)本院4名骨科醫(yī)生(編號(hào)A,B,C,D)分別采取一般上報(bào)和VBA編程上報(bào)完成100例膝關(guān)節(jié)、髖關(guān)節(jié)置換術(shù)上報(bào)所需時(shí)間進(jìn)行實(shí)驗(yàn),并重復(fù)實(shí)驗(yàn)3次,最后對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行t檢驗(yàn)統(tǒng)計(jì)分析。
一般上報(bào)方式:A、B、C、D每人負(fù)責(zé) 25例病例,獨(dú)自完成病種質(zhì)量管理措施評(píng)價(jià)系統(tǒng)所需信息的錄入并上報(bào)。VBA編程上報(bào)方式:將所需錄入信息依據(jù)其在電子病歷中的分布進(jìn)行分割并制成Excel表,A負(fù)責(zé)將100名患者年齡、發(fā)病日期、入院日期、出院日期信息錄入Excel表格中,以此類推分配B、C、D的工作項(xiàng)目;將A,B,C,D四人所錄入的信息合并,獲得完整的病例信息數(shù)據(jù);借助VBA編寫的宏模塊,自動(dòng)填單上傳。詳細(xì)步驟如下:
1.1Excel表格制定 按衛(wèi)生部\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"中圍手術(shù)期預(yù)防感染(INF)病種報(bào)表中所需信息進(jìn)行制表(見表1)。
1.2信息錄入 ①錄入信息分配:按本院電子病歷中信息分布的特點(diǎn),將頁面來源相同的信息打包分配給項(xiàng)目組一個(gè)成員完成,如A完成患者年齡、發(fā)病日期、入院日期、出院日期信息錄入。B,C,D以此類推。②錄入信息:Ⅰ衛(wèi)生部\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"網(wǎng)頁中項(xiàng)目的下拉框中文選項(xiàng),按其對(duì)應(yīng)順序的阿拉伯?dāng)?shù)字錄入,如表1中膝關(guān)節(jié)置換術(shù)第一診斷下拉框中\(zhòng)"膝骨關(guān)節(jié)病\"為第9個(gè)選項(xiàng),錄入數(shù)字\"9\",空白選項(xiàng)錄入\"0\"Ⅱ.\"出生日期\"等Excel表格中錄入按\"yyyy-mm-dd\",即\"年-月-日\",\"手術(shù)日期\"等Excel表格中錄入格式\"yyyy-mm-dd hh:mm:ss\",即\"年-月-日 時(shí):分:秒\"。③錄入信息合并:將4人所錄入信息按2.1中制定excel表格合并。④錄入信息格式標(biāo)準(zhǔn)化:按\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"將excel表格單元格中的時(shí)間信息嚴(yán)格標(biāo)準(zhǔn)化,即\"yyyy-mm-dd\"/\"yyyy-mm-dd hh:mm:ss\",轉(zhuǎn)化為文本格式。
1.3 VBA編程及自動(dòng)填單上傳 VBA編寫的宏模塊,實(shí)現(xiàn)excel表格中錄入信息的自動(dòng)填充和提交,以此實(shí)現(xiàn)高效上傳。代碼如下
①定義各變量名
Public mywindow As Object
Public mydocument As Object
Public r As Range, dealFlag As Range
定義常量,可配置,根據(jù)xls表格
Public Const countcol As Integer = 49 '總列數(shù)
Public Const startrow As Integer = 3 '起始行數(shù)
Public Const countrow As Integer = 183 '總行數(shù),xls的行數(shù)
Public Const startcol As Integer = 1 '起始列數(shù)
'定義填充表單元素
Public bgname As String '報(bào)告醫(yī)生 A 1
Public bgdate As String '報(bào)告日期 B 2
Public zhzd As Integer '置換診斷 C3
……
Public jtfee As String '假體費(fèi) AV 48
②獲取excel表格數(shù)據(jù)
Public Sub getExcelData()
Dim colvalue As String
For j = startcol To countcol Step 1
colvalue = Trim(r.Cells(1, j).Value)
Select Case j
Case 1
bgname = colvalue
……
Case 48
jtfee = colvalue
End Select
Next j
End Sub
③獲取瀏覽器窗口
Public Sub getIewindow(ByVal ietitle As String, Optional ByVal waittime As Integer = 0)
Dim myshellwindow As New SHDocVw.ShellWindows
Dim myindex As Long
For myindex = 0 To myshellwindow.Count - 1
If VBA.TypeName(mshellwindow.Item(mindex).document) = TMLDocument\" Then
If myshellwindow.Item(myindex).document.Title = ietitle Then
If waittime = 1 Then
Do While myshellwindow.Item(myindex).Busy
Application.Wait (Now + TimeValue(\"0:00:01\"))
DoEvents
Loop
End If
Set mydocument = myshellwindow.Item(myindex).document
Set mywindow = myshellwindow.Item(myindex)
myshellwindow.Item(myindex).Visible = True
Exit Sub
End If
End If
Next myindex
End Sub
④.獲取上報(bào)頁面、填充網(wǎng)頁并提交
Public Sub autoFillandSubmit()
Dim returnValue As Long
getIewindow (\"單病種質(zhì)量控制指標(biāo)\") '對(duì)應(yīng)打開的瀏覽器頁面標(biāo)題
If mydocument Is Nothing Then
MsgBox \"沒有找到打開的IE頁面窗口!\", vbOKOnly, \"錯(cuò)誤\"
Exit Sub
End If
For i = startrow To countrow Step 1
Set r = Range(\"A\" i \":\" \"AA\" i)'可考慮配置化
Set dealFlag = Range(\"AX\" i)'可考慮配置化
If dealflag.Value = \"ok\" Then '可以分多次處理,已經(jīng)處理過的記錄不會(huì)重復(fù)處理
GoTo continue
End If
Call getExcelData
Do While mywindow.Busy
DoEvents
Loop
With mydocument.forms(0)
.Item(\"ctl00$SampleContent$AddControl1$ctl00$BGName\").Value = bgname '報(bào)告醫(yī)生
.Item(\"ctl00$SampleContent$AddControl1$ctl00$BGTime\").Value = bgdate '報(bào)告時(shí)間
.Item(\"ctl00$SampleContent$AddControl1$ctl00$Ddl_hip011\").Item(zhzd).Selected = True '置換診斷
……
.Item(\"ctl00$SampleContent$AddControl1$ctl00$Txt_hip113\").Value = ssfee '假體費(fèi)
mydocument.getElementById(\"ctl00_SampleContent_AddControl1_ctl00_ButAdd\").Click '提交
⑤返回提交結(jié)果并繼續(xù)
dealflag.Value = \"ok\"
returnValue = MsgBox(\"已處理第\" i \"行記錄,患者住院號(hào)碼:\" hzid \",患者姓名:\" hzname \",是否繼續(xù)!\", vbYesNo, \"提示\")
If returnValue = vbNo Then '可以分批處理,點(diǎn)擊取消則從下一條開始
Exit Sub
End If
End With
continue:
Next i
Set mydocument = Nothing
Set mywindow = Nothing
End Sub
⑥繼續(xù)上傳下一病例 為避免批量錯(cuò)誤上傳,本程序設(shè)定在一個(gè)病例上傳成功后,手動(dòng)點(diǎn)擊\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"頁面中的\"上傳\",方可進(jìn)行下一病例提交。
2 結(jié)果
本院4位骨科醫(yī)生分別采取上述2種方式上傳100例病例所需時(shí)間并重復(fù)3次的實(shí)驗(yàn)結(jié)果如下表2,采用t檢驗(yàn),P<0.05差異具有統(tǒng)計(jì)學(xué)意義。
3 結(jié)論
優(yōu)化上報(bào)工作流程及VBA編程的應(yīng)用極大提高病例上報(bào)工作效率約85% 。由于目前衛(wèi)生部\"單病種質(zhì)量控制指標(biāo)系統(tǒng)\"暫無批量上傳病例的接口開放,借助Excel的VBA編程方法實(shí)現(xiàn)病例上傳具有靈活、實(shí)用性的特點(diǎn),可保質(zhì)保量實(shí)現(xiàn)病例的快速上傳,且成本低廉,適宜在各級(jí)醫(yī)療單位推廣。
參考文獻(xiàn):
[1]Hall,W.H.. An electronic application for rapidly calculating Charlson comorbidity score[J].BMC Cancer,2004.4:94.
[2]Bax, L. et al. Development and validation of MIX:comprehensive free software for meta-analysis of causal research data[J].BMC Med Res Methodol,2006.6:50.編輯/王敏