Hey I have neet pg on August 30 Give me a topic to read everyday high yield to get atleast 400 marks now You should send me topics to read.

Here's your personalized NEET PG 2026 study plan - from today (July 15) to August 29, that's 46 days.
To score 400+, you need to focus on high-yield, high-weightage subjects. Here's a day-by-day topic schedule:

πŸ—“οΈ NEET PG 2026 - 46-Day High-Yield Study Plan

πŸ“Œ Strategy

  • 400+ marks = strong grip on ~8-10 core subjects
  • Focus: Recall-based, frequently tested topics
  • 1-2 topics/day + evening revision of previous day

WEEK 1 (July 15-21) - Medicine & Pharmacology

DayDateSubjectTopic
1Jul 15 (Today)MedicineDiabetes - diagnosis, insulin types, oral hypoglycemics, complications
2Jul 16MedicineHypertension - JNC guidelines, drug classes, hypertensive emergencies
3Jul 17MedicineHeart Failure - types, pathophysiology, drug management (RAAS, diuretics)
4Jul 18PharmacologyAutonomic drugs - adrenergic, cholinergic agonists & antagonists
5Jul 19PharmacologyAntihypertensives, diuretics, antiarrhythmics
6Jul 20PharmacologyAntibiotics - mechanisms, resistance, drug of choice for infections
7Jul 21RevisionRevise all of Week 1 - do MCQs

WEEK 2 (July 22-28) - Surgery & Anatomy

DayDateSubjectTopic
8Jul 22SurgeryThyroid - goiter, carcinoma, investigations, surgery
9Jul 23SurgeryBreast cancer - staging, lymph nodes, treatment
10Jul 24SurgeryGI surgery - appendix, intestinal obstruction, hernia
11Jul 25AnatomyBrachial plexus - roots, trunks, cords, nerve injuries
12Jul 26AnatomyHead & Neck - cranial nerves, triangles of neck, sinuses
13Jul 27AnatomyLower limb nerves, perineum, clinical anatomy spots
14Jul 28RevisionRevise Week 2 + MCQs

WEEK 3 (July 29 - Aug 4) - Pathology & Microbiology

DayDateSubjectTopic
15Jul 29PathologyNeoplasia - oncogenes, tumor markers, carcinogenesis
16Jul 30PathologyBlood disorders - anemias (iron def, B12, hemolytic), leukemias
17Jul 31PathologyInflammation, wound healing, cell injury & necrosis
18Aug 1MicrobiologyBacteria - gram stain, culture media, exotoxins/endotoxins
19Aug 2MicrobiologyViruses - hepatitis, herpes, HIV, dengue
20Aug 3MicrobiologyParasitology - malaria, kala azar, filaria, tapeworms
21Aug 4RevisionRevise Week 3 + MCQs

WEEK 4 (Aug 5-11) - OBG & Pediatrics

DayDateSubjectTopic
22Aug 5OBGNormal labor - stages, partogram, mechanism of labor
23Aug 6OBGHigh-risk pregnancy - PIH, PPH, APH, placenta previa
24Aug 7OBGGynecology - PCOD, endometriosis, fibroid, contraception
25Aug 8PediatricsNeonatal topics - Apgar, birth asphyxia, jaundice, NEC
26Aug 9PediatricsDevelopmental milestones, vaccines (NIS), growth charts
27Aug 10PediatricsPediatric emergencies - febrile seizures, intussusception, croup
28Aug 11RevisionRevise Week 4 + MCQs

WEEK 5 (Aug 12-18) - PSM, Biochemistry & Physiology

DayDateSubjectTopic
29Aug 12PSMEpidemiology - study designs, bias, screening tests, sensitivity/specificity
30Aug 13PSMNational health programs - TB (NTEP), malaria, leprosy, RMNCH
31Aug 14PSMNutrition, vaccines, vital statistics, Bhore committee
32Aug 15BiochemistryEnzymes, vitamins, minerals - deficiencies & clinical features
33Aug 16BiochemistryMetabolism - glycolysis, TCA cycle, HMP shunt, fatty acids
34Aug 17PhysiologyCardiac physiology - action potential, ECG, cardiac cycle
35Aug 18RevisionRevise Week 5 + MCQs

WEEK 6 (Aug 19-25) - ENT, Ophthalmology & Dermatology

DayDateSubjectTopic
36Aug 19ENTEar - otitis media, CSOM, cholesteatoma, hearing tests
37Aug 20ENTNose & throat - epistaxis, sinusitis, tonsillitis, voice disorders
38Aug 21OphthalmologyGlaucoma, cataract, retinal detachment, diabetic retinopathy
39Aug 22OphthalmologyCornea, uveitis, squint, refraction errors
40Aug 23DermatologyLeprosy, psoriasis, pemphigus, SLE skin findings
41Aug 24DermatologySkin infections - fungal, STIs, vitiligo, drug reactions
42Aug 25RevisionRevise Week 6 + MCQs

FINAL STRETCH (Aug 26-29) - Rapid Revision

DayDateFocus
43Aug 26Rapid Revision: Medicine + Pharmacology high-yield one-liners
44Aug 27Rapid Revision: Surgery + Pathology + Micro one-liners
45Aug 28Rapid Revision: OBG + Peds + PSM one-liners
46Aug 29Light revision only - Go through mnemonics, relax, sleep early

⚑ Top High-Yield Tips for 400+

  1. Medicine (30-35 Qs) - Most important; never skip
  2. Surgery (20-25 Qs) - Thyroid, breast, GI are exam favorites
  3. Pharmacology (20-25 Qs) - Mechanisms & drug of choice
  4. PSM (20 Qs) - Very scoring if you know study designs & programs
  5. OBG (20 Qs) - Normal + high-risk pregnancy always tested
  6. Pathology (20 Qs) - Tumor markers, anemias, inflammation
Resources: Across all topics, solve previous year NEET PG MCQs (2018-2025) daily. That alone covers ~60% of what appears in the exam.

Would you like me to break down any specific day's topic in more detail, create notes, or give MCQs for any subject?

Make into a Word document with table in it

Reading File
Running Command

mkdir -p /tmp/workspace/neet-pg && ls /tmp/workspace/neet-pg/

Writing File

~/neet-pg/create_study_plan.py

from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

doc = Document()

# Page margins
from docx.shared import Inches
section = doc.sections[0]
section.top_margin = Inches(0.8)
section.bottom_margin = Inches(0.8)
section.left_margin = Inches(1.0)
section.right_margin = Inches(1.0)

# Default style
style = doc.styles["Normal"]
style.font.name = "Arial"
style.font.size = Pt(11)

# ─── Helper: shade a table row ───────────────────────────────────────────────
def shade_cell(cell, hex_color):
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr()
    shd = OxmlElement('w:shd')
    shd.set(qn('w:val'), 'clear')
    shd.set(qn('w:color'), 'auto')
    shd.set(qn('w:fill'), hex_color)
    tcPr.append(shd)

def set_cell_font(cell, bold=False, size=10, color=None, center=False):
    for para in cell.paragraphs:
        if center:
            para.alignment = WD_ALIGN_PARAGRAPH.CENTER
        for run in para.runs:
            run.font.bold = bold
            run.font.size = Pt(size)
            run.font.name = "Arial"
            if color:
                run.font.color.rgb = RGBColor.from_string(color)

def add_cell_text(cell, text, bold=False, size=10, color=None, center=False):
    cell.text = text
    set_cell_font(cell, bold=bold, size=size, color=color, center=center)

# ─── TITLE ───────────────────────────────────────────────────────────────────
title = doc.add_heading("NEET PG 2026 – 46-Day High-Yield Study Plan", level=1)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_run = title.runs[0]
title_run.font.color.rgb = RGBColor(0x1A, 0x4E, 0x7C)
title_run.font.size = Pt(16)

# Subtitle
sub = doc.add_paragraph("Target: 400+ Marks  |  Exam Date: August 30, 2026  |  Start Date: July 15, 2026")
sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in sub.runs:
    run.font.size = Pt(11)
    run.font.bold = True
    run.font.color.rgb = RGBColor(0x8B, 0x00, 0x00)

doc.add_paragraph("")

# ─── STRATEGY BOX ────────────────────────────────────────────────────────────
strat = doc.add_paragraph()
strat_run = strat.add_run("πŸ“Œ Strategy: 1–2 topics per day + evening revision of previous day. "
                          "Solve NEET PG PYQs (2018–2025) daily β€” covers ~60% of exam content.")
strat_run.font.size = Pt(10)
strat_run.font.italic = True
strat_run.font.color.rgb = RGBColor(0x2E, 0x6B, 0x2E)

doc.add_paragraph("")

# ─── WEEK DATA ───────────────────────────────────────────────────────────────
weeks = [
    {
        "title": "WEEK 1 (July 15–21) – Medicine & Pharmacology",
        "color": "D6E4F0",
        "header_color": "1A4E7C",
        "rows": [
            ("1", "Jul 15", "Medicine", "Diabetes – diagnosis, insulin types, oral hypoglycemics, complications"),
            ("2", "Jul 16", "Medicine", "Hypertension – JNC guidelines, drug classes, hypertensive emergencies"),
            ("3", "Jul 17", "Medicine", "Heart Failure – types, pathophysiology, drug management (RAAS, diuretics)"),
            ("4", "Jul 18", "Pharmacology", "Autonomic drugs – adrenergic, cholinergic agonists & antagonists"),
            ("5", "Jul 19", "Pharmacology", "Antihypertensives, diuretics, antiarrhythmics"),
            ("6", "Jul 20", "Pharmacology", "Antibiotics – mechanisms, resistance, drug of choice for infections"),
            ("7", "Jul 21", "REVISION DAY", "Revise all of Week 1 – solve MCQs"),
        ]
    },
    {
        "title": "WEEK 2 (July 22–28) – Surgery & Anatomy",
        "color": "D5F0E4",
        "header_color": "1A6B3C",
        "rows": [
            ("8",  "Jul 22", "Surgery", "Thyroid – goiter, carcinoma, investigations, surgery"),
            ("9",  "Jul 23", "Surgery", "Breast cancer – staging, lymph nodes, treatment"),
            ("10", "Jul 24", "Surgery", "GI surgery – appendix, intestinal obstruction, hernia"),
            ("11", "Jul 25", "Anatomy", "Brachial plexus – roots, trunks, cords, nerve injuries"),
            ("12", "Jul 26", "Anatomy", "Head & Neck – cranial nerves, triangles of neck, sinuses"),
            ("13", "Jul 27", "Anatomy", "Lower limb nerves, perineum, clinical anatomy spots"),
            ("14", "Jul 28", "REVISION DAY", "Revise Week 2 + MCQs"),
        ]
    },
    {
        "title": "WEEK 3 (July 29 – August 4) – Pathology & Microbiology",
        "color": "F0EAD6",
        "header_color": "7C4E1A",
        "rows": [
            ("15", "Jul 29", "Pathology",    "Neoplasia – oncogenes, tumor markers, carcinogenesis"),
            ("16", "Jul 30", "Pathology",    "Blood disorders – anemias (iron def, B12, hemolytic), leukemias"),
            ("17", "Jul 31", "Pathology",    "Inflammation, wound healing, cell injury & necrosis"),
            ("18", "Aug 1",  "Microbiology", "Bacteria – gram stain, culture media, exotoxins/endotoxins"),
            ("19", "Aug 2",  "Microbiology", "Viruses – hepatitis, herpes, HIV, dengue"),
            ("20", "Aug 3",  "Microbiology", "Parasitology – malaria, kala azar, filaria, tapeworms"),
            ("21", "Aug 4",  "REVISION DAY", "Revise Week 3 + MCQs"),
        ]
    },
    {
        "title": "WEEK 4 (August 5–11) – OBG & Pediatrics",
        "color": "F0D6E4",
        "header_color": "7C1A4E",
        "rows": [
            ("22", "Aug 5",  "OBG",        "Normal labor – stages, partogram, mechanism of labor"),
            ("23", "Aug 6",  "OBG",        "High-risk pregnancy – PIH, PPH, APH, placenta previa"),
            ("24", "Aug 7",  "OBG",        "Gynecology – PCOD, endometriosis, fibroid, contraception"),
            ("25", "Aug 8",  "Pediatrics", "Neonatal topics – Apgar, birth asphyxia, jaundice, NEC"),
            ("26", "Aug 9",  "Pediatrics", "Developmental milestones, vaccines (NIS), growth charts"),
            ("27", "Aug 10", "Pediatrics", "Pediatric emergencies – febrile seizures, intussusception, croup"),
            ("28", "Aug 11", "REVISION DAY", "Revise Week 4 + MCQs"),
        ]
    },
    {
        "title": "WEEK 5 (August 12–18) – PSM, Biochemistry & Physiology",
        "color": "E4D6F0",
        "header_color": "4E1A7C",
        "rows": [
            ("29", "Aug 12", "PSM",           "Epidemiology – study designs, bias, screening tests, sensitivity/specificity"),
            ("30", "Aug 13", "PSM",           "National health programs – TB (NTEP), malaria, leprosy, RMNCH"),
            ("31", "Aug 14", "PSM",           "Nutrition, vaccines, vital statistics, Bhore committee"),
            ("32", "Aug 15", "Biochemistry",  "Enzymes, vitamins, minerals – deficiencies & clinical features"),
            ("33", "Aug 16", "Biochemistry",  "Metabolism – glycolysis, TCA cycle, HMP shunt, fatty acids"),
            ("34", "Aug 17", "Physiology",    "Cardiac physiology – action potential, ECG, cardiac cycle"),
            ("35", "Aug 18", "REVISION DAY",  "Revise Week 5 + MCQs"),
        ]
    },
    {
        "title": "WEEK 6 (August 19–25) – ENT, Ophthalmology & Dermatology",
        "color": "D6F0EE",
        "header_color": "1A7C6B",
        "rows": [
            ("36", "Aug 19", "ENT",            "Ear – otitis media, CSOM, cholesteatoma, hearing tests"),
            ("37", "Aug 20", "ENT",            "Nose & throat – epistaxis, sinusitis, tonsillitis, voice disorders"),
            ("38", "Aug 21", "Ophthalmology",  "Glaucoma, cataract, retinal detachment, diabetic retinopathy"),
            ("39", "Aug 22", "Ophthalmology",  "Cornea, uveitis, squint, refraction errors"),
            ("40", "Aug 23", "Dermatology",    "Leprosy, psoriasis, pemphigus, SLE skin findings"),
            ("41", "Aug 24", "Dermatology",    "Skin infections – fungal, STIs, vitiligo, drug reactions"),
            ("42", "Aug 25", "REVISION DAY",   "Revise Week 6 + MCQs"),
        ]
    },
    {
        "title": "FINAL STRETCH (August 26–29) – Rapid Revision",
        "color": "FFF3CD",
        "header_color": "856404",
        "rows": [
            ("43", "Aug 26", "Rapid Revision", "Medicine + Pharmacology high-yield one-liners & mnemonics"),
            ("44", "Aug 27", "Rapid Revision", "Surgery + Pathology + Microbiology one-liners"),
            ("45", "Aug 28", "Rapid Revision", "OBG + Pediatrics + PSM one-liners"),
            ("46", "Aug 29", "EXAM EVE",        "Light revision only – mnemonics, relax, sleep early by 10 PM"),
        ]
    },
]

COL_WIDTHS = [Inches(0.45), Inches(0.75), Inches(1.3), Inches(4.0)]

for week in weeks:
    # Week heading
    wh = doc.add_heading(week["title"], level=2)
    wh.alignment = WD_ALIGN_PARAGRAPH.LEFT
    wh_run = wh.runs[0]
    r, g, b = (int(week["header_color"][i:i+2], 16) for i in (0, 2, 4))
    wh_run.font.color.rgb = RGBColor(r, g, b)
    wh_run.font.size = Pt(12)

    # Table
    tbl = doc.add_table(rows=1, cols=4)
    tbl.style = "Table Grid"

    # Header row
    hdr_cells = tbl.rows[0].cells
    for cell in hdr_cells:
        shade_cell(cell, week["header_color"])
    headers = ["Day", "Date", "Subject", "Topic"]
    for i, h in enumerate(headers):
        add_cell_text(hdr_cells[i], h, bold=True, size=10, color="FFFFFF", center=True)

    # Set column widths on header
    for i, w in enumerate(COL_WIDTHS):
        hdr_cells[i].width = w

    # Data rows
    for idx, (day, date, subj, topic) in enumerate(week["rows"]):
        row_cells = tbl.add_row().cells
        is_revision = "REVISION" in subj or "EXAM EVE" in subj or "Rapid Revision" in subj
        fill = "FFE6CC" if is_revision else week["color"]

        for cell in row_cells:
            shade_cell(cell, fill)

        add_cell_text(row_cells[0], day,  bold=True,  size=10, center=True)
        add_cell_text(row_cells[1], date, bold=False, size=10, center=True)
        add_cell_text(row_cells[2], subj, bold=True if is_revision else False, size=10)
        add_cell_text(row_cells[3], topic, bold=False, size=10)

        for i, w in enumerate(COL_WIDTHS):
            row_cells[i].width = w

    doc.add_paragraph("")

# ─── HIGH-YIELD SUBJECT BREAKDOWN ────────────────────────────────────────────
doc.add_heading("High-Yield Subject Weightage (400+ Strategy)", level=2)
hy_run = doc.paragraphs[-1].runs[0]
hy_run.font.color.rgb = RGBColor(0x8B, 0x00, 0x00)
hy_run.font.size = Pt(12)

hy_table = doc.add_table(rows=1, cols=3)
hy_table.style = "Table Grid"
hy_hdr = hy_table.rows[0].cells
for cell in hy_hdr:
    shade_cell(cell, "1A4E7C")
for i, h in enumerate(["Subject", "Approx Questions", "Key Focus Areas"]):
    add_cell_text(hy_hdr[i], h, bold=True, size=10, color="FFFFFF", center=True)

hy_data = [
    ("Medicine",       "30–35 Qs", "Diabetes, HTN, Heart Failure, Thyroid, Nephrology"),
    ("Surgery",        "20–25 Qs", "Thyroid, Breast, GI, Trauma, Hernias"),
    ("Pharmacology",   "20–25 Qs", "Drug mechanisms, DOC, Toxicology"),
    ("PSM",            "20 Qs",    "Epidemiology, National Programs, Biostatistics"),
    ("OBG",            "20 Qs",    "Normal & High-risk Pregnancy, Gynecology"),
    ("Pathology",      "20 Qs",    "Tumor markers, Anemias, Inflammation"),
    ("Microbiology",   "15–18 Qs", "Bacteria, Viruses, Parasites"),
    ("Pediatrics",     "15–18 Qs", "Milestones, Vaccines, Neonatal"),
    ("Anatomy",        "12–15 Qs", "Brachial plexus, Cranial nerves, Clinical spots"),
    ("Biochemistry",   "10–12 Qs", "Vitamins, Enzymes, Metabolic pathways"),
    ("Physiology",     "10–12 Qs", "Cardiac, Renal, Respiratory physiology"),
    ("ENT",            "8–10 Qs",  "CSOM, Epistaxis, Hearing tests"),
    ("Ophthalmology",  "8–10 Qs",  "Glaucoma, Cataract, Retinal disorders"),
    ("Dermatology",    "6–8 Qs",   "Leprosy, Psoriasis, Pemphigus"),
]

hy_col_widths = [Inches(1.5), Inches(1.5), Inches(3.5)]
for i, (subj, qs, focus) in enumerate(hy_data):
    row = hy_table.add_row().cells
    fill = "EAF4FF" if i % 2 == 0 else "FFFFFF"
    for cell in row:
        shade_cell(cell, fill)
    add_cell_text(row[0], subj,  bold=True,  size=10)
    add_cell_text(row[1], qs,    bold=False, size=10, center=True)
    add_cell_text(row[2], focus, bold=False, size=10)
    for j, w in enumerate(hy_col_widths):
        row[j].width = w

doc.add_paragraph("")

# ─── FOOTER NOTE ─────────────────────────────────────────────────────────────
footer_para = doc.add_paragraph()
footer_run = footer_para.add_run(
    "Tip: Solve NEET PG Previous Year Questions (2018–2025) daily alongside topics. "
    "That alone covers ~60% of what appears in the exam. "
    "Good luck – You've got this! πŸ’ͺ"
)
footer_run.font.size = Pt(10)
footer_run.font.italic = True
footer_run.font.bold = True
footer_run.font.color.rgb = RGBColor(0x2E, 0x6B, 0x2E)
footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER

# ─── SAVE ────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/neet-pg/NEET_PG_2026_Study_Plan.docx"
doc.save(out_path)
print(f"Saved: {out_path}")
Running Command

cd /tmp/workspace/neet-pg && python3 create_study_plan.py

Your Word document is ready! Here's the download link:

NEET PG 2026 Study Plan

Word Document Β· DOCX

What's inside the document:
  • Title page header with exam date and target marks
  • 6 weekly tables (Week 1-6) - each color-coded by subject group, with Day, Date, Subject, and Topic columns
  • Final Stretch table (Aug 26-29) highlighted in gold
  • Revision days highlighted in orange within each week's table
  • Subject weightage table at the end - showing approx. question count and key focus areas for each subject
  • A motivational tip at the bottom about solving PYQs
Good luck with your NEET PG prep! πŸ’ͺ

Send me information to know high yield for today

Today is Day 1 - July 15 and your topic is:

🩺 Diabetes Mellitus - Complete High-Yield Notes

Let me pull the best content from medical textbooks for you right now.
Searching sources...
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Now let me read the key sections from the best sources in parallel:
Reading File
Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Excellent! I now have rich content. Let me fetch the insulin kinetics image too:
Loading Image
Reading File
I now have all the content needed. Here is your complete high-yield notes for today:

πŸ“… Day 1 - July 15 | DIABETES MELLITUS

High-Yield NEET PG Notes


1. CLASSIFICATION

TypeKey Feature
Type 1 DMAutoimmune destruction of beta cells β†’ absolute insulin deficiency
Type 2 DMInsulin resistance + relative insulin deficiency
MODYMonogenic; autosomal dominant; young, non-obese, family history
Gestational DMFirst detected in pregnancy
Secondary DMPancreatitis, Cushing's, acromegaly, steroids
Hallmark symptoms: Polydipsia, Polyphagia, Polyuria, Weight loss

2. DIAGNOSIS CRITERIA (ADA) - Most Tested!

TestNormalPre-DiabetesDiabetes
Fasting Plasma Glucose<100 mg/dL100-125 mg/dLβ‰₯ 126 mg/dL
2-hr OGTT (75g)<140 mg/dL140-199 mg/dLβ‰₯ 200 mg/dL
HbA1c<5.7%5.7-6.4%β‰₯ 6.5%
Random glucose + symptoms--β‰₯ 200 mg/dL
NEET PG pearl: Two abnormal tests required for confirmation (unless symptomatic random glucose β‰₯200). HbA1c reflects average glucose over 3 months. - Tintinalli's Emergency Medicine

3. INSULIN TYPES - Most Frequently Tested Table

TypeExamplesOnsetPeakDuration
Ultra rapid / InhaledAfrezza10-20 minVery quick~3 hr
Rapid-actingLispro, Aspart, Glulisine15-30 min30-90 min3-5 hr
Short-actingRegular (Humulin R)30-60 min2-4 hr6-8 hr
Intermediate-actingNPH (Humulin N)1-2 hr4-10 hr12-18 hr
Long-actingGlargine (Lantus), Detemir (Levemir)1-2 hrNo peak20-24 hr
Ultra long-actingDegludec (Tresiba)1-2 hrNo peak>42 hr
Mnemonics: "LAG = Long-Acting Glargine" | Rapid-acting = given 15 min before meal; Regular = given 30 min before meal
Insulin release in normal vs Type 1 vs Type 2 diabetes after IV glucose load
Type 1: flat line (no beta cells); Type 2: delayed/blunted response; Normal: sharp early peak

4. ORAL HYPOGLYCEMIC AGENTS

A. Sulfonylureas (Secretagogues)

  • Drugs: Glipizide, Glyburide, Glimepiride (2nd gen) | Tolbutamide (1st gen)
  • Mechanism: Block ATP-sensitive K+ channels on beta cells β†’ depolarization β†’ Ca2+ influx β†’ insulin release
  • Side effect: Hypoglycemia, weight gain
  • Avoid: Renal failure (use Glipizide/Glimepiride, NOT Glyburide)
    • Lippincott Pharmacology, p. 813

B. Biguanides - FIRST LINE for T2DM

  • Drug: Metformin
  • Mechanism: Activates AMPK β†’ decreases hepatic gluconeogenesis, increases peripheral glucose uptake
  • Advantages: No hypoglycemia, weight neutral/loss, cardioprotective
  • Contraindications: eGFR <30, contrast dye, liver failure, alcoholism (lactic acidosis risk)

C. Meglitinides (Short-acting secretagogues)

  • Drugs: Repaglinide, Nateglinide
  • Key point: Taken before meals, very short action, useful in irregular meal timing
  • Do NOT combine with sulfonylureas (same mechanism, risk of severe hypoglycemia)

D. Thiazolidinediones (TZDs / Glitazones)

  • Drugs: Pioglitazone, Rosiglitazone
  • Mechanism: PPAR-Ξ³ agonist β†’ increases insulin sensitivity in fat/muscle
  • Side effects: Fluid retention, weight gain, heart failure, fractures, bladder cancer (Pioglitazone)

E. DPP-4 Inhibitors (Gliptins)

  • Drugs: Sitagliptin, Saxagliptin, Linagliptin, Alogliptin
  • Mechanism: Inhibit DPP-4 enzyme β†’ increase GLP-1/GIP β†’ glucose-dependent insulin release
  • Safe in: Renal disease (Linagliptin - hepatic elimination, dose adjustment not needed)

F. GLP-1 Receptor Agonists

  • Drugs: Semaglutide, Liraglutide, Exenatide, Dulaglutide
  • Benefits: Weight loss, cardiovascular benefit, beta cell preservation
  • Side effects: Nausea, vomiting, pancreatitis (rare)

G. SGLT-2 Inhibitors (Gliflozins)

  • Drugs: Empagliflozin, Dapagliflozin, Canagliflozin
  • Mechanism: Block glucose reabsorption in proximal tubule β†’ glycosuria
  • Benefits: Weight loss, BP reduction, cardioprotective + nephroprotective
  • Side effects: Urinary/genital infections, DKA (euglycemic), amputations (Canagliflozin)

H. Alpha-Glucosidase Inhibitors

  • Drugs: Acarbose, Miglitol
  • Mechanism: Delay carbohydrate absorption in gut
  • Side effects: Flatulence, diarrhea

5. COMPLICATIONS

Microvascular (directly related to hyperglycemia - "tight control helps")

ComplicationKey Points
RetinopathyLeading cause of blindness; microaneurysms β†’ hard exudates β†’ cotton wool spots β†’ new vessels (proliferative); treat with laser photocoagulation / anti-VEGF
NephropathyKimmelstiel-Wilson nodules (pathognomonic); microalbuminuria β†’ proteinuria β†’ ESRD; ACEi/ARB are protective
NeuropathyGlove and stocking sensory loss; autonomic (gastroparesis, orthostatic hypotension, ED); treat with Pregabalin, TCAs, duloxetine

Macrovascular

  • CAD, Stroke, Peripheral Arterial Disease
  • Diabetic foot (neuropathy + vasculopathy + infection)
DCCT Trial: Tight glycemic control (HbA1c <7%) reduced retinopathy progression by 76% - Miller's Anesthesia

6. ACUTE COMPLICATIONS - High Yield Comparison

FeatureDKAHHS (HONK)
TypeMainly T1DMMainly T2DM
Glucose250-600 mg/dL>600 mg/dL
pH<7.3Normal/near normal
Ketones+++++Absent or mild
OsmolalityMildly elevated>320 mOsm/kg
Mortality1-5%15-20%
TreatmentIV fluids + Insulin (Regular) + K+IV fluids (main), slow correction
Precipitants: Infection (most common), missed insulin, surgery, MI, new diagnosis

7. TARGETS IN DIABETES MANAGEMENT

ParameterTarget
HbA1c<7% (general)
Fasting glucose80-130 mg/dL
Post-meal glucose<180 mg/dL
BP<130/80 mmHg
LDL<100 mg/dL (<70 in high CV risk)

8. HIGH-YIELD ONE-LINERS FOR NEET PG

  • Drug of choice T2DM: Metformin
  • DOC in pregnancy: Insulin (Metformin/Glibenclamide acceptable in some guidelines)
  • DOC in renal failure: Linagliptin (no dose adjustment needed)
  • Causes weight loss: Metformin, GLP-1 agonists, SGLT-2 inhibitors
  • Causes weight gain: Sulfonylureas, TZDs, Insulin
  • Cardioprotective: Empagliflozin, Liraglutide, Semaglutide
  • Nephroprotective: ACEi/ARB (albuminuria), SGLT-2 inhibitors
  • Lactic acidosis: Metformin (in hypoxia/renal failure)
  • Pathognomonic renal lesion: Kimmelstiel-Wilson nodules
  • HbA1c is FALSE low in: Hemolytic anemia, sickle cell (short RBC life)
  • HbA1c is FALSE high in: Iron deficiency anemia, B12 deficiency (longer RBC life)

9. QUICK MCQ BUSTER

Q1. Which insulin has NO peak effect? A: Glargine (Lantus) - flat basal profile
Q2. Metformin is contraindicated before contrast due to risk of? A: Lactic acidosis (due to renal impairment post-contrast)
Q3. Best oral agent for T2DM with heart failure + CKD? A: SGLT-2 inhibitor (Empagliflozin/Dapagliflozin)
Q4. Kimmelstiel-Wilson nodules are pathognomonic of? A: Diabetic nephropathy
Q5. Drug causing euglycemic DKA? A: SGLT-2 inhibitors

Sources: Lippincott Illustrated Reviews Pharmacology | Tintinalli's Emergency Medicine | Rosen's Emergency Medicine | The Washington Manual of Medical Therapeutics
Tomorrow (Day 2): Hypertension - JNC guidelines, antihypertensives & emergencies. Get some rest! πŸ’ͺ

Act as a senior medical illustrator, NEET PG faculty, and UI/UX designer. Create a PREMIUM, 4K (3840Γ—2160), Apple-quality medical infographic for NEET PG / INICET in a DARK DOCTOR RANKER THEME. Style: β€’ Black matte background with subtle gold accents β€’ Premium typography (Apple keynote style) β€’ Clean spacing with modern medical UI β€’ High contrast with color coding β€’ Professional medical illustration quality β€’ Suitable for iPad study and printing Topic: [INSERT TOPIC] Layout: Create ONE infographic slide only. Include the following sections: ══════════════════════ 1. TITLE ══════════════════════ Large bold title with emoji/icon Example: ⚑ WPW (Wolff-Parkinson-White Syndrome) Subtitle: NEET PG Ranker Edition ══════════════════════ 2. CLINICAL VIGNETTE ══════════════════════ Create a realistic NEET PG clinical scenario. Include: β€’ Age β€’ Sex β€’ Risk factors β€’ Symptoms β€’ Examination findings β€’ ECG/X-ray/Echo is shown β€’ Ask: "What is the most likely diagnosis?" Add a realistic medical illustration/cartoon of the patient showing the symptoms. ══════════════════════ 3. REAL ECG/X-RAY/ECHO IMAGE ══════════════════════ Use a realistic medical-quality ECG (or X-ray/Echo depending on topic). Draw ARROWS directly on the image pointing to ALL important abnormalities. Label each abnormality with callouts. Example for WPW: β†’ Short PR interval β†’ Delta wave β†’ Wide QRS β†’ Secondary ST-T changes Example for STEMI: β†’ ST elevation β†’ Reciprocal ST depression β†’ Hyperacute T wave The annotations should be extremely clear. ══════════════════════ 4. ECG / IMAGE FEATURES ══════════════════════ Provide concise bullet points highlighting the diagnostic features. ══════════════════════ 5. NEET PG ASKABLE POINTS ⭐ ══════════════════════ Include the most commonly tested facts. Examples: ⭐ Most repeated PYQ ⭐ Spot diagnosis ⭐ Image-based question ⭐ Next best step ⭐ Culprit artery ⭐ First investigation ⭐ Gold standard ⭐ Best management ⭐ Contraindications ══════════════════════ 6. HIGH-YIELD TRAP POINTS ⚠️ ══════════════════════ Include common mistakes and confusing differentials tested in NEET PG. ══════════════════════ 7. DIAGNOSTIC ALGORITHM ══════════════════════ Create a beautiful flowchart with arrows showing diagnosis step-by-step. Use colored decision boxes. ══════════════════════ 8. MANAGEMENT ALGORITHM ══════════════════════ Flowchart with: Initial management ↓ Stable vs unstable ↓ Drug of choice ↓ Definitive management Use arrows and icons. ══════════════════════ 9. CLINICAL PEARLS πŸ’Ž ══════════════════════ 3–5 one-liners that are commonly asked. ══════════════════════ 10. MNEMONICS 🧠 ══════════════════════ Create memorable mnemonics. ══════════════════════ 11. ONE-LINER REVISION ⚑ ══════════════════════ 5 rapid-fire facts for last-minute revision. ══════════════════════ 12. IMAGE-BASED PYQ ALERT πŸ“Έ ══════════════════════ Highlight exactly what the examiner expects students to identify from the image. ══════════════════════ 13. DESIGN REQUIREMENTS ══════════════════════ β€’ Use icons β€’ Color-code important facts β€’ Highlight keywords in yellow or gold β€’ Use arrows extensively β€’ Use professional medical illustrations β€’ Include realistic anatomical diagrams where relevant β€’ Ensure text is readable when viewed on an iPad β€’ Avoid clutter β€’ Maintain Apple-style minimalism with premium aesthetics Output: Generate a single polished infographic slide ready for NEET PG revision, suitable for printing or digital flashcards. Make it for the above topic

Asking for Preferences

Which topic should this premium infographic cover?

Running Command

mkdir -p /tmp/workspace/neet-infographic && ls /tmp/workspace/neet-infographic/

Writing File

~/neet-infographic/dm_infographic.py

from PIL import Image, ImageDraw, ImageFont
import math, os, textwrap

# ─── CANVAS ──────────────────────────────────────────────────────────────────
W, H = 3840, 2160
img = Image.new("RGB", (W, H), (10, 10, 14))
draw = ImageDraw.Draw(img)

# ─── COLOUR PALETTE ──────────────────────────────────────────────────────────
BG        = (10, 10, 14)
PANEL     = (18, 18, 26)
PANEL2    = (22, 22, 34)
GOLD      = (212, 175, 55)
GOLD_SOFT = (180, 148, 40)
GOLD_DIM  = (100, 82, 20)
WHITE     = (255, 255, 255)
OFFWHITE  = (220, 220, 230)
GRAY      = (140, 140, 160)
LGRAY     = (80, 80, 100)
RED       = (220, 60, 60)
RED_SOFT  = (180, 50, 50)
GREEN     = (60, 200, 100)
GREEN_DIM = (30, 100, 55)
BLUE      = (80, 160, 255)
BLUE_DIM  = (30, 70, 140)
CYAN      = (60, 220, 210)
PURPLE    = (160, 80, 220)
ORANGE    = (255, 150, 50)
YELLOW    = (255, 220, 50)
TEAL      = (40, 180, 170)

# ─── FONTS ───────────────────────────────────────────────────────────────────
def font(size, bold=False):
    candidates_bold = [
        "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf",
        "/usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf",
        "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf",
    ]
    candidates = [
        "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
        "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf",
        "/usr/share/fonts/truetype/freefont/FreeSans.ttf",
    ]
    paths = candidates_bold if bold else candidates
    for p in paths:
        if os.path.exists(p):
            return ImageFont.truetype(p, size)
    return ImageFont.load_default()

F_TITLE   = font(90, bold=True)
F_TITLE2  = font(72, bold=True)
F_HEAD    = font(52, bold=True)
F_SUBHEAD = font(40, bold=True)
F_BODY    = font(34)
F_BODY_B  = font(34, bold=True)
F_SMALL   = font(28)
F_SMALL_B = font(28, bold=True)
F_MICRO   = font(24)
F_MICRO_B = font(24, bold=True)
F_NANO    = font(20)

# ─── HELPERS ─────────────────────────────────────────────────────────────────
def rect(x, y, w, h, fill, radius=18, outline=None, outline_w=2):
    draw.rounded_rectangle([x, y, x+w, y+h], radius=radius, fill=fill,
                            outline=outline, width=outline_w)

def txt(text, x, y, fnt, fill=WHITE, anchor="la"):
    draw.text((x, y), text, font=fnt, fill=fill, anchor=anchor)

def txt_center(text, cx, y, fnt, fill=WHITE):
    draw.text((cx, y), text, font=fnt, fill=fill, anchor="mt")

def badge(x, y, text, bg, fg=WHITE, fnt=None, pad_x=18, pad_y=8, radius=12):
    fnt = fnt or F_SMALL_B
    bb = fnt.getbbox(text)
    tw, th = bb[2]-bb[0], bb[3]-bb[1]
    rect(x, y, tw+pad_x*2, th+pad_y*2, bg, radius=radius)
    draw.text((x+pad_x, y+pad_y), text, font=fnt, fill=fg)
    return tw+pad_x*2, th+pad_y*2

def hline(y, x1, x2, color=GOLD_DIM, w=2):
    draw.line([(x1,y),(x2,y)], fill=color, width=w)

def vline(x, y1, y2, color=GOLD_DIM, w=2):
    draw.line([(x,y1),(x,y2)], fill=color, width=w)

def arrow(x1, y1, x2, y2, color=GOLD, w=3, head=18):
    draw.line([(x1,y1),(x2,y2)], fill=color, width=w)
    angle = math.atan2(y2-y1, x2-x1)
    for da in [0.5, -0.5]:
        ax = x2 - head*math.cos(angle-da)
        ay = y2 - head*math.sin(angle-da)
        draw.line([(x2,y2),(int(ax),int(ay))], fill=color, width=w)

def section_header(x, y, w, title, icon="", color=GOLD):
    rect(x, y, w, 58, PANEL2, radius=10, outline=color, outline_w=2)
    draw.line([(x, y+58), (x+w, y+58)], fill=color, width=2)
    txt(f"{icon}  {title}", x+20, y+10, F_SUBHEAD, fill=color)
    return y+62

def bullet(x, y, text, color=GOLD, fnt=None, max_w=None):
    fnt = fnt or F_SMALL
    draw.ellipse([x, y+10, x+12, y+22], fill=color)
    if max_w:
        lines = textwrap.wrap(text, width=max(10, max_w//18))
        for i, line in enumerate(lines):
            txt(line, x+22, y+i*32, fnt, fill=OFFWHITE)
        return 32 * len(lines)
    else:
        txt(text, x+22, y, fnt, fill=OFFWHITE)
        return 36

# ─── BACKGROUND GRID (subtle) ─────────────────────────────────────────────────
for gx in range(0, W, 120):
    draw.line([(gx,0),(gx,H)], fill=(20,20,30), width=1)
for gy in range(0, H, 120):
    draw.line([(0,gy),(W,gy)], fill=(20,20,30), width=1)

# ─── TOP GOLD BORDER ──────────────────────────────────────────────────────────
draw.rectangle([0,0,W,6], fill=GOLD)
draw.rectangle([0,H-6,W,H], fill=GOLD)
draw.rectangle([0,0,6,H], fill=GOLD)
draw.rectangle([W-6,0,W,H], fill=GOLD)

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 1 – TITLE BAR
# ══════════════════════════════════════════════════════════════════════════════
rect(0, 0, W, 150, (14, 14, 20), radius=0)
draw.rectangle([0,145,W,150], fill=GOLD)

txt_center("🩺  DIABETES MELLITUS", W//2, 18, F_TITLE, fill=GOLD)
txt_center("NEET PG / INICET  β€’  Ranker Edition  β€’  Day 1  β€’  High-Yield Mastery", W//2, 108, F_SMALL_B, fill=GRAY)

# Top right badge
badge(W-340, 18, "⭐ HIGH YIELD", (50,35,0), GOLD, F_SMALL_B, pad_x=16, pad_y=10)

# ══════════════════════════════════════════════════════════════════════════════
# LAYOUT: 3-column below header
# COL1: x=30  w=1100    (Clinical + Diagnosis)
# COL2: x=1160 w=1280   (Insulin + OHA)
# COL3: x=2470 w=1340   (Complications + Algorithm + Pearls)
# ══════════════════════════════════════════════════════════════════════════════
TOP = 165
C1X, C1W = 30, 1100
C2X, C2W = 1160, 1280
C3X, C3W = 2470, 1340

# ══════════════════════════════════════════════════════════════════════════════
# COLUMN 1
# ══════════════════════════════════════════════════════════════════════════════

# ── CLINICAL VIGNETTE ────────────────────────────────────────────────────────
rect(C1X, TOP, C1W, 380, PANEL, radius=16, outline=BLUE, outline_w=2)
y = section_header(C1X, TOP, C1W, "CLINICAL VIGNETTE", "πŸ“‹", BLUE)

# Patient cartoon (simple SVG-style drawing using PIL shapes)
px, py = C1X+C1W-200, TOP+60
# Body silhouette
draw.ellipse([px-28, py, px+28, py+56], fill=(80,60,40))         # head
draw.rectangle([px-24, py+56, px+24, py+180], fill=(60,80,120))  # body
draw.rectangle([px-40, py+80, px-24, py+160], fill=(60,80,120))  # L arm
draw.rectangle([px+24, py+80, px+40, py+160], fill=(60,80,120))  # R arm
draw.rectangle([px-22, py+180, px-4,  py+250], fill=(40,50,80))  # L leg
draw.rectangle([px+4,  py+180, px+22, py+250], fill=(40,50,80))  # R leg
# Symptom arrows
draw.line([(px+32, py+30),(px+80, py+20)], fill=YELLOW, width=2)
txt("Polyuria", px+82, py+10, F_NANO, fill=YELLOW)
draw.line([(px+32, py+55),(px+80, py+55)], fill=CYAN, width=2)
txt("Polydipsia", px+82, py+48, F_NANO, fill=CYAN)
draw.line([(px+32, py+80),(px+80, py+80)], fill=RED, width=2)
txt("Wt Loss", px+82, py+73, F_NANO, fill=RED)
# Water drops (polyuria visual)
for i in range(3):
    draw.ellipse([px-6+i*8, py+255, px+2+i*8, py+268], fill=CYAN)

vx = C1X+14
txt("A 45-yr male, obese (BMI 32), smoker, presents with", vx, y+4, F_SMALL, fill=OFFWHITE)
txt("3 months of polydipsia, polyuria, nocturia Γ—4/night,", vx, y+36, F_SMALL, fill=OFFWHITE)
txt("blurred vision & tingling in both feet.", vx, y+68, F_SMALL, fill=OFFWHITE)
txt("FBS: 186 mg/dL  |  HbA1c: 8.9%  |  Urine: glucose++", vx, y+104, F_SMALL_B, fill=YELLOW)
txt("BP: 148/92 mmHg  |  BMI: 32  |  Acanthosis nigricans βœ“", vx, y+136, F_SMALL, fill=OFFWHITE)
# Q box
rect(C1X+10, y+175, C1W-20, 52, (0,40,80), radius=10, outline=BLUE, outline_w=2)
txt("❓ Most likely diagnosis?  β†’  TYPE 2 DIABETES MELLITUS", C1X+20, y+188, F_SMALL_B, fill=BLUE)
txt("Next step?  β†’  Confirm with repeat FBS / HbA1c", C1X+20, y+218, F_NANO, fill=CYAN)

# ── DIAGNOSIS CRITERIA ───────────────────────────────────────────────────────
DY = TOP+390
rect(C1X, DY, C1W, 320, PANEL, radius=16, outline=GOLD, outline_w=2)
y2 = section_header(C1X, DY, C1W, "DIAGNOSIS CRITERIA (ADA)", "πŸ”¬", GOLD)

headers = ["Test", "Normal", "Pre-DM", "DIABETES βœ“"]
col_xs  = [C1X+14, C1X+280, C1X+490, C1X+680]
col_fills= [GOLD, GREEN, ORANGE, RED]
for i,(h,cx) in enumerate(zip(headers, col_xs)):
    txt(h, cx, y2+2, F_SMALL_B, fill=col_fills[i])

rows = [
    ("Fasting Plasma Glucose",  "<100",  "100–125",  "β‰₯ 126 mg/dL"),
    ("2-hr OGTT (75g)",         "<140",  "140–199",  "β‰₯ 200 mg/dL"),
    ("HbA1c",                   "<5.7%", "5.7–6.4%", "β‰₯ 6.5%"),
    ("Random + symptoms",       "β€”",     "β€”",        "β‰₯ 200 mg/dL"),
]
for ri, row in enumerate(rows):
    ry = y2+36+ri*50
    bg = (22,22,34) if ri%2==0 else (26,26,40)
    rect(C1X+4, ry-4, C1W-8, 46, bg, radius=8)
    for ci,(cell,cx) in enumerate(zip(row,col_xs)):
        clr = OFFWHITE
        if ci == 3: clr = RED
        elif ci == 2: clr = ORANGE
        txt(cell, cx, ry+4, F_SMALL, fill=clr)

rect(C1X+4, y2+236, C1W-8, 40, (0,30,0), radius=8, outline=GREEN, outline_w=1)
txt("⚑ 2 abnormal tests needed to confirm (unless symptomatic random β‰₯200)", C1X+16, y2+246, F_NANO, fill=GREEN)

# ── TRAP POINTS ──────────────────────────────────────────────────────────────
TY = DY+330
rect(C1X, TY, C1W, 270, PANEL, radius=16, outline=RED, outline_w=2)
y3 = section_header(C1X, TY, C1W, "HIGH-YIELD TRAP POINTS ⚠️", "⚠️", RED)
traps = [
    "HbA1c FALSE LOW: Hemolytic anemia, Sickle cell (short RBC life)",
    "HbA1c FALSE HIGH: Iron/B12 deficiency anemia (long RBC life)",
    "Metformin β†’ LACTIC ACIDOSIS (not hypoglycemia) – contraindicated in eGFR <30",
    "SGLT-2 inhibitors β†’ EUGLYCEMIC DKA (glucose may be normal!)",
    "Glyburide unsafe in renal failure; use Glipizide or Glimepiride",
    "DKA mainly T1DM but can occur in T2DM (stressor / omitted insulin)",
]
for i,t in enumerate(traps):
    ry = y3+4+i*38
    col = RED if i<2 else ORANGE
    draw.ellipse([C1X+10, ry+10, C1X+22, ry+22], fill=col)
    txt(t, C1X+28, ry, F_NANO, fill=OFFWHITE)

# ── MNEMONICS ────────────────────────────────────────────────────────────────
MY = TY+280
rect(C1X, MY, C1W, 230, PANEL, radius=16, outline=PURPLE, outline_w=2)
y4 = section_header(C1X, MY, C1W, "MNEMONICS 🧠", "🧠", PURPLE)
mns = [
    ('3 Ps of DM', '"Poly-Uria, Poly-Dipsia, Poly-Phagia"'),
    ('Weight GAIN drugs', '"SIT" β†’ Sulfonylureas, Insulin, TZDs'),
    ('Weight LOSS drugs', '"MSG" β†’ Metformin, SGLT-2, GLP-1'),
    ('Lactic Acidosis', '"Metformin + 3 Rs: Renal/Respiratory/Running-dry"'),
    ('DKA mnemonic', '"KUSSMAUL" β†’ K+ lost, Urine glucose+, Sugar high…'),
]
for i,(title,body) in enumerate(mns):
    ry = y4+2+i*40
    txt(f"πŸ”Ή {title}:", C1X+10, ry, F_NANO, fill=PURPLE)
    txt(body, C1X+10, ry+20, F_NANO, fill=OFFWHITE)

# ── ONE-LINER REVISION ───────────────────────────────────────────────────────
OY = MY+240
rect(C1X, OY, C1W, 235, PANEL, radius=16, outline=CYAN, outline_w=2)
y5 = section_header(C1X, OY, C1W, "ONE-LINER REVISION ⚑", "⚑", CYAN)
oneliners = [
    "DOC T2DM = Metformin  |  DOC pregnancy = Insulin",
    "Kimmelstiel-Wilson nodule = Diabetic nephropathy (pathognomonic)",
    "DCCT trial: tight control β†’ ↓retinopathy 76%",
    "Empagliflozin = cardio + nephroprotective (EMPA-REG trial)",
    "HbA1c target = <7%  |  Reflects last 3 months glucose",
]
for i,l in enumerate(oneliners):
    ry = y5+4+i*40
    bg = (0,40,50) if i%2==0 else PANEL2
    rect(C1X+4, ry, C1W-8, 36, bg, radius=6)
    txt(f"⚑ {l}", C1X+14, ry+6, F_NANO, fill=CYAN)

# ══════════════════════════════════════════════════════════════════════════════
# COLUMN 2 – INSULIN + ORAL AGENTS
# ══════════════════════════════════════════════════════════════════════════════

# ── INSULIN TABLE ────────────────────────────────────────────────────────────
rect(C2X, TOP, C2W, 420, PANEL, radius=16, outline=GOLD, outline_w=2)
iy = section_header(C2X, TOP, C2W, "INSULIN TYPES", "πŸ’‰", GOLD)

# Draw insulin kinetics chart
CX, CY = C2X+C2W-340, TOP+80
CW, CH = 310, 200
rect(CX, CY, CW, CH, (14,14,22), radius=8, outline=LGRAY, outline_w=1)
txt("Onset / Peak / Duration", CX+10, CY+6, F_NANO, fill=GRAY)
# Axes
draw.line([(CX+20, CY+CH-20), (CX+CW-10, CY+CH-20)], fill=GRAY, width=2)
draw.line([(CX+20, CY+20),    (CX+20, CY+CH-20)],    fill=GRAY, width=2)
txt("Time→", CX+CW-40, CY+CH-18, F_NANO, fill=GRAY)

# Curves (simplified bell-shaped)
def draw_curve(draw, cx, cy, start_x, peak_x, end_x, peak_y, base_y, color, label):
    pts = []
    for sx in range(start_x, end_x+1, 3):
        t = (sx - start_x)/(end_x-start_x)
        # bell shape
        val = math.sin(math.pi * t)
        y_pt = base_y - val*(base_y-peak_y)
        pts.append((cx+sx, cy+y_pt))
    for i in range(len(pts)-1):
        draw.line([pts[i], pts[i+1]], fill=color, width=3)
    if len(pts)>1:
        draw.text((cx+start_x, cy+peak_y-18), label, font=ImageFont.truetype(
            "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",18) if os.path.exists(
            "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf") else ImageFont.load_default(),
            fill=color)

import os as _os
_base = CY+CH-22
draw_curve(draw, CX, 0, 22, 55,  115, _base-90, _base, (100,200,255), "Rapid")
draw_curve(draw, CX, 0, 30, 80,  160, _base-70, _base, YELLOW,        "Regular")
draw_curve(draw, CX, 0, 40, 120, 220, _base-55, _base, ORANGE,        "NPH")
draw_curve(draw, CX, 0, 45, 160, 295, _base-30, _base, GREEN,         "Glargine")

ins_rows = [
    ("Ultra-Rapid/Inhaled", "Afrezza",              "10-20m", "~20m", "~3h",  CYAN),
    ("Rapid-Acting",        "Lispro/Aspart/Glulisine","15-30m","1-2h","3-5h", BLUE),
    ("Short-Acting",        "Regular (Humulin R)",  "30-60m", "2-4h", "6-8h", YELLOW),
    ("Intermediate",        "NPH (Humulin N)",      "1-2h",   "4-10h","12-18h",ORANGE),
    ("Long-Acting",         "Glargine/Detemir",     "1-2h",   "None","20-24h",GREEN),
    ("Ultra-Long",          "Degludec (Tresiba)",   "1-2h",   "None", ">42h", (120,200,80)),
]
ih = ["Type", "Examples", "Onset", "Peak", "Duration"]
ih_xs = [C2X+8, C2X+220, C2X+560, C2X+680, C2X+790]
for i,(h,hx) in enumerate(zip(ih,ih_xs)):
    txt(h, hx, iy+4, F_SMALL_B, fill=GOLD)
for ri, (tp,ex,on,pk,dur,col) in enumerate(ins_rows):
    rry = iy+40+ri*52
    bg = (20,20,32) if ri%2==0 else (26,26,40)
    rect(C2X+4, rry, C2W-8, 48, bg, radius=6)
    txt(tp, C2X+8,   rry+10, F_NANO, fill=col)
    txt(ex, C2X+220, rry+10, F_NANO, fill=OFFWHITE)
    txt(on, C2X+560, rry+10, F_SMALL_B, fill=col)
    txt(pk, C2X+680, rry+10, F_NANO, fill=OFFWHITE)
    txt(dur,C2X+790, rry+10, F_NANO, fill=OFFWHITE)

# Pearl under insulin table
rect(C2X+4, iy+358, C2W-8, 36, (0,30,50), radius=6, outline=CYAN, outline_w=1)
txt("πŸ’Ž Rapid β†’ 15 min before meal  |  Regular β†’ 30 min  |  Glargine = NO peak (basal)", C2X+14, iy+368, F_NANO, fill=CYAN)

# ── ORAL HYPOGLYCEMICS ───────────────────────────────────────────────────────
OHY = TOP+430
rect(C2X, OHY, C2W, 680, PANEL, radius=16, outline=GREEN, outline_w=2)
oy = section_header(C2X, OHY, C2W, "ORAL HYPOGLYCEMIC AGENTS", "πŸ’Š", GREEN)

oha = [
    ("A. METFORMIN",       "1st line T2DM","AMPK β†’ ↓hepatic gluconeogenesis","No hypoglycemia, ↓weight, cardioprotective","Lactic acidosis (eGFR<30,contrast,alcohol)", GOLD),
    ("B. SULFONYLUREAS",   "2nd line","Block K-ATP on Ξ²-cellsβ†’insulin release","Rapid ↓sugar","Hypoglycemia, weight↑; Glyburide UNSAFE in renal Fx", YELLOW),
    ("C. MEGLITINIDES",    "Postprandial","Block K-ATP (shorter)","Flexible dosing","Hypoglycemia; don't combine with SU", ORANGE),
    ("D. TZDs (Glitazones)","Insulin sensitizer","PPAR-Ξ³ agonist","↓insulin resistance","Heart failure, fractures, bladder Ca (Pioglitazone)", RED),
    ("E. DPP-4 INHIBITORS","T2DM + renal","↑GLP-1/GIP, glucose-dependent","Weight neutral, no hypoglycemia","Pancreatitis (rare); Linagliptin = no dose adj.", CYAN),
    ("F. GLP-1 AGONISTS",  "T2DM + CVD","↑Insulin, ↓glucagon, gastric emptying","↓Weight, cardioprotective (LIRA/SEMA)","Nausea, pancreatitis (rare)", GREEN),
    ("G. SGLT-2 INHIBITORS","T2DM + CKD/HF","Block glucose reabsorption in PCT","↓CV events, nephroprotective","UTI/genital infxn; Euglycemic DKA; amputation (Cana)", BLUE),
    ("H. Ξ±-GLUCOSIDASE INH.","Post-meal Ξ”","Delay CHO absorption in gut","Post-meal glucose control","Flatulence, diarrhea (GI side effects)", PURPLE),
]
for i,(name,use,mech,adv,se,col) in enumerate(oha):
    ry = oy+i*80
    bg = (18,22,28) if i%2==0 else (22,18,28)
    rect(C2X+4, ry, C2W-8, 76, bg, radius=8)
    # Color bar left
    draw.rectangle([C2X+4, ry, C2X+10, ry+76], fill=col)
    txt(name,  C2X+18, ry+4,  F_NANO, fill=col)
    txt(f"Use: {use}",  C2X+18, ry+26, F_NANO, fill=GRAY)
    txt(f"MOA: {mech}", C2X+18, ry+46, F_NANO, fill=OFFWHITE)
    txt(f"⚠ {se}", C2X+480, ry+4, F_NANO, fill=RED)
    txt(f"βœ“ {adv}", C2X+480, ry+26, F_NANO, fill=GREEN)

# ── HbA1c TARGETS ────────────────────────────────────────────────────────────
TGY = OHY+690
rect(C2X, TGY, C2W, 155, PANEL, radius=16, outline=GOLD, outline_w=2)
ty = section_header(C2X, TGY, C2W, "GLYCEMIC TARGETS", "🎯", GOLD)
targets = [
    ("HbA1c General", "<7%", GOLD),
    ("Fasting Glucose", "80-130 mg/dL", GREEN),
    ("Post-meal Glucose", "<180 mg/dL", ORANGE),
    ("BP Target", "<130/80 mmHg", BLUE),
    ("LDL Target", "<100 (<70 high risk)", RED),
]
for i,(tname,tval,tcol) in enumerate(targets):
    tx = C2X + 20 + (i%3)*400
    tyy = ty + 10 + (i//3)*55
    rect(tx, tyy, 360, 48, (20,20,32), radius=8, outline=tcol, outline_w=1)
    txt(f"{tname}: ", tx+10, tyy+8, F_NANO, fill=GRAY)
    txt(tval, tx+10, tyy+26, F_SMALL_B, fill=tcol)

# ── NEET PG ASKABLE POINTS ───────────────────────────────────────────────────
APY = TGY+165
rect(C2X, APY, C2W, 345, PANEL, radius=16, outline=YELLOW, outline_w=2)
ay = section_header(C2X, APY, C2W, "NEET PG ASKABLE POINTS ⭐", "⭐", YELLOW)
askable = [
    ("⭐ 1st line T2DM",       "METFORMIN",                      GOLD),
    ("⭐ DOC in Pregnancy",     "INSULIN (+ Metformin/Glib ok)",  GREEN),
    ("⭐ DOC renal failure",    "LINAGLIPTIN (no dose adj.)",     CYAN),
    ("⭐ Causes euglycemic DKA","SGLT-2 INHIBITORS",              RED),
    ("⭐ Pathognomonic renal",  "KIMMELSTIEL-WILSON NODULE",      YELLOW),
    ("⭐ Gold std DM monitor",  "HbA1c (3-month average)",        GOLD),
    ("⭐ DCCT Trial",           "Tight control ↓retinopathy 76%", BLUE),
    ("⭐ Cardioprotective DOC", "EMPAGLIFLOZIN / LIRAGLUTIDE",    GREEN),
]
for i,(q,a,col) in enumerate(askable):
    ry = ay+4+i*38
    bg = (25,25,20) if i%2==0 else PANEL2
    rect(C2X+4, ry, C2W-8, 34, bg, radius=6)
    txt(q, C2X+10,    ry+6, F_NANO, fill=col)
    txt(f"β†’ {a}", C2X+420, ry+6, F_SMALL_B, fill=WHITE)

# ══════════════════════════════════════════════════════════════════════════════
# COLUMN 3 – COMPLICATIONS + ALGORITHMS + PEARLS
# ══════════════════════════════════════════════════════════════════════════════

# ── ACUTE COMPLICATIONS: DKA vs HHS ──────────────────────────────────────────
rect(C3X, TOP, C3W, 310, PANEL, radius=16, outline=RED, outline_w=2)
cy3 = section_header(C3X, TOP, C3W, "ACUTE COMPLICATIONS: DKA vs HHS", "🚨", RED)

comp_h = ["Feature","DKA","HHS (HONK)"]
comp_xs = [C3X+10, C3X+380, C3X+760]
for h,cx in zip(comp_h,comp_xs):
    txt(h, cx, cy3+2, F_SMALL_B, fill=GOLD)

comp_rows = [
    ("DM Type",       "Mainly T1DM",      "Mainly T2DM"),
    ("Glucose",       "250–600 mg/dL",    ">600 mg/dL ⚠"),
    ("pH",            "<7.3 (acidosis)",   "Normal / ↓ mild"),
    ("Ketones",       "+++ (strong)",      "Absent / trace"),
    ("Osmolality",    "Mildly elevated",   ">320 mOsm/kg ⚠"),
    ("Mortality",     "1–5%",              "15–20% (higher!)"),
    ("Key Treatment", "Fluids+Insulin+K+", "Aggressive fluids"),
]
for ri,row in enumerate(comp_rows):
    ry = cy3+36+ri*32
    bg = (30,10,10) if ri%2==0 else (22,10,10)
    rect(C3X+4, ry-2, C3W-8, 30, bg, radius=4)
    txt(row[0], comp_xs[0], ry+2, F_NANO, fill=GRAY)
    txt(row[1], comp_xs[1], ry+2, F_NANO, fill=OFFWHITE)
    clr = RED if "⚠" in row[2] else GREEN if "Normal" in row[2] else OFFWHITE
    txt(row[2], comp_xs[2], ry+2, F_NANO, fill=clr)

# DKA trigger note
rect(C3X+4, cy3+262, C3W-8, 32, (40,0,0), radius=6)
txt("⚑ Most common precipitant: INFECTION  |  Precipitants: Missed insulin, MI, Surgery", C3X+12, cy3+270, F_NANO, fill=RED)

# ── CHRONIC COMPLICATIONS ────────────────────────────────────────────────────
CCY = TOP+320
rect(C3X, CCY, C3W, 330, PANEL, radius=16, outline=ORANGE, outline_w=2)
ccy = section_header(C3X, CCY, C3W, "CHRONIC COMPLICATIONS", "🫁", ORANGE)

# Microvascular section
rect(C3X+8, ccy+4, C3W-16, 36, (30,20,0), radius=6, outline=ORANGE, outline_w=1)
txt("MICROVASCULAR (Hyperglycemia-driven – tight control helps!)", C3X+18, ccy+12, F_NANO, fill=ORANGE)

micro = [
    ("RETINOPATHY", "Microaneurysms→exudates→cotton wool→new vessels (proliferative)", "Laser photocoag / anti-VEGF", RED),
    ("NEPHROPATHY", "Kimmelstiel-Wilson nodules; microalbuminuria→proteinuria→ESRD", "ACEi/ARB + SGLT-2i", BLUE),
    ("NEUROPATHY",  "Glove-stocking sensory loss; autonomic: gastroparesis, ED", "Pregabalin, TCAs, Duloxetine", GREEN),
]
for i,(name,desc,tx,col) in enumerate(micro):
    ry = ccy+46+i*64
    rect(C3X+8, ry, C3W-16, 60, PANEL2, radius=8)
    draw.rectangle([C3X+8, ry, C3X+14, ry+60], fill=col)
    txt(name, C3X+22, ry+4, F_SMALL_B, fill=col)
    txt(desc, C3X+22, ry+26, F_NANO, fill=OFFWHITE)
    txt(f"Rx: {tx}", C3X+22, ry+44, F_NANO, fill=GREEN)

# Macrovascular
rect(C3X+8, ccy+240, C3W-16, 30, (30,0,30), radius=6, outline=PURPLE, outline_w=1)
txt("MACROVASCULAR: CAD  |  Stroke  |  Peripheral Arterial Disease  |  Diabetic Foot", C3X+18, ccy+248, F_NANO, fill=PURPLE)

rect(C3X+4, ccy+278, C3W-8, 34, (0,20,40), radius=6)
txt("πŸ’‘ Annual foot exam + ophthalmology + microalbuminuria screening mandatory!", C3X+14, ccy+288, F_NANO, fill=CYAN)

# ── DIAGNOSTIC ALGORITHM ─────────────────────────────────────────────────────
DAY = CCY+340
rect(C3X, DAY, C3W, 310, PANEL, radius=16, outline=TEAL, outline_w=2)
day2 = section_header(C3X, DAY, C3W, "DIAGNOSTIC ALGORITHM", "πŸ”„", TEAL)

def flow_box(x, y, w, h, text, bg, fg=WHITE, fnt=None, outline=None):
    fnt = fnt or F_NANO
    rect(x, y, w, h, bg, radius=10, outline=outline or bg)
    bb = fnt.getbbox(text)
    tw = bb[2]-bb[0]
    draw.text((x+(w-tw)//2, y+(h-30)//2), text, font=fnt, fill=fg)

bw, bh, gx = 180, 46, C3X
# Row 1
flow_box(C3X+50,  day2+4,  320, bh, "Symptoms / Risk Factors Present", (0,60,80), CYAN, F_NANO, TEAL)
arrow(C3X+210, day2+52, C3X+210, day2+74, TEAL, w=3)
# Row 2
flow_box(C3X+50,  day2+76,  320, bh, "FBS / Random Glucose / HbA1c", (30,30,0), YELLOW, F_NANO, GOLD)
arrow(C3X+210, day2+124, C3X+210, day2+144, TEAL, w=3)
# Branch
flow_box(C3X+50,  day2+146, 140, bh, "Abnormal ×2\n→ DIABETES", RED_SOFT, WHITE, F_NANO)
flow_box(C3X+210, day2+146, 160, bh, "Borderline\n→ PRE-DM", (50,30,0), ORANGE, F_NANO)
flow_box(C3X+390, day2+146, 140, bh, "Normal\n→ Monitor", GREEN_DIM, WHITE, F_NANO)
arrow(C3X+120, day2+194, C3X+120, day2+216, RED, w=2)
flow_box(C3X+50,  day2+218, 140, bh, "Classify T1 / T2\nStart Rx", (50,0,50), PURPLE, F_NANO)

# OGTT note
flow_box(C3X+660, day2+4,  C3W-670, 120,
         "OGTT: Reserved for\nsuspected DM with\nnormal FBS", PANEL2, GRAY, F_NANO, LGRAY)
txt("πŸ’‘ 2 separate tests\n   needed to confirm", C3X+670, day2+130, F_NANO, fill=GRAY)

# ── MANAGEMENT ALGORITHM ─────────────────────────────────────────────────────
MAY = DAY+320
rect(C3X, MAY, C3W, 350, PANEL, radius=16, outline=GREEN, outline_w=2)
may2 = section_header(C3X, MAY, C3W, "MANAGEMENT ALGORITHM", "βš•οΈ", GREEN)

# Top box
flow_box(C3X+80, may2+4, 400, 46, "NEW T2DM DIAGNOSIS", (0,50,0), GREEN, F_SMALL_B, GREEN)
arrow(C3X+280, may2+52, C3X+280, may2+72, GREEN, w=3)

# Lifestyle
flow_box(C3X+80, may2+74, 400, 40, "Lifestyle: Diet + Exercise + Weight loss", (20,30,20), OFFWHITE, F_NANO, LGRAY)
arrow(C3X+280, may2+116, C3X+280, may2+136, GREEN, w=3)

# Metformin
flow_box(C3X+80, may2+138, 400, 40, "START METFORMIN (1st line)", (0,40,0), GOLD, F_NANO, GREEN)
arrow(C3X+280, may2+180, C3X+280, may2+200, GREEN, w=3)

# If not controlled - split
flow_box(C3X+10, may2+202, 240, 40, "HbA1c still >7%\nAdd 2nd drug", (30,0,0), RED, F_NANO)
txt("↓", C3X+130, may2+244, F_HEAD, fill=RED)
flow_box(C3X+10, may2+266, 240, 60, "+SGLT-2i (if CKD/CVD)\n+GLP-1 (if obese)\n+SU (if cost issue)", (20,0,30), PURPLE, F_NANO)

flow_box(C3X+380, may2+202, 260, 40, "T1DM / DKA /\nHbA1c >10%", (0,0,40), BLUE, F_NANO)
txt("↓", C3X+510, may2+244, F_HEAD, fill=BLUE)
flow_box(C3X+380, may2+266, 260, 60, "INSULIN\n(Basal-Bolus\nor Pump)", (0,0,50), CYAN, F_NANO)

# Emergency box
flow_box(C3X+680, may2+200, C3W-690, 128, "EMERGENCY\nDKA/HHS:\nIV Fluids (NS)\n+ Regular Insulin\n+ K+ correction", (40,0,0), RED, F_NANO, RED)

# ── CLINICAL PEARLS ──────────────────────────────────────────────────────────
CPY = MAY+360
rect(C3X, CPY, C3W, 230, PANEL, radius=16, outline=GOLD, outline_w=2)
cpy2 = section_header(C3X, CPY, C3W, "CLINICAL PEARLS πŸ’Ž", "πŸ’Ž", GOLD)
pearls = [
    "DM diagnosis requires 2 abnormal tests (unless symptomatic random β‰₯200 mg/dL)",
    "Insulin half-life = 3–10 mins; liver+kidney degrade it",
    "Counterregulatory hormones: Glucagon, Epi, Cortisol, GH β†’ all raise glucose",
    "Acanthosis nigricans = insulin resistance marker (T2DM / PCOD)",
    "Diabetic nephropathy = most common cause of CKD/ESRD in developed world",
]
for i,p in enumerate(pearls):
    ry = cpy2+4+i*40
    draw.polygon([(C3X+10, ry+10), (C3X+22, ry+5), (C3X+22, ry+20)], fill=GOLD)
    txt(p, C3X+28, ry+4, F_NANO, fill=OFFWHITE)

# ── PYQ IMAGE ALERT ──────────────────────────────────────────────────────────
PIY = CPY+240
rect(C3X, PIY, C3W, 175, (10,5,0), radius=16, outline=YELLOW, outline_w=3)
piy2 = section_header(C3X, PIY, C3W, "IMAGE-BASED PYQ ALERT πŸ“Έ", "πŸ“Έ", YELLOW)
pyqs = [
    "πŸ“· Fundus photo β†’ microaneurysms / cotton wool β†’ DIABETIC RETINOPATHY",
    "πŸ“· Renal biopsy β†’ nodular glomerulosclerosis β†’ KIMMELSTIEL-WILSON",
    "πŸ“· ECG with prolonged PR + wide QRS in DKA setting β†’ HYPERKALEMIA",
    "πŸ“· Foot photo β†’ painless ulcer, absent pulses β†’ DIABETIC FOOT",
]
for i,p in enumerate(pyqs):
    txt(p, C3X+10, piy2+4+i*36, F_NANO, fill=YELLOW if i==0 else OFFWHITE)

# ══════════════════════════════════════════════════════════════════════════════
# FOOTER
# ══════════════════════════════════════════════════════════════════════════════
draw.rectangle([0, H-56, W, H-6], fill=(14,14,20))
draw.line([(0, H-56), (W, H-56)], fill=GOLD, width=2)
txt_center("🩺 NEET PG / INICET 2026  β€’  Diabetes Mellitus  β€’  Ranker Edition  β€’  Day 1 of 46  β€’  orris.care", W//2, H-48, F_NANO, fill=GRAY)
txt("⭐ HIGH YIELD", C3X+C3W-180, H-48, F_NANO, fill=GOLD)

# ─── SAVE ─────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/neet-infographic/DM_NEET_PG_Ranker.png"
img.save(out, "PNG", dpi=(300,300))
print(f"Saved {W}x{H} at: {out}")
print(f"File size: {os.path.getsize(out)/1024/1024:.1f} MB")
Running Command

cd /tmp/workspace/neet-infographic && python3 dm_infographic.py 2>&1

Reading File

Make it

I'll generate this as a premium AI image - true Apple-quality dark medical infographic.
Generating Image

Premium 4K medical infographic poster for NEET PG exam, dark matte black background, gold accent borders, Apple keynote style UI design. Topic: DIABETES MELLITUS - Ranker Edition. Layout has these sections arranged in a beautiful 3-column grid: TOP HEADER: Large bold title "🩺 DIABETES MELLITUS" in gold metallic font, subtitle "NEET PG Ranker Edition β€’ Day 1 β€’ High Yield" in gray. Gold top and bottom border lines. LEFT COLUMN (dark navy panels with gold/blue borders): 1. CLINICAL VIGNETTE panel: 45yr obese male, polyuria, polydipsia, HbA1c 8.9% - with a small medical illustration of a patient with symptom callout arrows. Blue border panel. 2. DIAGNOSIS CRITERIA table: color-coded rows - Normal/Pre-DM/Diabetes with FBS, OGTT, HbA1c values highlighted in green/orange/red. 3. TRAP POINTS panel: red border, 6 bullet points about HbA1c false values, metformin lactic acidosis, SGLT2 euglycemic DKA. 4. MNEMONICS panel: purple border with 3P mnemonic, MSG for weight loss drugs. 5. ONE-LINER REVISION: cyan border with 5 rapid fire facts. CENTER COLUMN (dark panels): 1. INSULIN TYPES table: 6 rows with ultra-rapid to ultra-long, onset/peak/duration, color-coded in cyan/blue/yellow/orange/green. Gold border. Insulin kinetics graph on right showing bell curves. 2. ORAL HYPOGLYCEMIC AGENTS: 8 drug classes (Metformin, Sulfonylureas, Meglitinides, TZDs, DPP4i, GLP1, SGLT2i, Alpha-GI) each in colored left-bar cards with MOA, advantages, side effects. 3. GLYCEMIC TARGETS: small colored badges showing HbA1c <7%, BP <130/80 etc. 4. NEET PG ASKABLE POINTS: yellow border, Q&A format pairs like "DOC T2DM β†’ METFORMIN". RIGHT COLUMN (dark panels): 1. DKA vs HHS comparison table: red border, feature rows comparing glucose levels, pH, ketones, osmolality, mortality. 2. CHRONIC COMPLICATIONS: orange border - Retinopathy, Nephropathy, Neuropathy with Kimmelstiel-Wilson nodule callout. 3. DIAGNOSTIC ALGORITHM: teal flowchart with colored decision boxes and arrows. 4. MANAGEMENT ALGORITHM: green flowchart - New T2DM β†’ Lifestyle β†’ Metformin β†’ Add 2nd drug. 5. CLINICAL PEARLS: gold diamond icons, 5 one-liners. 6. IMAGE PYQ ALERT: yellow border, fundus/biopsy image descriptions. FOOTER: "NEET PG / INICET 2026 β€’ Diabetes Mellitus β€’ Ranker Edition" in gray on dark bar. Style: Pure black matte #0A0A0E background, gold #D4AF37 accents, crisp white typography, color-coded sections, professional medical UI dashboard aesthetic, premium Apple-style spacing, suitable for 4K iPad study and printing. Ultra high detail, no clutter, every panel clearly labeled.

!

400, message: Got more than 4194304 bytes when reading: b'data: {"candidates": [{"content": {"role": "model","parts": [{"inlineData": {"mimeType": "image/png"...'.

We encountered an error while processing your request. Please try again or reach out to us for help.

βœ‰οΈhi@orris.care

Can u send the above topic in a pdf

Reading File
Running Command

mkdir -p /tmp/workspace/neet-pdf && ls /tmp/workspace/neet-pdf/

Writing File

~/neet-pdf/create_dm_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm, cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import PageBreak
from reportlab.lib.colors import HexColor, white, black

# ─── COLORS ──────────────────────────────────────────────────────────────────
BG_DARK   = HexColor("#0A0A0E")
GOLD      = HexColor("#D4AF37")
GOLD_SOFT = HexColor("#C9A227")
DARK_NAVY = HexColor("#12121A")
PANEL     = HexColor("#16161F")
RED       = HexColor("#DC3545")
GREEN     = HexColor("#28A745")
BLUE      = HexColor("#4A90D9")
CYAN      = HexColor("#17A2B8")
ORANGE    = HexColor("#FD7E14")
YELLOW    = HexColor("#FFC107")
PURPLE    = HexColor("#6F42C1")
TEAL      = HexColor("#20C997")
GRAY      = HexColor("#888899")
OFFWHITE  = HexColor("#DCDCE8")

W, H = A4  # 210 x 297 mm

# ─── DOC ─────────────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
    "/tmp/workspace/neet-pdf/DM_NEET_PG_Ranker.pdf",
    pagesize=A4,
    leftMargin=12*mm, rightMargin=12*mm,
    topMargin=10*mm, bottomMargin=10*mm,
    title="Diabetes Mellitus - NEET PG Ranker Edition",
    author="NEET PG Study Plan"
)

# ─── PAGE BACKGROUND + BORDER ────────────────────────────────────────────────
def on_page(canvas, doc):
    canvas.saveState()
    # Dark background
    canvas.setFillColor(BG_DARK)
    canvas.rect(0, 0, W, H, fill=1, stroke=0)
    # Gold border
    canvas.setStrokeColor(GOLD)
    canvas.setLineWidth(3)
    canvas.rect(6, 6, W-12, H-12, fill=0, stroke=1)
    # Top gold bar
    canvas.setFillColor(GOLD)
    canvas.rect(6, H-14, W-12, 5, fill=1, stroke=0)
    # Bottom gold bar
    canvas.rect(6, 9, W-12, 5, fill=1, stroke=0)
    # Footer text
    canvas.setFont("Helvetica", 7)
    canvas.setFillColor(GRAY)
    canvas.drawCentredString(W/2, 4*mm,
        "NEET PG / INICET 2026  β€’  Diabetes Mellitus  β€’  Ranker Edition  β€’  Day 1 of 46")
    # Page number
    canvas.setFillColor(GOLD)
    canvas.drawRightString(W-15*mm, 4*mm, f"Pg {doc.page}")
    canvas.restoreState()

# ─── STYLES ──────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    """Quick style factory."""
    base = kw.pop("parent", "Normal")
    s = ParagraphStyle(name, parent=styles[base], **kw)
    return s

# Base styles
sNormal   = S("sNormal",   textColor=OFFWHITE,  fontSize=8,  leading=11, fontName="Helvetica")
sBold     = S("sBold",     textColor=OFFWHITE,  fontSize=8,  leading=11, fontName="Helvetica-Bold")
sSmall    = S("sSmall",    textColor=GRAY,       fontSize=7,  leading=9,  fontName="Helvetica")
sSmallB   = S("sSmallB",   textColor=OFFWHITE,  fontSize=7,  leading=9,  fontName="Helvetica-Bold")
sGold     = S("sGold",     textColor=GOLD,      fontSize=8,  leading=11, fontName="Helvetica-Bold")
sRed      = S("sRed",      textColor=RED,       fontSize=8,  leading=11, fontName="Helvetica-Bold")
sGreen    = S("sGreen",    textColor=GREEN,     fontSize=8,  leading=11, fontName="Helvetica-Bold")
sBlue     = S("sBlue",     textColor=BLUE,      fontSize=8,  leading=11, fontName="Helvetica-Bold")
sCyan     = S("sCyan",     textColor=CYAN,      fontSize=8,  leading=11, fontName="Helvetica-Bold")
sOrange   = S("sOrange",   textColor=ORANGE,    fontSize=8,  leading=11, fontName="Helvetica-Bold")
sYellow   = S("sYellow",   textColor=YELLOW,    fontSize=8,  leading=11, fontName="Helvetica-Bold")
sPurple   = S("sPurple",   textColor=PURPLE,    fontSize=8,  leading=11, fontName="Helvetica-Bold")
sTeal     = S("sTeal",     textColor=TEAL,      fontSize=8,  leading=11, fontName="Helvetica-Bold")

sTitle    = S("sTitle",    textColor=GOLD,      fontSize=22, leading=26, fontName="Helvetica-Bold", alignment=TA_CENTER)
sSubtitle = S("sSubtitle", textColor=GRAY,      fontSize=9,  leading=12, fontName="Helvetica",       alignment=TA_CENTER)
sSecHead  = S("sSecHead",  textColor=GOLD,      fontSize=10, leading=13, fontName="Helvetica-Bold")
sBullet   = S("sBullet",   textColor=OFFWHITE,  fontSize=7.5, leading=10, fontName="Helvetica",
               leftIndent=10, firstLineIndent=-8)

def P(text, style=None):
    style = style or sNormal
    return Paragraph(text, style)

def HR(color=GOLD, thickness=1, w="100%"):
    return HRFlowable(width=w, thickness=thickness, color=color, spaceAfter=3, spaceBefore=3)

def section_title(text, icon="", color=GOLD, bg=None):
    bg = bg or DARK_NAVY
    data = [[P(f"{icon}  {text}", S("sh", textColor=color, fontSize=10, leading=13,
                                    fontName="Helvetica-Bold"))]]
    t = Table(data, colWidths=[W - 24*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("LEFTPADDING",  (0,0), (-1,-1), 8),
        ("RIGHTPADDING", (0,0), (-1,-1), 8),
        ("TOPPADDING",   (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0), (-1,-1), 5),
        ("LINEBELOW", (0,0), (-1,-1), 2, color),
        ("LINEABOVE", (0,0), (-1,-1), 1, color),
    ]))
    return t

def two_col_table(data, col_widths, row_colors=None, header_bg=DARK_NAVY, header_fg=GOLD):
    """Generic styled table."""
    style_cmds = [
        ("BACKGROUND", (0,0), (-1,0), header_bg),
        ("TEXTCOLOR",  (0,0), (-1,0), header_fg),
        ("FONTNAME",   (0,0), (-1,0), "Helvetica-Bold"),
        ("FONTSIZE",   (0,0), (-1,-1), 7.5),
        ("LEADING",    (0,0), (-1,-1), 10),
        ("LEFTPADDING",  (0,0), (-1,-1), 5),
        ("RIGHTPADDING", (0,0), (-1,-1), 5),
        ("TOPPADDING",   (0,0), (-1,-1), 3),
        ("BOTTOMPADDING",(0,0), (-1,-1), 3),
        ("TEXTCOLOR",  (0,1), (-1,-1), OFFWHITE),
        ("ROWBACKGROUNDS", (0,1), (-1,-1), [HexColor("#141420"), HexColor("#1A1A28")]),
        ("LINEBELOW",  (0,0), (-1,-1), 0.5, HexColor("#333344")),
        ("GRID",       (0,0), (-1,-1), 0.3, HexColor("#222233")),
    ]
    t = Table(data, colWidths=col_widths)
    t.setStyle(TableStyle(style_cmds))
    return t

# ─── STORY ───────────────────────────────────────────────────────────────────
story = []
SP = lambda n=4: Spacer(1, n)
CW = W - 24*mm  # content width

# ══════════════════════════════════════════════════════════════════════════════
# PAGE 1 HEADER
# ══════════════════════════════════════════════════════════════════════════════
story.append(SP(8))
story.append(P("🩺  DIABETES MELLITUS", sTitle))
story.append(SP(3))
story.append(P("NEET PG / INICET 2026  β€’  Ranker Edition  β€’  Day 1  β€’  High-Yield Mastery", sSubtitle))
story.append(HR(GOLD, 2))
story.append(SP(4))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 1 – CLINICAL VIGNETTE
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("CLINICAL VIGNETTE", "πŸ“‹", BLUE))
story.append(SP(3))

vignette_data = [[
    P("<b>Patient:</b> 45-year-old male, obese (BMI 32), smoker, family H/o DM", sNormal),
    P("<b>Symptoms:</b> 3 months polydipsia, polyuria, nocturia Γ—4/night, blurred vision, tingling feet", sNormal),
],[
    P("<b>Examination:</b> Acanthosis nigricans present, BP 148/92 mmHg", sNormal),
    P("<b>Investigations:</b> FBS 186 mg/dL  |  HbA1c 8.9%  |  Urine: glucose ++", sYellow),
],[
    P("❓ <b>Most likely diagnosis?</b>", sBlue),
    P("β†’  TYPE 2 DIABETES MELLITUS", S("ans", textColor=GREEN, fontSize=9, leading=12, fontName="Helvetica-Bold")),
],[
    P("❓ <b>Next best step?</b>", sBlue),
    P("β†’  Confirm with repeat FBS or HbA1c (2 abnormal tests required)", sNormal),
]]
vt = Table(vignette_data, colWidths=[CW*0.5, CW*0.5])
vt.setStyle(TableStyle([
    ("BACKGROUND", (0,0), (-1,-1), HexColor("#0D1520")),
    ("LINEBELOW",  (0,0), (-1,-1), 0.5, HexColor("#1A2A40")),
    ("LEFTPADDING",  (0,0), (-1,-1), 8),
    ("RIGHTPADDING", (0,0), (-1,-1), 8),
    ("TOPPADDING",   (0,0), (-1,-1), 5),
    ("BOTTOMPADDING",(0,0), (-1,-1), 5),
    ("BOX", (0,0), (-1,-1), 1.5, BLUE),
    ("ROWBACKGROUNDS", (0,0), (-1,-1), [HexColor("#0D1520"), HexColor("#111825")]),
]))
story.append(vt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 2 – DIAGNOSIS CRITERIA
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("DIAGNOSIS CRITERIA (ADA)", "πŸ”¬", GOLD))
story.append(SP(3))

diag_data = [
    [P("Test", sGold), P("Normal", sGold), P("Pre-Diabetes", sGold), P("DIABETES βœ“", sGold)],
    [P("Fasting Plasma Glucose", sBold), P("< 100 mg/dL", sGreen),
     P("100–125 mg/dL", sOrange), P("β‰₯ 126 mg/dL", sRed)],
    [P("2-hr OGTT (75g)", sBold), P("< 140 mg/dL", sGreen),
     P("140–199 mg/dL", sOrange), P("β‰₯ 200 mg/dL", sRed)],
    [P("HbA1c", sBold), P("< 5.7%", sGreen),
     P("5.7–6.4%", sOrange), P("β‰₯ 6.5%", sRed)],
    [P("Random glucose + symptoms", sBold), P("β€”", sSmall),
     P("β€”", sSmall), P("β‰₯ 200 mg/dL", sRed)],
]
dt = Table(diag_data, colWidths=[CW*0.38, CW*0.18, CW*0.22, CW*0.22])
dt.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0), HexColor("#1A1500")),
    ("BACKGROUND",   (0,1), (-1,-1), HexColor("#141420")),
    ("ROWBACKGROUNDS",(0,1), (-1,-1), [HexColor("#141420"), HexColor("#1A1A28")]),
    ("FONTNAME",     (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",     (0,0), (-1,-1), 7.5),
    ("LEADING",      (0,0), (-1,-1), 10),
    ("LEFTPADDING",  (0,0), (-1,-1), 6),
    ("RIGHTPADDING", (0,0), (-1,-1), 6),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("BOX",          (0,0), (-1,-1), 1.5, GOLD),
    ("LINEBELOW",    (0,0), (-1,-1), 0.5, HexColor("#333344")),
    ("TEXTCOLOR",    (1,1), (1,-1), GREEN),
    ("TEXTCOLOR",    (2,1), (2,-1), ORANGE),
    ("TEXTCOLOR",    (3,1), (3,-1), RED),
]))
story.append(dt)
story.append(SP(3))

# Pearl note
pearl_note = Table([[P("⚑  2 separate abnormal tests required to confirm diagnosis (unless symptomatic random glucose β‰₯200 mg/dL)",
    S("pearl", textColor=GREEN, fontSize=7.5, leading=10, fontName="Helvetica-Bold"))]], colWidths=[CW])
pearl_note.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), HexColor("#001500")),
    ("BOX",(0,0),(-1,-1), 1, GREEN),
    ("LEFTPADDING",(0,0),(-1,-1),8), ("TOPPADDING",(0,0),(-1,-1),4),
    ("BOTTOMPADDING",(0,0),(-1,-1),4),
]))
story.append(pearl_note)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 3 – INSULIN TYPES
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("INSULIN TYPES", "πŸ’‰", GOLD))
story.append(SP(3))

ins_data = [
    [P("Type", sGold), P("Brand Examples", sGold), P("Onset", sGold), P("Peak", sGold), P("Duration", sGold)],
    [P("Ultra-Rapid / Inhaled", sCyan),  P("Afrezza (inhaled)", sNormal),       P("10–20 min", sCyan),   P("~20 min", sNormal),   P("~3 hrs", sNormal)],
    [P("Rapid-Acting", sBlue),           P("Lispro, Aspart, Glulisine", sNormal),P("15–30 min", sBlue),  P("30–90 min", sNormal), P("3–5 hrs", sNormal)],
    [P("Short-Acting", sYellow),         P("Regular (Humulin R, Novolin R)", sNormal), P("30–60 min", sYellow), P("2–4 hrs", sNormal), P("6–8 hrs", sNormal)],
    [P("Intermediate", sOrange),         P("NPH (Humulin N, Novolin N)", sNormal),P("1–2 hrs", sOrange), P("4–10 hrs", sNormal),  P("12–18 hrs", sNormal)],
    [P("Long-Acting", sGreen),           P("Glargine (Lantus), Detemir (Levemir)", sNormal), P("1–2 hrs", sGreen), P("NO PEAK ⭐", sRed), P("20–24 hrs", sNormal)],
    [P("Ultra Long-Acting", S("ulg", textColor=HexColor("#90EE90"), fontSize=8, fontName="Helvetica-Bold")),
     P("Degludec (Tresiba)", sNormal),   P("1–2 hrs", sNormal), P("No peak", sNormal), P("> 42 hrs", sNormal)],
]
it = Table(ins_data, colWidths=[CW*0.25, CW*0.28, CW*0.15, CW*0.16, CW*0.16])
it.setStyle(TableStyle([
    ("BACKGROUND",   (0,0), (-1,0), HexColor("#1A1500")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141420"),HexColor("#1A1A28")]),
    ("FONTNAME",     (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",     (0,0), (-1,-1), 7.5),
    ("LEADING",      (0,0), (-1,-1), 10),
    ("LEFTPADDING",  (0,0), (-1,-1), 5),
    ("RIGHTPADDING", (0,0), (-1,-1), 5),
    ("TOPPADDING",   (0,0), (-1,-1), 4),
    ("BOTTOMPADDING",(0,0), (-1,-1), 4),
    ("BOX",          (0,0), (-1,-1), 1.5, GOLD),
    ("LINEBELOW",    (0,0), (-1,-1), 0.5, HexColor("#333344")),
    ("TEXTCOLOR",    (0,0), (-1,0), GOLD),
]))
story.append(it)
story.append(SP(3))

ins_pearl = Table([[P("πŸ’Ž  Rapid-acting: give 15 min before meal  |  Regular: give 30 min before meal  |  Glargine = NO peak (true basal)  |  Never give NPH IV",
    S("ip", textColor=CYAN, fontSize=7.5, leading=10, fontName="Helvetica-Bold"))]], colWidths=[CW])
ins_pearl.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), HexColor("#001520")),
    ("BOX",(0,0),(-1,-1),1,CYAN),
    ("LEFTPADDING",(0,0),(-1,-1),8),("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
]))
story.append(ins_pearl)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 4 – ORAL HYPOGLYCEMICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("ORAL HYPOGLYCEMIC AGENTS", "πŸ’Š", GREEN))
story.append(SP(3))

oha_data = [
    [P("Class / Drug", sGold), P("Mechanism (MOA)", sGold), P("Advantage", sGold), P("Side Effects ⚠", sGold)],
    [P("METFORMIN\n(1st line T2DM)", S("mf", textColor=GOLD, fontSize=7.5, fontName="Helvetica-Bold")),
     P("↑AMPK β†’ ↓hepatic gluconeogenesis, ↑peripheral uptake", sNormal),
     P("No hypoglycemia, weight neutral/loss, cardioprotective", sGreen),
     P("Lactic acidosis (eGFR<30, contrast, alcohol, liver failure)", sRed)],
    [P("SULFONYLUREAS\nGlipizide, Glimepiride\nGlyburide", sYellow),
     P("Block K-ATP channels on Ξ²-cells β†’ depolarization β†’ Ca²⁺ influx β†’ insulin release", sNormal),
     P("Rapid glucose ↓, cheap, widely used", sGreen),
     P("Hypoglycemia, weight gain. Glyburide UNSAFE in renal failure", sRed)],
    [P("MEGLITINIDES\nRepaglinide, Nateglinide", sOrange),
     P("Same as SU but faster onset, shorter action. Postprandial regulators", sNormal),
     P("Flexible dosing with irregular meals", sGreen),
     P("Hypoglycemia. Don't combine with SU (overlapping MOA)", sRed)],
    [P("TZDs (GLITAZONES)\nPioglitazone, Rosiglitazone", S("tzd", textColor=RED, fontSize=7.5, fontName="Helvetica-Bold")),
     P("PPAR-Ξ³ agonist β†’ ↑insulin sensitivity in fat + muscle", sNormal),
     P("↓insulin resistance, ↓TG (Pioglitazone)", sGreen),
     P("Fluid retention, heart failure, fractures, bladder cancer (Pioglitazone)", sRed)],
    [P("DPP-4 INHIBITORS\nSitagliptin, Linagliptin\nSaxagliptin", sCyan),
     P("Inhibit DPP-4 β†’ ↑GLP-1/GIP β†’ glucose-dependent insulin release", sNormal),
     P("Weight neutral, no hypoglycemia. Linagliptin = no dose adjustment in CKD", sGreen),
     P("Pancreatitis (rare). Saxagliptin β†’ ↑hospitalization for HF", sRed)],
    [P("GLP-1 AGONISTS\nSemaglutide, Liraglutide\nExenatide, Dulaglutide", sGreen),
     P("↑Insulin, ↓glucagon, ↓gastric emptying, ↑satiety", sNormal),
     P("Weight loss, cardioprotective (LEADER/SUSTAIN trials)", sGreen),
     P("Nausea, vomiting, pancreatitis. SC injection (except Semaglutide oral)", sRed)],
    [P("SGLT-2 INHIBITORS\nEmpagliflozin, Dapagliflozin\nCanagliflozin", sBlue),
     P("Block SGLT-2 in PCT β†’ glycosuria β†’ ↓blood glucose", sNormal),
     P("Weight loss, ↓BP, cardioprotective + nephroprotective (EMPA-REG)", sGreen),
     P("UTI/genital infections, EUGLYCEMIC DKA, amputation risk (Cana)", sRed)],
    [P("Ξ±-GLUCOSIDASE INH.\nAcarbose, Miglitol", sPurple),
     P("Delay CHO absorption in intestine β†’ blunt post-meal glucose rise", sNormal),
     P("Post-prandial glucose control, weight neutral", sGreen),
     P("Flatulence, diarrhea (GI side effects - main limiting factor)", sRed)],
]
ohat = Table(oha_data, colWidths=[CW*0.2, CW*0.28, CW*0.25, CW*0.27])
ohat.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#001500")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141420"),HexColor("#1A1A28")]),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7),
    ("LEADING",       (0,0), (-1,-1), 9.5),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, GREEN),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#333344")),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
]))
story.append(ohat)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# PAGE 2
# ══════════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(SP(8))
story.append(P("🩺  DIABETES MELLITUS  β€”  Page 2", S("p2t", textColor=GOLD, fontSize=14, leading=18, fontName="Helvetica-Bold", alignment=TA_CENTER)))
story.append(HR(GOLD, 2))
story.append(SP(4))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 5 – DKA vs HHS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("ACUTE COMPLICATIONS: DKA vs HHS (HONK)", "🚨", RED))
story.append(SP(3))

dka_data = [
    [P("Feature", sGold), P("DKA", sGold), P("HHS / HONK", sGold)],
    [P("DM Type", sBold),         P("Mainly Type 1 DM", sNormal),     P("Mainly Type 2 DM", sNormal)],
    [P("Blood Glucose", sBold),   P("250–600 mg/dL", sNormal),        P("> 600 mg/dL ⭐", sRed)],
    [P("pH", sBold),              P("< 7.3 (metabolic acidosis)", sRed), P("Normal or mildly ↓", sGreen)],
    [P("Ketones", sBold),         P("Strongly positive +++", sRed),   P("Absent or trace", sGreen)],
    [P("Bicarbonate", sBold),     P("< 15 mEq/L", sRed),              P("Normal", sGreen)],
    [P("Serum Osmolality", sBold),P("Mildly elevated", sNormal),      P("> 320 mOsm/kg ⭐", sRed)],
    [P("Consciousness", sBold),   P("Usually alert", sNormal),        P("Stupor/Coma common ⚠", sRed)],
    [P("Mortality", sBold),       P("1–5%", sGreen),                  P("15–20% (much higher!)", sRed)],
    [P("Key Treatment", sBold),   P("IV Fluids (NS) + Regular Insulin IV + K⁺ correction", sNormal),
                                   P("Aggressive IV Fluids (main), cautious insulin", sNormal)],
]
dkat = Table(dka_data, colWidths=[CW*0.28, CW*0.36, CW*0.36])
dkat.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#200000")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#140000"),HexColor("#1A0000")]),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, RED),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#330000")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(dkat)
story.append(SP(3))

precip = Table([[P("⚑ Most common precipitant = INFECTION  |  Others: Missed insulin, MI, Surgery, New diagnosis, Steroids, Stress",
    S("pr", textColor=RED, fontSize=7.5, leading=10, fontName="Helvetica-Bold"))]], colWidths=[CW])
precip.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1),HexColor("#1A0000")),
    ("BOX",(0,0),(-1,-1),1,RED),
    ("LEFTPADDING",(0,0),(-1,-1),8),("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
]))
story.append(precip)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 6 – CHRONIC COMPLICATIONS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("CHRONIC COMPLICATIONS", "🫁", ORANGE))
story.append(SP(3))

comp_data = [
    [P("Complication", sGold), P("Pathology / Features", sGold), P("Key Points", sGold), P("Treatment", sGold)],
    [P("RETINOPATHY\n(Microvascular)", S("ret", textColor=RED, fontSize=7.5, fontName="Helvetica-Bold")),
     P("Microaneurysms β†’ Hard exudates β†’ Cotton wool spots (IRMA) β†’ New vessel formation (Proliferative)", sNormal),
     P("5th leading cause of blindness worldwide. T1DM: screen 3–5 yrs after onset. T2DM: screen at diagnosis annually", sNormal),
     P("Laser photocoagulation / Anti-VEGF (bevacizumab). Vitrectomy for vitreous haemorrhage", sGreen)],
    [P("NEPHROPATHY\n(Microvascular)", S("nep", textColor=BLUE, fontSize=7.5, fontName="Helvetica-Bold")),
     P("Kimmelstiel-Wilson NODULES (pathognomonic). Microalbuminuria (30–300 mg/day) β†’ Macroalbuminuria β†’ ESRD", sNormal),
     P("Most common cause of ESRD in developed world. Annual microalbuminuria screening mandatory", sNormal),
     P("ACEi/ARB (first-line for albuminuria), SGLT-2 inhibitors (nephroprotective)", sGreen)],
    [P("NEUROPATHY\n(Microvascular)", S("neu", textColor=GREEN, fontSize=7.5, fontName="Helvetica-Bold")),
     P("Distal symmetric polyneuropathy (glove-stocking). Autonomic: gastroparesis, orthostatic hypotension, ED, neurogenic bladder", sNormal),
     P("Most common complication overall. Loss of protective sensation β†’ Diabetic foot", sNormal),
     P("Pregabalin, Duloxetine, TCAs (amitriptyline). Capsaicin cream. Good glycemic control", sGreen)],
    [P("MACROVASCULAR\n(CVD)", S("cvd", textColor=PURPLE, fontSize=7.5, fontName="Helvetica-Bold")),
     P("CAD (2–4Γ— increased risk), Stroke, Peripheral Arterial Disease, Diabetic Foot (neuropathy + PAD + infection)", sNormal),
     P("Diabetic foot: painless ulcer, absent pulses, callus. Charcot joint = neuropathic arthropathy", sNormal),
     P("Statin, Aspirin, ACEi/ARB, BP control. Empagliflozin/Liraglutide for CV risk reduction", sGreen)],
]
compt = Table(comp_data, colWidths=[CW*0.18, CW*0.28, CW*0.28, CW*0.26])
compt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#1A0C00")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141420"),HexColor("#1A1A28")]),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7),
    ("LEADING",       (0,0), (-1,-1), 9.5),
    ("LEFTPADDING",   (0,0), (-1,-1), 5),
    ("RIGHTPADDING",  (0,0), (-1,-1), 5),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, ORANGE),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#333344")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(compt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 7 – GLYCEMIC TARGETS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("GLYCEMIC & METABOLIC TARGETS", "🎯", GOLD))
story.append(SP(3))

tgt_data = [
    [P("Parameter", sGold), P("Target", sGold), P("Notes", sGold)],
    [P("HbA1c (General)", sBold),       P("< 7.0%", sGreen),         P("Reassess every 3 months")],
    [P("HbA1c (Elderly/fragile)", sBold),P("< 8.0%", sOrange),       P("Avoid tight control β†’ hypoglycemia risk")],
    [P("Fasting Plasma Glucose", sBold), P("80–130 mg/dL", sGreen),   P("β€”")],
    [P("Post-meal (2-hr) Glucose", sBold),P("< 180 mg/dL", sGreen),  P("Check 2 hrs after first bite")],
    [P("BP Target", sBold),             P("< 130/80 mmHg", sBlue),   P("ACEi/ARB preferred if albuminuria")],
    [P("LDL Cholesterol", sBold),       P("< 100 mg/dL", sYellow),   P("< 70 mg/dL if high CV risk")],
]
tgtt = Table(tgt_data, colWidths=[CW*0.32, CW*0.22, CW*0.46])
tgtt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#1A1500")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141420"),HexColor("#1A1A28")]),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, GOLD),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#333344")),
    ("TEXTCOLOR",     (0,0), (-1,-1), OFFWHITE),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
]))
story.append(tgtt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 8 – NEET PG ASKABLE POINTS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("NEET PG ASKABLE POINTS ⭐", "⭐", YELLOW))
story.append(SP(3))

ask_data = [
    [P("⭐ Question", sYellow), P("β†’  Answer", sYellow)],
    [P("1st line drug for T2DM", sNormal), P("METFORMIN", sGold)],
    [P("DOC in pregnancy", sNormal), P("INSULIN  (Metformin/Glibenclamide: acceptable in some guidelines)", sGreen)],
    [P("DOC in renal failure (CKD)", sNormal), P("LINAGLIPTIN  (no dose adjustment needed)", sCyan)],
    [P("Drug causing euglycemic DKA", sNormal), P("SGLT-2 INHIBITORS  (glucose may be normal!)", sRed)],
    [P("Pathognomonic lesion of diabetic nephropathy", sNormal), P("KIMMELSTIEL-WILSON NODULE  (nodular glomerulosclerosis)", sYellow)],
    [P("Gold standard to monitor DM control", sNormal), P("HbA1c  (reflects 3-month average glucose)", sGold)],
    [P("DCCT Trial significance", sNormal), P("Tight glycemic control reduced retinopathy progression by 76%", sBlue)],
    [P("Best drug for T2DM + Heart failure + CKD", sNormal), P("SGLT-2 INHIBITOR  (Empagliflozin/Dapagliflozin)", sGreen)],
    [P("Counterregulatory hormones in DKA", sNormal), P("Glucagon, Epinephrine, Cortisol, Growth Hormone (all ↑glucose)", sOrange)],
    [P("Insulin half-life", sNormal), P("3–10 minutes  |  Degraded by liver and kidney", sNormal)],
    [P("Acanthosis nigricans indicates", sNormal), P("INSULIN RESISTANCE  (seen in T2DM, PCOD, obesity)", sNormal)],
]
askt = Table(ask_data, colWidths=[CW*0.4, CW*0.6])
askt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#1A1500")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141420"),HexColor("#1A1A28")]),
    ("FONTNAME",      (0,0), (-1,0), "Helvetica-Bold"),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, YELLOW),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#333322")),
    ("TEXTCOLOR",     (0,0), (-1,0), YELLOW),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(askt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# PAGE 3
# ══════════════════════════════════════════════════════════════════════════════
story.append(PageBreak())
story.append(SP(8))
story.append(P("🩺  DIABETES MELLITUS  β€”  Page 3", S("p3t", textColor=GOLD, fontSize=14, leading=18, fontName="Helvetica-Bold", alignment=TA_CENTER)))
story.append(HR(GOLD, 2))
story.append(SP(4))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 9 – TRAP POINTS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("HIGH-YIELD TRAP POINTS ⚠️", "⚠️", RED))
story.append(SP(3))

traps = [
    ("HbA1c is FALSELY LOW in:", "Hemolytic anemia, Sickle cell disease, G6PD deficiency  (short RBC lifespan β†’ less glycation)", RED),
    ("HbA1c is FALSELY HIGH in:", "Iron deficiency anemia, B12/folate deficiency, splenectomy  (longer RBC lifespan β†’ more glycation)", ORANGE),
    ("Metformin causes:", "LACTIC ACIDOSIS β€” NOT hypoglycemia. Contraindicated in eGFR <30, contrast dye use, liver failure, alcoholism", RED),
    ("SGLT-2 inhibitors cause:", "EUGLYCEMIC DKA β€” glucose may be normal/near-normal! Easy to miss. Think SGLT-2 in DKA with normal glucose", RED),
    ("Glyburide is unsafe in:", "Renal failure β€” prolonged action β†’ severe hypoglycemia. Use Glipizide or Glimepiride instead", ORANGE),
    ("TZDs (Pioglitazone):", "Associated with bladder cancer (long-term use), heart failure, fractures. Avoid if any of these present", ORANGE),
    ("DKA can occur in T2DM:", "Not exclusive to T1DM! Infection, missed insulin, or stressor can precipitate DKA even in T2DM", YELLOW),
    ("Sulfonylurea + Meglitinide:", "NEVER combine β€” same mechanism (K-ATP block), additive hypoglycemia, no added benefit", RED),
]
trap_rows = [[P(f"⚠  {q}", S(f"tq{i}", textColor=c, fontSize=7.5, fontName="Helvetica-Bold")),
              P(ans, sNormal)] for i,(q,ans,c) in enumerate(traps)]
trap_rows.insert(0, [P("Trap", sGold), P("Explanation", sGold)])
trapt = Table(trap_rows, colWidths=[CW*0.32, CW*0.68])
trapt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#200000")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#180000"),HexColor("#1A0505")]),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, RED),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#330000")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(trapt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 10 – MNEMONICS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("MNEMONICS 🧠", "🧠", PURPLE))
story.append(SP(3))

mnemonics = [
    ("3 Ps of Diabetes", '"Poly-Uria  β€’  Poly-Dipsia  β€’  Poly-Phagia"  (+Weight loss in T1)'),
    ("Weight GAIN drugs", '"SIT" β†’ Sulfonylureas  +  Insulin  +  TZDs'),
    ("Weight LOSS drugs", '"MSG" β†’ Metformin  +  SGLT-2 inhibitors  +  GLP-1 agonists'),
    ("Metformin CI", '"ALE" β†’ Acute kidney injury  +  Liver failure  +  Excessive alcohol'),
    ("DKA precipitants", '"5 Is" β†’ Infection, Insulin (missed), Infarction, Ischemia, Iatrogenic (steroids)'),
    ("SGLT-2 benefits", '"CUPS" β†’ CVD protection  +  UTI risk  +  Pressure (BP) ↓  +  Sugar in urine'),
    ("TZD side effects", '"FLAP" β†’ Fluid retention  +  Liver (monitor LFTs)  +  fracturA  +  Pioglitazone = bladder Ca'),
]
mn_data = [[P(t, S("mn", textColor=PURPLE, fontSize=7.5, fontName="Helvetica-Bold")),
            P(b, sNormal)] for t,b in mnemonics]
mn_data.insert(0, [P("Mnemonic Topic", sGold), P("Remember As", sGold)])
mnt = Table(mn_data, colWidths=[CW*0.3, CW*0.7])
mnt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#100020")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#0E0018"),HexColor("#130020")]),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, PURPLE),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#220033")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(mnt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 11 – CLINICAL PEARLS
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("CLINICAL PEARLS πŸ’Ž", "πŸ’Ž", GOLD))
story.append(SP(3))

pearls = [
    "DM diagnosis requires 2 abnormal tests on separate occasions β€” unless the patient is symptomatic with random glucose β‰₯200 mg/dL.",
    "HbA1c is the gold standard for monitoring but cannot be used for diagnosis in haemolytic anaemia or sickle cell disease.",
    "Counterregulatory hormones (glucagon, epinephrine, cortisol, GH) ALL raise blood glucose β€” released in stress/hypoglycemia.",
    "Diabetic nephropathy is the most common cause of end-stage renal disease (ESRD) in developed countries.",
    "DCCT trial: tight HbA1c control (<7%) reduced retinopathy by 76%, nephropathy by 50%, neuropathy by 60%.",
    "Empagliflozin (EMPA-REG OUTCOME) and Liraglutide (LEADER trial) β€” first drugs proven to reduce cardiovascular mortality in T2DM.",
    "Charcot joint (neuropathic arthropathy) = painless, destructive joint disease in DM neuropathy. X-ray: 'bag of bones' appearance.",
]
for i, pearl in enumerate(pearls):
    p_row = Table([[P(f"πŸ’Ž  {pearl}", S(f"p{i}", textColor=OFFWHITE if i%2==0 else HexColor("#E8E8F0"),
                                       fontSize=7.5, leading=10, fontName="Helvetica"))]], colWidths=[CW])
    p_row.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), HexColor("#1A1400") if i%2==0 else HexColor("#141200")),
        ("LEFTPADDING",(0,0),(-1,-1),10),("TOPPADDING",(0,0),(-1,-1),5),
        ("BOTTOMPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),8),
        ("LINEBELOW",(0,0),(-1,-1),0.5, HexColor("#2A2200")),
        ("BOX",(0,0),(-1,-1),0.5,GOLD_SOFT) if i==0 else ("LINEAFTER",(0,0),(-1,-1),0,HexColor("#000")),
    ]))
    story.append(p_row)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 12 – ONE-LINER RAPID REVISION
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("ONE-LINER RAPID REVISION ⚑", "⚑", CYAN))
story.append(SP(3))

oneliners = [
    ("DOC T2DM", "Metformin"),
    ("DOC Pregnancy DM", "Insulin (Metformin acceptable in some guidelines)"),
    ("DOC CKD / Renal failure", "Linagliptin (no dose adjustment)"),
    ("Pathognomonic renal lesion", "Kimmelstiel-Wilson nodule"),
    ("HbA1c target", "< 7%  (reflects last 3 months blood glucose)"),
    ("Cardioprotective DM drugs", "Empagliflozin, Liraglutide, Semaglutide"),
    ("Drug causing lactic acidosis", "Metformin (in hypoxia/renal failure)"),
    ("Drug causing euglycemic DKA", "SGLT-2 inhibitors"),
    ("DCCT trial", "Tight control β†’ ↓retinopathy 76%"),
    ("Acanthosis nigricans", "= Insulin resistance marker"),
    ("Rapid-acting insulin before meal", "Give 15 minutes before eating"),
    ("Regular insulin before meal", "Give 30 minutes before eating"),
    ("Glargine peak", "NO peak β€” true flat basal insulin"),
    ("Kimmelstiel-Wilson = pathognomonic of", "Diabetic nephropathy"),
    ("EMPA-REG trial drug", "Empagliflozin β€” ↓CV mortality in T2DM"),
]
ol_data = [[P(f"⚑ {q}", S(f"olq{i}", textColor=CYAN, fontSize=7.5, fontName="Helvetica-Bold")),
            P(f"β†’  {a}", S(f"ola{i}", textColor=OFFWHITE, fontSize=7.5, fontName="Helvetica"))]
           for i,(q,a) in enumerate(oneliners)]
ol_data.insert(0, [P("Question", sGold), P("Answer", sGold)])
olt = Table(ol_data, colWidths=[CW*0.42, CW*0.58])
olt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#001520")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#001018"),HexColor("#001520")]),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, CYAN),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#001525")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
]))
story.append(olt)
story.append(SP(6))

# ══════════════════════════════════════════════════════════════════════════════
# SECTION 13 – IMAGE PYQ ALERT
# ══════════════════════════════════════════════════════════════════════════════
story.append(section_title("IMAGE-BASED PYQ ALERT πŸ“Έ", "πŸ“Έ", YELLOW))
story.append(SP(3))

pyq_data = [
    [P("Image Shown", sYellow), P("What Examiner Expects You to Identify", sYellow)],
    [P("πŸ“· Fundus photograph", sNormal),
     P("Microaneurysms (earliest), hard exudates, cotton wool spots, new vessels (neovascularization) β†’ Diagnose DIABETIC RETINOPATHY and stage it", sNormal)],
    [P("πŸ“· Renal biopsy (PAS stain)", sNormal),
     P("Nodular glomerulosclerosis = KIMMELSTIEL-WILSON NODULES β†’ Pathognomonic of DIABETIC NEPHROPATHY", sGold)],
    [P("πŸ“· ECG in DKA context", sNormal),
     P("Peaked/tall T waves, widened QRS, sine wave pattern β†’ HYPERKALEMIA complicating DKA. Always check K⁺ before giving insulin", sRed)],
    [P("πŸ“· Foot photograph", sNormal),
     P("Painless punched-out ulcer over pressure points, absent ankle/dorsalis pedis pulse, callus formation β†’ DIABETIC FOOT (neuropathic + ischemic)", sNormal)],
    [P("πŸ“· X-ray foot / ankle", sNormal),
     P("Bone destruction, fractures, joint dislocation with preserved soft tissue β†’ CHARCOT JOINT (neuropathic arthropathy) in DM neuropathy", sNormal)],
    [P("πŸ“· CT/MRI brain in DM patient", sNormal),
     P("Lacunar infarcts, multiple small vessel disease β†’ DIABETIC MACROVASCULAR disease (cerebrovascular). Look for hypertension co-morbidity", sNormal)],
]
pyqt = Table(pyq_data, colWidths=[CW*0.25, CW*0.75])
pyqt.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,0), HexColor("#1A1500")),
    ("ROWBACKGROUNDS",(0,1),(-1,-1),[HexColor("#141408"),HexColor("#1A1A10")]),
    ("FONTSIZE",      (0,0), (-1,-1), 7.5),
    ("LEADING",       (0,0), (-1,-1), 10),
    ("LEFTPADDING",   (0,0), (-1,-1), 6),
    ("RIGHTPADDING",  (0,0), (-1,-1), 6),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("BOX",           (0,0), (-1,-1), 1.5, YELLOW),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, HexColor("#333300")),
    ("TEXTCOLOR",     (0,0), (-1,0), GOLD),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))
story.append(pyqt)
story.append(SP(8))

# End note
end_note = Table([[P("🏁  End of Day 1  β€’  Diabetes Mellitus  β€’  Next: Day 2 β†’ HYPERTENSION  β€’  Keep going! πŸ’ͺ",
    S("end", textColor=GOLD, fontSize=9, leading=12, fontName="Helvetica-Bold", alignment=TA_CENTER))]], colWidths=[CW])
end_note.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1), HexColor("#1A1500")),
    ("BOX",(0,0),(-1,-1),2,GOLD),
    ("LEFTPADDING",(0,0),(-1,-1),10),("TOPPADDING",(0,0),(-1,-1),8),("BOTTOMPADDING",(0,0),(-1,-1),8),
    ("ALIGN",(0,0),(-1,-1),"CENTER"),
]))
story.append(end_note)

# ─── BUILD ───────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print("PDF created: /tmp/workspace/neet-pdf/DM_NEET_PG_Ranker.pdf")

import os
size = os.path.getsize("/tmp/workspace/neet-pdf/DM_NEET_PG_Ranker.pdf")
print(f"File size: {size/1024:.1f} KB")
Running Command

cd /tmp/workspace/neet-pdf && python3 create_dm_pdf.py 2>&1

Your premium PDF is ready! Download it here:

DM NEET PG Ranker

PDF Document Β· PDF


What's inside (3 pages, dark ranker theme):
PageSections
Page 1Clinical Vignette + Diagnosis Criteria (ADA) + Insulin Types table + Oral Hypoglycemic Agents (all 8 classes)
Page 2DKA vs HHS comparison + Chronic Complications (Retinopathy/Nephropathy/Neuropathy/CVD) + Glycemic Targets + NEET PG Askable Points Q&A
Page 3Trap Points + Mnemonics + Clinical Pearls + One-liner Rapid Revision (15 facts) + Image-Based PYQ Alert
Design features:
  • Pure black background with gold border on every page
  • Color-coded by system - red for dangers, green for advantages, cyan for key facts
  • All tables formatted for fast scanning
  • Page number + footer on each page
  • Ready to print or study on iPad πŸ’ͺ

i finsishe d only day 1 of diabetes sne dme the other days in different chats

Great work finishing Day 1! πŸ’ͺ
Here's your full 46-day plan - pick any day and start a new chat asking for that day's notes!

πŸ“… Your Remaining Days (Day 2 β†’ Day 46)

Just say in a new chat:
"Send me high yield notes for Day X - [Topic]"

πŸ—“οΈ WEEK 1 β€” Medicine & Pharmacology

DayDateTopic
βœ… 1Jul 15Diabetes Mellitus DONE!
2Jul 16Hypertension - JNC guidelines, drug classes, hypertensive emergencies
3Jul 17Heart Failure - types, pathophysiology, drug management
4Jul 18Autonomic Drugs - adrenergic, cholinergic agonists & antagonists
5Jul 19Antihypertensives, Diuretics, Antiarrhythmics
6Jul 20Antibiotics - mechanisms, resistance, drug of choice
7Jul 21REVISION - Week 1 MCQs

πŸ—“οΈ WEEK 2 β€” Surgery & Anatomy

DayDateTopic
8Jul 22Thyroid - goiter, carcinoma, investigations, surgery
9Jul 23Breast Cancer - staging, lymph nodes, treatment
10Jul 24GI Surgery - appendix, intestinal obstruction, hernia
11Jul 25Brachial Plexus - roots, trunks, cords, nerve injuries
12Jul 26Head & Neck - cranial nerves, triangles, sinuses
13Jul 27Lower Limb Nerves - perineum, clinical anatomy spots
14Jul 28REVISION - Week 2 MCQs

πŸ—“οΈ WEEK 3 β€” Pathology & Microbiology

DayDateTopic
15Jul 29Neoplasia - oncogenes, tumor markers, carcinogenesis
16Jul 30Blood Disorders - anemias, leukemias
17Jul 31Inflammation & Cell Injury - wound healing, necrosis
18Aug 1Bacteriology - gram stain, culture media, exotoxins
19Aug 2Virology - hepatitis, herpes, HIV, dengue
20Aug 3Parasitology - malaria, kala azar, filaria, tapeworms
21Aug 4REVISION - Week 3 MCQs

πŸ—“οΈ WEEK 4 β€” OBG & Pediatrics

DayDateTopic
22Aug 5Normal Labor - stages, partogram, mechanism
23Aug 6High-Risk Pregnancy - PIH, PPH, APH, placenta previa
24Aug 7Gynecology - PCOD, endometriosis, fibroid, contraception
25Aug 8Neonatal - Apgar, birth asphyxia, jaundice, NEC
26Aug 9Developmental Milestones - vaccines, growth charts
27Aug 10Pediatric Emergencies - febrile seizures, intussusception
28Aug 11REVISION - Week 4 MCQs

πŸ—“οΈ WEEK 5 β€” PSM, Biochemistry & Physiology

DayDateTopic
29Aug 12Epidemiology - study designs, bias, sensitivity/specificity
30Aug 13National Health Programs - NTEP, malaria, leprosy, RMNCH
31Aug 14Nutrition & Vital Statistics - vaccines, Bhore committee
32Aug 15Vitamins & Enzymes - deficiencies, clinical features
33Aug 16Metabolism - glycolysis, TCA, HMP shunt, fatty acids
34Aug 17Cardiac Physiology - action potential, ECG, cardiac cycle
35Aug 18REVISION - Week 5 MCQs

πŸ—“οΈ WEEK 6 β€” ENT, Ophthalmology & Dermatology

DayDateTopic
36Aug 19Ear - otitis media, CSOM, cholesteatoma, hearing tests
37Aug 20Nose & Throat - epistaxis, sinusitis, tonsillitis
38Aug 21Glaucoma & Cataract - retinal detachment, diabetic retinopathy
39Aug 22Cornea & Squint - uveitis, refraction errors
40Aug 23Leprosy & Psoriasis - pemphigus, SLE skin findings
41Aug 24Skin Infections - fungal, STIs, vitiligo, drug reactions
42Aug 25REVISION - Week 6 MCQs

🏁 FINAL STRETCH

DayDateTopic
43Aug 26Rapid Revision - Medicine + Pharmacology one-liners
44Aug 27Rapid Revision - Surgery + Pathology + Micro one-liners
45Aug 28Rapid Revision - OBG + Peds + PSM one-liners
46Aug 29EXAM EVE - Light revision, mnemonics, sleep by 10 PM πŸŒ™

πŸ’¬ How to Use in New Chats

Copy and paste this in any new chat:
"I'm preparing for NEET PG on Aug 30. Send me high-yield notes for Day 2 - Hypertension in the same format as Day 1 (clinical vignette, diagnosis, drugs, complications, trap points, mnemonics, one-liners, MCQs)"
You can also ask for a PDF or Word doc of any day's notes, just like today!
You've got 41 days left. Stay consistent - 400+ is yours! πŸ†

Create a PDF for Day 2-7 (all of Week 1)

Pulling content from medical textbooks for all 5 topics simultaneously:
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Good - I have enough reference anchors. Given the budget constraints (only 10 DB calls total), I'll now directly generate the comprehensive PDF using my medical knowledge (which is deep for these standard NEET PG topics) plus the textbook snippets already retrieved. Let me build it now:
Writing File

~/neet-pdf/week1_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, PageBreak, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.colors import HexColor

# ── PALETTE ──────────────────────────────────────────────────────────────────
BG      = HexColor("#0A0A0E")
GOLD    = HexColor("#D4AF37")
GOLD_S  = HexColor("#C9A227")
DNAV    = HexColor("#12121A")
PANEL   = HexColor("#16161F")
RED     = HexColor("#DC3545")
GREEN   = HexColor("#28A745")
BLUE    = HexColor("#4A90D9")
CYAN    = HexColor("#17A2B8")
ORANGE  = HexColor("#FD7E14")
YELLOW  = HexColor("#FFC107")
PURPLE  = HexColor("#6F42C1")
TEAL    = HexColor("#20C997")
GRAY    = HexColor("#888899")
OW      = HexColor("#DCDCE8")
R10     = HexColor("#140000"); R20 = HexColor("#1A0000")
G10     = HexColor("#001400"); G20 = HexColor("#001A00")
B10     = HexColor("#000E1A"); B20 = HexColor("#001020")
P10     = HexColor("#0E0018"); P20 = HexColor("#130020")
D10     = HexColor("#141420"); D20 = HexColor("#1A1A28")
Y10     = HexColor("#1A1400"); Y20 = HexColor("#141200")
T10     = HexColor("#001414"); T20 = HexColor("#001A1A")

W, H = A4
CW = W - 24*mm

doc = SimpleDocTemplate(
    "/tmp/workspace/neet-pdf/NEET_PG_Week1_Days2to7.pdf",
    pagesize=A4,
    leftMargin=12*mm, rightMargin=12*mm,
    topMargin=10*mm, bottomMargin=12*mm,
    title="NEET PG Week 1 – Days 2-7 Ranker Notes",
    author="NEET PG Study Plan"
)

def on_page(canvas, doc):
    canvas.saveState()
    canvas.setFillColor(BG)
    canvas.rect(0,0,W,H,fill=1,stroke=0)
    canvas.setStrokeColor(GOLD); canvas.setLineWidth(3)
    canvas.rect(5,5,W-10,H-10,fill=0,stroke=1)
    canvas.setFillColor(GOLD)
    canvas.rect(5,H-13,W-10,5,fill=1,stroke=0)
    canvas.rect(5,8,W-10,5,fill=1,stroke=0)
    canvas.setFont("Helvetica",7); canvas.setFillColor(GRAY)
    canvas.drawCentredString(W/2,4*mm,"NEET PG / INICET 2026  β€’  Week 1 Ranker Notes  β€’  Days 2–7  β€’  Medicine & Pharmacology")
    canvas.setFillColor(GOLD)
    canvas.drawRightString(W-15*mm,4*mm,f"Pg {doc.page}")
    canvas.restoreState()

def S(name,**kw):
    return ParagraphStyle(name,**kw)

sN  = S("N",  fontName="Helvetica",      fontSize=7.5,leading=10,textColor=OW)
sB  = S("B",  fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=OW)
sSm = S("Sm", fontName="Helvetica",      fontSize=7,  leading=9, textColor=GRAY)
sG  = S("G",  fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=GOLD)
sR  = S("R",  fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=RED)
sGr = S("Gr", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=GREEN)
sBl = S("Bl", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=BLUE)
sCy = S("Cy", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=CYAN)
sOr = S("Or", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=ORANGE)
sYe = S("Ye", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=YELLOW)
sPu = S("Pu", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=PURPLE)
sTe = S("Te", fontName="Helvetica-Bold", fontSize=7.5,leading=10,textColor=TEAL)

def P(t,s=None): from reportlab.platypus import Paragraph; return Paragraph(t,s or sN)
def SP(n=4):     return Spacer(1,n)
def HR(c=GOLD,t=1): return HRFlowable(width="100%",thickness=t,color=c,spaceAfter=2,spaceBefore=2)

def sec(title, icon, color, bg=None):
    bg = bg or HexColor("#12121A")
    st = S(f"sh{title[:4]}", fontName="Helvetica-Bold", fontSize=10, leading=13, textColor=color)
    t = Table([[P(f"{icon}  {title}", st)]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),bg),
        ("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8),
        ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
        ("LINEBELOW",(0,0),(-1,-1),2,color),("LINEABOVE",(0,0),(-1,-1),1,color),
    ]))
    return t

def tbl(data, widths, box=GOLD, bg1=D10, bg2=D20, hdr_bg=Y10, hdr_fg=GOLD):
    style = [
        ("BACKGROUND",(0,0),(-1,0),hdr_bg),
        ("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),
        ("TEXTCOLOR",(0,0),(-1,0),hdr_fg),
        ("ROWBACKGROUNDS",(0,1),(-1,-1),[bg1,bg2]),
        ("FONTSIZE",(0,0),(-1,-1),7),
        ("LEADING",(0,0),(-1,-1),9.5),
        ("LEFTPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),5),
        ("TOPPADDING",(0,0),(-1,-1),3),("BOTTOMPADDING",(0,0),(-1,-1),3),
        ("BOX",(0,0),(-1,-1),1.5,box),
        ("LINEBELOW",(0,0),(-1,-1),0.4,HexColor("#2A2A3A")),
        ("VALIGN",(0,0),(-1,-1),"TOP"),
    ]
    t = Table(data, colWidths=widths)
    t.setStyle(TableStyle(style))
    return t

def note(text, fg, bg):
    t = Table([[P(text, S(f"nt{text[:3]}", fontName="Helvetica-Bold", fontSize=7.5, leading=10, textColor=fg))]], colWidths=[CW])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),bg),("BOX",(0,0),(-1,-1),1,fg),
        ("LEFTPADDING",(0,0),(-1,-1),8),("TOPPADDING",(0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
    ]))
    return t

def day_header(day, date, subject, topic, color):
    st_d  = S(f"dh{day}",  fontName="Helvetica-Bold", fontSize=16, leading=20, textColor=color)
    st_s  = S(f"dhs{day}", fontName="Helvetica-Bold", fontSize=11, leading=14, textColor=GOLD)
    st_t  = S(f"dht{day}", fontName="Helvetica",      fontSize=9,  leading=12, textColor=GRAY)
    st_dt = S(f"dhd{day}", fontName="Helvetica",      fontSize=8,  leading=11, textColor=GRAY)
    data = [[P(f"DAY {day}", st_d), P(f"{subject}", st_s), P(f"{topic}", st_t), P(date, st_dt)]]
    t = Table(data, colWidths=[CW*0.12, CW*0.22, CW*0.52, CW*0.14])
    t.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1),HexColor("#0D0D18")),
        ("BOX",(0,0),(-1,-1),2.5,color),
        ("LEFTPADDING",(0,0),(-1,-1),10),("RIGHTPADDING",(0,0),(-1,-1),8),
        ("TOPPADDING",(0,0),(-1,-1),8),("BOTTOMPADDING",(0,0),(-1,-1),8),
        ("VALIGN",(0,0),(-1,-1),"MIDDLE"),
        ("LINEBEFORE",(0,0),(0,-1),6,color),
    ]))
    return t

story = []

# ══════════════════════════════════════════════════════════════════════════════
# COVER PAGE
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(30)]
cov_title = S("ct", fontName="Helvetica-Bold", fontSize=26, leading=32, textColor=GOLD, alignment=TA_CENTER)
cov_sub   = S("cs", fontName="Helvetica-Bold", fontSize=13, leading=17, textColor=OW, alignment=TA_CENTER)
cov_sm    = S("cm", fontName="Helvetica",      fontSize=9,  leading=13, textColor=GRAY, alignment=TA_CENTER)
story += [
    P("NEET PG 2026", cov_title), SP(6),
    P("WEEK 1  β€”  RANKER NOTES", S("w1", fontName="Helvetica-Bold", fontSize=20, leading=24, textColor=OW, alignment=TA_CENTER)), SP(4),
    HR(GOLD,2), SP(8),
]
cover_data = [
    [P("πŸ“… Days Covered", sG),    P("Day 2 β†’ Day 7  (July 16–21, 2026)", sN)],
    [P("πŸ“š Subjects", sG),        P("Medicine  β€’  Pharmacology", sN)],
    [P("🎯 Target", sG),          P("400+ marks  |  NEET PG August 30, 2026", sN)],
    [P("πŸ“– Day 2", sBl),          P("Hypertension – Classification, JNC guidelines, drug management, emergencies", sN)],
    [P("πŸ“– Day 3", S("d3c",fontName="Helvetica-Bold",fontSize=7.5,leading=10,textColor=CYAN)),
                                   P("Heart Failure – HFrEF vs HFpEF, staging, GDMT drugs, acute management", sN)],
    [P("πŸ“– Day 4", sOr),          P("Autonomic Pharmacology – Adrenergic & Cholinergic receptors, agonists, antagonists", sN)],
    [P("πŸ“– Day 5", sPu),          P("Antihypertensives, Diuretics, Antiarrhythmics – mechanisms, clinical use", sN)],
    [P("πŸ“– Day 6", sYe),          P("Antibiotics – classes, mechanisms, resistance, drug of choice for infections", sN)],
    [P("πŸ“– Day 7", sGr),          P("REVISION DAY – Week 1 high-yield MCQ review & rapid recall", sN)],
]
ct = Table(cover_data, colWidths=[CW*0.22, CW*0.78])
ct.setStyle(TableStyle([
    ("ROWBACKGROUNDS",(0,0),(-1,-1),[HexColor("#0D0D18"),HexColor("#121220")]),
    ("BOX",(0,0),(-1,-1),2,GOLD),("LINEBELOW",(0,0),(-1,-1),0.5,HexColor("#222233")),
    ("LEFTPADDING",(0,0),(-1,-1),10),("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6),
    ("RIGHTPADDING",(0,0),(-1,-1),8),("VALIGN",(0,0),(-1,-1),"MIDDLE"),
]))
story += [ct, SP(12), HR(GOLD,2), SP(6)]
story += [P("Study tip: Read each day's notes β†’ solve 20 PYQ MCQs β†’ review trap points before sleeping πŸŒ™",
    S("tip", fontName="Helvetica-Bold", fontSize=9, leading=12, textColor=GREEN, alignment=TA_CENTER)), SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 2 – HYPERTENSION
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(2,"Jul 16","MEDICINE","Hypertension – Classification, Diagnosis, Management & Emergencies", BLUE), SP(5)]

story.append(sec("CLASSIFICATION (JNC 8 / ACC/AHA 2017)", "πŸ“Š", BLUE))
story.append(SP(3))
ht_cls = tbl([
    [P("Category",sG), P("Systolic (mmHg)",sG), P("Diastolic (mmHg)",sG), P("Action",sG)],
    [P("Normal",sGr), P("< 120",sGr), P("< 80",sGr), P("Reassure, lifestyle",sN)],
    [P("Elevated (Pre-HTN)",sOr), P("120–129",sOr), P("< 80",sN), P("Lifestyle modification",sN)],
    [P("Stage 1 HTN",sYe), P("130–139",sYe), P("80–89",sYe), P("Lifestyle Β± 1 drug",sN)],
    [P("Stage 2 HTN",sR), P("β‰₯ 140",sR), P("β‰₯ 90",sR), P("2 drugs combination",sN)],
    [P("Hypertensive Crisis",sR), P("β‰₯ 180",sR), P("β‰₯ 120",sR), P("Emergency or Urgency",sR)],
],
[CW*0.26,CW*0.22,CW*0.22,CW*0.30], box=BLUE, bg1=B10, bg2=B20, hdr_bg=HexColor("#001020"))
story += [ht_cls, SP(3),
note("⚑ JNC 7: Stage 1 = 140–159/90–99 | Stage 2 = β‰₯160/100  |  ACC/AHA 2017 lowered threshold to 130/80  |  Know BOTH for NEET PG!", BLUE, B10),
SP(5)]

story.append(sec("HYPERTENSIVE EMERGENCY vs URGENCY", "🚨", RED))
story.append(SP(3))
emg = tbl([
    [P("Feature",sG), P("Emergency",sG), P("Urgency",sG)],
    [P("BP",sB), P("β‰₯ 180/120 mmHg + end-organ damage",sR), P("β‰₯ 180/120 mmHg, NO organ damage",sOr)],
    [P("End-organ damage",sB), P("YES – Brain, Heart, Kidney, Eyes",sR), P("NO",sGr)],
    [P("Symptoms",sB), P("Chest pain, SOB, confusion, papilledema, oliguria",sN), P("Severe headache, usually asymptomatic",sN)],
    [P("Treatment",sB), P("IV drugs: Nitroprusside, Labetalol, Nicardipine, Hydralazine",sGr), P("Oral drugs: Captopril, Labetalol, Clonidine",sGr)],
    [P("BP reduction goal",sB), P("↓ by 25% in 1st hour, then to 160/100 over 2–6 hrs",sN), P("Gradually over 24–48 hours",sN)],
],
[CW*0.22,CW*0.39,CW*0.39], box=RED, bg1=R10, bg2=R20, hdr_bg=HexColor("#1A0000"))
story += [emg, SP(3),
note("⭐ Nitroprusside = most potent IV vasodilator (risk: cyanide toxicity with prolonged use) | Labetalol IV = preferred in aortic dissection, eclampsia", RED, R10),
SP(5)]

story.append(sec("ANTIHYPERTENSIVE DRUGS – FIRST-LINE CHOICES", "πŸ’Š", GREEN))
story.append(SP(3))
htdrug = tbl([
    [P("Class",sG), P("Examples",sG), P("MOA",sG), P("Special Indications",sG), P("Contraindications ⚠",sG)],
    [P("ACE Inhibitors",sBl), P("Enalapril, Lisinopril, Ramipril",sN),
     P("Block ACE β†’ ↓AngII β†’ ↓vasoconstriction, ↓aldosterone",sN),
     P("DM nephropathy, HF, post-MI, CKD with proteinuria",sGr),
     P("Pregnancy (teratogenic), bilateral RAS, hyperkalemia, angioedema",sR)],
    [P("ARBs",sBl), P("Losartan, Valsartan, Telmisartan",sN),
     P("Block AT1 receptor β†’ same as ACEi without bradykinin",sN),
     P("ACEi intolerance (no cough), DM nephropathy, HF",sGr),
     P("Pregnancy, bilateral RAS. Never combine ACEi + ARB",sR)],
    [P("CCBs (DHP)",sOr), P("Amlodipine, Nifedipine, Felodipine",sN),
     P("Block L-type Ca²⁺ channels β†’ vasodilation",sN),
     P("Elderly, isolated systolic HTN, angina, Raynaud's",sGr),
     P("Heart failure (short-acting nifedipine). Amlodipine safe in HF",sR)],
    [P("CCBs (Non-DHP)",sPu), P("Diltiazem, Verapamil",sN),
     P("Block Ca²⁺ in heart + vessels β†’ ↓HR, ↓contractility",sN),
     P("SVT, AF with rapid rate control, angina",sGr),
     P("Heart block, HF with systolic dysfunction, WPW",sR)],
    [P("Thiazide Diuretics",sCy), P("Hydrochlorothiazide, Chlorthalidone, Indapamide",sN),
     P("Block Na-Cl cotransporter in DCT β†’ natriuresis",sN),
     P("Elderly, isolated systolic HTN, osteoporosis (Chlorthalidone)",sGr),
     P("Gout (↑uric acid), hypokalemia, hyponatremia",sR)],
    [P("Ξ²-Blockers",sYe), P("Metoprolol, Atenolol, Carvedilol, Bisoprolol",sN),
     P("Block Ξ²1 (heart) β†’ ↓HR, ↓CO. Carvedilol = Ξ±+Ξ² block",sN),
     P("Post-MI, HF (carvedilol/bisoprolol), SVT, anxiety-related HTN",sGr),
     P("Asthma/COPD, heart block, peripheral vascular disease",sR)],
    [P("Ξ±1-Blockers",sTe), P("Prazosin, Doxazosin, Terazosin",sN),
     P("Block Ξ±1 β†’ ↓peripheral resistance β†’ vasodilation",sN),
     P("HTN + BPH (dual benefit), pheochromocytoma (Phenoxybenzamine)",sGr),
     P("First-dose hypotension (syncope), reflex tachycardia",sR)],
],
[CW*0.14,CW*0.21,CW*0.22,CW*0.22,CW*0.21], box=GREEN, bg1=G10, bg2=G20, hdr_bg=HexColor("#001500"))
story += [htdrug, SP(5)]

story.append(sec("DRUG OF CHOICE – SPECIAL SITUATIONS", "⭐", YELLOW))
story.append(SP(3))
htdoc = tbl([
    [P("Condition",sG), P("Drug of Choice",sG), P("Avoid",sG)],
    [P("DM + HTN",sN), P("ACEi or ARB (nephroprotective)",sGr), P("Thiazides (worsen glucose), Ξ²-blockers (mask hypoglycemia)",sR)],
    [P("HTN in Pregnancy",sN), P("Methyldopa (safest), Labetalol, Nifedipine",sGr), P("ACEi, ARBs (teratogenic), Thiazides",sR)],
    [P("HTN + HF",sN), P("ACEi + Ξ²-blocker + Spironolactone + Loop diuretic",sGr), P("Verapamil, Diltiazem, Hydralazine alone",sR)],
    [P("HTN + Angina",sN), P("Ξ²-blocker or CCB (Amlodipine)",sGr), P("Hydralazine (reflex tachycardia)",sR)],
    [P("HTN + Gout",sN), P("Losartan (uricosuric effect)",sGr), P("Thiazides, Ξ²-blockers (↑uric acid)",sR)],
    [P("HTN + Asthma/COPD",sN), P("Amlodipine (CCB) or ACEi/ARB",sGr), P("Ξ²-blockers (bronchoconstriction)",sR)],
    [P("Hypertensive Emergency",sN), P("IV Nitroprusside, IV Labetalol, IV Nicardipine",sGr), P("Sublingual nifedipine (abrupt BP drop β†’ stroke)",sR)],
    [P("Pheochromocytoma",sN), P("Phenoxybenzamine (Ξ±-block FIRST), then Ξ²-block",sGr), P("Ξ²-blocker ALONE (paradoxical HTN crisis!)",sR)],
    [P("Isolated systolic HTN (elderly)",sN), P("Thiazide or long-acting DHP CCB (Amlodipine)",sGr), P("β€”",sN)],
],
[CW*0.3,CW*0.4,CW*0.3], box=YELLOW, bg1=Y10, bg2=Y20, hdr_bg=HexColor("#1A1400"))
story += [htdoc, SP(3),
note("⭐ TRAP: In pheochromocytoma – give Ξ±-blocker FIRST, Ξ²-blocker second. Ξ² alone = hypertensive crisis (unopposed Ξ±). | Sublingual nifedipine = BANNED for HTN emergency", RED, R10),
SP(3)]

story.append(sec("MNEMONICS & ONE-LINERS", "🧠", PURPLE))
story.append(SP(3))
mnemo_ht = tbl([
    [P("Topic",sG), P("Mnemonic / Fact",sG)],
    [P("1st line HTN (ACC/AHA 2017)",sB), P("'ACBT' β†’ ACEi/ARB, CCB, Ξ²-blocker, Thiazide – all acceptable 1st line",sN)],
    [P("ACEi side effects",sBl), P("'ACE' β†’ Angioedema, Cough (dry), Elevated K⁺ (hyperkalemia)",sN)],
    [P("Resistant HTN",sOr), P("BP uncontrolled on 3 drugs (including diuretic). Add Spironolactone as 4th",sN)],
    [P("Malignant HTN",sR), P("Severe HTN + papilledema Β± renal failure. Fundus = flame hemorrhages, cotton wool spots",sN)],
    [P("White coat HTN",sCy), P("High BP in clinic, normal at home. Confirm with 24-hr ABPM (ambulatory BP monitoring)",sN)],
    [P("Secondary HTN causes",sYe), P("'CRAP' β†’ Coarctation, Renal artery stenosis, Aldosteronism (Conn's), Pheochromocytoma",sN)],
],
[CW*0.28,CW*0.72], box=PURPLE, bg1=P10, bg2=P20, hdr_bg=HexColor("#100020"))
story += [mnemo_ht, SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 3 – HEART FAILURE
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(3,"Jul 17","MEDICINE","Heart Failure – HFrEF vs HFpEF, Staging, Drugs, Acute Management", CYAN), SP(5)]

story.append(sec("CLASSIFICATION OF HEART FAILURE", "❀️", CYAN))
story.append(SP(3))
hf_cls = tbl([
    [P("Type",sG), P("LVEF",sG), P("Pathology",sG), P("Common Causes",sG)],
    [P("HFrEF (Systolic HF)",sR), P("< 40%",sR), P("↓Contractility, dilated ventricle (eccentric hypertrophy)",sN),
     P("IHD (most common), DCM, myocarditis, alcohol",sN)],
    [P("HFmrEF (Mid-range)",sOr), P("40–49%",sOr), P("Intermediate phenotype",sN), P("Recovering HFrEF, ischemic",sN)],
    [P("HFpEF (Diastolic HF)",sBl), P("β‰₯ 50%",sBl), P("↓Compliance, stiff ventricle (concentric hypertrophy)",sN),
     P("HTN (most common), DM, obesity, aging",sN)],
],
[CW*0.22,CW*0.10,CW*0.35,CW*0.33], box=CYAN, bg1=T10, bg2=T20, hdr_bg=HexColor("#001414"))
story += [hf_cls, SP(3),
note("⭐ Most common cause of HFrEF = Ischemic Heart Disease | HFpEF = Hypertension | NEET PG loves LVEF cutoffs!", CYAN, T10),
SP(5)]

story.append(sec("NYHA FUNCTIONAL CLASSIFICATION", "πŸ“Š", GOLD))
story.append(SP(3))
nyha = tbl([
    [P("Class",sG), P("Symptoms",sG), P("Activity Level",sG)],
    [P("Class I",sGr), P("No symptoms, no limitation",sN), P("Normal physical activity – NO symptoms",sN)],
    [P("Class II",sYe), P("Slight limitation",sN), P("Comfortable at rest; symptoms with MODERATE exertion",sN)],
    [P("Class III",sOr), P("Marked limitation",sN), P("Comfortable at rest; symptoms with MINIMAL exertion",sN)],
    [P("Class IV",sR), P("Symptoms at rest",sR), P("Unable to carry out ANY activity without discomfort",sR)],
],
[CW*0.12,CW*0.35,CW*0.53], box=GOLD, bg1=D10, bg2=D20, hdr_bg=Y10)
story += [nyha, SP(5)]

story.append(sec("ACC/AHA STAGING (Aβ†’D)", "πŸ”„", ORANGE))
story.append(SP(3))
acc_stg = tbl([
    [P("Stage",sG), P("Description",sG), P("Treatment",sG)],
    [P("Stage A",sGr), P("At RISK – HTN, DM, CAD, family H/o CM. No structural disease",sN), P("Risk factor modification (control HTN, DM, lipids)",sN)],
    [P("Stage B",sYe), P("Structural disease, NO symptoms (e.g., asymptomatic LV dysfunction)",sN), P("ACEi + Ξ²-blocker",sN)],
    [P("Stage C",sOr), P("Structural disease + CURRENT or PRIOR symptoms",sN), P("GDMT: ACEi/ARB/ARNI + Ξ²-blocker + MRA + SGLT2i",sN)],
    [P("Stage D",sR), P("Refractory HF despite optimal therapy (end-stage)",sR), P("Advanced Rx: LVAD, transplant, palliative care",sN)],
],
[CW*0.12,CW*0.45,CW*0.43], box=ORANGE, bg1=HexColor("#140800"), bg2=HexColor("#1A0F00"), hdr_bg=HexColor("#1A0C00"))
story += [acc_stg, SP(5)]

story.append(sec("GDMT – DRUGS PROVEN TO REDUCE MORTALITY IN HFrEF ⭐", "πŸ’Š", GREEN))
story.append(SP(3))
gdmt = tbl([
    [P("Drug Class",sG), P("Examples",sG), P("Benefit",sG), P("Key Points / Contraindications",sG)],
    [P("ACE Inhibitors",sBl), P("Enalapril, Lisinopril, Ramipril",sN),
     P("↓Mortality ~23%. 1st line. Reduce preload + afterload",sGr),
     P("Start low, titrate up. Avoid if K>5.5 or Cr>3. Cause dry cough",sN)],
    [P("ARBs",sBl), P("Losartan, Valsartan, Candesartan",sN),
     P("Same benefit as ACEi; use if ACEi-intolerant (cough/angioedema)",sGr),
     P("Never combine ACEi + ARB (dual RAAS blockade = harm)",sR)],
    [P("ARNI",sGr), P("Sacubitril/Valsartan (ENTRESTO)",sN),
     P("↓Mortality vs ACEi alone (PARADIGM-HF trial). Superior to ACEi!",sGr),
     P("Replace ACEi (washout 36h before switching). Preferred in Stage C",sN)],
    [P("Ξ²-Blockers",sYe), P("Carvedilol, Bisoprolol, Metoprolol succinate",sN),
     P("↓Mortality ~34%. Start when STABLE, low dose, titrate slowly",sGr),
     P("Only 3 Ξ²-blockers proven in HF: Carvedilol, Bisoprolol, Metoprolol XL. NOT atenolol",sR)],
    [P("MRA (Aldosterone Antagonist)",sOr), P("Spironolactone, Eplerenone",sN),
     P("↓Mortality in NYHA III/IV (RALES trial – Spironolactone)",sGr),
     P("Risk: hyperkalemia (avoid if K>5 or eGFR<30)",sR)],
    [P("SGLT-2 Inhibitors",sCy), P("Dapagliflozin, Empagliflozin",sN),
     P("↓HF hospitalization in both HFrEF AND HFpEF (DAPA-HF, EMPEROR trials)",sGr),
     P("Newest addition to GDMT. Given regardless of DM status",sN)],
    [P("Loop Diuretics",sPu), P("Furosemide, Torsemide, Bumetanide",sN),
     P("Symptom relief (dyspnea, edema). Do NOT reduce mortality",sN),
     P("Monitor K⁺, Cr. Furosemide IV in acute decompensation",sN)],
    [P("Ivabradine",sTe), P("Corlanor",sN),
     P("↓HR without affecting contractility. Add if HR >70 on max Ξ²-blocker + sinus rhythm",sGr),
     P("Only for HFrEF in sinus rhythm with HR β‰₯70 on max Ξ²-blocker",sN)],
    [P("Hydralazine + Nitrate",sR), P("Hydralazine + ISDN",sN),
     P("Alternative if ACEi/ARB not tolerated; especially African-Americans (A-HeFT trial)",sGr),
     P("Vasodilator combination. Used in renal failure when ACEi/ARB contraindicated",sN)],
],
[CW*0.17,CW*0.20,CW*0.31,CW*0.32], box=GREEN, bg1=G10, bg2=G20, hdr_bg=HexColor("#001500"))
story += [gdmt, SP(3),
note("⭐ PILLAR of HFrEF: ACEi/ARNI + Ξ²-blocker (Carvedilol/Bisoprolol) + MRA + SGLT2i = 'Fantastic Four' | PARADIGM-HF: ARNI > ACEi | RALES: Spironolactone ↓mortality 30%", GREEN, G10),
SP(5)]

story.append(sec("ACUTE DECOMPENSATED HF – MANAGEMENT", "🚨", RED))
story.append(SP(3))
adhf = tbl([
    [P("Step",sG), P("Action",sG), P("Drugs/Details",sG)],
    [P("1. Position",sN), P("Sit up (high Fowler's), oxygen",sN), P("SpO2 target β‰₯95%",sN)],
    [P("2. Diuresis",sN), P("IV Furosemide STAT",sN), P("40–80 mg IV; double oral dose if on chronic diuretic",sN)],
    [P("3. Vasodilators",sN), P("IV Nitroglycerine or Nitroprusside",sN), P("Reduce preload/afterload. Avoid if SBP <90",sN)],
    [P("4. Inotropes",sN), P("If cardiogenic shock: Dobutamine (1st line)",sN), P("↑contractility. Dopamine: low dose renal protection (controversial)",sN)],
    [P("5. Monitoring",sN), P("Fluid balance, daily weight, electrolytes",sN), P("Target negative fluid balance 0.5–1 L/day",sN)],
],
[CW*0.14,CW*0.38,CW*0.48], box=RED, bg1=R10, bg2=R20, hdr_bg=HexColor("#1A0000"))
story += [adhf, SP(3)]

story.append(sec("HIGH-YIELD ONE-LINERS & TRAPS", "⚑", YELLOW))
story.append(SP(3))
hf_ol = tbl([
    [P("⭐ Fact",sG), P("Answer",sG)],
    [P("Best initial investigation for HF",sN), P("Echo (2D echo with Doppler) – measures LVEF",sGr)],
    [P("BNP/NT-proBNP use",sN), P("Diagnosis + monitoring. High BNP = worse prognosis",sN)],
    [P("Only Ξ²-blockers proven in HF",sN), P("Carvedilol, Bisoprolol, Metoprolol succinate (NOT atenolol, propranolol)",sR)],
    [P("Contraindicated drug in HFrEF",sN), P("Verapamil, Diltiazem (non-DHP CCB), short-acting nifedipine",sR)],
    [P("Drug of choice: HF + AF",sN), P("Digoxin (controls rate AND improves symptoms – DIG trial)",sN)],
    [P("PARADIGM-HF trial",sN), P("Sacubitril/Valsartan > Enalapril in reducing HF mortality",sGr)],
    [P("Pulsus alternans",sN), P("Alternating strong/weak pulse – sign of severe LV dysfunction",sR)],
    [P("S3 gallop significance",sN), P("Pathological in adults = dilated, failing ventricle (volume overload)",sR)],
],
[CW*0.4,CW*0.6], box=YELLOW, bg1=Y10, bg2=Y20, hdr_bg=HexColor("#1A1400"))
story += [hf_ol, SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 4 – AUTONOMIC PHARMACOLOGY
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(4,"Jul 18","PHARMACOLOGY","Autonomic Drugs – Adrenergic & Cholinergic Receptors, Agonists & Antagonists", ORANGE), SP(5)]

story.append(sec("AUTONOMIC RECEPTOR SUMMARY", "πŸ”Œ", ORANGE))
story.append(SP(3))
auto_rec = tbl([
    [P("Receptor",sG), P("Location",sG), P("Effect of Stimulation",sG), P("Clinical Relevance",sG)],
    [P("Ξ±1",sOr), P("Vascular smooth muscle, prostate, eye (dilator)",sN), P("Vasoconstriction, mydriasis, ↑urethral tone",sN), P("Prazosin (BPH + HTN); Phenylephrine (nasal decongestant)",sN)],
    [P("Ξ±2",sOr), P("Presynaptic terminals, pancreas (Ξ²-cells)",sN), P("↓NE release (presynaptic), ↓insulin",sN), P("Clonidine (central Ξ±2 agonist β†’ ↓BP); Methyldopa (pregnancy HTN)",sN)],
    [P("Ξ²1",sYe), P("Heart, kidney (JGA)",sN), P("↑HR, ↑contractility, ↑renin release",sN), P("Dobutamine (selective Ξ²1 agonist); Ξ²-blockers for HTN/HF",sN)],
    [P("Ξ²2",sYe), P("Bronchi, uterus, vascular SM, liver",sN), P("Bronchodilation, ↓uterine contractions, vasodilation, glycogenolysis",sN), P("Salbutamol (asthma), Ritodrine (tocolysis), Terbutaline",sN)],
    [P("Ξ²3",sGr), P("Adipose tissue, detrusor (bladder)",sN), P("Lipolysis, bladder relaxation",sN), P("Mirabegron (Ξ²3 agonist for overactive bladder)",sN)],
    [P("M1",sCy), P("CNS, gastric parietal cells",sN), P("Cognitive functions, ↑gastric acid",sN), P("Pirenzepine (peptic ulcer – selective M1 blocker)",sN)],
    [P("M2",sCy), P("Heart (SA/AV nodes)",sN), P("↓HR, ↓conduction",sN), P("Atropine blocks M2 β†’ ↑HR (used in bradycardia)",sN)],
    [P("M3",sCy), P("Gland cells, smooth muscle, endothelium",sN), P("↑Secretions, smooth muscle contraction, vasodilation (via NO)",sN), P("Tiotropium (M3 block in COPD); Bethanechol (M3 agonist – urinary retention)",sN)],
    [P("Nicotinic (Nm)",sPu), P("NMJ (skeletal muscle)",sN), P("Muscle contraction",sN), P("Succinylcholine, non-depolarizing NMBs block this",sN)],
    [P("Nicotinic (Nn)",sPu), P("Autonomic ganglia, adrenal medulla",sN), P("Ganglionic transmission, catecholamine release",sN), P("Hexamethonium (ganglion blocker – historical HTN Rx)",sN)],
],
[CW*0.09,CW*0.25,CW*0.28,CW*0.38], box=ORANGE, bg1=HexColor("#140800"), bg2=HexColor("#1A0F00"), hdr_bg=HexColor("#1A0C00"))
story += [auto_rec, SP(5)]

story.append(sec("ADRENERGIC AGONISTS", "β–²", YELLOW))
story.append(SP(3))
adren_ag = tbl([
    [P("Drug",sG), P("Receptor Selectivity",sG), P("Clinical Use",sG), P("Key Points",sG)],
    [P("Epinephrine (Adrenaline)",sYe), P("Ξ±1, Ξ±2, Ξ²1, Ξ²2 (all)",sN), P("Anaphylaxis (1st line), cardiac arrest, local anesthetic adjuvant",sGr), P("IM epinephrine 0.5 mg for anaphylaxis. Low dose = Ξ² (vasodilation); High dose = Ξ± (vasoconstriction)",sN)],
    [P("Norepinephrine",sOr), P("Ξ±1, Ξ±2, Ξ²1 (no Ξ²2)",sN), P("Septic shock (vasopressor of choice), cardiogenic shock",sGr), P("↑BP by ↑SVR. Risk: reflex bradycardia",sN)],
    [P("Dopamine",sCy), P("D1 (low), Ξ²1 (med), Ξ±1 (high dose)",sN), P("Cardiogenic shock, HF, oliguria. Dose-dependent",sGr), P("1–3 ΞΌg/kg/min = renal vasodilation | 3–10 = Ξ²1 (↑CO) | >10 = Ξ±1 (vasoconstriction)",sN)],
    [P("Dobutamine",sBl), P("Ξ²1 > Ξ²2 (selective)",sN), P("Acute HF / cardiogenic shock, stress echocardiography",sGr), P("↑contractility, ↑CO without much ↑HR. Dobutamine stress echo = dx CAD",sN)],
    [P("Phenylephrine",sR), P("Ξ±1 (selective)",sN), P("Nasal decongestant, hypotension in spinal anesthesia, SVT",sN), P("Pure vasoconstrictor β†’ reflex bradycardia. No cardiac effect",sN)],
    [P("Salbutamol/Albuterol",sGr), P("β2 (selective)",sN), P("Asthma (SABA), hyperkalemia (shifts K⁺ into cells), tocolysis",sGr), P("SABA = short-acting β2 agonist. Given by inhaler. Tachycardia at high doses",sN)],
    [P("Isoproterenol",sPu), P("Ξ²1, Ξ²2 (non-selective)",sN), P("AV block (historical), bronchospasm. Rarely used",sN), P("↑HR + bronchodilation. Replaced by selective agents",sN)],
],
[CW*0.17,CW*0.22,CW*0.30,CW*0.31], box=YELLOW, bg1=Y10, bg2=Y20, hdr_bg=HexColor("#1A1400"))
story += [adren_ag, SP(5)]

story.append(sec("CHOLINERGIC AGONISTS & ANTAGONISTS", "πŸ”΅", CYAN))
story.append(SP(3))
chol = tbl([
    [P("Drug",sG), P("Type",sG), P("Use",sG), P("Key Points / Side Effects",sG)],
    [P("Acetylcholine",sCy), P("Direct agonist (all M+N)",sN), P("Research only (very short acting)",sN), P("Broken down by AChE immediately",sN)],
    [P("Bethanechol",sCy), P("Direct M (M3) selective",sN), P("Urinary retention, post-op ileus, GERD",sGr), P("NOT broken down by AChE. No nicotinic action",sN)],
    [P("Pilocarpine",sCy), P("Direct M agonist",sN), P("Glaucoma (miosis β†’ open drainage angle), SjΓΆgren's syndrome (dry mouth)",sGr), P("Given as eye drops. Also used in Horner's test",sN)],
    [P("Carbachol",sCy), P("Direct M+N agonist",sN), P("Glaucoma, intraocular HTN",sN), P("Resistant to AChE. Both muscarinic + nicotinic activity",sN)],
    [P("Neostigmine",sGr), P("Indirect (anti-AChE) – reversible",sN), P("Myasthenia gravis (diagnosis + Rx), reversal of NMB, post-op ileus",sGr), P("Does NOT cross BBB. Also used in Tensilon test",sN)],
    [P("Physostigmine",sGr), P("Indirect (anti-AChE) – reversible",sN), P("Atropine overdose antidote, glaucoma",sGr), P("Crosses BBB (treats central anticholinergic syndrome)",sN)],
    [P("Organophosphates",sR), P("Irreversible anti-AChE",sN), P("Insecticides (toxic). Nerve agents: Sarin, VX",sR), P("SLUDGE toxidrome. Antidote: Atropine + Pralidoxime (2-PAM) within 24h",sR)],
    [P("Atropine",sOr), P("Anticholinergic (M blocker)",sN), P("Bradycardia, organophosphate poisoning, pre-op (dry secretions), motion sickness",sGr), P("Blocks M2 β†’ ↑HR. 'Hot as hare, dry as bone, red as beet, blind as bat, mad as hatter'",sN)],
    [P("Scopolamine",sOr), P("Anticholinergic (M blocker)",sN), P("Motion sickness (transdermal patch), pre-op sedation",sGr), P("More CNS sedation than atropine. Applied behind ear",sN)],
    [P("Ipratropium",sOr), P("Inhaled M blocker",sN), P("COPD (1st line bronchodilator), asthma (adjunct)",sGr), P("Does NOT cross BBB. Minimal systemic effects",sN)],
    [P("Glycopyrrolate",sOr), P("M blocker (quaternary)",sN), P("Pre-op (↓secretions), peptic ulcer, hyperhidrosis",sN), P("Does NOT cross BBB. Longer duration than atropine",sN)],
],
[CW*0.17,CW*0.20,CW*0.28,CW*0.35], box=CYAN, bg1=T10, bg2=T20, hdr_bg=HexColor("#001414"))
story += [chol, SP(3),
note("⭐ SLUDGE = Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis (organophosphate toxidrome) | Antidote: Atropine (large doses) + Pralidoxime (reactivates AChE if given within 24 hrs)", RED, R10),
SP(3)]

story.append(sec("ADRENERGIC ANTAGONISTS (BLOCKERS)", "β–Ό", PURPLE))
story.append(SP(3))
adren_blk = tbl([
    [P("Drug",sG), P("Selectivity",sG), P("Clinical Use",sG), P("Important Side Effects",sG)],
    [P("Propranolol",sPu), P("Non-selective Ξ² (Ξ²1+Ξ²2)",sN), P("HTN, angina, arrhythmias, thyrotoxicosis, migraine prophylaxis, tremor",sN), P("Bronchoconstriction (Ξ²2 block), hypoglycemia masking, ↑TG",sR)],
    [P("Metoprolol / Atenolol",sBl), P("Selective Ξ²1",sN), P("HTN, angina, HF, post-MI, AF rate control",sGr), P("Less bronchospasm than propranolol. Atenolol: renal excretion",sN)],
    [P("Carvedilol",sGr), P("Non-selective Ξ² + Ξ±1",sN), P("HF (mortality benefit!), HTN, post-MI",sGr), P("Vasodilation (Ξ±1 block) + ↓HR/contractility. Best in HF",sN)],
    [P("Labetalol",sTe), P("Ξ±1 + Ξ² (4:1 ratio)",sN), P("HTN emergency (IV), HTN in pregnancy",sGr), P("IV in emergencies. Safe in pregnancy",sN)],
    [P("Esmolol",sYe), P("Ultra-short Ξ²1 selective",sN), P("Intraoperative HTN, SVT, aortic dissection (↓HR rapidly)",sGr), P("Half-life ~9 min. Metabolized by RBC esterases",sN)],
    [P("Prazosin / Doxazosin",sOr), P("Selective Ξ±1",sN), P("HTN + BPH, Raynaud's, pheochromocytoma (short-acting)",sGr), P("First-dose syncope (postural hypotension). Take at bedtime",sR)],
    [P("Phenoxybenzamine",sR), P("Non-selective Ξ± (irreversible)",sN), P("Pheochromocytoma pre-op (FIRST drug given)",sGr), P("Irreversible. Given days before surgery to prevent HTN crisis",sN)],
    [P("Phentolamine",sR), P("Non-selective Ξ± (reversible)",sN), P("Pheochromocytoma crisis, norepinephrine extravasation",sGr), P("Short-acting. Reversal agent for Ξ±1 vasoconstriction",sN)],
],
[CW*0.18,CW*0.20,CW*0.30,CW*0.32], box=PURPLE, bg1=P10, bg2=P20, hdr_bg=HexColor("#100020"))
story += [adren_blk, SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 5 – ANTIHYPERTENSIVES, DIURETICS, ANTIARRHYTHMICS
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(5,"Jul 19","PHARMACOLOGY","Antihypertensives, Diuretics & Antiarrhythmics – Mechanisms & Clinical Use", PURPLE), SP(5)]

story.append(sec("DIURETICS – COMPLETE HIGH-YIELD TABLE", "πŸ’§", BLUE))
story.append(SP(3))
diur = tbl([
    [P("Class",sG), P("Site of Action",sG), P("Mechanism",sG), P("Uses",sG), P("Side Effects",sG)],
    [P("Loop Diuretics",sR), P("Thick ascending loop of Henle",sN), P("Block Na-K-2Cl cotransporter (NKCC2)",sN),
     P("Acute pulmonary edema, HF, hypercalcemia, acute kidney injury",sGr),
     P("Hypokalemia, hyponatremia, hypocalcemia, ototoxicity (esp. ethacrynic acid), hyperuricemia",sR)],
    [P("Thiazides",sCy), P("Distal convoluted tubule (DCT)",sN), P("Block NaCl cotransporter (NCC)",sN),
     P("HTN (1st line), nephrogenic DI, osteoporosis, hypercalciuria",sGr),
     P("Hypokalemia, hyponatremia, hyperuricemia (gout), hyperglycemia, hypercalcemia",sR)],
    [P("K-sparing (MRA)",sOr), P("Cortical collecting duct",sN), P("Block aldosterone receptor β†’ ↓Na retention, ↑K retention",sN),
     P("HF (Spironolactone↓mortality), hyperaldosteronism, ascites, hirsutism",sGr),
     P("Hyperkalemia! Spironolactone: gynecomastia (anti-androgen effect); Eplerenone: more selective",sR)],
    [P("K-sparing (direct)",sYe), P("Collecting duct",sN), P("Block ENaC (epithelial Na channel) β†’ ↓Na reabsorption",sN),
     P("Combination diuretic (with thiazide/loop). Amiloride: Li toxicity prevention",sGr),
     P("Hyperkalemia. Triamterene: renal stones, folate deficiency",sR)],
    [P("CAI (Acetazolamide)",sGr), P("Proximal tubule",sN), P("Block carbonic anhydrase β†’ ↓HCO3 reabsorption β†’ metabolic acidosis",sN),
     P("Glaucoma, altitude sickness, metabolic alkalosis, idiopathic intracranial HTN",sGr),
     P("Metabolic acidosis, hypokalemia, sulfa allergy",sR)],
    [P("Osmotic (Mannitol)",sBl), P("Proximal tubule + loop",sN), P("↑tubular osmolality β†’ ↓water reabsorption",sN),
     P("↑ICP (cerebral edema), glaucoma (acute), forced diuresis in poisoning",sGr),
     P("Initial pulmonary edema (volume expansion before diuresis), hyponatremia",sR)],
],
[CW*0.14,CW*0.17,CW*0.22,CW*0.23,CW*0.24], box=BLUE, bg1=B10, bg2=B20, hdr_bg=HexColor("#001020"))
story += [diur, SP(3),
note("⭐ Only diuretic that ↑Ca excretion = Loop diuretics | Thiazides ↑Ca (useful in hypercalciuria/stones) | Ototoxicity = Loop (Furosemide, Ethacrynic acid) | Ethacrynic acid: safe in sulfa allergy", BLUE, B10),
SP(5)]

story.append(sec("ANTIARRHYTHMICS – VAUGHAN WILLIAMS CLASSIFICATION", "⚑", YELLOW))
story.append(SP(3))
antiarr = tbl([
    [P("Class",sG), P("Drugs",sG), P("Mechanism",sG), P("Use",sG), P("Key Toxicity",sG)],
    [P("Ia – Na channel\n(moderate)",sYe), P("Quinidine, Procainamide, Disopyramide",sN),
     P("Block Na channels + K channels β†’ ↑AP duration, ↑QT",sN),
     P("AF, VT, WPW",sN),
     P("Quinidine: cinchonism (tinnitus), TdP. Procainamide: drug-induced lupus. Disopyramide: anticholinergic",sR)],
    [P("Ib – Na channel\n(fast off)",sYe), P("Lidocaine, Mexiletine, Phenytoin",sN),
     P("Block Na channels in ischemic tissue. ↓AP duration",sN),
     P("Ventricular arrhythmias, acute VT/VF (Lidocaine IV)",sGr),
     P("Lidocaine: CNS toxicity (seizures, confusion). Phenytoin: for digoxin toxicity arrhythmia",sN)],
    [P("Ic – Na channel\n(slow off)",sYe), P("Flecainide, Propafenone",sN),
     P("Markedly slow Na channel conduction, minimal effect on repolarization",sN),
     P("AF, SVT, WPW in structurally normal hearts (FLEC-CAF, CAST)",sN),
     P("CAST trial: ↑mortality in post-MI patients! Only for structurally normal hearts",sR)],
    [P("Class II – Ξ²-blockers",sBl), P("Metoprolol, Atenolol, Propranolol, Esmolol",sN),
     P("Block Ξ²1 β†’ ↓SA/AV node automaticity, ↓conduction velocity",sN),
     P("AF rate control, SVT, post-MI arrhythmias, AVNRT",sGr),
     P("Bradycardia, heart block, bronchoconstriction. Esmolol: ultra-short IV",sN)],
    [P("Class III – K channel",sOr), P("Amiodarone, Sotalol, Ibutilide, Dofetilide",sN),
     P("Block K channels β†’ ↑repolarization, ↑QT interval",sN),
     P("Amiodarone: most effective (AF, VT, VF, WPW, CPR). Sotalol: AF, VT",sGr),
     P("Amiodarone toxicity: Pulmonary fibrosis, Thyroid (hypo/hyper), Liver, Corneal deposits, Skin (photosensitivity/blue-grey), Peripheral neuropathy",sR)],
    [P("Class IV – CCB",sPu), P("Verapamil, Diltiazem",sN),
     P("Block L-type Ca²⁺ β†’ ↓SA/AV node conduction β†’ ↓HR",sN),
     P("SVT (AVNRT), AF rate control, hypertrophic CM",sGr),
     P("AV block, heart failure (negative inotrope). NEVER with Ξ²-blockers (complete heart block)",sR)],
    [P("Others",sTe), P("Adenosine, Digoxin, Magnesium",sN),
     P("Adenosine: ultra-short block of AV node (A1 receptor). Digoxin: vagal ↑. Mg: TdP",sN),
     P("Adenosine: AVNRT (drug of choice). Digoxin: AF + HF rate. Mg IV: Torsades de Pointes",sGr),
     P("Adenosine: transient asystole, bronchoconstriction. Contraindicated in asthma, WPW",sR)],
],
[CW*0.16,CW*0.19,CW*0.22,CW*0.20,CW*0.23], box=YELLOW, bg1=Y10, bg2=Y20, hdr_bg=HexColor("#1A1400"))
story += [antiarr, SP(3),
note("⭐ Amiodarone = most broadly effective antiarrhythmic | CAST trial = Ic drugs ↑mortality post-MI | Adenosine DOC for AVNRT | TdP β†’ IV Magnesium | Drug-induced lupus = Procainamide, Hydralazine, Isoniazid", YELLOW, Y10),
SP(3)]

story.append(sec("HIGH-YIELD DRUG TRAPS & ONE-LINERS", "⚠️", RED))
story.append(SP(3))
day5_traps = tbl([
    [P("Trap",sG), P("Explanation",sG)],
    [P("⚠ Ic drugs post-MI",sR), P("Flecainide/Propafenone CONTRAINDICATED post-MI – CAST trial showed ↑mortality (proarrhythmic in ischemic heart)",sN)],
    [P("⚠ Amiodarone thyroid",sR), P("Contains 37% iodine – can cause BOTH hypo and hyperthyroidism. Check TFTs before + regularly during therapy",sN)],
    [P("⚠ Ethacrynic acid",sOr), P("Only loop diuretic safe in sulfa allergy. Most ototoxic of all loop diuretics",sN)],
    [P("⚠ Spironolactone gynecomastia",sOr), P("Anti-androgenic effect β†’ gynecomastia, menstrual irregularities. Use Eplerenone instead (selective MRA)",sN)],
    [P("⚠ Thiazide paradox",sCy), P("Thiazides TREAT nephrogenic DI by causing mild volume depletion β†’ ↑proximal reabsorption β†’ ↓urine output",sN)],
    [P("⚠ Adenosine in asthma",sR), P("CONTRAINDICATED in asthma (bronchoconstriction via A1 receptors). Use Verapamil instead for SVT in asthma",sN)],
],
[CW*0.28,CW*0.72], box=RED, bg1=R10, bg2=R20, hdr_bg=HexColor("#1A0000"))
story += [day5_traps, SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 6 – ANTIBIOTICS
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(6,"Jul 20","PHARMACOLOGY","Antibiotics – Classes, Mechanisms, Resistance & Drug of Choice", TEAL), SP(5)]

story.append(sec("ANTIBIOTIC MECHANISMS OF ACTION", "🦠", TEAL))
story.append(SP(3))
ab_moa = tbl([
    [P("Mechanism",sG), P("Antibiotic Classes",sG), P("Examples",sG)],
    [P("Inhibit Cell Wall Synthesis\n(Ξ²-lactam ring)",sTe), P("Penicillins, Cephalosporins,\nCarbapenems, Monobactams",sN),
     P("Amoxicillin, Cloxacillin, Piperacillin | Cefazolin, Ceftriaxone, Cefepime | Meropenem, Imipenem | Aztreonam",sN)],
    [P("Inhibit Cell Wall Synthesis\n(non-Ξ²-lactam)",sTe), P("Glycopeptides, Bacitracin",sN),
     P("Vancomycin (inhibits transpeptidation via D-Ala-D-Ala binding), Teicoplanin, Bacitracin",sN)],
    [P("Inhibit 30S Ribosome",sYe), P("Aminoglycosides, Tetracyclines",sN),
     P("Aminoglycosides: bind 16S rRNA β†’ misread mRNA. Tetracyclines: block aminoacyl-tRNA binding",sN)],
    [P("Inhibit 50S Ribosome",sOr), P("Macrolides, Clindamycin, Chloramphenicol, Linezolid, Streptogramins",sN),
     P("Azithromycin (23S rRNA), Erythromycin, Clindamycin (transpeptidation), Chloramphenicol (peptidyl transferase), Linezolid (initiation)",sN)],
    [P("Inhibit DNA Gyrase/Topoisomerase",sBl), P("Fluoroquinolones",sN),
     P("Ciprofloxacin (gram-neg, DNA gyrase), Levofloxacin (gram-pos + neg, Topoisomerase IV)",sN)],
    [P("Inhibit RNA Polymerase",sR), P("Rifampicin",sN),
     P("Rifampicin: inhibits DNA-dependent RNA polymerase. Used in TB, leprosy, meningococcal prophylaxis",sN)],
    [P("Inhibit Folate Synthesis",sGr), P("Sulfonamides, Trimethoprim",sN),
     P("Sulfonamides: block PABA β†’ dihydropteroate synthase. Trimethoprim: blocks DHFR. Cotrimoxazole = SMX+TMP (synergistic)",sN)],
    [P("Disrupt Cell Membrane",sCy), P("Polymyxins, Daptomycin",sN),
     P("Polymyxin B, Colistin: detergent-like disruption of gram-neg outer membrane. Daptomycin: gram-pos only",sN)],
    [P("Inhibit Mycolic Acid Synthesis",sTe), P("Isoniazid, Ethionamide",sN),
     P("INH inhibits InhA (enoyl-ACP reductase) β†’ blocks mycolic acid synthesis in mycobacteria",sN)],
],
[CW*0.24,CW*0.28,CW*0.48], box=TEAL, bg1=T10, bg2=T20, hdr_bg=HexColor("#001414"))
story += [ab_moa, SP(5)]

story.append(sec("DRUG OF CHOICE FOR COMMON INFECTIONS ⭐", "⭐", GOLD))
story.append(SP(3))
doc_inf = tbl([
    [P("Infection / Organism",sG), P("Drug of Choice",sG), P("Alternative",sG)],
    [P("Strep throat (Group A Strep)",sN), P("Penicillin V / Amoxicillin",sGr), P("Azithromycin (penicillin allergy)",sN)],
    [P("Staphylococcal (MSSA)",sN), P("Cloxacillin / Nafcillin",sGr), P("Cefazolin, Vancomycin (if allergic)",sN)],
    [P("MRSA",sN), P("VANCOMYCIN (IV)",sR), P("Linezolid, Daptomycin, TMP-SMX (mild skin)",sN)],
    [P("Pneumococcal pneumonia",sN), P("Amoxicillin / Penicillin G (sensitive strains)",sGr), P("Ceftriaxone, Azithromycin",sN)],
    [P("Atypical pneumonia (Mycoplasma, Chlamydia)",sN), P("Azithromycin / Doxycycline",sGr), P("Levofloxacin",sN)],
    [P("Legionella pneumophila",sN), P("Azithromycin or Levofloxacin",sGr), P("Rifampicin (add in severe cases)",sN)],
    [P("UTI (E. coli) – uncomplicated",sN), P("Nitrofurantoin or TMP-SMX",sGr), P("Ciprofloxacin",sN)],
    [P("UTI – pyelonephritis",sN), P("Ciprofloxacin or Levofloxacin (oral)",sGr), P("Ceftriaxone IV (hospitalized)",sN)],
    [P("TB (1st line regimen)",sN), P("RIPE: Rifampicin + Isoniazid + Pyrazinamide + Ethambutol Γ— 2 months",sR), P("Then RI Γ— 4 months",sN)],
    [P("Leprosy (paucibacillary)",sN), P("Dapsone + Rifampicin Γ— 6 months",sGr), P("β€”",sN)],
    [P("Leprosy (multibacillary)",sN), P("Dapsone + Rifampicin + Clofazimine Γ— 12 months",sGr), P("β€”",sN)],
    [P("Meningococcal meningitis",sN), P("Penicillin G IV (confirmed) / Ceftriaxone",sGr), P("Prophylaxis: Rifampicin / Ciprofloxacin",sN)],
    [P("Typhoid fever",sN), P("Azithromycin (uncomplicated) / Ceftriaxone IV",sGr), P("Ciprofloxacin (if sensitive)",sN)],
    [P("Cholera",sN), P("Tetracycline / Doxycycline",sGr), P("Azithromycin (children/pregnancy)",sN)],
    [P("Plague (Yersinia pestis)",sN), P("Streptomycin (DOC) / Gentamicin",sR), P("Doxycycline, Ciprofloxacin",sN)],
    [P("Anaerobic infections",sN), P("Metronidazole (below diaphragm), Clindamycin (above diaphragm)",sGr), P("Amoxicillin-Clavulanate",sN)],
    [P("Pseudomonas aeruginosa",sN), P("Piperacillin-Tazobactam or Cefepime or Meropenem",sR), P("Ciprofloxacin + Aminoglycoside",sN)],
    [P("Clostridium difficile (C.diff)",sN), P("Oral Vancomycin or Fidaxomicin",sGr), P("Metronidazole (mild cases only)",sN)],
],
[CW*0.35,CW*0.35,CW*0.30], box=GOLD, bg1=D10, bg2=D20, hdr_bg=Y10)
story += [doc_inf, SP(5)]

story.append(sec("ANTIBIOTIC RESISTANCE MECHANISMS", "⚠️", RED))
story.append(SP(3))
resist = tbl([
    [P("Mechanism",sG), P("Example",sG), P("Organism",sG)],
    [P("Ξ²-lactamase production",sR), P("Destroys Ξ²-lactam ring of penicillins/cephalosporins",sN), P("S. aureus, E. coli, H. influenzae",sN)],
    [P("Extended-spectrum Ξ²-lactamase (ESBL)",sR), P("Resistant to most cephalosporins. Treat with Carbapenems",sN), P("E. coli, Klebsiella (hospital-acquired)",sN)],
    [P("Altered PBP (Penicillin-Binding Protein)",sR), P("PBP2a in MRSA β†’ no binding of Ξ²-lactams",sN), P("MRSA, PRSP (Penicillin-resistant Strep pneumo)",sN)],
    [P("Enzymatic modification",sYe), P("Aminoglycoside modifying enzymes (phosphorylation, acetylation)",sN), P("Gram-neg bacilli",sN)],
    [P("Efflux pumps",sOr), P("Actively pump out tetracyclines, fluoroquinolones",sN), P("Pseudomonas, MRSA",sN)],
    [P("Target site modification",sOr), P("Altered ribosome (macrolide resistance in S. pyogenes), altered DNA gyrase (quinolone resistance)",sN), P("Multiple organisms",sN)],
    [P("Reduced permeability",sCy), P("Loss of outer membrane porins β†’ carbapenems can't enter",sN), P("Carbapenem-resistant Enterobacteriaceae (CRE / KPC)",sN)],
],
[CW*0.28,CW*0.44,CW*0.28], box=RED, bg1=R10, bg2=R20, hdr_bg=HexColor("#1A0000"))
story += [resist, SP(3)]

story.append(sec("ANTIBIOTIC TOXICITY HIGH-YIELD", "☠️", ORANGE))
story.append(SP(3))
abtox = tbl([
    [P("Drug",sG), P("Toxicity",sG), P("Mechanism / Notes",sG)],
    [P("Aminoglycosides\n(Gentamicin, Streptomycin)",sOr), P("Nephrotoxicity + Ototoxicity (vestibular/cochlear)",sR), P("Accumulate in renal tubules + cochlear hair cells. Monitor levels (trough). Synergistic with Loop diuretics β†’ ↑ototoxicity",sN)],
    [P("Vancomycin",sOr), P("Red Man Syndrome, nephrotoxicity, ototoxicity",sR), P("Red Man = histamine release (non-allergic) due to rapid infusion. Infuse over β‰₯60 min",sN)],
    [P("Tetracyclines",sYe), P("Teeth discoloration, bone growth inhibition, photosensitivity",sR), P("AVOID in pregnancy, children <8 years (deposits in bone/teeth)",sN)],
    [P("Chloramphenicol",sR), P("Gray baby syndrome, aplastic anemia",sR), P("Inhibits mito ribosomes β†’ Gray baby: cardiovascular collapse in neonates (immature glucuronidation)",sN)],
    [P("Fluoroquinolones",sBl), P("Tendinopathy (Achilles tendon rupture), QT prolongation, cartilage damage",sR), P("AVOID in children, pregnancy. Drug interaction with antacids (chelation β†’ ↓absorption)",sN)],
    [P("Rifampicin",sOr), P("Hepatotoxicity, orange discoloration of body fluids, drug interactions",sR), P("Powerful CYP450 inducer β†’ ↓levels of oral contraceptives, warfarin, many drugs",sN)],
    [P("Isoniazid (INH)",sYe), P("Peripheral neuropathy, hepatotoxicity, drug-induced lupus",sR), P("Give Pyridoxine (B6) prophylactically. INH inhibits CYP2E1. Slow acetylators at higher risk",sN)],
    [P("Metronidazole",sCy), P("Metallic taste, disulfiram-like reaction with alcohol, peripheral neuropathy",sR), P("AVOID alcohol during and 48hrs after treatment",sN)],
    [P("Sulfonamides",sGr), P("Crystalluria (drink plenty of water), Stevens-Johnson syndrome, hemolytic anemia (G6PD)",sR), P("Contraindicated in G6PD deficiency. Keep urine alkaline",sN)],
    [P("Linezolid",sTe), P("Serotonin syndrome (with SSRIs/MAOIs), thrombocytopenia, lactic acidosis",sR), P("MAO inhibitor activity β†’ avoid SSRIs, tyramine-rich food",sN)],
],
[CW*0.22,CW*0.28,CW*0.50], box=ORANGE, bg1=HexColor("#140800"), bg2=HexColor("#1A0F00"), hdr_bg=HexColor("#1A0C00"))
story += [abtox, SP(4)]
story.append(PageBreak())

# ══════════════════════════════════════════════════════════════════════════════
# DAY 7 – REVISION DAY
# ══════════════════════════════════════════════════════════════════════════════
story += [SP(6), day_header(7,"Jul 21","REVISION","Week 1 Rapid Recall – High-Yield MCQs & One-Liners for Medicine & Pharmacology", GREEN), SP(5)]

story.append(sec("RAPID FIRE REVISION – WEEK 1 ONE-LINERS", "⚑", CYAN))
story.append(SP(3))
rev_ol = tbl([
    [P("⚑ Question",sG), P("β†’ Answer",sG)],
    # HTN
    [P("ACC/AHA 2017: HTN defined as",sCy), P("β‰₯ 130/80 mmHg",sGr)],
    [P("HTN + Pregnancy DOC",sCy), P("Methyldopa (safest), Labetalol, Nifedipine",sGr)],
    [P("HTN + Gout DOC",sCy), P("Losartan (uricosuric – ↓uric acid)",sGr)],
    [P("Pheochromocytoma – Ξ±-blocker first drug",sCy), P("Phenoxybenzamine (give BEFORE Ξ²-blocker)",sR)],
    [P("DOC Hypertensive emergency in aortic dissection",sCy), P("IV Esmolol (ultra-short Ξ²1 block) or IV Labetalol",sGr)],
    [P("Most common secondary HTN cause",sCy), P("Renovascular HTN (renal artery stenosis)",sN)],
    # HF
    [P("3 Ξ²-blockers proven in HFrEF",sBl), P("Carvedilol, Bisoprolol, Metoprolol succinate (NOT atenolol)",sGr)],
    [P("PARADIGM-HF trial drug",sBl), P("Sacubitril/Valsartan (ENTRESTO) > Enalapril",sGr)],
    [P("RALES trial significance",sBl), P("Spironolactone ↓mortality 30% in NYHA III/IV HF",sGr)],
    [P("Best initial test to diagnose HF",sBl), P("2D Echo (measures LVEF)",sGr)],
    [P("Inotrope of choice in cardiogenic shock",sBl), P("Dobutamine",sGr)],
    [P("HFpEF most common cause",sBl), P("Hypertension",sGr)],
    # Autonomic
    [P("Organophosphate toxidrome",sOr), P("SLUDGE – Salivation, Lacrimation, Urination, Defecation, GI cramps, Emesis",sN)],
    [P("Antidote organophosphate poisoning",sOr), P("Atropine (large doses) + Pralidoxime (2-PAM) within 24 hrs",sGr)],
    [P("DOC motion sickness",sOr), P("Scopolamine (transdermal patch)",sN)],
    [P("Ξ²2 agonist for tocolysis",sOr), P("Ritodrine / Terbutaline",sN)],
    [P("Mirabegron mechanism",sOr), P("Ξ²3 agonist β†’ bladder detrusor relaxation (overactive bladder)",sN)],
    # Diuretics
    [P("Diuretic for nephrogenic DI",sPu), P("Thiazide diuretics (paradoxical effect)",sGr)],
    [P("Only safe loop diuretic in sulfa allergy",sPu), P("Ethacrynic acid (most ototoxic)",sR)],
    [P("Mannitol use",sPu), P("↑ICP (cerebral edema), glaucoma, forced diuresis in poisoning",sN)],
    # Antiarrhythmics
    [P("DOC for AVNRT (SVT)",sYe), P("Adenosine IV (1st line). Verapamil IV (if adenosine CI)",sGr)],
    [P("Adenosine contraindicated in",sYe), P("Asthma, WPW syndrome",sR)],
    [P("TdP (Torsades de Pointes) treatment",sYe), P("IV Magnesium sulphate",sGr)],
    [P("CAST trial showed",sYe), P("Ic antiarrhythmics (Flecainide) ↑mortality post-MI",sR)],
    [P("Amiodarone thyroid complication",sYe), P("Both hypo AND hyperthyroidism (37% iodine content)",sR)],
    # Antibiotics
    [P("MRSA drug of choice",sTe), P("Vancomycin IV",sGr)],
    [P("C. difficile treatment",sTe), P("Oral Vancomycin or Fidaxomicin",sGr)],
    [P("Gray baby syndrome",sTe), P("Chloramphenicol (immature glucuronidation in neonates)",sR)],
    [P("Rifampicin drug interaction",sTe), P("CYP450 inducer β†’ ↓OCPs, warfarin, many drugs",sR)],
    [P("TB 1st line regimen",sTe), P("RIPE Γ— 2 months β†’ RI Γ— 4 months",sGr)],
    [P("Antibiotic for Pseudomonas",sTe), P("Pip-Taz or Cefepime or Meropenem",sGr)],
],
[CW*0.42,CW*0.58], box=CYAN, bg1=T10, bg2=T20, hdr_bg=HexColor("#001414"))
story += [rev_ol, SP(5)]

story.append(sec("WEEK 1 – EXAM STRATEGY CHECKLIST βœ…", "βœ…", GREEN))
story.append(SP(3))
check = tbl([
    [P("Topic",sG), P("Must Know Cold",sG), P("Most Likely Exam Format",sG)],
    [P("Hypertension",sBl), P("ACC/AHA staging, DOC for special situations, Pheo management, HTN emergency drugs",sN), P("Image-based (fundus), clinical scenario, drug choice question",sN)],
    [P("Heart Failure",sCy), P("LVEF cutoffs, NYHA classes, 3 proven Ξ²-blockers, GDMT drugs, PARADIGM-HF, RALES",sN), P("LVEF-based clinical question, drug of choice, trial name",sN)],
    [P("Autonomic Pharmacology",sOr), P("Receptor chart, organophosphate SLUDGE, atropine effects, receptor selectivity of each drug",sN), P("Receptor identification, antidote, clinical toxidrome",sN)],
    [P("Diuretics",sPu), P("Site of action, electrolyte effects (Ca, K, Na), ototoxicity, thiazide paradox in DI",sN), P("Electrolyte disorder, mechanism-based, drug choice in clinical scenario",sN)],
    [P("Antiarrhythmics",sYe), P("Vaughan Williams classification, CAST trial, Amiodarone toxicity, Adenosine CI, TdP Rx",sN), P("ECG interpretation + drug choice, toxicity identification",sN)],
    [P("Antibiotics",sTe), P("Mechanism table, DOC table (TB/MRSA/Typhoid), toxicity table, resistance mechanisms",sN), P("Drug of choice, toxicity, resistance mechanism",sN)],
],
[CW*0.17,CW*0.46,CW*0.37], box=GREEN, bg1=G10, bg2=G20, hdr_bg=HexColor("#001500"))
story += [check, SP(6)]

# Final motivation
end = Table([[P(
    "🏁  Week 1 Complete!  β€’  Day 8 Next: THYROID (Surgery)  β€’  Keep the momentum going! πŸ’ͺ",
    S("en", fontName="Helvetica-Bold", fontSize=10, leading=13, textColor=GOLD, alignment=TA_CENTER)
)]], colWidths=[CW])
end.setStyle(TableStyle([
    ("BACKGROUND",(0,0),(-1,-1),HexColor("#1A1500")),
    ("BOX",(0,0),(-1,-1),2.5,GOLD),
    ("TOPPADDING",(0,0),(-1,-1),10),("BOTTOMPADDING",(0,0),(-1,-1),10),
    ("ALIGN",(0,0),(-1,-1),"CENTER"),
]))
story.append(end)

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
import os
path = "/tmp/workspace/neet-pdf/NEET_PG_Week1_Days2to7.pdf"
print(f"Done! {os.path.getsize(path)/1024:.1f} KB  β†’  {path}")
Running Command

cd /tmp/workspace/neet-pdf && python3 week1_pdf.py 2>&1

Your Week 1 PDF is ready! Download here:

NEET PG Week1 Days2to7

PDF Document Β· PDF


Here's exactly what's packed inside across ~10 pages, dark ranker theme:
DayDateContent Inside
Day 2Jul 16HTN classification (JNC 7 + ACC/AHA 2017), Emergency vs Urgency table, All antihypertensive drug classes (MOA, indications, CIs), DOC for 9 special situations, Mnemonics
Day 3Jul 17HFrEF vs HFpEF (LVEF cutoffs), NYHA classes, ACC/AHA stages A-D, All GDMT drugs with trial names (PARADIGM-HF, RALES, DAPA-HF), Acute decompensated HF management
Day 4Jul 18Complete receptor chart (Ξ±1/Ξ±2/Ξ²1/Ξ²2/Ξ²3/M1/M2/M3/Nn/Nm), All adrenergic agonists with dose-dependent dopamine table, All cholinergic drugs, SLUDGE toxidrome + antidote, All adrenergic antagonists
Day 5Jul 19All 6 diuretic classes (site, MOA, uses, SE), Vaughan Williams antiarrhythmic classification (Classes I-IV + others), CAST trial, Amiodarone toxicities, High-yield traps
Day 6Jul 209 antibiotic mechanisms, DOC for 18 common infections (MRSA, TB, typhoid, plague, C.diff...), 7 resistance mechanisms, Antibiotic toxicity table (10 drugs)
Day 7Jul 2131 rapid-fire Q&A one-liners covering all 5 topics, Exam strategy checklist for each subject
Exam strategy tip: Print it double-sided, punch holes and keep it in a binder. Review Day 7 (revision) the night before each week ends! πŸ’ͺ

I WANT THE TOPIC FOR DAY 2 IN ANOTHER CHAT NEW ONE

To get Day 2 notes in a new chat, just copy and paste this message:

I'm preparing for NEET PG on August 30, 2026. I'm following a 46-day study plan and today is Day 2.
Send me complete high-yield notes for: Day 2 – HYPERTENSION (Classification, JNC guidelines, drug classes, hypertensive emergencies, drug of choice for special situations, trap points, mnemonics, one-liners, and MCQs)
Format: Same style as Day 1 Diabetes notes β€” clinical vignette, diagnosis table, drug tables, complications, trap points, mnemonics, and rapid-fire one-liners.
Also make a PDF of it in dark ranker theme.

That's all you need to paste! The new chat will pick it up from there and give you the full Day 2 notes + PDF just like Day 1. πŸ’ͺ

SEND ME DAY 2

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

Can u send me the planto study in a pdf

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.