周笑宇
(中國人民解放軍聯(lián)勤保障部隊第九六三醫(yī)院,佳木斯 154002)
對于醫(yī)院而言,HIS系統(tǒng)的穩(wěn)定性是不言而喻的,大到臨床科室與輔診科室之間的信息交互系統(tǒng)(如LIS、PACS 等),小到醫(yī)生對于患者所下的每一條計價處方、每一種耗材等,都需要對HIS 系統(tǒng)進行數(shù)據(jù)操作。但對于臨床科室的耗材、輔診科室的工作量,卻很少有相應的系統(tǒng)進行準確的統(tǒng)計。數(shù)據(jù)庫用戶權限的發(fā)放、分配及回收,更是困擾著部分數(shù)據(jù)庫管理員。本文旨在對該問題提出一種解決辦法,以PowerBuilder9.0 為開發(fā)工具,基于Oracle 數(shù)據(jù)庫進行數(shù)據(jù)表的創(chuàng)建和部署。
開發(fā)本系統(tǒng)的目的是實現(xiàn)院內(nèi)耗材、診療項目等的精確統(tǒng)計、輔診科室工作量的統(tǒng)計、以及對于數(shù)據(jù)庫用戶的權限復制和管理,主要包括以下幾個部分:①單一科室的某種項目計價情況統(tǒng)計,為系統(tǒng)使用人員提供指定科室的某種耗材或診療項目的計價數(shù)量及明細;②全院的某種項目計價情況統(tǒng)計,為系統(tǒng)使用人員提供全院某種耗材或診療項目的計價數(shù)量及明細;③全院科室所有項目計價情況統(tǒng)計,為系統(tǒng)使用人員提供所選時間內(nèi),全院所有耗材的計價情況;④輔診科室工作量統(tǒng)計,為系統(tǒng)使用人員提供指定時間內(nèi)輔診科室的總計價收入和所有項目的總項數(shù),并支持將明細導成excel格式的文件;⑤數(shù)據(jù)庫用戶權限復制及管理系統(tǒng),可以將系統(tǒng)中的關鍵用戶的權限復制給新創(chuàng)建的用戶或需要更改權限的用戶,并支持增加、刪除數(shù)據(jù)庫用戶。
系統(tǒng)各模塊的功能如圖1所示。
圖1 系統(tǒng)各模塊功能
該模塊共分為四個部分:科室服務項目統(tǒng)計、科室耗材統(tǒng)計、全院服務項目統(tǒng)計及全院耗材統(tǒng)計??剖曳枕椖拷y(tǒng)計及科室耗材統(tǒng)計,可以針對某科室,統(tǒng)計指定時間段內(nèi),該科室所計價的服務項目數(shù)量,以及該時間段內(nèi)該科室計價的所有耗材的總數(shù)量。全院服務項目統(tǒng)計及全院耗材統(tǒng)計,可以統(tǒng)計指定時間段內(nèi),全院所有科室計價的服務項目數(shù)量及所有計價耗材的總數(shù)量。該功能可以清晰地體現(xiàn)出指定時間段內(nèi)科室或全院服務項目及耗材方面的工作量,既方便相關科室統(tǒng)計工作量,又方便科室與耗材管理相關科室之間進行賬目的核對,也可以輔助院領導或相關科室領導進行決策。
該模塊共分為兩個部分:輔診科室年度工作量查詢和輔診科室指定時間段工作量查詢。可以針對所有輔診科室,如檢驗科、放射科、超聲科等科室,進行指定時間內(nèi)或某年度的工作量統(tǒng)計。該功能可以清晰地體現(xiàn)出單位時間內(nèi)相應科室進行的所有服務項目數(shù)量,并按照數(shù)量從高到低的順序排列,既方便相應科室統(tǒng)計指定時間內(nèi)的工作量,又可直觀地體現(xiàn)出服務項目的開具情況,為輔助院領導及相關科室領導做決策、相關科室數(shù)據(jù)分析提供有效的支撐。
該模塊主要功能分為四個部分:新用戶創(chuàng)建、用戶角色授權、老用戶權限修改以及老用戶科室修改。新用戶創(chuàng)建,當輸入新用戶相關的身份信息(用戶身份、用戶姓名、用戶密碼)之后,系統(tǒng)會通過自增主鍵,默認為新用戶分配相應的工號,點擊保存之后,系統(tǒng)就會在數(shù)據(jù)庫中創(chuàng)建新用戶,并對其賦予基本權限;角色授權,當用戶未分配任何權限或角色時,可選擇現(xiàn)有角色將該角色授予給選擇的用戶;權限修改,當想修改用戶現(xiàn)有權限或角色時,可選擇關鍵用戶,將關鍵用戶的所有角色和系統(tǒng)權限一鍵賦值給當前的用戶;科室修改,當老用戶因為工作安排等原因調(diào)用至其余科室時,該系統(tǒng)可方便地修改用戶現(xiàn)有的科室信息并保存。該模塊可以極其方便地管理新用戶及原有用戶,尤其是權限修改功能,可以大大地節(jié)約數(shù)據(jù)庫管理者的時間和精力,不用費時費力地考慮原有用戶的角色和系統(tǒng)權限的分配,可以為數(shù)據(jù)庫的管理等做出一定的貢獻。
本系統(tǒng)采用PowerBuilder9.0 工具開發(fā),基于Oracle 數(shù)據(jù)庫來部署,可方便地布置在win?dowsXP 乃至Windows10 等所有主流操作系統(tǒng)上。
PowerBuilder 是美國Sybase 公司研制的一種新型、快速開發(fā)工具,該工具基于C/S 架構(客戶端-服務器),具有輕量、方便部署、查詢速度快、拓展性強、使用簡單等優(yōu)點,廣泛地應用于醫(yī)院、銀行等領域。
Oracle是當今世界上應用最廣泛的關系型數(shù)據(jù)庫之一,是一種效率高、穩(wěn)定性強、可靠性好、吞吐量大的數(shù)據(jù)庫。因其特有的安全性和穩(wěn)定性等優(yōu)勢,被廣泛運用在銀行、醫(yī)院、大型企業(yè)等領域。
3.2.1 關于數(shù)據(jù)查詢功能數(shù)據(jù)庫的構建
數(shù)據(jù)庫表結構的設計,對于系統(tǒng)的穩(wěn)定性和可拓展性等是不言而喻的。查詢模塊在設計之初,主要分為門診數(shù)據(jù)和住院數(shù)據(jù)兩個方面的統(tǒng)計,之后再通過編寫相應的SQL 語句將門診數(shù)據(jù)和住院數(shù)據(jù)合在一起,體現(xiàn)在程序的數(shù)據(jù)窗口中。門診數(shù)據(jù)通過創(chuàng)建門診病人診療費用項目表,并統(tǒng)計表中的數(shù)據(jù)即可分析出來,該表由病人就診日期(patient_visit_date)、收據(jù)號(receipt_number)、項目類別(item_class)、項目代碼(item_code)、項目名稱(item_name)、項目規(guī)格(item_spec)、數(shù)量(amount)、執(zhí)行科室(performed_by_dept)等字段組成,其主鍵為收據(jù)號(receipt_number);住院數(shù)據(jù)通過創(chuàng)建住院病人診療費用項目表,并統(tǒng)計表中的數(shù)據(jù)即可分析出來,該表由病人ID 號(patient_id)、病人本次 住 院 標 識(patient_visit_id)、 項 目 類 別(item_class)、項目代碼(item_code)、項目名稱(item_name)、項 目 規(guī) 格(item_spec)、數(shù) 量(amount)、執(zhí)行科室(performed_by_dept)、住院計價時間(billing_date_time)等字段組成,病人ID 號(patient_id)及 病 人 本 次 住 院 標 識(pa?tient_visit_id)作為聯(lián)合主鍵。
3.2.2 關于權限管理功能數(shù)據(jù)庫的構建
權限管理對于數(shù)據(jù)庫來說是非常重要的,一旦授予權限過程中出現(xiàn)問題,則會導致不可預計的后果,甚至會嚴重影響數(shù)據(jù)庫的安全性和用戶的正常使用。該功能主要以用戶表為核心進行構建,用戶表由數(shù)據(jù)庫用戶名(user),用戶標識(user_id),用戶姓名(user_name),用戶科室(user_dept)組成,其中數(shù)據(jù)庫用戶名(user)為該表的主鍵。創(chuàng)建好用戶后,需要對用戶分配相應的科室、工作站、系統(tǒng)使用權限等,所以還需要醫(yī)院人員信息表來存放相應的信息,該 表 由 科 室 代 碼(dept_code)、 人 員 姓 名(user_name)、人員編號(emp_no)、工作類別(user_job)組成,其中人員編號(emp_no)為該表的主鍵。
數(shù)據(jù)表創(chuàng)建完畢后,就可以根據(jù)設計,進入到具體的編碼階段,該部分以幾個模塊為例,簡要介紹一下系統(tǒng)的設計。
3.3.1 系統(tǒng)與數(shù)據(jù)庫之間的連接
任何數(shù)據(jù)庫相關的系統(tǒng)在使用之前,首要步驟都是與該系統(tǒng)所使用的數(shù)據(jù)庫進行連接。本文通過PowerBuilder 自帶的SQLCA 事務對象進行連接數(shù)據(jù)庫,連接數(shù)據(jù)庫時,系統(tǒng)通過讀取外部INI 文件的方式來獲取數(shù)據(jù)庫的版本(DBMS)、本地數(shù)據(jù)庫名稱(ServerName)、用戶登錄ID(LogId)、用戶密碼(LogPassword)等關鍵信息,其中用戶登錄ID、用戶密碼待用戶在登陸界面輸入其用戶名和密碼之后,系統(tǒng)通過校驗后,通過函數(shù)將用戶登錄ID、用戶密碼寫入到配置文件中。
3.3.2 科室執(zhí)行項目統(tǒng)計的具體實現(xiàn)
創(chuàng)建一個窗口對象(window),之后將所需要的控件拖動到數(shù)據(jù)窗口中,該功能主要使用了如下幾個控件:靜態(tài)文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數(shù)據(jù)窗口控件(DataWindow Control),其界面如圖2所示。
圖2 科室執(zhí)行項目統(tǒng)計
自動獲取時間、以及選擇科室和選擇項目功能是本模塊的特色功能。通過PowerBuilder 自帶的RelativeDate()函數(shù)獲取當前的時間,具體代碼如下:
在遇到特殊情況時,如跨月、跨年等場景下,需要對統(tǒng)計日期和結束日期進行特殊處理,本系統(tǒng)通過自定義函數(shù)進行處理,確保該日期的準確性。
選擇科室和選擇項目功能依賴于KeyDown函數(shù),當使用者按照提示在獲取文本框焦點后進行按鍵時,會彈出相應的窗口來選擇科室或項目,彈出窗口中的所有科室列表和項目列表均為動態(tài)查詢獲取,當選擇科室和服務項目均選擇完畢后,在時間不為空的情況下,點擊查詢則可獲取到相關的數(shù)據(jù),查詢語句具體如下:
另外,點擊查詢按鈕時,數(shù)據(jù)窗口中也要提取出相應的數(shù)據(jù),該功能依賴的是Power?Builder 自帶的事物對象的實例SQLCA 與后臺數(shù)據(jù)庫之間的交互,以及rerieve()函數(shù),具體的實現(xiàn)代碼如下:
3.3.3 科室耗材統(tǒng)計功能的具體實現(xiàn)
創(chuàng)建一個窗口對象(window),之后將所需要的控件拖動到數(shù)據(jù)窗口中,該功能主要使用了如下幾個控件:靜態(tài)文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數(shù)據(jù)窗口控件(DataWindow Control)、下拉列表控件(Drop?DownListBox Control),其界面如圖3所示。
圖3 科室耗材統(tǒng)計
將結果保存成EXCEL 文件是本模塊的特色功能,該功能主要依賴于GetFileSaveName()函數(shù),并通過使用自定義函數(shù),使用戶可以看到導出進度,該功能具體代碼如下:
當點擊查詢按鈕時,數(shù)據(jù)窗口則會提取出相應的數(shù)據(jù),具體代碼如下:
3.3.4 權限管理功能的具體實現(xiàn)
創(chuàng)建一個窗口對象(window),之后將所需要的控件拖動到數(shù)據(jù)窗口中,該功能主要使用了如下幾個控件:靜態(tài)文本控件(StaticText Con?trol)、單行編輯控件(SingleLineEdit Control)、按鈕控件(CommandButton Control)、數(shù)據(jù)窗口控件(DataWindow Control),其界面如圖4所示。
圖4 權限管理
當用戶在用戶名文本框中輸入相應的用戶后,按下回車鍵,若為已經(jīng)存在的用戶,則會自動獲取到當前用戶的用戶身份、用戶姓名、用戶單位、創(chuàng)建日期、用戶ID 等信息,若用戶想更改當前用戶的信息,則可以任意選擇更改除用戶名外的所有其他文本框,之后點擊修改按鈕即可完成信息修改。若為不存在的用戶,則會將創(chuàng)建日期自動置為服務器中的當前日期,同時將用戶ID 置為自增序列中的最新值,之后使用者需要手動錄入用戶身份、用戶姓名、用戶單位等信息,當完成上述信息的錄入后,點擊保存按鈕,新錄入的用戶就會創(chuàng)建成功。按下回車鍵之后,左下角中的權限人員即可顯示出來,此時單擊想復制的權限人員,即可將該權限人員的所有權限以及角色復制或修改給用戶名文本框中輸入的用戶,該功能的具體代碼如下:
本文通過PowerBuilder 與Oracle 數(shù)據(jù)庫的交互實現(xiàn)了該系統(tǒng)的功能,該系統(tǒng)大大地加快了統(tǒng)計部分數(shù)據(jù)的效率并解決了人員權限分配的問題,下一步需進一步豐富該系統(tǒng)的功能,同時改進現(xiàn)有模塊以優(yōu)化查詢效率,進一步提升本院信息化水平。