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