【转】dicom通讯的工作方式及dicom标准简介!!
轉(zhuǎn)自:dicom通訊的工作方式及dicom標(biāo)準(zhǔn)簡介 - assassinx - 博客園
???? 本文主要講述dicom標(biāo)準(zhǔn)及dicom通訊的工作方式。dicom全稱醫(yī)學(xué)數(shù)字圖像與通訊 其實(shí)嘛就兩個(gè)方面 那就是“存儲(chǔ)”跟“通訊”。 文件數(shù)據(jù)組織方式? 網(wǎng)絡(luò)數(shù)據(jù)組織方式。文件數(shù)據(jù)組織方式就是解析靜態(tài)的dicom文件 在 《dicom格式文件解析器》一文中已經(jīng)闡述過了 就不再說了。網(wǎng)絡(luò)數(shù)據(jù)組織方式 簡而言之就是各種協(xié)議 命令控制 數(shù)據(jù)序列化。那么這一章中我們將會(huì)講他,但是進(jìn)行實(shí)際操作將在后面幾章。
又一篇詳盡的Dicom協(xié)議介紹:
http://blog.csdn.net/zssureqh/article/details/41016091
dicom標(biāo)準(zhǔn)簡介
dicom相關(guān)單詞整理
association??? ??? ? 關(guān)聯(lián)
acquire?? ??? ??? ? 影像獲取
window level?? ??? ? ? 窗位
RSNA?? ??? ??? ? ? 北美放射學(xué)會(huì)
vendor?? ??? ??? ? 供應(yīng)商
tag?? ??? ???????? 數(shù)據(jù)字典 即常說的Tag 以數(shù)據(jù)元素為單位
IOD ?? ??? ??? ? 信息對(duì)象定義 比如病人、 系統(tǒng) 都是IOD ,但是IOD只是他們的定義 并不特指某個(gè)實(shí)例
?? ??? ??? ? dicom使用UID 在網(wǎng)絡(luò)環(huán)境下標(biāo)識(shí)各種IOD對(duì)象
?? ??? ??? ? 1.2.840.10008.5.1.4.1.1.2 這個(gè)特定的UID其實(shí)是代表CT圖像存儲(chǔ)
service class ?? ??? ? 服務(wù)類 store query print c-echo
SOP ?? ??? ??? ? 服務(wù)對(duì)象對(duì) IOD跟服務(wù)類的結(jié)合? 表述傳輸?shù)倪@個(gè)數(shù)據(jù)對(duì)象需要對(duì)它進(jìn)行什么樣的處理
VR: ?? ??? ??? ? ? Value Representation 可選字段:依賴于傳輸語法的值類型??????? ?
modality?? ???????? 成像儀)????????????????? ?
LUT??????????????? ??? look up table
PDU?????????????? ??? 協(xié)議數(shù)據(jù)單元
modality?? ??? ?成像設(shè)備
VM?? ??? ??? ??? 值的多樣化
SCU/SCP?? ??? ??? ?(Service Class User/Service Class Provide)服務(wù)使用者跟服務(wù)提供者
HU 射線相對(duì)于水的衰減系數(shù)之比 稱之為CT值 單位為HU (hounsfield unit)
dicom是一個(gè)全球的通訊標(biāo)準(zhǔn)
他是在以下大大的共同努力下開發(fā)出來的:
ACR(美國放射學(xué)學(xué)院)
NEMA(美國電氣制造商協(xié)會(huì))
ESC(歐洲心臟病學(xué)會(huì))
ACC(美國心臟病學(xué)院)
SFR(法國興業(yè)法國放射科)
DRG(DeutschenR?ntgengesellschaft)
AAO(美國眼科學(xué)會(huì))
AAD(美國皮膚病學(xué)會(huì))
CAP(美國病理學(xué)院)
JIRA(Japaneese放射供應(yīng)商協(xié)會(huì))
COCIR(歐洲放射供應(yīng)商協(xié)會(huì))
...
dicom在93年十月被批準(zhǔn)
dicom文檔每年更新
DICOM 2003,是DICOM2001的兼容擴(kuò)展
+27項(xiàng)變更
+3項(xiàng)補(bǔ)充說明
全球工程文檔:
http://global.ihs.com
或
免費(fèi)網(wǎng)址:http://medical.nema.org/dicom.html
DICOM 3.0, DICOM 96, DICOM 98, DICOM 99, DICOM 2000,
DICOM 2001, DICOM 2003
只是文檔發(fā)布名稱而已
這對(duì)現(xiàn)有產(chǎn)品一致性并沒有直接影響
dicom包括:
影像管理 dicom網(wǎng)絡(luò)圖像傳輸 dicom網(wǎng)絡(luò)打印
網(wǎng)絡(luò)支持,例如。 TCP / IP協(xié)議
和。。。多媒體交換/歸檔
dicom的4個(gè)主要功能:
影像管理(其實(shí)就是指worklist)? 影像查詢檢索? 影像存儲(chǔ) 硬拷貝
在今天我們能用dicom做什么實(shí)質(zhì)性的東西?
。dicom能在大多數(shù)醫(yī)學(xué)成像系統(tǒng)之間跨平臺(tái)
。建立簡單易于實(shí)現(xiàn)的網(wǎng)絡(luò)
。提高生產(chǎn)效率
。建立未來PACS的必要步驟
dicom編碼 :以連續(xù)的dataElement的形式進(jìn)行編碼
message=data set
發(fā)送者->DataElement??? DataElement??? DataElement->接收者
每個(gè)element的結(jié)構(gòu)又如下:
Tag VR Value|?? ?Length|?? ?Value|?? ?Field
tag: 在dicom數(shù)據(jù)字典里的唯一tag定義
VR: Value Representation 可選字段:依賴于傳輸語法的值類型
dicom 標(biāo)準(zhǔn)由14部分組成
1簡介 introduction and overview
2一致性聲明 這個(gè)是廠商自己對(duì)外公開的純文本性的說明
3信息對(duì)象定義IOD 分為簡單型 復(fù)合型
4 服務(wù)類規(guī)范 service class specifications 就是對(duì)服務(wù)類的結(jié)構(gòu)進(jìn)行說明要實(shí)現(xiàn)那些接口 主要描述命令及其產(chǎn)生的結(jié)果
5數(shù)據(jù)結(jié)構(gòu)和編碼 怎樣對(duì)信息對(duì)象類和服務(wù)類進(jìn)行構(gòu)造和編碼
6數(shù)據(jù)字典 所謂的數(shù)據(jù)字典就是鍵值對(duì) 即屬性 一個(gè)IOD由多個(gè)屬性 也就是數(shù)據(jù)字典組成
7消息交換 MessageExchange 定義通訊所用到的服務(wù)和協(xié)議 一個(gè)典型的dicom消息由一個(gè)命令和緊隨其后的數(shù)據(jù)流(可選)組成 這里定義了各服務(wù)類所發(fā)送和接收的消息 并闡述了以下規(guī)則:
建立和終止關(guān)聯(lián)(association)的規(guī)則
控制交換網(wǎng)絡(luò)命令請求和響應(yīng)的規(guī)則
用于建造命令流數(shù)據(jù)和消息的編碼規(guī)則 其實(shí)就是說怎樣去組織這個(gè)用于完成特定功能的網(wǎng)絡(luò)流
服務(wù)類的命令和IOD數(shù)據(jù)都要經(jīng)過編碼成指定結(jié)構(gòu)的數(shù)據(jù)流才能形成消息 明白了嗎 客戶端請求打印的時(shí)候會(huì)說 我要打印這些東西:然后是數(shù)據(jù)服務(wù)命令跟IOD一起包裝成套接字?jǐn)?shù)據(jù)流
8消息交換的網(wǎng)絡(luò)通訊支持 大概是說消息交換的底層的東西吧
9消息交換的點(diǎn)對(duì)點(diǎn)通訊支持 這個(gè)是為了兼容 nema2.0 也就是dicom2.0而定義的東西 不用管
10數(shù)據(jù)媒體存儲(chǔ)和文件格式 說白了這個(gè)是描述那些后綴為.dcm的文件組織方式的
11媒體存儲(chǔ)策略 不用管
12數(shù)據(jù)交換的存儲(chǔ)功能和媒體格式 不用管
13點(diǎn)對(duì)點(diǎn)通訊支持的打印管理 不用管
14灰度顯示功能 grayscaleStandardDisplayFunction 這個(gè)有用規(guī)定了灰度級(jí)顯示設(shè)備的標(biāo)準(zhǔn) 顯示方式
2~9部分是重點(diǎn)內(nèi)容
一個(gè)設(shè)備或診斷系統(tǒng)為一個(gè)應(yīng)用實(shí)體
如果廠商的設(shè)備聲稱支持dicom 那么都應(yīng)該有一致性聲明,就是說你到底怎么個(gè)支持法。
一致性聲明包括:
1本系統(tǒng)支持的dicom信息對(duì)象
2本實(shí)體支持的服務(wù)類 不同的廠商可支持不同的服務(wù)類 。這體現(xiàn)了dicom是一個(gè)可擴(kuò)充的面向?qū)ο蟮臉?biāo)準(zhǔn)
3支持的協(xié)議
4所支持的表示上下文信息
5本實(shí)體的系統(tǒng)配置信息
用戶或系統(tǒng)設(shè)計(jì)人員通過對(duì)比兩種不同實(shí)現(xiàn)的一致性聲明 就能夠判斷出兩個(gè)系統(tǒng)是否可以進(jìn)行互操作和通訊
---------------------------------------------------------------------------
dicom通訊的工作方式:
說得那么復(fù)雜 其實(shí)主要就是soket的dimse通訊 而dimse是屬于應(yīng)用層的就跟http協(xié)議ftp協(xié)議一樣。 就是socket上的數(shù)據(jù)流而已 只不過這種特定的數(shù)據(jù)組織方式稱之為dimse 。就是說你要自己去實(shí)現(xiàn)一個(gè)類似http的協(xié)議。
dimse由命令集跟數(shù)據(jù)集組成
命令集指導(dǎo)目標(biāo)怎樣去操作某種東西,數(shù)據(jù)集就是指“待操作的東西”其實(shí)就是指廚師做菜的“材料”。 也不一定所有的都一定要有數(shù)據(jù)集。比如“我想獲取你的機(jī)器狀態(tài)”, 請求端就不需要數(shù)據(jù)集。有些需要數(shù)據(jù)集,比如“我給你個(gè)圖像 你把它拿去存儲(chǔ)”就需要數(shù)據(jù)集。命令集你可理解為通過各種各樣不同的命令一起完成了某件事情某個(gè)服務(wù)。數(shù)據(jù)集理解為IOD的實(shí)例化 比如病人姓名 病人年齡 等tag 一起組成了一個(gè)病人實(shí)例。dicom就是通過這種服務(wù)類跟IOD的組合在兩個(gè)應(yīng)用實(shí)體間正確的“傳達(dá)意圖”。從而兩個(gè)設(shè)備之間進(jìn)行互操作,這是dicom設(shè)備通訊和互操作的核心思想。
但是在這之前還得進(jìn)行一件事情 那就是表達(dá)上下文協(xié)商。
什么叫表達(dá)上下文
表達(dá) 想象一下人與人之間的交流,我們需要的是正確的傳達(dá)意圖 傳達(dá)內(nèi)容,計(jì)算機(jī)也是一樣,但是他們之間先得確定一個(gè)一致的方式。從來沒有聽說我跟朋友聊天還需要協(xié)商表達(dá)上下文哇 。我勒個(gè)去 在現(xiàn)實(shí)社會(huì)之中我們進(jìn)行交流可能從來沒有意識(shí)到他的存在 因?yàn)槲覀冊谶@個(gè)環(huán)境中生活的太久了 也沒有語言障礙 覺得理所當(dāng)然。表達(dá)上下文主要有兩個(gè)東西 absSyntax 跟transferSyntax absSyntax確定了將要做的事 transferSyntax確定了編碼規(guī)則。由此可見表達(dá)上下文是為了確定兩個(gè)東西 以讓目標(biāo)計(jì)算機(jī)能正確的“理解”本地主機(jī)所發(fā)出的數(shù)據(jù)。協(xié)商的內(nèi)容 兩個(gè)實(shí)體對(duì)同一個(gè)應(yīng)用上下文達(dá)成共識(shí)。
dicom 的協(xié)商過程到底在協(xié)商些什么? 一件事情的表達(dá) 讓雙方都能夠理解 分為詞匯跟語義 ,tag就是所謂的詞匯 那個(gè)tag表示什么命令 哪個(gè)tag表示病人姓名。 而數(shù)據(jù)組織方式就是語義 。通過這樣的協(xié)商讓雙方才能夠進(jìn)行正常的dicom通訊
達(dá)成共識(shí)后我們就需要建立連接
上文說了那么多 但是dimse的基礎(chǔ)數(shù)據(jù)單位是data-element 和pdu
所有數(shù)據(jù)都封裝在TCp協(xié)議數(shù)據(jù)單元(PDU)中進(jìn)行傳輸 該層負(fù)責(zé)TCP連接的建立 釋放以及TCP上PDU的傳送和接收 為Dicom上層協(xié)議提供TCP連接服務(wù)DICOM上層服務(wù)包括A-ASSOCLATE A-RELEASE A-ABORT P-DATA A-P-ABORT五種服務(wù)。這些上層服務(wù)允許對(duì)等的dicom應(yīng)用之間建立連接 傳送數(shù)據(jù) 中斷連接 DICOM應(yīng)用實(shí)體就是利用這些上層服務(wù)來完成消息傳送和信息交換。
PDU是一種數(shù)據(jù)結(jié)構(gòu) dataElement是一種數(shù)據(jù)結(jié)構(gòu)
pdu結(jié)構(gòu)總共7種 其中用于連接控制的就占了6種
A-Associate—RQ PDU
連接請求協(xié)議數(shù)據(jù)單元,用于關(guān)聯(lián)請求。
A-Associate.AC PDU
基于DICOM標(biāo)準(zhǔn)的醫(yī)學(xué)圖像通信過程的實(shí)現(xiàn)
連接接受協(xié)議數(shù)據(jù)單元,
A.Associate—RJ PDU
連接拒絕協(xié)議數(shù)據(jù)單元,
A-Release-RQ PDU
用于對(duì)關(guān)聯(lián)請求的應(yīng)答。
用于拒絕關(guān)聯(lián)請求。
連接釋放請求協(xié)議數(shù)據(jù)單元,
A-Release.RSP PDU
連接釋放響應(yīng)協(xié)議數(shù)據(jù)單元,
A.Abort PDU
傳輸內(nèi)容的pdu只有一種P.DATA.TF PDU,
當(dāng)通訊雙方建立了關(guān)聯(lián)之后,就可以使用P.DATA-TF所提供的傳輸服務(wù)來實(shí)現(xiàn)不同的通信功能了。在最新的DICOM3.0標(biāo)準(zhǔn)中,共列舉出11個(gè)通訊服務(wù)類。其中有5個(gè)針對(duì)復(fù)合IOD的操作,包括C.STORE、C.GET、C-MOVE、C.FIND和C-ECHO;AET唯一的標(biāo)示了網(wǎng)絡(luò)中指定系統(tǒng)上的服務(wù)或者應(yīng)用
所以整個(gè)通訊過程應(yīng)該是 應(yīng)用層也是就是程序段提出需求我需要做什么 比如存儲(chǔ)一幅CT圖像 ,然后根據(jù)各種參數(shù)及IOD 確定服務(wù)原語 dimse 服務(wù)類規(guī)范,根據(jù)各種參數(shù)確定dimse 。然后把這些東西序列化為pdu的方式通過tcp傳輸出去
從低到高分為五層:TCP Socket層、DICOM上層協(xié)議層、消息層、DIMSE(DICOM Message Exchange)層、SCU/SCP層。
TCP保證數(shù)據(jù)的可靠性傳輸。
dicom上層協(xié)議 ul upLayer(ULP)
其實(shí)就是指的那幾個(gè)associate-RQ RJ 啥的 用來建立關(guān)聯(lián)釋放連接
實(shí)現(xiàn)DICOM上層協(xié)議層,主要是在TCP Socket的基礎(chǔ)上,接收來自TCP網(wǎng)
絡(luò)的數(shù)據(jù)流,并按照DICOM協(xié)議單元關(guān)聯(lián)過程中的A.Associate.RQ/AC的數(shù)據(jù)結(jié)
構(gòu)分析數(shù)據(jù)流,然后根據(jù)分析的結(jié)果,返回相應(yīng)結(jié)構(gòu)的數(shù)據(jù)。其核心就是動(dòng)態(tài)接
收數(shù)據(jù),并實(shí)時(shí)對(duì)數(shù)據(jù)進(jìn)行分析,解析出A.Associate-RQ中的各種參數(shù),并做出
A.Associate.AC回應(yīng),完成關(guān)聯(lián)過程。關(guān)聯(lián)過程一旦完成,SCU與SCP之間就可
以實(shí)現(xiàn)DICOM中規(guī)定的其它服務(wù)類操作。
然后就是dimse層(連接建立后的信息交換單元) ,C-Find 那些屬于dimse 具體表現(xiàn)為 P.DATA.TF PDU。
dicom應(yīng)用實(shí)體在通信時(shí)的流程是:接收命令->確定角色->構(gòu)成SOP->編碼(生成消息數(shù)據(jù))->消息數(shù)據(jù)裝進(jìn)PDU->通過套接字socket將PDU發(fā)出。其中的編碼部分就是消息層的主要工作。生成的消息由命令集合和數(shù)據(jù)集合組成。意思是dimse層主要是對(duì)SOP進(jìn)行編碼? 而SOP由服務(wù)類跟IOD組成 比如用c-store存儲(chǔ)一幅圖像 貌似就是指的c-get? c-move c-find n-get那些東西?他們分為兩種操作operation 和返回狀態(tài)notification dicom3.0里面規(guī)定的dimse服務(wù)中只有n-event-report 是notification其他的全是operation
然后是scu/scp層 就是啥服務(wù)類啊 那些大的功能 比如我想實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)打印,我想實(shí)現(xiàn)一個(gè)圖形存儲(chǔ)
原語是個(gè)什么東東
C-STORE C-FIND那些是屬于DIMSE的 他包括各種亂七八糟的服務(wù)原語?
DICOM上層協(xié)議是指建立關(guān)聯(lián) associate 釋放連接 那些?
socket層 負(fù)責(zé)發(fā)送P-DATA PDU數(shù)據(jù)?DICOM最底層的代碼?
DIMSE消息服務(wù)層的主要功能就是將SCU/SCP層的通信需求轉(zhuǎn)換成DICOM中規(guī)定的各種消息服務(wù)原語,然后將消息服務(wù)原語傳給下一層
dicom網(wǎng)絡(luò)底層 是用PDu的形式進(jìn)行交換 pdu總共有7種類
其中有6種是專門用來建立釋放連接的 只有一種是用來信息及數(shù)據(jù)交換的
在以后的幾篇我們將手把手的分析一個(gè)dicom網(wǎng)絡(luò)打印的通訊過程 并實(shí)現(xiàn)dicomPrint_SCP
總結(jié)
以上是生活随笔為你收集整理的【转】dicom通讯的工作方式及dicom标准简介!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广发唯品会信用卡:全场95折优惠任你享
- 下一篇: pp助手苹果版_再见!PP助手iOS端即