Skip to content

Fixes validation and case when worst flag does not exist - #1543

Merged
averissimo merged 9 commits into
fix-tm_abnormaliry@279-interactive_variables@mainfrom
fix_mods@fix-tm_abnormaliry@279-interactive_variables@main
Jun 26, 2026
Merged

Fixes validation and case when worst flag does not exist#1543
averissimo merged 9 commits into
fix-tm_abnormaliry@279-interactive_variables@mainfrom
fix_mods@fix-tm_abnormaliry@279-interactive_variables@main

Conversation

@averissimo

@averissimo averissimo commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Pull Request

Changes description

  • Uses teal's validation input framework
  • Fixes problem with module stalling when selected worst flag does not exist
    • It can be tested using the following app and selecting "N"

Example app (inherited from other PR)

devtools::load_all()
data <- teal_data()
 data <- within(data, {
   ADSL <- teal.modules.clinical::tmc_ex_adsl
   ADLB <- teal.modules.clinical::tmc_ex_adlb %>%
     dplyr::filter(!AVISIT %in% c("SCREENING", "BASELINE"))
 })
 join_keys(data) <- default_cdisc_join_keys[names(data)]

 ADSL <- data[["ADSL"]]
 ADLB <- data[["ADLB"]]

 app <- init(
   data = data,
   modules = modules(
     tm_t_abnormality_by_worst_grade(
       label = "Laboratory Test Results with Highest Grade Post-Baseline",
       dataname = "ADLB",
       arm_var = choices_selected(
         choices = variable_choices(ADSL, subset = c("ARM", "ARMCD")),
         selected = "ARM"
       ),
       paramcd = choices_selected(
         choices = value_choices(ADLB, "PARAMCD", "PARAM"),
         selected = c("ALT", "CRP", "IGA")
       ),
       worst_flag_indicator = teal.transform::choices_selected(c("Y", "N")),
       add_total = FALSE
     )
   ),
   filter = teal_slices(
     teal_slice("ADSL", "SAFFL", selected = "Y"),
     teal_slice("ADLB", "ONTRTFL", selected = "Y")
   )
 )
 if (interactive()) {
   shinyApp(app$ui, app$server)
 }

@averissimo averissimo added the core label Jun 9, 2026
Comment thread R/utils.R Outdated
@averissimo
averissimo requested a review from osenan June 9, 2026 16:08
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Unit Tests Summary

    1 files  ±    0     74 suites  ±0   2h 6m 40s ⏱️ + 2h 2m 10s
  795 tests +   40    788 ✅ +  566  7 💤  - 526  0 ❌ ±0 
2 598 runs  +1 628  2 591 ✅ +2 154  7 💤  - 526  0 ❌ ±0 

Results for commit 6115881. ± Comparison against base commit 9bd2e66.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Unit Test Performance Difference

Test suite performance difference
Test Suite $Status$ Time on main $±Time$ $±Tests$ $±Skipped$ $±Failures$ $±Errors$
shinytest2-teal_picks_playground 👶 $+0.61$ $+3$ $+3$ $0$ $0$
shinytest2-tm_a_gee 💔 $0.25$ $+2.96$ $+34$ $0$ $0$ $0$
shinytest2-tm_a_mmrm 💔 $0.69$ $+8.98$ $+48$ $0$ $0$ $0$
shinytest2-tm_g_barchart_simple 💔 $0.34$ $+4.21$ $+92$ $0$ $0$ $0$
shinytest2-tm_g_ci 💔 $0.21$ $+1.29$ $+1$ $+1$ $0$ $0$
shinytest2-tm_g_forest_rsp 💔 $0.26$ $+3.48$ $+20$ $+1$ $0$ $0$
shinytest2-tm_g_forest_tte 💔 $0.10$ $+2.20$ $+7$ $+7$ $0$ $0$
shinytest2-tm_g_ipp 💔 $0.21$ $+3.10$ $+56$ $0$ $0$ $0$
shinytest2-tm_g_km 💔 $0.41$ $+2.77$ $0$ $0$ $0$ $0$
shinytest2-tm_g_lineplot 💔 $0.16$ $+1.54$ $+10$ $0$ $0$ $0$
shinytest2-tm_g_pp_adverse_events 💔 $0.25$ $+1.66$ $0$ $0$ $0$ $0$
shinytest2-tm_g_pp_patient_timeline 💔 $0.38$ $+8.65$ $+260$ $0$ $0$ $0$
shinytest2-tm_g_pp_therapy 💚 $328.41$ $-320.89$ $-36$ $+23$ $0$ $0$
shinytest2-tm_t_abnormality 💔 $0.13$ $+1.32$ $+9$ $0$ $0$ $0$
shinytest2-tm_t_abnormality_by_worst_grade 💔 $0.11$ $+1.04$ $0$ $0$ $0$ $0$
shinytest2-tm_t_ancova 💔 $0.18$ $+1.06$ $0$ $0$ $0$ $0$
shinytest2-tm_t_binary_outcome 💔 $0.15$ $+1.28$ $0$ $0$ $0$ $0$
shinytest2-tm_t_events_by_grade 💔 $0.14$ $+1.51$ $0$ $0$ $0$ $0$
shinytest2-tm_t_events_summary 💔 $0.11$ $+2.67$ $0$ $0$ $0$ $0$
shinytest2-tm_t_exposure 💔 $0.14$ $+1.91$ $0$ $0$ $0$ $0$
shinytest2-tm_t_pp_laboratory 👶 $+1.56$ $+16$ $+16$ $0$ $0$
shinytest2-tm_t_pp_prior_medication 💔 $0.16$ $+1.44$ $0$ $0$ $0$ $0$
shinytest2-tm_t_smq 💔 $0.11$ $+1.39$ $0$ $0$ $0$ $0$
tm_t_pp_laboratory 👶 $+16.43$ $+10$ $0$ $0$ $0$
utils_picks 👶 $+0.36$ $+57$ $0$ $0$ $0$
Additional test case details
Test Suite $Status$ Time on main $±Time$ Test Case
examples 👶 $+0.06$ example_arm_bucket_values.Rd
examples 👶 $+0.03$ example_arm_ref_comp_buckets_validator.Rd
examples 👶 $+0.01$ example_arm_ref_comp_observer_picks.Rd
examples 👶 $+0.01$ example_paramcd_title_from_anl.Rd
shinytest2-teal_picks_playground 👶 $+0.19$ e2e_teal_picks_playground_app_starts_without_Shiny_errors.
shinytest2-teal_picks_playground 👶 $+0.31$ e2e_teal_picks_playground_get_teal_picks_slot_reads_datasets_variables.
shinytest2-teal_picks_playground 👶 $+0.10$ e2e_teal_picks_playground_set_teal_picks_slot_updates_arm_var_variables.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Click_on_fit_model_shows_table_for_default_selection
shinytest2-tm_a_mmrm 💀 $0.02$ $-0.02$ e2e_tm_a_mmrm_Click_on_fit_model_shows_table_for_default_selection.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_arm_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_aval_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_id_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.02$ $-0.02$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.02$ $-0.02$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_arm_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 💀 $0.02$ $-0.02$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_aval_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_id_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Deselection_of_visit_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.21$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Deselection_visit_var_throws_validation_error_in_method_t_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.19$ e2e_tm_a_mmrm_Function_g_mmrm_diagnostic_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_plots
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Function_g_mmrm_diagnostic_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_plots.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Function_g_mmrm_lsmeans_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_plots
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Function_g_mmrm_lsmeans_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_plots.
shinytest2-tm_a_mmrm 👶 $+0.19$ e2e_tm_a_mmrm_Function_t_mmrm_lsmeans_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_tables
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Function_t_mmrm_lsmeans_selection_shows_output_settings_changing_settings_throws_no_validation_errors_and_verify_visibility_of_generated_tables.
shinytest2-tm_a_mmrm 👶 $+0.22$ e2e_tm_a_mmrm_Module_initializes_in_teal_without_errors_and_displays_a_message_to_click_Fit_Model_
shinytest2-tm_a_mmrm 💀 $0.02$ $-0.02$ e2e_tm_a_mmrm_Module_initializes_in_teal_without_errors_and_displays_a_message_to_click_Fit_Model_.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_g_mmrm_diagnostic
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_g_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_g_mmrm_lsmeans
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_g_mmrm_lsmeans.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_cov
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_cov.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_diagnostic
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_diagnostic.
shinytest2-tm_a_mmrm 👶 $+0.20$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_fixed
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_fixed.
shinytest2-tm_a_mmrm 👶 $+0.21$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_lsmeans
shinytest2-tm_a_mmrm 💀 $0.01$ $-0.01$ e2e_tm_a_mmrm_Validate_output_on_different_selection_on_method_t_mmrm_lsmeans.
shinytest2-tm_g_barchart_simple 👶 $+0.21$ e2e_tm_g_barchart_simple_Starts_with_specified_label_and_default_encoding_selections.
shinytest2-tm_g_barchart_simple 💀 $0.01$ $-0.01$ e2e_tm_g_barchart_simple_Starts_with_specified_label_id_var_arm_var_visit_var_paramcd_cov_var_conf_level_and_conf_struct.
shinytest2-tm_g_ci 👶 $+0.09$ e2e_tm_g_ci_Changing_confidence_level_updates_plot.
shinytest2-tm_g_ci 👶 $+0.09$ e2e_tm_g_ci_Changing_statistic_updates_plot.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Deselecting_AVISIT_filter_shows_validation_error.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Deselecting_AVISIT_filter_value_throws_validation_error.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Deselecting_PARAMCD_filter_shows_validation_error.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Deselecting_PARAMCD_filter_value_throws_validation_error.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Deselecting_color_column_changes_plot_output_and_doesn_t_throw_validation_error.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Deselecting_color_column_shows_validation_error.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Deselecting_x_var_column_shows_validation_error.
shinytest2-tm_g_ci 💀 $0.02$ $-0.02$ e2e_tm_g_ci_Deselecting_x_var_column_throws_validation_error.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Deselecting_y_var_column_shows_validation_error.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Deselecting_y_var_column_throws_validation_error.
shinytest2-tm_g_ci 👶 $+0.12$ e2e_tm_g_ci_Module_initializes_and_produces_plot_output.
shinytest2-tm_g_ci 💀 $0.02$ $-0.02$ e2e_tm_g_ci_Module_initializes_in_teal_without_errors_and_produces_plot_output.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Module_initializes_with_specified_label_x_var_y_var_ADLB_filters_color_conf_level_and_stat.
shinytest2-tm_g_ci 👶 $+0.11$ e2e_tm_g_ci_Module_matches_label_picks_exports_conf_level_and_stat.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_AVISIT_filter_value_doesn_t_throw_validation_errors.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Selecting_AVISIT_filter_value_updates_plot.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_PARAMCD_filter_value_changes_plot_and_doesn_t_throw_validation_errors.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Selecting_PARAMCD_filter_value_updates_plot.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_color_column_changes_plot_output_and_doesn_t_throw_validation_errors.
shinytest2-tm_g_ci 👶 $+0.11$ e2e_tm_g_ci_Selecting_color_column_updates_plot.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_confidence_interval_value_changes_plot_and_doesn_t_throw_any_errors.
shinytest2-tm_g_ci 💀 $0.02$ $-0.02$ e2e_tm_g_ci_Selecting_statistic_to_use_changes_a_plot_and_doesn_t_throw_any_errors.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_x_var_column_changes_plot_and_doesn_t_throw_validation_errors.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Selecting_x_var_column_updates_plot.
shinytest2-tm_g_ci 💀 $0.01$ $-0.01$ e2e_tm_g_ci_Selecting_y_var_column_changes_plot_and_doesn_t_throw_validation_errors.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Selecting_y_var_column_updates_plot.
shinytest2-tm_g_ci 👶 $+0.10$ e2e_tm_g_ci_Uses_PARAMCD_and_AVISIT_module_arguments_in_picks_mode.
shinytest2-tm_g_forest_rsp 💀 $0.01$ $-0.01$ e2e_tm_g_forest_rsp_Deselecting_conf_level_or_selecting_outside_the_range_of_0_1_throws_validation_error.
shinytest2-tm_g_forest_rsp 👶 $+0.20$ e2e_tm_g_forest_rsp_Deselecting_conf_level_throws_validation_error.
shinytest2-tm_g_forest_rsp 👶 $+0.19$ e2e_tm_g_forest_rsp_Selecting_conf_level_outside_range_0_1_throws_validation_error.
shinytest2-tm_g_forest_tte 👶 $+0.16$ e2e_tm_g_forest_tte_Deselecting_strata_var_changes_plot_and_does_not_throw_validation_errors.
shinytest2-tm_g_forest_tte 👶 $+0.16$ e2e_tm_g_forest_tte_Deselecting_subgroup_var_changes_plot_and_does_not_throw_validation_errors.
shinytest2-tm_g_forest_tte 👶 $+0.17$ e2e_tm_g_forest_tte_Deselection_of_arm_var_throws_validation_error.
shinytest2-tm_g_forest_tte 👶 $+0.17$ e2e_tm_g_forest_tte_Deselection_of_conf_level_throws_validation_error.
shinytest2-tm_g_forest_tte 💀 $0.02$ $-0.02$ e2e_tm_g_forest_tte_Deselection_of_paramcd_var_throws_validation_error.
shinytest2-tm_g_forest_tte 👶 $+0.16$ e2e_tm_g_forest_tte_Selecting_a_non_factor_column_in_subgroup_var_throws_validation_error.
shinytest2-tm_g_forest_tte 👶 $+0.16$ e2e_tm_g_forest_tte_Selecting_conf_level_outside_range_0_1_throws_validation_error.
shinytest2-tm_g_forest_tte 👶 $+0.19$ e2e_tm_g_forest_tte_Selection_of_strata_var_changes_the_element_and_does_not_throw_validation_errors.
shinytest2-tm_g_forest_tte 👶 $+0.17$ e2e_tm_g_forest_tte_Selection_of_subgroup_var_changes_the_element_and_does_not_throw_validation_errors.
shinytest2-tm_g_km 💀 $0.01$ $-0.01$ e2e_tm_g_km_Changing_facet_var_changes_the_plot_without_errors.
shinytest2-tm_g_km 👶 $+0.11$ e2e_tm_g_km_Changing_facet_var_updates_the_encoding_without_errors.
shinytest2-tm_g_lineplot 💀 $0.01$ $-0.01$ e2e_tm_g_lineplot_Deselecting_param_throws_validation_error.
shinytest2-tm_g_lineplot 👶 $+0.15$ e2e_tm_g_lineplot_Deselecting_paramcd_throws_validation_error.
shinytest2-tm_g_lineplot 💀 $0.01$ $-0.01$ e2e_tm_g_lineplot_Starts_with_specified_label_param_group_var_y_x_mid_interval_incl_screen_plot_settings_and_table_settings.
shinytest2-tm_g_lineplot 👶 $+0.16$ e2e_tm_g_lineplot_Starts_with_specified_label_paramcd_group_var_y_x_mid_interval_incl_screen_plot_settings_and_table_settings.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_aerelday_end_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.02$ $-0.02$ e2e_tm_g_pp_patient_timeline_Deselecting_aerelday_end_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_aerelday_start_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_aerelday_start_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_aetime_end_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_aetime_end_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.37$ e2e_tm_g_pp_patient_timeline_Deselecting_aetime_start_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_aetime_start_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_dsrelday_end_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_dsrelday_end_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_dsrelday_start_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_dsrelday_start_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_dstime_end_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_dstime_end_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.35$ e2e_tm_g_pp_patient_timeline_Deselecting_dstime_start_changes_plot_and_doesn_t_throw_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Deselecting_dstime_start_throws_validation_error.
shinytest2-tm_g_pp_patient_timeline 💀 $0.01$ $-0.01$ e2e_tm_g_pp_patient_timeline_Starts_with_specified_label_patient_id_cmdecod_aeterm_aetime_start_aetime_end_dstime_start_dstime_end_aerelday_start_aerelday_end_dsrelday_start_dsrelday_en.
shinytest2-tm_g_pp_patient_timeline 👶 $+0.36$ e2e_tm_g_pp_patient_timeline_Starts_with_specified_label_patient_id_cmdecod_aeterm_aetime_start_aetime_end_dstime_start_dstime_end_aerelday_start_aerelday_end_dsrelday_start_dsrelday_end.
shinytest2-tm_g_pp_therapy 💚 $14.40$ $-14.07$ e2e_tm_g_pp_therapy_Changing_font_size_changes_the_plot_and_does_not_throw_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $13.52$ $-13.20$ e2e_tm_g_pp_therapy_Deselection_of_atirel_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.46$ $-13.14$ e2e_tm_g_pp_therapy_Deselection_of_cmdecod_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.38$ $-13.05$ e2e_tm_g_pp_therapy_Deselection_of_cmdose_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.60$ $-13.26$ e2e_tm_g_pp_therapy_Deselection_of_cmdosfrq_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.55$ $-13.23$ e2e_tm_g_pp_therapy_Deselection_of_cmdosu_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $14.32$ $-13.99$ e2e_tm_g_pp_therapy_Deselection_of_cmendy_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.35$ $-13.03$ e2e_tm_g_pp_therapy_Deselection_of_cmindc_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.50$ $-13.18$ e2e_tm_g_pp_therapy_Deselection_of_cmroute_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.26$ $-12.92$ e2e_tm_g_pp_therapy_Deselection_of_cmstdy_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $13.28$ $-12.96$ e2e_tm_g_pp_therapy_Deselection_of_patient_id_throws_validation_error.
shinytest2-tm_g_pp_therapy 💚 $18.35$ $-18.03$ e2e_tm_g_pp_therapy_Module_initializes_in_teal_without_errors_and_produces_output.
shinytest2-tm_g_pp_therapy 💚 $14.69$ $-14.36$ e2e_tm_g_pp_therapy_Selection_of_atirel_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.92$ $-14.59$ e2e_tm_g_pp_therapy_Selection_of_cmdecod_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.71$ $-14.39$ e2e_tm_g_pp_therapy_Selection_of_cmdose_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.50$ $-14.18$ e2e_tm_g_pp_therapy_Selection_of_cmdosfrq_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.82$ $-14.50$ e2e_tm_g_pp_therapy_Selection_of_cmdosu_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.91$ $-14.59$ e2e_tm_g_pp_therapy_Selection_of_cmendy_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.47$ $-14.15$ e2e_tm_g_pp_therapy_Selection_of_cmindc_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.74$ $-14.41$ e2e_tm_g_pp_therapy_Selection_of_cmroute_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.71$ $-14.38$ e2e_tm_g_pp_therapy_Selection_of_cmstdy_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💚 $14.73$ $-14.41$ e2e_tm_g_pp_therapy_Selection_of_patient_id_changes_the_plot_and_table_without_any_validation_errors.
shinytest2-tm_g_pp_therapy 💀 $13.22$ $-13.22$ e2e_tm_g_pp_therapy_Starts_with_specified_label_paramcd_arm_var_buckets_paramcd_subgroup_var_strata_var_and_plot_settings.
shinytest2-tm_g_pp_therapy 👶 $+0.34$ e2e_tm_g_pp_therapy_Starts_with_specified_label_patient_id_atirel_cmdecod_cmindc_cmdose_cmtrt_cmdosu_cmroute_cmdosfrq_cmstdy_cmendy_and_plot_settings.
shinytest2-tm_t_coxreg 👶 $+0.10$ e2e_tm_t_coxreg_Deselection_of_all_covariates_clears_the_table_and_surfaces_a_validation_error_from_the_analysis_pipeline.
shinytest2-tm_t_coxreg 💀 $0.01$ $-0.01$ e2e_tm_t_coxreg_Deselection_of_cov_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_basic_info 💀 $0.03$ $-0.03$ unnamed
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Deselection_of_anrind_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.10$ e2e_tm_t_pp_laboratory_Deselection_of_aval_var_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Deselection_of_avalu_var_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Deselection_of_param_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.10$ e2e_tm_t_pp_laboratory_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Deselection_of_patient_id_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.10$ e2e_tm_t_pp_laboratory_Deselection_of_time_points_throws_validation_error.
shinytest2-tm_t_pp_laboratory 👶 $+0.10$ e2e_tm_t_pp_laboratory_Module_initializes_in_teal_without_errors_and_produces_table_output.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_anrind_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.10$ e2e_tm_t_pp_laboratory_Selecting_aval_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_avalu_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_param_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_paramcd_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_patient_id_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.09$ e2e_tm_t_pp_laboratory_Selecting_time_points_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_pp_laboratory 👶 $+0.11$ e2e_tm_t_pp_laboratory_Starts_with_specified_label_patient_id_paramcd_param_time_points_aval_var_avalu_var_anrind_round_value.
shinytest2-tm_t_pp_medical_history 👶 $+0.09$ e2e_tm_t_pp_medical_history_Selecting_mhdistat_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_shift_by_arm 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_Deselection_of_visit_var_throws_validation_error.
shinytest2-tm_t_shift_by_arm 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_Selecting_paramcd_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm 👶 $+0.10$ e2e_tm_t_shift_by_arm_Selecting_paramcd_values_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_Selecting_visit_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm 👶 $+0.10$ e2e_tm_t_shift_by_arm_Starts_with_specified_label_arm_var_useNA_add_total.
shinytest2-tm_t_shift_by_arm 💀 $0.02$ $-0.02$ e2e_tm_t_shift_by_arm_Starts_with_specified_label_arm_varparamcd_visit_var_useNA_treatment_flag_var_add_total.
shinytest2-tm_t_shift_by_arm_by_worst 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_by_worst_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_shift_by_arm_by_worst 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_by_worst_Deselection_of_worst_flag_throws_validation_error.
shinytest2-tm_t_shift_by_arm_by_worst 👶 $+0.09$ e2e_tm_t_shift_by_arm_by_worst_Deselection_of_worst_flag_var_throws_validation_error.
shinytest2-tm_t_shift_by_arm_by_worst 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_by_worst_Selecting_worst_flag_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm_by_worst 👶 $+0.10$ e2e_tm_t_shift_by_arm_by_worst_Selecting_worst_flag_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_arm_by_worst 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_arm_by_worst_Starts_with_specified_label_arm_var_paramcd_worst_flag_var_aval_var_baseline_var_useNA_treatment_flag_var_add_total.
shinytest2-tm_t_shift_by_arm_by_worst 👶 $+0.11$ e2e_tm_t_shift_by_arm_by_worst_Starts_with_specified_label_useNA_add_total.
shinytest2-tm_t_shift_by_grade 💀 $0.02$ $-0.02$ e2e_tm_t_shift_by_grade_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_shift_by_grade 💀 $0.01$ $-0.01$ e2e_tm_t_shift_by_grade_Selecting_paramcd_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_shift_by_grade 👶 $+0.10$ e2e_tm_t_shift_by_grade_Selecting_paramcd_values_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_smq 👶 $+0.18$ e2e_tm_t_smq_Deselection_of_baskets_throws_validation_error.
shinytest2-tm_t_smq 👶 $+0.18$ e2e_tm_t_smq_Deselection_of_llt_throws_validation_error.
shinytest2-tm_t_smq 💀 $0.01$ $-0.01$ e2e_tm_t_smq_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_smq 💀 $0.01$ $-0.01$ e2e_tm_t_smq_Deselection_of_worst_flag_throws_validation_error.
shinytest2-tm_t_smq 👶 $+0.19$ e2e_tm_t_smq_Selecting_baskets_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_smq 👶 $+0.19$ e2e_tm_t_smq_Selecting_llt_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_smq 💀 $0.01$ $-0.01$ e2e_tm_t_smq_Selecting_paramcd_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_smq 💀 $0.01$ $-0.01$ e2e_tm_t_smq_Selecting_worst_flag_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_summary_by 👶 $+0.10$ e2e_tm_t_summary_by_Deselecting_by_vars_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_summary_by 💀 $0.01$ $-0.01$ e2e_tm_t_summary_by_Deselection_of_arm_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_summary_by 👶 $+0.10$ e2e_tm_t_summary_by_Selecting_by_vars_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_summary_by 👶 $+0.10$ e2e_tm_t_summary_by_Selecting_paramcd_values_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_tte 💀 $0.01$ $-0.01$ e2e_tm_t_tte_Deselection_of_paramcd_throws_validation_error.
shinytest2-tm_t_tte 👶 $+0.09$ e2e_tm_t_tte_Deselection_of_paramcd_values_throws_validation_error.
shinytest2-tm_t_tte 👶 $+0.10$ e2e_tm_t_tte_Deselection_of_strata_var_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_tte 💀 $0.01$ $-0.01$ e2e_tm_t_tte_Deselection_of_strata_var_changes_the_table_and_throw_validation_errors.
shinytest2-tm_t_tte 💀 $0.01$ $-0.01$ e2e_tm_t_tte_Selecting_paramcd_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_tte 👶 $+0.10$ e2e_tm_t_tte_Selecting_paramcd_values_changes_the_table_and_does_not_throw_validation_errors.
shinytest2-tm_t_tte 💀 $0.01$ $-0.01$ e2e_tm_t_tte_Starts_with_specified_label_paramcd_event_desc_var_arm_var_buckets_strata_var_time_points_pval_method_coxph_ties_coxph_conf_level_coxph_conf_level_survfit_conf_type_survfit_probs_survfit_compare_arms_combine_comp_arms.
shinytest2-tm_t_tte 👶 $+0.11$ e2e_tm_t_tte_Starts_with_specified_label_paramcd_event_desc_var_arm_var_strata_var_time_points_conf_level_coxph_conf_level_survfit_compare_arms_combine_comp_arms.
tm_g_lineplot 👶 $+0.02$ tm_g_lineplot_builds_a_teal_module_with_teal.picks_defaults
tm_t_pp_laboratory 👶 $+1.45$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_in_returned_teal_data_when_round_value_changes_from_0_to_4_decimal_places
tm_t_pp_laboratory 👶 $+2.14$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_anrind_changes_from_ANRIND_to_SEX
tm_t_pp_laboratory 👶 $+2.13$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_aval_var_changes_from_AVAL_to_AGE
tm_t_pp_laboratory 👶 $+2.17$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_avalu_var_changes_from_AVALU_to_SEX
tm_t_pp_laboratory 👶 $+2.47$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_param_changes_from_PARAM_to_SEX
tm_t_pp_laboratory 👶 $+2.29$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_paramcd_changes_from_PARAMCD_to_STUDYID
tm_t_pp_laboratory 👶 $+2.04$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_produces_different_table_data_when_time_points_changes_from_ADY_to_AGE
tm_t_pp_laboratory 👶 $+1.76$ tm_t_pp_laboratory_server_reactive_inputs_produce_expected_changes_in_returned_teal_data_updates_pt_id_in_returned_teal_data_when_patient_id_input_changes
utils_picks 👶 $+0.01$ create_picks_helper_errors_when_datasets_is_NULL
utils_picks 👶 $+0.01$ create_picks_helper_errors_when_datasets_is_not_a_datasets_object
utils_picks 👶 $+0.01$ create_picks_helper_errors_when_x_is_neither_pick_nor_picks
utils_picks 👶 $+0.01$ create_picks_helper_returns_x_unchanged_if_it_already_has_datasets_attached
utils_picks 👶 $+0.01$ create_picks_helper_wraps_a_pick_object_with_the_supplied_datasets
utils_picks 👶 $+0.01$ create_picks_helper_wraps_a_picks_object_without_datasets_with_the_supplied_datasets
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_errors_on_delayed_choices_selected
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_errors_when_input_is_not_a_picks_or_choices_selected_object
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_infers_multiple_TRUE_when_more_than_one_value_is_selected
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_preserves_fixed_TRUE_from_the_choices_selected_object
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_respects_the_multiple_argument
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_returns_a_teal.picks_values_object_from_a_choices_selected
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_returns_the_same_picks_object_if_input_already_inherits_picks
utils_picks 👶 $+0.01$ migrate_choices_selected_to_values_returns_variables_unchanged_column_pick_only_not_coerced_to_values_
utils_picks 👶 $+0.02$ migrate_choices_selected_to_variables_emits_a_deprecation_warning_for_choices_selected_input
utils_picks 👶 $+0.02$ migrate_choices_selected_to_variables_emits_a_deprecation_warning_for_select_spec_input
utils_picks 👶 $+0.01$ migrate_choices_selected_to_variables_errors_when_x_is_NULL_and_null.ok_FALSE
utils_picks 👶 $+0.01$ migrate_choices_selected_to_variables_returns_NULL_when_null.ok_TRUE_and_x_is_NULL
utils_picks 👶 $+0.01$ migrate_choices_selected_to_variables_returns_the_same_picks_object_if_input_already_inherits_picks
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_adds_values_when_ommited
utils_picks 👶 $+0.06$ migrate_value_choices_to_picks_returns_a_teal.picks_picks_object
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_returns_the_same_picks_object_if_input_is_already_a_picks_object
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_suports_picks_with_datasets_and_variables_but_no_values
utils_picks 👶 $+0.02$ migrate_value_choices_to_picks_suports_picks_with_datasets_and_variables_but_no_values_and_without_adding_values_
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_only_variables_
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_only_variables_without_adding_values
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_picks_with_dataset_variables_and_values
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_picks_with_only_variables
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_picks_with_only_variables_and_does_not_add_values_
utils_picks 👶 $+0.01$ migrate_value_choices_to_picks_supports_picks_with_variables_and_values_but_no_datasets

Results for commit 36a90d8

♻️ This comment has been updated with latest results.

@osenan osenan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I tested many validations and they worked. Please review the check of the parentname before merging. It seems there is an error when we are running some tests. https://github.com/insightsengineering/teal.modules.clinical/actions/runs/27220598240/job/80374092259

@osenan osenan self-assigned this Jun 12, 2026

y$table <- substitute(
expr = {
stopifnot("No common arm levels in data, please check input." = nrow(parent) > 0)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@osenan non-outdated code here

Do we need this protection? I'm worried about other consequences in other modules.

It was moved to the module to prevent generic error. This is a minor change to protect against a never ending calculation of rtables

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify. This line is not existing in the code right now, you are asking if it is required. IMO it is not required. I tried to create an example of this scenario to fail but I could not found a case where the app works. Before the app runs the join keys always fails If I filter and keep the parent dataset without rows. It always fails so I expect this protection to be really an edge case that it is not necessary

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without this it risks hanging on forever

Just remove the line and run the example, then select N

image

@averissimo
averissimo requested a review from osenan June 22, 2026 13:54

@osenan osenan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good! We only have to fix one typo

Comment thread R/tm_t_summary_by.R Outdated
Comment thread R/utils.R Outdated

y$table <- substitute(
expr = {
stopifnot("No common arm levels in data, please check input." = nrow(parent) > 0)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify. This line is not existing in the code right now, you are asking if it is required. IMO it is not required. I tried to create an example of this scenario to fail but I could not found a case where the app works. Before the app runs the join keys always fails If I filter and keep the parent dataset without rows. It always fails so I expect this protection to be really an edge case that it is not necessary

averissimo and others added 2 commits June 23, 2026 13:10
Co-authored-by: Oriol Senan  <35930244+osenan@users.noreply.github.com>
Signed-off-by: André Veríssimo <211358+averissimo@users.noreply.github.com>

@osenan osenan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can include the data protection, but take into account that currently is not in the branch, is only a comment on the PR

Comment thread R/tm_t_summary_by.R Outdated
@averissimo
averissimo merged commit 714fd08 into fix-tm_abnormaliry@279-interactive_variables@main Jun 26, 2026
49 checks passed
@averissimo
averissimo deleted the fix_mods@fix-tm_abnormaliry@279-interactive_variables@main branch June 26, 2026 16:36
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants