基于VBA 和Visual C#的超声科排班考勤系统设计与实现
2021-06-11丁博渊
张 勇,鲁 晓,陈 杨,李 昕,丁博渊,邱 逦,罗 燕
(四川大学华西医院超声医学科,四川成都 610041)
随着超声造影、介入手术等新技术不断成熟,以及常规超声价廉无创的优势,超声检查已成为人们入院检查及体检中必不可少的项目之一。同时,超声科的人员数量不断增加,这使得超声医学科的排班和考勤工作变得日益复杂和艰巨[1-5]。
排班和考勤是科室管理与改革的重要环节,有效合理的排班和考勤关系到提升科室的整体绩效、科室对每位老师的绩效管理考核、提高科室老师工作积极性等多个方面[6-8]。超声医学科岗位类别众多,包括普通门诊班、体检班、夜班、周末班、床旁班等,不同岗位的上班时间和优先级存在差异[9]。科室排班时,需要考虑每位医生的工作量、假期剩余量、排班的公平化、合理化、调休请假情况,排班完后,需要统计每位老师的排班个数,加班与欠班情况。超声科考勤查询时,需要同时考察门诊打卡表和体检中心打卡表的信息,与排班表相比对,查找每位医生当天是否有班,在什么岗位上班,是否打卡,是否迟到,最后生成本周的考勤结果。工作量巨大,容易遗漏,难以有效管理[10-14]。
因此,一套能有效实现自动排班和考勤查询的综合系统将能很大程度地提升科室的排班效率、考勤有效性,助力科室管理。
1 系统软件总体构建
超声医学科排班考勤系统基于宏语言(Visual Basic for Applications,VBA)和Visual C#窗体应用程序技术完成软件系统构建,充分利用VBA 在Office自动化编程方面的优势和Visual C#窗体应用技术在可视化操作方面的优势,使得排班考勤系统使用便捷,可视化程度高[15-18]。
系统结构如图1 所示,分为排班表生成系统、排班表处理系统、考勤管理系统。排班表生成系统完成排班原始表格的生成,其中主要包含初始化设置、检查室和人员的标签管理、人员休假管理;排班表处理系统完成排班表由表格Excel 到文档Word的映射以及工作量的统计,其中主要包含排班表模板设置、人员列表管理、工作量统计;考勤管理系统完成每周排班表与考勤打卡信息的匹配查询,其中主要包含应该参与考勤人员的管理、考勤数据的管理、迟到和缺卡信息的统计与显示。3 个子系统产生的数据存入到本地的SQL SERVER 数据库,便于科室绩效管理。
图1 系统结构图
2 系统软件子模块构建
2.1 排班表生成系统
排班表生成系统是一个包含VBA 自动运行程序的Excel表格,主要完成排班表原始表格的生成。VBA是Visual Basic 的一种宏语言,主要能用来扩展Microsoft Office 软件的功能[19]。排班表生成系统包含“初始化设置”、“人员名单”、“轮次状态”、“排班表”4个工作表。“初始化设置”用于填写排班表必要的参数设置,例如,会诊班个数、夜班个数、周末班个数等。“人员名单”包含科室老师的姓名、应排班数量、实排班数量、超差比、每位老师标签管理表、休假管理表,这里列出所有老师参与排班的岗位信息、轮转、休假请假信息。“轮次状态”包含所有岗位标签、参与各轮转的老师列表。“排班表”主要包含程序进程控制按钮栏、检查室的标签管理、有效排班位置设置等。检查室的标签管理在第1、2 列,可以为检查室设置“门诊独坐”、“门诊会诊”、“夜班技师”、“周末技师”等标签。“初始化排班表”:把排班位置全部设置为“NULL”;“更新有效人员”:当科室老师的标签有改动时,在“人员名单”中修改标签后,点击该按钮时软件会生成新的轮次状态;“自动排班”:在参数设置后,点击“自动排班”,软件会自动完成所有检查室的排班;“门诊独坐优化”:当出现有的岗位空缺且还有老师剩余工作量时,可实现空缺岗位填补。排班表生成系统的主要流程如图2所示。
图2 排班表生成系统主要流程
2.2 排班表处理系统
排班表处理系统基于Visual C#完成构建。完成原始排班表Excel 到排班表文档Word 的映射和工作量统计。Visual C#集成了C++、Visual Basic、Java 等语言的优点。使其在用户界面设计、数据显示等方面有众多优势。
该系统采用Visual C#的COM 组件,Microsoft.Office.Interop 通过设置书签的方式,对每个检查室进行书签定位,当用户点击“一键排班”时,软件会自动匹配检查室信息,完成各个排班老师的填充,并添加排班表的表头和备注信息。“排班表模板设置”用于设置排班表输出的格式。“人员列表管理”用于参与工作量统计的老师人员名单管理,包括增加、删除、修改等。“一键排班”结束后,软件会自动统计各位老师工作量信息,同时,如果排班表后续有改动,则可以重新加载修改后的排班表,选择“Only 统计”,软件会自动统计人员列表中所有成员的工作量信息,生成工作量统计表格。同时,以柱状图方式进行显示。排班表处理系统流程如图3 所示。
图3 排班表处理系统流程
2.3 考勤管理系统
考勤管理系统基于Visual C#窗体应用程序完成编写,主要完成考勤人员的管理、考勤数据的管理、迟到和缺卡信息的统计[20]。“人员编辑”中会列出待考勤人员,可以对考勤人员进行修改、增加、删除等操作,软件会自动备份修改后的文件。同时,软件会在Visual C#的DataGridView 中列出所有人员的工号,软件以人员工号为标识,在列表中可以进行修改、增加、删除。考勤管理系统主界面中列出了周一到周日的勾选框,通过勾选“与”“否”可以自由选择考勤的日期。主界面右侧是按钮控制栏,分别加载医生技师排班表、医辅人员排班表、门诊打卡表、体检中心打卡表,软件完成岗位信息、人员信息、考勤打卡信息的自动匹配与查询,最后输出考勤结果,包括迟到信息和缺卡信息及各自对应的确切时间,并分别用柱状图的方式进行显示。考勤管理系统流程如图4 所示。
图4 考勤管理系统流程
3 系统应用结果
基于VBA 和C#的排班考勤系统已在超声医学科进行测试验证并使用。系统用Visual C#集成到同一个工程软件中,如图5 所示,启动超声医学科排班考勤系统,分别完成排班表生成系统、排班表处理系统、考勤管理系统3 个子系统功能,可以实现超声医学科从排班到考勤的整个流程。
图5 系统测试图
目前超声医学科总共有本院医务人员150 余人、进修老师50 余人,参与排班的老师高达200 余人,同时,医疗岗位有门诊独坐、门诊报告、门诊搭配、门诊会诊、术中医师、住院总医师、周末技师、周末医师等。岗位类别众多、位置分散,不同岗位的上下班时间存在差异,门诊的上班时间为8:00~11:30、下午为13:00~16:30、夜班为17:30~20:30;体检中心的第一轮为8:00~11:00,第二轮为11:00~14:00,第三轮为14:00~16:00;可见不同岗位之间存在着时间上的冲突,在自动排班时,需考虑所有可能的冲突,否则易造成重班及漏班。
为验证系统的有效性,把所有待排班的岗位类别全部列到排班表生成子系统中“排班表”工作表的第1、2 列;把会诊班个数、夜班个数、周末班个数、体检中心检查室数设置到“初始化设置”工作表;初次验证时,在“人员名单”中列出所有老师姓名、应排班数量,并设定每位老师的轮转标签,通常一位老师会参与多个岗位标签的轮转,例如某老师会同时参与门诊独坐、技师夜班、周末技师等多个岗位标签的工作轮转,同时,在“人员名单”中设定好各位老师的请假调休日期,自动排班时会自动查询每位老师在相应的日期是否有休假请求;点击“排班表”工作表中的“更新有效人员”按钮,软件会自动生成“轮次状态”工作表,列出各医疗岗位的医生轮转;在“排班表”工作表中点击“自动排班”,软件此时按照程序设定好的岗位先后顺序、对每个岗位进行岗位识别、轮次查找、岗位时间冲突检验、医生请假休假检验、医生工作量检验等工作,完成每个医疗岗位的排班。最后,得到一个包含所有医疗岗位及对应的老师信息的Excel 排班表格。
启动“排班表处理系统”,初次验证时,先对最后输出的Word 格式进行模板设置,包括数据的表格分组、字体大小、颜色等。完成后点击“一键排班”,软件即会按照预先设置好的排班表格式进行Word 版的排班表输出,并统计出各老师的工作量。
启动“考勤管理系统”,初次验证时,需对应待考勤人员工号进行编辑,点击“开始查询”,软件会自动匹配每位老师的排班信息、考勤时间信息,最后,生成该考勤时间段内出现迟到和考勤的信息。
排班表生成系统的原始排班表信息、医生的工作量统计信息、考勤迟到或缺卡信息都存入本地SQL SERVER 数据库,为科室的绩效考评提供参考依据[21]。
基于VBA 和C#的超声医学科排班考勤系统从2018 年10 月开发完成一直沿用至今,排班考勤岗的老师用时从原来的3~4 天时间减少至1 天,效率提升200%,证明了该系统的科学性和有效性。
4 结束语
综上所述,文中所开发的基于VBA 和C#的超声医学科排班考勤系统为超声医学科的日常排班工作和科室考勤管理工作提供了巨大便捷,排班考勤效率提升200%。通过系统设计并进行了验证超声医学科排班考勤系统具有几个主要特点:1)可视化:排班表处理系统和考勤管理系统均采用Visual C#进行程序设计,软件界面简单易懂,对数据统计结果采用柱状图显示,直观可读。2)通用性:排班考勤系统涉及到的人员名单、检查室标签等信息均可编辑,可适应不同检查室类别的排班,具有通用性。3)综合性:排班考勤系统是可同时实现排班表生成和考勤查询的综合管理系统,避免了排班表与考勤打卡信息难以匹配的问题。