周笑宇
(中國人民解放軍聯勤保障部隊第九六三醫院,佳木斯 154002)
對于醫院而言,HIS系統的穩定性是不言而喻的,大到臨床科室與輔診科室之間的信息交互系統(如LIS、PACS 等),小到醫生對于患者所下的每一條計價處方、每一種耗材等,都需要對HIS 系統進行數據操作。但對于臨床科室的耗材、輔診科室的工作量,卻很少有相應的系統進行準確的統計。數據庫用戶權限的發放、分配及回收,更是困擾著部分數據庫管理員。本文旨在對該問題提出一種解決辦法,以PowerBuilder9.0 為開發工具,基于Oracle 數據庫進行數據表的創建和部署。
開發本系統的目的是實現院內耗材、診療項目等的精確統計、輔診科室工作量的統計、以及對于數據庫用戶的權限復制和管理,主要包括以下幾個部分:①單一科室的某種項目計價情況統計,為系統使用人員提供指定科室的某種耗材或診療項目的計價數量及明細;②全院的某種項目計價情況統計,為系統使用人員提供全院某種耗材或診療項目的計價數量及明細;③全院科室所有項目計價情況統計,為系統使用人員提供所選時間內,全院所有耗材的計價情況;④輔診科室工作量統計,為系統使用人員提供指定時間內輔診科室的總計價收入和所有項目的總項數,并支持將明細導成excel格式的文件;⑤數據庫用戶權限復制及管理系統,可以將系統中的關鍵用戶的權限復制給新創建的用戶或需要更改權限的用戶,并支持增加、刪除數據庫用戶。
系統各模塊的功能如圖1所示。

圖1 系統各模塊功能
該模塊共分為四個部分:科室服務項目統計、科室耗材統計、全院服務項目統計及全院耗材統計??剖曳枕椖拷y計及科室耗材統計,可以針對某科室,統計指定時間段內,該科室所計價的服務項目數量,以及該時間段內該科室計價的所有耗材的總數量。全院服務項目統計及全院耗材統計,可以統計指定時間段內,全院所有科室計價的服務項目數量及所有計價耗材的總數量。該功能可以清晰地體現出指定時間段內科室或全院服務項目及耗材方面的工作量,既方便相關科室統計工作量,又方便科室與耗材管理相關科室之間進行賬目的核對,也可以輔助院領導或相關科室領導進行決策。
該模塊共分為兩個部分:輔診科室年度工作量查詢和輔診科室指定時間段工作量查詢。可以針對所有輔診科室,如檢驗科、放射科、超聲科等科室,進行指定時間內或某年度的工作量統計。該功能可以清晰地體現出單位時間內相應科室進行的所有服務項目數量,并按照數量從高到低的順序排列,既方便相應科室統計指定時間內的工作量,又可直觀地體現出服務項目的開具情況,為輔助院領導及相關科室領導做決策、相關科室數據分析提供有效的支撐。
該模塊主要功能分為四個部分:新用戶創建、用戶角色授權、老用戶權限修改以及老用戶科室修改。新用戶創建,當輸入新用戶相關的身份信息(用戶身份、用戶姓名、用戶密碼)之后,系統會通過自增主鍵,默認為新用戶分配相應的工號,點擊保存之后,系統就會在數據庫中創建新用戶,并對其賦予基本權限;角色授權,當用戶未分配任何權限或角色時,可選擇現有角色將該角色授予給選擇的用戶;權限修改,當想修改用戶現有權限或角色時,可選擇關鍵用戶,將關鍵用戶的所有角色和系統權限一鍵賦值給當前的用戶;科室修改,當老用戶因為工作安排等原因調用至其余科室時,該系統可方便地修改用戶現有的科室信息并保存。該模塊可以極其方便地管理新用戶及原有用戶,尤其是權限修改功能,可以大大地節約數據庫管理者的時間和精力,不用費時費力地考慮原有用戶的角色和系統權限的分配,可以為數據庫的管理等做出一定的貢獻。
本系統采用PowerBuilder9.0 工具開發,基于Oracle 數據庫來部署,可方便地布置在win?dowsXP 乃至Windows10 等所有主流操作系統上。
PowerBuilder 是美國Sybase 公司研制的一種新型、快速開發工具,該工具基于C/S 架構(客戶端-服務器),具有輕量、方便部署、查詢速度快、拓展性強、使用簡單等優點,廣泛地應用于醫院、銀行等領域。
Oracle是當今世界上應用最廣泛的關系型數據庫之一,是一種效率高、穩定性強、可靠性好、吞吐量大的數據庫。因其特有的安全性和穩定性等優勢,被廣泛運用在銀行、醫院、大型企業等領域。
3.2.1 關于數據查詢功能數據庫的構建
數據庫表結構的設計,對于系統的穩定性和可拓展性等是不言而喻的。查詢模塊在設計之初,主要分為門診數據和住院數據兩個方面的統計,之后再通過編寫相應的SQL 語句將門診數據和住院數據合在一起,體現在程序的數據窗口中。門診數據通過創建門診病人診療費用項目表,并統計表中的數據即可分析出來,該表由病人就診日期(patient_visit_date)、收據號(receipt_number)、項目類別(item_class)、項目代碼(item_code)、項目名稱(item_name)、項目規格(item_spec)、數量(amount)、執行科室(performed_by_dept)等字段組成,其主鍵為收據號(receipt_number);住院數據通過創建住院病人診療費用項目表,并統計表中的數據即可分析出來,該表由病人ID 號(patient_id)、病人本次 住 院 標 識(patient_visit_id)、 項 目 類 別(item_class)、項目代碼(item_code)、項目名稱(item_name)、項 目 規 格(item_spec)、數 量(amount)、執行科室(performed_by_dept)、住院計價時間(billing_date_time)等字段組成,病人ID 號(patient_id)及 病 人 本 次 住 院 標 識(pa?tient_visit_id)作為聯合主鍵。
3.2.2 關于權限管理功能數據庫的構建
權限管理對于數據庫來說是非常重要的,一旦授予權限過程中出現問題,則會導致不可預計的后果,甚至會嚴重影響數據庫的安全性和用戶的正常使用。該功能主要以用戶表為核心進行構建,用戶表由數據庫用戶名(user),用戶標識(user_id),用戶姓名(user_name),用戶科室(user_dept)組成,其中數據庫用戶名(user)為該表的主鍵。創建好用戶后,需要對用戶分配相應的科室、工作站、系統使用權限等,所以還需要醫院人員信息表來存放相應的信息,該 表 由 科 室 代 碼(dept_code)、 人 員 姓 名(user_name)、人員編號(emp_no)、工作類別(user_job)組成,其中人員編號(emp_no)為該表的主鍵。
數據表創建完畢后,就可以根據設計,進入到具體的編碼階段,該部分以幾個模塊為例,簡要介紹一下系統的設計。
3.3.1 系統與數據庫之間的連接
任何數據庫相關的系統在使用之前,首要步驟都是與該系統所使用的數據庫進行連接。本文通過PowerBuilder 自帶的SQLCA 事務對象進行連接數據庫,連接數據庫時,系統通過讀取外部INI 文件的方式來獲取數據庫的版本(DBMS)、本地數據庫名稱(ServerName)、用戶登錄ID(LogId)、用戶密碼(LogPassword)等關鍵信息,其中用戶登錄ID、用戶密碼待用戶在登陸界面輸入其用戶名和密碼之后,系統通過校驗后,通過函數將用戶登錄ID、用戶密碼寫入到配置文件中。
3.3.2 科室執行項目統計的具體實現
創建一個窗口對象(window),之后將所需要的控件拖動到數據窗口中,該功能主要使用了如下幾個控件:靜態文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數據窗口控件(DataWindow Control),其界面如圖2所示。

圖2 科室執行項目統計
自動獲取時間、以及選擇科室和選擇項目功能是本模塊的特色功能。通過PowerBuilder 自帶的RelativeDate()函數獲取當前的時間,具體代碼如下:

在遇到特殊情況時,如跨月、跨年等場景下,需要對統計日期和結束日期進行特殊處理,本系統通過自定義函數進行處理,確保該日期的準確性。
選擇科室和選擇項目功能依賴于KeyDown函數,當使用者按照提示在獲取文本框焦點后進行按鍵時,會彈出相應的窗口來選擇科室或項目,彈出窗口中的所有科室列表和項目列表均為動態查詢獲取,當選擇科室和服務項目均選擇完畢后,在時間不為空的情況下,點擊查詢則可獲取到相關的數據,查詢語句具體如下:


另外,點擊查詢按鈕時,數據窗口中也要提取出相應的數據,該功能依賴的是Power?Builder 自帶的事物對象的實例SQLCA 與后臺數據庫之間的交互,以及rerieve()函數,具體的實現代碼如下:

3.3.3 科室耗材統計功能的具體實現
創建一個窗口對象(window),之后將所需要的控件拖動到數據窗口中,該功能主要使用了如下幾個控件:靜態文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數據窗口控件(DataWindow Control)、下拉列表控件(Drop?DownListBox Control),其界面如圖3所示。

圖3 科室耗材統計
將結果保存成EXCEL 文件是本模塊的特色功能,該功能主要依賴于GetFileSaveName()函數,并通過使用自定義函數,使用戶可以看到導出進度,該功能具體代碼如下:

當點擊查詢按鈕時,數據窗口則會提取出相應的數據,具體代碼如下:

3.3.4 權限管理功能的具體實現
創建一個窗口對象(window),之后將所需要的控件拖動到數據窗口中,該功能主要使用了如下幾個控件:靜態文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數據窗口控件(DataWindow Control),其界面如圖4所示。

圖4 權限管理
當用戶在用戶名文本框中輸入相應的用戶后,按下回車鍵,若為已經存在的用戶,則會自動獲取到當前用戶的用戶身份、用戶姓名、用戶單位、創建日期、用戶ID 等信息,若用戶想更改當前用戶的信息,則可以任意選擇更改除用戶名外的所有其他文本框,之后點擊修改按鈕即可完成信息修改。若為不存在的用戶,則會將創建日期自動置為服務器中的當前日期,同時將用戶ID 置為自增序列中的最新值,之后使用者需要手動錄入用戶身份、用戶姓名、用戶單位等信息,當完成上述信息的錄入后,點擊保存按鈕,新錄入的用戶就會創建成功。按下回車鍵之后,左下角中的權限人員即可顯示出來,此時單擊想復制的權限人員,即可將該權限人員的所有權限以及角色復制或修改給用戶名文本框中輸入的用戶,該功能的具體代碼如下:


本文通過PowerBuilder 與Oracle 數據庫的交互實現了該系統的功能,該系統大大地加快了統計部分數據的效率并解決了人員權限分配的問題,下一步需進一步豐富該系統的功能,同時改進現有模塊以優化查詢效率,進一步提升本院信息化水平。