《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于MML電子病歷存儲模型研究
基于MML電子病歷存儲模型研究
現(xiàn)代電子技術(shù)
摘要: 本文通過分析現(xiàn)今主流的數(shù)據(jù)庫存儲模型,對基于MML標準的電子病歷構(gòu)建存儲模型,。針對對象一關(guān)系型和關(guān)系型2種存儲模型比較分析,,給出了基于MML標準的電子病歷系統(tǒng)的數(shù)據(jù)庫存儲模型設(shè)計方案。
關(guān)鍵詞: MML 電子病歷 存儲模型
Abstract:
Key words :

      本文通過分析現(xiàn)今主流的數(shù)據(jù)庫存儲模型,,對基于MML標準的電子病歷構(gòu)建存儲模型,。針對對象一關(guān)系型和關(guān)系型2種存儲模型比較分析,給出了基于MML標準的電子病歷系統(tǒng)的數(shù)據(jù)庫存儲模型設(shè)計方案,。

       1 引 言

       MML(Medical Markup Language)作為一套不同醫(yī)療信息系統(tǒng)之間的數(shù)據(jù)交換規(guī)格于1995年開發(fā),,是一套比較完整的使用XML結(jié)構(gòu)電子病歷交換標準,目前最新版本是3.0,。采用MML標準可以將基于異構(gòu)電子病歷的醫(yī)療信息系統(tǒng)很好的結(jié)合起來,,實現(xiàn)數(shù)據(jù)的共享,。

       目前大多數(shù)采用電子病歷醫(yī)療信息系統(tǒng)的醫(yī)院都使用關(guān)系型數(shù)據(jù)庫,主要考慮到關(guān)系型數(shù)據(jù)庫有強大易用的查詢分析工具和易與醫(yī)院遺留系統(tǒng)整合的能力,。但是由于基于MML的電子病歷映射到關(guān)系型數(shù)據(jù)庫時,,原有的層次結(jié)構(gòu)信息將丟失,此外關(guān)系型數(shù)據(jù)庫對基于MML的電子病歷內(nèi)的嵌套和遞歸結(jié)構(gòu)支持也較弱,。

       2數(shù)據(jù)庫類型選擇

       針對醫(yī)療信息系統(tǒng)的研究發(fā)現(xiàn),,兩類數(shù)據(jù)庫系統(tǒng)操作是必須的:操作類型(例如,統(tǒng)計,、分析),;研究類型(例如,查詢),。在分析應(yīng)當選取何種類型的數(shù)據(jù)庫存儲模型作為研究對象時,,首要前提是要支持這兩類操作。現(xiàn)有3種數(shù)據(jù)庫系統(tǒng)可以作為MML電子病歷的存儲模型,,分別是XML原生數(shù)據(jù)庫,、關(guān)系型數(shù)據(jù)庫和對象一關(guān)系型數(shù)據(jù)庫。

       XML原生數(shù)據(jù)庫是專門為存儲XML數(shù)據(jù)設(shè)計的,,支持DOM模型和斷言查詢,。但現(xiàn)在缺乏商業(yè)級的產(chǎn)品,同時開發(fā)人員需要花費相當?shù)臅r間來熟悉和適應(yīng),,在未來可能作為XML存儲的重要應(yīng)用但這里不作為分析研究的重點,。

       對于關(guān)系型數(shù)據(jù)庫系統(tǒng),當MML電子病歷映射到數(shù)據(jù)庫時,,文檔內(nèi)在的層次關(guān)系將丟失,。這可能不影響操作類型的操作,可是對審計跟蹤將有一定影響,。作為現(xiàn)在主流的數(shù)據(jù)庫系統(tǒng),,關(guān)系型數(shù)據(jù)庫系統(tǒng)有豐富強大的查詢和分析工具,各種優(yōu)化技術(shù)又使得性能高效,,因此將其作為研究MML電子病歷系統(tǒng)存儲模型的對象。

       相比之下對象一關(guān)系數(shù)據(jù)庫作為較新的數(shù)據(jù)庫系統(tǒng),,其在關(guān)系型數(shù)據(jù)庫和面向?qū)ο髷?shù)據(jù)庫之間搭起了一座橋梁,。對象一關(guān)系數(shù)據(jù)庫基于關(guān)系模型,存儲結(jié)構(gòu)和數(shù)據(jù)訪問都是基于標準的面向?qū)ο蟀姹镜腟QL,。因為引進了OO概念,,對象一關(guān)系數(shù)據(jù)庫也附加了、繼承和多態(tài)等OO特性,。對象能存儲在表內(nèi)并包含方法,。由于擴展了面向?qū)ο蟮奶匦?,支持?fù)雜數(shù)據(jù)類型,對象一關(guān)系數(shù)據(jù)庫比傳統(tǒng)關(guān)系型數(shù)據(jù)庫更適合作為MML電子病歷的存儲模型,。

       MML電子病歷包括各種檢驗表,、圖形等對象需要專門的方法來查詢,在這種情形下對象一關(guān)系型數(shù)據(jù)庫就尤顯優(yōu)勢,。

       3存儲模型設(shè)計和實現(xiàn)

       采用傳統(tǒng)的ANSI三層數(shù)據(jù)庫模型(外層,、邏輯或內(nèi)層、物理層)來設(shè)計MML電子病歷存儲模型,。概念設(shè)計階段的目標是構(gòu)造出獨立于具體數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫概念模式,。在邏輯層設(shè)計的過程中,選用特定的數(shù)據(jù)模型將概念模式映射到邏輯模式,。最后一步按照物理存儲結(jié)構(gòu)開發(fā)數(shù)據(jù)庫的規(guī)范,,底層算法用來設(shè)計執(zhí)行數(shù)據(jù)榆索和數(shù)據(jù)管理。

       3.1 基于MML電子病歷的ER模型

       在概念設(shè)計階段采用廣為使用的實體一關(guān)系(ER)模型,。根據(jù)MML電子病歷處理過程,,設(shè)計了包括3個實體和8種關(guān)系的模型,3個實體分別為:Person,,MML-emr和Organization,。

       針對設(shè)計出的ER模型(見圖1),町以選用對象導(dǎo)向的方法或傳統(tǒng)的純關(guān)系數(shù)據(jù)模型方法,。下而將詳細討論對比兩種方法,,找出各自的優(yōu)缺點。

http://image.mcuol.com/News/080110103902730.jpg

3.2對象一關(guān)系型存儲模型設(shè)計

       在將ER模型映射到對象一關(guān)系模型時,,最直接的辦法是采用對象描述實體,。表1為Person對象及其對應(yīng)屬性。

       需要注意的是有4個屬性是對象數(shù)組用以表示PER-AON實體的多值屬性,。MML_emr和Organization對象和Person對象類似,。ER圖中的關(guān)系也可映射為對象,表2為3個實體之間的關(guān)系,。

http://image.mcuol.com/News/080110103903092.jpg

        ER模型中的多值屬性可以用VARRAYS或者嵌套表表示,,嵌套表更適合對一組需求的查詢,如果是要通過單個操作完成的組需求的話VARRAYS效率更好些,。

       在對象一關(guān)系模型中,,N∶M關(guān)系可以通過在嵌套表上添加REF(類似參考類型指針)實現(xiàn)。以MML電子病歷提供者provider和MML-emr之間的關(guān)系為例,。每一個oo_MML_emr包含有oo_provider的嵌套表,,每個oo_provider屬性指向一個person對象。在對象-關(guān)系模型中只需兩張表MML_emr和person就可以表示出這個N∶M的關(guān)系。而在關(guān)系型模型中需要MML_emr,,per-son和MML_emr_person三張表,。

       l:M關(guān)系的實現(xiàn)在2種模型相似,在對象一關(guān)系模型中使用REF類型,,而在關(guān)系模型中使用外鍵,。

       3.3 關(guān)系型存儲模型設(shè)計

       采用標準算法將ER模型映射到關(guān)系型模型。首先為ER模型中的每個實體創(chuàng)建1張表,;再對ER模型中的每個多值屬性創(chuàng)建表,;1∶M類型的關(guān)系通過添加外鍵來實現(xiàn);N∶M類型的關(guān)系使用單獨的表,。由于基于MML的電子病歷包括大量的多值屬性和N∶M類型關(guān)系,,所以相對于對象一關(guān)系模型會產(chǎn)生大量的表。

       鑒于關(guān)系型數(shù)據(jù)庫在信息系統(tǒng)中的設(shè)計問題已經(jīng)有了詳盡深入的研究,,這里就不詳細展開了,。

  4 比較

       在前述段落提到的分析結(jié)果我們認為基于MML電子病歷的數(shù)據(jù)庫存儲模型的最佳選擇是對象一關(guān)系類型。針對對象一關(guān)系型數(shù)據(jù)庫有2種設(shè)計方法,,一種是把包括數(shù)據(jù)成員和方法的對象存儲到表中,;另一種是在只使用傳統(tǒng)關(guān)系型數(shù)據(jù)庫設(shè)計方法不能滿足需求時才采用面向?qū)ο蟮姆椒▉聿僮鲗ο蟆?br />
       就分別采用這2種方法設(shè)計和實現(xiàn)對象一關(guān)系模型過程中存在的問題和對執(zhí)行結(jié)果的分析來討論二者的優(yōu)劣。

       4.1 實現(xiàn)問題

       對象關(guān)系模型創(chuàng)建的表的數(shù)量較關(guān)系型模型少許多,,且使用基于對象方法的簡單表達式使得查詢也趨于簡單化,。但是對象方法要認真設(shè)計實現(xiàn),否則某些查詢因為沒有設(shè)計合適的對象方法將無法完成,。

       設(shè)計實現(xiàn)對象一關(guān)系數(shù)據(jù)庫時,,每個對象都要考慮采用何種類型,是否使用用戶自定義類型(UDT),。對每個對象可能有的查詢/操作認真分析,,據(jù)此設(shè)計用戶自定義函數(shù)(UDF)。例如,,通過名字Bob Smith查詢病人電話列表,,下面列出對象一關(guān)系的SQL語句:SELECT o.phoneFROM oo.person o WHERE o.hasName('Bob','Smith'),;這里必須為oo.person對象設(shè)計該hasName自定義方法,,不然將無法進行此查詢。在對象一關(guān)系模型中需要設(shè)計大量自定義方法,。在傳統(tǒng)關(guān)系型模型,,該查詢可以通過下列語句實現(xiàn):SELECT o.phone FROM person p,person-name n person-phom o WHERE n.name='Bob Smith'AND n.id=p.id AND o.id=p.id,;需要連接3個表。

       對象一關(guān)系模型中表的查詢/操作比傳統(tǒng)的關(guān)系型模型簡單直觀,,但是需要編程實現(xiàn)大量的自定義函數(shù),。此外由于N∶M關(guān)系是通過在對象中添加嵌套表或數(shù)組實現(xiàn)的,,設(shè)計人員必須認真考慮應(yīng)該將其添加到該關(guān)系相關(guān)的哪個對象上。

       4.2 時延分析

       對兩個均包含100份MML電子病歷的對象一關(guān)系數(shù)據(jù)庫和傳統(tǒng)關(guān)系型數(shù)據(jù)庫進行比較,。選取下面4組典型的數(shù)據(jù)庫操作分別在2個數(shù)據(jù)庫上運行,,以比較性能:

       (1)使用簡單搜索規(guī)則對單個病人進行數(shù)據(jù)檢索,例如通過名字檢索病人數(shù)據(jù),;

       (2)多病人數(shù)據(jù)檢索查詢,;

       (3)檢索MML emr tab表數(shù)據(jù)(不是病人數(shù)據(jù));

       (4)增,、刪和更新數(shù)據(jù),。

       使用Oracle9i實現(xiàn)2個數(shù)據(jù)庫,共進行13組操作,,每組運行5次取平均時間,。實驗結(jié)果表3所示,對象一關(guān)系模型包含2列,,2個版本的差別在于版本二只在必須的情況下使用用戶自定義函數(shù)(UDF),。Q1到Q3屬于分組一,在兩種數(shù)據(jù)庫中都沒有使用UDF,。Q4到Q6屬于分組二,,分別對oo_person_tab,oo_organization和oo_MML表進行多病人數(shù)據(jù)檢索查詢,。以Q4為例,,該查詢需要掃描整個oo_person_tab表以便執(zhí)行hasName()。Q4的時間復(fù)雜度為O(n),。使用類似hasName(),,hasID()等UDF的查詢依賴于表的行數(shù)。關(guān)系型數(shù)據(jù)庫采用優(yōu)化技術(shù),,時間復(fù)雜度為O(log(n)),,對對象一關(guān)系數(shù)據(jù)庫的優(yōu)化由于UDF非常復(fù)雜,難于優(yōu)化,。Q7,,Q8和Q9屬于分組三,在對象一關(guān)系數(shù)據(jù)庫的2個實現(xiàn)中也同樣發(fā)現(xiàn),,版本二由于只在必須時使用UDF,,執(zhí)行時延得以大幅縮短。分組四同樣是使用UDF的緣故,,執(zhí)行效率傳統(tǒng)關(guān)系型數(shù)據(jù)明顯高于對象一關(guān)系型,。

http://image.mcuol.com/News/080110103903183.jpg

5 結(jié) 語

       設(shè)計層次上,對象一關(guān)系模型因為表的數(shù)量比較少而顯得比較簡潔,但設(shè)計的過程不如關(guān)系型模型直觀,,設(shè)計人員需要認真考慮對象間的關(guān)系應(yīng)當如何表示,。實現(xiàn)層次上,對象一關(guān)系模型需要提供支持多值屬性和關(guān)系的搜索方法的具體實現(xiàn),,可以使用嵌套表或數(shù)組表示,;關(guān)系型模型則采用獨立表,不需要設(shè)計人員編寫代碼,。

       查詢和執(zhí)行方面,,在對象一關(guān)系模型上的查詢表達式簡潔直觀,但需要事先編程實現(xiàn)對象方法,。傳統(tǒng)關(guān)系型模型的數(shù)據(jù)庫操作效率要高過對象一關(guān)系模型,。綜上,因為基于MML的電子病歷系統(tǒng)的原型非常復(fù)雜,,使用對象一關(guān)系型存儲模型可以簡化數(shù)據(jù)庫的設(shè)計和實現(xiàn),,縮短開發(fā)周期;同時可以結(jié)合傳統(tǒng)關(guān)系型的優(yōu)點,,只在必須用用戶自定義方法的時候才使用UDF,,一方面可以提高執(zhí)行效率;另一方面可以盡量避免因為沒有提供必要的UDF而不能執(zhí)行電子病歷靈活多樣的數(shù)據(jù)庫查詢操作

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。