利用Oracle触发器排除HIS系统故障2例
2016-11-09王兴强刘长兴
王兴强,刘长兴
(济南军区总医院信息科,山东济南,250031)
利用Oracle触发器排除HIS系统故障2例
王兴强,刘长兴
(济南军区总医院信息科,山东济南,250031)
本文介绍了2例“军卫一号”系统故障的分析与利用Oracle触发器的解决方法。
军卫一号;数据库;触发器
0 前言
“军卫一号”医院信息系统在我院已运行十多年,系统稳定,运行良好。但随着LIS、PACS、电子病历、感染控制、手术麻醉、成本核算、移动医疗、虚拟化等系统的上线,要求HIS系统提供接口,实现信息共享,甚至对HIS系统的数据还有严格要求,需要对“军卫一号”Oracle数据库不断升级改造[1-3],对HIS系统不断完善及开发[4-8]。本文介绍2例通过Oracle触发器排除HIS系统数据不规范引起的故障。
1 故障一
我院执行全成本核算,全成本核算系统根据开单科室、执行科室等多种因素计算成本分摊、收入分成等数据,要求HIS系统数据完整规范,如数据不完整或不规范,无法核算或核算不准确。
1.1 故障现象
成本核算系统试运行期间,部分科室反映核算数据不准确,成本分摊、收入分成都比科室自行掌握的数据少。
1.2 故障分析
在住院费用明细表INP_BILL_DETAIL中,部分数据开单科室字段ORDERED_BY为空。对不完整数据分析,为住院计价录入时误操作,未录入开单科室或删除。
1.3 故障排除
通过建立Oracle触发器,从后台解决此问题。对住院费用明细表INP_BILL_DETAIL,建立插入操作INSERT触发器,如下:
CREATE OR REPLACE TRIGGER INPBILL.INP_BILL_DETAIL_INSERT_ORDERED //创建触发器
计价录入项目开单科室均为本科室,因此直接将患者所在病区代码赋值给开单科室即可。这样避免信息科工程师进行后台维护,既减少维护工作量,又规范完善了数据。
2 故障二
在HIS系统中,患者需要转科时,转出、转入科室的医生和护士都要进行相应转科操作。首先应该是转出科室医生将患者在住院医生工作站中做“移出”操作,后转出科室护士在护士工作站中做“转科”操作,转入科室护士在护士工作站做“转入”操作,最后转出科室医生在医生工作站做“移入”操作,完成整个转科流程。
2.1 故障现象
科室医生在医生工作站的患者列表中看不到转入患者信息,只能在全科患者列表中找到,也无法做“移入”操作,可能会造成主管医生在集中处理患者医嘱或病历时遗漏该患者。
2.2 故障分析
没有按正常的转科流程进行操作,转出科室医生还没有将患者“移出”,转出科室护士就进行了“转科”操作,转入科室继续“转入”,造成转入科室医生无法进行“移入”操作,也无法在自己的患者列表中找到该患者。如果及时发现问题,转入科室护士做“取消入科”操作,重新按照正常的转科流程进行操作也可以进行补救,但如果转入科室医生已经下了医嘱,就不能再重新转科,只能在后台修改联机病历描述MR_ON_LINE中的REQUEST_DOCTOR_ID字段。
2.3 故障排除
转出科室护士在进行“转出”操作时,在后台数据库中生成一条患者转科记录PATS_IN_TRANSFERRING,对该表建立插入操作INSERT触发器,判断是否为医生未做“移出”操作,如果没有,则后台修改数据,将患者“移出”,具体如下:
CREATE OR REPLACE TRIGGER INPADM.”PATS_IN_TRANSFERRING_INSERT” //创建触发器
BEFORE INSERT ON "INPADM"."PATS_IN_TRANSFERRING" FOR EACH ROW
WHEN (NEW.DEPT_TRANSFERED_FROM IS NOT NULL) //条件为转出科室非空
DECLARE
医生在做“移出”操作时,将联机病历描述MR_ON_LINE的REQUEST_DOCTOR_ID字段置为“*”,STATUS字段也置为“*”。通过创建触发器PATS_IN_TRANSFERRING_INSERT,提取转科患者未移出病历,后台修改联机病历描述,置为移出状态后,转入科室医生可将患者病历“移入”,在自己的患者列表中即可看到该患者病历。
3 总结
上述故障是由操作人员非正常操作而引起的数据不规范、不完整的故障。通过对相应的数据库表创建触发器,筛选执行条件,实现后台数据自动修改,排除故障。通过触发器排除故障,简单高效,但在正式服务器启用触发器时要进行反复测试,一旦触发器出现问题,可能对整个系统带来非常严重的后果,影响正常的系统运行。
[1] 李志勇,崔珊珊,韩菲.“军卫一号”医保结算中存在的问题及解决办法[J].中国医疗设备,2012,27(12):96-97.
[2] 王兴强,刘长兴,刘国伟. “军卫一号”数据库从64位到32位的异地重建[J].医疗卫生装备,2014,35(4):61-62.
[3] 王兴强,刘长兴,刘国伟. “军卫一号”数据库“瘦身”方法设计[J].医疗卫生装备,2014,35(8):67-68.
[4] 王兴强,刘长兴,刘国伟.改进的药品便捷输入法在“军卫一号”上的应用[J].医疗卫生装备,2011,32(6):55-56.
[5] 王兴强,刘长兴,刘国伟.“军卫一号”中出现“一号多人”问题的分析与对策[J].中国医疗设备,2011,26(6):45-46.
[6] 王兴强,刘长兴,刘国伟.基于“军卫一号”工程的二次开发模式[J].中国医疗设备,2011,26(4):49-51.
[7] 王兴强,徐茂云.基于“军卫一号”的危急值警示功能的设计与实现[J].中国医疗设备,2012,27(3):98-99.
[8] 王兴强,刘长兴,刘国伟. 抗菌药物联用警示在“军卫一号”上的应用[J].医疗卫生装备,2013,34(10):51-53.
Two Cases of Troubleshooting for HIS System’s Failure by Oracle Trigger
WANG Xing-qiang,LIU Chang-xing
(Department of Information, General Hospital of Jinan Military Region, Jinan 250031)
This paper introduces the analysis of the failure of 2 cases of "military health No. 1" system and the solution of the Oracle trigger.
No.1 Military Medical System; Database; Trigger
国家自然科学基金(81502896);山东省自然科学基金(BS2015YY022)
刘长兴,E-mail: xingqiangwang@163.com。