# Interpretation, privacy, and reporting

## Item-level interpretation

`pcatR` classifies complete responses as strong barrier, weak barrier, neutral, weak facilitator, or strong facilitator. The `pcat_display_code` from -2 to +2 supports plotting and within-item transition descriptions only. Do not sum it across items or describe it as a validated scale.

## Agreement and polarization

    classified <- pcat_classify(pcat_example_data())
    summary <- pcat_summarise(
      classified,
      group_vars = c("site_id", "timepoint")
    )
    consensus <- pcat_consensus(summary)
    head(consensus[c(
      "site_id", "timepoint", "item_id", "dominant_side",
      "agreement_share", "polarized", "normalized_entropy", "consensus_label"
    )])
    #>   site_id timepoint item_id dominant_side agreement_share polarized
    #> 1  SITE_A  planning       1   facilitator       1.0000000     FALSE
    #> 2  SITE_A  planning       2   facilitator       1.0000000     FALSE
    #> 3  SITE_A  planning       3       neutral       0.6666667     FALSE
    #> 4  SITE_A  planning       4   facilitator       0.8333333     FALSE
    #> 5  SITE_A  planning       5   facilitator       0.8333333     FALSE
    #> 6  SITE_A  planning       6       neutral       1.0000000     FALSE
    #>   normalized_entropy       consensus_label
    #> 1          0.0000000 consensus_facilitator
    #> 2          0.0000000 consensus_facilitator
    #> 3          0.7896901     consensus_neutral
    #> 4          0.4101185 consensus_facilitator
    #> 5          0.4101185 consensus_facilitator
    #> 6          0.0000000     consensus_neutral

Consensus labels are descriptive decision aids. They depend on user-visible thresholds and should be interpreted with counts and response distributions.

## Longitudinal comparison

    change <- pcat_change(
      classified,
      from = "planning",
      to = "mid_implementation"
    )
    head(change[c(
      "respondent_id", "item_id", "from_pcat_class5", "to_pcat_class5",
      "delta_display_code", "transition"
    )])
    #>   respondent_id item_id from_pcat_class5   to_pcat_class5 delta_display_code
    #> 1          R001       1 weak_facilitator          neutral                 -1
    #> 2          R001       2 weak_facilitator weak_facilitator                  0
    #> 3          R001       3          neutral          neutral                  0
    #> 4          R001       4 weak_facilitator weak_facilitator                  0
    #> 5          R001       5          neutral weak_facilitator                  1
    #> 6          R001       6          neutral          neutral                  0
    #>            transition
    #> 1      toward_barrier
    #> 2      no_code_change
    #> 3      no_code_change
    #> 4      no_code_change
    #> 5 toward_facilitation
    #> 6      no_code_change

These paired transitions describe ordered category movement. They are not causal effects and the display-code differences are not interval-scale change scores.

## Privacy and suppression

Use coded identifiers and review free-text comments for sensitive content. Respondent heatmaps can reveal individual patterns and should not be shared for small or identifiable teams. Summary suppression is available:

    suppressed <- pcat_summarise(
      classified,
      group_vars = c("site_id", "timepoint"),
      suppress_below = 5
    )
    head(suppressed)
    #>   site_id timepoint item_id n_rows_input n_rows_eligible n_rows_excluded
    #> 1  SITE_A  planning       1            6               6               0
    #> 2  SITE_A  planning       2            6               6               0
    #> 3  SITE_A  planning       3            6               6               0
    #> 4  SITE_A  planning       4            6               6               0
    #> 5  SITE_A  planning       5            6               6               0
    #> 6  SITE_A  planning       6            6               6               0
    #>   n_respondents n_valid_direction n_complete_class n_barrier n_neutral
    #> 1             6                 6                6         0         0
    #> 2             6                 6                6         0         0
    #> 3             6                 6                6         1         4
    #> 4             6                 6                6         0         1
    #> 5             6                 6                6         0         1
    #> 6             6                 6                6         0         6
    #>   n_facilitator n_strong_barrier n_weak_barrier n_neutral_complete
    #> 1             6                0              0                  0
    #> 2             6                0              0                  0
    #> 3             1                1              0                  4
    #> 4             5                0              0                  1
    #> 5             5                0              0                  1
    #> 6             0                0              0                  6
    #>   n_barrier_effect_missing n_weak_facilitator n_strong_facilitator
    #> 1                        0                  5                    1
    #> 2                        0                  4                    2
    #> 3                        0                  1                    0
    #> 4                        0                  4                    1
    #> 5                        0                  4                    1
    #> 6                        0                  0                    0
    #>   n_facilitator_effect_missing n_invalid_or_missing      modal_class
    #> 1                            0                    0 weak_facilitator
    #> 2                            0                    0 weak_facilitator
    #> 3                            0                    0          neutral
    #> 4                            0                    0 weak_facilitator
    #> 5                            0                    0 weak_facilitator
    #> 6                            0                    0          neutral
    #>   mean_display_code median_display_code pct_barrier pct_neutral pct_facilitator
    #> 1         1.1666667                   1   0.0000000   0.0000000       1.0000000
    #> 2         1.3333333                   1   0.0000000   0.0000000       1.0000000
    #> 3        -0.1666667                   0   0.1666667   0.6666667       0.1666667
    #> 4         1.0000000                   1   0.0000000   0.1666667       0.8333333
    #> 5         1.0000000                   1   0.0000000   0.1666667       0.8333333
    #> 6         0.0000000                   0   0.0000000   1.0000000       0.0000000
    #>   pct_complete_class pct_strong_barrier pct_weak_barrier pct_neutral_complete
    #> 1                  1          0.0000000                0            0.0000000
    #> 2                  1          0.0000000                0            0.0000000
    #> 3                  1          0.1666667                0            0.6666667
    #> 4                  1          0.0000000                0            0.1666667
    #> 5                  1          0.0000000                0            0.1666667
    #> 6                  1          0.0000000                0            1.0000000
    #>   pct_strong_facilitator pct_weak_facilitator pct_effect_missing modal_class_n
    #> 1              0.1666667            0.8333333                  0             5
    #> 2              0.3333333            0.6666667                  0             4
    #> 3              0.0000000            0.1666667                  0             4
    #> 4              0.1666667            0.6666667                  0             4
    #> 5              0.1666667            0.6666667                  0             4
    #> 6              0.0000000            0.0000000                  0             6
    #>   modal_class_share           item_key
    #> 1         0.8333333      patient_needs
    #> 2         0.6666667     communications
    #> 3         0.6666667      data_tracking
    #> 4         0.6666667   leadership_goals
    #> 5         0.6666667   clinician_values
    #> 6         1.0000000 clinical_processes
    #>                                                                                                     item_text
    #> 1 People here regularly seek to understand the needs of patients and make changes to better meet those needs.
    #> 2                                 I have open lines of communication with everyone needed to make the change.
    #> 3                                                    I have access to data to help track changes in outcomes.
    #> 4                                                                The change is aligned with leadership goals.
    #> 5                                                                The change is aligned with clinician values.
    #> 6                                                  The change is compatible with existing clinical processes.
    #>   cfir_original_domain   cfir_original_construct cfir_2022_domain
    #> 1        Outer Setting Patient Needs & Resources    Inner Setting
    #> 2        Inner Setting Networks & Communications    Inner Setting
    #> 3              Process   Reflecting & Evaluating          Process
    #> 4        Inner Setting          Goals & Feedback    Inner Setting
    #> 5        Inner Setting             Compatibility      Individuals
    #> 6        Inner Setting             Compatibility    Inner Setting
    #>       cfir_2022_subdomain               cfir_2022_construct
    #> 1                    <NA>   Culture: Recipient-Centeredness
    #> 2                    <NA>                    Communications
    #> 3                    <NA>           Reflecting & Evaluating
    #> 4                    <NA>                 Mission Alignment
    #> 5 Roles & Characteristics Innovation Deliverers: Capability
    #> 6                    <NA>                     Compatibility
    #>   cfir_2022_secondary_construct           cfir_2022_construct_all
    #> 1                          <NA>   Culture: Recipient-Centeredness
    #> 2                          <NA>                    Communications
    #> 3                          <NA>           Reflecting & Evaluating
    #> 4                          <NA>                 Mission Alignment
    #> 5                          <NA> Innovation Deliverers: Capability
    #> 6                          <NA>                     Compatibility
    #>   cfir_2022_mapping_count
    #> 1                       1
    #> 2                       1
    #> 3                       1
    #> 4                       1
    #> 5                       1
    #> 6                       1
    #>                                                                                                                                    cfir_2022_mapping_note
    #> 1                                                                                   One primary updated-CFIR construct per the article main-text mapping.
    #> 2                                                                                   One primary updated-CFIR construct per the article main-text mapping.
    #> 3                                                                                   One primary updated-CFIR construct per the article main-text mapping.
    #> 4                                                                                   One primary updated-CFIR construct per the article main-text mapping.
    #> 5 The article main-text list uses "Innovation Deliverers: Capability"; Supplementary Table S3 uses the singular label "Innovation Deliverer: Capability".
    #> 6                                                                                   One primary updated-CFIR construct per the article main-text mapping.
    #>   suppressed
    #> 1      FALSE
    #> 2      FALSE
    #> 3      FALSE
    #> 4      FALSE
    #> 5      FALSE
    #> 6      FALSE

Suppression hides numeric analytic results and the derived `modal_class` while retaining grouping, item, and CFIR metadata. It affects the returned summary table only and does not transform or de-identify source data, classified responses, heatmaps, or profile PDFs.

When the directional shares are unavailable, including after suppression, `pcat_consensus()` reports `polarized = NA` and `consensus_label = "insufficient_data"`; it does not treat an unavailable cell as confirmed nonpolarized.

## Reporting checklist

Report the implementation effort assessed, assessment timing, respondent roles, valid denominators, missing effects, grouping variables, consensus thresholds, suppression rule, mapping version, and software version. Describe action-plan strategies as locally reviewed candidates rather than algorithmically selected recommendations.