基于MML電子病歷存儲模型研究
本文通過(guò)分析現今主流的數據庫存儲模型,對基于MML標準的電子病歷構建存儲模型。針對對象一關(guān)系型和關(guān)系型2種存儲模型比較分析,給出了基于MML標準的電子病歷系統的數據庫存儲模型設計方案。
本文引用地址:http://dyxdggzs.com/article/198911.htm1 引 言
MML(Medical Markup Language)作為一套不同醫療信息系統之間的數據交換規格于1995年開(kāi)發(fā),是一套比較完整的使用XML結構電子病歷交換標準,目前最新版本是3.0。采用MML標準可以將基于異構電子病歷的醫療信息系統很好的結合起來(lái),實(shí)現數據的共享。
目前大多數采用電子病歷醫療信息系統的醫院都使用關(guān)系型數據庫,主要考慮到關(guān)系型數據庫有強大易用的查詢(xún)分析工具和易與醫院遺留系統整合的能力。但是由于基于MML的電子病歷映射到關(guān)系型數據庫時(shí),原有的層次結構信息將丟失,此外關(guān)系型數據庫對基于MML的電子病歷內的嵌套和遞歸結構支持也較弱。
2數據庫類(lèi)型選擇
針對醫療信息系統的研究發(fā)現,兩類(lèi)數據庫系統操作是必須的:操作類(lèi)型(例如,統計、分析);研究類(lèi)型(例如,查詢(xún))。在分析應當選取何種類(lèi)型的數據庫存儲模型作為研究對象時(shí),首要前提是要支持這兩類(lèi)操作?,F有3種數據庫系統可以作為MML電子病歷的存儲模型,分別是XML原生數據庫、關(guān)系型數據庫和對象一關(guān)系型數據庫。
XML原生數據庫是專(zhuān)門(mén)為存儲XML數據設計的,支持DOM模型和斷言查詢(xún)。但現在缺乏商業(yè)級的產(chǎn)品,同時(shí)開(kāi)發(fā)人員需要花費相當的時(shí)間來(lái)熟悉和適應,在未來(lái)可能作為XML存儲的重要應用但這里不作為分析研究的重點(diǎn)。
對于關(guān)系型數據庫系統,當MML電子病歷映射到數據庫時(shí),文檔內在的層次關(guān)系將丟失。這可能不影響操作類(lèi)型的操作,可是對審計跟蹤將有一定影響。作為現在主流的數據庫系統,關(guān)系型數據庫系統有豐富強大的查詢(xún)和分析工具,各種優(yōu)化技術(shù)又使得性能高效,因此將其作為研究MML電子病歷系統存儲模型的對象。
相比之下對象一關(guān)系數據庫作為較新的數據庫系統,其在關(guān)系型數據庫和面向對象數據庫之間搭起了一座橋梁。對象一關(guān)系數據庫基于關(guān)系模型,存儲結構和數據訪(fǎng)問(wèn)都是基于標準的面向對象版本的SQL。因為引進(jìn)了OO概念,對象一關(guān)系數據庫也附加了、繼承和多態(tài)等OO特性。對象能存儲在表內并包含方法。由于擴展了面向對象的特性,支持復雜數據類(lèi)型,對象一關(guān)系數據庫比傳統關(guān)系型數據庫更適合作為MML電子病歷的存儲模型。
MML電子病歷包括各種檢驗表、圖形等對象需要專(zhuān)門(mén)的方法來(lái)查詢(xún),在這種情形下對象一關(guān)系型數據庫就尤顯優(yōu)勢。
3存儲模型設計和實(shí)現
采用傳統的ANSI三層數據庫模型(外層、邏輯或內層、物理層)來(lái)設計MML電子病歷存儲模型。概念設計階段的目標是構造出獨立于具體數據庫管理系統的數據庫概念模式。在邏輯層設計的過(guò)程中,選用特定的數據模型將概念模式映射到邏輯模式。最后一步按照物理存儲結構開(kāi)發(fā)數據庫的規范,底層算法用來(lái)設計執行數據榆索和數據管理。
3.1 基于MML電子病歷的ER模型
在概念設計階段采用廣為使用的實(shí)體一關(guān)系(ER)模型。根據MML電子病歷處理過(guò)程,設計了包括3個(gè)實(shí)體和8種關(guān)系的模型,3個(gè)實(shí)體分別為:Person,MML-emr和Organization。
針對設計出的ER模型(見(jiàn)圖1),町以選用對象導向的方法或傳統的純關(guān)系數據模型方法。下而將詳細討論對比兩種方法,找出各自的優(yōu)缺點(diǎn)。
3.2對象一關(guān)系型存儲模型設計
在將ER模型映射到對象一關(guān)系模型時(shí),最直接的辦法是采用對象描述實(shí)體。表1為Person對象及其對應屬性。
需要注意的是有4個(gè)屬性是對象數組用以表示PER-AON實(shí)體的多值屬性。MML_emr和Organization對象和Person對象類(lèi)似。ER圖中的關(guān)系也可映射為對象,表2為3個(gè)實(shí)體之間的關(guān)系。
ER模型中的多值屬性可以用VARRAYS或者嵌套表表示,嵌套表更適合對一組需求的查詢(xún),如果是要通過(guò)單個(gè)操作完成的組需求的話(huà)VARRAYS效率更好些。
在對象一關(guān)系模型中,N∶M關(guān)系可以通過(guò)在嵌套表上添加REF(類(lèi)似參考類(lèi)型指針)實(shí)現。以MML電子病歷提供者provider和MML-emr之間的關(guān)系為例。每一個(gè)oo_MML_emr包含有oo_provider的嵌套表,每個(gè)oo_provider屬性指向一個(gè)person對象。在對象-關(guān)系模型中只需兩張表MML_emr和person就可以表示出這個(gè)N∶M的關(guān)系。而在關(guān)系型模型中需要MML_emr,per-son和MML_emr_person三張表。
l:M關(guān)系的實(shí)現在2種模型相似,在對象一關(guān)系模型中使用REF類(lèi)型,而在關(guān)系模型中使用外鍵。
3.3 關(guān)系型存儲模型設計
采用標準算法將ER模型映射到關(guān)系型模型。首先為ER模型中的每個(gè)實(shí)體創(chuàng )建1張表;再對ER模型中的每個(gè)多值屬性創(chuàng )建表;1∶M類(lèi)型的關(guān)系通過(guò)添加外鍵來(lái)實(shí)現;N∶M類(lèi)型的關(guān)系使用單獨的表。由于基于MML的電子病歷包括大量的多值屬性和N∶M類(lèi)型關(guān)系,所以相對于對象一關(guān)系模型會(huì )產(chǎn)生大量的表。
鑒于關(guān)系型數據庫在信息系統中的設計問(wèn)題已經(jīng)有了詳盡深入的研究,這里就不詳細展開(kāi)了。
4 比較
在前述段落提到的分析結果我們認為基于MML電子病歷的數據庫存儲模型的最佳選擇是對象一關(guān)系類(lèi)型。針對對象一關(guān)系型數據庫有2種設計方法,一種是把包括數據成員和方法的對象存儲到表中;另一種是在只使用傳統關(guān)系型數據庫設計方法不能滿(mǎn)足需求時(shí)才采用面向對象的方法來(lái)操作對象。
就分別采用這2種方法設計和實(shí)現對象一關(guān)系模型過(guò)程中存在的問(wèn)題和對執行結果的分析來(lái)討論二者的優(yōu)劣。
4.1 實(shí)現問(wèn)題
對象關(guān)系模型創(chuàng )建的表的數量較關(guān)系型模型少許多,且使用基于對象方法的簡(jiǎn)單表達式使得查詢(xún)也趨于簡(jiǎn)單化。但是對象方法要認真設計實(shí)現,否則某些查詢(xún)因為沒(méi)有設計合適的對象方法將無(wú)法完成。
評論