摘要:借助Excel的VBA(Visual Basic for Applications, VBA)編程語言開發應用衛生部單病種質量控制指標系統的病例上報策略。由于Excel具有數據處理簡易性,開發和維護的低成本性,使該方法在各級醫療單位實用性、可行性高并易于推廣,從而促使我國病種質量管理措施評價系統的完善與發展。
關鍵詞:Excel;VBA編程;單Excel中VBA編程在衛生部單病種質量控制指標系統自動處理病例上報的應用
在2005年,我國衛生部下發了《醫院管理評價指南》,并依托中國醫院協會開發了\"單病種質量控制指標系統\",通過全國各醫療單位上傳的病例數據,對各病種診療過程的進行橫向、縱向分析,以達到提高醫療質量的目的。作為醫療單位,如何保證全院數千甚至數萬病例數據準確、及時、高效上報,值得深入研究。Excel電子表格的數據處理在現今在醫學領域得到廣泛應用[1-2],利用其中的VBA編寫的自動化處理程序可為醫學領域中樣本數據提供低成本、高效率應用。VBA為本文將詳細闡述應用Excel對病例數據進行自動化上報的應用,可為各醫療單位提供一套免費、高效的病例上報解決方案。
1 方法
本院電子病歷系統為內網系統,衛生部\"單病種質量控制指標系統\"為外網系統,故本院上報需進行內外網切換,在此背景下,本實驗對本院4名骨科醫生(編號A,B,C,D)分別采取一般上報和VBA編程上報完成100例膝關節、髖關節置換術上報所需時間進行實驗,并重復實驗3次,最后對實驗結果進行t檢驗統計分析。
一般上報方式:A、B、C、D每人負責 25例病例,獨自完成病種質量管理措施評價系統所需信息的錄入并上報。VBA編程上報方式:將所需錄入信息依據其在電子病歷中的分布進行分割并制成Excel表,A負責將100名患者年齡、發病日期、入院日期、出院日期信息錄入Excel表格中,以此類推分配B、C、D的工作項目;將A,B,C,D四人所錄入的信息合并,獲得完整的病例信息數據;借助VBA編寫的宏模塊,自動填單上傳。詳細步驟如下:
1.1Excel表格制定 按衛生部\"單病種質量控制指標系統\"中圍手術期預防感染(INF)病種報表中所需信息進行制表(見表1)。
1.2信息錄入 ①錄入信息分配:按本院電子病歷中信息分布的特點,將頁面來源相同的信息打包分配給項目組一個成員完成,如A完成患者年齡、發病日期、入院日期、出院日期信息錄入。B,C,D以此類推。②錄入信息:Ⅰ衛生部\"單病種質量控制指標系統\"網頁中項目的下拉框中文選項,按其對應順序的阿拉伯數字錄入,如表1中膝關節置換術第一診斷下拉框中\"膝骨關節病\"為第9個選項,錄入數字\"9\",空白選項錄入\"0\"Ⅱ.\"出生日期\"等Excel表格中錄入按\"yyyy-mm-dd\",即\"年-月-日\",\"手術日期\"等Excel表格中錄入格式\"yyyy-mm-dd hh:mm:ss\",即\"年-月-日 時:分:秒\"。③錄入信息合并:將4人所錄入信息按2.1中制定excel表格合并。④錄入信息格式標準化:按\"單病種質量控制指標系統\"將excel表格單元格中的時間信息嚴格標準化,即\"yyyy-mm-dd\"/\"yyyy-mm-dd hh:mm:ss\",轉化為文本格式。
1.3 VBA編程及自動填單上傳 VBA編寫的宏模塊,實現excel表格中錄入信息的自動填充和提交,以此實現高效上傳。代碼如下
①定義各變量名
Public mywindow As Object
Public mydocument As Object
Public r As Range, dealFlag As Range
定義常量,可配置,根據xls表格
Public Const countcol As Integer = 49 '總列數
Public Const startrow As Integer = 3 '起始行數
Public Const countrow As Integer = 183 '總行數,xls的行數
Public Const startcol As Integer = 1 '起始列數
'定義填充表單元素
Public bgname As String '報告醫生 A 1
Public bgdate As String '報告日期 B 2
Public zhzd As Integer '置換診斷 C3
……
Public jtfee As String '假體費 AV 48
②獲取excel表格數據
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
④.獲取上報頁面、填充網頁并提交
Public Sub autoFillandSubmit()
Dim returnValue As Long
getIewindow (\"單病種質量控制指標\") '對應打開的瀏覽器頁面標題
If mydocument Is Nothing Then
MsgBox \"沒有找到打開的IE頁面窗口!\", vbOKOnly, \"錯誤\"
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 '可以分多次處理,已經處理過的記錄不會重復處理
GoTo continue
End If
Call getExcelData
Do While mywindow.Busy
DoEvents
Loop
With mydocument.forms(0)
.Item(\"ctl00$SampleContent$AddControl1$ctl00$BGName\").Value = bgname '報告醫生
.Item(\"ctl00$SampleContent$AddControl1$ctl00$BGTime\").Value = bgdate '報告時間
.Item(\"ctl00$SampleContent$AddControl1$ctl00$Ddl_hip011\").Item(zhzd).Selected = True '置換診斷
……
.Item(\"ctl00$SampleContent$AddControl1$ctl00$Txt_hip113\").Value = ssfee '假體費
mydocument.getElementById(\"ctl00_SampleContent_AddControl1_ctl00_ButAdd\").Click '提交
⑤返回提交結果并繼續
dealflag.Value = \"ok\"
returnValue = MsgBox(\"已處理第\" i \"行記錄,患者住院號碼:\" hzid \",患者姓名:\" hzname \",是否繼續!\", vbYesNo, \"提示\")
If returnValue = vbNo Then '可以分批處理,點擊取消則從下一條開始
Exit Sub
End If
End With
continue:
Next i
Set mydocument = Nothing
Set mywindow = Nothing
End Sub
⑥繼續上傳下一病例 為避免批量錯誤上傳,本程序設定在一個病例上傳成功后,手動點擊\"單病種質量控制指標系統\"頁面中的\"上傳\",方可進行下一病例提交。
2 結果
本院4位骨科醫生分別采取上述2種方式上傳100例病例所需時間并重復3次的實驗結果如下表2,采用t檢驗,P<0.05差異具有統計學意義。
3 結論
優化上報工作流程及VBA編程的應用極大提高病例上報工作效率約85% 。由于目前衛生部\"單病種質量控制指標系統\"暫無批量上傳病例的接口開放,借助Excel的VBA編程方法實現病例上傳具有靈活、實用性的特點,可保質保量實現病例的快速上傳,且成本低廉,適宜在各級醫療單位推廣。
參考文獻:
[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.編輯/王敏