Think as a nutrigenecist and change the following recommendations for a client with high GENETIC risk of Leukomia : Ensure adequate folate (leafy greens, legumes, fortified cereals) and vitamin B12 - critical for normal haemopoiesis and DNA integrity Eat a diet rich in antioxidants (vitamins C and E, selenium, carotenoids) from colourful fruits and vegetables Include cruciferous vegetables (broccoli, cauliflower, Brussels sprouts) - sulforaphane has demonstrated anti-leukaemic activity in preclinical studies Avoid alcohol - alcohol impairs folate metabolism and is associated with increased risk of myeloid malignancies For Fanconi anaemia and Li-Fraumeni associated leukaemia risk: prioritise folate, B12, and antioxidant-rich foods Maintain a healthy body weight - obesity is associated with increased AML risk
folate nutrition leukemia genetic risk DNA methylation
sulforaphane leukemia anti-leukemic nutrigenomics
nutrigenomics leukemia genetic risk dietary recommendations folate B12 antioxidants 2024 2025
diet leukemia prevention polyphenols phytochemicals AML CLL
MTHFR folate leukemia risk one-carbon metabolism methylation
PMID: 41338873
https://www.mdpi.com/2072-6643/16/23/4100
| Domain | Original Focus | Nutrigenomics Upgrade |
|---|---|---|
| Folate/B12 | Adequacy | MTHFR genotype-directed form and dose |
| Antioxidants | General colours | Polyphenol class selection (EGCG, anthocyanins, quercetin) by mechanism |
| Cruciferous veg | Sulforaphane | GSTM1/NRF2 genotype; myrosinase activation technique |
| Alcohol | Avoid | Zero tolerance; ALDH2 genotype amplifies risk |
| FA/LFP | Folate + antioxidants | Crosslink avoidance (FA); p53/IGF-1 axis (LFS) |
| Body weight | Obesity risk | Bone marrow adiposity; FTO genotype; IGF-1 suppression; anti-inflammatory dietary pattern |
| NEW | - | One-carbon methylation network; epigenetic phytochemicals; gut microbiome; environmental toxin avoidance |
Note for clinical practice: These recommendations are intended as a nutrigenomics-informed framework. Actual implementation should be personalised to confirmed genotyping results (MTHFR, GSTM1/T1, NQO1, ALDH2, FTO, TP53 status), current labs (serum folate, B12, homocysteine, ferritin, selenium, inflammatory markers), and any active haematology surveillance programme. A nutrigenomicist works alongside, not instead of, the haematology team.
share in 8-10 lines as a recommendation
For Liver cancer : Follow a Mediterranean dietary pattern - anti-inflammatory, anti-fibrotic, supports liver health Limit red and processed meat Avoid alcohol entirely - even moderate alcohol dramatically accelerates liver fibrosis and HCC risk in those with genetic liver disease (hemochromatosis, alpha-1 antitrypsin deficiency, Wilson's disease) Coffee (2-4 cups/day) - among the most consistent dietary associations with reduced HCC risk and cirrhosis progression; a reasonable daily habit Avoid herbal supplements not approved by your doctor - many contain hepatotoxic compounds Avoid: Aflatoxin-contaminated foods (improperly stored grains and nuts in humid climates); raw freshwater fish (liver fluke risk) Adequate vitamin D - supports immune surveillance and liver cell differentiation For hemochromatosis: limit iron-rich foods (red meat, offal) and avoid vitamin C supplements (increase iron absorption); avoid alcohol Maintain a healthy weight - obesity-driven NAFLD is a direct pathway to liver cancer Consume Omega-3 fatty acid foods like fatty fish, flax seeds, Chia seeds, or walnuts to reduce HCC risk Limit or eliminate fructose and added sugars to reduce non-alcoholic fatty liver disease (NAFLD) progression, as NAFLD is strongly related to HCC Avoid dietary supplements containing iron or kava kava
Clinical note: Recommendations should be integrated with confirmed genotyping (HFE, ATP7B, SERPINA1, PNPLA3, TM6SF2, FADS1/2, CYP1A2), liver function tests, ferritin/transferrin saturation (hemochromatosis), ceruloplasmin (Wilson's), and serum 25-OHD. A nutrigenomicist works within the hepatology-led multidisciplinary team for this high-risk client.
Create a nutrigenomics dietary protocol document for liver cancer genetic risk clients
mkdir -p /home/daytona/workspace/liver-cancer-protocol && ls /home/daytona/workspace/liver-cancer-protocol
~/liver-cancer-protocol/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
Header, Footer, AlignmentType, HeadingLevel, BorderStyle, WidthType,
ShadingType, VerticalAlign, PageNumber, LevelFormat, UnderlineType
} = require('docx');
const fs = require('fs');
// ── Colour palette ──────────────────────────────────────────────────
const DARK_GREEN = "1A4731"; // section headings
const MID_GREEN = "2D6A4F"; // sub-headings
const ACCENT = "52B788"; // table header bg
const LIGHT_GREEN = "D8F3DC"; // alternate row / callout bg
const DARK_TEXT = "1B1B1B";
const WHITE = "FFFFFF";
const WARN_RED = "C1121F";
const WARN_BG = "FFE8E8";
// ── Helper: shaded paragraph (callout box) ──────────────────────────
function callout(text, bg = LIGHT_GREEN, bold = false, color = DARK_TEXT) {
return new Paragraph({
shading: { type: ShadingType.CLEAR, fill: bg },
spacing: { before: 80, after: 80 },
indent: { left: 360, right: 360 },
children: [new TextRun({ text, bold, color, font: "Arial", size: 20 })]
});
}
// ── Helper: heading 1 ───────────────────────────────────────────────
function h1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 300, after: 120 },
children: [new TextRun({ text, bold: true, color: WHITE, font: "Arial", size: 28 })],
shading: { type: ShadingType.CLEAR, fill: DARK_GREEN }
});
}
// ── Helper: heading 2 ───────────────────────────────────────────────
function h2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 200, after: 80 },
children: [new TextRun({ text, bold: true, color: WHITE, font: "Arial", size: 24 })],
shading: { type: ShadingType.CLEAR, fill: MID_GREEN }
});
}
// ── Helper: heading 3 ───────────────────────────────────────────────
function h3(text) {
return new Paragraph({
spacing: { before: 160, after: 60 },
children: [new TextRun({ text, bold: true, color: DARK_GREEN, font: "Arial", size: 22, underline: { type: UnderlineType.SINGLE } })]
});
}
// ── Helper: body paragraph ──────────────────────────────────────────
function body(text, bold = false, color = DARK_TEXT) {
return new Paragraph({
spacing: { before: 60, after: 60 },
children: [new TextRun({ text, bold, color, font: "Arial", size: 20 })]
});
}
// ── Helper: bullet item ─────────────────────────────────────────────
function bullet(label, detail, warnMode = false) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [
new TextRun({ text: label + ": ", bold: true, color: warnMode ? WARN_RED : DARK_GREEN, font: "Arial", size: 20 }),
new TextRun({ text: detail, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
// ── Helper: plain bullet ────────────────────────────────────────────
function plainBullet(text) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, font: "Arial", size: 20, color: DARK_TEXT })]
});
}
// ── Helper: numbered bullet ─────────────────────────────────────────
function numBullet(text, ref = "numbers") {
return new Paragraph({
numbering: { reference: ref, level: 0 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, font: "Arial", size: 20, color: DARK_TEXT })]
});
}
// ── Helper: spacer ──────────────────────────────────────────────────
function spacer(n = 1) {
return Array(n).fill(null).map(() => new Paragraph({ spacing: { before: 40, after: 40 }, children: [new TextRun("")] }));
}
// ── Helper: table cell ──────────────────────────────────────────────
function tc(text, bg = WHITE, bold = false, color = DARK_TEXT, width = null) {
const opts = {
shading: { type: ShadingType.CLEAR, fill: bg },
verticalAlign: VerticalAlign.CENTER,
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({
children: [new TextRun({ text, bold, color, font: "Arial", size: 18 })],
alignment: AlignmentType.LEFT
})]
};
if (width) opts.width = { size: width, type: WidthType.DXA };
return new TableCell(opts);
}
// ── Table border helper ─────────────────────────────────────────────
const thinBorder = { style: BorderStyle.SINGLE, size: 4, color: "AAAAAA" };
const tableBorders = { top: thinBorder, bottom: thinBorder, left: thinBorder, right: thinBorder, insideHorizontal: thinBorder, insideVertical: thinBorder };
// ═══════════════════════════════════════════════════════════════════
// DOCUMENT CONTENT
// ═══════════════════════════════════════════════════════════════════
const children = [
// ── COVER / TITLE ────────────────────────────────────────────────
new Paragraph({
spacing: { before: 400, after: 80 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: DARK_GREEN },
children: [new TextRun({ text: "NUTRIGENOMICS DIETARY PROTOCOL", bold: true, color: WHITE, font: "Arial", size: 48 })]
}),
new Paragraph({
spacing: { before: 0, after: 40 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: DARK_GREEN },
children: [new TextRun({ text: "Liver Cancer Genetic Risk — Clinical Nutrition Framework", color: ACCENT, font: "Arial", size: 28, italics: true })]
}),
new Paragraph({
spacing: { before: 0, after: 400 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: DARK_GREEN },
children: [new TextRun({ text: "Prepared by: Nutrigenomics Clinical Team | Version 1.0 | 2026", color: "CCCCCC", font: "Arial", size: 20 })]
}),
...spacer(1),
// ── DISCLAIMER ───────────────────────────────────────────────────
callout("CLINICAL DISCLAIMER: This protocol is intended for use by qualified nutrigenomics practitioners in consultation with a hepatology-led multidisciplinary team. All recommendations must be individualised to confirmed genotyping results, current biochemistry, and active medical management. This document does not replace medical advice.", WARN_BG, true, WARN_RED),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 1 – PURPOSE AND SCOPE
// ══════════════════════════════════════════════════════════════
h1("1. PURPOSE AND SCOPE"),
body("This protocol provides a nutrigenomics-informed dietary framework for individuals with confirmed high genetic risk of hepatocellular carcinoma (HCC) or liver cancer. It integrates:"),
plainBullet("Genotype-directed dietary modifications based on known gene-nutrient interactions"),
plainBullet("Condition-specific guidance for hereditary liver diseases (hemochromatosis, Wilson's disease, alpha-1 antitrypsin deficiency)"),
plainBullet("Evidence-based chemoprevention through functional foods and phytochemicals"),
plainBullet("Avoidance strategies for dietary hepatotoxins and cancer-promoting compounds"),
...spacer(1),
body("This protocol is intended for practitioners and is not a standalone patient handout. Dietary implementation must follow genotyping, baseline labs, and consultation."),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 2 – REQUIRED BASELINE ASSESSMENT
// ══════════════════════════════════════════════════════════════
h1("2. REQUIRED BASELINE ASSESSMENT BEFORE DIETARY PLANNING"),
body("No dietary recommendations should be implemented without the following baseline data:", true),
...spacer(1),
h3("2.1 Genetic / Genotyping Panel"),
// Genotyping table
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Gene", ACCENT, true, WHITE, 2000),
tc("Variant(s) to Test", ACCENT, true, WHITE, 2400),
tc("Clinical Relevance", ACCENT, true, WHITE, 4626)
]}),
new TableRow({ children: [
tc("PNPLA3", LIGHT_GREEN, true),
tc("rs738409 (I148M)", LIGHT_GREEN),
tc("3-5x elevated NAFLD-to-HCC progression risk; drives dietary fat and fructose sensitivity")
]}),
new TableRow({ children: [
tc("TM6SF2"),
tc("rs58542926 (E167K)"),
tc("Impairs VLDL secretion; amplifies hepatic lipid accumulation under high-carbohydrate diet")
]}),
new TableRow({ children: [
tc("MBOAT7", LIGHT_GREEN),
tc("rs641738", LIGHT_GREEN),
tc("Increased hepatic phosphatidylinositol remodelling; associated with NAFLD and HCC risk")
]}),
new TableRow({ children: [
tc("HFE"),
tc("C282Y, H63D"),
tc("Hereditary hemochromatosis — drives iron overload and hepatocyte oxidative damage")
]}),
new TableRow({ children: [
tc("ATP7B", LIGHT_GREEN),
tc("Multiple pathogenic variants", LIGHT_GREEN),
tc("Wilson's disease — copper accumulation; hepatic inflammation and cirrhosis risk", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("SERPINA1"),
tc("Pi*Z, Pi*S alleles"),
tc("Alpha-1 antitrypsin deficiency — misfolded protein accumulation causes ER stress and hepatic fibrosis")
]}),
new TableRow({ children: [
tc("FADS1/FADS2", LIGHT_GREEN),
tc("rs174537, rs174575", LIGHT_GREEN),
tc("Determines ALA-to-EPA/DHA conversion efficiency; guides omega-3 source recommendation", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("CYP1A2 / CYP3A4"),
tc("Multiple variants"),
tc("Aflatoxin B1 bioactivation — slow metabolisers accumulate higher DNA adduct loads")
]}),
new TableRow({ children: [
tc("GSTM1 / GSTT1", LIGHT_GREEN),
tc("Null variants", LIGHT_GREEN),
tc("Impaired sulforaphane conjugation and phase II hepatic detoxification capacity", LIGHT_GREEN)
]}),
]
}),
...spacer(1),
h3("2.2 Biochemistry Baseline"),
plainBullet("Liver function tests: ALT, AST, GGT, ALP, bilirubin, albumin, INR"),
plainBullet("Ferritin, serum iron, transferrin saturation (hemochromatosis screening)"),
plainBullet("Ceruloplasmin, serum copper, 24-hour urine copper (Wilson's disease)"),
plainBullet("Alpha-1 antitrypsin level and phenotype (SERPINA1)"),
plainBullet("Fasting glucose, HbA1c, fasting insulin, HOMA-IR"),
plainBullet("Fasting lipid panel including triglycerides"),
plainBullet("25-hydroxyvitamin D"),
plainBullet("Homocysteine, serum folate, serum B12"),
plainBullet("AFP (alpha-fetoprotein) if HCC surveillance is active"),
plainBullet("Body composition assessment: BMI, waist circumference, DEXA or bioimpedance if available"),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 3 – CORE DIETARY FRAMEWORK
// ══════════════════════════════════════════════════════════════
h1("3. CORE DIETARY FRAMEWORK"),
body("The foundation of this protocol is a genotype-directed Mediterranean-style dietary pattern, modified for hepatic protection and anti-leukaemic chemoprevention."),
...spacer(1),
h3("3.1 Dietary Pattern — Mediterranean Base with Nutrigenomics Modifications"),
bullet("Foundation", "Extra-virgin olive oil as the primary fat source (3-4 tbsp/day) — oleocanthal and oleacein suppress NF-kB and IL-6, directly reducing hepatic inflammation"),
bullet("Protein sources", "Oily fish (3x/week), legumes (4-5x/week), eggs (daily), moderate poultry; minimise red meat to <1x/week, eliminate processed meat entirely"),
bullet("Carbohydrates", "Whole grains, legumes, and vegetables as primary carbohydrate sources; strict elimination of refined carbohydrates, white flour products, and added sugar"),
bullet("Vegetables", "Minimum 5-7 servings/day, emphasising cruciferous, allium, and colourful antioxidant-dense varieties"),
bullet("Fruit", "2 servings/day of low-fructose varieties (berries, citrus, kiwi); avoid fruit juice and dried fruit"),
bullet("Dairy", "Moderate fermented dairy (live-culture yogurt, kefir) for gut microbiome support; avoid full-fat cream and high-saturated-fat cheese in excess"),
bullet("Nuts and seeds", "Daily handful of mixed nuts — walnuts (omega-3), Brazil nuts (selenium, 1-2/day max), pumpkin seeds (zinc)"),
...spacer(1),
h3("3.2 Fructose and Added Sugar — Strict Restriction"),
callout("PRIORITY INTERVENTION: Fructose is the primary dietary driver of de novo hepatic lipogenesis, NAFLD progression, and HCC in genetically susceptible individuals.", WARN_BG, true, WARN_RED),
...spacer(1),
bullet("Target", "Eliminate all sugar-sweetened beverages (SSBs), fruit juice, and ultra-processed snacks entirely"),
bullet("Hidden fructose", "Check labels for: high-fructose corn syrup, sucrose, agave syrup, honey, fruit concentrate in processed foods"),
bullet("Whole fruit", "Limit to 1-2 servings/day of low-fructose options (berries, citrus); avoid mango, grapes, watermelon in excess"),
bullet("PNPLA3 I148M carriers", "Enhanced fructose sensitivity — even moderate fruit juice consumption amplifies hepatic lipid accumulation; stricter limit applies"),
bullet("TM6SF2 E167K carriers", "Impaired VLDL export compounds fructose-driven steatosis; added sugar restriction is non-negotiable"),
...spacer(1),
h3("3.3 Omega-3 Fatty Acids — Source Selection by Genotype"),
bullet("Preferred sources", "EPA/DHA-rich oily fish: salmon, sardines, mackerel, anchovies, herring (3x/week minimum)"),
bullet("FADS1/FADS2 variants", "Impaired conversion of plant-based ALA to EPA/DHA — flax, chia, and walnuts are insufficient as sole omega-3 sources for these clients; oily fish or algae-based DHA supplement is required"),
bullet("Mechanism", "EPA/DHA activate PPAR-alpha (anti-steatotic), suppress SREBP-1c (reduces lipogenesis), and reduce hepatic NF-kB-driven inflammation"),
bullet("Target", "Minimum 1.5-2g combined EPA+DHA per day from food; supplement with algae-derived DHA if fish intake is inadequate"),
...spacer(1),
h3("3.4 Coffee — First-Line Hepatoprotective Habit"),
callout("Coffee (2-4 cups/day) is among the most consistent dietary associations with reduced HCC risk and cirrhosis progression across multiple meta-analyses. This is a tier-1 recommendation.", LIGHT_GREEN, true, DARK_GREEN),
...spacer(1),
bullet("Target dose", "2-4 cups/day of brewed, espresso, or filter coffee"),
bullet("Mechanisms", "NRF2 pathway activation, NF-kB suppression, direct antifibrotic effect on hepatic stellate cells, HDAC inhibition (kahweol/cafestol diterpenes in unfiltered coffee)"),
bullet("Caffeinated vs decaf", "Both show benefit; caffeinated coffee shows stronger HCC risk reduction in studies"),
bullet("Caution", "Avoid adding sugar, flavoured syrups, or cream — defeats the hepatoprotective purpose; black or with unsweetened milk only"),
bullet("Wilson's disease", "Coffee contains trace copper — not a concern at 2-4 cups/day but avoid adding to other high-copper dietary load"),
...spacer(1),
h3("3.5 Cruciferous Vegetables and Phase II Detoxification Support"),
bullet("Target", "3-5 servings/week of broccoli, kale, Brussels sprouts, bok choy, cauliflower, radish"),
bullet("Preparation", "Lightly steam (5 min max) or consume raw — boiling leaches up to 60% of glucosinolates"),
bullet("Myrosinase trick", "Add raw mustard powder, daikon, or rocket to cooked broccoli to restore sulforaphane formation when myrosinase is heat-denatured"),
bullet("GSTM1/GSTT1 null carriers", "Reduced sulforaphane conjugation — higher dietary intake is especially important as compensatory strategy; also consider standardised broccoli sprout extract under supervision"),
bullet("Mechanisms", "Sulforaphane activates NRF2 → upregulates HO-1, NQO1, GST; I3C/DIM modulate AhR signalling relevant to hepatic detoxification"),
...spacer(1),
h3("3.6 Antioxidant and Polyphenol Priorities"),
bullet("Green tea (EGCG)", "2-3 cups/day — do not take with iron-rich meals as EGCG chelates non-haem iron; separate by 1-2 hours"),
bullet("Curcumin", "Fresh or dried turmeric in cooked meals + black pepper (piperine increases bioavailability ~2000%); anti-NF-kB and direct hepatoprotective"),
bullet("Resveratrol", "Red grapes, red berries, peanut skins — modest dietary amounts; dietary sources preferred over supplements unless under medical supervision"),
bullet("Anthocyanins", "1 cup/day dark berries (blueberries, blackberries, black currants) — anti-inflammatory, Akt/Erk pathway modulation"),
bullet("Quercetin", "Red onions, capers, apples — MDM2 inhibition, p53 stabilisation, apoptotic signalling"),
bullet("Selenium", "1-2 Brazil nuts/day (do not exceed — toxicity above 400mcg/day); sunflower seeds, eggs, tuna"),
bullet("Vitamin C", "From whole foods (citrus, bell pepper, kiwi, broccoli) — NOTE: vitamin C supplements are CONTRAINDICATED in hemochromatosis (see Section 4)"),
...spacer(1),
h3("3.7 Vitamin D — Test, Target, Recheck"),
bullet("Target", "Serum 25-OHD: 60-80 nmol/L; do not supplement to >100 nmol/L without medical review"),
bullet("Dietary sources", "Oily fish, egg yolks, fortified dairy — rarely sufficient alone; supplementation usually required"),
bullet("Mechanism", "VDR-mediated antifibrotic signalling in hepatic stellate cells; supports hepatic immune surveillance"),
bullet("Recheck", "Retest 25-OHD every 6 months while supplementing; dose-adjust to maintain target range"),
...spacer(1),
h3("3.8 Gut Microbiome Support"),
bullet("Prebiotic fibre", "Garlic, leeks, Jerusalem artichoke, chicory, oats, asparagus — promotes SCFA production (butyrate, propionate)"),
bullet("Fermented foods", "Daily serving of live-culture yogurt, kefir, kimchi, miso, or sauerkraut — modulates gut-liver axis inflammation"),
bullet("Mechanism", "Gut dysbiosis increases intestinal permeability → bacterial LPS translocation to portal circulation → hepatic TLR4 activation → NF-kB → fibrogenesis; a healthy microbiome reduces this axis"),
bullet("Fibre target", "Minimum 30g total dietary fibre/day from diverse plant sources"),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 4 – CONDITION-SPECIFIC MODULES
// ══════════════════════════════════════════════════════════════
h1("4. CONDITION-SPECIFIC NUTRIGENOMICS MODULES"),
h2("4A. Hereditary Hemochromatosis (HFE C282Y / H63D)"),
callout("Iron restriction is a clinical priority. Even modest dietary iron excess accelerates hepatocyte oxidative damage in HFE variant carriers.", WARN_BG, true, WARN_RED),
...spacer(1),
bullet("Avoid", "Red meat, organ meat (liver, kidney), blood sausage, iron-fortified cereals — all are high haem-iron sources with high bioavailability"),
bullet("Restrict", "Shellfish, legumes, dark chocolate (non-haem iron — absorption is lower but still meaningful at high intake)"),
bullet("CRITICAL: Vitamin C supplements CONTRAINDICATED", "Ascorbic acid dramatically increases non-haem iron absorption and promotes Fenton chemistry generating hydroxyl radicals in hepatocytes; dietary vitamin C from whole food is acceptable in moderation"),
bullet("Iron absorption inhibitors — use strategically", "Drink polyphenol-rich tea (green or black) with meals — tannic acid competitively inhibits iron absorption; calcium-rich foods at iron-containing meals also reduce uptake"),
bullet("Calcium", "Include dairy or fortified plant milk with meals to competitively inhibit iron absorption"),
bullet("Alcohol: ABSOLUTE ZERO", "Alcohol and iron overload share ROS-generating pathways in hepatocytes — the combination is exponentially more damaging than either alone; zero tolerance applies"),
bullet("Cooking", "Avoid cast iron cookware — measurable iron leaching into food occurs, especially with acidic ingredients"),
bullet("Monitoring", "Dietary adjustments must be guided by and tracked alongside therapeutic phlebotomy schedule and serial ferritin/transferrin saturation"),
...spacer(1),
h2("4B. Wilson's Disease (ATP7B Variants)"),
callout("Copper restriction is the dietary cornerstone. Always implement alongside and never instead of medical chelation or zinc therapy prescribed by the hepatologist.", WARN_BG, true, WARN_RED),
...spacer(1),
bullet("High-copper foods to avoid", "Shellfish especially oysters (highest dietary copper source), liver, kidney, chocolate, cocoa, nuts, mushrooms, dried legumes in excess"),
bullet("Moderate restriction", "Whole grains, seeds, dark leafy greens — copper content is moderate; do not eliminate but limit portion size"),
bullet("Water", "Test tap water copper content if plumbing includes copper pipes; use filtered water if levels are elevated"),
bullet("Cooking vessels", "Avoid copper cookware — leaching is significant, especially with acidic foods"),
bullet("Zinc-rich foods as adjunct", "Pumpkin seeds, legumes, eggs, hemp seeds — zinc competitively inhibits intestinal copper absorption via metallothionein induction; dietary zinc complements (but does not replace) medical zinc supplementation"),
bullet("Monitoring", "Track dietary changes alongside ceruloplasmin, serum copper, and 24-hour urine copper; liaise with hepatology team"),
...spacer(1),
h2("4C. Alpha-1 Antitrypsin Deficiency (SERPINA1 Pi*Z/Pi*S)"),
callout("The primary mechanism is ER stress from misfolded AAT protein accumulation in hepatocytes — not a systemic deficiency. Dietary strategy targets ER stress reduction and antioxidant compensation.", LIGHT_GREEN, false, DARK_GREEN),
...spacer(1),
bullet("Antioxidant priority", "Maximise hepatic glutathione via: cruciferous vegetables (NRF2/GST activation), high-sulphur foods (eggs, garlic, onions — cysteine for glutathione synthesis), selenium adequacy"),
bullet("Avoid hepatotoxic triggers", "Any compound requiring significant hepatic CYP metabolism can amplify ER stress; strictly avoid alcohol, unnecessary medications/supplements, and herbal hepatotoxins"),
bullet("Anti-ER stress nutrients", "Vitamin E (mixed tocopherols from nuts, seeds, olive oil) — reduces lipid peroxidation in ER membranes; omega-3s reduce inflammatory ER stress signalling"),
bullet("Protein intake", "Adequate protein is essential for liver regeneration capacity; target 1.2-1.5g/kg/day from lean sources (fish, legumes, eggs) — protein restriction is NOT indicated unless advanced cirrhosis with encephalopathy risk is confirmed by the hepatologist"),
bullet("Body weight", "Even modest weight gain amplifies ER stress and oxidative burden on already-stressed hepatocytes; weight stability or gradual loss if overweight is important"),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 5 – STRICT AVOIDANCE LIST
// ══════════════════════════════════════════════════════════════
h1("5. STRICT AVOIDANCE LIST — HEPATOTOXINS AND CANCER PROMOTERS"),
h3("5.1 Alcohol — Zero Tolerance"),
callout("ABSOLUTE CONTRAINDICATION in all genetic liver disease contexts. No safe threshold exists. Alcohol and genetic liver vulnerability share oxidative, inflammatory, and fibrogenic pathways — any intake compounds risk.", WARN_BG, true, WARN_RED),
...spacer(1),
bullet("Mechanism", "Acetaldehyde (toxic metabolite) directly crosslinks hepatic DNA; ethanol inhibits methionine synthase, depleting SAM and disrupting DNA methylation; promotes hepatic stellate cell activation and fibrosis"),
bullet("ALDH2 variants", "Clients with ALDH2*2 (common in East Asian populations) have severely impaired acetaldehyde clearance — even trivial alcohol intake generates disproportionate hepatotoxic and carcinogenic exposure"),
bullet("Applies to", "All alcohol-containing beverages including wine, beer, spirits; also 'low-alcohol' beverages and kombucha with residual alcohol content"),
...spacer(1),
h3("5.2 Aflatoxin B1 — Zero Tolerance"),
bullet("Sources", "Mould on improperly stored peanuts, maize, wheat, sorghum, dried figs, spices — especially in humid climates"),
bullet("Mechanism", "AFB1 bioactivated by CYP1A2/CYP3A4 to reactive epoxide → AFB1-N7-guanine adducts → TP53 R249S hotspot mutation found in 30-60% of HCC in high-exposure regions"),
bullet("CYP slow-metabolisers", "Carry higher adduct load per unit exposure — extra vigilance applies"),
bullet("Storage rule", "All nuts and grains: store in dry, cool, airtight containers; inspect before use; discard any with visible mould, musty smell, or colour change"),
bullet("Commercial products", "Choose reputable brands with aflatoxin testing certification where available"),
...spacer(1),
h3("5.3 Liver Fluke Risk"),
bullet("Raw freshwater fish", "Absolute avoidance — Opisthorchis/Clonorchis infection from raw or undercooked freshwater fish causes biliary inflammation and is a class 1 carcinogen for cholangiocarcinoma; especially relevant in Southeast Asian dietary contexts"),
bullet("Safe fish", "Marine (saltwater) fish is not a liver fluke risk; properly cooked freshwater fish is safe"),
...spacer(1),
h3("5.4 Dietary Environmental Hepatotoxins"),
bullet("Charred and barbecued meat", "Heterocyclic amines (HCAs) and polycyclic aromatic hydrocarbons (PAHs) are hepatic carcinogens; minimise char-grilling, use low-temperature cooking methods where possible"),
bullet("Cured and processed meats", "Nitrites/nitrosamines, benzene precursors — eliminate from diet"),
bullet("Ultra-processed foods", "AGEs (advanced glycation end-products), synthetic additives, emulsifiers — amplify hepatic oxidative stress and gut-liver axis inflammation"),
bullet("Pesticide residue", "Organophosphate and organochlorine pesticides impose hepatic CYP metabolic burden; prioritise organic for highest-residue produce (strawberries, spinach, apples, grapes, peaches)"),
...spacer(1),
h3("5.5 Contraindicated Supplements"),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Supplement", WARN_RED, true, WHITE, 2500),
tc("Reason for Contraindication", WARN_RED, true, WHITE, 6526)
]}),
new TableRow({ children: [tc("Iron supplements", WARN_BG), tc("Promotes iron overload — absolute contraindication in hemochromatosis; avoid unless frank deficiency confirmed and hepatologist approves", WARN_BG)] }),
new TableRow({ children: [tc("Vitamin C supplements"), tc("Enhances iron absorption and promotes Fenton oxidative chemistry in hemochromatosis (HFE variants); contraindicated")] }),
new TableRow({ children: [tc("Kava kava (Piper methysticum)", WARN_BG), tc("Direct hepatotoxin — causes acute hepatitis and liver failure; banned/restricted in multiple countries; absolute contraindication", WARN_BG)] }),
new TableRow({ children: [tc("Comfrey (Symphytum)"), tc("Pyrrolizidine alkaloids cause hepatic veno-occlusive disease; severe hepatotoxicity")] }),
new TableRow({ children: [tc("Germander (Teucrium)", WARN_BG), tc("Diterpenoid compounds cause acute and chronic hepatotoxicity; withdrawn from market in many countries", WARN_BG)] }),
new TableRow({ children: [tc("High-dose green tea extract"), tc("Concentrated EGCG supplements (>800mg/day) associated with acute liver injury — dietary green tea is safe; supplements are not")] }),
new TableRow({ children: [tc("Any supplement >100mg niacin (as nicotinic acid)", WARN_BG), tc("Pharmacological niacin doses cause dose-dependent hepatotoxicity; dietary niacin from food is safe", WARN_BG)] }),
]
}),
...spacer(1),
callout("GENERAL RULE: No herbal supplement, traditional medicine, or nutraceutical should be taken without explicit approval from the hepatologist or supervising practitioner. The liver processes all ingested compounds and has significantly reduced reserve capacity in genetically susceptible individuals.", WARN_BG, true, WARN_RED),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 6 – WEIGHT MANAGEMENT AND METABOLIC HEALTH
// ══════════════════════════════════════════════════════════════
h1("6. WEIGHT MANAGEMENT AND METABOLIC HEALTH"),
body("Obesity-driven NAFLD represents a direct, stepwise pathway to HCC: steatosis → NASH → fibrosis → cirrhosis → HCC. Metabolic intervention is therefore cancer prevention."),
...spacer(1),
h3("6.1 Body Weight Targets"),
bullet("BMI target", "18.5-24.9 kg/m2; more practically, target reduction in waist circumference below 94cm (men) or 80cm (women) as proxy for visceral adiposity"),
bullet("Intrahepatic fat", "Independent of BMI, reducing intrahepatic fat content is the primary metabolic goal; even 5-7% body weight loss significantly reduces hepatic steatosis and NF-kB-driven inflammation"),
bullet("Bone marrow and visceral fat", "Anti-inflammatory dietary patterns reduce visceral adiposity independent of caloric restriction — Mediterranean adherence is sufficient as a strategy, not just calorie counting"),
...spacer(1),
h3("6.2 Meal Timing and Insulin / IGF-1 Management"),
bullet("Time-restricted eating", "14:10 or 16:8 pattern — reduces hepatic lipid accumulation and insulin resistance; activates AMPK and hepatic autophagy (mitophagy of damaged mitochondria)"),
bullet("Avoid late-night eating", "Hepatic lipid synthesis is circadian — eating in the late evening amplifies de novo lipogenesis even at identical caloric intake"),
bullet("Glycaemic pattern", "Low-glycaemic index meals, high-fibre carbohydrates — minimise postprandial insulin spikes and chronic IGF-1 elevation"),
bullet("FTO variant carriers", "Protein-adequate, lower-glycaemic dietary patterns show better weight maintenance outcomes than caloric restriction alone — protein at every meal reduces appetite via PYY/GLP-1"),
...spacer(1),
h3("6.3 Sarcopenic Obesity — Muscle Mass Preservation"),
bullet("Risk", "Sarcopenic obesity carries additive HCC risk beyond adiposity alone — muscle mass is an independent predictor of liver cancer outcomes"),
bullet("Protein target", "1.2-1.5g/kg body weight/day (unless advanced cirrhosis with encephalopathy — check with hepatology), emphasising leucine-rich sources: eggs, fish, legumes"),
bullet("Physical activity", "150-300 min/week moderate aerobic activity + 2x/week resistance training — independently reduces hepatic steatosis and NF-kB inflammatory signalling"),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 7 – SAMPLE DAILY EATING PATTERN
// ══════════════════════════════════════════════════════════════
h1("7. SAMPLE DAILY EATING PATTERN"),
body("The following is a representative template. Portions and specific foods must be adjusted to individual genotype, lab results, condition-specific restrictions, and cultural food preferences."),
...spacer(1),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Meal", DARK_GREEN, true, WHITE, 1600),
tc("Example Foods", DARK_GREEN, true, WHITE, 4000),
tc("Key Nutrigenomics Purpose", DARK_GREEN, true, WHITE, 3426)
]}),
new TableRow({ children: [
tc("Breakfast", LIGHT_GREEN, true),
tc("Rolled oats with blueberries, walnuts, and ground flaxseed; 1-2 eggs scrambled with turmeric and black pepper; green tea or black coffee", LIGHT_GREEN),
tc("Beta-glucan (insulin), anthocyanins (Akt/Erk), ALA omega-3, choline; EGCG hepatoprotection; coffee — HCC risk reduction", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Mid-Morning"),
tc("1-2 Brazil nuts; apple or kiwi; additional black coffee (if within 4-cup daily limit)"),
tc("Selenium (GPx); low-fructose fruit; continued coffee benefit")
]}),
new TableRow({ children: [
tc("Lunch", LIGHT_GREEN, true),
tc("Large salad: dark leafy greens, rocket, red onion, cherry tomatoes, avocado, sardines or grilled salmon; EVOO + lemon dressing; wholegrain bread or lentils", LIGHT_GREEN),
tc("EPA/DHA (anti-steatotic); quercetin; lycopene; monounsaturated fat; folate; fibre", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Afternoon"),
tc("Live-culture yogurt or kefir with seeds; raw vegetable sticks (carrot, celery, bell pepper)"),
tc("Gut microbiome support; prebiotic fibre; carotenoids")
]}),
new TableRow({ children: [
tc("Dinner", LIGHT_GREEN, true),
tc("Lightly steamed broccoli + raw mustard; baked salmon or mackerel with garlic and olive oil; roasted sweet potato; side of kimchi or miso soup", LIGHT_GREEN),
tc("Sulforaphane (NRF2); EPA/DHA; allicin (hepatoprotective); beta-carotene; microbiome support", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Evening (optional)"),
tc("Small handful of mixed berries; chamomile or green tea (not within 1hr of iron-rich food)"),
tc("Antioxidant polyphenols; apigenin (HDAC inhibition); no additional caloric burden")
]}),
]
}),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 8 – MONITORING AND REVIEW
// ══════════════════════════════════════════════════════════════
h1("8. MONITORING, REVIEW, AND TEAM COORDINATION"),
h3("8.1 Recommended Review Schedule"),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Timepoint", ACCENT, true, WHITE, 2000),
tc("Assessment", ACCENT, true, WHITE, 4000),
tc("Action", ACCENT, true, WHITE, 3026)
]}),
new TableRow({ children: [
tc("Baseline", LIGHT_GREEN),
tc("Full genotyping panel + biochemistry (see Section 2)", LIGHT_GREEN),
tc("Set personalised dietary protocol from this framework", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("4 weeks"),
tc("Diet diary review; early biochemistry if condition-specific (ferritin in HH)"),
tc("Identify adherence gaps; address palatability/cultural barriers")
]}),
new TableRow({ children: [
tc("3 months", LIGHT_GREEN),
tc("Repeat LFTs, ferritin/transferrin sat, fasting glucose, HbA1c, triglycerides, 25-OHD", LIGHT_GREEN),
tc("Dose-adjust vitamin D; assess metabolic response; update recommendations", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("6 months"),
tc("Full biochemistry review; body composition reassessment; diet quality scoring"),
tc("Reassess all modules; update condition-specific guidance")
]}),
new TableRow({ children: [
tc("12 months and annually", LIGHT_GREEN),
tc("Full reassessment including hepatology team review, AFP if indicated, imaging per surveillance protocol", LIGHT_GREEN),
tc("Longitudinal protocol update; integrate new evidence", LIGHT_GREEN)
]}),
]
}),
...spacer(1),
h3("8.2 Multidisciplinary Team Integration"),
plainBullet("Hepatologist: oversees HCC surveillance, fibrosis staging, therapeutic phlebotomy (hemochromatosis), and chelation (Wilson's)"),
plainBullet("Gastroenterologist: endoscopic surveillance where cirrhosis or portal hypertension is present"),
plainBullet("Nutrigenomics practitioner: this protocol — coordinates genotype-directed dietary personalisation and supplement safety"),
plainBullet("Genetic counsellor: family cascade testing for first-degree relatives of HFE, ATP7B, SERPINA1, and PNPLA3 variant carriers"),
plainBullet("Psychologist/health coach: dietary behaviour change support; adherence, food environment modification"),
plainBullet("GP/primary care: coordinates monitoring, referrals, and prescription supplements (e.g. vitamin D, zinc)"),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 9 – QUICK REFERENCE SUMMARY TABLE
// ══════════════════════════════════════════════════════════════
h1("9. QUICK REFERENCE — NUTRIGENOMICS SUMMARY TABLE"),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Domain", DARK_GREEN, true, WHITE, 2000),
tc("Prioritise / Increase", DARK_GREEN, true, WHITE, 3513),
tc("Avoid / Eliminate", DARK_GREEN, true, WHITE, 3513)
]}),
new TableRow({ children: [
tc("Dietary Pattern", LIGHT_GREEN, true),
tc("Mediterranean base; EVOO; oily fish; legumes; whole grains; colourful vegetables", LIGHT_GREEN),
tc("Ultra-processed foods; red/processed meat; refined carbohydrates; added sugar", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Fructose/Sugar"),
tc("Berries, citrus (low-fructose whole fruit)"),
tc("SSBs, fruit juice, HFCS, agave, confectionery")
]}),
new TableRow({ children: [
tc("Omega-3", LIGHT_GREEN),
tc("Salmon, sardines, mackerel 3x/week; algae-based DHA if FADS variant", LIGHT_GREEN),
tc("Trans fats; excessive omega-6 vegetable oils", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Coffee"),
tc("2-4 cups/day black or unsweetened"),
tc("Adding sugar, flavoured syrups")
]}),
new TableRow({ children: [
tc("Antioxidants", LIGHT_GREEN),
tc("Dark berries, green tea, turmeric, red onion, tomato, nuts/seeds", LIGHT_GREEN),
tc("High-dose isolated antioxidant supplements without testing", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Cruciferous Veg"),
tc("Broccoli, kale, Brussels sprouts 3-5x/week; lightly steamed"),
tc("Boiling (loses glucosinolates)")
]}),
new TableRow({ children: [
tc("Alcohol", LIGHT_GREEN, true),
tc("-", LIGHT_GREEN),
tc("ALL alcohol — zero tolerance (absolute)", LIGHT_GREEN, true)
]}),
new TableRow({ children: [
tc("Aflatoxin"),
tc("Reputable brands; cool dry airtight storage for nuts/grains"),
tc("Mouldy nuts/grains; improperly stored produce")
]}),
new TableRow({ children: [
tc("Hemochromatosis", LIGHT_GREEN),
tc("Tea with meals (iron inhibition); calcium-rich foods at meals", LIGHT_GREEN),
tc("Red meat, offal, iron-fortified foods, Vit C supplements, cast iron cookware", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Wilson's Disease"),
tc("Zinc-rich foods (pumpkin seeds, legumes); filtered water"),
tc("Shellfish, liver, chocolate, nuts, copper cookware")
]}),
new TableRow({ children: [
tc("Supplements", LIGHT_GREEN),
tc("Vitamin D (to target 60-80 nmol/L); algae DHA if FADS variant; zinc if Wilson's (under supervision)", LIGHT_GREEN),
tc("Iron, Vit C (hemochromatosis), kava kava, comfrey, germander, high-dose green tea extract", LIGHT_GREEN)
]}),
new TableRow({ children: [
tc("Weight/Metabolic"),
tc("Lean protein 1.2-1.5g/kg; TRE 14:10 or 16:8; resistance training 2x/week"),
tc("Crash dieting (muscle loss); late-night eating")
]}),
]
}),
...spacer(1),
// ══════════════════════════════════════════════════════════════
// SECTION 10 – REFERENCES
// ══════════════════════════════════════════════════════════════
h1("10. KEY EVIDENCE BASE"),
body("This protocol is informed by the following evidence domains:"),
...spacer(1),
numBullet("Fakhar F et al. The Potential Role of Dietary Polyphenols in the Prevention and Treatment of Acute Leukemia. Nutrients. 2024;16(23):4100.", "refs"),
numBullet("Xiang Y, Wiemels JL, Nickels EM. The relationship of dietary folate, folic acid, and childhood cancer. Curr Probl Pediatr Adolesc Health Care. 2025 Sep. PMID: 41338873.", "refs"),
numBullet("PNPLA3 I148M variant and NAFLD-HCC progression: multiple cohort studies and meta-analyses (2018-2024).", "refs"),
numBullet("Coffee and HCC risk: systematic reviews and meta-analyses (Sang LX et al.; Kennedy OJ et al.; Johnson S et al.) demonstrating consistent 35-50% risk reduction at 2-4 cups/day.", "refs"),
numBullet("NRF2-sulforaphane axis in hepatic detoxification: Fahey JW, Talalay P et al. foundational work; multiple clinical and mechanistic studies (2010-2024).", "refs"),
numBullet("Omega-3 (EPA/DHA) and hepatic PPAR-alpha/SREBP-1c regulation: Sekiya M, Osuga J et al.; Calder PC review series.", "refs"),
numBullet("Aflatoxin B1 and TP53 R249S mutation in HCC: Groopman JD et al.; IARC Monographs Vol. 100F.", "refs"),
numBullet("Wilson's disease dietary management: European Association for the Study of the Liver (EASL) Clinical Practice Guidelines on Wilson's Disease.", "refs"),
numBullet("HFE hemochromatosis dietary guidance: EASL Clinical Practice Guidelines: Haemochromatosis (2022).", "refs"),
numBullet("Mediterranean diet and liver fibrosis: Kontogianni MD et al.; Trovato FM et al.", "refs"),
numBullet("Gut-liver axis and HCC: Schwabe RF, Greten TF. Gut microbiome in cancer: mechanistic insights. Nat Rev Cancer. 2020.", "refs"),
numBullet("Time-restricted eating and hepatic lipid metabolism: Chaix A et al.; Wilkinson MJ et al. Cell Metab. 2020.", "refs"),
...spacer(2),
// ── FOOTER CALLOUT ───────────────────────────────────────────
callout("This protocol is Version 1.0 (July 2026). It should be reviewed against emerging literature annually or when new genotyping evidence becomes available. Prepared by the Nutrigenomics Clinical Team. All clinical decisions require qualified practitioner oversight.", LIGHT_GREEN, false, DARK_GREEN),
];
// ═══════════════════════════════════════════════════════════════════
// BUILD DOCUMENT
// ═══════════════════════════════════════════════════════════════════
const doc = new Document({
numbering: {
config: [
{
reference: "bullets",
levels: [{
level: 0,
format: LevelFormat.BULLET,
text: "\u2022",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 540, hanging: 360 } } }
}]
},
{
reference: "numbers",
levels: [{
level: 0,
format: LevelFormat.DECIMAL,
text: "%1.",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 540, hanging: 360 } } }
}]
},
{
reference: "refs",
levels: [{
level: 0,
format: LevelFormat.DECIMAL,
text: "%1.",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 540, hanging: 360 } } }
}]
}
]
},
styles: {
default: {
document: { run: { font: "Arial", size: 20, color: DARK_TEXT } }
},
paragraphStyles: [
{
id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 28, bold: true, font: "Arial", color: WHITE },
paragraph: { spacing: { before: 300, after: 120 }, outlineLevel: 0 }
},
{
id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 24, bold: true, font: "Arial", color: WHITE },
paragraph: { spacing: { before: 200, after: 80 }, outlineLevel: 1 }
}
]
},
sections: [{
properties: {
page: {
margin: { top: 1080, bottom: 1080, left: 1080, right: 1080 }
}
},
headers: {
default: new Header({
children: [
new Paragraph({
alignment: AlignmentType.RIGHT,
shading: { type: ShadingType.CLEAR, fill: DARK_GREEN },
children: [
new TextRun({ text: "Nutrigenomics Dietary Protocol — Liver Cancer Genetic Risk ", font: "Arial", size: 16, color: "CCCCCC", italics: true })
]
})
]
})
},
footers: {
default: new Footer({
children: [
new Paragraph({
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "Page ", font: "Arial", size: 16, color: "888888" }),
new TextRun({ children: [PageNumber.CURRENT], font: "Arial", size: 16, color: "888888" }),
new TextRun({ text: " | Version 1.0 | July 2026 | For Practitioner Use Only", font: "Arial", size: 16, color: "888888" })
]
})
]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/daytona/workspace/liver-cancer-protocol/Nutrigenomics_Liver_Cancer_Protocol.docx", buffer);
console.log("Document created successfully.");
});
cd /home/daytona/workspace/liver-cancer-protocol && node generate.js 2>&1
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/liver-cancer-protocol/Nutrigenomics_Liver_Cancer_Protocol.docx 2>&1
ls -lh /home/daytona/workspace/liver-cancer-protocol/Nutrigenomics_Liver_Cancer_Protocol.docx && python3 -c " import zipfile z = zipfile.ZipFile('/home/daytona/workspace/liver-cancer-protocol/Nutrigenomics_Liver_Cancer_Protocol.docx') print('Valid ZIP/DOCX - contents:', z.namelist()[:8]) "
Nutrigenomics Liver Cancer Protocol
Word Document · DOCX
| Section | Content |
|---|---|
| 1. Purpose and Scope | Framework overview, intended use, practitioner guidance |
| 2. Baseline Assessment | Full genotyping panel table (PNPLA3, HFE, ATP7B, FADS1/2, CYP1A2, GSTM1 etc.) + biochemistry checklist |
| 3. Core Dietary Framework | Mediterranean base, fructose restriction, omega-3 by genotype, coffee, cruciferous veg, antioxidants, vitamin D, gut microbiome - all with mechanisms |
| 4. Condition-Specific Modules | Separate clinical modules for Hemochromatosis, Wilson's Disease, and Alpha-1 Antitrypsin Deficiency |
| 5. Strict Avoidance List | Alcohol (zero tolerance), aflatoxin, liver fluke, charred meats, pesticides + contraindicated supplements table (kava, iron, comfrey, germander, high-dose EGCG) |
| 6. Weight and Metabolic Health | Visceral/intrahepatic fat targets, time-restricted eating, sarcopenic obesity, FTO variant guidance |
| 7. Sample Daily Eating Pattern | Full-day meal template with nutrigenomics rationale per meal |
| 8. Monitoring and Review | Review schedule table (baseline to annual) + MDT coordination roles |
| 9. Quick Reference Summary | Single-page at-a-glance table covering all domains - Prioritise vs Avoid |
| 10. Evidence Base | 12 key evidence citations underpinning the protocol |
Change the following recommendation for A CLIENT WITH HIGH GENETIC RISK OF LUNG CANCER : Eat cruciferous vegetables (broccoli, Brussels sprouts, cauliflower) regularly - sulforaphane supports lung detoxification enzymes Prioritize antioxidant-rich foods: berries, leafy greens, tomatoes (lycopene) Adequate vitamin D from food and safe sun exposure (low serum vitamin D is associated with worse lung outcomes) Do not take high-dose beta-carotene supplements - CARET and ATBC trials showed these increased lung cancer risk in smokers and asbestos-exposed individuals Take adequate folic acid in your diet.
Practitioner note: Implement after confirming GSTM1/GSTT1, MTHFR, VDR, BCO1, CYP1A1, and CYP2A6 genotype status. Baseline labs should include serum 25-OHD, homocysteine, serum folate, B12, and a full inflammatory marker panel. This framework is adjunctive to active medical surveillance and does not replace it.
write 10 recommendation and summerize above content
| # | Recommendation | Key Genotype | Action |
|---|---|---|---|
| 1 | Cruciferous vegetables 5-7x/week | GSTM1/GSTT1 null | Lightly steam + add raw mustard; higher dose if null variant |
| 2 | Mechanistic antioxidants | NQO1, CYP1A1 | Cooked tomato, green tea, dark berries, quercetin |
| 3 | Vitamin D to target 75-100 nmol/L | VDR FokI, GC | Test first; D3 supplement; recheck 6-monthly |
| 4 | No beta-carotene or carotenoid supplements | BCO1 variants | Whole-food carotenoids only; supplements are contraindicated |
| 5 | Precision folate — full methylation network | MTHFR C677T/A1298C | 5-MTHF form if variant; add B2, B12, B6, choline, betaine |
| 6 | Omega-3s 3x/week oily fish | FADS1/FADS2 | Algae-DHA if poor converter; targets bronchial inflammation |
| 7 | Curcumin + black pepper daily | CYP1A1 | In cooked meals with fat; inhibits PAH activation |
| 8 | Zero alcohol | ALDH2, CYP2E1 | Absolute; no threshold is safe for this risk profile |
| 9 | No processed meat; reduce dietary AGEs | CYP2A6 | Fish, legumes, eggs as protein base; low-temp cooking |
| 10 | Organic produce + environmental audit | CYP1A1, GSTM1 | Radon test; occupational review; cooking fume reduction |
These 10 recommendations shift the framework from generic dietary advice to a genotype-informed, mechanism-directed protocol. Implementation should follow confirmation of key variants (GSTM1/GSTT1, MTHFR, VDR, BCO1, CYP1A1, FADS1/2), baseline labs (25-OHD, homocysteine, B12, folate, inflammatory markers), and integration with the client's active medical surveillance programme.
uterineCancer Eat a plant-forward diet; high dietary fiber (reduces circulating estrogen via enterohepatic recirculation) Heavily limit your consumption of highly processed foods to support optimal metabolic, reproductive, and cellular health. Add soybean or soy products for soy isoflavones as it is found to be productive. Include whole grains (high glycemic index diets promote hyperinsulinemia, which drives endometrial proliferation) Limit red meat and saturated fat Include cruciferous vegetables and dark leafy greens
| # | Recommendation | Key Genotype | Mechanism |
|---|---|---|---|
| 1 | Plant-forward diet; 35-40g fibre/day; ground flaxseed daily | ESR1/ESR2, estrobolome | Reduces enterohepatic oestrogen reabsorption; lignan → enterolactone → ERα competition |
| 2 | Eliminate ultra-processed foods | IRS1, TCF7L2 | Blocks hyperinsulinaemia → IGF-1R → endometrial proliferation axis |
| 3 | Fermented soy 1 serving/day; test equol status | CYP19A1, UGT1A1 | Isoflavones as SERMs — benefit is equol-producer and aromatase-genotype dependent |
| 4 | Whole grains + legumes; low-GI pattern; TRE 14:10 | TCF7L2, PPARG | Reduces postprandial insulin; targets PI3K/AKT/mTOR endometrial pathway |
| 5 | Red meat max 1x/week; zero processed meat; EVOO as primary fat | IGF1R, HFE, CYP19A1 | Reduces IGF-1, haem iron oxidative stress, and aromatase-driven oestrogen synthesis |
| 6 | Cruciferous veg 5-7x/week; 2 cups dark leafy greens daily | CYP1B1, GSTM1, MTHFR | I3C/DIM shift oestrogen metabolism to protective 2-OHE1; sulforaphane NRF2; folate for MLH1 methylation |
| 7 | Maintain waist <80cm; target visceral fat | CYP19A1 | Adipose aromatase is primary post-menopausal oestrogen source |
| 8 | Daily fermented foods + prebiotic fibre | Estrobolome diversity | Suppresses beta-glucuronidase; reduces oestrogen reactivation in gut |
| 9 | Zero alcohol | CYP3A4, ALDH2 | Alcohol raises oestradiol, reduces SHBG, stimulates aromatase |
| 10 | Lynch syndrome module: folate, calcium/D, omega-3, zero alcohol | MLH1, MSH2, MSH6 | Preserves MMR gene methylation; COX-2 inhibition; calcium/D suppress epithelial proliferation |
Practitioner note: Priority genotypes to confirm before implementation: ESR1/ESR2, CYP1B1, CYP19A1, MTHFR, GSTM1/GSTT1, TCF7L2, IRS1, HFE, and MMR gene panel (MLH1, MSH2, MSH6, PMS2) for Lynch syndrome screening. Baseline labs: fasting insulin, HbA1c, HOMA-IR, serum oestradiol, SHBG, 25-OHD, homocysteine, ferritin. All recommendations are adjunctive to gynaecological surveillance and do not replace medical management.
Generate a Word document with the complete uterine cancer nutrigenomics protocol0 liners instructions for a client
mkdir -p /home/daytona/workspace/uterine-cancer-protocol && echo "ready"
~/uterine-cancer-protocol/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
Header, Footer, AlignmentType, HeadingLevel, BorderStyle, WidthType,
ShadingType, VerticalAlign, PageNumber, LevelFormat, UnderlineType,
PageBreak
} = require('docx');
const fs = require('fs');
// ── Colour palette ──────────────────────────────────────────────────
const PLUM = "6B2D5E"; // primary brand – uterine/women's health
const MID_PLUM = "9B4F8A"; // sub-headings
const ACCENT = "C77DBC"; // table header bg
const LIGHT_PINK = "FAE8F5"; // alt rows / callout bg
const SAGE = "4A7C59"; // "DO" positive highlights
const LIGHT_SAGE = "E8F5ED"; // positive callout bg
const DARK_TEXT = "1B1B1B";
const WHITE = "FFFFFF";
const WARN_RED = "C1121F";
const WARN_BG = "FFE8E8";
const GOLD = "B5860D"; // tip accent
// ── Helper: shaded paragraph (callout box) ──────────────────────────
function callout(text, bg = LIGHT_PINK, bold = false, color = DARK_TEXT) {
return new Paragraph({
shading: { type: ShadingType.CLEAR, fill: bg },
spacing: { before: 100, after: 100 },
indent: { left: 400, right: 400 },
children: [new TextRun({ text, bold, color, font: "Arial", size: 20 })]
});
}
// ── Helper: heading 1 (section banner) ─────────────────────────────
function h1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 320, after: 120 },
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({ text, bold: true, color: WHITE, font: "Arial", size: 30 })]
});
}
// ── Helper: heading 2 ───────────────────────────────────────────────
function h2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 200, after: 80 },
shading: { type: ShadingType.CLEAR, fill: MID_PLUM },
children: [new TextRun({ text, bold: true, color: WHITE, font: "Arial", size: 24 })]
});
}
// ── Helper: rec number banner ───────────────────────────────────────
function recBanner(num, title) {
return new Paragraph({
spacing: { before: 280, after: 80 },
shading: { type: ShadingType.CLEAR, fill: MID_PLUM },
children: [
new TextRun({ text: ` RECOMMENDATION ${num} `, bold: true, color: ACCENT, font: "Arial", size: 20 }),
new TextRun({ text: ` ${title}`, bold: true, color: WHITE, font: "Arial", size: 22 })
]
});
}
// ── Helper: body paragraph ──────────────────────────────────────────
function body(text, bold = false, color = DARK_TEXT) {
return new Paragraph({
spacing: { before: 60, after: 60 },
children: [new TextRun({ text, bold, color, font: "Arial", size: 20 })]
});
}
// ── Helper: mixed-format body (label + detail) ──────────────────────
function labelBody(label, detail, labelColor = PLUM) {
return new Paragraph({
spacing: { before: 60, after: 60 },
children: [
new TextRun({ text: label + " ", bold: true, color: labelColor, font: "Arial", size: 20 }),
new TextRun({ text: detail, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
// ── Helper: bullet ──────────────────────────────────────────────────
function bullet(label, detail, warn = false) {
const lc = warn ? WARN_RED : PLUM;
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [
new TextRun({ text: label + ": ", bold: true, color: lc, font: "Arial", size: 20 }),
new TextRun({ text: detail, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
function plainBullet(text, color = DARK_TEXT) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, font: "Arial", size: 20, color })]
});
}
function subBullet(text) {
return new Paragraph({
numbering: { reference: "subbullets", level: 0 },
spacing: { before: 30, after: 30 },
children: [new TextRun({ text, font: "Arial", size: 19, color: DARK_TEXT })]
});
}
// ── Helper: DO / AVOID pill labels ──────────────────────────────────
function doBullet(text) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [
new TextRun({ text: "DO: ", bold: true, color: SAGE, font: "Arial", size: 20 }),
new TextRun({ text, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
function avoidBullet(text) {
return new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { before: 40, after: 40 },
children: [
new TextRun({ text: "AVOID: ", bold: true, color: WARN_RED, font: "Arial", size: 20 }),
new TextRun({ text, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
// ── Helper: tip box ─────────────────────────────────────────────────
function tip(text) {
return new Paragraph({
shading: { type: ShadingType.CLEAR, fill: "FFF8E1" },
spacing: { before: 80, after: 80 },
indent: { left: 360, right: 360 },
children: [
new TextRun({ text: "Practical Tip: ", bold: true, color: GOLD, font: "Arial", size: 20 }),
new TextRun({ text, font: "Arial", size: 20, color: DARK_TEXT })
]
});
}
// ── Helper: spacer ──────────────────────────────────────────────────
function spacer(n = 1) {
return Array(n).fill(null).map(() =>
new Paragraph({ spacing: { before: 40, after: 40 }, children: [new TextRun("")] })
);
}
// ── Table helpers ───────────────────────────────────────────────────
const thinBorder = { style: BorderStyle.SINGLE, size: 4, color: "CCCCCC" };
const tableBorders = { top: thinBorder, bottom: thinBorder, left: thinBorder, right: thinBorder, insideHorizontal: thinBorder, insideVertical: thinBorder };
function tc(text, bg = WHITE, bold = false, color = DARK_TEXT, width = null) {
const opts = {
shading: { type: ShadingType.CLEAR, fill: bg },
verticalAlign: VerticalAlign.CENTER,
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({ children: [new TextRun({ text, bold, color, font: "Arial", size: 18 })] })]
};
if (width) opts.width = { size: width, type: WidthType.DXA };
return new TableCell(opts);
}
// ════════════════════════════════════════════════════════════════════
// DOCUMENT CONTENT
// ════════════════════════════════════════════════════════════════════
const children = [
// ── COVER ────────────────────────────────────────────────────────
new Paragraph({
spacing: { before: 600, after: 60 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({ text: "YOUR PERSONALISED", bold: true, color: ACCENT, font: "Arial", size: 28 })]
}),
new Paragraph({
spacing: { before: 0, after: 60 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({ text: "NUTRIGENOMICS DIETARY PROTOCOL", bold: true, color: WHITE, font: "Arial", size: 44 })]
}),
new Paragraph({
spacing: { before: 0, after: 60 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({ text: "Uterine (Endometrial) Cancer Genetic Risk", bold: false, color: ACCENT, font: "Arial", size: 28, italics: true })]
}),
new Paragraph({
spacing: { before: 40, after: 600 },
alignment: AlignmentType.CENTER,
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({ text: "10 Evidence-Informed Recommendations | Version 1.0 | 2026", color: "DDBBDD", font: "Arial", size: 20 })]
}),
...spacer(1),
// ── IMPORTANT NOTE ───────────────────────────────────────────────
callout(
"IMPORTANT: This document is your personal dietary guidance prepared by your nutrigenomics practitioner. It is based on your genetic profile and health history. Please read all 10 recommendations carefully and bring any questions to your next appointment. This plan works alongside — not instead of — your medical care team.",
WARN_BG, true, WARN_RED
),
...spacer(1),
// ── INTRODUCTION ─────────────────────────────────────────────────
h1("ABOUT THIS PLAN"),
body("You have a higher-than-average genetic risk of uterine (endometrial) cancer. This does not mean you will develop cancer — it means that the right lifestyle choices, especially what you eat, can make a meaningful difference in reducing your risk."),
...spacer(1),
body("This plan is built around a field called nutrigenomics — the science of how your genes and your food interact. Your specific gene variants affect how your body processes hormones (especially oestrogen), manages blood sugar, handles inflammation, and repairs DNA. Each recommendation below is tailored to these pathways."),
...spacer(1),
callout("Your single most important actions are: control your blood sugar and insulin levels, reduce circulating oestrogen through diet, and protect your cells from inflammation. These three goals run through every recommendation below.", LIGHT_SAGE, true, SAGE),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 1
// ════════════════════════════════════════════════════════════════
recBanner("1", "Build Your Diet Around Plants and High-Fibre Foods"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Your body recycles oestrogen — it circulates it through your liver, processes it, and then your gut decides whether to flush it out or absorb it back into your bloodstream. A high-fibre diet helps your body flush excess oestrogen out rather than reabsorbing it. This is one of the most direct dietary ways to reduce oestrogen-driven stimulation of the uterine lining."),
...spacer(1),
body("What to do:", true, PLUM),
doBullet("Aim for 35-40 grams of dietary fibre every day from a wide variety of plant foods"),
doBullet("Add 1-2 tablespoons of ground flaxseed daily — flaxseed is the richest food source of lignans, which are converted by your gut into compounds that gently compete with oestrogen at its receptors, reducing its stimulating effect on the uterine lining. Always use ground (not whole) flaxseed — whole seeds pass through undigested"),
doBullet("Base every meal on vegetables, legumes (lentils, chickpeas, black beans), and whole grains"),
doBullet("Eat a wide variety of vegetables every day — aim for at least 5 different coloured vegetables"),
avoidBullet("Low-fibre, white-carbohydrate meals (white bread, white rice, pasta, pastries) — these provide no fibre benefit and spike your blood sugar"),
...spacer(1),
tip("Sprinkle ground flaxseed into your morning porridge, yogurt, or smoothie. It has a mild nutty flavour and is easy to use daily without noticing it."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 2
// ════════════════════════════════════════════════════════════════
recBanner("2", "Cut Out Ultra-Processed Foods Completely"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Ultra-processed foods (UPFs) harm you through three separate pathways that are all directly linked to your uterine cancer risk:"),
plainBullet("They spike your blood sugar and insulin, which stimulates the lining of your uterus to grow"),
plainBullet("They are low in fibre, so they allow oestrogen to be reabsorbed rather than flushed out"),
plainBullet("They contain emulsifiers, artificial additives, and oxidised fats that cause chronic inflammation — the background fire that makes cells more likely to turn cancerous"),
...spacer(1),
body("How to identify ultra-processed foods:", true, PLUM),
body("If a food has more than 5 ingredients on its label, contains emulsifiers (e.g. carboxymethylcellulose, polysorbate-80), synthetic flavourings, colourings, or hydrogenated fats — it is ultra-processed."),
...spacer(1),
body("Common UPFs to remove from your diet:", true, PLUM),
avoidBullet("Packaged breakfast cereals, flavoured instant porridge"),
avoidBullet("Deli meats, sliced processed meats, sausages, hot dogs, bacon"),
avoidBullet("Packaged snack bars, biscuits, crackers, crisps"),
avoidBullet("Flavoured yogurts with added sugars and thickeners"),
avoidBullet("Fast food, takeaway meals, frozen ready meals"),
avoidBullet("Soft drinks, flavoured waters, energy drinks, fruit juice"),
...spacer(1),
tip("A simple rule: if it comes in a packet with more than 5 ingredients, put it back. Real food — vegetables, eggs, fish, legumes, whole grains — has nothing to hide on a label."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 3
// ════════════════════════════════════════════════════════════════
recBanner("3", "Eat Soy Foods — But Choose the Right Form and the Right Amount"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Soy contains isoflavones — plant compounds that interact with oestrogen receptors in a complex way. They are not simply 'plant oestrogens' that raise your oestrogen levels. When eaten in the right food form, they actually compete with your body's own oestrogen at its receptors, producing a weaker, less stimulating effect. This can be protective for the uterine lining."),
...spacer(1),
body("However, this benefit depends on two important factors:", true, PLUM),
plainBullet("Whether your gut bacteria can convert soy to its active protective form (equol) — only about 30-50% of people can do this. Your practitioner can test this with a simple urine test after a soy meal"),
plainBullet("The form of soy you eat — fermented soy is significantly better absorbed and more beneficial than unfermented soy"),
...spacer(1),
body("Best soy choices:", true, PLUM),
doBullet("Miso (fermented soy paste) — use in soups, dressings, and marinades"),
doBullet("Tempeh (fermented soy cake) — excellent protein source, higher isoflavone bioavailability"),
doBullet("Natto (fermented soybeans) — highest isoflavone content; also rich in vitamin K2"),
doBullet("Plain firm tofu — 1 serving/day is appropriate"),
doBullet("Unsweetened soy milk — 1 cup/day maximum"),
avoidBullet("Soy isoflavone supplements or tablets — concentrated isoflavone supplements have not been proven safe for the uterine lining and may have the opposite effect at high doses. Do not take these without explicit approval from your practitioner"),
avoidBullet("Processed soy products (soy protein bars, soy snacks with additives) — these are ultra-processed and lose the benefit"),
...spacer(1),
tip("Add a tablespoon of miso to warm (not boiling) water with some spring onions for an easy daily miso broth. It takes 2 minutes and gives you a daily dose of beneficial isoflavones and gut-friendly probiotics."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 4
// ════════════════════════════════════════════════════════════════
recBanner("4", "Control Your Blood Sugar — Every Single Meal"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("This is one of the most important recommendations in this entire plan. High blood sugar leads to high insulin, and high insulin is a direct signal to the cells lining your uterus to grow and divide. This is the most well-established dietary pathway to endometrial cancer — and it is highly controllable through what and when you eat."),
...spacer(1),
body("Your food rules for blood sugar control:", true, PLUM),
doBullet("Choose whole grains ONLY — oats and barley are the best choices because they contain beta-glucan, a specific fibre that slows glucose absorption. Also eat rye, quinoa, and brown rice in preference to white versions"),
doBullet("Make legumes your carbohydrate base — lentils, chickpeas, black beans, kidney beans. They have a very low glycaemic impact AND provide fibre AND protein together"),
doBullet("Combine every carbohydrate portion with protein and a healthy fat — this blunts the blood sugar rise. Never eat carbohydrates alone as a meal or snack"),
doBullet("Eat within a 10-hour window if possible (e.g. breakfast at 8am, finish dinner by 6pm) — this style of eating (called time-restricted eating) improves insulin sensitivity even without changing what you eat"),
avoidBullet("White bread, white rice, white pasta, instant noodles, crackers — these spike insulin rapidly"),
avoidBullet("Eating carbohydrate-only meals or snacks (e.g. toast alone, rice cakes, fruit juice)"),
avoidBullet("Late-night eating — your body is less able to manage blood sugar after 8pm, and eating late increases fat storage around the abdomen"),
...spacer(1),
callout("Target numbers to ask your doctor to test: Fasting insulin (aim below 8 mIU/L), HbA1c (aim below 5.4%), HOMA-IR (aim below 1.5). These numbers will tell you and your practitioner how well your blood sugar and insulin are being managed.", LIGHT_SAGE, false, SAGE),
...spacer(1),
tip("Start every meal with your vegetables and protein first, then eat your carbohydrate portion last. Studies show this simple sequence reduces the blood sugar spike of a meal by 30-40%."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 5
// ════════════════════════════════════════════════════════════════
recBanner("5", "Dramatically Reduce Red Meat and Replace Saturated Fat"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Red and processed meat raises your uterine cancer risk through three separate pathways: it stimulates IGF-1 (a growth hormone that acts directly on the uterine lining), it contributes haem iron which generates harmful free radicals in reproductive tissue, and saturated fat from meat and dairy increases oestrogen production in your body fat. For a client with your genetic risk profile, these three effects compound each other."),
...spacer(1),
body("Your targets:", true, PLUM),
doBullet("Red meat (beef, lamb, pork): maximum 1 small serving per week of UNPROCESSED lean red meat"),
doBullet("Replace red meat with: oily fish 3x/week (salmon, sardines, mackerel — see Recommendation 6), eggs daily, legumes daily, and poultry 2-3x/week"),
doBullet("Use extra-virgin olive oil as your primary cooking fat — it is anti-inflammatory, does not stimulate oestrogen production, and is protective for the gut-hormone axis"),
avoidBullet("Processed meat entirely — bacon, sausages, salami, ham, deli meats, hot dogs. These contain nitrosamines (cancer-promoting chemicals) on top of the three pathways above. There is no safe amount for your risk profile"),
avoidBullet("Cooking methods that create char — barbecuing, frying at high heat. Use baking, poaching, steaming, or slow cooking instead"),
avoidBullet("Butter, cream, coconut oil, and palm oil as regular cooking fats — replace with extra-virgin olive oil, avocado oil, or a small amount of nut butter"),
...spacer(1),
tip("A practical protein rotation that avoids red meat: Monday — lentil soup, Tuesday — baked salmon, Wednesday — egg omelette with vegetables, Thursday — chicken with quinoa, Friday — chickpea curry, Saturday — sardines on rye, Sunday — tofu stir-fry. This gives you complete protein, omega-3 fats, and iron without the risks of red meat."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 6
// ════════════════════════════════════════════════════════════════
recBanner("6", "Eat Cruciferous Vegetables and Dark Leafy Greens Every Day"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("These two vegetable groups are your most powerful dietary tools against oestrogen-driven cancer — and they work through completely different, complementary mechanisms."),
...spacer(1),
body("Cruciferous vegetables (broccoli, kale, Brussels sprouts, cabbage, cauliflower, bok choy, rocket, watercress):", true, PLUM),
plainBullet("Contain indole-3-carbinol (I3C) and diindolylmethane (DIM), which guide your body to break oestrogen down into a SAFER form (2-hydroxyestrone) rather than the more harmful form (16-alpha-hydroxyestrone) that stimulates the uterine lining"),
plainBullet("Contain sulforaphane, which activates your body's own detoxification enzymes in the liver, helping clear harmful hormone metabolites"),
plainBullet("Target: 5-7 servings per week minimum"),
plainBullet("Preparation matters: lightly steam for 5 minutes maximum, or eat raw. Boiling destroys up to 60% of the active compounds. Add a pinch of mustard powder or raw radish to lightly cooked broccoli — this restores the enzyme needed to release the active compound"),
...spacer(1),
body("Dark leafy greens (spinach, rocket, Swiss chard, kale, watercress):", true, PLUM),
plainBullet("Rich in folate — essential for maintaining the methylation 'switches' on your DNA that keep cancer-suppressing genes turned ON"),
plainBullet("Provide magnesium — a mineral that your insulin receptors need to work properly; deficiency amplifies blood sugar problems"),
plainBullet("Rich in antioxidants that protect the uterine lining from oxidative damage"),
plainBullet("Target: at least 2 large handfuls (2 cups) of dark leafy greens daily"),
...spacer(1),
tip("A quick daily green habit: add a large handful of baby spinach or rocket to every meal — in eggs, on top of soup, alongside fish, or in a smoothie. It has almost no taste impact but delivers folate, magnesium, and protective phytochemicals consistently."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 7
// ════════════════════════════════════════════════════════════════
recBanner("7", "Support Your Gut Bacteria — Your Hormone Regulators"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Your gut bacteria do far more than digest food — they directly regulate how much oestrogen circulates in your body. A group of gut bacteria called the 'estrobolome' contains enzymes that can either deactivate oestrogen (keeping it low) or reactivate it and send it back into your bloodstream (keeping it high). A healthy, diverse gut microbiome keeps the reactivating bacteria in check. An unhealthy, imbalanced gut microbiome allows oestrogen reactivation — meaning even a good diet may not lower your oestrogen as effectively as it should."),
...spacer(1),
body("Two daily habits that directly improve your estrobolome:", true, PLUM),
doBullet("Fermented foods every day — these introduce beneficial bacteria that compete with and suppress the oestrogen-reactivating species. Choose from: live-culture yogurt (plain, unsweetened), kefir, kimchi, sauerkraut, miso, or kombucha. Aim for at least one serving daily"),
doBullet("Prebiotic fibre every day — this FEEDS your beneficial bacteria so they thrive and crowd out the harmful ones. Best prebiotic foods: garlic, leeks, onions, asparagus, Jerusalem artichoke, slightly green banana, oats, chicory root. Include at least 2-3 of these daily"),
avoidBullet("Antibiotics unless medically necessary — a single course can disrupt gut bacteria diversity for months. Always discuss with your doctor and follow up any necessary course with 4 weeks of daily fermented food and prebiotic fibre"),
avoidBullet("Artificial sweeteners (aspartame, sucralose, saccharin) — these disrupt gut bacteria balance and may paradoxically worsen blood sugar regulation"),
...spacer(1),
tip("A gut-supporting daily starter: plain kefir or live yogurt with ground flaxseed, berries, and a sliced banana. This single breakfast delivers probiotics, prebiotics, lignans, and antioxidants together — all four gut-hormone benefits in one bowl."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 8
// ════════════════════════════════════════════════════════════════
recBanner("8", "Eat Oily Fish 3 Times Per Week for Anti-Inflammatory Omega-3s"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Chronic low-grade inflammation is a background driver of endometrial cancer — it creates an environment where abnormal cells can survive and grow. Omega-3 fatty acids (EPA and DHA) from oily fish are among the most effective dietary anti-inflammatory tools available. They reduce the production of inflammatory chemicals (particularly prostaglandin E2) in the uterine lining itself, making the tissue less hospitable to cancer development."),
...spacer(1),
body("Your omega-3 plan:", true, PLUM),
doBullet("Eat oily fish 3 times per week: salmon, sardines, mackerel, anchovies, herring, or trout are all excellent choices"),
doBullet("If you do not eat fish, discuss an algae-derived DHA supplement with your practitioner — algae oil is the original source that fish get their omega-3 from and is suitable for vegetarians and vegans"),
doBullet("Include plant omega-3 sources daily as well: walnuts, ground flaxseed, chia seeds — these provide ALA (a precursor). Note: your body's ability to convert ALA to the active forms (EPA/DHA) is limited, so fish or algae oil remains the primary source"),
avoidBullet("Regularly eating omega-6-heavy oils (sunflower, corn, soybean oils in large amounts) — these compete with omega-3s and promote inflammation. Use olive oil as your primary oil and keep omega-6 vegetable oils to a minimum"),
...spacer(1),
tip("Tinned sardines or mackerel in olive oil (not brine) are one of the most affordable and convenient ways to reach your omega-3 target. A tin on rye crackers with rocket and lemon takes under 5 minutes and delivers a full omega-3 serving."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 9
// ════════════════════════════════════════════════════════════════
recBanner("9", "Maintain a Healthy Body Weight — Especially Around Your Middle"),
...spacer(1),
body("Why this matters for you:", true, PLUM),
body("Excess body fat — particularly around the abdomen — is the single strongest lifestyle-related risk factor for uterine cancer. This is because body fat tissue (especially visceral fat around your organs) is a factory for oestrogen. It contains an enzyme called aromatase that converts other hormones into oestrogen. The more excess body fat you carry, the more oestrogen your body produces independently of your ovaries. For someone with your genetic risk profile, this is an important and modifiable risk factor."),
...spacer(1),
body("Your weight and waist targets:", true, PLUM),
doBullet("Waist circumference: aim below 80 cm (women) — this is a better measure of your cancer-relevant fat than your weight or BMI alone"),
doBullet("If weight loss is needed, a modest loss of 5-7% of body weight measurably reduces oestrogen levels and lowers endometrial cancer risk — you do not need to reach an 'ideal' BMI to benefit"),
doBullet("Focus on reducing abdominal fat specifically by following the dietary pattern in this plan (low-GI, anti-inflammatory, high-fibre) rather than calorie restriction alone"),
doBullet("Include resistance exercise 2x/week (weights, resistance bands, or bodyweight exercises) — muscle tissue improves insulin sensitivity and helps your body manage blood sugar better than cardiovascular exercise alone"),
doBullet("Maintain your muscle mass — being 'skinny-fat' (low muscle, high fat proportion) carries similar risks to being overweight. Protein adequacy and resistance training together protect muscle"),
...spacer(1),
callout("You do not need to be at a 'perfect' weight to dramatically reduce your risk. Research shows that even a 5% reduction in body weight in overweight women reduces circulating oestrogen levels measurably within weeks.", LIGHT_SAGE, false, SAGE),
...spacer(1),
tip("Walking 10 minutes after each main meal is one of the most effective ways to lower postprandial blood sugar without any equipment or gym membership. Three 10-minute walks per day equals 30 minutes of activity and consistently reduces daily insulin exposure."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// RECOMMENDATION 10
// ════════════════════════════════════════════════════════════════
recBanner("10", "Avoid Alcohol Completely and Optimise Vitamin D"),
...spacer(1),
body("PART A — Alcohol: Zero Tolerance", true, WARN_RED),
...spacer(1),
callout("There is no safe level of alcohol for your risk profile. Even one drink per day is associated with an 11-22% increased risk of endometrial cancer in research studies.", WARN_BG, true, WARN_RED),
...spacer(1),
body("Why alcohol is especially harmful for you:", true, PLUM),
plainBullet("Alcohol directly raises circulating oestradiol by reducing the liver's ability to clear oestrogen from the bloodstream"),
plainBullet("It reduces SHBG (sex hormone binding globulin) — the protein that 'holds' oestrogen in an inactive form. Lower SHBG means more free, active oestrogen reaching the uterine lining"),
plainBullet("Alcohol depletes folate — the same B vitamin that keeps your DNA protection genes switched ON"),
plainBullet("It disrupts gut bacteria, worsening the estrobolome imbalance described in Recommendation 7"),
...spacer(1),
body("PART B — Vitamin D: Test Your Levels and Reach Your Target", true, PLUM),
...spacer(1),
body("Vitamin D is not just a bone vitamin — it plays an active role in regulating cell growth and immune surveillance in reproductive tissues. Low vitamin D is consistently associated with worse outcomes in uterine and other hormone-related cancers."),
...spacer(1),
doBullet("Ask your doctor to test your serum 25-hydroxyvitamin D level. Your target range is 75-100 nmol/L"),
doBullet("Best food sources: salmon, sardines, mackerel, egg yolks, fortified unsweetened plant milk"),
doBullet("Safe sun exposure: 15-20 minutes of midday sun on arms and legs (without sunscreen, before burning) helps, but diet and supplementation are more reliable sources, especially in winter or at higher latitudes"),
doBullet("Supplementation: if your level is below 75 nmol/L, discuss a vitamin D3 supplement (typically 1000-2000 IU/day) with your practitioner. Retest after 3 months"),
...spacer(1),
tip("Take your vitamin D supplement with your largest meal of the day — vitamin D is fat-soluble and absorbs best alongside a meal containing olive oil, nuts, avocado, or fish."),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// SPECIAL SECTION — LYNCH SYNDROME
// ════════════════════════════════════════════════════════════════
h1("IF YOU CARRY A LYNCH SYNDROME GENE (MLH1, MSH2, MSH6, PMS2)"),
body("Lynch syndrome is an inherited condition that significantly raises the risk of uterine cancer (up to 60% lifetime risk). If your genetic report confirms a Lynch syndrome variant, the following additional guidance applies on top of all 10 recommendations above:"),
...spacer(1),
bullet("Folate is non-negotiable", "The gene most often silenced in Lynch-related endometrial cancer (MLH1) is switched off by a process that requires adequate folate (vitamin B9) to prevent. Keep your folate status high through dark leafy greens, lentils, asparagus, and avocado daily. Discuss 5-MTHF supplementation with your practitioner if you have an MTHFR gene variant"),
bullet("Calcium and Vitamin D together", "Research in Lynch syndrome carriers specifically shows that calcium (from dairy, fortified plant milk, sardines with bones, leafy greens) combined with adequate vitamin D reduces the growth stimulus on reproductive and bowel epithelial cells. These are complementary and both are needed"),
bullet("Anti-inflammatory foods are your daily medicine", "Turmeric with black pepper (curcumin), green tea (EGCG), berries (anthocyanins), and oily fish (omega-3) all suppress COX-2-driven inflammation, which is one of the key pathways through which Lynch syndrome promotes tumour development"),
bullet("Alcohol: absolute zero", "Acetaldehyde (the toxic breakdown product of alcohol) directly damages the mismatch repair proteins that your Lynch syndrome variant already partially compromises. Even very small amounts of alcohol are mechanistically harmful for Lynch carriers — this is not about risk statistics but about direct molecular damage"),
bullet("Regular screening is essential", "Diet is a powerful risk-modifying tool but cannot substitute for regular gynaecological surveillance. Ensure you are on an appropriate endometrial surveillance programme with your gynaecology team"),
...spacer(1),
// ════════════════════════════════════════════════════════════════
// FOODS AT A GLANCE TABLE
// ════════════════════════════════════════════════════════════════
h1("YOUR QUICK GUIDE — FOODS TO EAT AND FOODS TO AVOID"),
...spacer(1),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Category", PLUM, true, WHITE, 2000),
tc("EAT FREELY / PRIORITISE", SAGE, true, WHITE, 3513),
tc("AVOID / ELIMINATE", WARN_RED, true, WHITE, 3513)
]}),
new TableRow({ children: [
tc("Vegetables", LIGHT_PINK, true),
tc("Broccoli, kale, Brussels sprouts, spinach, rocket, cabbage, cauliflower, bok choy, colourful vegetables — daily", LIGHT_PINK),
tc("No specific vegetables to avoid — but limit starchy vegetables (potato, corn) as carbohydrate portions", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Fruits"),
tc("Berries (blueberries, strawberries, raspberries), citrus, kiwi, apple — 1-2 servings/day"),
tc("Fruit juice (all types), dried fruit, high-sugar tropical fruits in excess")
]}),
new TableRow({ children: [
tc("Grains / Carbs", LIGHT_PINK, true),
tc("Oats, barley, rye, quinoa, lentils, chickpeas, brown rice — whole grains only", LIGHT_PINK),
tc("White bread, white rice, white pasta, pastries, cakes, crackers, breakfast cereals", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Protein"),
tc("Oily fish 3x/week, eggs daily, legumes daily, tofu/tempeh/miso daily, poultry 2-3x/week"),
tc("Processed meat (bacon, salami, ham, sausages) — eliminate. Red meat max 1x/week")
]}),
new TableRow({ children: [
tc("Fats", LIGHT_PINK, true),
tc("Extra-virgin olive oil (primary cooking fat), avocado, walnuts, almonds, ground flaxseed, chia seeds", LIGHT_PINK),
tc("Butter, cream, coconut oil as regular fats; processed seed oils (sunflower, corn) in excess", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Drinks"),
tc("Water (primary), green tea 2-3 cups/day, black coffee (unsweetened, up to 3 cups), herbal teas, plain kefir"),
tc("Alcohol (ALL types — zero), soft drinks, fruit juice, flavoured coffees with syrups, energy drinks")
]}),
new TableRow({ children: [
tc("Soy", LIGHT_PINK, true),
tc("Miso, tempeh, natto, plain tofu (1 serving/day), unsweetened soy milk (1 cup/day)", LIGHT_PINK),
tc("Soy isoflavone supplements/tablets (without practitioner approval), processed soy snack bars", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Fermented Foods"),
tc("Live-culture yogurt (plain), kefir, kimchi, sauerkraut, miso, kombucha — at least 1 serving daily"),
tc("Pasteurised fermented foods with no live cultures (most supermarket varieties) — check label for 'live cultures'")
]}),
new TableRow({ children: [
tc("Supplements", LIGHT_PINK, true),
tc("Vitamin D3 (to target 75-100 nmol/L — test first); algae-based DHA if no fish; discuss 5-MTHF if MTHFR variant", LIGHT_PINK),
tc("Soy isoflavone supplements, high-dose oestrogen-like supplements, iron supplements without confirmed deficiency, kava, comfrey", LIGHT_PINK)
]}),
]
}),
...spacer(2),
// ════════════════════════════════════════════════════════════════
// DAILY SAMPLE PLAN
// ════════════════════════════════════════════════════════════════
h1("SAMPLE DAY OF EATING"),
body("This is an example only — adapt to your food preferences and cultural foods. The key is that every meal contains fibre, protein, and a healthy fat together, and that your total day is built around whole, unprocessed plant foods."),
...spacer(1),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Meal", PLUM, true, WHITE, 1400),
tc("What to Eat", PLUM, true, WHITE, 4113),
tc("Why It Helps", PLUM, true, WHITE, 3513)
]}),
new TableRow({ children: [
tc("Breakfast", LIGHT_PINK),
tc("Plain kefir or live yogurt + 1 tbsp ground flaxseed + mixed berries + walnuts + green tea", LIGHT_PINK),
tc("Probiotics (estrobolome support), lignans (oestrogen modulation), anthocyanins, omega-3 ALA, EGCG", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Mid-Morning"),
tc("Apple + 10-12 almonds OR small bowl of oats with cinnamon"),
tc("Low-GI sustained energy; no insulin spike; fibre; magnesium")
]}),
new TableRow({ children: [
tc("Lunch", LIGHT_PINK),
tc("Large mixed salad: rocket, spinach, red onion, tomatoes, cucumber, chickpeas, tinned sardines + EVOO and lemon dressing + rye crispbread", LIGHT_PINK),
tc("Folate, omega-3, quercetin, lycopene, fibre, protein — core anti-oestrogen meal", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Afternoon"),
tc("Miso broth with spring onions + handful of pumpkin seeds OR live yogurt"),
tc("Isoflavones (gut-fermented), zinc, probiotics")
]}),
new TableRow({ children: [
tc("Dinner", LIGHT_PINK),
tc("Lightly steamed broccoli + baked salmon + lentil or quinoa base + garlic and olive oil + side of kimchi", LIGHT_PINK),
tc("I3C/DIM (oestrogen metabolism shift), EPA/DHA, low-GI carb, allicin, probiotic support", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Evening"),
tc("Herbal tea (chamomile or green tea) + small square of dark chocolate (85%+ cocoa) if desired"),
tc("Anti-inflammatory flavonoids; no blood sugar impact; calming without alcohol")
]}),
]
}),
...spacer(2),
// ════════════════════════════════════════════════════════════════
// MONITORING
// ════════════════════════════════════════════════════════════════
h1("WHAT TO MONITOR — TESTS TO DISCUSS WITH YOUR DOCTOR"),
...spacer(1),
new Table({
width: { size: 9026, type: WidthType.DXA },
borders: tableBorders,
rows: [
new TableRow({ children: [
tc("Test", PLUM, true, WHITE, 3000),
tc("Why", PLUM, true, WHITE, 3000),
tc("Target / Frequency", PLUM, true, WHITE, 3026)
]}),
new TableRow({ children: [
tc("Serum 25-OHD (Vitamin D)", LIGHT_PINK),
tc("Immune surveillance; cell growth regulation in endometrium", LIGHT_PINK),
tc("Target: 75-100 nmol/L | Every 6 months", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Fasting insulin and HbA1c"),
tc("Monitors insulin-driven endometrial stimulation — your key metabolic risk pathway"),
tc("Fasting insulin <8; HbA1c <5.4% | Every 6 months")
]}),
new TableRow({ children: [
tc("HOMA-IR", LIGHT_PINK),
tc("Measures insulin resistance — the root cause of the insulin-endometrium pathway", LIGHT_PINK),
tc("Target below 1.5 | Annually", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Serum oestradiol and SHBG"),
tc("Directly measures your oestrogen load and binding capacity — tracks dietary response"),
tc("With your gynaecology review | Annually")
]}),
new TableRow({ children: [
tc("Serum folate and homocysteine", LIGHT_PINK),
tc("Methylation cycle health — protects DNA repair gene expression (MLH1)", LIGHT_PINK),
tc("Homocysteine target <10 umol/L | Annually", LIGHT_PINK)
]}),
new TableRow({ children: [
tc("Waist circumference"),
tc("Best proxy for visceral fat — direct oestrogen synthesis risk marker"),
tc("Target below 80 cm | Every 3 months at home")
]}),
]
}),
...spacer(2),
// ════════════════════════════════════════════════════════════════
// CLOSING NOTE
// ════════════════════════════════════════════════════════════════
callout(
"Remember: having a genetic risk does not mean cancer is inevitable. These 10 recommendations give you real, evidence-based tools to lower your risk through food and lifestyle. Every positive change you make compounds over time. Start with the recommendations that feel most achievable, and build from there. Your next review appointment is an opportunity to discuss progress, adjust targets, and review your test results together.",
LIGHT_SAGE, false, SAGE
),
...spacer(1),
callout(
"This protocol is prepared for your personal use by your nutrigenomics practitioner. It should not be shared as general medical advice. Version 1.0 | 2026 | For review annually or when new genetic information becomes available.",
LIGHT_PINK, false, MID_PLUM
),
];
// ════════════════════════════════════════════════════════════════════
// BUILD DOCUMENT
// ════════════════════════════════════════════════════════════════════
const doc = new Document({
numbering: {
config: [
{
reference: "bullets",
levels: [{
level: 0, format: LevelFormat.BULLET, text: "\u2022",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 540, hanging: 360 } } }
}]
},
{
reference: "subbullets",
levels: [{
level: 0, format: LevelFormat.BULLET, text: "\u25E6",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 900, hanging: 360 } } }
}]
}
]
},
styles: {
default: {
document: { run: { font: "Arial", size: 20, color: DARK_TEXT } }
},
paragraphStyles: [
{
id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 30, bold: true, font: "Arial", color: WHITE },
paragraph: { spacing: { before: 320, after: 120 }, outlineLevel: 0 }
},
{
id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
run: { size: 24, bold: true, font: "Arial", color: WHITE },
paragraph: { spacing: { before: 200, after: 80 }, outlineLevel: 1 }
}
]
},
sections: [{
properties: {
page: { margin: { top: 960, bottom: 960, left: 1000, right: 1000 } }
},
headers: {
default: new Header({
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
shading: { type: ShadingType.CLEAR, fill: PLUM },
children: [new TextRun({
text: " Nutrigenomics Protocol — Uterine Cancer Genetic Risk | Personal & Confidential ",
font: "Arial", size: 16, color: "DDBBDD", italics: true
})]
})]
})
},
footers: {
default: new Footer({
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "Page ", font: "Arial", size: 16, color: "888888" }),
new TextRun({ children: [PageNumber.CURRENT], font: "Arial", size: 16, color: "888888" }),
new TextRun({ text: " | Uterine Cancer Nutrigenomics Protocol | Version 1.0 | 2026", font: "Arial", size: 16, color: "888888" })
]
})]
})
},
children
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync(
"/home/daytona/workspace/uterine-cancer-protocol/Uterine_Cancer_Nutrigenomics_Protocol_Client.docx",
buffer
);
console.log("Document created successfully.");
});
cd /home/daytona/workspace/uterine-cancer-protocol && node generate.js 2>&1
python3 -c " import zipfile, os path = '/home/daytona/workspace/uterine-cancer-protocol/Uterine_Cancer_Nutrigenomics_Protocol_Client.docx' size = os.path.getsize(path) z = zipfile.ZipFile(path) print(f'Valid DOCX | Size: {size/1024:.1f} KB') print('Contents:', z.namelist()[:8]) "
Uterine Cancer Nutrigenomics Protocol Client
Word Document · DOCX
| Section | Content |
|---|---|
| Cover Page | Personalised title, subtitle, version date — professional and client-ready |
| About This Plan | Plain-language introduction explaining nutrigenomics and the three core risk pathways |
| Recommendation 1 | Build your diet around plants and high-fibre foods — flaxseed, 35-40g fibre target, estrobolome explained simply |
| Recommendation 2 | Cut out ultra-processed foods — clear definition of what UPFs are + a practical hit-list |
| Recommendation 3 | Soy foods — right form (fermented), right amount, why supplements are not recommended |
| Recommendation 4 | Blood sugar control every meal — meal sequencing, time-restricted eating, lab targets to ask for |
| Recommendation 5 | Reduce red meat and replace saturated fat — protein rotation plan included |
| Recommendation 6 | Cruciferous veg and dark leafy greens daily — preparation instructions, why it matters |
| Recommendation 7 | Gut bacteria and the estrobolome — fermented foods and prebiotic fibre as hormone tools |
| Recommendation 8 | Omega-3 oily fish 3x/week — practical options including tinned fish |
| Recommendation 9 | Body weight and waist target — why visceral fat generates oestrogen; 10-min walk tip |
| Recommendation 10 | Zero alcohol + vitamin D testing and targets |
| Lynch Syndrome Module | Extra guidance for MLH1/MSH2/MSH6/PMS2 carriers |
| Foods At a Glance Table | Full colour-coded EAT / AVOID quick reference table |
| Sample Day of Eating | Full day meal plan with "why it helps" column |
| Monitoring Table | Tests to request from your doctor with target values |
| Closing Note | Encouraging, empowering summary message |
Create a printable meal prep template for this uterine cancer protocol0 lines for a client Focus on antioxidant-rich diet: lutein and zeaxanthin (found in kale, spinach, eggs) are particularly important - these carotenoids concentrate in the macula and may be photoprotective Include omega-3 fatty acids rich food in your daily diet regularly for ocular health Include Vitamin C and vitamin E (from food, not supplements) support retinal antioxidant defense
mkdir -p /home/daytona/workspace/uterine-mealprep && echo "ready"
~/uterine-mealprep/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
Header, Footer, AlignmentType, BorderStyle, WidthType,
ShadingType, VerticalAlign, PageNumber, LevelFormat,
PageOrientation
} = require('docx');
const fs = require('fs');
// ── Colour palette ──────────────────────────────────────────────────
const PLUM = "6B2D5E";
const MID_PLUM = "9B4F8A";
const LIGHT_PINK = "FAE8F5";
const SAGE = "3A6B4A";
const LIGHT_SAGE = "E8F5ED";
const TEAL = "1A6B6B";
const LIGHT_TEAL = "E0F5F5";
const GOLD = "B5860D";
const GOLD_BG = "FFF8E1";
const WHITE = "FFFFFF";
const DARK_TEXT = "1B1B1B";
const WARN_RED = "C1121F";
const WARN_BG = "FFE8E8";
const GREY_BG = "F5F5F5";
const MID_GREY = "AAAAAA";
// ── Borders ─────────────────────────────────────────────────────────
const thin = { style: BorderStyle.SINGLE, size: 4, color: "CCCCCC" };
const thick = { style: BorderStyle.SINGLE, size: 12, color: PLUM };
const tealB = { style: BorderStyle.SINGLE, size: 8, color: TEAL };
const none = { style: BorderStyle.NONE, size: 0, color: "FFFFFF" };
function borders(t=thin,b=thin,l=thin,r=thin,ih=thin,iv=thin){
return {top:t,bottom:b,left:l,right:r,insideHorizontal:ih,insideVertical:iv};
}
// ── Table cell helper ───────────────────────────────────────────────
function tc(text, bg=WHITE, bold=false, color=DARK_TEXT, width=null, align=AlignmentType.LEFT, size=18){
const opts = {
shading:{type:ShadingType.CLEAR, fill:bg},
verticalAlign: VerticalAlign.CENTER,
margins:{top:80, bottom:80, left:100, right:100},
children:[new Paragraph({
alignment: align,
children:[new TextRun({text, bold, color, font:"Arial", size})]
})]
};
if(width) opts.width = {size:width, type:WidthType.DXA};
return new TableCell(opts);
}
// tc with two runs (label + value)
function tc2(label, value, bg=WHITE, lColor=PLUM, width=null){
const opts = {
shading:{type:ShadingType.CLEAR, fill:bg},
verticalAlign: VerticalAlign.TOP,
margins:{top:80, bottom:80, left:100, right:100},
children:[new Paragraph({
children:[
new TextRun({text:label+" ", bold:true, color:lColor, font:"Arial", size:17}),
new TextRun({text:value, font:"Arial", size:17, color:DARK_TEXT})
]
})]
};
if(width) opts.width={size:width, type:WidthType.DXA};
return new TableCell(opts);
}
// multiline cell (array of strings → paragraphs)
function tcLines(lines, bg=WHITE, bold=false, color=DARK_TEXT, width=null, size=17){
const paras = lines.map(l=>new Paragraph({
spacing:{before:30, after:30},
children:[new TextRun({text:l, bold, color, font:"Arial", size})]
}));
const opts = {
shading:{type:ShadingType.CLEAR, fill:bg},
verticalAlign: VerticalAlign.TOP,
margins:{top:80, bottom:80, left:100, right:100},
children: paras
};
if(width) opts.width={size:width, type:WidthType.DXA};
return new TableCell(opts);
}
// ── Paragraph helpers ───────────────────────────────────────────────
function p(text, bold=false, color=DARK_TEXT, size=20, align=AlignmentType.LEFT){
return new Paragraph({
spacing:{before:60, after:60}, alignment:align,
children:[new TextRun({text, bold, color, font:"Arial", size})]
});
}
function banner(text, bg=PLUM, color=WHITE, size=26, align=AlignmentType.CENTER){
return new Paragraph({
spacing:{before:160, after:100}, alignment:align,
shading:{type:ShadingType.CLEAR, fill:bg},
children:[new TextRun({text, bold:true, color, font:"Arial", size})]
});
}
function subBanner(text, bg=MID_PLUM, color=WHITE, size=22){
return new Paragraph({
spacing:{before:120, after:80},
shading:{type:ShadingType.CLEAR, fill:bg},
children:[new TextRun({text:" "+text, bold:true, color, font:"Arial", size})]
});
}
function callout(text, bg=LIGHT_PINK, bold=false, color=DARK_TEXT, size=18){
return new Paragraph({
shading:{type:ShadingType.CLEAR, fill:bg},
spacing:{before:80, after:80},
indent:{left:300, right:300},
children:[new TextRun({text, bold, color, font:"Arial", size})]
});
}
function bullet(label, detail, lColor=PLUM){
return new Paragraph({
numbering:{reference:"bullets", level:0},
spacing:{before:40, after:40},
children:[
new TextRun({text:label+": ", bold:true, color:lColor, font:"Arial", size:19}),
new TextRun({text:detail, font:"Arial", size:19, color:DARK_TEXT})
]
});
}
function plainBullet(text, color=DARK_TEXT, size=19){
return new Paragraph({
numbering:{reference:"bullets", level:0},
spacing:{before:36, after:36},
children:[new TextRun({text, font:"Arial", size, color})]
});
}
function spacer(n=1){
return Array(n).fill(null).map(()=>
new Paragraph({spacing:{before:40,after:40}, children:[new TextRun("")]})
);
}
// ════════════════════════════════════════════════════════════════════
// PAGE 1 — COVER + NUTRIENT KEY + DAILY RULES
// ════════════════════════════════════════════════════════════════════
// ── COVER BLOCK ─────────────────────────────────────────────────────
const coverBlock = [
new Paragraph({
spacing:{before:200, after:0}, alignment:AlignmentType.CENTER,
shading:{type:ShadingType.CLEAR, fill:PLUM},
children:[new TextRun({text:"MY WEEKLY MEAL PREP PLANNER", bold:true, color:WHITE, font:"Arial", size:52})]
}),
new Paragraph({
spacing:{before:0, after:0}, alignment:AlignmentType.CENTER,
shading:{type:ShadingType.CLEAR, fill:PLUM},
children:[new TextRun({text:"Uterine Cancer Risk | Hormone + Eye Health Nutrition", bold:false, color:"DDBBDD", font:"Arial", size:26, italics:true})]
}),
new Paragraph({
spacing:{before:0, after:160}, alignment:AlignmentType.CENTER,
shading:{type:ShadingType.CLEAR, fill:PLUM},
children:[new TextRun({text:"Week of: _______________________ Name: _______________________", color:"CCCCCC", font:"Arial", size:20})]
}),
];
// ── COLOUR KEY TABLE ────────────────────────────────────────────────
const colourKeyTable = new Table({
width:{size:9800, type:WidthType.DXA},
borders: borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
tc(" COLOUR KEY — What Each Icon Means In This Planner", PLUM, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
children:[
new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thin,thin,thin,thin,thin,thin),
rows:[
new TableRow({children:[
tc(" [H] Hormone Balance", LIGHT_PINK, true, PLUM, 2450),
tc("Oestrogen-lowering foods (fibre, lignans, cruciferous, soy)", LIGHT_PINK, false, DARK_TEXT, 3200),
tc(" [E] Eye Health", LIGHT_TEAL, true, TEAL, 1450),
tc("Lutein/zeaxanthin, omega-3, Vit C & E for retinal protection", LIGHT_TEAL, false, DARK_TEXT, 2700),
]}),
new TableRow({children:[
tc(" [S] Blood Sugar", LIGHT_SAGE, true, SAGE, 2450),
tc("Low-GI, insulin-managing choices (fibre, legumes, whole grains)", LIGHT_SAGE, false, DARK_TEXT, 3200),
tc(" [A] Anti-Inflam.", GOLD_BG, true, GOLD, 1450),
tc("Anti-inflammatory foods: EVOO, turmeric, berries, oily fish", GOLD_BG, false, DARK_TEXT, 2700),
]}),
]
})
]
})
]})
]
});
// ── NON-NEGOTIABLE DAILY RULES ──────────────────────────────────────
const dailyRulesTable = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" YOUR 6 DAILY NON-NEGOTIABLES", PLUM, true, WHITE, 9800, AlignmentType.LEFT, 22)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_PINK},
margins:{top:80, bottom:80, left:160, right:160},
children:[
new Table({
width:{size:9400, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
tc2("[H][S]","1 tbsp ground flaxseed (lignans — oestrogen modulation)", LIGHT_PINK, PLUM, 3100),
tc2("[E][A]","2 cups kale or spinach (lutein + zeaxanthin + folate)", LIGHT_PINK, TEAL, 3100),
tc2("[E]", "1 egg — yolk included (lutein, zeaxanthin, choline)", LIGHT_PINK, TEAL, 3200),
]}),
new TableRow({children:[
tc2("[H][A]","1 cup dark berries (anthocyanins — NF-kB suppression)", LIGHT_PINK, PLUM, 3100),
tc2("[E][A]","2–3 cups green tea (EGCG — retinal + hormonal)", LIGHT_PINK, TEAL, 3100),
tc2("[S][A]","Turmeric + black pepper in at least 1 meal", LIGHT_PINK, GOLD, 3200),
]}),
]
})
]
})
]})
]
});
// ── WEEKLY TRACKER HEADER EXPLANATION ──────────────────────────────
const trackerNote = callout(
"HOW TO USE: For each meal slot, write what you ate OR tick the pre-planned meal. Circle [H] [E] [S] [A] each time you hit that goal. Aim to circle all 4 icons every day.",
GOLD_BG, false, DARK_TEXT, 18
);
// ════════════════════════════════════════════════════════════════════
// WEEKLY MEAL PLANNER TABLE (7 days × 6 rows each)
// ════════════════════════════════════════════════════════════════════
// Day column width breakdown (landscape: ~13700 DXA usable)
// Day label: 900 | Breakfast: 2100 | Lunch: 2100 | Dinner: 2100 | Snacks: 1700 | Notes/Icons: 1700 | Water: 900 = ~11500
// We'll use portrait 9800 total
const COL_DAY = 700;
const COL_BF = 2050;
const COL_LU = 2050;
const COL_DI = 2050;
const COL_SN = 1550;
const COL_ICON = 900;
// Header row
function dayHeaderRow(){
return new TableRow({
tableHeader: true,
children:[
tc("DAY", PLUM, true, WHITE, COL_DAY, AlignmentType.CENTER, 16),
tc("BREAKFAST [H][E][S][A]", PLUM, true, WHITE, COL_BF, AlignmentType.CENTER, 15),
tc("LUNCH [H][E][S][A]", PLUM, true, WHITE, COL_LU, AlignmentType.CENTER, 15),
tc("DINNER [H][E][S][A]", PLUM, true, WHITE, COL_DI, AlignmentType.CENTER, 15),
tc("SNACKS", PLUM, true, WHITE, COL_SN, AlignmentType.CENTER, 15),
tc("GOALS MET\n[H][E][S][A]", PLUM, true, WHITE, COL_ICON, AlignmentType.CENTER, 13),
]
});
}
// Suggested meal row — suggested text in light colour
function dayRow(day, dayBg, bfLines, luLines, diLines, snLines){
const textC = DARK_TEXT;
const lblC = MID_PLUM;
function mealCell(lines, bg){
const children = [];
// suggested label
children.push(new Paragraph({
spacing:{before:30, after:20},
children:[new TextRun({text:"Suggested:", bold:true, color:lblC, font:"Arial", size:15})]
}));
lines.forEach(l=>{
children.push(new Paragraph({
spacing:{before:20, after:20},
children:[new TextRun({text:l, font:"Arial", size:16, color:textC})]
}));
});
// write-in line
children.push(new Paragraph({spacing:{before:30, after:20}, children:[new TextRun({text:"What I had:", bold:true, color:"AAAAAA", font:"Arial", size:15})]}));
children.push(new Paragraph({spacing:{before:20, after:40}, children:[new TextRun({text:"_______________________", color:"CCCCCC", font:"Arial", size:16})]}));
return new TableCell({
shading:{type:ShadingType.CLEAR, fill:bg},
verticalAlign:VerticalAlign.TOP,
margins:{top:80, bottom:80, left:100, right:80},
children
});
}
function snackCell(lines, bg){
const children = [];
children.push(new Paragraph({spacing:{before:30,after:20}, children:[new TextRun({text:"Suggested:", bold:true, color:lblC, font:"Arial", size:15})] }));
lines.forEach(l=>{
children.push(new Paragraph({spacing:{before:20,after:16}, children:[new TextRun({text:l, font:"Arial", size:15, color:textC})] }));
});
children.push(new Paragraph({spacing:{before:30,after:16}, children:[new TextRun({text:"What I had:", bold:true, color:"AAAAAA", font:"Arial", size:14})] }));
children.push(new Paragraph({spacing:{before:10,after:30}, children:[new TextRun({text:"_____________", color:"CCCCCC", font:"Arial", size:15})] }));
return new TableCell({
shading:{type:ShadingType.CLEAR, fill:bg},
verticalAlign:VerticalAlign.TOP,
margins:{top:80, bottom:80, left:80, right:80},
children
});
}
// Goals met cell — tick boxes
const goalsCell = new TableCell({
shading:{type:ShadingType.CLEAR, fill:bg=="#FAE8F5"?LIGHT_PINK:WHITE},
verticalAlign:VerticalAlign.CENTER,
margins:{top:80, bottom:80, left:80, right:80},
children:[
new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:"[ ] H", font:"Arial", size:17, bold:true, color:PLUM})]}),
new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:"[ ] E", font:"Arial", size:17, bold:true, color:TEAL})]}),
new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:"[ ] S", font:"Arial", size:17, bold:true, color:SAGE})]}),
new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:"[ ] A", font:"Arial", size:17, bold:true, color:GOLD})]}),
new Paragraph({spacing:{before:40}, alignment:AlignmentType.CENTER, children:[new TextRun({text:"Water:", font:"Arial", size:15, color:TEAL, bold:true})]}),
new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:"__ glasses", font:"Arial", size:15, color:"AAAAAA"})]}),
]
});
const dayCell = new TableCell({
shading:{type:ShadingType.CLEAR, fill:MID_PLUM},
verticalAlign:VerticalAlign.CENTER,
margins:{top:80, bottom:80, left:60, right:60},
children:[new Paragraph({alignment:AlignmentType.CENTER, children:[new TextRun({text:day, bold:true, color:WHITE, font:"Arial", size:18})]})]
});
return new TableRow({
children:[
dayCell,
mealCell(bfLines, dayBg),
mealCell(luLines, dayBg),
mealCell(diLines, dayBg),
snackCell(snLines, dayBg),
goalsCell
]
});
}
// ── 7-day meal suggestions ──────────────────────────────────────────
const days = [
{
day:"MON", bg:LIGHT_PINK,
bf:["Kale & spinach omelette (2 eggs)", "1 tbsp ground flaxseed", "Berries + live yogurt", "Green tea"],
lu:["Sardine & rocket salad", "Red onion, tomato, chickpeas", "EVOO + lemon dressing", "Rye crispbread"],
di:["Baked salmon fillet", "Steamed broccoli + mustard", "Quinoa with garlic + EVOO", "Side: kimchi"],
sn:["Walnuts + kiwi", "Miso broth"]
},
{
day:"TUE", bg:WHITE,
bf:["Oats with blueberries", "Ground flaxseed + walnuts", "Spinach smoothie", "Green tea"],
lu:["Lentil soup (spinach, turmeric)", "Wholegrain rye bread", "Raw carrot sticks"],
di:["Tempeh stir-fry", "Kale, broccoli, bok choy", "Brown rice + sesame seeds", "Tamari & ginger sauce"],
sn:["Apple + almond butter", "Green tea + dark choc 85%"]
},
{
day:"WED", bg:LIGHT_PINK,
bf:["Spinach & egg scramble", "Avocado on rye toast", "Ground flaxseed", "Green tea"],
lu:["Chickpea & kale salad", "Roast tomato, cucumber", "Tahini + lemon dressing"],
di:["Mackerel fillets", "Swiss chard + garlic", "Lentils with turmeric + pepper", "Side: sauerkraut"],
sn:["Kefir + mixed berries", "Pumpkin seeds"]
},
{
day:"THU", bg:WHITE,
bf:["Live yogurt + ground flaxseed", "Mixed berries + walnuts", "Kale in green smoothie", "Green tea"],
lu:["Tuna (in olive oil) salad", "Spinach, red pepper, egg", "Wholegrain crackers"],
di:["Chicken breast with herbs", "Roast broccoli + EVOO", "Barley or quinoa", "Side: kimchi"],
sn:["Almonds + orange", "Miso soup"]
},
{
day:"FRI", bg:LIGHT_PINK,
bf:["Poached eggs on rye", "Wilted spinach + turmeric", "Berries", "Green tea"],
lu:["Black bean & kale bowl", "Brown rice, avocado", "Lime + cumin dressing"],
di:["Baked trout fillet", "Steamed kale + lemon", "Sweet potato (small)", "Side: live yogurt"],
sn:["Kefir", "Walnuts + blueberries"]
},
{
day:"SAT", bg:WHITE,
bf:["Veggie omelette (kale, pepper)", "Ground flaxseed in yogurt", "Kiwi + strawberries", "Green tea"],
lu:["Miso soup with tofu", "Seaweed, spring onion", "Rye bread + avocado"],
di:["Salmon with dill + EVOO", "Broccoli + garlic", "Quinoa + pumpkin seeds", "Side: sauerkraut"],
sn:["Brazil nut (1–2 only)", "Dark berries + dark choc 85%"]
},
{
day:"SUN", bg:LIGHT_PINK,
bf:["Oats + barley flakes", "Ground flaxseed + blueberries", "Almond milk", "Green tea"],
lu:["Chickpea curry (spinach, turmeric)", "Brown rice, side salad"],
di:["Mackerel or sardines", "Roast cauliflower + kale", "Lentils + EVOO + lemon", "Side: kimchi"],
sn:["Apple + pumpkin seeds", "Chamomile tea"]
}
];
const weekTable = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
dayHeaderRow(),
...days.map(d=>dayRow(d.day, d.bg, d.bf, d.lu, d.di, d.sn))
]
});
// ════════════════════════════════════════════════════════════════════
// PAGE 2 — NUTRIENT TRACKER + PREP GUIDE + SHOPPING LIST
// ════════════════════════════════════════════════════════════════════
// ── DAILY NUTRIENT CHECKLIST ─────────────────────────────────────────
const nutrientChecklist = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" DAILY NUTRIENT TARGET CHECKLIST — Tick When Achieved Each Day", PLUM, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:WHITE},
margins:{top:60, bottom:60, left:160, right:160},
children:[
// Hormone section
new Table({
width:{size:9400, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
// Column 1 — Hormone
new TableCell({
width:{size:4600, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_PINK},
margins:{top:80,bottom:80,left:120,right:80},
children:[
new Paragraph({spacing:{before:40,after:60}, children:[new TextRun({text:"[H] HORMONE BALANCE", bold:true, color:PLUM, font:"Arial", size:18})]}),
...[
"[ ] Ground flaxseed (1–2 tbsp)",
"[ ] Cruciferous veg — broccoli/kale/sprouts",
"[ ] 35g+ dietary fibre total",
"[ ] Fermented food (yogurt/kefir/miso/kimchi)",
"[ ] Legumes (lentils/chickpeas/black beans)",
"[ ] No alcohol",
"[ ] No processed meat",
"[ ] Soy — miso/tempeh/tofu (1 serving)"
].map(t=>new Paragraph({spacing:{before:26,after:26}, children:[new TextRun({text:t, font:"Arial", size:17, color:DARK_TEXT})]}))
]
}),
// Column 2 — Eye Health
new TableCell({
width:{size:4800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:80,bottom:80,left:120,right:80},
children:[
new Paragraph({spacing:{before:40,after:60}, children:[new TextRun({text:"[E] EYE HEALTH (Lutein/Zeaxanthin/Omega-3)", bold:true, color:TEAL, font:"Arial", size:18})]}),
...[
"[ ] Kale or spinach (2+ cups) — lutein & zeaxanthin",
"[ ] Eggs with yolk — lutein, zeaxanthin, choline",
"[ ] Oily fish OR algae DHA — omega-3 for retina",
"[ ] Orange/yellow veg (sweet potato, pepper, corn)",
"[ ] Vitamin C foods: citrus, kiwi, bell pepper",
"[ ] Vitamin E foods: sunflower seeds, almonds, avocado",
"[ ] Green tea (EGCG — retinal antioxidant)",
"[ ] Walnuts — ALA omega-3 precursor"
].map(t=>new Paragraph({spacing:{before:26,after:26}, children:[new TextRun({text:t, font:"Arial", size:17, color:DARK_TEXT})]}))
]
}),
]}),
new TableRow({children:[
// Column 3 — Blood Sugar
new TableCell({
width:{size:4600, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_SAGE},
margins:{top:80,bottom:80,left:120,right:80},
children:[
new Paragraph({spacing:{before:40,after:60}, children:[new TextRun({text:"[S] BLOOD SUGAR CONTROL", bold:true, color:SAGE, font:"Arial", size:18})]}),
...[
"[ ] Whole grains only (oats, barley, quinoa, rye)",
"[ ] Protein at every meal",
"[ ] Fat at every meal (EVOO/nuts/avocado/fish)",
"[ ] No refined sugar, white bread, white rice",
"[ ] Ate within a 10-hour window",
"[ ] Walked 10 min after main meal",
"[ ] No sweet drinks, juice, or soda",
"[ ] Started meal with veg/protein before carbs"
].map(t=>new Paragraph({spacing:{before:26,after:26}, children:[new TextRun({text:t, font:"Arial", size:17, color:DARK_TEXT})]}))
]
}),
// Column 4 — Anti-Inflammatory
new TableCell({
width:{size:4800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:GOLD_BG},
margins:{top:80,bottom:80,left:120,right:80},
children:[
new Paragraph({spacing:{before:40,after:60}, children:[new TextRun({text:"[A] ANTI-INFLAMMATORY", bold:true, color:GOLD, font:"Arial", size:18})]}),
...[
"[ ] Turmeric + black pepper in a meal",
"[ ] EVOO as primary cooking fat",
"[ ] Dark berries (1 cup — blueberries/blackberries)",
"[ ] Oily fish (if it is a fish day)",
"[ ] Garlic or onion in cooking",
"[ ] No ultra-processed food today",
"[ ] Omega-3 source (fish/walnuts/flax/chia)",
"[ ] Green or herbal tea (2–3 cups)"
].map(t=>new Paragraph({spacing:{before:26,after:26}, children:[new TextRun({text:t, font:"Arial", size:17, color:DARK_TEXT})]}))
]
}),
]}),
]
})
]
})
]})
]
});
// ── MEAL PREP GUIDE ──────────────────────────────────────────────────
const prepGuide = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" SUNDAY MEAL PREP GUIDE — Batch Cook These 5 Things for the Week", SAGE, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_SAGE},
margins:{top:80,bottom:80,left:160,right:160},
children:[
new Table({
width:{size:9400, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
tcLines([
"1. COOK GRAINS (30 min)",
"Cook a large pot of:",
" - Rolled oats (store dry; add water each morning)",
" - Brown rice OR quinoa (batch-cook; refrigerate 4 days)",
" - Barley (soup base all week)"
], LIGHT_SAGE, false, DARK_TEXT, 3000),
tcLines([
"2. BATCH LEGUMES (20 min if tinned)",
" - Rinse 2-3 tins chickpeas, lentils, black beans",
" - Cook a big pot lentil soup (spinach + turmeric)",
" - Store in portions — lunch base for 3 days",
" TIP: Tinned = fine. Rinse well to reduce sodium."
], LIGHT_SAGE, false, DARK_TEXT, 3000),
tcLines([
"3. PREP VEGETABLES (20 min)",
" - Wash and chop kale & spinach (store in damp cloth)",
" - Lightly steam broccoli/Brussels (3 days in fridge)",
" - Slice red onion + cherry tomatoes (salad-ready)",
" - Roast one tray: cauliflower + sweet potato + EVOO"
], LIGHT_SAGE, false, DARK_TEXT, 3800),
]}),
new TableRow({children:[
tcLines([
"4. MAKE 2 DRESSINGS (5 min each)",
" Dressing A: EVOO + lemon + mustard + garlic",
" Dressing B: Tahini + lemon + cumin + water",
" Store in jars — last all week",
" Use on salads, grains, and vegetables daily"
], LIGHT_SAGE, false, DARK_TEXT, 3000),
tcLines([
"5. SNACK PACKS (10 min)",
" - Portion walnuts + pumpkin seeds into daily bags",
" - Slice kiwi/apple (eat within 2 days)",
" - Pre-portion ground flaxseed into 7 daily servings",
" - Have live yogurt/kefir stocked and portioned"
], LIGHT_SAGE, false, DARK_TEXT, 3000),
tcLines([
"SMART STORAGE:",
" - Cooked grains: fridge up to 4 days",
" - Cut veg: fridge up to 3 days",
" - Cooked fish: fridge up to 2 days",
" - Dressings: fridge up to 7 days",
" - Ground flaxseed: fridge, airtight jar"
], LIGHT_SAGE, false, DARK_TEXT, 3800),
]}),
]
})
]
})
]})
]
});
// ── SHOPPING LIST TABLE ──────────────────────────────────────────────
const shoppingList = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" WEEKLY SHOPPING LIST — Stock These Every Week", TEAL, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:80,bottom:80,left:100,right:100},
children:[
new Table({
width:{size:9600, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
// Col 1 – Produce
new TableCell({
width:{size:2400, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:60,bottom:60,left:80,right:60},
children:[
new Paragraph({children:[new TextRun({text:"PRODUCE [H][E][A]", bold:true, color:TEAL, font:"Arial", size:17})]}),
...["[ ] Kale (large bunch)","[ ] Baby spinach (2 bags)","[ ] Broccoli (2 heads)","[ ] Brussels sprouts","[ ] Rocket/watercress","[ ] Red onion (4)","[ ] Cherry tomatoes","[ ] Sweet potato (3)","[ ] Bell peppers (mixed)","[ ] Cucumber","[ ] Avocado (3-4)","[ ] Garlic bulb","[ ] Leek or spring onion","[ ] Blueberries (fresh/frozen)","[ ] Mixed berries","[ ] Apple (4)","[ ] Kiwi (4)","[ ] Lemon (4)"]
.map(t=>new Paragraph({spacing:{before:22,after:22}, children:[new TextRun({text:t, font:"Arial", size:16, color:DARK_TEXT})]}))
]
}),
// Col 2 – Protein
new TableCell({
width:{size:2400, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:60,bottom:60,left:80,right:60},
children:[
new Paragraph({children:[new TextRun({text:"PROTEIN [H][E][A]", bold:true, color:TEAL, font:"Arial", size:17})]}),
...["[ ] Eggs (12-pack)","[ ] Salmon fillet (2)","[ ] Sardines, tinned (3 tins)","[ ] Mackerel, tinned (2 tins)","[ ] Tuna in olive oil (2 tins)","[ ] Plain firm tofu (1 pack)","[ ] Tempeh (1 pack)","[ ] Live natural yogurt","[ ] Kefir (plain)","[ ] Tinned chickpeas (3 tins)","[ ] Red lentils (dry, 500g)","[ ] Black beans, tinned (2 tins)","[ ] Miso paste (white/brown)","[ ] Kimchi or sauerkraut","[ ] Unsalted walnuts","[ ] Almonds","[ ] Pumpkin seeds","[ ] Brazil nuts (small pack)"]
.map(t=>new Paragraph({spacing:{before:22,after:22}, children:[new TextRun({text:t, font:"Arial", size:16, color:DARK_TEXT})]}))
]
}),
// Col 3 – Grains + Fats
new TableCell({
width:{size:2400, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:60,bottom:60,left:80,right:60},
children:[
new Paragraph({children:[new TextRun({text:"GRAINS + FATS [S][A]", bold:true, color:TEAL, font:"Arial", size:17})]}),
...["[ ] Rolled oats (500g)","[ ] Barley (dry, 400g)","[ ] Quinoa (400g)","[ ] Brown rice (500g)","[ ] Rye bread/crispbread","[ ] Ground flaxseed (200g)","[ ] Chia seeds","[ ] Extra-virgin olive oil","[ ] Tahini","[ ] Almond or oat milk (unsweet.)","[ ] Dark chocolate 85%+ (small)","[ ] Sunflower seeds","[ ] Sesame seeds"]
.map(t=>new Paragraph({spacing:{before:22,after:22}, children:[new TextRun({text:t, font:"Arial", size:16, color:DARK_TEXT})]}))
]
}),
// Col 4 – Herbs + Pantry
new TableCell({
width:{size:2400, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_TEAL},
margins:{top:60,bottom:60,left:80,right:60},
children:[
new Paragraph({children:[new TextRun({text:"HERBS + PANTRY [H][E][A]", bold:true, color:TEAL, font:"Arial", size:17})]}),
...["[ ] Turmeric (ground)","[ ] Black pepper","[ ] Ground mustard powder","[ ] Cumin","[ ] Ginger (fresh or ground)","[ ] Tamari (low-sodium soy sauce)","[ ] Green tea bags","[ ] Chamomile tea","[ ] White or brown miso paste","[ ] Nutritional yeast (opt.)","[ ] Apple cider vinegar","[ ] Dijon mustard","[ ] Low-sodium vegetable stock","[ ] Tinned tomatoes","[ ] Cinnamon (ground)","[ ] Dried mixed herbs","[ ] Vitamin D3 supplement","[ ] 5-MTHF (if prescribed)"]
.map(t=>new Paragraph({spacing:{before:22,after:22}, children:[new TextRun({text:t, font:"Arial", size:16, color:DARK_TEXT})]}))
]
}),
]}),
]
})
]
})
]})
]
});
// ── FOODS TO AVOID REMINDER ──────────────────────────────────────────
const avoidReminder = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" NEVER BUY / NEVER EAT — Keep This List on Your Fridge", WARN_RED, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:WARN_BG},
margins:{top:80, bottom:80, left:160, right:160},
children:[
new Table({
width:{size:9400, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[new TableRow({children:[
tcLines(["ALCOHOL","All wine, beer, spirits, cider","Kombucha with residual alcohol","Low-alcohol drinks"],WARN_BG,true,WARN_RED,2350),
tcLines(["PROCESSED MEAT","Bacon, sausages, salami","Ham, deli meats, hot dogs","Any cured/smoked meat"],WARN_BG,true,WARN_RED,2350),
tcLines(["SUGARY FOODS","Fruit juice (all types)","Soft drinks & energy drinks","Cakes, biscuits, sweets, jam"],WARN_BG,true,WARN_RED,2350),
tcLines(["ULTRA-PROCESSED","Packaged snack bars","Flavoured crisps & crackers","Instant noodles, frozen ready meals"],WARN_BG,true,WARN_RED,2700),
]})]
})
]
})
]})
]
});
// ── WEEKLY REFLECTION ────────────────────────────────────────────────
const reflectionTable = new Table({
width:{size:9800, type:WidthType.DXA},
borders:borders(thick,thick,thick,thick,thin,thin),
rows:[
new TableRow({children:[
tc(" MY WEEKLY REFLECTION", MID_PLUM, true, WHITE, 9800, AlignmentType.LEFT, 20)
]}),
new TableRow({children:[
new TableCell({
width:{size:9800, type:WidthType.DXA},
shading:{type:ShadingType.CLEAR, fill:LIGHT_PINK},
margins:{top:80,bottom:80,left:160,right:160},
children:[
new Table({
width:{size:9400, type:WidthType.DXA},
borders:borders(none,none,none,none,none,none),
rows:[
new TableRow({children:[
tcLines([
"Days I hit ALL 4 goals [H][E][S][A]:",
"_____ out of 7 days",
"",
"Days I avoided alcohol completely:",
"_____ out of 7 days",
"",
"Days I ate oily fish or eggs:",
"_____ out of 7 days"
], LIGHT_PINK, false, DARK_TEXT, 3000),
tcLines([
"What went well this week:",
"_________________________________",
"_________________________________",
"",
"What I found hardest:",
"_________________________________",
"_________________________________"
], LIGHT_PINK, false, DARK_TEXT, 3000),
tcLines([
"One change I will make next week:",
"_________________________________",
"_________________________________",
"",
"Note for my practitioner:",
"_________________________________",
"_________________________________"
], LIGHT_PINK, false, DARK_TEXT, 3800),
]})
]
})
]
})
]})
]
});
// ── FOOTER REMINDER ──────────────────────────────────────────────────
const footerReminder = callout(
"REMEMBER: Ground flaxseed daily | Kale or spinach every day | Eggs with yolk most days | Green tea 2-3 cups | Oily fish 3x this week | Zero alcohol | Turmeric + pepper in at least 1 meal",
LIGHT_SAGE, true, SAGE, 18
);
// ════════════════════════════════════════════════════════════════════
// ASSEMBLE DOCUMENT
// ════════════════════════════════════════════════════════════════════
const children = [
...coverBlock,
...spacer(1),
colourKeyTable,
...spacer(1),
dailyRulesTable,
...spacer(1),
trackerNote,
...spacer(1),
weekTable,
...spacer(2),
nutrientChecklist,
...spacer(2),
prepGuide,
...spacer(2),
shoppingList,
...spacer(2),
avoidReminder,
...spacer(2),
reflectionTable,
...spacer(1),
footerReminder,
];
const doc = new Document({
numbering:{
config:[{
reference:"bullets",
levels:[{level:0, format:LevelFormat.BULLET, text:"\u2022", alignment:AlignmentType.LEFT,
style:{paragraph:{indent:{left:540, hanging:360}}}}]
}]
},
styles:{
default:{ document:{ run:{ font:"Arial", size:20, color:DARK_TEXT } } },
paragraphStyles:[
{ id:"Heading1", name:"Heading 1", basedOn:"Normal", next:"Normal", quickFormat:true,
run:{size:30, bold:true, font:"Arial", color:WHITE},
paragraph:{spacing:{before:320, after:120}, outlineLevel:0} }
]
},
sections:[{
properties:{
page:{
margin:{top:720, bottom:720, left:720, right:720},
size:{width:12240, height:15840} // US Letter portrait
}
},
headers:{
default: new Header({children:[
new Paragraph({
alignment:AlignmentType.RIGHT,
shading:{type:ShadingType.CLEAR, fill:PLUM},
children:[new TextRun({
text:" Uterine Cancer Nutrigenomics — Weekly Meal Prep Template | Personal & Confidential ",
font:"Arial", size:15, color:"DDBBDD", italics:true
})]
})
]})
},
footers:{
default: new Footer({children:[
new Paragraph({
alignment:AlignmentType.CENTER,
children:[
new TextRun({text:"Page ", font:"Arial", size:15, color:"888888"}),
new TextRun({children:[PageNumber.CURRENT], font:"Arial", size:15, color:"888888"}),
new TextRun({text:" | Uterine Cancer Nutrigenomics Meal Prep Template | Version 1.0 | 2026", font:"Arial", size:15, color:"888888"})
]
})
]})
},
children
}]
});
Packer.toBuffer(doc).then(buffer=>{
fs.writeFileSync(
"/home/daytona/workspace/uterine-mealprep/Uterine_Cancer_Weekly_MealPrep_Template.docx",
buffer
);
console.log("Done.");
});
cd /home/daytona/workspace/uterine-mealprep && node generate.js 2>&1
~/uterine-mealprep/generate.js
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/uterine-mealprep/generate.js'
cd /home/daytona/workspace/uterine-mealprep && node generate.js 2>&1
python3 -c " import zipfile, os path='/home/daytona/workspace/uterine-mealprep/Uterine_Cancer_Weekly_MealPrep_Template.docx' print(f'Size: {os.path.getsize(path)/1024:.1f} KB') z=zipfile.ZipFile(path) print('Valid DOCX. Files:', z.namelist()[:6]) "
Uterine Cancer Weekly MealPrep Template
Word Document · DOCX
| Section | What's Inside |
|---|---|
| Cover | "My Weekly Meal Prep Planner" — personalised header with a week-date and name fill-in line |
| Colour Key | Four colour-coded goal icons explained: [H] Hormone Balance (pink), [E] Eye Health (teal), [S] Blood Sugar (sage green), [A] Anti-Inflammatory (gold) |
| 6 Daily Non-Negotiables | Quick-glance box of the 6 things to do every single day — flaxseed, kale/spinach, eggs, berries, green tea, turmeric — each tagged with its goal icon |
| 7-Day Weekly Planner | Full Mon-Sun table with: suggested breakfast, lunch, dinner, and snacks for each day + a "What I had" write-in line per meal + daily tick boxes for [H][E][S][A] goals + water glass counter |
| Daily Nutrient Checklist | Four-column daily tick-off grid — one column per goal: Hormone Balance (8 items), Eye Health (8 items), Blood Sugar (8 items), Anti-Inflammatory (8 items) |
| Sunday Meal Prep Guide | 5-task batch cooking plan (grains, legumes, vegetables, two dressings, snack packs) with storage tips |
| Weekly Shopping List | Four columns: Produce, Protein, Grains + Fats, Herbs + Pantry — all tagged with goal icons |
| Never Buy / Never Eat | Red warning box: alcohol, processed meat, sugary drinks, ultra-processed foods |
| Weekly Reflection | Write-in section: goals met, what went well, what was hardest, one change to make, note for practitioner |
| Footer Reminder | Daily cheat-sheet strip across the bottom of every page |