專利名稱:基于xml數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫結(jié)合的“電子病人”編輯方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)軟件開發(fā)領(lǐng)域,具體是指一種應(yīng)用于急救教學(xué)軟件方面的程序開發(fā)方法。
背景技術(shù):
編程語目方面:計(jì)算機(jī)不能直接理解高級語言,只能直接理解機(jī)器語言,所以必須要把高級語言翻譯成機(jī)器語言,計(jì)算機(jī)才能執(zhí)行高級語言編寫的程序。因此也就產(chǎn)生了相應(yīng)的編譯語言提供給編程人員,翻譯語言的類型有兩種,編譯型和解釋型,兩種方式的差別大體上只是翻譯的時間不同:一、編譯型語言寫的程序執(zhí)行之前,需要一個專門的編譯過程,把程序編譯成為機(jī)器語言的文件,比如exe文件,以后要運(yùn)行的話就不用重新翻譯了,直接使用編譯的結(jié)果就行了(exe文件),因?yàn)榉g只做了一次,運(yùn)行時不需要翻譯,所以編譯型語言的程序執(zhí)行效率高。二、解釋型則不同,解釋型語言的程序不需要編譯,省了道工序,解釋性語言在運(yùn)行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執(zhí)行basic程序,每個語句都是執(zhí)行的時候才翻譯。這樣解釋性語言每執(zhí)行一次就要翻譯一次,效率比較低。解釋是一句一句的翻譯。編譯型與解釋型,兩者各有利弊。前者由于程序執(zhí)行速度快,同等條件下對系統(tǒng)要求較低,因此像開發(fā)操作系統(tǒng)、大型應(yīng)用程序、數(shù)據(jù)庫系統(tǒng)等時都采用它,像C/C++、Pascal/Object Pascal (Delphi)等都是編譯語言,但是它對開發(fā)人員的要求上就相對嚴(yán)格一些,從入門到掌握的周期比較長。并且大多數(shù)傳統(tǒng)編譯型語言開發(fā)出的軟件移植性不強(qiáng),對系統(tǒng)要求比較單一,而一些網(wǎng)頁腳本、服務(wù)器腳本及輔助開發(fā)接口這樣的對速度要求不高、對不同系統(tǒng)平臺間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。這樣的話,高效率和低成本就成了一種看上去矛盾的問題,還有一些代碼保密性的問題也相應(yīng)而出。所以在這種情況下,如果有一種結(jié)合以上兩種類型的開發(fā)模式,不僅能縮短軟件開發(fā)的過程而且使得開發(fā)出的軟件更高效,更具安全性。數(shù)據(jù)存儲方面:在當(dāng)今社會中,有大量的信息數(shù)據(jù)需要存儲,因此數(shù)據(jù)庫技術(shù)的發(fā)展也日新月異,大致可分為:關(guān)系型數(shù)據(jù)庫與XML數(shù)據(jù)庫,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,例如SqlServer/Orcale面臨了如下的障礙問題:l、High performance-對數(shù)據(jù)庫高并發(fā)讀寫的需求
web2.0網(wǎng)站要根據(jù)用戶個性化信息來實(shí)時生成動態(tài)頁面和提供動態(tài)信息,所以基本上無法使用動態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次讀寫請求。關(guān)系數(shù)據(jù)庫應(yīng)付上萬次SQL查詢還勉強(qiáng)頂?shù)米?,但是?yīng)付上萬次SQL寫數(shù)據(jù)請求,硬盤IO就已經(jīng)無法承受了。2、Huge Storage-對海量數(shù)據(jù)的高效率存儲和訪問的需求對于關(guān)系數(shù)據(jù)庫來說,在一張2.5億條記錄的表里面進(jìn)行SQL查詢,效率是極其低下乃至不可忍受的。例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動輒數(shù)以億計(jì)的帳號,關(guān)系數(shù)據(jù)庫也很難應(yīng)付。3、High Scalability && High Availability-對數(shù)據(jù)庫的高可擴(kuò)展性和高可用性的需求在基于web的架構(gòu)當(dāng)中,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時候,你的數(shù)據(jù)庫卻沒有辦法像web server和app server那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對于很多需要提供24小時不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進(jìn)行升級和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。XMl數(shù)據(jù)庫:XML數(shù)據(jù)庫是一種支持對XML格式文檔進(jìn)行存儲和查詢等操作的數(shù)據(jù)管理系統(tǒng)。在系統(tǒng)中,開發(fā)人員可以對數(shù)據(jù)庫中的XML文檔進(jìn)行查詢、導(dǎo)出和指定格式的序列化。與傳統(tǒng)數(shù)據(jù)庫相比,XML數(shù)據(jù)庫具有以下優(yōu)勢:1、XML數(shù)據(jù)庫能夠?qū)Π虢Y(jié)構(gòu)化數(shù)據(jù)進(jìn)行有效的存取和管理。如網(wǎng)頁內(nèi)容就是一種半結(jié)構(gòu)化數(shù)據(jù),而傳統(tǒng)的關(guān)系數(shù)據(jù)庫對于類似網(wǎng)頁內(nèi)容這類半結(jié)構(gòu)化數(shù)據(jù)無法進(jìn)行有效的管理。2、提供對標(biāo)簽和路徑的操作。傳統(tǒng)數(shù)據(jù)庫語言允許對數(shù)據(jù)元素的值進(jìn)行操作,不能對元素名稱操作,半結(jié)構(gòu)化數(shù)據(jù)庫提供了對標(biāo)簽名稱的操作,還包括了對路徑的操作。3、當(dāng)數(shù)據(jù)本身具有層次特征時,由于XML數(shù)據(jù)格式能夠清晰表達(dá)數(shù)據(jù)的層次特征,因此XML數(shù)據(jù)庫便于對層次化的數(shù)據(jù)進(jìn)行操作。XML數(shù)據(jù)庫適合管理復(fù)雜數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)集,如果已經(jīng)以XML格式存儲信息,則XML數(shù)據(jù)庫利于文檔存儲和檢索;可以用方便實(shí)用的方式檢索文檔,并能夠提供高質(zhì)量的全文搜索引擎。另外XML數(shù)據(jù)庫能夠存儲和查詢異種的文檔結(jié)構(gòu),提供對異種信息存取的支持。
發(fā)明內(nèi)容
本發(fā)明目的是克服現(xiàn)有技術(shù)存在的上述不足,提供一種基于XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫結(jié)合的“電子病人”編輯方法。本發(fā)明在數(shù)據(jù)存儲方面避免了傳統(tǒng)型數(shù)據(jù)庫查詢效率低,維護(hù)不便利,開發(fā)周期長的缺點(diǎn),利用XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫相結(jié)合的數(shù)據(jù)存儲方式,可以滿足“電子病人”編輯信息量大,運(yùn)行速度快,為其提供一種能夠有效解決軟件運(yùn)行效率和開發(fā)效率之間的矛盾、實(shí)現(xiàn)過程方便快捷、穩(wěn)定安全可靠的軟件系統(tǒng)。本發(fā)明提供的基于XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫結(jié)合的“電子病人”編輯方法,在軟件模塊方面,采用了移植性強(qiáng)的模塊化開發(fā)方式,可以將“電子病人”病例編輯模塊移植到不同的醫(yī)療教學(xué)或急救系統(tǒng)軟件當(dāng)中,所述的模塊運(yùn)行步驟如下:(I)系統(tǒng)顯示病例編輯界面,接受信息項(xiàng)輸入。等待用戶操作(保存,修改,刪除)指令。(2)當(dāng)觸發(fā)數(shù)據(jù)存儲操作時,系統(tǒng)首先進(jìn)行數(shù)據(jù)校驗(yàn),校驗(yàn)通過后,系統(tǒng)內(nèi)部XML數(shù)據(jù)庫引擎自動生成規(guī)定結(jié)構(gòu)的XML文件。并進(jìn)行初始化操作。(3)當(dāng)觸發(fā)數(shù)據(jù)查詢或刪除操作時,系統(tǒng)首先對查詢條件進(jìn)行數(shù)據(jù)校驗(yàn),校驗(yàn)成功后,通過查詢條件遍歷XML庫,找到相應(yīng)標(biāo)簽,對數(shù)據(jù)進(jìn)行相應(yīng)操作。(4)當(dāng)數(shù)據(jù)量過大需要備份時,為了分類數(shù)據(jù)并安全備份,釆取與關(guān)系型數(shù)據(jù)庫結(jié)合的方式,將XML文件以關(guān)鍵值建立索引直接存入關(guān)系型數(shù)據(jù)庫中。 提取某段數(shù)據(jù)可以根據(jù)關(guān)鍵值進(jìn)行查詢。
具體實(shí)施例方式為了能夠更清楚的理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說明。以上的XML結(jié)構(gòu)是一個包含了兩組病例的數(shù)據(jù)結(jié)構(gòu),在這里對其中的一張病例進(jìn)行字段說明。病例需要編輯的數(shù)據(jù)表字段如下病人內(nèi)容(PatientContent)1、基本信息(BasicInfo)姓名、(PatientName)身高、(Pati entHe i ght)性別、(PatientSex)體重、(Pati entWe i ght)年齡(PatientAge)2、病人狀態(tài)編輯(PatientStateEditor)設(shè)置瞳孔直徑、(PupilDiameter)設(shè)置心電(ECG)設(shè)置血壓、(BloodPressure)設(shè)置氣道阻塞(AirWayObSrtuction)設(shè)置喉疫攣、(Laryngismus)設(shè)置呼吸音(BreathSound)設(shè)置呼吸頻率、(RespiratoryRate)設(shè)置血氧飽和度、(BloodOxyGenSaturation)3、操作編輯(PatientOpEditor)設(shè)置起到開放和氣道關(guān)閉、(SetAriWayOpen)設(shè)置進(jìn)行氣管插管和取消氣管插管、(SetBiOnChialCamuila)設(shè)置除顫次數(shù)、(SetDefibllationNum)設(shè)置檢查頸動脈搏動(SetCarotidWave)設(shè)置CPR 持續(xù)時間(SetCPRTime)設(shè)置意識檢查(SetConsciousnessCheck)
XML數(shù)據(jù)表結(jié)構(gòu)實(shí)例:
< xml version=" 1.0" encoding="gb2312" >
<Root>
〈PatientCase Name="CaseOne">
<PatientContent>
<BasicInfo>
〈PatientName Value=nJackie" Unit='"'/〉<PatientHeight Value=" 170" Unit="cm"/><PatientSex Value=nM" Unit=M7>
<PatientWeight Value="80" Unit="kg" /> <PatientAge Value="30" Unit="y" /> </BasicInfo>
<PatientStateEditor>
<PupilDiameter Value="5" Unit="mm"/> <ECGValue=M80M Unit=Mbmp7>
〈BloodPressure Value=" 120/80" Unit="mmHg"/><AirWayObSrtuction Value=nYes" Unit='"'/〉〈Laryngismus Value=nNo" Unit="" /><BreathSound Value="潮式呼吸"Unit=""/><RespiratoryRate Value="20" Unit=’’次/分’’ /><BloodOxyGenSaturation Value="98" Uit="%"/></PatientStateEditor>
<PatientOpEditor>
<S et Ari Way Open Value=nYes" Unit=."'/〉<SetBronChialCannula Value=nYes" Unit="" /><SetDefibllationNum Value="20" Unit="次"/>
<SetCarotidWave Value=nYes" Unit=."'/〉<SetCPRTime Value="3" Unit="min" /> <SetConsciousnessCheck Value=nYes" Unit='"'/〉</PatientOpEditor>
</PatientContent>
</PatientCase>
<PatientCase Name="CaseTwo">
<PatientContent>
<BasicInfo>
〈PatientName Value=nJackie" Unit='"'/〉
〈PatientHeight Value=" 170" Unit="cm"/>
<PatientSex Value=nM" Unit=M7>
〈PatientWeight Value=M80M Unit=MkgM />
<PatientAge Value="30" Unit="y" />
</BasicInfo>
<PatientStateEditor>
〈PupilDiameter Value="5" Unit="mm"/>
<ECGValue=M80M Unit=Mbmp7>
〈BloodPressure Value=" 120/80" Unit="mmHg"/>
<AirWayObSrtuction Value=nYes" Unit='"'/〉
〈Laryngismus Value=nNo" Unit="" />
<BreathSound Value=UKBKn Unit=M7>
<RespiratoryRate Value="20" Unit="次/分"/> 〈BloodOxyGenSaturation Value="98" Unit="%"/> </PatientStateEditor>
<PatientOpEditor>
<S et Ari Way Open Value=nYes" Unit=."'/〉
〈SetBronChialCannula Value=nYes" Unit="" /> <SetDefibllationNum Value=M20M Unit=,,次"/>
〈SetCarotidWave Value=nYes" Unit='"'/〉
〈SetCPRTime Value=M3M Unit=MminM /> 〈SetConsciousnessCheck Value=nYes" Unit='"'/〉 </PatientOpEditor>
</PatientContent>
</PatientCase>
</Root>在上面的實(shí)例中:首先,一張XML文檔所占的硬盤空間是很小的,即使包含大量數(shù)據(jù)也不占用太多的資源空間,完全可以將不同的XML根據(jù)單位劃分,便于管理。〈PatientCase〉節(jié)點(diǎn)包含的內(nèi)容代表了一個病例,以該節(jié)點(diǎn)的Name屬性作為唯一標(biāo)不。其次,最小子節(jié)點(diǎn)標(biāo)示數(shù)據(jù)字段,統(tǒng)一的字段格式,避免了數(shù)據(jù)存儲時格式轉(zhuǎn)換錯誤,Value屬性代表節(jié)點(diǎn)值,Unit屬性代表數(shù)值單位。如果為空就證明是判斷屬性或者是無單位屬性。避免了在關(guān)系型數(shù)據(jù)庫中空字段出錯的缺陷。以上的XML結(jié)構(gòu)表可以避免安裝大型數(shù)據(jù)庫帶來的不便,提高了數(shù)據(jù)的移植性。再配合模塊化的軟件結(jié)構(gòu),當(dāng)軟件系統(tǒng)出現(xiàn)大的改動時可以通過模塊釋放的接口自由移植病例編輯模塊,并保證數(shù)據(jù)不會丟失或損壞。在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以做出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書應(yīng)被認(rèn)為是說明性的,而非限制性的。
權(quán)利要求
1.一種基于XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫結(jié)合的“電子病人”編輯方法,在軟件模塊方面,采用了移植性強(qiáng)的模塊化開發(fā)方式,可以將“電子病人”病例編輯模塊移植到不同的醫(yī)療教學(xué)或急救系統(tǒng)軟件當(dāng)中,其特征是所述的模塊運(yùn)行步驟如下: (1)系統(tǒng)顯示病例編輯界面,接受信息項(xiàng)輸入,等待用戶操作(保存,修改,刪除)指令; (2)當(dāng)觸發(fā)數(shù)據(jù)存儲操作時,系統(tǒng)首先進(jìn)行數(shù)據(jù)校驗(yàn),校驗(yàn)通過后,系統(tǒng)內(nèi)部XML數(shù)據(jù)庫引擎自動生成規(guī)定結(jié)構(gòu)的XML文件。并進(jìn)行初始化操作, (3)當(dāng)觸發(fā)數(shù)據(jù)查詢或刪除操作時,系統(tǒng)首先對查詢條件進(jìn)行數(shù)據(jù)校驗(yàn),校驗(yàn)成功后,通過查詢條件遍歷XML庫,找到相應(yīng)標(biāo)簽,對數(shù)據(jù)進(jìn)行相應(yīng)操作; (4)當(dāng)數(shù)據(jù)量過大需要備份時,為了分類數(shù)據(jù)并安全備份,采取與關(guān)系型數(shù)據(jù)庫結(jié)合的方式,將XML文件以關(guān)鍵值建立索引直接存入關(guān)系型數(shù)據(jù)庫中;提取某段數(shù)據(jù)可以根據(jù)關(guān)鍵值進(jìn)行查詢。
全文摘要
本發(fā)明涉及一種基于XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫結(jié)合的“電子病人”編輯方法,在軟件模塊方面,采用了移植性強(qiáng)的模塊化開發(fā)方式,可以將“電子病人”病例編輯模塊移植到不同的醫(yī)療教學(xué)或急救系統(tǒng)軟件當(dāng)中。這項(xiàng)發(fā)明在數(shù)據(jù)存儲方面吸取了傳統(tǒng)型數(shù)據(jù)庫查詢效率低,維護(hù)不便利,開發(fā)周期長的缺點(diǎn),利用XML數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫相結(jié)合的數(shù)據(jù)存儲方式,可以滿足“電子病人”編輯信息量大,運(yùn)行速度快,為其提供一種能夠有效解決軟件運(yùn)行效率和開發(fā)效率之間的矛盾、實(shí)現(xiàn)過程方便快捷、穩(wěn)定安全可靠的軟件系統(tǒng)。
文檔編號G06F9/44GK103164209SQ201110425688
公開日2013年6月19日 申請日期2011年12月19日 優(yōu)先權(quán)日2011年12月19日
發(fā)明者李葒娜 申請人:天津理工大學(xué)