莫文杰,黃金漢,徐 升,羅傳文,唐 浩
(恩施土家族苗族自治州中心醫院腫瘤放療中心,湖北恩施 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評估結果自動調整未達標結構的優化目標參數,使放療物理師能夠更有針對性地調整優化調強放療計劃,進一步提高工作效率。