高大地,王佳舟,羅 吉,鐘 陽,翟 鵬,楊彥舉
(復旦大學附屬腫瘤醫院 放療射治療中心,上海 200032)
目前放射治療為腫瘤治療主要治療手段之一[1],在腫瘤的綜合治療手段中占有重要的地位.放射治療過程中,醫用直線加速器產生射線照射腫瘤以達到治愈腫瘤的目的.近些年來,腫瘤精確放射治療技術要求提高射線照射區域的照射劑量[2],同時降低腫瘤周圍正常組織吸收劑量,即提高放射治療執行的準確性.醫用直線加速器的質量保證(Quality Assurance,QA)是保證放射治療準確執行、提高治療效果、控制不必要照射和防止輻射事故的關鍵,因此質量保證在放射治療流程中具有重要意義[3,4].
我國放射治療QA 流程在整體上正在不斷完善,但一些問題仍尚未解決,如QA 流程復雜繁瑣以及流程規范性差等,導致放療過程中的QA 高效完成仍有一定障礙[5].在互聯網技術高速發展的大環境下,建立放療QA 數字化分析系統,實現放療設備QA 數據的數字存儲與智能分析,可極大地簡化放療QA 流程,提高物理師工作效率,符合精準放療時代所提出的基本要求[6–8].
Pylinac是一套提供AAPM TG-l42 報告相關的加速器QA 分析的開源代碼[9,10],用于分析日常加速器QA的數據和圖片.本研究利用Python 編程語言調用Pylinac中各函數模塊,基于Django Web 開發框架和MySQL 數據庫建立QA 數字化分析系統.其可分析物理師導入的加速器QA 流程中數字、圖片或日志數據并得出分析結果.同時,QA 數字化分析系統可簡化并規范放療設備安裝后的驗收檢查和放療流程中質量保證,提高放療工作效率,節省物理師工作時間,降低放療差錯和放療事故的發生概率.
本文中放射治療QA 數字化分析系統是一款專用于放射治療流程中質量保證工作的分析系統.該系統基于B/S 架構進行設計,包含數據上傳、QA 數據分析和可視化展示3個功能模塊,實現QA 數字化分析流程中QA 數據的導入、自動處理分析、結果展示和存儲下載功能.
本文中放射治療QA 數字化分析系統采用分層架構設計模式,其應用層、服務層和數據層之間保持相互獨立且各層內部迭代互不影響,系統整體架構如圖1所示.以瀏覽器作為用戶交互界面,交互界面包含數據上傳模塊和可視化展示模塊.數據上傳模塊具有從Django 框架中加載前端界面模板與上傳QA 數據和圖片至Django 框架功能;可視化展示模塊可具有將圖表等直觀的形式展示分析結果和下載分析結果功能.Django 服務框架將數據上傳模塊上傳的數據和圖片進行處理后保存至數據庫中,同時將數據導入QA 分析模塊.QA 分析模塊可完成對數據和圖片的自動分析,一方面將結果保存于數據庫,另一方面將結果進行格式化封裝封裝后返回到Django 服務框架.

圖1 放射治療QA 系統程序架構
1.2.1 數據上傳模塊設計
數據上傳模塊在QA 數字化分析系統中主要負責將QA 分析所需要的數據、圖片及日志文件上傳至Django 服務框架,主要包括前端界面加載功能和數據上傳功能.前端界面加載功能將前端界面加載展示到瀏覽器以用于用戶交互,其中包括需要QA 分析功能選擇區,數據上傳區與結果展示區.數據上傳功能實現將數據上傳區的數據上傳至Django 服務框架中.
1.2.2 QA 數據分析模塊設計
QA 數據分析模塊主要負責將導入的醫用加速器數據進行自動化分析得到結果.數據分析模塊主要包括數據存儲、數據比對分析與結果格式化封裝3個功能.數據存儲功能實現QA 數據分析流程中數據的保存與讀取,可將Django 框架中QA 初始數據和QA 分析結果保存至數據庫,亦可從數據庫讀取初始數據和分析結果.數據分析功能對QA 原始數據的內容和格式進行判斷,若數據缺失或格式錯誤,則向前端界面返回數據錯誤提示;若數據齊全且格式正確,則模塊調用分析函數進行QA 數據分析并給出分析結果.結果格式化封裝功能將分析結果生成前端界面所需要的JSON 格式數據并返回到Django 服務框架供可視化結果顯示使用.
1.2.3 可視化展示模塊設計
可視化展示模塊包括可視化界面展示和結果下載兩個部分.可視化展示功能是將數據分析功能模塊返回到Django 服務框架中的QA 分析結果以表和圖的形式展示在前端界面.結果下載功能是將QA 分析結果以PDF的形式下載,方便交流與研究.
基于上文系統的架構設計和各個功能模塊的設計需求,需選擇開發語言、開發框架和數據庫對各個模塊功能進行實現.系統服務端選用Python 3.7 語言,并基于Django 框架進行開發.該框架是MVC (Model View Controller)軟件架構的擴展與延伸,具有耦合性低,重用性高和開發周期短的特點.系統客戶端基于Bootstrap 開發框架對前端界面進行編寫.Bootstrap為聚合HTML、CSS和JS 開發語音的前端開發框架,可用于開發響應式布局、移動設備優先的Web 項目.系統數據庫采用MySQL 數據庫管理系統對QA 數據、圖片、日志文件及結果進行存取管理.
數據上傳模塊完成QA 數據、圖片和日志文件的上傳至Django 系統框架的功能.模塊功能主要包塊界面加載功能和文件上傳功能.在系統開發過程中,各個QA 分析前端界面中頁頭和側邊欄部分完全一樣,若各界面單獨編寫前端代碼,則增加了工作量,更為后期更新升級帶來不便,故在界面加載中選用Django 模板繼承方式,將界面中頂部和側邊欄寫入base.html 模板中,各功能界面通過{% extends "base.html" %}載入‘base’模板.因此,各個界面只需編寫模塊功能代碼,大大減少冗余內容.
文件上傳功能中通過基于加jQuery的Ajax (Asynchronous javascript and xml)方式完成QA 數據、圖片和日志的上傳.引用jQuery 文件以方便使用文件中Ajax 文件上傳模板.在數據輸入表單中載入QA 數據,點擊上傳按鈕觸發文件上傳事件.系統通過jQuery 技術$("#id").val()得到form 表單數據,創建一個formdata對象并將form 表單數據以鍵值對的形式保存,Ajax 攜帶formdata 對象以post 方式上傳至指定Django 后臺中的url.py 文件進行數據處理.Django 后臺將接收到的數據后會自動識別其信息類型,若是數字型或字符串型則通過request.POST.get 方式讀取數據;若是圖片和日志文件則request.FILES.get 方式讀取文件.獲取數據和文件后對格式進行判斷,若文件格式錯誤,返回上傳文件錯誤提示;若上傳正確,則將文件發送至數據分析模塊.
文件上傳功能通過Ajax 方式完成QA 數據、圖片和日志的上傳,接收服務端返回數據并處理的關鍵代碼如下:
$.ajax({
url:"{% url "planarimagingleeds" %}",
type:"post",
data:formdata,
contentType:false,
processData:false,
success:function (data) {
if(data.status=='success') {
var hc_rois_points=data.hc_rois;
am4core.ready(function() {···});
var constant_points=data.contrast_constant;
var noise_points=data.contrast_to_noise;
am4core.ready(function() {···});
$('#MTF').val(data.MTF);
$('#median_Contrast').val(data.median_Contrast);
$('#Median_CNR').val(data.Median_CNR);
$('#result_image').attr("src","../../"+data.result_img);
}else if(data.status=='fail'){
$('#jsEditUserForm').html(data.msg)
}}});
QA 數據分析模塊是系統的核心功能模塊,具有存儲數據、QA 數據分析和格式化封裝結果三項功能.存儲數據功能選用MySQL 數據庫管理系統對數據進行管理,采用ORM 模型來操作數據庫.首先在settings.py中配置DATABASES中數據庫信息;然后在model.py中以類繼承models.Model的方式生成數據表;最后在view.py 文件中獲取models.py 對應數據表對象,從而完成前端上傳數據和QA 數據分析結果的存取操作.
對于QA 數據分析功能,首先新建功能類繼承Pylinac 庫中類來實現QA 數據與圖片的分析功能;然后通過數據表對象獲取QA 數據并將數據導入功能類中使用analyze 函數分析;最后通過get()函數和save_image_image()分別得到數據結果與圖表結果.以平板成像模塊中Leeds TOR 18 部分為例,QA 數據分析功能新建功能類核心代碼如下所示:
class myLeedsTOR(LeedsTOR):
def plot_image_image(self):
self.plot_analyzed_image(low_contrast=False,high_contrast=False)
def get_hc_rois(self):
hc_rois=[roi.mtf for roi in self.hc_rois]
return hc_rois
def get_contrast_constant(self):
contrast_constant=[roi.contrast_constant for roi in self.lc_rois]
return contrast_constant
def get_contrast_to_noise(self):
contrast_to_noise=[roi.contrast_to_noise for roi in self.lc_rois]
return contrast_to_noise
def save_image_image(self,filename,**kwargs):
self.plot_analyzed_image(show=False,low_contrast=False,high_contrast=False,**kwargs)
plt.savefig(filename,**kwargs)
其中,plot_image_image()與save_image_image()函數完成圖表結果的繪制與保存工作.get_hc_rois()、get_contrast_constant()和get_contrast_to_noise()分別具有獲得平板成像的高頻相對調制傳遞函數值、低頻率對比度和載噪比數值功能.
結果格式化封裝功能將分析結果整理成json 類型數據,通過HttpResponse(json.dumps(result_dict),content_type='application/json')將json 數據返回到指定HTML 前端界面用于可視化展示.
可視化展示模塊包括可視化界面展示和結果下載兩項功能.可視化界面展示功能主要實現將QA 分析結果以圖表形式直觀的展現出來.首先通過Ajax的異步調用獲取服務器端返回的json 類型數據,然后使用amCharts 定制圖表加載數據的方法將QA 分析結果進行動態加載實現可視化展示功能.在使用amCharts 定制圖表時,先通過DIV 標簽設置圖表的位置和大小,然后在標簽中調用amCharts中var chart=am4core.create("ID",am4charts.XYChart)方法來得到圖表div;然后通過對象定義完成圖表屬性的相關設置,如xAxes、yAxes、color 以及圖表數據data 等相關信息;最后通過chart.series.push(new am4charts.LineSeries())設置圖表屬性.結果下載功能實現對可視化結果以PDF 形式下載,點擊下載按鈕觸發download 事件,調用download(request)函數將分析結果以數據流的方式下載.
amCharts 定制平板成像模塊中Leeds TOR 18 圖表的核心代碼如下所示:
am4core.ready(function() {
var chart=am4core.create("rMTF_Chart",am4charts.XYChart);
chart.data=get_hc_rois_points(hc_rois_points);
var dateAxis=chart.xAxes.push(new am4charts.CategoryAxis());
dateAxis.dataFields.category="date";
dateAxis.title.text="線對值";
dateAxis.renderer.minGridDistance=5;
var contrastAxis=chart.yAxes.push(new am4charts.ValueAxis());
contrastAxis.title.text="相對MTF";
contrastAxis.renderer.grid.template.disabled=false;
var rMTF_Series=chart.series.push(new am4charts.LineSeries());
rMTF_Series.dataFields.valueY="hc_rois";
rMTF_Series.dataFields.categoryX="date";
rMTF_Series.yAxis=contrastAxis;
rMTF_Series.tooltipText="{date}:{hc_rois}";
rMTF_Series.name="相對MTF";
rMTF_Series.strokeWidth=2;}
放射治療QA 數字化分析系統的主界面如圖2所示,左側為QA 分析模塊操作側邊欄,包括日常周檢查和月檢查所需QA 分析操作.其中劑量校準模塊依據TG51 協議可完成對醫用直線加速器輸出劑量的測定和校準數據計算.等中心驗證模塊通過分析膠片圖像,既可驗證機架旋轉軸與輻射束等中心一致性,也可完成準直器旋轉軸與輻射束等中心一致性的驗證.容積調強質控模塊主要包括劑量率與機架旋轉速率的聯合測試和多葉光柵速率與劑量率的聯合測試兩個部分.該模塊加載電子投影影像設備(EPID)采集的DICOM圖像文件并分析VMAT/Rapid Arc的誤差變化.平板成像模塊通過分析直線加速器MV 圖像或KV 圖像來判斷MV 探測板及KV 探測板成像質量,其支持Leeds TOR 18、Standard Imaging QC-3和Las Vegas 模體的分析.Winston_Lutz 分析模塊可加載winston_lutz 圖像,分析驗證醫用直線加速器的機械等中心與輻射束等中心的重合度.光柵運動檢測模塊通過分析EPID 采集的DICOM 圖像來確定多葉光柵的峰值,判斷多葉光柵的運動狀況,并給出通過、警告或失敗的可視化指示.CT 質量檢查模塊對上傳的CBCT 或CT 圖像進行分析,得到CT 圖像的空間分辨率、圖像噪聲和低對比度分辨率結果.平坦度與對稱性模塊依據平坦度/對稱性計算標準,可以加載和分析膠片或EPID 圖像來檢查直線加速器輻射束的平坦度與對稱性.日志分析模塊可讀取及分析瓦里安直線加速器機器的日志,包括動態日志和軌跡日志.

圖2 放射治療QA 數字化分析系統主界面
選擇界面左側QA 分析操作側邊欄對應QA 分析操作,右側主界面會加載QA 分析操作與結果界面,其包括參數設置、文件上傳、結果可視化和結果下載.文件上傳部分支持圖片上傳格式為TIF 格式、JPEG格式和DICOM 格式,同時也支持文件壓縮包上傳及文件夾上傳.參數設置部分需要設定QA中測定的參數值和預定的影響QA 結果的值,其中測定值主要包括:溫度、氣壓和跳數、參考值、誤差值和對比度閾值等.
本文選用KV/MV 影像分析中分析KV/MV 影像質量的Leeds TOR Phantom為例來介紹QA 數字化分析系統分析操作界面.使用本院醫用直線加速器Varian Edge 拍攝Leeds TOR Phantom 圖像用于MV 平板質量分析.如圖3Leeds TOR Phantom 分析操作與結果界面所示,在左上方文件上傳部分輸入低對比度閾值和高對比度閾值并載入加速器拍攝dicom 類型MV平板分析文件.點擊上傳按鈕,對數據和文件進行上傳.上傳數據及文件后,系統可自動進行分析并返回可視化結果,結果呈現部分以圖表的形式展現QA的分析結果.Leeds TOR Phantom的可視化結果分別在分析結果、高頻相對MTF 結果和低頻率對比度與載噪比結果3個區域展示.在可視化結果界面點擊“下載”,既可進入結果下載界面.結果下載界面中根據日期排序列出分析結果,點擊“下載”即可得到分析結果的PDF 文件.Leeds TOR Phantom 傳統QA 流程是物理師采集到模體圖像后,在高對比度區域通過肉眼判斷得出高對比度結果,在低對比度畫圈讀出低對比度結果.QA 數字化分析系統改變了傳統QA 流程,通過分析上傳的模體圖片可得到結果,減少了因為技能水平差異而造成的分析結果誤差,將影像質量評定縮短至數分鐘內可以完成的任務.

圖3 Leeds TOR Phantom 分析操作與結果界面
在系統可靠性和實用性測試中,分別將本院七臺醫用直線加速器2019年度年檢QA 數據與圖片QA導入用數字化分析系統進行分析,使用對比分析法將分析結果與年檢結果進行比較后得到兩者偏差的概率小于千分之一.
經測試結果表明,我們搭建的放射治療QA 數字化分析系統可以成功識別并自動處理前端界面表單中添加的放療設備參數、圖像或日志文件,幫助物理師得到QA 分析計算結果并根據QA 標準檢查設備工作質量.
放射治療的QA是保證和提高腫瘤治療水平的基礎,也是放射治療的安全與有效的關鍵[11,12].高水平的質量保證工作不但減少或避免放療差錯及放療事故的發生,而且使直線加速器保持良好的工作狀態.通過精確地輸送處方劑量到放療靶區,減少附近正常組織的受照量,進而使患者能夠獲得更好的治療[13–15].
在傳統的QA 過程中,物理師使用QA 設備得到QA 數值或圖像后,通過人工計算或觀察評估醫用直線加速器QA是否通過[16–18].由于QA 工作繁重且計算復雜,在進行手動計算的時,可能存在人為失誤導致重新計算或數據采集,會進一步增加了物理師的工作量.此外,物理師個人之間的工作能力與QA 評價標準也存在差別,需要分析的圖片數量多且復雜,觀察評估QA是否通過存在較大主觀性和間接性[19,20].基于Pylinac開發的QA 數字化分析系統很好地解決了這方面的問題,物理師將采集的數據導入系統,系統自動分析得到QA 結果,從而可直觀的判斷直線加速器QA 能否通過.本系統的測試結果顯示,醫用加速器QA 工作流程得以順利的實現,物理師工作內容得到簡化,工作效率得到明顯的改善和提高.
隨著互聯網與自動化技術的發展,越來越多放射治療QA 管理系統被物理師接觸并使用,如Darcis M 開發設計的加速器等中心檢驗系統[21,22].但這樣的系統往往功能單一,缺乏系統整合,物理師對直線加速器進行不同項目的QA 時需要打開多個軟件.本設計將加速器性能檢測的所有項目都集成到一個系統中,極大地簡化了工作流程,提高工作效率.
綜上所述,基于Pylinac的放射治療QA 數字化分析系統改變了物理師傳統的QA 流程,使質量保證過程得到進一步規范;建立QA 流程標準化體系和數據數字化管理并自動化分析QA 數據,提高了物理師工作效率,從而具有推動放射治療事業向前發展的作用.