修復 Dicom 影像 Delimitation 錯誤

去年換工作前從之前的醫院那備份了不少教學用的 dicom 影像檔,想說可以拿來教學用,但不知是什麼原因,格式是錯的,不論是 OsiriX/Horos, dcmtk 通通無法正確 parse,無法 import 進 PACS,一直無法解決,但比較奇怪的是,有一些檔案還是正常的,殘餘可用的教學檔就這麼撐了一年多。

因為實在是受不了缺東缺西的影像,趁著最近有 upgrade Orthanc,再來試試看會不會新版 PACS 有做一些錯誤容許度的調整,但可惜的還是不行。

Dcmdump 出來的錯誤訊息是

E: DcmItem: Parse error in sequence item, found (fffe,e0dd) instead of item delimiter (fffe,e00d)

看起來問題是出在 Item Delimitation Item (FFFE,E00D) 錯用成 Sequence Delimitation Item (FFFE,E0DD),而 dcmtk 有提供一個 option (+rd)

handling of wrong delimitation items:

  -rd  --use-delim-items
use delimitation items from dataset (default)

  +rd  --replace-wrong-delim
replace wrong sequence/item delimitation items

可以把錯的 delimiter 修掉, 所以用 dcmconv 把整批 dicom 檔全部轉完就可以正常 parse 和匯入 Orthanc 了。(撒花)

Google 資料的過程中發現有人反應過類似的問題,但它的錯誤訊息是

DcmSequenceOfItems: Parse error in sequence, found (fffe,e000) instead of a sequence delimiter

另外有趣的點是他們也是 GE 的機器出問題(前醫院用的也是 GE),不過我不覺得和 GE 有很大的關係就是了。前醫院用的是自架的 PACS,可能是 Dcm4chee,然後用的是自己開發的 dicom viewer,可能沒有在 validate, 或是跳過這一部份,或是曾經為了某種原因 hack 過用了 workaround,總之,從 dicom viewer export 出來的檔案大致上沒問題(但要我一份一份 export 效率實在太低不可行),而直接用 wado 從 PACS 上拉下來的檔案,或是 cache 在 viewer 裡的檔案(兩個來源應該相同)就是有問題的。

先前也提過這個很奇怪的狀況,不是全部檔案都有問題,但如果一組影像缺東缺西也是沒用(很多都是只有每個 series 的第一張是正確的),真不知道前醫院當初到底對 PACS 做了什麼。

大批教學檔匯入後,我中午的教學課程就有更多材料可用了,好感動啊!解決了一個困擾我一年多的問題,興奮到覺得昨天值班的疲勞都一掃而空了。