• Physiology: Nerve muscle physiology, Synapse, Special senses • Biochemistry: Vitamins and Mineral metabolism
What do you need for these topics? · What is your level / exam context?
Imp topic for pre university theory exam so write the way i write in exam for full marks
| Type | Myelin | Diameter | Velocity | Function |
|---|---|---|---|---|
| A (alpha) | Myelinated | Large | 70-120 m/s | Motor to skeletal muscle |
| A (beta/gamma/delta) | Myelinated | Medium | 15-70 m/s | Touch, pressure, pain |
| B | Myelinated | Small | 3-15 m/s | Preganglionic autonomic |
| C | Unmyelinated | Smallest | 0.5-2 m/s | Pain, temperature, postganglionic |
| Feature | Chemical Synapse | Electrical Synapse |
|---|---|---|
| Transmission | Via neurotransmitter | Via gap junctions (ionic current) |
| Direction | One-way (unidirectional) | Bidirectional |
| Synaptic delay | 0.3-0.5 ms | No delay |
| Site | CNS, NMJ | Heart, smooth muscle, CNS (rare) |
| Example | Most CNS synapses | Cardiac muscle |
| Neurotransmitter | Location | Effect | Receptor |
|---|---|---|---|
| Acetylcholine (ACh) | NMJ, ANS, brain | Excitatory (mostly) | Nicotinic, Muscarinic |
| Glutamate | CNS (most common excitatory) | Excitatory | NMDA, AMPA |
| GABA | CNS (most common inhibitory) | Inhibitory | GABA-A, GABA-B |
| Dopamine | Basal ganglia, limbic | Excit./Inhib. | D1, D2 |
| Serotonin (5-HT) | Raphe nuclei, limbic | Mood, sleep | 5-HT receptors |
| Norepinephrine | Sympathetic NS, brain | Excitatory | Alpha, Beta |
| Glycine | Spinal cord | Inhibitory | Glycine receptor |
| Fat Soluble | Water Soluble | |
|---|---|---|
| Vitamins | A, D, E, K | B-complex, C |
| Storage | Liver and fat tissue | Not stored (excreted in urine) |
| Toxicity | Can cause toxicity (stored) | Less toxic |
| Hormone | Source | Effect on Ca2+ | Effect on PO4- |
|---|---|---|---|
| PTH (Parathyroid Hormone) | Parathyroid gland | ↑ serum Ca2+ | ↓ serum PO4- |
| Calcitriol (Vitamin D) | Kidney | ↑ serum Ca2+ | ↑ serum PO4- |
| Calcitonin | C-cells of thyroid | ↓ serum Ca2+ | ↓ serum PO4- |
| Vitamin | Key Deficiency Disease | Mnemonic / Key Point |
|---|---|---|
| A | Night blindness, Xerophthalmia | "A" for "Anti-infective", Vision |
| D | Rickets (child), Osteomalacia (adult) | "D" for "Da bones" |
| E | Hemolytic anemia in premature infants | "E" for "Erythrocytes" |
| K | Bleeding, prolonged PT | "K" for "Koagulation" |
| B1 | Beriberi, Wernicke's | TPP coenzyme |
| B2 | Cheilosis, Glossitis, Corneal vascularization | "3 C's" |
| B3 | Pellagra (3 D's) | Niacin → from Tryptophan |
| B6 | Peripheral neuropathy, Sideroblastic anemia | INH uses B6 |
| B9 | Megaloblastic anemia + Neural tube defects | Folate for fetus |
| B12 | Megaloblastic anemia + SACD | Pernicious anemia → Intrinsic Factor |
| C | Scurvy - bleeding gums, perifollicular hemorrhage | Collagen synthesis |
Make separate pdf for biochem which I give to u and explain simply and same how to write in exam and also how to remember with easy explanation
ls /home/daytona/workspace/ 2>/dev/null && echo "---" && ls /home/daytona/skills/pdf/
mkdir -p /home/daytona/workspace/biochem-notes && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab ok')" && python3 -c "from reportlab.platypus import SimpleDocTemplate; print('platypus ok')"
Where is pdf?
~/biochem-notes/make_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
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import FrameBreak
OUTPUT = "/home/daytona/workspace/biochem-notes/Biochemistry_Vitamins_Minerals.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 ──────────────────────────────────────────────────────────
C_DARK_BLUE = colors.HexColor("#1a237e")
C_MID_BLUE = colors.HexColor("#1565c0")
C_LIGHT_BLUE = colors.HexColor("#e3f2fd")
C_ACCENT = colors.HexColor("#ff6f00") # orange
C_GREEN = colors.HexColor("#2e7d32")
C_GREEN_LIGHT = colors.HexColor("#e8f5e9")
C_RED = colors.HexColor("#b71c1c")
C_RED_LIGHT = colors.HexColor("#ffebee")
C_PURPLE = colors.HexColor("#4a148c")
C_PURPLE_LIGHT= colors.HexColor("#f3e5f5")
C_YELLOW = colors.HexColor("#fff9c4")
C_YELLOW_DARK = colors.HexColor("#f9a825")
C_TEAL = colors.HexColor("#006064")
C_TEAL_LIGHT = colors.HexColor("#e0f7fa")
C_GREY_LIGHT = colors.HexColor("#f5f5f5")
C_GREY = colors.HexColor("#9e9e9e")
C_WHITE = colors.white
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
# ── Custom paragraph styles ─────────────────────────────────────────────────
COVER_TITLE = S("cover_title", fontSize=28, textColor=C_WHITE,
leading=34, alignment=TA_CENTER, fontName="Helvetica-Bold")
COVER_SUB = S("cover_sub", fontSize=14, textColor=colors.HexColor("#bbdefb"),
leading=20, alignment=TA_CENTER, fontName="Helvetica")
COVER_INFO = S("cover_info", fontSize=11, textColor=colors.HexColor("#e3f2fd"),
leading=16, alignment=TA_CENTER, fontName="Helvetica")
CHAP_HDR = S("chap_hdr", fontSize=18, textColor=C_WHITE,
leading=24, fontName="Helvetica-Bold", alignment=TA_CENTER,
backColor=C_DARK_BLUE,
borderPad=(8,8,8,8))
SEC_HDR = S("sec_hdr", fontSize=13, textColor=C_WHITE,
leading=18, fontName="Helvetica-Bold",
backColor=C_MID_BLUE,
borderPad=(6,4,6,4))
SUB_HDR = S("sub_hdr", fontSize=11, textColor=C_DARK_BLUE,
leading=16, fontName="Helvetica-Bold")
BODY = S("body_txt", fontSize=9.5, textColor=colors.black,
leading=14, fontName="Helvetica", alignment=TA_JUSTIFY)
BODY_BOLD = S("body_bold",fontSize=9.5, textColor=colors.black,
leading=14, fontName="Helvetica-Bold")
BULLET = S("bullet", fontSize=9.5, textColor=colors.black,
leading=14, fontName="Helvetica",
leftIndent=14, bulletIndent=4)
TRICK_HDR = S("trick_hdr",fontSize=10, textColor=C_ACCENT,
leading=14, fontName="Helvetica-Bold")
TRICK_BODY = S("trick_body",fontSize=9.5, textColor=colors.HexColor("#4e342e"),
leading=14, fontName="Helvetica", leftIndent=8)
EXAM_HDR = S("exam_hdr", fontSize=10, textColor=C_GREEN,
leading=14, fontName="Helvetica-Bold")
EXAM_BODY = S("exam_body",fontSize=9.5, textColor=colors.HexColor("#1b5e20"),
leading=14, fontName="Helvetica", leftIndent=8)
NOTE = S("note", fontSize=9, textColor=C_PURPLE,
leading=13, fontName="Helvetica-BoldOblique")
WARNING = S("warning", fontSize=9, textColor=C_RED,
leading=13, fontName="Helvetica-Bold")
PAGE_HEAD = S("page_head",fontSize=8, textColor=C_GREY,
leading=10, fontName="Helvetica", alignment=TA_CENTER)
# ── Table style helpers ──────────────────────────────────────────────────────
def header_table_style(hdr_color=C_MID_BLUE):
return TableStyle([
("BACKGROUND", (0,0), (-1,0), hdr_color),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 8.5),
("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WHITE, C_GREY_LIGHT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#b0bec5")),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
])
def colored_box_para(text, bg, style):
"""Paragraph inside a single-cell table acting as a coloured box."""
t = Table([[Paragraph(text, style)]], colWidths=[doc.width])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#90a4ae")),
("LEFTPADDING",(0,0),(-1,-1), 8),
("RIGHTPADDING",(0,0),(-1,-1),8),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1),6),
]))
return t
def sp(n=6): return Spacer(1, n)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=C_GREY, spaceAfter=4, spaceBefore=4)
# ═══════════════════════════════════════════════════════════════════════════
# BUILD STORY
# ═══════════════════════════════════════════════════════════════════════════
story = []
# ── COVER PAGE ──────────────────────────────────────────────────────────────
cover_bg = Table(
[[Paragraph("BIOCHEMISTRY", COVER_TITLE)],
[sp(4)],
[Paragraph("Vitamins & Mineral Metabolism", COVER_SUB)],
[sp(10)],
[Paragraph("Pre-University Theory Exam", COVER_INFO)],
[sp(2)],
[Paragraph("Simple Language | Exam-Style Answers | Memory Tricks", COVER_INFO)],
[sp(20)],
[Paragraph("Prepared for Exam Success", COVER_INFO)],
],
colWidths=[doc.width + 3.6*cm]
)
cover_bg.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_DARK_BLUE),
("LEFTPADDING",(0,0),(-1,-1), 30),
("RIGHTPADDING",(0,0),(-1,-1),30),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1),6),
("ALIGN", (0,0),(-1,-1),"CENTER"),
("VALIGN", (0,0),(-1,-1),"MIDDLE"),
]))
story.append(cover_bg)
story.append(PageBreak())
# ── HOW TO USE THIS GUIDE ────────────────────────────────────────────────────
story.append(colored_box_para(
"HOW TO USE THIS GUIDE", C_DARK_BLUE,
S("x", fontSize=13, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)
))
story.append(sp(8))
tips = [
("SIMPLE EXPLANATION", "Each topic is explained in plain language first so you understand the concept clearly."),
("EXAM FORMAT", "Then the same topic is shown exactly how to write it in the exam to score full marks."),
("MEMORY TRICKS", "At the end of each topic, easy mnemonics and tricks help you remember for life."),
("COLOUR CODING", "Blue boxes = Exam writing format | Orange = Memory tricks | Green = Exam tips"),
]
for head, body in tips:
story.append(colored_box_para(
f"<b>{head}:</b> {body}", C_GREY_LIGHT,
S("x2", fontSize=9.5, textColor=colors.black, fontName="Helvetica", leading=14)
))
story.append(sp(4))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# CHAPTER 1 — VITAMINS
# ═══════════════════════════════════════════════════════════════════════════
story.append(colored_box_para("CHAPTER 1: VITAMINS", C_DARK_BLUE,
S("c1", fontSize=16, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=22, alignment=TA_CENTER)))
story.append(sp(8))
# ── Simple intro ─────────────────────────────────────────────────────────────
story.append(colored_box_para(
"SIMPLE EXPLANATION FIRST",
C_TEAL_LIGHT,
S("si", fontSize=10, textColor=C_TEAL, fontName="Helvetica-Bold", leading=14)
))
story.append(sp(4))
story.append(Paragraph(
"Vitamins are <b>small organic molecules</b> that our body needs in tiny amounts to work properly. "
"Our body cannot make most of them, so we must get them from food. "
"Think of them as <b>tools in a factory</b> - without the right tool, the machine stops working.",
BODY))
story.append(sp(6))
# Classification table
story.append(Paragraph("CLASSIFICATION OF VITAMINS", SEC_HDR))
story.append(sp(4))
cls_data = [
["Feature", "Fat-Soluble Vitamins", "Water-Soluble Vitamins"],
["Which ones", "A, D, E, K", "B1, B2, B3, B6, B9, B12, C"],
["Stored in body?", "YES (liver & fat tissue)", "NO (pass out in urine)"],
["Can cause toxicity?", "YES (if taken too much)", "Rarely (excess excreted)"],
["Need daily intake?", "Not necessarily", "YES, needed regularly"],
["Dissolved in", "Fat / Oil", "Water"],
]
cls_table = Table(cls_data, colWidths=[4*cm, 6.5*cm, 6.5*cm])
cls_table.setStyle(header_table_style(C_TEAL))
story.append(cls_table)
story.append(sp(4))
# Memory trick for classification
story.append(colored_box_para(
"MEMORY TRICK: Fat-soluble = 'ADEK' (sounds like 'a deck of cards' - just remember A-D-E-K!). "
"Everything else (all B vitamins + C) is water-soluble.",
C_YELLOW,
S("mt", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-Bold", leading=14)
))
story.append(sp(8))
# ── Vitamin A ────────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN A (Retinol)", C_MID_BLUE,
S("va", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Think of Vitamin A as the <b>'Eye and Skin Vitamin.'</b> "
"It keeps your eyes working in the dark (like adjusting your phone screen brightness), "
"keeps your skin smooth, and fights infections by maintaining the protective lining "
"(epithelium) of your lungs, gut, and eyes. "
"The form used in the eye is called <b>11-cis-retinal</b> - it sits inside a protein called "
"opsin to make Rhodopsin (the night-vision pigment in rod cells).",
BODY))
story.append(sp(6))
story.append(colored_box_para("EXAM FORMAT - Write it like this:", C_LIGHT_BLUE,
S("ef", fontSize=10, textColor=C_MID_BLUE, fontName="Helvetica-Bold", leading=14)))
story.append(sp(4))
va_exam = [
["EXAM ANSWER: VITAMIN A (Retinol)", ""],
["Sources", "Animal: Liver, egg yolk, dairy, fish liver oil\nPlant (Pro-vitamin A): Beta-carotene - carrots, green leafy vegetables"],
["Active forms", "Retinol (storage), Retinal (vision), Retinoic acid (gene expression), 11-cis-retinal (rhodopsin)"],
["Functions", "1. Vision: Part of Rhodopsin (rod cells) - needed for dark adaptation\n2. Epithelial integrity: Maintains mucus-secreting epithelium, prevents keratinization\n3. Growth & differentiation: Via nuclear receptors (RAR, RXR)\n4. Immune function: Anti-infective vitamin\n5. Reproduction: Spermatogenesis, fetal development"],
["Deficiency diseases", "- Night blindness (Nyctalopia) - EARLIEST sign\n- Xerophthalmia - dry eyes\n- Bitot's spots - foamy patches on conjunctiva (PATHOGNOMONIC)\n- Keratomalacia - corneal softening and blindness\n- Follicular hyperkeratosis - 'toad skin'\n- Increased infections"],
["Toxicity", "Headache, vomiting, skin peeling, raised ICP (pseudotumor cerebri)\nTERATOGENIC - causes birth defects in pregnancy"],
]
va_table = Table(va_exam, colWidths=[4.5*cm, 12.5*cm])
va_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_MID_BLUE),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_LIGHT_BLUE),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#90caf9")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_LIGHT_BLUE]),
]))
story.append(va_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Vitamin A:\n"
"Deficiency = 'XBKF': Xerophthalmia, Bitot's spots, Keratomalacia, Follicular hyperkeratosis\n"
"Night blindness is ALWAYS the first sign - remember: 'A for Adjusting eyes in the dark'\n"
"Bitot's spots = 'B for Bitot, B for Butter yellow-foamy patches'\n"
"Rhodopsin = Retinal + Opsin | Vitamin A deficiency = Rhodopsin cannot form = Night blindness",
C_YELLOW,
S("mt2", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(10))
# ── Vitamin D ────────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN D (Calciferol) - The Sunshine Vitamin", C_MID_BLUE,
S("vd", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Vitamin D is the <b>'Calcium Manager.'</b> It controls how much calcium your body absorbs from food "
"and puts into bones. Think of it as a <b>security guard at a calcium gate</b> - without Vitamin D, "
"calcium cannot enter the body properly, so bones become soft. "
"The cool part: your <b>skin makes Vitamin D</b> when sunlight hits it (UV rays convert "
"7-dehydrocholesterol in the skin). Then the liver and kidney activate it step by step.",
BODY))
story.append(sp(6))
# Activation pathway
story.append(Paragraph("ACTIVATION PATHWAY (MUST know for exam):", BODY_BOLD))
story.append(sp(3))
pathway_data = [
["Step", "Location", "What happens", "Product"],
["Step 0", "Skin (UV light)", "7-dehydrocholesterol + sunlight", "Cholecalciferol (Vit D3)"],
["Step 1", "LIVER", "25-hydroxylase acts", "25-OH Vit D3 (Calcidiol) - storage form"],
["Step 2", "KIDNEY", "1-alpha-hydroxylase acts", "1,25-(OH)2 Vit D3 (Calcitriol) = ACTIVE form"],
]
pw_table = Table(pathway_data, colWidths=[2*cm, 3*cm, 6*cm, 6*cm])
pw_table.setStyle(header_table_style(colors.HexColor("#f57f17")))
story.append(pw_table)
story.append(sp(4))
story.append(colored_box_para("EXAM FORMAT - Write it like this:", C_LIGHT_BLUE,
S("ef2", fontSize=10, textColor=C_MID_BLUE, fontName="Helvetica-Bold", leading=14)))
story.append(sp(4))
vd_exam = [
["EXAM ANSWER: VITAMIN D (Calciferol)", ""],
["Sources", "Skin synthesis (MAJOR): UV light on skin\nFood: Fatty fish, egg yolk, dairy, fish liver oil"],
["Active form", "Calcitriol = 1,25-dihydroxycholecalciferol [1,25-(OH)2 D3]"],
["Functions\n(of Calcitriol)", "1. Increases Ca2+ absorption from intestine (induces Calbindin protein)\n2. Increases phosphate absorption from intestine\n3. Promotes bone mineralization (works with PTH)\n4. Renal reabsorption of Ca2+ and phosphate\n5. Immune regulation and cell differentiation"],
["Deficiency in\nCHILDREN", "RICKETS:\n- Bowing of legs / Knock knees\n- Rachitic rosary (beading at ribs-costochondral junction)\n- Frontal bossing (prominent forehead)\n- Craniotabes (soft skull)\n- Harrison's groove, Pigeon chest\n- Delayed fontanelle closure"],
["Deficiency in\nADULTS", "OSTEOMALACIA:\n- Softening of bones\n- Bone pain and tenderness\n- Pathological fractures"],
["Lab findings in\nRickets", "Low Ca2+, Low Phosphate, HIGH Alkaline Phosphatase (ALP), Low 25-OH Vit D"],
["Toxicity", "Hypercalcemia, renal stones, calcification of soft tissues"],
]
vd_table = Table(vd_exam, colWidths=[4.5*cm, 12.5*cm])
vd_table.setStyle(va_table._styles[0] if False else TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#e65100")),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), colors.HexColor("#fff3e0")),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ffcc80")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, colors.HexColor("#fff8e1")]),
]))
story.append(vd_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Vitamin D:\n"
"Activation: Skin -> Liver -> Kidney (SLK = 'Silk Road')\n"
"Rickets features: 'Bow-Rachitic-Frontal-Cranio' = BRFC = 'Books Rarely Fail Children'\n"
"Lab in rickets: Ca LOW, PO4 LOW, ALP HIGH - remember 'Both minerals down, ALP up'\n"
"D for Da Bones, D for D-ficiency = Rickets/Osteomalacia\n"
"Calcitriol = C-A-L-C-I = Controls Absorption of Lime (calcium) in Intestine",
C_YELLOW,
S("mt3", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── Vitamin E ────────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN E (Tocopherol) - The Antioxidant Shield", C_MID_BLUE,
S("ve", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Vitamin E is like a <b>bodyguard for cell membranes.</b> "
"Your cells are surrounded by fatty membranes, and harmful molecules called "
"'free radicals' try to damage them. Vitamin E neutralizes these free radicals - "
"it is the main <b>fat-soluble antioxidant.</b> "
"It is especially important for protecting Red Blood Cells (RBCs) from breaking apart (hemolysis).",
BODY))
story.append(sp(6))
ve_exam = [
["EXAM ANSWER: VITAMIN E (Tocopherol)", ""],
["Sources", "Vegetable oils (sunflower, wheat germ oil), nuts, seeds, green leafy vegetables"],
["Function", "1. Major lipid-soluble ANTIOXIDANT - protects PUFA (polyunsaturated fatty acids) from peroxidation\n2. Protects RBC membrane from hemolysis (oxidative damage)\n3. Protects cell membranes throughout the body\n4. Anti-aging, immune support"],
["Deficiency", "- Hemolytic anemia (especially in premature infants)\n- Peripheral neuropathy (posterior column degeneration)\n- Spinocerebellar ataxia\n- Areflexia\n- Retinopathy in premature infants"],
["Who at risk?", "Premature infants (no fat stores, unable to absorb fat), fat malabsorption disorders"],
]
ve_table = Table(ve_exam, colWidths=[4.5*cm, 12.5*cm])
ve_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_GREEN),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_GREEN_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#a5d6a7")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_GREEN_LIGHT]),
]))
story.append(ve_exam and ve_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Vitamin E:\n"
"'E' for 'Erythrocytes' (RBCs) - protects red blood cells\n"
"'E' for 'Every cell's shield' - antioxidant for all membranes\n"
"Deficiency = Hemolytic anemia in premature babies - 'Early babies need E'\n"
"PUFA = Polyunsaturated Fatty Acid = needs Vitamin E protection",
C_YELLOW,
S("mt4", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(10))
# ── Vitamin K ────────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN K - The Clotting Vitamin", C_MID_BLUE,
S("vk", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Vitamin K is the <b>'Blood-stopping vitamin.'</b> When you get a cut, your blood needs to clot "
"to stop bleeding. Vitamin K activates the clotting proteins (factors). "
"It does this by a chemical process called <b>gamma-carboxylation</b> - think of it as 'charging up' "
"the clotting factors so they can work. Without Vitamin K, clotting factors 2, 7, 9, 10 "
"don't work and you bleed. Warfarin (rat poison/blood thinner drug) works by blocking Vitamin K.",
BODY))
story.append(sp(6))
vk_exam = [
["EXAM ANSWER: VITAMIN K", ""],
["Forms", "K1 (Phylloquinone) - from plants (green leafy veg)\nK2 (Menaquinone) - made by gut bacteria\nK3 (Menadione) - synthetic form"],
["Functions", "1. BLOOD COAGULATION - cofactor for gamma-carboxylation of clotting factors:\n Factors II (Prothrombin), VII, IX, X, Protein C, Protein S\n2. Bone metabolism - carboxylation of osteocalcin"],
["Mechanism", "Vitamin K (KH2 reduced form) activates clotting factor precursors and gets oxidized to KO (epoxide)\nVKOR (Vitamin K epoxide reductase) converts KO back to KH2 (recycling)\nWarfarin BLOCKS VKOR = no recycling = Vitamin K deficiency effect"],
["Deficiency", "- Prolonged PT (Prothrombin Time) - FIRST test to become abnormal\n- Prolonged aPTT\n- Bleeding from any site"],
["Hemorrhagic\ndisease of\nnewborn", "Newborns have:\n1. No gut bacteria (so no K2 synthesis)\n2. Sterile gut at birth\n3. Low Vitamin K in breast milk\nResult: Bleeding on days 2-7 of life\nPrevention: Vitamin K injection (IM) given at birth"],
["Lab findings", "Prolonged PT, Normal platelet count, Normal bleeding time"],
]
vk_table = Table(vk_exam, colWidths=[4.5*cm, 12.5*cm])
vk_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_RED),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_RED_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ef9a9a")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_RED_LIGHT]),
]))
story.append(vk_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Vitamin K:\n"
"'K' for 'Koagulation' (German word for coagulation - that's where the name comes from!)\n"
"Clotting factors affected: '1972' = factors II, VII, IX, X = '2, 7, 9, 10'\n"
"Warfarin blocks VKOR = 'Warfarin Kills Vitamin K Recycling'\n"
"Newborn hemorrhagic disease: 'No bacteria, No K2, Baby Bleeds'\n"
"PT is prolonged FIRST because Factor VII has shortest half-life",
C_YELLOW,
S("mt5", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# WATER-SOLUBLE VITAMINS
# ═══════════════════════════════════════════════════════════════════════════
story.append(colored_box_para("WATER-SOLUBLE VITAMINS (B-Complex & Vitamin C)", C_DARK_BLUE,
S("ws", fontSize=14, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=20, alignment=TA_CENTER)))
story.append(sp(8))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"B vitamins are like <b>spark plugs in an engine.</b> They do not provide energy themselves, "
"but without them, the body cannot RELEASE energy from food. "
"Each B vitamin is a coenzyme - it teams up with enzymes to make chemical reactions happen. "
"Since they dissolve in water, they pass out in urine, so you need them regularly.",
BODY))
story.append(sp(8))
# ── B1 Thiamine ──────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B1 - Thiamine (The Energy Starter)", C_MID_BLUE,
S("b1h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Thiamine is needed to <b>unlock energy from glucose.</b> "
"When glucose is broken down, it forms pyruvate. Pyruvate needs thiamine (as TPP) to enter the "
"Krebs cycle. Without thiamine, pyruvate piles up and can't be processed. "
"Nerves and the heart suffer most because they depend heavily on glucose. "
"Common in <b>alcoholics</b> (alcohol prevents thiamine absorption) and in people eating only polished/white rice.",
BODY))
story.append(sp(4))
b1_exam = [
["EXAM ANSWER: VITAMIN B1 (Thiamine)", ""],
["Active form", "Thiamine Pyrophosphate (TPP)"],
["Functions\n(as coenzyme TPP)", "1. Pyruvate dehydrogenase - Pyruvate -> Acetyl CoA (MOST IMPORTANT)\n2. Alpha-ketoglutarate dehydrogenase - Krebs cycle\n3. Transketolase - HMP shunt (Pentose phosphate pathway)\n4. Branched-chain keto acid dehydrogenase"],
["Deficiency\ndiseases", "1. DRY BERIBERI - peripheral neuropathy (sensory > motor)\n Burning feet, numbness, wrist drop, foot drop\n\n2. WET BERIBERI - peripheral neuropathy + cardiac failure + edema\n High-output cardiac failure (cardiomegaly, tachycardia)\n\n3. WERNICKE'S ENCEPHALOPATHY (acute, in alcoholics):\n TRIAD: Confusion + Ataxia + Ophthalmoplegia (eye movement problems)\n\n4. KORSAKOFF'S PSYCHOSIS (chronic):\n Confabulation (making up stories) + Anterograde amnesia"],
["Common in", "Alcoholics, polished rice eaters, dialysis patients, hyperemesis gravidarum"],
]
b1_table = Table(b1_exam, colWidths=[4.5*cm, 12.5*cm])
b1_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_PURPLE),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_PURPLE_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ce93d8")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_PURPLE_LIGHT]),
]))
story.append(b1_table)
story.append(sp(4))
story.append(colored_box_para(
"MEMORY TRICKS for B1:\n"
"'B1 = B-One = Beriberi-One vitamin'\n"
"Wernicke's TRIAD = 'CAO' = Confusion, Ataxia, Ophthalmoplegia\n"
"Korsakoff = 'K for Konfabulation' (making up stories to fill memory gaps)\n"
"Wernicke-Korsakoff = both are B1 deficiency in alcoholics\n"
"TPP enzymes: 'PAT-B' = Pyruvate DH, Alpha-KG DH, Transketolase, Branched-chain DH",
C_YELLOW,
S("mt6", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(8))
# ── B2 Riboflavin ─────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B2 - Riboflavin", C_MID_BLUE,
S("b2h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
b2_data = [
["Active forms", "FMN (Flavin Mononucleotide) and FAD (Flavin Adenine Dinucleotide)"],
["Functions", "Coenzyme in REDOX reactions - carries electrons in oxidative phosphorylation, fatty acid oxidation, amino acid metabolism"],
["Deficiency\n'3 C's'", "1. CHEILOSIS - cracks/fissures at corners of mouth (angular stomatitis)\n2. CORNEAL VASCULARIZATION - blood vessels grow into cornea\n3. CONFUSION (mild neurological)\nAlso: Glossitis (magenta/raw beef tongue), seborrheic dermatitis, scrotal/vulval dermatitis"],
]
b2_table = Table(b2_data, colWidths=[4.5*cm, 12.5*cm])
b2_table.setStyle(header_table_style(C_TEAL))
story.append(b2_table)
story.append(sp(4))
story.append(colored_box_para(
"TRICK: B2 deficiency = '3 C's' = Cheilosis + Corneal vascularization + Confusion\n"
"'Riboflavin makes you Red/Raw' - Raw tongue (glossitis), Red cracks (cheilosis)",
C_YELLOW,
S("mt7", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(8))
# ── B3 Niacin ─────────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B3 - Niacin (Nicotinic Acid)", C_MID_BLUE,
S("b3h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Niacin makes <b>NAD+ and NADP+</b> - the most important electron carriers in the body. "
"Think of NAD+ as a <b>rechargeable battery</b> - it picks up electrons (gets charged to NADH) "
"and delivers them to the electron transport chain to make ATP. "
"Without niacin, energy metabolism crashes. Deficiency = Pellagra = 3 D's (+ death).",
BODY))
story.append(sp(4))
b3_data = [
["Active forms", "NAD+ / NADH and NADP+ / NADPH"],
["Functions", "Coenzyme in 500+ redox reactions; high-dose niacin raises HDL (good cholesterol)"],
["Synthesis", "Can be made from Tryptophan (60 mg tryptophan = 1 mg niacin)\nSo corn-eating populations get pellagra (corn lacks tryptophan)"],
["PELLAGRA\n(deficiency)\n'4 D's'", "1. DERMATITIS - Photosensitive rash (exposed areas - face, neck, hands)\n 'Casal's Necklace' = rash around the neck like a necklace\n2. DIARRHEA - GI involvement\n3. DEMENTIA - neurological involvement\n4. DEATH - if untreated"],
["At-risk groups", "Corn/maize eaters (no tryptophan), Hartnup disease (tryptophan absorption defect),\nCarcinoid syndrome (tryptophan diverted to serotonin), Alcoholics, INH therapy"],
]
b3_table = Table(b3_data, colWidths=[4.5*cm, 12.5*cm])
b3_table.setStyle(header_table_style(C_MID_BLUE))
story.append(b3_table)
story.append(sp(4))
story.append(colored_box_para(
"MEMORY TRICKS for B3:\n"
"PELLAGRA = 'PEL' sounds like PEEL (skin peels) - Dermatitis\n"
"4 D's: 'Dumb, Dirty, Diarrhea, Dead' = Dementia, Dermatitis, Diarrhea, Death\n"
"Casal's Necklace = neck rash like wearing a necklace of red skin\n"
"'Niacin = NAD = Not Accepting Deficiency in energy'",
C_YELLOW,
S("mt8", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── B6 Pyridoxine ─────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B6 - Pyridoxine", C_MID_BLUE,
S("b6h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
b6_data = [
["Active form", "Pyridoxal Phosphate (PLP)"],
["Functions", "1. TRANSAMINATION (amino acid metabolism) - most important\n2. DECARBOXYLATION of amino acids\n3. Synthesis of neurotransmitters: Serotonin, Dopamine, GABA, Histamine\n4. Heme synthesis (ALA synthase - first step)\n5. Glycogen phosphorylase"],
["Deficiency", "- Peripheral neuropathy (burning, numbness in hands and feet)\n- Sideroblastic anemia (microcytic with ring sideroblasts on bone marrow)\n- Convulsions / Seizures (GABA can't be synthesized)\n- Glossitis, cheilosis"],
["Important note", "ISONIAZID (INH) - anti-TB drug - is a B6 ANTAGONIST\nINH causes B6 deficiency symptoms (peripheral neuropathy)\nTreatment: Give B6 (Pyridoxine) with INH to prevent neuropathy"],
]
b6_table = Table(b6_data, colWidths=[4.5*cm, 12.5*cm])
b6_table.setStyle(header_table_style(C_TEAL))
story.append(b6_table)
story.append(sp(4))
story.append(colored_box_para(
"MEMORY TRICKS for B6:\n"
"'B6 builds BRAIN chemicals' = Serotonin, Dopamine, GABA all need B6\n"
"INH + B6 = 'INH Is Not Happy without B6' (always give together)\n"
"'PLP = Please Let Proteins work' (transamination)\n"
"Deficiency convulsions in infants = 'Baby B6-less baby seizes'",
C_YELLOW,
S("mt9", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(8))
# ── B9 Folic Acid ──────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B9 - Folic Acid (Folate)", C_MID_BLUE,
S("b9h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Folic acid is the <b>'DNA builder.'</b> Your body is constantly making new cells, "
"and to make new cells you need DNA. Folic acid carries single carbon units (1C transfer) "
"needed to build DNA building blocks (thymidylate). Without folic acid, "
"cells that divide rapidly (blood cells, gut lining, fetal cells) suffer most. "
"This is why <b>pregnant women MUST take folic acid</b> - the baby's brain and spinal cord "
"are forming in the first 28 days (often before she even knows she's pregnant).",
BODY))
story.append(sp(4))
b9_data = [
["Active form", "Tetrahydrofolate (THF)"],
["Functions", "1. One-carbon (1C) transfer reactions\n2. Thymidylate (dTMP) synthesis - needed for DNA\n3. Purine synthesis\n4. Amino acid metabolism (Homocysteine -> Methionine, with B12)"],
["Deficiency", "- MEGALOBLASTIC ANEMIA:\n RBCs are large (macro-ovalocytes), immature, can't divide properly\n Hypersegmented neutrophils (5+ lobes) - hallmark finding\n Low reticulocyte count\n- NEURAL TUBE DEFECTS in fetus:\n Spina bifida (open spine), Anencephaly (no brain)\n- Glossitis, diarrhea"],
["Important\nnote", "NO NEUROLOGICAL FEATURES (unlike B12 deficiency - key distinction in exams!)\nMTX (Methotrexate) and Trimethoprim block folate metabolism (anti-cancer, antibiotic)"],
["Prevention", "Folic acid 400 mcg/day for ALL women planning pregnancy, taken BEFORE conception\nContinue through first trimester"],
]
b9_table = Table(b9_data, colWidths=[4.5*cm, 12.5*cm])
b9_table.setStyle(header_table_style(C_GREEN))
story.append(b9_table)
story.append(sp(4))
story.append(colored_box_para(
"MEMORY TRICKS for B9:\n"
"'FOLATE = FOR fetus' - neural tube protection\n"
"Megaloblastic anemia: 'BIG cells, SMALL function' = large RBCs that don't work\n"
"Hypersegmented neutrophil = 'HYPER segments = nuclear lobes >5' = diagnostic\n"
"'Spina bifida = Spinal B9 deficiency'\n"
"MTX blocks DHFR = 'MTX Kills Folate Recycling' (given leucovorin rescue in overdose)",
C_YELLOW,
S("mt10", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(8))
# ── B12 Cobalamin ──────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN B12 - Cobalamin", C_MID_BLUE,
S("b12h", fontSize=11, textColor=C_WHITE, fontName="Helvetica-Bold", leading=16, alignment=TA_CENTER)))
story.append(sp(4))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"B12 does two jobs: (1) it helps recycle folate (so it also affects DNA synthesis), "
"and (2) it helps process an odd substance called <b>methylmalonyl-CoA</b> in the fatty acid pathway. "
"Without B12, the myelin sheath (protective coating on nerves) gets damaged - "
"this causes the unique <b>neurological features</b> of B12 deficiency. "
"The key thing to remember: B12 requires <b>Intrinsic Factor (IF)</b> from the stomach to be absorbed. "
"If the stomach is removed or damaged, B12 cannot be absorbed.",
BODY))
story.append(sp(4))
b12_data = [
["Active forms", "Methylcobalamin and Adenosylcobalamin"],
["Functions", "1. METHYLCOBALAMIN:\n Homocysteine + methyl-THF -> Methionine + THF\n (This recycling of THF is why B12 deficiency also causes folate trap and megaloblastic anemia)\n\n2. ADENOSYLCOBALAMIN:\n Methylmalonyl-CoA -> Succinyl-CoA (odd-chain fatty acid metabolism)\n Without this: Methylmalonic acid accumulates -> damages myelin"],
["Deficiency\ndiseases", "1. MEGALOBLASTIC ANEMIA (same as B9) - macro-ovalocytes, hypersegmented neutrophils\n\n2. SUBACUTE COMBINED DEGENERATION (SACD) of spinal cord:\n - Posterior columns: Loss of vibration sense, proprioception (position sense)\n - Corticospinal tracts: Spastic weakness (UMN signs)\n - Symptoms: 'Glove and stocking' sensory loss, ataxia, spasticity\n - NEUROLOGICAL FEATURES = KEY DIFFERENTIATOR from B9 deficiency\n\n3. Glossitis, angular stomatitis"],
["Causes of\ndeficiency", "1. PERNICIOUS ANEMIA - autoimmune destruction of parietal cells\n -> No Intrinsic Factor (IF) -> No B12 absorption\n2. Strict Vegan diet (B12 only in animal products)\n3. Gastrectomy (removal of stomach)\n4. Ileal disease/resection (B12 absorbed in terminal ileum)\n5. Fish tapeworm infection"],
["Diagnosis", "Schilling Test distinguishes pernicious anemia from other causes\nLow B12, Elevated Homocysteine AND Methylmalonic acid (specific for B12 deficiency)"],
["B12 vs B9", "BOTH: Megaloblastic anemia, glossitis\nONLY B12: Neurological features (SACD), elevated methylmalonic acid"],
]
b12_table = Table(b12_data, colWidths=[4.5*cm, 12.5*cm])
b12_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_RED),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_RED_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ef9a9a")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_RED_LIGHT]),
]))
story.append(b12_table)
story.append(sp(4))
story.append(colored_box_para(
"MEMORY TRICKS for B12:\n"
"'B12 = Big 12 = Big cells + Nerve damage'\n"
"SACD = 'Spinal cord and Combining Defects' = Posterior + Lateral columns\n"
"'Pernicious = Permanent intrinsic factor problem' = autoimmune\n"
"B12 vs B9: 'Neuro = Never B9, Always B12' (neural involvement only in B12)\n"
"Methylmalonic acid elevated = B12 specific marker (not raised in B9 deficiency)\n"
"'Vegans need B12 shots' = only animal products have B12",
C_YELLOW,
S("mt11", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── Vitamin C ───────────────────────────────────────────────────────────────
story.append(colored_box_para("VITAMIN C - Ascorbic Acid (The Wound Healer)", C_MID_BLUE,
S("vch", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Vitamin C is the <b>'Collagen Vitamin.'</b> Collagen is the glue that holds your body together "
"- it is in skin, blood vessels, gums, and bones. To make collagen, you need Vitamin C to "
"'hydroxylate' (add -OH groups to) proline and lysine amino acids. "
"Without Vitamin C, collagen is weak and breaks down - result: <b>SCURVY</b>. "
"Think of scurvy as your body 'falling apart' - bleeding gums, skin bleeds, poor wound healing. "
"Also a powerful antioxidant and helps absorb iron from food.",
BODY))
story.append(sp(6))
vc_data = [
["EXAM ANSWER: VITAMIN C (Ascorbic Acid)", ""],
["Sources", "Citrus fruits (lemon, orange), guava, amla (Indian gooseberry - richest source), tomato, fresh vegetables\nNOTE: Destroyed by heat/cooking"],
["Functions", "1. COLLAGEN SYNTHESIS - cofactor for prolyl hydroxylase and lysyl hydroxylase\n (hydroxylation of proline and lysine residues in collagen)\n2. ANTIOXIDANT - regenerates Vitamin E, protects cells\n3. IRON ABSORPTION - reduces Fe3+ to Fe2+ (better absorbed form)\n4. Dopamine synthesis (cofactor for dopamine-beta-hydroxylase)\n5. Immune function, wound healing"],
["SCURVY\n(deficiency)", "SKIN/HAIR:\n- Perifollicular hemorrhages (bleeding around hair follicles)\n- Corkscrew hairs (coiled, twisted hairs)\n- Poor wound healing\n\nGUMS:\n- Spongy, bleeding gums (gingivitis)\n- Loosening of teeth\n\nBONES:\n- Subperiosteal hemorrhage (bone pain)\n- Scorbutic rosary (costochondral junction beading)\n\nOTHER:\n- Woody leg (brawny edema)\n- Hemarthrosis (bleeding into joints)\n- Fatigue, irritability"],
["Lab findings", "Low serum ascorbic acid\nX-ray: Trummerfeld zone (zone of destruction at metaphysis), Pelkan spurs, White line of Frankel"],
["Treatment", "Vitamin C 100-200 mg/day oral supplementation"],
]
vc_table = Table(vc_data, colWidths=[4.5*cm, 12.5*cm])
vc_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#00695c")),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_TEAL_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#80cbc4")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_TEAL_LIGHT]),
]))
story.append(vc_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Vitamin C:\n"
"'C for Collagen and Cuts' - collagen synthesis and wound healing\n"
"SCURVY features: 'PeG CoRKS' = Perifollicular hemorrhage, Gum bleeding, Corkscrew hairs, Subperiosteal hemorrhage\n"
"'Vitamin C opens the Iron gate' = reduces Fe3+ to Fe2+ for better absorption\n"
"Richest source = Amla (Indian gooseberry) = 'Amla Ace of Vitamin C'\n"
"Sailors got scurvy on long voyages (no fresh fruit) - James Lind cured it with limes",
C_YELLOW,
S("mt12", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── MASTER REVISION TABLE ────────────────────────────────────────────────────
story.append(colored_box_para("MASTER REVISION TABLE - All Vitamins at a Glance", C_DARK_BLUE,
S("mrt", fontSize=13, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
master_data = [
["Vitamin", "Active Form", "Key Function", "Deficiency Disease", "Key Sign/Test"],
["A\n(Retinol)", "11-cis-retinal\nRetinoic acid", "Vision\nEpithelial integrity", "Night blindness\nXerophthalmia", "Bitot's spots\n(PATHOGNOMONIC)"],
["D\n(Calciferol)", "Calcitriol\n[1,25-(OH)2D3]", "Ca2+ absorption\nBone mineralization", "Rickets (child)\nOsteomalacia (adult)", "Low Ca, Low PO4\nHigh ALP"],
["E\n(Tocopherol)", "Alpha-tocopherol", "Antioxidant\nProtects RBCs", "Hemolytic anemia\n(premature infants)", "Oxidative hemolysis"],
["K\n(Phylloquinone)", "KH2 (reduced)", "Blood clotting\n(Factors 2,7,9,10)", "Bleeding tendency\nHemorrhagic disease\nof newborn", "Prolonged PT"],
["B1\n(Thiamine)", "TPP", "Energy from glucose\n(Pyruvate DH)", "Beriberi\nWernicke's\nKorsakoff's", "CAO triad\nTransketolase activity"],
["B2\n(Riboflavin)", "FMN, FAD", "Redox reactions", "Cheilosis, Glossitis\nCorneal vascularization", "3 C's"],
["B3\n(Niacin)", "NAD+, NADP+", "500+ redox reactions", "PELLAGRA\n(4 D's)", "Casal's Necklace\nN-methylnicotinamide\nin urine"],
["B6\n(Pyridoxine)", "PLP", "Transamination\nNT synthesis", "Peripheral neuropathy\nSideroblastic anemia", "Ring sideroblasts\n(bone marrow)"],
["B9\n(Folic acid)", "THF", "DNA synthesis\n1C transfer", "Megaloblastic anemia\nNeural tube defects", "Hypersegmented\nneutrophils"],
["B12\n(Cobalamin)", "Methylcobalamin\nAdenosylcobalamin", "Methionine synthesis\nMyelin maintenance", "Megaloblastic anemia\n+ SACD", "Elevated MMA\n(specific for B12)"],
["C\n(Ascorbic acid)", "Ascorbate", "Collagen synthesis\nAntioxidant", "SCURVY", "Perifollicular\nhemorrhage,\nCorkscrew hairs"],
]
master_table = Table(master_data, colWidths=[2.2*cm, 3*cm, 3.8*cm, 4*cm, 4*cm])
master_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 8.5),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 7.5),
("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WHITE, C_GREY_LIGHT]),
("GRID", (0,0), (-1,-1), 0.3, colors.HexColor("#b0bec5")),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("BACKGROUND", (0,1), (0,-1), C_LIGHT_BLUE),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
]))
story.append(master_table)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════
# CHAPTER 2 — MINERAL METABOLISM
# ═══════════════════════════════════════════════════════════════════════════
story.append(colored_box_para("CHAPTER 2: MINERAL METABOLISM", C_DARK_BLUE,
S("ch2", fontSize=16, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=22, alignment=TA_CENTER)))
story.append(sp(8))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Minerals are <b>inorganic elements</b> (not carbon-based) that the body needs. "
"Think of them as the <b>hardware of the body</b> - calcium for bones, iron for blood, "
"iodine for thyroid hormone, zinc for enzymes. "
"The body tightly controls blood levels of these minerals through hormones.",
BODY))
story.append(sp(8))
# ── Calcium ───────────────────────────────────────────────────────────────────
story.append(colored_box_para("CALCIUM METABOLISM", C_MID_BLUE,
S("cam", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Calcium is the most abundant mineral in the body. <b>99% is in bones</b> as hydroxyapatite, "
"and 1% floats in blood. The body keeps blood calcium in a <b>very tight range</b> "
"(8.5-10.5 mg/dL) using 3 hormones like a thermostat: "
"PTH raises it, Calcitonin lowers it, Vitamin D raises it. "
"Too low calcium = muscles and nerves get overexcitable (tetany). "
"Too high calcium = 'Bones, Stones, Groans, Psychic Moans.'",
BODY))
story.append(sp(6))
ca_reg_data = [
["Hormone", "Made by", "Effect on Ca2+", "Effect on PO4-", "Main Actions"],
["PTH\n(Parathyroid\nHormone)", "Parathyroid\nglands\n(4 glands)", "INCREASES\n(Ca2+ rises)", "DECREASES\n(PO4- falls)", "1. Bone resorption (osteoclasts)\n2. Kidney: Ca2+ reabsorption in DCT\n3. Activates Vitamin D (stimulates 1-alpha-hydroxylase)\n4. Phosphaturia (PO4 excretion)"],
["Calcitriol\n(Active Vit D)", "Kidney\n(1-alpha-\nhydroxylase)", "INCREASES", "INCREASES", "1. Intestine: Ca2+ absorption (via Calbindin)\n2. Bone mineralization\n3. Kidney: Ca2+ reabsorption"],
["Calcitonin", "Thyroid\n(C-cells)", "DECREASES\n(Ca2+ falls)", "DECREASES", "1. Inhibits osteoclasts (less bone resorption)\n2. Increases Ca2+ excretion by kidney\n3. Decreases PO4 reabsorption"],
]
ca_reg_table = Table(ca_reg_data, colWidths=[2.8*cm, 2.5*cm, 2.5*cm, 2.5*cm, 6.7*cm])
ca_reg_table.setStyle(header_table_style(C_MID_BLUE))
story.append(ca_reg_table)
story.append(sp(6))
story.append(Paragraph("HYPOCALCEMIA (Low Blood Calcium):", BODY_BOLD))
hypo_data = [
["Causes", "Features (Clinical)"],
["- Hypoparathyroidism\n- Vitamin D deficiency\n- Chronic renal failure\n- Hypomagnesemia\n- After thyroid surgery\n (accidental removal of parathyroid)", "TETANY (muscle overexcitability):\n- Carpopedal spasm (hand/foot cramps)\n- TROUSSEAU'S SIGN: Carpal spasm on inflating BP cuff\n- CHVOSTEK'S SIGN: Facial twitch on tapping facial nerve\n- Perioral (around mouth) tingling\n- Laryngospasm (can obstruct airway)\n- Convulsions / Seizures\n- QT PROLONGATION on ECG"],
]
hypo_table = Table(hypo_data, colWidths=[5.5*cm, 11.5*cm])
hypo_table.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), C_RED),
("TEXTCOLOR", (0,0),(-1,0), C_WHITE),
("FONTNAME", (0,0),(-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0),(-1,-1), 8.5),
("GRID", (0,0),(-1,-1), 0.4, colors.HexColor("#ef9a9a")),
("VALIGN", (0,0),(-1,-1), "TOP"),
("LEFTPADDING", (0,0),(-1,-1), 5),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
]))
story.append(hypo_table)
story.append(sp(6))
story.append(Paragraph("HYPERCALCEMIA (High Blood Calcium) - 'Bones, Stones, Groans, Psychic Moans':", BODY_BOLD))
hyper_data = [
["Bones", "Stones", "Groans", "Psychic Moans"],
["Bone pain\nPathological\nfractures\nOsteitis fibrosa\ncystica", "Renal calculi\n(kidney stones)\nNephrocalcinosis\n(calcium in kidney)", "Abdominal pain\nConstipation\nNausea/Vomiting\nPeptic ulcer\nPancreatitis", "Confusion\nDepression\nWeakness\nPolyuria\nPolydipsia"],
]
hyper_table = Table(hyper_data, colWidths=[4.25*cm, 4.25*cm, 4.25*cm, 4.25*cm])
hyper_table.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), C_ACCENT),
("TEXTCOLOR", (0,0),(-1,0), C_WHITE),
("FONTNAME", (0,0),(-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0),(-1,-1), 8.5),
("GRID", (0,0),(-1,-1), 0.4, colors.HexColor("#ffcc80")),
("VALIGN", (0,0),(-1,-1), "TOP"),
("LEFTPADDING", (0,0),(-1,-1), 5),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING",(0,0),(-1,-1), 4),
("ALIGN", (0,0),(-1,-1), "CENTER"),
("BACKGROUND", (0,1),(-1,-1), colors.HexColor("#fff3e0")),
]))
story.append(hyper_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Calcium:\n"
"3 hormones: 'PCT' = PTH (up), Calcitonin (down), calciTriol (up)\n"
"PTH mnemonic: 'PTH Pushes Ca up, Pulls PO4 down'\n"
"Tetany signs: 'TC' = Trousseau's and Chvostek's (TC = Two Calcium tests)\n"
"Hypercalcemia = 'Bones Stones Groans Moans' - easiest mnemonic in biochemistry!\n"
"Serum calcium formula: Correct Ca = Measured Ca + 0.8 x (4 - Albumin)",
C_YELLOW,
S("mt13", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── Iron ────────────────────────────────────────────────────────────────────
story.append(colored_box_para("IRON METABOLISM", C_MID_BLUE,
S("im", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Iron is the <b>'Oxygen delivery worker.'</b> It sits in the center of hemoglobin and "
"carries oxygen from lungs to all tissues. The body is very careful with iron - "
"it recycles ~95% of iron from old red blood cells. Only a small amount needs to be "
"absorbed from food each day. A special hormone called <b>Hepcidin</b> acts as the master "
"controller of iron - it prevents too much iron from entering the blood.",
BODY))
story.append(sp(6))
iron_data = [
["EXAM ANSWER: IRON METABOLISM", ""],
["Daily\nrequirement", "Adult male: 1 mg/day\nMenstruating female: 2 mg/day\nPregnancy: 3-4 mg/day\nDietary intake: ~10-15 mg/day (only 5-10% absorbed)"],
["Absorption", "Site: DUODENUM and upper JEJUNUM\nFe2+ (ferrous) absorbed better than Fe3+ (ferric)\nVitamin C promotes absorption (reduces Fe3+ to Fe2+)\nPromoters: Meat, Vitamin C, acidic pH\nInhibitors: Phytates, oxalates, tannins (tea), antacids, calcium"],
["Transport\nin blood", "Bound to TRANSFERRIN (beta-1 globulin, binds 2 Fe3+)\nTIBC (Total Iron Binding Capacity) = measure of transferrin\nTransferrin saturation = Serum iron / TIBC x 100 (normal: 25-35%)"],
["Storage\nforms", "FERRITIN - major intracellular storage protein (best indicator of body iron stores)\nHEMOSIDERIN - insoluble, in macrophages (excess iron)"],
["Regulation\n(HEPCIDIN)", "Hepcidin (liver hormone) - MASTER REGULATOR of iron\n- Iron overload -> High hepcidin -> Blocks FERROPORTIN -> Less iron absorbed\n- Iron deficiency -> Low hepcidin -> More iron absorbed\n- Inflammation -> High hepcidin -> Anemia of chronic disease"],
["Functions", "1. Hemoglobin (70% of body iron) - oxygen transport\n2. Myoglobin - oxygen storage in muscle\n3. Cytochromes (electron transport chain, liver detox)\n4. Enzyme cofactor (catalase, ribonucleotide reductase)"],
["Iron\nDeficiency\nAnemia", "MOST COMMON NUTRITIONAL DEFICIENCY WORLDWIDE\nStages: Iron depletion -> Iron deficiency without anemia -> IDA\n\nLab findings: Low serum iron, LOW ferritin, HIGH TIBC, Microcytic hypochromic anemia\n\nClinical features:\n- Fatigue, pallor, exertional dyspnea\n- KOILONYCHIA (spoon-shaped nails) - CLASSIC sign\n- Angular stomatitis, glossitis\n- PICA (eating non-food items: ice/pagophagia, clay/geophagia)\n- PLUMMER-VINSON SYNDROME: IDA + Dysphagia + Esophageal web (risk of esophageal cancer)"],
["Iron overload\n(Hemochromatosis)", "Excess iron deposits in liver, pancreas, heart, skin, gonads\nBronze diabetes: bronze skin + diabetes + cirrhosis = CLASSIC TRIAD\nTreatment: Phlebotomy (blood letting), Deferasirox/Deferoxamine"],
]
iron_table = Table(iron_data, colWidths=[3.8*cm, 13.2*cm])
iron_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#b71c1c")),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 10),
("SPAN", (0,0), (-1,0)),
("ALIGN", (0,0), (-1,0), "CENTER"),
("BACKGROUND", (0,1), (0,-1), C_RED_LIGHT),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#ef9a9a")),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING",(0,0), (-1,-1), 4),
("ROWBACKGROUNDS",(0,1),(-1,-1),[C_WHITE, C_RED_LIGHT]),
]))
story.append(iron_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Iron:\n"
"Iron absorption: 'ACID MEAT VIT C' = Acidic pH, Meat, Vitamin C all increase absorption\n"
"Iron inhibitors: 'POTA' = Phytates, Oxalates, Tannins, Antacids\n"
"IDA lab: 'Low Low High' = Low serum iron, Low ferritin, High TIBC\n"
"KOILONYCHIA = 'Koil = Coil = Spoon nails' - think of nails curling like a spoon\n"
"PLUMMER-VINSON = 'Please Let Me Vomit - Very Painful' = dysphagia + web + IDA\n"
"Hemochromatosis = 'HCC' = Hepatic cirrhosis, Cardiac disease, Chestnut (bronze) skin",
C_YELLOW,
S("mt14", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── Iodine ────────────────────────────────────────────────────────────────────
story.append(colored_box_para("IODINE & THYROID HORMONE METABOLISM", C_MID_BLUE,
S("iod", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
story.append(Paragraph("SIMPLE EXPLANATION:", SUB_HDR))
story.append(Paragraph(
"Iodine is used to make thyroid hormones (T3 and T4). "
"Think of thyroid hormones as the body's <b>'gas pedal'</b> - they speed up metabolism. "
"Without iodine, the thyroid gland tries harder and harder to make hormones and grows bigger = <b>GOITER.</b> "
"In babies and pregnant women, iodine deficiency is especially dangerous because "
"T3/T4 are essential for brain development.",
BODY))
story.append(sp(6))
iod_data = [
["Daily requirement", "150 micrograms/day (adults); 200-300 mcg during pregnancy"],
["Thyroid hormone\nsynthesis steps\n(MUST KNOW)", "Step 1: TRAPPING - Thyroid gland actively takes up I- from blood (via NIS = Na-Iodide Symporter)\nStep 2: OXIDATION - I- converted to I2 (by Thyroid Peroxidase/TPO using H2O2)\nStep 3: ORGANIFICATION - I2 added to Tyrosine residues on Thyroglobulin -> MIT and DIT\n MIT = Monoiodotyrosine (1 iodine)\n DIT = Diiodotyrosine (2 iodines)\nStep 4: COUPLING (by TPO):\n MIT + DIT = T3 (Triiodothyronine) - more active\n DIT + DIT = T4 (Thyroxine) - more abundant\nStep 5: STORAGE - as Thyroglobulin colloid in follicular lumen\nStep 6: RELEASE - Thyroglobulin proteolysis -> T3 and T4 released into blood"],
["Iodine\ndeficiency", "GOITER (MOST COMMON manifestation) - enlarged thyroid\nHypothyroidism (low T3/T4)\nCRETINISM (severe deficiency in fetus/newborn):\n- Mental retardation (irreversible if not treated early)\n- Stunted growth (short stature)\n- Deaf-mutism\n- Pot belly, dry skin, coarse hair\n- Protruding tongue"],
["Prevention", "IODIZATION OF SALT (25-30 mcg iodine per gram of salt) - most effective public health measure"],
["Drugs affecting", "Propylthiouracil (PTU) and Carbimazole: block TPO (organification step)\nLithium: blocks release of T3/T4\nAmiodarone: contains iodine, can cause hyper OR hypothyroidism"],
]
iod_table = Table(iod_data, colWidths=[4.5*cm, 12.5*cm])
iod_table.setStyle(header_table_style(C_PURPLE))
story.append(iod_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Iodine:\n"
"Synthesis steps: 'TOOCS' = Trapping, Oxidation, Organification, Coupling, Storage\n"
"Coupling rule: '1+2=3, 2+2=4' = MIT+DIT=T3, DIT+DIT=T4\n"
"Cretinism features: '4 M's' = Mental retardation, Myxedema, Mutism, Midget (short stature)\n"
"Goiter = 'Gland Goes Bigger trying to Get iodine'\n"
"Iodized salt = cheapest, most effective way to prevent iodine deficiency",
C_YELLOW,
S("mt15", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(sp(8))
# ── Trace Minerals ────────────────────────────────────────────────────────────
story.append(colored_box_para("TRACE MINERALS - Zinc, Copper, Fluoride", C_MID_BLUE,
S("tm", fontSize=12, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(6))
trace_data = [
["Mineral", "Functions", "Deficiency", "Excess/Toxicity"],
["ZINC\n(Zn)", "- Cofactor of 300+ enzymes\n (carbonic anhydrase,\n alcohol DH, RNA polymerase)\n- Wound healing\n- Immune function\n- Sexual maturation\n- Taste & smell\n- Insulin storage\n- DNA/RNA synthesis", "- DWARFISM and\n HYPOGONADISM\n (Prasad's syndrome)\n- Acrodermatitis\n enteropathica\n (skin rash around\n mouth, hands, feet)\n- Delayed wound healing\n- AGEUSIA (loss of taste)\n- ANOSMIA (loss of smell)\n- Poor immunity", "- Nausea, vomiting\n- Copper deficiency\n (excess Zn blocks Cu\n absorption)\n- Metallic taste"],
["COPPER\n(Cu)", "- CERULOPLASMIN\n (ferroxidase - Fe2+->Fe3+\n for transferrin binding)\n- Cytochrome c oxidase\n (ETC)\n- Superoxide dismutase\n (antioxidant)\n- LYSYL OXIDASE\n (collagen & elastin\n cross-linking)\n- TYROSINASE\n (melanin synthesis)\n- Dopamine-beta-hydroxylase", "- Hypochromic anemia\n (Cu needed for Fe\n metabolism)\n- Neurological\n degeneration\n- Depigmentation\n (white skin/hair)\n- Menkes disease:\n kinky hair, brain\n damage, low Cu", "WILSON'S DISEASE:\n- Copper accumulates\n in liver, brain,\n cornea, kidneys\n- Cirrhosis (liver)\n- Neuropsychiatric\n symptoms\n- KAYSER-FLEISCHER\n RINGS (brown ring\n in cornea)\n- Low ceruloplasmin\n in blood"],
["FLUORIDE\n(F)", "- Strengthens TOOTH\n ENAMEL (forms\n fluorapatite - harder)\n- Strengthens BONE", "DENTAL CARIES\n(tooth decay)\nNo strong fluorapatite\nformed = bacteria\neasily destroy enamel", "FLUOROSIS:\n- DENTAL FLUOROSIS:\n Mottled brown teeth\n (chalky white to\n brown staining)\n- SKELETAL FLUOROSIS:\n Osteosclerosis\n (dense bones)\n Calcification of\n ligaments\n Bone deformities"],
]
trace_table = Table(trace_data, colWidths=[2.3*cm, 5*cm, 5.5*cm, 4.2*cm])
trace_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_TEAL),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 8.5),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "TOP"),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTNAME", (1,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 7.5),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#80cbc4")),
("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WHITE, C_TEAL_LIGHT]),
("LEFTPADDING", (0,0), (-1,-1), 4),
("RIGHTPADDING", (0,0), (-1,-1), 4),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
]))
story.append(trace_table)
story.append(sp(6))
story.append(colored_box_para(
"MEMORY TRICKS for Trace Minerals:\n"
"ZINC = 'ZINC makes you think' - enzymes, brain, taste, smell\n"
"Zinc deficiency = 'DASH' = Dwarfism, Anosmia, Slow wound healing, Hypogonadism\n"
"COPPER = 'COPPER carries iron' - ceruloplasmin helps iron transport\n"
"Wilson's disease = 'Wilson WEARS a ring' = Kayser-Fleischer ring in eyes\n"
"FLUORIDE = 'Fluoride FIGHTS cavities' (deficiency = caries; excess = mottled teeth)\n"
"Fluorosis: 'Too much fluoride MOTTLE your smile'",
C_YELLOW,
S("mt16", fontSize=9.5, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=14)
))
story.append(PageBreak())
# ── FINAL EXAM TIPS ──────────────────────────────────────────────────────────
story.append(colored_box_para("FINAL EXAM TIPS - HOW TO WRITE FOR FULL MARKS", C_DARK_BLUE,
S("fet", fontSize=13, textColor=C_WHITE, fontName="Helvetica-Bold",
leading=18, alignment=TA_CENTER)))
story.append(sp(8))
tips_data = [
["TIP", "WHAT TO DO", "EXAMPLE"],
["1. START with Definition", "Always write a 1-2 line definition first", "Vitamin A is a fat-soluble vitamin also known as Retinol, essential for vision and epithelial integrity."],
["2. USE SUBHEADINGS", "Bold headings for Sources, Functions, Deficiency, Toxicity", "Sources: (then list)\nFunctions: (then list)\nDeficiency: (then list)"],
["3. NUMBERED LISTS", "Never write a paragraph - use numbered points", "Functions:\n1. Vision - component of rhodopsin\n2. Epithelial integrity..."],
["4. DRAW TABLES", "For classifications and comparisons, draw a table", "Fat vs Water-soluble table\nHypocalcemia vs Hypercalcemia table"],
["5. MENTION CLINICAL SIGN", "Add the pathognomonic or most important clinical sign", "Bitot's spots are pathognomonic of Vitamin A deficiency"],
["6. MENTION LAB FINDINGS", "Where relevant, add one or two lab values", "In IDA: Low serum iron, Low ferritin, High TIBC"],
["7. END WITH TREATMENT", "Always end long answers with treatment/prevention", "Treatment: Vitamin C 100-200 mg/day; Prevention: iodized salt"],
["8. USE MNEMONICS IN EXAM", "Write the mnemonic as part of your answer", "Pellagra presents with the 4 D's: Dermatitis, Diarrhea, Dementia, Death"],
]
tips_table = Table(tips_data, colWidths=[2.5*cm, 5*cm, 9.5*cm])
tips_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_GREEN),
("TEXTCOLOR", (0,0), (-1,0), C_WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,1), (-1,-1), 8.5),
("FONTNAME", (1,1), (-1,-1), "Helvetica"),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "TOP"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [C_WHITE, C_GREEN_LIGHT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#a5d6a7")),
("LEFTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
]))
story.append(tips_table)
story.append(sp(10))
story.append(colored_box_para(
"QUICK FIRE REVISION - ONE-LINERS FOR LAST MINUTE REVIEW\n\n"
"Vit A deficiency = Night blindness (earliest) + Bitot's spots (pathognomonic)\n"
"Vit D synthesis: Skin -> Liver (25-OH) -> Kidney (1,25-OH2) = Calcitriol\n"
"Rickets X-ray: Widened metaphysis, cupping, fraying of epiphysis\n"
"Vit E = antioxidant = protects RBC = hemolytic anemia in premature infants\n"
"Vit K factors: 1972 = II, VII, IX, X = Warfarin blocks their activation\n"
"B1 = TPP = Wernicke's (CAO triad) + Korsakoff's (confabulation)\n"
"B3 deficiency = Pellagra = 4 D's (Dermatitis, Diarrhea, Dementia, Death)\n"
"B6 = PLP = Transamination + NT synthesis; INH causes B6 deficiency\n"
"B9 = Folate = Megaloblastic anemia + Neural tube defects (no neurological features)\n"
"B12 = Cobalamin = Megaloblastic anemia + SACD (posterior + lateral columns)\n"
"B12 needs Intrinsic Factor from stomach; Pernicious anemia = no IF\n"
"Vit C = Collagen synthesis = Scurvy = Perifollicular hemorrhage + corkscrew hairs\n"
"Ca regulation: PTH (up), Calcitonin (down), Calcitriol (up)\n"
"Hypocalcemia signs: Trousseau's + Chvostek's = TETANY\n"
"Hypercalcemia: Bones Stones Groans Psychic Moans\n"
"IDA lab: Low Fe, Low Ferritin, HIGH TIBC = Microcytic hypochromic anemia\n"
"Iron master regulator = HEPCIDIN (liver)\n"
"Iodine deficiency = Goiter + Cretinism (in infants)\n"
"Iodine synthesis steps: Trapping -> Oxidation -> Organification -> Coupling -> Release\n"
"Wilson's disease = Copper excess = Kayser-Fleischer rings in eyes\n"
"Fluoride excess = Dental fluorosis (mottled teeth) + Skeletal fluorosis",
C_DARK_BLUE,
S("qf", fontSize=8.5, textColor=colors.HexColor("#e3f2fd"), fontName="Helvetica", leading=13)
))
# ── Build ───────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/biochem-notes && python3 make_pdf.py 2>&1
ls -lh /home/daytona/workspace/biochem-notes/Biochemistry_Vitamins_Minerals.pdf
Biochemistry Vitamins Minerals
PDF Document · PDF
| Section | What you get |
|---|---|
| Cover Page | Title, subject, exam-prep label |
| How to Use Guide | Colour coding explained |
| Chapter 1: Vitamins | All 11 vitamins (A, D, E, K, B1, B2, B3, B6, B9, B12, C) |
| Each vitamin has 3 parts | Simple explanation + Exam-format table + Memory tricks (yellow box) |
| Master Revision Table | All 11 vitamins in one single table - perfect for last-minute revision |
| Chapter 2: Minerals | Calcium, Iron, Iodine, Zinc, Copper, Fluoride |
| Calcium section | Regulation hormones, Hypocalcemia (Trousseau/Chvostek), Hypercalcemia (Bones Stones Groans Moans) |
| Iron section | Full metabolism, IDA lab values, Plummer-Vinson, Hemochromatosis |
| Exam Writing Tips | 8 tips on exactly how to structure your answers |
| Final Quick-Fire list | 20+ one-liner revision statements for the night before exam |
Why so much time?
Now make for biochem
Biochemistry Vitamins Minerals
PDF Document · PDF
Is this pdf have not thats much discription i only want to pass in my exam
~/biochem-notes/make_simple_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, HRFlowable
from reportlab.lib.enums import TA_CENTER, TA_LEFT
OUTPUT = "/home/daytona/workspace/biochem-notes/Biochem_Pass_Notes.pdf"
doc = SimpleDocTemplate(OUTPUT, pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=1.5*cm, bottomMargin=1.5*cm)
BLUE = colors.HexColor("#1565c0")
LBLUE = colors.HexColor("#e3f2fd")
GREEN = colors.HexColor("#2e7d32")
LGREEN = colors.HexColor("#e8f5e9")
RED = colors.HexColor("#c62828")
LRED = colors.HexColor("#ffebee")
ORANGE = colors.HexColor("#e65100")
YELLOW = colors.HexColor("#fffde7")
GREY = colors.HexColor("#f5f5f5")
WHITE = colors.white
BLACK = colors.black
def sty(name, **kw): return ParagraphStyle(name, **kw)
TITLE = sty("t", fontSize=20, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=26)
CH = sty("ch", fontSize=13, textColor=WHITE, fontName="Helvetica-Bold", alignment=TA_CENTER, leading=18)
SH = sty("sh", fontSize=11, textColor=BLUE, fontName="Helvetica-Bold", leading=15)
BODY = sty("b", fontSize=9, textColor=BLACK, fontName="Helvetica", leading=13)
BOLD = sty("bo", fontSize=9, textColor=BLACK, fontName="Helvetica-Bold", leading=13)
TRICK = sty("tr", fontSize=9, textColor=colors.HexColor("#4e342e"), fontName="Helvetica-BoldOblique", leading=13)
RED_S = sty("rs", fontSize=9, textColor=RED, fontName="Helvetica-Bold", leading=13)
def sp(n=5): return Spacer(1, n)
def hr(): return HRFlowable(width="100%", thickness=0.4, color=colors.HexColor("#b0bec5"), spaceAfter=3, spaceBefore=3)
def box(text, bg, style):
t = Table([[Paragraph(text, style)]], colWidths=[doc.width])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1),bg),
("BOX",(0,0),(-1,-1),0.5,colors.HexColor("#90a4ae")),
("LEFTPADDING",(0,0),(-1,-1),7),
("RIGHTPADDING",(0,0),(-1,-1),7),
("TOPPADDING",(0,0),(-1,-1),5),
("BOTTOMPADDING",(0,0),(-1,-1),5),
]))
return t
def simple_table(data, col_widths, hdr_color=BLUE):
t = Table(data, colWidths=col_widths)
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0), hdr_color),
("TEXTCOLOR",(0,0),(-1,0), WHITE),
("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),
("FONTSIZE",(0,0),(-1,-1),8),
("FONTNAME",(0,1),(-1,-1),"Helvetica"),
("GRID",(0,0),(-1,-1),0.3,colors.HexColor("#b0bec5")),
("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, GREY]),
("VALIGN",(0,0),(-1,-1),"TOP"),
("LEFTPADDING",(0,0),(-1,-1),4),
("TOPPADDING",(0,0),(-1,-1),3),
("BOTTOMPADDING",(0,0),(-1,-1),3),
]))
return t
story = []
# ── COVER ──────────────────────────────────────────────────────────────────
cover = Table([[Paragraph("BIOCHEMISTRY", TITLE)],
[sp(4)],
[Paragraph("Vitamins & Mineral Metabolism", sty("cs", fontSize=13, textColor=colors.HexColor("#bbdefb"), fontName="Helvetica", leading=18, alignment=TA_CENTER))],
[sp(6)],
[Paragraph("PASS NOTES | Exam Ready | Simple & Short", sty("ci", fontSize=10, textColor=colors.HexColor("#e3f2fd"), fontName="Helvetica", leading=14, alignment=TA_CENTER))],
], colWidths=[doc.width + 3*cm])
cover.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1),BLUE),
("LEFTPADDING",(0,0),(-1,-1),20),
("TOPPADDING",(0,0),(-1,-1),8),
("BOTTOMPADDING",(0,0),(-1,-1),8),
]))
story += [cover, sp(10)]
# ── CLASSIFICATION ─────────────────────────────────────────────────────────
story += [box("VITAMINS - CLASSIFICATION", BLUE, CH), sp(5)]
cls = [["Type","Vitamins","Stored?","Toxic?"],
["Fat-Soluble","A, D, E, K","YES (liver)","YES"],
["Water-Soluble","B1,B2,B3,B6,B9,B12,C","NO","Rarely"]]
story += [simple_table(cls,[3*cm,5*cm,4*cm,4*cm]), sp(4)]
story += [box("TRICK: Fat soluble = ADEK | Water soluble = all B's + C", YELLOW, TRICK), sp(8)]
# ── FAT SOLUBLE VITAMINS ───────────────────────────────────────────────────
story += [box("FAT-SOLUBLE VITAMINS", BLUE, CH), sp(5)]
# Vitamin A
story += [Paragraph("VITAMIN A (Retinol)", SH), sp(2)]
va = [["Sources","Liver, egg, dairy, fish oil | Beta-carotene (carrots, green veg)"],
["Active form","11-cis-retinal (vision), Retinoic acid (growth)"],
["Functions","1. Vision (Rhodopsin in rods)\n2. Epithelial integrity\n3. Immunity\n4. Growth & reproduction"],
["Deficiency","Night blindness (EARLIEST) | Xerophthalmia | Bitot's spots* | Keratomalacia"],
["Toxicity","Headache, vomiting, teratogenic in pregnancy"]]
story += [simple_table(va,[3.5*cm,13.5*cm]), sp(3)]
story += [box("*Bitot's spots = foamy patches on conjunctiva = PATHOGNOMONIC of Vit A deficiency\nTRICK: A = Adjusting eyes in dark (night blindness first sign)", YELLOW, TRICK), sp(6)]
# Vitamin D
story += [Paragraph("VITAMIN D (Calciferol) - Sunshine Vitamin", SH), sp(2)]
vd = [["Synthesis","Skin (UV) → Cholecalciferol → Liver (25-OH) → Kidney (1,25-OH2) = CALCITRIOL"],
["Functions","1. Ca2+ absorption (intestine)\n2. Bone mineralization\n3. Phosphate absorption"],
["Deficiency\n(Children)","RICKETS: Bow legs, Rachitic rosary, Frontal bossing, Craniotabes"],
["Deficiency\n(Adults)","OSTEOMALACIA: Bone softening, pain, fractures"],
["Lab (Rickets)","Low Ca, Low PO4, HIGH ALP (alkaline phosphatase)"]]
story += [simple_table(vd,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: Skin→Liver→Kidney = 'SLK = Silk Road'\nLab: Both minerals DOWN, ALP UP", YELLOW, TRICK), sp(6)]
# Vitamin E
story += [Paragraph("VITAMIN E (Tocopherol)", SH), sp(2)]
ve = [["Sources","Vegetable oils, nuts, seeds"],
["Function","Antioxidant - protects RBC membrane and cell membranes (PUFA protection)"],
["Deficiency","Hemolytic anemia in premature infants | Peripheral neuropathy | Ataxia"]]
story += [simple_table(ve,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: E = Erythrocytes (RBCs). 'Early premature babies need E'", YELLOW, TRICK), sp(6)]
# Vitamin K
story += [Paragraph("VITAMIN K - Blood Clotting Vitamin", SH), sp(2)]
vk = [["Forms","K1 (plants), K2 (gut bacteria), K3 (synthetic)"],
["Function","Gamma-carboxylation of clotting factors: II, VII, IX, X + Protein C, S"],
["Mechanism","Warfarin blocks VKOR (Vitamin K epoxide reductase) → clotting factors inactive"],
["Deficiency","Bleeding | Prolonged PT | Hemorrhagic disease of newborn (HDN)"],
["HDN","Newborns: no gut bacteria → no K2 → bleed on day 2-7\nPrevention: Vit K injection at birth"]]
story += [simple_table(vk,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: K = Koagulation | Factors: 1972 = II, VII, IX, X\nWarfarin = blocks K recycling", YELLOW, TRICK), sp(4)]
story.append(PageBreak())
# ── WATER-SOLUBLE VITAMINS ─────────────────────────────────────────────────
story += [box("WATER-SOLUBLE VITAMINS (B-Complex & Vitamin C)", BLUE, CH), sp(5)]
# B1
story += [Paragraph("B1 - Thiamine", SH), sp(2)]
b1 = [["Active form","TPP (Thiamine Pyrophosphate)"],
["Key enzymes","Pyruvate DH | Alpha-KG DH | Transketolase"],
["Deficiency","DRY BERIBERI: Peripheral neuropathy\nWET BERIBERI: Neuropathy + Heart failure + Edema\nWERNICKE'S: Confusion + Ataxia + Ophthalmoplegia (CAO triad)\nKORSAKOFF'S: Confabulation + Amnesia"],
["Common in","Alcoholics, polished rice eaters"]]
story += [simple_table(b1,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: Wernicke = CAO = Confusion, Ataxia, Ophthalmoplegia\nKorsakoff = K for Konfabulation", YELLOW, TRICK), sp(6)]
# B2
story += [Paragraph("B2 - Riboflavin", SH), sp(2)]
b2 = [["Active forms","FMN, FAD"],
["Deficiency","3 C's: Cheilosis + Corneal vascularization + Confusion\nAlso: Glossitis (magenta tongue), seborrheic dermatitis"]]
story += [simple_table(b2,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: B2 = '3 C's' = Cheilosis, Corneal vascularization, Confusion", YELLOW, TRICK), sp(6)]
# B3
story += [Paragraph("B3 - Niacin", SH), sp(2)]
b3 = [["Active forms","NAD+, NADP+"],
["Made from","Tryptophan (60mg Trp = 1mg Niacin)"],
["PELLAGRA\n(4 D's)","Dermatitis (Casal's necklace) | Diarrhea | Dementia | Death"],
["At risk","Corn eaters, Hartnup disease, Carcinoid syndrome, Alcoholics"]]
story += [simple_table(b3,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: Pellagra = 4 D's: Dermatitis, Diarrhea, Dementia, Death\nCasal's necklace = rash around neck like a necklace", YELLOW, TRICK), sp(6)]
# B6
story += [Paragraph("B6 - Pyridoxine", SH), sp(2)]
b6 = [["Active form","PLP (Pyridoxal Phosphate)"],
["Functions","Transamination | NT synthesis (Serotonin, Dopamine, GABA) | Heme synthesis"],
["Deficiency","Peripheral neuropathy | Sideroblastic anemia | Convulsions"],
["Important","INH (anti-TB drug) causes B6 deficiency → give B6 with INH"]]
story += [simple_table(b6,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: INH = 'INH Is Not Happy without B6' | B6 builds brain chemicals", YELLOW, TRICK), sp(6)]
# B9
story += [Paragraph("B9 - Folic Acid", SH), sp(2)]
b9 = [["Active form","THF (Tetrahydrofolate)"],
["Functions","DNA synthesis (thymidylate) | 1C transfer | Amino acid metabolism"],
["Deficiency","Megaloblastic anemia: Large RBCs (macro-ovalocytes) + Hypersegmented neutrophils\nNeural tube defects (Spina bifida, Anencephaly) in fetus"],
["Note","NO neurological features (unlike B12)\nTake 400mcg BEFORE and during pregnancy"]]
story += [simple_table(b9,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: Folate = For fetus | Spina bifida = Spinal B9 deficiency\nHypersegmented neutrophil (>5 lobes) = HALLMARK finding", YELLOW, TRICK), sp(6)]
# B12
story += [Paragraph("B12 - Cobalamin", SH), sp(2)]
b12 = [["Active forms","Methylcobalamin, Adenosylcobalamin"],
["Functions","Methionine synthesis + Methylmalonyl-CoA → Succinyl-CoA (myelin maintenance)"],
["Deficiency","Megaloblastic anemia + SACD (Subacute Combined Degeneration of spinal cord)\nSACD: Loss of vibration/proprioception + Spastic weakness"],
["Causes","Pernicious anemia (no Intrinsic Factor) | Vegan diet | Gastrectomy | Ileal disease"],
["B12 vs B9","BOTH: Megaloblastic anemia | ONLY B12: Neurological features + Elevated MMA"]]
story += [simple_table(b12,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: B12 = Big cells + Nerve damage | Pernicious = no Intrinsic Factor\n'Neuro = Never B9, Always B12'", YELLOW, TRICK), sp(4)]
story.append(PageBreak())
# Vitamin C
story += [Paragraph("VITAMIN C - Ascorbic Acid", SH), sp(2)]
vc = [["Sources","Citrus, guava, AMLA (richest source). Destroyed by heat!"],
["Functions","Collagen synthesis (hydroxylates proline & lysine) | Antioxidant | Iron absorption (Fe3+→Fe2+)"],
["SCURVY\n(deficiency)","Bleeding gums | Perifollicular hemorrhage | Corkscrew hairs\nSubperiosteal hemorrhage | Poor wound healing | Corkscrew hairs"],
["Treatment","Vitamin C 100-200 mg/day"]]
story += [simple_table(vc,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: C = Collagen & Cuts | Scurvy = 'PeG CoRKS' = Perifollicular, Gum bleed, Corkscrew hairs\nAmla = Ace of Vitamin C", YELLOW, TRICK), sp(6)]
# ── MASTER TABLE ───────────────────────────────────────────────────────────
story += [box("MASTER TABLE - All Vitamins (Memorize This!)", GREEN, CH), sp(5)]
master = [["Vitamin","Deficiency Disease","Key Sign to Write"],
["A","Night blindness, Xerophthalmia","Bitot's spots (PATHOGNOMONIC)"],
["D","Rickets (child), Osteomalacia (adult)","Low Ca, Low PO4, HIGH ALP"],
["E","Hemolytic anemia (premature infant)","Oxidative hemolysis"],
["K","Bleeding, HDN","Prolonged PT"],
["B1","Beriberi, Wernicke's, Korsakoff's","CAO triad (Wernicke's)"],
["B2","Cheilosis, Corneal vascularis.","3 C's"],
["B3","PELLAGRA","4 D's + Casal's necklace"],
["B6","Peripheral neuropathy, Sideroblastic anemia","Ring sideroblasts (BM)"],
["B9","Megaloblastic anemia + NTDs","Hypersegmented neutrophils"],
["B12","Megaloblastic anemia + SACD","Elevated MMA (B12 specific)"],
["C","SCURVY","Perifollicular hemorrhage"]]
story += [simple_table(master,[2*cm,6.5*cm,8.5*cm], GREEN), sp(8)]
# ── MINERAL METABOLISM ─────────────────────────────────────────────────────
story += [box("MINERAL METABOLISM", BLUE, CH), sp(5)]
# Calcium
story += [Paragraph("CALCIUM METABOLISM", SH), sp(2)]
ca_reg = [["Hormone","Source","Effect on Ca2+","Key Action"],
["PTH","Parathyroid","INCREASES","Bone resorption, Ca reabsorption (kidney), activates Vit D"],
["Calcitriol (Vit D)","Kidney","INCREASES","Ca absorption from intestine (via Calbindin)"],
["Calcitonin","Thyroid C-cells","DECREASES","Inhibits osteoclasts"]]
story += [simple_table(ca_reg,[3*cm,3.5*cm,3*cm,7.5*cm]), sp(4)]
story += [Paragraph("Hypocalcemia (Low Ca):", BOLD), sp(2)]
hypo = [["Causes","Hypoparathyroidism, Vit D deficiency, CRF, Hypomagnesemia"],
["Signs","TETANY: Trousseau's sign + Chvostek's sign\nCarpopedal spasm, perioral tingling, QT prolongation on ECG"],
["Trousseau's","Carpal spasm on inflating BP cuff"],
["Chvostek's","Facial twitch on tapping facial nerve"]]
story += [simple_table(hypo,[3.5*cm,13.5*cm], RED), sp(4)]
story += [Paragraph("Hypercalcemia (High Ca):", BOLD), sp(2)]
story += [box("BONES: Bone pain, fractures\nSTONES: Kidney stones, nephrocalcinosis\nGROANS: Abdominal pain, constipation, peptic ulcer\nPSYCHIC MOANS: Confusion, depression, weakness, polyuria", LRED,
sty("hc", fontSize=9, textColor=RED, fontName="Helvetica-Bold", leading=13))]
story += [sp(3)]
story += [box("TRICK: PTH = Pushes Ca up, Pulls PO4 down\nTC = Trousseau's + Chvostek's = two signs of hypocalcemia\nHypercalcemia = Bones Stones Groans Moans", YELLOW, TRICK), sp(6)]
# Iron
story += [Paragraph("IRON METABOLISM", SH), sp(2)]
iron = [["Absorption","Duodenum | Fe2+ better than Fe3+ | Vit C helps | Tea/phytates block"],
["Transport","Bound to TRANSFERRIN in blood"],
["Storage","FERRITIN (best marker of iron stores)"],
["Regulation","HEPCIDIN (liver): high iron→more hepcidin→less absorption"],
["IDA Lab","Low serum Fe, LOW ferritin, HIGH TIBC → Microcytic hypochromic anemia"],
["IDA Signs","Fatigue, pallor, KOILONYCHIA (spoon nails), PICA, angular stomatitis"],
["Plummer-Vinson","IDA + Dysphagia + Esophageal web (risk: esophageal cancer)"],
["Hemochromatosis","Iron overload: Bronze skin + Diabetes + Cirrhosis = Bronze diabetes"]]
story += [simple_table(iron,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: IDA = Low-Low-High (Fe, Ferritin, TIBC)\nKoilonychia = spoon nails = classic IDA sign\nHepcidin = master regulator of iron", YELLOW, TRICK), sp(6)]
# Iodine
story += [Paragraph("IODINE & THYROID HORMONES", SH), sp(2)]
iod = [["Requirement","150 mcg/day | 200-300 mcg in pregnancy"],
["Synthesis\nSteps","1. TRAPPING: I- taken up by thyroid (NIS transporter)\n2. OXIDATION: I- → I2 (by TPO)\n3. ORGANIFICATION: I2 added to tyrosine → MIT, DIT\n4. COUPLING: MIT+DIT=T3 | DIT+DIT=T4\n5. RELEASE: Proteolysis of thyroglobulin"],
["Deficiency","Goiter (MOST COMMON) | Hypothyroidism\nCRETINISM (infant): Mental retardation, stunted growth, deaf-mutism"],
["Prevention","Iodization of salt (25-30 mcg/g salt)"]]
story += [simple_table(iod,[3.5*cm,13.5*cm]), sp(3)]
story += [box("TRICK: Synthesis = TOOC-R = Trapping, Oxidation, Organification, Coupling, Release\n1+2=3, 2+2=4 → MIT+DIT=T3, DIT+DIT=T4", YELLOW, TRICK), sp(6)]
# Trace minerals
story += [Paragraph("TRACE MINERALS", SH), sp(2)]
trace = [["Mineral","Function","Deficiency","Excess"],
["ZINC","300+ enzymes, wound healing,\ntaste & smell, immunity","Dwarfism, hypogonadism,\nAgeusia, anosmia","Nausea, blocks Cu\nabsorption"],
["COPPER","Ceruloplasmin, collagen (lysyl oxidase),\nmelanin (tyrosinase)","Anemia, depigmentation,\nMenkes disease","Wilson's disease:\nKayser-Fleischer rings"],
["FLUORIDE","Strengthens tooth enamel & bone","Dental caries","Fluorosis:\nmottled teeth"]]
story += [simple_table(trace,[2.5*cm,5.5*cm,4.5*cm,4.5*cm]), sp(3)]
story += [box("TRICK: Wilson's = copper excess = Kayser-Fleischer rings (brown ring in cornea)\nFluoride excess = mottled teeth | Fluoride deficiency = caries", YELLOW, TRICK), sp(6)]
# ── FINAL QUICK REVISION ───────────────────────────────────────────────────
story.append(PageBreak())
story += [box("LAST MINUTE QUICK REVISION", GREEN, CH), sp(5)]
qr = [
"Vit A deficiency: Night blindness FIRST → Bitot's spots (pathognomonic)",
"Vit D synthesis: Skin → Liver (25-OH) → Kidney (1,25-OH2 = Calcitriol)",
"Rickets lab: Low Ca, Low PO4, HIGH ALP",
"Vit E: antioxidant, hemolytic anemia in premature infants",
"Vit K: factors II, VII, IX, X | Warfarin blocks VKOR | HDN in newborns",
"B1 (Thiamine): Wernicke's = CAO | Korsakoff's = confabulation | TPP coenzyme",
"B2: 3 C's = Cheilosis, Corneal vascularization, Confusion",
"B3: Pellagra = 4 D's (Dermatitis, Diarrhea, Dementia, Death)",
"B6: PLP coenzyme | INH causes B6 deficiency (give B6 with INH)",
"B9: Megaloblastic anemia + Neural tube defects | NO neurological features",
"B12: Megaloblastic anemia + SACD | Pernicious anemia = no Intrinsic Factor",
"B12 specific: Elevated methylmalonic acid (MMA) | Neurological = B12 not B9",
"Vit C: Collagen synthesis | Scurvy = bleeding gums, corkscrew hairs, perifollicular hemorrhage",
"Ca regulation: PTH (up), Calcitonin (down), Calcitriol (up)",
"Hypocalcemia: Trousseau's + Chvostek's signs = TETANY",
"Hypercalcemia: Bones Stones Groans Psychic Moans",
"IDA lab: Low Fe, Low Ferritin, HIGH TIBC = microcytic hypochromic anemia",
"Iron master regulator = Hepcidin",
"Iodine deficiency = Goiter + Cretinism in infants",
"Wilson's disease = copper excess = Kayser-Fleischer rings",
"Fluoride: deficiency = caries | excess = mottled teeth (dental fluorosis)",
]
for i, line in enumerate(qr):
bg = LGREEN if i % 2 == 0 else WHITE
story.append(box(f"{i+1}. {line}", bg,
sty(f"q{i}", fontSize=8.5, textColor=BLACK, fontName="Helvetica", leading=13)))
story.append(sp(2))
doc.build(story)
print(f"Done: {OUTPUT}")
cd /home/daytona/workspace/biochem-notes && python3 make_simple_pdf.py 2>&1
ls -lh /home/daytona/workspace/biochem-notes/Biochem_Pass_Notes.pdf
Biochem Pass Notes
PDF Document · PDF
Pdf not downloading
ls -lh /home/daytona/workspace/biochem-notes/ && echo "---" && file /home/daytona/workspace/biochem-notes/Biochem_Pass_Notes.pdf
Biochem Pass Notes
PDF Document · PDF
Biochemistry Vitamins Minerals
PDF Document · PDF