高大地,王佳舟,羅 吉,鐘 陽,翟 鵬,楊彥舉
(復旦大學附屬腫瘤醫(yī)院 放療射治療中心,上海 200032)
目前放射治療為腫瘤治療主要治療手段之一[1],在腫瘤的綜合治療手段中占有重要的地位.放射治療過程中,醫(yī)用直線加速器產(chǎn)生射線照射腫瘤以達到治愈腫瘤的目的.近些年來,腫瘤精確放射治療技術(shù)要求提高射線照射區(qū)域的照射劑量[2],同時降低腫瘤周圍正常組織吸收劑量,即提高放射治療執(zhí)行的準確性.醫(yī)用直線加速器的質(zhì)量保證(Quality Assurance,QA)是保證放射治療準確執(zhí)行、提高治療效果、控制不必要照射和防止輻射事故的關鍵,因此質(zhì)量保證在放射治療流程中具有重要意義[3,4].
我國放射治療QA 流程在整體上正在不斷完善,但一些問題仍尚未解決,如QA 流程復雜繁瑣以及流程規(guī)范性差等,導致放療過程中的QA 高效完成仍有一定障礙[5].在互聯(lián)網(wǎng)技術(shù)高速發(fā)展的大環(huán)境下,建立放療QA 數(shù)字化分析系統(tǒng),實現(xiàn)放療設備QA 數(shù)據(jù)的數(shù)字存儲與智能分析,可極大地簡化放療QA 流程,提高物理師工作效率,符合精準放療時代所提出的基本要求[6–8].
Pylinac是一套提供AAPM TG-l42 報告相關的加速器QA 分析的開源代碼[9,10],用于分析日常加速器QA的數(shù)據(jù)和圖片.本研究利用Python 編程語言調(diào)用Pylinac中各函數(shù)模塊,基于Django Web 開發(fā)框架和MySQL 數(shù)據(jù)庫建立QA 數(shù)字化分析系統(tǒng).其可分析物理師導入的加速器QA 流程中數(shù)字、圖片或日志數(shù)據(jù)并得出分析結(jié)果.同時,QA 數(shù)字化分析系統(tǒng)可簡化并規(guī)范放療設備安裝后的驗收檢查和放療流程中質(zhì)量保證,提高放療工作效率,節(jié)省物理師工作時間,降低放療差錯和放療事故的發(fā)生概率.
本文中放射治療QA 數(shù)字化分析系統(tǒng)是一款專用于放射治療流程中質(zhì)量保證工作的分析系統(tǒng).該系統(tǒng)基于B/S 架構(gòu)進行設計,包含數(shù)據(jù)上傳、QA 數(shù)據(jù)分析和可視化展示3個功能模塊,實現(xiàn)QA 數(shù)字化分析流程中QA 數(shù)據(jù)的導入、自動處理分析、結(jié)果展示和存儲下載功能.
本文中放射治療QA 數(shù)字化分析系統(tǒng)采用分層架構(gòu)設計模式,其應用層、服務層和數(shù)據(jù)層之間保持相互獨立且各層內(nèi)部迭代互不影響,系統(tǒng)整體架構(gòu)如圖1所示.以瀏覽器作為用戶交互界面,交互界面包含數(shù)據(jù)上傳模塊和可視化展示模塊.數(shù)據(jù)上傳模塊具有從Django 框架中加載前端界面模板與上傳QA 數(shù)據(jù)和圖片至Django 框架功能;可視化展示模塊可具有將圖表等直觀的形式展示分析結(jié)果和下載分析結(jié)果功能.Django 服務框架將數(shù)據(jù)上傳模塊上傳的數(shù)據(jù)和圖片進行處理后保存至數(shù)據(jù)庫中,同時將數(shù)據(jù)導入QA 分析模塊.QA 分析模塊可完成對數(shù)據(jù)和圖片的自動分析,一方面將結(jié)果保存于數(shù)據(jù)庫,另一方面將結(jié)果進行格式化封裝封裝后返回到Django 服務框架.
圖1 放射治療QA 系統(tǒng)程序架構(gòu)
1.2.1 數(shù)據(jù)上傳模塊設計
數(shù)據(jù)上傳模塊在QA 數(shù)字化分析系統(tǒng)中主要負責將QA 分析所需要的數(shù)據(jù)、圖片及日志文件上傳至Django 服務框架,主要包括前端界面加載功能和數(shù)據(jù)上傳功能.前端界面加載功能將前端界面加載展示到瀏覽器以用于用戶交互,其中包括需要QA 分析功能選擇區(qū),數(shù)據(jù)上傳區(qū)與結(jié)果展示區(qū).數(shù)據(jù)上傳功能實現(xiàn)將數(shù)據(jù)上傳區(qū)的數(shù)據(jù)上傳至Django 服務框架中.
1.2.2 QA 數(shù)據(jù)分析模塊設計
QA 數(shù)據(jù)分析模塊主要負責將導入的醫(yī)用加速器數(shù)據(jù)進行自動化分析得到結(jié)果.數(shù)據(jù)分析模塊主要包括數(shù)據(jù)存儲、數(shù)據(jù)比對分析與結(jié)果格式化封裝3個功能.數(shù)據(jù)存儲功能實現(xiàn)QA 數(shù)據(jù)分析流程中數(shù)據(jù)的保存與讀取,可將Django 框架中QA 初始數(shù)據(jù)和QA 分析結(jié)果保存至數(shù)據(jù)庫,亦可從數(shù)據(jù)庫讀取初始數(shù)據(jù)和分析結(jié)果.數(shù)據(jù)分析功能對QA 原始數(shù)據(jù)的內(nèi)容和格式進行判斷,若數(shù)據(jù)缺失或格式錯誤,則向前端界面返回數(shù)據(jù)錯誤提示;若數(shù)據(jù)齊全且格式正確,則模塊調(diào)用分析函數(shù)進行QA 數(shù)據(jù)分析并給出分析結(jié)果.結(jié)果格式化封裝功能將分析結(jié)果生成前端界面所需要的JSON 格式數(shù)據(jù)并返回到Django 服務框架供可視化結(jié)果顯示使用.
1.2.3 可視化展示模塊設計
可視化展示模塊包括可視化界面展示和結(jié)果下載兩個部分.可視化展示功能是將數(shù)據(jù)分析功能模塊返回到Django 服務框架中的QA 分析結(jié)果以表和圖的形式展示在前端界面.結(jié)果下載功能是將QA 分析結(jié)果以PDF的形式下載,方便交流與研究.
基于上文系統(tǒng)的架構(gòu)設計和各個功能模塊的設計需求,需選擇開發(fā)語言、開發(fā)框架和數(shù)據(jù)庫對各個模塊功能進行實現(xiàn).系統(tǒng)服務端選用Python 3.7 語言,并基于Django 框架進行開發(fā).該框架是MVC (Model View Controller)軟件架構(gòu)的擴展與延伸,具有耦合性低,重用性高和開發(fā)周期短的特點.系統(tǒng)客戶端基于Bootstrap 開發(fā)框架對前端界面進行編寫.Bootstrap為聚合HTML、CSS和JS 開發(fā)語音的前端開發(fā)框架,可用于開發(fā)響應式布局、移動設備優(yōu)先的Web 項目.系統(tǒng)數(shù)據(jù)庫采用MySQL 數(shù)據(jù)庫管理系統(tǒng)對QA 數(shù)據(jù)、圖片、日志文件及結(jié)果進行存取管理.
數(shù)據(jù)上傳模塊完成QA 數(shù)據(jù)、圖片和日志文件的上傳至Django 系統(tǒng)框架的功能.模塊功能主要包塊界面加載功能和文件上傳功能.在系統(tǒng)開發(fā)過程中,各個QA 分析前端界面中頁頭和側(cè)邊欄部分完全一樣,若各界面單獨編寫前端代碼,則增加了工作量,更為后期更新升級帶來不便,故在界面加載中選用Django 模板繼承方式,將界面中頂部和側(cè)邊欄寫入base.html 模板中,各功能界面通過{% extends "base.html" %}載入‘base’模板.因此,各個界面只需編寫模塊功能代碼,大大減少冗余內(nèi)容.
文件上傳功能中通過基于加jQuery的Ajax (Asynchronous javascript and xml)方式完成QA 數(shù)據(jù)、圖片和日志的上傳.引用jQuery 文件以方便使用文件中Ajax 文件上傳模板.在數(shù)據(jù)輸入表單中載入QA 數(shù)據(jù),點擊上傳按鈕觸發(fā)文件上傳事件.系統(tǒng)通過jQuery 技術(shù)$("#id").val()得到form 表單數(shù)據(jù),創(chuàng)建一個formdata對象并將form 表單數(shù)據(jù)以鍵值對的形式保存,Ajax 攜帶formdata 對象以post 方式上傳至指定Django 后臺中的url.py 文件進行數(shù)據(jù)處理.Django 后臺將接收到的數(shù)據(jù)后會自動識別其信息類型,若是數(shù)字型或字符串型則通過request.POST.get 方式讀取數(shù)據(jù);若是圖片和日志文件則request.FILES.get 方式讀取文件.獲取數(shù)據(jù)和文件后對格式進行判斷,若文件格式錯誤,返回上傳文件錯誤提示;若上傳正確,則將文件發(fā)送至數(shù)據(jù)分析模塊.
文件上傳功能通過Ajax 方式完成QA 數(shù)據(jù)、圖片和日志的上傳,接收服務端返回數(shù)據(jù)并處理的關鍵代碼如下:
$.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 數(shù)據(jù)分析模塊是系統(tǒng)的核心功能模塊,具有存儲數(shù)據(jù)、QA 數(shù)據(jù)分析和格式化封裝結(jié)果三項功能.存儲數(shù)據(jù)功能選用MySQL 數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)進行管理,采用ORM 模型來操作數(shù)據(jù)庫.首先在settings.py中配置DATABASES中數(shù)據(jù)庫信息;然后在model.py中以類繼承models.Model的方式生成數(shù)據(jù)表;最后在view.py 文件中獲取models.py 對應數(shù)據(jù)表對象,從而完成前端上傳數(shù)據(jù)和QA 數(shù)據(jù)分析結(jié)果的存取操作.
對于QA 數(shù)據(jù)分析功能,首先新建功能類繼承Pylinac 庫中類來實現(xiàn)QA 數(shù)據(jù)與圖片的分析功能;然后通過數(shù)據(jù)表對象獲取QA 數(shù)據(jù)并將數(shù)據(jù)導入功能類中使用analyze 函數(shù)分析;最后通過get()函數(shù)和save_image_image()分別得到數(shù)據(jù)結(jié)果與圖表結(jié)果.以平板成像模塊中Leeds TOR 18 部分為例,QA 數(shù)據(jù)分析功能新建功能類核心代碼如下所示:
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()函數(shù)完成圖表結(jié)果的繪制與保存工作.get_hc_rois()、get_contrast_constant()和get_contrast_to_noise()分別具有獲得平板成像的高頻相對調(diào)制傳遞函數(shù)值、低頻率對比度和載噪比數(shù)值功能.
結(jié)果格式化封裝功能將分析結(jié)果整理成json 類型數(shù)據(jù),通過HttpResponse(json.dumps(result_dict),content_type='application/json')將json 數(shù)據(jù)返回到指定HTML 前端界面用于可視化展示.
可視化展示模塊包括可視化界面展示和結(jié)果下載兩項功能.可視化界面展示功能主要實現(xiàn)將QA 分析結(jié)果以圖表形式直觀的展現(xiàn)出來.首先通過Ajax的異步調(diào)用獲取服務器端返回的json 類型數(shù)據(jù),然后使用amCharts 定制圖表加載數(shù)據(jù)的方法將QA 分析結(jié)果進行動態(tài)加載實現(xiàn)可視化展示功能.在使用amCharts 定制圖表時,先通過DIV 標簽設置圖表的位置和大小,然后在標簽中調(diào)用amCharts中var chart=am4core.create("ID",am4charts.XYChart)方法來得到圖表div;然后通過對象定義完成圖表屬性的相關設置,如xAxes、yAxes、color 以及圖表數(shù)據(jù)data 等相關信息;最后通過chart.series.push(new am4charts.LineSeries())設置圖表屬性.結(jié)果下載功能實現(xiàn)對可視化結(jié)果以PDF 形式下載,點擊下載按鈕觸發(fā)download 事件,調(diào)用download(request)函數(shù)將分析結(jié)果以數(shù)據(jù)流的方式下載.
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 數(shù)字化分析系統(tǒng)的主界面如圖2所示,左側(cè)為QA 分析模塊操作側(cè)邊欄,包括日常周檢查和月檢查所需QA 分析操作.其中劑量校準模塊依據(jù)TG51 協(xié)議可完成對醫(yī)用直線加速器輸出劑量的測定和校準數(shù)據(jù)計算.等中心驗證模塊通過分析膠片圖像,既可驗證機架旋轉(zhuǎn)軸與輻射束等中心一致性,也可完成準直器旋轉(zhuǎn)軸與輻射束等中心一致性的驗證.容積調(diào)強質(zhì)控模塊主要包括劑量率與機架旋轉(zhuǎn)速率的聯(lián)合測試和多葉光柵速率與劑量率的聯(lián)合測試兩個部分.該模塊加載電子投影影像設備(EPID)采集的DICOM圖像文件并分析VMAT/Rapid Arc的誤差變化.平板成像模塊通過分析直線加速器MV 圖像或KV 圖像來判斷MV 探測板及KV 探測板成像質(zhì)量,其支持Leeds TOR 18、Standard Imaging QC-3和Las Vegas 模體的分析.Winston_Lutz 分析模塊可加載winston_lutz 圖像,分析驗證醫(yī)用直線加速器的機械等中心與輻射束等中心的重合度.光柵運動檢測模塊通過分析EPID 采集的DICOM 圖像來確定多葉光柵的峰值,判斷多葉光柵的運動狀況,并給出通過、警告或失敗的可視化指示.CT 質(zhì)量檢查模塊對上傳的CBCT 或CT 圖像進行分析,得到CT 圖像的空間分辨率、圖像噪聲和低對比度分辨率結(jié)果.平坦度與對稱性模塊依據(jù)平坦度/對稱性計算標準,可以加載和分析膠片或EPID 圖像來檢查直線加速器輻射束的平坦度與對稱性.日志分析模塊可讀取及分析瓦里安直線加速器機器的日志,包括動態(tài)日志和軌跡日志.
圖2 放射治療QA 數(shù)字化分析系統(tǒng)主界面
選擇界面左側(cè)QA 分析操作側(cè)邊欄對應QA 分析操作,右側(cè)主界面會加載QA 分析操作與結(jié)果界面,其包括參數(shù)設置、文件上傳、結(jié)果可視化和結(jié)果下載.文件上傳部分支持圖片上傳格式為TIF 格式、JPEG格式和DICOM 格式,同時也支持文件壓縮包上傳及文件夾上傳.參數(shù)設置部分需要設定QA中測定的參數(shù)值和預定的影響QA 結(jié)果的值,其中測定值主要包括:溫度、氣壓和跳數(shù)、參考值、誤差值和對比度閾值等.
本文選用KV/MV 影像分析中分析KV/MV 影像質(zhì)量的Leeds TOR Phantom為例來介紹QA 數(shù)字化分析系統(tǒng)分析操作界面.使用本院醫(yī)用直線加速器Varian Edge 拍攝Leeds TOR Phantom 圖像用于MV 平板質(zhì)量分析.如圖3Leeds TOR Phantom 分析操作與結(jié)果界面所示,在左上方文件上傳部分輸入低對比度閾值和高對比度閾值并載入加速器拍攝dicom 類型MV平板分析文件.點擊上傳按鈕,對數(shù)據(jù)和文件進行上傳.上傳數(shù)據(jù)及文件后,系統(tǒng)可自動進行分析并返回可視化結(jié)果,結(jié)果呈現(xiàn)部分以圖表的形式展現(xiàn)QA的分析結(jié)果.Leeds TOR Phantom的可視化結(jié)果分別在分析結(jié)果、高頻相對MTF 結(jié)果和低頻率對比度與載噪比結(jié)果3個區(qū)域展示.在可視化結(jié)果界面點擊“下載”,既可進入結(jié)果下載界面.結(jié)果下載界面中根據(jù)日期排序列出分析結(jié)果,點擊“下載”即可得到分析結(jié)果的PDF 文件.Leeds TOR Phantom 傳統(tǒng)QA 流程是物理師采集到模體圖像后,在高對比度區(qū)域通過肉眼判斷得出高對比度結(jié)果,在低對比度畫圈讀出低對比度結(jié)果.QA 數(shù)字化分析系統(tǒng)改變了傳統(tǒng)QA 流程,通過分析上傳的模體圖片可得到結(jié)果,減少了因為技能水平差異而造成的分析結(jié)果誤差,將影像質(zhì)量評定縮短至數(shù)分鐘內(nèi)可以完成的任務.
圖3 Leeds TOR Phantom 分析操作與結(jié)果界面
在系統(tǒng)可靠性和實用性測試中,分別將本院七臺醫(yī)用直線加速器2019年度年檢QA 數(shù)據(jù)與圖片QA導入用數(shù)字化分析系統(tǒng)進行分析,使用對比分析法將分析結(jié)果與年檢結(jié)果進行比較后得到兩者偏差的概率小于千分之一.
經(jīng)測試結(jié)果表明,我們搭建的放射治療QA 數(shù)字化分析系統(tǒng)可以成功識別并自動處理前端界面表單中添加的放療設備參數(shù)、圖像或日志文件,幫助物理師得到QA 分析計算結(jié)果并根據(jù)QA 標準檢查設備工作質(zhì)量.
放射治療的QA是保證和提高腫瘤治療水平的基礎,也是放射治療的安全與有效的關鍵[11,12].高水平的質(zhì)量保證工作不但減少或避免放療差錯及放療事故的發(fā)生,而且使直線加速器保持良好的工作狀態(tài).通過精確地輸送處方劑量到放療靶區(qū),減少附近正常組織的受照量,進而使患者能夠獲得更好的治療[13–15].
在傳統(tǒng)的QA 過程中,物理師使用QA 設備得到QA 數(shù)值或圖像后,通過人工計算或觀察評估醫(yī)用直線加速器QA是否通過[16–18].由于QA 工作繁重且計算復雜,在進行手動計算的時,可能存在人為失誤導致重新計算或數(shù)據(jù)采集,會進一步增加了物理師的工作量.此外,物理師個人之間的工作能力與QA 評價標準也存在差別,需要分析的圖片數(shù)量多且復雜,觀察評估QA是否通過存在較大主觀性和間接性[19,20].基于Pylinac開發(fā)的QA 數(shù)字化分析系統(tǒng)很好地解決了這方面的問題,物理師將采集的數(shù)據(jù)導入系統(tǒng),系統(tǒng)自動分析得到QA 結(jié)果,從而可直觀的判斷直線加速器QA 能否通過.本系統(tǒng)的測試結(jié)果顯示,醫(yī)用加速器QA 工作流程得以順利的實現(xiàn),物理師工作內(nèi)容得到簡化,工作效率得到明顯的改善和提高.
隨著互聯(lián)網(wǎng)與自動化技術(shù)的發(fā)展,越來越多放射治療QA 管理系統(tǒng)被物理師接觸并使用,如Darcis M 開發(fā)設計的加速器等中心檢驗系統(tǒng)[21,22].但這樣的系統(tǒng)往往功能單一,缺乏系統(tǒng)整合,物理師對直線加速器進行不同項目的QA 時需要打開多個軟件.本設計將加速器性能檢測的所有項目都集成到一個系統(tǒng)中,極大地簡化了工作流程,提高工作效率.
綜上所述,基于Pylinac的放射治療QA 數(shù)字化分析系統(tǒng)改變了物理師傳統(tǒng)的QA 流程,使質(zhì)量保證過程得到進一步規(guī)范;建立QA 流程標準化體系和數(shù)據(jù)數(shù)字化管理并自動化分析QA 數(shù)據(jù),提高了物理師工作效率,從而具有推動放射治療事業(yè)向前發(fā)展的作用.