# Load required packages
library(DT)
library(knitr)
# 1. KEY STUDY FINDINGS TABLE
key_findings <- data.frame(
Finding = c(
"Anemia response rate was only 2% (1/47 patients) with 0% in transfusion-dependent patients",
"Spleen response rate was 18% overall (9/49 patients)",
"Spleen response was better in JAK inhibitor-naïve patients (36% vs 11%, p=0.06)",
"Four independent risk factors predicted worse survival: transfusion dependence (HR 7.8), leukocytosis ≥32×10⁹/L (HR 7.0), platelets <50×10⁹/L (HR 6.4), and HMR mutations (HR 6.6)",
"Treatment was discontinued in 88% of patients: 58% due to intolerance, 54% suboptimal response"
),
Category = c(
"Efficacy", "Efficacy", "Efficacy", "Survival", "Safety"
)
)
# 2. PATIENT CHARACTERISTICS
patient_characteristics <- data.frame(
Category = c(
"Demographics", "Demographics", "Demographics",
"Disease", "Disease", "Disease",
"Prior Treatment", "Prior Treatment",
"Risk Features", "Risk Features", "Risk Features",
"Driver Mutations", "Driver Mutations", "Driver Mutations", "Driver Mutations"
),
Characteristic = c(
"Number of patients",
"Median age (range)",
"Males",
"Primary myelofibrosis",
"Palpable splenomegaly >15 cm",
"High DIPSS risk",
"JAK inhibitor experienced",
"Previous ruxolitinib",
"Transfusion dependent anemia",
"Platelets <50 × 10⁹/L",
"Unfavorable karyotype",
"JAK2",
"CALR",
"MPL",
"Triple negative"
),
Value = c(
"60",
"70 years (51-86)",
"37 (62%)",
"38 (63%)",
"41 (76%)",
"29 (48%)",
"41 (68%)",
"39 (65%)",
"24 (40%)",
"15 (25%)",
"21 (36%)",
"36 (60%)",
"16 (27%)",
"6 (10%)",
"2 (3%)"
)
)
# 3. RESPONSE RATES
response_rates <- data.frame(
Response = c(
"Anemia response (N=47)",
"Spleen response (N=49)",
"→ JAK inhibitor-naïve",
"→ JAK inhibitor-experienced",
"Time to spleen response",
"→ JAK inhibitor-naïve",
"→ JAK inhibitor-experienced",
"Duration of spleen response"
),
Rate = c(
"1 (2%)",
"9 (18%)",
"5/14 (36%)",
"4/35 (11%)",
"Median 6 months (range 1-9)",
"Median 3 months (range 1-6)",
"Median 8 months (range 6-9)",
"Median 12 months (range 2-28)"
),
`P-value` = c(
"N/A",
"N/A",
"0.06",
"0.06",
"N/A",
"<0.01",
"<0.01",
"0.16"
)
)
# 4. PREDICTORS OF SPLEEN RESPONSE
spleen_predictors <- data.frame(
Factor = c(
"Age ≥70 years",
"Age <70 years",
"Leukocyte count ≥20 × 10⁹/L",
"Leukocyte count <20 × 10⁹/L",
"DIPSS high risk",
"DIPSS intermediate-2 risk",
"DIPSS intermediate-1 risk",
"JAK inhibitor experienced",
"JAK inhibitor naïve",
"Unfavorable karyotype",
"Favorable karyotype",
"ASXL1 mutation present",
"ASXL1 mutation absent"
),
`Response Rate` = c(
"10%",
"33%",
"0%",
"21%",
"4%",
"23%",
"100%",
"11%",
"36%",
"6%",
"25%",
"6%",
"25%"
),
`P-value` = c(
"0.04",
"0.04",
"0.02",
"0.02",
"<0.01",
"<0.01",
"<0.01",
"0.06",
"0.06",
"0.09",
"0.09",
"0.08",
"0.08"
)
)
# 5. SURVIVAL PREDICTORS
survival_predictors <- data.frame(
`Risk Factor` = c(
"Transfusion-dependent anemia",
"Leukocyte count ≥32 × 10⁹/L",
"Platelet count <50 × 10⁹/L",
"High molecular risk mutations (ASXL1, SRSF2, or U2AF1 Q157)"
),
`Hazard Ratio` = c(
"7.8",
"7.0",
"6.4",
"6.6"
),
`95% CI` = c(
"1.7-35.4",
"2.1-23.4",
"1.7-24.6",
"1.6-26.1"
),
`P-value` = c(
"<0.01",
"<0.01",
"<0.01",
"<0.01"
)
)
# 6. RISK MODEL OUTCOMES
risk_model <- data.frame(
`Risk Category` = c(
"Low (0-1 risk factors)",
"Intermediate (2 risk factors)",
"High (3-4 risk factors)"
),
`N` = c(
"37",
"18",
"5"
),
`Median Survival` = c(
"Not reached",
"16 months",
"3 months"
),
`1-year Survival` = c(
"92%",
"64%",
"20%"
),
`Hazard Ratio` = c(
"Reference",
"5.0 (95% CI 1.9-12.8)",
"21.9 (95% CI 6.4-75.2)"
)
)
# 7. ADVERSE EVENTS
adverse_events <- data.frame(
`Adverse Event` = c(
"Gastrointestinal symptoms",
"Peripheral edema",
"Dyspnea",
"Neutropenia grade ≥3",
"Thrombocytopenia grade ≥3 (overall)",
"→ With baseline platelets >100 × 10⁹/L",
"→ With baseline platelets 50-100 × 10⁹/L",
"→ With baseline platelets <50 × 10⁹/L",
"Treatment discontinuation",
"→ Due to intolerance",
"→ Due to suboptimal response"
),
`Frequency` = c(
"33 (55%)",
"18 (30%)",
"15 (25%)",
"11 (19%)",
"27 (46%)",
"6/27 (22%)",
"11/27 (41%)",
"10/27 (37%)",
"53 (88%)",
"31/53 (58%)",
"29/53 (54%)"
),
`Notes` = c(
"More frequent with 200mg BID",
"",
"",
"",
"More frequent with 200mg BID",
"",
"",
"",
"",
"",
""
)
)
# 8. CLINICAL TRIAL COMPARISON
trial_comparison <- data.frame(
`Outcome` = c(
"Spleen response (≥35% reduction)",
"→ JAK inhibitor-naïve",
"→ JAK inhibitor-experienced",
"Anemia response",
"→ Transfusion-dependent patients"
),
`Current Study (N=60)` = c(
"18%",
"36%",
"11%",
"2%",
"0%"
),
`PERSIST-1` = c(
"19% (ITT), 25% (evaluable)",
"All JAKi-naïve",
"N/A",
"Not reported",
"25% transfusion independence"
),
`PERSIST-2` = c(
"22% (200mg BID)",
"Not reported separately",
"13%",
"25% (Hb <10g/dL)",
"25-37% (per post-hoc analysis)"
)
)
# Create basic datatable function with minimal styling
create_dt <- function(data, caption) {
DT::datatable(
data,
caption = caption,
rownames = FALSE,
options = list(
pageLength = 25,
dom = 't',
ordering = TRUE
),
class = 'cell-border stripe'
)
}
# Create all tables with simple styling
dt1 <- create_dt(key_findings, "Table 1: Key Findings from Mayo Clinic Pacritinib Study (N=60)")
dt2 <- create_dt(patient_characteristics, "Table 2: Patient Characteristics")
dt3 <- create_dt(response_rates, "Table 3: Pacritinib Response Rates")
dt4 <- create_dt(spleen_predictors, "Table 4: Predictors of Spleen Response")
dt5 <- create_dt(survival_predictors, "Table 5: Independent Predictors of Survival in Multivariate Analysis")
dt6 <- create_dt(risk_model, "Table 6: Survival Outcomes by Risk Category")
dt7 <- create_dt(adverse_events, "Table 7: Treatment-Emergent Adverse Events")
dt8 <- create_dt(trial_comparison, "Table 8: Comparison with Clinical Trial Data")
# Display all tables
list(
htmltools::h1("Pacritinib in Myelofibrosis: Mayo Clinic Study (N=60)"),
htmltools::h2("Key Findings"),
dt1,
htmltools::h2("Patient Characteristics"),
dt2,
htmltools::h2("Response Rates"),
dt3,
htmltools::h2("Predictors of Spleen Response"),
dt4,
htmltools::h2("Survival Predictors"),
dt5,
htmltools::h2("Risk Model"),
dt6,
htmltools::h2("Adverse Events"),
dt7,
htmltools::h2("Clinical Trial Comparison"),
dt8,
htmltools::h2("Study Conclusions"),
htmltools::tags$ul(
htmltools::tags$li("Real-world anemia response rates with pacritinib (2%) are substantially lower than in clinical trials (25-37%)"),
htmltools::tags$li("Spleen responses were more common in JAK inhibitor-naïve patients (36% vs 11%)"),
htmltools::tags$li("Four key risk factors strongly predict survival: transfusion dependence, high leukocytes, low platelets, and high molecular risk mutations"),
htmltools::tags$li("The high treatment discontinuation rate (88%) reflects both toxicity and limited efficacy"),
htmltools::tags$li("Pacritinib may be most beneficial in younger JAK inhibitor-naïve patients with lower risk disease")
)
)