摘 要:在研究传统的CS架构的图像存储与传输系统软件产品的基础上,创造性地实现了通过iPad终端从服务器端下载病人的病例图像,并可以在iPad上对图像进行标注、测量、切片变换等操作,方便医护人员进行检查、诊治,极大地提高了诊治过程中的效率。
关键词:图像处理;iPad;医疗图像;数字影像和通信标准;影像归档和通信系统
图像存储与传输系统PACS(Picture Archiving and Communication System)主要应用在医院影像科室,负责将医院日常产生的各种医学影像(包括核磁、CT、超声、各种X光机、各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟、DICOM、网络)以数字化的方式海量保存起来,当需要的时候在一定的授权下能够很快地调回使用,同时增加一些辅助诊断管理功能。PACS在各种影像设备间传输数据和组织存储数据具有重要作用[1]。
目前PACS的客户端主要基于PC构建。参考文献[2]提出了一套完整的基于B/S架构的PACS系统解决方案。参考文献[3]则提出一种.NET框架下PACS系统设计与实现解决方案。本文创造性地将PACS客户端实现在iPad上,极大地利用了移动网络与移动设备的便利性,从而充分提高了PACS在医学辅助诊断中的使用效率。
由于PACS系统本身不产生图像,图像必须要从各种影像设备上传输过来,所以就产生了DICOM(Digital Imaging and Communications in Medicine)[4-5],即医学数字图像和通信标准,是在医学信息学领域中有关医学图像的国际标准,它可使医学图像设备的制造厂商和用户在标准网络上实现设备互连,便利了各类型的医学图像的开发和应用,是目前国际国内研究开发的热点。
DICOM标准内容繁杂,如果完全自己编写代码来实现这些功能,是一个浩大的工程。DCMTK工具包是由德国offis公司开发的[6],提供了实现DICOM协议的一个开源C++库,可以在它的基础上完成自己的主要工作,而不必把太多的精力放在实现DICOM协议的细节问题上。本文创造性地在iPad上实现了对DCMTK的调用,DMCTK类库结构如图1所示。
1 DCMTK的组成
DCMTK是一个跨平台的库,它支持Windows、Linux、Mac OS、SUN等平台。本系统需要在iPad环境中调用DCMTK,必须先要将DCMTK编译成armv7指令集。
2 PACS系统功能模块分析
本系统按照需求分为登录模块、使用指南模块、常见问题模块、技术支持模块、样本病例模块、常规设置模块、图像传输模块以及图像处理与回放模块等8个模块。8个模块可以简化分为3个功能集合:即帮助信息功能集合、病人档案管理功能集合、图像处理功能集合。
其中,登录模块是整个程序的入口,也是最先需要实现的模块。实现授权用户的登录需要服务器进行联合演示与测试;使用指南、常见问题和技术支持模块主要是给用户提供该软件产品相关的信息,如软件厂商,联系方式等,相当于软件的帮助文档;样本病例模块的主要功能是对病例样本进行管理,包括病例的查找、删除、下载功能;常规设置模块完成对软件功能的设置,包括图像设置、账户设置、数据源设置、字体、字体颜色以及产品注册等功能;图像传输模块负责控制图像的下载和传输,该模块连接到PACS服务器端,获取病人信息和资料,需要有特定的协议和接口。因此,该模块是整个程序中最重要的模块之一,同时由于网络连接会出现各种各样的错误导致链接失败,该模块也需要对各种异常经行作有关的处理,保证整个程序在稳定的环境中运行;图像处理与回放模块是对DICOM图像操作的重要模块,实现对医疗图像进行多帧图像回放[7];图像处理模块实现了软件用户对医疗图像的主要处理功能,主要包括窗宽窗位设置与调整、负片、放缩与漫游、图片旋转、图像标注以及测量等操作的实现。
3 关键模块设计
本系统的关键模块包括完成病例检索与下载功能的样本病例模块、负责获取医疗图像数据的图像传输模块与实现医疗图像基本操作处理的图像处理模块。
3.1 数据传输模块的设计与实现
首先必须确定模块的输入输出条件,由于该模块主要功能是用户通过PACS系统下载存储在服务器端的病人影像数据,所以必须要在模块的输入条件中确定影像数据服务器的地址信息和病人的身份信息。数据传输模块的输入参数如表1所示。
其中请求端口用于客户端向DICOM服务器发起数据请求时使用;传输端口用于客户端接收影像数据时使用;AE实体用于模块与远程DICOM进行通信确认[8]。
数据传输模块输出病人的影像数据及存储路径信息,模块设计包图如图2所示。
模块的核心接口为TransferController,主要引用了TransferMOD包,TransferMOD包含了QueryFiles包,负责获得DCMTK库的DCM文件。TransferMod包还引用了3个重要的文件storescp.cc、findscu.cc以及movescu.cc,其中storescp用于接收服务器发送来的医学影像数据,是一个独立的服务线程;findscu用于向服务器请求相应的病人/病档信息;movescu用于向服务器发送查询文件,并请求下载符合条件的病人/病档。
TransferController接口还包含了几个重要的方法:ApplicationDocumentDirectory方法是用来返回目录的;createPintentFloder方法的参数是以病人名字命名的临时输出文件夹,便于创建病人文件夹;beginFindScu方法用来启动findscu;beginMoveScuByNameAndID方法则用来启动movescu,通过病人名和病人ID查询;startStoreScp用来开启storescp服务。
数据传输模块的主要处理流程如图3所示。
3.2 图像处理模块的设计与实现
该模块根据医护人员诊断的需要,对下载的影像数据完成窗宽窗位设置与调整、负片、放缩与漫游、图片翻转、图像标注以及测量等6大功能的实现。为了完成这些功能,该模块调用了DCMTK的大量接口,模块包图如图4所示。
其中核心接口为PACSViewController,分别调用DatasetView接口实现影像数据的加载;调用ImageHandleViewControlle接口实现窗宽窗位设置与调整[9],图片翻转和负片功能;调用OverlayObjectsViewController和TextInputViewController接口实现标注功能;调用PacsViewMode实现测量功能。影像数据的放缩与漫游功能由iOS原生支持,所以无需额外实现。
3.3 样本病例模块的设计与实现
该模块的主要功能是对系统中的病例样本进行管理,包括病例的查找、删除、下载功能。该模块以病人姓名或者病人ID为输入项,通过SampleDetailViewController接口的若干方法实现对样本病例的管理功能。下面对其中一些重要方法予以说明。
startDownload方法:用户将病人姓名或者ID填完之后,点击开始下载按钮即执行该方法,调用传输模块进行传输,查询名字是否存在或是否含非法字符,并且能够对传输过程中产生的各种异常对用户进行报错。
openPacsView方法:接收字符串类型的病人的路径,调用图像处理模块的接口PacsViewController来打开病人的图像。
deleteFloder方法:接收字符串类型的路径来删除病例文件夹及其内部文件。
loadPatientList方法:加载并显示样本病例列表。
4 用户界面设计
由于iOS的开发必须遵循MVC模式,在进行界面设计时,必须首先考虑用户界面与功能模块之间的对应关系。经过梳理,得出如图5所示的用户界面与模块关系图。
确定关系图之后,就可以根据模块具体的代码文件添加相应View进行界面制作,然后通过Controller将界面与模块进行连接。
5 系统实现
5.1 开发平台和工具
本系统采用Xcode4开发平台[10],Xcode 4的核心部分是苹果电脑公司下一代业界标准的gcc编译器gcc 4.0。新的编译器利用许多先进的最优化技术,帮助开发人员从现存编码中获得更多性能。
5.2 开发语言
本系统使用Objective-C[11]为开发语言。Objective-C是扩充C的面向对象编程语言。它主要用于Mac OSX和GNUstep这两个使用OpenStep标准的系统,可以在gcc下编译。
5.3 设计模式
本系统采用MVC(模型-视图-控制器)泛型作为指导原则来设计。本文提到的控制器TransferController、PACSViewController及SampleDetailViewController,分别处理图像传输、处理及样本病例的管理,均属于应用程序逻辑部分。
MVC模式将应用程序的界面代码和后台逻辑进行了有效的隔离,从而减轻了模块之间的耦合,对提高软件的可维护性具有非常积极的意义。
该系统实现了通过使用iPad这类的移动型终端浏览不同设备上的标准医疗图像,不仅可以摆脱台式机办公带来的地点束缚,高效准确地触摸屏操作也更便捷、更人性化。由服务器端下载病人的病例图像,在iPad终端中合理归类,可方便医护人员进行检查、诊治。同时还可通过标注、测量、切片变换等功能及时进行记录分析,大大提高了诊治过程中的效率。
参考文献
[1] 孔祥勇,宋健等.基于DCMTK的医学影像工作站设计[J].计算机与现代化,2010(10):87-95.
[2] 王建文,杨川.基于B/S架构的组件式PACS系统设计[J].计算机工程与设计,2008,29(20):5391-5393.
[3] 李自胜,肖晓萍,龚伟.基于.NET框架的DICOM协议设计与实现[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标准的医学图像查询与获取技术的研究与实现[J].内蒙古科技大学学报,2010(9):246-249.
[8] 吕晓琪,刘溢淳.DICOM网络通信协议分析以及基于DCMTK的储存服务类的实现[J].内蒙古科技大学学报,2009(9):221-225.
[9] 姜睿智,岳秀艳.基于DCMTK的医学图像显示及其调窗方法研究[J].计算机系统应用,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.