Kya tum image generate kar sakte ho agar mai tumhe content du to

Haan, bilkul! Main tumhare diye hue content ke basis par image generate kar sakta hoon.
Bas mujhe batao:
  • Kya dikhana chahte ho? (scene, object, poster, diagram, etc.)
  • Koi specific style? (realistic, cartoon, minimal, etc.)
Content do, main image bana dunga!

Cystic Fibrosis (CF) – MBBS Final Year Medicine Definition Cystic fibrosis (CF) is an autosomal recessive genetic disorder caused by mutation in the CFTR gene on chromosome 7, leading to defective chloride transport. This causes thick, sticky secretions affecting the lungs, pancreas, liver, intestines, and reproductive tract. --- High-Yield Mnemonic "CF = CLOGGED FLUIDS" C → Chronic lung infections F → Fat malabsorption C → Chloride ↑ in sweat L → Lung bronchiectasis O → Obstruction of pancreatic ducts G → Growth failure G → Gene defect (CFTR) E → Electrolyte loss (salty sweat) D → Diabetes (late complication) --- Genetics Inheritance: Autosomal recessive Gene: CFTR Chromosome: 7 Most common mutation: ΔF508 (Deletion of Phenylalanine at position 508) Easy Trick "7 din se F-508 gayab hai." 7 → Chromosome 7 F508 → Most common mutation --- Pathophysiology Remember: "No Chloride Out → Water Doesn't Follow → Thick Mucus" 1. CFTR defect 2. ↓ Chloride secretion 3. ↑ Sodium absorption 4. Water absorbed into cells 5. Secretions become thick 6. Duct obstruction 7. Infection + inflammation 8. Organ damage --- Organs Affected 1. Respiratory System Thick mucus Chronic cough Recurrent pneumonia Bronchiectasis Wheezing Hemoptysis Respiratory failure Common organisms Staphylococcus aureus Haemophilus influenzae Pseudomonas aeruginosa (adults) Trick "SHP attacks lungs" S = Staph H = H. influenzae P = Pseudomonas --- 2. Pancreas Pancreatic duct obstruction Exocrine pancreatic insufficiency Fat malabsorption Steatorrhea Fat-soluble vitamin deficiency (A, D, E, K) Diabetes mellitus (late) --- 3. Gastrointestinal Meconium ileus (newborn) Distal intestinal obstruction syndrome Constipation --- 4. Liver Biliary cirrhosis Portal hypertension --- 5. Sweat Glands High sweat chloride Salty skin Hyponatremia in hot weather Trick "Kiss of a CF baby tastes salty." --- 6. Reproductive System Male Congenital bilateral absence of vas deferens Infertility Female Thick cervical mucus Reduced fertility --- Clinical Features Respiratory Chronic productive cough Wheezing Breathlessness Recurrent chest infections Bronchiectasis Digital clubbing Gastrointestinal Steatorrhea Failure to thrive Poor weight gain Vitamin deficiency Others Salty sweat Nasal polyps Infertility --- Diagnosis Gold Standard Sweat Chloride Test Chloride ≥60 mmol/L = Diagnostic Other tests Newborn screening (IRT) Genetic testing (CFTR mutation) Chest X-ray / HRCT Pulmonary function tests Sputum culture Fecal elastase (pancreatic insufficiency) Trick "CF = Chloride Full (Sweat chloride ↑)" --- Management 1. Airway Clearance Chest physiotherapy Postural drainage Positive expiratory pressure devices 2. Mucolytics Dornase alfa (DNase) Hypertonic saline nebulization MOA Dornase alfa: Breaks extracellular DNA → decreases sputum viscosity. Hypertonic saline: Draws water into airway → hydrates mucus. --- 3. Antibiotics According to sputum culture Anti-pseudomonal antibiotics when indicated --- 4. Bronchodilators If bronchospasm present --- 5. Pancreatic Enzyme Replacement Therapy (PERT) Lipase Amylase Protease --- 6. Nutritional Support High-calorie diet High-protein diet Fat-soluble vitamins (A, D, E, K) --- 7. CFTR Modulators (Disease-modifying) Drug MOA Ivacaftor Increases opening of CFTR channel Lumacaftor Improves CFTR folding and trafficking Tezacaftor Improves CFTR processing Elexacaftor Improves CFTR function; used in triple therapy Trick "Correct → Potentiate" Correctors = Lumacaftor, Tezacaftor, Elexacaftor Potentiator = Ivacaftor --- 8. Lung Transplant End-stage lung disease --- Complications Bronchiectasis Massive hemoptysis Pneumothorax Respiratory failure Pulmonary hypertension Cor pulmonale Diabetes mellitus Liver cirrhosis Osteoporosis Infertility --- Exam Pearls (Very High Yield) ✅ Autosomal recessive disorder ✅ CFTR mutation on chromosome 7 ✅ ΔF508 is the commonest mutation ✅ Thick mucus due to defective chloride transport ✅ Sweat chloride >60 mmol/L confirms diagnosis ✅ Bronchiectasis + recurrent Pseudomonas infection ✅ Pancreatic insufficiency → steatorrhea + ADEK deficiency ✅ Meconium ileus in neonates ✅ Male infertility (absence of vas deferens) ✅ CFTR modulators: Ivacaftor, Lumacaftor, Tezacaftor, Elexacaftor One-line Revision Trick "CF = 7 → F508 → Thick mucus → Salty sweat → Pseudomonas lungs → Steatorrhea → Sweat chloride >60 → Ivacaftor + Enzymes + Chest physiotherapy." Ye content hai ache se image banao jisme ye saara content cover hona chaie kuch bhi rehna nhi chaie baaki saath he trick add kar do jis se mai aasani se yaad kar saku

Asking for Preferences
Reading File
Running Command

ls -la /home/daytona/workspace/

Running Command

mkdir -p /home/daytona/workspace/cf-notes && python3 -c "from reportlab.lib import colors; print('reportlab ok')"

Writing File

~/cf-notes/generate_cf_pdf.py

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

# ── Colour palette ──────────────────────────────────────────────────────────
TEAL        = colors.HexColor("#0D7377")
DARK_TEAL   = colors.HexColor("#14302D")
LIGHT_TEAL  = colors.HexColor("#E0F4F4")
ORANGE      = colors.HexColor("#E07B39")
LIGHT_ORANGE= colors.HexColor("#FFF3EC")
YELLOW_BG   = colors.HexColor("#FFFBEA")
GREEN       = colors.HexColor("#2E7D32")
LIGHT_GREEN = colors.HexColor("#E8F5E9")
RED         = colors.HexColor("#C62828")
LIGHT_RED   = colors.HexColor("#FFEBEE")
PURPLE      = colors.HexColor("#6A1B9A")
LIGHT_PURPLE= colors.HexColor("#F3E5F5")
GREY_BG     = colors.HexColor("#F5F5F5")
DARK_GREY   = colors.HexColor("#424242")
WHITE       = colors.white
BLACK       = colors.black

# ── Page setup ───────────────────────────────────────────────────────────────
W, H = A4
MARGIN = 14 * mm

doc = SimpleDocTemplate(
    "/home/daytona/workspace/cf-notes/Cystic_Fibrosis_MBBS.pdf",
    pagesize=A4,
    leftMargin=MARGIN, rightMargin=MARGIN,
    topMargin=12*mm, bottomMargin=12*mm
)

styles = getSampleStyleSheet()

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

# ── Custom paragraph styles ──────────────────────────────────────────────────
title_style = style("Title2",
    fontSize=20, leading=24, alignment=TA_CENTER,
    textColor=WHITE, fontName="Helvetica-Bold", spaceAfter=2)

subtitle_style = style("Sub",
    fontSize=10, leading=13, alignment=TA_CENTER,
    textColor=colors.HexColor("#B2DFDB"), fontName="Helvetica", spaceAfter=0)

section_header = style("SH",
    fontSize=11, leading=14, alignment=TA_LEFT,
    textColor=WHITE, fontName="Helvetica-Bold",
    spaceBefore=2, spaceAfter=2, leftIndent=4)

body = style("Body2",
    fontSize=8.5, leading=12, alignment=TA_LEFT,
    textColor=DARK_GREY, fontName="Helvetica", spaceAfter=1)

body_b = style("BodyB",
    fontSize=8.5, leading=12, alignment=TA_LEFT,
    textColor=BLACK, fontName="Helvetica-Bold", spaceAfter=1)

mnemonic_style = style("Mnem",
    fontSize=9, leading=13, alignment=TA_CENTER,
    textColor=DARK_TEAL, fontName="Helvetica-Bold", spaceAfter=1)

trick_style = style("Trick",
    fontSize=8.5, leading=12, alignment=TA_LEFT,
    textColor=ORANGE, fontName="Helvetica-BoldOblique", spaceAfter=1)

bullet_style = style("Bullet",
    fontSize=8.5, leading=12, leftIndent=10,
    textColor=DARK_GREY, fontName="Helvetica", spaceAfter=1, bulletIndent=2)

pearl_style = style("Pearl",
    fontSize=8.5, leading=12, leftIndent=6,
    textColor=GREEN, fontName="Helvetica-Bold", spaceAfter=1)

# ── Helper builders ───────────────────────────────────────────────────────────
def section_box(title, color=TEAL):
    """Coloured section header box."""
    data = [[Paragraph(title, section_header)]]
    t = Table(data, colWidths=[W - 2*MARGIN])
    t.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), color),
        ("ROUNDEDCORNERS", [4,4,4,4]),
        ("TOPPADDING",  (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LEFTPADDING", (0,0), (-1,-1), 8),
    ]))
    return t

def mnemonic_box(heading, lines, bg=LIGHT_TEAL, border=TEAL):
    """Box with mnemonic / trick content."""
    content = [Paragraph(heading, mnemonic_style)]
    for l in lines:
        content.append(Paragraph(l, trick_style))
    data = [[content]]
    t = Table(data, colWidths=[W - 2*MARGIN])
    t.setStyle(TableStyle([
        ("BACKGROUND",  (0,0), (-1,-1), bg),
        ("BOX",         (0,0), (-1,-1), 1.2, border),
        ("TOPPADDING",  (0,0), (-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING", (0,0), (-1,-1), 10),
        ("RIGHTPADDING",(0,0), (-1,-1), 10),
    ]))
    return t

def two_col(left_items, right_items, header_left="", header_right=""):
    col = (W - 2*MARGIN) / 2 - 1*mm
    def make_cell(hdr, items):
        cell = []
        if hdr:
            cell.append(Paragraph(hdr, body_b))
        for it in items:
            cell.append(Paragraph(f"• {it}", bullet_style))
        return cell

    data = [[make_cell(header_left, left_items), make_cell(header_right, right_items)]]
    t = Table(data, colWidths=[col+2*mm, col])
    t.setStyle(TableStyle([
        ("VALIGN",       (0,0), (-1,-1), "TOP"),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ("LEFTPADDING",  (0,0), (-1,-1), 6),
        ("RIGHTPADDING", (0,0), (-1,-1), 6),
        ("BACKGROUND",   (0,0), (0,-1), LIGHT_TEAL),
        ("BACKGROUND",   (1,0), (1,-1), LIGHT_GREEN),
        ("BOX",          (0,0), (0,-1), 0.5, TEAL),
        ("BOX",          (1,0), (1,-1), 0.5, GREEN),
    ]))
    return t

def info_table(rows, col_ratio=(0.35, 0.65)):
    usable = W - 2*MARGIN
    col_w = [usable*col_ratio[0], usable*col_ratio[1]]
    table_data = []
    for i,(k,v) in enumerate(rows):
        bg = GREY_BG if i%2==0 else WHITE
        table_data.append([
            Paragraph(k, body_b),
            Paragraph(v, body)
        ])
    t = Table(table_data, colWidths=col_w)
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0), (-1,0), LIGHT_TEAL),
        ("ROWBACKGROUNDS",(0,0),(-1,-1),[GREY_BG, WHITE]),
        ("BOX",          (0,0), (-1,-1), 0.5, TEAL),
        ("INNERGRID",    (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
        ("TOPPADDING",   (0,0), (-1,-1), 4),
        ("BOTTOMPADDING",(0,0), (-1,-1), 4),
        ("LEFTPADDING",  (0,0), (-1,-1), 6),
        ("VALIGN",       (0,0), (-1,-1), "MIDDLE"),
    ]))
    return t

def drug_table(rows):
    usable = W - 2*MARGIN
    col_w = [usable*0.30, usable*0.70]
    hdr = [Paragraph("Drug", style("dh", fontSize=9, fontName="Helvetica-Bold",
                                    textColor=WHITE)),
           Paragraph("Mechanism of Action", style("dh2", fontSize=9,
                                    fontName="Helvetica-Bold", textColor=WHITE))]
    table_data = [hdr]
    for d,m in rows:
        table_data.append([Paragraph(d, body_b), Paragraph(m, body)])
    t = Table(table_data, colWidths=col_w)
    t.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), PURPLE),
        ("ROWBACKGROUNDS",(0,1),(-1,-1),[LIGHT_PURPLE, WHITE]),
        ("BOX",           (0,0), (-1,-1), 0.5, PURPLE),
        ("INNERGRID",     (0,0), (-1,-1), 0.3, colors.HexColor("#CCCCCC")),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    return t

def sp(h=3):
    return Spacer(1, h*mm)

def hr(color=TEAL):
    return HRFlowable(width="100%", thickness=0.5, color=color, spaceAfter=2, spaceBefore=2)

def bullets(items, color=DARK_GREY):
    bs = style("bs_", fontSize=8.5, leading=12, leftIndent=12,
               textColor=color, fontName="Helvetica", spaceAfter=1, bulletIndent=4)
    return [Paragraph(f"• {i}", bs) for i in items]

def organ_box(title, items, bg, border):
    cell_content = [Paragraph(title, style("ot", fontSize=9, fontName="Helvetica-Bold",
                              textColor=border, spaceAfter=3))]
    for it in items:
        cell_content.append(Paragraph(f"• {it}", style("oi", fontSize=8, leading=11,
                            leftIndent=8, fontName="Helvetica",
                            textColor=DARK_GREY, spaceAfter=1)))
    data = [[cell_content]]
    t = Table(data, colWidths=[(W-2*MARGIN)/3 - 2*mm])
    t.setStyle(TableStyle([
        ("BACKGROUND",   (0,0),(-1,-1), bg),
        ("BOX",          (0,0),(-1,-1), 1.2, border),
        ("TOPPADDING",   (0,0),(-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
        ("LEFTPADDING",  (0,0),(-1,-1), 8),
        ("RIGHTPADDING", (0,0),(-1,-1), 8),
    ]))
    return t

# ═══════════════════════════════════════════════════════════════════════════
# CONTENT BUILD
# ═══════════════════════════════════════════════════════════════════════════
story = []

# ── TITLE BANNER ─────────────────────────────────────────────────────────────
title_data = [[
    Paragraph("CYSTIC FIBROSIS (CF)", title_style),
    Paragraph("MBBS Final Year · Medicine", subtitle_style)
]]
title_table = Table([[
    Paragraph("CYSTIC FIBROSIS (CF)", title_style),
]], colWidths=[W - 2*MARGIN])
title_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), DARK_TEAL),
    ("TOPPADDING",    (0,0), (-1,-1), 10),
    ("BOTTOMPADDING", (0,0), (-1,-1), 6),
    ("LEFTPADDING",   (0,0), (-1,-1), 12),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
]))
story.append(title_table)

sub_table = Table([[Paragraph("MBBS Final Year  ·  Medicine  ·  High-Yield Study Notes", subtitle_style)]], colWidths=[W-2*MARGIN])
sub_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), TEAL),
    ("TOPPADDING",    (0,0), (-1,-1), 4),
    ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ("ALIGN",         (0,0), (-1,-1), "CENTER"),
]))
story.append(sub_table)
story.append(sp(4))

# ── DEFINITION BOX ───────────────────────────────────────────────────────────
def_text = ("<b>Cystic Fibrosis</b> is an <b>autosomal recessive</b> genetic disorder caused by "
            "mutation in the <b>CFTR gene on chromosome 7</b>, leading to <b>defective chloride "
            "transport</b>. This causes thick, sticky secretions affecting the <b>lungs, pancreas, "
            "liver, intestines,</b> and <b>reproductive tract</b>.")
def_data = [[Paragraph(def_text, style("def", fontSize=9, leading=13,
                       textColor=DARK_TEAL, fontName="Helvetica", spaceAfter=0))]]
def_table = Table(def_data, colWidths=[W-2*MARGIN])
def_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,-1), LIGHT_TEAL),
    ("BOX",           (0,0),(-1,-1), 1.5, TEAL),
    ("TOPPADDING",    (0,0),(-1,-1), 8),
    ("BOTTOMPADDING", (0,0),(-1,-1), 8),
    ("LEFTPADDING",   (0,0),(-1,-1), 10),
    ("RIGHTPADDING",  (0,0),(-1,-1), 10),
]))
story.append(def_table)
story.append(sp(4))

# ── MNEMONIC + GENETICS side by side ─────────────────────────────────────────
mnem_lines = [
    "C → Chronic lung infections",
    "F → Fat malabsorption",
    "C → Chloride ↑ in sweat",
    "L → Lung bronchiectasis",
    "O → Obstruction of pancreatic ducts",
    "G → Growth failure",
    "G → Gene defect (CFTR)",
    "E → Electrolyte loss (salty sweat)",
    "D → Diabetes (late complication)",
]
mnem_cell = [Paragraph("🧠  MNEMONIC: \"CF = CLOGGED FLUIDS\"", style("mh",
                fontSize=9.5, fontName="Helvetica-Bold", textColor=TEAL, spaceAfter=4))]
for l in mnem_lines:
    letter, rest = l.split("→", 1)
    mnem_cell.append(Paragraph(
        f"<b><font color='#E07B39'>{letter.strip()}→</font></b> {rest.strip()}",
        style("ml", fontSize=8.5, leading=12, leftIndent=6, fontName="Helvetica",
              textColor=DARK_GREY, spaceAfter=1)))

gen_rows = [
    ("Inheritance", "Autosomal Recessive"),
    ("Gene", "CFTR"),
    ("Chromosome", "7"),
    ("Common Mutation", "ΔF508 (deletion of Phe at position 508)"),
]
gen_cell = [Paragraph("🧬  GENETICS", style("gh", fontSize=9.5,
            fontName="Helvetica-Bold", textColor=PURPLE, spaceAfter=4))]
for k,v in gen_rows:
    gen_cell.append(Paragraph(
        f"<b>{k}:</b>  {v}",
        style("gr", fontSize=8.5, leading=12, leftIndent=4, fontName="Helvetica",
              textColor=DARK_GREY, spaceAfter=3)))
gen_cell.append(sp(1))
gen_cell.append(Paragraph(
    "💡 Trick: <i>\"7 din se F-508 gayab hai\"</i><br/>"
    "7 → Chromosome 7 | F508 → Commonest mutation",
    style("gt", fontSize=8.5, leading=12, leftIndent=4, fontName="Helvetica",
          textColor=ORANGE, spaceAfter=0)))

col = (W-2*MARGIN)/2 - 1.5*mm
row_data = [[mnem_cell, gen_cell]]
side_table = Table(row_data, colWidths=[col+3*mm, col-3*mm])
side_table.setStyle(TableStyle([
    ("VALIGN",        (0,0),(-1,-1), "TOP"),
    ("BACKGROUND",    (0,0),(0,-1),  YELLOW_BG),
    ("BACKGROUND",    (1,0),(1,-1),  LIGHT_PURPLE),
    ("BOX",           (0,0),(0,-1),  1, ORANGE),
    ("BOX",           (1,0),(1,-1),  1, PURPLE),
    ("TOPPADDING",    (0,0),(-1,-1), 6),
    ("BOTTOMPADDING", (0,0),(-1,-1), 6),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
]))
story.append(side_table)
story.append(sp(4))

# ── PATHOPHYSIOLOGY ───────────────────────────────────────────────────────────
story.append(section_box("⚙️  PATHOPHYSIOLOGY", DARK_TEAL))
story.append(sp(2))

patho_trick = mnemonic_box(
    "💡 Key Concept: \"No Chloride Out → Water Doesn't Follow → Thick Mucus\"",
    [], bg=LIGHT_TEAL, border=TEAL)
story.append(patho_trick)
story.append(sp(2))

patho_steps = [
    ("1", "CFTR gene defect"),
    ("2", "↓ Chloride secretion into lumen"),
    ("3", "↑ Sodium absorption (compensatory)"),
    ("4", "Water absorbed back into cells"),
    ("5", "Secretions become thick & viscous"),
    ("6", "Duct obstruction"),
    ("7", "Infection + Inflammation"),
    ("8", "Progressive organ damage"),
]
patho_data = [[
    Paragraph(f"<b><font color='#0D7377'>{n}</font></b>",
              style("pn", fontSize=11, fontName="Helvetica-Bold", alignment=TA_CENTER)),
    Paragraph(desc, style("pd", fontSize=8.5, leading=12, fontName="Helvetica", textColor=DARK_GREY))
] for n, desc in patho_steps]
patho_table = Table(patho_data, colWidths=[12*mm, W-2*MARGIN-14*mm])
patho_table.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0),(-1,-1), [LIGHT_TEAL, WHITE]),
    ("BOX",           (0,0),(-1,-1), 0.5, TEAL),
    ("INNERGRID",     (0,0),(-1,-1), 0.3, colors.HexColor("#CCCCCC")),
    ("TOPPADDING",    (0,0),(-1,-1), 4),
    ("BOTTOMPADDING", (0,0),(-1,-1), 4),
    ("LEFTPADDING",   (0,0),(-1,-1), 5),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
    ("ALIGN",         (0,0),(0,-1),  "CENTER"),
]))
story.append(patho_table)
story.append(sp(4))

# ── ORGANS AFFECTED ────────────────────────────────────────────────────────────
story.append(section_box("🫁  ORGANS AFFECTED", colors.HexColor("#1565C0")))
story.append(sp(2))

organ_col_w = (W-2*MARGIN)/3 - 1.5*mm

organs = [
    ("RESPIRATORY", [
        "Thick mucus, Chronic cough",
        "Recurrent pneumonia",
        "Bronchiectasis, Wheezing",
        "Hemoptysis, Resp. failure",
        "Organisms: Staph → H.influenzae → Pseudomonas",
        "Trick: 'SHP attacks lungs'",
    ], LIGHT_TEAL, TEAL),
    ("PANCREAS", [
        "Pancreatic duct obstruction",
        "Exocrine insufficiency",
        "Fat malabsorption, Steatorrhea",
        "Vit A,D,E,K deficiency",
        "Diabetes mellitus (late)",
    ], LIGHT_GREEN, GREEN),
    ("GIT + LIVER", [
        "Meconium ileus (newborn)",
        "Distal intestinal obstruction",
        "Constipation",
        "Biliary cirrhosis",
        "Portal hypertension",
    ], LIGHT_ORANGE, ORANGE),
    ("SWEAT GLANDS", [
        "High sweat chloride",
        "Salty skin",
        "Hyponatremia in hot weather",
        "Trick: 'Kiss of a CF baby",
        "tastes salty'",
    ], YELLOW_BG, ORANGE),
    ("REPRODUCTIVE", [
        "Male: Absence of vas deferens → Infertility",
        "Female: Thick cervical mucus",
        "Reduced female fertility",
    ], LIGHT_PURPLE, PURPLE),
    ("CLINICAL FEATURES", [
        "Digital clubbing",
        "Nasal polyps",
        "Failure to thrive",
        "Poor weight gain",
        "Salty sweat",
    ], LIGHT_RED, RED),
]

# 3-column organ grid
for i in range(0, 6, 3):
    row = []
    for bg, border, title_col in [(organs[i][2], organs[i][3], organs[i][0]),
                                   (organs[i+1][2], organs[i+1][3], organs[i+1][0]),
                                   (organs[i+2][2], organs[i+2][3], organs[i+2][0])]:
        idx = i + [organs[i][0],organs[i+1][0],organs[i+2][0]].index(title_col)
        cell_content = [Paragraph(organs[idx][0],
                         style("ot2", fontSize=9, fontName="Helvetica-Bold",
                               textColor=organs[idx][3], spaceAfter=3))]
        for it in organs[idx][1]:
            cell_content.append(Paragraph(f"• {it}",
                style("oi2", fontSize=8, leading=11, leftIndent=6,
                      fontName="Helvetica", textColor=DARK_GREY, spaceAfter=1)))
        row.append(cell_content)
    row_table = Table([row], colWidths=[organ_col_w+2*mm]*3)
    row_table.setStyle(TableStyle([
        ("VALIGN",        (0,0),(-1,-1), "TOP"),
        ("TOPPADDING",    (0,0),(-1,-1), 6),
        ("BOTTOMPADDING", (0,0),(-1,-1), 6),
        ("LEFTPADDING",   (0,0),(-1,-1), 6),
        ("RIGHTPADDING",  (0,0),(-1,-1), 6),
        ("BACKGROUND",    (0,0),(0,-1),  organs[i][2]),
        ("BACKGROUND",    (1,0),(1,-1),  organs[i+1][2]),
        ("BACKGROUND",    (2,0),(2,-1),  organs[i+2][2]),
        ("BOX",           (0,0),(0,-1),  1, organs[i][3]),
        ("BOX",           (1,0),(1,-1),  1, organs[i+1][3]),
        ("BOX",           (2,0),(2,-1),  1, organs[i+2][3]),
        ("INNERGRID",     (0,0),(-1,-1), 0.3, colors.HexColor("#DDDDDD")),
    ]))
    story.append(row_table)
    story.append(sp(2))

story.append(sp(2))

# ── DIAGNOSIS ─────────────────────────────────────────────────────────────────
story.append(section_box("🔬  DIAGNOSIS", GREEN))
story.append(sp(2))

gold_data = [[Paragraph(
    "⭐ GOLD STANDARD: Sweat Chloride Test  |  Chloride ≥ 60 mmol/L = Diagnostic",
    style("gs", fontSize=9.5, fontName="Helvetica-Bold", textColor=WHITE, alignment=TA_CENTER))]]
gold_table = Table(gold_data, colWidths=[W-2*MARGIN])
gold_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,-1), GREEN),
    ("TOPPADDING",    (0,0),(-1,-1), 7),
    ("BOTTOMPADDING", (0,0),(-1,-1), 7),
    ("ALIGN",         (0,0),(-1,-1), "CENTER"),
]))
story.append(gold_table)
story.append(sp(2))

diag_rows = [
    ("Newborn Screening", "Immunoreactive Trypsinogen (IRT)"),
    ("Genetic Testing",   "CFTR mutation analysis (ΔF508)"),
    ("Imaging",           "Chest X-ray / HRCT (bronchiectasis)"),
    ("Lung Function",     "Pulmonary function tests (obstructive pattern)"),
    ("Microbiology",      "Sputum culture (Pseudomonas, Staph, H. influenzae)"),
    ("Pancreas",          "Fecal elastase (pancreatic insufficiency)"),
]
story.append(info_table(diag_rows))
story.append(sp(2))
story.append(mnemonic_box(
    "💡 Trick: \"CF = Chloride Full (Sweat chloride ↑)\"",
    [], bg=LIGHT_GREEN, border=GREEN))
story.append(sp(4))

# ── MANAGEMENT ────────────────────────────────────────────────────────────────
story.append(section_box("💊  MANAGEMENT", ORANGE))
story.append(sp(2))

mgmt_col = (W-2*MARGIN)/2 - 1.5*mm

mgmt_left = [
    Paragraph("1️⃣  AIRWAY CLEARANCE", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=TEAL, spaceAfter=3)),
    *bullets(["Chest physiotherapy", "Postural drainage", "Positive expiratory pressure devices"]),
    sp(2),
    Paragraph("2️⃣  MUCOLYTICS", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=TEAL, spaceAfter=3)),
    *bullets(["Dornase alfa (DNase) → breaks extracellular DNA → ↓ sputum viscosity",
              "Hypertonic saline → draws water into airway → hydrates mucus"]),
    sp(2),
    Paragraph("3️⃣  ANTIBIOTICS", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=TEAL, spaceAfter=3)),
    *bullets(["Per sputum culture", "Anti-pseudomonal when Pseudomonas isolated"]),
    sp(2),
    Paragraph("4️⃣  BRONCHODILATORS", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=TEAL, spaceAfter=3)),
    *bullets(["If bronchospasm present"]),
]

mgmt_right = [
    Paragraph("5️⃣  PERT (Pancreatic Enzyme Replacement)", style("mh2", fontSize=9,
              fontName="Helvetica-Bold", textColor=ORANGE, spaceAfter=3)),
    *bullets(["Lipase", "Amylase", "Protease"]),
    sp(2),
    Paragraph("6️⃣  NUTRITIONAL SUPPORT", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=ORANGE, spaceAfter=3)),
    *bullets(["High-calorie, high-protein diet", "Fat-soluble vitamins: A, D, E, K"]),
    sp(2),
    Paragraph("7️⃣  CFTR MODULATORS ★", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=PURPLE, spaceAfter=3)),
    Paragraph("💡 Trick: <i>\"Correct → Potentiate\"</i>",
              style("ct", fontSize=8.5, textColor=ORANGE, fontName="Helvetica-BoldOblique",
                    spaceAfter=3, leftIndent=6)),
    Paragraph("<b>Correctors:</b> Lumacaftor, Tezacaftor, Elexacaftor<br/>"
              "<b>Potentiator:</b> Ivacaftor",
              style("cmod", fontSize=8.5, leading=12, textColor=PURPLE, fontName="Helvetica",
                    spaceAfter=4, leftIndent=6)),
    sp(2),
    Paragraph("8️⃣  LUNG TRANSPLANT", style("mh2", fontSize=9, fontName="Helvetica-Bold",
              textColor=RED, spaceAfter=3)),
    *bullets(["End-stage lung disease"]),
]

mgmt_table = Table([[mgmt_left, mgmt_right]], colWidths=[mgmt_col+2*mm, mgmt_col-2*mm])
mgmt_table.setStyle(TableStyle([
    ("VALIGN",        (0,0),(-1,-1), "TOP"),
    ("BACKGROUND",    (0,0),(0,-1),  LIGHT_TEAL),
    ("BACKGROUND",    (1,0),(1,-1),  LIGHT_ORANGE),
    ("BOX",           (0,0),(0,-1),  1, TEAL),
    ("BOX",           (1,0),(1,-1),  1, ORANGE),
    ("TOPPADDING",    (0,0),(-1,-1), 8),
    ("BOTTOMPADDING", (0,0),(-1,-1), 8),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("RIGHTPADDING",  (0,0),(-1,-1), 8),
]))
story.append(mgmt_table)
story.append(sp(3))

# Drug table
story.append(Paragraph("CFTR Modulators – Mechanism of Action",
             style("dt_h", fontSize=9.5, fontName="Helvetica-Bold", textColor=PURPLE,
                   spaceBefore=2, spaceAfter=3)))
drug_rows = [
    ("Ivacaftor",    "Potentiator – Increases opening (gating) of CFTR channel"),
    ("Lumacaftor",   "Corrector – Improves CFTR protein folding and trafficking to cell surface"),
    ("Tezacaftor",   "Corrector – Improves CFTR processing and stability"),
    ("Elexacaftor",  "Next-gen Corrector – Improves CFTR function; used in triple therapy (Kaftrio)"),
]
story.append(drug_table(drug_rows))
story.append(sp(4))

# ── COMPLICATIONS ─────────────────────────────────────────────────────────────
story.append(section_box("⚠️  COMPLICATIONS", RED))
story.append(sp(2))

comp_items = [
    ["Bronchiectasis", "Massive Hemoptysis", "Pneumothorax", "Respiratory Failure", "Pulmonary Hypertension"],
    ["Cor Pulmonale", "Diabetes Mellitus", "Liver Cirrhosis", "Osteoporosis", "Infertility (Male/Female)"],
]
comp_data = []
for left, right in zip(comp_items[0], comp_items[1]):
    comp_data.append([
        Paragraph(f"🔴 {left}", style("ci", fontSize=8.5, fontName="Helvetica",
                  textColor=RED, spaceAfter=1)),
        Paragraph(f"🔴 {right}", style("ci2", fontSize=8.5, fontName="Helvetica",
                  textColor=RED, spaceAfter=1)),
    ])
comp_table = Table(comp_data, colWidths=[(W-2*MARGIN)/2]*2)
comp_table.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0),(-1,-1), [LIGHT_RED, WHITE]),
    ("BOX",           (0,0),(-1,-1), 0.5, RED),
    ("INNERGRID",     (0,0),(-1,-1), 0.3, colors.HexColor("#FFCDD2")),
    ("TOPPADDING",    (0,0),(-1,-1), 4),
    ("BOTTOMPADDING", (0,0),(-1,-1), 4),
    ("LEFTPADDING",   (0,0),(-1,-1), 8),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
]))
story.append(comp_table)
story.append(sp(4))

# ── EXAM PEARLS ───────────────────────────────────────────────────────────────
story.append(section_box("⭐  EXAM PEARLS  (Very High Yield)", colors.HexColor("#F57F17")))
story.append(sp(2))

pearls = [
    "Autosomal recessive disorder",
    "CFTR mutation on chromosome 7",
    "ΔF508 is the commonest mutation (deletion of Phenylalanine)",
    "Thick mucus due to defective chloride transport",
    "Sweat Chloride >60 mmol/L confirms diagnosis",
    "Bronchiectasis + recurrent Pseudomonas infection",
    "Pancreatic insufficiency → Steatorrhea + ADEK deficiency",
    "Meconium ileus in neonates (first presentation)",
    "Male infertility – Congenital bilateral absence of vas deferens",
    "CFTR modulators: Ivacaftor (potentiator) + Lumacaftor/Tezacaftor/Elexacaftor (correctors)",
]
pearl_data = [[Paragraph(f"✅  {p}", style("ep", fontSize=8.5, leading=12,
              fontName="Helvetica-Bold", textColor=GREEN, spaceAfter=1))]
              for p in pearls]
pearl_table = Table(pearl_data, colWidths=[W-2*MARGIN])
pearl_table.setStyle(TableStyle([
    ("ROWBACKGROUNDS", (0,0),(-1,-1), [LIGHT_GREEN, WHITE]),
    ("BOX",           (0,0),(-1,-1), 0.5, GREEN),
    ("INNERGRID",     (0,0),(-1,-1), 0.3, colors.HexColor("#C8E6C9")),
    ("TOPPADDING",    (0,0),(-1,-1), 4),
    ("BOTTOMPADDING", (0,0),(-1,-1), 4),
    ("LEFTPADDING",   (0,0),(-1,-1), 10),
]))
story.append(pearl_table)
story.append(sp(4))

# ── ONE-LINE REVISION TRICK ──────────────────────────────────────────────────
revision = ("CF = Chromosome <b>7</b> → <b>F508</b> → Thick mucus → "
            "<b>Salty sweat</b> → Pseudomonas lungs → <b>Steatorrhea</b> → "
            "Sweat Cl⁻ <b>>60</b> → <b>Ivacaftor</b> + Enzymes + Chest physio")
rev_data = [[
    Paragraph("🚀  ONE-LINE REVISION TRICK", style("rh", fontSize=9,
              fontName="Helvetica-Bold", textColor=WHITE, spaceAfter=3)),
    Paragraph(revision, style("rb", fontSize=8.5, leading=13,
              fontName="Helvetica", textColor=WHITE, spaceAfter=0))
]]
rev_table = Table(rev_data, colWidths=[62*mm, W-2*MARGIN-64*mm])
rev_table.setStyle(TableStyle([
    ("BACKGROUND",    (0,0),(-1,-1), DARK_TEAL),
    ("VALIGN",        (0,0),(-1,-1), "MIDDLE"),
    ("TOPPADDING",    (0,0),(-1,-1), 10),
    ("BOTTOMPADDING", (0,0),(-1,-1), 10),
    ("LEFTPADDING",   (0,0),(-1,-1), 10),
    ("RIGHTPADDING",  (0,0),(-1,-1), 10),
    ("LINEAFTER",     (0,0),(0,-1),  1, TEAL),
]))
story.append(rev_table)
story.append(sp(3))

# ── FOOTER ───────────────────────────────────────────────────────────────────
footer_data = [[Paragraph(
    "Prepared for MBBS Final Year  ·  Cystic Fibrosis  ·  High-Yield Notes",
    style("ft", fontSize=7.5, textColor=colors.HexColor("#888888"),
          fontName="Helvetica", alignment=TA_CENTER))]]
footer_table = Table(footer_data, colWidths=[W-2*MARGIN])
footer_table.setStyle(TableStyle([
    ("TOPPADDING",    (0,0),(-1,-1), 3),
    ("BOTTOMPADDING", (0,0),(-1,-1), 3),
    ("ALIGN",         (0,0),(-1,-1), "CENTER"),
    ("LINEABOVE",     (0,0),(-1,-1), 0.5, colors.HexColor("#AAAAAA")),
]))
story.append(footer_table)

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print("PDF generated successfully!")
Running Command

cd /home/daytona/workspace/cf-notes && python3 generate_cf_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/cf-notes/

Taiyaar hai! 🎉 Tera Cystic Fibrosis PDF ban gaya hai - saara content cover kiya gaya hai ek professional medical study poster mein.

Cystic Fibrosis MBBS

PDF Document · PDF


PDF mein kya kya hai:

SectionDetail
Title BannerDark teal header - MBBS Final Year badge
Definition BoxKey points highlighted
Mnemonic: CLOGGED FLUIDSColor-coded with orange arrows
GeneticsTable + "7 din se F-508 gayab hai" trick
PathophysiologyStep-by-step numbered flow
6 Organs AffectedColor-coded 3x2 grid boxes
DiagnosisGold standard highlighted + table
Management2-column layout, all 8 steps
CFTR ModulatorsPurple drug table with MOA
ComplicationsRed 2-column table
Exam PearlsGreen checklist - 10 high-yield points
One-Line RevisionDark footer banner
Download karo, print karo, aur yaad karlo! 💪

Nhi bana

Running Command

ls -lh /home/daytona/workspace/cf-notes/ && python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/cf-notes/Cystic_Fibrosis_MBBS.pdf') print(f'Pages: {len(r.pages)}') print(f'Page 1 text (first 200 chars): {r.pages[0].extract_text()[:200]}') "

PDF sahi ban gayi hai - 3 pages, saara content hai. Problem sirf download link ke saath hai. Try karo is link se:

Cystic Fibrosis MBBS

PDF Document · PDF

Agar ye bhi nahi chala, toh bata - main ek image format (PNG) mein convert karke dunga jo seedha dekh sako. Kya problem aa rahi hai exactly - link nahi khul raha ya kuch aur?

Convert PDF to high-resolution PNG images

Running Command

which pdftoppm && pdftoppm -r 200 /home/daytona/workspace/cf-notes/Cystic_Fibrosis_MBBS.pdf /home/daytona/workspace/cf-notes/cf_page && ls -lh /home/daytona/workspace/cf-notes/

Running Command

python3 -c " from PIL import Image import os for i in range(1, 4): ppm = f'/home/daytona/workspace/cf-notes/cf_page-{i}.ppm' png = f'/home/daytona/workspace/cf-notes/CF_Page_{i}.png' img = Image.open(ppm) img.save(png, 'PNG', optimize=True) os.remove(ppm) size = os.path.getsize(png) / 1024 print(f'Page {i}: {img.size[0]}x{img.size[1]}px | {size:.0f} KB -> {png}') "

Teeno pages PNG mein convert ho gaye - 1654x2339px (A4 full resolution). Download karo:
Page 1 - Definition, Mnemonic, Genetics, Pathophysiology

CF Page 1

Image · PNG

Page 2 - Organs Affected, Diagnosis, Management

CF Page 2

Image · PNG

Page 3 - CFTR Drugs, Complications, Exam Pearls, Revision Trick

CF Page 3

Image · PNG

This is a shared conversation. Sign in to Orris to start your own chat.