姜曉鵬
摘要:以VC++為開發(fā)平臺(tái),創(chuàng)建DICOM圖像核心類,實(shí)現(xiàn)了DICOM圖像的傳輸。首先介紹醫(yī)學(xué)圖像傳輸過程,然后分析DICOM應(yīng)用實(shí)體關(guān)聯(lián)協(xié)商及數(shù)據(jù)傳輸關(guān)系,最后闡述了系統(tǒng)實(shí)現(xiàn)的技術(shù)。
關(guān)鍵詞:VC++;遠(yuǎn)程醫(yī)療系統(tǒng);圖像傳輸;醫(yī)學(xué)數(shù)字成像和通信
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)01-0137-03
Medical Image Transmission System Based on VC ++
JIANG Xiao-peng
(The Peoples Hospital of Sichuan Longchang, Neijiang 642150, China)
Abstract:DICOM image transmission is achieved By using VC++ to create a DICOM image core class, The process of Medical image transmission is introduced firstly, then the DICOM application entity related consultation and data transmission relationship is analyzed, the implement technology of system is elaborated at last.
Key words: VC++;Remote medical system; image transmission; DICOM
隨著科學(xué)技術(shù)的不斷發(fā)展,臨床廣泛應(yīng)用醫(yī)學(xué)成像設(shè)備,醫(yī)學(xué)圖像在醫(yī)療總的信息比例占到了醫(yī)學(xué)信息量的70%—80%以上,各種數(shù)字醫(yī)學(xué)圖像已經(jīng)成為醫(yī)生提供了診斷各種疾病的重要依據(jù)。但由于缺乏統(tǒng)一的醫(yī)學(xué)圖像標(biāo)準(zhǔn)和一致性接口,造成不同生產(chǎn)廠商的醫(yī)學(xué)成像設(shè)備的醫(yī)學(xué)圖像存儲(chǔ)方式、存儲(chǔ)格式、圖像傳輸方式都不同,導(dǎo)致各種醫(yī)學(xué)設(shè)備難以共享圖像。 DICOM(Digital Imaging and Communications in Medicine)標(biāo)準(zhǔn)的出現(xiàn)為醫(yī)學(xué)數(shù)字成像和通信提供了統(tǒng)一的標(biāo)準(zhǔn),它支持TCP/IP網(wǎng)絡(luò),規(guī)范了醫(yī)學(xué)圖像及各種數(shù)字信息的格式,很好地解決了醫(yī)學(xué)圖像信息的存儲(chǔ)、共享等問題。
1 醫(yī)學(xué)圖像傳輸過程
醫(yī)學(xué)圖像傳輸協(xié)議采用DICOM 通訊協(xié)議,DICOM 通訊協(xié)議處于 TCP/IP 協(xié)議之上,主要實(shí)現(xiàn) OSI 的會(huì)話層、表示層和應(yīng)用層的功能,采用DICOM 通訊協(xié)議進(jìn)行通信時(shí),不用關(guān)心各層內(nèi)部的具體實(shí)現(xiàn)過程,只要利用上下層之間的接口函數(shù)即可實(shí)現(xiàn)通信,非常方便程序的升級(jí)和維護(hù)。根據(jù) DICOM 標(biāo)準(zhǔn)自身的層次結(jié)構(gòu),傳輸系統(tǒng)采用分層方法進(jìn)行設(shè)計(jì)并實(shí)現(xiàn) DICOM 的傳輸。醫(yī)學(xué)圖像傳輸過程主要有這幾個(gè)步驟,如圖1所示。
1) 建立協(xié)商:將進(jìn)行數(shù)據(jù)傳輸?shù)碾p方必須先建立協(xié)商關(guān)聯(lián),確定傳輸數(shù)據(jù)的類型、字節(jié)順序和對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行編碼等,為 DICOM 的服務(wù)對(duì)象對(duì)之間的數(shù)據(jù)傳輸做好準(zhǔn)備,只有協(xié)商建立后,方可進(jìn)行傳送消息、釋放、終止等過程;建立協(xié)商時(shí),請(qǐng)求方發(fā)送一個(gè)關(guān)聯(lián)請(qǐng)求數(shù)據(jù)傳輸單元 PDU,接收方接收到這個(gè) PDU 后,對(duì)這個(gè) PDU 的進(jìn)行檢查,然后發(fā)送關(guān)聯(lián)回應(yīng)或拒絕 PDU。
2) 數(shù)據(jù)傳輸:經(jīng)過協(xié)商以后,服務(wù)對(duì)象對(duì)雙方對(duì)要進(jìn)行傳輸消息,一個(gè)典型的 DICOM 消息是由一個(gè)命令流(如果需要的話)和一個(gè)數(shù)據(jù)流組成的。下面以存儲(chǔ)服務(wù)類為例介紹 DICOM 通訊過程。
①服務(wù)請(qǐng)求方通過 C-STORE 請(qǐng)求原語要求服務(wù)執(zhí)行方存儲(chǔ) SOP 實(shí)例,服務(wù)執(zhí)行方DIMSE 協(xié)議機(jī)接收到 C-STORE 請(qǐng)求原語后,根據(jù)請(qǐng)求原語生成一個(gè) C-STORE-RQ 消息,然后將C-STORE-RQ 消息分成 PDV 封裝在 PDU 中,再使用 P-DATA 請(qǐng)求服務(wù)將該消息發(fā)送。
②服務(wù)執(zhí)行方 DIMSE 協(xié)議機(jī)接收到 C-STORE-RQ 的消息后,向 DIMSE 服務(wù)執(zhí)行方發(fā)出C-STORE 指示原語,服務(wù)執(zhí)行方根據(jù) C-STORE-RQ 的消息判斷是拒絕還是接收這個(gè)消息,然后向服務(wù)執(zhí)行方 DIMSE 協(xié)議機(jī)發(fā)出 C-STORE 回應(yīng)原語。
③DIMSE-C 協(xié)議機(jī)收到來自服務(wù)執(zhí)行方發(fā)出的 C-STORE 回應(yīng)原語后,根據(jù)請(qǐng)求原語生成一個(gè) C-STORE-RSP 消息,把C-STORE-RSP消息分成 PDV 封裝在 PDU 中,再使用 P-DATA 請(qǐng)求服務(wù)將該消息發(fā)送。
④服務(wù)請(qǐng)求方 DIMSE 協(xié)議機(jī)收到傳遞 C-STORE-RSP 的消息后,向服務(wù)請(qǐng)求方發(fā)出C-STORE 確認(rèn)原語,完成 C-STORE 協(xié)議過程。
3) 關(guān)閉連接
為了網(wǎng)絡(luò)的過分臃腫及增加其他用戶的訪問數(shù)目,已建立的連接的服務(wù)對(duì)象對(duì)在數(shù)據(jù)正常傳輸后,需要關(guān)閉已經(jīng)建立起來的連接。使用 A-RELEASE 服務(wù)可以用來在對(duì)等應(yīng)用實(shí)體間正常有序地結(jié)束連接,而且不會(huì)造成任何數(shù)據(jù)的丟失,而 A-ABORT 是用來強(qiáng)行終止應(yīng)用連接,可能造成數(shù)據(jù)的丟失。
對(duì)于醫(yī)院影像中心的CT、MR、CR、DR等支持DICOM Storage SCU的設(shè)備,可通過在設(shè)備上設(shè)定DICOM 3.0技術(shù)參數(shù)(例如:AE Title,IP Address,Port NO.等信息)直接接入PACS系統(tǒng),將其影像傳輸至服務(wù)器及存儲(chǔ)系統(tǒng)進(jìn)行集中存儲(chǔ)管理。通過DICOM Storage方式可獲取原始的影像數(shù)據(jù),可保證影像及相關(guān)信息的完整性。
對(duì)于醫(yī)院影像中心的非DICOM設(shè)備(超聲、內(nèi)窺鏡等),使用PacsGate DICOM網(wǎng)關(guān)進(jìn)行影像采集,PacsGate將采集的影像轉(zhuǎn)換為標(biāo)準(zhǔn)DICOM影像并與病人信息進(jìn)行整合后歸檔到PACS服務(wù)器。只要采集設(shè)備采集分辨率高于原始圖像分辨率,就可保證獲取圖像在診斷過程中的質(zhì)量要求。
2 圖像傳輸
DICOM標(biāo)準(zhǔn)是PACS系統(tǒng)所遵守的通信協(xié)議,DICOM通信主要基于客戶端/服務(wù)器模式,并通過SCU和SCP服務(wù)類交互的實(shí)現(xiàn)信息傳輸,DICOM通訊是采用面向?qū)ο蠓椒ㄟM(jìn)行信息的傳遞,方便了面向?qū)ο笳Z言對(duì)通信模型的開發(fā)和設(shè)計(jì)。DICOM醫(yī)學(xué)圖像存儲(chǔ)、管理、檢索等相關(guān)應(yīng)用都要建立在TCP/IP協(xié)議上的DICOM上層協(xié)議層。
2.1 通信模型
DICOM標(biāo)準(zhǔn)的通信是利用現(xiàn)有的網(wǎng)絡(luò)通信協(xié)議棧發(fā)展起來的,DICOM協(xié)議是建立在TCP/IP協(xié)議基礎(chǔ)之上的一個(gè)協(xié)議,是(OSI)7層協(xié)議的子集,DICOM是以TCP/IP協(xié)議棧的四層結(jié)構(gòu)(網(wǎng)絡(luò)接口層,網(wǎng)絡(luò)層(IP層),傳輸層(TCP層)以及應(yīng)用層)實(shí)現(xiàn)通信,利用TCP/IP協(xié)議的Socket通信機(jī)制來實(shí)現(xiàn)TCP連接,因此,DICOM標(biāo)準(zhǔn)通信模型可分為五層:SCU/SCP層,DIMSE(DICOM消息服務(wù)元素)層,消息層,DICOM上層協(xié)議層(ULP)和TCP Socket層,如圖2所示。
2.2 DICOM 通信實(shí)例
DICOM 通信的整個(gè)過程如圖3所示,首先客戶端(SCU)先與服務(wù)器端(SCP)之間通過調(diào)用SOCKET 函數(shù)建立一條TCP連接,在建立了TCP連接之后,客戶端將醫(yī)學(xué)圖像傳輸存儲(chǔ)命令(C-STORE)交給 DIMSE 層;DIMSE 層調(diào)用 C-STORE 服務(wù)類并結(jié)合醫(yī)學(xué)圖像數(shù)據(jù)便確立了一個(gè) SOP 對(duì)象,因?yàn)檫@個(gè)CT圖像已經(jīng)是DICOM文件格式,所以直接對(duì)該圖像文件進(jìn)行分解,包括導(dǎo)言、前綴以及各個(gè)數(shù)據(jù)元素(這里主要是像素?cái)?shù)據(jù)元素),C-STORE服務(wù)類與它們確立成服務(wù)對(duì)象對(duì)。然后,在消息層進(jìn)行編碼,生成請(qǐng)求消息。ULP先構(gòu)建發(fā)送A-AssociateRQ PDU到SCP端請(qǐng)求協(xié)商建立關(guān)聯(lián),如果收到A-AssociateAC PDU則表示關(guān)聯(lián)經(jīng)協(xié)商建立成功,此時(shí)可將已生成的請(qǐng)求消息裝入P-DATA-TF PDU中再通過 TCP SOCKET 層發(fā)送出去。服務(wù)器端接收的過程則正好相反:接收PDU——從中取出消息——進(jìn)行解碼——根據(jù)解碼后的數(shù)據(jù)調(diào)用 C-STORE類——完成指定的操作(存儲(chǔ)醫(yī)學(xué)圖像)。一切結(jié)束之后服務(wù)器端會(huì)根據(jù)結(jié)果構(gòu)造響應(yīng)消息,再通過ULP的P-DATA-TF PDU將響應(yīng)消息送回客戶端。客戶端收到消息后構(gòu)建并發(fā)送A-ReleaseRQ PDU便可結(jié)束與服務(wù)器端的關(guān)聯(lián)了。至此,便完成了CT圖像從客戶端到服務(wù)器端的傳送和存儲(chǔ)。
3 系統(tǒng)實(shí)現(xiàn)
3.1 開發(fā)平臺(tái)
DICOM 標(biāo)準(zhǔn)引入了信息對(duì)象以及服務(wù)類,Microsoft 的 VC++是一種面向?qū)ο蠹邦惖木幊坦ぞ?,非常適合DICOM的開發(fā),且C++語言中的多態(tài)性、繼承性以及封裝性等可大大提高實(shí)際編程的工作效;而DCMTK(DICOM Tool Kit)是一套針對(duì) DICOM 標(biāo)準(zhǔn),它用ANSI C 和 C++混合編程,實(shí)現(xiàn)了醫(yī)學(xué)圖像的傳輸、存儲(chǔ)和打印等功能,實(shí)現(xiàn)了DICOM標(biāo)準(zhǔn)的絕大部分功能,完全以源代碼的形式呈現(xiàn)。因此,系統(tǒng)采用WINDOWSXP+VC6.0為開發(fā)平臺(tái),在開源軟件開發(fā)包 DCMTK(DICOM Tool Kit) 的支持下開發(fā)出了DICOM 通信系統(tǒng)。使用DCMTK開發(fā)包時(shí),使用構(gòu)建工具 CMake 來構(gòu)建項(xiàng)目工程后,再用VC++編譯dcmtk工程,并生成一些靜態(tài)連接庫和exe文件,在VC++下開發(fā)需要使用的靜態(tài)連接庫和頭文件分別都復(fù)制dcmtk_lib和dcmtk_include中以便引用。
3.2 將協(xié)商涉及的消息用類進(jìn)行封裝
定義了三種用來接收消息、發(fā)送消息和讀取消息的長(zhǎng)度的公共方法(Read,Write 和 Size 函數(shù)),此外,對(duì)于每個(gè) DICOM 定義的消息,都將其定義成一個(gè)類,各個(gè)類的功能如下。
1)“關(guān)聯(lián)建立請(qǐng)求類”CAssociateRQ:請(qǐng)求關(guān)聯(lián)建立的協(xié)議數(shù)據(jù)單元(A-ASSOCIATE-RQ-PDU)的結(jié)構(gòu)和相關(guān)操作。
2)“關(guān)聯(lián)建立接受類”CAssociateAC:接受關(guān)聯(lián)建立的協(xié)議數(shù)據(jù)單元(A-ASSOCIATE-AC-PDU)的結(jié)構(gòu)和相關(guān)操作。
3)“關(guān)聯(lián)建立拒絕類”CAssociateRJ:拒絕關(guān)聯(lián)建立的協(xié)議數(shù)據(jù)單元(A-ASSOCIATE-RJ-PDU)的結(jié)構(gòu)和相關(guān)操作。
4)“關(guān)聯(lián)釋放請(qǐng)求類”CReleaseRQ:請(qǐng)求關(guān)聯(lián)釋放的協(xié)議數(shù)據(jù)單元(A-RELEASE-RQ-PDU)的結(jié)構(gòu)和相關(guān)操作。
5)“關(guān)聯(lián)釋放響應(yīng)類”CReleaseRP:響應(yīng)關(guān)聯(lián)釋放的協(xié)議數(shù)據(jù)單元(A-RELEASE-RQ-PDU)的結(jié)構(gòu)和相關(guān)操作。
6)“關(guān)聯(lián)結(jié)束類”CAbortRQ:在對(duì)方還沒有響應(yīng)的情況下,,強(qiáng)行關(guān)閉已建立的關(guān)聯(lián),,并結(jié)束下層的 TCP/IP 協(xié)議的 Socket 連接。
7) CBuffer 緩沖區(qū)類:是一個(gè)抽象基類,其、提供1進(jìn)1出兩個(gè)存儲(chǔ)緩沖區(qū),分別用于從外界(網(wǎng)絡(luò)或磁盤)讀入和向外界(網(wǎng)絡(luò)或磁盤)發(fā)送數(shù)據(jù)。
3.3 選擇 Socket 服務(wù)支持
DICOM 通信協(xié)議在 TCP/IP 協(xié)議之上,要使用 TCP/IP 提供的服務(wù)來完成其功能。在開發(fā)過程中,應(yīng)注意,雖然 MFC 提供了封裝好的 Socket 服務(wù)類 CSocket 和CAsyncSocket,但是可以選擇直接使用 Windows Socket API 函數(shù)來提供對(duì) DICOM通信的底層支持。這樣做是為了滿足兩方面的需求:一是使得可擴(kuò)展性更強(qiáng);二是為了滿足 DICOM 協(xié)議對(duì) TCP/IP 網(wǎng)絡(luò)功能的具體要求,如超時(shí)控制等。這比使用封裝好的 Socket 服務(wù)類靈活性更大。在 DICOM 通信中使用的 API 函數(shù)包括 open,accept,listen,recv,send,close,gethostbyname,getservbyname 等。
4 結(jié)束語
醫(yī)學(xué)數(shù)字圖像通訊作為一門新興的綜合應(yīng)用學(xué)科發(fā)展到今天,大大推動(dòng)了醫(yī)學(xué)數(shù)字圖像的存儲(chǔ)、共享、通信以及遠(yuǎn)程診斷的發(fā)展。遠(yuǎn)程醫(yī)學(xué)圖像傳輸系統(tǒng)投入使用后,醫(yī)務(wù)人員能在第一時(shí)間方便、迅捷地查閱病人的影像及診斷報(bào)告,使醫(yī)生突破膠片的局限,及時(shí)對(duì)病人的影像進(jìn)行全方位的處理和觀察,以便得出更準(zhǔn)確的診斷,也優(yōu)化了病人就診流程,極大地縮短了病人就診時(shí)間。此外,遠(yuǎn)程醫(yī)學(xué)圖像傳輸系統(tǒng)還能通過Internet傳送數(shù)字化影像,實(shí)現(xiàn)遠(yuǎn)程影像會(huì)診。
參考文獻(xiàn):
[1] 包志華,湯樂民.醫(yī)學(xué)圖像處理、存檔與通信[M].北京:科學(xué)出版社,2013.
[2] 田捷.醫(yī)學(xué)成像與醫(yī)學(xué)圖像處理教程[M].北京:清華大學(xué)出版社,2013.
[3] 周振環(huán),伍云智,趙明.醫(yī)學(xué)圖像編程技術(shù)[M].北京:電子工業(yè)出版社,2010.
[4] 羅述謙,周果宏.醫(yī)學(xué)圖像處理與分析[M].2版.北京:科學(xué)出版社,2010.