蔡春情
摘 ?要: 醫院信息系統(HIS),是醫院管理和醫療活動中進行信息管理和聯機操作的計算機應用系統,為了便于工作,醫院信息系統常常要與各種其他系統做接口,并將其他系統的信息整合到HIS中。文章介紹了一個由PB(PowerBuilder)開發的HIS與急診數據庫(ES)連接的實例,實現護士錄入的護理記錄、醫囑執行等內容顯示到醫生界面,并具有打印護理記錄的功能。
關鍵詞: 醫院信息系統; PowerBuilder; 數據庫鏈接; 電子病歷; 控件
中圖分類號:TP311 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2019)10-67-03
Abstract: Hospital Information System(HIS) is a computer application system for information management and on-line operation in hospital management and medical activities. In order to facilitate work, hospital information system often has to interface with various other systems and integrate the information of other systems into HIS. This paper introduces an instance, a HIS developed by PB (PowerBuilder) is connected with emergency database(ES),which the nursing records and execution of doctor's orders entered by nurses displays on doctor's interface, and has the function of printing nursing records.
Key words: HIS; PowerBuilder; database link; EMR; control
0 引言
PowerBuilder(簡稱‘PB),是由Sybase公司推出的面向對象的集成開發工具,它有著諸多優點,作為一種可視化的、面向對象的快速應用開發工具,一方面它是事件驅動的,開發速度快,另一方面它的成本低、質量高、功能強,較容易學習和掌握。HIS——醫院信息系統,即醫院管理和醫療活動中進行信息管理和聯機操作的計算機應用系統,主要是臨床、醫技人員用來對門診住院病人進行接診、醫囑開立等相關醫療操作的系統。
目前有不少醫院使用的HIS系統是由PB工具編譯而成,本文所述案例以筆者所在醫院(簡稱‘本院)為背景展開分析,主要描述基于PowerBuilder10.0工具,以Oracle10為數據庫環境的醫院信息系統中的兩個具體應用[1]。
1 HIS與急診系統信息互通
為了便于工作,醫院信息系統常常要與各輔助系統做接口,如LIS、PACS、OA等,并將其他系統的信息整合到HIS中。本院各類系統的數據存儲均是Oracle數據庫,各數據庫間的數據讀取,可以利用多種方式,以下案例說明的是HIS數據庫與急診數據庫(ES)的連接,目的是將護士錄入的護理記錄、醫囑執行等內容顯示到醫生界面,另外,要有打印護理記錄的功能。
1.1 數據庫互連
Oracle數據庫間連接有多種方式,下面列舉三種。
1.1.1 采用開發工具PL/SQL Developer,建立數據庫鏈接
首先,編輯Oralce安裝目錄下的tnsnames.ora文件,配置內容如下。
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.80.66)(PORT = 1521)))
(CONNECT_DATA =
(SERVICE_NAME = orcl))
然后,利用PL/SQL工具在HIS庫中創建一個Database links,其中,創建所需的Owner代表HIS庫名,Name代表鏈接名,Username、Password、Database分別是要連接的數據庫的用戶名、密碼及配置地址[2]。用此方法,可直接在HIS庫中按照‘表名@Name的格式,取ES庫的表建立視圖,供PB調用。
1.1.2 建同義詞
下方示例表示將ES庫的gy_bingrenxx表映射到HIS庫中去,下面三條語句的作用分別是將gy_bingrenxx表授權給HIS庫,允許向HIS庫創建同義詞,將ES庫的gy_bingrenxx表創建同義詞到HIS庫里。
grant select on gy_bingrenxx to his;
grant create synonym to his;
create synonym gy_bingrenxx for jz. gy_bingrenxx;
注:此方法適用于單個表建立連接,不適用批量調用數據庫信息。
1.1.3 PB多數據庫連接
在PB開發程序中,用下例的語句來定義HIS與ES兩庫的存儲區域,再新建數據管道(Data Pipeline)[3],最后通過settransobject語句建立數據庫連接。其中,sqlca是重要參數,是應用程序到數據庫通信鏈接的句柄[4]。
// Profile his
sqlca.DBMS = "O10 Oracle10g (10.1.0)"
sqlca.LogPass = '***'
sqlca.ServerName = "his"
sqlca.LogId = "his"
sqlca.AutoCommit = False
sqlca.DBParm = ""
connect using sqlca;
dw.settransobject(sqlca)
綜上,選擇第一種建立數據庫鏈接的方法,因為此法簡單、便利。
1.2 面向對象窗口的建立
連接好數據庫,就可以應用PB來編程了。新建窗口對象(window),先將界面所需的時間選擇控件(uo_dateselect)、按鈕控件(uo_comandbutton)、數據窗口控件(uo_datawindow)、靜態文本控件(uo_statictext)等拖動到窗口對象上,然后在各個控件相關事件下編寫代碼。
第一步,初始化窗口。在窗口的open事件中調用datawindow.retrieve()函數,搜索當前病人的護理記錄,再按錄入時間過濾,uo_statictext默認顯示最近的一條記錄。
第二步,數據窗口換行顯示。為了更直觀顯示選中的護理記錄中的所有內容,編輯uo_datawindow的rowfocuschanged(換行)事件,當使用者選中某行時,uo_statictext顯示此行護理記錄內容。
第三步,護理記錄打印。因護理記錄單首頁(包含病人信息欄與護理記錄欄)與其他頁碼(只有護理記錄欄)不同,固要分開兩個Freeform格式的數據窗口打印。首先,兩個數據窗口都檢索出當前病人護理記錄的所有內容,并給首頁病人信息欄賦值。然后,在首頁數據窗口的printpage(打印頁)事件下,判斷pagenumber(頁碼)是否大于1,是則退出,從而只打印第一頁。最后,在其他頁數據窗口的print(打印)函數中,按末行到首行的檢索方式,刪除首頁已顯示的護理記錄,再進行打印。
2 PB控件應用
病歷,是記載和傳遞病人診療全過程的載體,使病歷達到結構化、模塊化、質量可控化的效果,能夠優化診療環境[5]。為方便操作,HIS系統中常常要調用一些外部控件,例如本院急診電子病歷調用的是都昌電子病歷編輯器(DCSoft.Writer.Controls.AxWriterControl)。本院使用的HIS原程序是通過將都昌編輯器封裝到PB原始的OLE控件中再進行調用,然而在系統的真實使用過程中,發現在控件的顯示、病歷的輸寫上略有不便之處。分析原因,是由于HIS急診系統一次只能打開一份病歷,病歷與病歷間互相查看不方便,不能進行文字的復制粘貼,且每打開一份病歷都要重新加載一次控件,即便是之前打開過的病歷也是如此,嚴重拖慢速度,影響感知。為了改善用戶體驗,需要改進。
原有程序的調用方案是打開病歷則直接調用都昌編輯器控件(uo_emrdc),筆者采用OLE控件結合TAB標簽頁控件的方式,將原來的單個對象改成形如數組形式的‘對象組(uo_emrdc[]),并新增病歷標簽頁(tab_bingli)控件作為載體顯示。標簽頁控件的使用,能使用戶界面更簡潔、美觀、高效[6]。當新增一個病歷或查看歷史病歷時,打開一個新的標簽頁,同時在此標簽頁中附帶一個編輯器控件。各標簽頁通過全局變量(病歷記錄號碼)來編碼。
tab_bingli.OpenTab(uo_emrdc[i], 'uo_emrdc_bingchengjl', 0)
OpenUserObject(uo_emrdc[i], 'uo_emrdc_bingchengjl',0,0)
tab_bingli.Control[tab_bingli.SelectedTab].Visible = False
以上為程序主要調用的函數,第一條表示打開新標簽頁,第二條表示打開病歷控件對象,括號內是傳參,其中uo_emrdc[i]是相應的病歷控件對象,‘uo_emrdc_bingchengjl為病歷控件對象的名稱即‘病程記錄,數值‘0是顯示效果所需的變量。此外,雙擊標簽頁的時候,使用第三條函數隱藏當前病歷,若使用者再次打開該病歷,后臺只需通過搜尋病歷記錄號碼,然后將標簽頁設為可見屬性即可,而無需重復初始化控件打開病歷,加快速度,提升醫生感知。打開病歷之后的界面顯示等操作繼續采用原來的步驟,初始化病歷控件、全局數據窗口賦值、加載病歷文檔內容。
3 結束語
本文通過PB工具和pl/sql developer工具的配合來進行程序設計,建立database link,由PB工具建立數據窗口調用新數據庫的相關表與視圖,能解決互聯互通的問題。PB對多種控件的靈活運用與相互結合,也能完善用戶體驗,使界面更美觀,操作更方便。
在將來,使用.net框架,采用同PB一樣面向對象的程序設計語言C#或者Java,是HIS系統開發的趨勢。而目前,PB的開發快捷、方便,在服務器/客戶機數據庫編程模式中占據重要地位,因此,采用PB實現管理醫院Oracle數據庫的功能,能提高整個醫務系統的信息化水平[7]。
參考文獻(References):
[1] 劉繼良. 基于Powerbuilder的中醫診所信息系統的研究與設計[D].燕山大學碩士學位論文,2016.
[2] Sshmobai.PL/SQL:database links. https://blog.csdn.net/m0_38084243/article/details/81530521, 2018.
[3] 崔杜武,姚全珠,黑新宏,周紅芳. PowerBuilder9.0基層應用與系統開發[M]. 電子工業出版社, 2004.
[4] 張長富,李勻. PowerBuilder8參考手冊[M]. 北京希望電子出版社, 2002.
[5] 盧芳芳.基于電子病歷的醫務信息管理系統設計與實現[D].電子科技大學碩士學位論文, 2018.
[6] 呂雪敏.巧用PowerBuilder數據窗口對象的編輯風格[J].寧波搞得專科學校學報, 2003.15(4):38-40
[7] 管鴻,鐘秋海,程春.Oracle 數據庫管理系統在PowerBuilder下的實現[J]. 計算機工程, 2005.31(1):87-140