随着信息技术的快速发展, 我国传染病防控工作也日益依赖于信息技术的先进性和高效性。2003年SARS暴发后, 中国疾病预防控制中心研发了中国疾病预防控制信息系统 (以下简称“中疾控系统”) , 内含26个子系统, 覆盖我国各级各类医疗卫生机构和卫生行政部门, 旨在将传染病疫情发生情况及时从医疗机构源头采集上报至各级疾病预防控制中心, 实现传染病防控快速响应、准确决策、有效干预的目的, 有效遏制重大传染病疫情及群体性不明原因疾病的暴发[1]。但各级系统用户只能作为使用者参与系统的应用, 被动地熟悉和掌握系统现有的功能, 未能获得任何个性化定制权限, 无法使相关功能更加契合实际工作需要。
目前, 系统的省级管理员知晓突发公共卫生事件发生情况的方式有以下2种:通过查询“中疾控系统”中的突发公共卫生事件信息管理系统 (以下简称“突发系统”) ;通过下级疾控机构疫情管理员电话或者短信上报。疫情接报的时间直接影响疾控部门对事件干预和处理的进度。因此, 人为定时关注系统中突发事件报告与实时监控相比, 其时效性可能存在较大差距。为此, 设计开发一套突发公共卫生事件管理辅助软件, 实现计算机代替人工进行实时在线自动监控和采集“突发系统”中事件的基本信息并及时提醒, 可促进传染病疫情日常监控管理工作的信息化和智能化, 有效提高疫情报告信息处置效率。
1 主要做法及程序设计思路
“突发系统”是B/S架构的Web应用系统, 各级疾病预防控制中心的业务管理员根据不同的权限可以查询到所属辖区内报告的突发公共卫生事件的汇总及个案明细信息。考虑不依托“中疾控系统”开发商提供数据或服务接口的前提, 采用MicroSoft.Net平台下的WebBrowser浏览器控件, 开发一个可以实现对系统中相关数据页面进行自动监控和数据采集的应用程序软件, 改善了基于B/S架构的Web应用程序在用户端“弱控制”的不足。基于信息安全和部署便利性的需求, 本软件采用C/S架构, 使用MicroSoft.Net平台下的C#语言编写开发, 集成WebBrowser、Office API、短信平台等多种成熟技术, 实现对“突发系统”关键页面的数据抓取和应用。
1.1 设计思路
本软件通过WebBrowser浏览器控件对“突发系统”的页面进行操作和控制, 利用定时器设置定时每隔60秒模拟触发页面上的查询按钮[2], 以实现对事件管理页面数据的自动刷新, 同时避免因长期无操作导致系统认证超时。当页面加载执行完毕后, 根据软件程序中默认的文档清理算法, 解析HTML网页格式文档, 对当前页面上所有的突发事件基本信息进行抓取, 然后以突发事件名称和事件ID两个字段作为联合主键, 逐条与本地数据库中的已有记录进行比对, 判断是否属于新发的突发事件。同时启动巡检函数, 查询到数据库中的信息提醒字段标注为未提醒的突发事件, 则对用户进行程序弹窗或者短信提醒。如未发现新事件, 软件则自动执行循环执行以上操作直至发现新事件, 以此来实现不间断的在线监控。最后, 通过调用Office API, 抽取突发事件的关键字段信息对预先植入WORD报告模板的书签进行匹配更新, 即可自动、快速地生成报告格式文档。
1.2 可行性分析
通过对页面源文件的分析, 发现突发公共卫生事件列表页面文档为标准化的HTML文档格式, 需要监控和采集数据的页面由查询条件区域和数据显示区域组成, 具备页面分析和数据采集利用的可能性。通过对页面元素进行分析, 发现需要获取的信息元素均集中在数据显示区域事件列表的TABLE元素中, 包含有:突发公共卫生事件级别、事件名称、报告地区、状态、创建时间、最近修改、发病数、死亡数、审核状态等字段。上述所有字段信息均存在页面中每一个<tr></tr>记录行标签内, 每一个关键字段占用一个<td></td>单元格, 需要抓取的关键信息字段均以文本和占位符形式存储在单元格内部[3]。
2 主要功能和成效
根据上述设计思路, 软件开发过程中主要实现了单点登录、页面自动刷新、页面数据抓取、报告自动生成四个方面的功能, 主要技术要点和实现方式具体列举如下:
2.1 单点登录
“中疾控系统”登录门户现已实行数字证书认证登录, 插入证书介质后只需要在页面上输入证书口令即可实现登录。在完成页面加载后, 在程序中进行循环查找, 定位到ID或者NAME属性值为“UserPwd”的INPUT标签[4], 然后将用户的数字证书口令进行赋值, 并在程序内部通过WebBrowser对页面进行控制, 调用页面表单提交函数, 完成对“登录”按钮提交事件函数的模拟人工触发, 通过密码验证后即可登录系统。
2.2 自动刷新查询
突发公共卫生事件查询页面上设置有“查询”按钮, 用于查询报告的突发事件信息。根据自动查询的需求, 需使用程序模拟人工触发该按钮。页面中该按钮使用的是INPUT标签, VALUE属性值为“查询”, onclick事件调用JS查询函数。利用该元素的唯一属性值筛选过滤掉其他标签元素, 再逐层嵌套循环查找, 利用GetAttribute (“value”) 属性在页面中唯一定位该按钮元素, 然后在程序内部调用单击查询函数, 完成对“查询”按钮的模拟人工触发。完成操作后会显示相应时间段内的所有突发公共卫生事件列表。
2.3 页面元素抓取
突发公共卫生事件关键基本信息全部集中存储于页面中的TABLE标签内部, 因页面中存在多个TABLE标签, 可以唯一定位到目标是CLASS属性值为“tbMain”的TABLE标签, 然后依次循环查询CLASS属性值为“tbMain_data”的TR行标签, 截取行标签内部所有单元格TD的内容, 最后利用正则表达式或者其他预设好的文档清洗算法对内容进行筛选取值, 直至读取到当前TABLE结束标签后完成所有事件信息的采集。
2.4 自动填写生成事件报告
突发公共卫生事件报告需由业务人员根据事件关键信息填写生成WORD文档并打印审批, 通过在突发事件报告模板中对需要赋值的位置插入对应信息的书签标识, 让程序使用Office API的相关方法, 找到模板中的书签名, 并在书签处写入要插入的数据, 操作完成后便可在指定操作系统路径下自动生成以事件名称命名的WORD文档。
3 讨论
该辅助软件经广西疫情管理人员在实际工作中测试和使用, 极大地减轻了系统业务管理员的工作量。如:改进了人为监控模式存在的弊端, 实现了实时数据采集和分析、自动预警新发事件, 有效地缓解值班工作人员压力;可快速、准确地生成突发公共卫生事件报告, 既能减少人为手工操作产生的错误, 又能极大地提高工作效率。该软件虽然实现了对“突发系统”进行自动监控和数据采集的目的, 但依赖于对页面HTML格式标签文本的识别和抓取, 如系统开发商因业务工作需要对相关页面进行了变更, 那么软件也要做相应的调整, 才能保证信息获取准确。
基于WebBrowser的突发公共卫生事件信息管理系统自动监控和告警应用软件开发, 通过多种成熟信息技术的整合利用, 有效改进了工作模式, 提高了工作效率。据统计, 广西现有省、市、县级疾病预防控制中心120余家, 各地疾病预防控制机构业务工作人员均有类似的工作需求。该软件针对性强、操作简单, 具备大范围推广使用的需求和可能性。同时, 这种基于网页数据采集的软件设计思路为公共卫生和医疗行业各类大型网络信息系统数据采集和二次开发应用提供了依据。
本文地址://www.qlpinke.com//article/5726.html