1 .
2 .
Over last decades, external radiotherapy with photon beams has undergone a great evolution and today is a modern and effective therapy for cancer and other pathologies. Modulation of incident beams with IMRT and VMAT allows high degree of conformation of target volumes. Stereotactic techniques like SRS or SBRT reach sub-millimeter geometric precision and combine with the small field dosimetry development gives a high level of dosimetric accuracy. The revolution of IGRT, with on line CT or CBCT images, surface localization and control of respiratory motion of patients is today an extended clinical practice. Finally, the continuous improvements in image registration and automatic segmentation helps the clinicians in delimitation of tumors and other critical structures.
All these developments have allowed a growing complexity in the radiotherapy treatment but always maintaining intact its original purpose: to reach the optimal target dose keeping OARs doses as low as possible. This general principle reminds the importance of the delimitation of the structures in the process. In fact, the choice of the anatomical limits between objetive and health tissue conditions all the following phases and the success of the treatment.
The contouring over CT image for planning involves not only an anatomical knowledge but also a complete analyze of clinical details of each case. A qualified professional must take the final decision in the clinical practice, and this task is carry out by radiotherapy oncologists. They are specialized professionals trained for years. With some differences between countries, this training period covers anyway clinical experience in all the aspects of treatment planning, including of course the details of contouring.
Unfortunately, differences in structure segmentation were found between different users of contouring software, even when they are expert oncologists [REFERENCIAS]. The quantification of these differences has been a challenge for decades and only limited data are available in the literature…
The Spanish Society of Radiation Oncology (SEOR) organises a medical online training course (“Practicum”) focusing on a practical learning of targets and organs at risk contouring in head and neck radiotherapy
In 2021, eight instructors, each with one pathology, gave clinical directives on how to contour and provide an empty template of structures and a simulation CT. Attenders could practice and improve their knowledge with these national experts on the matter.
In some of the cases, complementary studies such as PET/CT or MR are included to support segmentation. The trainees received a full description of the cases online. They imported the simulation CT into their treatment planning system (TPS) and, once the outline was completed, they exported the case and sent it to the course organizers. The instructors, in the last week of the course, reviewed every case and give the solution with emphasis in trainer’s errors.
The aim of this work is to analyze the experience of this course and to obtain conclusions about this current concern. A study of systematic qualitative differences in contouring and quantitative results is presented.
Eight HNC patients already treated at Hospital Universitario de Navarra, were selected as study cases for this course. Different pathologies were included: parotid, larynx, paranasal sinuses, oral cavity, oropharynx, nasopharynx, SBRT and cervical metastases.
Every planning CT was acquired in supine position with a Somaton Drive CT (Siemens…) with a slice thickness of 1.5 mm. A head and shoulder thermoplastic mask (Empresa) was used for patient immobilization.
In some of the cases, a complementary diagnostic imaging (MR, PET-CT) were added to more detailed information. Table 1.
Eight planning CTs and an empty set of structures were exported from our TPS. Participants imported these set of DICOM objects in their TPSs and structures can be delineate at their home centers. This approach helps students with the contouring as they are used to their own contouring tools.
In the course, it was encouraged to segment clinical targets (GTV and CTV) and also some organs at risk in each case.
30 participants take part in the 2021 online course with the requirement to contoured 5 of the 8 cases to pass the course. Number of contouring per case are detailed in table 2.
Different metrics were studied to analyze interobserver variability and variances in contouring following the same clinical indications.
Analyses were perfomed with Eclipse TPS v15.3 (Varian…)
Volume
Our reference structure was the one contoured by the instructor and participant’s structures were compared against it. In order to analyze the variability in contouring we detailed the volume difference (∆V) between each participants contouring (Vi) and reference structure (VR)
\(∆V=V_{i}-V_{R} [cm^3]\)
GTV, CTV
Variations in X, Y and Z center of mass coordinate
In this analyses we compare X, Y and Z center of mass coordinate (Xi, Yi, Zi) of each participant against reference structure.
\(∆X=X_{i}-X_{R} [cm]\); \(∆Y=Y_{i}-Y_{R} [cm]\) ; \(∆Z=Z_{i}-Z_{R} [cm]\)
This metric were include to consider structures with same volume but with a displacement in position.
Figure 1. Displacement in center of mass coordinate
The Euclidean distance between the centers was also calculated.
DSC
\(DSC=2 |A∩B|/|A|+|B|\)
[Buena métrica para analizar contornos parecidos]
Global delineation compatibility was assessed with a volume overlap metric, the Dice Similarity Coefficient (DSC), a volume-based metrics computed from their intersection (common delineation) A ∩ B; and their union (encompassing delineation) A+B.
A DSC of 1 means that A and B are the same size and shape. A DSC close to 0 means that there is minimal overlap between A and B or a large difference in the size ratio between them.
DSC recoge en una escala [0,1] el grado de simulitud entre ambos contornos (1-DSC registraria el grado de disimilitud).. Analizar su distribución, entre organos y/o para las diversas capas, permite analizar el sesgo en la delineación (media global de acierto o discrepancia -average DSC-) y la precision de la misma ( -DSC variance- variabilidad en este acierto o discrepancia o intra-observer variations for the delineation.
El objetivo es describir, tras el taller, el grado de acierto global en la delineación de los alumnos y la concordancia o variacion entre ellos. Diferenciandolos por organos, capas. Otras preguntas son acerca de la distribución de los aciertos en relación al volumen, la relación sesgo/precision (relacion entre las medias DSC y su varianza -en continua y discretizadas : tabla que clasificaria los organos en sesgado(bajo/medio) ej DSC>0.6 y preciso o baja varicion en la estimacion -buscar el threshold-)
The CV was defined as the ratio between the standard deviation and the mean GTV or OAR volume. A Student paired t-test or a Wilcoxon rank test were used to compare the differences in CV between imaging modalities. (entre organos, capas?)
The influence of the observer and the imaging modality on the average volumes was further compared using univariate analysis of variance (ANOVA), on which a Pearson intra-class correlation coefficient ð ^ RÞ was applied.
This coefficient allows distinguishing between the two main sources of variability, i.e. a fixed one represented by the observer factor, and a random one represented by the volume factor. It varies from 0 to 1, where a figure of 1 corresponds to a complete inter-observer agreement.1
Graficas y datos
#Function to calculate the coefficient of variation
cv <- function(x) ( sd(x, na.rm = TRUE)/mean(x, na.rm=TRUE))
Summary_Statistics <- dcontorno %>% filter(parametro=="DSC") %>% group_by(patologia, capa) %>% summarise( n = n(),
Median = median(dmeasure, na.rm = TRUE),
Mean = mean(dmeasure, na.rm = TRUE),
SD = sd(dmeasure, na.rm = TRUE),
Min = min(dmeasure, na.rm = TRUE),
Max = max(dmeasure, na.rm = TRUE),
CV = cv(dmeasure))
Summary_Statistics %>% filter(!is.na(Median)) %>% knitr::kable(digits = 2)
patologia | capa | n | Median | Mean | SD | Min | Max | CV |
---|---|---|---|---|---|---|---|---|
cervicalmet | capa_CTV MediumRisk | 13 | 0.59 | 0.53 | 0.13 | 0.28 | 0.65 | 0.25 |
cervicalmet | capa_CTVHighRisk | 13 | 0.54 | 0.50 | 0.11 | 0.30 | 0.64 | 0.21 |
larynx | capa_CTV MediumRisk | 14 | 0.74 | 0.72 | 0.08 | 0.49 | 0.80 | 0.11 |
larynx | capa_CTVHighRisk | 14 | 0.79 | 0.78 | 0.05 | 0.67 | 0.84 | 0.06 |
larynx | capa_CTVLowRisk | 14 | 0.72 | 0.72 | 0.04 | 0.62 | 0.78 | 0.05 |
larynx | capa_GTVp | 14 | 0.86 | 0.84 | 0.04 | 0.73 | 0.89 | 0.05 |
nasopharynx | capa_CTV MediumRisk | 10 | 0.67 | 0.64 | 0.08 | 0.54 | 0.70 | 0.12 |
nasopharynx | capa_CTVHighRisk | 10 | 0.47 | 0.48 | 0.07 | 0.38 | 0.64 | 0.15 |
nasopharynx | capa_GTVp | 10 | 0.65 | 0.61 | 0.14 | 0.28 | 0.79 | 0.23 |
oral | capa_CTV MediumRisk | 13 | 0.72 | 0.72 | 0.06 | 0.58 | 0.80 | 0.09 |
oral | capa_CTVHighRisk | 13 | 0.55 | 0.56 | 0.10 | 0.43 | 0.70 | 0.18 |
oropharynx | capa_CTV MediumRisk | 20 | 0.73 | 0.70 | 0.08 | 0.48 | 0.79 | 0.11 |
oropharynx | capa_CTVHighRisk | 20 | 0.63 | 0.60 | 0.18 | 0.20 | 0.80 | 0.31 |
oropharynx | capa_GTVp | 20 | 0.62 | 0.58 | 0.17 | 0.07 | 0.75 | 0.29 |
paranasal | capa_CTV MediumRisk | 16 | 0.69 | 0.67 | 0.11 | 0.43 | 0.82 | 0.17 |
paranasal | capa_CTVHighRisk | 16 | 0.70 | 0.66 | 0.15 | 0.39 | 0.82 | 0.22 |
parotid | capa_CTV MediumRisk | 17 | 0.69 | 0.67 | 0.10 | 0.46 | 0.78 | 0.15 |
parotid | capa_CTVHighRisk | 17 | 0.39 | 0.41 | 0.25 | 0.00 | 0.77 | 0.60 |
parotid | capa_CTVLowRisk | 17 | 0.65 | 0.66 | 0.07 | 0.52 | 0.74 | 0.10 |
parotid | capa_GTVp | 17 | 0.36 | 0.38 | 0.25 | 0.00 | 0.73 | 0.65 |
sbrt | capa_GTVp | 16 | 0.52 | 0.46 | 0.20 | 0.03 | 0.66 | 0.45 |
# dcontorno %>% filter(parametro=="DSC") %>% summarise(Meang = mean(dmeasure, na.rm = TRUE),
# SDg = sd(dmeasure, na.rm = TRUE))
#
# Meang SDg
# <dbl> <dbl>
# 0.623 0.172
Summary_Statistics <- Summary_Statistics %>% mutate(Meanc=Mean-0.623, na.rm=TRUE, Sdc=SD-0.172,na.rm=TRUE)
Summary_Statistics <- Summary_Statistics %>% mutate(label=(paste(patologia,capa,sep="_")))
## habria que acortar el tamaño de las etiquetas
## voy a hacer ejes cartesianos con mean y sd
data=Summary_Statistics
font_add_google(family="patua-one", "Patua One")
font_add_google(family="montserrat", "Montserrat")
showtext_auto()
# legend <- tibble(x = c(90, 100),
# y = c(100, 95),
# label = c("Increasing\nintention", "Decreasing\nintention"))
#names(data)[1]="patologia"
# Quitar las capas GTV y CTV Low Risk del análisis general. La patología de SBRT quitarla de este análisis general porque solo tiene capa GTV.
### grafico x patologia ####
data %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=patologia)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
geom_hline(yintercept=0.172) +
geom_vline(xintercept=0.623) +
# coord_fixed(xlim=c(50, 100), ylim=c(50, 100), clip="off") +
# labs(title = "COVID-19 vaccination intent is decreasing globally",
# subtitle = NULL,
# caption = "<i>Base: 18,526 online adults aged 16-74 across 15 countries</i><br>Source: Ipsos",
# tag = NULL,
# x = "Percent willing to receive<br>vaccine in August 2020",
# y= "Percent willing to receive<br>vaccine in October 2020",
# color = NULL) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25,
lineheight = 1,
margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# data %>% (antes estaba centrada.. ahora puedo plantear una linea vertica y horizontal en esos valores centrales)
# ggplot(aes(x=Meanc, y=Sdc, label=label, color=patologia)) +
### grafico x capa ####
data %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=capa)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
geom_hline(yintercept=0.172) +
geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# · Crear una gráfica para valorar los estudios complementarios (PET-CT y MR). Esta gráfica incluye las capas GTV y CTV High Risk y en diferentes colores si lleva PET, si lleva MR o si no lleva estudio.----à Reflexion: “ Viendo la influencia del PET, no se puede extraer conclusiones de que ayude….”
data <- data %>% filter(!is.na(Median))
data3 <- data[-c(4,8,13,18),] # quito highrisk si existe gtv
data3 <- data3 %>% mutate(PET=patologia %in% c("parotid","larynx","oropharynx","nasopharynx"), MR=patologia %in% c("parotid","larynx","paranasal","nasopharynx"))
data3 <- data3 %>% mutate(complementary=ifelse(PET & MR, "PET+MR", ifelse( PET, "PET", ifelse( MR, "MR", "Without img"))))
data3 %>% filter(capa %in% (c("capa_CTVHighRisk","capa_GTVp"))) %>%
ggplot(aes(x=Mean, y=SD, label=label, color=complementary)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
geom_hline(yintercept=0.172) +
geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# data3 %>% filter(capa %in% (c("capa_CTVHighRisk","capa_GTVp"))) %>%
# ggplot(aes(x=Mean, y=SD, label=label, color=MR)) +
# geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
# geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
# geom_point() +
# geom_label_repel(min.segment.length = 0,
# max.overlaps = Inf,
# label.size = 0,
# label.padding = 0.1,
# label.r = 0,
# size=3.5,
# family = "montserrat") +
# geom_hline(yintercept=0.172) +
# geom_vline(xintercept=0.623) +
# theme(
# text = element_text(family = "montserrat"),
# plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
# plot.title.position = "plot",
# plot.caption = element_markdown(hjust = 0, color="gray",
# margin= margin(t=10)),
# plot.caption.position = "plot",
# axis.title.x = element_markdown(),
# axis.title.y = element_markdown(),
# axis.ticks = element_blank(),
# axis.line = element_line(),
# panel.background = element_rect(fill="#FFFFFF")
# )
# #+
# geom_text(data = legend,
# mapping = aes(x = x, y=y, label=label),
# color = "#AAAAAA",
# hjust = 0,
# lineheight = 1,
# family = "montserrat",
# size = 2,
# inherit.aes = FALSE)
#
# ggsave("august_october_2020.tiff", width=5, height=5)
#Function to calculate the coefficient of variation
cv <- function(x) ( sd(x, na.rm = TRUE)/mean(x, na.rm=TRUE))
Summary_Statistics <- dcontorno %>% filter(parametro=="volumen") %>% group_by(patologia, capa) %>% summarise( n = n(),
Median = median(dmeasure, na.rm = TRUE),
Mean = mean(dmeasure, na.rm = TRUE),
SD = sd(dmeasure, na.rm = TRUE),
Min = min(dmeasure, na.rm = TRUE),
Max = max(dmeasure, na.rm = TRUE),
CV = cv(dmeasure))
Summary_Statistics %>% filter(!is.na(Median)) %>% knitr::kable(digits = 2)
patologia | capa | n | Median | Mean | SD | Min | Max | CV |
---|---|---|---|---|---|---|---|---|
cervicalmet | capa_CTV MediumRisk | 13 | -0.30 | -0.13 | 0.31 | -0.49 | 0.36 | -2.35 |
cervicalmet | capa_CTVHighRisk | 13 | -0.49 | -0.51 | 0.11 | -0.69 | -0.39 | -0.22 |
larynx | capa_CTV MediumRisk | 14 | 0.07 | 0.03 | 0.25 | -0.55 | 0.32 | 8.73 |
larynx | capa_CTVHighRisk | 14 | 0.09 | 0.11 | 0.18 | -0.11 | 0.52 | 1.61 |
larynx | capa_CTVLowRisk | 14 | -0.02 | 0.00 | 0.17 | -0.34 | 0.30 | 54.30 |
larynx | capa_GTVp | 14 | -0.11 | -0.10 | 0.13 | -0.35 | 0.19 | -1.25 |
nasopharynx | capa_CTV MediumRisk | 10 | 3.66 | 4.10 | 1.14 | 2.92 | 6.29 | 0.28 |
nasopharynx | capa_CTVHighRisk | 10 | -0.22 | -0.17 | 0.23 | -0.42 | 0.08 | -1.36 |
nasopharynx | capa_GTVp | 10 | -0.45 | -0.51 | 0.16 | -0.82 | -0.27 | -0.32 |
oral | capa_CTV MediumRisk | 13 | -0.27 | -0.15 | 0.18 | -0.33 | 0.08 | -1.16 |
oral | capa_CTVHighRisk | 13 | -0.31 | -0.16 | 0.38 | -0.58 | 0.76 | -2.41 |
oropharynx | capa_CTV MediumRisk | 20 | -0.22 | -0.17 | 0.19 | -0.42 | 0.17 | -1.12 |
oropharynx | capa_CTVHighRisk | 20 | -0.28 | -0.11 | 0.59 | -0.68 | 1.79 | -5.36 |
oropharynx | capa_GTVp | 20 | -0.40 | -0.32 | 0.38 | -0.78 | 0.79 | -1.21 |
paranasal | capa_CTV MediumRisk | 16 | 0.29 | 0.38 | 0.64 | -0.64 | 1.84 | 1.66 |
paranasal | capa_CTVHighRisk | 16 | 0.15 | 0.45 | 0.85 | -0.64 | 1.99 | 1.90 |
parotid | capa_CTV MediumRisk | 17 | -0.11 | -0.01 | 0.49 | -0.56 | 1.18 | -62.53 |
parotid | capa_CTVHighRisk | 17 | 1.95 | 3.39 | 5.54 | -0.52 | 21.77 | 1.64 |
parotid | capa_CTVLowRisk | 17 | 0.04 | 0.07 | 0.39 | -0.52 | 0.76 | 5.33 |
parotid | capa_GTVp | 17 | -0.43 | -0.03 | 1.06 | -0.84 | 2.47 | -30.91 |
sbrt | capa_GTVp | 16 | -0.55 | -0.56 | 0.24 | -0.98 | -0.14 | -0.43 |
dcontorno %>% filter(parametro=="volumen") %>% summarise(Meang = mean(dmeasure, na.rm = TRUE),SDg = sd(dmeasure, na.rm = TRUE))
## # A tibble: 1 × 2
## Meang SDg
## <dbl> <dbl>
## 1 0.219 1.72
#
# Meang SDg
# <dbl> <dbl>
# 0.219 1.72
Summary_Statistics <- Summary_Statistics %>% mutate(label=(paste(patologia,capa,sep="_")))
data=Summary_Statistics
font_add_google(family="patua-one", "Patua One")
font_add_google(family="montserrat", "Montserrat")
showtext_auto()
### grafico x patologia ####
data %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=patologia)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
geom_hline(yintercept=1.72) +
geom_vline(xintercept=0.219) +
# coord_fixed(xlim=c(50, 100), ylim=c(50, 100), clip="off") +
# labs(title = "COVID-19 vaccination intent is decreasing globally",
# subtitle = NULL,
# caption = "<i>Base: 18,526 online adults aged 16-74 across 15 countries</i><br>Source: Ipsos",
# tag = NULL,
# x = "Percent willing to receive<br>vaccine in August 2020",
# y= "Percent willing to receive<br>vaccine in October 2020",
# color = NULL) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25,
lineheight = 1,
margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
Excluyendo parotida
dcontorno %>% filter(parametro=="volumen" & patologia!="parotid") %>% summarise(Meang = mean(dmeasure, na.rm = TRUE),SDg = sd(dmeasure, na.rm = TRUE))
## # A tibble: 1 × 2
## Meang SDg
## <dbl> <dbl>
## 1 0.0290 0.908
#
# Meang SDg
# <dbl> <dbl>
# 0.290 0.908
Summary_Statistics <- Summary_Statistics %>% mutate(label=(paste(patologia,capa,sep="_")))
datasp=Summary_Statistics %>% filter(patologia !="parotid")
font_add_google(family="patua-one", "Patua One")
font_add_google(family="montserrat", "Montserrat")
showtext_auto()
### grafico x patologia ####
datasp %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=patologia)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
geom_hline(yintercept=0.908) +
geom_vline(xintercept=0.290) +
# coord_fixed(xlim=c(50, 100), ylim=c(50, 100), clip="off") +
# labs(title = "COVID-19 vaccination intent is decreasing globally",
# subtitle = NULL,
# caption = "<i>Base: 18,526 online adults aged 16-74 across 15 countries</i><br>Source: Ipsos",
# tag = NULL,
# x = "Percent willing to receive<br>vaccine in August 2020",
# y= "Percent willing to receive<br>vaccine in October 2020",
# color = NULL) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25,
lineheight = 1,
margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# data %>% (antes estaba centrada.. ahora puedo plantear una linea vertica y horizontal en esos valores centrales)
# ggplot(aes(x=Meanc, y=Sdc, label=label, color=patologia)) +
### grafico x capa ####
data %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=capa)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
# geom_hline(yintercept=0.172) +
# geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# · Crear una gráfica para valorar los estudios complementarios (PET-CT y MR). Esta gráfica incluye las capas GTV y CTV High Risk y en diferentes colores si lleva PET, si lleva MR o si no lleva estudio.----à Reflexion: “ Viendo la influencia del PET, no se puede extraer conclusiones de que ayude….”
data <- data %>% filter(!is.na(Median))
data3 <- data[-c(4,8,13,18),] # quito highrisk si existe gtv
data3 <- data3 %>% mutate(PET=patologia %in% c("parotid","larynx","oropharynx","nasopharynx"), MR=patologia %in% c("parotid","larynx","paranasal","nasopharynx"))
data3 <- data3 %>% mutate(complementary=ifelse(PET & MR, "PET+MR", ifelse( PET, "PET", ifelse( MR, "MR", "Without img"))))
Excluyendo parotida
# data %>% (antes estaba centrada.. ahora puedo plantear una linea vertica y horizontal en esos valores centrales)
# ggplot(aes(x=Meanc, y=Sdc, label=label, color=patologia)) +
### grafico x capa ####
datasp %>% filter(capa %in% (c("capa_CTV MediumRisk", "capa_CTVHighRisk" )) & patologia!="sbrt") %>%
ggplot(aes(x=Mean, y=SD, label=label, color=capa)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
# geom_hline(yintercept=0.172) +
# geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
# · Crear una gráfica para valorar los estudios complementarios (PET-CT y MR). Esta gráfica incluye las capas GTV y CTV High Risk y en diferentes colores si lleva PET, si lleva MR o si no lleva estudio.----à Reflexion: “ Viendo la influencia del PET, no se puede extraer conclusiones de que ayude….”
data <- data %>% filter(!is.na(Median))
data3 <- data[-c(4,8,13,18),] # quito highrisk si existe gtv
data3 <- data3 %>% mutate(PET=patologia %in% c("parotid","larynx","oropharynx","nasopharynx"), MR=patologia %in% c("parotid","larynx","paranasal","nasopharynx"))
data3 <- data3 %>% mutate(complementary=ifelse(PET & MR, "PET+MR", ifelse( PET, "PET", ifelse( MR, "MR", "Without img"))))
data3 %>% filter(capa %in% (c("capa_CTVHighRisk","capa_GTVp"))) %>%
ggplot(aes(x=Mean, y=SD, label=label, color=complementary)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
# geom_hline(yintercept=0.172) +
# geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
Excluyendo parotida
data3sp <- datasp[-c(4,8,13,18),] # quito highrisk si existe gtv
data3sp <- data3sp %>% mutate(PET=patologia %in% c("parotid","larynx","oropharynx","nasopharynx"), MR=patologia %in% c("parotid","larynx","paranasal","nasopharynx"))
data3sp <- data3sp %>% mutate(complementary=ifelse(PET & MR, "PET+MR", ifelse( PET, "PET", ifelse( MR, "MR", "Without img"))))
data3sp %>% filter(capa %in% (c("capa_CTVHighRisk","capa_GTVp"))) %>%
ggplot(aes(x=Mean, y=SD, label=label, color=complementary)) +
geom_vline(xintercept = 0, color="#AAAAAA", size =0.25) +
geom_hline(yintercept = 0, color="#AAAAAA", size =0.25) +
geom_point() +
geom_label_repel(min.segment.length = 0,
max.overlaps = Inf,
label.size = 0,
label.padding = 0.1,
label.r = 0,
size=3.5,
family = "montserrat") +
# geom_hline(yintercept=0.172) +
# geom_vline(xintercept=0.623) +
theme(
text = element_text(family = "montserrat"),
plot.title = element_textbox_simple(family = "patua-one", size=25, lineheight = 1, margin = margin(b=20, t=10)),
plot.title.position = "plot",
plot.caption = element_markdown(hjust = 0, color="gray",
margin= margin(t=10)),
plot.caption.position = "plot",
axis.title.x = element_markdown(),
axis.title.y = element_markdown(),
axis.ticks = element_blank(),
axis.line = element_line(),
panel.background = element_rect(fill="#FFFFFF")
)
El problema de usar diferentes planificadores puede provocar un muestreo de las estructuras a la horas de comparar
diferentes guias de contorneo en cada centro aunque partan de las mismas instrucciones
The lack of CTVp guidelines was reflected in several ways
Comparar nuestros resultados con otros publicados
Respecto a las desviaciones, comentar las localizaciones de más discordancia e intentar explicarlas
Comentar que en algunas localizaciones faltaban todaslas exploraciones tipo PET etc Mencionar las diferencias en OARS
A pesar de las pruebas de imagen , quias y consensus para ayudar al contorneo, en CyC es preciso profundizar en la formacion de los OR para el contorneo correcto de los diferentes volúmenes incluidos los RAO,, ya que de lo contrario las diferencias de volume, CTV y OARS podrían ocasionar graves discrepancia dosimétricas