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