HIS、PACS、AE Title 到底是什麼?醫院系統整合的名詞入門
本篇是「ECG 心電圖小常識」系列的第 4 / 4 篇。你可以從系列總覽開始閱讀,也可以直接接著看本文。
名詞小教室:HIS、PACS、AE Title 一句話版
做醫院的系統整合,往來信件裡出現頻率最高的就是這三個縮寫:
- HIS —— 醫院的大腦,管文字(誰、什麼時候、做什麼、結果如何)
- PACS —— 影像倉庫,管圖(檢查做出來的東西存這裡)
- AE Title —— 機器在 DICOM 世界裡的名字
HIS 管文字、PACS 管圖 —— 醫院系統的第一條分界線
HIS(Hospital Information System,醫院資訊系統) 是醫院的大腦。誰掛號、住哪一床、今天要做什麼檢查、報告寫了什麼——全部在這裡。它管的是文字與流程。
PACS(Picture Archiving and Communication System,影像儲存與傳輸系統) 是影像倉庫。X 光、超音波、CT、心電圖,所有「檢查做出來的東西」存在這裡,醫師要看的時候再調出來。它管的是圖。
規模小一點、只服務單一科別或單一院區的,習慣叫 miniPACS。功能上是同一件事,只是倉庫小一點。
搞清楚這條線,你才知道自己的系統要接哪一邊。以心電圖設備來說,答案通常是:從 HIS 那邊拿到「要幫誰做檢查」,把做完的圖送進 PACS。兩邊都要接,但接法完全不同。
AE Title 不是設定值,是機器在 DICOM 世界的名字
醫療影像設備之間講的共同語言叫 DICOM。很多工程師第一次接觸會以為它是一種檔案格式,像 JPEG 那樣——這是最常見的誤會。DICOM 同時是一套網路通訊協定,規定兩台機器怎麼建立連線、怎麼問問題、怎麼傳檔案。
既然是機器對機器講話,就要有個叫法。這個叫法就是 AE Title(Application Entity Title,應用實體名稱)。
它的規則很樸素:
- 最多 16 個字元
- 大小寫有差(
ECG-SERVER和ecg-server是兩個不同的東西) - 慣例上用大寫英數字加連字號,看起來像
ECG-SERVER、HOSP-IMGSRV
重點是它的性質:AE Title 是身分,不是設定。PACS 那端有一份名單,上面記著「我允許哪些名字、從哪些 IP 連進來」。名字不在名單上,連線在握手階段就被拒絕,你連錯誤訊息都不一定看得到。
所以廠商問你的 AE Title,本質上是在問:我要把你加進白名單,你叫什麼名字?
三個欄位合起來才是一個地址:住哪、哪扇門、叫什麼
新手最容易混的是 AE Title、IP、Port 這三個到底差在哪。用寄包裹想最快:
三個都對,門才會開。少一個、錯一個,連線都不會成立。
順帶一提,104 是 DICOM 的公定 port,11112 是另一個常見的註冊 port。看到這兩個數字,你大概就知道那台是什麼東西。
MWL:工單不是我們產生的,是醫院「發下來」的
還有一個名詞會在同一封信裡出現:MWL(Modality Worklist,檢查工作清單)。
它就是今天的待辦清單。醫師在 HIS 開了一張檢查單,這張單會流到 Worklist 服務上;設備(我們的平板、超音波機、X 光機)去問一句「今天有我的單嗎?」,Worklist 就回一份名單:誰、幾號單、做什麼檢查。
這解決了醫院最怕的事——手打病歷號會錯。護理師不用輸入病人資料,直接從清單上點,資料就跟著單子走。
搭配這幾個動作看,整套 DICOM 就清楚了:
- C-ECHO —— 敲門喊一聲「喂,聽得到嗎?」(只確認連線,不傳資料)
- C-FIND —— 查詢,例如去 Worklist 問今天的單
- C-STORE —— 送檔案,把做完的檢查推進 PACS
一張心電圖的旅程:共五個步驟
把上面全部串起來,一張心電圖從病人身上到醫師螢幕,是這樣走的(IP 與名稱都改成示意值):
| # | 發生什麼 | 誰跟誰講話 |
|---|---|---|
| 1 | 醫師在 HIS 開檢查單 | HIS 內部 |
| 2 | 設備問「今天有誰要做?」 | 我們 → Worklist HOSP-WKSRV / 10.0.0.20 : 3320(C-FIND) |
| 3 | 護理師錄心電圖,資料回主機 | 平板 → 我們的主機 |
| 4 | 主機把 DICOM 推進倉庫 | ECG-SERVER / 10.0.0.10 : 8090 → HOSP-IMGSRV / 10.0.0.20 : 104(C-STORE) |
| 5 | 醫師判讀完,文字報告回病歷 | → HIS |
看懂這張表,開頭那封信該怎麼回就很明確了:廠商要的是第 4 步裡「送出去那一端」的身分,也就是我們主機的 AE Title、IP、Port 三件組。
實務上還要多講一句:心電圖送進 PACS 的格式是 DICOM Waveform(波形),不是一般的影像 DICOM。很多 miniPACS 只收特定的 SOP Class,格式不對會被拒收——這件事一定要在串接前講清楚,不然雙方都會在「我明明送了、我明明沒收到」之間耗掉一個下午。想深入這一段的話,我在《DICOM 深入解析——不只是影像格式》寫過更細的踩坑;而心電圖 DICOM 存出來要用什麼打得開,則在《心電圖存成 DICOM 之後,要用什麼打開?》。
想知道對方到底通不通?echoscu 一行指令
講完名詞,給一個能立刻動手的東西。要驗證「白名單設好了沒」,不需要真的送一張心電圖過去——用 C-ECHO 敲門就好。
最輕的工具是 pynetdicom(Python 實作的 DICOM 網路協定,pydicom 團隊維護)。
3 分鐘快速上手
# 1. 安裝
pip install pynetdicom
# 2. 敲門:對 10.0.0.20 的 104 埠打招呼
python -m pynetdicom echoscu 10.0.0.20 104 -aet ECG-SERVER -aec HOSP-IMGSRV -v
兩個參數是整件事的重點,也剛好對應這篇的主題:
-aet= calling AE title,我叫什麼(我方)-aec= called AE title,我要找誰(對方)
怎麼判讀結果:
- 沒有錯誤、回
Association Accepted→ 通了,白名單有你 Association Rejected→ 網路是通的,但名字或來源 IP 沒被接受,回頭找對方核對白名單- 連線 timeout → 還沒到 DICOM 這層,是防火牆或路由的問題
能分清楚後面兩種,你就不會把一個防火牆問題誤報成「對方 PACS 壞了」——這個誤判在現場非常常見。
有趣發現
上面那幾張圖,是我為了回信順手畫的。畫到一半卡住了——因為我發現自己說不清楚 MWL 到底算誰的。是 HIS 的一部分?還是 PACS 的功能?
去查了才確定:它是獨立的 DICOM 服務,資料源頭來自 HIS,但講的是 DICOM 的語言,所以通常跟 PACS 擺在一起。我在那之前的理解一直是糊的,只是因為沒人問我,所以我也沒發現自己不懂。
能不能畫出來,是理解程度最誠實的測驗。 名詞可以背,但要把箭頭畫在哪一格,你騙不了自己。(難怪架構師面試很愛考圖解系統設計)