From 7a9294612004e85865b8f3d973f2f3c13d897290 Mon Sep 17 00:00:00 2001 From: ppmody Date: Fri, 19 Jan 2024 18:06:08 +0100 Subject: [PATCH] First commit --- README.md | 34 + assets/eval-template-photon.csv | 34 + assets/eval-template-proton-robust.json | 92 + assets/graphical-abstract.jpg | Bin 0 -> 902755 bytes assets/isodose.xml | 40 + assets/objective-template-photon-kno.xml | 406 ++++ assets/objective-template-proton-kno.xml | 404 ++++ src/config.py | 340 +++ src/helpers.py | 2740 ++++++++++++++++++++++ src/hnDosePhotons.py | 1357 +++++++++++ src/hnDoseProtons.py | 1391 +++++++++++ 11 files changed, 6838 insertions(+) create mode 100644 README.md create mode 100644 assets/eval-template-photon.csv create mode 100644 assets/eval-template-proton-robust.json create mode 100644 assets/graphical-abstract.jpg create mode 100644 assets/isodose.xml create mode 100644 assets/objective-template-photon-kno.xml create mode 100644 assets/objective-template-proton-kno.xml create mode 100644 src/config.py create mode 100644 src/helpers.py create mode 100644 src/hnDosePhotons.py create mode 100644 src/hnDoseProtons.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..a81afa2 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# Intro +This repository provides python scripts for head-and-neck photon and proton radiotherapy planning (in Raystation). It produces results for the paper - "Large-scale dose evaluation of deep learning organ contours in head-and-neck radiotherapy by leveraging existing plans" (under review). + +# Abstract +**Background and Purpose**: Retrospective dose evaluation for organ-at-risk auto-contours has previously used small cohorts due to additional manual effort required for treatment planning on auto-contours. We aim to do this at large scale, by a) proposing and assessing an automated plan optimization workflow that uses existing clinical plan parameters and b) using it for head-and-neck auto-contour dose evaluation. + +**Materials and Methods**: Our automated workflow emulates our clinics treatment planning protocol and reuses existing clinical plan optimization parameters. This workflow recreates the original clinical plan (POG) with manual contours (Pmc) and evaluates the dose effect (POG − PMC) on 70 photon and 30 proton plans of head-and-neck patients. As a use-case, the same workflow (and parameters) creates a plan using auto-contours (PAC) of eight head-and-neck organs-at-risk from a commercial tool and evaluates their dose effect (PMC − PAC). + +**Results**: For plan recreation (POG − PMC), our workflow, has a median impact of 0.99% and 1.45%, across dose metrics of auto-contours, for photon and proton, respectively. Computer time of automated planning is 25% (photon) and 42% (proton) of manual +planning time. For auto-contour evaluation (PMC − PAC), we notice an impact of 2.01% and 2.58% for photon and proton radiotherapy. All evaluations have a median ∆NTCP less than 0.30%. + +**Conclusions**: The plan replication capability of our automated program provides a blueprint for other clinics to perform auto-contour dose evaluation with large patient cohorts and minimal skill and resource requirements. Finally, in spite of geometric differences, auto-contours, have a minimal mediandose impact, hence inspiring confidence in their utility and facilitating their clinical adoption. + +# Method + + + +# Scripts + +## Installation +Within the Raystation python 3.6 environment, run the following command to install the required packages. +```bash +pip install pydicom +``` + +1. For photons + - [src/hnDosePhotons.py](src/hnDosePhotons.py) + +2. For protons + - [src/hnDoseProtons.py](src/hnDoseProtons.py) + +3. Other files + - [src/config.py](src/config.py) + - [src/helpers.py](src/helpers.py) \ No newline at end of file diff --git a/assets/eval-template-photon.csv b/assets/eval-template-photon.csv new file mode 100644 index 0000000..fe4d6d2 --- /dev/null +++ b/assets/eval-template-photon.csv @@ -0,0 +1,34 @@ +PTV_DL1_DVH;V95%DL1 (%); +PTV_DL1_obj;D0.03cc (%DL1);Dmean (%DL1) +PTV_DL2_DVH;V95%DL2 (%); +PTV_DL2_obj;Dmean (%DL2);D0.03cc (%DL2) +SpinalCord;D0.03cc (cGy); +SpinalCord+3;D0.03cc (cGy); +Brainstem_Surf;D0.03cc (cGy); +Brainstem_Core;D0.03cc (cGy); +OpticChiasm;D0.03cc (cGy); +OpticNrv_L;D0.03cc (cGy); +OpticNrv_R;D0.03cc (cGy); +Eye_L;D0.03cc (cGy); +Eye_R;D0.03cc (cGy); +Brain;D0.03cc (cGy);D2% (cGy) +Pituitary;Dmean (cGy); +Lens_L;D0.03cc (cGy); +Lens_R;D0.03cc (cGy); +Cochlea_L;Dmean (cGy); +Cochlea_R;Dmean (cGy); +Parotid_L;Dmean (cGy); +Parotid_R;Dmean (cGy); +Glnd_Submand_L;Dmean (cGy); +Glnd_Submand_R;Dmean (cGy); +Oral_Cavity;Dmean (cGy); +Musc_Constrict_S;Dmean (cGy); +Musc_Constrict_M;Dmean (cGy); +Musc_Constrict_I;Dmean (cGy); +Cricopharyngeus;Dmean (cGy); +Larynx_SG;Dmean (cGy); +Esophagus;Dmean (cGy); +Glottic_Area;Dmean (cGy); +Bone_Mandible;D2% (cGy); +Bone_Mandible-PTV;D2% (cGy); + diff --git a/assets/eval-template-proton-robust.json b/assets/eval-template-proton-robust.json new file mode 100644 index 0000000..85f0bcb --- /dev/null +++ b/assets/eval-template-proton-robust.json @@ -0,0 +1,92 @@ +{ + "CTV_DL1 [D98%>95%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "CTV_DL1 [D98%>94%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "CTV_DL2 [D98%>95%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "CTV_DL2 [D98%>94%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "CTV_DL2 [D2%<107%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "SpinalCord_Core [D0.03cc (cGy) < 5000]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "SpinalCord_Core [D0.03cc (cGy) < 5569]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "SpinalCord_Surf [D0.03cc (cGy) < 6000]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "SpinalCord_Surf [D0.03cc (cGy) < 6310]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brainstem_Core [D0.03cc (cGy) < 5400]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brainstem_Core [D0.03cc (cGy) < 5870]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brainstem_Surf [D0.03cc (cGy) < 6000]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brainstem_Surf [D0.03cc (cGy) < 6310]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brain-CTV_DL2 [D0.03cc (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Brain-CTV_DL2 [D0.03cc (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Cochlea_L [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Cochlea_R [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Parotid_L [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Parotid_R [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Glnd_Submand_L [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Glnd_Submand_R [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Oral_Cavity [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Musc_Constrict_S [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Musc_Constrict_M [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Musc_Constrict_I [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Cricopharyngeus [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Larynx_SG [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Glottic_Area [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Esophagus [Dmean (cGy)]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } + , "Bone_Mandible [D2%<100%]":{ + "Passed": -1, "Voxelwise-worst": -1, "NominalDose": -1, "Scenarios": [] + } +} \ No newline at end of file diff --git a/assets/graphical-abstract.jpg b/assets/graphical-abstract.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29472d16429571d585d5a8b820a9068206815017 GIT binary patch literal 902755 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 z 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

F~oOqDS zm{mJnQoOwy4i;EdO#5}CHjF><>|)3}DOqr#C*b1EdvnzhmuK002%*if#j&%nkLNr2 zkbQ^}Un?(Si3*rT_Q$!a254rJ6WPTDZI0UvBMy}<4wdoKQOV#F4`T4A)#AZIm=TS+ zNQTDBiFwZp;;!;uk`%{5geP7(KW;3Lksk^236-YIDhggMOrd@<<^tR@EcO5TD| zeMmzLtb#hta(JK4n|f0cn){)^?GMvS4aDZvZQp{#TL{CdNWV6^nPS`vBIC`_Ip$Sv z+7&Ni;>>H4j>9oY-DZj@`c)&sS&Mpo)>nqwh_Bl&AID<% z+K5Zp8}YuLy+W})qzbtU%lg-O5hmRlDjzayq#j*UzSAo4{GT_;zt5o=b-wsJ;mj}6 z*Z%qB|K;&*`SicX?#BE7o&5K|f)SlDKd~gror9c2u~N~B4V5AVSt|yQ<6 zgE*ekX|KYfUP&4@UaVTSz@wW5%%B*vaWaUPv}i@BlZ^&@CrcflJ4^-f7MT^veaB9x z%`AqRiP}$ewj3*jFobUKVtfdbmW^3}K1!i&5z5My7T42NMx*S=fLgO$hfmIz@X4?> zvwvmtlZM`gj(&(fox`0`qbcyAY(8;YhE&S@TFwQ;bAD>MooUU-mBSoXm?YAvEc!OP zYGT^{=1}$so|J@zpkD~N{tQB3Oz{@)4vtxN2fp>|_6&SDHbus6S`mf0blY)ZgEVWoQ&Xw*&*M!C)*IA4^Q3vjT!OIwzqS{O+w@yIl2x}_642FM4HSk@z46!j$jJ(Wu0fe#nBrfh*U?vWo$m9MFnchfgO_Ht3 zsYA@+G&IC*&wHO(*ZEWlD=zH7X47RwyyJ=SUWKf8s+*O;nU0PuDkujHleT&3Gi+kk z?$q)#KqaqJTbl;F@)_}27Zgd49O@WN{_?j_JK1lwR5GQ!PW9_65#HQz&4_9W$9MQ` zSGJ=enp*8DOl#$cs+Uf^8D7L<6=B+?>VXaMEsSeEUD`Vb{>TEfVrC-SC##`CRY~Gt z!5}_wFX9N%g`B+tUDauPpBRwG)teJ}GGvsQ*N@MsNu8@{;@yJ8$=ZzPgXd{(8FQp7 zwR7X8GHrtn@xG?*l^w2~&RpWWXDP9C{1^`ZoleaG0(ZR^z5ehiFg>RaxF@|84a7A>A4^yw4XEnO;*|YW0rj@SPKV-r~IFQE#r$t z#RXurVw!#GbJPS2)X12^N#N8@PMcz;eKcUXx1j_(?`W#>TmI$&TcLblbrOQY2Y4gm52h2Uknue!z2`5ck;x*a}AYqlg^Gj4anfs?4t0_1ex5#BviAz zFKrTF>iA?Nv6Tm4*{y`#5`OT1*?lG}bNCNaURJOA5j~i9TjIw+wZL}i$o$vQqE|19 zf~f9Oe&kBdF^RIW^`t5Mdf8!E1b3>4FdI zjZ0QFxOaOEYh>+9#d-Rk(Kgu>(Z|Em=1UCn#@y_5#Fo}C-xUYQM%xn;d9(V7xKR;O zwNLl1E0JWi@Ss1ffCjk2kkWZ+MwX>6YlK0(cz#bj7{#|e{j^XXqG2*;x@;K*jJ>iV z9eb@Q&bg^@VQeL>y_he#UT5!?!e@$Z3Y+r8g9W14(PxLn1m3f~c z7dnsaWRm1Le4cJq2>28@8uQjFXK5ZDoMKbx8N_o$tRCxK*^P1J>#1((A(%(-y)pV? zq6RxK$?cPf-a#zQ?%wHFpFM*uR`amBt;;?V-{SeVqXEov#f#jDB6~A~T;<8m(9cDV zfWl}kFNV0i?AvMh{3n`*cX2OEgYSz=6G6#8YnMETOOm-LQu>6WUZIbK**01W zDuFSjauX^c@E)kafs-7-Q%kBfAvfF^q+EK4Bwx!6l*p?j@0j*ro-z8iQ zn?~0C$nhtR>^PRq4I<{US-Sm?nGoz01F7S|2g~F*0L|+FBAgR$Mr% z(0D^0aB>XkyY!n#Uc3sn&o1(nRO2l|fl4@A!pV&pj!P>f&=h;@Y*-if(5kpjF(acg z)NvASlV>D!^EW>bD8hO({LG7>Y0uwU)u!W8D#~S6B=J>QlSXuTH!M0;Z1y|EjZO$J zbW7QtWtDqvb$#iP_kD{AaM)s%Z$;o6BgyE(!anwK68Q_{SIgwn(^Q@%Ah+~{+qMZb zaNxt2ggVe(=@u6+(sm5(XN-G_uV?*V^btf;r5^Z#Hi%p8`+hsExc zy+8YIxNgQadvI?#Eoaj1xYO6(FPO5TTAlU2EMtH5kSo>TpXEj05NF7izu^P@Yf)wX zaNR+nq&dj=ZtZ|(cveT2$==^iV+yKt-5H`jtDeM-W?@G)NyOSglds~L)_jpkKDoJg z?~M{5HKM;-`n$iV9Itu9w9w~TzYY0x$_i?+?2YA!S0#7_OX+J{<1{c6fo7mG_PN6g z{gkFE4NKdW{e~1fz6!Xqx{Qf@p#VZ!W?Mm)E>cnzmWv-yc=iciPdC=L8iogL^S&Zh zMcCt$BAxs)q^xjPiW*(wDyv4ENMs(!F86=$u2fu z{+|Ys!C^i1aScm6WPB%!GMbb~h;F_MeVmr2T-A}BBZ#pnu&Wcnv*kP6)nX{npXd80<~F~t+XI7h|!6X1`;1jBfK&U?Xb?x zi895B)_4{)SwLMZQ^jXuw^mX^4xLgIR!ma=;hFc7KY8o*eol8)@=Bm>2mAM=OEMFd zJC@I;GdHzT)(Q>_>Nk7#@jW(2=)7%47BNq2qlkZIWW7H|H-!9$Dcx6kc)LD9w3*+7 zR&U>bWc;4vV?gxMSJK!YCf@Z()mGm}bdNtw(f-Z+f4e}||NK5tMGMuo6LONi*{7U( zJw1EMd%tuNJAcdQ+%p-2OxLKS#4;MxYT|smn@5DU=`f2}eiwW+_)G^MOWG zYQDa0%0XZgWI2CZGnOaeS3^37og1Fz2Y8~N>D(L-wmk0!fg}#da6M_1{N`5gdC>F^ z*4}hqQO~S&hS9lieDHCFBW8N%8NIS>nq7tLAUfpwGg&qJ9d6s!Y_bxhtGx7BV3YeS z0HNP(b>zWn^V{A~M%gD{N%(Em4xmTbPSkwBBITEbV!H1okC)F{@k{EsF^}Kn+%c_+ zJ6Bp$`HK%R($il8VwVL7{YPpnzC0QoZ@!HGVbXj*Wf=6v`45w>n%HhhjKbI>k4XGx z!Ea4OE;vM?D33tG<-}!*&1lp4XRK!BhBfLO0$Z2l>tpWS9Vtw%S`0kj5kwYrn@=rr zKCvHvcAT?2s>g5sYKCQL7Lt_C4set66vOyrDmH29DuNqkIX_YmuSp`cqrnA%{%iD< z=PbjdGge!w)_ znB+4HQ2mv@xe>R+cEo;5O2t2$cPafT8~Xh=;15%dKtt`nnP>PH^WH0T+79X#wa5pQ zBaccDPi1hDb6WXNbM*GN`TwU`cQ@h_{xE$g`hDeyeO%@C;p0Uk$_G(X;paY)8sjUTLtiTL~(8+20}AkCUCz41@UD}oC?g-nGJOR7qXg19!d52iMDTD z1=}L$l!$`_!fS!Q{zdTn8>vY&#~)$)ik>9u_|ek@jX>A#xy^_HjCCDkSI1tuzIV^3 z$rYE@lNoq)0pDFRv=c|(#PI+1no)n9{xg4d*kJuRC8NXhf0+7Wri}iDpW1!=%JT-* z^|!zm%8nol`&C-N&BvR*_N&^hT`}grHIp|NoKU0+Z)uRoiQ>S~L zonw}2oe%Pl>d7DJ@jw{z2aGSKL-m6@aEgoE!3Api7kbadk2Vb1a1zq?T(>BT7=Jf9 zS&50K*@THn>(UsaAjVrYmt+HgA50sn|J8!GdLk-hB_!X<6xy~Q7<*a5~Z$i?+XR}S*oyZZHy-#4!9Dkx7y?)00K4|OGK#b8r?r(uYBKS2$24-wvSk~>9Xv0_rW}la?DhaGK zYJZjQHfYeRl>@r3V2a5OZY2bAR^DdzHJ(Ph&45A`VahXQoNJRly(a>nu0l$QiO+Sd zHpKiws18o@4}wTHOAC0)`h6F^)-!@2fk7U|<4_Fi6;@gGU0TS>M?jna(8s^N-??_U zn(QXFj1r0d%2uvpGglOMl|~{@fm?3`6!ts%ZTu)L$5BbB`9-bU+8FtTOywY0s))de za8kV=ot5?9!lC4=0{P4!`Au2xTh-Bg0c0WnfVxcRLBg_aLEls3-a*w4-=e{V`Ww#6 z;5Q9DCP!r3L-t?dXKJaJ`nB-CM)2u~SIdaTQRf!vG$WfaUtjok8Qk|~)!BY6iJDt* zM5_cS_F1YS<#2*)_QG!`=Tb?&rvql^8Sk*-K!-0mR|*mfJ2st*^-g!J@=r|5MRCem z0$_Gd0RsxSl<@vQpNV=+PWu<_s}J3ZE?F5oZk%-+pv5ws-i0$UT>*FwOZXt-`*hq3 zy@|6vhH%Y?2okZgZj(>l!}L;t*(KNaSDFjQWCj8L$Wej|(0q;%rzvgN)QRXIj+zAg zyNSV55u=4BH|nhwKGJ{KIUB8rhE-Q_r3d(F$V2F8@FwFPBL4&RF$7f^q`%+TP5Qh; znp%~czGD0DcG-8~k-t5ow!)s4HcmN=DI{-AL9aVxk&NPDeIcG<9Fm8N>+UZ5bgld~{wt$@$Yf z_-d#r12LqugO)4ds$Ur}W5`;7X*5=4?no+wO5RTdIZwh)tDgd|-%!f>GMnNCUfH1* zQb~3NH|7_)JtuM(Yr%0-8|G1onhJ#Q@QM6|_Taxp$jyKEM+?^+tl(*d24kI={}3Cj zx5WO+exFZ&#;l}wSnzDYXd~ZdcjmSZ|N9?KS^qvOHLf057 zW+cNS^*w^OWi#D&s-!!v9(ENu9STBSJAYC3P?{RdL|Zm-N4M%(Z-f$XKOudjHg{~r z#>1}1@l9bm7{LGqrs9AqKI2WT572H;P|L-PaN(<^Nttd43{<_=)KP|1u?A5<3fX z&ze9Uh&lQgdb6e=G*&tzZ51-r#@s89nAK(8qA*!*%+c7&A?T>GwkRPuw!WQJlpPTu z1sJ(EGWW3XY4IPX$%p&%Jr-d@=m_Vlev<;sR(${jN3R#jAJUV4P`&4~UBoFn9!G}L zt=k6ezz2_84F~<_2Jk8#71Ez#rr*OnxSh)4wb?>v!JjmL=9_S*A&Q?;P{i2;+G&ipwgoT9QP-{kb~zkIq!x8ZJPz1UN3# zr*wrsGGh>am|24*8>a5MEV|AoM=BlwMP_eiM$VXocAR$0n!UwihGvGLXNGc{px{Nr zc;!V_}c%NrIfKP$Mzc)0ti_Ov;EGCyk3ejqGlt}m~?O{zXJW;$6?t&Gf> zTczciom&*`$~`ZbhY24CItFHt55nua8m)fY|6!_W-0X^X9u($eBc1=pzgj!@a* zkj1U<{@b2!k#rrjP8UYce?Uu2mg@Zbze|+^bAu3GLlp01oZ2iL&@Mb!t=}Wtje8LaKFzt+dwDTqZtsS7 zfcV1HN_P-_<#~wSjVlbL3EaI9@kD#ko1e^^>D&e#Vr0WYUm4{P5n-*NQcK_M?H+$PP*a$9)I=`%Z(^o`llJ_JJKl`vBpk7Z@aAD(bGl@!8M zY7W-FIjHVc+AD({MfNDla}DA2^6{c{PAGmE`OH!w^&x$T8Oh3 zwXR$v)`lE60jB^cQbCjCMD?n~E@yLII_rWjg%Ev<^6MOt7R zC>>Oo)Brs04lM}|-_d_$G{&ZscEIffKztd1nx+QxcibA7Fu?pGM3W_S%kPmaT`w)h*g2-BDD>Kuc8c~GhJ}l}Q zB0#vnlU3JsY$n$fJ5wQPLYfv1p)3k@YaAbdI;6%da?>{w6Qbk|zM(-^$2ms>h<#SH zB?(334dQssjZ+2dHh_*D4uizb>k|^~-FTRwhRro83AD0=^T#}IoWuLi^C{8#O6($9 zE|g|d!aVQ>rw$KP!Xp0GjeZdY!&1c>OTm|^Pgs@1cT3C~jfuVa%&RJuURJ|1u_^8L zAJX&eyrsOfW2@6%z!P-0m!$m8k49+(TeFdX)bq%|;Sx*-*Oh6^mV!g8a2wD495>Z; z`(}kU`m@^UPJxs{^VNLPWV7_OC!8CDD+u@Zq_NpSuQ7rljg5@ zlF9BXXwjQMU1de#dz8Qun@FkD$(caOs{LUqZD~x?5$3grW?9YDFy^@w+j0y4)jx z{1!maS<)2yr?f*c-`ak_5gZ9Od5psw-h26xG-NHgWUCc zV4zMJLQ1nXzxB59!a%iL@ghn-|IzVU80aB#cdJ!tA}HC_hOP z5A-eX1@Ot)y}1fmIes5s)7N(|7Kj)6>{`8angnY2{;30bSiVh&{=BPv&H*h8K^TJw zxkPFQrlSzv>rT^q^n(A$>TO^%WK=6>Jlv+x%qchcf=$mS6>({FtMmm!o4Q81J~Z8$ zw=G#b@&2iS!Fg*^yjYgQUTKIZFPQb&ncjEorXBLXeBe6rec1Y|`q@H$So>JlfdpnP z%_h_7SpR=>yghP_R2bQFmH=xd^j%?5Gj2}^blNHZrKSOOVc zV|R$iF2%FH8^UIRwRuDk!uoBp3Ou}&!utV6bEN_TH5FTF*YQd3YyE+D@L^{LfK+xu zt2Ap^AK`x=+RmzYE{p;i`dwyChv|9^|j_PJQWR%{l@FoIxIIC+TqZgU? zrygk&+r2co#w3yg`1)}?S&*jG`L5`4!n}_*#xVD|B3T;+ZJW_&4XY}>QxG)VBo{zd zK24&w@DWkJ5?TcVUR*IT-hdYd#_BcO1EbT4%F*J6#T`ZP&l>2=9=l@Fsd9_dH}c`- zrH)%6^3nDx9EqvS^oc!J7g|y{i71fJD||v@eHY(nTFcw@5Z+3fb(j8bSSI`%Kf;>^_I%p9M@SEj@9sSW*w$OM`+*Sjx=QQU0{NT8?ya z)M(XGxP?XU$7vQLRG@%MXFLb1miY$DJALpzfTY6+F%%H}&^}2~+={-5#bzIJs=i-K za<}lgI3hS|K+3%8G6XGvgtrJ<0vd$eoQ!q`Uh3~s*Efz4{oLr&h7)2%e$08+{){rpVpmf9GHg!26dtPhl2+Qfb{-DMI21oquS1~3~*qmua5+{x`cv5M06VJBQ z2|&;O*f@5`Jiv`NbkpOL!u9);R461$jn9rxTyCs(YQq%l6M;~7eCdf!G3J{>-bcOl z3h8DNkR92{?yw*UtFWCw9eRi`h{Sj1L9)7p#^Nt;M(;# zV&avRqEPdNrv=>`YTZqagmhk9FKA}72}-**xV4ZPXwp{5Xw|XrY&~rY$MNgGh(h`_P4V0kZ%KYk)VcF&JsqU{Lc1SFsI0WTyT8w>-2WMU>2;IS827}hhe7qG zR%<-KFZmy7lY-IQBMdw|$tT~AM5*73ux&_17X`iD>hTJDSSFdZ$U<^uj(#~*9wRAX zW~!jvVI-t?Mt6|P8_~+1w)+DmEh=iv581n+28dWjO&uDilP8S({0k7(Co5Fc#Fy9& ztrrUs9(InFMsHf?4>4xgq9~AFwdnY=Ki?ZveSAo=`*MfnP;73_mRZuy&h1aNP^-yv z^Fc}*cva_Qi<_o>&~d_i#klK3QXUcWrTb);R;wUyinkSghQL7mM4ky%dAAOJIN^=j zL3Y9yN5?4Gd5@4PV%gbd(i>^F(fxicaN%5+IHG%|Huz)p!x~W^+)#PVA3tMO#Vs%3AbZypUS(=I4gG;|_(`JSr4!Nw!-QTfzpj%SFH<81jW8 zurxs{)dF4+^e={~%7-{P*Sul!cX^Ncu|WRbk>%}qzlQ$Cx0_6N zlZ4^jJO`sPDZ5L!FM^yT-r6F!X&v6d>hzlhj6S%Xt%jckmKs{@otpZ_y9Cz0KmVSQ1E#kTyoOtST?6X@62Nu#_ngujUXU95>73N=Kk89U&%U_Fsb} zpdawq`A6p_#3-w!+6Z?ezuzZF;?jrhb#O_9uPU@wF!7ev=#!i{Ewwcb)7kMGw2mM0 z6~3tRou)fMDwJ{8uSRBCBt{-9V)2cZpzxHpSxaQ(o06b&d>FwyP2`SbIw-g%r`}ajSkuIDHE{uRjgf3Jc6`PKg$ zI;_vo;QBKcN0Am}Cl6JY??F}X63R};S0Y6mt*ubwB#`3;GbfIVg>;UE{O@)khmi@R zM-^iQtlCX(R&R~gj`vxRgz@FuH+}&XPb!htw&*l9t6x~67fm^}J1E=!K=f^+xVUNd z66wQLW$*}SIvJt+%`n?MBAXA2tS4F0Eqs488ujg+gz4~t`S^>}MMuZ_i&i2RmgqrS2KVj0&&J)z zsx#jh_FlPa6BVLQzu?^$_-PoU>1JPH20`s1kROj*rEi8{+U=UFE5AYUd2Jm&~1tqI~ z>U9Nkgd7JKu1NYb$Mwv1Y)NwX^kdP8TV_7R*qs+&1&3!l#I_Wr^sEqu-y0*_P*+Dk z_*X|1wm&PGur_*)kl9XCER?k(Onrx#zDO{guuwf8ZPR$FN?AVp!Of=kq{POV(iOQb$bT$ovcJ@QL;(`pplSK<0N zD2X_JUo}<#A^gHcl7a~A6js+%UH@CvIA8Y@J(#ViPB+K-4%gXSIHvw)tz)~p>2i&Q zJ+g$#Y#D1c>DbU{a;S@=n%#&zl~v(bF=J+=cf1NbPqW)ok@O(`0z4+0(GTid{rmVkRV3E~uiMZ=xdrv+y^`d~ zv{MW{jsM~}GZ+64vIuORe@~tGA1)#@dWqTqI)?seAzE*y5P4x!`gv+uc{riJhE12Q zVG|%D8DTM-Zd_7gK9r+jSSE`3F!ZIbk8-skTJy!*NeXXlUw(+9^Xu>;dJ%!(oj5WF z{|Y`?(ltj}ew(sF7Z*&lBArp7c@;?{maSO~oI0tmh11I{4v%Sg;ZX&vlSe?5EQHZ2 z=WW(}bR?7@D>n)h7)k~P#^Pg5d-(HLCljz{#iZS&bhS{M-73v3xpeo-eJ$a%)@!oW z!uFC~h6k6se0CTe&S{Y=IBk-vbK*j*^J)KVG3Q0|`T2a7Hv@|XlIOwZsc?1mK}@O* zW;Q-YuMyPJWSD)9#n^>U(?J+I0Sg?hHM9&x9lw-+g z!jSFMlxd^28N*h4&9Ki&Ti`Km*O5ii_2d^&fbqCwhDiwz$D=7jVaVKR)4!l7AT8`? z1m{uj@BGEvf7wHP=r7rApfc-DVjs!&p>T-z((Ztr|w^|b$UJM@$AGu(KJ9d)7 z=YsgY?f~8mmNuNSOe3shKcQF&;o{m8#l&I7@6;kDS-(77Te&%UFrvEr z+7M+!785otl(pZwvoPQJoQy|A5MNbC>To3szD4zLbYvEHvjb!aXB=d7qqQ9MUk>k) zy%|Q6P&Hv&#vOOyt|{S+XYGcWKekOweEOobfs3~+u3sy|AW2v z4r{XM_JzSNiav;d(o_(TARr|m)dHdSB!rGqCG_60qI3)pkdBm8l1ND)G!>f;6>fl!Uc>!e9V0RXhEyqX14OoCzm)cLr7a=Lvk@H zOzctPfa%^L^b>7IHs|!kPDMZjuoZ_n!b-MPCPkF{>>5Vaj?^VftdEx{{BScLXOcyI z+ZM-X)trA4$^jGEI?ZfwZW3`2-S`E!1CXa&H7m|E0bC%V{gjeE=pUR8fQ9tu zc6#%!x7{}fRGg8xzOJ6mq?_Kl#uJtp1BEq{(})nz>@(pp(_&mDEneWRlG0>mMc84J z&?}aPDhMlVlFP}uKrVjMa(ED#t3AGz{o!%i0{F|H#`;J37bqQpJT<`qR7P+pnZ_Uj zAz&4#X_*r`vyW;$1utpDLwPQ0PJh+tkWRIA-nI_gZ?I1|KF5D4Kl!h^x?y0(u;=3X zUet|C1wK(xf7NA{z2?b4u560O0*+XyJCpvwXtqt5-t9L@fQI58OEQ}YUk!+w_9c6D z*g`!>*rM!?xMQ0y_2$N+!=`2Fpm%(lXM0-Oh~+;d>!a+Yn=gshbSzP}_9EV1INN*k z)~(;_5m}4U-+a^-To3?C49Bq99)VEhl|jTyZuy(hw5MH#NYJA4&+^YOprmF1WdGa;p|a&J$hB%eekX6 z|Ce>|ue+Bvba>lmbgVr(IQ(>D?XP;Wb$G5K+mF1(?XX&;C&*@nYQy22r>(Q4nd{pH zg|KHamB$8`V=+Zz6%WV|h_m3yaH4Q{5k&kH<@J1uI1t5)b_Di-#f2EecFgfXB{5zUu| z+-WsRDOy|ZSq)mLSpa{K>Ycxf+}r)D{^75&VEumlZ(}1^7%b(Lp+b2FJZd;N3AL68 zOtj`>W?3OxKVLDG;$SLoCrR@@uD-_%KT;oa&B}IAxr;?*uIY0lYt@x5OuN6DDn^=` zg0le94=%p@Cl38jhCuH}I!r%z#7UWgTJ*&cGHVbP!vN8MB&|Jeu0{zY>>_k}5*)}h z!C`Jjaf(I-yS==uQi|*cALb5KBiSr>mkH0SdgZU~{%O&Fzx$UD)`O(7y*~kWj7|Dw zt*5aK*275Ckh)YhK&fYo2ci^F80fqVT~K}Sm&BIh$o3BM;A%l&=a74@tw%x~7)Zio z_Dg_Y+vyOYjjS`mSu;u&+jwS!3Q=6=clA{IElRE2LlO&y<%cxW7u>guHCr1T#FR#j z6P1WJ1!olna@2A)ZCF^2(N`wMjxeH{9Z~(?drAha%z#?u0BlAZ&7%h*r=n`8xsbT0 z*(eN+33D$St6lowHF$)^ca!Ejq@YmM2JurY#1;GfViC2-$cCwwXTrAuXu0?68e%M*~?6p2q`v`l>4P7w4i58^Qm+Qf5j! zw1{5fQhq`Z$9|{#l;Bm%o)~^AHPFX(2#5LxJ-#|8nI)R_n7mPSMzb4&Vn`9f%G@rB ziK3J{d(0PHOh?SG<;0F}{~@q4vltB?CH4Rh4MEBwtt2S4M>feKr+@Z*hz9X>;yZ!! zl0BAw#jZzkKooIn&iH6C0sX!*e-mj*Z=>!bUVgTvS-$>KGSSnQ2@W?5k?His2_$JLTc zK**_6zDGmftd&7qygR@JVat(m%uI2U5CA#*U)91D;#id*FgfUMw@kiiT|ope7pRX) z`XTDDKE*_t)*lf>ZRbQ28QvCk-QBRgOs%wXWw%$j&O%(!`E$L# zyg-{e268TII;yIN5Dn!!Rq_0KkP{rG98&=@ZSu!?DxUEvo_3{_59@uhh{<_GTvmVd z=kOhGYV)M|T{q9n8@g|*#Bc_ts$b7RhwWe4d*3Vt!b^X=bDm5CYDC&&*vn} zcAh|fPd+m@`Za~xNsMhDhhwaP?B%E@B^}Y4ZJ*J|4V5Rih1u<=vUr=!h0wA)g(UAV zVbO;ar|+NjwM}_D2ZLNO37^Uta3}^B6L-v(Ff8EAw;Q?+hES6A7T~cr#_0-L)*Wyx zvRvg&v;tB?Kr_kTDjs==eQr#6DE3V3q?6Zz#$|kw2V1opJU!Ftq5PrI`GE`X$3P}D z#Q6!^!wyCu0Tp_3JFD&l{tk={y0JQ`HOC;nbzWU;gyW|F5wAmW({G{^fVl z!BegOxadFpJliGu`y2DsvEM0&|LwmI^Ow8u-Rf(@Nm#XP2`Aj)=$?wf8Dw)L(#!(- z%dC+-@`s?655BWs^3r{k=#D6MB$4IGsWqalxR`3W#7JBY1E$p`)B0>-k-I!tsUzkJI4+1g6AC(NRPij8>FRx z7?J#8^eD*Y!ITYmrkklP(ro!EW~!099j%0^K7@-i2X!EzQ=|2~{T~ibPtNA>;3H*w zBw#EqSwY-JA7O?5OnA~iT6n29Bz-02-J;*qALe#H4t*RwSj5+q1Zp^rpK26upO8b? zWL{ey5Yo?(e!xSyO<3)N)G`+Pd4!bo;Sib5M*d-AVFt-1lrx2FG{;OA$Sqjj!JXxmPN}&3n!jt{Z&m|1MFv@?~xu zLsdBIRD&%o_7niG6E$y(^!hSMM77aoD3d?;o%Wcd=#Ex9(H&xBi4 z_dJ?JO@_55B9vG!EQUuyfoAnF)oqqVQY(*5Q{HZ*h?WiX(gtcY9bAuqEcup^fJCS! z=&%&MU)x@5gH%Iw5&Em>1uR#u^RERjORW`CjRsYHog|dF=|+z5JLvYD)s+b=_O{S(`CM zKW!(>V!V^e$yP0Ma|($xMB?hwdP=u<$?RfxWQCF7lP@pRrsCpqdY=0dwu9{*!WV^N zJI-x1UU}xv44L{{u*HGuQuw@fp_-R<6#K=!=eLYi1izckC0nO|eyVlMj%n1xd_yBQ zdq+&m<%~R!8}!+GB4`SPG`c5DrUFQGw|fPdiP;e=FAiVN_Nt$kKtDYHizUI}-3ixe zg|YB{n9)!1Uo00QP$Q%;z4^~gwS3Iy-R|-a(^C+eu|WSQTA20bs%AvS4c8Har}fH$J40m6ThZ zbk(1}(ik#2D~-ebY5qeUr2$?Uj59f<{k;8chQSrE%_!X>49H^o3!+@^CS)O;cNO|a zJffeMj3Uj+x&ZR=*2^F8b#* z;II+QcAV0}_lNo0%rA6_;|YJ*O7a{dGr5EdOZ~|FNt!kfb7=PW64Za|-YeGA`+tr4 z*}od+;PSTt`exfG%+T%RM-M~!UVqP3!rcl3_0T9A%kz{}VISk7nv_}@D z#TFGPLg9-hPM^Xq%)1zrKNuUN8?*ZUP2#`o0>_jJwgU?l?mGr$_wsrrwRi-qVy&#q zaWc++LQ13bP#mzK5AleF<>=AxO%LeYddo@=3z8_q{^*nxVwS--!&3}GxIj`92x1S3 z``_t$^TUdR%sDmWFlt~#wSUu`&l3d3JEMx>MVC}wHA@Tu>gZ)ki{m0u02MOk5(NsPc`n9 z2~90==@i^Lv|&%XA{Qv>=wQDGjTnxLLn!&DI~xdXv;$?gW}g$!ngrXAf?Y@6Ld@Lx zx*QffJ^7`)Q>POz>TAyK_k%U55Sw7;F~1GA>6wF)m4_6v-^x+L0vphr{HAw!8DjY5 zNlFrT6Q8QYvqk74Od80f?7;qyKuzZ0{I?W~k|AZiicS%4es6As>BWaj$a61GGf{ z%)h9f;FOtp$)clr`@h8q|6J*RIXA#jgTs`(Jb0V+X=cJjsLsSKP?|1;1I{GGfPhcHwmVyN5%CGTZ1IN4ZRJ&UJ+j6F6nHp97eMAPWoccm3{no9JUGxc_(&} zajy<9KfxDg)_E^0oOLO?`!g}b6ow$0e^Z5 zNeyRZ#|~=$>*XG{*~_}$IY9%~;)T_>W|IvHFE*HlCE;|=rRS#2)xCP9QFY?cpC`+# zgYy#(6YFF(s5pFO6M|r7rZqJNI+ej|tmX)KxH!Ig_?g zX?+cOd78^cdbb%*!H}^M|1rQsgmd~H-rm+^Dk83~BV06q&;dCU|CGt=2yOGwsS$HN zm9Vd~BtA41g;0L95Nos5Y*d5c2o<;GQe@Tlu{%?sd{OhGx1fG~iI5`#YEr4uA|xh@ zx|$;9XCfCPA*9pCVNz1vJzQiyE0UL@YcuWzrdT4W+Se|WY#kiVebNCk-^xG)(7fga zt7ki_MzFOj*I6S_82>kMC>XrNsTV+c^x@*TPK@&)JdZ8PYw1u+MAeM*#NE+$S8d+H zjD_#jgU%r4KWREGitLA4ghK>vJv$vHU`Hje=`d%utdOze4|pIc3IH*oa)s+LaRUOD zd3${r{Gc->#I)1<++(Om?7WcB>uYl=X=&s>89Rdaxu93Jl*c3l*J)H%rkkU#QU$Y!anf8vGHhQB^E9R(F zxvJ1UbUTKb&+5Sz_y=*&4RFb>LKtd#{)9ASu641<(vsKp;=&D`Qs!R5g!v?!(Wb6| zrc|6}`QEO}``6HiB=cKJr<25*XO(0FP0W2ErCz~qFQGmPNLb^eyIFCaX{$lJ4ykg5-6n`Y4+8Ag z39aC`nU;@7^X4}F-$Wmh;ye-9W81H$2_ObRZRr5V|V)Ht<) z&qYc1!JDIX?Gi>A)uYZJ4{txE2o_V}z6D&grfhqQnBD1>7cPNr=X9?F@^Ea+7uqf8 z(7N7JLD_h3qmO>u*;gvG%a#&NIo}M9L{c}m5*qV*#AB1`G5xJMC>_jAQz-TX!gw{A0MYRUl>A({~gl-BA66g z+NQyUD5!36^C{4P<%sw_|DsIU*a`8#T&!8_mTxQesVzAPlk(U(5zZx(*DGsS;HiLe zRlne3Cm5-xsVGrLUh$s}BSttsuQltiHo=g-8szrkXIy-a0v-8;NV4N)0bcDqCtqy_ z9RmBJpe*ReTnDafud?%;-@gP#H%z7lhaEp3cOEVknqh6Trirm~oAe*Z%3V$_3KnC{ z1o^ohM&Yz|D@?NMd*sI%_3L|R2t-NHnDa6HQG`<>W? zjce%4tGBPOS3SAA=;>5m!u zbvhVQQaly>9s#Y>U+Q_Z--BvxBfaoW) zyjx)=3wAq*hW^n|`Ls1fZC&)_cuFz~q0Xfb&BP`e)IihDQseZx_hAI4WT6idD{O;1)@)rG zlxPp1W0IExswxLP%iI8xlHpci3c^;iOk_fjnwgYaMV6tCjhZUWcpj57-X$XBL@H(^X&k@?SY_Zj`N-2*zwtJ$L2rIe%gL_kU)&o;3m+t~~a# zZqZXixyiGvx62+fWl&p`h?~~bT!c1rs6b7=`9G-nx>{Ku{BUT8{);8UeuWd({xOVN z=1YZ^kzx6#_?}n2OVm{RIFjCtQy`a1!Ybla;vWFK2ZzP63zzba8Mbv!HUhp$WW_8A zk=Tezd3Qk6^o{-ndLOo|Mnv4mI{K&C7?t<6GZBs?0-q6YbdhO~* zt!??%XbFBoG{8e;O|7l_F_1o(a4SXxYO%n`#kkwX;y+O9IU zO*Mo|O*hTccA?(PijmAC$RX^ym!MUZ0+`NXulZ}s^I8?l6)Ngs-=q9+htc1=3{AmfWu%`@456ptSc5l|^uX`QZUCQ)q>_~^i^ zCzAX*!f)o3x_*CWNnjig9s81XpbbJP#FC08?IhwS@TBBK{4MBu!T!$ai{|KTF*InoTpW; z75jeR1D_ZqD+vh+1dl19x75yA2Z|&;S=32UfIOjOrpgG?J8Tle0Ky3HwfYAIjwAd* zb*au-R*@K(HVijQeh*|=eDRR9dO_x&`T`dQUu>M<%#yw;cR6&RVJM(*uVM`5Gc5Qn zJy9yCil8=P(!<126f@3xo~Ov%)AR=CZTh)hi|x1^cKz&8b&JR?a=7atM8%9juoaO* z4nRiSC4>u;PxZvUao|SBf{%>UCI^bS*9e=K4pSy=YFhM-g&p$BXiLt`vG|T+$5)BE z2xU46QW`v2G~@E-!;>c$pW7w)NMj=%zjJZcS|w-hRd z6cQ`x#$IUa5@*Rn5F0q&T;8(iagLPEqZMeB4AcH_!78(wO z7ZZ!>2O&DN9&7=Ng1Q(DuXm6dPh zmX_#lYtVfHkNuqHtYNvI;VV>>l~WOIAT%NLb1r?qX2=m%llyFGy~SAH-oH||u>6O~ zPest_x$SRvc<*!U!gp4fh!Tpby|QY#!TOk>j5?%Xqer*|+}evLD;uh|H&lloKBt3K zMD(A&KX&QryfTtU?fJ^3?E0f5pj{_0vchi8orJ6!QN^oq+21)o#!1J~?M_9a@TO`&7~NrRPXei^iT&WhcU8GPIM^|S7_ePeS$6%VuWbr!;M z1>ExNlH%z1926n|JD7!p>pfxXJ#1uLz2R*&^6{sYd;{Ku@>57P+aWlgW>LC_K0j~f z2E9ctG*H_r3B){&O|3%AOHGFF^sdUBXYkmVm{|d*8}i%u<=Y7;YU8MIaV!yPu0}Ny zbq^-a4y(yOJ?wJ51uG4`3fUDdZEEwO5D%{)71hiUNFpYHOqS~;tk(H0l#=vX&qZD^}MEkF@W2RdfFU;@Y2*YzopTMNSGSf>VeYu8ux z%j>6s4Uc-QP1cDYTyf~6I3`s=zyYVN{;AO%zX9q>N8a>mPJI-Mn)4Bj8lyUTxY5{< zrhC0_;ClOBNLA?;+4hLfCTU(U^GhtjF;pm`!<3!(^FYMGbdYo%bl|SXfSWq_(>!4l z+@wFPc2xV+RI;?4QbG8T#6*xPOW5bt%ioYp#&QCk7coKdR!%N438p%&jg41fGtGqna0=?8UjN=_b8X z>%E@!b=mTMU)Ym9Z}Spp%@7QBsJ_lnS2(uY3rv=cZC(Gx;E%$IWg)7>* zT@oG(ern1XXp@&OL!U4AB@1UKUx52k+dfXU3zoq3uUn-Wjma- zNm}RrS#GwcC;xVsJg^?p(r#Mvvx}IY+U)5aNx3yQ|BJ;aGSPU|=+l9S{em``d!I6L z{}+oS`RCowgX-3vZ+@|)Gk&pL@m>^>PAk$s$hN&DmJm_GYrn*p-&1w`?3w&s`QbqR z{r@Q-+v{^>qH*Pzh+iE%(`^bjO3o;fy+<1IF%qrBFcdn%P_L{km!d!EAm5{o5 z1@R#49V>6DHBc=Qgg3M$rp3|nlAedfAluTIhtz(~Dxt4Ymn12l9(H&>d|9=XjSr=i zZ@3aGIwXpm1LZ5b!@&SrI1?^v!D*=He|C%N(I6+%I6}Qhkdc$)A9I`anx6v)p^xW& zC0gg8urV=tK}i4Ll>roo_rGpttH^C8CTtP&nl?Twu zA6#E2a41v?96-@H_nu8FhVBBpmK)KjJ$ZNy^a&)2y1hcj>;BC(ezSB++=?lx7TDBv>xcZq(l52C^DAA!zQ*Q={0k#? z-1 z2idnvjm;mw<)8g*m~_C#^tlP&RrBGfT&CBq$u2X3@OVm*MihqbZ^jIksa$$m@L0G} zO_12F{L}d)lQ~kZEXy_-Z0m+4t&jH4Uo``?86g59PE56kN%=SJ#a+1AfLGy(H?Copg*RV3vomvm(Elo1YcW2%6p;Y`dzPF#qMB@>y z9|`(^4|-D*3)BqS4mD59J&w2^@KANWy1IP2r+XyX>0^VLzCB6+M(sLyE$U(IAYaRG z-8cZh=#^)^cPTz8Q)uqHR4V?A&1~`hN3HP0;cRMTyXOkiQ@Z_iz&khl!WWb-~WwotKIid#ZVuC&0v zb@ANkku+=3%=Ntjx)>kw(>k@T{OusW`d^KsOv-#3Q|$Y*x0qR}5y@Z}3~fw)wEw%E z&i*zY>U+A9QLh5+W)-)ePG2Q|zfTX(`OM(|@eh-=)Q`A+4-52p;#zb0CJcZx6i!sH`W z^3Rj*)N`rpS@}Y8TqH@w#9LSPiz*A-4ouL?WKUTv-ekMh>Eg0-5cn!Db08u_p5=(F zlYI9^eFOcP)E4aq_*0E?Sf+z3moPoVYFe}BTb{5#y9d?lzE|}q0KeZ0aJ0(IS3HaC zvJ(^oOsa{gmk*VHO2}&pj@*uUm8(=UAU8xhk$(tHwuqSI0FlB(9USd~keY#R&5n&p z4K|XczgSW~-4cGde7qx?oWCA^e9HUab*|J@fNi!`u9~$~6zyv*0vzNiYU~HzZtD2V zo^Ze$$@VtdaOW-4qx6^__4VE_7Afw*hiyxj5O24iQET%?w({uGJMLbnIL4<3m=V<| z(BnSRxq7}XXh+8}+1i&a`?)A3HEZ>UYi*nk*>CrfZC4cSQ$9=X=NmAhl3N9}zkH~! z$V2RH-FW5_m@pjv>QvenhrC6Z^?*W5p3Hy@`beJsQ$}{kk3dHhahh|TOw3H;?BgVz zuVVq?ogc9PIlGgUe5l)P6kCHm0h_Ch^K>6mlo-o-jzVwTQ^X>krUo5j- zBv+oYGOt%e@gbd|DOgJfQ>rg8h7 zUo2}XOx(z~KO-W3li6b*0=v?Zv8s~-8T5zaF<+4;hB(Eg|XK4smO6Z2hK;`=sMcUgeJQO5MpJ^0 z)`?a!P-M(N*7IR!G%9XP(n>w)qNNz0Qz9laBFW(X;_w%lUo2@)f3bWG{>Ae6;r?Fk zl6UY~SzD+AYEO232vwMpT(DkS(8Bp?MM?@eW^J{ee1rKbYqXBDJPy!eOOyTCZ2U_~p zh#?_0PTi_E?>5)I>>945NaG*akMO}x#(&x^)3l2VWoW$>ZBX`}TZHG>aeBBM_`ASo z7L_A#H{EN|*o5CSRR3mhe_`8J+z$l=4^{t%W88|i{cxpK;Ff370T!`BV4Ap(^r?AA ziV;YkH(hp8IW;bA?Wtm0WnfPTQVxTe8Jf0eAL&euebwl^PL=6-=V5tdDLANREZtpn z0lVd)$Srcc^5E39L6MHN9>CT@%cI;l?*5?+o90F2{ODd;qp0HQP}0v5=As7EN%&IP z1zgFQpOjIla{CZ$!6LEvw@oH@$=ThnwJVtqbq%wAJ0g8LJ+fiLlW31awm97q4=%rT zeyw7)paZrg@mz z4MOlf<7Xi*98g|lm0OH1ER_nk6fXJ}#2PfP4JnQl372`ctRe-20nJYgHMO?l#J^uq zRzN9n9~=G*G}f7#etC^RVe4qp2p<9fQYl?Qvd9Cz8FaVrCx;qYUglP}F7J4Sy8_e_ z?qoV`k@NDj*+khcp%O4RkGPR{=rTS1;B$kx8uJ@umJ0a1vc&c7 zHD1Tc#S-Jx5+}WCs9ljC@MBra{rtq%_$00T1;))qsdH4H`t`@WeFMhwb>2Nd*|?iU zP7mUI0)@pJoY7_mE7vazkY!qOaxRn=-kUI)^^u5o;xe|}VcqY`b7L!F9l=Sp0BcI{IWq#bQ?;^K!cpYv;Ebj&Q`2twm zPu!>%+UALqsJIXD=J4?742V#g37{Ou?`FTes$#g7*b?Eyv2Y8Vk07LQfa4gpl(As3d~?{!kxeVfoFO*|Eyazw4>+b z!8_;MySZ@Yf%M_8#8YSRWqqTb6}ng5ng^$Oj_w!NlsOe3V=|!+c)u=)nGLmnG}6I8 z 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 z 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%0DWUP-C?`z2rNMOi?%riLbmo09 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

uziy~*-@SE9oEzefvA}PwKcRbp_X;3p3px& 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 Le>SBq{M`2+M^clE literal 0 HcmV?d00001 diff --git a/assets/isodose.xml b/assets/isodose.xml new file mode 100644 index 0000000..aac92ff --- /dev/null +++ b/assets/isodose.xml @@ -0,0 +1,40 @@ + + + + 115 + 110 + 107 + 105 + 100 + 95 + + + + 107 + 100 + 95 + 107 + 100 + 95 + + + + 107 + 100 + 95 + 107 + 100 + 95 + 107 + 100 + 95 + + + + 90 + 80 + 70 + 50 + 25 + + \ No newline at end of file diff --git a/assets/objective-template-photon-kno.xml b/assets/objective-template-photon-kno.xml new file mode 100644 index 0000000..fa1194c --- /dev/null +++ b/assets/objective-template-photon-kno.xml @@ -0,0 +1,406 @@ + + + + + + + 100 + + + + + 97 + + + + + + + + 102 + + + + + + + + 96 + + + + + + + + 100 + + + + + 102 + + + + + 100 + + + + + + + + 96 + + + + + + + + 100 + 0 + + + + + 100 + 26 + + + + + 100 + 64 + + + + + + + + 100 + 0 + + + + + + + + 100 + 46 + + + + + + + + 100 + 46 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 100 + 20 + + + + + + + + 6500 + 5100 + 3100 + D + + + + + + + 4000 + + + + + + + + 4400 + + + + + + + + 4000 + + + + + + + + 4400 + + + + + + + + 1000 + + + + + + + + 1000 + + + + + + + + 2800 + + + + + + + + 2800 + + + + + + + + 2800 + + + + + + + + 3500 + + + + + + + + 3500 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 4000 + + + + + + + + 3000 + + + + + + + diff --git a/assets/objective-template-proton-kno.xml b/assets/objective-template-proton-kno.xml new file mode 100644 index 0000000..fbbed62 --- /dev/null +++ b/assets/objective-template-proton-kno.xml @@ -0,0 +1,404 @@ + + + + + + + 100 + + + + + + + + 100 + + + + + + + + 100 + + + + + + + + 100 + + + + + 100 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 7100 + 0 + + + + + 28200 + + + + + 107 + + + + + + + + 7000 + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 7100 + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + + + 0 + + + + + + diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000..72b882f --- /dev/null +++ b/src/config.py @@ -0,0 +1,340 @@ + +# General keys +EXT_DCM = '.dcm' +MODALITY_CT = 'CT' + +PREFIX_PATIENT_ID = 'HCAI-Dose-{}' +PREFIX2_PATIENT_ID = 'HCAI-Dose-x{}' +PREFIX3_PATIENT_ID = 'HCAI-Dose-Pr{}' +PREFIX_PROTON_PATIENT_ID = 'HCAI-Dose-P{}' +PREFIX_PROTON2_PATIENT_ID = 'HCAI-Dose-Pr{}' + +KEYNAME_CT = 'CT' +KEYNAME_RTPLAN = 'RTPLAN' +KEYNAME_RTDOSE = 'RTDOSE' +KEYNAME_RTSTRUCT = 'RTSTRUCT' +KEYNAME_UNAPPROVED = 'UNAPPROVED' + +KEYNAME_PATH_PATIENT = 'pathPatient' +KEYNAME_PATH_CLASSSOL = 'pathClassSolution' +KEYNAME_PATH_OBJECTIVES = 'pathKNOObjectivesClinical' +KEYNAME_PATH_DVHPARAMS = 'pathDVHParams' +KEYNAME_PATH_ISODOSEXML = 'pathIsoDoseXML' +KEYNAME_OPT_STEPS_RE = 'optStepsForRe' + +KEYNAME_FORCE_LOAD_PATIENT = 'forceLoadPatient' +KEYNAME_FORCE_UPLOAD_PATIENT = 'forceUploadPatient' +KEYNAME_FORCE_CURRENT_PATIENT = 'forceCurrentPatient' + +# RS-specific keys +KEYNAME_RS_PATIENTDB = 'PatientDB' +KEYNAME_PATIENT = 'Patient' +KEYNAME_CASE = 'Case' +KEYNAME_PTV = 'PTV' +KEYNAME_RS_PLAN = 'Plan' +KEYNAME_RS_BEAMSET = 'BeamSet' +KEY_PATIENTID = 'PatientID' + +# LUMC-Specific keys +NAME_CT_IMAGING_SYSTEM = 'BBBCT120kV' # specific to LUMC +PHYSICIAN_NAME = 'Mody' # comes up in the list of patients so that others researchers can identify +NAME_TREATMENT_MACHINE = 'Toestel 5' # specific to LUMC + +SUFFIX_PLAN_CS = '-{}1' +SUFFIX_PLAN_DFO = '-{}2' +SUFFIX_PLAN_DFO2 = '-{}3' +SUFFIX_PLAN_EUD = '-{}4' +SUFFIX_PLAN_FINAL = '-{}5' +SUFFIX_PLAN_FINAL2 = '-{}6' + +PREFIX_CLINICAL_CONTOURS = 'R' +PREFIX_AUTOMATED_CONTOURS = 'A' + +KEYNAME_CANCER_TYPE = 'cancerType' + +KEYNAME_PLAN_OG = '{}' +KEYNAME_PLAN_CS = '{}' + SUFFIX_PLAN_CS # CLASS SOLUTION +KEYNAME_PLAN_DFO = '{}' + SUFFIX_PLAN_DFO +KEYNAME_PLAN_DFO2 = '{}' + SUFFIX_PLAN_DFO2 +KEYNAME_PLAN_EUD = '{}' + SUFFIX_PLAN_EUD +KEYNAME_PLAN_FINAL = '{}' + SUFFIX_PLAN_FINAL +KEYNAME_PLAN_FINAL2 = '{}' + SUFFIX_PLAN_FINAL2 + +KEYNAME_CLASS_SOLUTION_CONTOURS_OG = 'ClsSol-OGCon' +KEYNAME_CLASS_SOLUTION_CONTOURS_AUTO = 'ClsSol-AutoCon' + +KEYNAME_TREATMENT_MACHINE = 'Toestel 1' +KEYNAME_RADIATION_PHOTONS = 'Photons' +KEYNAME_TREATMENT_TECHNIQUE = 'VMAT' +KEYNAME_PLAN_COMMENT = "DL1 5245\nDL2 7000" + +KEYNAME_BEAM_1 = "01.01" +KEYNAME_BEAM_1_DESC = "1 arc 178-182" +KEYNAME_BEAM_2 = "01.02" +KEYNAME_BEAM_2_DESC = "1 arc 182-178" + +KEYNAME_ISO_CENTER = 'IsoCenter' + +RS_CHECK_PREFIX = '_' +RS_STR_TRANSLATE_OBJ = { + ord(' ') : ord('_') + , ord('(') : ord('_') + , ord(')') : ord('_') + , ord('-') : ord('_') + , ord('+') : ord('_') + , ord('<') : ord('_') + , ord('>') : ord('_') +} + +KEY_AUTOCONTOUR_SUFFIX = ' (1)' # very rs-specific +KEY_3MM_SUFFIX = '+3' +KEY_OBJ_SUFFIX = '_obj' + + +KEYNAME_PTV_DL1_DVH = 'PTV_DL1_DVH' +KEYNAME_PTV_DL2_DVH = 'PTV_DL2_DVH' +KEYNAME_CAVITY_ORAL = 'Cavity_Oral' # RS Autocontouring uses AAPM nomenclature +KEYNAME_ORAL_CAVITY = 'Oral_Cavity' # Inside of KNO.xml +KEYNAME_BRAINSTEM = 'Brainstem' +KEYNAME_SPINALCORD = 'SpinalCord' +KEYNAME_PAROTID_L = 'Parotid_L' +KEYNAME_PAROTID_R = 'Parotid_R' +KEYNAME_GLND_SUBMAND_L = 'Glnd_Submand_L' +KEYNAME_GLND_SUBMAND_R = 'Glnd_Submand_R' +KEYNAME_SUBMAND_L_OBJ = 'Submand_L_obj' +KEYNAME_SUBMAND_R_OBJ = 'Submand_R_obj' +KEYNAME_CRICO = 'Cricopharyngeus' +KEYNAME_LARYNX_SG = 'Larynx_SG' +KEYNAME_GLOTTIC_AREA = 'Glottic_Area' +KEYNAME_COCHLEA_L = 'Cochlea_L' +KEYNAME_COCHLEA_R = 'Cochlea_R' + +KEYNAME_MUSC_CONSTRICT_I = 'Musc_Constrict_I' +KEYNAME_MUSC_CONSTRICT_M = 'Musc_Constrict_M' +KEYNAME_MUSC_CONSTRICT_S = 'Musc_Constrict_S' +KEYNAME_ESOPHAGUS = 'Esophagus' # <-- NEED TO RESOLVE THIS VISUALLY +KEYNAME_ESOPHAGUS_S = 'Esophagus_S' # <-- NEED TO RESOLVE THIS VISUALLY +KEYNAME_TRACHEA = 'Trachea' +KEYNAME_SWAL_COMP = 'Swal_Comp' # KEYNAME_MUSC_CONSTRICT_I + KEYNAME_MUSC_CONSTRICT_M + KEYNAME_MUSC_CONSTRICT_S + KEYNAME_CRICO + KEYNAME_LARYNX_SG + KEYNAME_GLOTTIC_AREA +KEYNAME_SWAL_OBJ = 'Swal_obj' + +KEYNAME_MANDIBLE = 'Bone_Mandible' +KEYNAME_MANDIBLE_PTV = 'Bone_Mandible-PTV' +KEYNAME_RING_LT_PTV_DL1 = 'ring95%]', 'CTV_DL1 [D98%>94%]', 'CTV_DL2 [D98%>95%]', 'CTV_DL2 [D98%>94%]'] + + +########################################################################### +# PLAN STATS +########################################################################### +KEYNAME_PLAN_DEBUGINFO = 'planDebugInfo' +KEYNAME_TIME = 'time' +KEYNAME_OBJ_VALUE = 'objValue' +KEYNAME_PLAN_EXTRAS = 'planExtras' +KEYNAME_AUTOCONTOURING_TIME = 'autoContouringTime' +KEYNAME_PLANS = 'plans' +KEY_PLAN_STATS_JSON = 'planStats.json' +KEY_PLAN_STATS_JSON_AUTO = 'planStatsAutoContour.json' +KEY_PLAN_STATS_JSON_ALL = 'planStatsAll.json' +KEYNAME_CONTOUR_TYPE = 'contourType' +KEYNAME_CONTOUR_CLINICAL = 'clinical-contour' +KEYNAME_CONTOUR_AUTO = 'auto-contour' +KEYNAME_CONTOUR_ALL = 'all-contour' +KEYNAME_CONTOUR_EVAL = 'eval-contour' +KEYNAME_CONTOUR_DEBUG = 'eval-debug' + +###################################################################### +# NTCP KEYS +###################################################################### + +KEY_NTCP_PLAN1 = "plan_1" +KEY_NTCP_PLAN2 = "plan_2" +KEY_NTCP_TREATMENT_TYPE = "treatment_type" +KEY_NTCP_TUMOR_LOCATION = "tumor_location" +KEY_NTCP_BASELINE_XEROSTOMIA = "baseline_xerostomia" +KEY_NTCP_BASELINE_DYSPHAGIA = "baseline_dysphagia" +KEY_NTCP_IS_TOTAL_LARYNGECTOMY = "is_total_laryngectomy" +KEY_PAROTIDS_REMOVED = "parotids_removed" + +KEY_NTCP_PLAN_1 = "Plan_1" +KEY_NTCP_PLAN_VALUE = "PlanValue" +KEY_NTCP_MODEL_NAME = "ModelName" + +# FILENAME_NTCP_RESULTS = 'ntcpResults.json' +FILENAME_NTCP_RESULTS = 'ntcpResultsV2.json' +FILENAME_NTCP_PHOTON_RESULTS = 'ntcpPhotonResults.json' + +KEY_XERO_GRADE2 = 'Xerostomia Grade ≥ 2' +KEY_XERO_GRADE3 = 'Xerostomia Grade ≥ 3' +KEY_DYS_GRADE2 = 'Dysphagia Grade ≥ 2' +KEY_DYS_GRADE3 = 'Dysphagia Grade ≥ 3' + + +""" +CTV_DL2_DVH (required) +CTV_DL1_DVH (required) +PTV_DL2_DVH (required) +PTV_DL1_DVH (required) +Brainstem (required) +Brain +SpinalCord (required) +Parotid_L (required) +Parotid_R (required) +Glnd_Submand_L +Glnd_Submand_R +Musc_Constrict_I (required) +Musc_Constrict_M (required) +Musc_Constrict_S (required) +Cricopharyngeus (required) +Oral_Cavity +Esophagus (required) +Bone_Mandible +Bone_Mandible-PTV +Trachea (required) +Glottic_Area (required) +Larynx_SG (required) +PTV_DL1_obj_5mm (required) +PTV_DL1_obj_10mm (required) +Cochlea_L (required) +Cochlea_R (required) +Lens_L +Lens_R +Ghost_craniaal (required) +Body (required) +""" + +""" +allowed additionals: +- planNameClassSol : Ghost_craniaal, Ear_L_ghost, Ear_R_ghost +- planNameCSAndDFO : N/A +- planNameCSAndDFOAndEUD: N/A +- planNameFinalTouches : prothese, dfo, dmax, dose, ring>PTV_DL2 +""" \ No newline at end of file diff --git a/src/helpers.py b/src/helpers.py new file mode 100644 index 0000000..a438f33 --- /dev/null +++ b/src/helpers.py @@ -0,0 +1,2740 @@ +# Import RStation libraries +import connect + +# Import private modules +import hnDoseConfig as config + +# Import public modules +import re +import os +import pdb +import copy +import time +import math +import shutil +import logging +import pydicom +import traceback +import numpy as np +from pathlib import Path +from xml.etree import ElementTree +from distutils.util import strtobool + +def print(*args, **kwargs): + logging.info(" ".join(map(str, args)), **kwargs) + +########################################################################################## +# MY CODE # +########################################################################################## + +########## PATIENT-RELATED ########## + +def getPatientIdentifier(patientObj): + """ + patientObj: connect.connect_cpython.PyScriptObject + """ + return '/'.join([patientObj.PatientID, patientObj.Name]) + +def rayStationSave(): + + patientObj = None + + try: + patientObj = connect.get_current(config.KEYNAME_PATIENT) + patientObj.Save() # need to do this so to avoid "PreConditionViolationException: State must be saved." + except: + pass # if there is no patient open + + return patientObj + +def getPatientById(patientID, lastFind=True): + + patient = None + + db = connect.get_current(config.KEYNAME_RS_PATIENTDB) + patients = db.QueryPatientInfo(Filter={config.KEY_PATIENTID: patientID}) + patients = sorted(patients, key=lambda x: x['LastName'], reverse=False) + lastNames = [each['LastName'] for each in patients] + if len(patients): + if lastFind: + print (f" - [getPatientById] Loading {patients[-1]['LastName']} from {lastNames}") + patient = db.LoadPatient(PatientInfo=patients[-1], AllowPatientUpgrade=True) + else: + print (f" - [getPatientById] Loading {patients[0]['LastName']} from {lastNames} ") + patient = db.LoadPatient(PatientInfo=patients[0], AllowPatientUpgrade=True) + + return patient + +def loadPatientUsingID(patientId): + """ + Params + ------ + patientId: str + """ + + patientRSObj = None + + try: + db = connect.get_current(config.KEYNAME_RS_PATIENTDB) + patientInfos = db.QueryPatientInfo(Filter={config.KEY_PATIENTID: '^' + str(patientId) + '$'}) # regex filtering + + if len(patientInfos): + # [NOTE: Returns the most recent patient] + patientRSObj = db.LoadPatient(PatientInfo=patientInfos[-1], AllowPatientUpgrade=False) + except: + traceback.print_exc() + + return patientRSObj + +########## DICOM-RELATED (upload) ########## + +def uploadRTAppsDataToRStation(pathPatient, planName, forceUpload=False, forceCurrentPatient=False): + """ + Params + ------ + pathPatient: Path, Path to patient folder containing CT, RTDose, RTPlan, RTStruct + - e.g. Path('H:\\').joinpath('RayStationData', 'LUMC-Dose', 'HCAI-Dose-1', '2.25.52093085334020578701550802539023326955') + - CT_{} + - RTDOSE_{} + - RTPLAN_{} + - RTSTRUCT_{} + planName: String, check if this plan exists in RayStation. If not, upload + forceUpload: Bool, If True, will upload data even if patient already exists. Useful when debugging + forceCurrentPatient: Bool, If True, will use patient currently open in RayStation + + NOTE: Above folder structure is required for this function to work + """ + + # Step 0 - Init + assert forceUpload + forceCurrentPatient < 2, ' - [uploadRTAppsDataToRStation] forceUpload and forceCurrentPatient cannot be both True!' + rayStationSave() + db = connect.get_current(config.KEYNAME_RS_PATIENTDB) + patientCTBool, patientRTStructBool, patientRTPlanBool, patientRTDoseBool = False, False, False, False + + # Step 1 - Create patient + if pathPatient.exists(): + + # Step 2 - Get patient paths + pathPatientCTFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_CT)] + pathPatientRTDoseFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTDOSE)] + pathPatientRTPlanFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTPLAN)] + pathPatientRTStructFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTSTRUCT)] + + if len(pathPatientCTFolders) == 1 and len(pathPatientRTDoseFolders) == 1 and len(pathPatientRTPlanFolders) == 1 and len(pathPatientRTStructFolders) == 1: + pathPatientCTFolder = pathPatientCTFolders[0] + pathPatientRTDoseFolder = pathPatientRTDoseFolders[0] + pathPatientRTPlanFolder = pathPatientRTPlanFolders[0] + pathPatientRTStructFolder = pathPatientRTStructFolders[0] + + # Step 1.1 - Upload CT + patientIdCheck = Path(pathPatient).parts[-2] + if not forceCurrentPatient: + try: + print ('\n\n - [uploadRTAppsDataToRStation()] --------------------- Step 1: Checking for patientId={}, plan={} (forceUpload={}) \n\n'.format(patientIdCheck, planName, forceUpload)) + if forceUpload: patient = None + else : patient = getPatientById(patientIdCheck, lastFind=True) + if patient is None: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading patient data for patientId={} \n\n'.format(patientIdCheck)) + if Path(pathPatientCTFolder).exists(): + patientID, studyUID, seriesUID = updateCTDicoms(pathPatientCTFolder) + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading CT data for {} ... \n\n'.format(patientID)) + warnings = db.ImportPatientFromPath(Path=str(pathPatientCTFolder), SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUID), 'SeriesInstanceUID': str(seriesUID)}], ImportFilter='', BrachyPlanImportOverrides={}) + patient = rayStationSave() + # patient.Cases[0].SetCurrent() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploaded CT data for {} \n\n'.format(getPatientIdentifier(patient))) + setEquipmentName() + patientCTBool = True + else: + print ('\n - [uploadRTAppsDataToRStation()][{}] --------------------- Step 1.1: No CT data found: {} \n\n'.format(patientID, pathPatientCTFolder)) + else: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Patient already exists \n\n') + patientCTBool = True + except: + traceback.print_exc() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Issue with CT data upload: {} \n\n'.format(pathPatientCTFolder)) + patientCTBool = False + else: + print ('\n\n [uploadRTAppsDataToRStation()][DEBUG] --------------------- Step 1: Not uploading for patientID={} (forceCurrentPatient={}) \n\n'.format(patientIdCheck, forceCurrentPatient)) + patientCTBool = True + print ('\n ---------------------------------------------------------- ') + + # Step 1.2 - Upload (existing) RTStruct/RTPLAN/RTDOSE + patient = rayStationSave() + if patient is not None and patientCTBool: + case = patient.Cases[0] + casename = case.CaseName + patientID = patient.PatientID + + # Step 1.2 - Upload (existing) RTStruct + try: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Upload RTStruct data \n\n'.format(getPatientIdentifier(patient))) + if not checkForRTStruct(case): + pathPatientRTStructFile = [each for each in pathPatientRTStructFolder.iterdir()][0] + if Path(pathPatientRTStructFile).exists(): + studyUIDRTStruct, seriesUIDRTStruct = updateRTStructDicoms(pathPatientRTStructFile) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploading RTStruct data ... \n\n'.format(getPatientIdentifier(patient))) + warningsRTStruct = patient.ImportDataFromPath(Path=str(pathPatientRTStructFolder), CaseName=casename, SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTStruct), 'SeriesInstanceUID': str(seriesUIDRTStruct)}], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploaded RTStruct data \n\n'.format(getPatientIdentifier(patient))) + patientRTStructBool = True + rayStationSave() + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No RTStruct data found: {} \n\n'.format(getPatientIdentifier(patient), pathPatientRTStructFile)) + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: RTStruct data already exists \n\n'.format(getPatientIdentifier(patient))) + patientRTStructBool = True + except: + traceback.print_exc() + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Issue with RTStruct data upload: {} \n\n'.format(getPatientIdentifier(patient), pathPatientRTStructFile)) + patientRTStructBool = False + + print ('\n ---------------------------------------------------------- ') + + # Step 1.3 - Upload (existing) RTPlan/RTDose + if patientCTBool and patientRTStructBool: + if not checkForRTPlan(case, planName): + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Upload RTPlan/RTDose data \n\n'.format(getPatientIdentifier(patient))) + studyUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-2] + seriesUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-1].split('_')[-1] + studyUIDRTDose = Path(pathPatientRTDoseFolder).parts[-2] + seriesUIDRTDose = Path(pathPatientRTDoseFolder).parts[-1].split('_')[-1] + updateRTPlanDicoms(pathPatientRTPlanFolder) + pathTempRTDoseAndRTPlanFolder = getTempRTDoseAndRTPlanFolder(pathPatientRTPlanFolder, pathPatientRTDoseFolder) + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploading RTPlan/RTDose data ... \n\n'.format(getPatientIdentifier(patient))) + warningsRTPlan = patient.ImportDataFromPath(Path=str(pathTempRTDoseAndRTPlanFolder), CaseName=casename, SeriesOrInstances=[ + {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTPlan), 'SeriesInstanceUID': str(seriesUIDRTPlan)} + , {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTDose), 'SeriesInstanceUID': str(seriesUIDRTDose)} + ], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + shutil.rmtree(pathTempRTDoseAndRTPlanFolder) + patientRTPlanBool = True + patientRTDoseBool = True + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploaded RTPlan/RTDose data \n\n'.format(getPatientIdentifier(patient))) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: RTPlan/RTDose already exists \n\n'.format(getPatientIdentifier(patient))) + patientRTPlanBool = True + patientRTDoseBool = True + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Not uploading RTPlan/RTDose due to CT/RTStruct issue \n\n'.format(patientID)) + print ('\n ---------------------------------------------------------- ') + + else: + if patientCTBool is False: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No CT to be found for: \n\n'.format(pathPatientCTFolder)) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No patient to be found: \n\n'.format(patientID)) + + else: + print(' - [uploadRTAppsDataToRStation()] Patient folder does not contain one CT, RTDOSE, RTPLAN and RTSTRUCT folder: ', pathPatient) + + else: + print(" - [uploadRTAppsDataToRStation()] Patient folder does not exist: ", pathPatient) + + if patientCTBool and patientRTStructBool and patientRTPlanBool and patientRTDoseBool: + return True + else: + return None + +########## DICOM-RELATED ########## + +def updateRTStructDicoms(pathRTStruct): + + # Step 1 - Get the study and series UID + dsRTStruct = pydicom.dcmread(str(pathRTStruct)) + studyUIDRTStruct = dsRTStruct.StudyInstanceUID + seriesUIDRTStruct = dsRTStruct.SeriesInstanceUID + dsRTStruct.ApprovalStatus = config.KEYNAME_UNAPPROVED # [UNAPPROVED, APPROVED, REJECTED] + + # Step 2 - Update the RTROIObservationsSequence + for structureSet in dsRTStruct.StructureSetROISequence: + if structureSet.ROIName in [config.KEYNAME_PTV_DL1_DVH, config.KEYNAME_PTV_DL2_DVH]: + roiNumber = structureSet.ROINumber + print (roiNumber, structureSet.ROIName) + for roiObservation in dsRTStruct.RTROIObservationsSequence: + if roiObservation.ReferencedROINumber == roiNumber: + roiObservation.RTROIInterpretedType = config.KEYNAME_PTV # [PTV, CTV, GTV, ORGAN, ] + # dsRTStruct.RTROIObservationsSequence[roiNumber-1].RTROIInterpretedType = config.KEYNAME_PTV # [PTV, CTV, GTV, ORGAN, ] + + # Step 3 - Save the file + dsRTStruct.save_as(str(pathRTStruct), write_like_original=True) + + return studyUIDRTStruct, seriesUIDRTStruct + +def updateCTDicoms(pathCT): + + patientID, studyUID, seriesUID = None, None, None + + for pathDicomCT in pathCT.iterdir(): + if pathDicomCT.suffix == config.EXT_DCM: + + ds = pydicom.dcmread(str(pathDicomCT), force=True) + + if ds.Modality == 'CT': + patientID = ds.PatientID + studyUID = ds.StudyInstanceUID + seriesUID = ds.SeriesInstanceUID + + ds.ReferringPhysicianName = config.PHYSICIAN_NAME # NOTE: This is the update + + ds.save_as(str(pathDicomCT), write_like_original=True) + + return patientID, studyUID, seriesUID + +def updateRTPlanDicoms(pathPatientRTPlanFolder): + + studyID = None + + if Path(pathPatientRTPlanFolder).exists(): + pathPatientRTPlanFile = [each for each in pathPatientRTPlanFolder.iterdir()][0] + ds = pydicom.filereader.dcmread(str(pathPatientRTPlanFile)) + + ds.ApprovalStatus = config.KEYNAME_UNAPPROVED # [UNAPPROVED, APPROVED, REJECTED] + print (' - [updateRTPlanDicoms()] Updating beams to : ', config.NAME_TREATMENT_MACHINE) + for beam in ds.BeamSequence: + beam.TreatmentMachineName = config.NAME_TREATMENT_MACHINE + + studyID = str(ds.StudyInstanceUID) + + ds.save_as(str(pathPatientRTPlanFile), write_like_original=True) + + else: + raise Exception(f" - [updateRTPlanDicoms] {pathPatientRTPlanFolder} does not exist!") + + return studyID + +def setEquipmentName(): + examination = connect.get_current('Examination') + examination.EquipmentInfo.SetImagingSystemReference(ImagingSystemName=config.NAME_CT_IMAGING_SYSTEM) + rayStationSave() + +def checkForRTStruct(case): + exists = '_' + config.KEYNAME_PTV_DL1_DVH in dir(case.PatientModel.StructureSets[0].RoiGeometries) + return exists + +########## RS PLAN RELATED ########## + +def getPatientAndPlan(planName, debug=False): + + patient, case, plan, beamset = None, None, None, None + + # Step 1 - Get patient + patient = rayStationSave() + if patient is None: + return patient, case, plan, beamset + case = patient.Cases[0] + + # Step 2 - Get plan + if not checkForRTPlan(case, planName): + return patient, case, plan, beamset + plan = case.TreatmentPlans[planName] + beamset = plan.BeamSets[planName] + + # Step 3 - Return + return patient, case, plan, beamset + +def copyPlan(basePlanName, newPlanName, createArcBeam=True, debug=False): + + # Step 1 - Init + copyPlanStatus = False + + # Step 2 - Boilerplate code for get patient and plans + patient, case, basePlan, _ = getPatientAndPlan(basePlanName) + patient, case, newPlan, _ = getPatientAndPlan(newPlanName) + + if patient is None: + print (' - [ERROR][copyPlan()] No patient loaded') + return copyPlanStatus + + if basePlan is None: + print (' - [ERROR][copyPlan()] No basePlan named {0} found'.format(basePlanName)) + return copyPlanStatus + + # Step 3 - Copy plan + if newPlan is None: + + print (' - [INFO][copyPlan()] Copying plan {0} to {1}'.format(basePlanName, newPlanName)) + case.CopyPlan(PlanName=basePlanName, NewPlanName=newPlanName, KeepBeamSetNames=False) + rayStationSave() + print (' - [INFO][copyPlan()] Copied plan: ', newPlanName) + + if createArcBeam: + arcBeamStatus = makeDualArcBeam(newPlanName) + if not arcBeamStatus: + print (' - [ERROR][copyPlan()] Failed to make dual arc beam') + return copyPlanStatus + rayStationSave() + + else: + print (' - [WARNING][copyPlan()] Plan named {0} already exists'.format(newPlanName)) + + # Step 4 - Debug + if debug: + print (' - [INFO][copyPlan()] Setting current plan: ', newPlanName) + patient.Cases[0].SetCurrent() + patient.Cases[0].TreatmentPlans[newPlanName].SetCurrent() + + copyPlanStatus = True + return copyPlanStatus + +def getTempRTDoseAndRTPlanFolder(pathPatientRTPlan, pathPatientRTDose): + """ + We have to copy the RTDose and RTPlan files to a temporary folder because the RayStation API does not allow an APPROVED RTPlan to have a RTDose uploaded to it! + """ + + import shutil + import tempfile + + # Step 1 - Get files to copy + pathPatientRTPlanFile = [each for each in pathPatientRTPlan.iterdir()][0] + pathPatientRTDoseFile = [each for each in pathPatientRTDose.iterdir()][0] + + tmpDir = Path(pathPatientRTDose).joinpath('tmp') + if not Path(tmpDir).exists(): + Path(tmpDir).mkdir(parents=True, exist_ok=True) + shutil.copy(str(pathPatientRTPlanFile), str(tmpDir)) + shutil.copy(str(pathPatientRTDoseFile), str(tmpDir)) + + return tmpDir + +def checkForRTPlan(case, planName): + + # Step 0 - Init + exists = False + + # Step 1 - Convert to RS naming standard + planNameRSStandard = config.RS_CHECK_PREFIX + str(planName).translate(config.RS_STR_TRANSLATE_OBJ) + if planNameRSStandard in dir(case.TreatmentPlans): + exists = True + + return exists + +def getRTPlanIndex(case, planName): + + # Step 0 - Init + index = -1 + + # Step 1 - Convert to RS naming standard + try: + index = [plan.Name for plan in case.TreatmentPlans].index(planName) + except: + pass + + return index + +def checkForRTDose(beamset): + exists = False + if beamset.FractionDose.DoseValues is not None: + if len(beamset.FractionDose.DoseValues.AlgorithmProperties.DoseAlgorithm) > 0: + exists = True + + return exists + +def applyIsoDoseColors(pathIsoDoseXML, case, beamset): + + try: + if pathIsoDoseXML is not None: + if Path(pathIsoDoseXML).exists(): + doselevels = {dl: int(value) for dl, value in re.findall("(DL[0-9]) ([0-9]+)", beamset.Comment)} + isoman = IsodoseManager(pathIsoDoseXML, case, doselevels) + isoman.map_isodose() + else: + print (' - [copyPlanAndReRunOptimization()] --------------------- Step 3: IsoDose XML does not exist: ', pathIsoDoseXML) + except: + traceback.print_exc() + +def doPlanSanityCheckOld(case, planName): + + """ + 1. Remove rois in objective list that do not have a voume + """ + + # Step 0 - Init + planObj = case.TreatmentPlans[planName] + + # Step 1 - Loop over all rois + for roi in case.PatientModel.RegionsOfInterest: + roiName = roi.Name + volume = getRoiVolume(case, roiName) + + # Step 2 - If volume is less than 1e-6, remove from objective list of plan + if volume < 1e-6: + + # Remove from plan objectives + for roiFunc in planObj.PlanOptimizations[0].Objective.ConstituentFunctions: + if roiFunc.ForRegionOfInterest.Name == roiName: + print ('\n - [doPlanSanityCheck()][{}] Removing roi: {} (vol={:.3f}) from objective list: '.format(planName, roi.Name, volume)) + roiFunc.DeleteFunction() + print (' - Deleted!') + +def doPlanSanityCheck(case, planName): + + """ + 1. Remove rois in objective list that do not have a voume + """ + + # Step 0 - Init + planObj = case.TreatmentPlans[planName] + + # Step 1 - Loop over all rois (in objectives) + for roiFunc in planObj.PlanOptimizations[0].Objective.ConstituentFunctions: + roiName = roiFunc.ForRegionOfInterest.Name + volume = getRoiVolume(case, roiName) + + # Step 2 - If volume is less than 1e-6, remove from objective list of plan + if volume < 1e-6: + + # Remove from plan objectives + print (' - [doPlanSanityCheck()][{}] Removing roi function from objective list: {} (vol={:.3f}) from objective list: '.format(planName, roiName, volume)) + roiFunc.DeleteFunction() + print (' - Deleted!') + +########## BEAM RELATED ########## + +def makeDualArcBeam(planName): + + print (' - [INFO][makeDualArcBeam()] Making dual arc beam for plan: ', planName) + try: + # Step 1 - Get basics + patient = connect.get_current(config.KEYNAME_PATIENT) + plan = patient.Cases[0].TreatmentPlans[planName] + beamset = plan.BeamSets[planName] + + # Step 2 - Delete all existing beams (NOTE: Does that also delete dose ??) + isoCenter = None + while len(beamset.Beams) != 0: + for beam in beamset.Beams: + isoCenter = beam.Isocenter.Position + beamset.DeleteBeam(BeamName=beam.Name) + print (' - [INFO][makeDualArcBeam()] isoCenter: ', isoCenter) + + # Step 3 - Create new beam + if isoCenter is None: + return False + + beamset.CreateDefaultIsocenterData(Position=isoCenter) + beam = beamset.CreateArcBeam(Name="01.01", Description="1 arc 178-182" + , GantryAngle=178, ArcStopGantryAngle=182, ArcRotationDirection="CounterClockwise" + , BeamQualityId="6" + , IsocenterData=beamset.CreateDefaultIsocenterData(Position=isoCenter) + , CouchRotationAngle=0, CouchPitchAngle=0, CouchRollAngle=0, CollimatorAngle=20 + ) + beam.SetBolus(BolusName="") + beam.SetDoseSpecificationPoint(Name='DSP') + + # Step 4 - Settings for dual arc beam + plan.PlanOptimizations[0].OptimizationParameters.TreatmentSetupSettings[0].BeamSettings[0].ArcConversionPropertiesPerBeam.EditArcBasedBeamOptimizationSettings(CreateDualArcs=True + , FinalGantrySpacing=2, MaxArcDeliveryTime=90, BurstGantrySpacing=None, MaxArcMU=None + ) + except: + traceback.print_exc() + return False + + return True + +########## Objective RELATED ########## + +def getObjectivesFromPlan(plan, beamset): + + objective = plan.PlanOptimizations[plan.BeamSets.IndexOf(beamset)].Objective + if objective is not None: + objectives = objective.ConstituentFunctions + else: + objectives = [] + + return objectives + +def getObjectivesFromPath(plan, beamset, pathObjectives): + + templateManager = ObjectiveTemplateManager(plan, beamset) + templateManager.parse_xml(str(pathObjectives)) + objectives = templateManager.objectives + + return objectives + +def resetObjectives(plan, beamset): + + try: + plan.PlanOptimizations[plan.BeamSets.IndexOf(beamset)].ClearConstituentFunctions() # plan.PlanOptimizations[0].Objective.ConstituentFunctions[0].DeleteFunction() + constraintList = list(plan.PlanOptimizations[plan.BeamSets.IndexOf(beamset)].Constraints) + for constraint in constraintList: + constraint.DeleteFunction() + + return True + + except: + traceback.print_exc() + + return False + +def uploadObjectivesToRS(plan, beamset, objectivesFromPath): + + objectivesUploadStatus = False + print ('\n - [uploadObjectivesToRS()] Uploading objectives to RS ...') + + try: + # Step 1 - Reset objectives + resetStatus = resetObjectives(plan, beamset) + if not resetStatus: + print (' - [ERROR][uploadObjectivesToRS()] Could not reset objectives!') + return objectivesUploadStatus + + # Step 2 - Upload objectives + for index, objective in enumerate(objectivesFromPath): + try: + objective.apply() + # print (f' - [uploadObjectivesToRS()] roi: {objective.roi_name}, fType: {objective.function_type}, weight: {objective.weight}') + except: + traceback.print_exc() + + objectivesUploadStatus = True + + except: + traceback.print_exc() + + print (' - [uploadObjectivesToRS()] Uploaded objectives to RS: ', objectivesUploadStatus) + return objectivesUploadStatus + +########## Clinical Goals RELATED ########## + +def getV95ForROI(case, beamset, roiName): + + v95 = None + try: + v95 = case.GetClinicalGoalValue(beamset, roiName, 'D95%') + except: + traceback.print_exc() + + return v95 + +########## Optimization RELATED ########## + +def optimizePlan(planName, count=4, reset=True, pathIsoDoseXML=None): + + optimizeStatus = False + objectiveValues = [] + try: + # Step 1 - Get plan and beamset + patient = rayStationSave() + case = patient.Cases[0] + plan = case.TreatmentPlans[planName] + beamset = case.TreatmentPlans[planName].BeamSets[planName] + beamSetIndex = plan.BeamSets.IndexOf(beamset) + + # Step 2 - Reset existing optimization + if reset: + plan.PlanOptimizations[beamSetIndex].ResetOptimization() + print ('\n\n - [optimizePlan()][Patient={}][Plan={}] Optimization has been reset ...'.format(getPatientIdentifier(patient), planName)) + else: + print ('\n\n - [optimizePlan()][Patient={}][Plan={}] Optimization has not been reset ...'.format(getPatientIdentifier(patient), planName)) + if plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization is not None: + objectiveValue = plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization.ObjectiveValues[-1] # [TODO: range = (0.36,?)] + print (' - [optimizePlan()][Patient={}][Plan={}] Previous objective {:.4f}'.format(getPatientIdentifier(patient), planName, objectiveValue)) + _ = rayStationSave() + + # Step 3 - Run optimization + times = [] + for runID in range(count): + t0 = time.time() + print (' - [optimizePlan()][Patient={}][Plan={}] Running optimization step {}/{} ... '.format(getPatientIdentifier(patient), planName, runID+1, count)) + plan.PlanOptimizations[beamSetIndex].RunOptimization() + times.append(time.time() - t0) + try: + objectiveValue = plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization.ObjectiveValues[-1] # [TODO: range = (0.36,?)] + print (' --- [optimizePlan()] Optimization step {}/{} took {:.2f} seconds with mean objective: {:.4f}'.format(runID+1, count, times[-1], objectiveValue)) + objectiveValues.append(objectiveValue) + except: + traceback.print_exc() + print (' - [optimizePlan()] Optimization took total {:.2f} seconds'.format(np.sum(times))) + + if runID == count-1: + optimizeStatus = True + + if optimizeStatus: + applyIsoDoseColors(pathIsoDoseXML, case, beamset) + else: + print (' - [optimizePlan()] Full optimization failed, not applying isodose colors') + + except: + traceback.print_exc() + + return optimizeStatus, objectiveValues + +########## RS ROI RELATED ########## + +def checkOARDuplicateStatus(case, verbose=False): + + duplicateStatus = {} + for oar in config.OARS: + duplicateStatus[oar] = False + if oar == config.KEYNAME_CAVITY_ORAL: + oarDuplicate = config.KEYNAME_ORAL_CAVITY + config.KEY_AUTOCONTOUR_SUFFIX + elif oar == config.KEYNAME_ESOPHAGUS_S: + oarDuplicate = config.KEYNAME_ESOPHAGUS + config.KEY_AUTOCONTOUR_SUFFIX + else: + oarDuplicate = oar + config.KEY_AUTOCONTOUR_SUFFIX + + if config.RS_CHECK_PREFIX + oarDuplicate.translate(config.RS_STR_TRANSLATE_OBJ) in dir(case.PatientModel.StructureSets[0].RoiGeometries): + duplicateStatus[oar] = True + case.PatientModel.RegionsOfInterest[oarDuplicate].Color = config.OAR_DUPLICATE_COLOR_RGB_STRING # ["128, 0, 64", "Purple"] + else: + if verbose: print ('No duplicate found for', oar) + + return duplicateStatus + +def checkROIExists(case, roiName): + # [roi.Name for roi in case.PatientModel.RegionsOfInterest] + exists = False + + roiNameCopy = copy.deepcopy(roiName).replace('-(', '-') # 'Parotid_L-(CTV_DL1+3mm)' + roiNameRSStandard = config.RS_CHECK_PREFIX + roiNameCopy.translate(config.RS_STR_TRANSLATE_OBJ) + roiNameRSStandard = roiNameRSStandard.replace('___', '_') + + if roiNameRSStandard in dir(case.PatientModel.StructureSets[0].RoiGeometries): + exists = True + + return exists + +def getRoiVolume(case, roiName): + + volume = -1 + + try: + if checkROIExists(case, roiName): + roiObj = case.PatientModel.StructureSets[0].RoiGeometries[roiName] + if roiObj.HasContours(): + volume = roiObj.GetRoiVolume() + else: + print (f'\n - [getRoiVolume()] {roiName} does not exist in case: {case.CaseName}!') + + except Exception as e: + print (e) + + return volume + +# important function 1 (for project) +def doROIAlgebraForAutoContours(case): + + try: + patientObj = connect.get_current(config.KEYNAME_PATIENT) + patientID = patientObj.PatientID + except: + patientID = -1 + traceback.print_exc() + + def getMarginSettings(distInCm): + return { 'Type': "Expand", 'Superior': distInCm, 'Inferior': distInCm, 'Anterior': distInCm, 'Posterior': distInCm, 'Right': distInCm, 'Left': distInCm } + + try: + roiType = "Control" + + # For each ROI, create a new ROI with a 0.3cm margin + if 1: + params = [ + { + 'roiNameNew': config.KEYNAME_BRAINSTEM + config.KEY_3MM_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'Brainstem+3 (1)' + , 'expARois': [config.KEYNAME_BRAINSTEM + config.KEY_AUTOCONTOUR_SUFFIX] # 'Brainstem (1)' + , 'expAMarginSettings': getMarginSettings(0.3) + , 'expBRois': [] + , 'expBMarginSettings': getMarginSettings(0) + } + ,{ + 'roiNameNew': config.KEYNAME_SPINALCORD + config.KEY_3MM_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'SpinalCord+3 (1)' + , 'expARois': [config.KEYNAME_SPINALCORD + config.KEY_AUTOCONTOUR_SUFFIX] #'SpinalCord (1)' + , 'expAMarginSettings': getMarginSettings(0.3) + , 'expBRois': [] + , 'expBMarginSettings': getMarginSettings(0) + } + ] + + for param in params: + try: + roiName = param['expARois'][0] + roiNameNew = param['roiNameNew'] + if checkROIExists(case, roiName) and not checkROIExists(case, roiNameNew): + case.PatientModel.CreateRoi(Name=roiNameNew, Color="128, 0, 64", Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + case.PatientModel.RegionsOfInterest[roiNameNew].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': param['expARois'], 'MarginSettings': param['expAMarginSettings']} + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': param['expBRois'], 'MarginSettings': param['expBMarginSettings']} + , ResultOperation="None", ResultMarginSettings=getMarginSettings(0) + ) + case.PatientModel.RegionsOfInterest[roiNameNew].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations['CT 1'], Algorithm="Auto") + else: + print (f' - [doROIAlgebraForAutoContours] {roiName}:{checkROIExists(case, roiName)} and {roiNameNew}:{checkROIExists(case, roiNameNew)}') + + except: + traceback.print_exc() + + # For each ROI, compare the ROI to PTV_DL1_DVH+0.5cm + if 1: + params = [ + { + 'roiNameNew': config.KEYNAME_PAROTID_L + config.KEY_OBJ_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'Parotid_L_obj (1)' + , 'expARois': [config.KEYNAME_PAROTID_L + config.KEY_AUTOCONTOUR_SUFFIX] #'Parotid_L (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.5) + } + ,{ + 'roiNameNew': config.KEYNAME_PAROTID_R + config.KEY_OBJ_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'Parotid_R_obj (1)' + , 'expARois': [config.KEYNAME_PAROTID_R + config.KEY_AUTOCONTOUR_SUFFIX] #'Parotid_R (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.5) + } + ,{ + 'roiNameNew': config.KEYNAME_ORAL_CAVITY + config.KEY_OBJ_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'Oral_Cavity_obj (1)' + , 'expARois': [config.KEYNAME_ORAL_CAVITY + config.KEY_AUTOCONTOUR_SUFFIX] # 'Oral_Cavity (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.5) + } + , { + 'roiNameNew': config.KEYNAME_SUBMAND_L_OBJ + config.KEY_AUTOCONTOUR_SUFFIX # 'Submand_L_obj (1)' + , 'expARois': [config.KEYNAME_GLND_SUBMAND_L + config.KEY_AUTOCONTOUR_SUFFIX] # 'Glnd_Submand_L (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.5) + } + , { + 'roiNameNew': config.KEYNAME_SUBMAND_R_OBJ + config.KEY_AUTOCONTOUR_SUFFIX # 'Submand_R_obj (1)' + , 'expARois': [config.KEYNAME_GLND_SUBMAND_R + config.KEY_AUTOCONTOUR_SUFFIX] # 'Glnd_Submand_R (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.5) + } + , { + 'roiNameNew': config.KEYNAME_MANDIBLE_PTV + config.KEY_AUTOCONTOUR_SUFFIX # 'Bone_Mandible-PTV_DL1 (1)' + , 'expARois': [config.KEYNAME_MANDIBLE + config.KEY_AUTOCONTOUR_SUFFIX] # 'Glnd_Submand_R (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_PTV_DL1_DVH] #'PTV_DL1_DVH' + , 'expBMarginSettings': getMarginSettings(0.0) + } + ] + + # For params[-1] i.e. Bone_Mandible-PTV_DL1 + if 1: + if patientID in ['HCAI-Dose-x5']: + print (' - [doROIAlgebraForAutoContours] For Bone_Mandible-PTV_DL1 doing getMarginSettings(0.5) for patient: ', patientID) + params[-1]['expBMarginSettings'] = getMarginSettings(0.5) + + for param in params: + try: + roiNameNew = param['roiNameNew'] + roiName = param['expARois'][0] + roiNameRef = param['expBRois'][0] + if checkROIExists(case, roiName) and checkROIExists(case, roiNameRef) and not checkROIExists(case, roiNameNew): + case.PatientModel.CreateRoi(Name=roiNameNew, Color="Red", Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + case.PatientModel.RegionsOfInterest[roiNameNew].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': param['expARois'], 'MarginSettings': param['expAMarginSettings'] } + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': param['expBRois'], 'MarginSettings': param['expBMarginSettings']} + , ResultOperation="Subtraction", ResultMarginSettings=getMarginSettings(0) + ) + case.PatientModel.RegionsOfInterest[roiNameNew].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations['CT 1'], Algorithm="Auto") + else: + print (f' - [doROIAlgebraForAutoContours] {roiName}:{checkROIExists(case, roiName)} and {roiNameNew}:{checkROIExists(case, roiNameNew)} and {roiNameRef}:{checkROIExists(case, roiNameRef)}') + + except: + traceback.print_exc() + + # For swallowing muscles + if 1: + try: + roiNameNew = config.KEYNAME_SWAL_COMP + config.KEY_AUTOCONTOUR_SUFFIX # 'Swal_Comp (1)' + if not checkROIExists(case, roiNameNew): + roiNew = case.PatientModel.CreateRoi(Name=roiNameNew, Color=config.OAR_DUPLICATE_COLOR_RGB_STRING, Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + roiName1 = config.KEYNAME_MUSC_CONSTRICT_I + roiName2 = config.KEYNAME_MUSC_CONSTRICT_M + roiName3 = config.KEYNAME_MUSC_CONSTRICT_S + roiName4 = config.KEYNAME_CRICO + roiName5 = config.KEYNAME_LARYNX_SG + config.KEY_AUTOCONTOUR_SUFFIX # 'Larynx_SG (1)' + roiName6 = config.KEYNAME_GLOTTIC_AREA + + sourceRoiNamesPotential = [roiName1, roiName2, roiName3, roiName4, roiName5, roiName6] + sourceRoiNames = [] + for sourceRoiName in sourceRoiNamesPotential: + if checkROIExists(case, sourceRoiName): + sourceRoiNames.append(sourceRoiName) + else: + print (f' - [doROIAlgebraForAutoContours] {sourceRoiName} not available!') + + if len(sourceRoiNames): + roiNew.SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': sourceRoiNames, 'MarginSettings': getMarginSettings(0)} + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': [], 'MarginSettings': getMarginSettings(0)} + , ResultOperation="None", ResultMarginSettings=getMarginSettings(0) + ) + roiNew.UpdateDerivedGeometry(Examination=case.Examinations['CT 1'], Algorithm="Auto") + case.PatientModel.RegionsOfInterest[roiNameNew].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations['CT 1'], Algorithm="Auto") + + else: + print (f' - [doROIAlgebraForAutoContours] {roiName1}:{checkROIExists(case, roiName1)} and {roiName2}:{checkROIExists(case, roiName2)} and {roiName3}:{checkROIExists(case, roiName3)} and {roiName4}:{checkROIExists(case, roiName4)} and {roiName5}:{checkROIExists(case, roiName5)} and {roiName6}:{checkROIExists(case, roiName6)}') + else: + print (f' - [doROIAlgebraForAutoContours] {roiNameNew}:{checkROIExists(case, roiNameNew)}') + + roiNameNewObj = config.KEYNAME_SWAL_OBJ + config.KEY_AUTOCONTOUR_SUFFIX # 'Swal_obj (1)' + if checkROIExists(case, roiNameNew) and not checkROIExists(case, roiNameNewObj): + case.PatientModel.CreateRoi(Name=roiNameNewObj, Color=config.OAR_DUPLICATE_COLOR_RGB_STRING, Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + + if checkROIExists(case, config.KEYNAME_PTV_DL2_DVH): + case.PatientModel.RegionsOfInterest[roiNameNewObj].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': [config.KEYNAME_SWAL_COMP + config.KEY_AUTOCONTOUR_SUFFIX], 'MarginSettings': getMarginSettings(0)} + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': [config.KEYNAME_PTV_DL1_DVH, config.KEYNAME_PTV_DL2_DVH], 'MarginSettings': getMarginSettings(0.5)} + , ResultOperation="Subtraction", ResultMarginSettings=getMarginSettings(0) + ) + else: + case.PatientModel.RegionsOfInterest[roiNameNewObj].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': [config.KEYNAME_SWAL_COMP + config.KEY_AUTOCONTOUR_SUFFIX], 'MarginSettings': getMarginSettings(0)} + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': [config.KEYNAME_PTV_DL1_DVH], 'MarginSettings': getMarginSettings(0.5)} + , ResultOperation="Subtraction", ResultMarginSettings=getMarginSettings(0) + ) + case.PatientModel.RegionsOfInterest[roiNameNewObj].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNewObj].UpdateDerivedGeometry(Examination=case.Examinations['CT 1'], Algorithm="Auto") + else: + print (f' - [doROIAlgebraForAutoContours] {roiNameNew}:{checkROIExists(case, roiNameNew)} and {roiNameNewObj}:{checkROIExists(case, roiNameNewObj)}') + except: + traceback.print_exc() + + + except: + traceback.print_exc() + +def doROIAlgebraForProtonAutoContours(case): + """ + 1. opt_CTV_L, opt_CTV_R (depends on parotid L/R) + - Box_L = min_z(Parotid_L) --> min_z(CTV_DL1) + - Box_R = min_z(Parotid_R) --> min_z(CTV_DL1) + * opt_CTV_L = CTV_DL1 - (Box_R) + * opt_CTV_R = CTV_DL1 - (Box_L) + 2. _obj like rois + - Oral_Cavity-(CTV_DL1+0.3cm) + + NOTE: This is NOT a force operation (i.e. does not do anything if the roi already exists) + """ + + def getMarginSettings(distInCm): + return { 'Type': "Expand", 'Superior': distInCm, 'Inferior': distInCm, 'Anterior': distInCm, 'Posterior': distInCm, 'Right': distInCm, 'Left': distInCm } + + try: + roiType = "Control" + examinationName = case.Examinations[0].Name + + # For a ROI, compare the ROI to CTV_DL1+0.3cm + if 1: + params = [ + { + 'roiNameNew': config.KEYNAME_PAROTID_L + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX # 'Parotid_L-(CTV_DL1+3mm) (1)' + , 'expARois': [config.KEYNAME_PAROTID_L + config.KEY_AUTOCONTOUR_SUFFIX] #'Parotid_L (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_ROI_CTV_DL1] # 'CTV_DL1' + , 'expBMarginSettings': getMarginSettings(0.3) + } + , { + 'roiNameNew': config.KEYNAME_PAROTID_R + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX #'Parotid_R-(CTV_DL1+3mm) (1)' + , 'expARois': [config.KEYNAME_PAROTID_R + config.KEY_AUTOCONTOUR_SUFFIX] #'Parotid_R (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_ROI_CTV_DL1] # 'CTV_DL1' + , 'expBMarginSettings': getMarginSettings(0.3) + } + , { + 'roiNameNew': config.KEYNAME_ORAL_CAVITY + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX # Oral_Cavity-(CTV_DL1+3mm) (1) + , 'expARois': [config.KEYNAME_ORAL_CAVITY + config.KEY_AUTOCONTOUR_SUFFIX] # 'Oral_Cavity (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_ROI_CTV_DL1] # 'CTV_DL1' + , 'expBMarginSettings': getMarginSettings(0.3) + } + , { + 'roiNameNew': config.KEYNAME_GLND_SUBMAND_L + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX # 'Submand_L_obj-(CTV_DL1+3mm) (1)' + , 'expARois': [config.KEYNAME_GLND_SUBMAND_L + config.KEY_AUTOCONTOUR_SUFFIX] # 'Glnd_Submand_L (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_ROI_CTV_DL1] # 'CTV_DL1' + , 'expBMarginSettings': getMarginSettings(0.3) + } + , { + 'roiNameNew': config.KEYNAME_GLND_SUBMAND_R + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX # 'Submand_R_obj-(CTV_DL1+3mm) (1)' + , 'expARois': [config.KEYNAME_GLND_SUBMAND_R + config.KEY_AUTOCONTOUR_SUFFIX] # 'Glnd_Submand_R (1)' + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': [config.KEYNAME_ROI_CTV_DL1] # 'CTV_DL1' + , 'expBMarginSettings': getMarginSettings(0.3) + } + ] + + for param in params: + try: + roiNameNew = param['roiNameNew'] + roiName = param['expARois'][0] + roiNameRef = param['expBRois'][0] + if checkROIExists(case, roiName) and checkROIExists(case, roiNameRef) and getRoiVolume(case, roiNameNew) <= 0.0: + if not checkROIExists(case, roiNameNew): + case.PatientModel.CreateRoi(Name=roiNameNew, Color="Red", Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + case.PatientModel.RegionsOfInterest[roiNameNew].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': param['expARois'], 'MarginSettings': param['expAMarginSettings'] } + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': param['expBRois'], 'MarginSettings': param['expBMarginSettings']} + , ResultOperation="Subtraction", ResultMarginSettings=getMarginSettings(0) + ) + case.PatientModel.RegionsOfInterest[roiNameNew].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations[0], Algorithm="Auto") + assert getRoiVolume(case, roiNameNew) > 0.0, f' - [doROIAlgebraForProtonAutoContours] No volume for {roiNameNew}:{checkROIExists(case, roiNameNew)}' + else: + print (f' -- [doROIAlgebraForProtonAutoContours] {roiName}:{checkROIExists(case, roiName)} and {roiNameRef}:{checkROIExists(case, roiNameRef)} and {roiNameNew}:{checkROIExists(case, roiNameNew), getRoiVolume(case, roiNameNew)}') + + except: + print (f' - [doROIAlgebraForProtonAutoContours] {roiName}:{checkROIExists(case, roiName)} and {roiNameNew}:{checkROIExists(case, roiNameNew)} and {roiNameRef}:{checkROIExists(case, roiNameRef)}') + traceback.print_exc() + + # For Mid_structures + # (esophagus (1) + trachea + larynx_sg (1) + glottic_area) - CTV_DL1+3mm = Mid_Structures-(CTV_DL1+3mm) (1) + if 1: + try: + roiNameNew = config.KEYNAME_ROI_MID_STRUCTURES + config.KEYNAME_ROI_CTV_DL1_3MM_AS_SUFFIX + config.KEY_AUTOCONTOUR_SUFFIX # 'Mid_Structures-(CTV_DL1+3mm) (1)' + if getRoiVolume(case, roiNameNew) <= 0.0: + if not checkROIExists(case, roiNameNew): + case.PatientModel.CreateRoi(Name=roiNameNew, Color=config.OAR_DUPLICATE_COLOR_RGB_STRING, Type=roiType, TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + roiName1 = config.KEYNAME_ESOPHAGUS + config.KEY_AUTOCONTOUR_SUFFIX # 'Esophagus (1)' + roiName2 = config.KEYNAME_TRACHEA + roiName3 = config.KEYNAME_LARYNX_SG + config.KEY_AUTOCONTOUR_SUFFIX # 'Larynx_SG (1)' + roiName4 = config.KEYNAME_GLOTTIC_AREA + + sourceRoiNamesPotential = [roiName1, roiName2, roiName3, roiName4] + sourceRoiNames = [] + for sourceRoiName in sourceRoiNamesPotential: + if checkROIExists(case, sourceRoiName): + sourceRoiNames.append(sourceRoiName) + else: + print (f' - [doROIAlgebraForProtonAutoContours] {sourceRoiName} not available!') + + if len(sourceRoiNames): + case.PatientModel.RegionsOfInterest[roiNameNew].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': sourceRoiNames, 'MarginSettings': getMarginSettings(0)} + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': [config.KEYNAME_ROI_CTV_DL1], 'MarginSettings': getMarginSettings(0.3)} + , ResultOperation="Subtraction", ResultMarginSettings=getMarginSettings(0) + ) + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations[0], Algorithm="Auto") + case.PatientModel.RegionsOfInterest[roiNameNew].Color = config.OAROBJ_DUPLICATE_COLOR_RGB_STRING + case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=case.Examinations[0], Algorithm="Auto") + assert getRoiVolume(case, roiNameNew) > 0.0, f' - [doROIAlgebraForProtonAutoContours] No volume for {roiNameNew}:{checkROIExists(case, roiNameNew)}' + + else: + print (f' - [doROIAlgebraForAutoContours] {roiName1}:{checkROIExists(case, roiName1)} and {roiName2}:{checkROIExists(case, roiName2)} and {roiName3}:{checkROIExists(case, roiName3)} and {roiName4}:{checkROIExists(case, roiName4)}') + else: + print (f' - [doROIAlgebraForProtonAutoContours] {roiNameNew}:{checkROIExists(case, roiNameNew)}, volume={getRoiVolume(case, roiNameNew)}') + + except: + print (f' - [doROIAlgebraForProtonAutoContours] {roiName1}:{checkROIExists(case, roiName1)} and {roiName2}:{checkROIExists(case, roiName2)} and {roiName3}:{checkROIExists(case, roiName3)} and {roiName4}:{checkROIExists(case, roiName4)}') + traceback.print_exc() + + except: + traceback.print_exc() + +def getRoiRootFromXML(pathXMLObj): + + try: + + tree = ElementTree.parse(str(pathXMLObj)) + root = tree.getroot() + if root is None: + print(f' - [updateKNOXMLForAutoContouring()] {config.KEY_XML_ROOT_NAME} does not exist') + return tree, None + + subRoot = root.find(config.KEY_XML_SUBROOT_NAME) + if subRoot is None: + print(f' - [updateKNOXMLForAutoContouring()] {config.KEY_XML_SUBROOT_NAME} does not exist') + return tree, None + + return tree, subRoot + + except: + traceback.print_exc() + + return tree, None + +# important function 2 (for project) +def updateKNOXMLForAutoContours(pathInitialObj, pathPatientObj, potentialRoisToRenameInAuto): + + # Step 1 - check if OG KNO.xml exists + pathCSAutoObj = None + if not Path(pathInitialObj).exists(): + print (f' - [updateKNOXMLForAutoContouring()] Initial objectives XML file not found at {pathInitialObj}') + return None + if not Path(pathPatientObj).exists(): + print (f' - [updateKNOXMLForAutoContouring()] Patient-Solution XML file not found at {pathPatientObj}') + return None + + # Step 2 - Create a list of ROI names to replace + finalRoisToRenameInAuto = [] + print (f'\n - [updateKNOXMLForAutoContouring()] POTENTIALLY renaming these ROIs in auto xml file: {potentialRoisToRenameInAuto}') + + # Step 3 - Read pathKNOPatientObj and check if it contains roi from potentialRoisToRenameInAuto + _, patientObjRoiRoot = getRoiRootFromXML(pathPatientObj) + for roiEl in patientObjRoiRoot.getchildren(): + try: + if roiEl.tag == config.KEY_XML_ROI: + if roiEl.get(config.KEY_XML_NAME) in potentialRoisToRenameInAuto: + finalRoisToRenameInAuto.append(roiEl.get(config.KEY_XML_NAME)) + except: + traceback.print_exc() + print (f' - [updateKNOXMLForAutoContouring()] FINALLY renaming these ROIs in auto xml file: {finalRoisToRenameInAuto}') + + # Step 4 - Rename rois from finalRoisToRenameInAuto in pathKNOCSObj + initialObjTree, initialObjRoiRoot = getRoiRootFromXML(pathInitialObj) + for roiEle in initialObjRoiRoot.getchildren(): + try: + + if roiEle.tag == config.KEY_XML_ROI: + roiElName = roiEle.get(config.KEY_XML_NAME) + # print (f' - [updateKNOXMLForAutoContouring()] {roiElName} in finalRoisToRenameInAuto = { roiEle.get(config.KEY_XML_NAME) in finalRoisToRenameInAuto} ') + if roiElName in finalRoisToRenameInAuto: + roiEle.set(config.KEY_XML_NAME, roiElName + config.KEY_AUTOCONTOUR_SUFFIX) + except: + traceback.print_exc() + + # Step 4 - Save the XML file + pathAutoObj = Path(pathInitialObj).parent.absolute().joinpath(Path(pathInitialObj).stem + config.KEY_AUTOCONTOUR_SUFFIX + Path(pathInitialObj).suffix) + initialObjTree.write(str(pathAutoObj)) + + return pathAutoObj + +########################################################################################## +# FRANKS CODE # +########################################################################################## + +# https://git.lumc.nl/fjwmdankers/rs-batch-dvh-parameters/functions_dvh_parameters.py +def read_dvhparamlist_csv_or_txt(csv_path, csv_delimiter): + # reads roi/dvh parameters from a csv/txt file + # + # Input data in csv should be formatted such that: + # [roiname1];[dvh param 1];[dvh param 2][dvh param 3] + # [roiname2];[dvh param 1] + # + # Notes on the DVH param notation: + # "Volume" must have no output unit (cc is assumed) + # "Dmax (Gy)", "Dmin (Gy)", "Dmean (Gy)" must have an output unit (cGy/Gy) + # relative doses (input or output) should also specify the doselevel (e.g., "D2cc (%DL1)", "V95%DL1 (cc)", "CI95%DL1 (RTOG)") + # + # Output of this functions looks like this for example: + # rois_and_dvhparams = { + # "CTV_DL2_DVH": ["V99%DL2 (%)","V99%DL2 (cc)","V20Gy (cc)","V2000cGy (%)","Volume"], + # "CTV_DL1_DVH": ["D2cc (%DL2)","D90% (%DL1)","D90% (cGy)","D90% (Gy)", "Dmax (cGy)", "Dmean (Gy)", "Dmin (%DL1)"], + # "PTV_DL1_DVH": ["Volume", "V95%DL1 (%)", "CI95%DL1 (Riet)", "CI95%DL1 (RTOG)", "CI95%DL1 (RS)", "HI95%"] + # } + + # open file + csv = open(csv_path, 'r') + + # loop as long as there are new lines in the csv + count = 0 + rois_and_dvhparams = {} + while True: + # read line, check if we're done, and increase counter + line = csv.readline() + if not line: + break + count += 1 + + # some csv have encodings that lead to entry characters at the first line + line = line.replace('','') + line = line.replace('\n','') + + # process the line + rowlist = line.split(csv_delimiter) + + # remove empty entries (e.g., due to trailing delimiters) + rowlist = [x for x in rowlist if str(x) != ''] + + # save to dictionary + if len(rowlist) > 0: # only add if the row is not empty, e.g., there might be empty rows in excel + if rowlist[0] not in rois_and_dvhparams: + rois_and_dvhparams[rowlist[0]] = rowlist[1:] + else: + rois_and_dvhparams[rowlist[0]] = rois_and_dvhparams[rowlist[0]] + rowlist[1:] + + return(rois_and_dvhparams) + +def process_dvhparam(plan, doselevels, dose, roi, dvhparam_label, verbose=False): + + # dvhparam not recognized, return empty string (leads to empty entry in csv) + dvhparam_quantity, dvhparam_unit, dvhparam_input_value, dvhparam_input_unit, dvhparam_untangle_status = untangle_dvhparam_string(dvhparam_label, verbose=verbose) + + if dvhparam_untangle_status: + dvhparam_value = calc_dvhparam(plan, doselevels, dose, roi, dvhparam_label, dvhparam_quantity, dvhparam_unit, dvhparam_input_value, dvhparam_input_unit, verbose) + if verbose: print(f"\t\t\t{round(dvhparam_value,5)}") + else: + # dvhparam label untangling failed + dvhparam_value = '' + + return(dvhparam_value) + +def calc_dvhparam(plan, doselevels, dose, roi, dvhparam_label, dvhparam_quantity, dvhparam_unit, dvhparam_input_value, dvhparam_input_unit, verbose=False): + # TODO add more parameter processing options + + try: + dvhparam_value = '' + exam = connect.get_current("Examination") + case = connect.get_current("Case") + + # derive dvh parameter value based on the desired combinations of input/output units etc + if dvhparam_quantity == 'V': + if dvhparam_label == 'Volume': + # volume = dose.GetDoseGridRoi(RoiName=roi).RoiVolumeDistribution.TotalVolume # based on plan/fraction dose (this is what dose statistics table also shows, and roi properties is close to this) + # beamset = plan.BeamSets[0] + volume = case.PatientModel.StructureSets[exam.Name].RoiGeometries[roi].GetRoiVolume() # based on structureset (this value is typically slightly larger than what RS shows in several windows, e.g. roi properties, dose statistics) + # volume3 = beamset.GetStructureSet().RoiGeometries[roi].GetRoiVolume() # same result as above + # print("----------------------") + # print(f"volume based on dosegrid: {volume}") + # print(f"volume based on exam: {volume2}") + # print(f"volume based on beamset: {volume3}") + dvhparam_value = volume + elif dvhparam_input_unit in ['Gy', 'cGy', '%DL1', '%DL2', '%DL3', '%DL4', '%DL5', '%DL6']: + # process dvh input value using the dvh input unit + if dvhparam_input_unit == 'Gy': + dvhparam_input_value = dvhparam_input_value*100 + elif dvhparam_input_unit == 'cGy': + pass # we need cGy so nothing has to be done + elif '%DL' in dvhparam_input_unit: + doselevel_ref_idx = int(dvhparam_input_unit[-1])-1 + dvhparam_input_value = dvhparam_input_value / 100 * doselevels[doselevel_ref_idx] + + # get dvh parameter output value + dvhparam_value_rel = dose.GetRelativeVolumeAtDoseValues(RoiName=roi, DoseValues=[dvhparam_input_value])[0] # fraction of total volume + + # prepare for desired output unit + if dvhparam_unit == '%': + dvhparam_value = dvhparam_value_rel * 100 + elif dvhparam_unit == 'cc': + volume = dose.GetDoseGridRoi(RoiName=roi).RoiVolumeDistribution.TotalVolume # based on plan/fraction dose (this is what dose statistics table also shows, and roi properties is close to this) + #volume = case.PatientModel.StructureSets[exam.Name].RoiGeometries['Lung_R'].GetRoiVolume() # based on structureset (this value is typically larger than what RS shows in several windows, e.g. roi properties, dose statistics) + dvhparam_value = dvhparam_value_rel * volume + else: + dvhparam_value = '' + print(f"\t\tcant process this dvhparam_unit yet ({dvhparam_unit})") + else: + print(f"\t\tcant process this dvhparam_input_unit yet ({dvhparam_input_unit})") + elif dvhparam_quantity == 'D': + if 'Dmin' in dvhparam_label or 'Dmax' in dvhparam_label or 'Dmean' in dvhparam_label: + if 'Dmin' in dvhparam_label: + dvhparam_value = dose.GetDoseStatistic(RoiName=roi, DoseType='Min') # equivalent to: dose.GetDoseAtRelativeVolumes(RoiName=roiname, RelativeVolumes=[1])[0] + elif 'Dmax' in dvhparam_label: + dvhparam_value = dose.GetDoseStatistic(RoiName=roi, DoseType='Max') # equivalent to: dose.GetDoseAtRelativeVolumes(RoiName=roiname, RelativeVolumes=[0.00000001/volume])[0] + elif 'Dmean' in dvhparam_label: + dvhparam_value = dose.GetDoseStatistic(RoiName=roi, DoseType='Average') + elif dvhparam_input_unit in ['cc', '%']: + # process dvh input value using the dvh input unit + if dvhparam_input_unit == 'cc': + volume = dose.GetDoseGridRoi(RoiName=roi).RoiVolumeDistribution.TotalVolume # based on plan/fraction dose (this is what dose statistics table also shows, and roi properties is close to this) + #volume = case.PatientModel.StructureSets[exam.Name].RoiGeometries['Lung_R'].GetRoiVolume() # based on structureset (this value is typically larger than what RS shows in several windows, e.g. roi properties + dvhparam_input_value = dvhparam_input_value/volume + else: + dvhparam_input_value = dvhparam_input_value / 100 # needs to be relative between 0 and 1 + + # get dvh parameter output value + dvhparam_value = dose.GetDoseAtRelativeVolumes(RoiName=roi, RelativeVolumes=[dvhparam_input_value])[0] + + # prepare for desired output + if '%DL' in dvhparam_unit: + doselevel_ref_idx = int(dvhparam_unit[-1])-1 + dvhparam_value = dvhparam_value / doselevels[doselevel_ref_idx] * 100 + elif dvhparam_unit == 'Gy': + dvhparam_value = dvhparam_value / 100 + elif dvhparam_unit == 'cGy': + pass # it's already in cGy so nothing has to be done + else: + dvhparam_value = '' + print(f"\t\tcant process this dvhparam_unit yet ({dvhparam_unit})") + elif dvhparam_quantity == 'CI': + # Raystation uses Loman/Scheib definition: + # CI_raystation = TVri / Vri + # CI_rtog = Vri / TV + # CI_riet = TVri2 / (TV * Vri) + # + # with: + # Vri = volume of reference isodose + # TV = target volume (most often the PTV volume) + # TVri = PTV volume covered by the refence isodose + + # find and set the external ROI + # note: the external is used for a bugfix (forgot which one), if it doesnt find the external then we can't calculate the CI at the moment + roi_external = '' + roi_external_options = ['External', 'Body'] #hard-coded list for now, External=Pinnacle era, Body=RayStation era + rois_case = [roi.Name for roi in case.PatientModel.RegionsOfInterest] + for roi_external_option in roi_external_options: + if roi_external_option in rois_case: + roi_external = roi_external_option + print(f"\t\t\tbody contour used for calculation: {roi_external}") + + # process dvh input value to cGy using the dvh input unit + if dvhparam_input_unit == 'Gy': + dvhparam_input_value = dvhparam_input_value*100 + elif dvhparam_input_unit == 'cGy': + pass # we need cGy so nothing has to be done + elif '%DL' in dvhparam_input_unit: + doselevel_ref_idx = int(dvhparam_input_unit[-1])-1 + dvhparam_input_value = dvhparam_input_value / 100 * doselevels[doselevel_ref_idx] + + if roi_external: + # calculate the parameters of the CI formulas (Vri, TV, TVri) + external_volume = dose.GetDoseGridRoi(RoiName=roi_external).RoiVolumeDistribution.TotalVolume + external_volume_covered_by_ref_isodose_relative = dose.GetRelativeVolumeAtDoseValues(RoiName=roi_external, DoseValues=[dvhparam_input_value])[0] + volume_ref_isodose = external_volume_covered_by_ref_isodose_relative * external_volume # using external volume to get the volume ref isodose (was een bugfix ergens voor, voor als contour buiten external zit) + else: + print(f"\t\t\texternal/body ROI not detected, calulated CI without, ~1 prct different (checked for: {', '.join(roi_external_options)})") + roi_ref_temp_name = 'isodose_temp' + roi_ref_temp = case.PatientModel.CreateRoi(Name=roi_ref_temp_name, Color='red', Type='Control') + roi_ref_temp.CreateRoiGeometryFromDose(DoseDistribution=dose, ThresholdLevel=int(dvhparam_input_value)) + volume_ref_isodose = case.PatientModel.StructureSets[exam.Name].RoiGeometries[roi_ref_temp_name].GetRoiVolume() # based on structureset (this value is typically slightly larger than what RS shows in several windows, e.g. roi properties, dose statistics), we use this here so we don't need to update the dose statistics (which is not possible if the machine is deprecated, and potentially if the plan is approved) + case.PatientModel.RegionsOfInterest[roi_ref_temp_name].DeleteRoi() + + target_volume = case.PatientModel.StructureSets[exam.Name].RoiGeometries[roi].GetRoiVolume() # based on structureset (this value is typically slightly larger than what RS shows in several windows, e.g. roi properties, dose statistics) + # target_volume = dose.GetDoseGridRoi(RoiName=roi).RoiVolumeDistribution.TotalVolume # based on plan/fraction dose (this is what dose statistics table also shows, and roi properties is close to this) + target_volume_covered_by_ref_isodose_relative = dose.GetRelativeVolumeAtDoseValues(RoiName=roi, DoseValues=[dvhparam_input_value])[0] + + # calculate the CI itself + if volume_ref_isodose and target_volume: + if dvhparam_unit == "RTOG": + dvhparam_value = (volume_ref_isodose / target_volume) + elif dvhparam_unit == "Riet": + target_volume_covered_by_ref_isodose = target_volume_covered_by_ref_isodose_relative * target_volume + dvhparam_value = ((target_volume_covered_by_ref_isodose ** 2) / (target_volume * volume_ref_isodose)) + elif dvhparam_unit == "RS": + target_volume_covered_by_ref_isodose = target_volume_covered_by_ref_isodose_relative * target_volume + dvhparam_value = target_volume_covered_by_ref_isodose / volume_ref_isodose + else: + print(f"\t\t\tcant calculate CI, either volume_ref_isodose ({volume_ref_isodose}) or roi_volume ({target_volume}) missing") + + elif dvhparam_quantity == 'HI': + # Di%/D(1-i)% + dvhparam_input_value = dvhparam_input_value / 100 + dose_at_parameter_volume = dose.GetDoseAtRelativeVolumes(RoiName=roi, RelativeVolumes=[dvhparam_input_value])[0] + dose_at_remaining_volume = dose.GetDoseAtRelativeVolumes(RoiName=roi, RelativeVolumes=[1.0 - dvhparam_input_value])[0] + + dvhparam_value = dose_at_parameter_volume / dose_at_remaining_volume + + else: + # can't process this dvhparam (yet) + print(f"\t\t - [ERROR] cant process this dvhparam_quantity yet ({dvhparam_quantity})") + except: + print(f"\t\t - [ERROR] cant process this dvhparam_label ({dvhparam_label})") + traceback.print_exc() + + + return(dvhparam_value) + +def untangle_dvhparam_string(dvhparam_label, verbose=False): + output_quantity = '' + output_unit = '' + input_value = '' + input_unit = '' + untangle_status = '' + + # untangle the dvh parameter string using regexp + if verbose: print(f"\t\t{dvhparam_label}") + if dvhparam_label == 'Volume': + output_quantity = 'V' + output_unit = 'cc' + untangle_status = 1 + elif 'Dmin' in dvhparam_label or 'Dmax' in dvhparam_label or 'Dmean' in dvhparam_label: + output_quantity = 'D' + output_unit = re.search('\((.*)\)', dvhparam_label).group(1) # string between brackets () + untangle_status = 1 + elif dvhparam_label[0:1] in ['V', 'D', 'C','H']: + output_quantity = re.findall('([a-zA-Z]*)\d*.*', dvhparam_label)[0] # string till numeric + input_value = re.findall(r"[-+]?\d*\.?\d+", dvhparam_label)[0] # old: r'\d+' does not work for decimals + if output_quantity == 'HI': + input_unit = re.search(input_value + '(.*)', dvhparam_label).group(1) # string after input_value (no space at end) + else: + input_unit = re.search(input_value + '(.*) ', dvhparam_label).group(1) # string after input_value and before space + output_unit = re.search('\((.*)\)', dvhparam_label).group(1) # string between brackets () + input_value = float(input_value) + untangle_status = 1 + + # print + if verbose: + if untangle_status: + print(f"\t\t\toutput_quantity: {output_quantity} input_value: {input_value} input_unit: {input_unit} output_unit: {output_unit}") + else: + print(f"\t\t\tUnknown format for dvhparam_label") + + + return(output_quantity, output_unit, input_value, input_unit, untangle_status) + +def evaluatePlans(pathDVHParams, planNames, planTimes={}, planValues={}, planExtras={}, pathPatient=None, contourType=config.KEYNAME_CONTOUR_CLINICAL, save=True, verbose=False): + + # Step 0 - Initialize + res = {} + + try: + if Path(pathDVHParams).exists(): + + # Step 1 - Get metrics (and other common vars) + rois_and_dvhparams = read_dvhparamlist_csv_or_txt(str(pathDVHParams), ';') + patient = rayStationSave() + case = patient.Cases[0] + exam = case.Examinations[0] + rois_case = [roi.Name for roi in case.PatientModel.RegionsOfInterest] + res = { + config.KEYNAME_PLANS: {planName : {} for planName in planNames} + , config.KEYNAME_PLAN_DEBUGINFO: {planName: { + config.KEYNAME_TIME: planTimes.get(planName, -1) + , config.KEYNAME_OBJ_VALUE: planValues.get(planName, -1) + } for planName in planNames} + , config.KEYNAME_PLAN_EXTRAS: planExtras + } + plans = [ case.TreatmentPlans[planName] if checkForRTPlan(case, planName) else None for planName in planNames ] # check if plan exists + + # Step 2 - Loop over plans + pt_all_plan_all_dvhparams_values = [] + print ('\n\n =================================================================\n\n') + print (' - pathPatient: ', pathPatient) + for planId, plan in enumerate(plans): + try: + + # Step 2.1 - Check if plan exists + if plan is None: + print (' - [evaluatePlans()] Plan: {} does not exist'.format(planNames[planId])) + continue + print ('\n - [evaluatePlans()] --------------------- Plan: {} \n'.format(plan.Name)) + + # Step 2.2 - Check if dose exists + beamset = plan.BeamSets[plan.Name] + validDose = checkForRTDose(beamset) + if validDose: + + dose = plan.TreatmentCourse.TotalDose + dose.UpdateDoseGridStructures() + doselevels_processed = [beamset.Prescription.DosePrescriptions[0].DoseValue] + doselevels_processed = [int(value) for dl, value in re.findall("(DL[0-9]) ([0-9]+)", beamset.Comment)] + + # Step 3 - Loop over metrics + rois = [] # holds per patient/plan all roi names + rois_synonym_hits = [] # holds per patient/plan the roi synonym hit (if roi synonym input was used, and not the first roi name entry was found but a later entry) + headerline = [] # holds the output headerline (ie all roi+dvh parameter labels) (headerline is filled every pt/plan iteration, only written once when output file is first generated) + pt_curplan_all_dvhparams_labels = [] + pt_curplan_all_dvhparams_values = [] # holds per patient all dvh parameters of all the rois (an entire row in the output file) + for i, (roi_input, dvhparams_labels) in enumerate(rois_and_dvhparams.items()): + res[config.KEYNAME_PLANS][plan.Name][roi_input] = {} + if verbose: + print(f"\n\tentry ({i+1}/{len(rois_and_dvhparams)}): {roi_input}") + + try: + # first check for prescribeddose, or doselevels, if not then assume it is a roi (or roi synonym list) + if roi_input == 'prescribeddose#': + prescribed_dose_value = beamset.Prescription.DosePrescriptions[0].DoseValue # assume one beamset, assume one doseprescription + rois.append('Prescribed Dose') + rois_synonym_hits.append('') + pt_curplan_all_dvhparams_labels.append('') + headerline.append('Prescribed Dose') + pt_curplan_all_dvhparams_values.append(str(prescribed_dose_value)) + elif roi_input == 'doselevels#': + rois.append('Doselevels') + rois_synonym_hits.append('') + pt_curplan_all_dvhparams_labels.append('') + headerline.append('Doselevels') + pt_curplan_all_dvhparams_values.append(', '.join([str(x) for x in doselevels_processed])) + else: + # we are dealing with a ROI (by exclusion) + # process synonyms + roi_input = roi_input.replace(', ',',') # 'PTV_DL1_DVH,PTV_DL1' + roi_synonym_list = roi_input.split(',') # ['PTV_DL1_DVH', 'PTV_DL1'] + roi_synonym_master = roi_synonym_list[0] # 'PTV_DL1_DVH' + roi_synonym_hit = '' + + # check if current roi exists + roi_status = 'inexistent' + for roi_synonym in roi_synonym_list: + if roi_synonym not in rois_case: + # roi synonym not found, continue in loop + if verbose: print(f'\t\t{roi_synonym}: {roi_status}') + elif not case.PatientModel.StructureSets[exam.Name].RoiGeometries[roi_synonym].HasContours(): + # roi synonym hit WITHOUT contours, continue in loop + roi_status = 'empty' + roi_synonym_hit = roi_synonym + if verbose: print(f'\t\t{roi_synonym}: {roi_status}') + else: + # roi synonym hit AND contoured, step out + roi_status = 'contoured' + roi_synonym_hit = roi_synonym + if verbose: print(f'\t\t{roi_synonym}: {roi_status}') + break + + # loop over the dvh parameters of this roi + for dvhparam_label in dvhparams_labels: + res[config.KEYNAME_PLANS][plan.Name][roi_input][dvhparam_label] = {} + if not validDose: + dvhparam_value = 'no dose' + elif roi_status == 'contoured': + dvhparam_value = process_dvhparam(plan, doselevels_processed, dose, roi_synonym_hit, dvhparam_label, verbose=verbose) + else: + dvhparam_value = roi_status + res[config.KEYNAME_PLANS][plan.Name][roi_input][dvhparam_label] = dvhparam_value + + # append roi status to list + rois.append(roi_synonym_master) + if roi_synonym is not roi_synonym_master: + # only store synonyms (not the roi_synonym_master (first entry in roi_synonym_list)) + rois_synonym_hits.append(roi_synonym_hit) + else: + rois_synonym_hits.append('') + pt_curplan_all_dvhparams_labels.append(dvhparam_label) + headerline.append(roi_synonym_master + ' ' + dvhparam_label) + pt_curplan_all_dvhparams_values.append(str(dvhparam_value)) + + except: + traceback.print_exc() + print (' - [evaluatePlans()] Error in roi: ', roi_input) + + + # Step 3.99 - Save plan information + pt_all_plan_all_dvhparams_values.append(pt_curplan_all_dvhparams_values) + + else: + print (' - [evaluatePlans()] No RTDose found for plan: ', plan.Name) + + except: + traceback.print_exc() + print (' - [evaluatePlans()] Error in plan: ', plan.Name) + + + # Step 5 - Save + if save: + try: + import json + if pathPatient is not None: + if contourType == config.KEYNAME_CONTOUR_CLINICAL: + pathPlanStats = Path(pathPatient, config.KEY_PLAN_STATS_JSON) + elif contourType == config.KEYNAME_CONTOUR_AUTO: + pathPlanStats = Path(pathPatient, config.KEY_PLAN_STATS_JSON_AUTO) + elif contourType == config.KEYNAME_CONTOUR_ALL: + pathPlanStats = Path(pathPatient, config.KEY_PLAN_STATS_JSON_ALL) + + with open(str(pathPlanStats), 'w') as fp: + json.dump(res, fp, indent=4) + except: + traceback.print_exc() + + # Step 6 - Print + res2 = {} + for planName in res[config.KEYNAME_PLANS]: + res2[planName] = {} + for roiName in res[config.KEYNAME_PLANS][planName]: + for dvhParam in res[config.KEYNAME_PLANS][planName][roiName]: + res2[planName][roiName + ' ({})'.format(dvhParam)] = res[config.KEYNAME_PLANS][planName][roiName][dvhParam] + + import pandas as pd + df = pd.DataFrame.from_dict(res2, orient='index').T + print (df) + + else: + print (' - [evaluatePlans()] DVH params file does not exist: ', pathDVHParams) + + except: + traceback.print_exc() + + + return res + +# rs_objective_template/helpers/condition_validator.py +class ConditionalElementValidator: + + def __init__(self, beamset, manual_selection_mapping=None): + """ Helper class to check elements for conditions. + Returns the element if no condition or condition is met, None otherwise + + Args: + beamset: RayStation beamset object + """ + self.beamset = beamset + self.manual_selection_mapping = manual_selection_mapping + + def is_valid(self, element_tree: ElementTree): + """ Checks ElementTree for conditions set in attributes + + Args: + element_tree (Element): ElementTree to be checked + + Returns: + bool: True if ElementTree passes conditions + """ + validations = [True] + + conditional_fraction_doses = element_tree.get("conditionalFractionDoses") + if conditional_fraction_doses: + validations.append(self._evaluate_fraction_dose(conditional_fraction_doses)) + + conditional_volume_roi = element_tree.get("conditionalVolumeRoi") + if conditional_volume_roi: + validations.append(self._evaluate_roi_volume(conditional_volume_roi, element_tree.get("conditionalVolumeBetween"))) + + conditional_doselevels = element_tree.get("conditionalDoseLevels") + if conditional_doselevels: + validations.append(self._evaluate_doselevels(conditional_doselevels)) + + conditional_doselevel_count = element_tree.get("conditionalDoseLevelCount") + if conditional_doselevel_count: + validations.append(self._evaluate_doselevel_count(conditional_doselevel_count)) + + return all(validations) + + def set_manual_selection_mapping(self, mapping: dict): + self.manual_selection_mapping = mapping + + def _evaluate_fraction_dose(self, conditional_fraction_doses: str): + """ Evaluates 'conditionalFractionDoses'. + conditionalFractionDoses is one or a list of fraction doses separated by '|'. + + Args: + conditional_fraction_doses (str): Conditional fraction doses string separated by '|' + + Returns: + bool: True if check passes + """ + fraction_dose = round(self.beamset.Prescription.PrimaryDosePrescription.DoseValue / self.beamset.FractionationPattern.NumberOfFractions, ndigits=1) + valid_fraction_doses = [float(fx) for fx in conditional_fraction_doses.split("|")] + valid = fraction_dose in valid_fraction_doses + print(f" ** [ConditionalElementValidator._evaluate_fraction_dose()] Fraction dose condition for {fraction_dose} {'meets' if valid else 'does not meet'} condition {valid_fraction_doses}") + return valid + + def _evaluate_roi_volume(self, conditional_roi: str, conditional_volume_range: str): + """ Evaluates 'conditionalVolumeRoi'. + conditionalVolumeRoi is a string with the name of the ROI 'conditionalVolumeBetween' compares the volume to. + + Args: + conditional_roi (str): Roi to compare volume for + conditional_volume_range (str): Volume range string to compare, seperated by '-' + + Returns: + bool: True if check passes + """ + if self.manual_selection_mapping: + conditional_roi = self.manual_selection_mapping.get(conditional_roi, None) + + conditional_volume = [float(v) for v in conditional_volume_range.split("-")] + + structure_set = self.beamset.GetStructureSet() + if conditional_roi not in [roi.OfRoi.Name for roi in structure_set.RoiGeometries]: + return False + roi_volume = round(structure_set.RoiGeometries[conditional_roi].GetRoiVolume(), ndigits=2) + valid = conditional_volume[0] <= roi_volume < conditional_volume[1] + print(f"Roi volume {conditional_roi}({roi_volume}cc) {'meets' if valid else 'does not meet'} condition 'between {conditional_volume}cc'") + return valid + + def _evaluate_doselevels(self, conditional_doselevels: str): + """ Evaluates 'conditionalDoseLevels'. + conditionalDoseLevels is one or a list of doselevels separated by '|'. + + Args: + conditional_doselevels (str): Conditional doselevels string separated by '|' + + Returns: + bool: True if check passes + """ + doselevels = {dl: float(value) for dl, value in re.findall("(DL[0-9]) ([0-9]+)", self.beamset.Comment)} + valid_doselevels = conditional_doselevels.split("|") + valid = any([f"{k} {int(v)}" in valid_doselevels for k, v in doselevels.items()]) + print(f" ** [ConditionalElementValidator._evaluate_doselevels()] Doselevel condition for {doselevels} {'meets' if valid else 'does not meet'} condition {valid_doselevels}") + return valid + + def _evaluate_doselevel_count(self, doselevel_count: int): + """ Evaluates 'conditionalDoseLevelCount'. + conditionalDoseLevelCount is an integer defining how many doselevels must be present. + + Args: + doselevel_count (int): Conditional doselevel count + + Returns: + bool: True if check passes + """ + doselevels = {dl: float(value) for dl, value in re.findall("(DL[0-9]) ([0-9]+)", self.beamset.Comment)} + valid = len(doselevels.keys()) == int(doselevel_count) + print(f" -- [INFO][ConditionalElementValidator._evaluate_doselevel_count()] Doselevel count condition for {doselevels} {'meets' if valid else 'does not meet'} condition {doselevel_count}") + return valid + +# rs_objective_template/models/objective.py +class InvalidObjectiveException(Exception): + pass + +class InvalidDoseLevelException(Exception): + pass + +class Objective(object): + def __new__(cls, plan, beamset, roi: str, optimization_tree: ElementTree, condition_validator: ConditionalElementValidator = None): + """ Objective Factory, returns different Objective object depending on functionType of optimization_tree + + Args: + plan: RayStation plan + beamset: RayStation beamset + roi (str): ROI name to apply objective to + optimization_tree (Element): Optimization XML tree + """ + function_type = optimization_tree.get("functionType") + if function_type == "DoseFallOff": + return ObjectiveDoseFallOff(plan, beamset, roi, optimization_tree, condition_validator) + if function_type in ["MinDose", "MaxDose", "UniformDose"]: + return ObjectiveDose(plan, beamset, roi, optimization_tree, condition_validator) + if function_type in ["MinDvh", "MaxDvh"]: + return ObjectiveDoseVolume(plan, beamset, roi, optimization_tree, condition_validator) + if function_type in ["MaxEud", "MinEud", "UniformEud"]: + return ObjectiveEud(plan, beamset, roi, optimization_tree, condition_validator) + if function_type == "UniformityConstraint": + return ObjectiveUniformity(plan, beamset, roi, optimization_tree, condition_validator) + + raise InvalidObjectiveException(f"'{function_type}' is not a valid FunctionType") + +class ObjectiveBase: + def __init__(self, plan, beamset, roi: str, optimization_tree: ElementTree, condition_validator: ConditionalElementValidator = None): + """ Objective base class, provides all base functionality for Objectives + + Args: + plan: RayStation plan + beamset: RayStation beamset + roi (str): ROI name to apply objective to + optimization_tree (Element): Optimization XML tree + """ + self.plan = plan + self.beamset = beamset + self.ConditionValidator = condition_validator or ConditionalElementValidator(plan, beamset) + # Parse doselevels in beamset comment and put in dict for easy lookup + self.doselevels = {dl: float(value) for dl, value in re.findall("(DL[0-9]) ([0-9]+)", self.beamset.Comment)} + self.roi_name = roi + self.optimization_tree = optimization_tree + self.function_type = self.optimization_tree.get("functionType") + self.is_constraint = self._get_bool(self.optimization_tree.get("isConstraint")) + self.is_robust = self._get_bool(self.optimization_tree.get("isRobust")) + + if self.optimization_tree.get("restrictToBeams") and self.beamset.Modality != "Protons": + raise InvalidObjectiveException("'restrictToBeams' only valid for proton plans...") + self.restrict_to_beams = [ + beam.Name for beam in self.beamset.Beams \ + if beam.Name in self.optimization_tree.get("restrictToBeams").split(',') + ] if self.optimization_tree.get("restrictToBeams") not in [None, "All"] else self.optimization_tree.get("restrictToBeams") or False + + # if self.roi_name == 'Opt_CTV_L': + # print ('\n - [ObjectiveBase()] self.roi_name: ', self.roi_name) + # print (' - [ObjectiveBase()] self.restrict_to_beams: ', self.restrict_to_beams) + # pdb.set_trace() + + # Check parameter tree for conditions and get only valid tree or default, raises exception when None or multiple parameter trees are found + self.parameters_tree = [fp for fp in self.optimization_tree.findall("FunctionParameters") if self.ConditionValidator.is_valid(fp)] + if len(self.parameters_tree) == 2: + self.parameters_tree = [pt for pt in self.parameters_tree if not pt.get("default")] + if len(self.parameters_tree) == 1: + self.parameters_tree = self.parameters_tree[0] + else: + raise InvalidObjectiveException(f"Multiple or no FunctionParameters found for OptimizationFunction '{self.function_type}' in '{self.roi_name}'...") + + if not self.parameters_tree.get("weight"): + raise InvalidObjectiveException(f"No weight specified for '{self.function_type}' in '{self.roi_name}'...") + self.weight = float(self.parameters_tree.get("weight")) + + def _get_doselevel(self, doselevel_tree_name: str): + """ Parses a doselevel tree by name of element (i.e. DoseLevel, LowDoseLevel, HighDoseLevel) + When relativeToDoseLevel attribute is specified, calculates the absolute dose of the objective for the specified dose level or 'Highest' + + Args: + doselevel_tree_name (str): Name of element to be parsed + + Returns: + int: Absolute dose of doselevel element in cGy + """ + doselevel_tree = [dl for dl in self.parameters_tree.findall(doselevel_tree_name) if self.ConditionValidator.is_valid(dl)] + if len(doselevel_tree) == 2: + doselevel_tree = [dl for dl in doselevel_tree if not dl.get("default")] + if len(doselevel_tree) == 1: + doselevel_tree = doselevel_tree[0] + else: + raise InvalidObjectiveException(f"None or multiple DoseLevels found for FunctionParameter '{self.function_type}' in '{self.roi_name}'...") + + relative_to_doselevel = doselevel_tree.get("relativeToDoseLevel", default=False) + if not relative_to_doselevel: + # return int(doselevel_tree.text) + return float(doselevel_tree.text) + + if relative_to_doselevel.lower() == "highest": + relative_to_doselevel = max(self.doselevels, key=self.doselevels.get) + try: + relative_total_dose = self.doselevels[relative_to_doselevel] + except KeyError: + raise InvalidDoseLevelException(f"Relative doselevel '{relative_to_doselevel}' not found!") + + return round(relative_total_dose * (float(doselevel_tree.text)/100)) + + def _get_bool(self, boolstring: str): + """ Parses string to boolean value (wrapper around strtobool), returns False when None + + Args: + boolstring (str): "true", "false", "yes", "no", etc + + Returns: + bool + """ + return bool(strtobool(boolstring)) if boolstring else False + + def _create_optimization_function(self, restrict_to_beam=None): + """ Creates the RayStation optimization function and returns the reference to that function + + Returns: + OptimizationFunction: RayStation optimization function object + """ + # Set default values + restrict_to_beamset = None + restrict_all_beams_individually = False + + if self.restrict_to_beams == "All": + restrict_to_beamset = self.beamset.DicomPlanLabel + restrict_all_beams_individually = True + + if restrict_to_beam: + n = self.beamset.DicomPlanLabel + + # PlanOptimizations index is related to BeamSet index + return self.plan.PlanOptimizations[self.plan.BeamSets.IndexOf(self.beamset)].AddOptimizationFunction( + FunctionType=self.function_type + , RoiName=self.roi_name + , IsConstraint=self.is_constraint + , IsRobust=self.is_robust + , RestrictToBeam=restrict_to_beam + , RestrictToBeamSet=restrict_to_beamset + , RestrictAllBeamsIndividually=restrict_all_beams_individually) + + def _set_function_parameters(self, optimization_function): + """ Sets base function parameters of specified optimization function + + Args: + optimization_function: RayStation optimization function + """ + optimization_function.DoseFunctionParameters.Weight = self.weight + # print ('weight', self.weight) + + # def apply(self): + # """ Start _create_optimization_function and passes reference to _set_function_parameters """ + # optimization_function = self._create_optimization_function() + # self._set_function_parameters(optimization_function) + + def apply(self): + """ Start _create_optimization_function and passes reference to _set_function_parameters """ + self.optimization_function = self._create_optimization_function() + self._set_function_parameters(self.optimization_function) + + def update_weight(self, weight): + self.weight = weight + self.optimization_function.DoseFunctionParameters.Weight = weight + +class ObjectiveDoseFallOff(ObjectiveBase): + def __init__(self, *args, **kwargs): + """ DoseFallOff objective, adds DoseFallOff specific attributes""" + super().__init__(*args, **kwargs) + self.adapt_to_target_doselevels = self._get_bool(self.parameters_tree.get("adaptToTargetDoseLevels")) + self.low_dose_distance = float(self.parameters_tree.get("lowDoseDistance")) + self.high_doselevel = self._get_doselevel("HighDoseLevel") + self.low_doselevel = self._get_doselevel("LowDoseLevel") + + def _set_function_parameters(self, optimization_function): + """ Override to add DoseFallOff specific attributes + + Args: + optimization_function: RayStation optimization function + """ + super()._set_function_parameters(optimization_function) + optimization_function.DoseFunctionParameters.AdaptToTargetDoseLevels = self.adapt_to_target_doselevels + optimization_function.DoseFunctionParameters.LowDoseDistance = self.low_dose_distance + optimization_function.DoseFunctionParameters.HighDoseLevel = self.high_doselevel # in cGy + optimization_function.DoseFunctionParameters.LowDoseLevel = self.low_doselevel # in cGy + +class ObjectiveDose(ObjectiveBase): + def __init__(self, *args, **kwargs): + """ Dose objective, adds Dose specific attributes""" + super().__init__(*args, **kwargs) + self.doselevel = self._get_doselevel("DoseLevel") + + def _set_function_parameters(self, optimization_function): + """ Override to add Dose specific attributes + + Args: + optimization_function: RayStation optimization function + """ + super()._set_function_parameters(optimization_function) + optimization_function.DoseFunctionParameters.DoseLevel = self.doselevel + + def apply(self): + """ Override for applying multiple objectives when `restrictToBeams` is set + Divides the doselevel of the objective by the number of beams in `restrictToBeams` + """ + + # Just run the default apply action if not restricted to individual beams + if not self.restrict_to_beams or self.restrict_to_beams == "All": + super().apply() + return + + # Divide doselevel of function by number of beams function is restricted to. Create a objective function per restricted beam + self.doselevel = self.doselevel / len(self.restrict_to_beams) + for beam in self.restrict_to_beams: + + optimization_function = self._create_optimization_function(restrict_to_beam=beam) + self._set_function_parameters(optimization_function) + +class ObjectiveDoseVolume(ObjectiveDose): + def __init__(self, *args, **kwargs): + """ Dose objective, adds DoseVolume specific attributes""" + super().__init__(*args, **kwargs) + self.percent_volume = float(self.parameters_tree.get("percentVolume")) + + def _set_function_parameters(self, optimization_function): + """ Override to add DoseVolume specific attributes + + Args: + optimization_function: RayStation optimization function + """ + super()._set_function_parameters(optimization_function) + optimization_function.DoseFunctionParameters.PercentVolume = self.percent_volume + +class ObjectiveEud(ObjectiveDose): + def __init__(self, *args, **kwargs): + """ Dose objective, adds Eud specific attributes""" + super().__init__(*args, **kwargs) + self.eud_parameter_a = float(self.parameters_tree.get("eudParameterA")) + + def _set_function_parameters(self, optimization_function): + """ Override to add Eud specific attributes + + Args: + optimization_function: RayStation optimization function + """ + super()._set_function_parameters(optimization_function) + optimization_function.DoseFunctionParameters.EudParameterA = self.eud_parameter_a + +class ObjectiveUniformity(ObjectiveBase): + def __init__(self, *args, **kwargs): + """ Dose objective, adds Uniformity specific attributes""" + super().__init__(*args, **kwargs) + self.percent_std_deviation = float(self.parameters_tree.get("percentStdDeviation")) + + def _set_function_parameters(self, optimization_function): + """ Override to add Uniformity specific attributes + + Args: + optimization_function: RayStation optimization function + """ + super()._set_function_parameters(optimization_function) + optimization_function.DoseFunctionParameters.PercentStdDeviation = self.percent_std_deviation + +# [entry point] rs_objective_template/helpers/objective_template_manager.py +class ObjectiveTemplateManager: + + def __init__(self, plan, beamset): + """ Manager object for Objective templates, needs RayStation plan and beamset objects to get ROIs + and plan information for validation of conditions + + Args: + plan: RayStation plan + beamset: RayStation beamset + """ + + self.plan = plan + self.beamset = beamset + self.all_rois_in_case = [roi.OfRoi.Name for roi in self.beamset.GetStructureSet().RoiGeometries] + self.rois_in_case = [roi.OfRoi.Name for roi in self.beamset.GetStructureSet().RoiGeometries if roi.HasContours()] + + # Instantiate ConditionValidator with beamset for validation of conditions (i.e fraction dose, roi volume) + self.ConditionValidator = ConditionalElementValidator(self.beamset) + self.objectives = [] + self.manual_roi_mapping = {} + self.template_name = None + + def parse_xml(self, path_to_xml): + """ Parses XML file into list of Objective objects + + Args: + path_to_xml (str): Absolute path to XML template file + """ + self.objectives.clear() + self.template_name = os.path.basename(path_to_xml)[:-4] + objective_tree = ElementTree.parse(path_to_xml).find("ObjectiveTemplate") + valid_rois_tree = [] + manual_rois_tree = [] + unmatched_rois_tree = [] + + # Loop over ROI's and validate conditions + for roi in [roi for roi in objective_tree.findall("Roi") if self.ConditionValidator.is_valid(roi)]: + roi_name = roi.get("name") + manual_roi = roi.get("userSelection") + if manual_roi: + manual_rois_tree.append(roi) + elif roi_name not in self.all_rois_in_case: + unmatched_rois_tree.append(roi) + elif not roi_name: + continue + else: + valid_rois_tree.append(roi) + + # If manual ROI's or unmatched ROI's; display selection dialog window and add selection to valid ROI list + if 0: + if manual_rois_tree or unmatched_rois_tree: + with RoiSelectDialog(self.all_rois_in_case) as roi_select_dialog: + if roi_select_dialog.ShowDialog(manual_rois_tree, unmatched_rois_tree, self.template_name): + valid_rois_tree[0:0] = [tree for tree in roi_select_dialog.assigned_roi_tree_list if tree.get("name") != "--"] + self.manual_roi_mapping = {tree.get('userSelection'): tree.get("name") for tree in roi_select_dialog.assigned_roi_tree_list} + self.ConditionValidator.set_manual_selection_mapping(self.manual_roi_mapping) + else: + return + else: + self.manual_roi_mapping = {} + for roi in objective_tree.findall("Roi"): + self.manual_roi_mapping[roi] = roi + # print (self.manual_roi_mapping) + self.ConditionValidator.set_manual_selection_mapping(self.manual_roi_mapping) + + # Add all valid objectives in valid ROI's to objectives list + for roi in valid_rois_tree: + for objective_tree in [ot for ot in roi.findall("OptimizationFunction") if self.ConditionValidator.is_valid(ot)]: + objective = Objective(self.plan, self.beamset, roi.get("name"), objective_tree, self.ConditionValidator) + self.objectives.append(objective) + +# rs_isodose_template +class ConditionalElementValidatorForIsoDose: + def __init__(self, doselevels: dict): + """ Helper class to check elements for conditions. + Returns the element if no condition or condition is met, None otherwise + + Args: + doselevels: Dict of doselevels in format {"DL1": 3500, "DL2": 4000} + """ + self.doselevels = doselevels + + def is_valid(self, element_tree: ElementTree): + """ Checks ElementTree for conditions set in attributes + + Args: + element_tree (Element): ElementTree to be checked + + Returns: + bool: True if ElementTree passes conditions + """ + if element_tree.get("conditionalDoseLevels"): + return self._evaluate_doselevels(element_tree) + + return True + + def _evaluate_doselevels(self, element_tree: ElementTree): + """ Evaluates 'conditionalDoseLevels'. + conditionalDoseLevels is a string with the name of the DoseLevels present (separated by ,) i.e. "DL1, DL2, DL3". + + Args: + element_tree (Element): ElementTree to be checked + + Returns: + bool: True if check passes + """ + conditional_doselevels = element_tree.get("conditionalDoseLevels") + if conditional_doselevels: + if len(self.doselevels) != len(conditional_doselevels.split(",")): + return False + return all([dl in conditional_doselevels.split(",") for dl in self.doselevels.keys()]) + + return True + +class IsodoseManager: + def __init__(self, path_isodose_xml, case, doselevels: dict, template_xml_path=None): + self.case = case + self.doselevels = doselevels + self.max_doselevel = self.doselevels[max(self.doselevels, key=lambda k: self.doselevels[k])] + self.ConditionValidator = ConditionalElementValidatorForIsoDose(doselevels) + self.isodose_tree = [] + + if Path(path_isodose_xml).exists(): + self._parse_xml(str(path_isodose_xml)) + + def _parse_xml(self, path_to_xml: str): + """ Parses XML file into dict of ColorMaps + Args: + path_to_xml (str): Absolute path to XML template file + """ + isodose_trees = [template for template in ElementTree.parse(path_to_xml).findall("IsodoseTemplate") if self.ConditionValidator.is_valid(template)] + + for tree in isodose_trees: + self.isodose_tree.extend(tree.findall("Isodose")) + + def map_isodose(self): + isodose_dict = {} + for isodose_element in self.isodose_tree: + isodose = Isodose(isodose_element, self.doselevels) + isodose_dict.update(isodose.isodose_dict) + + self.case.CaseSettings.DoseColorMap.PresentationType = "Absolute" + self.case.CaseSettings.DoseColorMap.ReferenceValue = self.max_doselevel + try: + self.case.CaseSettings.DoseColorMap.ColorMapReferenceType = "RelativePrescription" + except: + self.case.CaseSettings.DoseColorMap.ColorMapReferenceType = "ReferenceValue" + self.case.CaseSettings.DoseColorMap.ColorTable = isodose_dict + +class Isodose: + def __init__(self, isodose_element: ElementTree, doselevels: dict): + self.color = [int(color) for color in isodose_element.get("color").split(",")] + percentage = int(isodose_element.text) + relative_doselevel = isodose_element.get("relativeToDoseLevel") + absolute_dose = round(doselevels[relative_doselevel] * (percentage / 100)) + self.relative_percentage = (absolute_dose / doselevels[max(doselevels, key=lambda k: doselevels[k])]) * 100 + + @property + def isodose_dict(self): + from System.Drawing import Color # is importable within raystation + return {self.relative_percentage: Color.FromArgb(*self.color)} + +########################################################################################## +# MICHAELS CODE # +########################################################################################## + +# Import python class libs +from enum import Enum +from typing import Dict +from abc import ABC, abstractmethod + +# rs_ntcp_kno/models/enums.py +class TreatmentType(Enum): + PRIMARY = "Primary" + POSTOPERATIVE = "Postoperative" + +# rs_ntcp_kno/models/model_roi.py +class ModelRoi: + REMOVED_NAME = "--Removed--" + + def __init__(self, name: str = None, color: Dict[str, int] = None): + self._name = name + self.dose = None + self.volume = None + self.color = color + + @property + def name(self): + return self._name + + @name.setter + def name(self, value): + if self._name == value: + return + self._name = value + self.dose = None + self.volume = None + +# rs_ntcp_kno/models/ntcp_base.py +class InvalidRoiDoseException(Exception): + ... + +# rs_ntcp_kno/models/ntcp_base.py +class NtcpKnoAbstractBase(ABC): + """ NTCP model interface (abstract base class)""" + + class ModelRoiType(Enum): + """ RoiTypes needed for the model + Model specific and must be overridden in subclass + """ + ... + + MODEL_ROI_COLOR_MAPPING: Dict[ModelRoiType, Dict[str, int]] = None + + class BaselineType(Enum): + """ Baseline types for the model + Model specific and must be overridden in subclass + """ + ... + + @abstractmethod + def __init__(self, plan, grade: int): + self.model_name = None + self.ntcp_proton_criterion = None + self.plan = plan + self._grade = grade + self._baseline_type = None + self._treatment_type = None + for roi_type in self.ModelRoiType: + setattr(self, roi_type.name.lower(), ModelRoi(color=self.MODEL_ROI_COLOR_MAPPING[roi_type])) + + @property + def model_rois(self) -> Dict[ModelRoiType, ModelRoi]: + """ Property containing a dict of model ROI's with a bound ModelRoi instance + Returns: + ModelRoiType mappings to ModelRoi instances ie. {ModelRoiType: ModelRoi} + """ + roi_dict = {} + for roi_type in self.ModelRoiType: + roi_dict[roi_type] = getattr(self, roi_type.name.lower()) + return roi_dict + + def set_model_roi(self, roi_name: str, roi_type: ModelRoiType): + """ Bind a ROI name to a model ROI type + Args: + roi_name: Name of the ROI to bind + roi_type: ModelRoiType of this model to bind to + """ + if not roi_name: + return + for key, value in self.model_rois.items(): + if key != roi_type and value.name == roi_name: + self.model_rois[roi_type].name = None + return + self.model_rois[roi_type].name = roi_name + + def set_baseline(self, baseline: BaselineType): + """ Set the baseline type of this model instance + Args: + baseline: BaselineType to use for this model instance + """ + self._baseline_type = baseline + + def set_treatment_type(self, treatment_type: TreatmentType): + """ Set the treatment type of this model instance + Args: + treatment_type: TreatmentType to use for this model instance + """ + self._treatment_type = treatment_type + + @abstractmethod + def get_ntcp(self, dose_overrides: Dict[ModelRoiType, float] = None) -> float: + """ Get NTCP value of this model instance + Args: + dose_overrides: Dict of ModelRoiType mean dose overrides to use + Returns: + float: NTCP value + """ + ... + + def get_ntcp_curve(self, roi_type: ModelRoiType, center_dose_gy: float = None, curve_size_gy: int = 20, step_size_gy: float = 0.1) -> Dict[float, float]: + """ Get NCTP curve for specific ROI + Args: + roi_type: ModelRoiType to get NTCP curve for + center_dose_gy: Dose in Gy to center curve around, defaults to mean dose of chosen ROI + curve_size_gy: Range of the created curve in Gy + step_size_gy: Step size in Gy of calculated points in the curve + Returns: + Dict of floats ie. {dose_in_gy: ntcp_value} + """ + rounded_center_dose = round(center_dose_gy or self.get_mean_roi_dose(roi_type)) + dose_points = np.arange(max(rounded_center_dose - round(curve_size_gy / 2), 0), rounded_center_dose + round(curve_size_gy / 2) + 1, step_size_gy) + ntcp_curve_values = {} + + for dose in dose_points: + ntcp_curve_values[dose] = self.get_ntcp({roi_type: dose}) + + return ntcp_curve_values + + def get_ntcp_per_gy(self, roi_type: ModelRoiType) -> float: + """ Get NTCP gradient for ModelRoiType for current model instance + Args: + roi_type: ModelRoiType to get gradient for + Returns: + Gradient in NTCP/Gy for given ModelRoiType + """ + point_before = self.get_ntcp({roi_type: max(self.get_mean_roi_dose(roi_type) - 0.5, 0)}) + point_after = self.get_ntcp({roi_type: max(self.get_mean_roi_dose(roi_type) + 0.5, 1)}) + return point_after - point_before + + def get_ntcp_threshold(self) -> float: + """ Get NTCP PV threshold for current model instance + Returns: + NTCP threshold for plan comparison + """ + return self.get_base_ntcp() + self.ntcp_proton_criterion + + def get_base_ntcp(self): + """ Get NTCP at 0 Gy for current model instance + Returns: + NTCP value at 0 Gy + """ + return self.get_ntcp({roi_type: 0 for roi_type, _ in self.model_rois.items()}) + + # Helper functions + def get_mean_roi_dose(self, roi_type: ModelRoiType) -> float: + """ Get mean dose of ModelRoiType bound ROI + Calculates only once, then stores it in bound model for future requests + Args: + roi_type: ModelRoiType to get mean dose for + Returns: + Mean dose of given ROI in Gy + """ + roi_cache = self.model_rois[roi_type] + if roi_cache.dose is None: + if roi_cache.name == ModelRoi.REMOVED_NAME: + roi_cache.dose = 0 + return roi_cache.dose + roi_dose_grid = self.plan.TreatmentCourse.TotalDose.GetDoseGridRoi(RoiName=roi_cache.name) + if roi_dose_grid is None: + if roi_cache.name is None: + raise InvalidRoiDoseException(f"ROI could not be set, duplicate entry?") + raise InvalidRoiDoseException(f"ROI '{roi_cache.name}' has no dose grid") + if roi_dose_grid.RoiVolumeDistribution is None: + raise InvalidRoiDoseException(f"ROI '{roi_cache.name}' has no volume distribution, update dose statistics?") + roi_cache.dose = self.plan.TreatmentCourse.TotalDose.GetDoseStatistic(RoiName=roi_cache.name, DoseType="Average") / 100 + return roi_cache.dose + +# rs_ntcp_kno/models/ntcp_xerostomia.py +class NtcpKnoXerostomia(NtcpKnoAbstractBase): + PRIMARY_CONSTANTS: Dict[str, Dict[int, float]] = { + "grade": {2: -2.2951, 3: -3.7286}, + "parotid": {2: 0.0996, 3: 0.0855}, + "submandibular": {2: 0.0182, 3: 0.0156}, + "xerostomia_0": {2: 0, 3: 0}, + "xerostomia_1": {2: 0.4950, 3: 0.4249}, + "xerostomia_2": {2: 1.2070, 3: 1.0361} + } + POSTOPERATIVE_CONSTANTS: Dict[str, Dict[int, float]] = { + "grade": {2: -1.6824, 3: -4.3613}, + "parotid": {2: 0.0388, 3: 0.1054}, + "submandibular": {2: 0.0071, 3: 0.0193}, + "xerostomia_0": {2: 0, 3: 0}, + "xerostomia_1": {2: 0.1925, 3: 0.5234}, + "xerostomia_2": {2: 0.4695, 3: 1.2763} + } + + class ModelRoiType(Enum): + PAROTID_LEFT = "Parotid left" + PAROTID_RIGHT = "Parotid right" + SUBMANDIBULARS = "Submandibulars" + + MODEL_ROI_COLOR_MAPPING: Dict[ModelRoiType, Dict[str, int]] = { + ModelRoiType.PAROTID_LEFT: {"r": 0, "g": 192, "b": 0}, + ModelRoiType.PAROTID_RIGHT: {"r": 0, "g": 192, "b": 192}, + ModelRoiType.SUBMANDIBULARS: {"r": 139, "g": 69, "b": 19} + } + + class BaselineType(Enum): + NONE = "None (helemaal niet)" + LITTLE = "A little (een beetje)" + SEVERE = "Severe (nogal/heel erg)" + + BASELINETYPE_MAPPING: Dict[BaselineType, int] = { + BaselineType.NONE: 0, + BaselineType.LITTLE: 1, + BaselineType.SEVERE: 2 + } + + def __init__(self, plan, grade: int): + super().__init__(plan, grade) + self.model_name = f"NTCP Xerostomia Grade ≥ {grade}" + self.ntcp_proton_criterion = 0.1 if grade == 2 else 0.05 + + def get_ntcp(self, dose_overrides: Dict[ModelRoiType, float] = None) -> float: + """ Get Xerostomia NTCP value + + Args: + dose_overrides: Dict of ModelRoiType mean dose overrides to use + Returns: + float: NTCP value + """ + if not all([self._treatment_type, self._baseline_type]): + raise ValueError("Cannot calculate NTCP without setting all variables") + + constants = self.PRIMARY_CONSTANTS if self._treatment_type == TreatmentType.PRIMARY else self.POSTOPERATIVE_CONSTANTS + + intermediate_constant = constants["grade"][self._grade] + intermediate_constant += constants[f"xerostomia_{self.BASELINETYPE_MAPPING[self._baseline_type]}"][self._grade] + + parotid_l_dose = dose_overrides.get(self.ModelRoiType.PAROTID_LEFT) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.PAROTID_LEFT) is not None else self.get_mean_roi_dose(self.ModelRoiType.PAROTID_LEFT) + parotid_r_dose = dose_overrides.get(self.ModelRoiType.PAROTID_RIGHT) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.PAROTID_RIGHT) is not None else self.get_mean_roi_dose(self.ModelRoiType.PAROTID_RIGHT) + submandibulars_dose = dose_overrides.get(self.ModelRoiType.SUBMANDIBULARS) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.SUBMANDIBULARS) is not None else self.get_mean_roi_dose(self.ModelRoiType.SUBMANDIBULARS) + + exponent = {"parotid_l": constants["parotid"][self._grade] * math.sqrt(parotid_l_dose), + "parotid_r": constants["parotid"][self._grade] * math.sqrt(parotid_r_dose), + "submandibulars": constants["submandibular"][self._grade] * submandibulars_dose} + + ntcp_total = 1 / (1 + math.exp(-intermediate_constant - sum(exponent.values()))) + + return ntcp_total + +# rs_ntcp_kno/models/ntcp_dysphagia.py +class NtcpKnoDysphagia(NtcpKnoAbstractBase): + PRIMARY_CONSTANTS: Dict[str, Dict[int, float]] = { + "grade": {2: -4.0536, 3: -7.6174}, + "oral_cavity": {2: 0.03, 3: 0.0259}, + "pcm_superior": {2: 0.0236, 3: 0.0203}, + "pcm_middle": {2: 0.0095, 3: 0.0303}, + "pcm_inferior": {2: 0.0133, 3: 0.0341}, + "dysphagia_0": {2: 0, 3: 0}, + "dysphagia_1": {2: 0.9382, 3: 0.5738}, + "dysphagia_2": {2: 1.29, 3: 1.4718}, + "tumor_loc_oral_cavity": {2: 0, 3: 0}, + "tumor_loc_pharynx": {2: -0.6281, 3: 0.0387}, + "tumor_loc_larynx": {2: -0.7711, 3: -0.5303} + } + + POSTOPERATIVE_CONSTANTS: Dict[str, Dict[int, float]] = { + "grade": {2: -2.4138, 3: -3.2594}, + "oral_cavity": {2: 0.0192, 3: 0.0063}, + "pcm_superior": {2: 0.0151, 3: 0.0050}, + "pcm_middle": {2: 0.0060, 3: 0.0074}, + "pcm_inferior": {2: 0.0085, 3: 0.0084}, + "dysphagia_0": {2: 0, 3: 0}, + "dysphagia_1": {2: 0.5985, 3: 0.1404}, + "dysphagia_2": {2: 0.8227, 3: 0.3603}, + "tumor_loc_oral_cavity": {2: 0, 3: 0}, + "tumor_loc_pharynx": {2: -0.4007, 3: 0.0095}, + "tumor_loc_larynx": {2: -0.4918, 3: -0.1298} + } + + class ModelRoiType(Enum): + ORAL_CAVITY = "Oral cavity" + PCM_SUPERIOR = "Superior PCM" + PCM_MIDDLE = "Middle PCM" + PCM_INFERIOR = "Inferior PCM" + + MODEL_ROI_COLOR_MAPPING: Dict[ModelRoiType, Dict[str, int]] = { + ModelRoiType.ORAL_CAVITY: {"r": 192, "g": 192, "b": 0}, + ModelRoiType.PCM_SUPERIOR: {"r": 114, "g": 114, "b": 255}, + ModelRoiType.PCM_MIDDLE: {"r": 138, "g": 224, "b": 52}, + ModelRoiType.PCM_INFERIOR: {"r": 204, "g": 100, "b": 204} + } + + class BaselineType(Enum): + GRADE_0_1 = "Grade 0-1" + GRADE_2 = "Grade 2" + GRADE_3_4 = "Grade 3-4" + + BASELINETYPE_MAPPING = { + BaselineType.GRADE_0_1: 0, + BaselineType.GRADE_2: 1, + BaselineType.GRADE_3_4: 2 + } + + class TumorLocationType(Enum): + ORAL_CAVITY = "Oral cavity" + PHARYNX = "Pharynx" + LARYNX = "Larynx" + + def __init__(self, plan, grade: int): + super().__init__(plan, grade) + self.model_name = f"NTCP Dysphagia Grade ≥ {grade}" + self.ntcp_proton_criterion = 0.1 if grade == 2 else 0.05 + self._tumor_location: NtcpKnoDysphagia.TumorLocationType = None + + def set_tumor_location(self, tumor_location: TumorLocationType): + self._tumor_location = tumor_location + + def get_ntcp(self, dose_overrides: Dict[ModelRoiType, float] = None): + """ Get Dysphagia NTCP value + + Args: + dose_overrides: Dict of ModelRoiType mean dose overrides to use + Returns: + float: NTCP value + """ + if not all([self._treatment_type, self._baseline_type, self._tumor_location]): + raise ValueError("Cannot calculate NTCP without setting all variables") + + constants = self.PRIMARY_CONSTANTS if self._treatment_type == TreatmentType.PRIMARY else self.POSTOPERATIVE_CONSTANTS + + intermediate_constant = constants["grade"][self._grade] + intermediate_constant += constants[f"dysphagia_{self.BASELINETYPE_MAPPING[self._baseline_type]}"][self._grade] + intermediate_constant += constants[f"tumor_loc_{self._tumor_location.name.lower()}"][self._grade] + + oral_cavity_dose = dose_overrides.get(self.ModelRoiType.ORAL_CAVITY) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.ORAL_CAVITY) is not None else self.get_mean_roi_dose(self.ModelRoiType.ORAL_CAVITY) + pcm_superior_dose = dose_overrides.get(self.ModelRoiType.PCM_SUPERIOR) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.PCM_SUPERIOR) is not None else self.get_mean_roi_dose(self.ModelRoiType.PCM_SUPERIOR) + pcm_middle_dose = dose_overrides.get(self.ModelRoiType.PCM_MIDDLE) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.PCM_MIDDLE) is not None else self.get_mean_roi_dose(self.ModelRoiType.PCM_MIDDLE) + pcm_inferior_dose = dose_overrides.get(self.ModelRoiType.PCM_INFERIOR) if dose_overrides is not None and dose_overrides.get(self.ModelRoiType.PCM_INFERIOR) is not None else self.get_mean_roi_dose(self.ModelRoiType.PCM_INFERIOR) + + exponent = {"oral_cavity": constants["oral_cavity"][self._grade] * oral_cavity_dose, + "pcm_superior": constants["pcm_superior"][self._grade] * pcm_superior_dose, + "pcm_middle": constants["pcm_middle"][self._grade] * pcm_middle_dose, + "pcm_inferior": constants["pcm_inferior"][self._grade] * pcm_inferior_dose} + + ntcp_total = 1 / (1 + math.exp(-intermediate_constant - sum(exponent.values()))) + + return ntcp_total + +# rs_ntcp_kno/viewmodels/mainviewmodel.py +class KNONTCP: + + def __init__(self, params) -> None: + + # Step 1 - Get the plans to compare to + self._selected_plan1 = params.get(config.KEY_NTCP_PLAN1, None) + self._selected_plan2 = params.get(config.KEY_NTCP_PLAN2, None) + + # Step 2 - Get RStation objects + self._patient = connect.get_current("Patient") + self._case = self._patient.Cases[0] + if getRTPlanIndex(self._case, self._selected_plan1) > -1: + self._plan = self._case.TreatmentPlans[self._selected_plan1] + self._roi_names = [roi.OfRoi.Name for roi in self._plan.GetTotalDoseStructureSet().RoiGeometries if roi.HasContours()] + if "Glnds_Submand" not in self._roi_names: + smdAlgebraStatus = self._do_smd_algebra() + self._roi_names = [roi.OfRoi.Name for roi in self._plan.GetTotalDoseStructureSet().RoiGeometries if roi.HasContours()] + + self._roi_names_with_removed = [ModelRoi.REMOVED_NAME] + self._roi_names_with_removed.extend(self._roi_names) + else: + print (' - [ERROR][KNONTCP] Plan 1 not found in plan list', self._selected_plan1) + + # Step 3 - Get model parameters (NOTE: this will be passed as params here) + self._treatment_type = params.get(config.KEY_NTCP_TREATMENT_TYPE, None) + self._tumor_location = params.get(config.KEY_NTCP_TUMOR_LOCATION, None) + self._baseline_xerostomia = params.get(config.KEY_NTCP_BASELINE_XEROSTOMIA, None) + self._baseline_dysphagia = params.get(config.KEY_NTCP_BASELINE_DYSPHAGIA, None) + self._is_total_laryngectomy = params.get(config.KEY_NTCP_IS_TOTAL_LARYNGECTOMY, None) + + self._parotid_left = "Parotid_L" if "Parotid_L" in self._roi_names else None + self._parotid_right = "Parotid_R" if "Parotid_R" in self._roi_names else None + self._submandibulars = "Glnds_Submand" if "Glnds_Submand" in self._roi_names else None + self._oral_cavity = "Oral_Cavity" if "Oral_Cavity" in self._roi_names else None + self._pcm_superior = "Musc_Constrict_S" if "Musc_Constrict_S" in self._roi_names else None + self._pcm_middle = "Musc_Constrict_M" if "Musc_Constrict_M" in self._roi_names else None + self._pcm_inferior = "Musc_Constrict_I" if "Musc_Constrict_I" in self._roi_names else None + self.ParotidsRemoved = params.get(config.KEY_PAROTIDS_REMOVED, False) + if self._parotid_left is None: + print (' - [INFO][KNONTCP] Parotid_L not found in ROI list') + if self._parotid_right is None: + print (' - [INFO][KNONTCP] Parotid_R not found in ROI list') + if self._submandibulars is None: + print (' - [INFO][KNONTCP] Glnds_Submand not found in ROI list') + if self._oral_cavity is None: + print (' - [INFO][KNONTCP] Oral_Cavity not found in ROI list') + if self._pcm_superior is None: + print (' - [INFO][KNONTCP] Musc_Constrict_S not found in ROI list') + if self._pcm_middle is None: + print (' - [INFO][KNONTCP] Musc_Constrict_M not found in ROI list') + if self._pcm_inferior is None: + print (' - [INFO][KNONTCP] Musc_Constrict_I not found in ROI list') + + # Step 4 - Define NTCP model objects + plan1Index = getRTPlanIndex(self._case, self._selected_plan1) + plan2Index = getRTPlanIndex(self._case, self._selected_plan2) + + if plan1Index > -1: + if self._parotid_left is not None and self._parotid_right is not None and self._submandibulars is not None: + self.plan1_ntcp_xerostomia_grade_2 = NtcpKnoXerostomia(self._case.TreatmentPlans[plan1Index], 2) + self.plan1_ntcp_xerostomia_grade_3 = NtcpKnoXerostomia(self._case.TreatmentPlans[plan1Index], 3) + self._set_xerostomia_variables(self.plan1_ntcp_xerostomia_grade_2) + self._set_xerostomia_variables(self.plan1_ntcp_xerostomia_grade_3) + else: + self.plan1_ntcp_xerostomia_grade_2: NtcpKnoXerostomia = None + self.plan1_ntcp_xerostomia_grade_3: NtcpKnoXerostomia = None + + if self._oral_cavity is not None and self._pcm_superior is not None and self._pcm_middle is not None and self._pcm_inferior is not None: + self.plan1_ntcp_dysphagia_grade_2 = NtcpKnoDysphagia(self._case.TreatmentPlans[plan1Index], 2) + self.plan1_ntcp_dysphagia_grade_3 = NtcpKnoDysphagia(self._case.TreatmentPlans[plan1Index], 3) + self._set_dysphagia_variables(self.plan1_ntcp_dysphagia_grade_2) + self._set_dysphagia_variables(self.plan1_ntcp_dysphagia_grade_3) + else: + self.plan1_ntcp_dysphagia_grade_2 : NtcpKnoDysphagia = None + self.plan1_ntcp_dysphagia_grade_3 : NtcpKnoDysphagia = None + else: + self.plan1_ntcp_xerostomia_grade_2: NtcpKnoXerostomia = None + self.plan1_ntcp_xerostomia_grade_3: NtcpKnoXerostomia = None + self.plan1_ntcp_dysphagia_grade_2 : NtcpKnoDysphagia = None + self.plan1_ntcp_dysphagia_grade_3 : NtcpKnoDysphagia = None + + if plan2Index > -1: + self.plan2_ntcp_xerostomia_grade_2 = NtcpKnoXerostomia(self._case.TreatmentPlans[plan2Index], 2) + self.plan2_ntcp_xerostomia_grade_3 = NtcpKnoXerostomia(self._case.TreatmentPlans[plan2Index], 3) + self.plan2_ntcp_dysphagia_grade_2 = NtcpKnoDysphagia(self._case.TreatmentPlans[plan2Index], 2) + self.plan2_ntcp_dysphagia_grade_3 = NtcpKnoDysphagia(self._case.TreatmentPlans[plan2Index], 3) + self._set_xerostomia_variables(self.plan2_ntcp_xerostomia_grade_2) + self._set_xerostomia_variables(self.plan2_ntcp_xerostomia_grade_3) + self._set_dysphagia_variables(self.plan2_ntcp_dysphagia_grade_2) + self._set_dysphagia_variables(self.plan2_ntcp_dysphagia_grade_3) + else: + self.plan2_ntcp_xerostomia_grade_2: NtcpKnoXerostomia = None + self.plan2_ntcp_xerostomia_grade_3: NtcpKnoXerostomia = None + self.plan2_ntcp_dysphagia_grade_2 : NtcpKnoDysphagia = None + self.plan2_ntcp_dysphagia_grade_3 : NtcpKnoDysphagia = None + + # Step 99 - Results + self._ntcp_xerostomia_grade_2_values = None + self._ntcp_xerostomia_grade_3_values = None + self._ntcp_dysphagia_grade_2_values = None + self._ntcp_dysphagia_grade_3_values = None + self._sum_grade_2_values = None + self._sum_grade_3_values = None + + def _do_smd_algebra(self): + + import numpy as np + algebraStatus = False + + def getMarginSettings(distInCm): + return { 'Type': "Expand", 'Superior': distInCm, 'Inferior': distInCm, 'Anterior': distInCm, 'Posterior': distInCm, 'Right': distInCm, 'Left': distInCm } + + params = [ + { + 'roiNameNew': 'Glnds_Submand' + , 'expARois': ['Glnd_Submand_L'] + , 'expAMarginSettings': getMarginSettings(0) + , 'expBRois': ['Glnd_Submand_R'] + , 'expBMarginSettings': getMarginSettings(0) + , 'roiType': 'Organ' + } + ] + + for param in params: + try: + roiNameNew = param['roiNameNew'] + expARois = param['expARois'] + expBRois = param['expBRois'] + roiNameNewBool = roiNameNew in self._roi_names + expABool = np.any(roiName in self._roi_names for roiName in expARois) + expBBool = np.any(roiName in self._roi_names for roiName in expBRois) + if not roiNameNewBool: + if expABool and expBBool: + if roiNameNew not in self._roi_names: + print (f'\n -- [doROIAlgebraForProtonAutoContours] Creating ROI: {roiNameNew} \n') + self._case.PatientModel.CreateRoi(Name=roiNameNew, Color="Green", Type=param['roiType'], TissueName=None, RbeCellTypeName=None, RoiMaterial=None) + self._case.PatientModel.RegionsOfInterest[roiNameNew].SetAlgebraExpression( + ExpressionA={ 'Operation': "Union", 'SourceRoiNames': expARois, 'MarginSettings': param['expAMarginSettings'] } + , ExpressionB={ 'Operation': "Union", 'SourceRoiNames': expBRois, 'MarginSettings': param['expBMarginSettings']} + , ResultOperation="Union", ResultMarginSettings=getMarginSettings(0) + ) + self._case.PatientModel.RegionsOfInterest[roiNameNew].UpdateDerivedGeometry(Examination=self._case.Examinations[0], Algorithm="Auto") + roiNameNewObj = self._case.PatientModel.StructureSets[0].RoiGeometries[roiNameNew] + print ('') + if roiNameNewObj.HasContours(): + print (f' -- [doROIAlgebraForProtonAutoContours] ROI: {roiNameNew} created with volune: {roiNameNewObj.GetRoiVolume()}') + self._patient.Save() + algebraStatus = True + else: + print (f' -- [doROIAlgebraForProtonAutoContours] ROI: {roiNameNew} created but has no contours') + print ('') + + else: + print (f' -- [doROIAlgebraForProtonAutoContours] expABool: {expABool} and expBBool:{expBBool}') + else: + print (f' -- [doROIAlgebraForProtonAutoContours] ROI: {roiNameNew} already exists') + + except: + traceback.print_exc() + + return algebraStatus + + def _set_dysphagia_variables(self, model: NtcpKnoDysphagia): + try: + if model is None: + return + model.set_model_roi(self._oral_cavity, NtcpKnoDysphagia.ModelRoiType.ORAL_CAVITY) + model.set_model_roi(self._pcm_superior, NtcpKnoDysphagia.ModelRoiType.PCM_SUPERIOR) + model.set_model_roi(self._pcm_middle, NtcpKnoDysphagia.ModelRoiType.PCM_MIDDLE) + model.set_model_roi(self._pcm_inferior, NtcpKnoDysphagia.ModelRoiType.PCM_INFERIOR) + if self._baseline_dysphagia is not None: + model.set_baseline(NtcpKnoDysphagia.BaselineType(self._baseline_dysphagia)) + if self._treatment_type is not None: + model.set_treatment_type(TreatmentType(self._treatment_type)) + if self._tumor_location is not None: + model.set_tumor_location(NtcpKnoDysphagia.TumorLocationType(self._tumor_location)) + + except Exception as e: + print(f" - [KNONTCP._set_dysphagia_variables()] Error in Dysphagia variables:\n{e}") + + def _set_xerostomia_variables(self, model: NtcpKnoXerostomia): + try: + if model is None: + return + model.set_model_roi(self._parotid_left, NtcpKnoXerostomia.ModelRoiType.PAROTID_LEFT) + model.set_model_roi(self._parotid_right, NtcpKnoXerostomia.ModelRoiType.PAROTID_RIGHT) + model.set_model_roi(self._submandibulars, NtcpKnoXerostomia.ModelRoiType.SUBMANDIBULARS) + if self._baseline_xerostomia is not None: + model.set_baseline(NtcpKnoXerostomia.BaselineType(self._baseline_xerostomia)) + if self._treatment_type is not None: + model.set_treatment_type(TreatmentType(self._treatment_type)) + except Exception as e: + print(f"Error in Xerostomia variables:\n{e}") + + def _get_ntcp_model(self, plan1_model: NtcpKnoAbstractBase, plan2_model: NtcpKnoAbstractBase): + + if plan1_model is None and plan2_model is None: + return None + values = {} + + try: + values = {'ModelName': plan1_model.model_name if plan1_model is not None else plan2_model.model_name, + 'Plan_1': None, + 'Plan_2': None, + 'Criterion': plan1_model.ntcp_proton_criterion if plan1_model is not None else plan2_model.ntcp_proton_criterion, + 'NtcpPerGy': None, + 'Indication': None + } + + if plan1_model is not None: + + try: + plan1_model.plan.TreatmentCourse.TotalDose.UpdateDoseGridStructures() # done for dose.GetDoseStatistic(RoiName="Glnds_Submand", DoseType="Average") in get_mean_roi_dose + except: + traceback.print_exc() + + values['Plan_1'] = {'Name': plan1_model.plan.Name, + 'Modality': plan1_model.plan.BeamSets[0].Modality, + 'PlanValue': plan1_model.get_ntcp(), + 'BaseNtcp': plan1_model.get_base_ntcp(), + 'Threshold': plan1_model.get_ntcp_threshold(), + 'ComparisonJustified': None, + 'Rois': {} + } + for roi_type, roi in plan1_model.model_rois.items(): + values['Plan_1']['Rois'][roi.name] = { + 'mean_dose': plan1_model.get_mean_roi_dose(roi_type), 'gradient': plan1_model.get_ntcp_per_gy(roi_type) + } + if plan1_model.plan.BeamSets[0].Modality == "Photons": + values['Plan_1']['ComparisonJustified'] = values['Plan_1']['PlanValue'] > values['Plan_1']['Threshold'] + + if plan2_model is not None: + values['Plan_2'] = {'Name': plan2_model.plan.Name, + 'Modality': plan2_model.plan.BeamSets[0].Modality, + 'PlanValue': plan2_model.get_ntcp(), + 'BaseNtcp': plan2_model.get_base_ntcp(), + 'DeltaNtcp': None, + 'Threshold': None, + 'PlanWins': False, + 'Rois': {} + } + for roi_type, roi in plan2_model.model_rois.items(): + values['Plan_2']['Rois'][roi.name] = {'mean_dose': plan2_model.get_mean_roi_dose(roi_type), 'gradient': plan2_model.get_ntcp_per_gy(roi_type), 'color': "Black"} + + if plan1_model is not None: + values['Plan_2']['DeltaNtcp'] = values['Plan_1']['PlanValue'] - values['Plan_2']['PlanValue'] + values['Plan_2']['Threshold'] = plan2_model.get_ntcp_threshold() + values['Plan_2']['PlanWins'] = values['Plan_2']['DeltaNtcp'] >= plan1_model.ntcp_proton_criterion and values['Plan_1']['ComparisonJustified'] + if plan1_model.plan.BeamSets[0].Modality == "Photons" and plan2_model.plan.BeamSets[0].Modality == "Protons": + values['Indication'] = plan2_model.plan.BeamSets[0].Modality if values['Plan_2']['PlanWins'] else plan1_model.plan.BeamSets[0].Modality + + return values + except Exception as e: + print(f"Error in creating NTCP values") + traceback.print_exc() + return values + + @property + def ntcp_xerostomia_grade_2_values(self) -> dict: + + if self._parotid_left is None or self._parotid_right is None or self._submandibulars is None: + return None + + if self.ParotidsRemoved: + return None + if self._ntcp_xerostomia_grade_2_values is None: + self._ntcp_xerostomia_grade_2_values = self._get_ntcp_model(self.plan1_ntcp_xerostomia_grade_2, self.plan2_ntcp_xerostomia_grade_2) + return self._ntcp_xerostomia_grade_2_values + + @property + def ntcp_xerostomia_grade_3_values(self) -> dict: + + if self._parotid_left is None or self._parotid_right is None or self._submandibulars is None: + return None + + if self.ParotidsRemoved: + return None + if self._ntcp_xerostomia_grade_3_values is None: + self._ntcp_xerostomia_grade_3_values = self._get_ntcp_model(self.plan1_ntcp_xerostomia_grade_3, self.plan2_ntcp_xerostomia_grade_3) + return self._ntcp_xerostomia_grade_3_values + + @property + def ntcp_dysphagia_grade_2_values(self) -> dict: + + if self._oral_cavity is None or self._pcm_superior is None or self._pcm_middle is None or self._pcm_inferior is None: + return None + + if self._is_total_laryngectomy: + return None + if self._ntcp_dysphagia_grade_2_values is None: + self._ntcp_dysphagia_grade_2_values = self._get_ntcp_model(self.plan1_ntcp_dysphagia_grade_2, self.plan2_ntcp_dysphagia_grade_2) + return self._ntcp_dysphagia_grade_2_values + + @property + def ntcp_dysphagia_grade_3_values(self) -> dict: + if self._is_total_laryngectomy: + return None + if self._ntcp_dysphagia_grade_3_values is None: + self._ntcp_dysphagia_grade_3_values = self._get_ntcp_model(self.plan1_ntcp_dysphagia_grade_3, self.plan2_ntcp_dysphagia_grade_3) + return self._ntcp_dysphagia_grade_3_values diff --git a/src/hnDosePhotons.py b/src/hnDosePhotons.py new file mode 100644 index 0000000..fce0920 --- /dev/null +++ b/src/hnDosePhotons.py @@ -0,0 +1,1357 @@ +""" +This script expects + - a folder containing CT, RTDose, RTPlan, RTStruct .dcms + - assets/objective-template-photon-kno.xml + - assets/eval-template-photon.csv + - assets/isodose.xml + +Run the script from "__main__" +""" + +# Import RStation libraries +import connect + +# Import private libraries +import helpers as helpers +import config as config + +# Import general libraries +import re +import sys +import pdb +import json +import time +import shutil +import logging +import datetime +import traceback +import numpy as np +from pathlib import Path + +DEBUG_PDB = False +def print(*args, **kwargs): + logging.info(" ".join(map(str, args)), **kwargs) + + +######################################################## +# HELPERS # +######################################################## + +def optimizePlan(planName, count=10, reset=True, pathIsoDoseXML=None): + + optimizeStatus = False + objectiveValues = [] + try: + # Step 1 - Get plan and beamset + patient = helpers.rayStationSave() + case = patient.Cases[0] + plan = case.TreatmentPlans[planName] + beamset = case.TreatmentPlans[planName].BeamSets[planName] + beamSetIndex = plan.BeamSets.IndexOf(beamset) + + # Step 2 - Reset existing optimization + if reset: + plan.PlanOptimizations[beamSetIndex].ResetOptimization() + print ('\n\n - [optimizePlan()][Patient={}][Plan={}] Optimization has been reset ...'.format(helpers.getPatientIdentifier(patient), planName)) + else: + print ('\n\n - [optimizePlan()][Patient={}][Plan={}] Optimization has not been reset ...'.format(helpers.getPatientIdentifier(patient), planName)) + if plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization is not None: + objectiveValue = plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization.ObjectiveValues[-1] # [TODO: range = (0.36,?)] + print (' - [optimizePlan()][Patient={}][Plan={}] Previous objective {:.4f}'.format(helpers.getPatientIdentifier(patient), planName, objectiveValue)) + _ = helpers.rayStationSave() + + # Step 3 - Run optimization + times = [] + + for runID in range(count): + t0 = time.time() + print (' - [optimizePlan()][Patient={}][Plan={}] Running optimization step {}/{} ... '.format(helpers.getPatientIdentifier(patient), planName, runID+1, count)) + plan.PlanOptimizations[beamSetIndex].RunOptimization() + times.append(time.time() - t0) + try: + objectiveValue = plan.PlanOptimizations[beamSetIndex].ProgressOfOptimization.ObjectiveValues[-1] # [TODO: range = (0.36,?)] + print (' --- [optimizePlan()] Optimization step {}/{} took {:.2f} seconds with mean objective: {:.4f}'.format(runID+1, count, times[-1], objectiveValue)) + objectiveValues.append(objectiveValue) + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + print (' - [optimizePlan()] Optimization took total {:.2f} seconds with mean objective: {:.4f}'.format(np.sum(times), objectiveValue)) + + if runID == count-1: + optimizeStatus = True + + if optimizeStatus: + helpers.applyIsoDoseColors(pathIsoDoseXML, case, beamset) + else: + print (' - [optimizePlan()] Full optimization failed, not applying isodose colors') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + return optimizeStatus, objectiveValues + +def uploadORUpdateObjectives(planName, pathKNOObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType): + + # Step 1 - Init + objectiveStatus = False + + # Step 2 - Boilerplate code for get patient and plans + _, case, plan, beamset = helpers.getPatientAndPlan(planName) + + # Step 3 - Get objectives + objectivesFromPath = helpers.getObjectivesFromPath(plan, beamset, pathKNOObjectives) + objectivesFromRS = helpers.getObjectivesFromPlan(plan, beamset) + + # Step 4 - Upload/Update Objectives + if uploadObjectivesBool: + if len(objectivesFromRS) == 0 or forceObjectives: + objectiveStatus = helpers.uploadObjectivesToRS(plan, beamset, objectivesFromPath) + else: + print(' - [uploadORUpdateObjectives()] Objectives already exist, not uploading') + + elif updateObjectivesBool: + if len(objectivesFromRS) > 0: + objectiveStatus = updateObjectives(planName, objectivesFromRS, objectivesFromPath, objectiveFType) + else: + print(' - [uploadORUpdateObjectives()] No objectives found, not updating') + + # Step 5 - Do sanity check + helpers.doPlanSanityCheck(case, planName) + + return objectiveStatus + +def checkIfRoiIgnore(planName, objectiveFType, roiName): + + # Step 1 - Init + roisFullIgnore = [] + roisPartialIgnore = [] + roiIgnoreBool = False + + keyPlanCSTerm = config.SUFFIX_PLAN_CS.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanCSAutoTerm = config.SUFFIX_PLAN_CS.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanDFOTerm = config.SUFFIX_PLAN_DFO.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanDFOAutoTerm = config.SUFFIX_PLAN_DFO.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanDFO2Term = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanDFO2AutoTerm = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanEUDTerm = config.SUFFIX_PLAN_EUD.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanEUDAutoTerm = config.SUFFIX_PLAN_EUD.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanFinalTerm = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanFinalAutoTerm = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_AUTOMATED_CONTOURS) + + # Step 2 - Ignore check on certain ROIs + if roiName in [config.KEYNAME_BRAINSTEM, config.KEYNAME_BRAINSTEM + config.KEY_3MM_SUFFIX + , config.KEYNAME_SPINALCORD, config.KEYNAME_SPINALCORD + config.KEY_3MM_SUFFIX + , config.KEYNAME_GHOST_CRANIAL, config.KEYNAME_EAR_L_GHOST, config.KEYNAME_EAR_R_GHOST + ]: + return roiIgnoreBool + + # Step 2 - Get ROIs to ignore (while updating objectives) + roisPartialIgnoreList = [config.REGEX_PROSTHESE, config.REGEX_DFO, config.REGEX_DMAX, config.REGEX_DOSE, config.REGEX_KAAK + , config.REGEX_LIPPEN + , config.KEYNAME_MANDIBLE_PTV + , config.KEYNAME_MANDIBLE + , config.REGEX_5805 + , config.KEYNAME_BRAIN + ] + + if (keyPlanCSTerm in planName or keyPlanCSAutoTerm in planName) and objectiveFType == None: # this will actually never be called + roisFullIgnore = [config.KEYNAME_BODY, config.KEYNAME_RING_PTV_DL2, config.KEYNAME_GHOST] + + elif (keyPlanDFOTerm in planName or keyPlanDFOAutoTerm in planName) and objectiveFType == config.KEY_FTYPE_DOSEFALLOFF: + roisFullIgnore = [config.KEYNAME_BODY, config.KEYNAME_RING_PTV_DL2, config.KEYNAME_GHOST] + roisPartialIgnore = roisPartialIgnoreList + + elif (keyPlanDFO2Term in planName or keyPlanDFO2AutoTerm in planName) and objectiveFType == config.KEY_FTYPE_DOSEFALLOFF: + roisFullIgnore = [config.KEYNAME_BODY, config.KEYNAME_RING_PTV_DL2, config.KEYNAME_GHOST] + roisPartialIgnore = roisPartialIgnoreList + + elif (keyPlanEUDTerm in planName or keyPlanEUDAutoTerm in planName) and objectiveFType == config.KEY_FTYPE_MAXEUD: + roisFullIgnore = [config.KEYNAME_BODY, config.KEYNAME_RING_PTV_DL2, config.KEYNAME_GHOST] + roisPartialIgnore = roisPartialIgnoreList + + elif (keyPlanFinalTerm in planName or keyPlanFinalAutoTerm in planName) and objectiveFType == None: + roisFullIgnore = [config.KEYNAME_BODY] + roisPartialIgnore = [] + + # Step 3 - Check if ROI should be ignored + for roiFullIgnore in roisFullIgnore: + if roiName == roiFullIgnore: + roiIgnoreBool = True + break + + for roiPartialIgnore in roisPartialIgnore: + if re.search(roiPartialIgnore, str(roiName).lower()) is not None: + roiIgnoreBool = True + break + + return roiIgnoreBool + +def updateObjectiveRingPTVDL1(planName, objectivesFromRS, rsIdx): + + # Step 0 - Init + updateStatus = False + existingRoiName = objectivesFromRS[rsIdx].ForRegionOfInterest.Name + existingWeight = objectivesFromRS[rsIdx].DoseFunctionParameters.Weight + + keyPlanDFOTerm = config.SUFFIX_PLAN_DFO.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanDFOAutoTerm = config.SUFFIX_PLAN_DFO.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanDFO2Term = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanDFO2AutoTerm = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_AUTOMATED_CONTOURS) + + if (keyPlanDFOTerm in planName or keyPlanDFOAutoTerm in planName): + # newWeight = 40 # [40, 50] + # objectivesFromRS[rsIdx].DoseFunctionParameters.Weight = newWeight + updateStatus = True + print (f' - [updateObjectiveRingPTVDL1()] \troi: {existingRoiName}, \tweight: {existingWeight} --> {objectivesFromRS[rsIdx].DoseFunctionParameters.Weight}') + print (f' - [updateObjectiveRingPTVDL1()] Not updating! ') + + elif (keyPlanDFO2Term in planName or keyPlanDFO2AutoTerm in planName): + # newWeight = 80 # [80, 100] + # objectivesFromRS[rsIdx].DoseFunctionParameters.Weight = newWeight + updateStatus = True + print (f' - [updateObjectiveRingPTVDL1()] \troi: {existingRoiName}, \tweight: {existingWeight} --> {objectivesFromRS[rsIdx].DoseFunctionParameters.Weight}') + print (f' - [updateObjectiveRingPTVDL1()] Not updating! ') + + else: + pass + + return updateStatus + +def updateObjectives(planName, objectivesFromRS, objectivesFromPath, objectiveFType): + """ + Called from uploadORUpdateObjectives() + + Params: + ------- + planName: str + objectivesFromRS: list + objectivesFromPath: list + objectiveFType: str, ['DoseFallOff', 'DoseFallOff', 'MaxEUD', None] + """ + updateObjectiveStatus = False + + try: + + # Step 1 - Init + patient, _, _, _ = helpers.getPatientAndPlan(planName) + keyPlanDFO2Term = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanDFO2AutoTerm = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_AUTOMATED_CONTOURS) + keyPlanFinalTerm = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_CLINICAL_CONTOURS) # R5 + keyPlanFinalAutoTerm = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_AUTOMATED_CONTOURS) # A5 + + # Step 2 - Get existing objectives + updatedFromPathObjectivesStatus = {} + for pathIdx, objectiveFromPath in enumerate(objectivesFromPath): + newRoiName = objectiveFromPath.roi_name + if newRoiName == config.KEYNAME_BODY: continue + newFunctionType = objectiveFromPath.function_type + key = f'{newRoiName}-{newFunctionType}' + updatedFromPathObjectivesStatus[key] = {'exists': False, 'idx':pathIdx} + + # Step 4 - Update objectives + if len(objectivesFromRS) > 0: + print ('\n\n - [INFO][updateObjectives()][Patient={}] Updating Objectives ... '.format(helpers.getPatientIdentifier(patient))) + + # Step 4.1 - Update weights of existing objectives (based on function-type and roi-name) + for rsIdx, objectiveFromRS in enumerate(objectivesFromRS): + try: + existingRoiName = objectiveFromRS.ForRegionOfInterest.Name + existingWeight = objectiveFromRS.DoseFunctionParameters.Weight + if existingRoiName == config.KEYNAME_BODY: continue + try: + existingFunctionType = objectiveFromRS.DoseFunctionParameters.FunctionType + except: + existingFunctionType = config.KEY_FTYPE_DOSEFALLOFF + + # print (' - existingRoiName: {}/{}, existingFunctionType: {}, existingWeight: {}'.format(existingRoiName, config.KEYNAME_RING_LT_PTV_DL1, existingFunctionType, existingWeight)) + if existingRoiName == config.KEYNAME_RING_LT_PTV_DL1 and objectiveFType is not None: + if updateObjectiveRingPTVDL1(planName, objectivesFromRS, rsIdx): + continue + + # [DEBUG] + if 0: + print (' - [DEBUG][updateObjectives()] roi: {}, \tfunctionType: {}, \tweight: {}'.format(existingRoiName, existingFunctionType, existingWeight)) + + # Make note of existing objectives that are in new objectives + key = f'{existingRoiName}-{existingFunctionType}' + if key in updatedFromPathObjectivesStatus: updatedFromPathObjectivesStatus[key]['exists'] = True + + # Step 4.1 - Check if existing objective is in new objectives + for objectiveFromPath in objectivesFromPath: + newRoiName = objectiveFromPath.roi_name + newFunctionType = objectiveFromPath.function_type + newWeight = objectiveFromPath.weight + if newRoiName == config.KEYNAME_BODY: continue + functionMatchBool = newFunctionType == objectiveFType + if keyPlanFinalTerm in planName or keyPlanFinalAutoTerm in planName: + functionMatchBool = True # i.e update all rois + + if functionMatchBool: + if not checkIfRoiIgnore(planName, objectiveFType, newRoiName): + if existingRoiName == newRoiName and existingFunctionType == newFunctionType: + + # Step 4.1.1 - Update weight + objectivesFromRS[rsIdx].DoseFunctionParameters.Weight = newWeight + print (f' -- [updateObjectives()] \troi: {existingRoiName}, \tfType: {existingFunctionType}, \tweight: {existingWeight} --> {newWeight}') + + # Step 4.1.2 - Update dose level(s) + if existingFunctionType == config.KEY_FTYPE_MAXEUD: + existingDoseLevel = objectivesFromRS[rsIdx].DoseFunctionParameters.DoseLevel + existingEudParameterA = objectivesFromRS[rsIdx].DoseFunctionParameters.EudParameterA + objectivesFromRS[rsIdx].DoseFunctionParameters.DoseLevel = objectiveFromPath.doselevel + objectivesFromRS[rsIdx].DoseFunctionParameters.EudParameterA = objectiveFromPath.eud_parameter_a + print (f' --- [updateObjectives()] \tDoseLevel: {existingDoseLevel} --> {objectiveFromPath.doselevel}') + print (f' --- [updateObjectives()] \tEudParameterA: {existingEudParameterA} --> {objectiveFromPath.eud_parameter_a}') + elif existingFunctionType == config.KEY_FTYPE_DOSEFALLOFF: + if keyPlanDFO2Term in planName or keyPlanDFO2AutoTerm in planName: # [Ref: https://iprova.lumc.nl/Portal/#/document/1fc74366-40c1-4b84-a653-0455b6c891f8 (Vervolgens voor beide opties)] + print (f' --- [updateObjectives()] \tHighDoseLevel: {objectiveFromRS.DoseFunctionParameters.HighDoseLevel} --> {objectiveFromPath.high_doselevel}') + print (f' --- [updateObjectives()] \tLowDoseLevel : {objectiveFromRS.DoseFunctionParameters.LowDoseLevel} --> {objectiveFromPath.low_doselevel}') + objectivesFromRS[rsIdx].DoseFunctionParameters.HighDoseLevel = objectiveFromPath.high_doselevel + objectivesFromRS[rsIdx].DoseFunctionParameters.LowDoseLevel = objectiveFromPath.low_doselevel + + key = f'{newRoiName}-{newFunctionType}' + updatedFromPathObjectivesStatus[key]['updated'] = True + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + # Step 4.2 - Add new objectives (if 1) they dont exist, and if they match 2) function-type and 3) roiName conditions) + print ('') + for key in updatedFromPathObjectivesStatus: + if updatedFromPathObjectivesStatus[key]['exists'] is False: + roiName = key.split('-')[0] + fType = key.split('-')[1] + + fTypeCondition = fType == objectiveFType # only if ftType in [DoseFallOff, MaxEUD] + roiIgnoreCondition = checkIfRoiIgnore(planName, objectiveFType, roiName) # this roiName comes from existing objectives of RS + if objectiveFType == None: # since this is the last plan, we want to add all (non-existent) objectives + fTypeCondition = True + + if fTypeCondition and not roiIgnoreCondition: + print (f' - [updateKNOObjectivesinRStation()] Adding new objective for {roiName} of type {fType}') + newObjective = objectivesFromPath[updatedFromPathObjectivesStatus[key]['idx']] + print (f' --- [updateKNOObjectivesinRStation()] newObjective for roi: {newObjective.roi_name} and fType: {newObjective.function_type} with weight: {newObjective.weight}') + if newObjective.weight > 0: + newObjective.apply() + + else: + print (f' - [updateKNOObjectivesinRStation()] No objectives found in RS for plan {planName}') + + updateObjectiveStatus = True + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + # DEBUG (for config.KEYNAME_RING_LT_PTV_DL1, ghost) + if 1: + for rsIdx, objectiveFromRS in enumerate(objectivesFromRS): + try: + existingRoiName = str(objectiveFromRS.ForRegionOfInterest.Name) + existingWeight = objectiveFromRS.DoseFunctionParameters.Weight + try: + existingFunctionType = objectiveFromRS.DoseFunctionParameters.FunctionType + except: + existingFunctionType = config.KEY_FTYPE_DOSEFALLOFF + if existingRoiName == config.KEYNAME_RING_LT_PTV_DL1: + print ('') + print (' - [DEBUG2][plan={}] existingRoiName: {}, existingFunctionType: {}, existingWeight: {}'.format(planName, existingRoiName, existingFunctionType, existingWeight)) + print ('') + + elif config.KEYNAME_GHOST in existingRoiName.lower() or config.REGEX_DFO in existingRoiName.lower(): + if existingRoiName not in [config.KEYNAME_GHOST_CRANIAL, config.KEYNAME_EAR_L_GHOST, config.KEYNAME_EAR_R_GHOST]: + print ('') + print (' - [DEBUG2][plan={}] existingRoiName: {}, existingFunctionType: {}, existingWeight: {}'.format(planName, existingRoiName, existingFunctionType, existingWeight)) + print ('') + except: + pass + + + return updateObjectiveStatus + +def airOverride(setMaterial=True): + + try: + case = connect.get_current(config.KEYNAME_CASE) + REGEX_AIR_ROI = 'override lucht' + + # Step 1 - Check if override lucht exists + roiExists = False + roiName = None + for roi in case.PatientModel.RegionsOfInterest: + # print (roi.Name, REGEX_AIR_ROI) + if re.search(REGEX_AIR_ROI, roi.Name.lower()) is not None: + roiExists = True + roiName = roi.Name + break + + # Step 2 - If yes, then override material + print ('\n\n ======================================================================== \n\n') + print (' - [airOverride()] roiExists: ', roiExists) + if roiExists and setMaterial: + case.PatientModel.RegionsOfInterest[roiName].SetRoiMaterial(Material=case.PatientModel.Materials[1]) + sys.stdout.write(f' - [airOverride()] Overriding {roiName} with material: {case.PatientModel.Materials[1].Name}') + print (f' - [airOverride()] Overriding {roiName} with material: {case.PatientModel.Materials[1].Name}') + else: + print (' - [airOverride()] No override lucht found \n\n') + print ('\n\n ======================================================================== \n\n') + + except: + traceback.print_exc() + +######################################################## +# NTCP # +######################################################## + +def getNTCPVals(patientID, plans, pathPatient): + + try: + + print (f' - [getNTCPVals()] Getting NTCP values for patient: {patientID}') + + # Step 1 - Other params + params = { + config.KEY_NTCP_PLAN1 : None + , config.KEY_NTCP_PLAN2: None + , config.KEY_NTCP_TREATMENT_TYPE : helpers.TreatmentType.PRIMARY + , config.KEY_NTCP_TUMOR_LOCATION : helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX # NtcpKnoDysphagia.TumorLocationType.{ORAL_CAVITY, PHARYNX, LARYNX} + , config.KEY_NTCP_BASELINE_XEROSTOMIA: helpers.NtcpKnoXerostomia.BaselineType.NONE # NtcpKnoXerostomia.BaselineType.{NONE, LITTLE, SEVERE} + , config.KEY_NTCP_BASELINE_DYSPHAGIA : helpers.NtcpKnoDysphagia.BaselineType.GRADE_0_1 # NtcpKnoDysphagia.BaselineType.{GRADE_0_1, GRADE_2, GRADE_3_4} + , config.KEY_NTCP_IS_TOTAL_LARYNGECTOMY: False + , config.KEY_PAROTIDS_REMOVED : False + } + + # Step 2 - main + res = {} + if params[config.KEY_NTCP_TUMOR_LOCATION] is not None: + for plan in plans: + + # Step 2.1 - Init + params[config.KEY_NTCP_PLAN1] = plan + res[plan] = {} + + initStatus = False + try: + objNTCP = helpers.KNONTCP(params) + initStatus = True + except: + traceback.print_exc() + res[plan] = { + config.KEY_XERO_GRADE2: -1 + , config.KEY_XERO_GRADE3: -1 + , config.KEY_DYS_GRADE2 : -1 + , config.KEY_DYS_GRADE3 : -1 + } + + # Step 2.2 - Calculate + if initStatus: + try: + tmpX2 = objNTCP.ntcp_xerostomia_grade_2_values + if tmpX2 is not None: + if tmpX2[config.KEY_NTCP_PLAN_1] is not None: + res[plan][config.KEY_XERO_GRADE2] = round(tmpX2[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + else: + res[plan][config.KEY_XERO_GRADE2] = -1 + else: + res[plan][config.KEY_XERO_GRADE2] = -1 + except: + res[plan][config.KEY_XERO_GRADE2] = -1 + + try: + tmpX3 = objNTCP.ntcp_xerostomia_grade_3_values + if tmpX3 is not None: + if tmpX3[config.KEY_NTCP_PLAN_1] is not None: + res[plan][config.KEY_XERO_GRADE3] = round(tmpX3[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + else: + res[plan][config.KEY_XERO_GRADE3] = -1 + else: + res[plan][config.KEY_XERO_GRADE3] = -1 + except: + res[plan][config.KEY_XERO_GRADE3] = -1 + + try: + tmpD2 = objNTCP.ntcp_dysphagia_grade_2_values + if tmpD2 is not None: + if tmpD2[config.KEY_NTCP_PLAN_1] is not None: + res[plan][config.KEY_DYS_GRADE2] = round(tmpD2[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + else: + res[plan][config.KEY_DYS_GRADE2] = -1 + else: + res[plan][config.KEY_DYS_GRADE2] = -1 + except: + res[plan][config.KEY_DYS_GRADE2] = -1 + + try: + tmpD3 = objNTCP.ntcp_dysphagia_grade_3_values + if tmpD3 is not None: + if tmpD3[config.KEY_NTCP_PLAN_1] is not None: + res[plan][config.KEY_DYS_GRADE3] = round(tmpD3[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + else: + res[plan][config.KEY_DYS_GRADE3] = -1 + else: + res[plan][config.KEY_DYS_GRADE3] = -1 + except: + res[plan][config.KEY_DYS_GRADE3] = -1 + + # Step 3 - Save + # print (f' - [getNTCPVals()] res: {res}') + pathPatientNTCP = Path(pathPatient) / config.FILENAME_NTCP_PHOTON_RESULTS + with open(str(pathPatientNTCP), 'w', encoding='utf-8') as fp: + json.dump(res, fp, indent=4) + + print (f' - [getNTCPVals()] Done NTCP calculations for {patientID}') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +######################################################## +# AUTO-HELPERS # +######################################################## +def doAutoContouring(): + + autoContourStatus = False + t0 = time.time() + try: + + # Step 0 - Init + print (f' \n\n ===================== start autocontouring ===================== \n\n') + patient = helpers.rayStationSave() + case = patient.Cases[0] + + # Step 1.1 - Get OARs to include + oarDuplicateStatus = helpers.checkOARDuplicateStatus(case) + oarsToInclude = [] + for oar in oarDuplicateStatus: + if not oarDuplicateStatus[oar]: + oarsToInclude.append(oar) + print (' - [doAutoContouring()] OARs pending to auto-contour: ', oarsToInclude) + + # Step 1.2 - Run OAR segmentation + if len(oarsToInclude): + _ = helpers.rayStationSave() + case.SetCurrent() # Why == Potential Error: "The case to which the examination belongs mist be selected" + examination = case.Examinations[0] + _ = examination.RunOarSegmentation(ModelName="RSL Head and Neck CT", ExaminationsAndRegistrations={ 'CT 1': None }, RoisToInclude=oarsToInclude) + helpers.rayStationSave() + else: + print (' - [doAutoContouring()] No OARs to auto-contour') + + # Step 1.3 - Check aut--contours status + ## If they dont have the config.KEY_AUTOCONTOUR_SUFFIX, then they were not initially present, so simply rename them + oarDuplicateStatus = helpers.checkOARDuplicateStatus(case) + for oar in oarDuplicateStatus: + if not oarDuplicateStatus[oar]: + print (' - [doAutoContouring()] OAR auto-contour not present: ', oar) + if oar == config.KEYNAME_CAVITY_ORAL: + newName = config.KEYNAME_ORAL_CAVITY + config.KEY_AUTOCONTOUR_SUFFIX + case.PatientModel.RegionsOfInterest[oar].Name = newName + case.PatientModel.RegionsOfInterest[newName].Color = config.OAR_DUPLICATE_COLOR_RGB_STRING + print (' - [doAutoContouring()] Renamed OAR: ', oar, ' --> ', newName) + elif oar == config.KEYNAME_ESOPHAGUS_S: + try: + newName = config.KEYNAME_ESOPHAGUS + config.KEY_AUTOCONTOUR_SUFFIX + case.PatientModel.RegionsOfInterest[oar].Name = newName + case.PatientModel.RegionsOfInterest[newName].Color = config.OAR_DUPLICATE_COLOR_RGB_STRING + print (' - [doAutoContouring()] Renamed OAR: ', oar, ' --> ', newName) + except: + traceback.print_exc() + else: + case.PatientModel.RegionsOfInterest[oar].Name = oar + config.KEY_AUTOCONTOUR_SUFFIX + + # Step 1.4 - Do ROI Algebra + helpers.doROIAlgebraForAutoContours(case) + _ = helpers.rayStationSave() + timeTaken = round(time.time() - t0, 2) + print (f' \n\n ===================== end autocontouring (in {timeTaken} s) ===================== \n\n') + return True, timeTaken + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + timeTaken = round(time.time() - t0, 2) + return False, timeTaken + +######################################################## +# MAIN(S) # +######################################################## + +# Func 1 +def uploadRTAppsDataToRStation(pathPatient, planName, forceUpload=False, forceCurrentPatient=False): + """ + Params + ------ + pathPatient: Path, Path to patient folder containing CT, RTDose, RTPlan, RTStruct + - e.g. Path('H:\\').joinpath('RayStationData', 'LUMC-Dose', 'HCAI-Dose-1', '2.25.52093085334020578701550802539023326955') + - CT_{} + - RTDOSE_{} + - RTPLAN_{} + - RTSTRUCT_{} + planName: String, check if this plan exists in RayStation. If not, upload + forceUpload: Bool, If True, will upload data even if patient already exists. Useful when debugging + forceCurrentPatient: Bool, If True, will use patient currently open in RayStation + + NOTE: Above folder structure is required for this function to work + """ + + # Step 0 - Init + assert forceUpload + forceCurrentPatient < 2, ' - [uploadRTAppsDataToRStation] forceUpload and forceCurrentPatient cannot be both True!' + helpers.rayStationSave() + db = connect.get_current(config.KEYNAME_RS_PATIENTDB) + patientCTBool, patientRTStructBool, patientRTPlanBool, patientRTDoseBool = False, False, False, False + + # Step 1 - Create patient + if pathPatient.exists(): + + # Step 2 - Get patient paths + pathPatientCTFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_CT)] + pathPatientRTDoseFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTDOSE)] + pathPatientRTPlanFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTPLAN)] + pathPatientRTStructFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTSTRUCT)] + + if len(pathPatientCTFolders) == 1 and len(pathPatientRTDoseFolders) == 1 and len(pathPatientRTPlanFolders) == 1 and len(pathPatientRTStructFolders) == 1: + pathPatientCTFolder = pathPatientCTFolders[0] + pathPatientRTDoseFolder = pathPatientRTDoseFolders[0] + pathPatientRTPlanFolder = pathPatientRTPlanFolders[0] + pathPatientRTStructFolder = pathPatientRTStructFolders[0] + + # Step 1.1 - Upload CT + patientIdCheck = Path(pathPatient).parts[-2] + if not forceCurrentPatient: + try: + print ('\n\n - [uploadRTAppsDataToRStation()] --------------------- Step 1: Checking for patientId={}, plan={} (forceUpload={}) \n\n'.format(patientIdCheck, planName, forceUpload)) + if forceUpload: patient = None + else : patient = helpers.getPatientById(patientIdCheck, lastFind=True) + if patient is None: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading patient data for patientId={} \n\n'.format(patientIdCheck)) + if Path(pathPatientCTFolder).exists(): + patientID, studyUID, seriesUID = helpers.updateCTDicoms(pathPatientCTFolder) + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading CT data for {} ... \n\n'.format(patientID)) + warnings = db.ImportPatientFromPath(Path=str(pathPatientCTFolder), SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUID), 'SeriesInstanceUID': str(seriesUID)}], ImportFilter='', BrachyPlanImportOverrides={}) + patient = helpers.rayStationSave() + # patient.Cases[0].SetCurrent() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploaded CT data for {} \n\n'.format(helpers.getPatientIdentifier(patient))) + helpers.setEquipmentName() + patientCTBool = True + else: + print ('\n - [uploadRTAppsDataToRStation()][{}] --------------------- Step 1.1: No CT data found: {} \n\n'.format(patientID, pathPatientCTFolder)) + else: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Patient already exists \n\n') + patientCTBool = True + except: + traceback.print_exc() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Issue with CT data upload: {} \n\n'.format(pathPatientCTFolder)) + patientCTBool = False + else: + print ('\n\n [uploadRTAppsDataToRStation()][DEBUG] --------------------- Step 1: Not uploading for patientID={} (forceCurrentPatient={}) \n\n'.format(patientIdCheck, forceCurrentPatient)) + patientCTBool = True + print ('\n ---------------------------------------------------------- ') + + # Step 1.2 - Upload (existing) RTStruct/RTPLAN/RTDOSE + patient = helpers.rayStationSave() + if patient is not None and patientCTBool: + case = patient.Cases[0] + casename = case.CaseName + patientID = patient.PatientID + + # Step 1.2 - Upload (existing) RTStruct + try: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Upload RTStruct data \n\n'.format(helpers.getPatientIdentifier(patient))) + if not helpers.checkForRTStruct(case): + pathPatientRTStructFile = [each for each in pathPatientRTStructFolder.iterdir()][0] + if Path(pathPatientRTStructFile).exists(): + studyUIDRTStruct, seriesUIDRTStruct = helpers.updateRTStructDicoms(pathPatientRTStructFile) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploading RTStruct data ... \n\n'.format(helpers.getPatientIdentifier(patient))) + warningsRTStruct = patient.ImportDataFromPath(Path=str(pathPatientRTStructFolder), CaseName=casename, SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTStruct), 'SeriesInstanceUID': str(seriesUIDRTStruct)}], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploaded RTStruct data \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTStructBool = True + helpers.rayStationSave() + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No RTStruct data found: {} \n\n'.format(helpers.getPatientIdentifier(patient), pathPatientRTStructFile)) + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: RTStruct data already exists \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTStructBool = True + except: + traceback.print_exc() + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Issue with RTStruct data upload: {} \n\n'.format(helpers.getPatientIdentifier(patient), pathPatientRTStructFile)) + patientRTStructBool = False + + print ('\n ---------------------------------------------------------- ') + + # Step 1.3 - Upload (existing) RTPlan/RTDose + if patientCTBool and patientRTStructBool: + if not helpers.checkForRTPlan(case, planName): + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Upload RTPlan/RTDose data \n\n'.format(helpers.getPatientIdentifier(patient))) + studyUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-2] + seriesUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-1].split('_')[-1] + studyUIDRTDose = Path(pathPatientRTDoseFolder).parts[-2] + seriesUIDRTDose = Path(pathPatientRTDoseFolder).parts[-1].split('_')[-1] + + studyID = helpers.updateRTPlanDicoms(pathPatientRTPlanFolder) + # studyUIDRTPlan = studyID + # studyUIDRTDose = studyID + + pathTempRTDoseAndRTPlanFolder = helpers.getTempRTDoseAndRTPlanFolder(pathPatientRTPlanFolder, pathPatientRTDoseFolder) + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploading RTPlan/RTDose data ... \n\n'.format(helpers.getPatientIdentifier(patient))) + warningsRTPlan = patient.ImportDataFromPath(Path=str(pathTempRTDoseAndRTPlanFolder), CaseName=casename, SeriesOrInstances=[ + {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTPlan), 'SeriesInstanceUID': str(seriesUIDRTPlan)} + , {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTDose), 'SeriesInstanceUID': str(seriesUIDRTDose)} + ], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + shutil.rmtree(pathTempRTDoseAndRTPlanFolder) + patientRTPlanBool = True + patientRTDoseBool = True + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploaded RTPlan/RTDose data \n\n'.format(helpers.getPatientIdentifier(patient))) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: RTPlan/RTDose already exists \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTPlanBool = True + patientRTDoseBool = True + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Not uploading RTPlan/RTDose due to CT/RTStruct issue \n\n'.format(patientID)) + print ('\n ---------------------------------------------------------- ') + + else: + if patientCTBool is False: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No CT to be found for: \n\n'.format(pathPatientCTFolder)) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No patient to be found: \n\n'.format(patientID)) + + else: + print(' - [uploadRTAppsDataToRStation()] Patient folder does not contain one CT, RTDOSE, RTPLAN and RTSTRUCT folder: ', pathPatient) + + else: + print(" - [uploadRTAppsDataToRStation()] Patient folder does not exist: ", pathPatient) + + if patientCTBool and patientRTStructBool and patientRTPlanBool and patientRTDoseBool: + return True + else: + return None + +# Func 2 +def copyPlanAndOptimize(basePlanName, newPlanName + , pathKNOObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType + , optSteps, optReset, pathIsoDoseXML=None + , debug=False): + + t0 = time.time() + optimizeValue = -1 + timeTaken = -1 + try: + + # Step 0 - for console printing (while debugging across multiple consoles) + patient, _, _, _ = helpers.getPatientAndPlan(basePlanName) + sys.stdout.write(f' \n\n ===================== [{patient.Name}] start for {newPlanName} ===================== \n') + + if 1: + airOverride(setMaterial=True) + + # Step 1 - Copy Plan + print (f' \n\n ===================== start for {newPlanName} ===================== \n') + keyPlanCSTerm = config.SUFFIX_PLAN_CS.format(config.PREFIX_CLINICAL_CONTOURS) + keyPlanCSAutoTerm = config.SUFFIX_PLAN_CS.format(config.PREFIX_AUTOMATED_CONTOURS) + createArcBeam = False + if keyPlanCSTerm in newPlanName or keyPlanCSAutoTerm in newPlanName: + createArcBeam = True + print (f' - [copyPlanAndOptimize()][{newPlanName}] createArcBeam: {createArcBeam}') + copyPlanStatus = helpers.copyPlan(basePlanName, newPlanName, createArcBeam=createArcBeam, debug=debug) + if not copyPlanStatus: + return False, optimizeValue, timeTaken + + # Step 2 - Upload/update objectives + objectiveStatus = uploadORUpdateObjectives(newPlanName, pathKNOObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType) + if not objectiveStatus: + return False, optimizeValue, timeTaken + + # Step 3 - Optimize + optimizeStatus, optimizeValue = optimizePlan(newPlanName, optSteps, reset=optReset, pathIsoDoseXML=pathIsoDoseXML) + if optimizeStatus: + _ = helpers.rayStationSave() + + timeTaken = round(time.time() - t0, 2) + print (f' \n\n ===================== end for {newPlanName} (in {timeTaken} s) ===================== \n\n') + return optimizeStatus, optimizeValue, timeTaken + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + timeTaken = round(time.time() - t0, 2) + return False, optimizeValue, timeTaken + +# Func 0 +def main(params): + + # Step 1.1 - Init patient details + try: + + if 1: + pathPatient = params[config.KEYNAME_PATH_PATIENT] + forceUploadPatient = params[config.KEYNAME_FORCE_UPLOAD_PATIENT] + forceCurrentPatient = params[config.KEYNAME_FORCE_CURRENT_PATIENT] + + # Step 1.2 - Init plan details + keynameCancerType = params[config.KEYNAME_CANCER_TYPE] + planNameOG = config.KEYNAME_PLAN_OG.format(keynameCancerType) + + planNameCS = config.KEYNAME_PLAN_CS.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + planNameDFO = config.KEYNAME_PLAN_DFO.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + planNameDFO2 = config.KEYNAME_PLAN_DFO2.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + planNameEUD = config.KEYNAME_PLAN_EUD.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + planNameFinal = config.KEYNAME_PLAN_FINAL.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + planNameFinal2 = config.KEYNAME_PLAN_FINAL2.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) + + planNameCSAuto = config.KEYNAME_PLAN_CS.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameDFOAuto = config.KEYNAME_PLAN_DFO.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameDFO2Auto = config.KEYNAME_PLAN_DFO2.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameEUDAuto = config.KEYNAME_PLAN_EUD.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameFinalAuto = config.KEYNAME_PLAN_FINAL.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameFinal2Auto = config.KEYNAME_PLAN_FINAL2.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + + optStepsRe = params[config.KEYNAME_OPT_STEPS_RE] + + # Step 1.3 - Init objective details + pathKNOObjectivesClassSolution = params[config.KEYNAME_PATH_CLASSSOL] + pathKNOObjectives = params[config.KEYNAME_PATH_OBJECTIVES] + + # Step 1.4 - Init evaluation details + pathDVHParams = params[config.KEYNAME_PATH_DVHPARAMS] + pathIsoDoseXML = params[config.KEYNAME_PATH_ISODOSEXML] + + # Step 1.5 - Get contour type + contourTypeNow = params[config.KEYNAME_CONTOUR_TYPE] + + # Step 1.6 - Updates (for auto-contours) + if contourTypeNow is not config.KEYNAME_CONTOUR_EVAL: + pathKNOObjectivesClassSolutionAuto = helpers.updateKNOXMLForAutoContours(pathKNOObjectivesClassSolution, pathKNOObjectives, potentialRoisToRenameInAuto=config.PHOTON_POTENTIAL_ROIS_TO_RENAME_FOR_AUTO) + if pathKNOObjectivesClassSolutionAuto is None: + return 0 + pathKNOObjectivesAuto = helpers.updateKNOXMLForAutoContours(pathKNOObjectives, pathKNOObjectives, potentialRoisToRenameInAuto=config.PHOTON_POTENTIAL_ROIS_TO_RENAME_FOR_AUTO) + if pathKNOObjectivesAuto is None: + return 0 + + # Step 1.6 - for console printing (while debugging across multiple consoles) + try: + sys.stdout.write(f' \n\n ===================== start for {pathPatient} [{planNameOG}]===================== \n') + except: + traceback.print_exc() + + ############## Step 2 - Upload data to RayStation + try: + + tTotal = time.time() + + if contourTypeNow in [config.KEYNAME_CONTOUR_CLINICAL, config.KEYNAME_CONTOUR_AUTO]: + uploadRTAppsStatus = uploadRTAppsDataToRStation(pathPatient, planName=planNameOG, forceUpload=forceUploadPatient, forceCurrentPatient=forceCurrentPatient) + print ('\n - [main] uploadRTAppsStatus: ', uploadRTAppsStatus) + if contourTypeNow == config.KEYNAME_CONTOUR_CLINICAL: + print ('\n\n ------------------------- ') + print (' - Computing dose on clinical contours') + print (' ------------------------- \n\n') + if uploadRTAppsStatus: + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyPlanAndOptimize(planNameOG, planNameCS + , pathKNOObjectivesClassSolution, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + dfoPlanStatus, dfoPlanValue, dfoPlanTime = copyPlanAndOptimize(planNameCS, planNameDFO + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatus: ', dfoPlanStatus) + if dfoPlanStatus: + dfo2PlanStatus, dfo2PlanValue, dfo2PlanTime = copyPlanAndOptimize(planNameDFO, planNameDFO2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatus: ', dfo2PlanStatus) + if dfo2PlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyPlanAndOptimize(planNameDFO2, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyPlanAndOptimize(planNameEUD, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameDFO, planNameDFO2, planNameEUD, planNameFinal, planNameFinalAuto] + , planTimes ={planNameOG:-1, planNameCS:classSolPlanTime, planNameDFO:dfoPlanTime, planNameDFO2:dfo2PlanTime, planNameEUD:eudPlanTime, planNameFinal:finalPlanTime, planNameFinalAuto:-1} + , planValues={planNameOG:-1, planNameCS:classSolPlanValue, planNameDFO:dfoPlanValue, planNameDFO2:dfo2PlanValue, planNameEUD:eudPlanValue, planNameFinal:finalPlanValue, planNameFinalAuto:-1} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_CLINICAL + ) + + elif contourTypeNow == config.KEYNAME_CONTOUR_AUTO: + print ('\n\n ------------------------- ') + print (' - Computing dose on auto contours') + print (' ------------------------- \n\n') + if uploadRTAppsStatus: + autoContouringStatus, autoContouringTime = doAutoContouring() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + if autoContouringStatus: + classSolPlanStatusAuto, classSolPlanValueAuto, classSolPlanTimeAuto = copyPlanAndOptimize(planNameOG, planNameCSAuto + , pathKNOObjectivesClassSolutionAuto, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatusAuto: ', classSolPlanStatusAuto) + if classSolPlanStatusAuto: + dfoPlanStatusAuto, dfoPlanValueAuto, dfoPlanTimeAuto = copyPlanAndOptimize(planNameCSAuto, planNameDFOAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatusAuto: ', dfoPlanStatusAuto) + if dfoPlanStatusAuto: + dfo2PlanStatusAuto, dfo2PlanValueAuto, dfo2PlanTimeAuto = copyPlanAndOptimize(planNameDFOAuto, planNameDFO2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatusAuto: ', dfo2PlanStatusAuto) + if dfo2PlanStatusAuto: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatuAutos: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + resAuto = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCSAuto, planNameDFOAuto, planNameDFO2Auto, planNameEUDAuto, planNameFinalAuto, planNameFinal] + , planTimes = {planNameOG:-1, planNameCSAuto: classSolPlanTimeAuto , planNameDFOAuto: dfoPlanTimeAuto , planNameDFO2Auto:dfo2PlanTimeAuto , planNameEUDAuto: eudPlanTimeAuto , planNameFinalAuto: finalPlanTimeAuto , planNameFinal:-1} + , planValues = {planNameOG:-1, planNameCSAuto: classSolPlanValueAuto, planNameDFOAuto: dfoPlanValueAuto, planNameDFO2Auto:dfo2PlanValueAuto, planNameEUDAuto: eudPlanValueAuto, planNameFinalAuto: finalPlanValueAuto, planNameFinal:-1} + , planExtras = {config.KEYNAME_AUTOCONTOURING_TIME:autoContouringTime} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_AUTO) + if DEBUG_PDB: pdb.set_trace() + + elif contourTypeNow == config.KEYNAME_CONTOUR_ALL: + + uploadRTAppsStatus = uploadRTAppsDataToRStation(pathPatient, planName=planNameOG, forceUpload=forceUploadPatient, forceCurrentPatient=forceCurrentPatient) + print ('\n - [main] uploadRTAppsStatus: ', uploadRTAppsStatus) + + if 1: + print ('\n\n ------------------------- ') + print (' - Computing dose on clinical contours') + print (' ------------------------- \n\n') + if uploadRTAppsStatus: + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyPlanAndOptimize(planNameOG, planNameCS + , pathKNOObjectivesClassSolution, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + dfoPlanStatus, dfoPlanValue, dfoPlanTime = copyPlanAndOptimize(planNameCS, planNameDFO + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatus: ', dfoPlanStatus) + if dfoPlanStatus: + dfo2PlanStatus, dfo2PlanValue, dfo2PlanTime = copyPlanAndOptimize(planNameDFO, planNameDFO2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatus: ', dfo2PlanStatus) + if dfo2PlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyPlanAndOptimize(planNameDFO2, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyPlanAndOptimize(planNameEUD, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameDFO, planNameDFO2, planNameEUD, planNameFinal] + , planTimes ={planNameOG:-1, planNameCS:classSolPlanTime, planNameDFO:dfoPlanTime, planNameDFO2:dfo2PlanTime, planNameEUD:eudPlanTime, planNameFinal:finalPlanTime} + , planValues={planNameOG:-1, planNameCS:classSolPlanValue, planNameDFO:dfoPlanValue, planNameDFO2:dfo2PlanValue, planNameEUD:eudPlanValue, planNameFinal:finalPlanValue} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_CLINICAL) + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + + if 1: + print ('\n\n ------------------------- ') + print (' - Computing dose on auto contours') + print (' ------------------------- \n\n') + if uploadRTAppsStatus: + autoContouringStatus, autoContouringTime = doAutoContouring() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + if autoContouringStatus: + classSolPlanStatusAuto, classSolPlanValueAuto, classSolPlanTimeAuto = copyPlanAndOptimize(planNameOG, planNameCSAuto + , pathKNOObjectivesClassSolutionAuto, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatusAuto: ', classSolPlanStatusAuto) + if classSolPlanStatusAuto: + dfoPlanStatusAuto, dfoPlanValueAuto, dfoPlanTimeAuto = copyPlanAndOptimize(planNameCSAuto, planNameDFOAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatusAuto: ', dfoPlanStatusAuto) + if dfoPlanStatusAuto: + dfo2PlanStatusAuto, dfo2PlanValueAuto, dfo2PlanTimeAuto = copyPlanAndOptimize(planNameDFOAuto, planNameDFO2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatusAuto: ', dfo2PlanStatusAuto) + if dfo2PlanStatusAuto: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatuAutos: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + resAuto = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCSAuto, planNameDFOAuto, planNameDFO2Auto, planNameEUDAuto, planNameFinalAuto] + , planTimes = {planNameOG:-1, planNameCSAuto: classSolPlanTimeAuto , planNameDFOAuto: dfoPlanTimeAuto , planNameDFO2Auto:dfo2PlanTimeAuto , planNameEUDAuto: eudPlanTimeAuto , planNameFinalAuto: finalPlanTimeAuto} + , planValues = {planNameOG:-1, planNameCSAuto: classSolPlanValueAuto, planNameDFOAuto: dfoPlanValueAuto, planNameDFO2Auto:dfo2PlanValueAuto, planNameEUDAuto: eudPlanValueAuto, planNameFinalAuto: finalPlanValueAuto} + , planExtras = {config.KEYNAME_AUTOCONTOURING_TIME:autoContouringTime} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_AUTO) + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + + if 1: + if uploadRTAppsStatus: + print ('\n\n ------------------------- ') + print (' - Compare clinical stats ') + print (' ------------------------- \n\n') + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameCSAuto, planNameFinal, planNameFinalAuto] + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_ALL) + + print ('\n\n ------------------------- ') + print (' - NTCP Modeling ') + print (' ------------------------- \n\n') + patientID = Path(pathPatient).parts[-2] + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + + elif contourTypeNow == config.KEYNAME_CONTOUR_EVAL: + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameCSAuto, planNameFinal, planNameFinalAuto] + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_ALL) + + print ('\n\n ------------------------- ') + print (' - NTCP Modeling ') + print (' ------------------------- \n\n') + patientID = Path(pathPatient).parts[-2] + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + + elif contourTypeNow == config.KEYNAME_CONTOUR_DEBUG: + + # upload + if 0: + uploadRTAppsStatus = uploadRTAppsDataToRStation(pathPatient, planName=planNameOG, forceUpload=forceUploadPatient, forceCurrentPatient=forceCurrentPatient) + print ('\n - [main] uploadRTAppsStatus: ', uploadRTAppsStatus) + + # for R2-R5 updates + if 0: + try: + dfoPlanStatus, dfoPlanValue, dfoPlanTime = copyPlanAndOptimize(planNameCS, planNameDFO + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] dfoPlanStatus: ', dfoPlanStatus) + if dfoPlanStatus: + dfo2PlanStatus, dfo2PlanValue, dfo2PlanTime = copyPlanAndOptimize(planNameDFO, planNameDFO2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatus: ', dfo2PlanStatus) + if dfo2PlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyPlanAndOptimize(planNameDFO2, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyPlanAndOptimize(planNameEUD, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameDFO, planNameDFO2, planNameEUD, planNameFinal, planNameFinalAuto] + , planTimes ={planNameOG:-1, planNameDFO:dfoPlanTime, planNameDFO2:dfo2PlanTime, planNameEUD:eudPlanTime, planNameFinal:finalPlanTime} + , planValues={planNameOG:-1, planNameDFO:dfoPlanValue, planNameDFO2:dfo2PlanValue, planNameEUD:eudPlanValue, planNameFinal:finalPlanValue} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_CLINICAL + , save=True + ) + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + except: + traceback.print_exc() + + # upload + auto-contouring + if 0: + uploadRTAppsStatus = uploadRTAppsDataToRStation(pathPatient, planName=planNameOG, forceUpload=forceUploadPatient, forceCurrentPatient=forceCurrentPatient) + print ('\n - [main] uploadRTAppsStatus: ', uploadRTAppsStatus) + if uploadRTAppsStatus: + autoContouringStatus, autoContouringTime = doAutoContouring() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + + # for A1-A5 updates + if 0: + autoContouringStatus, autoContouringTime = doAutoContouring() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + if autoContouringStatus: + classSolPlanStatusAuto, classSolPlanValueAuto, classSolPlanTimeAuto = copyPlanAndOptimize(planNameOG, planNameCSAuto + , pathKNOObjectivesClassSolutionAuto, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatusAuto: ', classSolPlanStatusAuto) + if classSolPlanStatusAuto: + dfoPlanStatusAuto, dfoPlanValueAuto, dfoPlanTimeAuto = copyPlanAndOptimize(planNameCSAuto, planNameDFOAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatusAuto: ', dfoPlanStatusAuto) + if dfoPlanStatusAuto: + dfo2PlanStatusAuto, dfo2PlanValueAuto, dfo2PlanTimeAuto = copyPlanAndOptimize(planNameDFOAuto, planNameDFO2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatusAuto: ', dfo2PlanStatusAuto) + if dfo2PlanStatusAuto: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatuAutos: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + resAuto = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCSAuto, planNameDFOAuto, planNameDFO2Auto, planNameEUDAuto, planNameFinalAuto, planNameFinal] + , planTimes = {planNameOG:-1, planNameCSAuto: classSolPlanTimeAuto , planNameDFOAuto: dfoPlanTimeAuto , planNameDFO2Auto:dfo2PlanTimeAuto , planNameEUDAuto: eudPlanTimeAuto , planNameFinalAuto: finalPlanTimeAuto , planNameFinal:-1} + , planValues = {planNameOG:-1, planNameCSAuto: classSolPlanValueAuto, planNameDFOAuto: dfoPlanValueAuto, planNameDFO2Auto:dfo2PlanValueAuto, planNameEUDAuto: eudPlanValueAuto, planNameFinalAuto: finalPlanValueAuto, planNameFinal:-1} + , planExtras = {config.KEYNAME_AUTOCONTOURING_TIME:autoContouringTime} + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_AUTO) + if DEBUG_PDB: pdb.set_trace() + + # For A2/A3/A4/A5 updates + if 0: + try: + dfoPlanStatusAuto, dfoPlanValueAuto, dfoPlanTimeAuto = copyPlanAndOptimize(planNameCSAuto, planNameDFOAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfoPlanStatusAuto: ', dfoPlanStatusAuto) + if dfoPlanStatusAuto: + dfo2PlanStatusAuto, dfo2PlanValueAuto, dfo2PlanTimeAuto = copyPlanAndOptimize(planNameDFOAuto, planNameDFO2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatusAuto: ', dfo2PlanStatusAuto) + if dfo2PlanStatusAuto: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatuAutos: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + print ('\n\n ------------------------- ') + print (' - Compare clinical stats ') + print (' ------------------------- \n\n') + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameCSAuto, planNameFinal, planNameFinalAuto] + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_ALL + ) + + print ('\n\n ------------------------- ') + print (' - NTCP Modeling ') + print (' ------------------------- \n\n') + patientID = Path(pathPatient).parts[-2] + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + except: + traceback.print_exc() + + # For A3/A4/A5 updates + if 0: + try: + dfo2PlanStatusAuto, dfo2PlanValueAuto, dfo2PlanTimeAuto = copyPlanAndOptimize(planNameDFOAuto, planNameDFO2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_DOSEFALLOFF + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] dfo2PlanStatusAuto: ', dfo2PlanStatusAuto) + if dfo2PlanStatusAuto: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatuAutos: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + print ('\n\n ------------------------- ') + print (' - Compare clinical stats ') + print (' ------------------------- \n\n') + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameCSAuto, planNameFinal, planNameFinalAuto] + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_ALL + ) + + print ('\n\n ------------------------- ') + print (' - NTCP Modeling ') + print (' ------------------------- \n\n') + patientID = Path(pathPatient).parts[-2] + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + except: + traceback.print_exc() + + # for A4/A5 updates + if 0: + try: + eudPlanStatusAuto, eudPlanValueAuto, eudPlanTimeAuto = copyPlanAndOptimize(planNameDFO2Auto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatusAuto: ', eudPlanStatusAuto) + if eudPlanStatusAuto: + finalPlanStatusAuto, finalPlanValueAuto, finalPlanTimeAuto = copyPlanAndOptimize(planNameEUDAuto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatusAuto: ', finalPlanStatusAuto) + if finalPlanStatusAuto: + print ('\n\n ------------------------- ') + print (' - Compare clinical stats ') + print (' ------------------------- \n\n') + res = helpers.evaluatePlans(pathDVHParams + , planNames=[planNameOG, planNameCS, planNameCSAuto, planNameFinal, planNameFinalAuto] + , pathPatient=pathPatient + , contourType=config.KEYNAME_CONTOUR_ALL + ) + + print ('\n\n ------------------------- ') + print (' - NTCP Modeling ') + print (' ------------------------- \n\n') + patientID = Path(pathPatient).parts[-2] + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + print ('\n - [main] Total time passed: ', round(time.time()-tTotal, 2), ' seconds') + + except: + traceback.print_exc() + + # NTCP + if 0: + patientID = Path(pathPatient).parts[-2] + patientRSObj = helpers.loadPatientUsingID(patientID) + if patientRSObj is not None: + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + else: + print (' - [main] patientRSObj is None') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +if __name__ == "__main__": + + ################################################################################### + # Step 0 - Init project paths + ################################################################################### + DIR_THIS = Path(__file__).parent.absolute() # P:\RayStationScripts + DIR_DATA = Path(DIR_THIS).parent.absolute().joinpath('RayStationData') + + ################################################################################### + # Step 1 - Logging details + ################################################################################### + if 1: + DIR_LOGS = Path(DIR_THIS).joinpath('_logs', 'logsPhoton', 'run6') + loggerTimestamp = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + pathLogFile = Path(DIR_LOGS).joinpath("photon-log_{}.txt".format(loggerTimestamp)) + Path(pathLogFile).parent.mkdir(parents=True, exist_ok=True) + logging.basicConfig(filename=str(pathLogFile), level=logging.DEBUG, filemode='a', format='%(asctime)s[%(levelname)s] %(funcName)s: %(message)s',datefmt='%d/%m/%Y %I:%M:%S %p') + + ################################################################################### + # Step 2 - Get common files + ################################################################################### + pathKNOObjectivesClassSolution = Path(DIR_DATA).joinpath('assets', 'objective-template-photon-kno.xml') + pathDVHParams = Path(DIR_DATA).joinpath('assets', 'eval-template-photon.csv') + pathIsoDoseXML = Path(DIR_DATA).joinpath('assets', 'isodose.xml'); # pathIsoDoseXML = None + + ################################################################################### + # Step 3 - Specific patient paths (of data extracted from RTPACS) + ################################################################################### + + if 1: + # HCAI-Dose-1 + if 1: + pathPatient = Path(DIR_DATA).joinpath('') + pathKNOObjectivesClinical = Path(pathPatient).joinpath('.xml') + + keynameCancerType = '1A OROFARKL' + optStepsRe = 4 + + forceUploadPatient = True + forceCurrentPatient = False + + contourType = config.KEYNAME_CONTOUR_ALL # config.KEYNAME_CONTOUR_EVAL, config.KEYNAME_CONTOUR_AUTO, config.KEYNAME_CONTOUR_CLINICAL, config.KEYNAME_CONTOUR_ALL + pathPatient = Path(DIR_DATA).joinpath('LUMC-Dose', 'HCAI-Dose-x40', '2.25.143009416517888739377675690506069860146') + pathKNOObjectivesClinical = Path(pathPatient).joinpath('1017729.xml') + + keynameCancerType = '1A HYPOFARKL' + optStepsRe = 4 + + forceUploadPatient = False + forceCurrentPatient = True + + contourType = config.KEYNAME_CONTOUR_EVAL # [config.{KEYNAME_CONTOUR_EVAL, KEYNAME_CONTOUR_AUTO, KEYNAME_CONTOUR_CLINICAL, KEYNAME_CONTOUR_ALL, KEYNAME_CONTOUR_DEBUG}] + + params = { + + # Patient Case related + config.KEYNAME_PATH_PATIENT : pathPatient + , config.KEYNAME_FORCE_UPLOAD_PATIENT : forceUploadPatient + , config.KEYNAME_FORCE_CURRENT_PATIENT: forceCurrentPatient + + # Paths + , config.KEYNAME_PATH_CLASSSOL : pathKNOObjectivesClassSolution + , config.KEYNAME_PATH_OBJECTIVES : pathKNOObjectivesClinical + , config.KEYNAME_PATH_DVHPARAMS : pathDVHParams + , config.KEYNAME_PATH_ISODOSEXML : pathIsoDoseXML + + # Plan parameters + , config.KEYNAME_CANCER_TYPE : keynameCancerType + , config.KEYNAME_OPT_STEPS_RE : optStepsRe + , config.KEYNAME_CONTOUR_TYPE : contourType + } + print ('\n -------------------------- [main] params: ') + print (params) + + ################################################################################### + # Step 3 - Run main + ################################################################################### + main(params) + +# To run code in RS console (and print to console) +""" +import sys +import runpy +from pathlib import Path + +sys.path.append(str(Path('H:\\').joinpath('RayStationScripts'))) +pathFile = str(Path('H:\\').joinpath('RayStationScripts', 'hnDoseEval-v4.py')) +_ = runpy.run_path(pathFile, run_name='__main__') + +""" \ No newline at end of file diff --git a/src/hnDoseProtons.py b/src/hnDoseProtons.py new file mode 100644 index 0000000..6353de1 --- /dev/null +++ b/src/hnDoseProtons.py @@ -0,0 +1,1391 @@ +""" +This script is used for proton planning (using beam settings and objective function weights from an existing proton plan) +It expects + - the clinical plan to already be present in RStation (along with objectives) + - assets/objective-template-proton-kno.xml + - assets/eval-template-proton-robust.json + - assets/isodose.xml + +Run the script from "__main__" +""" + +# Import Raystation libraries +import connect + +# Import private libraries +import hnDoseEvalHelpers as helpers +import hnDoseConfig as config + +# Import public libraries +import re +import sys +import pdb +import time +import json +import shutil +import logging +import datetime +import traceback +import numpy as np +from pathlib import Path + +DEBUG_PDB = True +def print(*args, **kwargs): + logging.info(" ".join(map(str, args)), **kwargs) + +######################################################## +# HELPERS # +######################################################## + +def checkIfRoiIgnore(planName, objectiveFType, roiName): + + # Step 1 - Init + roisFullIgnore = [] + roisPartialIgnore = [] + roiIgnoreBool = False + + planEUDSuffix = config.SUFFIX_PLAN_DFO.format(config.PREFIX_CLINICAL_CONTOURS) # R2 + planEUDAutoSuffix = config.SUFFIX_PLAN_DFO.format(config.PREFIX_AUTOMATED_CONTOURS) + planEUD2Suffix = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_CLINICAL_CONTOURS) # R3 + planEUD2AutoSuffix = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_AUTOMATED_CONTOURS) + planFinalSuffix = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_CLINICAL_CONTOURS) # R5 + planFinalAutoSuffix = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_AUTOMATED_CONTOURS) + + # Step 2 - Ignore check on certain ROIs + if roiName in [config.KEYNAME_BRAINSTEM, config.KEYNAME_BRAINSTEM + config.KEY_3MM_SUFFIX + , config.KEYNAME_SPINALCORD, config.KEYNAME_SPINALCORD + config.KEY_3MM_SUFFIX + , config.KEYNAME_GHOST_CRANIAL, config.KEYNAME_EAR_L_GHOST, config.KEYNAME_EAR_R_GHOST + ]: + return roiIgnoreBool + + # Step 2 - Get ROIs to ignore (while updating objectives) + roisPartialIgnoreBasic = [ + config.REGEX_ROI_HOT, config.REGEX_ROI_HEET + , config.REGEX_KOUD, config.REGEX_COLD + , config.REGEX_ROI_MINDOSE, config.REGEX_ROI_MAXDOSE + , config.REGEX_ONDER, config.REGEX_OVER + , config.REGEX_DFO + , config.REGEX_ONDERDOSERING + , config.REGEX_ROI_HOSTPSOTS + , config.REGEX_CAUDAAL, config.REGEX_CAUD + ] + if (planEUDSuffix in planName or planEUDAutoSuffix in planName) and objectiveFType == config.KEY_FTYPE_MAXEUD: + roisFullIgnore = [config.KEYNAME_BODY] # does not matter as it is Opt_Body in protons + roisPartialIgnore = roisPartialIgnoreBasic + [config.KEYNAME_3MM] # the extra part compared to EUD2 is KEYNAME_3MM + + elif (planEUD2Suffix in planName or planEUD2AutoSuffix in planName) and objectiveFType == config.KEY_FTYPE_MAXEUD: + roisFullIgnore = [config.KEYNAME_BODY, config.KEYNAME_RING_PTV_DL2, config.KEYNAME_GHOST] + roisPartialIgnore = roisPartialIgnoreBasic + + elif (planFinalSuffix in planName or planFinalAutoSuffix in planName) and objectiveFType == None: + roisFullIgnore = [config.KEYNAME_BODY] + roisPartialIgnore = [] + + # Step 3 - Check if ROI should be ignored + for roiFullIgnore in roisFullIgnore: + if roiName == roiFullIgnore: + roiIgnoreBool = True + break + + for roiPartialIgnore in roisPartialIgnore: + if re.search(roiPartialIgnore, str(roiName).lower()) is not None: + roiIgnoreBool = True + break + + return roiIgnoreBool + +def updateObjectivesForProton(planName, objectivesFromRS, objectivesFromPath, objectiveFType): + """ + Called from uploadORUpdateObjectives() + + Params: + ------- + planName: str + objectivesFromRS: list + objectivesFromPath: list + objectiveFType: str, ['DoseFallOff', 'DoseFallOff', 'MaxEUD', None] + """ + updateObjectiveStatus = False + + try: + + # Step 1 - Init + patient, _, _, _ = helpers.getPatientAndPlan(planName) + planDFO2TermSuffix = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_CLINICAL_CONTOURS) + planDFO2AutoTermSuffix = config.SUFFIX_PLAN_DFO2.format(config.PREFIX_AUTOMATED_CONTOURS) + planFinalTermSuffix = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_CLINICAL_CONTOURS) # R5 + planFinalAutoTermSuffix = config.SUFFIX_PLAN_FINAL.format(config.PREFIX_AUTOMATED_CONTOURS) # A5 + + # Step 2 - Get objectives from file (a.k.a path) + updatedFromPathObjectivesStatus = {} + for pathIdx, objectiveFromPath in enumerate(objectivesFromPath): + newRoiName = objectiveFromPath.roi_name + newFunctionType = objectiveFromPath.function_type + newWeight = objectiveFromPath.weight + newRobust = objectiveFromPath.is_robust + if newWeight == 0: + continue + + newKey = f'{newRoiName}-{newFunctionType}-{newRobust}' + updatedFromPathObjectivesStatus[newKey] = {'exists': False, 'idx':pathIdx} + + # Step 4 - Get existing objectives and update them + if len(objectivesFromRS) > 0: + print ('\n\n - [INFO][updateObjectivesForProton()][Patient={}] Updating Objectives ... '.format(helpers.getPatientIdentifier(patient))) + + # Step 4.1 - Update weights of existing objectives (based on function-type and roi-name) + for rsIdx, objectiveFromRS in enumerate(objectivesFromRS): + try: + + # Step 4.1.1 - Get roiName, weight, fType + existingRoiName = objectiveFromRS.ForRegionOfInterest.Name + existingWeight = objectiveFromRS.DoseFunctionParameters.Weight + existingRobust = objectiveFromRS.UseRobustness + try : existingFunctionType = objectiveFromRS.DoseFunctionParameters.FunctionType + except: existingFunctionType = config.KEY_FTYPE_DOSEFALLOFF + if existingRoiName == config.KEYNAME_BODY: continue + # [DEBUG] + if 0: + print (' - [DEBUG][updateObjectivesForProton()] \troi: {}, \tfunctionType: {}, \tweight: {}'.format(existingRoiName, existingFunctionType, existingWeight)) + + # Step 4.1.2 - Make note of existing objectives that are in new objectives + existingKey = f'{existingRoiName}-{existingFunctionType}-{existingRobust}' + if existingKey in updatedFromPathObjectivesStatus: + updatedFromPathObjectivesStatus[existingKey]['exists'] = True + + # Step 4.1.3 - Check if existing objective is in new objectives + for objectiveFromPath in objectivesFromPath: + newRoiName = objectiveFromPath.roi_name + newFunctionType = objectiveFromPath.function_type + newWeight = objectiveFromPath.weight + newRobust = objectiveFromPath.is_robust + if newWeight == 0: + continue + functionMatchBool = newFunctionType == objectiveFType + if planFinalTermSuffix in planName or planFinalAutoTermSuffix in planName: + functionMatchBool = True # i.e update all rois + + robustMatchBool = existingRobust == newRobust + + if functionMatchBool and robustMatchBool: + if not checkIfRoiIgnore(planName, objectiveFType, newRoiName): + if existingRoiName == newRoiName and existingFunctionType == newFunctionType: + + # Step 4.1.1 - Update weight + objectivesFromRS[rsIdx].DoseFunctionParameters.Weight = newWeight + print (f' -- [updateObjectivesForProton()] roi: {existingRoiName}, \tfType: {existingFunctionType}, \tweight: {existingWeight} --> {newWeight}') + + # Step 4.1.2 - Update dose level(s) + if existingFunctionType == config.KEY_FTYPE_MAXEUD: + existingDoseLevel = objectivesFromRS[rsIdx].DoseFunctionParameters.DoseLevel + existingEudParameterA = objectivesFromRS[rsIdx].DoseFunctionParameters.EudParameterA + objectivesFromRS[rsIdx].DoseFunctionParameters.DoseLevel = objectiveFromPath.doselevel + objectivesFromRS[rsIdx].DoseFunctionParameters.EudParameterA = objectiveFromPath.eud_parameter_a + print (f' --- [updateObjectivesForProton()] \tDoseLevel: {existingDoseLevel} --> {objectiveFromPath.doselevel}') + print (f' --- [updateObjectivesForProton()] \tEudParameterA: {existingEudParameterA} --> {objectiveFromPath.eud_parameter_a}') + elif existingFunctionType == config.KEY_FTYPE_DOSEFALLOFF: + if planDFO2TermSuffix in planName or planDFO2AutoTermSuffix in planName: # [Ref: https://iprova.lumc.nl/Portal/#/document/1fc74366-40c1-4b84-a653-0455b6c891f8 (Vervolgens voor beide opties)] + print (f' --- [updateObjectivesForProton()] \tHighDoseLevel: {objectiveFromRS.DoseFunctionParameters.HighDoseLevel} --> {objectiveFromPath.high_doselevel}') + print (f' --- [updateObjectivesForProton()] \tLowDoseLevel : {objectiveFromRS.DoseFunctionParameters.LowDoseLevel} --> {objectiveFromPath.low_doselevel}') + objectivesFromRS[rsIdx].DoseFunctionParameters.HighDoseLevel = objectiveFromPath.high_doselevel + objectivesFromRS[rsIdx].DoseFunctionParameters.LowDoseLevel = objectiveFromPath.low_doselevel + + elif existingFunctionType == config.KEY_FTYPE_MAXDOSE: + pass + + # Step 4.1.3 - For debugging purposes + key = f'{newRoiName}-{newFunctionType}-{newRobust}' + updatedFromPathObjectivesStatus[key]['updated'] = True + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + else: + print (f' - [updateKNOObjectivesinRStation()] No objectives found in RS for plan {planName}') + + + # Step 5 - Add new objectives [if 1) they dont exist, and if they match 2) function-type and 3) roiName conditions] + print ('') + for key in updatedFromPathObjectivesStatus: + if updatedFromPathObjectivesStatus[key]['exists'] is False: + roiName = key.split('-')[0] + fType = key.split('-')[1] + isRobust = key.split('-')[2] + + fTypeCondition = fType == objectiveFType # only if ftType in [DoseFallOff, MaxEUD] + roiIgnoreCondition = checkIfRoiIgnore(planName, objectiveFType, roiName) # this roiName comes from existing objectives of RS + if objectiveFType == None: # since this is the last plan, we want to add all (non-existent) objectives + fTypeCondition = True + + if fTypeCondition and not roiIgnoreCondition: + print (f' - [updateObjectivesForProton()] Adding new objective for {roiName} of type {fType}') + newObjective = objectivesFromPath[updatedFromPathObjectivesStatus[key]['idx']] + print (f' --- [updateObjectivesForProton()] newObjective for roi: {newObjective.roi_name} and fType: {newObjective.function_type} with weight: {newObjective.weight}') + if newObjective.weight > 0: + newObjective.apply() + + updateObjectiveStatus = True + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + + return updateObjectiveStatus + +def uploadOrUpdateProtonObjectives(planName, pathKNOProtonObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType): + + # Step 1 - Init + objectiveStatus = False + + # Step 2 - Boilerplate code for get patient and plans + _, case, plan, beamset = helpers.getPatientAndPlan(planName) + + # Step 3 - Get objectives + objectivesFromPath = helpers.getObjectivesFromPath(plan, beamset, pathKNOProtonObjectives) + objectivesFromRS = helpers.getObjectivesFromPlan(plan, beamset) + + # Step 3.1 - Filter an objective + if 1: + for objIdx, objectiveFromPath in enumerate(objectivesFromPath): + try: + if objectiveFromPath.roi_name == config.KEYNAME_OPT_BODY and objectiveFromPath.function_type == config.KEY_FTYPE_MAXDOSE: + if float(objectiveFromPath.doselevel) < 7000: + del objectivesFromPath[objIdx] + except: + pass + + # Step 4 - Upload/Update Objectives + if uploadObjectivesBool: + if len(objectivesFromRS) == 0 or forceObjectives: + objectiveStatus = helpers.uploadObjectivesToRS(plan, beamset, objectivesFromPath) + else: + print(' - [uploadORUpdateObjectives()] Objectives already exist, not uploading') + + elif updateObjectivesBool: + if len(objectivesFromRS) > 0: + objectiveStatus = updateObjectivesForProton(planName, objectivesFromRS, objectivesFromPath, objectiveFType) + else: + print(' - [uploadORUpdateObjectives()] No objectives found, not updating') + + # Step 5 - Do sanity check + helpers.doPlanSanityCheck(case, planName) + + return objectiveStatus + +def robustEvaluationOld(planName, force=False): + + try: + + # Step 0 - Init + patientObj, caseObj, planObj, beamsetObj = helpers.getPatientAndPlan(planName) + + if force: + radiationSetScenarioGroups = caseObj.TreatmentDelivery.RadiationSetScenarioGroups + for id_ in range(len(radiationSetScenarioGroups)): + if radiationSetScenarioGroups[id_].Name == planName: + print (f' - [robustEvaluation()] Deleting scenario group: {planName}') + radiationSetScenarioGroups[id_].DeleteRadiationSetScenarioGroup() + helpers.rayStationSave() + + boolScenarioAvailable = False + for id_ in range(len(radiationSetScenarioGroups)): + if radiationSetScenarioGroups[id_].Name == planName: + boolScenarioAvailable = True + break + + if boolScenarioAvailable is False: + print (f' - [robustEvaluation()] Creating scenario group: {planName}') + retval_0 = beamsetObj.CreateRadiationSetScenarioGroup(Name=planName + , UseIsotropicPositionUncertainty=False + , PositionUncertaintySuperior=0.3, PositionUncertaintyInferior=0.3 + , PositionUncertaintyPosterior=0.3, PositionUncertaintyAnterior=0.3 + , PositionUncertaintyLeft=0.3, PositionUncertaintyRight=0.3 + , PositionUncertaintyFormation="AxesAndDiagonalEndPoints", PositionUncertaintyList=None + , DensityUncertainty=3, NumberOfDensityDiscretizationPoints=2 + , ComputeScenarioDosesAfterGroupCreation=False) + + print (f' - [robustEvaluation()] Computing dose using IonMonteCarlo algo') + beamsetObj.ComputeDose(ComputeBeamDoses=True, DoseAlgorithm="IonMonteCarlo", ForceRecompute=True) + + print (f' - [robustEvaluation()] Computing scenario group dose values: {planName}') + retval_0.ComputeScenarioGroupDoseValues() + helpers.rayStationSave() + print (f' - [robustEvaluation()] Done computing scenario group dose values: {planName}') + + else: + print (f' - [robustEvaluation()] Scenario group already exists: {planName}') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +def robustEvaluationViaUI(planName, force=False): + + try: + + # Step 1 - Init + _, caseObj, _ , beamSetObj = helpers.getPatientAndPlan(planName, debug=True) + + # Step 2 - Delete scenario group if force + if force: + radiationSetScenarioGroups = caseObj.TreatmentDelivery.RadiationSetScenarioGroups + for id_ in range(len(radiationSetScenarioGroups)): + try: + if radiationSetScenarioGroups[id_].Name == planName: + print (f' - [robustEvaluationViaUI()] Deleting scenario group: {planName}') + radiationSetScenarioGroups[id_].DeleteRadiationSetScenarioGroup() + helpers.rayStationSave() + break + except: + pass + + # Step 3 - Confirm scenarioGroup does not exist + boolScenarioAvailable = False + radiationSetScenarioGroups = caseObj.TreatmentDelivery.RadiationSetScenarioGroups + for id_ in range(len(radiationSetScenarioGroups)): + if radiationSetScenarioGroups[id_].Name == planName: + boolScenarioAvailable = True + break + + # Step 4 - Create scenario group if not exists (and do robust eval) + if boolScenarioAvailable is False: + print (f' - [robustEvaluationViaUI()] Creating scenario group: {planName}') + retval_0 = beamSetObj.CreateRadiationSetScenarioGroup(Name=planName + , UseIsotropicPositionUncertainty=False + , PositionUncertaintySuperior=0.3, PositionUncertaintyInferior=0.3 + , PositionUncertaintyPosterior=0.3, PositionUncertaintyAnterior=0.3 + , PositionUncertaintyLeft=0.3, PositionUncertaintyRight=0.3 + , PositionUncertaintyFormation="AxesAndDiagonalEndPoints", PositionUncertaintyList=None + , DensityUncertainty=3, NumberOfDensityDiscretizationPoints=2 + , ComputeScenarioDosesAfterGroupCreation=False) + + print (f' - [robustEvaluationViaUI()] Computing dose using IonMonteCarlo algo') + beamSetObj.ComputeDose(ComputeBeamDoses=True, DoseAlgorithm="IonMonteCarlo", ForceRecompute=True) + + print (f' - [robustEvaluationViaUI()] Computing scenario group dose values: {planName}') + retval_0.ComputeScenarioGroupDoseValues() + helpers.rayStationSave() + print (f' - [robustEvaluationViaUI()] Done computing scenario group dose values: {planName}') + else: + print (f' - [robustEvaluationViaUI()] Scenario group already exists: {planName}') + + except: + traceback.print_exc() + +def robustEvaluationViaSelf(planName, pathRobustTemplate, pathRobustResultsSave, verbose=False): + + try: + + def getClinicalGoalsFromDose(doseEvalObj): + """ + For evalFunc in planObj.TreatmentCourse.EvaluationSetup.EvaluationFunctions: + - evalFunc.ForRegionOfInterest.Name : self-explanatory + - evalFunc.PlanningGoal.Type : 'DoseAtVolume', 'DoseAtAbsoluteVolume', 'DoseAtRelativeVolume', 'VolumeAtDose', 'AbsoluteVolumeAtDose', 'RelativeVolumeAtDose' + - evalFunc.PlanningGoal.GoalCriteria : 'AtMost', 'AtLeast' + - evalFunc.PlanningGoal.AcceptanceLevel: float + """ + + # Step 0 - Init + resObj = {} + + try: + + # Step 1 - Init + _, caseObj, planObj, beamSetObj = helpers.getPatientAndPlan(planName) + evalFuncs = planObj.TreatmentCourse.EvaluationSetup.EvaluationFunctions + + # Step 2 - Loop over funcs + for evalFunc in evalFuncs: + try: + value = evalFunc.GetClinicalGoalValueForEvaluationDose(DoseDistribution=doseEvalObj, ScaleFractionDoseToBeamSet=True) + except: + value = evalFunc.GetClinicalGoalValue() + roiGoalkey = '-'.join([evalFunc.ForRegionOfInterest.Name, evalFunc.PlanningGoal.Type, evalFunc.PlanningGoal.GoalCriteria, str(evalFunc.PlanningGoal.AcceptanceLevel), str(evalFunc.PlanningGoal.ParameterValue)]) + tmp = [value, evalFunc.PlanningGoal.GoalCriteria, evalFunc.PlanningGoal.AcceptanceLevel] + if evalFunc.PlanningGoal.AcceptanceLevel > 0: + if evalFunc.PlanningGoal.GoalCriteria == config.KEYNAME_ATMOST: + if value <= evalFunc.PlanningGoal.AcceptanceLevel: resObj[roiGoalkey] = tmp + [config.KEYNAME_PASS] + else : resObj[roiGoalkey] = tmp + [config.KEYNAME_FAIL] + + elif evalFunc.PlanningGoal.GoalCriteria == config.KEYNAME_ATLEAST: + if value >= evalFunc.PlanningGoal.AcceptanceLevel: resObj[roiGoalkey] = tmp + [config.KEYNAME_PASS] + else : resObj[roiGoalkey] = tmp + [config.KEYNAME_FAIL] + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + return resObj + + + def getKeyMapping(robustTemplateObj, thisObj): + + # Step 0 - Init + mapping = {} + + try: + + # Step 1 - Loop over keys + roiGoalValueKeys = list(thisObj.keys()) + for roiGoalValueKey in roiGoalValueKeys: + thisRoiName = roiGoalValueKey.split('-')[0] + thisGoalType = roiGoalValueKey.split('-')[1] + thisGoalCriteria = roiGoalValueKey.split('-')[2] + thisAcceptanceValue = roiGoalValueKey.split('-')[3] + thisParameterValue = roiGoalValueKey.split('-')[4] + mapping[roiGoalValueKey] = '' + + for templateKey in robustTemplateObj.keys(): + templateKeyRoiName = templateKey.split(' ')[0] + templateKeyGoal = templateKey[templateKey.find('[')+1: templateKey.find(']')] + + roiCheckBool = thisRoiName == templateKeyRoiName + if roiCheckBool: + if thisRoiName == 'CTV_DL1': + perc = int(round(float(thisParameterValue)/config.CTV_DL1_MAX,2) * 100) + if str(perc) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + elif thisRoiName == 'CTV_DL2': + perc = int(round(float(thisParameterValue)/config.CTV_DL2_MAX,2) * 100) + if str(perc) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + elif thisRoiName == 'Brainstem_Core': + if str(int(float(thisAcceptanceValue))) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + elif thisRoiName == 'Brainstem_Surf': + if str(int(float(thisAcceptanceValue))) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + elif thisRoiName == 'SpinalCord_Core': + if str(int(float(thisAcceptanceValue))) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + elif thisRoiName == 'SpinalCord_Surf': + if str(int(float(thisAcceptanceValue))) in templateKeyGoal: + mapping[roiGoalValueKey] = templateKey + break + else: + mapping[roiGoalValueKey] = templateKey + break + + except: + traceback.print_exc() + + return mapping + + # Step 1 - Init + _, caseObj, planObj, beamSetObj = helpers.getPatientAndPlan(planName, debug=True) + radiationSetScenarioGroups = caseObj.TreatmentDelivery.RadiationSetScenarioGroups + res = {config.KEYNAME_NOMINAL_DOSE: {}, config.KEYNAME_MAX_DOSE: {}, config.KEYNAME_MIN_DOSE: {}, config.KEYNAME_SCENARIO_DOSE: {}} + dose3DMin = [] + dose3DMax = [] + + # Step 2 - FInd idx of radiationSetScenarioGroups + groupIdx = -1 + for id_ in range(len(radiationSetScenarioGroups)): + try: + if radiationSetScenarioGroups[id_].Name == planName: + groupIdx = id_ + except: + pass + + if groupIdx > -1: + print (f' - [robustEvaluationViaSelf()] Found scenario group: {planName} and doing robust eval on all scenarios') + for scenarioId, scenarioObj in enumerate(caseObj.TreatmentDelivery.RadiationSetScenarioGroups[groupIdx].DiscreteFractionDoseScenarios): + if verbose: + print (f' - [robustEvaluationViaSelf()] Computing dose for scenario: {scenarioId}') + # print (scenarioId, scenarioObj.PerturbedDoseProperties.IsoCenterShift, scenarioObj.PerturbedDoseProperties.RelativeDensityShift) + + # Step 2.2 - Compute dose for scenario + beamSetObj.ComputePerturbedDose(DensityPerturbation=scenarioObj.PerturbedDoseProperties.RelativeDensityShift + , PatientShift=scenarioObj.PerturbedDoseProperties.IsoCenterShift + , OnlyOneDosePerImageSet=True, ExaminationNames=[caseObj.Examinations[0].Name], FractionNumbers=[0] + ) + + # Step 2.3 - Get doseObj and dose values + doseEvalObj = caseObj.TreatmentDelivery.FractionEvaluations[0].DoseOnExaminations[0].DoseEvaluations[0] + dose3Darray = doseEvalObj.DoseValues.DoseData + + # Step 2.4 - Compute min and max dose + if len(dose3DMin) == 0: dose3DMin = dose3Darray + else : dose3DMin = np.minimum(dose3DMin, dose3Darray) + if len(dose3DMax) == 0: dose3DMax = dose3Darray + else : dose3DMax = np.maximum(dose3DMax, dose3Darray) + + # Step 2.5 - Compute clinical goals for each perturbed dose + res[config.KEYNAME_SCENARIO_DOSE][scenarioId] = getClinicalGoalsFromDose(doseEvalObj) + + # Step 2.99 - Debug + # if scenarioId > -1: + # break + + # Step 3 - Set dose values to min and max dose + doseEvalObj.SetDoseValues(Array=dose3DMax.flatten(), CalculationInfo='Voxelwise max', DoseAlgorithm='Undefined') + res[config.KEYNAME_MAX_DOSE] = getClinicalGoalsFromDose(doseEvalObj) + + doseEvalObj.SetDoseValues(Array=dose3DMin.flatten(), CalculationInfo='Voxelwise min', DoseAlgorithm='Undefined') + res[config.KEYNAME_MIN_DOSE] = getClinicalGoalsFromDose(doseEvalObj) + + # Step 4 - Get norminal dose + doseEvalObj = planObj.TreatmentCourse.TotalDose # type=CompositeDose + res[config.KEYNAME_NOMINAL_DOSE] = getClinicalGoalsFromDose(doseEvalObj) + + # Step 5 - Compute pass/fail (and save voxelwise-man/max values) + if Path(pathRobustTemplate).exists(): + with open(str(pathRobustTemplate), 'r') as fp: + robustTemplate = json.load(fp) + + # Step 5.0 - Init + keyMapper = getKeyMapping(robustTemplate, res[config.KEYNAME_SCENARIO_DOSE][0]) + + # Step 5.1 - Compute pass percentage + roiKeys = list(res[config.KEYNAME_SCENARIO_DOSE][0].keys()) + for roiKey in roiKeys: + + try: + roiTemplateKey = keyMapper[roiKey] + + if len(roiTemplateKey) > 0: + + # Step 5.1.1 - Collect for KEYNAME_SCENARIOS + roiPassCount = 0 + for scenarioId in res[config.KEYNAME_SCENARIO_DOSE].keys(): + if res[config.KEYNAME_SCENARIO_DOSE][scenarioId][roiKey][-1] == config.KEYNAME_PASS: + roiPassCount += 1 + robustTemplate[roiTemplateKey][config.KEYNAME_SCENARIOS].append(round(res[config.KEYNAME_SCENARIO_DOSE][scenarioId][roiKey][0],4)) + robustTemplate[roiTemplateKey][config.KEYNAME_PASSED] = round(roiPassCount/len(res[config.KEYNAME_SCENARIO_DOSE].keys()), 4) + + # Step 5.1.2 - Collect for KEYNAME_NOMINAL_DOSE + robustTemplate[roiTemplateKey][config.KEYNAME_NOMINAL_DOSE] = round(res[config.KEYNAME_NOMINAL_DOSE][roiKey][0], 4) + + # Step 5.1.3 - Collect for KEYNAME_MIN_DOSE and KEYNAME_MAX_DOSE + if roiTemplateKey in config.OBJECTIVES_ROIS_TUMOR: + robustTemplate[roiTemplateKey][config.KEYNAME_VOXELWISE_WORST] = round(res[config.KEYNAME_MIN_DOSE][roiKey][0], 4) + else: + robustTemplate[roiTemplateKey][config.KEYNAME_VOXELWISE_WORST] = round(res[config.KEYNAME_MAX_DOSE][roiKey][0], 4) + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + # Step 6 - Save + sys.stdout.write(f' - [robustEvaluationViaSelf()] Saving robustTemplate to: {pathRobustResultsSave}') + print (f' - [robustEvaluationViaSelf()] Saving robustTemplate to: {pathRobustResultsSave}') + with open(str(pathRobustResultsSave), 'w') as fp: + robustTemplateWrite = {planName: robustTemplate} + json.dump(robustTemplateWrite, fp, indent=4) + + else: + print (f' - [robustEvaluationViaSelf()] Robust template not found: {pathRobustTemplate}') + + else: + print (f' - [robustEvaluationViaSelf()] Scenario group not found for {planName}') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +def robustEvaluation(planName, pathRobustTemplate, pathPatient, force=False, verbose=False): + + try: + + t0 = time.time() + # Step 0 - Init + pathRobustResultsSave = Path(pathPatient) / config.FILENAME_ROBUST_EVAL_RESULTS.format(planName) + + # Step 1 - Do UI-based robust eval + robustEvaluationViaUI(planName, force=force) + + # Step 2 - Do self-based robust eval + robustEvaluationViaSelf(planName, pathRobustTemplate, pathRobustResultsSave, verbose=verbose) + print (f' - [robustEvaluation()] Done robust eval for {planName} in {round(time.time() - t0, 2)} s') + + except: + traceback.print_exc() + pdb.set_trace() + +######################################################## +# NTCP # +######################################################## + +def getNTCPVals(patientID, plans, pathPatient): + + try: + + print (f' - [getNTCPVals()] Getting NTCP values for patient: {patientID}') + + # Step 0 - Plans and tumor types + patientObjOld = { + 'HCAI-Dose-P1': ['1F PVFOTONEN', None] # None + , 'HCAI-Dose-P2': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P3': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P4': ['1A KNOKL', None] # None + , 'HCAI-Dose-P5': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P6': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P7': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P8': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P9': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P10': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P11': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P12': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P13': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P14': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P15': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P16': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P17': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P18': ['1A KNOKL', None] # None + , 'HCAI-Dose-P19': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P20': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P21': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P22': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P23': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P24': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P25': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P26': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P27': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P28': ['1A TONGKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P29': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P30': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P31': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + , 'HCAI-Dose-P32': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.ORAL_CAVITY] + } + + patientObj = { + 'HCAI-Dose-P1': ['1F PVFOTONEN', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] # None + , 'HCAI-Dose-P2': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P3': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P4': ['1A KNOKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] # None + , 'HCAI-Dose-P5': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P6': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P7': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P8': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P9': ['1A HYPOFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P10': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P11': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P12': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P13': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P14': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P15': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P16': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P17': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P18': ['1A KNOKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] # None + , 'HCAI-Dose-P19': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P20': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P21': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P22': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P23': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P24': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P25': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P26': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P27': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P28': ['1A TONGKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P29': ['1A LARYNXKL', helpers.NtcpKnoDysphagia.TumorLocationType.LARYNX] + , 'HCAI-Dose-P30': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P31': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + , 'HCAI-Dose-P32': ['1A OROFARKL', helpers.NtcpKnoDysphagia.TumorLocationType.PHARYNX] + } + + # Step 1 - Other params + params = { + config.KEY_NTCP_PLAN1 : None + , config.KEY_NTCP_PLAN2: None + , config.KEY_NTCP_TREATMENT_TYPE : helpers.TreatmentType.PRIMARY + , config.KEY_NTCP_TUMOR_LOCATION : patientObj[patientID][1] # NtcpKnoDysphagia.TumorLocationType.{ORAL_CAVITY, PHARYNX, LARYNX} + , config.KEY_NTCP_BASELINE_XEROSTOMIA: helpers.NtcpKnoXerostomia.BaselineType.NONE # NtcpKnoXerostomia.BaselineType.{NONE, LITTLE, SEVERE} + , config.KEY_NTCP_BASELINE_DYSPHAGIA : helpers.NtcpKnoDysphagia.BaselineType.GRADE_0_1 # NtcpKnoDysphagia.BaselineType.{GRADE_0_1, GRADE_2, GRADE_3_4} + , config.KEY_NTCP_IS_TOTAL_LARYNGECTOMY: False + , config.KEY_PAROTIDS_REMOVED : False + } + + # Step 2 - main + res = {} + if params[config.KEY_NTCP_TUMOR_LOCATION] is not None: + for plan in plans: + + # Step 2.1 - Init + params[config.KEY_NTCP_PLAN1] = plan + res[plan] = {} + objNTCP = helpers.KNONTCP(params) + + # Step 2.2 - Calculate + tmp = objNTCP.ntcp_xerostomia_grade_2_values + if config.KEY_NTCP_PLAN_1 in tmp: + res[plan][tmp[config.KEY_NTCP_MODEL_NAME]] = round(tmp[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + + tmp = objNTCP.ntcp_xerostomia_grade_3_values + if config.KEY_NTCP_PLAN_1 in tmp: + res[plan][tmp[config.KEY_NTCP_MODEL_NAME]] = round(tmp[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + + tmp = objNTCP.ntcp_dysphagia_grade_2_values + if config.KEY_NTCP_PLAN_1 in tmp: + res[plan][tmp[config.KEY_NTCP_MODEL_NAME]] = round(tmp[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + + tmp = objNTCP.ntcp_dysphagia_grade_3_values + if config.KEY_NTCP_PLAN_1 in tmp: + res[plan][tmp[config.KEY_NTCP_MODEL_NAME]] = round(tmp[config.KEY_NTCP_PLAN_1][config.KEY_NTCP_PLAN_VALUE], 5) + + # Step 3 - Save + pathPatientNTCP = Path(pathPatient) / config.FILENAME_NTCP_RESULTS + with open(str(pathPatientNTCP), 'w') as fp: + json.dump(res, fp, indent=4) + + print (f' - [getNTCPVals()] Done NTCP calculations for {patientID}') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +######################################################## +# AUTO-HELPERS # +######################################################## + +def doAutoContouringForProton(): + + autoContourStatus = False + t0 = time.time() + try: + + # Step 0 - Init + print (f' \n\n ===================== start autocontouring (for protons) ===================== \n\n') + patient = helpers.rayStationSave() + case = patient.Cases[0] + examinationName = case.Examinations[0].Name + + # Step 1.1 - Get OARs to include + oarDuplicateStatus = helpers.checkOARDuplicateStatus(case) + oarsToInclude = [] + for oar in oarDuplicateStatus: + if not oarDuplicateStatus[oar]: + oarsToInclude.append(oar) + print (' - [doAutoContouringForProton()] OARs pending to auto-contour: ', oarsToInclude) + + # Step 1.2 - Run OAR segmentation + if len(oarsToInclude): + _ = helpers.rayStationSave() + case.SetCurrent() # Why == Potential Error: "The case to which the examination belongs mist be selected" + examination = case.Examinations[0] + _ = examination.RunOarSegmentation(ModelName="RSL Head and Neck CT", ExaminationsAndRegistrations={ examinationName: None }, RoisToInclude=oarsToInclude) + helpers.rayStationSave() + else: + print (' - [doAutoContouringForProton()] No OARs to auto-contour') + + # Step 1.3 - Check aut--contours status + ## If they dont have the config.KEY_AUTOCONTOUR_SUFFIX, then they were not initially present, so simply rename them + oarDuplicateStatus = helpers.checkOARDuplicateStatus(case) + for oar in oarDuplicateStatus: + if not oarDuplicateStatus[oar]: + print (' - [doAutoContouringForProton()] OAR auto-contour not present: ', oar) + if oar == config.KEYNAME_CAVITY_ORAL: + newName = config.KEYNAME_ORAL_CAVITY + config.KEY_AUTOCONTOUR_SUFFIX + case.PatientModel.RegionsOfInterest[oar].Name = newName + case.PatientModel.RegionsOfInterest[newName].Color = config.OAR_DUPLICATE_COLOR_RGB_STRING + print (' - [doAutoContouringForProton()] Renamed OAR: ', oar, ' --> ', newName) + elif oar == config.KEYNAME_ESOPHAGUS_S: + try: + newName = config.KEYNAME_ESOPHAGUS + config.KEY_AUTOCONTOUR_SUFFIX + case.PatientModel.RegionsOfInterest[oar].Name = newName + case.PatientModel.RegionsOfInterest[newName].Color = config.OAR_DUPLICATE_COLOR_RGB_STRING + print (' - [doAutoContouringForProton()] Renamed OAR: ', oar, ' --> ', newName) + except: + traceback.print_exc() + else: + case.PatientModel.RegionsOfInterest[oar].Name = oar + config.KEY_AUTOCONTOUR_SUFFIX + + # Step 1.4 - Do ROI Algebra + helpers.doROIAlgebraForProtonAutoContours(case) + _ = helpers.rayStationSave() + timeTaken = round(time.time() - t0, 2) + print (f' \n\n ===================== end autocontouring (for protons) (in {timeTaken} s) ===================== \n\n') + return True, timeTaken + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + timeTaken = round(time.time() - t0, 2) + return False, timeTaken + +######################################################## +# MAIN(S) # +######################################################## + +# Func 1 +def uploadRTAppsDataToRStation(pathPatient, planName, forceUpload=False, forceCurrentPatient=False): + """ + Params + ------ + pathPatient: Path, Path to patient folder containing CT, RTDose, RTPlan, RTStruct + - e.g. Path('H:\\').joinpath('RayStationData', 'LUMC-Dose', 'HCAI-Dose-1', '2.25.52093085334020578701550802539023326955') + - CT_{} + - RTDOSE_{} + - RTPLAN_{} + - RTSTRUCT_{} + planName: String, check if this plan exists in RayStation. If not, upload + forceUpload: Bool, If True, will upload data even if patient already exists. Useful when debugging + forceCurrentPatient: Bool, If True, will use patient currently open in RayStation + + NOTE: Above folder structure is required for this function to work + """ + + # Step 0 - Init + assert forceUpload + forceCurrentPatient < 2, ' - [uploadRTAppsDataToRStation] forceUpload and forceCurrentPatient cannot be both True!' + helpers.rayStationSave() + db = connect.get_current(config.KEYNAME_RS_PATIENTDB) + patientCTBool, patientRTStructBool, patientRTPlanBool, patientRTDoseBool = False, False, False, False + + # Step 1 - Create patient + if pathPatient.exists(): + + # Step 2 - Get patient paths + pathPatientCTFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_CT)] + pathPatientRTDoseFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTDOSE)] + pathPatientRTPlanFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTPLAN)] + pathPatientRTStructFolders = [path for path in pathPatient.iterdir() if path.is_dir() and path.name.startswith(config.KEYNAME_RTSTRUCT)] + + # if len(pathPatientCTFolders) == 1 and len(pathPatientRTDoseFolders) == 1 and len(pathPatientRTPlanFolders) == 1 and len(pathPatientRTStructFolders) == 1: + if len(pathPatientCTFolders) == 1 and len(pathPatientRTStructFolders) == 1: + pathPatientCTFolder = pathPatientCTFolders[0] + pathPatientRTStructFolder = pathPatientRTStructFolders[0] + + # Step 1.1 - Upload CT + patientIdCheck = Path(pathPatient).parts[-2] + if not forceCurrentPatient: + try: + print ('\n\n - [uploadRTAppsDataToRStation()] --------------------- Step 1: Checking for patientId={}, plan={} (forceUpload={}) \n\n'.format(patientIdCheck, planName, forceUpload)) + if forceUpload: patient = None + else : patient = helpers.getPatientById(patientIdCheck, lastFind=True) + if patient is None: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading patient data for patientId={} \n\n'.format(patientIdCheck)) + if Path(pathPatientCTFolder).exists(): + patientID, studyUID, seriesUID = helpers.updateCTDicoms(pathPatientCTFolder) + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploading CT data for {} ... \n\n'.format(patientID)) + warnings = db.ImportPatientFromPath(Path=str(pathPatientCTFolder), SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUID), 'SeriesInstanceUID': str(seriesUID)}], ImportFilter='', BrachyPlanImportOverrides={}) + patient = helpers.rayStationSave() + # patient.Cases[0].SetCurrent() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Uploaded CT data for {} \n\n'.format(helpers.getPatientIdentifier(patient))) + helpers.setEquipmentName() + patientCTBool = True + else: + print ('\n - [uploadRTAppsDataToRStation()][{}] --------------------- Step 1.1: No CT data found: {} \n\n'.format(patientID, pathPatientCTFolder)) + else: + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Patient already exists \n\n') + patientCTBool = True + except: + traceback.print_exc() + print ('\n - [uploadRTAppsDataToRStation()] --------------------- Step 1.1: Issue with CT data upload: {} \n\n'.format(pathPatientCTFolder)) + patientCTBool = False + else: + print ('\n\n [uploadRTAppsDataToRStation()][DEBUG] --------------------- Step 1: Not uploading for patientID={} (forceCurrentPatient={}) \n\n'.format(patientIdCheck, forceCurrentPatient)) + patientCTBool = True + print ('\n ---------------------------------------------------------- ') + + # Step 1.2 - Upload (existing) RTStruct/RTPLAN/RTDOSE + patient = helpers.rayStationSave() + if patient is not None and patientCTBool: + case = patient.Cases[0] + casename = case.CaseName + patientID = patient.PatientID + + # Step 1.2 - Upload (existing) RTStruct + try: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Upload RTStruct data \n\n'.format(helpers.getPatientIdentifier(patient))) + if not helpers.checkForRTStruct(case): + pathPatientRTStructFile = [each for each in pathPatientRTStructFolder.iterdir()][0] + if Path(pathPatientRTStructFile).exists(): + studyUIDRTStruct, seriesUIDRTStruct = helpers.updateRTStructDicoms(pathPatientRTStructFile) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploading RTStruct data ... \n\n'.format(helpers.getPatientIdentifier(patient))) + warningsRTStruct = patient.ImportDataFromPath(Path=str(pathPatientRTStructFolder), CaseName=casename, SeriesOrInstances=[{'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTStruct), 'SeriesInstanceUID': str(seriesUIDRTStruct)}], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Uploaded RTStruct data \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTStructBool = True + helpers.rayStationSave() + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No RTStruct data found: {} \n\n'.format(helpers.getPatientIdentifier(patient), pathPatientRTStructFile)) + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: RTStruct data already exists \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTStructBool = True + except: + traceback.print_exc() + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: Issue with RTStruct data upload: {} \n\n'.format(helpers.getPatientIdentifier(patient), pathPatientRTStructFile)) + patientRTStructBool = False + + print ('\n ---------------------------------------------------------- ') + + # Step 1.3 - Upload (existing) RTPlan/RTDose + if patientCTBool and patientRTStructBool: + if not helpers.checkForRTPlan(case, planName): + if len(pathPatientRTDoseFolders) == 1 and len(pathPatientRTPlanFolders) == 1: + pathPatientRTDoseFolder = pathPatientRTDoseFolders[0] + pathPatientRTPlanFolder = pathPatientRTPlanFolders[0] + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Upload RTPlan/RTDose data \n\n'.format(helpers.getPatientIdentifier(patient))) + studyUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-2] + seriesUIDRTPlan = Path(pathPatientRTPlanFolder).parts[-1].split('_')[-1] + studyUIDRTDose = Path(pathPatientRTDoseFolder).parts[-2] + seriesUIDRTDose = Path(pathPatientRTDoseFolder).parts[-1].split('_')[-1] + + studyID = helpers.updateRTPlanDicoms(pathPatientRTPlanFolder) + # studyUIDRTPlan = studyID + # studyUIDRTDose = studyID + + pathTempRTDoseAndRTPlanFolder = helpers.getTempRTDoseAndRTPlanFolder(pathPatientRTPlanFolder, pathPatientRTDoseFolder) + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploading RTPlan/RTDose data ... \n\n'.format(helpers.getPatientIdentifier(patient))) + warningsRTPlan = patient.ImportDataFromPath(Path=str(pathTempRTDoseAndRTPlanFolder), CaseName=casename, SeriesOrInstances=[ + {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTPlan), 'SeriesInstanceUID': str(seriesUIDRTPlan)} + , {'PatientID': patientID, 'StudyInstanceUID': str(studyUIDRTDose), 'SeriesInstanceUID': str(seriesUIDRTDose)} + ], ImportFilter='', BrachyPlanImportOverrides={}, AllowMismatchingPatientID=True) + shutil.rmtree(pathTempRTDoseAndRTPlanFolder) + patientRTPlanBool = True + patientRTDoseBool = True + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Uploaded RTPlan/RTDose data \n\n'.format(helpers.getPatientIdentifier(patient))) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: No RTPlan/RTDose .dcm found \n\n'.format(helpers.getPatientIdentifier(patient))) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: RTPlan/RTDose already exists \n\n'.format(helpers.getPatientIdentifier(patient))) + patientRTPlanBool = True + patientRTDoseBool = True + else: + print ('\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.3: Not uploading RTPlan/RTDose due to CT/RTStruct issue \n\n'.format(patientID)) + print ('\n ---------------------------------------------------------- ') + + else: + if patientCTBool is False: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No CT to be found for: \n\n'.format(pathPatientCTFolder)) + else: + print ('\n\n [uploadRTAppsDataToRStation()][Patient={}] --------------------- Step 1.2: No patient to be found: \n\n'.format(patientID)) + + else: + print(' - [uploadRTAppsDataToRStation()] Patient folder does not contain one CT, RTDOSE, RTPLAN and RTSTRUCT folder: ', pathPatient) + + else: + print(" - [uploadRTAppsDataToRStation()] Patient folder does not exist: ", pathPatient) + + if len(pathPatientRTDoseFolders) == 1 and len(pathPatientRTPlanFolders) == 1: + if patientCTBool and patientRTStructBool and patientRTPlanBool and patientRTDoseBool: + return True + else: + return False + else: + if patientCTBool and patientRTStructBool: + return True + else: + return False + +# Func 2 +def copyProtonPlanAndOptimize(basePlanName, newPlanName + , pathKNOProtonObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType + , optSteps, optReset, pathIsoDoseXML=None + , debug=False): + + t0 = time.time() + optimizeValue = -1 + timeTaken = -1 + try: + + # Step 0 - for console printing (while debugging across multiple consoles) + try: + patient, _, _, _ = helpers.getPatientAndPlan(basePlanName) + sys.stdout.write(f' \n\n ===================== [{patient.Name}] start for {newPlanName} ===================== \n') + except: + traceback.print_exc() + + # Step 1 - Copy Plan + print (f' \n\n ===================== start for {newPlanName} ===================== \n') + copyPlanStatus = helpers.copyPlan(basePlanName, newPlanName, createArcBeam=False, debug=debug) + if not copyPlanStatus: + return False, optimizeValue, timeTaken + + # Step 2 - Upload/update objectives + objectiveStatus = uploadOrUpdateProtonObjectives(newPlanName, pathKNOProtonObjectives, uploadObjectivesBool, updateObjectivesBool, forceObjectives, objectiveFType) + if not objectiveStatus: + return False, optimizeValue, timeTaken + + # Step 3 - Optimize + if optSteps: + optimizeStatus, optimizeValue = helpers.optimizePlan(newPlanName, optSteps, reset=optReset, pathIsoDoseXML=pathIsoDoseXML) + if optimizeStatus: + _ = helpers.rayStationSave() + else: + optimizeStatus, optimizeValue = True, -1 + + timeTaken = round(time.time() - t0, 2) + print (f' \n\n ===================== end for {newPlanName} (in {timeTaken} s) ===================== \n\n') + return optimizeStatus, optimizeValue, timeTaken + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + timeTaken = round(time.time() - t0, 2) + return False, optimizeValue, timeTaken + +# Func 0 +def main(params): + + try: + tPatient = time.time() + # Step 1.1 - Init patient details + pathPatient = params[config.KEYNAME_PATH_PATIENT] + patientID = params[config.KEY_PATIENTID] + loadPatient = params[config.KEYNAME_FORCE_LOAD_PATIENT] + uploadPatient = params[config.KEYNAME_FORCE_UPLOAD_PATIENT] + + # Step 1.2 - Init plan details + keynameCancerType = params[config.KEYNAME_CANCER_TYPE] + planNameOG = config.KEYNAME_PLAN_OG.format(keynameCancerType) + + planNameCS = config.KEYNAME_PLAN_CS.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) # -R1 + planNameEUD = config.KEYNAME_PLAN_DFO.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) # -R2 + planNameEUD2 = config.KEYNAME_PLAN_DFO2.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) # -R3 + planNameFinal = config.KEYNAME_PLAN_FINAL.format(keynameCancerType, config.PREFIX_CLINICAL_CONTOURS) # -R5 + + planNameCSAuto = config.KEYNAME_PLAN_CS.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameEUDAuto = config.KEYNAME_PLAN_DFO.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameEUD2Auto = config.KEYNAME_PLAN_DFO2.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + planNameFinalAuto = config.KEYNAME_PLAN_FINAL.format(keynameCancerType, config.PREFIX_AUTOMATED_CONTOURS) + + optStepsRe = params[config.KEYNAME_OPT_STEPS_RE] + + # Step 1.3 - Init objective details + pathKNOObjectivesClassSolution = params[config.KEYNAME_PATH_CLASSSOL] + pathKNOObjectives = params[config.KEYNAME_PATH_OBJECTIVES] + + # Step 1.4 - Init evaluation details + pathRobustTemplate = params[config.KEYNAME_PATH_ROBUST_TEMPLATE] + pathIsoDoseXML = params[config.KEYNAME_PATH_ISODOSEXML] + if Path(pathIsoDoseXML).exists() is False: + sys.stdout.write(f' - [main()] pathIsoDoseXML does not exist: {pathIsoDoseXML}') + print (f' - [main()] pathIsoDoseXML does not exist: {pathIsoDoseXML}') + return 0 + if Path(pathRobustTemplate).exists() is False: + sys.stdout.write(f' - [main()] pathRobustTemplate does not exist: {pathRobustTemplate}') + print (f' - [main()] pathRobustTemplate does not exist: {pathRobustTemplate}') + return 0 + + # Step 1.5 - Get contour type + contourTypeNow = params[config.KEYNAME_CONTOUR_TYPE] + + # Step 1.6 - Updates (for auto-contours) + if contourTypeNow != config.KEYNAME_CONTOUR_EVAL: + pathKNOObjectivesClassSolutionAuto = helpers.updateKNOXMLForAutoContours(pathKNOObjectivesClassSolution, pathKNOObjectives, potentialRoisToRenameInAuto=config.PROTON_POTENTIAL_ROIS_TO_RENAME_FOR_AUTO) + if pathKNOObjectivesClassSolutionAuto is None: + return 0 + pathKNOObjectivesAuto = helpers.updateKNOXMLForAutoContours(pathKNOObjectives, pathKNOObjectives, potentialRoisToRenameInAuto=config.PROTON_POTENTIAL_ROIS_TO_RENAME_FOR_AUTO) + if pathKNOObjectivesAuto is None: + return 0 + + # Step 1.7 - for console printing (while debugging across multiple consoles) + sys.stdout.write(f' \n\n ===================== start for {pathPatient} [{planNameOG}]===================== \n') + + ############## Step 2 - Upload data to RayStation ############## + try: + + # Step 2.1 - Get patient (for protons patients are already in RStation. Simply load them) + if loadPatient: + patientRSObj = helpers.loadPatientUsingID(patientID) + elif uploadPatient: + uploadRTAppsStatus = uploadRTAppsDataToRStation(pathPatient, planName=planNameOG, forceUpload=True, forceCurrentPatient=False) + if uploadRTAppsStatus: + patientRSObj = connect.get_current(config.KEYNAME_PATIENT) + else: + patientRSObj = None + else: + patientRSObj = connect.get_current(config.KEYNAME_PATIENT) + + if patientRSObj is None: + sys.stdout.write(f' - [main()] Patient {patientID} not found in RayStation') + print (f' - [main()] Patient {patientID} not found in RayStation') + return 0 + + ################################### + if contourTypeNow in [config.KEYNAME_CONTOUR_CLINICAL, config.KEYNAME_CONTOUR_AUTO]: + if contourTypeNow == config.KEYNAME_CONTOUR_CLINICAL: + print ('\n\n ------------------------- ') + print (' - Computing dose on clinical contours') + print (' ------------------------- \n\n') + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyProtonPlanAndOptimize(planNameOG, planNameCS + , pathKNOObjectivesClassSolution, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=True, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyProtonPlanAndOptimize(planNameCS, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUD, planNameEUD2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True) + + elif contourTypeNow == config.KEYNAME_CONTOUR_AUTO: + print ('\n\n ------------------------- ') + print (' - Computing dose on auto contours') + print (' ------------------------- \n\n') + autoContouringStatus, autoContouringTime = doAutoContouringForProton() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + if autoContouringStatus: + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyProtonPlanAndOptimize(planNameOG, planNameCSAuto + , pathKNOObjectivesClassSolutionAuto, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=True, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyProtonPlanAndOptimize(planNameCSAuto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUDAuto, planNameEUD2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2Auto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinalAuto, pathRobustTemplate, pathPatient, force=True) + + elif contourTypeNow == config.KEYNAME_CONTOUR_ALL: + if 1: + print ('\n\n ------------------------- ') + print (' - Computing dose on clinical contours') + print (' ------------------------- \n\n') + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyProtonPlanAndOptimize(planNameOG, planNameCS + , pathKNOObjectivesClassSolution, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=True, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyProtonPlanAndOptimize(planNameCS, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUD, planNameEUD2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True) + robustEvaluation(planNameOG, pathRobustTemplate, pathPatient, force=False, verbose=True) + + if 1: + print ('\n\n ------------------------- ') + print (' - Computing dose on auto contours') + print (' ------------------------- \n\n') + autoContouringStatus, autoContouringTime = doAutoContouringForProton() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + if autoContouringStatus: + classSolPlanStatus, classSolPlanValue, classSolPlanTime = copyProtonPlanAndOptimize(planNameOG, planNameCSAuto + , pathKNOObjectivesClassSolutionAuto, uploadObjectivesBool=True, updateObjectivesBool=False, forceObjectives=True, objectiveFType=None + , optSteps=optStepsRe, optReset=True, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] classSolPlanStatus: ', classSolPlanStatus) + if classSolPlanStatus: + eudPlanStatus, eudPlanValue, eudPlanTime = copyProtonPlanAndOptimize(planNameCSAuto, planNameEUDAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUDAuto, planNameEUD2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2Auto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinalAuto, pathRobustTemplate, pathPatient, force=True) + + if 1: + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + elif contourTypeNow == config.KEYNAME_CONTOUR_EVAL: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True, verbose=True) + robustEvaluation(planNameFinalAuto, pathRobustTemplate, pathPatient, force=True, verbose=True) + robustEvaluation(planNameOG, pathRobustTemplate, pathPatient, force=False, verbose=True) + + elif contourTypeNow == config.KEYNAME_CONTOUR_DEBUG: + + # upload + auto-contouring + if 1: + autoContouringStatus, autoContouringTime = doAutoContouringForProton() + print ('\n - [main] autoContouringStatus: ', autoContouringStatus) + + # From -R2 onwards + if 0: + eudPlanStatus, eudPlanValue, eudPlanTime = copyProtonPlanAndOptimize(planNameCS, planNameEUD + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eudPlanStatus: ', eudPlanStatus) + if eudPlanStatus: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUD, planNameEUD2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True, verbose=True) + + # From -R3 onwards + if 0: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUD, planNameEUD2 + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True, verbose=True) + + # From -R5 onwards + if 0: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2, planNameFinal + , pathKNOObjectives, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinal, pathRobustTemplate, pathPatient, force=True, verbose=True) + + # From -R3 onwards + if 0: + eud2PlanStatus, eud2PlanValue, eud2PlanTime = copyProtonPlanAndOptimize(planNameEUDAuto, planNameEUD2Auto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=config.KEY_FTYPE_MAXEUD + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=True) + print (' - [main] eud2PlanStatus: ', eud2PlanStatus) + if eud2PlanStatus: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2Auto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinalAuto, pathRobustTemplate, pathPatient, force=True, verbose=True) + + # From -A5 onwards + if 0: + finalPlanStatus, finalPlanValue, finalPlanTime = copyProtonPlanAndOptimize(planNameEUD2Auto, planNameFinalAuto + , pathKNOObjectivesAuto, uploadObjectivesBool=False, updateObjectivesBool=True, forceObjectives=False, objectiveFType=None + , optSteps=optStepsRe, optReset=False, pathIsoDoseXML=pathIsoDoseXML, debug=False) + print (' - [main] finalPlanStatus: ', finalPlanStatus) + if finalPlanStatus: + robustEvaluation(planNameFinalAuto, pathRobustTemplate, pathPatient, force=True, verbose=True) + + # For evaluation + if 0: + # robustEvaluation(planNameFinal, force=True) + # robustEvaluation(planNameFinalAuto, force=True) + robustEvaluation(planNameOG, pathRobustTemplate, pathPatient, force=False, verbose=True) + + # For NTCP evaluation + if 0: + plansForNTCP = [planNameOG, planNameFinal, planNameFinalAuto] + getNTCPVals(patientID, plansForNTCP, pathPatient) + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + + print (f' \n\n ===================== end for {pathPatient} [{planNameOG}] (in {round(time.time() - tPatient, 2)} s) ===================== \n\n') + + except: + traceback.print_exc() + if DEBUG_PDB: pdb.set_trace() + +######################################################## +# PARAMS(S) # +######################################################## + +if __name__ == "__main__": + + ################################################################################### + # Step 0 - Init project paths + ################################################################################### + DIR_THIS = Path(__file__).parent.absolute() # P:\RayStationScripts + DIR_DATA = Path(DIR_THIS).parent.absolute().joinpath('RayStationData') + + ################################################################################### + # Step 1 - Logging details + ################################################################################### + DIR_LOGS = Path(DIR_THIS).joinpath('_logs', 'logsProton', 'run4') + loggerTimestamp = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + pathLogFile = Path(DIR_LOGS).joinpath("proton-log_{}.txt".format(loggerTimestamp)) + Path(pathLogFile).parent.mkdir(parents=True, exist_ok=True) + logging.basicConfig(filename=str(pathLogFile), level=logging.DEBUG, filemode='a', format='%(asctime)s[%(levelname)s] %(funcName)s: %(message)s',datefmt='%d/%m/%Y %I:%M:%S %p') + + ################################################################################### + # Step 2 - Get common files + ################################################################################### + pathKNOProtonsObjectivesClassSolution = Path(DIR_DATA).joinpath('assets', 'objective-template-proton-kno.xml') + pathRobustEvalTemplate = Path(DIR_DATA).joinpath('assets', 'eval-template-proton-robust.json') + pathIsoDoseXML = Path(DIR_DATA).joinpath('LUMC-Dose', '_tmp', 'isodose.xml'); # pathIsoDoseXML = None + + ################################################################################### + # Step 3 - Specific patient paths (of data extracted from RTPACS) + ################################################################################### + # For single patients + if 0: + pathPatient = Path(DIR_DATA).joinpath('') + pathKNOProtonsbjectivesClinical = Path(pathPatient).joinpath('.xml') + + keynameCancerType = '1P PVPROTONEN' + optStepsRe = 4 + + contourType = config.KEYNAME_CONTOUR_EVAL # config.{KEYNAME_CONTOUR_EVAL, KEYNAME_CONTOUR_AUTO, KEYNAME_CONTOUR_CLINICAL, KEYNAME_CONTOUR_ALL, KEYNAME_CONTOUR_DEBUG} + + # Step 2 - Main + params = { + + # Patient Case related + config.KEYNAME_PATH_PATIENT : pathPatient + + # Paths + , config.KEYNAME_PATH_CLASSSOL : pathKNOProtonsObjectivesClassSolution + , config.KEYNAME_PATH_OBJECTIVES : pathKNOProtonsbjectivesClinical + , config.KEYNAME_PATH_ROBUST_TEMPLATE : pathRobustEvalTemplate + , config.KEYNAME_PATH_ISODOSEXML : pathIsoDoseXML + + # Plan parameters + , config.KEYNAME_CANCER_TYPE : keynameCancerType + , config.KEYNAME_OPT_STEPS_RE : optStepsRe + , config.KEYNAME_CONTOUR_TYPE : contourType + } + + print ('\n -------------------------- [main] params: ') + print (params) + main(params) + + +# To run code in RS console (and print to console) +""" +import sys +import runpy +from pathlib import Path + +sys.path.append(str(Path('H:\\').joinpath('RayStationScripts'))) +pathFile = str(Path('H:\\').joinpath('RayStationScripts', 'hnDoseProtons-v1.py')) +_ = runpy.run_path(pathFile, run_name='__main__') + +""" \ No newline at end of file