劉 皓 朱家琦 許 海
醫(yī)院病案即依據(jù)規(guī)范對患者病情診斷、治療、護理、治護效果、轉歸與否等記錄在案,具有客觀性及信息完整等特點[1-2]。病案包括紙質病歷、電子病歷、病理切片等多種類型,不僅可為臨床醫(yī)學、科研等提供原始資料,而且被認為是醫(yī)療質量評估的重要要素。
隨著互聯(lián)網(wǎng)及信息技術的快速發(fā)展,電子文檔在醫(yī)院病案管理中的應用不斷增多,受醫(yī)院發(fā)展、現(xiàn)代病案管理要求等影響,當下的病案管理難以滿足需求[3-4]。為此,采取何種措施最大程度發(fā)揮病案作用,成為醫(yī)院病案管理急需解決的問題。本研究以相關病案管理文件為指導,設計基于文檔數(shù)據(jù)庫的病案管理系統(tǒng),旨在解決醫(yī)院病案管理中存在的問題。
文檔數(shù)據(jù)庫于20世紀90年代由Lotus提出,與傳統(tǒng)數(shù)據(jù)庫不同的是,其用于管理文檔。既往數(shù)據(jù)庫內信息較為離散,多為數(shù)據(jù)段,對文檔數(shù)據(jù)庫而言,其基本單位為文檔,該文檔可能很長且復雜。目前,文檔數(shù)據(jù)庫較多,如Apache CouchDB、RavenDB、MongoDB等,其各有特色。以RavenDB文檔數(shù)據(jù)庫為例,其所具有的特點為:①客戶端應用程序編程接口(application programming interface,API)對.Net、Java支持。如.Net API,語言層面以語言集成查詢(languageintegrated query,LINQ)支持最為常見,被認為是.Net NoSQL數(shù)據(jù)庫標配,但.Net API、Java API均以自身Rest API為基礎構建;②伸縮性強,能擴展,且可插件化;③性能及安全。RavenDB文檔數(shù)據(jù)庫能自動調優(yōu),讀取速度快,且能智能索引,支持多級緩存。
醫(yī)院病案管理中應用文檔數(shù)據(jù)庫,能快速獲取、瀏覽或傳輸患者病歷資料。該數(shù)據(jù)庫通過授權、數(shù)據(jù)加密或身份驗證等多種方式驗證后方可應用,安全性較高。此外,文檔數(shù)據(jù)庫相比文件系統(tǒng)數(shù)據(jù)冗余度小,可節(jié)約一定的存儲空間,便于管理維護,且相比文件系統(tǒng),文檔數(shù)據(jù)庫數(shù)據(jù)存在物理和邏輯雙重獨立性,數(shù)據(jù)和程序分離。相比關系數(shù)據(jù)庫,文檔數(shù)據(jù)庫能創(chuàng)建多種不同類型字段(任何格式、非結構化),最重要的是文檔數(shù)據(jù)庫對參數(shù)完整性及事務分布未提供支持。
醫(yī)院病案管理中建立文檔數(shù)據(jù)庫,存儲、查詢及瀏覽患者病歷資料較為方便,不僅能極大的減少工作人員工作量,提高工作效率,而且為醫(yī)院相關科研和統(tǒng)計分析工作提供重要數(shù)據(jù)[5-6]。
選擇.Net webservic三層構架,其中客戶端對系統(tǒng)三大功能模塊(病歷文檔歸檔、查閱及系統(tǒng)管理)顯示;客戶端還需提供與電子病歷系統(tǒng)等軟件相關集成接口,客戶端、數(shù)據(jù)庫及文檔庫之間經(jīng)由Webserviee數(shù)據(jù)訪問層通訊,而數(shù)據(jù)訪問通過相關方式操作數(shù)據(jù)庫及文檔庫,同時需用戶驗證及進行訪問控制。病案管理系統(tǒng)功能模塊設計如圖1所示。
圖1 病案管理系統(tǒng)功能模塊設計框圖
2.1.1 病歷文檔歸檔管理
(1)自動索引。文檔包上含有患者病歷索引ERL文件(XML合適),對ERL文件自動檢測,對患者名字、病案號、性別、年齡、入院時間、入院科室、病歷頁數(shù)及其文件大小、影像學資料及其文件大小等相關信息解析后的結果保存至數(shù)據(jù)庫內。
(2)文檔整理。按照患者出院日期、住院號、身份識別(identification,ID)號建立文檔存儲目錄,存儲目錄內病歷文檔拷貝至相應的歸檔文檔存儲目錄內,患者每一個人文檔配置索引文件和閱讀器,保證患者病歷文檔齊全。若患者ID號為9555,出院日期為2017年10月1號,則該患者文檔存儲目錄即2017/2017-10/2017-10-1/9555。
(3)數(shù)據(jù)審核。對前兩個步驟完成獲取的病歷資料進行數(shù)據(jù)校驗,核對病歷文檔包文件和原先電子病歷系統(tǒng)文件相同與否,避免數(shù)據(jù)導出、傳輸時丟失,造成文檔不全。
(4)文檔上傳。校驗審核結束后,將其經(jīng)由FTP文件方式上傳至文件服務器內保管[7-8]。
2.1.2 病歷文檔查閱管理
(1)文檔查詢。檢索患者病歷文檔資料,合法用戶均有操作權限,涉及到患者名字、ID號、出院日期、歸檔時間等信息,按照多條件組合,單擊“查詢”項,滿足條件的病歷文檔便會列表顯示,且對患者病歷文檔基本信息、歸檔時間或狀態(tài)以及借閱與否情況進行顯示。
(2)查閱申請。由于病案涉及到個人隱私、醫(yī)學操作等問題,普通用戶對病案內容無查閱權限,須遞交申請。查詢后用戶于病歷基本信息內選項(能多選),“申請”點擊。
(3)審批。用戶提交病歷文檔查詢申請后,系統(tǒng)管理員進行審批,對滿足條件的授權閱讀,若不滿足則駁回申請,系統(tǒng)后臺對申請、審批進行記錄。
(4)文檔閱讀。被授權可閱讀的用戶對“病歷閱讀”點擊,病歷文檔則經(jīng)由服務器通過FTP協(xié)議將其傳至客戶端臨時文件夾,用戶閱讀結束,退出系統(tǒng)時會自動清空臨時文件夾內文檔,避免文檔被非法下載及拷貝[9]。
2.1.3 病歷文檔系統(tǒng)涉及內容
(1)用戶登錄。用戶名、密碼登錄,依據(jù)用戶權限對相應功能模塊開放,非法用戶則拒絕。
(2)用戶管理。系統(tǒng)能新增、編輯或刪除相關用戶,且可給用戶授權。其中新增用戶均采取默認密碼及權限,登錄后能自行調整密碼。
(3)用戶日志。對用戶查詢、查閱申請、查閱情況等自動記錄,除了對患者隱私保護外,還能反映病歷文檔利用情況。
(4)系統(tǒng)設置。該項內容只有系統(tǒng)管理員有權限,主要對文件服務器地址等常用操作參數(shù)更改。
2.2.1 系統(tǒng)設計相關技術
根據(jù)醫(yī)院病案管理現(xiàn)狀、信息技術水平以及病案管理系統(tǒng)設計目標等,選擇Microsoft.Net技術平臺架構,并以Java為基礎,使Web應用程序如互聯(lián)網(wǎng)信息服務(internet information services,IIS)服務器創(chuàng)建更簡單、穩(wěn)定且安全。.Net平臺結構包括公共語言運行環(huán)境、基礎類庫、Windows表單、通用語言規(guī)范、工具(VB.Net、C++.Net、C#等)等。選擇結構化查詢語言(structured query languege,SQL)、Server數(shù)據(jù)庫為后臺數(shù)據(jù)庫管理平臺,SQL語言包括Schema數(shù)據(jù)定義語言(data definition language,DDL)、數(shù)據(jù)操作語言(data manipulation languag,DML)、數(shù)據(jù)查詢語言(data query language,DQL)和數(shù)據(jù)控制語言(data control language,DCL)四大部分。其中,DDL通過數(shù)據(jù)定義SQL語言,以改變數(shù)據(jù)庫結構;DML則通過數(shù)據(jù)對語言操縱,如將新紀錄添加至數(shù)據(jù)庫表,對記錄調整;DQL指的是借助語言查詢從數(shù)據(jù)庫內獲?。籇CL則控制用戶權限。此外,數(shù)據(jù)庫設計需要結合系統(tǒng)需求,形成醫(yī)院病案管理系統(tǒng)實體-聯(lián)系圖,病例文檔如圖2所示。
2.2.2 索引構建
病歷文檔有自身獨有的索引文件,對患者姓名、年齡、性別等基本信息記錄,是文檔審核、查閱等功能實現(xiàn)的重要前提。索引建立即對Exportresult.erc文件解析,解析后字段根據(jù)病歷文檔信息表結構保存到數(shù)據(jù)庫,相關代碼如下:
If(xnode.Name=“”)
{
datatable.Rows.Add(1);
xe=(XmlElement)xnode;
Datatable.Rows[rowindex][“ID Number”]=xe.GetAttribute(“pid”);
xn=mode.SelectSingleNode(“baseinfo”);
foreach(XmlNode xmlnode in xn.ChildNodes)
{
xe=(XmlElement)xmlnode;
strtemp=xe.GetAttribute(“name”);
datatable.Rows[rowindex][“Discharge Date”]=Date Time.Parse(Common.HYcomm.uf-FormatToDate(xe.GetAttribute(“outdate”),false)).ToStringQ Spit(‘ ’)[0];
datatable.Rows[rowindex][“Discharge Department”]=xe.GetAttribute(“outdeptname”;
}
rowindex++
}
圖2 醫(yī)院病案管理系統(tǒng)實體-聯(lián)系圖
2.2.3 病案的安全性
病案對患者姓名、性別、疾病情況等信息記錄,一旦被非法入侵會造成嚴重損失,為此需加強病案管理系統(tǒng)安全性建設[10-11]。
(1)數(shù)據(jù)備份。受病毒感染、硬盤損壞等影響,相關數(shù)據(jù)可能丟失,為此需對病案資料備份,最好多備份幾個,以保證數(shù)據(jù)的完整性。
(2)病案文檔內容保密。保護患者隱私是醫(yī)院工作重要內容,病案文檔對患者個人信息、疾病信息詳細記錄,為此須對文檔內容保密處理,尤其是系統(tǒng)、業(yè)務數(shù)據(jù)交換時,一定要加密進行,避免數(shù)據(jù)被非法“破壞”。
(3)病歷文檔采集、復制及上傳至服務器時可能造成數(shù)據(jù)丟失或數(shù)據(jù)不全,對此需設置數(shù)據(jù)審核和校驗環(huán)節(jié),以保證病歷資料的完整。
(4)病案ID。病案可分享,多人查詢、申請查閱可能導致信息泄露或被非法下載和復制,為此須嚴格審核用戶信息,對用戶身份識別,且進行系統(tǒng)訪問設限,符合要求者根據(jù)情況同意查閱,而非法用戶直接拒絕。同時合法用戶查閱病例文檔后,系統(tǒng)須對查看內容及時清空。
基于文檔數(shù)據(jù)庫病案管理系統(tǒng)的構建是為了解決病案存儲及開發(fā)利用問題。本研究根據(jù)醫(yī)院病案管理實際情況及管理需求進行.Net webservic三層構架設計,靈活運用Microsoft.NET技術平臺等相關技術,設計了基于文檔數(shù)據(jù)庫病案管理系統(tǒng)。該系統(tǒng)涉及到病歷信息采集、整理、索引構建、數(shù)據(jù)審核等歸檔問題,2016年6月應用以來減輕了工作人員手工業(yè)務,優(yōu)化工作流程,提高了工作效率。同時,有利于病案管理規(guī)范化,充分發(fā)揮信息技術在病案管理中的作用。
病案管理系統(tǒng)的數(shù)據(jù)審核功能有利于病案文檔信息的完整性及可靠性,同時系統(tǒng)所具有的查詢功能為醫(yī)護人員臨床工作、科研及學習提供更全面和準確的數(shù)據(jù),方便患者異地就診[12-13]。此外,基于文檔數(shù)據(jù)庫的病案管理系統(tǒng)能對信息長時間安全保存,除為醫(yī)護人員、患者查詢資料提供便利外,還能減少紙質病案使用,避免紙質病案保存難、管理難的問題。但受工作人員素質、信息化水平等影響,且基于文檔數(shù)據(jù)庫病案管理系統(tǒng)設計應用時間較短,關于其應用效果有待日后進一步研究分析。