太阳城集团

  • / 36
  • 下载费用:30 金币  

基于PINNACLE计划系统的直肠癌VMAT计划自动生成方法.pdf

关 键 词:
基于 PINNACLE 计划 系统 直肠癌 VMAT 自动 生成 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201510801845.5

申请日:

2015.11.19

公开号:

CN105224822A

公开日:

2016.01.06

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 19/00申请日:20151119|||公开
IPC分类号: G06F19/00(2011.01)I 主分类号: G06F19/00
申请人: 四川大学华西医院
发明人: 宋莹; 王强; 蒋晓芹; 刘莎; 张英杰; 柏森
地址: 610041 四川省成都市武侯区国学巷37号
优先权:
专利代理机构: 成都高远知识产权代理事务所(普通合伙) 51222 代理人: 李高峡
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201510801845.5

授权太阳城集团号:

|||

法律状态太阳城集团日:

2016.02.03|||2016.01.06

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

本发明公开一种基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,包括定位太阳城集团检查、辅助轮廓生成、计划中心点生成、添加射野、添加剂量以及计划优化等步骤。本发明在无人工干预的情况下,自动完成直肠癌VMAT计划的设计,能够很好地满足临床需要,获得高质量的放射治疗计划。

权利要求书

权利要求书
1.  基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,其特征在于,包括以下步骤:
a、将患者的放疗计划CT导入到Pinnacle系统中,并勾画好直肠癌放疗靶区PTV以及相应的危及器官,所述危及器官包括左股骨头、右股骨头、膀胱、小肠,并将左股骨头、右股骨头、膀胱、小肠分别命名为Lfemoralhead、Rfemoralhead、Bladder、Smallintestine,设定临床分次治疗剂量McGy和分次数N,在Pinnacle系统中患者放疗计划的CT图像上进行去床和锁床操作,框定需要进行放疗计划计量计算的CT图像范围,标记定位CT扫描时固定于患者体表前方、左侧和右侧三个标记点,在三个标记点同时出现的CT层面,设置能连接三个标记点并贯穿左右前后两个方向的十字线,将十字线交叉处设为CT图像空间的坐标原点,并标记为locref;
b、在Pinnacle系统中建立定位太阳城集团检查脚本SetupCheckandStart.Script和主函数脚本Main.Script,在定位太阳城集团检查脚本SetupCheckandStart.Script中指定CT密度曲线,并检查移床和锁床操作,当移床和锁床操作满足条件时,调用主函数脚本Main.Script,所述主函数脚本Main.Script用于设计直肠癌VMAT计划;
c、在Pinnacle系统中建立勾画轮廓杂点的清除脚本CleanSmallRegion.Script,所述清除脚本CleanSmallRegion.Script通过主函数脚本Main.Script调用;
d、在Pinnacle系统中建立计划设计辅助轮廓生成脚本CreatingContours.Script,和计划设计旋转中心点的生成脚本ISOPointGeneration.Scr;所述脚本ISOPointGeneration.Script用于生成在PTV中心的旋转中心点iso1,并将iso1与locref的偏移坐标进行取整,所述计划设计辅助轮廓生成脚本CreatingContours.Script、计划设计旋转中心点的生成脚本ISOPointGeneration.Scr均通过主函数脚本Main.Script调用;
e、在Pinnacle系统中建立添加射野脚本AddBeam.Script,所述添加射野脚本AddBeam.Script通过主函数脚本Main.Script调用;
f、在Pinnacle系统中建立设定剂量脚本DosePrescription.Script,所述设定剂量脚本DosePrescription.Script通过主函数脚本Main.Script调用;
g、在Pinnacle系统中建立放疗计划优化主函数脚本MainInvPlanning.Script,所述放疗计划优化主函数脚本MainInvPlanning.Script通过主函数脚本Main.Script调用,放疗计划优化主函数脚本MainInvPlanning.Script调用初始优化子函数VMATInitialization.Scrip、主优化子函数InvPlanningMainLoop.Script和局部微调子函数AdjustInitialization.Script。
h、在Pinnacle治疗计划系统的HotScripts界面触发定位太阳城集团检查脚本SetupCheckandStart.Script。

2.  根据权利要求1所述的基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,其特征在于,所述定位太阳城集团检查脚本SetupCheckandStart.Script的脚本代码包括:
WindowList.CTSim.PanelList.#"#0".GotoPanel="FunctionLayoutIcon0";
ViewWindowList.#"*".CineOnOff="0";
TrialList.Current.CtToDensityName="$";
TrialList.Current.PatientRepresentation.CtToDensityTableAccepted="0";
Store.FreeAt.Flag="";
Store.FloatAt.Flag=1;
Store.FreeAt.TempString="";
Store.StringAt.TempString="0";
Store.FreeAt.tempFloat="";
Store.FloatAt.tempFloat=0;
AskYesNoPrompt="Thecouchhasnotremoved!Pleasecheck!";
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.THEN.AskYesNo;
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.THEN.Store.At.Flag=0;
AskYesNoPrompt="Thecouchhasnotlocked!Pleasecheck!";
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.AskYesNo;
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.Store.At.Flag=0;
Store.FreeAt.TempString="";
Store.FreeAt.tempFloat="";
Store.FreeAt.Continue="";
Store.StringAt.Continue="";
IF.Store.At.Flag.Value.THEN.Store.At.Continue.String="/home/p3rtp/Main.Script";
ExecuteNow=Store.At.Continue.String;
Store.FreeAt.Continue="";
Store.FreeAt.Flag="";
所述主函数脚本Main.Script的脚本代码包括:
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/¥.Script";
ExecuteNow=Store.At.TempReloadScript.String;
所述清除脚本CleanSmallRegion.Script的脚本代码包括:
RoiList.#"*".CurveMinArea="0.5";
RoiList.#"*".Clean="Rescan";
RoiList.#"*".CleanAndDelete="DeleteCurves"。

3.  根据权利要求1所述的基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,其特征在于,所述放疗计划优化主函数脚本MainInvPlanning.Script的脚本代码包括:
代码段1:
//Initialiteration
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/DeleteObjectives.Script";
ExecuteNow=Store.At.TempReloadScript.String;
//loadtheprotocol
WindowList.IMRTProtocolWindow.Create="Protocols...";
PluginManager.InversePlanningManager.ProtocolManager.FileList.FileOnly="RectumObjectives";
PluginManager.InversePlanningManager.ProtocolManager.Load="Load";
WindowList.IMRTProtocolWindow.Unrealize="CloseWindow";
//VMATInitialization
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=3;
//Definethespecificscript
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/VMATInitialization.Script";
ExecuteNow=Store.At.TempReloadScript.String;
代码段2:
//OrganObjectiveLimitSetting
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn="";
Store.FloatAt.BladderDoseUp=0.005;
Store.FloatAt.BladderDoseDn=0.003;
Store.FloatAt.BladderEUDUp=0.007;
Store.FloatAt.BladderEUDDn=0.005;
Store.FloatAt.SmlintDoseUp=0.005;
Store.FloatAt.SmlintDoseDn=0.003;
Store.FloatAt.SmlintEUDUp=0.007;
Store.FloatAt.SmlintEUDDn=0.005;
PluginManager.InversePlanningManager.RefreshObjectiveValues="RecomputeValues";
Store.FreeAt.CompositeOBJV="";
Store.At.CompositeOBJV.Value=PluginManager.InversePlanningManager.ObjectiveManager.OrbitObjectives.TrialObjectiveList.Current.Function.ValueDescr;
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=2;
Store.FreeAt.FirstIter="";
Store.FloatAt.FirstIter=1;
//JudgewhethertheInvPlanningisready
IF.Store.At.CompositeOBJV.Value.GREATERTHAN.#"#0.01".THEN.Script.ExecuteNow="/home/p3rtp/InvPlanningMainLoop.Script";
Store.FreeAt.SubIterNum="";
Store.FreeAt.FirstIter="";
代码段3:
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Weight="100";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Weight="100";
ImrtTemplateLayout="Optimization";
WindowList.IMRTTemplate.Create="IMRTParameters...";
PluginManager.InversePlanningManager.OptimizationManager.Current.TrialList.Current.MaxIterations="22";
PluginManager.InversePlanningManager.TrialList.Current.DoseIteration="11";
PluginManager.InversePlanningManager.TrialList.Current.ComputeFinalDose=1;
WindowList.IMRTTemplate.Uncrealize="CloseWindow";
//StartOptimization
PluginManager.InversePlanningManager.Initialize="StartOptimization";
Store.FreeAt.CompositeOBJV="";
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn=""。

4.  根据权利要求1所述的基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,其特征在于,所述主优化子函数InvPlanningMainLoop.Script采用双弧逆向优化。

说明书

说明书基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法
技术领域
本发明涉及医疗领域,尤其涉及一种基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法。
背景技术
目前,直肠癌已经成为临床常见的高发病种,直肠癌放射治疗的需求逐渐增多。放射治疗(RadiationTherapy)是治疗肿瘤的三种有效手段之一。放射治疗首先需要获取患者的定位CT并进行放疗计划设计,然后再将放疗计划导入加速器系统对患者进行治疗,因此,放疗计划设计是放射治疗流程中的重要步骤。旋转容积调强(Volumetric-ModulatedArcTherapy,VMAT)是近年发展起来的一种放射治疗调强技术,与传统的静态调强技术相比,旋转容积调强技术具有靶区适形性强、治疗效率高、危及器官保护效果好等突出优点。直肠癌VMAT放射治疗是直肠癌较为理想的放射治疗方式。现有的直肠癌VMAT计划生成方法存在以下问题和缺点:
1、直肠癌VMAT放射治疗计划的生成需要求解大规模的剂量计算和优化问题,计算太阳城集团很长,大量占用人力和物力资源;
2、直肠癌VMAT放射治疗计划的设计需要剂量师的全程参与,通常情况下,剂量师需要反复试错对计划设计参数进行调整,以获得质量较高的计划。并且,治疗计划的质量很大程度上依赖于剂量师的个人经验。
直肠癌VMAT放射治疗计划设计的学习和培训周期较长,短太阳城集团内很难提高剂量师的治疗计划设计水平,从而VMAT治疗计划的设计质量和一致性难以得到保证。
发明内容
本发明旨在提供一种基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,在无人工干预的情况下,自动完成直肠癌VMAT计划的设计,能够很好地满足临床需要。
为达到上述目的,本发明是采用以下技术方案实现的:
本发明公开的基于Pinnacle计划系统的直肠癌VMAT计划自动生成方法,包括以下步骤:
a、将患者的放疗计划CT导入到Pinnacle系统中,并勾画好直肠癌放疗靶区PTV以及相应的危及器官,所述危及器官包括左股骨头、右股骨头、膀 胱、小肠,并将左股骨头、右股骨头、膀胱、小肠分别命名为Lfemoralhead、Rfemoralhead、Bladder、Smallintestine,设定临床分次治疗剂量McGy和分次数N,在Pinnacle系统中患者放疗计划的CT图像上进行去床和锁床操作,框定需要进行放疗计划计量计算的CT图像范围,标记定位CT扫描时固定于患者体表前方、左侧和右侧三个标记点,在三个标记点同时出现的CT层面,设置能连接三个标记点并贯穿左右前后两个方向的十字线,将十字线交叉处设为CT图像空间的坐标原点,并标记为locref;
b、在Pinnacle系统中建立定位太阳城集团检查脚本SetupCheckandStart.Script和主函数脚本Main.Script,在定位太阳城集团检查脚本SetupCheckandStart.Script中指定CT密度曲线,并检查移床和锁床操作,当移床和锁床操作满足条件时,调用主函数脚本Main.Script,所述主函数脚本Main.Script用于设计直肠癌VMAT计划;
c、在Pinnacle系统中建立勾画轮廓杂点的清除脚本CreatingContours.Script,所述清除脚本CreatingContours.Script通过主函数脚本Main.Script调用;
d、在Pinnacle系统中建立计划设计辅助轮廓生成脚本CreatingContours.Script,和计划设计旋转中心点的生成脚本ISOPointGeneration.Scr;所述脚本ISOPointGeneration.Script用于生成在PTV中心的旋转中心点iso1,并将iso1与locref的偏移坐标进行取整,所述计划设计辅助轮廓生成脚本CreatingContours.Script、计划设计旋转中心点的生成脚本ISOPointGeneration.Scr均通过主函数脚本Main.Script调用;
e、在Pinnacle系统中建立添加射野脚本AddBeam.Script,所述添加射野脚本AddBeam.Script通过主函数脚本Main.Script调用;
f、在Pinnacle系统中建立设定剂量脚本DosePrescription.Script,所述设定剂量脚本DosePrescription.Script通过主函数脚本Main.Script调用;
g、在Pinnacle系统中建立放疗计划优化主函数脚本MainInvPlanning.Script,所述放疗计划优化主函数脚本MainInvPlanning.Script通过主函数脚本Main.Script调用,放疗计划优化主函数脚本MainInvPlanning.Script调用初始优化子函数VMATInitialization.Scrip、主优化子函数InvPlanningMainLoop.Script和局部微调子函数AdjustInitialization.Script。
h、在Pinnacle治疗计划系统的HotScripts界面触发定位太阳城集团检查脚本SetupCheckandStart.Script。
优选的,所述定位太阳城集团检查脚本SetupCheckandStart.Script的脚本代码包括:
WindowList.CTSim.PanelList.#"#0".GotoPanel="FunctionLayoutIcon0";
ViewWindowList.#"*".CineOnOff="0";
TrialList.Current.CtToDensityName="$";
TrialList.Current.PatientRepresentation.CtToDensityTableAccepted="0";
Store.FreeAt.Flag="";
Store.FloatAt.Flag=1;
Store.FreeAt.TempString="";
Store.StringAt.TempString="0";
Store.FreeAt.tempFloat="";
Store.FloatAt.tempFloat=0;
AskYesNoPrompt="Thecouchhasnotremoved!Pleasecheck!";
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.THEN.AskYesNo;
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.THEN.Store.At.Flag=0;
AskYesNoPrompt="Thecouchhasnotlocked!Pleasecheck!";
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.AskYesNo;
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.Store.At.Flag=0;
Store.FreeAt.TempString="";
Store.FreeAt.tempFloat="";
Store.FreeAt.Continue="";
Store.StringAt.Continue="";
IF.Store.At.Flag.Value.THEN.Store.At.Continue.String="/home/p3rtp/Main.Script″;
ExecuteNow=Store.At.Continue.String;
Store.FreeAt.Continue="";
Store.FreeAt.Flag="";
所述主函数脚本Main.Script的脚本代码包括:
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/¥.Script";
ExecuteNow=Store.At.TempReloadScript.String;
所述清除脚本CleanSmallRegion.Script的脚本代码包括:
RoiList.#"*".CurveMinArea="0.5";
RoiList.#"*".Clean="Rescan";
RoiList.#"*".CleanAndDelete="DeleteCurves";。
优选的,所述放疗计划优化主函数脚本MainInvPlanning.Script的脚本代码包括:
代码段1:
//Initialiteration
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/DeleteObjectives.Script";
ExecuteNow=Store.At.TempReloadScript.String;
//loadtheprotocol
WindowList.IMRTProtocolWindow.Create="Protocols...";
PluginManager.InversePlanningManager.ProtocolManager.FileList.FileOnly="RectumObjectives";
PluginManager.InversePlanningManager.ProtocolManager.Load="Load";
WindowList.IMRTProtocolWindow.Unrealize="CloseWindow";
//VMATInitialization
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=3;
//Definethespecificscript
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/VMATInitialization.Script";
ExecuteNow=Store.At.TempReloadScript.String;
代码段2:
//OrganObjectiveLimitSetting
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn="";
Store.FloatAt.BladderDoseUp=0.005;
Store.FloatAt.BladderDoseDn=0.003;
Store.FloatAt.BladderEUDUp=0.007;
Store.FloatAt.BladderEUDDn=0.005;
Store.FloatAt.SmlintDoseUp=0.005;
Store.FloatAt.SmlintDoseDn=0.003;
Store.FloatAt.SmlintEUDUp=0.007;
Store.FloatAt.SmlintEUDDn=0.005;
PluginManager.InversePlanningManager.RefreshObjectiveValues="RecomputeValues";
Store.FreeAt.CompositeOBJV="";
Store.At.CompositeOBJV.Value=
PluginManager.InversePlanningManager.ObjectiveManager.OrbitObjectives.TrialObjectiveList.Current.Function.ValueDescr;
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=2;
Store.FreeAt.FirstIter="";
Store.FloatAt.FirstIter=1;
//JudgewhethertheInvPlanningisready
IF.Store.At.CompositeOBJV.Value.GREATERTHAN.#"#0.01".THEN.Script.ExecuteNow="/home/p3rtp/InvPlanningMainLoop.Script";
Store.FreeAt.SubIterNum="";
Store.FreeAt.FirstIter="";
代码段3:
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Weight="100";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Weight="100";
ImrtTemplateLayout="Optimization";
WindowList.IMRTTemplate.Create="IMRTParameters...";
PluginManager.InversePlanningManager.OptimizationManager.Current.TrialList.Current.MaxIterations="22";
PluginManager.InversePlanningManager.TrialList.Current.DoseIteration="11";
PluginManager.InversePlanningManager.TrialList.Current.ComputeFinalDose=1;
WindowList.IMRTTemplate.Uncrealize="CloseWindow";
//StartOptimization
PluginManager.InversePlanningManager.Initialize="StartOptimization";
Store.FreeAt.CompositeOBJV="";
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn="";。
优选的,所述主优化子函数InvPlanningMainLoop.Script采用双弧逆向优化。
本发明按照Pinnacle计划设计的流程,完成了整个计划设计的所有步骤,包括定位太阳城集团检查、辅助轮廓生成、计划中心点生成、添加射野、设置剂量及分次、添加指定剂量显示线以及逆向计划优化。在逆向计划优化步骤中,通过总结资深计量师的计划设计经验,合理设计算法控制流程,使得Pinnacle逆向优化参数能够得到合理的动态调整,获得高质量的放射治疗计划。
本发明所有操作的实现,均通过Pinnacle脚本进行,因此该方法的可移植性强,该计划自动生成系统可以在任意Pinnacle商用计划系统上执行。
附图说明
图1为本发明的流程图;
图2为主初始化优化的流程图;
图3为主优化的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。
如图1、图2、图3所示,在放疗计划设计开始之前,患者的放疗计划CT应导入到Pinnacle系统中,并由放疗医师勾画好直肠癌放疗靶区PTV以及相 应的危及器官左右股骨头(命名为Lfemoralhead和Rfemoralhead)、膀胱(命名为Bladder)、小肠(命名为Smallintestine),给出临床分次治疗剂量McGy和分次数N,由剂量师在Pinnacle系统中患者放疗计划的CT图像上根据科室情况进行去床和锁床操作,框定需要进行放疗计划计量计算的CT图像范围,标记定位CT扫描时固定于患者体表前方、左侧和右侧三个标记点,在三个标记点同时出现的CT层面,设置能连接三个标记点并贯穿左右前后两个方向的十字线,记十字线交叉处为CT图像空间的坐标原点,并记为“locref”。
(一)直肠癌VMAT计划Pinnacle脚本的编写;
1、定位太阳城集团检查及主函数构建;
1.1)编写并保存脚本SetupCheckandStart.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,将文件名命名为“SetupCheckandStart.Script”,并在其中录入如下脚本代码:
WindowList.CTSim.PanelList.#"#0".GotoPanel="FunctionLayoutIcon0";
ViewWindowList.#"*".CineOnOff="0";
TrialList.Current.CtToDensityName="$";
TrialList.Current.PatientRepresentation.CtToDensityTableAccepted="0";
Store.FreeAt.Flag="";
Store.FloatAt.Flag=1;
Store.FreeAt.TempString="";
Store.StringAt.TempString="0";
Store.FreeAt.tempFloat="";
Store.FloatAt.tempFloat=0;
AskYesNoPrompt="Thecouchhasnotremoved!Pleasecheck!";
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.
THEN.AskYesNo;
IF.TrialList.Current.RemoveCouchFromScan.EQUALTO.Store.At.tempFloat.
THEN.Store.At.Flag=0;
AskYesNoPrompt="Thecouchhasnotlocked!Pleasecheck!";
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.AskYesNo;
IF.TrialList.Current.LaserLocalizer.LockCouch.EQUALTO.Store.At.TempString.THEN.Store.At.Flag=0;
Store.FreeAt.TempString="";
Store.FreeAt.tempFloat="";
Store.FreeAt.Continue="";
Store.StringAt.Continue="";
IF.Store.At.Flag.Value.THEN.Store.At.Continue.String="/home/p3rtp/Main.Script";
ExecuteNow=Store.At.Continue.String;
Store.FreeAt.Continue="";
Store.FreeAt.Flag="";
上述脚本代码指定了命名为“$”的CT密度曲线,并检查了移床和锁床操作,当都满足条件时,则调用Main.Script进行放疗计划设计;
1.2)编写脚本Main.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,将文件名命名为“Main.Script”,并在其中录入如下脚本代码:
代码段1:Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/¥.Script";
ExecuteNow=Store.At.TempReloadScript.String;
……
上述代码表明调用的是命名为“¥.Script”的脚本。Main.Script调用执行了多个脚本以完成整个放疗计划设计,其中调用的脚本名依次为CleanSmallRegion.Script、CreatingContours.Script、ISOPointGeneration.Script、AddBeam.Script、DosePrescription.Script、MainInvPlanning.Script。即在“……”符号标示的位置进行多次代码段1 的复制扩充,每次将调用脚本名称“¥.Script”填写为具体脚本名称即可;
2、勾画轮廓杂点的清除;
2.1)编写脚本CleanSmallRegion.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,将文件名命名为“CleanSmallRegion.Script”,并在其中录入如下脚本代码:
RoiList.#"*".CurveMinArea="0.5";
RoiList.#"*".Clean="Rescan";
RoiList.#"*".CleanAndDelete="DeleteCurves";
3、计划设计辅助轮廓生成;
3.1)编写脚本CreatingContours.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,将文件名命名为“CreatingContours.Script”,并在其中录入如下脚本代码:











上述脚本代码生成了一系列计划设计所需的辅助轮廓,并根据其意义进行了命名。所生成的轮廓总结如表一所示:
表一计划优化辅助轮廓列表
名称定义PTV-3mmPTV向缩3mm形成的轮廓Ring 1PTV 5mm外形成的5mm的球壳Ring 2PTV 10mm外形成的5mm的球壳Fan upPTV矢状前侧10mm外到皮肤表面的扇形区域Fan downPTV矢状后侧10mm外到皮肤表面的扇形区域NT 1PTV 2cm外的所有CT区域NT 2PTV 3cm外的所有CT区域BladderAvoidBladder去掉PTV外扩5mm的区域SmaIntAvoidSmall intestine去掉PTV外扩5mm的区域
4、计划设计旋转中心点的生成;
4.1)编写脚本ISOPointGeneration.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,将文件名命名为“ISOPointGeneration.Script”并在其中录入如下脚 本代码:
WindowList.CTSim.PanelList.#"#1".GotoPanel="FunctionLayoutIcon1";
TrialList.Current.LaserLocalizer.LockJaw="0";
ViewWindowList.#"*".CineOnOff="0";
//PlacethePOI
CreateNewPOI="AddPoint";
PoiList.Current.Name="iso1";
PoiList.Current.PoiInterpretedType="ISOCENTER";
//WindowList.PoiAutoplace.Create="AutoplacePOI...";
RoiList.Current="PTV";
PoiAutoplaceMode="Centroid";
AutoplaceCurrentPoi="AutomaticallyPlacePoint";
//WindowList.PoiAutoplace.Unrealize="Dismiss";
//getthelocationoflocref
Store.FreeAt.RXCoordloc="";
Store.FreeAt.RYCoordloc="";
Store.FreeAt.RZCoordloc="";
Store.FloatAt.RXCoordloc=PoiList.#"locref".RelativeXCoord.String;
Store.FloatAt.RYCoordloc=PoiList.#"locref".RelativeYCoord.String;
Store.FloatAt.RZCoordloc=PoiList.#"locref".RelativeZCoord.String;
//getthelocationofiso1
Store.FreeAt.RXCoordiso1="";
Store.FreeAt.RYCoordiso1="";
Store.FreeAt.RZCoordiso1="";
Store.FloatAt.RXCoordiso1=PoiList.#"iso1".RelativeXCoord.String;
Store.FloatAt.RYCoordiso1=PoiList.#"iso1".RelativeYCoord.String;
Store.FloatAt.RZCoordiso1=PoiList.#"iso1".RelativeZCoord.String;
//getthesubstractionofthetwopoints
Store.FreeAt.RXCoord="";
Store.FreeAt.RYCoord="";
Store.FreeAt.RZCoord="";
Store.FloatAt.RXCoord=PoiList.#"iso1".RelativeXCoord.String;
Store.FloatAt.RYCoord=PoiList.#"iso1".RelativeYCoord.String;
Store.FloatAt.RZCoord=PoiList.#"iso1".RelativeZCoord.String;
Store.At.RXCoord.Subtract=Store.At.RXCoordloc.Value;
Store.At.RYCoord.Subtract=Store.At.RYCoordloc.Value;
Store.At.RZCoord.Subtract=Store.At.RZCoordloc.Value;
//roundthefloattointeger
Store.At.RXCoord.Nint="";
Store.At.RYCoord.Nint="";
Store.At.RZCoord.Nint="";
//settheproperlocation
Store.At.RXCoordloc.Add=Store.At.RXCoord.Value;
Store.At.RYCoordloc.Add=Store.At.RYCoord.Value;
Store.At.RZCoordloc.Add=Store.At.RZCoord.Value;
PoiList.#"iso1".RelativeXCoord=Store.At.RXCoordloc.Value;
PoiList.#"iso1".RelativeYCoord=Store.At.RYCoordloc.Value;
PoiList.#"iso1".RelativeZCoord=Store.At.RZCoordloc.Value;
//cleanthevariables
Store.FreeAt.RXCoordloc="";
Store.FreeAt.RYCoordloc="";
Store.FreeAt.RZCoordloc="";
Store.FreeAt.RXCoordiso1="";
Store.FreeAt.RYCoordiso1="";
Store.FreeAt.RZCoordiso1="";
Store.FreeAt.RXCoord="";
Store.FreeAt.RYCoord="";
Store.FreeAt.RZCoord="";
上述代码新生成了靶区PTV中心的旋转中心点“iso1”,为了便于中心点移位复位操作,代码将iso1与locref的偏移坐标进行了取整;
5、添加射野;
5.1)编写脚本AddBeam.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,并将文件名命名为“AddBeam.Script”,并在其中录入如下脚本代码:
WindowList.CTSim.PanelList.#"#3".GotoPanel="FunctionLayoutIcon3";
TrialList.Current.LaserLocalizer.LockJaw="0";
ViewWindowList.#"*".CineOnOff="0";
CreateNewBeam="AddBeam";
TrialList.Current.BeamList.Current.SetBeamType="DynamicArc";
6、设定剂量;
6.1)编写脚本DosePrescription.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,并将文件名命名为“DosePrescription.Script”,并在其中录入如下脚本代码:
WindowList.CTSim.PanelList.#"#4".GotoPanel="FunctionLayoutIcon4";
ViewWindowList.#"*".CineOnOff="0";
TrialList.Current.PrescriptionList.#"#0".
TrialList.Current.PrescriptionList.Current.PrescriptionDose="M";
TrialList.Current.PrescriptionList.Current.NumberOfFractions="N";
TrialList.Current.PrescriptionList.Current.NormalizationMethod="ROIMean";
TrialList.Current.PrescriptionList.Current.PrescriptionRoi="PTV";
TrialList.Current.PrescriptionList.Current.PrescriptionPeriod="PerFraction";
该脚本根据放疗医生给定的剂量处方,设定命名为的剂量处方每次剂量为McGy,一共N次,归一化标准为PTV的平均剂量;
7、放疗计划的优化和生成
放疗计划的生成包括三个步骤:初始优化、主优化和局部微调。其具体实施步骤如下:
7.1)放疗计划优化主函数的构建:
7.1.1)编写脚本MainInvPlanning.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,并将文件名命名为“MainInvPlanning.Script”,并在其中录入如下三 段脚本:
代码段1:
//Initialiteration
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/DeleteObjectives.Script";
ExecuteNow=Store.At.TempReloadScript.String;
//loadtheprotocol
WindowList.IMRTProtocolWindow.Create="Protocols...";
PluginManager.InversePlanningManager.ProtocolManager.FileList.FileOnly="RectumObjectives";
PluginManager.InversePlanningManager.ProtocolManager.Load="Load";
WindowList.IMRTProtocolWindow.Unrealize="CloseWindow";
//VMATInitialization
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=3;
//Definethespecificscript
Store.FreeAt.TempReloadScript="";
Store.At.TempReloadScript.String="/home/p3rtp/VMATInitialization.Script″;
ExecuteNow=Store.At.TempReloadScript.String;
该代码段清除了多余的目标函数,载入了直肠癌VMAT放疗计划目标函数组“RectumObjectives”,并通过调用子函数VMATInitialization.Script完成初始优化。因可能存在一次初始优化失败的情况,需要多次进行初步调整和优化,因此设定子循环次数SubIterNum为3,在初始优化未达到条件的情况下进行最多3次VMATInitialization.Scrip的调用。
代码段2:
//OrganObjectiveLimitSetting
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn="";
Store.FloatAt.BladderDoseUp=0.005;
Store.FloatAt.BladderDoseDn=0.003;
Store.FloatAt.BladderEUDUp=0.007;
Store.FloatAt.BladderEUDDn=0.005;
Store.FloatAt.SmlintDoseUp=0.005;
Store.FloatAt.SmlintDoseDn=0.003;
Store.FloatAt.SmlintEUDUp=0.007;
Store.FloatAt.SmlintEUDDn=0.005;
PluginManager.InversePlanningManager.RefreshObjectiveValues="RecomputeValues";
Store.FreeAt.CompositeOBJV="";
Store.At.CompositeOBJV.Value=PluginManager.InversePlanningManager.ObjectiveManager.OrbitObjectives.TrialObjectiveList.Current.Function.ValueDescr;
Store.FreeAt.SubIterNum="";
Store.FloatAt.SubIterNum=2;
Store.FreeAt.FirstIter="";
Store.FloatAt.FirstIter=1;
//JudgewhethertheInvPlanningisready
IF.Store.At.CompositeOBJV.Value.GREATERTHAN.#"#0.01".THEN.Script.ExecuteNow="/home/p3rtp/InvPlanningMainLoop.Script";
Store.FreeAt.SubIterNum="";
Store.FreeAt.FirstIter="";
以上代码段为主优化过程,主要在InvPlanningMainLoop.Script中完成。记Pinnacle提供的各优化函数的Objectivevalue为Oi(i=1,2,...,25),所有优化函数Oi的和为CO,当优化类型为gEUD时Pinnacle提供的优化函数预期EUD值为gEUDi(i=11,13,...,25)。当CO>0.01时,认为初始优化结果已经满足要 求,无需进行主优化,否则将进行主优化过程。※Doseup、※Dosedn、※EUDup、※EUDdn(※分别为Bladder和Smlint)分别为Bladder和Smallintestine的优化函数所对应Oi的调整上下限值。
代码段三:
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#3".Weight="100";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Dose="5080";
PluginManager.InversePlanningManager.CombinedObjectiveList.#"#4".Weight="100";
ImrtTemplateLayout="Optimization";
WindowList.IMRTTemplate.Create="IMRTParameters...";
PluginManager.InversePlanningManager.OptimizationManager.Current.TrialList.Current.MaxIterations="22";
PluginManager.InversePlanningManager.TrialList.Current.DoseIteration="11";
PluginManager.InversePlanningManager.TrialList.Current.ComputeFinalDose=1;
WindowList.IMRTTemplate.Uncrealize="CloseWindow";
//StartOptimization
PluginManager.InversePlanningManager.Initialize="StartOptimization";
Store.FreeAt.CompositeOBJV="";
Store.FreeAt.BladderDoseUp="";
Store.FreeAt.BladderDoseDn="";
Store.FreeAt.BladderEUDUp="";
Store.FreeAt.BladderEUDDn="";
Store.FreeAt.SmlintDoseUp="";
Store.FreeAt.SmlintDoseDn="";
Store.FreeAt.SmlintEUDUp="";
Store.FreeAt.SmlintEUDDn="";
局部微调依次执行的操作为:1)将I4和I5的优化权重调整为100,以加强PTV剂量分布的均匀性;2)设置优化参数为:剂量计算迭代次数为11次,总逆向优化迭代次数为22次,对剂量分布进行局部微调。3)执行依次Pinnacle逆向优化;4)销毁所有用到的未销毁的变量。
7.2)初始优化及相关函数的构建:
7.2.1)编写脚本DeleteObjectives.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/路径下,并将文件名命名为“DeleteObjectives.Script”,并在其中录入如下脚本:
IF.PluginManager.InversePlanningManager.CombinedObjectiveList.HasElements.THEN.PluginManager.InversePlanningManager.DeleteCurrentObjective="DeleteObjective";
Store.StringAt.SelfCommand="/home/p3rtp/DeleteObjectives.Script";
IF.PluginManager.InversePlanningManager.CombinedObjectiveList.HasElements.THEN.Store.At.SelfCommand.Execute="";
Store.FreeAt.SelfCommand="";
因优化启动时,需载入预先设计的优化函数组,因此,需删除所有可能存在的优化函数;
7.2.2)设置并保存优化函数组RectumObjectives;
7.2.2.1)优化函数组RectumObjectives设计如下:
表二:优化函数组


7.2.2.2)优化函数组生成并保存为Pinnacle预设protocol:按照表二的优化函数组,在Pinnacle治疗计划系统的逆向优化界面下依次添加1至25个优化目标函数,打开Protocol界面,将当前优化函数组存为“RectumObjectives”,从而完成保存预设优化函数组为系统protocol的操作。
7.2.3)初始优化函数的结构和脚本构建;
7.2.3.1)编写脚本VMATInitialization.Script:通过文本编辑器新建一个空白文本文件,将文件保存在Pinnacle工作站系统目录/home/p3rtp/ 路径下,并将文件名命名为“VMATInitialization.Script”,并在其中录入如下脚本:
PluginManager.InversePlanningManager.ResetBeamsForIMRT="ResetBeams";
//Loadtheiterationparametersfortheinitialiteration,35/70iterationImrtTemplateLayout="Optimization";
WindowList.IMRTTemplate.Create="IMRTParameters...";
PluginManager.InversePlanningManager.OptimizationManager.Current.TrialList.Current.MaxIterations="70";
PluginManager.InversePlanningManager.TrialList.Current.DoseIteration="35";
TrialList.Current.BeamList.#"#0".IMRTParameterType="SmartArc";
IF.TrialList.Current.BeamList.#"#0".IMRTParameterType.STRINGEQUALTO.#"#DMPO".THEN.PluginManager.InversePlanningManager.TrialList.Current.ConvertAfterOptimization="false";
IF.TrialList.Current.BeamList.#"#0".IMRTParameterType.STRINGEQUALTO.#"#SmartArc".THEN.PluginManager.InversePlanningManager.TrialList.Current.ConvertAfterOptimization="false";
PluginManager.InversePlanningManager.TrialList.Current.BeamExtensionList.#"#0".NumberOfArcsToCreate="2";
PluginManager.InversePlanningManager.TrialList.Current.BeamExtensionList.#"#0".RequestedBeamDeliveryTime="120";
WindowList.IMRTTemplate.StateList.Current=2;
PluginManager.InversePlanningManager.TrialList.Current.ComputeFinalDose=1;
//StartOptimization
WaitMessage="Doingtheoptimization...";
PluginManager.InversePlanningManager.Initialize="StartOptimization";
//getthecompositeobjectivevalue
PluginManager.InversePlanningManager.RefreshObjectiveValues="RecomputeValues";
Store.FreeAt.CompositeOBJV="";
Store.At.CompositeOBJV.Value= PluginManager.InversePlanningManager.ObjectiveManager.OrbitObjectives.TrialObjectiveList.Current.Function.ValueDescr;
//Adjustobjectives
Script.ExecuteNow="/home/p3rtp/AdjustInitialization.Script";
//ifOBJV>0.06,initializationfailed.Gotoinitialization.
Store.At.SubIterNum.Subtract=1;
IF.Store.At.SubIterNum.Value.GREATERTHAN.#"#0".THEN.Store.FreeAt.TempReloadScript="";
IF.Store.At.SubIterNum.Value.GREATERTHAN.#"#0".THEN.Store.StringAt.TempReloadScript="/home/p3rtp/VMATInitialization.Script";
IF.Store.At.CompositeOBJV.Value.LESSTHAN.#"#0.06".THEN.Store.FreeAt.TempReloadScript="";
IF.Store.At.SubIterNum.Value.GREATERTHAN.#"#0".THEN.Script.ExecuteNow=Store.At.TempReloadScript.String;
上面的脚本代码设置优化参数为:剂量计算迭代次数为35次,总逆向优化迭代次数为70次,优化类型为“SmartArc”,双弧优化,每弧预计执行太阳城集团为120s。初始优化的目的是为主优化提供一组合适的优化目标函数组,在执行Pinnacle逆向优化后,根据优化结果,AdjustInitialization.Script对优化目标函数组的Ti进行调整。若优化结束后CO>0.06,则视为优化失败,在SubIterNum>0的条件下,将再次对优化目标函数进行调整。
直肠癌VMAT计划自动生成方法的执行
1、建立自动计划生成触发器:在Pinnacle治疗计划系统的HotScripts界面建立新的脚本运行触发器“SetupCheckandStart”,并将后台执行脚本文件指向/home/p3rtp/SetupCheckandStart.Script;
2、执行自动计划生成:在Pinnacle治疗计划系统的HotScripts界面触发“SetupCheckandStart”,即可在当前CT图像上进行直肠癌VMAT放疗计划设计。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

太阳城集团本文
本文标题:基于PINNACLE计划系统的直肠癌VMAT计划自动生成方法.pdf
链接地址:http://zh228.com/p-6397594.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');