# K4 control: zouiouich2025 (NIH-AARP, Curr Dev Nutr 2025)

Controller: K4 (independent). Date: 2026-10-30.
Full text assigned: `drive/Understudier WCRF/oppfolginger/zouiouich2025.txt` (XML-derived; Figures 1–2 are captions only).
**Important:** a second, PDF-derived full text of the same article is at `drive/post2015/zouiouich2025.txt`. It is not a study card. **It contains all numbers in Figures 1 and 2, the subsite case counts and the page numbers.** The extractor did not have it. I used it to check completeness.
Method:
- I script-parsed Tables 2 and 3 and compared them with all 79 table rows.
- I checked the 12 Results-text rows by hand. All of them also appear in the Figure 1 data.
- Contrast types, models and flags I checked by reading the Methods and the figure and table footnotes.

## Summary
- Rows checked: 91 of 91.
- Numbers confirmed: 91 of 91. Every point estimate and CI matches the paper.
- Contrast typing: correct on all 91 rows. Substitution rows are `substitution`; addition rows are `continuous`.
- Discrepancies: 0 critical, 2 major, 3 minor.
- **Missing estimates: 146** (Figures 1 and 2; see below). These include the paper's only non-substitution per-unit red-meat estimates.
- Verdict: **the numbers are correct but the extraction is incomplete.** It is not fit as the NIH-AARP follow-up row for red-meat pooling until the Figure 1–2 rows are added, above all the addition-model red meat 1.16 (1.10–1.22) and unprocessed red 1.13 (1.06–1.20).

## Substitution vs addition typing (explicitly requested)

| Source | Model in paper | contrast_type in db | Correct? |
|---|---|---|---|
| Table 2, "Substitution model" columns (fish, poultry) | leave-one-out, adjusted for total meat (fn 2) | substitution | yes |
| Table 2, "Addition model" columns (fish, poultry) | adjusted for total red meat (fn 3) | continuous | yes |
| Table 3 (all 9 meat types × stage) | substitution, total meat in model (fn 1) | substitution | yes |
| Text rows 080–090 (red replacing white) | substitution | substitution | yes |
| Text row 091 (white meat, HR 0.95) | addition | continuous | yes |

- The Table 2 columns are not swapped: CRC fish substitution is 0.82 and fish addition is 0.94, which matches the text "fish: 18%" substitution.
- Substitution directions in `category_label` are right:
  - red replacing white;
  - white, fish or poultry replacing red;
  - processed replacing unprocessed.

## Discrepancies

| estimate_id | field | in database | in paper | severity |
|---|---|---|---|---|
| zouiouich2025_056–058 (red_unprocessed) | exposure_includes_processed | `no` (study row lists hamburger in the definition) | Unprocessed red includes "steak, beef, **hamburger**, pork, liver" plus meat in mixed dishes (Methods p. 2) | **major** – R6 names "hamburger included, bacon excluded" as `partial`. bernstein2015 codes the same situation `partial`. The two studies must be coded the same; decide the hamburger rule once (see SUMMARY) |
| zouiouich2025_091 vs _080 | is_main_model | red_total main = **substitution** row (080); white_meat main = **addition** row (091) | Fig 1 prints both models for both meats, e.g. white substitution CRC 0.82 (0.77–0.88) | **major** – inconsistent model choice between exposures in the same figure. It arose because the extractor lacked Fig 1. Pick one model type for all exposures |
| all subsite and sex rows (005–052, 081–090) | n_cases | empty | Fig 1 "Total Cases": proximal 4565, cecum 1851, ascending 1597, hepatic 428, transverse 689, distal 2437, splenic 238, descending 400, sigmoid 1799, rectal 2208, rectosigmoid 618, rectum 1590 (p. 5) | minor (fillable) |
| all rows | source_page | "page not marked in txt" | Results text p. 4–5; Fig 1 p. 5; Fig 2 p. 6; Table 2 p. 7; Table 3 p. 8 | minor |
| 080, 083–090 | source_table | "Fig 1 (values from Results text)" | values are in Fig 1 itself | minor |

## Checks requested by the brief

- **Unprocessed red meat definition.** As above, hamburger is included. The nutrient database disaggregates mixed dishes to the meat part only (p. 2), so the hamburger contribution is the ground beef, not the bun.
  - Liver is also in "unprocessed red".
  - Processed red = ham, bacon, hot dogs, beef cold cuts, sausages, and meat of pizza.
  - `red_total` with `yes` is correct.
- **Per-unit scaling.**
  - All rows are `per_50g_per_1000kcal`, which is correct (nutrient density; Methods p. 2–3).
  - The paper says this "equates to 100 g/2000 kcal/d".
  - At the cohort's median energy of about 1550–1850 kcal/d, 50 g/1000 kcal is roughly 78–92 g/day.
  - `dose_conversions` correctly assigns no grams and documents this.
  - The 25 g/1000 kcal analyses are in Suppl Table 2 (not available).
- **is_calibrated.** `no` on all rows, which is correct. The paper uses a single baseline FFQ with no calibration.
- **is_mutually_adjusted_processed.**
  - `yes` on red_unprocessed (056–058), which is correct: red processed is in the same model.
  - Other rows `no`. That is acceptable, because total-meat adjustment is not a processed-meat term.
- **Adjustment sets.** m1–m7 match the Fig 1/2 legends and the Table 2/3 footnotes:
  - total meat in substitution models;
  - total red meat in the Table 2 addition model (fn 3, as printed);
  - red + white in the Fig 1 addition model;
  - whole grains, not fibre (`adj_fiber = no`), which is correct;
  - no screening, HRT or diabetes, which is correct;
  - `energy_method = density`, which is correct.
  - **The m1 label** ("red meat in model, white meat left out, or vice versa") **covers both 080 (red) and 062–064 (white). That is fine.**
- **is_main_model on substitution rows (080–085, Table 2 substitution).** The paper's primary contrast is substitution: it leads the abstract and the addition models are "complementary" (p. 3). So the extractor's choice is defensible under "the paper's main model".
  - But the substitution HR is a red-versus-white contrast at fixed total meat. **It is not the "per unit of red meat" quantity that CUP pools.**
  - Recommendation: keep substitution as `is_main_model` if wanted, but use the addition-model rows (once coded) for pooling with other cohorts. See also the 091 inconsistency above.

## Missing estimates (146)
All are in the PDF-derived full text `drive/post2015/zouiouich2025.txt`, Figure 1 (p. 5) and Figure 2 (p. 6). All are per 50 g/1000 kcal, with sites CRC, proximal, cecum, ascending, hepatic flexure, transverse, distal, splenic flexure, descending, sigmoid, rectal, rectosigmoid junction and rectum (13).

**Figure 1 (42 missing of 52):**
- Red meat, **addition model**, all 13 sites (none coded). Key values:
  - CRC 1.16 (1.10–1.22)
  - proximal 1.11 (1.03–1.20)
  - distal 1.22 (1.10–1.34)
  - rectal 1.19 (1.07–1.32)
- Red meat, substitution: ascending 1.08 (0.92–1.28), hepatic 1.08 (0.79–1.48), splenic 1.25 (0.83–1.88), descending 1.11 (0.81–1.53). 4 rows.
- White meat, substitution, all 13 sites. CRC 0.82 (0.77–0.88).
- White meat, addition: 12 sites. Only CRC is coded.

**Figure 2 (104 missing of 104):**
- Red unprocessed, red processed, white unprocessed and white processed × 13 sites × {substitution, addition}. Key values:
  - Red unprocessed, CRC: substitution 1.19 (1.10–1.28); **addition 1.13 (1.06–1.20)**.
  - Red processed, CRC: substitution 1.30 (1.14–1.47); addition 1.24 (1.10–1.39).
  - Red unprocessed, rectal: addition 1.14 (1.00–1.29).

Not available in either file:
- Suppl Tables 1–10: sex-specific estimates beyond the two in the text, the 25 g analyses, total processed vs unprocessed, quintiles, E-values, and BMI/race strata and lag periods.

## Independent re-derivation
- Subsite case sums from Fig 1:
  - proximal 1851 + 1597 + 428 + 689 = 4565;
  - distal 238 + 400 + 1799 = 2437;
  - rectal 618 + 1590 = 2208.
  - Total 4565 + 2437 + 2208 = 9210, below 9461. This is consistent with the Methods: overlapping and NOS colon cases count in CRC but not in subsites.
- All CIs contain their point estimate. No log-symmetry flags.
- Study row: n 454,505; 9461 cases; 6,896,619 person-years; median follow-up 18.42 y, all correct.
  - `cases_rectum` can be set to 2208.
  - The colon total (proximal + distal = 7002) excludes NOS colon, so leaving `cases_colon` empty is defensible.

## Paper internal inconsistencies
1. **Figure 2:** red processed, substitution, prints 1.32 (0.61–2.85) for both splenic flexure and descending colon, while the addition estimates differ (1.34 vs 1.31). This is a probable copy error in the figure.
2. **Discussion (p. 9) vs Figure 2.** The Discussion says that for the transverse colon the substitution association was significant "for only total red meat". But Fig 2 red processed, transverse, gives 1.59 (1.01–2.50), which is also significant. The Results text (p. 6) itself cites "transverse colon (59%)".
3. Text typos (no data effect): "25 g/1000 kg"; "unprocessed with meat".
4. The Table 2 addition model is adjusted for "total red meat" (fn 3). The Fig 1 addition model instead puts red + white together. These are different addition models; m6 and m7 are correctly kept separate.

## Rows confirmed as correct
All 91 rows for numbers, contrast type, exposure (except the hamburger flag on 056–058), outcome, subgroup, unit and adjustment set. Model flags and source fields are as noted above.
