Hi
Im 25 years old
I am suspecting hyperparathyroidism, i recently saw symptoms and i think i might have this and most recently i also had kidney stones then i did a blood test for ca it was mildly high but i didnt check pth hormone yet and tell me what should i do until i check the pth level and also what steps should i take and what should i eat more and what should i eat less and also i sometimes have bone pain
primary hyperparathyroidism management guidelines
primary hyperparathyroidism dietary advice calcium intake kidney stones what to eat avoid
| Test | Why |
|---|---|
| PTH (intact/whole) | If elevated alongside high calcium = confirms PHPT |
| 24-hour urine calcium | Measures how much calcium your kidneys are excreting |
| Serum phosphate | PTH lowers phosphate - low phosphate supports PHPT |
| Vitamin D (25-OH) | Low vitamin D can falsely lower calcium AND raise PTH |
| Serum creatinine / eGFR | Assess kidney function from the stone history |
| Alkaline phosphatase | Elevated if there is significant bone turnover |
| DEXA bone scan | Check bone density - especially important given bone pain at your age |
| Renal ultrasound | Check for any remaining stones or nephrocalcinosis |
| Food / Category | Why It Helps |
|---|---|
| Water, water, water | Dilutes urine, prevents stone re-formation |
| Dietary calcium from food (milk, yogurt, cheese, kefir) | Counterintuitively, food calcium binds oxalate in the gut and prevents it from reaching the kidneys. Do NOT restrict calcium from food. |
| Citrus fruits (lemons, oranges, limes) | High in citrate - inhibits calcium stone formation |
| Fruits and vegetables (most of them) | Provide potassium and alkalize urine |
| Plant-based proteins (lentils, beans, tofu) | Less urine calcium excretion than animal protein |
| Omega-3 rich foods (salmon, mackerel, walnuts, flaxseed) | May help lower urinary calcium |
| Food / Category | Why to Reduce |
|---|---|
| High-sodium / salty foods (processed foods, chips, canned soups, deli meats, fast food) | Salt makes kidneys excrete MORE calcium into urine - directly worsens stone risk |
| Animal protein in large amounts (red meat, chicken, fish in excess) | Increases urinary calcium and uric acid |
| High-oxalate foods (spinach, almonds, dark chocolate, beets, rhubarb, nuts, wheat bran) | Oxalate combines with calcium to form stones |
| Vitamin C supplements | Converts to oxalate in the body |
| Calcium supplements | Unlike food calcium, supplements can worsen hypercalcemia and stones - avoid unless a doctor specifically tells you otherwise |
| Caffeine in excess | Mild calcium-wasting through urine |
| Alcohol | Dehydrating, raises calcium levels |
Important disclaimer: This is educational information based on medical textbooks (Robbins Pathology, Miller's Anesthesia, Brenner's Kidney). It is not a substitute for evaluation by your doctor. Please see an endocrinologist soon given your age and symptoms - do not delay getting the PTH checked.
Create a printable meal plan for kidney stone + hyperparathyroidism prevention
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace not found"
mkdir -p /home/daytona/workspace/meal-plan && echo "dir created"
~/meal-plan/generate_meal_plan.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm, cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/meal-plan/Kidney_Stone_Hyperparathyroidism_Meal_Plan.pdf"
# ── Colour palette ───────────────────────────────────────────────────────────
TEAL = colors.HexColor("#1A7A8A")
LIGHT_TEAL = colors.HexColor("#D6EFF2")
MID_TEAL = colors.HexColor("#4DAAB8")
ORANGE = colors.HexColor("#E07B2E")
LIGHT_ORANGE= colors.HexColor("#FDF0E6")
YELLOW = colors.HexColor("#F5C842")
LIGHT_YELLOW= colors.HexColor("#FFFBE6")
WHITE = colors.white
DARK_GREY = colors.HexColor("#333333")
MID_GREY = colors.HexColor("#666666")
LIGHT_GREY = colors.HexColor("#F5F5F5")
GREEN = colors.HexColor("#2E8B57")
LIGHT_GREEN = colors.HexColor("#E8F5EE")
RED_LIGHT = colors.HexColor("#FDEDED")
RED = colors.HexColor("#C0392B")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
title_style = S("Title2", fontName="Helvetica-Bold", fontSize=22,
textColor=WHITE, alignment=TA_CENTER, spaceAfter=2)
subtitle_style = S("Sub2", fontName="Helvetica", fontSize=11,
textColor=LIGHT_TEAL, alignment=TA_CENTER, spaceAfter=4)
section_hdr = S("SecHdr", fontName="Helvetica-Bold", fontSize=13,
textColor=WHITE, alignment=TA_CENTER)
day_hdr = S("DayHdr", fontName="Helvetica-Bold", fontSize=11,
textColor=WHITE, alignment=TA_LEFT)
meal_label = S("MealLbl", fontName="Helvetica-Bold", fontSize=9,
textColor=TEAL, spaceAfter=1)
body_small = S("Body8", fontName="Helvetica", fontSize=8.5,
textColor=DARK_GREY, leading=12)
body_bold = S("Body8B", fontName="Helvetica-Bold", fontSize=8.5,
textColor=DARK_GREY)
tip_style = S("Tip", fontName="Helvetica-Oblique", fontSize=8,
textColor=MID_GREY, leading=11)
note_bold = S("NoteBold", fontName="Helvetica-Bold", fontSize=9,
textColor=DARK_GREY)
note_body = S("NoteBody", fontName="Helvetica", fontSize=8.5,
textColor=DARK_GREY, leading=12)
footer_s = S("Footer", fontName="Helvetica-Oblique", fontSize=7,
textColor=MID_GREY, alignment=TA_CENTER)
green_hdr = S("GreenHdr", fontName="Helvetica-Bold", fontSize=10,
textColor=WHITE, alignment=TA_LEFT)
red_hdr = S("RedHdr", fontName="Helvetica-Bold", fontSize=10,
textColor=WHITE, alignment=TA_LEFT)
# ── 7-Day Meal Data ──────────────────────────────────────────────────────────
DAYS = [
{
"day": "DAY 1 – Monday",
"breakfast": [
"Oatmeal with low-fat milk + sliced banana",
"1 boiled egg",
"Lemon water (300 ml)"
],
"snack_am": ["Greek yogurt (plain, low-fat)", "Orange slices"],
"lunch": [
"Grilled chicken breast (90 g) + steamed broccoli + quinoa",
"Side salad: romaine, cucumber, olive oil & lemon dressing"
],
"snack_pm": ["Apple + small piece of mozzarella", "Water with lemon"],
"dinner": [
"Baked salmon fillet (100 g) with herbs",
"Steamed carrots + small baked potato (no skin)",
"Glass of water or chamomile tea"
],
"tip": "Tip: Aim for 2.5–3 L of fluid today. Start every meal with a glass of water."
},
{
"day": "DAY 2 – Tuesday",
"breakfast": [
"Scrambled eggs (2) with sautéed bell peppers & tomatoes",
"1 slice whole-grain toast",
"Lemon water (300 ml)"
],
"snack_am": ["Low-fat yogurt + kiwi slices"],
"lunch": [
"Lentil soup (1 cup) with carrots and celery",
"Small whole-grain roll",
"Mixed greens salad with olive oil"
],
"snack_pm": ["Handful of grapes + 30 g ricotta on rice cake"],
"dinner": [
"Turkey mince stir-fry with bell peppers, zucchini, onion",
"Brown rice (½ cup cooked)",
"Water with cucumber slices"
],
"tip": "Tip: Avoid processed/canned foods today — they are high in sodium which raises urinary calcium."
},
{
"day": "DAY 3 – Wednesday",
"breakfast": [
"Whole-grain cereal with low-fat milk + blueberries",
"Hard-boiled egg",
"Lemon water"
],
"snack_am": ["Watermelon slices (citrate-rich)", "Water"],
"lunch": [
"Tofu & vegetable stir-fry (broccoli, snap peas, carrots)",
"½ cup brown rice",
"Sparkling water with lime"
],
"snack_pm": ["Low-fat cheese stick + pear"],
"dinner": [
"Grilled white fish (cod/tilapia) with lemon & herbs",
"Roasted sweet potato + green beans",
"Herbal tea (no sugar)"
],
"tip": "Tip: Pair calcium-rich foods (dairy, tofu) with meals — this binds oxalate in the gut and reduces stone risk."
},
{
"day": "DAY 4 – Thursday",
"breakfast": [
"Smoothie: low-fat milk + banana + strawberries (no spinach)",
"2 rice cakes with a thin spread of avocado"
],
"snack_am": ["Orange + handful of sunflower seeds (lightly salted or unsalted)"],
"lunch": [
"Chicken & vegetable soup (homemade, low sodium)",
"Small whole-grain bread roll",
"Lemon water"
],
"snack_pm": ["Greek yogurt + melon cubes"],
"dinner": [
"Bean & vegetable chili (kidney beans, tomato, zucchini, corn)",
"Small portion of plain rice",
"Water with lemon juice"
],
"tip": "Tip: Use herbs and lemon juice to flavour food instead of salt."
},
{
"day": "DAY 5 – Friday",
"breakfast": [
"2 egg omelette with low-fat cheese & tomato",
"1 slice whole-grain toast",
"Lemon water or orange juice (small glass)"
],
"snack_am": ["Kefir (small cup) — high in calcium, gut-friendly"],
"lunch": [
"Canned salmon (in water, rinsed) salad with romaine, tomato, cucumber",
"Lemon-olive oil dressing",
"Water"
],
"snack_pm": ["Apple + low-fat yogurt"],
"dinner": [
"Grilled chicken thigh (skinless, 90 g) + roasted broccoli + boiled potato",
"Chamomile or peppermint tea"
],
"tip": "Tip: Salmon and canned fish (with bones) are excellent calcium sources — better than supplements."
},
{
"day": "DAY 6 – Saturday",
"breakfast": [
"Pancakes made with oat flour + low-fat milk",
"Fresh berries (strawberries, blueberries)",
"Lemon water"
],
"snack_am": ["Small orange + low-fat cheese"],
"lunch": [
"Vegetable & chickpea curry (light, low-sodium)",
"½ cup basmati rice",
"Water with lime"
],
"snack_pm": ["Banana + small pot of Greek yogurt"],
"dinner": [
"Baked cod or chicken with lemon, garlic & herbs",
"Steamed asparagus + small baked potato (no skin)",
"Herbal tea"
],
"tip": "Tip: Choose plant-based protein (chickpeas, lentils) at least once today — animal protein increases urinary calcium."
},
{
"day": "DAY 7 – Sunday",
"breakfast": [
"Oatmeal with milk + sliced banana + cinnamon",
"1 boiled egg",
"Fresh-squeezed lemon water"
],
"snack_am": ["Fruit salad: melon, kiwi, orange, grapes"],
"lunch": [
"Grilled salmon + quinoa salad with cucumber, tomato, lemon dressing",
"Sparkling water with lime"
],
"snack_pm": ["Low-fat yogurt + strawberries"],
"dinner": [
"Homemade turkey or chicken meatballs (low sodium) in tomato sauce",
"Whole-grain pasta (small portion)",
"Steamed broccoli",
"Herbal tea or lemon water"
],
"tip": "Tip: End the week strong — check your urine colour. Pale yellow = well hydrated. Dark = drink more!"
}
]
MEAL_LABELS = ["Breakfast", "Morning Snack", "Lunch", "Afternoon Snack", "Dinner"]
MEAL_KEYS = ["breakfast", "snack_am", "lunch", "snack_pm", "dinner"]
MEAL_ICONS = ["☀", "🍎", "🥗", "🫐", "🌙"]
# Foods to eat / avoid
EAT_MORE = [
("💧 Water + Lemon", "2.5–3 L daily. Add fresh lemon juice for urinary citrate."),
("🥛 Dairy (food only)", "Milk, yogurt, kefir, ricotta — 1,000 mg calcium/day from food."),
("🐟 Salmon / Sardines", "Rich in omega-3 and calcium (with bones). Reduces urinary calcium."),
("🍊 Citrus Fruits", "Oranges, lemons, limes, kiwi — high in citrate, inhibit stone formation."),
("🥦 Vegetables", "Broccoli, carrots, bell peppers, zucchini, asparagus, green beans."),
("🫘 Plant Proteins", "Lentils, chickpeas, beans, tofu — lower urinary calcium vs. meat."),
("🍌 Potassium-rich fruits", "Banana, melon, grapes — alkalise urine and support bone health."),
("🌾 Whole grains", "Oats, quinoa, brown rice, whole-grain bread — fibre and nutrients."),
]
EAT_LESS = [
("🧂 High-sodium foods", "Canned soups, processed meats, chips, fast food, pickles. Salt raises urinary calcium."),
("🥩 Excess animal protein", "Red meat, large portions of chicken/fish — increases uric acid & calcium in urine."),
("🌿 High-oxalate foods", "Spinach, almonds, dark chocolate, beets, rhubarb, wheat bran, peanuts."),
("💊 Calcium supplements", "Avoid unless doctor-prescribed — food calcium is safe; supplement calcium can worsen hypercalcaemia."),
("🍬 Vitamin C supplements", "Converts to oxalate in the body. Get vitamin C from fruit instead."),
("🥤 Cola / Soda", "Phosphoric acid in cola damages kidneys and promotes stone formation."),
("🍺 Alcohol", "Dehydrating. Raises serum calcium. Limit to zero or rarely."),
("☕ Excess caffeine", "Mild calcium-wasting through urine. 1–2 cups coffee/day maximum."),
]
HYDRATION_TIPS = [
"Start every morning with 300 ml of warm water + fresh lemon juice.",
"Keep a 1 L water bottle visible at all times and refill it 2–3 × daily.",
"Add cucumber, lemon, lime or mint to water to make it more enjoyable.",
"Drink a full glass of water before and after every meal.",
"Set phone reminders every 2 hours if you forget to drink.",
"Urine colour check: pale straw yellow = hydrated. Dark yellow = drink more now.",
]
DISCLAIMER = (
"This meal plan is for educational purposes only and is based on general dietary guidelines for "
"kidney stone prevention and hypercalcaemia management. It is NOT a substitute for individualised "
"medical or dietetic advice. Always consult your endocrinologist, nephrologist, or registered "
"dietitian before making significant dietary changes, especially when awaiting diagnostic results."
)
# ── Build PDF ────────────────────────────────────────────────────────────────
def header_table(text, bg=TEAL, style=section_hdr, h=10*mm):
t = Table([[Paragraph(text, style)]], colWidths=[170*mm], rowHeights=[h])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROUNDEDCORNERS", [4]),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return t
def day_table(day_data):
rows = []
# Day header row
rows.append([Paragraph(day_data["day"], day_hdr), ""])
for key, label, icon in zip(MEAL_KEYS, MEAL_LABELS, MEAL_ICONS):
items = day_data[key]
items_text = "<br/>".join(f"• {i}" for i in items)
rows.append([
Paragraph(f"<b>{icon} {label}</b>", meal_label),
Paragraph(items_text, body_small)
])
rows.append([Paragraph(day_data["tip"], tip_style), ""])
col_w = [45*mm, 125*mm]
t = Table(rows, colWidths=col_w)
style = TableStyle([
# Day header
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("SPAN", (0,0), (-1,0)),
("TOPPADDING", (0,0), (-1,0), 7),
("BOTTOMPADDING", (0,0), (-1,0), 7),
("LEFTPADDING", (0,0), (-1,0), 10),
# Alternating meal rows
("BACKGROUND", (0,1), (-1,1), LIGHT_TEAL),
("BACKGROUND", (0,2), (-1,2), WHITE),
("BACKGROUND", (0,3), (-1,3), LIGHT_TEAL),
("BACKGROUND", (0,4), (-1,4), WHITE),
("BACKGROUND", (0,5), (-1,5), LIGHT_TEAL),
# Tip row
("BACKGROUND", (0,6), (-1,6), LIGHT_YELLOW),
("SPAN", (0,6), (-1,6)),
# All rows
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,1), (-1,-1), 5),
("BOTTOMPADDING", (0,1), (-1,-1), 5),
("LINEBELOW", (0,0), (-1,-2), 0.3, colors.HexColor("#CCCCCC")),
("BOX", (0,0), (-1,-1), 0.5, TEAL),
])
t.setStyle(style)
return t
def build_pdf():
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
topMargin=15*mm, bottomMargin=15*mm,
leftMargin=20*mm, rightMargin=20*mm,
title="Kidney Stone & Hyperparathyroidism Meal Plan",
author="Orris Health"
)
story = []
W = 170*mm # usable width
# ── COVER / TITLE BLOCK ──────────────────────────────────────────────────
cover_data = [[
Paragraph("7-DAY MEAL PLAN", title_style),
Paragraph("Kidney Stone & Hyperparathyroidism Prevention", subtitle_style),
Paragraph("Prepared for a 25-year-old with suspected primary hyperparathyroidism", S("cov3", fontName="Helvetica-Oblique", fontSize=9, textColor=LIGHT_TEAL, alignment=TA_CENTER)),
]]
cover_t = Table([[Paragraph("7-DAY MEAL PLAN", title_style)],
[Paragraph("Kidney Stone & Hyperparathyroidism Prevention", subtitle_style)],
[Paragraph("Prepared for a 25-year-old with suspected primary hyperparathyroidism",
S("c3", fontName="Helvetica-Oblique", fontSize=9, textColor=LIGHT_TEAL, alignment=TA_CENTER))],
[Paragraph("June 2026 • Orris Health Assistant",
S("c4", fontName="Helvetica", fontSize=8, textColor=MID_TEAL, alignment=TA_CENTER))],
],
colWidths=[W])
cover_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1.5, MID_TEAL),
]))
story.append(cover_t)
story.append(Spacer(1, 8*mm))
# ── KEY RULES BANNER ────────────────────────────────────────────────────
rules_data = [
[Paragraph("💧 3 L water/day", body_bold),
Paragraph("🧂 Low sodium", body_bold),
Paragraph("🚫 No Ca-supplements", body_bold),
Paragraph("🍊 Citrus daily", body_bold)],
]
rules_t = Table(rules_data, colWidths=[W/4]*4)
rules_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_TEAL),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("BOX", (0,0), (-1,-1), 0.5, TEAL),
("INNERGRID", (0,0), (-1,-1), 0.3, MID_TEAL),
]))
story.append(rules_t)
story.append(Spacer(1, 6*mm))
# ── EAT MORE / EAT LESS ──────────────────────────────────────────────────
eat_hdr = Table([
[Paragraph("✅ EAT MORE", green_hdr), Paragraph("🚫 LIMIT / AVOID", red_hdr)]
], colWidths=[W/2, W/2])
eat_hdr.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), GREEN),
("BACKGROUND", (1,0), (1,0), RED),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 0.5, colors.grey),
]))
story.append(eat_hdr)
eat_rows = []
max_rows = max(len(EAT_MORE), len(EAT_LESS))
for i in range(max_rows):
left = right = Paragraph("", body_small)
if i < len(EAT_MORE):
name, desc = EAT_MORE[i]
left = Paragraph(f"<b>{name}</b><br/>{desc}", body_small)
if i < len(EAT_LESS):
name, desc = EAT_LESS[i]
right = Paragraph(f"<b>{name}</b><br/>{desc}", body_small)
eat_rows.append([left, right])
eat_t = Table(eat_rows, colWidths=[W/2, W/2])
eat_ts = TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LINEBELOW", (0,0), (-1,-2), 0.2, colors.HexColor("#DDDDDD")),
("LINEBEFORE", (1,0), (1,-1), 0.5, colors.HexColor("#CCCCCC")),
("BOX", (0,0), (-1,-1), 0.5, colors.grey),
])
for i in range(0, max_rows, 2):
eat_ts.add("BACKGROUND", (0,i), (0,i), LIGHT_GREEN)
for i in range(0, max_rows, 2):
eat_ts.add("BACKGROUND", (1,i), (1,i), RED_LIGHT)
eat_t.setStyle(eat_ts)
story.append(eat_t)
story.append(Spacer(1, 6*mm))
# ── HYDRATION TIPS ───────────────────────────────────────────────────────
story.append(header_table("💧 DAILY HYDRATION RULES", bg=MID_TEAL, h=8*mm))
story.append(Spacer(1, 2*mm))
hyd_rows = [[Paragraph(f"• {tip}", body_small)] for tip in HYDRATION_TIPS]
hyd_t = Table(hyd_rows, colWidths=[W])
hyd_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_TEAL),
("LEFTPADDING", (0,0), (-1,-1), 12),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("BOX", (0,0), (-1,-1), 0.5, TEAL),
]))
story.append(hyd_t)
# ── PAGE BREAK before meal days ──────────────────────────────────────────
story.append(PageBreak())
# ── 7-DAY MEAL PLAN ──────────────────────────────────────────────────────
story.append(header_table("📅 7-DAY MEAL PLAN", bg=TEAL, h=10*mm))
story.append(Spacer(1, 4*mm))
for i, day in enumerate(DAYS):
story.append(KeepTogether([
day_table(day),
Spacer(1, 4*mm)
]))
# Page break after day 4 to balance pages
if i == 3:
story.append(PageBreak())
story.append(header_table("📅 7-DAY MEAL PLAN (continued)", bg=TEAL, h=10*mm))
story.append(Spacer(1, 4*mm))
# ── DISCLAIMER ───────────────────────────────────────────────────────────
story.append(Spacer(1, 4*mm))
disc_t = Table([[Paragraph(f"⚠ Medical Disclaimer: {DISCLAIMER}", S("disc", fontName="Helvetica-Oblique", fontSize=7.5, textColor=MID_GREY, leading=11))]],
colWidths=[W])
disc_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_YELLOW),
("BOX", (0,0), (-1,-1), 0.5, YELLOW),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
]))
story.append(disc_t)
doc.build(story)
print(f"PDF saved: {OUTPUT}")
build_pdf()
cd /home/daytona/workspace/meal-plan && python generate_meal_plan.py 2>&1
ls -lh /home/daytona/workspace/meal-plan/
Kidney Stone Hyperparathyroidism Meal Plan
PDF Document · PDF
Whenever i wake up from sleep my talus bone kind of hurts
talus bone pain worse in morning after waking up causes
"Patients with persistent pain (and sometimes instability) in the ankle following an injury should be suspected of having an osteochondral lesion, with MRI or CT usually required for diagnosis." - Bailey and Love's Short Practice of Surgery, 28th Edition, p. 597
See a doctor - ideally get an MRI of the ankle and bring up this symptom when you see your endocrinologist.
Is smoking related to this
smoking hyperparathyroidism calcium PTH bone
smoking effect on parathyroid hormone PTH calcium bone hyperparathyroidism
| Your Problem | Smoking's Effect |
|---|---|
| Bone pain (from HPT) | Makes it worse - adds a second layer of bone damage |
| Hypercalcemia | Disrupts vitamin D and calcium absorption - worsens the hormonal imbalance |
| Kidney stones | Dehydration + higher urinary oxalate = more stones |
| Talus/joint pain | Accelerates cartilage and bone deterioration |
| Future surgery (parathyroidectomy) | Slows healing, raises complication risk |
What happens if I quit smoking - will my bones recover?
smoking cessation bone mineral density recovery
quitting smoking bone recovery bone density improvement timeline evidence
smoking cessation bone mineral density fracture risk
https://www.ncsct.co.uk/library/view/pdf/smoking-and-bone-he…
"Bone health is primarily determined by peak bone mass achieved (usually around 30 years of age) and the rate of bone loss in succeeding years."
"Several studies have shown that BMD is intermediate between people who currently smoke and people who have never smoked, suggesting that the effects of smoking may be partially reversible."
| Factor | Your Situation |
|---|---|
| Age at quitting | 25 - excellent, best possible outcome |
| Years smoked | The fewer pack-years, the more reversible |
| Nutrition (calcium, vitamin D) | You're already working on this via your diet plan |
| Exercise | Weight-bearing exercise accelerates bone recovery |
| Underlying condition | Treating your hyperparathyroidism will also help bones recover |
| Action | Effect on Bones |
|---|---|
| Quit smoking completely | Stops osteoblast suppression, allows PTH/Vit D axis to normalise |
| Weight-bearing exercise (walking, light jogging, resistance training) | Mechanical stress on bones directly stimulates new bone formation |
| 1,000 mg calcium/day from food (dairy, salmon, kefir) | Provides raw material for bone rebuilding |
| Vitamin D (sun exposure or supplement, doctor-guided) | Essential for calcium absorption into bone |
| Treat hyperparathyroidism (parathyroidectomy if confirmed) | Removes the primary driver of bone resorption |
| Get a DEXA scan now | Establishes a baseline so you can measure improvement |
What about boiled eggs
| Nutrient | Amount | Relevance to You |
|---|---|---|
| Protein | ~6 g | Moderate, safe amount |
| Calcium | ~25 mg | Small contribution to daily calcium goal |
| Phosphorus | ~86 mg | Normal - not excessive |
| Vitamin D | ~1 mcg | Supports your vitamin D/calcium axis |
| Vitamin K2 | Small amount | Helps direct calcium into bones, not soft tissue |
| Sodium | ~62 mg | Low - good for kidney stone prevention |
| Oxalate | Zero | Excellent - no stone risk |
How many is good per day
| Amount | Verdict |
|---|---|
| 1-2 eggs/day | Ideal |
| 3 eggs/day occasionally | Fine |
| 4+ eggs every day | Too much animal protein for your kidney stone history |
Is memory loss an issue herr