實驗室常常會有人事更動,而實驗室所做的專案與 DICOM 息息相關,剛進入的夥伴難免會有一段陣痛期,所以筆者想在這邊留下一點對 DICOM 以及 DICOMweb 的小筆記
DICOM 階層式架構
- DICOM 擁有 4 層架構,依序下來分別是
Patient
→Study
→Series
→Instance
,這樣子的架構非常重要,後續在查詢以及調閱影像時都是使用這樣的架構來進行傳輸- Patient: 字面上的意思,就是單個病患,也許就是你
- Study: 筆者稱之為病例,例如:出了車禍,這就算是一個病例
- Series: 筆者稱之為系列(部位),出了車禍,可能會需要進行腦部造影、胸腔CT造影等。一個病例中的每一次造影就算是一個 Series
- Instance: 筆者稱之為單張影像,在 Series 當中,會進行造影,造影出來都會有很多影像,而每一張影像就是 Instance

DICOM Tags
DICOM 主要是使用 Hex 記憶體定義它的欄位以及數值,所以才會看到上一節的 Patient ID (0010, 0020)
- Tag 通常都是由 (gggg, eeee) 組成,其中 gggg 為群組代號(Group Number),eeee 為元素在群組中的代號 (Element Number)
- 傳輸回來的資料都會是使用 DICOM Tags 當作欄位
- 大家一定不會記得 DICOM Tags 以及他的真實代表的意思,所以都會用一些網站做輔助
- DICOM Standard Browser: 非常好用的網站,還對每個 IOD (Information Object Definition)
- Registry of DICOM Data Elements: DICOM 官方的說明文件
小心資料過多,開啟時可能發生崩潰情況
DICOM Json Model
- 通常筆者都是使用 DICOM Json 來作為返回資料的格式 (JSON 比較好看點)
- 範例如下:
[
{
"0020000D": {
"vr": "UI",
"Value": [ "1.2.392.200036.9116.2.2.2.1762893313.1029997326.945873" ]
}
}
{
"0020000D" : {
"vr": "UI",
"Value": [ "1.2.392.200036.9116.2.2.2.2162893313.1029997326.945876" ]
}
}
]
- 其中
0020000D
是 DICOM Tag vr
代表的是這個欄位的資料型態Value
代表的是數值
DICOMweb 傳輸-查詢 (QIDO-RS)
- QIDO-RS 全名為 Query based on ID for DICOM Object ,讓您可以透過 web API 去 Server 查詢特定的影像「資訊」
提供的方法(web API):
查詢參數
- QIDO-RS 也提供了幾項查詢參數讓您使用
DICOMweb 傳輸-調閱 (WADO-RS)
⚠️
WADO-RS 可以讓您調閱多張影像,但注意,WADO-RS 在回傳資料時會使用 multipart/related 的格式回傳資料,您必須使用一些工具才能將影像解析出來 dicomweb-client
- WADO-RS 全名為 Web Access to DICOM Objects,讓您可以透過 web API 去 Server 調閱特定的影像
提供的方法 (web API)
參數
- WADO-RS 提供了一些參數對影像進行操作,因筆者不常用這些參數所以這邊僅搬運參數過來
DICOMweb 傳輸-調閱 (WADO-URI)
- WADO-URI 與 WADO-RS 最大的差別在於,他可以直接取回單張的 DICOM (application) 或 JPEG (image/jpeg),不用額外解析回傳資料,使用上較方便
但代價就是取多張影像時,需要送出較多的 request
提供的方法 (web API)
DICOMweb 傳輸-上傳 (STOW-RS)
- 全名 STore Over the Web,讓您可以透過 Web API 上傳影像,但可惜的是它並不是用一般常見的方式 (multipart/form-data)上傳,而是使用 multipart/related
📢
由於 Postman 不支持 POST multipart/related,所以您需要使用程式語言或者 cURL 來上傳 DICOM 影像
提供的方法 (web API)
Example
curl --location --request POST "{Service URL}/v{version}/studies"
--header "Accept: application/dicom+json"
--header "Content-Type: multipart/related; type=\"application/dicom\""
--header "Authorization: Bearer {token value}"
--form "file1=@{path-to-dicoms}/red-triangle.dcm;type=application/dicom"
--trace-ascii "trace.txt"
參考資料
- 醫療數位影像傳輸協定(DICOM,Digital Imaging and Communications in
- Search (QIDO-RS)
- Retrieve (WADO-RS)
- F.2 DICOM JSON Model
- https://learn.microsoft.com/zh-tw/azure/healthcare-apis/dicom/dicomweb-standard-apis-with-dicom-services#postman (有講到 Postman 不適用 multipart)
- 上傳 STOW (DICOM 實例)