馬燕+陳毅+李湑
摘要:膠囊內(nèi)鏡體檢過程中將產(chǎn)生大量的醫(yī)生、病人、診斷結(jié)果和圖像等信息。復(fù)雜且巨量的數(shù)據(jù)給膠囊內(nèi)鏡影像工作站系統(tǒng)開發(fā)和醫(yī)院規(guī)范化管理增加了極大的困難。該文闡述在SQLite3平臺下規(guī)范化設(shè)計(jì)數(shù)據(jù)關(guān)系模型,應(yīng)用Nhibernate開發(fā)框架,搭建數(shù)據(jù)訪問層,完成數(shù)據(jù)安全訪問和數(shù)據(jù)庫基本操作。提高了膠囊內(nèi)鏡影像工作站系統(tǒng)的開發(fā)效率和系統(tǒng)的可維護(hù)性,實(shí)現(xiàn)了醫(yī)療數(shù)據(jù)有效管理。
關(guān)鍵詞:膠囊內(nèi)鏡;影像工作站系統(tǒng);關(guān)系模型;Nhibernate
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)01-0028-04
Abstract: A large number of doctors, patients, diagnosis results and images will be produced in the process of capsule endoscopy. Complex and huge amount of data to the capsule endoscopic imaging workstation system development and hospital standardized management has increased tremendous difficulties. This article standardizes the data relational model of the system under the SQLite3 platform, Application Nhibernate development framework, build data access layer, connect and operate multiple database files. Improve the development efficiency of capsule endoscopic imaging workstation system and system maintainability, Realized the effective management of medical data.
Key words: Capsule Endoscopy; Image Workstation System; Relationship Model; Nhibernate
膠囊內(nèi)鏡作為新一代消化道系統(tǒng)檢查的內(nèi)鏡,在醫(yī)療領(lǐng)域極具競爭市場[1]。膠囊內(nèi)鏡系統(tǒng)主要由膠囊內(nèi)鏡、數(shù)據(jù)記錄儀和影像工作站組成[2]。醫(yī)生最終的診斷和管理數(shù)據(jù)的工作主要是在影像工作站系統(tǒng)上完成[3],數(shù)據(jù)庫設(shè)計(jì)的合理與否直接影響系統(tǒng)的軟件架構(gòu)和數(shù)據(jù)處理的效率[4]。數(shù)據(jù)庫設(shè)計(jì)和實(shí)現(xiàn)的過程中,除了要合理創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)框架,還需要考慮到系統(tǒng)經(jīng)濟(jì)易實(shí)現(xiàn)、實(shí)際臨床應(yīng)用中系統(tǒng)易調(diào)整或升級等因素。綜合考慮后,采用經(jīng)濟(jì)易得且部署方便的SQLite3和能降低系統(tǒng)耦合的Nhiernate[5-8]進(jìn)行膠囊內(nèi)鏡影像工作站系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)和實(shí)現(xiàn)。
1 需求分析
1.1 功能需求分析
膠囊內(nèi)鏡影像工作站系統(tǒng),主要的面向?qū)ο笫窍罊z查的醫(yī)生,具有明顯的專業(yè)性和較強(qiáng)的針對性。圖1為膠囊內(nèi)鏡影像工作站操作需求示意圖。
1) 病人吞入膠囊內(nèi)鏡前
醫(yī)生憑借合法賬號和密碼登錄影像工作站系統(tǒng),錄入病人的基本信息和膠囊內(nèi)鏡的序列號。該合法用戶賬號由系統(tǒng)管理員進(jìn)行建立,并與醫(yī)生信息關(guān)聯(lián),每個用戶被分配權(quán)限,限制查閱病歷的范圍。
2) 病人吞下膠囊內(nèi)鏡后
膠囊內(nèi)鏡工作時,拍攝人體消化道內(nèi)壁圖像,經(jīng)無線傳輸方式將圖像數(shù)據(jù)發(fā)送至數(shù)據(jù)記錄儀。數(shù)據(jù)記錄儀與影像工作站系統(tǒng)在連接狀態(tài)下,可將圖像數(shù)據(jù)導(dǎo)入影像工作站系統(tǒng)。在膠囊內(nèi)鏡未從體外排出之前,醫(yī)生可在影像工作站系統(tǒng)上實(shí)時查看消化道圖像,也可在膠囊內(nèi)鏡排出體外后,把數(shù)字記錄儀中存儲的數(shù)據(jù)下載到影像工作站系統(tǒng)中,進(jìn)行圖像控制播放、定位瀏覽,對疑似病患的圖像放大縮小點(diǎn)存或者導(dǎo)出等操作,最后描述診斷結(jié)果,生成診斷報告。
3) 診斷結(jié)束后
根據(jù)需要,醫(yī)生可以將檢查的原始圖片或生成的AVI文件從影像工作站系統(tǒng)中導(dǎo)出,病人進(jìn)行拷貝后可自行播放閱覽。
1.2 數(shù)據(jù)需求分析
根據(jù)功能需求分析,膠囊內(nèi)鏡影像工作站系統(tǒng)中主要的數(shù)據(jù)信息是:醫(yī)生信息、賬號信息、病人信息、病歷信息和膠囊內(nèi)鏡圖像數(shù)據(jù)。
1.3 非功能需求分析
1) 系統(tǒng)數(shù)據(jù)庫需方便安裝部署,數(shù)據(jù)易拷貝攜帶及快速瀏覽和定位;
2) 當(dāng)需求發(fā)生某些變化時,可在不改變系統(tǒng)框架的基礎(chǔ)上方便調(diào)整修改和升級。
2 數(shù)據(jù)庫設(shè)計(jì)
2.1 概念結(jié)構(gòu)設(shè)計(jì)
本設(shè)計(jì)采用SQLite3單文件數(shù)據(jù)庫,分為兩個數(shù)據(jù)庫:一個是系統(tǒng)病歷數(shù)據(jù)庫MrData(包含醫(yī)生、病人、診斷報告等信息),另一個是圖像數(shù)據(jù)庫ImgData,用于存儲病人檢查后的圖像信息。圖像數(shù)據(jù)庫通過病歷數(shù)據(jù)庫中的病歷信息進(jìn)行關(guān)聯(lián)。從上述的需求分析結(jié)果抽象出用戶觀點(diǎn)的概念模型并用實(shí)體關(guān)系(E-R)圖表示。抽象出的實(shí)體有醫(yī)生、病人、賬戶、病歷信息、圖像、膠囊內(nèi)鏡等,各個實(shí)體具體關(guān)系,如圖2所示。
2.2 邏輯結(jié)構(gòu)設(shè)計(jì)
結(jié)合上述概念結(jié)構(gòu)的實(shí)體關(guān)系和系統(tǒng)實(shí)際運(yùn)用,本節(jié)將上述實(shí)體和相應(yīng)聯(lián)系進(jìn)行調(diào)整轉(zhuǎn)化為一系列的關(guān)系模型。管理員根據(jù)醫(yī)生的職務(wù)來授予數(shù)據(jù)訪問得權(quán)限,其中,“科室”信息不僅是醫(yī)生信息里的一個屬性,還是“本科室”病歷訪問權(quán)限的一個參數(shù),為了有效利用“科室”信息,故將“科室”也作為關(guān)系模型中的一個對象,并與醫(yī)生信息進(jìn)行關(guān)聯(lián)。由于“膠囊內(nèi)鏡序列號”是唯一的,當(dāng)病人姓名為索引時,可與膠囊序列號一起作為一次診斷的標(biāo)識。膠囊內(nèi)鏡影像工作站系統(tǒng)的關(guān)系模型具體如下所述。endprint
(1) 醫(yī)生信息(醫(yī)生Id、姓名、性別、年齡、電話號碼、職務(wù)、科室Id、賬戶Id);
(2) 科室(科室Id、科室名);
(3) 賬戶信息(帳戶Id、用戶名、賬號密碼、權(quán)限、登錄時間);
(4) 病人信息(病人Id、姓名、性別、年齡、身份證號、電話號碼、住址、頭像);
(5) 病歷信息(病歷Id、病人Id、病人姓名、醫(yī)生Id、膠囊內(nèi)鏡序列號、病人自述、醫(yī)生描述、原始圖像存儲路徑、點(diǎn)存圖像存儲路徑、AVI圖像文件名、報告編輯時間、報告導(dǎo)出時間);
(6) 圖像信息(圖像編號、圖像二進(jìn)制數(shù)據(jù)、圖像下載時間、是否保存)。
2.3 數(shù)據(jù)庫建表
數(shù)據(jù)庫表是數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ),是數(shù)據(jù)庫中所有數(shù)據(jù)的載體[9-10]。本文中系統(tǒng)數(shù)據(jù)庫表有:醫(yī)生信息表(DoctorInfo)、科室表(DepartmentInfo)、帳戶信息表(AccountInfo)、病人信息表(PatientInfo)、病歷信息表(DiagnosedInfo)、圖像數(shù)據(jù)庫中的圖像信息表(ImageInfo)。依照數(shù)據(jù)庫的完整性要求和系統(tǒng)的實(shí)際應(yīng)用,MrData數(shù)據(jù)庫中的表如表1-表5所示,ImgData圖像數(shù)據(jù)庫表如表6所示。
醫(yī)生信息表(DoctorInfo)用于存儲醫(yī)生基本信息,并與其賬戶信息關(guān)聯(lián),其中性別采用Bool類型(1:男,0:女)。
科室表(DepartmentInfo)用于存儲科室信息,作為“本科室”權(quán)限劃分重要參數(shù),如表2所示。
賬戶信息表(AccountInfo)用于存儲使用系統(tǒng)的醫(yī)生的賬號和權(quán)限信息及最后登錄時間,其中權(quán)限采用Int類型(1:本人,2:本科室,255:所有)。
表4是病人信息表(PatientInfo)用于存儲病人基本信息,可一次登記反復(fù)使用。
表5是病歷信息表(DiagnosedInfo),用于存儲病人的診斷信息,以及與圖像數(shù)據(jù)庫文件的關(guān)聯(lián)信息。
圖像信息表(ImageInfo)存儲于用于存儲下載的原始圖像數(shù)據(jù)和圖像狀態(tài)信息以及圖像的下載時間,如表6所示。
3 數(shù)據(jù)庫應(yīng)用
系統(tǒng)中應(yīng)用層與底層數(shù)據(jù)的交互是通過數(shù)據(jù)訪問層實(shí)現(xiàn)。以下是搭建數(shù)據(jù)訪問層的關(guān)鍵技術(shù)。
3.1 持久對象類的建立
在命名空間”ImgWorkStation”中分別創(chuàng)建Doctor類、Account類、Department類、Patient類、DiagnosedInfo類和PatientImage類,添加各個類的屬性和屬性相對應(yīng)的get和set方法。
3.2 數(shù)據(jù)表與.Net類的映射
實(shí)現(xiàn)數(shù)據(jù)庫表與其.Net類的映射,主要是通過對象-關(guān)系映射文件來完成。在關(guān)系映射文件中,定義數(shù)據(jù)存儲到相應(yīng)的數(shù)據(jù)表,類的屬性映射到數(shù)據(jù)庫表的相應(yīng)字段。本系統(tǒng)中,我們需要對這6個類分別編寫映射文件,將其分別命名為Doctor.hbm.xml、Account.hbm.xml、Department.hbm.xml、Patient.hbm.xml、DiagnosedInfo.hbm.xml、PatientImage.hbm.xml。
現(xiàn)以Doctor類映射到DoctorInfo表的映射文件(Doctor.hbm.xml)為例,進(jìn)行編寫說明,其余類似,不在文中贅述。以下僅為配置的重要代碼。
<!—定義主鍵—>
<!—類的屬性名對應(yīng)數(shù)據(jù)庫表的相應(yīng)字段→
<!—多對一關(guān)系:多個醫(yī)生屬于一個科室—>
<!—唯一外鍵關(guān)聯(lián)映射—>
3.3 Nhibernate與數(shù)據(jù)庫的連接及操作
Nhibernate與SQLite3數(shù)據(jù)庫連接的配置信息主要在名為“hibernate.cfg.xml”的文件中。Nhibernate下載包中各種主流關(guān)系型數(shù)據(jù)庫訪問方式的配置模板,故Sqlite的配置信息不在這里描述。本節(jié)的難點(diǎn)在于系統(tǒng)中存在多個數(shù)據(jù)庫,運(yùn)用以下解決方式。
“Configuration configuration = new Configuration().Configure(configfile)”;并且 "connection.connection_string"(數(shù)據(jù)庫連接字符串)并沒放在配置文件中,而是在代碼中添加連接字符串?!癱onfiguration.Properties["connection.connection_string"] = connectStr;”實(shí)現(xiàn)多數(shù)據(jù)庫連接和數(shù)據(jù)安全訪問。
數(shù)據(jù)訪問時需創(chuàng)建ISessionFactory對象,從中獲取ISession代表與數(shù)據(jù)庫的一次操作,ISession提供了save()、delete()、update()、load()和find()等方法實(shí)現(xiàn)數(shù)據(jù)庫表的基本操作,之后關(guān)閉ISession。為保證數(shù)據(jù)安全無誤,在數(shù)據(jù)操作時必須使用事務(wù),通過調(diào)用會話對象的BeginTransaction方法創(chuàng)建Nhibernate管理的事務(wù)。
3.4 操作界面的實(shí)現(xiàn)
系統(tǒng)采用winform編程實(shí)現(xiàn)病人和診斷信息編輯窗體、賬戶和醫(yī)生信息編輯窗體、賬戶管理窗口以及圖像展示框,分別如圖3到6所示。
通過圖3編輯框,可將相應(yīng)信息對應(yīng)存儲到底層數(shù)據(jù)庫中。
管理員利用醫(yī)生管理窗口,可以添加,修改,刪除醫(yī)生及其關(guān)聯(lián)信息。管理窗口如圖4所示,醫(yī)生信息編輯窗口如圖5所示。
圖6為指定病人的圖像展示框,系統(tǒng)從相應(yīng)病歷圖像庫中取出圖像數(shù)據(jù)。
4 結(jié)束語
在對膠囊內(nèi)鏡影像工作站系統(tǒng)需求分析的基礎(chǔ)上,從數(shù)據(jù)模型的概念設(shè)計(jì)、邏輯設(shè)計(jì)和數(shù)據(jù)庫表結(jié)構(gòu)描述了系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)及其完整性設(shè)計(jì)和實(shí)現(xiàn)。并基于Nhibernate框架在.Net開發(fā)環(huán)境下完成數(shù)據(jù)訪問層的搭建,應(yīng)用Winform編程給醫(yī)生提供便于數(shù)據(jù)操作的人機(jī)交互界面。從而提供了一個便于操作和維護(hù)的膠囊內(nèi)鏡影像工作站系統(tǒng),有效解決了膠囊內(nèi)鏡影像工作站系統(tǒng)中復(fù)雜數(shù)據(jù)的管理問題。
參考文獻(xiàn):
[1] 張瑞娟,劉晴.膠囊內(nèi)窺鏡產(chǎn)品發(fā)展現(xiàn)狀綜述[J].生物技術(shù)世界,2015(9):221+223.
[2] 許飛,顏國正,朱柄全,等.視頻膠囊內(nèi)窺鏡的改進(jìn)設(shè)計(jì)與實(shí)驗(yàn)[J]. 電子學(xué)報,2015(3):605-610.
[3] 楊鵬舉. 膠囊內(nèi)鏡圖像工作站系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].華中科技大學(xué),2012.
[4] 王睛睛,劉偉,李旭祥,等. 基于GIS的西安市文化遺產(chǎn)空間數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)[J]. 地理空間信息,2017(11):39-42.
[5] 黎孟雄.基于SQLite的數(shù)據(jù)庫原理自主實(shí)驗(yàn)平臺設(shè)計(jì)[J]. 實(shí)驗(yàn)技術(shù)與管理,2016(11):157-160.
[6] 華玉鑫. 倉儲管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息通信,2016(1):146-147.
[7] 孫志中,魏嘉銀,秦永彬. 基于WCF和NHibernate的軟件架構(gòu)研究及應(yīng)用[J]. 計(jì)算機(jī)與數(shù)字工程,2015(4):591-595+634.
[8] 佟吉富. 基于NHibernate的旅游資源管理系統(tǒng)數(shù)據(jù)持久化[J]. 電子測試,2014(20):12-13.
[9] 賴劍烈. 病理信息管理系統(tǒng)的設(shè)計(jì)與研發(fā)[D].南方醫(yī)科大學(xué),2015.
[10] 徐海琴,王雅軍,南玉萍,等. 大數(shù)據(jù)在醫(yī)療設(shè)備管理中的應(yīng)用[J]. 醫(yī)療衛(wèi)生裝備,2017(6):135-137.endprint