彭建明:HIS人生·实践篇
计算机是一门需要理论和实践相结合并且知识更新很快的技术,这有点像医院医生光有丰富的理论还不够,必须要有大量的实践和不断的总结。有些医院信息科工程师认为医院内技术含量的事情太少,实践的机会太少,这些都影响了自己的成长。其实机会都是创造出来的,利用一切空闲时间看书,利用闲暇时间或晚上值班时间做实验,主动参与信息科加班工作,向公司工程师认真学习,不断总结,这些都是成为优秀HIT工程师的基础。非常感谢新疆自治区人民医院院领导和科室领导在我有一定基础的时候,为我创造了很多实践机会。我们院领导非常愿意我去帮助新疆兄弟医院和单位解决问题。在这个过程中,我也得到了进一步成长。
工作20多年,一直坚持研究技术,近几年当信息中心主任,我也坚持和科室系统管理员一起分析和处理复杂的系统问题。计算机是理论加实践的应用技术,我在完成自己医院系统维护的同时,也帮助新疆其他医院、政府、企业等很多单位处理ORACLE数据库的问题,我会挑一些比较有代表性的案列进行剖析。
1 初显身手
2000年,我已开始学习ORACLE数据库,但因为当时没有实践环境,因此我一直坚持看书。有一天核心HIS数据库的ORACLE空间突然爆发式增长。按照当时的速度应该不超过一个星期,就会用光服务器磁盘空间。当时10000转的SCSI磁盘都很小,记得我们用了四块9.1G的磁盘做了一个RAID5阵列,可用空间是27G。医院找了很多人咨询,都没有碰到这个情况。最后我在一本英文资料中找到了问题原因。ORACLE8.1.5建表时有很多参数,其中有两个关键参数:一个是INIT EXTENT,另外一个是PCREASE。默认INIT EXTENT 512K,PCREASE 50%,数据空间增长的公式512k*(1+0.5)n次方。这种增长是可怕的,应该是ORACLE8.1.5的一个BUG,我将所有的数据表PCREASE改成了0,按照理论每次数据增长都是512K。效果立竿见影,数据库空间一个月都不见明显增长了。我们的领导很高兴,软件公司的经理更高兴。这次故障处理,让我更加坚定了学技术的信心,以后工作中碰到再大的困难,我都没有放弃过信心。
2 医保系统优化
在我工作的十几年中,认识了很多同行朋友,其中很多朋友都是通过医保的机缘认识的。医保病人几乎是每所医院的主要收入来源,因为现在是全民医保,每家医院都非常重视医保工作。
那是2006年的事情了。一天我突然接到一个陌生电话。
“你是彭工吗?我是A医保局的某某。你们医院的医保办主任说你在维护医保系统,我想找你咨询个问题。是这样,我们现在的A医保系统,很多医院都喊慢,尤其是大医院特别严重,收费窗口堆积病人很严重。我们派工程师去现场清理完临时数据,好上几天,很快又慢了。你们医院的A医保病人最多,你们从来没喊慢,我们也从没为你们医院清理过临时数据,你对系统做了什么吗?”
从他飞快的语速中可以感觉到他很着急。病人是医院的上帝,医保是医院的另外一个上帝。我不敢怠慢,立马回复他:“是这样,我们A医保系统前面也慢,收费员收一个病人,大约需要5分钟。我对整个结算过程进行了跟踪分析,找到了问题原因。我做了一个ORACLE后台优化程序。每周末运行一次。现在速度一直都很快,结算一个病人不到一分钟。”
“太好了彭工,我让慢的医院找你吧,你给他们安装一下你的优化程序,我们也会建议医院给你支付专家费用的。麻烦你了!”
“没问题。”
医保领导这么客气,我有点受宠若惊。很快几家大医院找我,我那时在单位还要值夜班,值完夜班第二天休息一天。一般我都会和来找我的医院约到我休息的那一天去解决问题。优化程序在我们医院经过了实践的检验,所以效果立竿见影。解决了医院收费窗口的排队问题,医保局再也不用去清理临时数据了。印象中有两家医院最为深刻:一家是某中医院,我为他们医院优化完后台系统后,我和他们信息科的领导一起去收费处看优化情况。去的时候一个收费员正在擦汗。“今天A医保怎么样?” “今天电脑抽风了,太快了。以前敲个回车,我能喝几口水,今天忙到现在我才喝水。不过挺好的,都给病人结算完了!”中医处方特别长,所以他们的感触最为强烈;还有一家是一个企业医院,本来他们医院每天门诊量不到两百人。慢一点是可以承受的。但是一天,一个刚刚退休的大领导来看病,折腾半天都没交上钱。他虽然退休了,虎威犹存。找到院长骂了个狗血喷头。院长当场发誓三天之内解决。当然最后还是我去给他们解决的。
两年多时间我大约为乌鲁木齐16家医院安装了A医保优化程序。顺便参观了各个医院的机房,也结识了很多同行朋友,很多至今还经常联系。再后来,A医保又换了系统。我的优化程序也就寿终正寝了。我也思考过,A医保这次性能问题解决,主要原因:我有比较扎实的数据库理论和SQL编写基础;我在一线,能跟踪分析从终端到后台所有的技术环节;一直坚持,碰到问题不放弃,最终一定会解决问题。
3 解决HIS小型机集群性能问题
2004年,新疆自治区人民医院率先在新疆地区引入了一卡通医院HIS系统,这套系统优化了门诊流程,在狭小的旧门诊楼接诊7000多人,创造了当时新疆最大单日门诊记录。随着医院快速发展,医院信息化也得到了快速发展,2005年医院电脑数已经达到了800多台。随着终端电脑数快速增加,WINDOWS服务器32位操作系统内存4G寻址能力限制终端数增加。我也尝试增加服务器物理内存到8G,并且打开操作系统Boot.ini文件中/PAE/3GB参数开关,只能说情况略有好转,系统以前一周左右死机一次,修改后半个月死机一次。经过充分论证,借鉴通讯运营商和银行的经验,2006年医院购置两台IBM P55A小型机,搭建了ORACLE 10G RAC集群。这次后台系统升级比较大,ORACLE数据库从ORACLE 9.2.01升级到ORACLE 10.2.03,操作系统从windows 2003 server 32位升级到IBM AIX 5.1 64位,由于准备的很充分系统升级很顺利。但是新平台上线后,应用程序速度不快,个别功能甚至比以前PC服务器还慢。医院花巨资得了这样的结果,我与小型机系统集成公司进行了交涉,公司技术人员信誓旦旦地许诺小型机性能上没有优势,主要是解决并发能力和稳定性,你们医院电脑增加到1500台还能保持现在的性能,并且非常稳定。医院发展的很快,一座24层急诊大楼投入使用,电脑终端增加了近400台全院电脑终端数达到了1200多台。系统不仅更慢并且高峰期还死机,公司的工程师也没有解决办法。那时,我有ORACLE公司技术支持服务,我给他们发了多份性能分析报告后,他们要求我院ORACLE数据库从10.2.01升级到10.2.03,费了很大劲升级成功,但系统依然很慢并且死机。信息科压力很大,医院投资这么大居然这样频繁死机,怎么给医院交代?我几乎从早上坐到晚上研究系统性能问题。皇天不负有心人,终于找到了原因。我们HIS公司为了开发方便,建了一个公共用户,在这用户下建了所有其他用户表的同义词,开发只需要访问这些同义词即可。ORACLE公司从9I升级到10G修改了一个系统视图SYS.ALL_SYNONYMS,造成所有访问同义词的语句COST增大了近100倍,由于小型机性能很好所以性能没有很明显的降低。我咨询了ORACLE技术支持后,把系统视图SYS.ALL_SYNONYMS改回ORACLE9I语法。效果立竿见影,小型机负载从90%多降为5%以下,所有应用功能性能都得到了大幅提升。
很多医院软硬件系统都会升级,升级过程中都会或多或少碰到问题,一般情况下软件出现问题的概率更大,这时候一定要树立信心,并且医院要组织相关公司进行持续不断的分析和讨论,要善于总结,千万不要单纯依赖公司,系统故障最受伤的一定是医院,只要坚持,最终问题一定会解决。建议核心系统平台升级,除了做功能测试,最后也做一下压力测试。
4 最辛苦的系统迁移
2010年,我被邀请去克州为一个政府单位安装一套LINUX环境下ORACLE RAC集群系统,并且要做数据迁移。去的时候很顺利,单位信息负责人到喀什飞机场接的我。克州是一座很小很安静的城市,感觉只有一条街道,街道两边除了几座商场,都是政府办公楼,中心有个绿树成荫的广场。到了单位中心机房,我了解了系统的情况,这个系统是面向全疆提供服务的民生工程,服务器和存储都是HP的,是WINDOWS环境下的ORACLE 10G RAC 。系统当时的性能和稳定性都很差,几乎每天都要重启好几次。高峰期办业务速度奇慢。我的任务是,把数据安全备份出来,然后重新安装LINUX 下的ORACLE 10G RAC,最后把数据还原回去,优化系统性能,让系统安全高效的运行起来。系统计划停机维护的时间是三天。
单位负责人和我年龄差不多,干这行据说也有很多年了,也许是系统太重要,而我只有一个人来处理问题。他一直和我讨论数据的安全性,他担心万一系统做了,不能及时恢复怎么办?当时的情况虽然非常糟糕,但起码还能运行。到了第二天中午,还没有开始工作。我的耐心彻底被他磨完了。记忆中我第一次对甲方发脾气“你通知都下发全疆了,你现在要是相信我,我们就做!我不能给你百分之百的保证,但我会尽自己最大的努力。这样的项目我做过”。项目终于开工了,前面一切都很顺利,中间配置存储时,我碰见了一个大麻烦,LINUX环境下HP存储多路径产生 “鬼盘”问题,新疆当时没有互联网,我打电话问了全国认识的高手,居然没有一个人真正搞过。最后我用了数学排列组合,花了近7个小时才解决此问题。后面都很顺利了,我优化了ORACLE参数,做ORACLE系统的性能报表,对一些慢的SQL增加或修改了索引,系统运行效果很好。
回家路上感觉自己快累虚脱了,但心情还可以,项目达到了我自己的期望值。到了喀什机场,候机厅全是人,好几个航班晚点了,万幸的是我坐的航班正点。在候机厅,我连个坐的地方都没有,有几把全身按摩的椅子还空着,花了三十元坐了半小时,感觉很超值。
搞技术的人虽然很辛苦,同时也是快乐的。尤其一件事件,自己制定了计划,按照计划去做,虽然碰到了很多困难,但是通过努力全部解决,完美地完成了任务。这种快乐是发自肺腑的,而且能终身享用。这种辛苦和快乐会让技术工程师更加努力去学习从而越发优秀。
5 一起尽在掌控:完美的HIS系统迁移
2012年,医院经过几年发展,电脑数从当初的不到1000台,增长到近2500台,应用系统也增加到近30个。2007年的小型机也慢慢带不动医院业务了,并且医院很快有一座新门诊住院综合大楼要交付使用,还有一个新院区要开张。为了保障全院信息系统稳定运行,医院新买了两台IBM P750小型机、IBM DS5100存储。这时,我已经在新疆医疗行业小有名气,尤其在ORACLE数据库领域。我认真仔细做了IBM AIX下的ORACLE11.2.03 RAC安装文档,小心仔细地按照安装文档完成集群的安装,我又设计了详细测试文档,邀请IBM小型机工程师、HIS厂商等一起完成了集群平台所有功能测试和故障转移测试。这些都完成了,就等HIS数据迁移了。
这次小型机项目中HIS数据迁移是核心工作:数据量大,有1.2T;HIS关联的系统多,有20多个应用系统;客户端电脑多有2500台,迁移时间短预定4小时以内。ORACLE RAC集群从10G升级到11G,IBM小型机操作系统从AIX5.3升级到AIX6.1,数据库底层存储从裸设备升级到ORACLE ASM。这里面的技术环节我都能搞定,但是在4小时内完成1.2T数据迁移,相关20多个与HIS相关联的系统链接到新小型机平台,2500多台终端电脑链接到新平台,这对我是一个巨大的挑战。我自己定义这次项目是一次“淮海战役”,我一定要打赢这场战役。我制作了迁移文档,并且进行了3个月的测试和准备,文档也在不断完善。当我把最终迁移文档交给主任时他惊讶了,因为我计划在30分钟完成这次系统迁移,而实际计算只有20分钟,我还多算了10分钟。为了打消主任的担心,我非常狂的说了句“没问题,一切尽在掌握”。
HIS数据迁移定在了周五下午八点钟,数据迁移之前我组织厂家和信息中心50多人,开了一个短会。再次明确了各家公司的任务,还有一些重点工作的负责人任务确认,我要求严格按照各家公司迁移文档操作。这次数据迁移我选了一家公司数据同步产品,完成实时数据同步。在三个月准备时间内我帮助20多个和HIS关联的厂家做了系统切换计划,并且逐一测试完善,确保每家方案准确无误。2500多个客户端电脑,我做了域服务器登录脚本,当天我们切换后台完成之后,关闭老IBM小型机,客户端电脑重新启动,运行域控制服务器脚本,客户端电脑就可以链接到新IBM小型机集群平台。切换开始了,随着我的指令下达,一切工作紧张而有序,大家分工明确,一切如我计划,30分钟以内非常完美地完成了HIS系统数据迁移,没有出现大问题。这次HIS系统数据迁移,我完成了技术工作,也完成了组织管理工作,通过这次项目实施我感觉自己的能力得到了一次大的提升。
年轻的医院信息工作者,做了多年技术工作以后,一定不要只拘泥于技术,要逐步开始一些管理工作,要善于带教,学会团队作战,以应付越来越复杂的信息化发展要求。
未完待续......
作者简介
彭建明:计算机软件开发及应用专业毕业,新疆维吾尔自治区人民医院信息中心主任,高级工程师,研究生导师,20年专注于医院信息化管理建设,一直致力于大型医院核心信息系统安全性、可靠性的研究,拥有丰富的医院信息化建设管理经验。取得了ORACLE、IBMAIX、CISCO国际管理员证书。中国医院协会信息专业委员会(CHIMA)常务委员、中华医学会数字医学分会青年委员、新疆医学信息专委会常委,中国智慧医疗委员,ORACLE荣誉讲师。新疆卫生健康委电子病历评审专家,新疆卫生健康委等级医院评审专家。