摘 要: 在研究傳統(tǒng)的CS架構(gòu)的圖像存儲與傳輸系統(tǒng)軟件產(chǎn)品的基礎(chǔ)上,創(chuàng)造性地實現(xiàn)了通過iPad終端從服務(wù)器端下載病人的病例圖像,并可以在iPad上對圖像進行標注、測量、切片變換等操作,方便醫(yī)護人員進行檢查、診治,極大地提高了診治過程中的效率。
關(guān)鍵詞: 圖像處理;iPad;醫(yī)療圖像;數(shù)字影像和通信標準;影像歸檔和通信系統(tǒng)
圖像存儲與傳輸系統(tǒng)PACS(Picture Archiving and Communication System)主要應(yīng)用在醫(yī)院影像科室,負責將醫(yī)院日常產(chǎn)生的各種醫(yī)學影像(包括核磁、CT、超聲、各種X光機、各種紅外儀、顯微儀等設(shè)備產(chǎn)生的圖像)通過各種接口(模擬、DICOM、網(wǎng)絡(luò))以數(shù)字化的方式海量保存起來,當需要的時候在一定的授權(quán)下能夠很快地調(diào)回使用,同時增加一些輔助診斷管理功能。PACS在各種影像設(shè)備間傳輸數(shù)據(jù)和組織存儲數(shù)據(jù)具有重要作用[1]。
目前PACS的客戶端主要基于PC構(gòu)建。參考文獻[2]提出了一套完整的基于B/S架構(gòu)的PACS系統(tǒng)解決方案。參考文獻[3]則提出一種.NET框架下PACS系統(tǒng)設(shè)計與實現(xiàn)解決方案。本文創(chuàng)造性地將PACS客戶端實現(xiàn)在iPad上,極大地利用了移動網(wǎng)絡(luò)與移動設(shè)備的便利性,從而充分提高了PACS在醫(yī)學輔助診斷中的使用效率。
由于PACS系統(tǒng)本身不產(chǎn)生圖像,圖像必須要從各種影像設(shè)備上傳輸過來,所以就產(chǎn)生了DICOM(Digital Imaging and Communications in Medicine)[4-5],即醫(yī)學數(shù)字圖像和通信標準,是在醫(yī)學信息學領(lǐng)域中有關(guān)醫(yī)學圖像的國際標準,它可使醫(yī)學圖像設(shè)備的制造廠商和用戶在標準網(wǎng)絡(luò)上實現(xiàn)設(shè)備互連,便利了各類型的醫(yī)學圖像的開發(fā)和應(yīng)用,是目前國際國內(nèi)研究開發(fā)的熱點。
DICOM標準內(nèi)容繁雜,如果完全自己編寫代碼來實現(xiàn)這些功能,是一個浩大的工程。DCMTK工具包是由德國offis公司開發(fā)的[6],提供了實現(xiàn)DICOM協(xié)議的一個開源C++庫,可以在它的基礎(chǔ)上完成自己的主要工作,而不必把太多的精力放在實現(xiàn)DICOM協(xié)議的細節(jié)問題上。本文創(chuàng)造性地在iPad上實現(xiàn)了對DCMTK的調(diào)用,DMCTK類庫結(jié)構(gòu)如圖1所示。
1 DCMTK的組成
DCMTK是一個跨平臺的庫,它支持Windows、Linux、Mac OS、SUN等平臺。本系統(tǒng)需要在iPad環(huán)境中調(diào)用DCMTK,必須先要將DCMTK編譯成armv7指令集。
2 PACS系統(tǒng)功能模塊分析
本系統(tǒng)按照需求分為登錄模塊、使用指南模塊、常見問題模塊、技術(shù)支持模塊、樣本病例模塊、常規(guī)設(shè)置模塊、圖像傳輸模塊以及圖像處理與回放模塊等8個模塊。8個模塊可以簡化分為3個功能集合:即幫助信息功能集合、病人檔案管理功能集合、圖像處理功能集合。
其中,登錄模塊是整個程序的入口,也是最先需要實現(xiàn)的模塊。實現(xiàn)授權(quán)用戶的登錄需要服務(wù)器進行聯(lián)合演示與測試;使用指南、常見問題和技術(shù)支持模塊主要是給用戶提供該軟件產(chǎn)品相關(guān)的信息,如軟件廠商,聯(lián)系方式等,相當于軟件的幫助文檔;樣本病例模塊的主要功能是對病例樣本進行管理,包括病例的查找、刪除、下載功能;常規(guī)設(shè)置模塊完成對軟件功能的設(shè)置,包括圖像設(shè)置、賬戶設(shè)置、數(shù)據(jù)源設(shè)置、字體、字體顏色以及產(chǎn)品注冊等功能;圖像傳輸模塊負責控制圖像的下載和傳輸,該模塊連接到PACS服務(wù)器端,獲取病人信息和資料,需要有特定的協(xié)議和接口。因此,該模塊是整個程序中最重要的模塊之一,同時由于網(wǎng)絡(luò)連接會出現(xiàn)各種各樣的錯誤導致鏈接失敗,該模塊也需要對各種異常經(jīng)行作有關(guān)的處理,保證整個程序在穩(wěn)定的環(huán)境中運行;圖像處理與回放模塊是對DICOM圖像操作的重要模塊,實現(xiàn)對醫(yī)療圖像進行多幀圖像回放[7];圖像處理模塊實現(xiàn)了軟件用戶對醫(yī)療圖像的主要處理功能,主要包括窗寬窗位設(shè)置與調(diào)整、負片、放縮與漫游、圖片旋轉(zhuǎn)、圖像標注以及測量等操作的實現(xiàn)。
3 關(guān)鍵模塊設(shè)計
本系統(tǒng)的關(guān)鍵模塊包括完成病例檢索與下載功能的樣本病例模塊、負責獲取醫(yī)療圖像數(shù)據(jù)的圖像傳輸模塊與實現(xiàn)醫(yī)療圖像基本操作處理的圖像處理模塊。
3.1 數(shù)據(jù)傳輸模塊的設(shè)計與實現(xiàn)
首先必須確定模塊的輸入輸出條件,由于該模塊主要功能是用戶通過PACS系統(tǒng)下載存儲在服務(wù)器端的病人影像數(shù)據(jù),所以必須要在模塊的輸入條件中確定影像數(shù)據(jù)服務(wù)器的地址信息和病人的身份信息。數(shù)據(jù)傳輸模塊的輸入?yún)?shù)如表1所示。
其中請求端口用于客戶端向DICOM服務(wù)器發(fā)起數(shù)據(jù)請求時使用;傳輸端口用于客戶端接收影像數(shù)據(jù)時使用;AE實體用于模塊與遠程DICOM進行通信確認[8]。
數(shù)據(jù)傳輸模塊輸出病人的影像數(shù)據(jù)及存儲路徑信息,模塊設(shè)計包圖如圖2所示。
模塊的核心接口為TransferController,主要引用了TransferMOD包,TransferMOD包含了QueryFiles包,負責獲得DCMTK庫的DCM文件。TransferMod包還引用了3個重要的文件storescp.cc、findscu.cc以及movescu.cc,其中storescp用于接收服務(wù)器發(fā)送來的醫(yī)學影像數(shù)據(jù),是一個獨立的服務(wù)線程;findscu用于向服務(wù)器請求相應(yīng)的病人/病檔信息;movescu用于向服務(wù)器發(fā)送查詢文件,并請求下載符合條件的病人/病檔。
TransferController接口還包含了幾個重要的方法:ApplicationDocumentDirectory方法是用來返回目錄的;createPintentFloder方法的參數(shù)是以病人名字命名的臨時輸出文件夾,便于創(chuàng)建病人文件夾;beginFindScu方法用來啟動findscu;beginMoveScuByNameAndID方法則用來啟動movescu,通過病人名和病人ID查詢;startStoreScp用來開啟storescp服務(wù)。
數(shù)據(jù)傳輸模塊的主要處理流程如圖3所示。
3.2 圖像處理模塊的設(shè)計與實現(xiàn)
該模塊根據(jù)醫(yī)護人員診斷的需要,對下載的影像數(shù)據(jù)完成窗寬窗位設(shè)置與調(diào)整、負片、放縮與漫游、圖片翻轉(zhuǎn)、圖像標注以及測量等6大功能的實現(xiàn)。為了完成這些功能,該模塊調(diào)用了DCMTK的大量接口,模塊包圖如圖4所示。
其中核心接口為PACSViewController,分別調(diào)用DatasetView接口實現(xiàn)影像數(shù)據(jù)的加載;調(diào)用ImageHandleViewControlle接口實現(xiàn)窗寬窗位設(shè)置與調(diào)整[9],圖片翻轉(zhuǎn)和負片功能;調(diào)用OverlayObjectsViewController和TextInputViewController接口實現(xiàn)標注功能;調(diào)用PacsViewMode實現(xiàn)測量功能。影像數(shù)據(jù)的放縮與漫游功能由iOS原生支持,所以無需額外實現(xiàn)。
3.3 樣本病例模塊的設(shè)計與實現(xiàn)
該模塊的主要功能是對系統(tǒng)中的病例樣本進行管理,包括病例的查找、刪除、下載功能。該模塊以病人姓名或者病人ID為輸入項,通過SampleDetailViewController接口的若干方法實現(xiàn)對樣本病例的管理功能。下面對其中一些重要方法予以說明。
startDownload方法:用戶將病人姓名或者ID填完之后,點擊開始下載按鈕即執(zhí)行該方法,調(diào)用傳輸模塊進行傳輸,查詢名字是否存在或是否含非法字符,并且能夠?qū)鬏斶^程中產(chǎn)生的各種異常對用戶進行報錯。
openPacsView方法:接收字符串類型的病人的路徑,調(diào)用圖像處理模塊的接口PacsViewController來打開病人的圖像。
deleteFloder方法:接收字符串類型的路徑來刪除病例文件夾及其內(nèi)部文件。
loadPatientList方法:加載并顯示樣本病例列表。
4 用戶界面設(shè)計
由于iOS的開發(fā)必須遵循MVC模式,在進行界面設(shè)計時,必須首先考慮用戶界面與功能模塊之間的對應(yīng)關(guān)系。經(jīng)過梳理,得出如圖5所示的用戶界面與模塊關(guān)系圖。
確定關(guān)系圖之后,就可以根據(jù)模塊具體的代碼文件添加相應(yīng)View進行界面制作,然后通過Controller將界面與模塊進行連接。
5 系統(tǒng)實現(xiàn)
5.1 開發(fā)平臺和工具
本系統(tǒng)采用Xcode4開發(fā)平臺[10],Xcode 4的核心部分是蘋果電腦公司下一代業(yè)界標準的gcc編譯器gcc 4.0。新的編譯器利用許多先進的最優(yōu)化技術(shù),幫助開發(fā)人員從現(xiàn)存編碼中獲得更多性能。
5.2 開發(fā)語言
本系統(tǒng)使用Objective-C[11]為開發(fā)語言。Objective-C是擴充C的面向?qū)ο缶幊陶Z言。它主要用于Mac OSX和GNUstep這兩個使用OpenStep標準的系統(tǒng),可以在gcc下編譯。
5.3 設(shè)計模式
本系統(tǒng)采用MVC(模型-視圖-控制器)泛型作為指導原則來設(shè)計。本文提到的控制器TransferController、PACSViewController及SampleDetailViewController,分別處理圖像傳輸、處理及樣本病例的管理,均屬于應(yīng)用程序邏輯部分。
MVC模式將應(yīng)用程序的界面代碼和后臺邏輯進行了有效的隔離,從而減輕了模塊之間的耦合,對提高軟件的可維護性具有非常積極的意義。
該系統(tǒng)實現(xiàn)了通過使用iPad這類的移動型終端瀏覽不同設(shè)備上的標準醫(yī)療圖像,不僅可以擺脫臺式機辦公帶來的地點束縛,高效準確地觸摸屏操作也更便捷、更人性化。由服務(wù)器端下載病人的病例圖像,在iPad終端中合理歸類,可方便醫(yī)護人員進行檢查、診治。同時還可通過標注、測量、切片變換等功能及時進行記錄分析,大大提高了診治過程中的效率。
參考文獻
[1] 孔祥勇,宋健等.基于DCMTK的醫(yī)學影像工作站設(shè)計[J].計算機與現(xiàn)代化,2010(10):87-95.
[2] 王建文,楊川.基于B/S架構(gòu)的組件式PACS系統(tǒng)設(shè)計[J].計算機工程與設(shè)計,2008,29(20):5391-5393.
[3] 李自勝,肖曉萍,龔偉.基于.NET框架的DICOM協(xié)議設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2009,26(10):19-23.
[4] NEMA. Digital Imaging and Communications in Medicine (DICOM)[J]. USA:ACR-NEMA standard Publication, 2007(7):1-53.
[5] National Electrical Manufacturers Assoc. and Rosslyn, VA, Digital Imaging and Communications in Medicine(DICOM)[M]. DICOM Committee, 2000.
[6] http://dicom.offis.de/[EB/OL].
[7] 呂曉琪,任海霞.基于DICOM標準的醫(yī)學圖像查詢與獲取技術(shù)的研究與實現(xiàn)[J].內(nèi)蒙古科技大學學報,2010(9):246-249.
[8] 呂曉琪,劉溢淳.DICOM網(wǎng)絡(luò)通信協(xié)議分析以及基于DCMTK的儲存服務(wù)類的實現(xiàn)[J].內(nèi)蒙古科技大學學報,2009(9):221-225.
[9] 姜睿智,岳秀艷.基于DCMTK的醫(yī)學圖像顯示及其調(diào)窗方法研究[J].計算機系統(tǒng)應(yīng)用,2009(5):182-185.
[10] DAVE MARK, JACK NUTTING, JEFF LAMARCHE. Beginning iPhone 4 Development Exploring the iOS SDK[M]. Apress,2011.
[11] MARK DALRYMPLE, SCOTT KNASTER. VLearn Objective-C on the Mac[M]. Apress, 2011.