线性加速器中的或涉及线性加速器的改进 |
|||||||
申请号 | CN200880131169.3 | 申请日 | 2008-07-18 | 公开(公告)号 | CN102160470A | 公开(公告)日 | 2011-08-17 |
申请人 | 伊利克塔股份有限公司; | 发明人 | P·萨德勒; D·哈里森; N·麦肯; | ||||
摘要 | 我们提议,在linac的工厂测试期间,不是简单地证实射束落在标准中陈述的可允许范围内,实际上朝标准签名调节射束。新(或现有)linac然后可以与新linac或与现有linac 配对 ,诸如一个在旁边操作或者一个用于替换。 治疗 计划然后将可在这种linac对之间传递。另外,linac所接近的标准签名可以朝所允许范围的中心放置以产生在很长期上更可靠的linac。这要求具有自动可调节参数的linac,使得合适的编程计算机能够监控linac的输出且调节其操作参数。我们因此提供一种 辐射 源,该辐射源包括线性 加速 器、用于线性加速器的射束控制 电路 、用于控制电路的布置为调节其属性的 电子 控制设备、以及用于检测由线性加速器产生的辐射射束的属性的监控器,其中该控制设备适于保留一组射束属性且周期性地激活加速器、经由监控器测量当前射束属性、将测量的射束属性与保留的射束属性进行比较、潜在地调节控制电路属性以使射束属性朝保留的射束属性对准。测量的射束属性可以包括射束平直度和射束宽度中的至少一个。保留的射束属性可以是由线性加速器在新的时候产生的射束的属性或是标准射束的属性。该控制设备优选地布置为如果测量的射束属性与保留的射束属性之间的差异超过 阈值 则发送消息。如果测量的射束属性与保留的射束属性之间的差异超过第二阈值,它也可以向远程 位置 发送消息。 | ||||||
权利要求 | 1. 一种辐射源,包含线性加速器、用于该线性加速器的射束控制电路、用于该控制电路的布置为调节其属性的电子控制设备、以及用于检测由该线性加速器产生的辐射射束的属性的监控器,其中该控制设备适于保留一组射束属性且周期性地: |
||||||
说明书全文 | 线性加速器中的或涉及线性加速器的改进技术领域[0001] 本发明涉及线性加速器(“linac”)领域。它尤其但不排他地涉及用于医学用途的这种加速器。 背景技术[0002] Linac用于产生高能电子束和/或x射线束。这些在包括用于医学目的的各种环境中是有用的。这种射束对于其路径中的组织是有害的,且因此通过射束的仔细准直和控制, 它们可以用于向(例如)肿瘤递送辐射剂量以便导致肿瘤停止生长或甚至萎缩(die back)。 [0003] 如果相当大量的非癌组织接收相当大的剂量,则这可能导致副作用。这些原则上是不期望的,且还将限制肿瘤可以被照射的速率。这进而降低治疗功效。为此,应用于患者 的剂量被仔细地控制,且准备复杂的治疗计划,其中照射方向、射束准直以及射束强度全都 以相关方式随时间被改变以便在患者中构建所期望的三维剂量分布。这些治疗计划由治疗 计划计算机准备,该治疗计划计算机对射束与患者的相互作用进行建模。 [0004] 这种过程要求射束的属性被很好地特性化且射束在长期上连续符合该特性化。存在为射束制定可允许参数范围的国际标准,但是这些范围相对宽泛,且名义上等同的线性 加速器可以产生全都落在标准内但是具有可测量的不同属性的射束。 [0005] 因而,通常在把线性加速器投入服务之前将对由特定线性加速器产生的射束的属性进行特性化,且那些属性用于定义由治疗计划计算机采用的射束模型。为了证实射束仍 根据模型运转,随着时间的推移实施例行校验。典型地,存在简要的每日校验、稍微更彻底 的每周校验以及牵涉更多的每月校验。 发明内容[0006] 由于这些限制,将新linac投入服务的过程可能很漫长。该linac必须被物理递送且安装到其期望的位置中,并且必要的功率、水和数据线被连接。然后必须对照标准来测 量和校验射束属性以证实linac在运输中未被损害,且特性化射束的属性。这些属性(有时 称为射束的“签名”)必须被传送到治疗计划计算机以创建用于准备治疗计划的该射束的数 字模型。该模型然后需要被校验以便证实其准确性;这涉及很多样品剂量分布的准备,这些 样品剂量分布然后被linac递送给测试假体以便证实linac如预期的那样运转。 [0007] 这种特性化和测试的过程可能花费高达6个月。在该时间期间,linac不可用于患者的治疗,这对于诊所和对于患者是(明显)不便的。 [0008] 因此我们提议,在linac的工厂测试期间,不是简单地证实射束落在标准中陈述的可允许范围内,实际上朝标准签名来调节射束。然后可以公布该标准签名以供治疗计划 软件的编写者使用。结果,尽管可能在射束的实际签名和标准签名之间存在微小差异,但是 这些将花费较少的时间来特性化和测试且因此可以使linac更快地投入服务。 [0009] 这还引起这种前景:在相同诊所中或者针对相同诊所准备具有匹配射束的多个linac。新(或现有)linac可以与新linac或与现有linac配对,诸如一个在旁边操作或者 一个用于替换。治疗计划然后将可在这种linac对之间传递,由此允许在预约治疗患者方 面具有更大的灵活性或者允许在新linac上使用现有治疗计划。 [0010] 另外,linac所接近的标准签名可以朝所允许范围的中心放置。这可以产生在很长期上更可靠的linac。 [0011] 这要求具有自动可调节参数的linac,使得合适的编程计算机能够监控linac的输出且调节其操作参数。这意味着计算机能够在选择更紧密接近所公布标准的这种组合之 前尝试linac的各种允许调节。 [0012] 这还引起这种前景:在linac处于服务时进行更全面的测试。如上所述,已经实施了一定程度的例行测试。然而,如果linac提供有针对射束属性的合适的检测器,则例如可 以在诊所关闭时整夜实施更全面的例行测试。这种检测器可以在完成相关临床会话的最后 治疗之后由操作员配合到linac,或者可以由linac连续承载。在后者情况中,检测器可以 安装在射束路径中或者它可以配合到可延伸臂以允许它在需要时被移动到射束路径中。一 些linac安装有针对射束的平板检测器以在治疗期间捕获射野图像(portal image);尽管 这些未针对射束测试被优化,但是它们可以可用于一些目的。 [0013] 本发明因此提供一种辐射源,该辐射源包括线性加速器、用于线性加速器的射束控制电路、用于控制电路的布置为调节其属性的电子控制设备、以及用于检测由线性加速 器产生的辐射射束的属性的监控器,其中该控制设备适于保留一组射束属性且周期性地激 活加速器、经由监控器测量当前射束属性、将测量的射束属性与保留的射束属性进行比较、 调节控制电路属性以使射束属性朝保留的射束属性对准。 [0014] 例如,这些步骤可以跟在正常操作周期之后且可以接着是另一正常操作周期,在另一正常操作周期之后可以重复这些步骤。 [0015] 测量的射束属性可以包括射束平直度和射束宽度中的至少一个。 [0016] 保留的射束属性可以是由线性加速器在新的时候产生的射束的属性或者是标准射束的属性。 [0017] 控制设备优选地布置为在测量的射束属性与保留的射束属性之间的差异超过阈值的情况下发送消息。它还可以在测量的射束属性与保留的射束属性之间的差异超过第二 更苛刻阈值的情况下向远程位置发送消息。 附图说明 [0018] 现在将参考附图,通过示例方式描述本发明的实施例,在附图中:图1示出系统的主要组件; 图2示出主软件架构; 图3示出BeamAcquisitionManager Association(射束采集管理器关联); 图4示出ScanningInterface(扫描接口)类; 图5示出SystemsTestTestModule(系统测试测试模块)类; 图6示出TestModuleLinacInterface(测试模块Linac接口); 图7示出Test Module(测试模块)类关系; 图8示出Test Module Message Table(测试模块消息表); 图9示出TestModuleMessage(测试模块消息); 图10说明用于实施ITestModuleMessenger(I测试模块消息器)接口的过程; 图11是DataAnalysis(数据分析)类关系图; 图12说明射束测试过程;以及 图13说明MLC测试过程。 具体实施方式[0019] 1 介绍参考附图,在继续描述我们的“Autotest(自动测试)”软件如何可能在实际中使用之 前,我们现在将描述该软件以及其各个组件之间的关系。 [0020] 2 概述Autotest软件包含一个可执行文件和若干动态链接库(DLL),它们一起配合以产生用 于掩蔽或使用中的测试的一套测试工具。按照“掩蔽测试”,我们意指在制造之后立即发生 的新linac的测试。一般而言,在组装之后新linac将放置在称为“掩蔽处”的辐射屏蔽区 域中,在该区域中在初始测试期间它可以安全地操作。 [0021] 为了完成这一点,软件需要能够直接与linac并且还与放置在射束中的提供特性化射束的数据的扫描设备通信。Autotest软件经由Desktop Pro(桌面专业版)控制系 统来控制linac;两个组件用于控制Linac—TestInterfaceClient(测试接口客户端)和 FKPModuleInterface(FKP模块接口)。后者与功能键区(Function Key Pad,FKP)装置通 信,该功能键区装置实现实际(物理)FKP的特定按钮的软件控制。与linac的通信通过调 节被称为项目部件值(Item Part Value)或IPV的控制电路参数来获得。Autotest软件还 控制扫描设备。TestInterfaceClient和ServoClient(伺服客户端)两者是较低级组件, 并且照此此处仅提供每个的简单描述。 [0023] 3.1 TestInterfaceClientDesktop Pro向Autotest软件提供软件接口以确定线性加速器能量配置、配置和启动 射束、在Linac数据库中读取和写入线性加速器项目部件值并且解析项目部件名称。 [0024] Desktop Pro本身与Linac和MLC控制系统通信以控制实际的Linac和MLC。 [0025] TestInterfaceClient因而充当门面(facade)以便减小与主linac软件的接口的复杂性。DLL中的伴随类仅仅是帮助类: 3.2 FKPModuleInterface 这允许与USB功能键区(“FKP”)装置通信,USB功能键区(“FKP”)装置允许线性加速 器由控制设备使能而无用户动作。它提供诸如ActivateStartButton(激活启动按钮)和 SetASUAndAutoButtons(设置ASU及自动按钮)的与装置本身上的硬件按钮具有直接相关 的方法。 [0026] 作为安全特征,FKPModuleInterface还周期性地向FKP硬件发送同步消息,使得如果软件崩溃,则线性加速器禁用。该消息在单独的线程上发送,以便确保规则的间隔而不 被发送到GUI的消息打断。物理装置还具有用于在可以使用它之前对它使能的按键开关和 ‘激活’按钮。 [0027] 尽管硬件经由USB端口连接,但是安装的驱动器允许通信,仿佛FKPDevice(FKP装置)被连接到串口。SerialPort(串口)类充当与串口的较低级接口,而FKPModuleInterface 类直接被New Autotest(新自动测试)使用。 [0028] 该硬件装置因而提供用于Autotest软件的USB接口,以促进辐射射束的软件控制且允许辅助设置(Assisted Set Up,ASU)被执行而用户不必存在以物理按压功能键区上的 按钮。 [0029] 3.3 ServoClient存在作为Autotest软件的一部分的ServoClient以便经由串口提供对检测器的访问。 ServoClient组件是在Autotest软件过程空间中运行的dll,而单独的组件在其自己的过 程空间中运行。 [0030] 3.4 New Autotest GUINew Autotest GUI本质上是使系统保持在一起的‘胶水’。它设计为以两种方式运行: · 在连接到Linac的封闭或锁定系统上; · 在桌面PC上。 [0031] 当运行在桌面PC上时,以与用户将启动任何其他程序相同的方式通过用户双击可执行文件而启动软件。当运行在连接到Linac的封闭系统上时,New Autotest经由在章 节7中描述的NewAutotestLauncher(新自动测试启动器)组件启动。 [0032] 难以在不知道软件构成类的情况下给出软件的有意义的描述,同时还难以在首先不知道类相互作用的情况下对这些类附接任何有用性。因此,最初呈现主类及其相互作用 的简要概述,接着是在后续章节中的每个类的更彻底描述。 [0034] 测试模块和任何手动扫描通过诸如AddPlot(添加绘图)、LoadFile(加载文件)、SmoothData(平滑数据)、SetXAndYAxisArrays(设定X及Y轴阵列)等的方法来更新PlotData (绘图数据)类。PlotData类然后可以通过发送事件即OnPlotAdded、OnDataAppended、 OnAllPlotsDeleted等来告知视图数据已改变。 [0035] PlotData类实施低级数据询问和操控以产生绘图数据,其然后可以通过DataAnalysis控件被使用且呈现给用户。 [0037] 4.1 BeamAcquisitionManagerBeamAcquisitionManager利用工厂设计方法以便实例化用于与射束采集硬件对接的 所需组件。它创建的组件是: 这些关联在图3中示出。 [0038] New Autotest软件的进一步开发将涉及使用备选硬件进行射束测量,因此提供与扫描硬件的灵活通信方式是重要的。上表中的前三个类本质上是允许New Autotest GUI 在允许用户与该硬件交互的控件中加载的抽象类。 [0039] BuddelshipManualScaningControls(Buddelship手动扫描控件)库包含为具体控制‘Buddelship’(即扫描设备)而需要的所需用户接口控件的定制实施方式。从图3可 以看出,这些类直接从上面列出的手动扫描控件继承。 [0040] BeamAcquisitionManager类本身实施为NewAutotest过程空间的范围内的单例(singleton)。这允许组件访问扫描硬件而无需在各类之间传递对它的参考。 [0041] 4.2 ScanningInterface据设想,该类将最终提供Autotest软件和扫描组件(其目前是ServoClient)之 间的桥梁。按实际情况来说,ScanningInterface仅充当ServoClient组件周围的 包裹器(wrapper),因而提供访问射束数据的唯一手段。因为新检测器变得可用, ScanningInterface可以适于在New Autotest和检测器之间提供更抽象的桥梁。 ScanningInterface使用很多类来与硬件交互,如图4所示。 [0042] 5 测试模块类5.1 概述 所有测试模块实施被称为ITestModule(I测试模块)的接口。目前,大多数测试模块 通过从向系统测试部门要求的所有测试模块提供公共功能性的SystemsTestTestModule 类继承来完成这一点。该公共功能性通过图5中示出的类的合成来提供。示出的这些类提 供以下功能性: 图7示出从ITestModule接口到测试模块本身的更完整的层次结构。通过IPVPlotter (IPV绘图器)和MovingProbeTestModule(移动探头测试模块)类沿该层次结构向 下进一步提供附加功能性。IPVPlotter包含允许对照彼此绘制项目部件值的方法。 MovingProbeTestModule类使用BeanAcquisitionManager来提供对Scanninginterface的 参考并且所以包含用于使用扫描设备绘制射束剖面的方法。在以后的日子据设想,附加类 (ChamberArrayTestModule(腔室阵列测试模块))将用于向为与离子腔室阵列面板对接而 需要的测试模块提供公共功能性。 [0043] 每个测试模块实施为具有与其代表的测试相同的名称的单独的DLL;即,Outgas.dll包含类Outgas(输出气体)且Achromaticity.dll包含类Achromaticity(消色差)。 这种实施方法允许主GUI动态地加载到模块中,将它转换(cast)为ITestModule类型,且 然后使用多态性(polymorphism)来设定测试参数且运行所需测试。测试模块的加载发生 在frmMain::LoadTestModule中: 每个测试模块中的虚拟RunTest(运行测试)方法在单独的线程中启动实际的测 试。这呈现与经由TestInterfaceClient写入项目部件值和更新Autotest GUI相关 的问题。更新GUI将总是在UI线程上发生,且TestInterfaceClient::WriteIPV方 法仅可以在实例化TestInterfaceClient的相同线程上调用。为了解决该问题,在 TestModuleLinacInterface和TestModuleGUIUpdater类内创建允许在正确的线程上调用 这些方法的委托(delegate)。 [0044] 6 测试模块通信TestModuleMessage库可以用于允许测试模块在序列内彼此通信。固有地,所有测试模 块彼此独立且测试模块序列内的测试模块不知道彼此。存在其中组件可能需要交换信息的 三种主要情况: · 测试模块的实例可能需要与在序列中另外的不同测试模块的实例通信; · 测试模块的一个实例可能需要与在序列中另外的相同测试模块的另一实例通信; · 用于一个测试模块的NewAutotestModuleForm(新自动测试模块表单)的派生类可 能需要传递参数到用于不同测试模块的NewAutotestModuleForm的不同派生类。 [0045] 6.1 测试模块消息架构整体机构包含组件可以为其他组件访问而创建的消息表。这以与酒店前台中的接收箱 (pigeon hole)类似的方式工作,其中组件‘留下’消息以供其他组件‘读取’。 [0046] 主组件是TestModuleMessageTable(测试模块消息表)和TestModuleMessage类。TestModuleMessageTable类用于容纳消息表,其中每个消息存储为特定接收者的 TestModuleMessage。这在图8中概念性地示出。 [0047] 表中的每一‘行’可以包含与接收者名称和能量级别相关的字符串、以及包含消息代码和任何所需自变量的TestModuleMessage的实例。该消息在图9中示出。 [0048] 该表可以被向表类和所需的消息接收者发送TestModuleMessage的组件填充。其他组件然后可以询问该表以查看是否有任何消息正在等待它们。消息可以被发送到该表和 从该表检索,因而: 内部地,数据将以哈希表存储,其中接收者字符串及其对应TestModuleMessage组成 每个关键值对。 [0049] 6.2 创建消息表如果需要的话,在用户定义了测试模块序列之后且恰好在运行序列之前创建消息表。 然后可以用测试序列信息来创建测试模块表。这允许测试模块或它们的参数表单基于将在 序列中运行的其他内容来做出决定。 [0050] 6.3 访问表为了组件发送或接收消息,它们必须被允许访问消息表。提议创建允许测试模块表 的实例被设定的单独的接口。测试模块(或其他组件)然后可以实施该接口,使得来自GUI 的主Autotest表单可以向它们传递表参考,如图10所示。在测试模块已被动态创建和 测试之后,set_TestModuleTable属性将被主Autotest GUI表单调用以查看它是否支持 ITestModuleMessenger接口。 [0051] 将TestModuleMessageTable参考传递到所需组件允许该组件检查哪些测试模块被设定为在序列中运行。如果稍后示出类似的表单,则这给予NewAutotestModuleForm保 持隐藏的机会。 [0052] 7 其他辅助组件7.1 PlotData PlotData.dll包含设计为存储和分析所有绘图数据的一组类。PlotData类本身提供 较低级数据操控和分析,诸如: 函数 目的 Get_MinYValue 返回在给定绘图上发现的最小Y值。 FirstXValueAtYValue 针对所需的Y值搜索绘图,且返回在首次出现该Y值时X的值。 TiltBetweenPoints 返回绘图上的两点之间的最大倾斜。 诸如这些的函数可以被测试模块直接使用,或者被也在(如图11所示)该库中发现的 DataAnlayser(数据分析器)类直接使用。这些类提供对绘图数据的分析,包括针对所需规 范(目前是美国或荷兰的标准,这取决于扫描类型)的通过/失败结果。DataAnalysis控件 和XrayEnergyAndFlatness(X射线能量及平直度)测试模块两者使用DataAnalyser类来 提供对各个绘图和组绘图的分析。 [0053] 7.2 FileManager(文件管理器)顾名思义,FileManager.dll库包含用于管理去往或来自文件的所有数据的类。使用 的文件类型是: *.DAT文件将仅包含用于单个绘图的数据。当用户查看来自测试模块的一组绘图结果 时,他们查看*.XML文件,该文件进而参考要加载到GUI中的正确数据文件。数据文件中的 标题信息被DataFileHeader(数据文件标题)类ScanDataFileHeader(扫描数据文件标题) 和IVPlotDataFileHeader(IPV绘图数据文件标题)处理。然而,XY绘图数据通过PlotDate 类本身被直接加载和保存到PlotData类中。 [0054] 8 其他用户控件为了帮助维持模块化设计,在GUI内看到的较大用户接口控件实施为驻留在其自己的 程序集(assembly)中的分立组件。这些中的一些是linac软件内的现有小应用程序的拷 贝。 [0055] 8.1 AutotestGraphicalDisplay(自动测试图形显示)该组件用于桥接主图和所有其他类之间的缝隙。它包含将数据阵列显示为绘图的函数 而类不必与具体图形类本身交互。图形显示可能随着该类帮助促进的Autotest的未来更 新而改变。 [0056] 8.2 NewAutotestForm(新自动测试表单)工程内的所有表单从NewAutotestForm继承。该类限制封闭系统上的表单移动和光标 移动。除此之外,NewAutotestForm.dll包含以下类: 8.3 DataAnalysis DataAnalysis控件使用帮助类的层次结构以便根据所需的准则来分析数据。这是需要 的,因为该分析根据能量类型和所选择的协议(即,美国平直度、荷兰等)而不同。组件广泛 利用早先描述的DataAnalyser类集。这是为了在由GUI给出的分析和由测试模块提供的 分析之间维持一致性。 [0057] 8.4 DataMonitor这为用户提供关于当前运行的模块状态的连续反馈且每当测试模块向事件日志写入 时由测试模块更新。除此之外,大部分测试模块利用该组件来显示当前正被模块更改的项 目部件值。它还提供射束监控器服务页的只读版本。 [0058] 8.5 GraphLegend(图例)这是处理加载到GUI中的绘图列表的简单组件。 [0059] 8.6 ItemPartTextBox(项目部件文本框)被若干其他用户接口组件使用的ItemPartTextBox控件包含对TestInterfaceClient 的参考,以允许它处理项目部件值到Linac的写入。在设计器内,用户可以设定针对项目 号、项目部件等的属性,留给组件格式化该值。这种格式化还(例如被ServicePage(服务页 面))用于格式化经由TestInterfaceClient从Linac读取的项目部件值。 [0060] 8.7 MenuExtender(菜单扩展器)这实施IExtenderInterface(I扩展器接口)以便向菜单项目添加图标。 [0061] 8.8 QuickBeam这设计为以与linac软件内的QuickBeam小应用程序类似的方式工作。该组件和测试 模块两者需要经由TestInterfaceClient加载射束。然而,TestInterfaceClient不提供一 种知道当前正在加载哪个射束的装置。为了防止测试模块重复加载已经由该小应用程序加 载的射束,在主GUI、QuickBeam和测试模块运行时在它们之间传递TestInterfaceClient 的实例。驻留在主用户界面上的其他组件创建其自己的TestInterfaceClient实例。 [0062] 8.9 ServiceFunction(服务函数)提供当前linac软件内存在的一些服务函数。 [0063] 8.10 ServicePage提供包括MLC读回的、当前linac软件内存在的一些服务页面。该组件依赖于驻留在 Pages.dll中的单独的页面库。 [0064] 9 Tool(工具)Autotest GUI已被开发为允许经由工具菜单项目来加载附加测试工具。该过程进一步 在章节9.3中描述。 [0065] 9.1 AutoAnalysisAutoAnalysis允许用户将任何原先保存结果的线性加速器设定与当前线性加速器设 定进行比较,所以用户可以评估结果是否仍然有效。后端数据库包含与该工具相关的三个 表: 表 目的 IPV 包含针对在每个能量级别处的每个模块需要校验的所有项目部件值的列表。 测 试 模 块包含针对每个电子测试模块的模块状态和项目部件值校验状态。这还包含复制到Autotest最终目录中的模块标题(ELECTRONS) 文件的文件名。 测 试 模 块(X_包含针对每个x射线测试模块的模块状态和项目部件值校验状态。这还包含复制到Autotest最终目录中的模块标RAYS) 题文件的文件名。 每当启动Autoanalysis时,做出模块IPV(项目部件值)和存储在线性加速器数据库中 的值之间的校验。上述列表中的最后两个表(测试模块(ELECTRONS)和测试模块(X_RAYS)) 在此发生时更新;IPV_CHECK字段被给予与IPV校验是通过还是失败相关的值。通过检查 数据库表可以看出,实际项目部件值未记录在数据库中(它们已经被存储在模块标题文件 和校准数据库中)。AutoAnalysis基于存储在数据库中的值来提供项目部件值的“实时”更 新。 [0066] 9.2 Backup(备份)Backup附加工具允许横跨网络备份文件,当使用NET.exe实用程序来启动工具时,该 工具映射网络驱动。 [0067] 9.3 MachineConfiguration(机器配置)MachineConfiguration附加工具读取线性加速器许可以确定该特定线性加速器的能 量配置且允许对所有相关测试/模块的访问或者防止对无效测试或模块的访问。它还允许 用户选择不同的分析协议。 [0068] 然 而,不 像AutoAnalysis工 具,每 当 在 封 闭 系 统 上 加 载 软 件 时,MachineConfiguration实用程序需要运行。为了添加关于New Autotest初始化的灵活 度,主GUI包含允许在启动应用时运行附加代码的代码。这在章节9.2中进一步详述。关 于MachineConfiguration工具,静态方法CheckMachineConfiguration(校验机器配置) 校验Linac当前许可证密钥和序列号,使得如果这两个中的任一个变化则它可以重新配置 AutoAnalysis数据库。 [0069] 9.4 Matching(匹配)匹配工具允许绘图组被匹配和分析。每个匹配配置保存在*.mcfg文件中,该文件包含 ArrayList(数组列表)形式的串行化数据。除了文件位置和能量信息之外,ArrayList包 含每个匹配组一个MatchingManager(匹配管理器)类。MatchingManager类包含转播针对 每个匹配绘图的文件信息的MatchedPlot(匹配绘图)类的列表。 [0070] 10 启动New AutotestNew Autotest总是经由过程组件的输出来启动,该过程组件可以在主可执行文件运行 之前对文件运行完整性校验。存在两种启动实用程序——一种用于在封闭系统上启动New Autotest而一种用于在独立PC上启动New Autotest。这两个实用程序均校验Autotest 所需的每个文件以确保软件的当前版本有效。 [0071] 在可以启动软件之前,必须满足三个准则:· 没有附加文件被引入到New Autotest目录中; · New Autotest目录中的文件仍有效(通过使用CRCGenerator(CRC发生器)组件来 验证文件校验和); · 没有从New Autotest目录丢失的文件。 [0072] 为完成这一点,两个文件驻留在New Autotest目录中:文件 目的 NewAutotestCRCs.lst包含具有其对应校验和值的文件名的列表。每个文件(未在ExemptFiles.lst中列出)必须存在且通过CRC(循环冗余校验)。 ExemptFiles.lst 包含免于CRC校验的文件的列表。这些是希望改变的文件,诸如数据库文件和日志文件。 每当添加测试模块或附加工具时,New Autotest CRCs.lst将需要更新。 [0073] 10.1 在封闭系统上启动New Autotest——NewAutotestLauncher(新自动测试启动器) 当在封闭系统(诸如连接到Linac的机柜)上运行时,New Autotest经由加载到linac 软件中的NewAutotestLauncher组件启动。该组件与linac工具条上的附加图标一起经由 New Autotest安装程序(部分8中描述)安装。 [0074] NewAutotestLauncher和CRCGenerator DLL两者编译为驻留在全局程序集缓存中的公共程序集。这是来自linac软件的要求,以便加载NewAutotestLauncher。 [0075] 10.2 在独立PC上启动New Autotest——Autotest Viewer(自动测试查看器)在独立PC上,经由可执行的Autotest Viewer启动New Autotest。当运行New Autotest安装程序(在章节8中描述)时,创建直接链接到该应用程序的快捷方式。Autotest Viewer本身校验New Autotest所需的所有文件的完整性(以与NewAutotestLauncher组件 等同的方式)且如果校验通过,则启动主New Autotest程序。如果完整性校验失败,则显示 详述错误的表单。 [0076] 为了防止用户直接(绕过完整性校验)运行可执行的Autotest,如果CRC校验成功,则由启动器在系统注册表中设定标志。NewAutotest在调用主窗口构建器之前校验该标 志。该标志此时还被复位以准备下一次启动。 [0077] 11 新自动测试扩展性NewAutotest应用程序被设计为使得它可以扩展而不重复编译核心组件。这应用于三 个主要领域:测试模块(在章节4.3中描述)、初始化代码和附加工具(在章节6)。 [0078] 临时工作也已完成以允许改变与扫描硬件的接口(因此扫描硬件本身),这在章节4.1和4.2中详述。实际上,假设公共接口不改变,任何私有程序集中的任何组件可以更新 而无需重新编译主软件。 [0079] AutoAnalysis数据库中的IPV表可以在任何时间更新以指示测试模块在测试结射束时保存附加项目部件值。通过设定Analyse字段为是,这还将指示AutoAnalysis用数 据库中驻留的值来校验项目部件值。 [0080] 11.2 添加初始化代码New Autotest软件允许附加代码作为初始化代码运行。New Autotest GUI内的方法 frmMain::RunInitialisationCode打开文件Initialisation Code.lst,该文件包含在应 用程序启动时应该运行的程序集中的任何静态方法的细节。可以通过向任何库中的任何类 添加静态公共方法,运行另外的初始化代码。 [0081] 11.3 附加工具附加工具可以通过New Autotest GUI经由其工具菜单项目启动。为了添加工具,组件 必须提供从抽象AddonTool(附加工具)类继承的类。一旦编译,将工具放置在Autotest工 具目录中,使得它可以附接到工具菜单。 [0082] 12 版本控件如在章节9中详述的,通过思维的扩展而设计了New Autotest:主GUI动态地加载每 个测试模块,并且不仅不知道应该运行哪些文件版本而且不知道存在多少测试。为了确保 仅运行正确的测试,在使用CRC文件来启动软件(启动在章节7中描述)之前对所有需要的 文件进行完整性校验。 [0083] CRC文件包含串行化哈希表,该哈希表包含针对需要校验的每个文件的文件名校验和对。除此之外,当(使用在章节11.1中描述的Factory Project Builder(工厂工程构 造器)工具)生成CRC文件时,哈希表的前几个条目填充有特殊值。这些是: · 生成CRC文件的日期; · 伴随CRC文件的构造号; · Autotest软件的部件号。 [0084] 因而,New Autotest所需的所有文件与嵌入到CRC文件中的构造号相关;除非伴随有更新的CRC文件,在New Autotest目录中添加或替换文件将防止启动主应用程序。 [0085] 13 开发工具创建了少量附加工具以便开发Autotest工程。 [0086] 13.1 工厂工程构造器该实用程序确保根据New Autotest的软件配置管理计划来构造工程。 [0087] 13.2 FileVersionUpdater(文件版本更新器)这是作为预构造事件添加到每个工程的命令行实用程序。它用于更新工程中的 FILEVERSION资源,使得当在Windows资源管理器中查看文件时出现文件版本号。该文件版 本属性还被NewAutotestLauncher组件利用以在New Autotest目录内显示文件的版本。 [0088] 因为所有组件(除了NewAutotestLauncher和CRCGenerator)编译为私有程序集并且照此不被强命名,所以该工具是需要的。 [0090] 14.1 射束测试射束测试允许这样的事实:linac可以能够有很多预设的能量级别。为产生不同能量 射束所需的改变可能影响射束属性且因此对每个能量顺序地实施校验。 [0091] 因而,第一能量被选择且射束被建立。获得射束能量、射束平直度和绝对剂量的细节。这些参数与保留的一组属性(其可能是已知的黄金标准或期望linac应该复制的目标 标准)进行比较。在发现不一致的情况下,这些被校正以便使linac返回到所选标准。为获 得这一点所需的调节然后被记录,且原先的设定被复原,使得(缺省地)前来就医的患者在 重新校准之后接收期望的剂量。然而这些调节被报告给操作员,使得可以做出关于这些调 节应该永久化还是丢弃的决定。 [0092] 这然后针对每个射束能量进行重复。一旦所有都完成,校验结果以证实偏差处于允许容差内;如果否,则禁用linac且向操作员发送警报。如果所有都良好,则开始MLC测 试。 [0093] 必要调节的记录可以用于诊断目的。在这些超过阈值的情况下,则显然需要发布警告且禁用线性加速器。然而,如果超过下阈值,则可以向诸如服务工程师或制造商的远程 操作员发送注释。该信息可以用于在方便的时间调度其他维护工作和/或提供即将到来的 问题的提前警告。 [0094] 14.2 MLC测试这涉及根据预设的处方(prescription)改变叶片位置且观察这对测量射束的效果。 [0095] 15 附录15.1 数据库 New Autotest应用程序使用很多数据库。这些数据库中的一些涉及各个测试模块—— 此处将不对它们进行描述。 [0096] 附加数据库被Wellhoffer的OP-Industrial软件使用。在封闭系统上,用户将不具有对OP-Industrial的直接访问,所以数据库由ServoClient组件修改。尽管由 Wellhoffer的安装程序安装,但是当安装New Autotest时该数据库Platform.mdb被预配 置的版本替换。 [0097] 当然将理解的是,可以在不偏离本发明的范围的情况下对上述实施例做出很多变型。 |