999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DCMTK的DICOM通訊服務程序設計與實現

2012-10-15 02:09:52郟巖巖劉哲星艾育華季飛陳芳炯耿仁文
中國醫療設備 2012年10期
關鍵詞:界面數據庫服務

郟巖巖,劉哲星 ,艾育華 ,季飛 ,陳芳炯,耿仁文

1.華南理工大學 電子與信息學院,廣東 廣州 510641;2. 南方醫科大學 生物醫學工程學院,廣東 廣州510515;3. 南方醫科大學南方醫院,廣東 廣州 510515

0 前言

DICOM(Digital Imaging and Communications in Medicine)標準是由美國放射學會和美國電器制造商協會組織制定的標準,它涉及到醫學數字圖像的采集、歸檔、通信、顯示及查詢等操作的各個層面。DICOM通訊服務程序是一個基于DICOM標準協議,實現調度和管理DICOM圖像文件的應用程序,處于圖像存檔及通訊系統(PACS)的核心部分。隨著遠程醫療技術的飛快發展,不同地區或醫院的PACS 系統間的DICOM通信量大大增加,為了更加高效、方便地管理這些業務,開發用于區域醫療信息中心和遠程會診的DICOM通信服務程序意義重大。DCMTK(DICOM Tool Kit)是德國OFFIS公司提供的開源項目,經過10多年的開發和維護,已經基本實現了DICOM協議的內容,并且支持不同操作系統下的應用開發,為我們開發DICOM通信軟件提供了有力的工具。

1 DICOM通訊基礎

1.1 DICOM消息格式

DICOM消息包含命令集和數據集兩部分。一個DICOM數據集實際上就是一個SOP(Service Object Pair)實例,DICOM數據集是由DICOM數據元素(Data Element) 按一定的順序排列組成的,DICOM數據元素則是DICOM文件中最基本的結構單元[1]。命令集的構成類似于數據集,包含很多的命令元素,但不同的是每個命令元素僅包括標簽、值長和值域三個部分[2]。DICOM消息格式,見圖1。

此外,數據集里的內容是按照層次的關系進行組合的,即對于一個數據集來說,要包含病人(Patient)、檢查(Study)、系列(Series)和圖像(Image)4層信息。

圖1 DICOM消息格式

1.2 DICOM服務類

DICOM服務類由信息對象對(Service Object Pair,SOP)來表述,又由于同樣的服務可以操作不同的信息對象定義(Information Object Definition,IOD),所以將SOP稱作SOP class[3]。而SOP class 就是由IOD和一組消息服務元素(DIMSE)組成的。如1.1節所述,消息服務元素對應于命令集,而IOD對應數據集。

DICOM為其所定義的信息對象制定了標準化的服務類型。因為DICOM的信息對象包括復合對象和規范化對象兩種,相應的服務也分為復合服務和規范化服務。不論是什么服務,都要通過一組消息服務元素(DICOM Message Service Element,DIMSE)來實現。這些DIMSE大致分為兩類,即對于復合信息對象定義的5種DIMSE(叫做DIMSE-C),對于規范化信息對象定義的6種DIMSE(叫做DIMSE-N),其表述見表1(指定了服務類型:操作類型和通知類型[2])。

表1 DIMSE表

服務的執行是使用服務原語來描述的,在服務的使用過程中需要明確的是服務發起者還是服務執行者。

1.3 DICOM通信過程[4]

DICOM的網絡通信建立在TCP/IP之上,但是由于涉及到個人隱私等問題,所以必須保證通信的安全性,最基本的做法就是只在指定的AE(Application Entity,用來標示應用程序)之間進行通信。

在進行DICOM通信時,通信中的AE之間首先需要進行必要的協商,其中最基本的就是傳輸語法和抽象語法。傳輸語法是指數據集所要求的VR方法和字節順序;抽象語法來表明AE都支持哪些SOP class。這些工作主要是由DICOM的上層協議來完成的,相對于OSI 7層協議的會話層和表示層。

通信的請求方首先使用默認的傳輸語法給出自己可以用的傳輸語法和抽象語法清單由對方選擇。通信的另一方則根據自身的硬件和操作系統等軟件情況選擇合適的傳輸語法和抽象語法,并回答對方。這樣協商之后就可以在AE之間確定用于DICOM消息交互的環境。

在DICOM標準協議中,上述連接的建立是通過一對A-ASSOCIATE-RQ和A-ASSOCIATE-AC關聯的服務來實現的,之后在這個連接之上就可以將1.2節所述的各種消息服務封裝在P-DATA請求原語中進行通信[5]。

以存儲服務類SCP端為例,通信過程如下[6]:

(1) 建立TCP連接。DUL (DICOM Upper Layer) FSM(Finite State Machine)初始時處在狀態1,在接收到TCP連接指示(Transport Connection Indication)后,發送TCP連接響應(Transport Connect Response),FSM進入狀態2,等待連接請求。

(2)建立DICOM連接(Association)。SCP接收到A- ASSOCIATERQ PDU后,開始檢查解析此PDU,FSM進入狀態3,等待連接響應指示(A-ASSOCIATE Response)。接收到A-ASSOCIATE響應指示,SCP發送A-ASSOCIATE-AC PDU,FSM進入狀態6,連接建立,準備接收數據。

(3)消息數據的傳遞。SCP接收到P-DATA-TF PDU后,發送P-DATA 指示原語,表明數據已接收到,該數據首先應該是DICOM命令集,此處為C-STORE 請求服務,當然也可以包含數據元素,比如請求方AE。此時FSM還是要進入狀態6,用來接收DICOM數據集。然后SCP重復上面的動作,不停接收P-DATA-TF PDU,直到所有的數據接收完畢。當接收完數據之后,SCP構造一個不含數據集的命令集封裝在P-DATA 請求原語(P-DATA Request Primitive)中,發送給對方,告訴對方可以發送其他數據或安全地釋放連接。這時FSM仍然處在狀態6。

(4)釋放DICOM連接。SCP接收到A-RELEASE-RQ PDU后,發出A-RELEASE指示原語,FSM進入狀態8。當再接收到A-RELEASE響應原語(A-RELEASE Response Primitive)時,SCP發出A-RELEASE-RP PDU,FSM進入狀態13,等待TCP釋放連接。

(5)釋放TCP連接。

2 DICOM服務程序設計

2.1 DICOM服務程序功能架構

DICOM服務程序的功能架構,見圖2。服務程序既可以接受DICOM AE的存儲請求,歸檔發來的圖像,還必須支持對PACS系統中DICOM圖像的查詢和獲取的請求,此外,還要支持數據圖像的調度,如將一些特定的圖像從一個AE調度到另一個AE[7]。

當然,服務程序的運行需要后臺數據庫和存儲媒介的支持。

圖2 DICOM服務程序功能架構圖

2.2 DICOM服務程序設計

DICOM服務程序的設計滿足以下的基本要求[8]:

(1)對從網絡上或設備中獲取的圖像進行歸檔,支持檢索和獲取,所使用的通信協議符合DICOM標準第7部分和第8部分。作為PACS系統的核心部分,服務程序的性能和穩定性直接影響到對圖像傳輸、查詢、瀏覽、儲存和處理的速度。對圖像歸檔首先要接受DICOM AE的存儲請求,所以服務程序必須支持C-STORE服務;支持檢索和獲取,移動不同DICOM AE之間的數據,則要求程序具有提供C-FIND,C-MOVE和C-GET服務的能力;此外,還需提供用于通訊測試的C-ECHO服務。

(2)數據庫的設計反映了醫學影像中各實體的及其狀態在計算機中的信息描述。DICOM標準第6部分對醫學影像中所有可能涉及到的各種實體、操作和處理過程中的數據類型和屬性都做了詳細的定義[9-11]。

數據庫表的創建主要依賴DICOM Query/Retrieve 信息模型,根據DICOM標準可知,DICOM信息模型分為4個內容層次:病人(Patient),檢查(Study),系列(Series)和圖像(Image)。一個病人可以包含一個或多個檢查,一個檢查包含一個或多個系列,一個系列又可以包含一個或多個圖像。但是在實際運用中,很多活動都是圍繞著檢查進行,因此將病人和檢查合并為一張表,是提高查詢速度、減少數據存儲冗余度的一個方法。所以需要創建Study表、Series表和Image表,表的對應關系為Study表中的一條記錄對應多條Series表的記錄,Series中的一條記錄對應多條Image表的記錄。表設計時并沒有使用STUDY_INSTANCE_UID,SERIES_INSTANCE_UID和 SOP_INSTANCE_UID作為主鍵,原因在于考慮到實際操作中,所有的圖像并非都是來自標準DICOM設備的DICOM格式的圖像,對于那些從其他格式轉化過來的圖像,需要人工分配這些全局唯一值,因此單獨另設主鍵是必要的。另外,為了便于與不同的AE連接,需要添加工作站表,此表所包含的列為AE_TITLE、IP_ADDRESS、HOST_NAME、PORT、DESC。 主鍵為STATION_KEY[12]。

(3)對影像文件的存儲格式應遵循DICOM標準第10部分,支持對DICOM文件的無損和有損壓縮存儲[13]。

2.3 DICOM服務程序的管理

服務程序具有以下基本的管理界面[14-15]。

(1)進程管理界面。服務程序的運行需要很多功能的支持,包括存儲能力、歸檔能力、查詢能力、獲取能力、移動圖像的能力和驗證連通性的能力,這么多的功能可以分別編譯成不同的命令行程序,以服務的形式在后臺運行。服務程序界面用Qt開發,利用類QTabwidget不同頁對應不同的管理界面,進程管理界面,見圖3。

圖3 服務程序的進程管理界面圖

(2)配置界面。包括不同后臺程序運行需要的端口配置,服務程序的AE title配置和文件存儲路徑配置等。

(3)數據庫的維護界面。關于數據庫的基本操作,如重置數據庫,列出數據庫的布局信息和清空數據庫等操作。

(4)通信的AE titles界面。服務程序需要連接的通信方AE Titles,在這個界面下添加和刪除。

(5)服務程序運行狀態信息。顯示一些服務程序運行過程中的提示狀態。

(6)通信操作界面。包括驗證連通性和一些查詢、獲取、存儲、移動圖像的基本操作。

3 DICOM服務程序開發

3.1 DCMTK簡介[16]

DCMTK是由德國OFFIS公司提供的開源項目,已經實現了DICOM協議的大部分內容。該開發包提供所有的源代碼、支持庫和幫助文檔。它完全是由ANSI C和C++寫成的,被廣泛地應用于各種公司和醫院的開發平臺中。DCMTK提供了很多的程序包,本服務程序所用的程序包有ofstd,oflog,dcmdata,dcmnet和dcmqrdb。這些程序包以組件的形式進行組合,使用時被編譯成lib文件。與DICOM服務程序密切相關的組件是dcmdata,dcmnet和dcmqrdb。

dcmdata是一個DICOM數據編碼/解碼庫,這個模塊包含了一些類來管理DICOM數據結構和文件。同時它也提供了對DICOMDIR文件的支持以滿足Dicom storage media(存儲介質)的需要。

dcmnet是一個網絡庫。該模塊包含了實現DICOM網絡通信的所有函數集,即:DICOM上層有限狀態機(DUL FSM,DICOM Upper Layer Finite State Machine), 關 聯 控 制服務元素(ACSE,Association Control Service Element)以及DICOM消息服務元素(DIMSE ,DICOM Message Service Element)。

dcmqrdb是一個圖像數據庫服務器。此模塊具有圖像歸檔功能,管理一塊存儲區域,并允許使用DICOM存儲服務類將圖像存儲在這些存儲區域中。它也允許使用DICOM查詢/獲取服務類查詢圖像屬性并獲取圖像。

3.2 服務程序實現

服務程序要實現C-STORE、C-FIND、C-MOVE、C-GET和C-ECHO客戶端服務的功能主要依賴dcmnet組件,分別調用dimse.h中的函數DIMSE_storeUser()、函數DIMSE_findUser()、函數DIMSE_moveUser()、函數DIMSE_getUser()和函數DIMSE_echoUser()使用這些服務請求。對這些服務的實現較為簡單,下面重點介紹服務端服務的實現。

服務程序的歸檔服務的實現是運行存儲服務的SCP(STORESCP.exe)先接受DCIOM文件,存放到某一臨時文件夾,然后讓入庫程序(inDicomDatabase.exe)檢測,如有文件,則分層次將DICOM文件信息寫入數據庫。考慮到數據庫的不同類型和程序的可移植性,服務程序對數據庫的操作使用Qt的QODBC編程。

對DICOM查詢獲取服務的實現主要依賴dcmqrdb組件中的類DcmQueryRetrieveSCP,該類封裝了所有處理細節。在使用該類時,需要用到數據庫的操作類,dcmqrdb提供了類DcmQueryRetrieveIndexDatabaseHandle處理文本數據庫。查詢獲取服務程序只需調用類DcmQueryRetrieveSCP的 成 員 函 數 OFCondition waitForAssociation(T_ASC_Network* theNet)就可以完成所有的操作。查詢過程如1.3節所述,對該過程的實現都被封裝成不同的函數,比如用于接收DICOM連接請求和釋放響應的函數分別是函數ASC_receiveAssociation()和函數ASC_acknowledgeRelease()。主要用于處理查詢獲取服務處理的函數是類DcmQueryRetrieveSCP的私有成員函數dispatch(),在一個連接上,dispatch()函數通過while()循環,可以處理服務C-ECHO、C-FIND、C-MOVE 和C-GET,正常情況下通過A-RELEASE-RQ退出循環。

其中函數ASC_receiveAssociation()由于處理DICOM連接請求,因此需要調用dul.cc中的處理上層協議的函數。其中最為重要的就是函數DUL_ReceiveAssociationRQ(),該函數會處理一些連接所用的私有參數,特別是它會調用函數receiveTransportConnectionTCP()處理一些底層的TCP連接的請求。該函數具有處理多進程的功能,如linux下調用函數fork(),windows下調用WINAPI函數CreateProcess()。

對于一個查詢移動服務來說,同時處理來自不同AE的連接請求是一個基本的要求,遺憾的是類DcmQueryRetrieveSCP并不支持多進程,因此需要修改代碼來實現多進程功能。選擇增加選項“--fork”來控制程序,以便使用receiveTransportConnectionTCP()函數中的多進程代碼。不得不提的一個問題,函數waitForAssociation()調用的函數ASC_associationWaiting()中的函數select()會與函數receiveTransportConnectionTCP()中的函數select()相沖突,因此對ASC_associationWaiting()做了一定的修改,對處于底層的receiveTransportConnectionTCP()的代碼則保留不變。

組件dcmqrdb并不支持常用數據庫,如sqlserver,oracle等。用常用數據庫代替文本數據庫,需要對類DcmQ ueryRetrieveIndexDatabaseHandle進行替換。由于該類繼承虛基類DcmQueryRetrieveDatabaseHandle,因此設計的用于操作常用數據庫的新類DcmQueryRetrieveSqlDatabaseHandle,仍使用虛基類提供的接口。同樣服務程序對數據庫操作使用的是Qt的QODBC編程。

4 結束語

本文描述了基于DCMTK開源庫構建DICOM通訊服務程序的過程,并介紹了其基本實現所調用的DCMTK的函數和類。開發的DICOM服務程序的功能還有待完善,運行的性能還需要進一步的優化,如在進程間通訊、多線程管理和高效的數據庫訪問等方面還需要進一步的研究和改進。

[1] NEMA.Digital Imaging and Communications in Medicine(DICOM) Part 3:information object definitions[S].NEMA Standards Publication,2011.

[2] NEMA.Digital Imaging and Communications in Medicine(DICOM)Part 7:message exchange[S].NEMA Standards Publication,2011.

[3] NEMA.Digital imaging and Communications in Medicine(DICOM) Part 4:Service class specifications[S].NEMA Standards Publication,2011.

[4] NEMA.Digital Imaging and Communications in Medicine(DICOM) Part 8:network communication support for message exchange[S].NEMA Standards Publication,2011.

[5] 王巖,田捷,韓博聞. DICOM通訊機制的設計與實現[J].計算機應用研究,2000,(12):63-64.

[6] 孔祥勇,宋健,顧文軍.基于DCMTK的醫學影像工作站設計[J].計算機與現代化,2010,(10):78-80.

[7] 徐瑾,胡紹海.醫學數字圖像通訊標準服務器的設計與實現[J].鐵路計算機應用,2005,14(5):15-17.

[8] 劉剛,吳翔虎,曲明成,等.HL7在HIS系統中的應用研究[J].中國醫療設備,2011, 26(2):42-48.

[9] Sahu.DICOM search in medical image archive solution e-Sushrut Chhavi[J].Electronics Computer Technology,2011,6:256-260.

[10] 程夢云,朱俊,寧交賢,等.DICOM醫學圖像的存檔管理和傳輸技術的研究[J]. 四川大學學報, 2006,43(3):599-604.

[11] Gerard L.Distributed database for a picture archiving and communications system[C].Proceedings of SPIE-The International Society for Optical Engineering,1999.

[12] 鄧小琳,朱俊,寧交賢,等.基于Oracle數據庫的DICOM醫學圖像管理系統技術研究[J].中國醫學物理學雜志,2008,25(2):574-577.

[13] NEMA.Digital Imaging and Communications in Medicine(DICOM) Part 10:Media storage and file format for media interchange[S].NEMA Standards Publication,2011.

[14] MERGE.eFilm workstation[EB/OL].(2012-05-30)[2011-07-11].Https://estore.merge.com/na/index.aspx

[15] Marcel van Herk.ConQuest[DB/OL].(2012-05-30)[2011-07-11].Http://www.idoimaging.com/program/183

[16] OFFIS. DICOM tool kit 3.6.0[DB/OL].(2012-05-30)[2011-07-11].Http://dicom.offis.de/dcmtk.php.en.

猜你喜歡
界面數據庫服務
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
數據庫
財經(2017年2期)2017-03-10 14:35:35
人機交互界面發展趨勢研究
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 久久综合亚洲鲁鲁九月天| 韩日午夜在线资源一区二区| 国产SUV精品一区二区6| 无码av免费不卡在线观看| 国产亚洲精品自在久久不卡| 国产视频大全| 青青草原国产一区二区| 日韩一级二级三级| 亚洲精品视频免费| a网站在线观看| 天天综合天天综合| 久久青青草原亚洲av无码| 一区二区三区国产精品视频| 熟妇丰满人妻| 欧美色伊人| 日本亚洲最大的色成网站www| 99激情网| 日韩AV无码一区| 欧美色视频网站| 久久精品国产国语对白| 国产欧美在线观看视频| 亚洲精品国产精品乱码不卞| 亚洲不卡影院| 99视频在线观看免费| 国产福利小视频高清在线观看| 欧美成人h精品网站| 欧美19综合中文字幕| 欧美a在线看| 2019年国产精品自拍不卡| 欧美日韩国产成人高清视频| 精品伊人久久久大香线蕉欧美| 露脸真实国语乱在线观看| 国产jizz| 97se综合| 九九视频免费看| 久久久久久久久久国产精品| 99成人在线观看| 国产精品亚洲综合久久小说| 亚洲免费播放| 91九色最新地址| 亚洲精品天堂自在久久77| 欧美69视频在线| 重口调教一区二区视频| 欧美福利在线| 精品国产美女福到在线直播| 亚洲美女高潮久久久久久久| 亚洲高清资源| 精品国产电影久久九九| 高潮毛片无遮挡高清视频播放| 99re这里只有国产中文精品国产精品 | 91麻豆精品国产高清在线| 国产91丝袜| www.亚洲一区| 成·人免费午夜无码视频在线观看| 亚洲第一av网站| 国产呦精品一区二区三区下载| 国产原创自拍不卡第一页| 国产拍在线| 国产区91| 欧美成a人片在线观看| 国产中文一区a级毛片视频| 九九九精品成人免费视频7| 国精品91人妻无码一区二区三区| 视频一本大道香蕉久在线播放| 亚洲资源在线视频| 欧美日韩导航| 丝袜久久剧情精品国产| 88国产经典欧美一区二区三区| 色婷婷视频在线| 成人日韩视频| 国产肉感大码AV无码| 99久久精品美女高潮喷水| 亚洲中文在线看视频一区| 久久黄色一级视频| 女人18毛片一级毛片在线| 欧美日本在线观看| 一区二区无码在线视频| 99国产精品国产| 日本免费高清一区| 高潮毛片免费观看| 美女国产在线| 免费一级毛片完整版在线看|