# K3 control: cross2010 (Cross et al. 2010, Cancer Res 70:2406-2414)

Controller: K3 (independent). Full text: `Understudier WCRF/cross2010.txt`. Date: 2026-10-30.
Method: all quintile lines of Tables 2 and 3 (medians, cases, HR, CI, P trend × colorectal/colon/rectum) were parsed by script and compared with the 135 category rows. Result: 0 mismatches after I fixed a regex bug in my own parser. The 24 footnote and text rows (046-068, 159) and all definitions, models and flags were checked by reading.

## Summary
- Rows: 159. Checked: 159. Numbers confirmed: 159/159.
- Discrepancies: critical 0, major 0, minor 2.
- Missing estimates: none required by the codebook. Optional ones, not coded by design, are listed below.

## Discrepancies

| estimate_id / row | field | in database | in paper | severity |
|---|---|---|---|---|
| cross2010_m1-m7 (adjustments.csv) | adj_age | no | Age is absent from the covariate footnote of Tables 2 and 3 and from the Methods list (p. 2407-2408). The Cox time metric was person-years, and age as the time metric gave "almost identical HRs" | minor. Coding "as printed" is defensible, but under the codebook's principle (unknown → unclear), `unclear` is safer. A large-cohort Cox model without age is unusual and may be a reporting omission |
| cup_extraction.csv | (no row) | no cross2010 row | studies.in_cup2016 = yes, cup_role = hvl_only | minor. If CUP used Cross in the high-vs-low analysis, a cup row with estimate_ids_used (presumably 059 or 001-005) is needed for reproduction |

## Medians
All 45 Table 2 quintile medians match:
- red meat: 9.5, 20.9, 30.7, 42.1, 61.6
- white meat: 9.6, 18.6, 27.5, 39.5, 64.2
- processed meat: 1.6, 4.3, 7.4, 12.1, 22.3

All Table 3 medians for the coded compounds (heme iron, nitrate, nitrite, PhIP, MeIQx and DiMeIQx) match. dose_unit `g_per_1000kcal_day` is correct for the main density model. The residual-model g/day medians in the footnotes (104.1 vs 15.7 for red meat; 38.0 vs 2.7 for processed) are correctly attached to 046-048 and 052-054.

Note that Table 1's red-meat quintile means (8.9 … 66.5) are means, not medians, and must not be mixed with the Table 2 medians. dose_conversions correctly keeps them in the notes only.

## Does unprocessed red meat have its own rows?
No table rows. The paper reports nonprocessed red meat only in the Results text as highest vs lowest quintile: 1.13 (0.98-1.30), P trend = 0.002 (p. 2409). It prints no quintile medians, no cases and no colon/rectum split.

The database matches this exactly: one row, cross2010_059, `red_unprocessed`, includes_processed = no, contrast hvl, is_main_model = no. Processed red meat is likewise only row 058 (1.11, 0.96-1.28, P 0.083).

For any rule-conforming high-vs-low use, 059 is the only unprocessed option, and no dose-response for unprocessed red meat can be built from this paper. The Table 2 "Red meat" rows (001-015) include bacon, cold cuts, ham, hot dogs, sausage and meat in mixed dishes (p. 2407), so `red_total` / yes is correct.

## Definitions, models and flags (checked by reading)
- **Exposures:**
  - White meat includes poultry cold cuts and low-fat poultry sausages and hot dogs, so `white_meat`, includes_processed = yes is correct.
  - Processed meat includes processed poultry. Correct as coded.
  - Chicken and turkey are coded `poultry` with includes_processed = unclear, and fish = no. Acceptable.
- **Models:**
  - m1 (red meat, mutually adjusted for white meat), m2 (white meat) and m3 (processed meat adjusted for non-processed meat) match Table 2 fn *.
  - m4 (Table 3, no meat adjustment) is correct.
  - m5/m6 (residual energy, other covariates assumed) and m7 (text) carry the right "unclear" flags.
- **is_main_model:**
  - yes on Tables 2 and 3 (density model, the paper's primary method, p. 2408).
  - no on the residual-model footnote rows, including the only continuous per-100 g estimates, 049-051 and 055-057.
  - This is consistent with codebook rule 4.2. Under §4.3 point 6, however, 049-051 are the rows to use for dose-response whenever this study enters one.
- **Text rows:**
  - 058-062 (sub-types), 063-066 (proximal/distal), 067-068 (2-year lag) and 159 (nitrate + nitrite) match pages 2409 and 2411.
  - Row 159 being assigned to processed-meat sources is an assumption, and the notes say so.
- Category labels and source pages are correct: Table 2 on 2409, Table 3 on 2410-2411.
- Cosmetic point: high-vs-low and continuous rows (046-068, 159) carry a category_set_id with an empty rank. This is harmless, but checks that iterate over sets should skip contrast_type ≠ category.

## Case-count re-derivation
Every Table 2 and Table 3 exposure × outcome set sums exactly to 2,719 / 1,995 / 724. That includes the uncoded total iron, dietary iron, B(a)P and mutagenic-activity sets, which I verified by script. Every reference category is 1.0. Every point lies inside its CI.

The symmetry check flags 020 (white meat Q5 0.85, 0.76-0.97). The flag is borderline at the 15% threshold and comes from rounding. The text repeats the same interval, so it is not a typo.

## studies.csv
Confirmed:
- Cohort: n = 300,948 (175,369 men, 125,579 women); 2,719 / 1,995 / 724 cases (1,150 proximal, 787 distal, 58 unknown); follow-up up to 7.2 y; age 50-71.
- Diet: 124-item FFQ, with meat type and cooking from the risk factor questionnaire (RFQ).
- Outcome via registry linkage; includes_processed = yes.

## Estimates not coded (by design, not errors)
None of these is required by the codebook's R1; they are listed for the record:
- Table 3: total iron, dietary iron, B(a)P and mutagenic activity (5 quintiles × 3 outcomes each). B(a)P and mutagenic activity are meat-cooking mutagens like the HCAs but have no vocabulary value.
- Text p. 2411 (data not shown): total dietary nitrate 0.82 (0.71-0.95), P trend 0.111; total dietary nitrite 1.05 (0.92-1.21), P trend 0.316. These are not meat-specific.

## Rows confirmed correct
All 159 (cross2010_001-159).

## Internal inconsistencies in the paper
- The abstract says "7 years of follow-up"; the Results say "up to 7.2 years". This is trivial.
- Nothing else. The text duplicates of table values (red meat 1.24, 1.21, 1.35; processed 1.16, 1.11, 1.30; white meat 0.85; heme 1.13 etc.) all agree with the tables.

## Verdict
Fit for use. All numbers and medians are correct. Unprocessed red meat exists only as one high-vs-low text estimate (059).
