邱全兵
摘要:目前国内质子中心建设在如火如荼的进行,在建设方案上大多都采用多治疗间方案。该方案的特点是多治疗间共享加速器系统以降低每个治疗间的成本,所以在系统中需要配置一个束流管理服务集中负责束流的调度、准备、使用、释放等管理和控制功能。本论文结合质子放射治疗的过程给出一种束流管理的接口和状态机设计方案,并基于Thrift给出束流管理接口的定义。
关键词:质子治疗;束流管理;Thrift;束流管理服务;治疗控制服务
中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2018)01-0154-03
1 引言
质子治疗技术[1]近年来它已成为医学界研究的前沿热点,同时质子治疗系统的研发和建设也成为国内投资的热点。根据PTCOG统计的2017年中国在建质子中心及其使用方案[2]可以看出,中国质子中心的建设方案均采用多治疗室方案。该方案的特点是多个治疗间共用一套加速器及束流输运系统,病人治疗过程中的质子束流需要由束流管理服务进行统一调度、生产和操作。本文结合作者在广东恒聚质子中心集成项目中的开发经验给出一种束流管理的设计。
2 束流管理设计
2.1 束流管理模型
质子治疗系统中的束流管理模型通常如图 1所示。系统中每个治疗间由独立的治疗管理系统来负责协调、同步治疗过程中需要参与的各个系统模块共同完成治疗功能。其中治疗控制服务模块负责向束流管理服务发起各项束流操作,一旦束流就绪便控制治疗头进行病人的治疗。束流管理服务负责束流的调度并控制加速器系统完成束流的各项操作。为满足点扫描治疗过程中点与点间的移动和不同位置的剂量实时控制要求,治疗头与加速器系统之间使用特殊的硬件接口。本文中的束流管理限于治疗控制服务与束流管理服务之间的软件接口设计。
2.2 束流管理的工作过程
病人进行质子放射治疗的过程中,束流管理的工作过程如图 2所示分为六个主要的活動:束流申请、束流准备、束流位置调整、打开束流、关闭束流、束流释放。
治疗控制服务首先向束流管理服务提出束流申请,束流管理服务根据当前的使用情况,选择两种处理方式:系统空闲时立即接受束流申请,忙时将束流申请放入等待队列中。束流申请成功后,治疗控制服务根据当前病人治疗的要求发送治疗所需的束流参数给束流管理服务进行束流准备,束流管理服务控制加速器系统生产满足参数要求的束流。当束流准备就绪并且病人摆位确认后,就可以打开束流进行病人的治疗。在治疗过程中,由治疗头通过实时硬件接口控制束流流强以实现点扫描时点与点间的移动(移动到目标点过程中快速关闭和打开束流)和不同点的剂量要求。当完成一层的扫描治疗后关闭束流。质子治疗过程通常需要进行多层扫描,扫描层与层之间的切换需要进行束流能量的切换,束流需要重新准备,不同层的治疗处理过程循环图 2虚框中的过程。最后,完成病人所有治疗野的治疗后,释放束流以供其它房间使用。
2.3 束流管理状态机设计
束流管理是以会话机制进行管理的。治疗控制服务与束流管理服务之间需要创建一个束流管理会话,治疗间内所有的束流操作在该会话中进行,并按图 3所示的状态机运行。治疗控制服务与束流管理服务维持独立的束流状态机,并保持状态同步。
治疗控制服务向束流管理服务请求开启束流会话,一旦会话创建成功则状态进入空闲状态。空闲状态下,可接受医务人员的指令发起束流申请,会话进入束流申请中状态。束流申请中状态会一直保持直到束流分配成功、申请被拒绝或取消束流申请。束流分配成功后,会话进入束流已分配状态,该状态下的会话获得束流的使用权。然后它可以将需要的束流参数发送给束流管理服务以控制加速器系统准备生产相应规格的束流,同时会话状态进入束流准备中状态。束流管理服务控制加速器系统完成所有的准备工作并通知束流准备完成后,会话进入束流就绪状态。如果准备工作过程失败,会话状态返回束流已分配状态,束流分配继续保持,可重试束流准备操作或者释放束流。束流就绪后并且医务人员完成病人的摆位、验证等步骤后就可以启动治疗,治疗控制服务就发起打开束流操作使质子束流进入治疗头,由治疗头进行病人的治疗,会话的状态进入束流出束中状态。当治疗头完成治疗便通知治疗控制服务发起关闭束流操作。当病人的所有治疗过程结束,治疗控制服务发起释放束流操作会话进入空闲状态。 当束流管理交互过程中出现各类错误、状态不同步等,可通过复位操作重启状态机流程。
2.3.1 束流会话的保活机制
束流质子在多治疗间系统中属于共享资源,应该避免由于某一个治疗间的软件或网络等问题而影响到其它治疗间的使用。所以在治疗控制服务和束流管理服务之间需提供会话保活检测机制。治疗控制服务需定期向束流管理服务发送保活消息,如果束流管理服务连续三个检测周期内未收到保活消息,则认为束流会话失效,于是释放该会话所占用的资源并关闭会话。治疗控制服务发出的保活消息未得到束流管理服务响应时认为通信异常,治疗控制服务启动异常处理机制:它定时向束流管理服务发送会话状态查询消息,获取服务器中当前会话的状态,并按以下情况分别处理:(1)束流管理服务能返回会话的状态且与治疗控制服务的维持的状态一致,则当前会话依然有效。若两边状态不一致,则发起复位会话操作或者关闭并重开会话。(2)束流管理服务返回会话不存在则重开会话。(3)在保活超时的时间内,未收到束流管理服务的任何响应则重开会话。
2.3.2 束流调度信息同步
医务人员在操作终端申请束流时,束流可能正在被其它的房间占用,为了避免盲目的等待,束流管理服务需要提供实时的束流调度信息以决定继续等待或取消申请。调度信息应该包括:束流是否已被分配、已分配的束流申请信息、等待分配的束流申请列表。束流申请信息包括:治疗间标识、束流使用时间和优先级。当束流管理会话的状态处于束流申请中时,束流管理服务定时向该会话发送束流调度信息直到其被分配成功或束流申请被取消。
2.4 束流管理接口设计
治疗控制服务和束流管理服务的接口统一通过Thrift代码生成引擎生成目标代码,具有简单易用、开发效率高、传输效率高等特点。特别是在治疗控制系统和加速器控制系统由不同的厂家提供时,可大大提高系统集成效率。治疗控制服务和束流管理服务建立双向连接,互为对方的客户端和服务端。治疗控制服务将“命令”消息同步发送给束流管理服务,束流管理服务将执行的结果异步返回。根据束流管理会话状态机设计,束流管理服务端的接口定义如下:
service BmsService {
string open(1: string id,2: string ip, 3: i16 port), //打开会话
RequestStatus close(1: string sid),//关闭会话
RequestStatus request(1:string sid,
2:string priority),//束流申请
RequestStatus release(1:string sid),//释放束流
RequestStatus prepare(1:string sid,
2:BeamSettings setting),//束流准备
RequestStatus enable(1:string sid),//打开束流
RequestStatus disable(1:string sid), //关闭束流
RequestStatus reset(1:string sid),//復位会话
RequestStatus ping(1:string sid),//保活
RequestStatus correctPosition(1:string sid,
2:CorrectionVector vector), //束流位置调整x,y
}
该接口由治疗控制服务以RPC方式进行调用。需要特别说明的是Open打开会话接口,其中id参数在系统内唯一,用于标识治疗间,一个治疗间只能打开一个束流管理会话。其中ip和 port参数为治疗控制服务的服务地址和端口,束流管理服务通过该接口返回结果。Open接口的返回结果中会带一个唯一的会话标识sid,该会话后续的所有调用都需要带上该标识,否则调用被拒绝。
治疗控制服务端的接口定义如下:
service BmsClientService {
void idle(1: string id), //空闲状态
void allocated(1: string sid), //已分配状态
void enabled(1:string sid),//束流已打开状态
void error(1:string sid), //会话出错
void prepareFailed(1:string sid, 2:string cause), //束流准备失败状态
void prepared(1:string sid),//束流就绪状态
void rejected(1:string sid),//束流申请被拒绝
void schedulerStatus(1:string sid,2:BeamSchedulerInfo schInfo), //束流调度状态
}
该接口由束流管理服务端调用,用来通知治疗控制服务操作的结果和状态包括束流被分配、拒绝、就绪、已打开、已关闭、出错等。
3 结语
本文介绍了在多治疗间的质子治疗系统中束流管理的相关知识包括束流管理模型、束流管理过程,并给出了束流管理的状态机设计以及状态处理过程中保活和调度同步机制设计。最后基于Thrift给出束流管理的接口的定义。随着质子行业的蓬勃发展,越来越多的人投入到质子装置产业化、国产化的研发工作中,希望本文能给相关领域开发人员提供借鉴和参考。
参考文献
[1]张伟,王贞丽,郭申波.肿瘤放疗前沿:质子治疗系统[J].中国医疗设备,2014,29(3):69-70.
[2]PTCOG.Particle therapy facilities in a planning stage [EB/OL].[2018-1-11].
[3]Vincent Collignon.BSS External Interface Specification [M].IBA.2015.