賴佳路,鐘仁明
四川大學華西醫院 放療科,成都市,610041
目前,電子線放射治療在腫瘤放射治療中仍扮演著重要角色。據統計,在惡性腫瘤的放射治療中,約有10%~15%的病人需要接受高能電子線放射治療[1]。電子線與X射線的單野劑量分布不同。電子線治療時體表到最大劑量點深度劑量分布比較均勻,超過最大劑量點,劑量跌落迅速。電子線這種特性決定了它只適合用于治療表淺的病變。如乳腺癌、鼻咽癌頸部淋巴結、瘢痕等疾病。二維電子線計劃設計同樣不同于光子線。二維電子線計劃設計是基于水模體,采用單野照射且射束垂直于模體,源皮距SSD=100 cm,最終劑量歸一到劑量最大點。每個二維電子線計劃設計參數通常僅存在能量和射野大小差異。計劃設計過程中通過選擇合適限光筒和適形擋鉛便可以計算出達到醫生所給處方量需要的機器跳數。臨床上的計劃設計大多采用國外商用計劃系統(Monaco、Raystation、Pinnacle等)實現,其功能豐富,基本可以滿足臨床需求,但是用戶個性化的功能卻難以定制[2]。如我科室使用的Pinnacle(V9.2)計劃系統在進行電子線計劃設計時因該系統不具有擋鉛適形功能,為了形成醫生所給的射野,物理師需要手動拖動鉛塊,當遇見與之前相同射野參數的電子線計劃時又得重復之前勞動。某些醫院為了能快速完成電子線二維計劃設計提前將不同能量不同射野大小組合計算得到的機器跳數做成Excel表格,每次二維電子線計劃設計時通過查表獲得機器跳數,這種方式效率雖高但卻存在查表錯誤的風險,同時也不利于計劃設計文檔的保存。本研究基于Qt creator平臺開發了一款二維電子線放療計劃系統,配備有基本的電子線計劃設計功能,并能對計劃設計進行保存。系統減少了物理師的重復勞動,提高了二維電子線計劃設計效率。
電子線計劃設計系統采用窗口式交互界面,使用菜單或按鍵的方式實現各個功能。系統開發基于Windows 10 64位操作系統(內存8 GB)和Qt creator 4.7.1集成開發環境,采用C++語言進行開發,該系統易于擴展,可移植性強。
Qt作為跨平臺的C++圖形用戶界面應用程序開發框架,它封裝了端到端應用程序開發所需的所有基礎結構,為程序員開發多平臺應用程序提供了方便[3-5],信號與槽(Signal &Slot)是Qt編程的基礎,也是 Qt的一大創新。有了信號與槽的編程機制,在 Qt中處理界面各個組件的交互操作變得更加直觀和簡單。信號(Signal)是在特定情況下被發射的事件,槽(Slot)是對信號響應的函數。信號與槽關聯采用 QObject::connect() 函數實現,其基本格式是:connect(sender,SIGNAL(signal()),receiver,SLOT(slot()))。其中,sender是發射信號的對象的名稱,signal() 是信號名稱。receiver是接收信號的對象名稱,slot() 是槽函數的名稱。開發的系統將采用大量的信號與槽機制來實現人機交互以及各個功能模塊之間的交互。
為了簡化編程工作,方便將來對系統升級改造,系統采取模塊化的方式進行開發。開發過程中將每個主要功能看做一個模塊。同時由于各個模塊之間可能存在相互聯系,系統開發過程中將使用上節提到的信號與槽機制。結合二維電子線計劃設計需求分析,本系統主要涵蓋六個模塊,見圖1。

圖1 系統功能框圖Fig.1 The system-function diagram
以下函數為工具欄五個按鍵與對應功能界面的信號與槽連接方式。

其中Patient_Data、Plan_Design、Plan_Report、Create_plan_pdf、Configure分別為病人數據、計劃設計、計劃預覽、打印計劃和數據建模五個模塊按鍵,SLOT()括號里面對應的槽函數為按鍵觸發后需要執行的函數。圖1所示模塊中登錄模塊用于權限驗證,只有具備相應權限的用戶才能登錄該系統。登錄界面提供了用戶名或密碼輸入錯誤提醒功能。病人數據模塊用于登記、保存病人基本信息以及醫生診斷信息。計劃設計模塊作為本系統的核心模塊主要用于設計計劃所需參數,該模塊涵蓋電子線計劃設計的必要參數。參數設計完成后,系統便會根據用戶選擇的參數計算出達到醫生處方量所需的機器跳數。計劃預覽用于查看計劃設計的結果,再次確認計劃是否設計有誤。計劃打印模塊用于打印計劃報告(PDF格式),方便物理師簽字確認,同時保存計劃設計的電子文檔。數據建模模塊用于提前將商業計劃系統Pinnacle計算的數據錄入我們所開發的系統中。建模模塊可實現一次建模永久使用,同時也增加了系統的可擴展性,方便其他機器使用。
在二維電子線放療計劃系統的主界面,各個功能模塊可以通過工具欄中按鍵進行切換。系統符合Window經典交互使用習慣。按照二維計劃設計流程,工具欄從左到右采取病人信息→計劃設計→結果預覽→計劃打印的排列方式,這種排列方式邏輯清晰,易于上手。
病人信息窗口用于登記病人基本信息,其中姓名和病人ID標注為必填項。病人基本信息欄采用Qt中的QFormLayout表單布局管理器,其中的控件以兩列的形式被布局在表單中。左邊包含標簽,如Label,右邊包含輸入控件如QLineEdit,函數調用方式如下所示:

第一行代碼設置左邊標簽,第二行代碼設置右邊控件。整個病人信息窗口除病人基本信息欄外還包括病人照片、病人診斷、備注欄。點擊窗口下方的保存按鈕系統將保存病人的基本信息。
圖2為計劃設計窗口,該窗口用于填寫計劃所需參數,如計劃階段、處方劑量、治療機器、能量、射野大小等信息。該窗口右下角“Show Cone”欄將實時顯示限光筒和擋鉛形成的射野形狀信息。計劃設計完成后可通過工具欄結果預覽按鍵查看計劃設計的結果。

圖2 計劃設計窗口Fig.2 Plan design window
確認無誤后點擊工具欄計劃打印按鍵,選擇合適位置后計劃被保存為PDF文檔。PDF文檔將呈現病人基本信息以及計劃設計結果。文檔中包含為達到醫生處方量所需要的機器跳數,以及顯示計劃打印時間以及計劃打印人員等信息便于將來查看分析。
為了讓系統能用于不同單位不同加速器的二維電子線計劃設計,專門添加了數據建模模塊。圖3為該模塊的工作界面。建模模塊因涉及放療數據的安全,想編輯該模塊需要進行密碼驗證,在密碼驗證之前界面的數據均為只讀模式不能對其進行修改。圖中“2000/10f/L5/E5/A10X10/3X3/216”代表當處方劑量為2 000 cGy/10次時L5直線加速器上使用5 Mev電子線能量,限光筒選擇10×10,射野大小為3×3時候計算得到的機器跳數為216跳。當分次劑量改變,射野參數不變時系統會自動按照比例進行計算。數據建模完成后點擊保存,界面又變為只讀模式,直到重新輸入正確的用戶名和密碼才能對界面中數據進行修改。

圖3 數據建模模塊Fig.3 Data modeling module
測試對于軟件開發來說極其重要,直接決定了軟件開發質量。在測試過程中可以發現軟件的缺點和不足,及時進行改進和修正從而提高軟件的實用性和準確性[6-7]。電子線計劃設計系統在Windows XP、Window 7和Windows 10操作系統上運行只需包含libgcc_sdw2-1.dll、libstdc++-6.dll、libwinpthread-dll、Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll六個動態銜接庫,程序大小為25 MB左右。本系統經過3名物理師分別在三個操作操作系統上對10例電子線計劃設計病人進行測試(見表1)。測試過程中系統均運行穩定,系統兼容性較好,各個系統上均能準確執行。通過測試,單個病人電子線計劃設計時間在三個Windows操作系統無明顯差異,都在2 min左右,設計速度均快于Pinnacle計劃系統設計時間(約為6 min)。二維電子線放療計劃系統在三個Windows操作系統上啟動時間約3 s,快于商用計劃系統Pinnacle(約12 s)。分析Pinnacle啟動較慢原因是因為Pinnacle計劃系統龐大且包含有大量病人信息,每次啟動時需要加載過多數據,因此用Pinnacle這樣的商用計劃系統來進行二維電子線計劃設計反而不具有優勢。

表1 系統測試Tab.1 System Testing
目前在放療領域,商用的放療系統常常是封閉系統,對于科研工作的使用多不方便[8]。商用計劃系統Pinnacle對于光子線調強計劃設計來說功能強大,但對于二維電子線計劃設計來說由于缺少擋鉛適形功能讓物理師計劃設計效率大打折扣。同時由于商用計劃系統價格昂貴,科室配備的資源有限,在商用計劃系統上進行大量二維電子線計劃設計將占用過多時間。我們基于Qt開發的二維電子線放療計劃系統實現了從病人信息錄入到計劃設計以及打印保存的基本功能,同時建模模塊能實現不同醫院不同加速器的建模,極大增加了系統的可擴展性。對于我院而言本系統解決了計劃系統資源不足問題,極大提高了工作效率,讓需要進行電子線照射的腫瘤病人即時放療得到了保障。系統未來可隨著臨床需要添加更多功能模塊。