iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0
Software Development

三十天轉職成「醫療軟體工程師」系列 第 18 篇

Day17 - 醫療影像的傳輸標準 (DICOM) 簡介

  • 分享至 

  • xImage
  •  

前面兩篇文章中,我們介紹了 FHIR 用於交換臨床資料與脈絡。今天介紹如何傳遞醫療影像。
等等,在開始之前,你可能會想說:「欸?FHIR 沒有辦法傳遞醫療影像嗎?」
這邊簡單說明一下,FHIR 是專注於跨系統臨床文字與結構化數據交換的標準,例如病歷、診斷、藥物跟生理跡象等等,雖然 FHIR 可以描述影像、引用影像,但不適合承載大量像素資料。

它主要是使用輕量化的 JSON、XML 格式,以模組化來作為它的資料類別。在傳遞方式上,FHIR 定義資料格式與 API 互動;認證、授權方式依實作和安全框架而定,OAuth 2.0 並非所有 FHIR 傳輸的固定要求。

但是醫療場景當中經常會用到的影像資料,例如電腦斷層、核磁共振、X 光、超音波等等高解析度的數位病理切片。傳統單純的文字,或者是傳統的 JPEG、PNG 圖片,缺少完整脈絡(病人、檢查、位置、單位),以及位元深度和灰階資訊。

所以接下來要介紹的是 DICOM 醫療影像格式。

DICOM 簡介

醫療數位影像與傳輸標準(DICOM,Digital Imaging and Communications in Medicine),它是由美國電氣製造商協會(NEMA)與美國放射學會(ACR)於 1980 年代共同制定,它專注於醫療影像的拍攝、儲存、傳送,定義了資料模型、資料格式以及網路通訊協定,

資料型態

與一般的影像不太一樣:它是依物件類型包含影像或其他資料,以及相關中繼資料;不是每個 DICOM Instance 都是像素矩陣。

資料模型

DICOM 常用 Patient → Study → Series → Instance 階層組織影像資料:

  • Patient(病人):接受檢查的人。
  • Study(檢查):一次影像檢查的資料集合,具有唯一的 StudyInstanceUID。它不等同整次就醫;一次就醫可能包含多個 Study。
  • Series(序列):Study 中的一組相關影像或資料物件,具有唯一的 SeriesInstanceUID。不同拍攝角度或掃描設定可能形成不同 Series,但不只依這兩個條件決定。
  • Instance(實例):一個 DICOM 物件,具有唯一的 SOPInstanceUID。它可能是單張影像、多影格影像,也可能是報告或波形等其他物件,不一定是二維切片。

資料結構解析

一個典型的 DICOM 檔案(.dcm)由兩大核心元素組成:

  1. Header(中繼資料 / Metadata):

    • 採用 Tag 結構 (由 (Group, Element) 兩組十六進位碼組成,例如 (0010,0010) 代表 Patient Name,(0008,0060) 代表 Modality 檢查儀器類別)。
    • 包含病患身分(Name, ID)、檢查資訊(Study Date, Modality)、儀器參數(KVP, Exposure)、影像幾何空間資訊(Pixel Spacing, Slice Thickness, Image Position/Orientation)等。
  2. Pixel Data(影像像素資料):

    • 原始的醫療像素陣列(例如 CT 影像通常以 12-bit 或 16-bit 像素值儲存灰階資訊。這些儲存值不一定直接等於 Hounsfield Unit(HU);系統會依 DICOM 中的轉換資訊換算,再配合窗位與窗寬呈現不同組織的對比。此表示方式保留較多影像細節,與一般圖片常見的 8-bit RGB 顯示方式不同)。
    • 支援無損/有損壓縮(Transfer Syntax,如 JPEG 2000, JPEG Lossless)。

DICOM JSON Model 範例(部分欄位)

一個 DICOM 範例如下:

{
  "00080016": {
    "vr": "UI",
    "Value": ["1.2.840.10008.5.1.4.1.1.2"]
  },
  "00080018": {
    "vr": "UI",
    "Value": ["2.25.1000001"]
  },
  "00080060": {
    "vr": "CS",
    "Value": ["CT"]
  },
  "00100010": {
    "vr": "PN",
    "Value": [
      {
        "Alphabetic": "SAMPLE^PATIENT"
      }
    ]
  },
  "00100020": {
    "vr": "LO",
    "Value": ["PATIENT-001"]
  },
  "0020000D": {
    "vr": "UI",
    "Value": ["2.25.2000001"]
  },
  "0020000E": {
    "vr": "UI",
    "Value": ["2.25.3000001"]
  },
  "00200013": {
    "vr": "IS",
    "Value": [1]
  },
  "00200032": {
    "vr": "DS",
    "Value": [0, 0, 0]
  }
}
Tag 意義
00080016 SOP Class UID:此物件類型為 CT Image Storage
00080018 SOP Instance UID:此影像物件的唯一識別碼
00100010、00100020 病人姓名與識別碼
0020000D Study Instance UID
0020000E Series Instance UID
00200013 Series 內的影像編號
00200032 影像位置
註:同一個 Study 可包含多個 Series;同一個 Series 可包含多個 Instance。多張 CT 切片通常各自有不同的 SOPInstanceUID,但共用相同 Study 與 Series UID。此處影像像素資料省略。

為什麼不能直接使用圖片?

JPEG 或 PNG 可以呈現影像,但單獨一張圖片通常不足以保留醫療系統需要的完整脈絡,例如病人、檢查、序列、設備與影像位置等資訊。這些資訊有些存在 DICOM 中繼資料,有些則透過 Study、Series、Instance 之間的關係連結。

以電腦斷層(CT)為例,一次檢查通常會產生一組影像切片。系統需要知道哪些影像屬於同一個 Study 和 Series,以及每張影像在影像堆疊中的位置,才能正確瀏覽與重建影像。若只匯出單張 JPEG/PNG,這些關係和部分中繼資料可能無法一併保留。

小結

今天簡單介紹了 DICOM 的格式,我們知道在醫療領域當中,醫療資訊不是只能透過 FHIR 來記錄,醫療影像可以透過 DICOM 來進行儲存、傳遞,搭配兩者來使用更能將醫療資訊完整保留。


上一篇
Day16 - 醫療資訊交換標準-FHIR(下)
下一篇
Day18 - 醫療軟體架構與安全邊界
系列文
三十天轉職成「醫療軟體工程師」 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言