海量離線醫學影像整體系統設計探討
時間:2022-09-26 09:56:50
導語:海量離線醫學影像整體系統設計探討一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
【摘要】為將海量離線醫學影像數據一次性恢復到近線狀態,使用LinuxShell腳本完成磁帶調度、數據拷貝,并使用開源庫MDCM解析轉存醫學影像文件。在不依賴于原有離線歸檔還原系統數據庫情況下,實現了離線醫學影像數據自動化、高效率的恢復,滿足了日常病歷回顧的影像數據調閱和科研對海量數據訪問需求。
【關鍵詞】DICOM;分級存儲;磁帶庫
醫學影像歸檔與傳輸系統(PictureArchivingandCommunicationSystems,PACS)是醫院信息系統重要組成部分,也是現代數字化醫院的基礎系統之一。歸檔和傳輸各種醫學影像設備所產生的海量數據是PACS的核心功能。大型醫院PACS多采用“在線”“近線”“離線”策略的分級存儲方式[1]。在大數據、人工智能研究如火如荼的今天,數據具有更大的利用價值。離線存儲的醫學影像數據調取困難,已成為數據利用的障礙。因此需要將離線存儲影像數據一次性恢復到在線狀態。
1需求分析
1.1某醫院醫學影像存儲現狀
某大型三甲醫院于2006年建成包括放射科、超聲科、病理科、內鏡室、介入室等在內的全院PACS。早期受限于磁盤陣列單位存儲空間價格高昂,采用了成本低廉的分級存儲方案。“近線”存儲是定期將超過在線數據保存時間的影像數據轉存到性能較低的磁盤陣列中。“離線”存儲使用的是歸檔備份軟件操作磁帶庫將“近線”存儲的影像數據轉存到LTO3規格的磁帶中。當磁帶庫中的磁帶寫滿數據后,將存儲較舊數據的磁帶從磁帶庫退出,人工放入磁帶保管柜中,再加入新磁帶。2016年后,由于磁盤陣列單位存儲空間價格下降,分級存儲策略已改為“在線”和“近線”兩級存儲方式,以高性能閃存盤陣列存儲“在線”數據,以磁盤陣列存儲“近線”數據,不再將數據離線存儲到磁帶中。目前總計有255盤磁帶存儲“離線”數據,這部分數據的調閱仍然需要采用單個檢查影像恢復的作業流程。
1.2需要解決的問題
由于磁帶只能順序讀取,而磁帶庫的驅動器個數又很有限,機械臂更換磁帶效率低等原因,“離線”影像數據的訪問速度慢、效率低、人工操作繁瑣[2]。實際調取1個患者的影像數據需約數分鐘至十幾分鐘的時間。如遇存放數據的磁帶存放于保管柜中,還需要人工將磁帶放入磁帶庫中,則花費時間將更長。已完全不能滿足醫學影像大數據和人工智能等科研對海量影像數據的調閱需求[3]。磁盤陣列相較于磁帶庫具有讀寫性能好,數據實時可訪問的優勢。隨著磁盤陣列單位存儲空間價格下降,從硬件方面考慮將離線影像數據遷移到低性能的磁盤陣列存儲,已具有較高的性價比。
2醫學影像與DICOM標準
醫學數字成像及通信協議(DigitalImagingandCommunicationsinMedicine,DICOM)是用于醫學數字影像存檔與通信的國際標準。DICOM文件是指按照DICOM標準而存儲的醫學影像文件,一般由一個DICOM文件頭和一個DICOM數據集合組成。DICOM數據集合由DICOM數據元(dataElement)按照指定的順序依次排列組成[4]。數據元主要由4個部分組成:TAG號、值、值長度和值域[5]。DICOM數據集合存儲了患者信息、檢查信息、序列信息、圖像信息、設備相關信息、圖像像素等內容。見表1。
3系統功能設計
離線醫學影像整體恢復系統由磁帶拷貝、DICOM轉存和路徑更新3個模塊組成。其網絡拓撲如圖1所示。磁帶庫和磁帶鏡像存儲通過光纖與磁帶拷貝服務器連接,近線存儲通過光纖連接到DICOM轉存服務器,分別形成兩個SAN存儲網絡。磁帶拷貝服務器、DICOM轉存服務器和中間數據庫通過千兆以太網連接到PACS局域網中。DICOM轉存服務器使用NFS協議與磁帶拷貝服務器通訊,以訪問磁帶鏡像存儲中的數據。
3.1磁帶拷貝
包括磁帶調度、磁帶讀取和文件保存3個功能。磁帶的調度和讀取需要通過磁帶庫完成。磁帶庫由多個驅動器(Driver)、多個槽(Slot)、機械手臂(Robot)組成,并可由機械手臂抓取磁帶在驅動器和槽之間調度,從而自動實現磁帶的拆卸和裝填。為節約成本,以原有的磁帶庫作為磁帶讀取設備,該磁帶庫結構見圖2。離線影像數據存在于255盤磁帶介質中,而使用的磁帶庫僅有1個驅動器和38個槽,可一次放入38盤磁帶,通過腳本控制磁帶庫機械臂實現磁帶由槽到驅動器的自動裝載和由驅動器到槽的自動拆卸。Linux操作系統對磁帶庫支持很好,且有許多控制命令,可以控制機械臂和驅動器完成磁帶調度和數據讀取作業,因此磁帶拷貝模塊以Linuxshell編碼實現。使用Linux操作系統中的dd命令可將磁帶數據拷貝至磁帶鏡像存儲。dd是Linux/UNIX下的一個命令,作用是用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換。例如:ddif=/dev/nst0of=/data/VOL446/vol446_1.datibs=1024k語句表示從磁帶驅動器st0中以1024k大小的塊,拷貝一個文件到data/VOL446/vol446_1.dat文件。nst0前的n表示讀取數據后不回卷磁帶,不帶n表示讀取數據后回卷磁帶到開始位置。循環使用dd命令順序讀取磁帶上的所有文件,并將文件保存到磁盤中,當保存的文件大小為0,也就是讀取的字節數為0時,表示整盤磁帶數據已拷貝完成,退出操作。
3.2文件轉存
通過解析整理DICOM文件、檢查和序列描述文件,將其存儲在最終的磁盤陣列中,并將每個序列的DICOM文件存儲路徑寫入中間數據庫,完成DICOM轉存。為充分發揮磁盤陣列I/O吞吐率,減少時間花費,DICOM轉存模塊采用多線程作業方式。要完成DICOM文件轉存,最重要的是要清楚了解離線備份文件結構。見圖3。使用二進制查看器對磁帶鏡像存儲中的文件進行格式分析。將一次歸檔備份操作寫入磁帶的數據稱為一個備份集,則每盤磁帶約有3000多個備份集。每個備份集中有3個文件,分別為備份集開始標記文件、以Tar格式打包的數據文件(Tar文件)和備份集結束標記文件。備份集開始標記文件中記錄Tar文件包中的文件名。第一個備份集開始標記文件在文件最前面包含磁帶開始標記,記錄歸檔備份軟件名稱、版本號和磁帶的編號。Tar文件中包括若干對文件,每對文件分別有一個擴展名為.xml和.dat的文件,兩個文件的文件主名相同。擴展名為.xml文件記錄備份時的信息,擴展名為.dat的文件(以下簡稱“dat文件”)分別為DICOM格式的影像文件(以下簡稱“DICOM文件”)、文本格式的檢查描述文件(以下簡稱“Study文件”)和文本格式的序列描述文件(以下簡稱“Serie文件”)。Study文件和Serie文件中分別含有“stu”“ser”關鍵字。文件轉存就是將DICOM文件、Study文件和Serie文件按照PACS系統路徑規則保存到近線存儲中。3.3路徑更新為能使用原有PACS系統客戶端調閱影像,需要將轉存后的DICOM文件路徑更新到原PACS系統數據庫中。即將中間數據庫中的序列DICOM文件存儲路徑更新到原PACS數據庫中,并更新相應檢查影像記錄為“近線”狀態。
4功能實現
4.1磁帶調度
介質切換工具(MediaChangerTools)可以實現磁帶的調度。例如mtx-f/dev/sg0load10表示將1號槽位的磁帶裝入0號驅動器,其中sg0為磁帶庫機械臂在系統的標識號;mtx-f/dev/sg0unload10表示將0號驅動器的磁帶拆卸放回1號槽位。設置兩個命令行參數slot_begin和slot_end分別表示磁帶連續放置的最小槽編號和最大槽編號,腳本循環調用mtxload和mtxunload實現對slot_begin到slot_end槽磁帶的調度。
4.2磁帶讀取
磁帶裝載到驅動器后,使用dd命令讀取磁帶中的數據。磁帶中的第一個文件也就是第一個備份集開始標記文件中的磁帶開始標記字符串包含磁帶編號,為了便于查對在磁盤陣列存儲中創建以磁帶編號命名的文件目錄,用于存放整盤磁帶的數據。使用n=`ddif=/dev/st0bs=1024k`語句將第一個備份集的第一個文件也就是磁帶開始標記讀出賦值給變量n,再使用vol=${n:22:6}將n中的第22個字符開始的6個字符截取賦值給變量vol,即磁帶編號。磁帶編號以VOL開頭,后面接3位數數字,比如VOL446代表第446號磁帶。磁帶庫驅動器標識號使用的是/dev/st0圖2磁帶庫結構而不是/dev/nst0,是因為使用dd命令讀取磁帶的第一個文件后,需要讓驅動器將磁帶回卷到開頭,以便下一步使用dd命令從頭將文件拷貝到以磁帶編號命名的目錄中。磁帶回卷后,循環拷貝每個備份集的文件到磁盤的對應目錄。每次使用dd命令拷貝文件后需要判斷生成的文件大小是否為0,如是表示已讀到磁帶數據結尾則退出循環。使用mt-f/dev/st0offline回卷磁帶到開始位置,再使用mtxunload將磁盤放回原來槽位置,然后使用mtxload將下一盤磁帶加載到驅動器繼續拷貝數據。
4.3文件轉存
利用.Net平臺下SharpZipLib組件解包磁帶鏡像存儲上的Tar文件。使用TarInputStreams=newTarInputStream(System.IO.File.OpenRead(“Tar文件名”))來初始化一個TarInputStream對象,TarEntrytheEntry=s.GetNextEntry()語句順序獲取Tar文件中包含的文件,跳過擴展名為.xml的備份信息文件。使用s.CopyEntryContents(ms)方法可將Tar文件中當前文件的內容拷貝到一個MemoryStream對象中,判斷數據文件的類型以便采取不同的處理方法。可根據128字節的文件導言后緊跟4字節的DICM前綴(即特征字符串DICM)判斷數據文件是否為DICOM文件,從文件內容是否包含“stu”或“ser”關鍵字判斷Study描述文件和Serie描述文件。對于DICOM文件,使用mDcm開源庫DicomFile對象的Open(ms)方法加載到內存中。為了便于檢索數量眾多的DICOM文件,需要將其分多層級目錄存儲。設定DICOM文件在目標存儲中的存儲目錄結構從上到下依次為:檢查日期的年份加月份、患者ID、檢查ID、序列實例號。使用DicomFile對象的Save方法將DICOM文件保存到對應的序列實例號目錄下,文件名為圖像UID。將Study文件和Serie文件分別拷貝到對應的檢查ID目錄和序列實例號目錄下。患者ID、檢查ID、檢查日期、序列實例號、圖像UID等數據元的值可通過DicomFile對象的Dataset.Get<string>(newDicomTag(“組號”“元素號”))方法獲取[6]。同時將檢查信息、序列信息存儲到中間數據庫。
5結論
通過對某醫院PACS系統“離線”文件數據格式的仔細分析,進行了科學合理的架構設計,以及關鍵技術的選用,從而構建了醫學影像離線備份數據批量恢復系統,實現了離線影像數據自動化、高效率的還原。在半個月內完成約100TB“離線”影像數據還原到“近線”狀態。滿足了病歷追蹤、影像對比、醫學影像AI等數據訪問需求。該系統不依賴于原歸檔數據庫,通過獲取DICOM文件特定數據元信息生成DICOM文件存儲目錄,具有廣泛的借鑒意義。
參考文獻
[1]蔡雨蒙,冷鍇,單紅偉,等.大型醫院影像分級存儲架構下歸檔的策略及應用[J].中國數字醫學,2017,12(1):48-51.
[2]劉賀.PACS存儲歸檔備份管理系統的設計與實現[D].沈陽:東北大學,2013:32-33.
[3]余紹德.卷積神經網絡和遷移學習在癌癥影像分析中的研究[D].深圳:中國科學院深圳先進技術研究院,2018:1-2.
[4]丁磊.基于DICOM標準的醫學文件研究與處理[D].成都:電子科技大學,2019:12-14.
[5]龍華飛,唐月華,陳泓伶.PACS系統中醫學圖像格式解析[J].中國數字醫學,2014,9(3):29-31.
[6]紀永章,楊輝,薛淞.dcm4che在醫療大數據平臺中的應用[J].中國數字醫學,2016,11(10):15-17.
作者:米文軍 徐川
- 上一篇:大型醫學影像設備風險管理策略
- 下一篇:口腔醫學協同育人工作模式分析