莫文杰,黃金漢,徐 升,羅傳文,唐 浩
(恩施土家族苗族自治州中心醫(yī)院腫瘤放療中心,湖北恩施 445000)
劑量體積直方圖(dose-volume histogram,DVH)因其能夠反映三維放療計(jì)劃中的劑量-體積關(guān)系,成為設(shè)計(jì)、制訂和評(píng)估放療計(jì)劃的重要工具[1]。在放療物理師制訂調(diào)強(qiáng)放療計(jì)劃時(shí),需要根據(jù)DVH將特定吸收劑量與計(jì)劃靶區(qū)(planning target volume,PTV)和危及器官(organ at risk,OAR)等結(jié)構(gòu)的相互關(guān)系轉(zhuǎn)化為調(diào)強(qiáng)計(jì)劃的優(yōu)化目標(biāo),反復(fù)進(jìn)行“優(yōu)化計(jì)算—評(píng)估DVH—調(diào)整優(yōu)化參數(shù)”這一循環(huán)過程,直至放療計(jì)劃符合放療處方的要求。臨床工作中,放療物理師采用手工方式評(píng)估DVH,花費(fèi)時(shí)間長(zhǎng),效率較低。導(dǎo)致評(píng)估效率較低的主要原因包括:(1)放療計(jì)劃中需要評(píng)估的結(jié)構(gòu)和項(xiàng)目較多;(2)需要查看的信息分散在不同的界面和位置;(3)部分信息需要手工計(jì)算;(4)每一次優(yōu)化計(jì)算后需要重復(fù)檢查所有項(xiàng)目。為了簡(jiǎn)化操作,提高DVH的評(píng)估效率,有研究者使用AutoHotkey熱鍵腳本語言開發(fā)DVH評(píng)估軟件,通過模擬鍵盤和鼠標(biāo)的鍵擊動(dòng)作讀取放療計(jì)劃信息并進(jìn)行DVH評(píng)估[2]。本文針對(duì)手工評(píng)估DVH效率低的現(xiàn)狀,結(jié)合我院腫瘤放療中心的實(shí)際工作,利用Eclipse軟件內(nèi)置的應(yīng)用程序開發(fā)接口Eclipse Scripting API[3],以Eclipse功能插件的形式開發(fā)了一套DVH評(píng)估軟件。該評(píng)估軟件可直接在Eclipse軟件中調(diào)用并讀取其已經(jīng)載入的放療計(jì)劃信息,實(shí)現(xiàn)一鍵式自動(dòng)化DVH評(píng)估,使放療物理師可以快速、方便地查看DVH評(píng)估結(jié)果,判斷放療計(jì)劃是否需要進(jìn)行調(diào)整,從而提高放療計(jì)劃制訂效率。
該軟件的主要功能是自動(dòng)檢索在Eclipse軟件外照射計(jì)劃模塊中打開的放療計(jì)劃所包含的結(jié)構(gòu)、判斷結(jié)構(gòu)類型、讀取并評(píng)估結(jié)構(gòu)的DVH信息、輸出評(píng)估結(jié)果。該軟件包括預(yù)處理、結(jié)構(gòu)檢索、OAR評(píng)估、PTV評(píng)估和結(jié)果輸出5個(gè)模塊,整體功能模塊結(jié)構(gòu)示意如圖1所示。
圖1 放療計(jì)劃DVH評(píng)估軟件的功能模塊結(jié)構(gòu)示意圖
預(yù)處理模塊可以獲取放療計(jì)劃的基本信息,包括計(jì)劃名、處方劑量、結(jié)構(gòu)組名稱等項(xiàng)目。結(jié)構(gòu)檢索模塊能夠遍歷放療計(jì)劃中包含的所有結(jié)構(gòu),依據(jù)結(jié)構(gòu)類型調(diào)用相應(yīng)的評(píng)估模塊對(duì)結(jié)構(gòu)進(jìn)行DVH評(píng)估。OAR評(píng)估模塊能夠按照正常器官放射劑量限值進(jìn)行劑量體積、最大受照劑量和平均劑量3個(gè)項(xiàng)目的評(píng)估。PTV評(píng)估模塊能夠進(jìn)行近似最小吸收劑量D98%(98%靶區(qū)體積的吸收劑量)、最大受照劑量、3個(gè)項(xiàng)目的評(píng)估[4]。結(jié)果輸出模塊能夠匯總和顯示放療計(jì)劃的基本信息及評(píng)估結(jié)果。
根據(jù)需求分析,按照功能模塊設(shè)計(jì),該軟件的功能實(shí)現(xiàn)流程如圖2所示。
圖2 放療計(jì)劃DVH評(píng)估軟件功能實(shí)現(xiàn)流程
圖3 放療計(jì)劃DVH評(píng)估軟件架構(gòu)
放療計(jì)劃DVH評(píng)估軟件整體架構(gòu)如圖3所示。該軟件采用Eclipse Scripting API的二進(jìn)制插件模式,程序源代碼編譯為具有固定文件名后綴esapi.dll的文件。用戶在Eclipse軟件外照射計(jì)劃模塊中打開放療計(jì)劃后,使用ToolsScripts菜單定位并運(yùn)行該插件,即可啟動(dòng)該軟件完成DVH評(píng)估。放療計(jì)劃DVH評(píng)估軟件能夠讀取當(dāng)前Eclipse窗口中打開的放療計(jì)劃,獲取該放療計(jì)劃所包含的DVH、結(jié)構(gòu)組與結(jié)構(gòu)、計(jì)劃參數(shù)等信息。評(píng)估標(biāo)準(zhǔn)文件為預(yù)先編寫的xml格式文件,該文件中存儲(chǔ)了OAR和PTV的各項(xiàng)DVH評(píng)估標(biāo)準(zhǔn),用戶可以使用文本編輯軟件修改該文件以修改評(píng)估標(biāo)準(zhǔn)。
放療計(jì)劃DVH評(píng)估軟件開發(fā)和運(yùn)行環(huán)境為安裝了Eclipse V11版本的物理師工作站。
硬件環(huán)境:DELL Dimension T5600型臺(tái)式工作站,處理器為雙Intel Xeon E5-2620V2處理器,內(nèi)存32 GB,硬盤為1 TB RAID1陣列。
軟件環(huán)境:操作系統(tǒng)為64位Windows 7英文版,開發(fā)軟件為Microsoft Visual Studio 2015,開發(fā)語言為Eclipse Scripting API指定編程語言C#,客戶端顯示技術(shù)采用 Windows Presentation Foundation(WPF)框架[5],.NET Framework 版本為 4.0。
放療計(jì)劃DVH評(píng)估軟件的運(yùn)行主界面即完成DVH評(píng)估后的結(jié)果顯示窗口,是由結(jié)果輸出模塊構(gòu)建的。當(dāng)在Eclipse軟件中調(diào)用本軟件完成DVH評(píng)估時(shí),主界面將直接在Eclipse軟件的主窗口中顯示。窗口上部顯示預(yù)處理模塊中讀取的放療計(jì)劃基本信息,包括計(jì)劃名稱、結(jié)構(gòu)組名稱和處方劑量。結(jié)果輸出模塊將OAR評(píng)估模塊輸出的評(píng)估結(jié)果分為已達(dá)標(biāo)和未達(dá)標(biāo)2組,在窗口中部用2個(gè)表格分別顯示。表格中每行顯示一個(gè)OAR的一項(xiàng)評(píng)估結(jié)果,每行中依次列出OAR名稱、評(píng)估項(xiàng)目名稱、標(biāo)準(zhǔn)值、當(dāng)前值和差值。窗口下部以表格顯示3項(xiàng)PTV評(píng)估結(jié)果,每行依次列出評(píng)估項(xiàng)目名稱、標(biāo)準(zhǔn)值、當(dāng)前值和差值,未達(dá)標(biāo)的項(xiàng)目以紅色字體顯示相關(guān)信息。結(jié)果顯示窗口如圖4所示。
圖4 結(jié)果顯示窗口界面
放療計(jì)劃DVH評(píng)估軟件在源代碼項(xiàng)目文件中引用Eclipse V11版本提供的VMS.TPS.Common.Model.API.dll和 VMS.TPS.Common.Model.Types.dll文件,其默認(rèn)安裝位置為C:Program Files(x86)VarianVision11.0Bin64。在程序代碼中使用using指令導(dǎo)入VMS.TPS.Common.Model.API和VMS.TPS.Common.Model.Types命名空間。按照Eclipse Scripting API編程規(guī)范,將程序代碼的默認(rèn)命名空間命名為VMS.TPS,在該命名空間中定義名為Script的類,并在該類中定義名為Execute的方法,Execute方法中包含一個(gè)名為context的ScriptContext類型的參數(shù)。啟動(dòng)該軟件時(shí),Eclipse軟件將自動(dòng)運(yùn)行Execute方法中的程序語句,context參數(shù)代表了Eclipse軟件當(dāng)前打開的患者基本信息、放療計(jì)劃等項(xiàng)目。預(yù)處理模塊使用context參數(shù)中的StructureSet、PlanSetup等屬性引用結(jié)構(gòu)組、放療計(jì)劃等內(nèi)容,并進(jìn)一步使用PlanSetup屬性獲取放療計(jì)劃的詳細(xì)信息,為結(jié)構(gòu)檢索、評(píng)估等模塊提供放療計(jì)劃的基本信息[6]。實(shí)現(xiàn)預(yù)處理功能的主要代碼如下:
這個(gè)小說,討論經(jīng)由情感和行動(dòng)的試煉而得到的關(guān)于人與自我、外界關(guān)系的見證。這個(gè)命題我感興趣。它其實(shí)是關(guān)于人的個(gè)體存在,關(guān)于叛逆心靈置身及對(duì)峙工業(yè)化社會(huì)和墮落時(shí)代的代價(jià)。最終我們一直在尋找的是精神的故鄉(xiāng),而非一個(gè)俗世的時(shí)代之中的位置。
在Eclipse Scripting API中,放療計(jì)劃包含的結(jié)構(gòu)組實(shí)現(xiàn)了IEnumerable接口,可通過該接口使用foreach循環(huán)遍歷結(jié)構(gòu)組中的每一個(gè)結(jié)構(gòu),讀取結(jié)構(gòu)名稱、結(jié)構(gòu)類型、體積等信息。結(jié)構(gòu)檢索模塊按照結(jié)構(gòu)類型分別調(diào)用OAR評(píng)估模塊和PTV評(píng)估模塊對(duì)結(jié)構(gòu)進(jìn)行DVH評(píng)估。結(jié)構(gòu)組中除OAR和PTV以外的結(jié)構(gòu)類型,如輔助結(jié)構(gòu)、治療床結(jié)構(gòu)等不進(jìn)行DVH評(píng)估的部分將被該模塊忽略。同時(shí)該模塊使用結(jié)構(gòu)的IsEmpty屬性判斷并忽略在結(jié)構(gòu)組中存在但并未實(shí)際勾畫或分割、體積為0 ml的空結(jié)構(gòu)。實(shí)現(xiàn)結(jié)構(gòu)檢索功能的主要代碼如下:
OAR評(píng)估模塊首先根據(jù)OAR名稱在評(píng)估標(biāo)準(zhǔn)文件中查找并讀取該OAR劑量體積、最大受照劑量和平均劑量3個(gè)項(xiàng)目的評(píng)估標(biāo)準(zhǔn)值,然后讀取該結(jié)構(gòu)對(duì)應(yīng)的DVH信息并與標(biāo)準(zhǔn)值進(jìn)行比較,計(jì)算當(dāng)前值與標(biāo)準(zhǔn)值的差值。每一項(xiàng)評(píng)估生成一條包含OAR名稱、評(píng)估項(xiàng)目、標(biāo)準(zhǔn)值、當(dāng)前值和差值的評(píng)估結(jié)果。評(píng)估結(jié)果將傳遞給結(jié)果輸出模塊進(jìn)行處理。
在評(píng)估標(biāo)準(zhǔn)文件中列出了我院《放射治療計(jì)劃制作規(guī)范》中所有要求進(jìn)行DVH評(píng)估的OAR,每一個(gè)OAR均有劑量體積、最大受照劑量、平均劑量3個(gè)項(xiàng)目的評(píng)估標(biāo)準(zhǔn)值。當(dāng)某一OAR不需要進(jìn)行某個(gè)項(xiàng)目的評(píng)估時(shí),該項(xiàng)目的標(biāo)準(zhǔn)值為0,評(píng)估方法忽略該項(xiàng)目的評(píng)估過程,直接生成一條空白評(píng)估結(jié)果。
2.4.1 劑量體積評(píng)估
以O(shè)AR膀胱為例,其放射劑量限值評(píng)估標(biāo)準(zhǔn)為劑量體積V40<50%,即接受大于等于4 000 cGy受照劑量的體積小于總體積的50%。采用CheckVolume方法讀取放療計(jì)劃DVH中膀胱的V40數(shù)值,與標(biāo)準(zhǔn)值進(jìn)行比較并生成評(píng)估結(jié)果。CheckVolume方法使用PlanSetup對(duì)象的GetVolumeAtDose方法獲取當(dāng)前評(píng)估器官膀胱的劑量體積信息[3]。調(diào)用GetVolume-AtDose方法需要使用下列3個(gè)參數(shù):(1)需要查詢的結(jié)構(gòu);(2)需要查詢的參考劑量;(3)體積數(shù)值的顯示方式。實(shí)現(xiàn)劑量體積評(píng)估功能的主要代碼如下:
上述代碼的參數(shù)設(shè)置中使用自定義VolumeAt-Dose結(jié)構(gòu)的Dose屬性和字符串cGy初始化一個(gè)Eclipse Scripting API中用來表示劑量的DoseValue結(jié)構(gòu),其代表需要查詢的受照劑量,此案例中即為4 000 cGy。使用VolumePresentation.Relative枚舉值表示將查詢的劑量體積數(shù)值設(shè)置為相對(duì)體積,即返回的劑量體積數(shù)值在0~100%內(nèi)。
2.4.2 最大受照劑量評(píng)估
以O(shè)AR脊髓為例,其放射劑量限值評(píng)估標(biāo)準(zhǔn)為最大受照劑量Dmax≤4 000 cGy。采用CheckDmax方法讀取放療計(jì)劃DVH中脊髓受照劑量的最大值,與標(biāo)準(zhǔn)值4 000 cGy進(jìn)行比較并生成評(píng)估結(jié)果。Check-Dmax方法首先使用PlanSetup對(duì)象的GetDVHCumulativeData方法獲取評(píng)估器官的累積劑量數(shù)據(jù)。累積劑量數(shù)據(jù)包括最大受照劑量、最小受照劑量、平均劑量等多個(gè)項(xiàng)目,均使用DoseValue結(jié)構(gòu)表示,其中DoseValue結(jié)構(gòu)的Dose屬性為劑量數(shù)值,Unit屬性代表對(duì)應(yīng)的單位cGy或Gy。CheckDmax方法讀取最大受照劑量MaxDose中的Dose屬性獲取最大受照劑量的數(shù)值并與標(biāo)準(zhǔn)值進(jìn)行比較。調(diào)用GetDVHCumulativeData方法需要使用下列4個(gè)參數(shù):(1)需要查詢的結(jié)構(gòu);(2)需要查詢獲取的劑量數(shù)值的表示方式;(3)體積數(shù)值的表示方式;(4)累積劑量數(shù)據(jù)統(tǒng)計(jì)矩陣網(wǎng)格分辨力,Eclipse Scripting API默認(rèn)設(shè)置為0.1。實(shí)現(xiàn)最大受照劑量評(píng)估功能的主要代碼如下:CheckMax(Structure structure,double max)//CheckMax方法定義代碼
上述代碼在為GetDVHCumulativeData方法設(shè)置參數(shù)時(shí),使用Eclipse Scripting API內(nèi)置的Dose-ValuePresentation.Absolute枚舉值將獲取的劑量設(shè)置為絕對(duì)劑量,默認(rèn)單位為cGy;使用VolumePresentation.AbsoluteCm3枚舉值將體積數(shù)值設(shè)置為絕對(duì)體積,默認(rèn)單位為ml。
2.4.3 平均劑量評(píng)估
采用CheckDmean方法調(diào)用PlanSetup對(duì)象的GetDVHCumulativeData方法獲取當(dāng)前評(píng)估器官的累積劑量數(shù)據(jù),然后讀取累積劑量數(shù)據(jù)的MeanDose屬性獲取平均受照劑量,并讀取其Dose屬性獲取平均受照劑量數(shù)值,與標(biāo)準(zhǔn)值進(jìn)行比較,生成評(píng)估結(jié)果。
PTV的評(píng)估項(xiàng)目包括以下3項(xiàng):(1)近似最小吸收劑量D98%應(yīng)大于等于處方劑量;(2)靶區(qū)的最大受照劑量應(yīng)小于等于處方劑量的107%;(3)處方劑量總體積與靶區(qū)體積的比值小于等于1.2。與OAR評(píng)估模塊的工作流程相同,PTV評(píng)估模塊首先在評(píng)估標(biāo)準(zhǔn)文件中讀取PTV的3個(gè)項(xiàng)目的評(píng)估標(biāo)準(zhǔn)值,然后調(diào)用對(duì)應(yīng)方法獲取需要評(píng)估的DVH信息,進(jìn)行比較計(jì)算差值,生成評(píng)估結(jié)果。PTV的最大受照劑量評(píng)估與OAR最大受照劑量評(píng)估方法相似。
2.5.1 近似最小吸收劑量D98%評(píng)估
近似最小吸收劑量D98%用于評(píng)估PTV的最低吸收劑量。評(píng)估模塊使用CheckD98方法調(diào)用PlanSetup對(duì)象的GetDoseAtVolume方法獲取PTV體積劑量并將該劑量與處方劑量進(jìn)行比較,生成評(píng)估結(jié)果。調(diào)用GetDoseAtVolume方法需要使用下列4個(gè)參數(shù):(1)需要查詢的結(jié)構(gòu);(2)需要查詢的體積,此處設(shè)置為相對(duì)體積的98%;(3)體積的表示方式,此處設(shè)置為相對(duì)體積;(4)劑量的表示方式,此處設(shè)置為絕對(duì)劑量。實(shí)現(xiàn)近似最小吸收劑量D98%評(píng)估功能的主要代碼如下:
2.5.2 處方劑量總體積與靶區(qū)體積的比值評(píng)估
為了獲取受到處方劑量照射的總體積,使用GetVolumeAtDose方法將結(jié)構(gòu)組中代表受照總體積的Body結(jié)構(gòu)作為查詢對(duì)象,即可得到該體積數(shù)值,將該數(shù)值與PTV體積數(shù)值相除得到的比值與標(biāo)準(zhǔn)值進(jìn)行比較,即可完成評(píng)估。
隨機(jī)調(diào)取我院Eclipse軟件中15例調(diào)強(qiáng)放射治療計(jì)劃,其中頭頸、胸腹、盆腔各5例,逐一運(yùn)行該軟件進(jìn)行DVH評(píng)估,記錄并輸出結(jié)果。放療物理師逐一手工查看放療計(jì)劃進(jìn)行DVH評(píng)估,核對(duì)評(píng)估項(xiàng)目和結(jié)果。2種評(píng)估方式結(jié)果對(duì)比顯示,本文設(shè)計(jì)的軟件自動(dòng)評(píng)估結(jié)構(gòu)數(shù)、評(píng)估項(xiàng)目數(shù)均與手工評(píng)估一致,符合功能設(shè)計(jì)要求。測(cè)試結(jié)果匯總見表1。
表1 2種評(píng)估方式評(píng)估項(xiàng)目結(jié)果對(duì)比(n=15)
2018年1—10月,我院腫瘤放療中心放療物理師在放療計(jì)劃設(shè)計(jì)、制訂工作中,使用該軟件累計(jì)對(duì)764個(gè)調(diào)強(qiáng)放療計(jì)劃進(jìn)行DVH評(píng)估。該軟件檢索評(píng)估的結(jié)構(gòu)數(shù)和項(xiàng)目數(shù)均與評(píng)估標(biāo)準(zhǔn)一致,軟件評(píng)估結(jié)果與手工評(píng)估結(jié)果一致。放療計(jì)劃DVH評(píng)估軟件因其使用便捷、運(yùn)行快速、評(píng)估精確的優(yōu)勢(shì),可以完全取代放療物理師手工評(píng)估。該軟件的設(shè)計(jì)與實(shí)現(xiàn)改進(jìn)了放療物理師評(píng)估DVH的工作模式,提高了DVH的評(píng)估效率,切實(shí)滿足了放療物理師臨床工作需求。
不同于以往獨(dú)立運(yùn)行的DVH評(píng)估軟件,本文使用EclipseScriptingAPI開發(fā)的自動(dòng)化DVH評(píng)估軟件以Eclipse功能插件的形式整合在Eclipse軟件中,擴(kuò)展了Eclipse軟件的功能,使放療物理師在使用Eclipse軟件設(shè)計(jì)、制訂放療計(jì)劃時(shí),無需離開Eclipse主界面,就能夠使用該軟件自動(dòng)化評(píng)估DVH。放療計(jì)劃DVH評(píng)估軟件具有使用簡(jiǎn)單、運(yùn)行快速、評(píng)估準(zhǔn)確等優(yōu)點(diǎn),能夠讓放療物理師實(shí)現(xiàn)“一鍵式”放療計(jì)劃DVH評(píng)估,減少了評(píng)估用時(shí),提高了設(shè)計(jì)、制訂放療計(jì)劃的效率,方便了臨床工作。該軟件的下一步研究方向是開發(fā)調(diào)強(qiáng)放療計(jì)劃優(yōu)化目標(biāo)參數(shù)調(diào)整模塊,使其能夠根據(jù)軟件輸出的DVH評(píng)估結(jié)果自動(dòng)調(diào)整未達(dá)標(biāo)結(jié)構(gòu)的優(yōu)化目標(biāo)參數(shù),使放療物理師能夠更有針對(duì)性地調(diào)整優(yōu)化調(diào)強(qiáng)放療計(jì)劃,進(jìn)一步提高工作效率。