张 博,许 锋
(北京大学第三医院医学工程处,北京 100191)
当今信息技术的迅猛发展和在各个领域快速而广泛的应用,对医院的信息化建设提出了新的要求与挑战,医院的信息化管理进入了新的考验阶段[1-2]。医学工程处作为医院的一个职能部门应紧跟时代潮流,建设自己的信息管理系统,对医疗设备进行全生命周期的管理,尤其是相对薄弱的医疗设备维修环节的信息管理系统。目前,大多数医院对设备的维修保障记录还停留在纸质介质或者将纸质记录简单转换为电子表格,这不仅增加了工程师的负担,还很难保证记录的及时、准确[3],同时也大大增加了与临床之间因维修记录不准确导致的纠纷风险。另外,记录的数据难以查询,给所记录数据的统计和追溯工作带来巨大困难。
为了解决目前存在的问题,依据我院现有维修工作流程,以提高维修人员维修效率为原则,利用Foxtable软件自主开发了一套基于客户端/服务器(Client/Server,C/S)架构[4]的医疗设备维修管理系统,以实现日常医疗设备维修登记[5]的电子化、设备固定资产信息和设备维修状态的可查询化、维修申请表格生成的自动化。
本文设计的维修管理系统是医疗设备管理系统的分支,即医疗设备全生命周期管理中的维修环节。本系统是按照日常维修工作中的送修流程设计的。
日常送修工作流程分为3个阶段:(1)送修阶段。送修人员将待修设备送到维修部门并登记。(2)维修阶段。这是维修人员对设备修理的阶段,这个阶段的流程如下:维修人员对待修设备进行检测,判断是否可以自主维修,若可以,则自主修理,在维修中如果产生费用,则修好后需要填写维修申请后使用科室方可取走,否则修好后直接通知使用科室取走;若不能自主维修,则需外送维修,登记后联系厂家取走,设备修好后若产生费用,则需要填写维修申请后使用科室方可取走,否则直接通知使用科室取走。(3)取走阶段。电话通知使用科室取走设备并销账。日常送修工作流程如图1所示。
图1 日常送修工作流程图
在这3个阶段中,直接的参与人员只有送修人员和维修人员,因此本系统按照直接参与维修流程人员的不同,将系统设计成两大客户端,即送修登记客户端和维修管理客户端。系统结构图如图2所示。
图2 系统结构图
1.1.1 送修登记客户端
送修登记客户端面向送修人员,所有与送修人员有关的操作都在此客户端内完成。对应送修流程中的送修与取走阶段,客户端包括登记、查询和取走3个模块。登记模块用于录入维修设备信息,包含登记日期、设备名称、设备编号、科室、电话、故障原因、设备附件、送修人姓名,记录人姓名等必填信息。录入完成后,系统自动生成登记标签(包含登记日期、科室、电话、查询条码等信息)并生成打印预览,核对标签信息后,将标签打印出来粘贴在设备上便于取走时查找。查询模块用于科室查询在修设备的状态,如待修、已修好、待取等。可通过设置科室名称、设备名称、送修日期等条件进行查询。取走模块用于取件人员取走设备信息(取走日期、取走人员、交接人)的录入和销账。取件人员在拿到被取设备时,用条码枪扫描设备登记标签上的条码,客户端自动调出该设备信息(包含设备附件情况)。录入取走人姓名、交接人姓名、取走日期3个必填项并核对设备附件后,方可将设备取走并完成销账。同时该设备的维修状态自动更新为“已取走”。送修登记客户端界面如图3所示。
图3 送修登记客户端界面
1.1.2 维修管理客户端
维修管理客户端面向维修人员。对应维修人员的工作流程,客户端设计成维修记录、综合查询、管理权限设定、外修登记四大功能模块。
维修记录模块包括维修状态、故障原因、处置方法3个部分。设备信息显示用于维修人员核对修理设备的信息,以确保维修设备和登记设备一一对应,避免误操作。故障原因包括维修人姓名和故障原因2个部分,用于对维修过程的记录。处置方法分为已修好、等配件和外送维修3种,这3种处置方法对应3种维修状态,前2种对应自修,第3种对应外修。当选择外修时,维修状态变为“外修”,同时转至外修登记标签,录入外修登记信息。若维修产生费用,点击“维修申请”按钮,系统自动生成维修申请单并打印。
综合查询模块包括固定资产查询和维修状态查询2个部分,主要用于日常工作中在修设备固定资产信息的查询和维修状态的查询。固定资产查询是以“设备编号”为查询项,查询内容包括生产厂家、原值、保修期限、使用科室、采购员等信息。在实际应用中保修期限对维修人员来说是很有价值的,是作为联系厂家免费维修的依据。维修状态查询用于在修设备状态的查询,便于维修人员合理安排时间完成维修工作。查询可按照科室、维修状态、外修与否等条件进行。
管理权限设定模块用于设置用户的使用权限。用户分为送修人员、维修人员、管理员、开发者4类,这4类用户的权限由低到高。其中开发者具有最高权限,可以查看、编辑、修改、删除所有内部表格的内容,设置其他用户的使用权限,开发应用模块的权限。管理员除了开发应用模块的权限外,其他权限等同于开发者的权限。维修人员限在维修管理客户端内使用,不能修改任何表内已有内容。送修人员限在送修登记客户端内使用,不能修改任何表内已有内容。
外修登记模块包括外修登记和维修申请单2个子模块,用于设备外修相关信息的记录和维修申请单的生成和打印。外修登记模块根据使用环境的不同,设计成既可从维修记录模块调用(用于科室送修),也可到外修登记模块里直接使用(用于厂家工程师带走维修)。维修申请单模块设计成既可从维修记录模块直接调用(用于自修产生费用时,需要生成的维修申请单),也可单独从外修登记模块中的维修申请单模块中使用(用于外修产生费用时,需要生成的维修申请单)。维修管理客户端界面如图4所示。
图4 维修管理客户端界面
开发平台是开发者提供的软件开发环境[6],包括系统软件、支持二次开发的工具软件,数据库,硬件支持平台,输入/输出外设等。本系统作为一款应用软件也应该具有相应的开发平台,包括软硬件开发平台、数据库和外设。
1.2.1 软硬件平台和外设
软件平台为Foxtable软件,它是一个高效开发工具[7-8],集成了 Excel、Access、Foxpro、VB 以及易表等操作软件的优势,在数据的录入、查询、统计以及报表生成等方面均具有强大的功能。
硬件为1台联想台式机(含显示器、鼠标、键盘),配置:Intel Core Due CPU E7500,4 GB 内存,1 TB 硬盘容量。
外设为1把条码扫描枪和1台条码标签打印机。
1.2.2 数据库
Foxtable内建数据库软件,因此直接根据系统架构思路建立相应的表单。在系统中,建立了维修登记表(主表)、人员表、资产表、外修登记表、维修申请表。维修登记表包括维修状态、送修日期、科室、电话、设备编号、设备名称、设备附件、故障内容、送修人、接收人、维修人、故障原因、交接人、取走人、取走日期等信息,其中[_Indentify]隐藏列为维修登记表的主键。人员表录入所有维修人员的名字。资产表是从现有固定资产系统以Execl文件格式导出,再通过Foxtable软件中自带的导入工具,将Execl文件导入并生成资产表,包括本院名称、使用科室、生产厂家、供应商名称、设备编号、出厂编号、保修截止时间、原值等信息,[设备编号]为该表的主键。外修登记表包括取走日期、设备编号、维修公司名称、取回日期等信息,[设备编号]为该表主键。对各个表的操作可以通过对控件和事件的编程实现。
本系统包含送修登记和维修管理2个客户端,2个客户端均设置不同用户的登录权限。当用送修人员用户登录时,程序调用送修客户端窗口即实现登录送修登记客户端。当用维修人员用户登录时,程序调用维修人员窗口即实现登录维修管理客户端。2个客户端(窗口)是独立的、互不影响,但同时它们又共用维修登记表里面的数据。以上功能通过在Foxtable软件的“项目属性”里的“After-LoadProject”事件中添加代码实现。客户端选择流程如图5所示。
图5 客户端选择流程图
2.2.1 送修登记客户端
送修登记客户端是用Foxtable软件中的窗口设计工具制作的,包括登记、查询、取走3个标签。在登记标签中,添加送修日期、科室、电话、设备编号、设备名称、设备附件、故障内容、送修人、接收人9个项目的输入控件,并关联维修登记表的相应项目。在表属性中的“DataColChanged”事件中添加代码,实现输入设备编号后设备名称、科室的信息自动填充,同时“设备编号”输入控件支持条码扫描枪直接扫码输入。添加“确定”按钮,在“click”事件中添加代码,实现接收标签的打印功能。标签采用热敏不干胶标签纸,包含送修时间、科室、电话以及登记编号条码信息(支持扫码查找维修设备)。代码如下:
'打印标签
Dim doc As New Printdoc
doc.PageSetting.Width=60 '纸张宽度为60mm
doc.PageSetting.Height=30 '纸张高度为30mm
Dim rx As new prt.RenderText
rx.Text=Tables("维修登记").Current("送修日期")
doc.Body.Children.Add(rx)
rx=New prt.RenderText
rx.Text=Tables("维修登记").Current("科室")
doc.Body.Children.Add(rx)
rx=New prt.RenderText
rx.Text=Tables("维修登记").Current("电话")
doc.Body.Children.Add(rx)
'打印条码
Dim rg As New prt.RenderGraphics
Dim Bar As New BarCodeBuilder
Bar.Symbology=Barpro.Symbology.Code39
bar.Code=Tables("维修登记").Current("_identify")
Bar.AddCheckSum=False
rg=new prt.RenderGraphics
bar.DrawOnCanvas(rg.Graphics,0,0,1)
Doc.Body.Children.Add(rg)
'打印预览
doc.Preview
在查询标签中,添加日期、科室、电话3个输入控件,用于查询条件的录入。添加table控件,并绑定维修登记表,用于显示查询结果。添加“查询”和“条件取消”按钮,在“click”事件中添加代码,实现查询功能。
在取走标签中,添加table控件,并绑定维修登记表,用于显示待取走的设备信息。在标签的“click”事件中添加代码,实现点击取走标签时自动筛选待取走设备,并显示在table控件中。添加取走人、交接人、取走日期、附件信息等输入控件,并与维修登记表相应项关联,完成取走相关信息的录入。再添加“确定”按钮,在“click”事件中添加代码,实现录入信息的确认和维修状态的改变(“待取走”变成“已取走”)。
2.2.2 维修管理客户端
在Foxtable的窗口编辑器里,新建名为“维修管理客户端”的窗口,在窗口内添加维修记录标签、综合查询标签、管理权限设定标签、外修登记标签。以下分别对4个标签内添加不同的功能控件,以实现设计的功能:
(1)维修记录标签。在维修记录标签中,插入与维修登记表关联的table控件,用于显示待修设备信息;添加对应维修登记表中的维修人、故障原因2个输入控件;添加已修好、等配件、外送维修3个单选框控件,最后添加“确定”和“维修申请单”2个按钮控件并编写代码实现以下功能:当选择“等配件”或“已修好”单选框并按下“确定”按钮时,维修状态自动切换到“等配件”或“已修好”状态;当选择“外送维修”单选框并按下“确定”按钮时,维修状态自动切换到“外送维修”状态,同时跳转到外送维修标签,将设备相关信息(如设备编号、科室、设备名称)自动添加到该标签的相关位置上;维修发生费用时,按下“维修申请单”按钮,“维修申请单”窗口跳出,填写相关信息后,可打印维修申请单。
(2)综合查询标签。综合查询标签中包含固定资产查询和维修状态查询。固定资产查询是独立窗口(如图6所示),主要以设备编号为查询依据,在输入设备编号后,按“确定”按钮,将自动显示生产厂家、原值、保修期限、使用科室、采购员等信息。维修状态查询可根据科室、送修日期、设备编号、送修时段等输入条件,查找相应的设备维修状态,如待维修、外修、完成、取走等状态。
图6 固定资产查询窗口
(3)管理权限设定标签。利用Foxtable的用户权限菜单,设置送修人员、维修人员、管理员、开发者4类用户,它们的权限由低到高。添加“用户设置”和“用户切换”2个按钮控件,在“click”事件内,分别编写代码Syscmd.Project.Users()和Syscmd.Project.SwitchUser(),调用Foxtable软件的“用户设置”和“用户切换”2个窗口,用于设置用户权限和切换用户。
(4)外修登记标签。外修登记标签包含外修登记和维修申请单2个部分。外修登记为主窗口,添加与外修登记表中相对应的取走日期、设备名称、设备编号、公司名称、取走人、取走人电话、送还日期、交接人等输入控件。再添加与外修登记表关联的table控件,用于显示记录的具体内容。维修申请单部分设计成独立窗口,添加与维修申请表中相对应的日期、科室名称、联系人、电话、设备名称、设备编号、SN、预计支出等输入控件。再添加“确定”按钮控件,编写代码Foxtable内部WordReport()类,套用现有Word版维修申请单,实现维修申请单的套打功能。
医疗设备维修管理系统的设计实现了医疗设备送修的电子登记,主要有以下效果:(1)实现了医疗设备日常维修(送修)登记的电子化、无纸化;(2)相对于人工记录的记录信息不全,电子登记更加规范,信息更加清楚,避免了与临床之间因记录信息不全而产生的纠纷,同时便于日后维修设备的管理和统计;(3)实现了设备日常维修过程的全记录、可追溯;(4)各种外围设备(条码扫描枪、条码标签打印机等)的使用,提高了维修登记工作的效率,节省了维修人员的额外劳动时间;(5)维修申请单的自动生成功能缩短了付费维修报销流程的时间,使维修工作效率更高。
本系统基本满足了目前日常设备维修管理的基本要求,提高了维修效率,降低了维修纠纷发生率,使维修管理更科学、更高效、更规范。在使用中免不了出现一些报错、死机的情况,因此还需要不断完善,去除使用过程中的一些bug,添加一些新的功能模块,以适应工作的需要。如添加维修备件出入库的功能,并使之与维修登记的设备对应。由于Foxtable软件强大的扩展功能,将来可将系统扩展到移动互联网端,临床有望通过手机微信公众号实现在线查询和消息推送等功能。