莫文杰,黄金汉,徐 升,罗传文,唐 浩
(恩施土家族苗族自治州中心医院肿瘤放疗中心,湖北恩施 445000)
剂量体积直方图(dose-volume histogram,DVH)因其能够反映三维放疗计划中的剂量-体积关系,成为设计、制订和评估放疗计划的重要工具[1]。在放疗物理师制订调强放疗计划时,需要根据DVH将特定吸收剂量与计划靶区(planning target volume,PTV)和危及器官(organ at risk,OAR)等结构的相互关系转化为调强计划的优化目标,反复进行“优化计算—评估DVH—调整优化参数”这一循环过程,直至放疗计划符合放疗处方的要求。临床工作中,放疗物理师采用手工方式评估DVH,花费时间长,效率较低。导致评估效率较低的主要原因包括:(1)放疗计划中需要评估的结构和项目较多;(2)需要查看的信息分散在不同的界面和位置;(3)部分信息需要手工计算;(4)每一次优化计算后需要重复检查所有项目。为了简化操作,提高DVH的评估效率,有研究者使用AutoHotkey热键脚本语言开发DVH评估软件,通过模拟键盘和鼠标的键击动作读取放疗计划信息并进行DVH评估[2]。本文针对手工评估DVH效率低的现状,结合我院肿瘤放疗中心的实际工作,利用Eclipse软件内置的应用程序开发接口Eclipse Scripting API[3],以Eclipse功能插件的形式开发了一套DVH评估软件。该评估软件可直接在Eclipse软件中调用并读取其已经载入的放疗计划信息,实现一键式自动化DVH评估,使放疗物理师可以快速、方便地查看DVH评估结果,判断放疗计划是否需要进行调整,从而提高放疗计划制订效率。
该软件的主要功能是自动检索在Eclipse软件外照射计划模块中打开的放疗计划所包含的结构、判断结构类型、读取并评估结构的DVH信息、输出评估结果。该软件包括预处理、结构检索、OAR评估、PTV评估和结果输出5个模块,整体功能模块结构示意如图1所示。
图1 放疗计划DVH评估软件的功能模块结构示意图
预处理模块可以获取放疗计划的基本信息,包括计划名、处方剂量、结构组名称等项目。结构检索模块能够遍历放疗计划中包含的所有结构,依据结构类型调用相应的评估模块对结构进行DVH评估。OAR评估模块能够按照正常器官放射剂量限值进行剂量体积、最大受照剂量和平均剂量3个项目的评估。PTV评估模块能够进行近似最小吸收剂量D98%(98%靶区体积的吸收剂量)、最大受照剂量、3个项目的评估[4]。结果输出模块能够汇总和显示放疗计划的基本信息及评估结果。
根据需求分析,按照功能模块设计,该软件的功能实现流程如图2所示。
图2 放疗计划DVH评估软件功能实现流程
图3 放疗计划DVH评估软件架构
放疗计划DVH评估软件整体架构如图3所示。该软件采用Eclipse Scripting API的二进制插件模式,程序源代码编译为具有固定文件名后缀esapi.dll的文件。用户在Eclipse软件外照射计划模块中打开放疗计划后,使用ToolsScripts菜单定位并运行该插件,即可启动该软件完成DVH评估。放疗计划DVH评估软件能够读取当前Eclipse窗口中打开的放疗计划,获取该放疗计划所包含的DVH、结构组与结构、计划参数等信息。评估标准文件为预先编写的xml格式文件,该文件中存储了OAR和PTV的各项DVH评估标准,用户可以使用文本编辑软件修改该文件以修改评估标准。
放疗计划DVH评估软件开发和运行环境为安装了Eclipse V11版本的物理师工作站。
硬件环境:DELL Dimension T5600型台式工作站,处理器为双Intel Xeon E5-2620V2处理器,内存32 GB,硬盘为1 TB RAID1阵列。
软件环境:操作系统为64位Windows 7英文版,开发软件为Microsoft Visual Studio 2015,开发语言为Eclipse Scripting API指定编程语言C#,客户端显示技术采用 Windows Presentation Foundation(WPF)框架[5],.NET Framework 版本为 4.0。
放疗计划DVH评估软件的运行主界面即完成DVH评估后的结果显示窗口,是由结果输出模块构建的。当在Eclipse软件中调用本软件完成DVH评估时,主界面将直接在Eclipse软件的主窗口中显示。窗口上部显示预处理模块中读取的放疗计划基本信息,包括计划名称、结构组名称和处方剂量。结果输出模块将OAR评估模块输出的评估结果分为已达标和未达标2组,在窗口中部用2个表格分别显示。表格中每行显示一个OAR的一项评估结果,每行中依次列出OAR名称、评估项目名称、标准值、当前值和差值。窗口下部以表格显示3项PTV评估结果,每行依次列出评估项目名称、标准值、当前值和差值,未达标的项目以红色字体显示相关信息。结果显示窗口如图4所示。
图4 结果显示窗口界面
放疗计划DVH评估软件在源代码项目文件中引用Eclipse V11版本提供的VMS.TPS.Common.Model.API.dll和 VMS.TPS.Common.Model.Types.dll文件,其默认安装位置为C:Program Files(x86)VarianVision11.0Bin64。在程序代码中使用using指令导入VMS.TPS.Common.Model.API和VMS.TPS.Common.Model.Types命名空间。按照Eclipse Scripting API编程规范,将程序代码的默认命名空间命名为VMS.TPS,在该命名空间中定义名为Script的类,并在该类中定义名为Execute的方法,Execute方法中包含一个名为context的ScriptContext类型的参数。启动该软件时,Eclipse软件将自动运行Execute方法中的程序语句,context参数代表了Eclipse软件当前打开的患者基本信息、放疗计划等项目。预处理模块使用context参数中的StructureSet、PlanSetup等属性引用结构组、放疗计划等内容,并进一步使用PlanSetup属性获取放疗计划的详细信息,为结构检索、评估等模块提供放疗计划的基本信息[6]。实现预处理功能的主要代码如下:
这个小说,讨论经由情感和行动的试炼而得到的关于人与自我、外界关系的见证。这个命题我感兴趣。它其实是关于人的个体存在,关于叛逆心灵置身及对峙工业化社会和堕落时代的代价。最终我们一直在寻找的是精神的故乡,而非一个俗世的时代之中的位置。
在Eclipse Scripting API中,放疗计划包含的结构组实现了IEnumerable接口,可通过该接口使用foreach循环遍历结构组中的每一个结构,读取结构名称、结构类型、体积等信息。结构检索模块按照结构类型分别调用OAR评估模块和PTV评估模块对结构进行DVH评估。结构组中除OAR和PTV以外的结构类型,如辅助结构、治疗床结构等不进行DVH评估的部分将被该模块忽略。同时该模块使用结构的IsEmpty属性判断并忽略在结构组中存在但并未实际勾画或分割、体积为0 ml的空结构。实现结构检索功能的主要代码如下:
OAR评估模块首先根据OAR名称在评估标准文件中查找并读取该OAR剂量体积、最大受照剂量和平均剂量3个项目的评估标准值,然后读取该结构对应的DVH信息并与标准值进行比较,计算当前值与标准值的差值。每一项评估生成一条包含OAR名称、评估项目、标准值、当前值和差值的评估结果。评估结果将传递给结果输出模块进行处理。
在评估标准文件中列出了我院《放射治疗计划制作规范》中所有要求进行DVH评估的OAR,每一个OAR均有剂量体积、最大受照剂量、平均剂量3个项目的评估标准值。当某一OAR不需要进行某个项目的评估时,该项目的标准值为0,评估方法忽略该项目的评估过程,直接生成一条空白评估结果。
2.4.1 剂量体积评估
以OAR膀胱为例,其放射剂量限值评估标准为剂量体积V40<50%,即接受大于等于4 000 cGy受照剂量的体积小于总体积的50%。采用CheckVolume方法读取放疗计划DVH中膀胱的V40数值,与标准值进行比较并生成评估结果。CheckVolume方法使用PlanSetup对象的GetVolumeAtDose方法获取当前评估器官膀胱的剂量体积信息[3]。调用GetVolume-AtDose方法需要使用下列3个参数:(1)需要查询的结构;(2)需要查询的参考剂量;(3)体积数值的显示方式。实现剂量体积评估功能的主要代码如下:
上述代码的参数设置中使用自定义VolumeAt-Dose结构的Dose属性和字符串cGy初始化一个Eclipse Scripting API中用来表示剂量的DoseValue结构,其代表需要查询的受照剂量,此案例中即为4 000 cGy。使用VolumePresentation.Relative枚举值表示将查询的剂量体积数值设置为相对体积,即返回的剂量体积数值在0~100%内。
2.4.2 最大受照剂量评估
以OAR脊髓为例,其放射剂量限值评估标准为最大受照剂量Dmax≤4 000 cGy。采用CheckDmax方法读取放疗计划DVH中脊髓受照剂量的最大值,与标准值4 000 cGy进行比较并生成评估结果。Check-Dmax方法首先使用PlanSetup对象的GetDVHCumulativeData方法获取评估器官的累积剂量数据。累积剂量数据包括最大受照剂量、最小受照剂量、平均剂量等多个项目,均使用DoseValue结构表示,其中DoseValue结构的Dose属性为剂量数值,Unit属性代表对应的单位cGy或Gy。CheckDmax方法读取最大受照剂量MaxDose中的Dose属性获取最大受照剂量的数值并与标准值进行比较。调用GetDVHCumulativeData方法需要使用下列4个参数:(1)需要查询的结构;(2)需要查询获取的剂量数值的表示方式;(3)体积数值的表示方式;(4)累积剂量数据统计矩阵网格分辨力,Eclipse Scripting API默认设置为0.1。实现最大受照剂量评估功能的主要代码如下:CheckMax(Structure structure,double max)//CheckMax方法定义代码
上述代码在为GetDVHCumulativeData方法设置参数时,使用Eclipse Scripting API内置的Dose-ValuePresentation.Absolute枚举值将获取的剂量设置为绝对剂量,默认单位为cGy;使用VolumePresentation.AbsoluteCm3枚举值将体积数值设置为绝对体积,默认单位为ml。
2.4.3 平均剂量评估
采用CheckDmean方法调用PlanSetup对象的GetDVHCumulativeData方法获取当前评估器官的累积剂量数据,然后读取累积剂量数据的MeanDose属性获取平均受照剂量,并读取其Dose属性获取平均受照剂量数值,与标准值进行比较,生成评估结果。
PTV的评估项目包括以下3项:(1)近似最小吸收剂量D98%应大于等于处方剂量;(2)靶区的最大受照剂量应小于等于处方剂量的107%;(3)处方剂量总体积与靶区体积的比值小于等于1.2。与OAR评估模块的工作流程相同,PTV评估模块首先在评估标准文件中读取PTV的3个项目的评估标准值,然后调用对应方法获取需要评估的DVH信息,进行比较计算差值,生成评估结果。PTV的最大受照剂量评估与OAR最大受照剂量评估方法相似。
2.5.1 近似最小吸收剂量D98%评估
近似最小吸收剂量D98%用于评估PTV的最低吸收剂量。评估模块使用CheckD98方法调用PlanSetup对象的GetDoseAtVolume方法获取PTV体积剂量并将该剂量与处方剂量进行比较,生成评估结果。调用GetDoseAtVolume方法需要使用下列4个参数:(1)需要查询的结构;(2)需要查询的体积,此处设置为相对体积的98%;(3)体积的表示方式,此处设置为相对体积;(4)剂量的表示方式,此处设置为绝对剂量。实现近似最小吸收剂量D98%评估功能的主要代码如下:
2.5.2 处方剂量总体积与靶区体积的比值评估
为了获取受到处方剂量照射的总体积,使用GetVolumeAtDose方法将结构组中代表受照总体积的Body结构作为查询对象,即可得到该体积数值,将该数值与PTV体积数值相除得到的比值与标准值进行比较,即可完成评估。
随机调取我院Eclipse软件中15例调强放射治疗计划,其中头颈、胸腹、盆腔各5例,逐一运行该软件进行DVH评估,记录并输出结果。放疗物理师逐一手工查看放疗计划进行DVH评估,核对评估项目和结果。2种评估方式结果对比显示,本文设计的软件自动评估结构数、评估项目数均与手工评估一致,符合功能设计要求。测试结果汇总见表1。
表1 2种评估方式评估项目结果对比(n=15)
2018年1—10月,我院肿瘤放疗中心放疗物理师在放疗计划设计、制订工作中,使用该软件累计对764个调强放疗计划进行DVH评估。该软件检索评估的结构数和项目数均与评估标准一致,软件评估结果与手工评估结果一致。放疗计划DVH评估软件因其使用便捷、运行快速、评估精确的优势,可以完全取代放疗物理师手工评估。该软件的设计与实现改进了放疗物理师评估DVH的工作模式,提高了DVH的评估效率,切实满足了放疗物理师临床工作需求。
不同于以往独立运行的DVH评估软件,本文使用EclipseScriptingAPI开发的自动化DVH评估软件以Eclipse功能插件的形式整合在Eclipse软件中,扩展了Eclipse软件的功能,使放疗物理师在使用Eclipse软件设计、制订放疗计划时,无需离开Eclipse主界面,就能够使用该软件自动化评估DVH。放疗计划DVH评估软件具有使用简单、运行快速、评估准确等优点,能够让放疗物理师实现“一键式”放疗计划DVH评估,减少了评估用时,提高了设计、制订放疗计划的效率,方便了临床工作。该软件的下一步研究方向是开发调强放疗计划优化目标参数调整模块,使其能够根据软件输出的DVH评估结果自动调整未达标结构的优化目标参数,使放疗物理师能够更有针对性地调整优化调强放疗计划,进一步提高工作效率。