7  Response Criteria in Advanced Systemic Mastocytosis

Published

August 19, 2026

7.1 Response criteria

7.2 Abstract

This document provides an interactive analysis of the evolution of response criteria in advanced systemic mastocytosis (advSM), particularly in the context of KIT inhibitor therapy. We’ll explore the progression from Valent criteria to the latest pure pathologic response (PPR) criteria.

7.3 Introduction

Systemic mastocytosis (SM) is a rare clonal hematologic neoplasm driven by the KIT D816V mutation in most cases. Advanced forms (advSM) include:

  • Aggressive SM (ASM)
  • SM with associated hematologic neoplasm (SM-AHN)
  • Mast cell leukemia (MCL)
Code
# Create data for disease subtypes
disease_subtypes <- data.frame(
  Subtype = c("ASM", "SM-AHN", "MCL"),
  Description = c(
    "Aggressive SM with organ damage",
    "SM with associated hematologic neoplasm",
    "Mast cell leukemia"
  ),
  Prevalence = c(30, 60, 10),  # Approximate percentages
  Prognosis = c("Poor", "Variable", "Very Poor")
)

# Create donut chart
fig <- plot_ly(disease_subtypes, 
               labels = ~Subtype, 
               values = ~Prevalence, 
               type = 'pie',
               hole = 0.4,
               textposition = 'inside',
               textinfo = 'label+percent',
               marker = list(colors = c("#FF6B6B", "#4ECDC4", "#45B7D1")))

fig <- fig %>% layout(
  title = "Distribution of AdvSM Subtypes",
  showlegend = TRUE,
  xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
  yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)
)

fig
Figure 7.1: Distribution of Advanced Systemic Mastocytosis Subtypes

7.4 Evolution of Response Criteria

7.4.1 Timeline of Response Criteria Development

Code
# Create timeline data
timeline_data <- data.frame(
  Year = c(2003, 2007, 2010, 2013, 2021),
  Criteria = c("Valent", "Valent (Reaffirmed)", "Mayo", "IWG-MRT-ECNM", "PPR"),
  Key_Features = c(
    "C-finding based",
    "Confirmed criteria",
    "CTCAE grading",
    "Comprehensive definitions",
    "Pathologic focus"
  ),
  stringsAsFactors = FALSE
)

# Create timeline plot
timeline_plot <- ggplot(timeline_data, aes(x = Year, y = 1)) +
  geom_segment(aes(x = min(Year), xend = max(Year), y = 1, yend = 1), 
               color = "gray80", size = 2) +
  geom_point(aes(color = Criteria), size = 8) +
  geom_text(aes(label = Criteria), vjust = -2, size = 4, fontface = "bold") +
  geom_text(aes(label = Key_Features), vjust = 3, size = 3, color = "gray40") +
  scale_x_continuous(breaks = timeline_data$Year) +
  scale_color_viridis_d() +
  theme(
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    axis.title.y = element_blank(),
    panel.grid = element_blank(),
    legend.position = "none"
  ) +
  labs(x = "Year", title = "Evolution of Response Criteria in AdvSM") +
  ylim(0.5, 1.5)

timeline_plot
Figure 7.2: Timeline of Response Criteria Development in AdvSM

7.4.2 Comparison of Response Criteria

Code
criteria_comparison <- data.frame(
  Feature = c("Primary Focus", "Organ Damage Definition", 
              "Minimum Response Duration", "Molecular Response", 
              "Transfusion Criteria", "AHN Component"),
  Valent = c("C-findings reversal", "Basic", "Not specified", 
             "No", "Not defined", "Not addressed"),
  Mayo = c("4 domains (A-D)", "CTCAE v3.0", "4 weeks", 
           "No", "Defined", "Excluded"),
  `IWG-MRT-ECNM` = c("Organ damage + MC burden", "CTCAE ≥Grade 2", 
                     "12 weeks", "No", "Comprehensive", "Mentioned"),
  PPR = c("MC burden only", "Not required", "Not specified", 
          "Yes (KIT D816V)", "N/A", "Separate evaluation"),
  check.names = FALSE
)

criteria_comparison %>%
  kable(caption = "Evolution of Key Features Across Response Criteria") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
  column_spec(1, bold = TRUE, width = "25%") %>%
  column_spec(2:5, width = "18.75%")
Table 7.1: Comparison of Key Response Criteria Features
Evolution of Key Features Across Response Criteria
Feature Valent Mayo IWG-MRT-ECNM PPR
Primary Focus C-findings reversal 4 domains (A-D) Organ damage + MC burden MC burden only
Organ Damage Definition Basic CTCAE v3.0 CTCAE ≥Grade 2 Not required
Minimum Response Duration Not specified 4 weeks 12 weeks Not specified
Molecular Response No No No Yes (KIT D816V)
Transfusion Criteria Not defined Defined Comprehensive N/A
AHN Component Not addressed Excluded Mentioned Separate evaluation

7.5 Response Categories Analysis

7.5.1 Valent Criteria Response Categories

Code
# Create hierarchical data for Valent criteria
valent_data <- data.frame(
  Response = c("Major Response", "Major Response", "Major Response", 
               "Partial Response", "Partial Response", "No Response", "No Response"),
  Subtype = c("Complete Remission", "Incomplete Remission", "Pure Clinical",
              "Good Partial", "Minor Response", "Stable Disease", "Progressive Disease"),
  Requirement = c("MC infiltrates disappear\nTryptase <20 ng/mL",
                  "Decrease in MC/tryptase\nOrganomegaly regression",
                  "Clinical improvement only",
                  ">50% C-finding regression",
                  "≤50% C-finding regression",
                  "No change",
                  "C-finding progression"),
  Value = c(100, 80, 60, 40, 30, 10, 5)
)

# Create sunburst plot
valent_plot <- ggplot(valent_data, aes(x = Response, y = Value, fill = Subtype)) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_fill_viridis_d() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Valent Response Categories",
       x = "Response Category",
       y = "Relative Response Level",
       fill = "Subtype")

valent_plot
Figure 7.3: Valent Response Categories and Requirements

7.5.2 IWG-MRT-ECNM Response Criteria

Code
# Create a visual representation of IWG criteria flow
iwg_flow_data <- data.frame(
  Step = factor(c("Baseline Assessment", "Organ Damage", "MC Burden", "Response Category"),
                levels = c("Baseline Assessment", "Organ Damage", "MC Burden", "Response Category")),
  Description = c("Identify eligible\norgan damage",
                  "≥1 organ damage\nimproved?",
                  "≥50% reduction in\nMC% and tryptase?",
                  "Assign response:\nCR, PR, CI, SD, PD"),
  Y_Position = c(4, 3, 2, 1)
)

iwg_flow_plot <- ggplot(iwg_flow_data, aes(x = 1, y = Y_Position)) +
  geom_point(size = 20, color = "#4ECDC4") +
  geom_segment(aes(x = 1, xend = 1, y = 4, yend = 1.2), 
               arrow = arrow(length = unit(0.3, "cm")), 
               size = 1.5, color = "gray60") +
  geom_text(aes(label = Description), size = 4, fontface = "bold") +
  geom_text(aes(x = 1.3, label = Step), size = 5, hjust = 0, fontface = "bold") +
  xlim(0.5, 2) +
  theme_void() +
  labs(title = "IWG-MRT-ECNM Response Assessment Process")

iwg_flow_plot
Figure 7.4: IWG-MRT-ECNM Response Assessment Flow

7.6 Pure Pathologic Response (PPR) Criteria

7.6.1 PPR vs IWG Comparison

Code
# Simulated data based on paper findings
response_comparison <- data.frame(
  Criteria = rep(c("IWG", "PPR"), each = 4),
  Response = rep(c("CR/CRh", "PR", "CI", "SD"), 2),
  Rate = c(36, 34, 6, 23,  # IWG rates
           47, 28, 0, 25),  # PPR rates (CI not applicable)
  N_Evaluable = c(53, 53, 53, 53,
                  64, 64, 64, 64)  # PPR allows more patients
)

# Filter out CI for PPR
response_comparison <- response_comparison %>%
  filter(!(Criteria == "PPR" & Response == "CI"))

# Create comparison plot
comparison_plot <- ggplot(response_comparison, aes(x = Response, y = Rate, fill = Criteria)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(aes(label = paste0(Rate, "%")), 
            position = position_dodge(width = 0.9), 
            vjust = -0.5) +
  scale_fill_manual(values = c("IWG" = "#FF6B6B", "PPR" = "#4ECDC4")) +
  labs(title = "Response Rates: IWG vs PPR Criteria",
       x = "Response Category",
       y = "Response Rate (%)",
       fill = "Criteria") +
  theme(legend.position = "bottom")

comparison_plot
Figure 7.5: Comparison of PPR and IWG Response Rates

7.6.2 Molecular Response Integration

Code
# Create molecular response data
molecular_data <- data.frame(
  Reduction = c("≥50% reduction", "<1% allele burden", "Complete molecular response"),
  Percentage = c(99, 68, 25),
  Description = c("Nearly all patients", "Majority of patients", "Quarter of patients")
)

# Create horizontal bar plot
molecular_plot <- ggplot(molecular_data, aes(x = reorder(Reduction, Percentage), y = Percentage)) +
  geom_bar(stat = "identity", fill = "#45B7D1", width = 0.7) +
  geom_text(aes(label = paste0(Percentage, "%")), hjust = -0.2, size = 5, fontface = "bold") +
  coord_flip() +
  labs(title = "KIT D816V Molecular Response with Avapritinib",
       x = "",
       y = "Percentage of Patients (%)") +
  theme(axis.text.y = element_text(size = 12, face = "bold")) +
  ylim(0, 110)

molecular_plot
Figure 7.6: KIT D816V Molecular Response Rates with Avapritinib

7.7 Proposed Tiered Response Criteria

Code
# Create tiered approach visualization
tiers <- data.frame(
  Tier = c("Tier I", "Tier II", "Tier III"),
  Component = c("Pathologic Response", "Molecular Response", "Clinical Response"),
  Assessment = c("SM: BM mast cells, Tryptase\nAHN: Disease-specific criteria",
                 "KIT D816V allele burden\nCytogenetics, NGS mutations",
                 "Organ damage (IWG criteria)\nSymptom assessment"),
  Priority = c("Primary Endpoint", "Secondary Endpoint", "Secondary Endpoint"),
  Color = c("#FF6B6B", "#4ECDC4", "#45B7D1")
)

# Create tier visualization
tier_plot <- ggplot(tiers, aes(x = 1, y = rev(seq_along(Tier)))) +
  geom_tile(aes(fill = Tier), width = 0.8, height = 0.8) +
  geom_text(aes(label = Tier), x = 0.5, size = 6, fontface = "bold", color = "white") +
  geom_text(aes(label = Component), x = 1, size = 5, fontface = "bold") +
  geom_text(aes(label = Assessment), x = 1.6, size = 4, hjust = 0) +
  geom_text(aes(label = Priority), x = 2.5, size = 4, hjust = 0, fontface = "italic") +
  scale_fill_manual(values = tiers$Color) +
  xlim(0.2, 3) +
  theme_void() +
  theme(legend.position = "none") +
  labs(title = "Tiered Response Assessment in AdvSM")

tier_plot
Figure 7.7: Proposed Tiered Response Assessment Framework

7.8 Interactive Response Criteria Explorer

Code
# Create comprehensive comparison table
all_criteria <- data.frame(
  Criteria = c("Valent (2003)", "Mayo (2010)", "IWG-MRT-ECNM (2013)", "PPR (2021)"),
  `Primary Focus` = c("C-finding reversal", "4 domains (A-D)", 
                      "Organ damage normalization", "Mast cell burden only"),
  `Response Categories` = c("MR, PR, NR", "CR, MR, PR, SD, PD", 
                           "CR, PR, CI, SD, PD", "CR/CRh, PR, SD, PD"),
  `Duration Required` = c("Not specified", "4 weeks", "12 weeks", "Not specified"),
  `Strengths` = c("Simple, historically important", 
                  "Detailed organ damage criteria",
                  "Comprehensive, regulatory accepted", 
                  "Focuses on disease biology"),
  `Limitations` = c("Subjective, incomplete definitions",
                   "Complex, excludes SM-AHN",
                   "Confounded by comorbidities",
                   "Does not capture clinical benefit"),
  check.names = FALSE
)

# Create interactive table
datatable(all_criteria, 
          options = list(
            pageLength = 5,
            scrollX = TRUE,
            columnDefs = list(
              list(width = '150px', targets = 0),
              list(width = '200px', targets = 1:5)
            )
          ),
          class = 'cell-border stripe hover',
          rownames = FALSE) %>%
  formatStyle(columns = 1, fontWeight = 'bold') %>%
  formatStyle(columns = 2:6, fontSize = '12px')
Table 7.2: Interactive Comparison of All Response Criteria

7.9 Clinical Trial Design Implications

Code
# Create trial endpoint visualization
endpoints <- data.frame(
  Endpoint_Type = c("Primary", "Secondary", "Secondary", "Secondary", 
                    "Exploratory", "Exploratory"),
  Endpoint = c("SM Pathologic Response (PPR)",
               "KIT D816V Molecular Response",
               "Clinical Response (IWG)",
               "AHN Pathologic Response",
               "NGS Mutation Profile",
               "Patient-Reported Outcomes"),
  Importance = c(100, 80, 75, 70, 60, 65),
  Category = c("Pathologic", "Molecular", "Clinical", "Pathologic", 
               "Molecular", "Clinical")
)

endpoint_plot <- ggplot(endpoints, aes(x = reorder(Endpoint, Importance), 
                                       y = Importance, 
                                       fill = Category)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  scale_fill_manual(values = c("Pathologic" = "#FF6B6B", 
                               "Molecular" = "#4ECDC4", 
                               "Clinical" = "#45B7D1")) +
  labs(title = "Recommended Clinical Trial Endpoints",
       x = "",
       y = "Relative Importance",
       fill = "Category") +
  theme(legend.position = "bottom")

endpoint_plot
Figure 7.8: Recommended Trial Endpoints Using Tiered Criteria

7.10 Summary and Future Directions

7.10.1 Key Takeaways

NoteEvolution of Response Criteria
  1. Historical progression: From simple C-finding reversal (Valent) to sophisticated tiered assessment (PPR)
  2. KIT inhibitor impact: Midostaurin and avapritinib have driven need for more refined criteria
  3. Molecular responses: Now achievable with selective KIT D816V inhibitors
  4. Uncoupling responses: Pathologic and clinical responses should be assessed independently

7.10.2 Interactive Summary Dashboard

Code
# Create multiple summary plots
p1 <- timeline_plot + theme(plot.title = element_text(size = 14))
p2 <- comparison_plot + theme(plot.title = element_text(size = 14))
p3 <- molecular_plot + theme(plot.title = element_text(size = 14))
p4 <- endpoint_plot + theme(plot.title = element_text(size = 14))

# Combine plots using patchwork
summary_dashboard <- (p1 + p2) / (p3 + p4) +
  plot_annotation(
    title = "Response Criteria in AdvSM: A Comprehensive Overview",
    theme = theme(plot.title = element_text(size = 18, face = "bold"))
  )

summary_dashboard
Figure 7.9: Summary Dashboard of Response Criteria Evolution

7.11 References

Shomali W, Gotlib J. Response Criteria in Advanced Systemic Mastocytosis: Evolution in the Era of KIT Inhibitors. Int J Mol Sci. 2021;22(6):2983.

7.12 Comparison of Response Criteria: Avapritinib vs Bezuclastinib Development

Code
# Comparison of Response Criteria: Avapritinib vs Bezuclastinib Development
# Load required libraries
library(tidyverse)
library(kableExtra)
library(gt)
library(DT)

# Create comprehensive comparison data
drug_comparison <- data.frame(
  Feature = c(
    "Drug Class",
    "Primary Trials",
    "Primary Response Criteria",
    "Key Modifications to IWG",
    "Pathologic Response Focus",
    "Molecular Response Assessment",
    "Organ Damage Requirements",
    "Response Duration",
    "Evaluable Population",
    "Novel Features"
  ),
  Avapritinib = c(
    "Selective KIT D816V inhibitor",
    "EXPLORER (Phase I), PATHFINDER (Phase II)",
    "Modified IWG-MRT-ECNM (mIWG) + PPR",
    "• Added CRh category\n• Weight loss ≥10% as eligible\n• Splenomegaly ≥5 cm allowed\n• PD confirmation 4 weeks",
    "PPR: BM mast cells + tryptase only",
    "KIT D816V allele burden by ddPCR\n• 99% achieved ≥50% reduction\n• 25% complete molecular response",
    "Not required for PPR criteria\nAllows previously treated patients",
    "Not specified for PPR\n12 weeks for mIWG responses",
    "Increased by 11 patients using PPR\n(patients without organ damage)",
    "First to implement PPR criteria\nUncoupled pathologic from clinical response"
  ),
  Bezuclastinib = c(
    "Selective KIT D816V inhibitor",
    "APEX (Phase II), SUMMIT (Phase I/II)",
    "Modified IWG-MRT-ECNM (expected) + PPR (likely)",
    "• Likely similar to avapritinib\n• Expected harmonization with current standards",
    "Expected to use PPR approach\nBM mast cells + tryptase",
    "KIT D816V molecular monitoring expected\nSensitive PCR-based assays",
    "Likely following avapritinib precedent\nPPR for broader eligibility",
    "Expected 12 weeks for IWG\nTBD for pathologic responses",
    "Broader inclusion expected\nwith PPR implementation",
    "Building on avapritinib experience\nPotential for refined criteria"
  ),
  stringsAsFactors = FALSE
)

# Create a detailed comparison table using gt
comparison_table <- drug_comparison %>%
  gt() %>%
  tab_header(
    title = "Response Criteria Comparison: Avapritinib vs Bezuclastinib",
    subtitle = "Evolution of Response Assessment in KIT Inhibitor Development"
  ) %>%
  cols_label(
    Feature = "Criteria Feature",
    Avapritinib = "Avapritinib",
    Bezuclastinib = "Bezuclastinib*"
  ) %>%
  tab_source_note(
    source_note = "*Bezuclastinib criteria based on expected approach following field evolution"
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#f0f0f0"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      columns = Feature
    )
  ) %>%
  tab_style(
    style = cell_fill(color = "#e8f4f8"),
    locations = cells_body(
      columns = Avapritinib,
      rows = c(3, 5, 6)
    )
  ) %>%
  tab_style(
    style = cell_fill(color = "#f8e8e8"),
    locations = cells_body(
      columns = Bezuclastinib,
      rows = c(3, 5, 6)
    )
  ) %>%
  cols_width(
    Feature ~ px(200),
    Avapritinib ~ px(350),
    Bezuclastinib ~ px(350)
  )

# Display the table
print(comparison_table)
<div id="ivtjjambmj" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
  <style>#ivtjjambmj table {
  font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#ivtjjambmj thead, #ivtjjambmj tbody, #ivtjjambmj tfoot, #ivtjjambmj tr, #ivtjjambmj td, #ivtjjambmj th {
  border-style: none;
}

#ivtjjambmj p {
  margin: 0;
  padding: 0;
}

#ivtjjambmj .gt_table {
  display: table;
  border-collapse: collapse;
  line-height: normal;
  margin-left: auto;
  margin-right: auto;
  color: #333333;
  font-size: 16px;
  font-weight: normal;
  font-style: normal;
  background-color: #FFFFFF;
  width: auto;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #A8A8A8;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #A8A8A8;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
}

#ivtjjambmj .gt_caption {
  padding-top: 4px;
  padding-bottom: 4px;
}

#ivtjjambmj .gt_title {
  color: #333333;
  font-size: 125%;
  font-weight: initial;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-color: #FFFFFF;
  border-bottom-width: 0;
}

#ivtjjambmj .gt_subtitle {
  color: #333333;
  font-size: 85%;
  font-weight: initial;
  padding-top: 3px;
  padding-bottom: 5px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-color: #FFFFFF;
  border-top-width: 0;
}

#ivtjjambmj .gt_heading {
  background-color: #FFFFFF;
  text-align: center;
  border-bottom-color: #FFFFFF;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#ivtjjambmj .gt_bottom_border {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#ivtjjambmj .gt_col_headings {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#ivtjjambmj .gt_col_heading {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 6px;
  padding-left: 5px;
  padding-right: 5px;
  overflow-x: hidden;
}

#ivtjjambmj .gt_column_spanner_outer {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 4px;
  padding-right: 4px;
}

#ivtjjambmj .gt_column_spanner_outer:first-child {
  padding-left: 0;
}

#ivtjjambmj .gt_column_spanner_outer:last-child {
  padding-right: 0;
}

#ivtjjambmj .gt_column_spanner {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 5px;
  overflow-x: hidden;
  display: inline-block;
  width: 100%;
}

#ivtjjambmj .gt_spanner_row {
  border-bottom-style: hidden;
}

#ivtjjambmj .gt_group_heading {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  text-align: left;
}

#ivtjjambmj .gt_empty_group_heading {
  padding: 0.5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: middle;
}

#ivtjjambmj .gt_from_md > :first-child {
  margin-top: 0;
}

#ivtjjambmj .gt_from_md > :last-child {
  margin-bottom: 0;
}

#ivtjjambmj .gt_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  margin: 10px;
  border-top-style: solid;
  border-top-width: 1px;
  border-top-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  overflow-x: hidden;
}

#ivtjjambmj .gt_stub {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
}

#ivtjjambmj .gt_stub_row_group {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
  vertical-align: top;
}

#ivtjjambmj .gt_row_group_first td {
  border-top-width: 2px;
}

#ivtjjambmj .gt_row_group_first th {
  border-top-width: 2px;
}

#ivtjjambmj .gt_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#ivtjjambmj .gt_first_summary_row {
  border-top-style: solid;
  border-top-color: #D3D3D3;
}

#ivtjjambmj .gt_first_summary_row.thick {
  border-top-width: 2px;
}

#ivtjjambmj .gt_last_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#ivtjjambmj .gt_grand_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#ivtjjambmj .gt_first_grand_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-style: double;
  border-top-width: 6px;
  border-top-color: #D3D3D3;
}

#ivtjjambmj .gt_last_grand_summary_row_top {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: double;
  border-bottom-width: 6px;
  border-bottom-color: #D3D3D3;
}

#ivtjjambmj .gt_striped {
  background-color: rgba(128, 128, 128, 0.05);
}

#ivtjjambmj .gt_table_body {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#ivtjjambmj .gt_footnotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#ivtjjambmj .gt_footnote {
  margin: 0px;
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#ivtjjambmj .gt_sourcenotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#ivtjjambmj .gt_sourcenote {
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#ivtjjambmj .gt_left {
  text-align: left;
}

#ivtjjambmj .gt_center {
  text-align: center;
}

#ivtjjambmj .gt_right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

#ivtjjambmj .gt_font_normal {
  font-weight: normal;
}

#ivtjjambmj .gt_font_bold {
  font-weight: bold;
}

#ivtjjambmj .gt_font_italic {
  font-style: italic;
}

#ivtjjambmj .gt_super {
  font-size: 65%;
}

#ivtjjambmj .gt_footnote_marks {
  font-size: 75%;
  vertical-align: 0.4em;
  position: initial;
}

#ivtjjambmj .gt_asterisk {
  font-size: 100%;
  vertical-align: 0;
}

#ivtjjambmj .gt_indent_1 {
  text-indent: 5px;
}

#ivtjjambmj .gt_indent_2 {
  text-indent: 10px;
}

#ivtjjambmj .gt_indent_3 {
  text-indent: 15px;
}

#ivtjjambmj .gt_indent_4 {
  text-indent: 20px;
}

#ivtjjambmj .gt_indent_5 {
  text-indent: 25px;
}

#ivtjjambmj .katex-display {
  display: inline-flex !important;
  margin-bottom: 0.75em !important;
}

#ivtjjambmj div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
  height: 0px !important;
}
</style>
  <table class="gt_table" style="table-layout:fixed;width:0px;" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
  <colgroup>
    <col style="width:200px;"/>
    <col style="width:350px;"/>
    <col style="width:350px;"/>
  </colgroup>
  <thead>
    <tr class="gt_heading">
      <td colspan="3" class="gt_heading gt_title gt_font_normal" style>Response Criteria Comparison: Avapritinib vs Bezuclastinib</td>
    </tr>
    <tr class="gt_heading">
      <td colspan="3" class="gt_heading gt_subtitle gt_font_normal gt_bottom_border" style>Evolution of Response Assessment in KIT Inhibitor Development</td>
    </tr>
    <tr class="gt_col_headings">
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Feature">Criteria Feature</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Avapritinib">Avapritinib</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Bezuclastinib">Bezuclastinib*</th>
    </tr>
  </thead>
  <tbody class="gt_table_body">
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Drug Class</td>
<td headers="Avapritinib" class="gt_row gt_left">Selective KIT D816V inhibitor</td>
<td headers="Bezuclastinib" class="gt_row gt_left">Selective KIT D816V inhibitor</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Primary Trials</td>
<td headers="Avapritinib" class="gt_row gt_left">EXPLORER (Phase I), PATHFINDER (Phase II)</td>
<td headers="Bezuclastinib" class="gt_row gt_left">APEX (Phase II), SUMMIT (Phase I/II)</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Primary Response Criteria</td>
<td headers="Avapritinib" class="gt_row gt_left" style="background-color: #E8F4F8;">Modified IWG-MRT-ECNM (mIWG) + PPR</td>
<td headers="Bezuclastinib" class="gt_row gt_left" style="background-color: #F8E8E8;">Modified IWG-MRT-ECNM (expected) + PPR (likely)</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Key Modifications to IWG</td>
<td headers="Avapritinib" class="gt_row gt_left">• Added CRh category
• Weight loss ≥10% as eligible
• Splenomegaly ≥5 cm allowed
• PD confirmation 4 weeks</td>
<td headers="Bezuclastinib" class="gt_row gt_left">• Likely similar to avapritinib
• Expected harmonization with current standards</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Pathologic Response Focus</td>
<td headers="Avapritinib" class="gt_row gt_left" style="background-color: #E8F4F8;">PPR: BM mast cells + tryptase only</td>
<td headers="Bezuclastinib" class="gt_row gt_left" style="background-color: #F8E8E8;">Expected to use PPR approach
BM mast cells + tryptase</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Molecular Response Assessment</td>
<td headers="Avapritinib" class="gt_row gt_left" style="background-color: #E8F4F8;">KIT D816V allele burden by ddPCR
• 99% achieved ≥50% reduction
• 25% complete molecular response</td>
<td headers="Bezuclastinib" class="gt_row gt_left" style="background-color: #F8E8E8;">KIT D816V molecular monitoring expected
Sensitive PCR-based assays</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Organ Damage Requirements</td>
<td headers="Avapritinib" class="gt_row gt_left">Not required for PPR criteria
Allows previously treated patients</td>
<td headers="Bezuclastinib" class="gt_row gt_left">Likely following avapritinib precedent
PPR for broader eligibility</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Response Duration</td>
<td headers="Avapritinib" class="gt_row gt_left">Not specified for PPR
12 weeks for mIWG responses</td>
<td headers="Bezuclastinib" class="gt_row gt_left">Expected 12 weeks for IWG
TBD for pathologic responses</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Evaluable Population</td>
<td headers="Avapritinib" class="gt_row gt_left">Increased by 11 patients using PPR
(patients without organ damage)</td>
<td headers="Bezuclastinib" class="gt_row gt_left">Broader inclusion expected
with PPR implementation</td></tr>
    <tr><td headers="Feature" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Novel Features</td>
<td headers="Avapritinib" class="gt_row gt_left">First to implement PPR criteria
Uncoupled pathologic from clinical response</td>
<td headers="Bezuclastinib" class="gt_row gt_left">Building on avapritinib experience
Potential for refined criteria</td></tr>
  </tbody>
  <tfoot>
    <tr class="gt_sourcenotes">
      <td class="gt_sourcenote" colspan="3">*Bezuclastinib criteria based on expected approach following field evolution</td>
    </tr>
  </tfoot>
</table>
</div>
Code
# Create a second table focusing on response categories
response_categories <- data.frame(
  Response_Type = c(
    "Complete Response (CR)",
    "CR with partial hematologic recovery (CRh)",
    "Partial Response (PR)",
    "Clinical Improvement (CI)",
    "Stable Disease (SD)",
    "Progressive Disease (PD)",
    "Molecular CR",
    "Molecular PR"
  ),
  Avapritinib_mIWG = c(
    "All organ damage normalized\nBM MC eliminated\nTryptase <20 ng/mL",
    "Same as CR but:\nANC ≥0.5×10⁹/L\nHb ≥8 g/dL\nPlatelets ≥50×10⁹/L",
    "≥1 organ improved\n≥50% ↓ in MC + tryptase",
    "≥1 organ improved\nNo MC/tryptase requirement",
    "Not meeting other criteria",
    "Transformation to AML/MCL\nOrgan damage worsening",
    "Not part of mIWG",
    "Not part of mIWG"
  ),
  Avapritinib_PPR = c(
    "BM MC eliminated\nTryptase <20 ng/mL\nNormal blood counts",
    "BM MC eliminated\nTryptase <20 ng/mL\nPartial blood recovery",
    "≥50% ↓ in BM MC\n≥50% ↓ in tryptase",
    "Not applicable in PPR",
    "Not meeting other criteria",
    "Transformation to AML/MCL",
    "KIT D816V below detection",
    "≥50% ↓ in KIT D816V"
  ),
  Expected_Bezuclastinib = c(
    "Similar to avapritinib",
    "Similar to avapritinib",
    "Similar to avapritinib",
    "May be included",
    "Similar definition",
    "Similar definition",
    "Likely included",
    "Likely included"
  ),
  stringsAsFactors = FALSE
)

# Create response categories table
response_table <- response_categories %>%
  gt() %>%
  tab_header(
    title = "Response Categories Comparison",
    subtitle = "Detailed Response Definitions Across Criteria"
  ) %>%
  cols_label(
    Response_Type = "Response Category",
    Avapritinib_mIWG = "Avapritinib\n(mIWG)",
    Avapritinib_PPR = "Avapritinib\n(PPR)",
    Expected_Bezuclastinib = "Expected\nBezuclastinib"
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#f0f0f0"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      columns = Response_Type
    )
  ) %>%
  cols_width(
    Response_Type ~ px(200),
    everything() ~ px(250)
  )

print(response_table)
<div id="yeixpoyued" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
  <style>#yeixpoyued table {
  font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#yeixpoyued thead, #yeixpoyued tbody, #yeixpoyued tfoot, #yeixpoyued tr, #yeixpoyued td, #yeixpoyued th {
  border-style: none;
}

#yeixpoyued p {
  margin: 0;
  padding: 0;
}

#yeixpoyued .gt_table {
  display: table;
  border-collapse: collapse;
  line-height: normal;
  margin-left: auto;
  margin-right: auto;
  color: #333333;
  font-size: 16px;
  font-weight: normal;
  font-style: normal;
  background-color: #FFFFFF;
  width: auto;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #A8A8A8;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #A8A8A8;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
}

#yeixpoyued .gt_caption {
  padding-top: 4px;
  padding-bottom: 4px;
}

#yeixpoyued .gt_title {
  color: #333333;
  font-size: 125%;
  font-weight: initial;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-color: #FFFFFF;
  border-bottom-width: 0;
}

#yeixpoyued .gt_subtitle {
  color: #333333;
  font-size: 85%;
  font-weight: initial;
  padding-top: 3px;
  padding-bottom: 5px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-color: #FFFFFF;
  border-top-width: 0;
}

#yeixpoyued .gt_heading {
  background-color: #FFFFFF;
  text-align: center;
  border-bottom-color: #FFFFFF;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#yeixpoyued .gt_bottom_border {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#yeixpoyued .gt_col_headings {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#yeixpoyued .gt_col_heading {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 6px;
  padding-left: 5px;
  padding-right: 5px;
  overflow-x: hidden;
}

#yeixpoyued .gt_column_spanner_outer {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 4px;
  padding-right: 4px;
}

#yeixpoyued .gt_column_spanner_outer:first-child {
  padding-left: 0;
}

#yeixpoyued .gt_column_spanner_outer:last-child {
  padding-right: 0;
}

#yeixpoyued .gt_column_spanner {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 5px;
  overflow-x: hidden;
  display: inline-block;
  width: 100%;
}

#yeixpoyued .gt_spanner_row {
  border-bottom-style: hidden;
}

#yeixpoyued .gt_group_heading {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  text-align: left;
}

#yeixpoyued .gt_empty_group_heading {
  padding: 0.5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: middle;
}

#yeixpoyued .gt_from_md > :first-child {
  margin-top: 0;
}

#yeixpoyued .gt_from_md > :last-child {
  margin-bottom: 0;
}

#yeixpoyued .gt_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  margin: 10px;
  border-top-style: solid;
  border-top-width: 1px;
  border-top-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  overflow-x: hidden;
}

#yeixpoyued .gt_stub {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
}

#yeixpoyued .gt_stub_row_group {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
  vertical-align: top;
}

#yeixpoyued .gt_row_group_first td {
  border-top-width: 2px;
}

#yeixpoyued .gt_row_group_first th {
  border-top-width: 2px;
}

#yeixpoyued .gt_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#yeixpoyued .gt_first_summary_row {
  border-top-style: solid;
  border-top-color: #D3D3D3;
}

#yeixpoyued .gt_first_summary_row.thick {
  border-top-width: 2px;
}

#yeixpoyued .gt_last_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#yeixpoyued .gt_grand_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#yeixpoyued .gt_first_grand_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-style: double;
  border-top-width: 6px;
  border-top-color: #D3D3D3;
}

#yeixpoyued .gt_last_grand_summary_row_top {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: double;
  border-bottom-width: 6px;
  border-bottom-color: #D3D3D3;
}

#yeixpoyued .gt_striped {
  background-color: rgba(128, 128, 128, 0.05);
}

#yeixpoyued .gt_table_body {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#yeixpoyued .gt_footnotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#yeixpoyued .gt_footnote {
  margin: 0px;
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#yeixpoyued .gt_sourcenotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#yeixpoyued .gt_sourcenote {
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#yeixpoyued .gt_left {
  text-align: left;
}

#yeixpoyued .gt_center {
  text-align: center;
}

#yeixpoyued .gt_right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

#yeixpoyued .gt_font_normal {
  font-weight: normal;
}

#yeixpoyued .gt_font_bold {
  font-weight: bold;
}

#yeixpoyued .gt_font_italic {
  font-style: italic;
}

#yeixpoyued .gt_super {
  font-size: 65%;
}

#yeixpoyued .gt_footnote_marks {
  font-size: 75%;
  vertical-align: 0.4em;
  position: initial;
}

#yeixpoyued .gt_asterisk {
  font-size: 100%;
  vertical-align: 0;
}

#yeixpoyued .gt_indent_1 {
  text-indent: 5px;
}

#yeixpoyued .gt_indent_2 {
  text-indent: 10px;
}

#yeixpoyued .gt_indent_3 {
  text-indent: 15px;
}

#yeixpoyued .gt_indent_4 {
  text-indent: 20px;
}

#yeixpoyued .gt_indent_5 {
  text-indent: 25px;
}

#yeixpoyued .katex-display {
  display: inline-flex !important;
  margin-bottom: 0.75em !important;
}

#yeixpoyued div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
  height: 0px !important;
}
</style>
  <table class="gt_table" style="table-layout:fixed;width:0px;" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
  <colgroup>
    <col style="width:200px;"/>
    <col style="width:250px;"/>
    <col style="width:250px;"/>
    <col style="width:250px;"/>
  </colgroup>
  <thead>
    <tr class="gt_heading">
      <td colspan="4" class="gt_heading gt_title gt_font_normal" style>Response Categories Comparison</td>
    </tr>
    <tr class="gt_heading">
      <td colspan="4" class="gt_heading gt_subtitle gt_font_normal gt_bottom_border" style>Detailed Response Definitions Across Criteria</td>
    </tr>
    <tr class="gt_col_headings">
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Response_Type">Response Category</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Avapritinib_mIWG">Avapritinib
(mIWG)</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Avapritinib_PPR">Avapritinib
(PPR)</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Expected_Bezuclastinib">Expected
Bezuclastinib</th>
    </tr>
  </thead>
  <tbody class="gt_table_body">
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Complete Response (CR)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">All organ damage normalized
BM MC eliminated
Tryptase &lt;20 ng/mL</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">BM MC eliminated
Tryptase &lt;20 ng/mL
Normal blood counts</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Similar to avapritinib</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">CR with partial hematologic recovery (CRh)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">Same as CR but:
ANC ≥0.5×10⁹/L
Hb ≥8 g/dL
Platelets ≥50×10⁹/L</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">BM MC eliminated
Tryptase &lt;20 ng/mL
Partial blood recovery</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Similar to avapritinib</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Partial Response (PR)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">≥1 organ improved
≥50% ↓ in MC + tryptase</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">≥50% ↓ in BM MC
≥50% ↓ in tryptase</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Similar to avapritinib</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Clinical Improvement (CI)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">≥1 organ improved
No MC/tryptase requirement</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">Not applicable in PPR</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">May be included</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Stable Disease (SD)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">Not meeting other criteria</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">Not meeting other criteria</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Similar definition</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Progressive Disease (PD)</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">Transformation to AML/MCL
Organ damage worsening</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">Transformation to AML/MCL</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Similar definition</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Molecular CR</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">Not part of mIWG</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">KIT D816V below detection</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Likely included</td></tr>
    <tr><td headers="Response_Type" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Molecular PR</td>
<td headers="Avapritinib_mIWG" class="gt_row gt_left">Not part of mIWG</td>
<td headers="Avapritinib_PPR" class="gt_row gt_left">≥50% ↓ in KIT D816V</td>
<td headers="Expected_Bezuclastinib" class="gt_row gt_left">Likely included</td></tr>
  </tbody>
  
</table>
</div>
Code
# Create a visual comparison of key differences
library(ggplot2)
library(tidyr)

# Data for visualization
criteria_evolution <- data.frame(
  Aspect = c("Organ Damage Required", "Molecular Response", "Pathologic Focus", 
             "Patient Eligibility", "Response Uncoupling"),
  Traditional_IWG = c(100, 0, 50, 60, 0),
  Avapritinib_Approach = c(50, 90, 100, 90, 100),
  Expected_Bezuclastinib = c(50, 95, 100, 95, 100)
)

# Reshape for plotting
criteria_long <- criteria_evolution %>%
  pivot_longer(cols = -Aspect, names_to = "Approach", values_to = "Implementation")

# Create radar-style comparison
comparison_plot <- ggplot(criteria_long, aes(x = Aspect, y = Implementation, 
                                             group = Approach, color = Approach)) +
  geom_line(size = 1.5) +
  geom_point(size = 4) +
  scale_color_manual(values = c("Traditional_IWG" = "#666666",
                                "Avapritinib_Approach" = "#4ECDC4",
                                "Expected_Bezuclastinib" = "#FF6B6B"),
                     labels = c("Avapritinib Approach", 
                                "Expected Bezuclastinib",
                                "Traditional IWG")) +
  coord_polar() +
  theme_minimal() +
  theme(axis.text.x = element_text(size = 10, face = "bold"),
        legend.position = "bottom") +
  labs(title = "Evolution of Response Criteria Focus",
       subtitle = "Comparison of Traditional vs Modern KIT Inhibitor Approaches",
       y = "Implementation Level (%)",
       color = "Approach") +
  ylim(0, 100)

print(comparison_plot)

Code
# Create a timeline comparison
timeline_data <- data.frame(
  Year = c(2013, 2018, 2020, 2021, 2023, 2024),
  Event = c("IWG-MRT-ECNM\nPublished", 
            "Avapritinib\nPhase I Starts",
            "mIWG Criteria\nDeveloped", 
            "PPR Criteria\nProposed",
            "Bezuclastinib\nTrials Begin",
            "Harmonized\nCriteria Expected"),
  Drug = c("Standard", "Avapritinib", "Avapritinib", 
           "Avapritinib", "Bezuclastinib", "Both"),
  Y_Position = c(1, 2, 2, 2, 3, 1.5)
)

timeline_plot <- ggplot(timeline_data, aes(x = Year, y = Y_Position, color = Drug)) +
  geom_point(size = 8) +
  geom_line(aes(group = Drug), size = 1.5, alpha = 0.5) +
  geom_text(aes(label = Event), vjust = -1.5, size = 3.5, color = "black") +
  scale_color_manual(values = c("Standard" = "#666666",
                                "Avapritinib" = "#4ECDC4",
                                "Bezuclastinib" = "#FF6B6B",
                                "Both" = "#45B7D1")) +
  scale_x_continuous(breaks = timeline_data$Year) +
  theme_minimal() +
  theme(axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        legend.position = "bottom") +
  labs(title = "Timeline of Response Criteria Development",
       subtitle = "Evolution with KIT Inhibitor Development",
       x = "Year",
       y = "") +
  ylim(0.5, 4)

print(timeline_plot)

Code
# Summary recommendations table
recommendations <- data.frame(
  Recommendation = c(
    "Primary Endpoint",
    "Secondary Endpoints",
    "Molecular Assessment",
    "Patient Population",
    "Response Duration",
    "Future Direction"
  ),
  Current_State = c(
    "PPR (pathologic response) recommended",
    "Molecular response, clinical improvement, organ damage",
    "KIT D816V by sensitive PCR (ddPCR or similar)",
    "Include patients without organ damage via PPR",
    "Flexible based on endpoint type",
    "Tiered approach: Pathologic → Molecular → Clinical"
  ),
  stringsAsFactors = FALSE
)

rec_table <- recommendations %>%
  gt() %>%
  tab_header(
    title = "Recommended Approach for Future KIT Inhibitor Trials",
    subtitle = "Based on Avapritinib Experience"
  ) %>%
  tab_style(
    style = list(
      cell_fill(color = "#f0f0f0"),
      cell_text(weight = "bold")
    ),
    locations = cells_body(
      columns = Recommendation
    )
  ) %>%
  cols_width(
    Recommendation ~ px(200),
    Current_State ~ px(500)
  )

print(rec_table)
<div id="aahjomduat" style="padding-left:0px;padding-right:0px;padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:auto;width:auto;height:auto;">
  <style>#aahjomduat table {
  font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#aahjomduat thead, #aahjomduat tbody, #aahjomduat tfoot, #aahjomduat tr, #aahjomduat td, #aahjomduat th {
  border-style: none;
}

#aahjomduat p {
  margin: 0;
  padding: 0;
}

#aahjomduat .gt_table {
  display: table;
  border-collapse: collapse;
  line-height: normal;
  margin-left: auto;
  margin-right: auto;
  color: #333333;
  font-size: 16px;
  font-weight: normal;
  font-style: normal;
  background-color: #FFFFFF;
  width: auto;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #A8A8A8;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #A8A8A8;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
}

#aahjomduat .gt_caption {
  padding-top: 4px;
  padding-bottom: 4px;
}

#aahjomduat .gt_title {
  color: #333333;
  font-size: 125%;
  font-weight: initial;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-color: #FFFFFF;
  border-bottom-width: 0;
}

#aahjomduat .gt_subtitle {
  color: #333333;
  font-size: 85%;
  font-weight: initial;
  padding-top: 3px;
  padding-bottom: 5px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-color: #FFFFFF;
  border-top-width: 0;
}

#aahjomduat .gt_heading {
  background-color: #FFFFFF;
  text-align: center;
  border-bottom-color: #FFFFFF;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#aahjomduat .gt_bottom_border {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#aahjomduat .gt_col_headings {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
}

#aahjomduat .gt_col_heading {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 6px;
  padding-left: 5px;
  padding-right: 5px;
  overflow-x: hidden;
}

#aahjomduat .gt_column_spanner_outer {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: normal;
  text-transform: inherit;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 4px;
  padding-right: 4px;
}

#aahjomduat .gt_column_spanner_outer:first-child {
  padding-left: 0;
}

#aahjomduat .gt_column_spanner_outer:last-child {
  padding-right: 0;
}

#aahjomduat .gt_column_spanner {
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: bottom;
  padding-top: 5px;
  padding-bottom: 5px;
  overflow-x: hidden;
  display: inline-block;
  width: 100%;
}

#aahjomduat .gt_spanner_row {
  border-bottom-style: hidden;
}

#aahjomduat .gt_group_heading {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  text-align: left;
}

#aahjomduat .gt_empty_group_heading {
  padding: 0.5px;
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  vertical-align: middle;
}

#aahjomduat .gt_from_md > :first-child {
  margin-top: 0;
}

#aahjomduat .gt_from_md > :last-child {
  margin-bottom: 0;
}

#aahjomduat .gt_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  margin: 10px;
  border-top-style: solid;
  border-top-width: 1px;
  border-top-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 1px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 1px;
  border-right-color: #D3D3D3;
  vertical-align: middle;
  overflow-x: hidden;
}

#aahjomduat .gt_stub {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
}

#aahjomduat .gt_stub_row_group {
  color: #333333;
  background-color: #FFFFFF;
  font-size: 100%;
  font-weight: initial;
  text-transform: inherit;
  border-right-style: solid;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
  padding-left: 5px;
  padding-right: 5px;
  vertical-align: top;
}

#aahjomduat .gt_row_group_first td {
  border-top-width: 2px;
}

#aahjomduat .gt_row_group_first th {
  border-top-width: 2px;
}

#aahjomduat .gt_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#aahjomduat .gt_first_summary_row {
  border-top-style: solid;
  border-top-color: #D3D3D3;
}

#aahjomduat .gt_first_summary_row.thick {
  border-top-width: 2px;
}

#aahjomduat .gt_last_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#aahjomduat .gt_grand_summary_row {
  color: #333333;
  background-color: #FFFFFF;
  text-transform: inherit;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
}

#aahjomduat .gt_first_grand_summary_row {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-top-style: double;
  border-top-width: 6px;
  border-top-color: #D3D3D3;
}

#aahjomduat .gt_last_grand_summary_row_top {
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 5px;
  padding-right: 5px;
  border-bottom-style: double;
  border-bottom-width: 6px;
  border-bottom-color: #D3D3D3;
}

#aahjomduat .gt_striped {
  background-color: rgba(128, 128, 128, 0.05);
}

#aahjomduat .gt_table_body {
  border-top-style: solid;
  border-top-width: 2px;
  border-top-color: #D3D3D3;
  border-bottom-style: solid;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
}

#aahjomduat .gt_footnotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#aahjomduat .gt_footnote {
  margin: 0px;
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#aahjomduat .gt_sourcenotes {
  color: #333333;
  background-color: #FFFFFF;
  border-bottom-style: none;
  border-bottom-width: 2px;
  border-bottom-color: #D3D3D3;
  border-left-style: none;
  border-left-width: 2px;
  border-left-color: #D3D3D3;
  border-right-style: none;
  border-right-width: 2px;
  border-right-color: #D3D3D3;
}

#aahjomduat .gt_sourcenote {
  font-size: 90%;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 5px;
  padding-right: 5px;
}

#aahjomduat .gt_left {
  text-align: left;
}

#aahjomduat .gt_center {
  text-align: center;
}

#aahjomduat .gt_right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

#aahjomduat .gt_font_normal {
  font-weight: normal;
}

#aahjomduat .gt_font_bold {
  font-weight: bold;
}

#aahjomduat .gt_font_italic {
  font-style: italic;
}

#aahjomduat .gt_super {
  font-size: 65%;
}

#aahjomduat .gt_footnote_marks {
  font-size: 75%;
  vertical-align: 0.4em;
  position: initial;
}

#aahjomduat .gt_asterisk {
  font-size: 100%;
  vertical-align: 0;
}

#aahjomduat .gt_indent_1 {
  text-indent: 5px;
}

#aahjomduat .gt_indent_2 {
  text-indent: 10px;
}

#aahjomduat .gt_indent_3 {
  text-indent: 15px;
}

#aahjomduat .gt_indent_4 {
  text-indent: 20px;
}

#aahjomduat .gt_indent_5 {
  text-indent: 25px;
}

#aahjomduat .katex-display {
  display: inline-flex !important;
  margin-bottom: 0.75em !important;
}

#aahjomduat div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after {
  height: 0px !important;
}
</style>
  <table class="gt_table" style="table-layout:fixed;width:0px;" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
  <colgroup>
    <col style="width:200px;"/>
    <col style="width:500px;"/>
  </colgroup>
  <thead>
    <tr class="gt_heading">
      <td colspan="2" class="gt_heading gt_title gt_font_normal" style>Recommended Approach for Future KIT Inhibitor Trials</td>
    </tr>
    <tr class="gt_heading">
      <td colspan="2" class="gt_heading gt_subtitle gt_font_normal gt_bottom_border" style>Based on Avapritinib Experience</td>
    </tr>
    <tr class="gt_col_headings">
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Recommendation">Recommendation</th>
      <th class="gt_col_heading gt_columns_bottom_border gt_left" rowspan="1" colspan="1" scope="col" id="Current_State">Current_State</th>
    </tr>
  </thead>
  <tbody class="gt_table_body">
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Primary Endpoint</td>
<td headers="Current_State" class="gt_row gt_left">PPR (pathologic response) recommended</td></tr>
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Secondary Endpoints</td>
<td headers="Current_State" class="gt_row gt_left">Molecular response, clinical improvement, organ damage</td></tr>
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Molecular Assessment</td>
<td headers="Current_State" class="gt_row gt_left">KIT D816V by sensitive PCR (ddPCR or similar)</td></tr>
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Patient Population</td>
<td headers="Current_State" class="gt_row gt_left">Include patients without organ damage via PPR</td></tr>
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Response Duration</td>
<td headers="Current_State" class="gt_row gt_left">Flexible based on endpoint type</td></tr>
    <tr><td headers="Recommendation" class="gt_row gt_left" style="background-color: #F0F0F0; font-weight: bold;">Future Direction</td>
<td headers="Current_State" class="gt_row gt_left">Tiered approach: Pathologic → Molecular → Clinical</td></tr>
  </tbody>
  
</table>
</div>

7.13 Session Information

Code
sessionInfo()
R version 4.6.1 (2026-06-24)
Platform: aarch64-apple-darwin23
Running under: macOS Tahoe 26.6

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: America/Chicago
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] gt_1.3.0          DT_0.34.0         patchwork_1.3.2   viridis_0.6.5    
 [5] viridisLite_0.4.3 plotly_4.12.1     kableExtra_1.4.1  lubridate_1.9.5  
 [9] forcats_1.0.1     stringr_1.6.0     dplyr_1.2.1       purrr_1.2.2      
[13] readr_2.2.0       tidyr_1.3.2       tibble_3.3.1      ggplot2_4.0.3    
[17] tidyverse_2.0.0  

loaded via a namespace (and not attached):
 [1] sass_0.4.10        generics_0.1.4     xml2_1.6.0         stringi_1.8.7     
 [5] hms_1.1.4          digest_0.6.39      magrittr_2.0.5     evaluate_1.0.5    
 [9] grid_4.6.1         timechange_0.4.0   RColorBrewer_1.1-3 fastmap_1.2.0     
[13] jsonlite_2.0.0     gridExtra_2.3.1    httr_1.4.8         crosstalk_1.2.2   
[17] scales_1.4.0       jquerylib_0.1.4    textshaping_1.0.5  cli_3.6.6         
[21] rlang_1.3.0        cachem_1.1.0       withr_3.0.3        yaml_2.3.12       
[25] otel_0.2.0         tools_4.6.1        tzdb_0.5.0         vctrs_0.7.3       
[29] R6_2.6.1           lifecycle_1.0.5    fs_2.1.0           htmlwidgets_1.6.4 
[33] pkgconfig_2.0.3    bslib_0.11.0       pillar_1.11.1      gtable_0.3.6      
[37] glue_1.8.1         data.table_1.18.4  systemfonts_1.3.2  xfun_0.60         
[41] tidyselect_1.2.1   rstudioapi_0.19.0  knitr_1.51         farver_2.1.2      
[45] htmltools_0.5.9    labeling_0.4.3     rmarkdown_2.31     svglite_2.2.2     
[49] compiler_4.6.1     S7_0.2.2