摘 要 :借助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 '检测体费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 等于 see '检测体费
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编程方法实现病例上传具有灵活、实用性的特点,可保质保量实现病例的快速上传,且成本低廉,适宜在各级医疗单位推广.