賴佳路,鐘仁明
四川大學(xué)華西醫(yī)院 放療科,四川 成都 610041
瘢痕疙瘩是由成纖維細(xì)胞異常增殖和膠原蛋白過(guò)度沉積且超過(guò)原來(lái)正常范圍的一種纖維增生性疾病[1-2]。該病治療方法較多[3-5],研究發(fā)現(xiàn)術(shù)后即時(shí)聯(lián)合電子線放療是治療瘢痕疙瘩最有效、復(fù)發(fā)率最低的治療方案,治愈率高達(dá)80%以上[6-7]。瘢痕疙瘩術(shù)后24 h 內(nèi)病變處成纖維細(xì)胞占多數(shù)且對(duì)射線最敏感,是放療干預(yù)瘢痕疙瘩的最佳時(shí)期[8],最近的一些回顧性研究發(fā)現(xiàn)也表明,瘢痕疙瘩切除后7 h甚至更短時(shí)間進(jìn)行放療復(fù)發(fā)率更低[9-10]。
根據(jù)我院放療科情況,瘢痕病人術(shù)后在行放療之前醫(yī)生需要對(duì)瘢痕病人進(jìn)行簡(jiǎn)單定位。醫(yī)生會(huì)根據(jù)瘢痕疙瘩大小設(shè)定照射野參數(shù),之后將填寫有照射野大小、照射野能量等信息的放療申請(qǐng)單交由物理師進(jìn)行二維計(jì)劃設(shè)計(jì)。目前,我科室瘢痕二維計(jì)劃設(shè)計(jì)均在商用計(jì)劃系統(tǒng)Pinnacle 9.2(飛利浦)上設(shè)計(jì),該計(jì)劃系統(tǒng)價(jià)格昂貴,由于科室資源緊缺無(wú)法隨時(shí)隨地提供Pinnacle 供物理師進(jìn)行二維計(jì)劃設(shè)計(jì)。有時(shí)瘢痕病人手術(shù)較晚,物理師不能當(dāng)天對(duì)瘢痕病人的二維計(jì)劃進(jìn)行處理,這讓瘢痕病人錯(cuò)過(guò)了最佳治療時(shí)間。根據(jù)我科室瘢痕二維計(jì)劃設(shè)計(jì)經(jīng)驗(yàn),所有二維計(jì)劃計(jì)算均是基于一個(gè)大小為50 cm×50 cm×50 cm 的水模體,且瘢痕二維計(jì)劃設(shè)計(jì)過(guò)程中很多參數(shù)都是固定不變的,如處方劑量為2000 cGy/4 次,源皮距SSD 為100 cm,能量為6 Mev 電子線,床角度、機(jī)架角度、準(zhǔn)直器角度都為0°,處方歸一到劑量最大點(diǎn)Dmax。每個(gè)瘢痕病人計(jì)劃設(shè)計(jì)過(guò)程中唯一不同的是限光筒大小以及用電子擋鉛形成的射野大小。因此我們可以編寫一款程序,將事先通過(guò)Pinnacle 商用計(jì)劃系統(tǒng)計(jì)算好的數(shù)據(jù)錄入我們軟件中。這樣便能在瘢痕病人定位階段根據(jù)照射野大小借助我們編寫程序得到機(jī)器跳數(shù)。等病人定位完后便可以直接進(jìn)入加速器機(jī)房進(jìn)行治療。這樣極大節(jié)省了治療單送去計(jì)劃室路上花費(fèi)的時(shí)間同時(shí)也避免了物理師計(jì)劃設(shè)計(jì)過(guò)程中的重復(fù)操作。目前在放療領(lǐng)域,商用的放療系統(tǒng)常常是封閉系統(tǒng),對(duì)于科研工作的使用多不方便[11],由于商用計(jì)劃系統(tǒng)價(jià)格昂貴,在定位室專門放一臺(tái)商用計(jì)劃系統(tǒng)用于瘢痕計(jì)劃設(shè)計(jì)也不實(shí)際。本文就介紹了一款基于Qt 平臺(tái)開發(fā)專門應(yīng)用于瘢痕二維放療計(jì)劃設(shè)計(jì)的軟件平臺(tái)。該軟件平臺(tái)解決了瘢痕二維放療計(jì)劃設(shè)計(jì)流程時(shí)間過(guò)長(zhǎng)問(wèn)題,對(duì)于瘢痕病人的即時(shí)治療具有重要的臨床意義。
該軟件平臺(tái)的開發(fā)基于Windows10 64 位操作系統(tǒng)(內(nèi)存8 G)和Qt creator 4.7.1 集成開發(fā)環(huán)境,采用C++語(yǔ)言進(jìn)行開發(fā)。
圖形用戶界面(Graphical User Interface,GUI),又稱為圖形用戶接口,是采用圖形方式顯示的計(jì)算機(jī)操作用戶界面[12]。目前,人機(jī)GUI 界面大多采用微軟基礎(chǔ)類庫(kù)(Microsoft Foundation Classes, MFC)制作。但是大量的Windows API 和消息機(jī)制使得其較困難理解,而且模板設(shè)定了固定結(jié)構(gòu),不方便進(jìn)行編程和維護(hù)。Qt 最大的不同就在于語(yǔ)法結(jié)構(gòu)簡(jiǎn)單清晰,面向?qū)ο蟮奶卣黧w現(xiàn)比MFC 明顯[13]。
Qt 作為跨平臺(tái)的C++圖形用戶界面應(yīng)用程序開發(fā)框架,它封裝了端到端應(yīng)用程序開發(fā)所需的所有基礎(chǔ)結(jié)構(gòu),為程序員開發(fā)多平臺(tái)應(yīng)用程序提供了方便[14-16],Qt-Creator是Qt 編程的跨平臺(tái)開發(fā)環(huán)境(IDE),作為一款新的輕量級(jí)集成開發(fā)環(huán)境主要包括C++代碼編輯器、集成的GUI 外觀、圖像化調(diào)試器等。Qt Creator 極大方便了開發(fā)人員利用Qt 這個(gè)應(yīng)用程序框架更加快速、輕易地完成相關(guān)開發(fā)任務(wù)。該文將利用Qt“一處編寫,隨處編譯”的跨平臺(tái)解決方案[17]實(shí)現(xiàn)瘢痕二維計(jì)劃的快速設(shè)計(jì),具體內(nèi)容將在下文介紹。
Qt 模塊之間相互獨(dú)立,并為用戶提供了良好的封裝庫(kù)[18],使用起來(lái)非常方便。為了極大地簡(jiǎn)化編程工作,減輕維護(hù)負(fù)擔(dān),方便將來(lái)擴(kuò)展,結(jié)合瘢痕疙瘩二維計(jì)劃設(shè)計(jì)的功能需求,該軟件平臺(tái)采用模塊化的編程方式開發(fā)(圖1)。該軟件平臺(tái)結(jié)合二維計(jì)劃功能需要主要分為4 個(gè)模塊:① 登錄界面模塊:對(duì)該軟件使用者進(jìn)行身份信息驗(yàn)證,保障病人信息和計(jì)劃設(shè)計(jì)的安全性;② 病人數(shù)據(jù)模塊:將病人基本信息登記、存儲(chǔ)起來(lái),便于以后查找分析;③ 計(jì)劃設(shè)計(jì)模塊:根據(jù)病人瘢痕大小設(shè)置相關(guān)參數(shù)以便得到最終的機(jī)器跳數(shù);④ 計(jì)劃報(bào)告模塊:根據(jù)計(jì)劃設(shè)計(jì)模塊所給的相關(guān)參數(shù)信息計(jì)算出達(dá)到靶區(qū)處方劑量所需要的機(jī)器跳數(shù),同時(shí)顯示射野大小信息,以便再次確認(rèn)計(jì)劃的準(zhǔn)確性。4 個(gè)模塊涵蓋了二維瘢痕計(jì)劃設(shè)計(jì)基本流程,操作過(guò)程條理清晰。將來(lái)隨著軟件的功能需求改變和增加,可以擴(kuò)展出新的模塊。
圖1 軟件平臺(tái)模塊化設(shè)計(jì)框架
登錄界面模塊的主要功能是幫助操作員可以正確登錄到瘢痕二維放療快速設(shè)計(jì)軟件平臺(tái)當(dāng)中。打開軟件后系統(tǒng)會(huì)自動(dòng)彈出登錄界面,用戶輸入正確用戶名和密碼后,即可進(jìn)入主界面。該模塊具有控制用戶權(quán)限、保護(hù)操作安全的作用,用戶名或者密碼輸入錯(cuò)誤登錄界面會(huì)進(jìn)行提示,如圖2 所示。
圖2 軟件平臺(tái)登錄界面
當(dāng)用戶輸入正確的用戶名和密碼后便能進(jìn)入軟件平臺(tái)的主界面(圖3)。該界面工具欄涉及計(jì)劃設(shè)計(jì)流程的主要三要素,即病人數(shù)據(jù)錄入、計(jì)劃設(shè)計(jì)、計(jì)劃報(bào)告。信號(hào)與槽機(jī)制是Qt 的核心機(jī)制,用于完成界面操作的響應(yīng),是完成任意兩個(gè)Qt 對(duì)象之間的通信機(jī)制。信號(hào)會(huì)在某個(gè)特定情況或動(dòng)作下被觸發(fā),槽是等同于接收并處理信號(hào)的函數(shù)。三個(gè)模塊之間便是通過(guò)信號(hào)與槽機(jī)制進(jìn)行切換。為了實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊工具欄各個(gè)模塊能進(jìn)入響應(yīng)模塊界面,我們需要將信號(hào)與槽進(jìn)行關(guān)聯(lián)。三個(gè)模塊關(guān)聯(lián)方式如下所示:
connect(Patient_Data,SIGNAL(triggered(bool)),this,SLO T(On_Patient_Data(bool)));
connect(Plan_Design,SIGNAL(triggered(bool)),this,SLO T(On_Plan_Design(bool)));
connect(Plan_Report,SIGNAL(triggered(bool)),this,SLOT(On_Plan_Report(bool)));
圖3 軟件平臺(tái)主界面
其中Patient_Data、Plan_Design 和Plan_Report 分別對(duì)應(yīng)工具欄中的病人數(shù)據(jù)、計(jì)劃設(shè)計(jì)、計(jì)劃報(bào)告按鍵,鼠標(biāo)點(diǎn)擊后會(huì)觸發(fā)triggered 信號(hào),On_Patient_Data(bool)、On_Plan_Design(bool)和On_Plan_Report(bool)為觸發(fā)相應(yīng)信號(hào)后需要執(zhí)行的函數(shù)。connect 函數(shù)的作用就是將發(fā)射者對(duì)象中的信號(hào)與接收者中的槽函數(shù)聯(lián)系起來(lái),從而實(shí)現(xiàn)模塊之間切換。
病人數(shù)據(jù)模塊用于登記病人的基本信息,病人基本信息包括姓名、性別、ID、年齡等。該界面采用Qt 中的表單布局管理器QFormLayout,它是一個(gè)方便的布局類,其中的控件以兩列的形式被布局在表單中。左列包括標(biāo)簽Qlabel,右列包含輸入控件,如QLineEdit、QSpinBox 等。這種布局讓界面看上去直觀簡(jiǎn)潔。為了保存病人重要信息,設(shè)定前四項(xiàng)為必填項(xiàng)目。同時(shí)考慮到醫(yī)生特殊需求,該模塊還提供了信息備注欄以便備注重要信息(圖4)。
圖4 病人數(shù)據(jù)模塊
計(jì)劃設(shè)計(jì)模塊是該軟件平臺(tái)的核心模塊(圖5),該模塊用于設(shè)置二維計(jì)劃所需要的參數(shù),如射野名稱,處方劑量,處方次數(shù),能量等信息。軟件平臺(tái)會(huì)根據(jù)我們輸入的射野大小和選擇的限光筒大小信息讀取我們事先通過(guò)商用計(jì)劃系統(tǒng)計(jì)算好的數(shù)據(jù)。為了提高二維計(jì)劃設(shè)計(jì)速度,可以將該模塊一些固定參數(shù)預(yù)先設(shè)置好。
圖5 計(jì)劃設(shè)計(jì)模塊
為了便于將來(lái)對(duì)病人放療信息進(jìn)行查看分析。我們?cè)谠撥浖脚_(tái)設(shè)計(jì)過(guò)程中添加了計(jì)劃報(bào)告模塊,如圖6 所示。計(jì)劃報(bào)告模塊將呈現(xiàn)出瘢痕病人計(jì)劃設(shè)計(jì)的基本信息,最重要的是該模塊將顯示達(dá)到所需要的處方劑量需要的機(jī)器跳數(shù),如圖6 中方框內(nèi)所示。該模塊菜單欄“Print Report”可以對(duì)計(jì)劃設(shè)計(jì)的結(jié)果進(jìn)行打印便于留底保存。工具欄中的“Show Cone”可以顯示出所用的限光筒和射野大小信息。圖7 顯示的便是采用10×10 的限光筒采用擋鉛形成的6×6 的照射野?!癝how Cone”功能方便計(jì)劃設(shè)計(jì)者再次確認(rèn)相關(guān)射野參數(shù)信息。值得說(shuō)明的是在計(jì)劃報(bào)告模塊還會(huì)記錄二維計(jì)劃設(shè)計(jì)者的名字,以及計(jì)劃設(shè)計(jì)的時(shí)間等信息,這些信息極大方便了將來(lái)查看分析。
圖6 軟件平臺(tái)制定的一個(gè)放療計(jì)劃示例
在軟件開發(fā)過(guò)程中測(cè)試是極其重要的環(huán)節(jié),是軟件質(zhì)量保證的關(guān)鍵,在測(cè)試過(guò)程中可以發(fā)現(xiàn)軟件的缺點(diǎn)和不足,及時(shí)進(jìn)行改進(jìn)和修正從而提高軟件的實(shí)用性和準(zhǔn)確性[19-20]。瘢痕二維放療軟件平臺(tái)的測(cè)試主要為程序可擴(kuò)展性和計(jì)劃設(shè)計(jì)速度兩個(gè)方面。
我們首先測(cè)試了該軟件平臺(tái)在不同操作系統(tǒng)的運(yùn)行情況,結(jié)合我科室情況,目前科室電腦主要為Windows 7、Windows 10 兩種操作系統(tǒng)。因此我們基于這兩種操作系統(tǒng)進(jìn)行測(cè)試。
我們將由Release 版本生成的TPS.exe 執(zhí)行文件同libgcc_sdw2-1.dll、libstdc++-6.dll、libwinpthread-dll、Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll 六個(gè)動(dòng)態(tài)銜接庫(kù)放置于一個(gè)文件夾中(大小為21 M)然后拷貝至兩種操作系統(tǒng)中。通過(guò)測(cè)試發(fā)現(xiàn)該軟件平臺(tái)均可以在兩種操作系統(tǒng)上平穩(wěn)運(yùn)行,軟件平臺(tái)各個(gè)模塊間切換流暢。
我們將自主開發(fā)的二維瘢痕計(jì)劃設(shè)計(jì)軟件平臺(tái)同科室正在使用的商用計(jì)劃系統(tǒng)Pinnacle 9.2 (飛利浦)進(jìn)行比較測(cè)試。該軟件平臺(tái)在Windows 7、Windows 10 兩種操作系統(tǒng)上啟動(dòng)時(shí)間低于3 s、Pinnacle 計(jì)劃系統(tǒng)啟動(dòng)到計(jì)劃設(shè)計(jì)界面需要時(shí)間為13 s。分析原因可能是Pinnacle 計(jì)劃系統(tǒng)存儲(chǔ)有大量病人數(shù)據(jù),每次啟動(dòng)需要加載信息較多,所以啟動(dòng)時(shí)間長(zhǎng)于我們開發(fā)的軟件平臺(tái)。我們模擬了真實(shí)的瘢痕病人計(jì)劃設(shè)計(jì)情況,在Pinnacle 商用計(jì)劃系統(tǒng)進(jìn)行二維瘢痕計(jì)劃設(shè)計(jì)需要的時(shí)間為6 min,在我們開發(fā)的軟件平臺(tái)計(jì)劃設(shè)計(jì)時(shí)間為2 min,盡管單個(gè)病人計(jì)劃只節(jié)省了4 min,但考慮到我們科室每天瘢痕病人可能超過(guò)十個(gè),因此我們開發(fā)的軟件平臺(tái)更能提高工作效率。值得說(shuō)明的是Pinnacle商用計(jì)劃系統(tǒng)由于價(jià)格昂貴,資源緊缺,目前科室并不能保證在每個(gè)地方都配置Pinnacle 計(jì)劃系統(tǒng)供使用,如定位室。定位室距離計(jì)劃設(shè)計(jì)室大約有15 min 路程,由于我們開發(fā)的瘢痕二維放療軟件平臺(tái)具有很好的移植性,該軟件平臺(tái)可以直接放置在定位室的電腦上運(yùn)行,這將進(jìn)一步節(jié)省時(shí)間。
盡管瘢痕二維計(jì)劃設(shè)計(jì)簡(jiǎn)單,但物理師卻要為每個(gè)瘢痕病人做很多重復(fù)工作,這種工作模式效率低下。本文基于Qt 開發(fā)的二維瘢痕快速放療計(jì)劃設(shè)計(jì)軟件平臺(tái)實(shí)現(xiàn)了瘢痕疙瘩二維計(jì)劃設(shè)計(jì)從病人基本信息的錄入,計(jì)劃設(shè)計(jì),計(jì)劃打印到計(jì)劃保存的基本功能,該軟件平臺(tái)開發(fā)的交互式界面易于操作、可視化程度高。通過(guò)測(cè)試該軟件平臺(tái)可以在Windows 系統(tǒng)上平穩(wěn)運(yùn)行。值得一提的是該軟件平臺(tái)還可以通過(guò)修改數(shù)據(jù)庫(kù)用于其他直線加速器。不過(guò)該軟件平臺(tái)目前還只能應(yīng)用于瘢痕疙瘩的二維電子線放療計(jì)劃設(shè)計(jì)。將來(lái)希望通過(guò)功能的完善能夠讓該平臺(tái)應(yīng)用于各種二維計(jì)劃設(shè)計(jì),如光子線的二維計(jì)劃設(shè)計(jì)。鑒于該軟件平臺(tái)具有良好的可擴(kuò)展性,未來(lái)很容易通過(guò)修改完善該平臺(tái)的功能。總之,該軟件平臺(tái)實(shí)現(xiàn)了功能可擴(kuò)展和人機(jī)交互友好的界面功能,對(duì)于實(shí)現(xiàn)瘢痕病人的即時(shí)放療,增強(qiáng)瘢痕病人的就醫(yī)滿意度具有重要臨床意義。