彭建明: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榮譽講師。新疆衛生健康委電子病歷評審專家,新疆衛生健康委等級醫院評審專家。