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