專利名稱:用于解析二進(jìn)制數(shù)據(jù)的方法、系統(tǒng)及計算機產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本公開內(nèi)容總體上涉及一種用于解析數(shù)據(jù)的方法;尤其涉及一種用于解析二進(jìn)制數(shù)據(jù)的方法。
背景技術(shù):
醫(yī)院通常利用計算機系統(tǒng)來管理醫(yī)院內(nèi)部的不同部門。關(guān)于每位患者的數(shù)據(jù)由各種各樣的計算機系統(tǒng)來收集。例如,可讓患者進(jìn)入醫(yī)院以便監(jiān)控生命信號。關(guān)于患者的信息(例如,人口分布及保險)可以由醫(yī)院信息系統(tǒng)(HIS)獲得,并且存儲在患者記錄上。然后,可以將這個信息傳送到特定的部門信息系統(tǒng)(DIS)。通常,所述DIS是某一家公司的產(chǎn)品,而所述HIS是另一家公司的產(chǎn)品。結(jié)果,這兩者間的數(shù)據(jù)庫會不同。此外,他們將捕獲/保持并且發(fā)送數(shù)據(jù)中的不同粒度級。所述DIS一經(jīng)收到患者信息,就可安排該患者以便進(jìn)行參數(shù)研究(參數(shù)研究的參數(shù)是一組生命信號)。接下來,由臨床醫(yī)師進(jìn)行參數(shù)研究。獲取圖像及測量數(shù)據(jù)并且發(fā)送給DIS服務(wù)器。讀數(shù)醫(yī)師(例如,醫(yī)學(xué)專家)在檢查臺坐下,并且作出患者的參數(shù)研究。然后,醫(yī)學(xué)專家開始重新檢查圖像及測量數(shù)據(jù),并且在研究的基礎(chǔ)上創(chuàng)建完整的醫(yī)學(xué)報告。然后,可以將該醫(yī)學(xué)報告編碼為結(jié)構(gòu)化報告(SR)文檔,該結(jié)構(gòu)化報告文檔包括描述報告內(nèi)容的臨床數(shù)據(jù)代碼。當(dāng)醫(yī)學(xué)專家完成醫(yī)學(xué)報告時,將該報告發(fā)送給DIS服務(wù)器,在該DIS服務(wù)器中存儲該報告,并且通過患者標(biāo)識數(shù)據(jù)將該報告與該患者相關(guān)聯(lián)。所完成的帶有臨床數(shù)據(jù)代碼的醫(yī)學(xué)報告是如下類型報告的一個例子,所述報告可以作為二進(jìn)制數(shù)據(jù)流、經(jīng)由網(wǎng)絡(luò)被發(fā)送到數(shù)據(jù)儲存庫中。
典型來講,這些二進(jìn)制數(shù)據(jù)結(jié)構(gòu)包含如下數(shù)據(jù)值,該數(shù)據(jù)值定義如何解釋在數(shù)據(jù)流中所伴隨著的二進(jìn)制子結(jié)構(gòu)。而那些二進(jìn)制子結(jié)構(gòu)又可以包含附加類型的字段,該附加類型字段定義它們內(nèi)部更進(jìn)一步的子結(jié)構(gòu)。隨著過程繼續(xù),形成了一組分層結(jié)構(gòu),龐大而復(fù)雜的數(shù)據(jù)結(jié)構(gòu)會演化,這導(dǎo)致了低帶寬通信線路之上的低速數(shù)據(jù)傳輸。
發(fā)明內(nèi)容
在一個實施例中,一種用于解析二進(jìn)制數(shù)據(jù)的方法,包括接收二進(jìn)制數(shù)據(jù)以及解析請求,所述解析請求要求非差分解析方法或者要求差分解析方法,調(diào)用解析樹并且接收解析定義來解析二進(jìn)制數(shù)據(jù),解析二進(jìn)制數(shù)據(jù)以便依照解析定義來定義一個值,調(diào)用數(shù)據(jù)構(gòu)造器來管理已解析的值,將所述值插入到數(shù)據(jù)樹中,并將一個對象返回給解析請求方。
在另一個實施例中,一種用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)以便經(jīng)由通信線路進(jìn)行傳輸?shù)姆椒?,包括接收二進(jìn)制數(shù)據(jù)以及解析請求,解析請求要求非差分解析方法或者要求差分解析方法,將一個最后知道的數(shù)據(jù)樹存儲在存儲器中,調(diào)用解析樹并接收解析定義來解析二進(jìn)制數(shù)據(jù),解析二進(jìn)制數(shù)據(jù)以便依照解析定義來定義一個值,調(diào)用數(shù)據(jù)構(gòu)造器來管理已解析的值,將所述值插入到已更新的數(shù)據(jù)樹中,如果調(diào)用了差分解析方法,則從存儲器中檢索所述最后知道的數(shù)據(jù)樹,如果調(diào)用了差分解析方法,則將已更新的數(shù)據(jù)樹與最后知道的數(shù)據(jù)樹進(jìn)行比較,如果調(diào)用了差分解析方法,則創(chuàng)建包含從最后知道的數(shù)據(jù)樹到已更新的數(shù)據(jù)樹的變化的差異樹,并將已更新的數(shù)據(jù)樹或差異樹返回給解析請求方。
在另外的實施例中,一種用于解析二進(jìn)制數(shù)據(jù)的系統(tǒng),包括醫(yī)院計算機系統(tǒng),所述醫(yī)院計算機系統(tǒng)包括如下軟件,該軟件用于實現(xiàn)解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)以便經(jīng)由通信線路進(jìn)行傳輸?shù)姆椒?。所述醫(yī)院計算機系統(tǒng)與網(wǎng)絡(luò)相通信,并且所述軟件包括用于接收二進(jìn)制數(shù)據(jù)以及解析請求的指令,所述解析請求要求非差分解析方法或者要求差分解析方法,將最后知道的數(shù)據(jù)樹存儲在存儲器中,調(diào)用解析樹并接收解析定義以便解析二進(jìn)制數(shù)據(jù),解析二進(jìn)制數(shù)據(jù)以便依照解析定義來定義一個值,并調(diào)用數(shù)據(jù)構(gòu)造器來管理已解析的值,將所述值插入到已更新的數(shù)據(jù)樹中,如果調(diào)用了差分解析方法,則從存儲器中檢索最后知道的數(shù)據(jù)樹,如果調(diào)用了差分解析方法,則將已更新的數(shù)據(jù)樹與最后知道的數(shù)據(jù)樹進(jìn)行比較,如果調(diào)用了差分解析方法,則創(chuàng)建包含從最后知道的數(shù)據(jù)樹到已更新的數(shù)據(jù)樹的變化的差異樹,并將已更新的數(shù)據(jù)樹或差異樹返回給解析請求方。
在另一個實施例中,一種用于解析二進(jìn)制數(shù)據(jù)的方法,包括通過讀取解析定義文件來初始化一個值解析器,并創(chuàng)建代表解析定義的解析樹,接收具有原始數(shù)據(jù)元素或者非原始數(shù)據(jù)元素的二進(jìn)制數(shù)據(jù)輸入,響應(yīng)原始數(shù)據(jù)元素來調(diào)用數(shù)據(jù)構(gòu)造器,并在原始解析節(jié)點將所述原始數(shù)據(jù)元素插入到數(shù)據(jù)樹中,響應(yīng)非原始數(shù)據(jù)元素來調(diào)用數(shù)據(jù)構(gòu)造器,并在非原始解析節(jié)點將非原始數(shù)據(jù)元素插入到數(shù)據(jù)樹中,并且建立以及返回?zé)o差異數(shù)據(jù)樹或者差異樹。
在另一個實施例中,一種用于解析二進(jìn)制數(shù)據(jù)的計算機程序產(chǎn)品,包括處理電路可讀的存儲介質(zhì),用于存儲可由用來接收二進(jìn)制數(shù)據(jù)以及解析請求的處理電路執(zhí)行的指令,所述解析請求要求非差分解析方法或者要求差分解析方法,將最后知道的數(shù)據(jù)樹存儲在存儲器中,調(diào)用解析樹并接收解析定義以便解析所接收的二進(jìn)制數(shù)據(jù),解析二進(jìn)制數(shù)據(jù)以便依照解析定義來定義一個值,并調(diào)用數(shù)據(jù)構(gòu)造器來管理已解析的值,將所述值插入到已更新的數(shù)據(jù)樹中,如果調(diào)用了差分解析方法,則從存儲器中檢索最后知道的數(shù)據(jù)樹,如果調(diào)用了差分解析方法,則將已更新的數(shù)據(jù)樹與最后知道的數(shù)據(jù)樹進(jìn)行比較,如果調(diào)用了差分解析方法,則創(chuàng)建包含從最后知道的數(shù)據(jù)樹到已更新的數(shù)據(jù)樹的變化的差異樹,將已更新的數(shù)據(jù)樹或差異樹返回給解析請求方。
參考示例性附圖,其中相同的部件編制了相同的標(biāo)號,在幾個附圖中圖1是用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的示范性系統(tǒng);圖2是用于在圖1的系統(tǒng)上解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的示范性過程流程圖;圖3是用于在圖1的系統(tǒng)上解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的示范性過程框圖;圖4是依照本發(fā)明實施例的用于構(gòu)建解析樹的示范性過程圖;圖5是依照本發(fā)明實施例初始化過程的示范性框圖;圖6是依照本發(fā)明實施例的運行時過程的示范性框圖;圖7是依照本發(fā)明的用于解析所述解析樹節(jié)點的示范性過程框圖;以及圖8是用于本發(fā)明實施例的二進(jìn)制序列的示范性說明。
具體實施例方式
本發(fā)明的實施例提供了用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)設(shè)施和過程,其用于經(jīng)計算機網(wǎng)絡(luò)來傳送與患者有關(guān)的原始數(shù)據(jù),或者更新醫(yī)療設(shè)備接口以及驅(qū)動器。圖1是用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的示范性系統(tǒng)。位于不同醫(yī)院的醫(yī)院計算機系統(tǒng)110與網(wǎng)絡(luò)120相連接。醫(yī)院計算機系統(tǒng)110將醫(yī)學(xué)數(shù)據(jù)發(fā)送到主機系統(tǒng)130,所述主機系統(tǒng)130包括位于主機存儲設(shè)備132上的數(shù)據(jù)儲存庫,還包括主機計算機134。醫(yī)院計算機系統(tǒng)110典型地包括應(yīng)用軟件,用于執(zhí)行已編碼的醫(yī)學(xué)報告,并且該醫(yī)院計算機系統(tǒng)110還包括用于連接一個或多個醫(yī)院存儲設(shè)備112的網(wǎng)絡(luò),所述醫(yī)院存儲器設(shè)備112用于存儲已編碼的醫(yī)學(xué)數(shù)據(jù)。此外,醫(yī)院計算機系統(tǒng)110包括應(yīng)用軟件,用于將以二進(jìn)制數(shù)據(jù)結(jié)構(gòu)安排的醫(yī)學(xué)數(shù)據(jù)解析為適當(dāng)?shù)母袷?,以便在通信線路上易于傳輸,并且如此進(jìn)行操作而不必包括嵌入在數(shù)據(jù)流內(nèi)的協(xié)議信息,借此能夠經(jīng)由現(xiàn)存通信線路來進(jìn)行壓縮式通信,所述通信線路可以具有低帶寬,而不需要線路升級。將包括解析樹以及數(shù)據(jù)樹的已解析數(shù)據(jù)對象存儲在主機存儲設(shè)備132上,以便交叉訪問多個醫(yī)院計算機系統(tǒng)110。
總體上講,解析樹是這樣一種信息樹,其表示正被讀入的二進(jìn)制數(shù)據(jù)的結(jié)構(gòu)并且包含解析節(jié)點層次(樹葉和分支)。當(dāng)接收二進(jìn)制數(shù)據(jù)時,所述解析樹由值解析器存儲,并在運行時被重復(fù)調(diào)用。數(shù)據(jù)樹是這樣一種信息樹,其表示所接收二進(jìn)制數(shù)據(jù)的解析的數(shù)據(jù)值,具有適于程序處理的層次形式。數(shù)據(jù)構(gòu)造器是一軟件類,其構(gòu)建數(shù)據(jù)樹并定義所述數(shù)據(jù)樹將具有的格式。下面描述的圖3描繪了用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的示范性方法。
圖1的系統(tǒng)100包括一個或多個用戶系統(tǒng)140,通過所述用戶系統(tǒng)140,終端用戶或消費者可以對主機計算機134上的應(yīng)用程序作出請求,以訪問在位于主機存儲設(shè)備132上的數(shù)據(jù)儲存庫中所存儲的特定信息。在示范性的實施例中,主機計算機134執(zhí)行提供對包含于數(shù)據(jù)儲存庫中的數(shù)據(jù)進(jìn)行訪問的程序,其中所述數(shù)據(jù)儲存庫位于主機存儲設(shè)備132上。用戶系統(tǒng)140可以直接與主機計算機134相連接,或者它們能夠經(jīng)由網(wǎng)絡(luò)120與主機計算機134相耦合。每個用戶系統(tǒng)140都可以利用通用計算機來實現(xiàn),其中所述通用計算機執(zhí)行計算機程序,以實施在此所描述的過程。用戶系統(tǒng)140可以是個人計算機或是附加有終端的主機。如果用戶系統(tǒng)140是個人計算機,那么在此所描述的處理可以通過將小應(yīng)用程序提供給用戶系統(tǒng)140來由用戶系統(tǒng)140及主機計算機134、加以共享。
網(wǎng)絡(luò)120可以是任何類型的公知網(wǎng)絡(luò),包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、內(nèi)聯(lián)網(wǎng)、全球網(wǎng)絡(luò)(例如,因特網(wǎng))。用戶系統(tǒng)140可以經(jīng)由多種網(wǎng)絡(luò)(例如,內(nèi)聯(lián)網(wǎng)以及因特網(wǎng))與主機計算機134相耦合,以至于不必要求所有用戶系統(tǒng)140都經(jīng)由同一網(wǎng)絡(luò)與主機計算機134相耦合。一個或多個用戶系統(tǒng)140以及主機計算機134能夠以無線方式與網(wǎng)絡(luò)120相連接,并且網(wǎng)絡(luò)120可以是無線網(wǎng)絡(luò)。在一示范性實施例中,網(wǎng)絡(luò)120是因特網(wǎng),且每個用戶系統(tǒng)140執(zhí)行用戶接口應(yīng)用程序以直接與主機計算機134相連接。在另一個實施例中,用戶系統(tǒng)140可執(zhí)行web瀏覽器,以便經(jīng)網(wǎng)絡(luò)120與主機計算機134聯(lián)系。作為選擇,可以利用主要被編程以用來訪問網(wǎng)絡(luò)120的設(shè)備來實現(xiàn)所述用戶系統(tǒng)140。
主機計算機134可以使用響應(yīng)計算機程序而進(jìn)行操作的服務(wù)器來實現(xiàn),其中所述計算機程序存儲在能夠由服務(wù)器訪問的存儲介質(zhì)中。主機計算機134可以作為網(wǎng)絡(luò)服務(wù)器(通常稱為web服務(wù)器)來操作,以便與用戶系統(tǒng)140進(jìn)行通信。主機計算機134將信息發(fā)送到用戶系統(tǒng)140以及醫(yī)院計算機系統(tǒng)110,并從用戶系統(tǒng)140以及醫(yī)院計算機系統(tǒng)110那里接收信息,并且所述主機計算機134能夠執(zhí)行相關(guān)聯(lián)的任務(wù)。主機計算機134還可包括防火墻,以便防止對主機計算機134的未經(jīng)授權(quán)的訪問,并且用于對已授權(quán)的訪問強制任意的限制。例如,管理員可以有權(quán)訪問整個系統(tǒng),并有權(quán)修改部分系統(tǒng),而消費者僅僅可以有權(quán)瀏覽用于特定產(chǎn)品的數(shù)據(jù)儲存庫記錄的子集。在一示范性實施例中,管理員有能力添加新用戶,刪除用戶以及編輯用戶優(yōu)先權(quán)。正如本領(lǐng)域所公知的,所述防火墻可以使用常規(guī)的硬件和/或軟件來實現(xiàn)。
主機計算機134還作為應(yīng)用程序服務(wù)器來操作。主機計算機134執(zhí)行用于提供對位于主機存儲設(shè)備132上的數(shù)據(jù)儲存庫進(jìn)行訪問的一個或多個應(yīng)用程序,以及執(zhí)行用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)和為醫(yī)學(xué)信息的有效傳送而構(gòu)建解析樹及數(shù)據(jù)樹的應(yīng)用程序??梢酝ㄟ^將應(yīng)用程序(例如,java小應(yīng)用程序)提供給用戶系統(tǒng)140來由用戶系統(tǒng)140和主機計算機134共享所述處理。作為選擇,用戶系統(tǒng)140可以包括用于執(zhí)行在此所述的部分處理的獨立軟件應(yīng)用程序。同樣地,可以通過將應(yīng)用程序提供給醫(yī)院計算機系統(tǒng)110來由醫(yī)院計算機系統(tǒng)110和主機計算機134共享所述處理,并且作為選擇,醫(yī)院計算機系統(tǒng)110可包括用于執(zhí)行在此所述的部分處理的單獨軟件應(yīng)用程序。應(yīng)該理解的是,可以使用相互獨立的服務(wù)器來實現(xiàn)網(wǎng)絡(luò)服務(wù)器的功能以及應(yīng)用程序服務(wù)器功能。作為選擇,所述網(wǎng)絡(luò)服務(wù)器、防火墻以及應(yīng)用程序服務(wù)器可以通過單個服務(wù)器來實現(xiàn),所述單個服務(wù)器執(zhí)行計算機程序來執(zhí)行必要的功能。
主機存儲設(shè)備132可以使用用于存儲電子信息的多種設(shè)備來實現(xiàn),所述設(shè)備諸如是諸如文件傳輸協(xié)議(FTP)服務(wù)器。應(yīng)該理解的是,主機存儲設(shè)備132可以使用包含在主機計算機134中的存儲器來實現(xiàn),或者所述主機存儲設(shè)備132可以是單獨的物理設(shè)備。主機存儲設(shè)備132包含各種信息,所述各種信息包括含有來自于一家或多家醫(yī)院的、使用通用格式(例如,使用相同的臨床代碼)的醫(yī)學(xué)報告的數(shù)據(jù)儲存庫,以及描述所述通用格式及數(shù)據(jù)庫設(shè)計的模式。主機計算機134還可作為數(shù)據(jù)庫服務(wù)器進(jìn)行操作,并且協(xié)調(diào)對存儲在主機存儲設(shè)備132上的應(yīng)用程序數(shù)據(jù)的訪問??蓪⑺鰯?shù)據(jù)儲存庫物理地存儲為單個數(shù)據(jù)庫,所述單個數(shù)據(jù)庫帶有基于用戶特征的受限訪問,或者可以將所述數(shù)據(jù)儲存庫物理地存儲在各種數(shù)據(jù)庫中,所述各種數(shù)據(jù)庫包括用戶系統(tǒng)140或者主機計算機134上的部分?jǐn)?shù)據(jù)庫。在一示范性實施例中,數(shù)據(jù)儲存庫使用關(guān)系數(shù)據(jù)庫系統(tǒng)來實現(xiàn),并且所述數(shù)據(jù)庫系統(tǒng)根據(jù)消費者的特征、向不同消費者提供不同數(shù)據(jù)視圖。
在本發(fā)明的示范性實施例中,將使用不同知識庫編碼的醫(yī)學(xué)數(shù)據(jù)轉(zhuǎn)換為通用/規(guī)范的表示法。醫(yī)院以及門診醫(yī)師使用用于生成臨床報告的工具,所述臨床報告描述了患者就診的結(jié)果。這些工具使用臨床代碼來代表臨床術(shù)語,并且所述臨床代碼從一種工具到另一種工具可以是不同的,并且從一家醫(yī)院到另一家醫(yī)院也可以是不同的。此外,用于存儲臨床數(shù)據(jù)的結(jié)構(gòu)化報告(SR)對象的類型、從一種工具到另一種工具是不同的,并且從一家醫(yī)院到另一家醫(yī)院也是不同的??梢岳帽景l(fā)明的示范性實施例,將已改變的臨床報告解析為壓縮的表示法(例如,與特定患者相關(guān)的已更新生命信號)。這可以提供將已更新的患者數(shù)據(jù)經(jīng)由傳輸線路快速地傳輸?shù)讲煌\所以及醫(yī)院的能力,以便使諸如門診醫(yī)師以及醫(yī)生之類的顧客可以及時利用。
現(xiàn)在參考圖2,該圖描述了用于解析二進(jìn)制數(shù)據(jù)的示范性過程150的總過程流程圖,其中所述過程150包括初始化151以及運行時152階段。下面論述的圖3以更加詳細(xì)的框圖形式描述了過程150。
在框155處開始,過程150啟動值解析器以及解析定義文件之間的通信,值解析器存在于解析定義文件被解析的地方。
在框160處,在值解析器處理器處構(gòu)建解析樹,值解析器處理器將在下面參考圖4更加詳細(xì)的論述。
在框165處,在值解析器處接收二進(jìn)制數(shù)據(jù)以及解析請求,所述解析請求要求非差分解析方法或者要求差分解析方法。
在框170處,調(diào)用解析樹,并且為解析所述二進(jìn)制數(shù)據(jù)作準(zhǔn)備而接收解析定義。
在框175處,在解析樹處解析二進(jìn)制數(shù)據(jù),借此依照解析定義來定義一個值。調(diào)用數(shù)據(jù)構(gòu)造器來管理已解析的值,并且構(gòu)建數(shù)據(jù)樹。
在框180處,將已解析的值插入到數(shù)據(jù)樹,借此更新數(shù)據(jù)樹。
在框185處,將諸如已更新的數(shù)據(jù)樹或差異樹之類的對象,將在下面更加詳細(xì)的論述,返回給解析請求方。
圖3描述了用于解析二進(jìn)制數(shù)據(jù)的示范性過程200的框圖,其中所述過程200包括初始化以及運行時階段,其中,運行時階段包括非差分以及差分解析方法,正如將要在下面更加詳細(xì)論述的一樣。
過程200以初始化過程開始,其中值解析器205啟動與解析定義文件215之間的通信210,以便讀取解析配置。值解析器205使用該信息來與值解析器處理器225以及數(shù)據(jù)構(gòu)造器265進(jìn)行通信,目標(biāo)是創(chuàng)建用于解析二進(jìn)制數(shù)據(jù)245的解析樹235。值解析器是一軟件類,該軟件類實現(xiàn)用于將二進(jìn)制數(shù)據(jù)解析為數(shù)據(jù)值的數(shù)據(jù)解析算法。示范性的解析定義文件是XML模式,然而,不需要將解析規(guī)則表示成XML模式,而是能夠以本領(lǐng)域所公知的任何方式來描述。XML模式是一種文件格式,該種文件格式描述XML文件的允許元素、屬性以及值,并且可以由驗證解析器來使用,以便驗證XML輸入的正確性。XML模式允許更高程度地控制XML數(shù)據(jù)的格式。在一示范性實施例中,以XML進(jìn)行方案定義。在定義文件215中的解析定義,是定義如何解析二進(jìn)制輸入數(shù)據(jù)流的一種XML。值解析器處理機是一軟件類,該軟件類將解析定義文件中的XML元素映射到解析樹中的節(jié)點。
值解析器205通過將SAX回調(diào)發(fā)送220到值解析器處理器225來使用SAX,以便解析定義文件215中的解析定義,其中所述SAX是一種允許程序來解釋XML、用于XML的簡單應(yīng)用程序接口的。在接收SAX回調(diào)時,值解析器處理器225構(gòu)建230解析樹235,所述解析樹總體上講是嵌套解析節(jié)點的集合,該集合定義待讀入的二進(jìn)制數(shù)據(jù)的格式,并且所述解析樹一經(jīng)創(chuàng)建,就被值解析器205存儲在存儲器中,并且為所調(diào)用的每個解析方法而被重復(fù)使用。解析節(jié)點是解析樹中的單個元素,并且可以是以下兩種類型之一,所述兩種類型為原始型或容器型。原始解析節(jié)點代表“原始”值,諸如整數(shù)、字符串、邏輯字符串或任意其他本地Java類型的數(shù)據(jù),并且所述原始解析節(jié)點始終是解析樹的“葉子”。容器節(jié)點包含其他解析節(jié)點,并且例如用于分組、迭代以及條件切換等。解析樹的構(gòu)建將在下面參考圖4更加詳細(xì)的論述。
一旦值解析器205讀入全部XML解析定義,解析樹235就準(zhǔn)備解析數(shù)據(jù)。
上述過程,即步驟210、220、230描述了初始化階段,所述初始化階段根據(jù)解析定義來創(chuàng)建解析樹。接下來的過程將描述運行時階段,所述運行階段使用解析樹來解析依照解析請求接收的二進(jìn)制數(shù)據(jù)。
在運行時,值解析器205接收240二進(jìn)制數(shù)據(jù)245以及解析請求250。在解析請求250中包括的是對非差分解析或差分解析的要求,這部分內(nèi)容將在下面更加詳細(xì)的描述,然而,總體上講,非差分解析將信息的全部(已更新)的數(shù)據(jù)樹返回給在250處的解析請求方,而差分解析則返回差異樹,所述差異樹僅包含自從保存了最后知道的數(shù)據(jù)集以來已改變的信息。
當(dāng)剛一接收了240二進(jìn)制數(shù)據(jù)245以及解析請求250時,值解析器205就調(diào)用255解析樹235來解析二進(jìn)制數(shù)據(jù)245,其中所述解析樹235是依照上面的論述來創(chuàng)建的。
在解析樹235處對二進(jìn)制數(shù)據(jù)245的解析,依照所接收的解析定義215來執(zhí)行,并且從解析樹的根開始。解析請求250的接收啟動了一組遞歸調(diào)用,解析樹235中的每個相關(guān)解析節(jié)點調(diào)用關(guān)于其所有孩子的解析請求,直到找到原始解析節(jié)點為止。當(dāng)找到原始解析節(jié)點時,調(diào)用get-value方法,以便定義并解析來自數(shù)據(jù)流中當(dāng)前位置的、用以分配到該解析節(jié)點的值。
對于從數(shù)據(jù)流中讀出的每個元素來說,在數(shù)據(jù)構(gòu)造器265處,解析樹235調(diào)用260insert-value方法,所述數(shù)據(jù)構(gòu)造器265又通過管理并將已解析的值插入數(shù)據(jù)樹275來構(gòu)建270數(shù)據(jù)樹275。解析定義的元素描述了數(shù)據(jù)樹內(nèi)、二進(jìn)制流中一段已知數(shù)據(jù),而值是在元素處理之后作為結(jié)果得到的數(shù)值。當(dāng)新的一段數(shù)據(jù)從二進(jìn)制數(shù)據(jù)流之中被解析時,經(jīng)由值解析器處理器225和解析樹235,在數(shù)據(jù)構(gòu)造器265處接收來自于值解析器205的回調(diào)。
在已經(jīng)讀取了所有的數(shù)據(jù)之后,值解析器205調(diào)用280數(shù)據(jù)樹275,以便使得值解析器205,在將數(shù)據(jù)樹275(返回給解析請求方的一種對象類型)返回285給解析請求方250之前(在解析請求方250中最初調(diào)用過非差分解析),或者在調(diào)用290差分方法之前(在解析請求方250中最初調(diào)用過差分解析),能夠執(zhí)行對其數(shù)據(jù)的任何附加處理。
如果調(diào)用了差分解析,那么值解析器205就將從其高速緩沖存儲器中檢索最后知道的的數(shù)據(jù)樹,其中所述最后知道的的數(shù)據(jù)樹先前已在首次創(chuàng)建時被存儲了,并執(zhí)行最后知道的數(shù)據(jù)樹和新(已更新)數(shù)據(jù)樹之間的比較分析,并僅僅將差異傳送到差異樹300,所述差異樹300將只包含自從保存最后知道的數(shù)據(jù)樹以來已改變的信息。
在創(chuàng)建差異樹300之后,將差異樹300(返回給解析請求方的另一種對象類型)返回305給位于250處的解析調(diào)用方。
現(xiàn)在參考圖4,該圖描述了用于構(gòu)建解析樹235的過程,當(dāng)值解析器處理器225接收到來自于值解析器205的回調(diào)220之后,值解析器處理器225構(gòu)建解析樹235,其中所述值解析器205包含二進(jìn)制數(shù)據(jù)流內(nèi)的起始元素和結(jié)束元素。解析定義的起始元素和結(jié)束元素根據(jù)各種參數(shù)來描述數(shù)據(jù)流中的相關(guān)聯(lián)數(shù)據(jù),所述參數(shù)諸如是起始元素的地址、局部名(XML的局部名是減去所有名字空間考慮的元素名)、限定名和屬性,以及結(jié)束元素的地址、局部名和限定名。當(dāng)在值解析器205處剛一接收到解析請求時,值解析器205就解析所述解析定義文件215以讀入解析變量,并且將包含解析變量的回調(diào)發(fā)送220給值解析器處理器225。
值解析器處理器225讀取由值解析器205傳送的XML元素,并且如果所述元素是起始元素,那么確定350解析樹堆棧355是否為空。
如果堆棧355為空,那么值解析器處理器225創(chuàng)建360解析樹根節(jié)點,并且將新創(chuàng)建的節(jié)點壓入到385解析樹235上。解析樹根節(jié)點還稱為數(shù)據(jù)樹根節(jié)點,并且它處于所述樹中的如下位置,在該位置值解析器205將開始處理二進(jìn)制數(shù)據(jù)245。
如果堆棧355不為空,那么值解析器處理器225就通過搜索365堆棧355來識別相關(guān)聯(lián)的親代解析節(jié)點,然后試圖將XML元素名與一組已知元素名進(jìn)行匹配,所述已知元素名在值解析器205處被存儲在值解析器標(biāo)記文件中。然后在值解析器205處,將每個已知元素名映射到特定的解析樹節(jié)點。如果找到匹配的元素名,那么值解析器處理器225就創(chuàng)建370標(biāo)準(zhǔn)解析樹節(jié)點,將標(biāo)準(zhǔn)節(jié)點添加375到以親代解析節(jié)點開始的解析樹235,將已知元素映射到標(biāo)準(zhǔn)節(jié)點,并且將標(biāo)準(zhǔn)節(jié)點壓入到385解析樹235的當(dāng)前級上。如果沒有找到匹配的元素名,那么值解析器處理器225就通過get-extension-node方法來創(chuàng)建380自定義解析樹節(jié)點,將自定義節(jié)點添加375到在親代解析節(jié)點處開始的解析樹235,將不匹配元素映射到自定義節(jié)點,并且將自定義節(jié)點壓入到385解析樹235的當(dāng)前級上。
繼續(xù)創(chuàng)建和向解析樹235添加節(jié)點的過程,直到在值解析器205遇到結(jié)束元素為止。結(jié)束元素表示該特定二進(jìn)制數(shù)據(jù)結(jié)構(gòu)的解析樹的完成。
從更加概括的觀點來看,并且現(xiàn)在參考圖5和6,通過讀取210XML解析定義文件215來初始化值解析器205,從而構(gòu)建230解析樹235,所述解析樹235代表解析定義并且由解析定義來定義。解析定義文件215指定二進(jìn)制數(shù)據(jù)245的格式,所述二進(jìn)制數(shù)據(jù)245將由值解析器205接收并處理。在運行時,解析樹235接收包含原始以及非原始數(shù)據(jù)元素的二進(jìn)制數(shù)據(jù)245。當(dāng)從二進(jìn)制流讀取原始數(shù)據(jù)元素時,解析樹235調(diào)用260數(shù)據(jù)構(gòu)造器265,以便在原始解析節(jié)點將數(shù)據(jù)元素插入到270數(shù)據(jù)樹275中。當(dāng)從二進(jìn)制流讀取非原始數(shù)據(jù)元素時,解析樹235調(diào)用260數(shù)據(jù)構(gòu)造器265,以便在非原始解析節(jié)點將數(shù)據(jù)元素插入到270數(shù)據(jù)樹275。數(shù)據(jù)樹是值解析器系統(tǒng)的產(chǎn)物,它代表有意義數(shù)據(jù)結(jié)構(gòu)中的二進(jìn)制數(shù)據(jù)。應(yīng)用差分邏輯以及轉(zhuǎn)換技術(shù),XML可以進(jìn)一步處理該樹。將作為結(jié)果而得到的數(shù)據(jù)樹或差異樹返回給解析請求方。
在圖7中描述了用于解析一個解析樹節(jié)點的詳細(xì)過程400,所述過程400從方法入口405開始,并且進(jìn)入到框410,在框410處尋找孩子節(jié)點。在框415處,如果出現(xiàn)更多的孩子節(jié)點,則對所述孩子節(jié)點進(jìn)行迭代。如果框415為真,則確定420所述節(jié)點是否是容器節(jié)點。如果框420為真,則解析425所述孩子容器節(jié)點。在框425之后,過程邏輯進(jìn)入框430,在框430處,更新已解析節(jié)點的運行總索引。如果框420為假,則確定435是否設(shè)定“跳過”屬性,其中所述跳過屬性用于跳過將不被解釋的二進(jìn)制數(shù)據(jù)。如果框435為真,則過程邏輯進(jìn)入框430。如果框435為假,則過程邏輯進(jìn)入框440,在框440處,經(jīng)由getValue算法來確定孩子節(jié)點的值。在框440之后,過程邏輯進(jìn)入框445,在框445處確定所述孩子是否是可切換的。當(dāng)可切換的節(jié)點被接通時,其定義待匹配的值,也就是說,將可切換設(shè)定為真。如果是可切換的,則將節(jié)點的值臨時存儲在存儲器中,以供配置文件或數(shù)據(jù)樹275后續(xù)引用。如果框445為真,則將框440的值插入450到運行時高速緩存器中。在框450之后,或者如果框445為假,那么過程邏輯進(jìn)入框455,在框455處確定是否設(shè)定跳過屬性。如果框455為真,則確定460是否設(shè)定“不前進(jìn)”屬性,這導(dǎo)致讀索引不前進(jìn)。對于從數(shù)據(jù)流中讀出的指定值來說,讀取該值,但是讀指針不前進(jìn)。不前進(jìn)屬性通常與位字段元素內(nèi)部的原始元素一起使用(即,位字段是應(yīng)該一起考慮的一組字節(jié)),以便阻止讀指針的前進(jìn)。如果框455為假,則過程邏輯進(jìn)入框465,在框465處,調(diào)用數(shù)據(jù)構(gòu)造器265以便將來自于框440的值插入到數(shù)據(jù)樹275中。
如果框460為真,則過程邏輯進(jìn)入框415。如果框460為假,則過程邏輯進(jìn)入框430。在框430之后,過程邏輯進(jìn)入框415。如果框415為假,則過程邏輯進(jìn)入框470,在框470處,確定返回索引的大小。如果運行總和將被返回(此處沒有設(shè)定“不前進(jìn)”屬性),那么過程邏輯進(jìn)入框475,在框475處,返回用于返回索引的運行總和。如果已定義大小的前進(jìn)度將被返回(此處設(shè)定了“不前進(jìn)”屬性),那么過程邏輯進(jìn)入框480,在框480處,返回索引的已定義大小被返回。在框475和480之后,過程邏輯進(jìn)入框485,在框485處過程400退出。
下面利用用于通過趨勢來處理目錄請求響應(yīng)的簡單例子,來描述用于值解析的示范性過程。該過程總體上講遵循圖3中提及的上述過程。
在開始時,用戶識別需要加以解析的數(shù)據(jù)245的二進(jìn)制格式,并且如果數(shù)據(jù)245性質(zhì)上是分段式,則用戶識別各段。如果數(shù)據(jù)總是以通用首部段或者協(xié)議標(biāo)識符開始的話,則執(zhí)行段識別。例如,ETFTP趨勢響應(yīng)總是以“Bed Message”結(jié)構(gòu)(最通用的統(tǒng)一I代碼)開始,后面跟隨有ETFTP請求結(jié)構(gòu)(在作出ETFTP請求的代碼中通用),接著跟隨有趨勢數(shù)據(jù)本身。將這些離散的段分成獨立的XML文件,并且主解析定義使用實體引用來參考它們。實體引用是XML文件內(nèi)的引用,其用作到另一個XML文件的鏈接。
然后,用戶識別二進(jìn)制數(shù)據(jù)格式是否重復(fù),或者是否在流中具有未來的段,所述未來段依據(jù)先前讀入的值而定。在這種情形中,響應(yīng)格式具有三個主要的段a.“ETFTPRequest”首部(36字節(jié))(參見示例代碼1),其在所有ETFTP請求中是通用的,b.“DataTrendMenu”塊(7字節(jié))(參見示例代碼1),以及c.“TrendEntry”塊(參見示例代碼1),包括許多6字節(jié)條目,均代表趨勢條目,它是用于在指定名稱的基礎(chǔ)上將元素聚合成組的組別。
二進(jìn)制趨勢目錄響應(yīng)的例子與圖8中描述的二進(jìn)制序列相似。
接下來,用戶創(chuàng)建解析定義文件215。在二進(jìn)制數(shù)據(jù)是部分的情況下,將解析定義文件定義為段,并且使用外部引用來將所述段“粘合”在一起。示例代碼1中描述了解析定義XML文件。在示例代碼1中,在示范性文件中,只有值解析器標(biāo)記對于趨勢條目來說是特定的標(biāo)記,并且當(dāng)SAX解析器在該文件讀取時,該解析器將解析實體引用。在示例代碼2中描述了已解析的XML文件。當(dāng)解析了所有外部引用時,通過將XML文件拖入web瀏覽器(諸如Internet ExplorerTM5.0或更高版本)來執(zhí)行上述動作以便瀏覽,就能夠讀取解析定義。
示例代碼1<pre listing-type="program-listing"> ?。??xml version=″1.0″?> ?。?!DOCTYPE TrendParser[ ?。迹NTITY DATA_TREND_MENU SYSTEM″Data_trend_menu_def.xml″> ?。?!ENTITY NET_ETFTP_REQ SYSTEM″../etftp/NET_ETFTP_req_def.xml″> <!ENTITY TREND_ENTRY SYSTEM″Trend_entry_def.xml″> ]> <ETFTPParser> &amp;NET_ETFTP_REQ; &amp;DATA_TREND_MENU; <Group catagory=″TrendEntry″> <Repeat count=″ETFTPParser. DataTrendMenu.numberOfTrends″> &amp;TREND_ENTRY; </Repeat> </Group> ?。?ETFTPParser></pre>示例代碼2
<pre listing-type="program-listing"> ?。迹縳ml version=″1.0″?> <ETFTPParser> ?。糋roup catagory=″ETFTPRequest″> <Short name=″event_id″/> <Short name=″destination_port″/> <String name=″origin_loc_name″length=″32″stopAtNull=″true″/> ?。?Group> ?。糋roup name=″DataTrendMenu″catagory=″DataTrendMenu″> <Integer name=″first_storage time″/> <Byte skip=″2″/> <Short name=″numberOfTrends″switchable=″true″skipSet=″true″/> </Group> ?。糋roup catagory=″TrendEntry″> <Repeat count=″ETFTPParser.DataTrendMenu.numberOfTrends″> <Byte name=″parcode″/> <Byte name=″subcode″/> <Byte name=″slot_id″/> <Byte name=″storage_units″/> <Byte name=″display_units″/> <Byte name=″decimal_shift″signed=″true″/> ?。?Repeat> </Group> ?。?ETFTPParser></pre>然后,用戶創(chuàng)建數(shù)據(jù)構(gòu)造器265,當(dāng)所述數(shù)據(jù)構(gòu)造器正處理二進(jìn)制數(shù)據(jù)245時,它接收來自于解析樹235的回調(diào)。數(shù)據(jù)構(gòu)造器265以用戶希望的任意方式來構(gòu)建數(shù)據(jù)樹275。該樹275繼而能夠用來支持作為數(shù)據(jù)被傳送到其他方法或者被轉(zhuǎn)換成其他格式(諸如XML)以便傳輸?shù)牟罘?。圖8的示范性二進(jìn)制流的示范性數(shù)據(jù)構(gòu)造器265是“com.ge.med.rsvp.server.rsvpserver.unity.trend.TrendDirBuilder”類。當(dāng)讀取數(shù)據(jù)值時,解析樹235將調(diào)用該類上的插入值260方法。數(shù)據(jù)構(gòu)造器265構(gòu)建“com.ge.med.rsvp.server.rsvpserver.tend.TrendDirectory”對象作為其數(shù)據(jù)對象(數(shù)據(jù)樹275)。
在運行時,當(dāng)接收數(shù)據(jù)245時,數(shù)據(jù)匯集類調(diào)用值解析器205。數(shù)據(jù)匯集類是從諸如網(wǎng)絡(luò)或文件的源接收數(shù)據(jù)的類。所述數(shù)據(jù)匯集類調(diào)用值解析器205來解析所接收的數(shù)據(jù),并且將數(shù)據(jù)樹275轉(zhuǎn)送到請求方。然后將已返回的數(shù)據(jù)樹275傳送給需要它的任何一方。舉例來說,諸如“com.ge.med.rsvp.server.rsvpserver.unity.trend.UnityTrendDirBuilder”之類的趨勢控制器,調(diào)用具有根據(jù)其ETFTP請求接收的數(shù)據(jù)的值解析器205。將所返回的TrendDirectory對象作為getDirectory過程調(diào)用的結(jié)果進(jìn)行傳送。
應(yīng)該緊記的是,二進(jìn)制流格式以及解析樹語法可自由地隨著解析算法而改變,并且因為二進(jìn)制流不是被硬編碼的,所以其可以利用新的XML解析文件來改變。本發(fā)明實施例的特征正是所述結(jié)構(gòu)和動態(tài)處理,而不是實際輸入/輸出流。
使用解析定義文件就不必使用長“case-類型”語句切換到數(shù)據(jù)元素來實現(xiàn)二進(jìn)制處理代碼。相反,值解析器系統(tǒng)構(gòu)建用于數(shù)據(jù)的解析樹,這對于所接收的每個二進(jìn)制數(shù)據(jù)集被重復(fù)地調(diào)用。由此,外部處理代碼僅需要處理來自解析器的數(shù)據(jù)樹。由于解析定義以XML編寫,因此可以將實體引用用于外部XML文件,以便與整個定義拼合在一起,這使得通用處理塊在不同解析定義中能被共享。該方法可以在由類型特定信息跟隨著通用首部這樣一種協(xié)議中加以使用,并且尤其可以用于醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的解析和分布,而不必將協(xié)議信息嵌入系統(tǒng)體系結(jié)構(gòu)中。為經(jīng)由通信線路傳輸醫(yī)學(xué)二進(jìn)制數(shù)據(jù)而利用解析樹以及差異樹,能夠進(jìn)行醫(yī)學(xué)二進(jìn)制數(shù)據(jù)的有效編碼、壓縮以及傳輸,其中所述通信線路可以是低帶寬線路。
解析定義文件以及解析樹的實現(xiàn),還避免了向二進(jìn)制數(shù)據(jù)提供位屏蔽的需要,或者避免了在代碼中使用嵌套case語句的需要,這樣,在為不同應(yīng)用程序重新解釋原始數(shù)據(jù)時,還避免了重新編譯以及重分布軟件的需要。
如上所述,本發(fā)明的實施例可以依照計算機實現(xiàn)過程的形式以及用于實施那些過程的設(shè)備來實施。本發(fā)明的實施例還可以依照計算機程序代碼的形式來實施,所述程序代碼包含收錄在有形介質(zhì)中的指令,所述有形介質(zhì)諸如是軟盤、CD-ROM、硬盤驅(qū)動器或其他任何計算機可讀存儲介質(zhì),其中,當(dāng)將計算機程序代碼載入計算機并由計算機執(zhí)行時,計算機成為用于實施本發(fā)明的設(shè)備。本發(fā)明的實施例還可以依照計算機程序代碼的形式來實施,例如,所述程序代碼無論存儲在存儲介質(zhì)上,載入和/或由計算機執(zhí)行,還是經(jīng)由某些傳輸介質(zhì)傳輸,諸如經(jīng)由電線或電纜,經(jīng)由光纖,或者經(jīng)由電磁輻射,其中,當(dāng)將計算機程序代碼載入并由計算機執(zhí)行時,計算機就成為用于實施本發(fā)明的設(shè)備。當(dāng)在通用微處理器上實現(xiàn)時,計算機程序代碼段配置微處理器以創(chuàng)建特定的邏輯電路。
雖然已經(jīng)參考示范性實施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)該理解的是,在不背離本發(fā)明范圍的情況下,可以對本發(fā)明作出各種變化并且各種等價物可以適用于其元件。此外,不脫離本發(fā)明的實質(zhì)范圍的情況下,還可以作出許多修改以采用特殊形式或材料來教導(dǎo)本發(fā)明。因此,應(yīng)該意識到,本發(fā)明不限于作為期望實施此發(fā)明的最佳模式所公開的具體實施例,而是包括落入所附權(quán)利要求書的范圍內(nèi)的所有實施例。此外,使用術(shù)語第一、第二等不表示任何次序或重要性,而是使用術(shù)語第一、第二等來區(qū)分某一元件與其他元件。
權(quán)利要求
1.一種用于解析二進(jìn)制數(shù)據(jù)(245)的方法(150、200),包括在值解析器(205)處接收(165)二進(jìn)制數(shù)據(jù)(245)以及解析請求(250),所述解析請求(250)要求非差異解析方法或者差異解析方法中的至少一種方法;調(diào)用(170)解析樹(235)并接收解析定義(215),以便解析所接收的二進(jìn)制數(shù)據(jù)(245);在解析樹(235)處解析(175)二進(jìn)制數(shù)據(jù)(245),以便依照解析定義(215)來定義一個值,并且調(diào)用(260)數(shù)據(jù)構(gòu)造器(265)來管理已解析的值;將所述值插入(180)到已更新的數(shù)據(jù)樹(275)中;以及將對象(275、300)返回(285、305)給解析請求方(250)。
2.如權(quán)利要求1所述的方法(150、200),其中所述對非差異解析方法或差異解析方法中的至少一種方法的要求包括對非差異解析方法的要求;以及所述將對象(275、300)返回(285、305)給解析請求方(250)包括將已更新的數(shù)據(jù)樹(275)返回(285、305)給解析請求方(250)。
3.如權(quán)利要求1所述的方法(150、200),其中所述對非差異解析方法或差異解析方法中的至少一種方法的要求包括對差異解析方法的要求,并進(jìn)一步包括在值解析器(205)處將最后知道的數(shù)據(jù)樹(275)存儲到存儲器中;在值解析器(205)處從存儲器中檢索最后知道的數(shù)據(jù)樹(275);根據(jù)最后知道的數(shù)據(jù)樹(275)創(chuàng)建(295)差異樹(300),所述差異樹(300)包含在數(shù)據(jù)樹(275)中的變化;以及所述將對象(275、300)返回(285、305)給解析請求方(250)包括將差異樹(300)返回給解析請求方(250)。
4.一種用于解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)(245)以便經(jīng)由通信線路進(jìn)行傳輸?shù)姆椒?,包括在值解釋?205)處接收(165)二進(jìn)制數(shù)據(jù)(245)以及解析請求(250),所述解析請求(250)要求非差異解析方法或差異解析方法中的至少一種方法;在值解析器(205)處將最后知道的數(shù)據(jù)樹(275)存儲到存儲器中;調(diào)用(170)解析樹(235),并接收解析定義(215)以便解析所接收的二進(jìn)制數(shù)據(jù)(245);在解析樹(235)處解析(175)二進(jìn)制數(shù)據(jù)(245),以便依照解析定義(215)來定義一個值,并調(diào)用(175)數(shù)據(jù)構(gòu)造器(265)來管理已解析的值;將所述值插入(180)到已更新的數(shù)據(jù)樹中;如果調(diào)用了差異解析方法,則在值解析器(205)處從存儲器中檢索最后知道的數(shù)據(jù)樹(275);如果調(diào)用了差異解析方法,則將已更新的數(shù)據(jù)樹(275)與最后知道的數(shù)據(jù)樹(275)相比較;如果調(diào)用了差異解析方法,則創(chuàng)建(295)差異樹(300),所述差異樹(300)包含從最后知道的數(shù)據(jù)樹(275)到已更新的數(shù)據(jù)樹(275)的變化;以及將已更新的數(shù)據(jù)樹(275)或差異樹(300)中的至少一棵樹返回(185)給解析請求方(250)。
5.一種用于解析二進(jìn)制數(shù)據(jù)(245)的系統(tǒng)(100),包括與網(wǎng)絡(luò)(120)進(jìn)行通信的醫(yī)院計算機系統(tǒng)(100),所述醫(yī)院計算機系統(tǒng)(110)包括如下軟件,該軟件用于實現(xiàn)解析醫(yī)學(xué)二進(jìn)制數(shù)據(jù)(245)以便經(jīng)由通信線路進(jìn)行傳輸?shù)姆椒?150、200),所述方法(150、200)包括在值解析器(205)處接收(165)二進(jìn)制數(shù)據(jù)(245)以及解析請求(250),所述解析請求(250)要求非差異解析方法或者差異解析方法中的至少一種方法;在值解析器(205)處將最后知道的數(shù)據(jù)樹(275)存儲到存儲器中;調(diào)用(170)解析樹(235),并接收解析定義(215)以便解析所接收的二進(jìn)制數(shù)據(jù)(245);在解析樹(235)處解析(175)二進(jìn)制數(shù)據(jù)(245),以便依照解析定義(215)來定義一個值,并調(diào)用(260)數(shù)據(jù)構(gòu)造器(265)來管理已解析的值;將所述值插入(180)到已更新的數(shù)據(jù)樹(275)中;如果調(diào)用了差異解析方法,則在值解析器(205)處從存儲器中檢索最后知道的數(shù)據(jù)樹(275);如果調(diào)用了差異解析方法,則將已更新的數(shù)據(jù)樹與最后知道的數(shù)據(jù)樹(275)進(jìn)行比較(290);如果調(diào)用了差異解析方法,則創(chuàng)建(295)差異樹(300),所述差異樹(300)包含從最后知道的數(shù)據(jù)樹(275)到已更新的數(shù)據(jù)樹的變化;以及將已更新的數(shù)據(jù)樹(275)或差異樹(300)中的至少一棵樹返回(185)給解析請求方(250)。
6.如權(quán)利要求5所述的系統(tǒng)(100),進(jìn)一步包括網(wǎng)絡(luò)(120),并且所述醫(yī)院計算機系統(tǒng)(110)與所述網(wǎng)絡(luò)(120)相通信。
7.如權(quán)利要求5所述的系統(tǒng)(100),其中所述插入(180)值進(jìn)一步包括將該值插入到?jīng)]有嵌入式協(xié)議信息的已更新的數(shù)據(jù)樹(275)中;以及所述創(chuàng)建(295)差異樹(300)進(jìn)一步包括創(chuàng)建(295)沒有嵌入式協(xié)議信息的差異樹(300)。
8.如權(quán)利要求7所述的系統(tǒng)(100),進(jìn)一步包括網(wǎng)絡(luò)(120),并且所述醫(yī)院計算機系統(tǒng)(110)與所述網(wǎng)絡(luò)(120)相通信。
9.一種用于解析二進(jìn)制數(shù)據(jù)(245)的方法(200),包括通過讀取解析定義文件(215)來初始化(210)值解析器(205),并創(chuàng)建代表解析定義(215)的解析樹(235);在值解析器(205)以及解析樹(235)處接收(240)所輸入的二進(jìn)制數(shù)據(jù)(245),所述二進(jìn)制數(shù)據(jù)(245)具有原始數(shù)據(jù)元素或者非原始數(shù)據(jù)元素中的至少一種數(shù)據(jù)元素;響應(yīng)原始數(shù)據(jù)元素而調(diào)用(260)數(shù)據(jù)構(gòu)造器(265),并在原始解析節(jié)點將所述原始數(shù)據(jù)元素插入到數(shù)據(jù)樹(275)中;響應(yīng)非原始數(shù)據(jù)元素而調(diào)用(260)數(shù)據(jù)構(gòu)造器(265),并在非原始解析節(jié)點將非原始數(shù)據(jù)元素插入到數(shù)據(jù)樹(275)中;以及建立并返回(285、305)非差異數(shù)據(jù)樹(275)或者差異樹(300)中的至少一棵樹。
10.一種用于解析二進(jìn)制數(shù)據(jù)(245)的計算機程序產(chǎn)品,所述產(chǎn)品包括處理電路可讀的存儲介質(zhì),用于存儲可由處理電路執(zhí)行的指令,用于在值解釋器(205)處接收(240)二進(jìn)制數(shù)據(jù)(245)以及解析請求(250),所述解析請求(250)要求非差異解析方法或差異解析方法中的至少一種方法;在值解析器(205)處將最后知道的數(shù)據(jù)樹(275)存儲到存儲器中;調(diào)用(170)解析樹(235),并接收解析定義(215)以便解析所接收的二進(jìn)制數(shù)據(jù)(245);在解析樹(235)解析(175)二進(jìn)制數(shù)據(jù)(245),以便依照解析定義(215)來定義一個值,并調(diào)用(260)數(shù)據(jù)構(gòu)造器(265)來管理已解析的值;將所述值插入(180)到已更新的數(shù)據(jù)樹(275)中;如果調(diào)用了差異解析方法,則在值解析器(205)處從存儲器中檢索最后知道的數(shù)據(jù)樹(275);如果調(diào)用了差異解析方法,則將已更新的數(shù)據(jù)樹與最后知道的數(shù)據(jù)樹(275)進(jìn)行比較(290);如果調(diào)用了差異解析方法,則創(chuàng)建(295)差異樹(300),所述差異樹(300)包含從最后知道的數(shù)據(jù)樹(275)到已更新的數(shù)據(jù)樹的變化;以及將已更新的數(shù)據(jù)樹(275)或差異樹(300)中的至少一棵樹返回(285、305)給解析請求方(250)。
全文摘要
公開了一種用于解析二進(jìn)制數(shù)據(jù)(245)的方法(150、200)。所述方法(150、200)包括接收(165)二進(jìn)制數(shù)據(jù)(245)以及解析請求(250),所述解析請求(250)要求非差異解析方法或者要求差異解析方法,調(diào)用(170)解析樹(235)并接收解析定義(215),以便解析所接收的二進(jìn)制數(shù)據(jù)(245),解析(175)二進(jìn)制數(shù)據(jù)(245)以便依照解析定義(215)來定義一個值,并且調(diào)用(260)數(shù)據(jù)構(gòu)造器(265)來管理已解析的值。將所述值插入到已更新的數(shù)據(jù)樹(275)中并將對象(275、300)返回(285、305)給解析請求方(250)。
文檔編號G06F19/00GK1509007SQ20031012068
公開日2004年6月30日 申請日期2003年12月18日 優(yōu)先權(quán)日2002年12月18日
發(fā)明者S·L·施拉德爾, R·J·拉費里雷, J·S·欽科塔, S L 施拉德爾, 拉費里雷, 欽科塔 申請人:Ge醫(yī)療系統(tǒng)信息技術(shù)公司