from: http://www.ynradiology.net/Article_Show.asp?ArticleID=652
目的 實現醫學數位影像通訊標準(DICOM)。
方法 分析實現DICOM標準的策略。
結果 用C++實現了DICOM標準。
結論 醫學映像裝置介面標準化的問題是未來醫學映像裝置成敗的一個關鍵因素,在國內對DICOM標準進行相應的開發研究將對我國醫學映像裝置標準化作出貢獻。
1 引言
隨著醫學影像技術的發展,製造醫學影像診斷裝置和PACS的廠商越來越多,而有關的映像格式、傳輸方式卻千差萬別,這就給PACS及各種裝置之間的映像及其相關資訊的交換帶來了很大困難。為此,美國放射學會(American College of Radiology;ACR)和美國全國電子廠商聯合會(National Electrical Manufacturers Association;NEMA)於1985聯合建立了一種標準,以利於規範映像及其相關資訊的交換。這一標準經過幾年的版本更新,於1993年正式成為醫學數位影像通訊標準3.0(Digital Imaging and Communications in Medicine 3.0,DICOM3.0)。
DICOM利用物件導向的技術,基於詳細的資訊模型(實體-關聯式模式),給出了DICOM標準中的資料結構-資訊對象定義(information object definitions;IODs),以及對這些資訊對象的操作-DICOMMessage Service單元(DICOM message service elements;DIMSE);同時還定義了訊息(包含醫學映像或相關資訊以及對他們的操作)交換的網路及點對點通訊的支援。應用這一標準的數位影像醫療設備以及PACS,只需進行一些簡單的參數設定就可以交換醫學映像及其相關資訊。關於DICOM標準的詳細內容可參閱文獻。
2 DICOM實現策略
實現DICOM標準往往是根據實際情況的需要,實現DICOM定義的某些特定功能而不是全集。例如,DICOM同時定義了網路傳輸和點對點通訊對DICOM訊息交換的支援,實際應用中往往只選擇一種通訊方式。所以,每個DICOM的具體實現是不盡相同的。雖然如此,實現 DICOM還是有一定規律可循的。
2.1 層次性 DICOM標準還在不斷地更新,目前已有14部分及許多補充部分。圖1(略)顯示了DICOM標準的組成部分圖。人一般情況下實現DICOM要分以下三層次進行。
(1)DICOM訊息交換的網路支援層(DICOM第八部分)。這部分是最低層次,是其它層次的基礎,這部分主要定義了醫學映像及相關資訊的網路傳輸協議,它對應著開放系統互相連線模型(Open Systems Interconnection;OSI)定義的網路傳輸中的會話層、展示層及串連控制服務單元,圖2顯示了DICOM標準的網路層次結構。由於篇幅限制,有關點對點通訊及媒質交換在這裡也不討論了。
(2)DICOMMessage Service(DICOM第四、五、七部分)。這幾部分詳細定義了DIMSE及對醫學映像及相關資訊的操作,包括醫學映像及相關資訊的查詢、儲存、列印等服務,是對資訊對象的操作。
(3)DICOM資訊對象(DICOM第三、六部分)。這兩部分利用物件導向技術定義了資訊對象定義及資料字典。它們是實現DICOM的最高層次。
2.2 物件導向 是DICOM標準的一大特點,整個DICOM標準就是利用物件導向技術定義的,典型的體現在 IODs的定義。IODs有兩種類型:普通型、複合型。普通訊息對象類僅包含其對應的現實世界實體所固有的屬性;複合資訊對象類可額外包含不是其對應的現實世界實體所固有的屬性。複合資訊對象類提供了結構化的架構方法來表達映像通訊的需求。
由於物件導向技術在DICOM標準中的廣泛應用,利用物件導向的程式設計語言來實現DICOM標準就成為理所當然的了。利用諸如C++、Smalltalk、Java等物件導向語言實現DICOM標準,將有利於工作的順利開展。
2.3 易於擴充 DICOM是一個開放的、不斷髮展的標準。它從1993年至今已從九個部分發展到十四個部分,而且每部分都有所更正和補充,尤其是IODs不斷增加,使DICOM標準不僅適用於放射學領域,而且擴充到其它醫學資訊學領域,其應用範圍不斷擴充。層次性實現方式有利於DICOM實現的擴充。
2.4 代碼平台獨立 DICOM主要應用於各種不同的醫療設備之間進行醫學映像及相關資訊的交換,所以往往運行於各種操作平台。因此,實現通用的DICOM標準需要代碼平台獨立性。
3 用C++實現DICOM
我們借鑒了國外在實現DICOM上的一些經驗,獨立對DICOM作了多方面工作,已取得初步成果。其中之一就是利用C++實現了平台獨立的基於TCP/IP的DICOM標準。
3.1 實現DICOM訊息交換網路支援 DICOM訊息交換網路支援的實現是分兩個層次實現的(3)。首先要實現平台獨立的TCP/IP常用介面Berkeley標準通訊端(BSD socket);其次,對DICOM定義的訊息傳遞機制進行封裝。圖中,上層的DICOM訊息傳遞機制調用封裝後的TCP/IP通訊端通過網路進行資訊交換。
(1)DICOM標準第八部分定義了通過TCP/IP傳輸DICOM對象的標準。它對應於OSI定義的網路傳輸中的會話層、展示層及串連控制服務單元。這部分底層的資訊交換,採用了TCP/IP常用介面BSD通訊端。由於BSD通訊端在不同平台上的介面有些不同,所以採用了物件導向技術對BSD通訊端進行了封裝,以實現代碼平台獨立。
(2)DICOM標準第八部分定義了建立、結束網路連接及傳送DICOM對象的訊息機制。
在這裡,第八部分定義的所有訊息均被封裝為對應它們名字的C++對象中,3。
3.2 完成DIMSE服務 實現了DICOM訊息交換網路支援後,就應該完成更高層次的DICOM支援,這就是 DIMSE服務。DIMSE服務包括DIMSE-C服務和DIMSE-N服務。DIMSE-C服務允許一個DICOM應用實體要求另一DICOM應用實體對複合資訊對象進行操作。DIMSE-N服務僅用於一個DICOM應用實體通知另一DICOM實體某種事件的發生。由於篇幅限制,這裡只討論DIMSE- C服務。
SOP類與資訊對象定義是結合在一起的,但它是通過DIMSE服務來進行操作的。操作是主要由DICOM第四部分定義的,而資訊對象定義是由DICOM第三部分定義的。實現DIMSE服務關鍵是按DICOM的階層實現操作與資訊對象定義的分離。這是通過實現抽象類別來實現的,這些抽象類別包括AbstractStorage,AbstractQuery,AbstractRetrieve。這些抽象類別可以被繼承產生特定的SOP類。這樣做可以減少代碼重複從而減少錯誤發生,並且易於增加新的IOD從而擴充適用範圍。而抽象SOP類是由DICOM定義的DIMSE-C服務類抽象定義的。
3.3 完成資訊對象定義 DICOM的資訊對象定義是由模組組成的,每個模組是一個由一系列屬性群組成的資料結構。這樣定義資訊對象有利於DICOM應用範圍的擴充。例如,要在DICOM中增加適用於牙科的資訊對象定義,沒有必要再重新定義病人對象(Patient Object)、研究對象(Study Object)和系列對象(Series Object),只需要定義那些DICOM中未定義的牙科映像特有的屬性。根據DICOM構成資訊對象定義的方式,將每個組成模組定義為一個基類,由分別繼承相應基類的方式就可以組成資訊對象。
我們利用物件導向的方法,分三個層次實現了DICOM標準。這三個層次是緊密相連的,上一個層次需要繼承下一個層次的類或調用下一個層次的函數,下一個層次返回資料給上一個層次。在實現過程中,採用了各種方法來保證代碼的平台獨立性,如封裝了BSD通訊端及一些作業系統敏感的函數。由於採用了層次實現方法,使得系統更易於擴充,既在每個層次上都可以建立自己的高層次應用。
4 實現DICOM應注意的問題
由於DICOM是新興的且不斷髮展的,在實現DICOM的過程中會遇到許多問題。在這裡我們只討論兩個常見的對DICOM概念理解的錯誤。
4.1 應用程式名稱(Application Name) 人們易犯的錯誤是同一DICOM應用程式在網路上兩個不同節點上運行時使用同一應用程式名稱,認為應用程式名稱是程式的一部分。這顯然是不正確的。 DICOM標準中是這樣定義的應用程式名稱的:DICOM應用程式名稱在網路上唯一標誌一個服務或應用。況且C-MOVE服務的一個參數就是移動的目的地的應用程式名稱。如果在一個網路上有兩個應用程式名稱,C-MOVE將不知道將資訊對象移動到何處。
4.2 查詢格式 DICOM標準定義了基於三個資訊模型的層次查詢方法。如果一個SCU要在某一個層次進行查詢,它必須提供這個層次以上所有層次的唯一關鍵字。即,如果SCU要在series層查詢,它必須提供study層和patient層的唯一關鍵字。只給出上一層的唯一關鍵字是不正確的。另外,在某一層次進行查詢只能查詢該層次的屬性,不能查詢低層次的屬性。
5 結論
DICOM標準已成為業界公認的工業標準,在醫學映像傳輸領域使用DICOM標準已成為趨勢。為了適應這一趨勢,我們展開了對DICOM的研究工作。為了證明我們工作的階段結果,我們與國外的一些DICOM公用伺服器進行了互連,成功地完成了資訊的傳遞。另外,與MIR 的中心測試節點(Cental Test Node;CTN)軟體進行測試也取得了滿意的結果。
目前國際上,DICOM已經成為普遍適用的標準,即大部分醫學映像裝置及PACS系統都使用DICOM作為其互連標準。而目前國內在這方面的工作開展得還不夠,大部分國內生產的醫學映像裝置、PACS系統都是非標準化(也是非DICOM)介面的。我們正是基於這種認識,對DICOM進行相應開發研究及應用的。