attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment

Make diet plan and exercise list and do's and don'ts

Reading File
Finding Sources
Finding Sources
Finding Sources
Searching PubMed

rheumatoid arthritis diet exercise management

Searching the Web

rheumatoid arthritis cervical spondylosis diet plan exercise do's don'ts 2025

I have strong sources including the 2022 ACR Guidelines for RA. Now let me compile the comprehensive plan.

Personalized Health Plan for Mr. Kalipada Jena, 45M

Based on your reports:
  • Rheumatoid Arthritis - Anti-CCP: 95.4 U/ml (strong positive), RF: 100 IU/ml (elevated)
  • Cervical Spondylosis - C3-4, C4-5, C5-6, C6-7 disc protrusions with mild cord indentation
  • Lumbar Spondylosis - L1-2 to L5-S1 diffuse disc bulge
  • Borderline High Uric Acid - 7.4 mg/dL (normal male upper limit: 7.2 mg/dL)
⚠️ Important: This plan is for lifestyle support only. Please follow your rheumatologist's medications (DMARDs/biologics for RA) alongside this. Do NOT stop or change prescribed medicines based on this plan.

DIET PLAN

Anti-Inflammatory Foundation (Mediterranean-style)

The 2022 ACR Guidelines conditionally recommend a Mediterranean-style diet for RA. This also helps with spondylosis and uric acid.

Daily Meal Plan

TimeMealWhat to Eat
6:30 AMOn waking2 glasses warm water + juice of half lemon (alkalizes uric acid)
7:00 AMBreakfastOats with flaxseeds + walnuts + 1 banana OR 2 whole wheat rotis + 1 egg white + vegetable sabzi
10:00 AMMid-morning1 handful of almonds/walnuts + 1 fruit (apple, pear, orange)
1:00 PMLunch2 rotis (wheat/multigrain) + 1 cup dal + 1 cup vegetable curry + salad (cucumber, carrot, tomato) + 1 cup low-fat curd
4:00 PMSnack1 cup green tea (no sugar) + roasted chana OR 1 fruit
7:30 PMDinner1-2 rotis + fish curry (salmon/rohu/catla) 2-3 times/week OR vegetable khichdi + 1 cup vegetable soup
9:30 PMBefore bed1 glass warm turmeric milk (haldi doodh)

Best Foods to Include (ANTI-INFLAMMATORY)

For RA + Spine:
  • Fatty fish - Rohu, catla, salmon, tuna (2-3 times/week) - omega-3 reduces joint inflammation
  • Turmeric (haldi) - daily in cooking or milk - curcumin is a natural anti-inflammatory
  • Ginger (adrak) - in tea or cooking daily
  • Flaxseeds/chia seeds - 1 tbsp daily in food - plant omega-3
  • Walnuts - 5-7 daily
  • Dark leafy greens - palak, methi, broccoli, kale - rich in folate and antioxidants
  • Colorful vegetables - carrots, capsicum, tomatoes, pumpkin
  • Berries/fruits - amla (very high Vit C), papaya, oranges, guava
  • Whole grains - brown rice, oats, multigrain roti, daliya
  • Lentils/dal - masoor, moong (low purine - safe for uric acid, good protein for RA)
  • Olive oil - use for cooking/salad dressing
For Uric Acid control:
  • Cherries, amla, lemon water - help excrete uric acid
  • Drink 3-4 liters water daily - flushes uric acid through kidneys
  • Low-fat dairy (curd, buttermilk) - helps lower uric acid

FOODS TO AVOID

Strictly Avoid (worsens all three conditions)

FoodWhy
Red meat (mutton, beef, pork)High purines - raises uric acid; promotes RA inflammation
Organ meats (liver, kidney, brain)Extremely high purines
Alcohol (especially beer)Raises uric acid sharply, worsens RA
Sugary drinks (cold drinks, packaged juice)Pro-inflammatory, worsens RA and joints
Fried/processed foods (chips, namkeen, fast food)Trans fats cause inflammation
White bread, maida productsRefined carbs worsen inflammation
Excess saltWorsens joint swelling
Seafood excess (prawns, crab, shellfish)High purines - raise uric acid

Limit (reduce, don't eliminate)

  • Chicken - 2-3 times/week only (remove skin); choose boiled/grilled, not fried
  • Rajma, chana, sprouts - moderate amounts (moderate purine)
  • Full-fat dairy
  • Cauliflower, mushrooms - moderate (moderate purine for uric acid)
  • Tea/coffee - 1-2 cups max

EXERCISE PLAN

Key principle: Exercise is strongly recommended (ACR 2022 Guidelines) even with active RA. Movement preserves joint function and reduces pain. However, your cervical and lumbar disc protrusions mean certain movements must be strictly avoided.

Phase 1 - Weeks 1-4: Gentle Start

Morning Routine (20-25 min)
  1. Warm water soak/shower on neck and lower back - 5 min to loosen stiffness
  2. Deep breathing (Pranayama) - Anulom Vilom, Bhramari - 5 min
  3. Cervical gentle ROM (Range of Motion) - only gentle side-to-side rotation (ear to shoulder), NO full flexion or extension:
    • Slow chin tucks (pull chin straight back) - 10 reps
    • Gentle lateral side bend (ear toward shoulder, hold 5 sec) - 5 each side
    • NO forward or backward bending of neck
  4. Shoulder rolls - forward and backward - 10 each
  5. Wrist and finger exercises (crucial for RA):
    • Finger bends, fist squeeze, wrist circles - 10 reps each
    • Warm water hand soak before - reduces morning stiffness
Evening Routine (20-30 min)
  1. Walking - flat surface, comfortable footwear - 20-30 min daily (start with 10 min, build up)
  2. Core strengthening - lying on back, flat surface:
    • Pelvic tilts - 10 reps
    • Knee-to-chest stretch - hold 20 sec, alternate legs
    • Partial bridge (raise buttocks slowly) - 10 reps

Phase 2 - From Week 5 Onward (if pain allows)

  • Swimming or water aerobics (best exercise for RA + spondylosis - no joint impact)
  • Yoga (gentle - Tadasana, Shavasana, Balasana/child's pose, Bhujangasana only at low height)
  • Stationary cycling (low resistance)
  • Duration: build to 150 min aerobic exercise per week total (ACR guideline)

DO'S AND DON'TS

✅ DO'S

Physical/Daily Life:
  • Use a firm, supportive mattress - ideally sleep on your back or side with a pillow between knees
  • Use a cervical pillow (contoured orthopedic pillow) for neck support while sleeping
  • Maintain good posture - keep ears directly above shoulders when sitting
  • Take regular short breaks (every 30-45 min) if doing desk work - stand and walk briefly
  • Use ergonomic chair with proper back support
  • Apply warm compress on stiff joints in the morning, cold pack after activity-related swelling
  • Track your joint pain daily - identify flare triggers
  • Keep follow-up appointments with your rheumatologist regularly
  • Maintain healthy weight - even 5 kg weight loss reduces joint load significantly
  • Stay active even on pain days - gentle movement is better than complete rest
  • Get adequate sleep (7-8 hours) - RA fatigue is real and sleep restores joints
  • Vitamin D supplementation - get sun exposure 15-20 min daily (morning sun on arms/legs)
Dietary Do's:
  • Drink 3-4 liters of water daily
  • Eat small, frequent meals rather than 2-3 large meals
  • Cook with turmeric, ginger, garlic every day
  • Use olive oil or mustard oil for cooking
  • Take Omega-3 supplement (fish oil capsules) if fish intake is low - consult doctor for dose

❌ DON'TS

Physical:
  • Do NOT do heavy weight lifting or resistance training (especially upper body) - puts pressure on cervical disc protrusions
  • Do NOT do neck rotations in full circle (cervical rotation exercises in gyms) - dangerous with your MRI findings
  • Do NOT do high-impact exercises - running on hard surfaces, jumping, contact sports
  • Do NOT sit or stand in one position for more than 45 minutes without a break
  • Do NOT sleep on your stomach - puts severe strain on cervical spine
  • Do NOT carry heavy bags on one shoulder - use both straps or a trolley
  • Do NOT look down at your phone for long periods (text neck)
  • Do NOT do sit-ups with full spinal flexion - strains lumbar discs
  • Do NOT push through severe pain during exercise - rest and consult doctor
  • Do NOT ignore hand/finger swelling - it signals RA flare needing medical attention
Dietary Don'ts:
  • Do NOT follow crash diets or extreme fasting - weakens joints and immunity
  • Do NOT eat high-purine foods (organ meats, alcohol, shellfish, red meat) - raises uric acid toward gout territory
  • Do NOT skip meals - low blood sugar increases inflammation perception
  • Do NOT take pain medications (ibuprofen, diclofenac) regularly without doctor guidance - damages kidneys and stomach with RA medications
Lifestyle:
  • Do NOT smoke - smoking significantly worsens RA disease activity and is linked to cervical disc disease
  • Do NOT ignore stress - chronic stress worsens RA flares; practice meditation or prayer daily
  • Do NOT self-medicate with steroids for pain relief without rheumatologist supervision

SUPPLEMENTS TO DISCUSS WITH YOUR DOCTOR

SupplementDose (typical)Benefit
Omega-3 fish oil2-3g/day EPA+DHAReduces RA joint inflammation
Vitamin D31000-2000 IU/dayBone health, immune modulation in RA
Calcium500-1000 mg/dayBone health (especially with steroid use)
Turmeric/Curcumin extract500mg twice dailyAnti-inflammatory
Vitamin C (from food/amla)High dietary intakeHelps uric acid excretion
Always discuss these with your rheumatologist before starting, especially if you are already on methotrexate or other DMARDs.

MEDICAL FOLLOW-UP REMINDERS

  • Rheumatologist - every 3 months (RA monitoring, medication adjustment)
  • Repeat Anti-CCP/RF - after 6 months of treatment to assess response
  • Uric Acid recheck - 3 months (currently borderline - diet alone may normalize it)
  • MRI Cervical Spine - repeat in 12 months or earlier if neurological symptoms (numbness, weakness in arms/hands) worsen
  • Physiotherapy - 2-3 sessions per week initially, under a trained physiotherapist familiar with cervical disc disease and RA

Sources: 2022 ACR Guidelines for RA Exercise & Diet (PMID: 37227071), Firestein & Kelley's Textbook of Rheumatology, Harrison's Principles of Internal Medicine 22E, Robbins Pathology

Make them in pdf file

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null && mkdir -p /home/daytona/workspace/kalipada-health-plan

Writing File

~/kalipada-health-plan/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

OUTPUT = "/home/daytona/workspace/kalipada-health-plan/Kalipada_Health_Plan.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=1.8*cm,
    leftMargin=1.8*cm,
    topMargin=2*cm,
    bottomMargin=2*cm,
)

W, H = A4

# ── Colour Palette ──────────────────────────────────────────────
TEAL       = colors.HexColor("#006D77")
TEAL_LIGHT = colors.HexColor("#E8F4F5")
ORANGE     = colors.HexColor("#E07B39")
ORANGE_LT  = colors.HexColor("#FEF3EC")
GREEN      = colors.HexColor("#2D6A4F")
GREEN_LT   = colors.HexColor("#EAF4EE")
RED        = colors.HexColor("#C0392B")
RED_LT     = colors.HexColor("#FDEDEC")
GREY_BG    = colors.HexColor("#F5F5F5")
DARK       = colors.HexColor("#1A1A2E")
MID_GREY   = colors.HexColor("#6B6B6B")
WHITE      = colors.white

# ── Styles ───────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def style(name, **kw):
    s = ParagraphStyle(name, **kw)
    return s

S_TITLE = style("S_TITLE",
    fontName="Helvetica-Bold", fontSize=20, textColor=WHITE,
    alignment=TA_CENTER, spaceAfter=2)

S_SUBTITLE = style("S_SUBTITLE",
    fontName="Helvetica", fontSize=11, textColor=WHITE,
    alignment=TA_CENTER, spaceAfter=2)

S_PATIENT = style("S_PATIENT",
    fontName="Helvetica", fontSize=9.5, textColor=WHITE,
    alignment=TA_CENTER)

S_SECTION = style("S_SECTION",
    fontName="Helvetica-Bold", fontSize=13, textColor=WHITE,
    alignment=TA_LEFT, spaceAfter=4, spaceBefore=10)

S_SUBSECTION = style("S_SUBSECTION",
    fontName="Helvetica-Bold", fontSize=11, textColor=TEAL,
    spaceBefore=8, spaceAfter=3)

S_BODY = style("S_BODY",
    fontName="Helvetica", fontSize=9.5, textColor=DARK,
    spaceAfter=3, leading=14, alignment=TA_JUSTIFY)

S_BULLET = style("S_BULLET",
    fontName="Helvetica", fontSize=9.5, textColor=DARK,
    leftIndent=14, spaceAfter=2, leading=13,
    bulletIndent=4, bulletFontSize=10)

S_DO = style("S_DO",
    fontName="Helvetica", fontSize=9.5, textColor=GREEN,
    leftIndent=14, spaceAfter=2, leading=13, bulletIndent=4)

S_DONT = style("S_DONT",
    fontName="Helvetica", fontSize=9.5, textColor=RED,
    leftIndent=14, spaceAfter=2, leading=13, bulletIndent=4)

S_WARN = style("S_WARN",
    fontName="Helvetica-Oblique", fontSize=8.5, textColor=ORANGE,
    alignment=TA_CENTER, spaceAfter=4)

S_FOOTER = style("S_FOOTER",
    fontName="Helvetica", fontSize=7.5, textColor=MID_GREY,
    alignment=TA_CENTER)

S_TH = style("S_TH",
    fontName="Helvetica-Bold", fontSize=9, textColor=WHITE,
    alignment=TA_CENTER)

S_TD = style("S_TD",
    fontName="Helvetica", fontSize=9, textColor=DARK,
    alignment=TA_LEFT, leading=12)

S_TD_C = style("S_TD_C",
    fontName="Helvetica", fontSize=9, textColor=DARK,
    alignment=TA_CENTER, leading=12)

# ── Helper: section header band ──────────────────────────────────
def section_header(text, bg=TEAL):
    data = [[Paragraph(text, S_SECTION)]]
    t = Table(data, colWidths=[W - 3.6*cm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 10),
        ("RIGHTPADDING",  (0,0), (-1,-1), 10),
        ("ROUNDEDCORNERS", [5, 5, 5, 5]),
    ]))
    return t

def bullet(text, sty=S_BULLET, sym="•"):
    return Paragraph(f"{sym}  {text}", sty)

def do_item(text):
    return Paragraph(f"✔  {text}", S_DO)

def dont_item(text):
    return Paragraph(f"✘  {text}", S_DONT)

# ── Build story ───────────────────────────────────────────────────
story = []

# ═══ COVER BANNER ════════════════════════════════════════════════
banner_data = [[
    Paragraph("PERSONALISED HEALTH PLAN", S_TITLE),
]]
banner = Table(banner_data, colWidths=[W - 3.6*cm])
banner.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), TEAL),
    ("TOPPADDING",    (0,0), (-1,-1), 18),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
]))
story.append(banner)

sub_data = [[Paragraph("Diet Plan  •  Exercise Guide  •  Do's & Don'ts", S_SUBTITLE)]]
sub_t = Table(sub_data, colWidths=[W - 3.6*cm])
sub_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), colors.HexColor("#004F59")),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 12),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("RIGHTPADDING",  (0,0), (-1,-1), 12),
]))
story.append(sub_t)
story.append(Spacer(1, 6))

# Patient details bar
pat_data = [[
    Paragraph("<b>Patient:</b> Mr. Kalipada Jena", S_PATIENT),
    Paragraph("<b>Age/Sex:</b> 45 Years / Male", S_PATIENT),
    Paragraph("<b>Date:</b> June 17, 2026", S_PATIENT),
]]
pat_t = Table(pat_data, colWidths=[(W-3.6*cm)/3]*3)
pat_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), ORANGE),
    ("TOPPADDING",    (0,0), (-1,-1), 7),
    ("BOTTOMPADDING", (0,0), (-1,-1), 7),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
]))
story.append(pat_t)
story.append(Spacer(1, 8))

# Diagnosis summary box
diag_rows = [
    [Paragraph("<b>DIAGNOSIS SUMMARY</b>", style("DH", fontName="Helvetica-Bold", fontSize=10, textColor=TEAL, alignment=TA_CENTER))],
    [Table([
        [
            Paragraph("🔴 Rheumatoid Arthritis\nAnti-CCP: 95.4 U/ml (Strong +)\nRF: 100 IU/ml (Elevated)", S_BODY),
            Paragraph("🟡 Cervical Spondylosis\nC3-4, C4-5, C5-6, C6-7\nDisc protrusions + mild cord indentation", S_BODY),
            Paragraph("🟠 Lumbar Spondylosis\nL1-2 to L5-S1\nDiffuse disc bulge", S_BODY),
            Paragraph("🟡 Borderline High Uric Acid\n7.4 mg/dL\n(Normal male: up to 7.2)", S_BODY),
        ]
    ], colWidths=[(W-5*cm)/4]*4,
    style=[
        ("VALIGN", (0,0), (-1,-1), "TOP"),
        ("LEFTPADDING", (0,0), (-1,-1), 6),
        ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("LINEAFTER", (0,0), (2,0), 0.5, colors.HexColor("#CCCCCC")),
    ])],
]
diag_t = Table(diag_rows, colWidths=[W - 3.6*cm])
diag_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), TEAL_LIGHT),
    ("BACKGROUND",    (0,1), (-1,1), GREY_BG),
    ("TOPPADDING",    (0,0), (-1,-1), 7),
    ("BOTTOMPADDING", (0,0), (-1,-1), 7),
    ("LEFTPADDING",   (0,0), (-1,-1), 10),
    ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ("BOX",           (0,0), (-1,-1), 1, TEAL),
]))
story.append(diag_t)
story.append(Spacer(1, 6))

story.append(Paragraph(
    "⚠  This plan supports your medical treatment — it does NOT replace prescribed medications. "
    "Always follow your rheumatologist's instructions.", S_WARN))
story.append(HRFlowable(width="100%", thickness=0.5, color=MID_GREY))
story.append(Spacer(1, 6))

# ═══ SECTION 1: DIET PLAN ════════════════════════════════════════
story.append(section_header("1.  DAILY DIET PLAN"))
story.append(Spacer(1, 6))

story.append(Paragraph(
    "Based on 2022 ACR Guidelines, a <b>Mediterranean-style anti-inflammatory diet</b> is recommended. "
    "This helps reduce RA joint inflammation, supports spinal disc health, and controls uric acid.", S_BODY))
story.append(Spacer(1, 6))

# Meal table
meal_headers = [
    Paragraph("Time", S_TH),
    Paragraph("Meal", S_TH),
    Paragraph("What to Eat", S_TH),
]
meals = [
    ["6:30 AM", "On Waking", "2 glasses warm water + juice of ½ lemon (alkalises, helps flush uric acid)"],
    ["7:00 AM", "Breakfast", "Oats with flaxseeds + walnuts + 1 banana  OR  2 multigrain rotis + 1 egg white + vegetable sabzi"],
    ["10:00 AM", "Mid-Morning", "1 handful almonds/walnuts + 1 fruit (apple, pear, orange, guava)"],
    ["1:00 PM", "Lunch", "2 rotis (wheat/multigrain) + 1 cup dal + 1 cup vegetable curry + salad (cucumber, carrot, tomato) + low-fat curd"],
    ["4:00 PM", "Snack", "1 cup green tea (no sugar) + roasted chana  OR  1 seasonal fruit"],
    ["7:30 PM", "Dinner", "1–2 rotis + fish curry (rohu/salmon) 3×/week  OR  vegetable khichdi + 1 cup vegetable soup"],
    ["9:30 PM", "Bedtime", "1 glass warm turmeric milk (haldi doodh — natural anti-inflammatory)"],
]
meal_data = [meal_headers]
for row in meals:
    meal_data.append([
        Paragraph(row[0], S_TD_C),
        Paragraph(f"<b>{row[1]}</b>", S_TD),
        Paragraph(row[2], S_TD),
    ])

meal_t = Table(meal_data, colWidths=[1.8*cm, 2.8*cm, W-3.6*cm-1.8*cm-2.8*cm])
meal_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), TEAL),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, TEAL_LIGHT]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(meal_t)
story.append(Spacer(1, 10))

# Best foods to include
story.append(Paragraph("Best Foods to Include (Anti-Inflammatory)", S_SUBSECTION))

best_foods = [
    [
        [
            Paragraph("<b>For RA + Spine Health</b>", style("BFH", fontName="Helvetica-Bold", fontSize=9.5, textColor=GREEN)),
            bullet("Fatty fish: Rohu, catla, salmon (2–3×/week) — omega-3 reduces joint inflammation"),
            bullet("Turmeric (haldi) — daily in cooking or warm milk; curcumin is a potent anti-inflammatory"),
            bullet("Ginger (adrak) — in tea or cooking daily"),
            bullet("Flaxseeds/chia seeds — 1 tbsp daily; plant-based omega-3"),
            bullet("Walnuts — 5–7 daily"),
            bullet("Dark leafy greens: palak, methi, broccoli, kale"),
            bullet("Colorful vegetables: carrots, capsicum, tomatoes, pumpkin"),
            bullet("Fruits: amla (high Vit C), papaya, oranges, guava, berries"),
            bullet("Whole grains: brown rice, oats, multigrain roti, daliya"),
            bullet("Lentils/dal: masoor, moong (low purine, good protein for RA)"),
            bullet("Olive oil or mustard oil for cooking"),
        ],
        [
            Paragraph("<b>For Uric Acid Control</b>", style("UAH", fontName="Helvetica-Bold", fontSize=9.5, textColor=ORANGE)),
            bullet("Cherries, amla, lemon water — help excrete uric acid"),
            bullet("3–4 litres water daily — flushes uric acid through kidneys"),
            bullet("Low-fat dairy (curd, buttermilk) — clinically shown to lower uric acid"),
            bullet("Alkaline vegetables: cucumber, ash gourd, bitter gourd"),
            Spacer(1, 6),
            Paragraph("<b>Hydration Goal</b>", style("HG", fontName="Helvetica-Bold", fontSize=9.5, textColor=TEAL)),
            bullet("Minimum 3–4 litres of water per day"),
            bullet("Coconut water 1 glass/day is beneficial"),
            bullet("Avoid sugary drinks completely"),
            bullet("Herbal teas (ginger, turmeric, green tea) encouraged"),
        ]
    ]
]

bf_inner = Table(
    [[best_foods[0][0], best_foods[0][1]]],
    colWidths=[(W-3.6*cm)/2]*2,
)
bf_inner.setStyle(TableStyle([
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("BACKGROUND",    (0,0), (0,0), GREEN_LT),
    ("BACKGROUND",    (1,0), (1,0), ORANGE_LT),
    ("BOX",           (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
    ("LINEAFTER",     (0,0), (0,0), 0.5, colors.HexColor("#CCCCCC")),
]))
story.append(bf_inner)
story.append(Spacer(1, 10))

# ═══ SECTION 2: FOODS TO AVOID ═══════════════════════════════════
story.append(section_header("2.  FOODS TO AVOID", bg=RED))
story.append(Spacer(1, 6))

avoid_headers = [
    Paragraph("Food / Drink", S_TH),
    Paragraph("Why Avoid", S_TH),
    Paragraph("Impact On", S_TH),
]
avoid_items = [
    ["Red meat (mutton, beef, pork)", "High purines; promotes systemic inflammation", "RA + Uric Acid"],
    ["Organ meats (liver, kidney, brain)", "Extremely high purines — strongest uric acid trigger", "Uric Acid + RA"],
    ["Alcohol (especially beer)", "Sharply raises uric acid; worsens RA disease activity", "RA + Uric Acid"],
    ["Sugary cold drinks & packaged juice", "Pro-inflammatory sugar load; worsens joint swelling", "RA + Spine"],
    ["Fried & ultra-processed foods", "Trans fats drive systemic inflammation", "RA + Spine"],
    ["Maida / white bread / refined carbs", "Spikes blood sugar → increases inflammatory markers", "RA"],
    ["Excess seafood (prawns, crab, shellfish)", "Very high purines — uric acid trigger", "Uric Acid"],
    ["Excess salt", "Worsens fluid retention and joint swelling", "RA + Spine"],
    ["Crash diets / extreme fasting", "Rapidly raises uric acid; weakens joints and immunity", "All Conditions"],
]
avoid_data = [avoid_headers]
for row in avoid_items:
    avoid_data.append([
        Paragraph(f"<b>{row[0]}</b>", S_TD),
        Paragraph(row[1], S_TD),
        Paragraph(row[2], S_TD_C),
    ])

cw_avoid = [5.5*cm, W-3.6*cm-5.5*cm-3*cm, 3*cm]
avoid_t = Table(avoid_data, colWidths=cw_avoid)
avoid_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), RED),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, RED_LT]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(avoid_t)
story.append(Spacer(1, 10))

# ═══ SECTION 3: EXERCISE PLAN ════════════════════════════════════
story.append(section_header("3.  EXERCISE PLAN", bg=GREEN))
story.append(Spacer(1, 6))

story.append(Paragraph(
    "Exercise is <b>strongly recommended</b> even with active RA (ACR 2022 Guidelines). Movement preserves "
    "joint function and reduces pain. However, your cervical and lumbar disc protrusions require certain "
    "movements to be avoided. Target: <b>150 min of aerobic exercise per week.</b>", S_BODY))
story.append(Spacer(1, 6))

# Phase 1
story.append(Paragraph("Phase 1 — Weeks 1 to 4: Gentle Start", S_SUBSECTION))

ex_left = [
    Paragraph("<b>Morning Routine (20–25 min)</b>", style("EH", fontName="Helvetica-Bold", fontSize=9.5, textColor=TEAL)),
    bullet("Warm water shower/soak on neck and lower back — 5 min to loosen stiffness"),
    bullet("Deep breathing (Pranayama) — Anulom Vilom, Bhramari — 5 min"),
    bullet("Chin tucks — pull chin straight back, hold 3 sec — 10 reps (safe for cervical discs)"),
    bullet("Gentle lateral neck bend — ear toward shoulder, hold 5 sec — 5 each side (NO full neck rotations)"),
    bullet("Shoulder rolls — forward and backward — 10 each"),
    bullet("Wrist & finger exercises (crucial for RA): finger bends, fist squeeze, wrist circles — 10 reps each"),
    Spacer(1, 4),
    Paragraph("<b>Tip:</b> Soak hands in warm water before finger exercises to reduce morning stiffness.",
              style("TIP", fontName="Helvetica-Oblique", fontSize=8.5, textColor=ORANGE, leftIndent=14)),
]

ex_right = [
    Paragraph("<b>Evening Routine (20–30 min)</b>", style("EH2", fontName="Helvetica-Bold", fontSize=9.5, textColor=TEAL)),
    bullet("Flat-surface walking with comfortable footwear — 20–30 min (start with 10 min, build up)"),
    bullet("Pelvic tilts (lying on back, flat surface) — 10 reps"),
    bullet("Knee-to-chest stretch — hold 20 sec, alternate legs — 5 each side"),
    bullet("Partial bridge — raise buttocks slowly, hold 5 sec — 10 reps"),
    bullet("Ankle pumps and leg raises — 10 reps (promotes circulation)"),
    Spacer(1, 4),
    Paragraph("<b>Phase 2 (from Week 5, if pain allows)</b>",
              style("P2H", fontName="Helvetica-Bold", fontSize=9.5, textColor=GREEN)),
    bullet("Swimming or water aerobics — BEST for RA + spondylosis (no joint impact)"),
    bullet("Gentle yoga: Tadasana, Shavasana, Balasana (child's pose), low-height Bhujangasana"),
    bullet("Stationary cycling (low resistance)"),
    bullet("Target: 150 min aerobic exercise/week total"),
]

ex_t = Table([[ex_left, ex_right]], colWidths=[(W-3.6*cm)/2]*2)
ex_t.setStyle(TableStyle([
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ("TOPPADDING",    (0,0), (-1,-1), 6),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("BACKGROUND",    (0,0), (-1,-1), GREEN_LT),
    ("BOX",           (0,0), (-1,-1), 0.5, GREEN),
    ("LINEAFTER",     (0,0), (0,0), 0.5, colors.HexColor("#CCCCCC")),
]))
story.append(ex_t)
story.append(Spacer(1, 10))

# ═══ SECTION 4: DO'S AND DON'TS ══════════════════════════════════
story.append(section_header("4.  DO'S AND DON'TS"))
story.append(Spacer(1, 6))

dos_list = [
    "Use a firm, supportive mattress — sleep on your back or side with a pillow between knees",
    "Use a cervical/contoured orthopedic pillow for neck support while sleeping",
    "Maintain good posture — ears directly above shoulders; keep back straight when sitting",
    "Take short breaks every 30–45 min of desk work — stand and walk briefly",
    "Use ergonomic chair with proper lumbar (lower back) support",
    "Apply warm compress on stiff joints in the morning; cold pack after exercise-related swelling",
    "Drink 3–4 litres of water daily",
    "Get 15–20 min of morning sun exposure on arms/legs (Vitamin D for bone health)",
    "Get 7–8 hours of quality sleep nightly — RA fatigue is real; sleep restores joints",
    "Maintain healthy body weight — even 5 kg weight loss reduces joint load significantly",
    "Track joint pain and swelling daily to identify flare triggers",
    "See your rheumatologist every 3 months for RA monitoring and medication review",
    "Cook with turmeric, ginger, and garlic every day as natural anti-inflammatories",
    "Practice meditation or prayer for 10–15 min daily — stress worsens RA flares",
    "Discuss Omega-3, Vitamin D3, Calcium supplements with your doctor",
]

donts_list = [
    "Do NOT do heavy weight lifting or upper body resistance training — risks cervical disc injury",
    "Do NOT do full neck rotations (360°) or neck extension backward — dangerous with your MRI findings",
    "Do NOT do high-impact exercises — running on hard surfaces, jumping, contact sports",
    "Do NOT sit or stand in one position for more than 45 minutes without moving",
    "Do NOT sleep on your stomach — puts severe strain on cervical spine",
    "Do NOT carry heavy bags on one shoulder — use both straps or a trolley",
    "Do NOT look down at your phone for long periods ('text neck' worsens cervical spondylosis)",
    "Do NOT do full sit-ups with spinal flexion — strains lumbar discs",
    "Do NOT push through severe pain during exercise — rest and consult your doctor",
    "Do NOT ignore hand/finger swelling or new numbness/tingling — signals RA flare or nerve compression",
    "Do NOT smoke — smoking significantly worsens RA disease activity and cervical disc disease",
    "Do NOT eat organ meats, excess red meat, alcohol, or shellfish — raises uric acid toward gout",
    "Do NOT skip meals — low blood sugar increases inflammatory perception",
    "Do NOT self-medicate with steroids or NSAIDs (ibuprofen, diclofenac) without doctor guidance",
    "Do NOT follow crash diets or extreme fasting — weakens joints and spikes uric acid",
]

dos_col  = [[Paragraph("<b>✔  DO'S</b>", style("DCH", fontName="Helvetica-Bold", fontSize=10.5, textColor=GREEN, alignment=TA_CENTER))]]
donts_col = [[Paragraph("<b>✘  DON'TS</b>", style("DNH", fontName="Helvetica-Bold", fontSize=10.5, textColor=RED, alignment=TA_CENTER))]]

for d in dos_list:
    dos_col.append([do_item(d)])
for d in donts_list:
    donts_col.append([dont_item(d)])

# Pad to equal length
while len(dos_col) < len(donts_col):
    dos_col.append([Spacer(1,2)])
while len(donts_col) < len(dos_col):
    donts_col.append([Spacer(1,2)])

dd_rows = [[dos_col[i][0], donts_col[i][0]] for i in range(len(dos_col))]
dd_t = Table(dd_rows, colWidths=[(W-3.6*cm)/2]*2)
dd_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,0), GREEN),
    ("BACKGROUND",    (1,0), (1,0), RED),
    ("ROWBACKGROUNDS",(0,1), (0,-1), [GREEN_LT, WHITE]),
    ("ROWBACKGROUNDS",(1,1), (1,-1), [RED_LT, WHITE]),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("RIGHTPADDING",  (0,0), (-1,-1), 8),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ("BOX",           (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
    ("LINEAFTER",     (0,0), (0,-1), 0.5, colors.HexColor("#CCCCCC")),
]))
story.append(dd_t)
story.append(Spacer(1, 10))

# ═══ SECTION 5: SUPPLEMENTS ══════════════════════════════════════
story.append(section_header("5.  SUPPLEMENTS (Discuss with Your Doctor)", bg=ORANGE))
story.append(Spacer(1, 6))

supp_headers = [
    Paragraph("Supplement", S_TH),
    Paragraph("Typical Dose", S_TH),
    Paragraph("Benefit", S_TH),
]
supps = [
    ["Omega-3 Fish Oil", "2–3 g/day (EPA+DHA)", "Reduces RA joint inflammation and morning stiffness"],
    ["Vitamin D3", "1000–2000 IU/day", "Bone health, immune modulation in RA, supports spine"],
    ["Calcium", "500–1000 mg/day", "Bone health — especially important if on steroids"],
    ["Turmeric / Curcumin extract", "500 mg twice daily", "Natural anti-inflammatory; supports joint health"],
    ["Vitamin C (amla preferred)", "High dietary intake", "Helps uric acid excretion; antioxidant for joints"],
]
supp_data = [supp_headers]
for row in supps:
    supp_data.append([Paragraph(f"<b>{row[0]}</b>", S_TD), Paragraph(row[1], S_TD_C), Paragraph(row[2], S_TD)])

supp_t = Table(supp_data, colWidths=[4.5*cm, 3.5*cm, W-3.6*cm-4.5*cm-3.5*cm])
supp_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), ORANGE),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ORANGE_LT]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(supp_t)
story.append(Spacer(1, 10))

# ═══ SECTION 6: FOLLOW-UP ════════════════════════════════════════
story.append(section_header("6.  MEDICAL FOLLOW-UP SCHEDULE"))
story.append(Spacer(1, 6))

fu_headers = [
    Paragraph("Appointment", S_TH),
    Paragraph("Frequency", S_TH),
    Paragraph("Purpose", S_TH),
]
fu_items = [
    ["Rheumatologist", "Every 3 months", "RA monitoring, DMARD/biologic medication adjustment"],
    ["Repeat Anti-CCP + RF", "After 6 months of treatment", "Assess treatment response for RA"],
    ["Uric Acid blood test", "Every 3 months", "Currently borderline — diet alone may normalize it"],
    ["MRI Cervical Spine", "Repeat in 12 months", "Or earlier if numbness/weakness in arms/hands worsens"],
    ["Physiotherapy", "2–3 sessions/week initially", "Supervised exercises for cervical disc disease + RA"],
    ["Eye examination", "Yearly", "RA medications (e.g., hydroxychloroquine) need eye monitoring"],
]
fu_data = [fu_headers]
for row in fu_items:
    fu_data.append([Paragraph(f"<b>{row[0]}</b>", S_TD), Paragraph(row[1], S_TD_C), Paragraph(row[2], S_TD)])

fu_t = Table(fu_data, colWidths=[4*cm, 4*cm, W-3.6*cm-4*cm-4*cm])
fu_t.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), TEAL),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, TEAL_LIGHT]),
    ("GRID",          (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(fu_t)
story.append(Spacer(1, 12))

# ═══ FOOTER ══════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.8, color=TEAL))
story.append(Spacer(1, 4))
story.append(Paragraph(
    "Sources: 2022 ACR Guidelines for RA Exercise & Diet (PMID: 37227071) • "
    "Firestein & Kelley's Textbook of Rheumatology • Harrison's Principles of Internal Medicine 22E • "
    "Robbins & Kumar Pathology",
    S_FOOTER))
story.append(Spacer(1, 3))
story.append(Paragraph(
    "This document is for informational and lifestyle support purposes only. "
    "Always consult your treating physician before making changes to your medication or exercise regimen.",
    S_FOOTER))

# ── Build PDF ─────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
Running Command

cd /home/daytona/workspace/kalipada-health-plan && python generate_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/kalipada-health-plan/Kalipada_Health_Plan.pdf

Your PDF is ready! Here's your download link:

Kalipada Health Plan

PDF Document · PDF

The PDF is a fully formatted, colour-coded document containing:
  • Cover banner with patient name, date, and diagnosis summary (RA, cervical spondylosis, lumbar spondylosis, borderline uric acid)
  • Daily Diet Plan - full 7-meal timetable with foods listed
  • Foods to Avoid - table with reasons and which condition each affects
  • Exercise Plan - Phase 1 (weeks 1-4) morning + evening routines, Phase 2 progression (swimming, yoga, cycling)
  • Do's & Don'ts - side-by-side table (15 do's / 15 don'ts) colour-coded green and red
  • Supplements - 5 key supplements with doses and benefits
  • Follow-up Schedule - 6 appointments with timing and purpose
  • Source citations at the footer (ACR 2022 Guidelines, Harrison's, Kelley's Rheumatology)
This is a shared conversation. Sign in to Orris to start your own chat.