I have a seminar on glucocorticoid and its function give me 6-7 minutes information on this topic in detail according to mbbs first year physiology

Medical Physiology (Boron & Boulpaep), p. 1496
Ganong's Review of Medical Physiology, 26th Ed., p. 349
Hypothalamus (PVN)
↓ CRH (41-amino acid peptide)
Anterior Pituitary (Corticotrophs)
↓ ACTH (39-amino acid peptide)
Zona Fasciculata
↓ Cortisol
Negative Feedback (to both hypothalamus & pituitary)
Medical Physiology, p. 1499; Ganong's, p. 348
| Cell Type | Effect |
|---|---|
| Neutrophils | Increase (demargination from vessel walls) |
| Lymphocytes | Decrease (sequestration + apoptosis) |
| Eosinophils | Decrease significantly (sequestration in spleen/lungs) |
| Basophils | Decrease |
| Red blood cells | Slight increase |
| Platelets | Increase |
| Condition | Cause | Key Features |
|---|---|---|
| Cushing's Syndrome | Glucocorticoid excess | Central obesity, moon face, buffalo hump, striae, hypertension, hyperglycemia, osteoporosis |
| Addison's Disease | Glucocorticoid deficiency | Hypoglycemia, hypotension, weakness, hyperpigmentation (↑ ACTH/MSH), inability to respond to stress |
| Congenital Adrenal Hyperplasia (CAH) | Enzyme deficiency (usually 21-hydroxylase) | Impaired cortisol synthesis → no feedback → excess ACTH → adrenal hyperplasia + androgen excess |
| System | Effect |
|---|---|
| Carbohydrate | ↑ Blood glucose, ↑ gluconeogenesis, anti-insulin |
| Protein | ↑ Catabolism, ↑ amino acid mobilization |
| Fat | ↑ Lipolysis, ↑ FFA (with excess: fat redistribution) |
| Immune | Anti-inflammatory, immunosuppressive |
| CVS | Permissive for catecholamine action, ↑ BP |
| Water | ↑ GFR, ↓ ADH, enables water excretion |
| CNS | Mood, behavior, circadian regulation |
| Bone | ↑ Resorption, ↓ formation → osteoporosis |
| Blood | ↑ Neutrophils, RBCs; ↓ lymphocytes, eosinophils |
| Stress | Essential for survival under severe stress |
Make PDF of this
ls /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace
mkdir -p /home/daytona/workspace/glucocorticoid-seminar && python3 -c "import reportlab; print('reportlab ok')" && python3 -c "import requests; print('requests ok')"
~/glucocorticoid-seminar/make_pdf.py
import requests
import os
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, Image, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
from io import BytesIO
OUTPUT = "/home/daytona/workspace/glucocorticoid-seminar/Glucocorticoids_Seminar.pdf"
# Download adrenal image
IMG_URL = "https://cdn.orris.care/cdss_images/8d85859e6b8de42c81b30c446cd3dc7fc709223700316f9579346f2e4ffd7a6c.png"
img_path = "/home/daytona/workspace/glucocorticoid-seminar/adrenal.png"
if not os.path.exists(img_path):
r = requests.get(IMG_URL, timeout=20)
with open(img_path, "wb") as f:
f.write(r.content)
print("Image downloaded")
# ----- Styles -----
styles = getSampleStyleSheet()
TEAL = colors.HexColor("#1A6B72")
LTEAL = colors.HexColor("#E8F5F6")
GOLD = colors.HexColor("#C8860A")
DGRAY = colors.HexColor("#2D2D2D")
MGRAY = colors.HexColor("#555555")
LGRAY = colors.HexColor("#F4F6F7")
WHITE = colors.white
title_style = ParagraphStyle("Title", parent=styles["Normal"],
fontSize=22, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_CENTER, spaceAfter=4)
subtitle_style = ParagraphStyle("Subtitle", parent=styles["Normal"],
fontSize=11, textColor=colors.HexColor("#D0EEF0"),
fontName="Helvetica", alignment=TA_CENTER, spaceAfter=2)
h1_style = ParagraphStyle("H1", parent=styles["Normal"],
fontSize=14, textColor=WHITE, fontName="Helvetica-Bold",
alignment=TA_LEFT, spaceBefore=4, spaceAfter=4,
leftIndent=6)
h2_style = ParagraphStyle("H2", parent=styles["Normal"],
fontSize=11, textColor=TEAL, fontName="Helvetica-Bold",
spaceBefore=10, spaceAfter=3)
h3_style = ParagraphStyle("H3", parent=styles["Normal"],
fontSize=10, textColor=GOLD, fontName="Helvetica-Bold",
spaceBefore=7, spaceAfter=2)
body_style = ParagraphStyle("Body", parent=styles["Normal"],
fontSize=9.5, textColor=DGRAY, fontName="Helvetica",
leading=14, spaceAfter=4, alignment=TA_JUSTIFY)
bullet_style = ParagraphStyle("Bullet", parent=styles["Normal"],
fontSize=9.5, textColor=MGRAY, fontName="Helvetica",
leading=14, leftIndent=14, bulletIndent=4, spaceAfter=2)
note_style = ParagraphStyle("Note", parent=styles["Normal"],
fontSize=8.5, textColor=MGRAY, fontName="Helvetica-Oblique",
leading=12, spaceAfter=4)
footer_style = ParagraphStyle("Footer", parent=styles["Normal"],
fontSize=7.5, textColor=MGRAY, fontName="Helvetica",
alignment=TA_CENTER)
def section_header(text, style=h1_style, bg=TEAL):
data = [[Paragraph(text, style)]]
t = Table(data, colWidths=[17*cm])
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 info_box(text, bg=LTEAL, border=TEAL):
data = [[Paragraph(text, ParagraphStyle("IB", parent=body_style, textColor=colors.HexColor("#0D4A50")))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LINEAFTER", (0,0), (0,-1), 3, border),
]))
return t
def bullet(text):
return Paragraph(f"• {text}", bullet_style)
def sp(n=6):
return Spacer(1, n)
def hr():
return HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC"), spaceAfter=4)
# ===== BUILD STORY =====
story = []
# ---- TITLE BLOCK ----
title_data = [[
Paragraph("GLUCOCORTICOIDS", title_style),
Paragraph("Structure, Synthesis & Functions", subtitle_style),
Paragraph("MBBS First Year Physiology Seminar", subtitle_style),
]]
title_table = Table([[Paragraph("GLUCOCORTICOIDS", title_style)],
[Paragraph("Structure, Synthesis & Functions", subtitle_style)],
[Paragraph("MBBS First Year Physiology Seminar", subtitle_style)]],
colWidths=[17*cm])
title_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS",[5]),
]))
story.append(title_table)
story.append(sp(12))
# ---- 1. INTRODUCTION ----
story.append(section_header("1. Introduction"))
story.append(sp(6))
story.append(Paragraph(
"Glucocorticoids are <b>steroid hormones</b> produced by the <b>zona fasciculata</b> of the adrenal cortex. "
"The primary glucocorticoid in humans is <b>cortisol</b> (hydrocortisone). Corticosterone is a minor "
"glucocorticoid; in rodents it is the principal one. The adrenal gland sits atop each kidney; its cortex "
"has three zones:",
body_style))
story.append(sp(4))
zone_data = [
[Paragraph("<b>Zone</b>", body_style), Paragraph("<b>Location</b>", body_style), Paragraph("<b>Hormone</b>", body_style)],
["Zona Glomerulosa", "Outer", "Mineralocorticoids (Aldosterone)"],
["Zona Fasciculata", "Middle (largest)", "Glucocorticoids (Cortisol) ✓"],
["Zona Reticularis", "Inner", "Androgens (DHEA, Androstenedione)"],
]
zone_table = Table(zone_data, colWidths=[5.5*cm, 4.5*cm, 7*cm])
zone_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("BACKGROUND", (0,2), (-1,2), colors.HexColor("#D6EFF1")),
("FONTNAME", (0,2), (-1,2), "Helvetica-Bold"),
]))
story.append(zone_table)
story.append(sp(8))
# Adrenal image
try:
img = Image(img_path, width=6.5*cm, height=8.5*cm)
img_caption = Paragraph(
"<i>Fig: Adrenal gland anatomy showing three cortical zones and their hormones</i><br/>"
"<i>(Medical Physiology - Boron & Boulpaep, p. 1496)</i>", note_style)
img_data = [[img, img_caption]]
img_table = Table(img_data, colWidths=[7*cm, 10*cm])
img_table.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 0),
]))
story.append(img_table)
except Exception as e:
print(f"Image error: {e}")
story.append(sp(8))
# ---- 2. CHEMICAL NATURE & SYNTHESIS ----
story.append(section_header("2. Chemical Nature and Biosynthesis"))
story.append(sp(6))
story.append(Paragraph(
"Glucocorticoids are <b>lipid-soluble steroid hormones</b> derived from <b>cholesterol</b>. "
"Normal daily cortisol secretion is <b>15-25 mg/day</b>, surging up to 10x during severe stress.",
body_style))
story.append(sp(4))
story.append(Paragraph("Key Biosynthetic Steps:", h3_style))
synth_steps = [
("Cholesterol", "→ Pregnenolone", "P450scc / CYP11A1", "Mitochondria"),
("Pregnenolone", "→ Progesterone", "3β-HSD", "SER"),
("Progesterone", "→ 17α-OH Progesterone", "CYP17 / 17α-hydroxylase", "SER"),
("17α-OH Progesterone", "→ 11-Deoxycortisol", "CYP21A2 / 21β-hydroxylase", "SER"),
("11-Deoxycortisol", "→ <b>CORTISOL</b>", "CYP11B1 / 11β-hydroxylase", "Mitochondria"),
]
synth_data = [[Paragraph("<b>From</b>", body_style), Paragraph("<b>To</b>", body_style),
Paragraph("<b>Enzyme</b>", body_style), Paragraph("<b>Location</b>", body_style)]]
for row in synth_steps:
synth_data.append([Paragraph(row[0], body_style), Paragraph(row[1], body_style),
Paragraph(row[2], body_style), Paragraph(row[3], body_style)])
synth_table = Table(synth_data, colWidths=[3.8*cm, 3.8*cm, 5.4*cm, 4*cm])
synth_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), GOLD),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("BACKGROUND", (0,5), (-1,5), colors.HexColor("#FFF0CC")),
("FONTNAME", (0,5), (-1,5), "Helvetica-Bold"),
]))
story.append(synth_table)
story.append(sp(4))
story.append(info_box(
"<b>Key point:</b> Zona fasciculata has both 11β-hydroxylase AND 17α-hydroxylase → makes cortisol. "
"Zona glomerulosa lacks 17α-hydroxylase → cannot make cortisol, only aldosterone."
))
story.append(sp(10))
# ---- 3. HPA AXIS ----
story.append(section_header("3. Regulation: The HPA Axis"))
story.append(sp(6))
story.append(Paragraph(
"Cortisol secretion is controlled by the <b>Hypothalamo-Pituitary-Adrenal (HPA) Axis</b>:",
body_style))
story.append(sp(4))
hpa_data = [
[Paragraph("Hypothalamus (PVN)", ParagraphStyle("hpa", parent=body_style, alignment=TA_CENTER, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("Releases <b>CRH</b> (41-amino acid peptide). Triggers: circadian rhythm, stress, hypoglycemia, trauma.", body_style)],
[Paragraph("↓", ParagraphStyle("arr", parent=body_style, alignment=TA_CENTER, fontSize=14, textColor=TEAL)), ""],
[Paragraph("Anterior Pituitary", ParagraphStyle("hpa2", parent=body_style, alignment=TA_CENTER, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("Corticotrophs secrete <b>ACTH</b> (39-amino acid, from POMC precursor). Acts via cAMP → PKA → steroidogenesis.", body_style)],
[Paragraph("↓", ParagraphStyle("arr", parent=body_style, alignment=TA_CENTER, fontSize=14, textColor=TEAL)), ""],
[Paragraph("Zona Fasciculata", ParagraphStyle("hpa3", parent=body_style, alignment=TA_CENTER, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph("Secretes <b>Cortisol</b>. Exerts <b>negative feedback</b> on both hypothalamus and anterior pituitary.", body_style)],
]
hpa_table = Table(hpa_data, colWidths=[4.5*cm, 12.5*cm])
hpa_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), TEAL),
("BACKGROUND", (0,2), (0,2), colors.HexColor("#2980B9")),
("BACKGROUND", (0,4), (0,4), colors.HexColor("#27AE60")),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (0,-1), 4),
("LEFTPADDING", (1,0), (1,-1), 8),
("SPAN", (1,1), (1,1)),
("SPAN", (1,3), (1,3)),
]))
story.append(hpa_table)
story.append(sp(6))
story.append(bullet("<b>Circadian rhythm:</b> Cortisol peaks at 6-8 AM (just before waking), lowest at midnight"))
story.append(bullet("<b>Stress override:</b> Any physical/psychological stress overrides negative feedback → rapid cortisol surge"))
story.append(bullet("<b>AVP (vasopressin)</b> from PVN also acts as a potent ACTH secretagogue, especially during dehydration/trauma"))
story.append(sp(10))
# ---- 4. MECHANISM OF ACTION ----
story.append(section_header("4. Mechanism of Action"))
story.append(sp(6))
moa_steps = [
"Cortisol (lipid-soluble) <b>diffuses freely</b> across cell membrane",
"Binds intracellular <b>Glucocorticoid Receptors (GR)</b> - present in nearly every cell",
"Hormone-receptor complex translocates to <b>nucleus</b>",
"Binds <b>Glucocorticoid Response Elements (GREs)</b> on DNA",
"Either <b>activates or represses</b> transcription of target genes (genomic action)",
"<b>Non-genomic actions</b> also occur (0-3 hours) - rapid stress responses, not inhibited by transcription blockers",
]
for i, step in enumerate(moa_steps, 1):
data = [[Paragraph(str(i), ParagraphStyle("num", parent=body_style, alignment=TA_CENTER, textColor=WHITE, fontName="Helvetica-Bold")),
Paragraph(step, body_style)]]
t = Table(data, colWidths=[1*cm, 16*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), TEAL),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (1,0), (1,0), 8),
("ROUNDEDCORNERS", [3]),
]))
story.append(t)
story.append(sp(3))
story.append(sp(8))
# ---- 5. FUNCTIONS ----
story.append(section_header("5. Functions of Glucocorticoids"))
story.append(sp(6))
# 5A Metabolic
story.append(Paragraph("A. Metabolic Effects", h2_style))
story.append(Paragraph("<b>Carbohydrate Metabolism (Diabetogenic):</b>", h3_style))
for b in [
"Increases <b>hepatic gluconeogenesis</b> and glycogenesis (liver makes more glucose)",
"Increases <b>glucose-6-phosphatase</b> activity",
"Decreases peripheral glucose uptake (<b>anti-insulin effect</b>) in muscles and adipose",
"Net result: <b>raises blood glucose</b>",
"In adrenal insufficiency: fasting → fatal <b>hypoglycemia</b>",
]:
story.append(bullet(b))
story.append(sp(4))
story.append(Paragraph("<b>Protein Metabolism:</b>", h3_style))
for b in [
"Promotes <b>protein catabolism</b> in muscles, bone, skin, lymphoid tissue",
"Mobilizes amino acids → liver → gluconeogenesis substrate",
"Net: <b>negative nitrogen balance</b>, muscle wasting in excess (Cushing's syndrome)",
]:
story.append(bullet(b))
story.append(sp(4))
story.append(Paragraph("<b>Fat Metabolism:</b>", h3_style))
for b in [
"Promotes <b>lipolysis</b> in peripheral fat depots → mobilizes free fatty acids (FFAs)",
"Permissive effect on catecholamine-induced lipolysis",
"In excess: <b>fat redistribution</b> - central obesity, buffalo hump, moon facies",
]:
story.append(bullet(b))
story.append(sp(8))
# 5B Anti-inflammatory
story.append(Paragraph("B. Anti-Inflammatory and Immunosuppressive Effects", h2_style))
story.append(info_box(
"<b>Glucocorticoids are the most potent natural anti-inflammatory agents</b> and the most widely "
"used anti-inflammatory drugs in clinical medicine."
))
story.append(sp(4))
story.append(Paragraph("Mechanisms of anti-inflammatory action:", body_style))
anti_data = [
[Paragraph("<b>Mechanism</b>", body_style), Paragraph("<b>Effect</b>", body_style)],
["Stabilize lysosomal membranes", "Prevent release of destructive lysosomal enzymes"],
["Inhibit phospholipase A₂ (via lipocortin)", "↓ Arachidonic acid → ↓ Prostaglandins & Leukotrienes"],
["Inhibit NF-κB transcription factor", "↓ IL-1, IL-2, IL-6, TNF-α (pro-inflammatory cytokines)"],
["↓ IL-2 → lymphocyte apoptosis", "↓ Lymphocyte proliferation"],
["Reduce capillary permeability", "↓ Edema and exudate at inflammation site"],
["↓ Migration of neutrophils/macrophages", "Reduced cellular infiltration at inflammation site"],
]
anti_table = Table(anti_data, colWidths=[8.5*cm, 8.5*cm])
anti_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#2980B9")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(anti_table)
story.append(sp(6))
story.append(Paragraph("Blood Cell Changes with Elevated Cortisol:", h3_style))
blood_data = [
[Paragraph("<b>Cell Type</b>", body_style), Paragraph("<b>Effect</b>", body_style),
Paragraph("<b>Normal (/µL)</b>", body_style), Paragraph("<b>Cortisol-treated (/µL)</b>", body_style)],
["Neutrophils (PMNs)", "↑ Increase (demargination)", "5760", "8330"],
["Lymphocytes", "↓ Decrease (apoptosis)", "2370", "1080"],
["Eosinophils", "↓↓ Marked decrease (sequestration)", "270", "20"],
["Basophils", "↓ Decrease", "60", "30"],
["Red Blood Cells", "↑ Slight increase", "5 million", "5.2 million"],
["Platelets", "↑ Increase", "-", "↑"],
]
blood_table = Table(blood_data, colWidths=[4.5*cm, 5.5*cm, 3.5*cm, 3.5*cm])
blood_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("BACKGROUND", (0,3), (-1,3), colors.HexColor("#FFE8E8")),
]))
story.append(blood_table)
story.append(sp(4))
story.append(info_box(
"<b>Classic exam point:</b> Eosinopenia + Lymphopenia is a hallmark of elevated cortisol "
"(Cushing's syndrome or patients on corticosteroid therapy)."
))
story.append(sp(10))
# 5C Cardiovascular
story.append(Paragraph("C. Cardiovascular Effects (Permissive Action)", h2_style))
for b in [
"Glucocorticoids must be present for <b>catecholamines</b> to exert full vasoconstrictor effects",
"In adrenal insufficiency: vascular smooth muscle becomes <b>unresponsive to norepinephrine/epinephrine</b>",
"Capillaries dilate → become permeable → <b>vascular collapse and shock</b>",
"Glucocorticoids <b>restore vascular reactivity</b> - this is the 'permissive action'",
"This explains why <b>Addison's disease</b> patients are prone to circulatory shock during stress",
]:
story.append(bullet(b))
story.append(sp(8))
# 5D Water & Electrolytes
story.append(Paragraph("D. Effects on Water and Electrolyte Balance", h2_style))
for b in [
"Required for normal <b>water excretion</b> - adrenal insufficiency → inability to excrete water load → water intoxication",
"Mechanism: glucocorticoids raise <b>GFR</b> and suppress <b>ADH (vasopressin)</b> levels",
"At high doses (pharmacologic): <b>mild mineralocorticoid activity</b> → Na⁺ retention, K⁺ excretion",
"At physiological levels: minimal salt retention due to renal inactivation by 11β-HSD",
]:
story.append(bullet(b))
story.append(sp(8))
# 5E CNS
story.append(Paragraph("E. Effects on the Central Nervous System", h2_style))
for b in [
"Regulate <b>mood, behavior, and cognition</b>",
"In deficiency (Addison's): irritability, anxiety, inability to concentrate, slow EEG",
"In excess (Cushing's/steroid therapy): <b>euphoria, mood swings, steroid psychosis</b>",
"Regulate <b>sleep-wake cycles</b> and contribute to feelings of well-being",
]:
story.append(bullet(b))
story.append(sp(8))
# 5F Bone & Calcium
story.append(Paragraph("F. Effects on Bone and Calcium Metabolism", h2_style))
for b in [
"Decrease <b>intestinal Ca²⁺ absorption</b> (antagonize Vitamin D)",
"Increase <b>renal Ca²⁺ excretion</b>",
"Promote <b>bone resorption</b> and reduce bone formation (inhibit osteoblasts)",
"Long-term excess → <b>Osteoporosis</b> (major complication of chronic steroid therapy)",
]:
story.append(bullet(b))
story.append(sp(8))
# 5G Other
story.append(Paragraph("G. Effects on Other Tissues", h2_style))
other_data = [
[Paragraph("<b>Tissue</b>", body_style), Paragraph("<b>Effect</b>", body_style)],
["Skeletal Muscle", "Wasting and weakness at large doses (steroid myopathy)"],
["Skin", "Thinning, easy bruising, impaired wound healing (inhibit fibroblasts)"],
["Eye", "Increased intraocular pressure → risk of glaucoma"],
["GI Tract", "↑ Gastric acid and pepsin secretion → risk of peptic ulcers"],
["Lungs (Fetal)", "Promote surfactant synthesis → betamethasone used in premature labour"],
["Stress Response", "Essential for survival during severe stress (maintains vascular tone)"],
]
other_table = Table(other_data, colWidths=[5*cm, 12*cm])
other_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), GOLD),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(other_table)
story.append(sp(10))
# ---- 6. CLINICAL CORRELATES ----
story.append(section_header("6. Clinical Correlates"))
story.append(sp(6))
story.append(Paragraph(
"Understanding glucocorticoid excess and deficiency is essential for MBBS exams:",
body_style))
story.append(sp(4))
clin_data = [
[Paragraph("<b>Condition</b>", body_style), Paragraph("<b>Cause</b>", body_style), Paragraph("<b>Key Features</b>", body_style)],
[Paragraph("<b>Cushing's Syndrome</b>", ParagraphStyle("cs", parent=body_style, textColor=colors.HexColor("#C0392B"))),
"Glucocorticoid EXCESS\n(pituitary adenoma, adrenal tumor, exogenous steroids)",
"Central obesity, moon face, buffalo hump, purple striae, hypertension, hyperglycemia, osteoporosis, eosinopenia"],
[Paragraph("<b>Addison's Disease</b>", ParagraphStyle("ad", parent=body_style, textColor=colors.HexColor("#27AE60"))),
"Primary adrenal insufficiency\n(autoimmune, TB, infarction)",
"Hypoglycemia, hypotension, weakness, fatigue, hyperpigmentation (↑ACTH/MSH), inability to respond to stress → Addisonian crisis"],
[Paragraph("<b>Congenital Adrenal Hyperplasia</b>", ParagraphStyle("cah", parent=body_style, textColor=colors.HexColor("#8E44AD"))),
"Enzyme deficiency\n(usually 21-hydroxylase deficiency)",
"Impaired cortisol synthesis → no negative feedback → excess ACTH → adrenal hyperplasia + androgen excess → virilization"],
]
clin_table = Table(clin_data, colWidths=[4*cm, 5.5*cm, 7.5*cm])
clin_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [colors.HexColor("#FFF5F5"), colors.HexColor("#F5FFF5"), colors.HexColor("#F9F5FF")]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(clin_table)
story.append(sp(10))
# ---- 7. SUMMARY TABLE ----
story.append(section_header("7. Summary: Functions at a Glance"))
story.append(sp(6))
summary_data = [
[Paragraph("<b>System</b>", body_style), Paragraph("<b>Effect of Glucocorticoids</b>", body_style)],
["Carbohydrate", "↑ Blood glucose, ↑ gluconeogenesis, anti-insulin action"],
["Protein", "↑ Catabolism, ↑ amino acid mobilization (negative N balance)"],
["Fat", "↑ Lipolysis, ↑ FFA; excess → central fat redistribution"],
["Immune / Inflammatory", "Anti-inflammatory, immunosuppressive (↓ cytokines, ↓ WBCs)"],
["Cardiovascular", "Permissive for catecholamine action, ↑ BP, maintains vascular tone"],
["Water Balance", "↑ GFR, ↓ ADH → enables water excretion"],
["CNS", "Mood, behavior, circadian regulation, well-being"],
["Bone / Calcium", "↑ Bone resorption, ↓ Ca²⁺ absorption → osteoporosis (excess)"],
["Blood Cells", "↑ Neutrophils, RBCs; ↓ Lymphocytes, Eosinophils, Basophils"],
["Stress Response", "ESSENTIAL for survival during severe stress"],
]
sum_table = Table(summary_data, colWidths=[5*cm, 12*cm])
sum_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("BACKGROUND", (0,10), (-1,10), colors.HexColor("#D6EFF1")),
("FONTNAME", (0,10), (-1,10), "Helvetica-Bold"),
]))
story.append(sum_table)
story.append(sp(10))
# ---- SOURCES ----
story.append(hr())
story.append(Paragraph("<b>References / Sources:</b>", h3_style))
story.append(bullet("Ganong's Review of Medical Physiology, 26th Ed. - Chapters 19 & 24 (Glucocorticoid Binding, HPA Axis, Permissive Action, Blood Cell Effects)"))
story.append(bullet("Medical Physiology (Boron & Boulpaep) - Chapter 50: The Adrenal Cortex: Cortisol"))
story.append(bullet("Janeway's Immunobiology, 10th Ed. - Chapter 16 (Anti-inflammatory mechanisms of corticosteroids)"))
story.append(sp(4))
# ---- PAGE NUMBERS via a canvas ----
def add_page_number(canvas, doc):
canvas.saveState()
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#888888"))
page_num = canvas.getPageNumber()
text = f"Glucocorticoids - MBBS First Year Physiology | Page {page_num}"
canvas.drawCentredString(A4[0] / 2, 1.2*cm, text)
canvas.restoreState()
# ---- BUILD PDF ----
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2.5*cm,
title="Glucocorticoids - MBBS Physiology Seminar",
author="Orris Medical AI",
)
doc.build(story, onFirstPage=add_page_number, onLaterPages=add_page_number)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/glucocorticoid-seminar && python3 make_pdf.py 2>&1
ls -lh /home/daytona/workspace/glucocorticoid-seminar/Glucocorticoids_Seminar.pdf
Glucocorticoids Seminar
PDF Document · PDF