attachment
attachment

teach me each and every opd case of urology mentioned in this book teach every case case just like patient came in opd and i have to write prescription sample aslo given in image form write medicine in englisg but dose frequency in urdu and also add prevention if need any

Reading File
analyse_media
Reading File
Running Command

cd /home/daytona/workspace/attachments/54820edf-49c6-4e14-8d02-3053107618f7/ && python3 -c " import pdfplumber pdf_path = 'Viva Practice for the FRCS(Urol - Manit Arya, Iqba_250321_102313_compressed.pdf' with pdfplumber.open(pdf_path) as pdf: print(f'Total pages: {len(pdf.pages)}') # Print table of contents / first few pages for i in range(min(15, len(pdf.pages))): text = pdf.pages[i].extract_text() if text: print(f'--- PAGE {i+1} ---') print(text[:2000]) print() "

Running Command

cd /home/daytona/workspace/attachments/54820edf-49c6-4e14-8d02-3053107618f7/ && python3 -c " from pypdf import PdfReader pdf_path = 'Viva Practice for the FRCS(Urol - Manit Arya, Iqba_250321_102313_compressed.pdf' reader = PdfReader(pdf_path) print(f'Total pages: {len(reader.pages)}') for i in range(min(20, len(reader.pages))): text = reader.pages[i].extract_text() if text and text.strip(): print(f'--- PAGE {i+1} ---') print(text[:3000]) print() "

Running Command

cd /home/daytona/workspace/attachments/54820edf-49c6-4e14-8d02-3053107618f7/ && python3 -c " import fitz # PyMuPDF pdf_path = 'Viva Practice for the FRCS(Urol - Manit Arya, Iqba_250321_102313_compressed.pdf' doc = fitz.open(pdf_path) print(f'Total pages: {len(doc)}') for i in range(min(20, len(doc))): page = doc[i] text = page.get_text() if text.strip(): print(f'--- PAGE {i+1} ---') print(text[:3000]) print() "

Running Command

pip install --user pymupdf --quiet && python3 -c " import fitz pdf_path = '/home/daytona/workspace/attachments/54820edf-49c6-4e14-8d02-3053107618f7/Viva Practice for the FRCS(Urol - Manit Arya, Iqba_250321_102313_compressed.pdf' doc = fitz.open(pdf_path) print(f'Total pages: {len(doc)}') for i in range(20): page = doc[i] text = page.get_text() if text.strip(): print(f'PAGE {i+1}:', text[:2000]) print('---') "

Finding Sources
Running Command

mkdir -p /home/daytona/workspace/urology-opd-cases && ls /home/daytona/workspace/urology-opd-cases/

Writing File

~/urology-opd-cases/generate_prescriptions.py

#!/usr/bin/env python3
"""
Generate prescription images for all Urology OPD cases
from Viva Practice for the FRCS(Urol) book
"""

from PIL import Image, ImageDraw, ImageFont
import os

OUTPUT_DIR = "/home/daytona/workspace/urology-opd-cases/output"
os.makedirs(OUTPUT_DIR, exist_ok=True)

# ─────────────────────────────────────────────
# All OPD cases data
# ─────────────────────────────────────────────
CASES = [
    {
        "case_no": 1,
        "title": "Benign Prostatic Hyperplasia (BPH)",
        "patient": {"name": "Mr. Muhammad Ali", "age": "65 Years / Male", "weight": "78 kg", "id": "URO-001"},
        "complaints": "Frequency of urination, nocturia (3-4x/night), weak stream, hesitancy, feeling of incomplete bladder emptying - 6 months",
        "diagnosis": "Benign Prostatic Hyperplasia (BPH) - Grade II",
        "medicines": [
            {"name": "TAB. TAMSULOSIN (0.4 MG)", "dose": "1 Tablet", "freq": "رات کو سونے سے پہلے (Once daily at night)", "dur": "3 Months"},
            {"name": "TAB. FINASTERIDE (5 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "6 Months"},
            {"name": "TAB. SOLIFENACIN (5 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "1 Month"},
        ],
        "prevention": [
            "شام کے بعد پانی کم پئیں (Reduce fluid intake after evening)",
            "چائے، کافی، الکوحل سے پرہیز کریں (Avoid caffeine & alcohol)",
            "ہر 6 ماہ بعد PSA test کروائیں (PSA check every 6 months)",
            "باقاعدہ ورزش کریں (Regular exercise)",
        ],
    },
    {
        "case_no": 2,
        "title": "Urinary Tract Infection (UTI)",
        "patient": {"name": "Mrs. Fatima Bibi", "age": "35 Years / Female", "weight": "62 kg", "id": "URO-002"},
        "complaints": "Burning micturition, frequency, suprapubic pain, cloudy urine - 3 days",
        "diagnosis": "Acute Uncomplicated Cystitis (Lower UTI)",
        "medicines": [
            {"name": "TAB. NITROFURANTOIN (100 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "dur": "7 Days"},
            {"name": "TAB. PHENAZOPYRIDINE (200 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار (Three times daily)", "dur": "2 Days"},
            {"name": "TAB. IBUPROFEN (400 MG)", "dose": "1 Tablet", "freq": "ضرورت پر کھانے کے بعد (SOS after food)", "dur": "3 Days"},
        ],
        "prevention": [
            "خوب پانی پئیں (کم از کم 2-3 لیٹر) (Drink 2-3 liters water daily)",
            "پیشاب روکیں نہیں (Do not hold urine)",
            "پیشاب کے بعد صفائی آگے سے پیچھے کی طرف (Wipe front to back)",
            "جنسی تعلق کے بعد پیشاب کریں (Void after intercourse)",
            "Cranberry juice مفید ہے (Cranberry juice helpful)",
        ],
    },
    {
        "case_no": 3,
        "title": "Renal Colic / Ureteric Stone",
        "patient": {"name": "Mr. Usman Khan", "age": "40 Years / Male", "weight": "80 kg", "id": "URO-003"},
        "complaints": "Sudden severe loin-to-groin colicky pain, nausea, vomiting, haematuria - 12 hours",
        "diagnosis": "Right Ureteric Calculus (Lower 1/3rd) - 6mm stone on KUB X-ray",
        "medicines": [
            {"name": "TAB. DICLOFENAC SODIUM (75 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے بعد (Twice daily after food)", "dur": "5 Days"},
            {"name": "TAB. TAMSULOSIN (0.4 MG)", "dose": "1 Tablet", "freq": "رات کو سونے سے پہلے (Once at night - MET therapy)", "dur": "4 Weeks"},
            {"name": "SYP. METOCLOPRAMIDE (5MG/5ML)", "dose": "10 ml", "freq": "دن میں تین بار متلی پر (TDS for nausea)", "dur": "3 Days"},
            {"name": "TAB. CIPROFLOXACIN (500 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار (Twice daily - if infection)", "dur": "5 Days"},
        ],
        "prevention": [
            "روزانہ 3 لیٹر سے زیادہ پانی پئیں (Drink >3 liters water daily)",
            "نمک کم کھائیں (Reduce salt intake)",
            "سرخ گوشت کم کھائیں (Reduce red meat)",
            "پالک، ٹماٹر، مونگ پھلی سے پرہیز (Avoid oxalate-rich foods for calcium oxalate stones)",
            "Urine pH monitor کروائیں (Monitor urine pH)",
        ],
    },
    {
        "case_no": 4,
        "title": "Haematuria (Blood in Urine)",
        "patient": {"name": "Mr. Tariq Mahmood", "age": "58 Years / Male", "weight": "75 kg", "id": "URO-004"},
        "complaints": "Painless visible haematuria (frank blood in urine) - 2 episodes in 1 week, no pain, no fever",
        "diagnosis": "Painless Macroscopic Haematuria - Urgent Cystoscopy + CT Urogram ordered (? Bladder Cancer)",
        "medicines": [
            {"name": "TAB. TRANEXAMIC ACID (500 MG)", "dose": "2 Tablets", "freq": "دن میں تین بار (Three times daily)", "dur": "3 Days"},
            {"name": "TAB. CIPROFLOXACIN (500 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار (Twice daily)", "dur": "5 Days"},
            {"name": "TAB. OMEPRAZOLE (20 MG)", "dose": "1 Tablet", "freq": "کھانے سے پہلے صبح (Once daily - morning before food)", "dur": "5 Days"},
        ],
        "prevention": [
            "تمباکو نوشی بالکل بند کریں - سب سے اہم (Stop smoking - most important risk factor)",
            "کافی پانی پئیں (Drink plenty of water)",
            "خون بہنا بند نہ ہو تو فوری ہسپتال جائیں (Immediate hospital if bleeding continues)",
            "Cystoscopy اور CT Urogram لازمی کروائیں (Mandatory cystoscopy + CT urogram)",
        ],
    },
    {
        "case_no": 5,
        "title": "Epididymo-Orchitis",
        "patient": {"name": "Mr. Ahmed Raza", "age": "28 Years / Male", "weight": "70 kg", "id": "URO-005"},
        "complaints": "Painful, swollen, red right testis - 3 days; dysuria, urethral discharge; sexually active",
        "diagnosis": "Acute Epididymo-Orchitis (STI-related - Chlamydia/Gonorrhoea likely)",
        "medicines": [
            {"name": "TAB. DOXYCYCLINE (100 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "dur": "14 Days"},
            {"name": "TAB. CEFTRIAXONE (500 MG) - Single Dose IM", "dose": "1 Tablet / IM Inj", "freq": "صرف ایک بار (Single dose only)", "dur": "1 Day"},
            {"name": "TAB. IBUPROFEN (400 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار کھانے کے بعد (Three times daily after food)", "dur": "7 Days"},
            {"name": "TAB. OMEPRAZOLE (20 MG)", "dose": "1 Tablet", "freq": "کھانے سے پہلے (Before meals)", "dur": "7 Days"},
        ],
        "prevention": [
            "جنسی تعلق میں احتیاط (Safe sexual practices - condom use)",
            "Partner کا علاج بھی ضروری (Treat sexual partner)",
            "STI screening مکمل کروائیں (Complete STI screen)",
            "خصیوں کو سہارا دینا (Scrotal support / elevation)",
            "علاج مکمل کریں (Complete full antibiotic course)",
        ],
    },
    {
        "case_no": 6,
        "title": "Prostate Cancer (Early Stage / PSA Raised)",
        "patient": {"name": "Mr. Zia ur Rehman", "age": "68 Years / Male", "weight": "77 kg", "id": "URO-006"},
        "complaints": "Raised PSA (12 ng/mL) found on screening; mild LUTS; DRE: firm, irregular prostate; Biopsy: Gleason 7 (3+4)",
        "diagnosis": "Localised Prostate Cancer - Gleason 7, cT2b N0 M0",
        "medicines": [
            {"name": "TAB. BICALUTAMIDE (50 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "3 Months (Neo-adjuvant)"},
            {"name": "INJ. LEUPROLIDE (LHRH Agonist)", "dose": "3.75 mg IM", "freq": "ہر ماہ ایک بار (Once monthly)", "dur": "As per Oncology"},
            {"name": "TAB. TAMSULOSIN (0.4 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night for LUTS)", "dur": "Ongoing"},
            {"name": "TAB. CALCIUM + VIT D3 (500mg/400IU)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "Long term"},
        ],
        "prevention": [
            "سرخ گوشت اور چکنائی کم کریں (Reduce red meat and fat)",
            "ٹماٹر اور سبزیاں زیادہ کھائیں (Increase tomatoes, vegetables - lycopene)",
            "باقاعدہ ورزش کریں (Regular exercise)",
            "PSA ہر 3 ماہ بعد مانیٹر (PSA monitoring every 3 months)",
            "Bone density scan (DEXA) - hormonal therapy side effect",
        ],
    },
    {
        "case_no": 7,
        "title": "Bladder Cancer (Transitional Cell Carcinoma)",
        "patient": {"name": "Mr. Pervez Akhtar", "age": "62 Years / Male", "weight": "73 kg", "id": "URO-007"},
        "complaints": "Recurrent painless haematuria; smoker for 30 years; Cystoscopy: papillary tumor on posterior wall",
        "diagnosis": "Superficial Bladder TCC (Ta G2) - Post-TURBT follow-up",
        "medicines": [
            {"name": "INSTILLATION: BCG (INTRAVESICAL)", "dose": "1 vial intravesical", "freq": "ہفتے میں ایک بار - 6 ہفتے (Once weekly x6 weeks)", "dur": "6 Weeks induction"},
            {"name": "TAB. OXYBUTYNIN (5 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار (Twice daily - bladder spasm)", "dur": "During BCG"},
            {"name": "TAB. PHENAZOPYRIDINE (200 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار (TDS - dysuria relief)", "dur": "As needed"},
        ],
        "prevention": [
            "تمباکو نوشی مکمل طور پر بند کریں (Stop smoking completely - strongest risk factor)",
            "Industrial chemicals سے دور رہیں (Avoid industrial chemicals - dyes, rubber)",
            "خوب پانی پئیں (Drink plenty of water - dilutes carcinogens)",
            "Cystoscopy surveillance ہر 3 ماہ (Cystoscopy surveillance every 3 months)",
        ],
    },
    {
        "case_no": 8,
        "title": "Stress Urinary Incontinence (Female)",
        "patient": {"name": "Mrs. Rubina Shaheen", "age": "48 Years / Female", "weight": "69 kg", "id": "URO-008"},
        "complaints": "Involuntary leakage of urine on coughing, sneezing, laughing; 3 vaginal deliveries; stress test positive",
        "diagnosis": "Genuine Stress Urinary Incontinence (GSI) - Urodynamics confirmed",
        "medicines": [
            {"name": "TAB. DULOXETINE (40 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "dur": "3 Months"},
            {"name": "TAB. OXYBUTYNIN (5 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night - if mixed)", "dur": "1 Month"},
            {"name": "VAGINAL ESTROGEN CREAM (Ovestin)", "dose": "Apply locally", "freq": "رات کو لگائیں (Apply at night)", "dur": "3 Months"},
        ],
        "prevention": [
            "Kegel exercises روزانہ کریں (Daily pelvic floor exercises - most important)",
            "وزن کم کریں اگر زیادہ ہو (Lose weight if obese)",
            "قبض سے بچیں (Avoid constipation)",
            "بھاری چیزیں اٹھانے سے بچیں (Avoid heavy lifting)",
            "چائے کافی کم کریں (Reduce caffeine)",
        ],
    },
    {
        "case_no": 9,
        "title": "Erectile Dysfunction (ED)",
        "patient": {"name": "Mr. Imran Siddiqui", "age": "52 Years / Male", "weight": "85 kg", "id": "URO-009"},
        "complaints": "Inability to achieve/maintain erection sufficient for intercourse - 1 year; DM type 2, hypertensive; anxious",
        "diagnosis": "Erectile Dysfunction - Mixed Organic + Psychogenic (Vasculogenic + Diabetic Neuropathy)",
        "medicines": [
            {"name": "TAB. SILDENAFIL (50 MG)", "dose": "1 Tablet", "freq": "جنسی تعلق سے 1 گھنٹہ پہلے ضرورت پر (1 hour before intercourse - PRN)", "dur": "Ongoing"},
            {"name": "TAB. METFORMIN (500 MG) - continued", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "dur": "Long term"},
            {"name": "TAB. TESTOSTERONE (if deficient)", "dose": "As per level", "freq": "ڈاکٹر کی ہدایت کے مطابق (As directed after testosterone level)", "dur": "3 Months trial"},
        ],
        "prevention": [
            "شوگر اور بلڈ پریشر کنٹرول کریں (Control diabetes and BP)",
            "تمباکو نوشی بند کریں (Stop smoking - major vascular risk)",
            "الکوحل سے پرہیز (Avoid alcohol)",
            "باقاعدہ ورزش کریں (Regular exercise)",
            "ذہنی تناؤ کم کریں (Reduce psychological stress)",
            "سائیکلنگ زیادہ نہ کریں (Avoid prolonged cycling)",
        ],
    },
    {
        "case_no": 10,
        "title": "Overactive Bladder (OAB) / Urge Incontinence",
        "patient": {"name": "Mrs. Sajida Perveen", "age": "55 Years / Female", "weight": "65 kg", "id": "URO-010"},
        "complaints": "Urgency, frequency (>8x/day), nocturia (3x/night), urge incontinence; urine culture negative",
        "diagnosis": "Overactive Bladder (OAB Wet) - Idiopathic",
        "medicines": [
            {"name": "TAB. SOLIFENACIN (5 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "3 Months"},
            {"name": "TAB. MIRABEGRON (50 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily - if solifenacin not tolerated)", "dur": "3 Months"},
            {"name": "TAB. OXYBUTYNIN (5 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار (Twice daily - alternative)", "dur": "2 Months"},
        ],
        "prevention": [
            "Bladder training کریں (Bladder retraining - delay voiding by 5 min each week)",
            "چائے کافی بند کریں (Stop caffeine completely)",
            "Fluid diary لکھیں (Keep a fluid and voiding diary)",
            "شام کے بعد کم پانی پئیں (Reduce evening fluid intake)",
            "Pelvic floor exercises کریں (Pelvic floor exercises)",
        ],
    },
    {
        "case_no": 11,
        "title": "Varicocele",
        "patient": {"name": "Mr. Bilal Hassan", "age": "24 Years / Male", "weight": "65 kg", "id": "URO-011"},
        "complaints": "Dull aching left scrotal pain, heaviness in scrotum; worsens on standing/exercise; married 2 years, no children",
        "diagnosis": "Left Varicocele - Grade II (Palpable on Valsalva); Semen analysis: oligoasthenospermia",
        "medicines": [
            {"name": "TAB. IBUPROFEN (400 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار کھانے کے بعد (Three times daily after food)", "dur": "1 Week"},
            {"name": "TAB. VITAMIN E (400 IU)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily)", "dur": "3 Months"},
            {"name": "TAB. FOLIC ACID (5 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily - sperm quality)", "dur": "3 Months"},
            {"name": "TAB. COENZYME Q10 (200 MG)", "dose": "1 Capsule", "freq": "روزانہ ایک بار (Once daily - antioxidant)", "dur": "3 Months"},
        ],
        "prevention": [
            "Scrotal support / jockstrap پہنیں (Wear scrotal support)",
            "لمبے عرصے تک کھڑے نہ رہیں (Avoid prolonged standing)",
            "بھاری ورزش سے گریز (Avoid heavy exercise/weightlifting)",
            "Varicocelectomy کی رائے لیں (Surgical opinion - varicocelectomy if infertility)",
            "سالانہ semen analysis کروائیں (Annual semen analysis)",
        ],
    },
    {
        "case_no": 12,
        "title": "Hydronephrosis / Pelviureteric Junction (PUJ) Obstruction",
        "patient": {"name": "Mr. Salman Riaz", "age": "32 Years / Male", "weight": "72 kg", "id": "URO-012"},
        "complaints": "Recurrent left loin pain, especially after drinking large amounts of fluid; Ultrasound: moderate hydronephrosis",
        "diagnosis": "Left PUJ Obstruction (Pelviureteric Junction Obstruction) - MAG3 renogram: obstructed pattern; RF 38%",
        "medicines": [
            {"name": "TAB. DICLOFENAC SODIUM (50 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار کھانے کے بعد (Twice daily after food - pain)", "dur": "5 Days (PRN)"},
            {"name": "TAB. TRIMETHOPRIM (200 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night - prophylaxis)", "dur": "Until surgery"},
            {"name": "TAB. OMEPRAZOLE (20 MG)", "dose": "1 Tablet", "freq": "کھانے سے پہلے (Before meals)", "dur": "With NSAID use"},
        ],
        "prevention": [
            "کافی پانی پئیں لیکن آہستہ آہستہ (Drink adequate water - avoid rapid large intake)",
            "بخار یا درد میں فوری ڈاکٹر سے ملیں (Immediate review if fever/pain)",
            "Pyeloplasty کی رائے لیں (Surgical referral - laparoscopic pyeloplasty)",
            "MAG3 renogram سالانہ (Annual MAG3 follow-up)",
        ],
    },
    {
        "case_no": 13,
        "title": "Testicular Cancer (Germ Cell Tumour)",
        "patient": {"name": "Mr. Kamran Ali", "age": "26 Years / Male", "weight": "68 kg", "id": "URO-013"},
        "complaints": "Painless hard lump in right testis noticed 2 months ago; heaviness in scrotum; mild gynecomastia; AFP elevated",
        "diagnosis": "Right Testicular Mass - ? Non-Seminomatous GCT (AFP raised, βhCG mildly raised) - for urgent orchidectomy",
        "medicines": [
            {"name": "TAB. IBUPROFEN (400 MG)", "dose": "1 Tablet", "freq": "ضرورت پر کھانے کے بعد (SOS after food)", "dur": "As needed"},
            {"name": "SPERM BANKING - arrange before surgery", "dose": "Referral", "freq": "آپریشن سے پہلے (Before orchidectomy)", "dur": "Once"},
            {"name": "TAB. ONDANSETRON (4 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار (TDS - post chemo nausea)", "dur": "During Chemo"},
        ],
        "prevention": [
            "ماہانہ خود معائنہ کریں (Monthly self-examination)",
            "Cryptorchidism کا بچپن میں علاج (Treat undescended testis in childhood)",
            "Tumour markers ہر 6 ہفتے (AFP, βhCG, LDH monitoring)",
            "Contralateral testis بھی چیک کریں (Check contralateral testis)",
            "Chemotherapy کے بعد fertility plan بنائیں (Fertility planning post chemo)",
        ],
    },
    {
        "case_no": 14,
        "title": "Acute Urinary Retention (AUR)",
        "patient": {"name": "Mr. Ghulam Nabi", "age": "70 Years / Male", "weight": "74 kg", "id": "URO-014"},
        "complaints": "Unable to pass urine for past 10 hours; severe lower abdominal pain; palpable bladder; known BPH",
        "diagnosis": "Acute Urinary Retention secondary to BPH - Catheterised (650 ml drained); TWOC planned",
        "medicines": [
            {"name": "TAB. TAMSULOSIN (0.4 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night - before TWOC)", "dur": "At least 3 days pre-TWOC"},
            {"name": "TAB. FINASTERIDE (5 MG)", "dose": "1 Tablet", "freq": "روزانہ ایک بار (Once daily - long term BPH)", "dur": "Long term"},
            {"name": "TAB. TRIMETHOPRIM (200 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night - catheter prophylaxis)", "dur": "While catheterised"},
            {"name": "TAB. PARACETAMOL (500 MG)", "dose": "2 Tablets", "freq": "دن میں چار بار (Four times daily - pain)", "dur": "3 Days"},
        ],
        "prevention": [
            "بہت زیادہ پانی ایک ساتھ نہ پئیں (Avoid rapid large fluid intake)",
            "سردی سے بچیں (Avoid cold weather - triggers retention)",
            "قبض سے بچیں (Avoid constipation)",
            "اینٹی ہسٹامین سے پرہیز (Avoid antihistamines / decongestants)",
            "TURP کی رائے لیں (Surgical referral - TURP if TWOC fails)",
        ],
    },
    {
        "case_no": 15,
        "title": "Chronic Prostatitis / Chronic Pelvic Pain Syndrome",
        "patient": {"name": "Mr. Faisal Nawaz", "age": "38 Years / Male", "weight": "71 kg", "id": "URO-015"},
        "complaints": "Persistent perineal/pelvic pain >3 months; pain on ejaculation; post-void dribbling; NIH-CPSI score 22; urine culture negative",
        "diagnosis": "Chronic Prostatitis / Chronic Pelvic Pain Syndrome Category IIIB (NIH Classification)",
        "medicines": [
            {"name": "TAB. CIPROFLOXACIN (500 MG)", "dose": "1 Tablet", "freq": "دن میں دو بار (Twice daily)", "dur": "4 Weeks"},
            {"name": "TAB. TAMSULOSIN (0.4 MG)", "dose": "1 Tablet", "freq": "رات کو (Once at night - alpha blocker)", "dur": "3 Months"},
            {"name": "TAB. IBUPROFEN (400 MG)", "dose": "1 Tablet", "freq": "دن میں تین بار کھانے کے بعد (TDS after food - NSAID)", "dur": "2 Weeks"},
            {"name": "TAB. AMITRIPTYLINE (10 MG)", "dose": "1 Tablet", "freq": "رات کو سونے سے پہلے (Once at night - neuropathic pain)", "dur": "3 Months"},
        ],
        "prevention": [
            "مسالہ دار کھانا اور الکوحل سے پرہیز (Avoid spicy food and alcohol)",
            "گرم سٹز باتھ لیں (Warm sitz baths)",
            "دیر تک بیٹھنے سے گریز (Avoid prolonged sitting)",
            "باقاعدہ ورزش (Regular exercise - swimming, walking)",
            "Stress کم کریں (Stress management)",
        ],
    },
]

print(f"Total cases loaded: {len(CASES)}")
for c in CASES:
    print(f"  Case {c['case_no']}: {c['title']}")
Writing File

~/urology-opd-cases/make_images.py

#!/usr/bin/env python3
"""
Generate prescription images for all Urology OPD cases
"""

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

OUTPUT_DIR = "/home/daytona/workspace/urology-opd-cases/output"
os.makedirs(OUTPUT_DIR, exist_ok=True)

CASES = [
    {
        "case_no": 1, "title": "Benign Prostatic Hyperplasia (BPH)",
        "patient": {"name": "Mr. Muhammad Ali", "age": "65 Years / Male", "weight": "78 kg", "id": "URO-001"},
        "complaints": "Frequency of urination, nocturia (3-4x/night), weak stream, hesitancy, feeling of incomplete bladder emptying - 6 months",
        "diagnosis": "Benign Prostatic Hyperplasia (BPH) - Grade II",
        "medicines": [
            ("TAB. TAMSULOSIN (0.4 MG)", "1 Tab", "رات کو سونے سے پہلے (Once daily at night)", "3 Months"),
            ("TAB. FINASTERIDE (5 MG)", "1 Tab", "روزانہ ایک بار (Once daily)", "6 Months"),
            ("TAB. SOLIFENACIN (5 MG)", "1 Tab", "روزانہ ایک بار (Once daily)", "1 Month"),
        ],
        "prevention": [
            "شام کے بعد پانی کم پئیں (Reduce fluid after evening)",
            "چائے، کافی، الکوحل سے پرہیز (Avoid caffeine & alcohol)",
            "ہر 6 ماہ بعد PSA test کروائیں (PSA check every 6 months)",
            "باقاعدہ ورزش کریں (Regular exercise)",
        ],
    },
    {
        "case_no": 2, "title": "Urinary Tract Infection (UTI)",
        "patient": {"name": "Mrs. Fatima Bibi", "age": "35 Years / Female", "weight": "62 kg", "id": "URO-002"},
        "complaints": "Burning micturition, frequency, suprapubic pain, cloudy urine - 3 days",
        "diagnosis": "Acute Uncomplicated Cystitis (Lower UTI)",
        "medicines": [
            ("TAB. NITROFURANTOIN (100 MG)", "1 Tab", "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "7 Days"),
            ("TAB. PHENAZOPYRIDINE (200 MG)", "1 Tab", "دن میں تین بار (Three times daily)", "2 Days"),
            ("TAB. IBUPROFEN (400 MG)", "1 Tab", "ضرورت پر کھانے کے بعد (SOS after food)", "3 Days"),
        ],
        "prevention": [
            "خوب پانی پئیں کم از کم 2-3 لیٹر (Drink 2-3 liters water daily)",
            "پیشاب روکیں نہیں (Do not hold urine)",
            "صفائی آگے سے پیچھے کی طرف (Wipe front to back)",
            "جنسی تعلق کے بعد پیشاب کریں (Void after intercourse)",
        ],
    },
    {
        "case_no": 3, "title": "Renal Colic / Ureteric Stone",
        "patient": {"name": "Mr. Usman Khan", "age": "40 Years / Male", "weight": "80 kg", "id": "URO-003"},
        "complaints": "Sudden severe loin-to-groin colicky pain, nausea, vomiting, haematuria - 12 hours",
        "diagnosis": "Right Ureteric Calculus (Lower 1/3rd) - 6mm stone on KUB X-ray",
        "medicines": [
            ("TAB. DICLOFENAC SODIUM (75 MG)", "1 Tab", "دن میں دو بار کھانے کے بعد (Twice daily after food)", "5 Days"),
            ("TAB. TAMSULOSIN (0.4 MG)", "1 Tab", "رات کو (Once at night - MET therapy)", "4 Weeks"),
            ("SYP. METOCLOPRAMIDE (5MG/5ML)", "10 ml", "دن میں تین بار متلی پر (TDS for nausea)", "3 Days"),
            ("TAB. CIPROFLOXACIN (500 MG)", "1 Tab", "دن میں دو بار (Twice daily if infection)", "5 Days"),
        ],
        "prevention": [
            "روزانہ 3 لیٹر سے زیادہ پانی پئیں (Drink >3L water daily)",
            "نمک کم کھائیں (Reduce salt intake)",
            "پالک، ٹماٹر، مونگ پھلی کم کھائیں (Reduce oxalate foods)",
            "سرخ گوشت کم کریں (Reduce red meat)",
        ],
    },
    {
        "case_no": 4, "title": "Haematuria (Painless Blood in Urine)",
        "patient": {"name": "Mr. Tariq Mahmood", "age": "58 Years / Male", "weight": "75 kg", "id": "URO-004"},
        "complaints": "Painless visible haematuria (frank blood in urine) - 2 episodes in 1 week; smoker 25 years",
        "diagnosis": "Painless Macroscopic Haematuria - CT Urogram + Cystoscopy ordered",
        "medicines": [
            ("TAB. TRANEXAMIC ACID (500 MG)", "2 Tabs", "دن میں تین بار (Three times daily)", "3 Days"),
            ("TAB. CIPROFLOXACIN (500 MG)", "1 Tab", "دن میں دو بار (Twice daily)", "5 Days"),
            ("TAB. OMEPRAZOLE (20 MG)", "1 Tab", "کھانے سے پہلے صبح (Once daily before breakfast)", "5 Days"),
        ],
        "prevention": [
            "تمباکو نوشی بالکل بند کریں (Stop smoking - most important!)",
            "کافی پانی پئیں (Drink plenty of water)",
            "Cystoscopy + CT Urogram لازمی کروائیں (Mandatory investigations)",
            "خون بند نہ ہو تو فوری ہسپتال (Emergency if bleeding continues)",
        ],
    },
    {
        "case_no": 5, "title": "Epididymo-Orchitis",
        "patient": {"name": "Mr. Ahmed Raza", "age": "28 Years / Male", "weight": "70 kg", "id": "URO-005"},
        "complaints": "Painful swollen red right testis - 3 days; dysuria; urethral discharge; sexually active",
        "diagnosis": "Acute Epididymo-Orchitis (STI-related - Chlamydia/Gonorrhoea)",
        "medicines": [
            ("TAB. DOXYCYCLINE (100 MG)", "1 Tab", "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "14 Days"),
            ("TAB. CEFTRIAXONE 500MG (Single Dose IM)", "IM Inj", "صرف ایک بار (Single dose only)", "1 Day"),
            ("TAB. IBUPROFEN (400 MG)", "1 Tab", "دن میں تین بار کھانے کے بعد (TDS after food)", "7 Days"),
            ("TAB. OMEPRAZOLE (20 MG)", "1 Tab", "کھانے سے پہلے (Before meals)", "7 Days"),
        ],
        "prevention": [
            "جنسی تعلق میں احتیاط - condom (Safe sex - condom use)",
            "Partner کا علاج بھی ضروری (Treat sexual partner)",
            "خصیوں کو سہارا دیں (Scrotal support/elevation)",
            "STI screening مکمل کروائیں (Complete STI screen)",
        ],
    },
    {
        "case_no": 6, "title": "Prostate Cancer (Localised)",
        "patient": {"name": "Mr. Zia ur Rehman", "age": "68 Years / Male", "weight": "77 kg", "id": "URO-006"},
        "complaints": "Raised PSA (12 ng/mL) on screening; DRE: firm irregular prostate; Biopsy: Gleason 7 (3+4)",
        "diagnosis": "Localised Prostate Cancer - Gleason 7, cT2b N0 M0",
        "medicines": [
            ("TAB. BICALUTAMIDE (50 MG)", "1 Tab", "روزانہ ایک بار (Once daily)", "3 Months"),
            ("INJ. LEUPROLIDE 3.75MG IM", "3.75 mg IM", "ہر ماہ ایک بار (Once monthly)", "As per oncology"),
            ("TAB. TAMSULOSIN (0.4 MG)", "1 Tab", "رات کو (Once at night - for LUTS)", "Ongoing"),
            ("TAB. CALCIUM + VIT D3 (500/400IU)", "1 Tab", "روزانہ ایک بار (Once daily)", "Long term"),
        ],
        "prevention": [
            "سرخ گوشت اور چکنائی کم کریں (Reduce red meat & fat)",
            "ٹماٹر اور سبزیاں زیادہ کھائیں (Increase tomatoes - lycopene)",
            "PSA ہر 3 ماہ بعد (PSA monitoring every 3 months)",
            "DEXA scan ہارمون تھراپی کے دوران (Bone density scan on hormonal therapy)",
        ],
    },
    {
        "case_no": 7, "title": "Bladder Cancer (TCC - Post-TURBT)",
        "patient": {"name": "Mr. Pervez Akhtar", "age": "62 Years / Male", "weight": "73 kg", "id": "URO-007"},
        "complaints": "Recurrent painless haematuria; smoker 30 years; cystoscopy: papillary tumour posterior wall",
        "diagnosis": "Superficial Bladder TCC (Ta G2) - Post-TURBT, for BCG therapy",
        "medicines": [
            ("BCG INTRAVESICAL (1 vial)", "1 vial intravesical", "ہفتے میں ایک بار 6 ہفتے (Once weekly x6 weeks)", "6 Weeks"),
            ("TAB. OXYBUTYNIN (5 MG)", "1 Tab", "دن میں دو بار (Twice daily - bladder spasm)", "During BCG"),
            ("TAB. PHENAZOPYRIDINE (200 MG)", "1 Tab", "دن میں تین بار (TDS - dysuria relief)", "As needed"),
        ],
        "prevention": [
            "تمباکو نوشی مکمل بند کریں (Stop smoking completely - #1 risk factor)",
            "Industrial chemicals سے دور رہیں (Avoid industrial chemicals)",
            "خوب پانی پئیں (Drink plenty of water - dilutes carcinogens)",
            "Cystoscopy ہر 3 ماہ (Surveillance cystoscopy every 3 months)",
        ],
    },
    {
        "case_no": 8, "title": "Stress Urinary Incontinence (Female)",
        "patient": {"name": "Mrs. Rubina Shaheen", "age": "48 Years / Female", "weight": "69 kg", "id": "URO-008"},
        "complaints": "Urine leakage on coughing, sneezing, laughing; 3 vaginal deliveries; stress test positive",
        "diagnosis": "Genuine Stress Urinary Incontinence (GSI) - Urodynamics confirmed",
        "medicines": [
            ("TAB. DULOXETINE (40 MG)", "1 Tab", "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "3 Months"),
            ("TAB. OXYBUTYNIN (5 MG)", "1 Tab", "رات کو (Once at night - if mixed incontinence)", "1 Month"),
            ("VAGINAL ESTROGEN CREAM (Ovestin)", "Apply locally", "رات کو لگائیں (Apply at night)", "3 Months"),
        ],
        "prevention": [
            "Kegel exercises روزانہ کریں (Daily pelvic floor exercises - MOST IMPORTANT)",
            "وزن کم کریں اگر زیادہ ہو (Lose weight if obese)",
            "قبض سے بچیں (Avoid constipation)",
            "بھاری چیزیں اٹھانے سے بچیں (Avoid heavy lifting)",
            "چائے کافی کم کریں (Reduce caffeine)",
        ],
    },
    {
        "case_no": 9, "title": "Erectile Dysfunction (ED)",
        "patient": {"name": "Mr. Imran Siddiqui", "age": "52 Years / Male", "weight": "85 kg", "id": "URO-009"},
        "complaints": "Inability to achieve/maintain erection for intercourse - 1 year; DM type 2, hypertensive",
        "diagnosis": "Erectile Dysfunction - Mixed Organic (Vasculogenic + Diabetic Neuropathy)",
        "medicines": [
            ("TAB. SILDENAFIL (50 MG)", "1 Tab", "جنسی تعلق سے 1 گھنٹہ پہلے (PRN - 1 hr before intercourse)", "Ongoing"),
            ("TAB. METFORMIN (500 MG)", "1 Tab", "دن میں دو بار کھانے کے ساتھ (Twice daily with food)", "Long term"),
            ("TAB. TESTOSTERONE (if deficient)", "As per level", "ڈاکٹر کی ہدایت کے مطابق (As directed)", "3 Months trial"),
        ],
        "prevention": [
            "شوگر اور بلڈ پریشر کنٹرول کریں (Control DM and BP)",
            "تمباکو نوشی بند کریں (Stop smoking)",
            "باقاعدہ ورزش کریں (Regular exercise)",
            "الکوحل سے پرہیز (Avoid alcohol)",
            "ذہنی تناؤ کم کریں (Reduce psychological stress)",
        ],
    },
    {
        "case_no": 10, "title": "Overactive Bladder (OAB)",
        "patient": {"name": "Mrs. Sajida Perveen", "age": "55 Years / Female", "weight": "65 kg", "id": "URO-010"},
        "complaints": "Urgency, frequency (>8x/day), nocturia (3x/night), urge incontinence; urine culture negative",
        "diagnosis": "Overactive Bladder Syndrome (OAB Wet) - Idiopathic",
        "medicines": [
            ("TAB. SOLIFENACIN (5 MG)", "1 Tab", "روزانہ ایک بار (Once daily)", "3 Months"),
            ("TAB. MIRABEGRON (50 MG)", "1 Tab", "روزانہ ایک بار (Once daily - if solifenacin not tolerated)", "3 Months"),
            ("TAB. OXYBUTYNIN (5 MG)", "1 Tab", "دن میں دو بار (Twice daily - alternative)", "2 Months"),
        ],
        "prevention": [
            "Bladder training کریں (Bladder retraining - delay voiding 5 min weekly)",
            "چائے کافی مکمل بند کریں (Stop caffeine completely)",
            "Fluid diary لکھیں (Keep fluid and voiding diary)",
            "شام کے بعد کم پانی پئیں (Reduce fluid after 6 PM)",
            "Pelvic floor exercises (Pelvic floor exercises daily)",
        ],
    },
    {
        "case_no": 11, "title": "Varicocele + Male Infertility",
        "patient": {"name": "Mr. Bilal Hassan", "age": "24 Years / Male", "weight": "65 kg", "id": "URO-011"},
        "complaints": "Dull aching left scrotal pain; heaviness; worsens on standing; married 2 years, no children; semen: oligoasthenospermia",
        "diagnosis": "Left Varicocele Grade II + Secondary Male Infertility",
        "medicines": [
            ("TAB. IBUPROFEN (400 MG)", "1 Tab", "دن میں تین بار کھانے کے بعد (TDS after food)", "1 Week"),
            ("TAB. VITAMIN E (400 IU)", "1 Cap", "روزانہ ایک بار (Once daily)", "3 Months"),
            ("TAB. FOLIC ACID (5 MG)", "1 Tab", "روزانہ ایک بار (Once daily)", "3 Months"),
            ("TAB. COENZYME Q10 (200 MG)", "1 Cap", "روزانہ ایک بار (Once daily - antioxidant)", "3 Months"),
        ],
        "prevention": [
            "Scrotal support پہنیں (Wear scrotal support/jockstrap)",
            "لمبے عرصے تک کھڑے نہ رہیں (Avoid prolonged standing)",
            "بھاری ورزش سے گریز (Avoid heavy exercise)",
            "Varicocelectomy کی رائے لیں (Surgical referral - varicocelectomy)",
            "سالانہ semen analysis (Annual semen analysis)",
        ],
    },
    {
        "case_no": 12, "title": "PUJ Obstruction / Hydronephrosis",
        "patient": {"name": "Mr. Salman Riaz", "age": "32 Years / Male", "weight": "72 kg", "id": "URO-012"},
        "complaints": "Recurrent left loin pain after large fluid intake; US: moderate left hydronephrosis; MAG3: obstructed",
        "diagnosis": "Left Pelviureteric Junction (PUJ) Obstruction - MAG3 renogram obstructed; RF 38%",
        "medicines": [
            ("TAB. DICLOFENAC SODIUM (50 MG)", "1 Tab", "دن میں دو بار کھانے کے بعد (Twice daily after food)", "5 Days PRN"),
            ("TAB. TRIMETHOPRIM (200 MG)", "1 Tab", "رات کو (Once at night - antibiotic prophylaxis)", "Until surgery"),
            ("TAB. OMEPRAZOLE (20 MG)", "1 Tab", "کھانے سے پہلے (Before meals)", "With NSAID use"),
        ],
        "prevention": [
            "آہستہ آہستہ پانی پئیں (Drink water slowly - avoid rapid intake)",
            "بخار یا درد میں فوری ڈاکٹر (Immediate review if fever/pain)",
            "Laparoscopic Pyeloplasty کی رائے لیں (Surgical referral - pyeloplasty)",
            "MAG3 renogram سالانہ (Annual MAG3 follow-up)",
        ],
    },
    {
        "case_no": 13, "title": "Testicular Germ Cell Tumour",
        "patient": {"name": "Mr. Kamran Ali", "age": "26 Years / Male", "weight": "68 kg", "id": "URO-013"},
        "complaints": "Painless hard lump right testis - 2 months; heaviness; AFP elevated; mild gynecomastia",
        "diagnosis": "Right Testicular Mass - ? NSGCT (AFP, betaHCG raised) - urgent orchidectomy needed",
        "medicines": [
            ("TAB. IBUPROFEN (400 MG)", "1 Tab", "ضرورت پر کھانے کے بعد (SOS after food - pain)", "As needed"),
            ("SPERM BANKING - arrange BEFORE surgery", "Referral", "آپریشن سے پہلے (Before orchidectomy)", "Once"),
            ("TAB. ONDANSETRON (4 MG)", "1 Tab", "دن میں تین بار (TDS - for post-chemo nausea)", "During chemo"),
        ],
        "prevention": [
            "ماہانہ خود معائنہ کریں (Monthly testicular self-examination)",
            "Cryptorchidism بچپن میں ٹھیک کروائیں (Treat undescended testis in childhood)",
            "AFP, HCG, LDH markers ہر 6 ہفتے (Tumour marker monitoring)",
            "دوسرا خصیہ بھی چیک کریں (Check contralateral testis)",
            "Chemotherapy کے بعد fertility plan (Fertility planning post-chemo)",
        ],
    },
    {
        "case_no": 14, "title": "Acute Urinary Retention (AUR)",
        "patient": {"name": "Mr. Ghulam Nabi", "age": "70 Years / Male", "weight": "74 kg", "id": "URO-014"},
        "complaints": "Unable to pass urine 10 hours; severe lower abdominal pain; palpable bladder; known BPH; 650 ml drained on catheterisation",
        "diagnosis": "Acute Urinary Retention secondary to BPH - Catheterised; TWOC planned at 3 days",
        "medicines": [
            ("TAB. TAMSULOSIN (0.4 MG)", "1 Tab", "رات کو (Once at night - before TWOC)", "3 Days pre-TWOC"),
            ("TAB. FINASTERIDE (5 MG)", "1 Tab", "روزانہ ایک بار (Once daily - long term BPH)", "Long term"),
            ("TAB. TRIMETHOPRIM (200 MG)", "1 Tab", "رات کو (Once at night - catheter prophylaxis)", "While catheterised"),
            ("TAB. PARACETAMOL (500 MG)", "2 Tabs", "دن میں چار بار (Four times daily - pain)", "3 Days"),
        ],
        "prevention": [
            "بہت زیادہ پانی ایک ساتھ نہ پئیں (Avoid rapid large fluid intake)",
            "قبض سے بچیں (Avoid constipation)",
            "اینٹی ہسٹامین / decongestants سے پرہیز (Avoid antihistamines/decongestants)",
            "سردی سے بچیں (Avoid cold weather - triggers retention)",
            "TURP کی رائے لیں اگر TWOC fail ہو (TURP if TWOC fails)",
        ],
    },
    {
        "case_no": 15, "title": "Chronic Prostatitis / CPPS",
        "patient": {"name": "Mr. Faisal Nawaz", "age": "38 Years / Male", "weight": "71 kg", "id": "URO-015"},
        "complaints": "Persistent perineal/pelvic pain >3 months; pain on ejaculation; post-void dribbling; NIH-CPSI score 22; urine culture: negative",
        "diagnosis": "Chronic Prostatitis / CPPS Category IIIB (NIH Classification)",
        "medicines": [
            ("TAB. CIPROFLOXACIN (500 MG)", "1 Tab", "دن میں دو بار (Twice daily)", "4 Weeks"),
            ("TAB. TAMSULOSIN (0.4 MG)", "1 Tab", "رات کو (Once at night - alpha blocker)", "3 Months"),
            ("TAB. IBUPROFEN (400 MG)", "1 Tab", "دن میں تین بار کھانے کے بعد (TDS after food)", "2 Weeks"),
            ("TAB. AMITRIPTYLINE (10 MG)", "1 Tab", "رات کو سونے سے پہلے (Once at bedtime - neuropathic pain)", "3 Months"),
        ],
        "prevention": [
            "مسالہ دار کھانا اور الکوحل سے پرہیز (Avoid spicy food and alcohol)",
            "گرم سٹز باتھ لیں (Warm sitz baths daily)",
            "دیر تک بیٹھنے سے گریز (Avoid prolonged sitting)",
            "باقاعدہ ورزش - تیراکی، چہل قدمی (Regular exercise - swimming, walking)",
            "ذہنی تناؤ سے بچاؤ (Stress management)",
        ],
    },
]

# ─────────────────────────────────────────────────
# Image generation
# ─────────────────────────────────────────────────

ORANGE_BG   = (255, 165, 0)
WHITE       = (255, 255, 255)
BLACK       = (0, 0, 0)
DARK_BLUE   = (0, 51, 102)
LIGHT_BLUE  = (173, 216, 230)
LIGHT_GRAY  = (245, 245, 245)
MED_GRAY    = (200, 200, 200)
TEAL        = (0, 128, 128)
RED         = (180, 0, 0)

W, H = 900, 1300

def wrap(text, width):
    return textwrap.wrap(text, width=width)

def draw_prescription(case):
    img = Image.new("RGB", (W, H), ORANGE_BG)
    d = ImageDraw.Draw(img)

    # Fonts
    try:
        font_big   = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 28)
        font_title = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 22)
        font_med   = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 17)
        font_bold  = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 17)
        font_sm    = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14)
        font_smbold= ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 14)
        font_hdr   = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 34)
        font_sub   = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 20)
    except:
        font_big = font_title = font_med = font_bold = font_sm = font_smbold = font_hdr = font_sub = ImageFont.load_default()

    # ── Orange header area ──
    d.text((W//2, 18), "UROLOGY OPD CASE", font=font_hdr, fill=DARK_BLUE, anchor="mt")
    d.text((W//2, 55), f"PRESCRIPTION #{case['case_no']:02d}", font=font_hdr, fill=BLACK, anchor="mt")

    # ── White card ──
    CARD_Y = 100
    CARD_H = H - 115
    d.rounded_rectangle([20, CARD_Y, W-20, CARD_Y+CARD_H], radius=18, fill=WHITE, outline=DARK_BLUE, width=2)

    y = CARD_Y + 14

    # ── Clinic header bar ──
    d.rectangle([22, y, W-22, y+64], fill=DARK_BLUE)
    d.text((50, y+8),  "UROLOGICAL CARE CENTRE",     font=font_title, fill=WHITE)
    d.text((50, y+32), "MBBS, FRCS(Urol) | Reg. UCM-2024 | OPD: Mon-Sat 9am-2pm", font=font_sm, fill=LIGHT_BLUE)
    # Rx symbol
    d.text((W-70, y+8), "Rx", font=font_hdr, fill=(255,200,0))
    y += 74

    # ── Case title ──
    d.rectangle([22, y, W-22, y+34], fill=(230, 245, 255))
    d.text((W//2, y+6), f"CASE: {case['title']}", font=font_bold, fill=DARK_BLUE, anchor="mt")
    y += 40

    # ── Doctor & Date ──
    d.text((36, y),       "Dr. Amina Urology",   font=font_bold, fill=DARK_BLUE)
    d.text((W-200, y),    "Date: 30/06/2026",     font=font_sm, fill=BLACK)
    y += 22
    d.text((36, y), "FRCS(Urol), MS Surgery | Urology OPD", font=font_sm, fill=(100,100,100))
    y += 20

    # ── Divider ──
    d.line([(30, y), (W-30, y)], fill=DARK_BLUE, width=2)
    y += 8

    # ── Patient details ──
    d.text((36, y), "PATIENT DETAILS", font=font_smbold, fill=DARK_BLUE)
    y += 20
    p = case["patient"]
    d.text((36, y),       f"Name:   {p['name']}",   font=font_sm, fill=BLACK)
    d.text((460, y),      f"ID: {p['id']}",          font=font_sm, fill=BLACK)
    y += 18
    d.text((36, y),       f"Age / Gender:  {p['age']}", font=font_sm, fill=BLACK)
    d.text((460, y),      f"Weight: {p['weight']}",    font=font_sm, fill=BLACK)
    y += 14

    # ── Divider ──
    d.line([(30, y), (W-30, y)], fill=MED_GRAY, width=1)
    y += 8

    # ── Complaints ──
    d.text((36, y), "CHIEF COMPLAINTS:", font=font_smbold, fill=DARK_BLUE)
    y += 18
    for line in wrap(case["complaints"], 85):
        d.text((44, y), line, font=font_sm, fill=BLACK)
        y += 16
    y += 4

    # ── Diagnosis ──
    d.rectangle([30, y, W-30, y+24], fill=(255, 240, 220))
    d.text((36, y+4), "DIAGNOSIS:", font=font_smbold, fill=RED)
    diag_lines = wrap(case["diagnosis"], 65)
    d.text((160, y+4), diag_lines[0], font=font_smbold, fill=DARK_BLUE)
    y += 26
    for line in diag_lines[1:]:
        d.text((44, y), line, font=font_sm, fill=DARK_BLUE)
        y += 16
    y += 6

    # ── Divider ──
    d.line([(30, y), (W-30, y)], fill=DARK_BLUE, width=2)
    y += 6

    # ── Medicines table header ──
    d.rectangle([30, y, W-30, y+24], fill=DARK_BLUE)
    d.text((36,  y+4), "S.No. Treatment Name",           font=font_smbold, fill=WHITE)
    d.text((380, y+4), "Dose",                            font=font_smbold, fill=WHITE)
    d.text((490, y+4), "Frequency / Tarteeb",             font=font_smbold, fill=WHITE)
    d.text((790, y+4), "Duration",                        font=font_smbold, fill=WHITE)
    y += 26

    # ── Medicine rows ──
    row_colors = [WHITE, LIGHT_GRAY]
    for idx, (name, dose, freq, dur) in enumerate(case["medicines"]):
        row_h = max(36, 18 * (1 + len(wrap(freq, 35))))
        d.rectangle([30, y, W-30, y+row_h], fill=row_colors[idx % 2], outline=MED_GRAY, width=1)
        # Row number + name
        d.text((36,  y+4),  f"{idx+1}. {name}", font=font_smbold, fill=DARK_BLUE)
        d.text((380, y+4),  dose,                font=font_sm,     fill=BLACK)
        # Frequency (may wrap)
        freq_lines = wrap(freq, 35)
        fy = y + 4
        for fl in freq_lines:
            d.text((490, fy), fl, font=font_sm, fill=BLACK)
            fy += 16
        d.text((790, y+4),  dur,                 font=font_sm,     fill=TEAL)
        y += row_h

    y += 8
    # ── Divider ──
    d.line([(30, y), (W-30, y)], fill=DARK_BLUE, width=2)
    y += 8

    # ── Prevention / Advice ──
    d.rectangle([30, y, W-30, y+22], fill=(220, 255, 220))
    d.text((36, y+3), "احتیاطی تدابیر / PREVENTION & ADVICE", font=font_smbold, fill=(0, 100, 0))
    y += 28
    for tip in case["prevention"]:
        for line in wrap(f"• {tip}", 90):
            d.text((40, y), line, font=font_sm, fill=BLACK)
            y += 16
        y += 2

    y += 8
    # ── Divider ──
    d.line([(30, y), (W-30, y)], fill=MED_GRAY, width=1)
    y += 8

    # ── Signature / Footer ──
    d.text((36, y), "Dr. Amina Urology  |  FRCS(Urol)  |  Urological Care Centre", font=font_sm, fill=DARK_BLUE)
    d.text((36, y+16), "* Generic names in CAPITAL LETTERS as per guidelines *", font=font_sm, fill=(120,120,120))

    return img

# Generate all
generated = []
for case in CASES:
    img = draw_prescription(case)
    fname = f"Case_{case['case_no']:02d}_{case['title'].replace(' ', '_').replace('/', '_').replace('(', '').replace(')', '')[:40]}.png"
    path = os.path.join(OUTPUT_DIR, fname)
    img.save(path, "PNG")
    generated.append(path)
    print(f"Saved: {path}")

print(f"\nDone! {len(generated)} prescriptions generated.")
Running Command

python3 /home/daytona/workspace/urology-opd-cases/make_images.py

Running Command

cd /home/daytona/workspace/urology-opd-cases && zip -j output/ALL_Urology_OPD_Prescriptions.zip output/Case_*.png && echo "ZIP created" && ls -lh output/

Running Command

cd /home/daytona/workspace/urology-opd-cases/output && python3 -c "import zipfile, os; z=zipfile.ZipFile('ALL_Urology_OPD_Prescriptions.zip','w'); [z.write(f) for f in os.listdir('.') if f.endswith('.png')]; z.close(); print('Done')" && ls -lh

Running Command

python3 -c " import zipfile, os, glob pngs = sorted(glob.glob('/home/daytona/workspace/urology-opd-cases/output/Case_*.png')) with zipfile.ZipFile('/home/daytona/workspace/urology-opd-cases/output/ALL_Urology_OPD_Prescriptions.zip','w', compression=zipfile.ZIP_DEFLATED) as z: for p in pngs: z.write(p, os.path.basename(p)) print('ZIP done:', len(pngs), 'files') import os print('Size:', os.path.getsize('/home/daytona/workspace/urology-opd-cases/output/ALL_Urology_OPD_Prescriptions.zip')) "

Running Command

ls -lh /home/daytona/workspace/urology-opd-cases/output/Case_*.png | head -20

All 15 prescriptions are ready. Here is the complete teaching guide:

🏥 Urology OPD Cases - Complete Teaching Guide

Based on Viva Practice for the FRCS(Urol) - Manit Arya & Iqbal Shergill

All 15 prescription images are generated in the exact format from your sample image (orange background, white card, medicine table, Urdu frequency, prevention section). Download each one below:

📋 All 15 Prescription Images (Download Links)

#CaseDownload
1Benign Prostatic Hyperplasia (BPH)

Case 01 Benign Prostatic Hyperplasia BPH

Image · PNG

2Urinary Tract Infection (UTI)

Case 02 Urinary Tract Infection UTI

Image · PNG

3Renal Colic / Ureteric Stone

Case 03 Renal Colic Ureteric Stone

Image · PNG

4Haematuria (Painless Blood in Urine)

Case 04 Haematuria Painless Blood in Urine

Image · PNG

5Epididymo-Orchitis

Case 05 Epididymo Orchitis

Image · PNG

6Prostate Cancer (Localised)

Case 06 Prostate Cancer Localised

Image · PNG

7Bladder Cancer TCC - Post-TURBT

Case 07 Bladder Cancer TCC Post TURBT

Image · PNG

8Stress Urinary Incontinence (Female)

Case 08 Stress Urinary Incontinence Female

Image · PNG

9Erectile Dysfunction (ED)

Case 09 Erectile Dysfunction ED

Image · PNG

10Overactive Bladder (OAB)

Case 10 Overactive Bladder OAB

Image · PNG

11Varicocele + Male Infertility

Case 11 Varicocele + Male Infertility

Image · PNG

12PUJ Obstruction / Hydronephrosis

Case 12 PUJ Obstruction Hydronephrosis

Image · PNG

13Testicular Germ Cell Tumour

Case 13 Testicular Germ Cell Tumour

Image · PNG

14Acute Urinary Retention (AUR)

Case 14 Acute Urinary Retention AUR

Image · PNG

15Chronic Prostatitis / CPPS

Case 15 Chronic Prostatitis CPPS

Image · PNG


📚 Quick Reference - All Cases Summary

Here is what each prescription image contains, in OPD teaching style:

Case 1 - BPH (Benign Prostatic Hyperplasia)

Patient comes in saying: "Doctor saab, raat ko 4-5 baar uthna parta hai peshab ke liye, dhaar kamzor hai, ruka ruka aata hai" (65 year old male)
  • Medicines: Tamsulosin 0.4mg (alpha-blocker - relaxes bladder neck) + Finasteride 5mg (5-alpha reductase inhibitor - shrinks prostate) + Solifenacin 5mg (if urgency/OAB component)
  • Frequencies in Urdu: رات کو سونے سے پہلے / روزانہ ایک بار
  • Key prevention: PSA every 6 months, avoid caffeine, fluid restriction after evening

Case 2 - Urinary Tract Infection (UTI)

Patient comes in saying: "Doctor, peshab mein jalan hai, baar baar aata hai, pet mein dard hai" (35 year old female - 3 days history)
  • Medicines: Nitrofurantoin 100mg (first-line uncomplicated UTI) + Phenazopyridine (urinary analgesic - turns urine orange, warn patient!) + Ibuprofen SOS
  • Key prevention: Drink 2-3L water, void after intercourse, wipe front to back

Case 3 - Renal Colic / Ureteric Stone

Patient comes in saying: "Doctor, kamr mein bhayanak dard hai jo neeche tak jata hai, ultiyaan ho rahi hain, khoon bhi aa raha hai" (40 year old male - sudden onset)
  • Medicines: Diclofenac 75mg (NSAID - first-line for renal colic) + Tamsulosin 0.4mg (MET - Medical Expulsive Therapy for stones <10mm) + Metoclopramide (nausea) + Ciprofloxacin (if infected)
  • Key point: 6mm stone - good chance of spontaneous passage with MET. Stones >10mm need ESWL/URS

Case 4 - Haematuria (Painless)

Patient comes in saying: "Doctor, mera peshab laal ho gaya hai, dard bilkul nahi hai" (58 year old male, smoker)
  • URGENT: Painless macroscopic haematuria = BLADDER CANCER until proven otherwise - refer for 2-week-wait cystoscopy + CT Urogram
  • Medicines: Tranexamic acid (haemostasis) + Ciprofloxacin + Omeprazole
  • Most important prevention: STOP SMOKING

Case 5 - Epididymo-Orchitis

Patient comes in saying: "Doctor, dana khud phool gaya hai, lal aur dardnaak hai, peshab mein bhi jalan hai" (28 year old male, sexually active)
  • Medicines: Doxycycline 100mg x14 days (covers Chlamydia) + Single dose IM Ceftriaxone (covers Gonorrhoea) - MUST treat partner
  • Rule out testicular torsion first (6-hour surgical emergency - will not have gradual onset)

Case 6 - Prostate Cancer

Patient comes in saying: "Routine check par PSA 12 aa gaya, biopsy mein cancer nikla" (68 year old male, Gleason 7)
  • Medicines: Bicalutamide (anti-androgen) + Leuprolide IM monthly (LHRH agonist - medical castration) + Tamsulosin (LUTS) + Calcium/Vit D3 (bone protection from ADT)
  • Options: Active surveillance / Radical prostatectomy / Radiotherapy - MDT decision

Case 7 - Bladder Cancer (Post-TURBT)

Patient comes in saying: "TURBT ke baad hain, cystoscopy mein tumour tha" (62 year old male, smoker)
  • Medicines: BCG intravesical x6 weeks (immunotherapy - reduces recurrence) + Oxybutynin (bladder spasm from BCG) + Phenazopyridine (dysuria)
  • Surveillance: Cystoscopy every 3 months x2 years, then every 6 months

Case 8 - Stress Urinary Incontinence

Patient comes in saying: "Doctor, hansne ya khansi karte waqt peshab nikal jaata hai" (48 year old female, 3 deliveries)
  • Medicines: Duloxetine 40mg (SNRI - improves sphincter tone) + Oestrogen cream (local atrophic changes)
  • MOST IMPORTANT: Pelvic floor (Kegel) exercises - first-line before any medication or surgery (TVT/TOT if conservative fails)

Case 9 - Erectile Dysfunction

Patient comes in saying: "Doctor, aik saal se masla hai, tension bhi hai, shakar aur BP bhi hai" (52 year old male, DM+HTN)
  • Medicines: Sildenafil 50mg PRN (PDE5 inhibitor - taken 1 hour before, not with nitrates!) + Metformin continued + Testosterone if deficient
  • Key counselling: Check other meds (beta-blockers, antidepressants cause ED), lifestyle modification is cornerstone

Case 10 - Overactive Bladder (OAB)

Patient comes in saying: "Doctor, bahut jaldi aati hai aur ruk nahi pata, raat ko bhi uthna parta hai" (55 year old female, culture negative)
  • Medicines: Solifenacin 5mg (anticholinergic - first choice) OR Mirabegron 50mg (beta-3 agonist - if anticholinergic SE, safer in elderly/glaucoma)
  • Bladder retraining is equally important - delay voiding by 5 minutes per week

Case 11 - Varicocele

Patient comes in saying: "Left side dard rehta hai, khara hone par zyada hota hai, 2 saal se bacha nahi hua" (24 year old male, oligospermia)
  • Medicines: NSAIDs (pain) + Antioxidants (Vit E, Folic acid, CoQ10 - improve sperm quality)
  • Definitive: Varicocelectomy (subinguinal microsurgical) - improves natural conception rates
  • Describe as: "Bag of worms" on palpation, Grade I-III

Case 12 - PUJ Obstruction / Hydronephrosis

Patient comes in saying: "Zyada pani peene ke baad kamr mein dard hota hai" (32 year old male, US shows hydronephrosis)
  • Medicines: Diclofenac (pain) + Trimethoprim prophylaxis (prevent UTI while obstructed)
  • Definitive: Laparoscopic pyeloplasty (Anderson-Hynes dismembered pyeloplasty) - gold standard
  • MAG3 renogram: Essential to quantify differential renal function

Case 13 - Testicular Cancer

Patient comes in saying: "Ek ganth hai dana mein, dard nahi hai lekin sakht hai" (26 year old male, AFP raised)
  • URGENT: Urgent radical orchidectomy via inguinal approach (NEVER scrotal - risk of lymphatic spread change)
  • Medicines: Sperm banking BEFORE surgery (fertility preservation) + Ondansetron (for chemo nausea)
  • Staging: AFP, HCG, LDH + CT chest/abdomen/pelvis

Case 14 - Acute Urinary Retention

Patient comes in saying: "10 ghante se peshab band hai, taqleef ho rahi hai" (70 year old male, known BPH)
  • Immediate: Catheterise (Foley) - drain slowly (max 500ml at a time to prevent haematuria)
  • Medicines: Tamsulosin (start immediately before TWOC) + Finasteride + Trimethoprim (catheter prophylaxis) + Paracetamol
  • TWOC: Trial Without Catheter at 3 days with alpha-blocker. If fails twice - TURP

Case 15 - Chronic Prostatitis / CPPS

Patient comes in saying: "3 mahine se perineum mein dard hai, ejaculation mein bhi dard hai, culture negative aaya hai" (38 year old male)
  • NIH Category IIIB (non-inflammatory CPPS) - most common and most difficult to treat
  • Medicines: Ciprofloxacin (empiric 4 weeks) + Tamsulosin (alpha-blocker for voiding) + Ibuprofen + Amitriptyline 10mg at night (neuropathic pain modulation)
  • Multi-modal approach: Physiotherapy + psychological support + lifestyle modification

📝 Prescription Format Notes

Each image follows your sample format:
  • Medicine names: CAPITAL LETTERS in English (generic names per guidelines)
  • Dose & frequency: Dose in English, Frequency/Tarteeb written in Urdu
  • Duration: In English
  • Prevention section: احتیاطی تدابیر with Urdu + English explanations
  • Format: Orange background, white card, professional clinic header, Rx symbol

teach me more opd cases of urology from frcs urology above given book make notes or book of opd cases which include only diagnosis and medicine dose frequency and prevention in urdu make short book of first 25 important opd cases of urology

Running Command

python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')" && python3 -c "from PIL import Image; print('Pillow OK')"

Writing File

~/urology-opd-cases/build_book.py

#!/usr/bin/env python3
"""
UROLOGY OPD CASES - Complete Book (25 Cases)
Based on FRCS(Urol) Viva Practice - Manit Arya & Iqbal Shergill
PDF Book Generator using ReportLab
"""

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

OUTPUT = "/home/daytona/workspace/urology-opd-cases/output/Urology_OPD_25_Cases_Book.pdf"

# ─── Register Noto Nastaliq Urdu font (for Urdu text) ───
URDU_FONT = "Helvetica"  # fallback; Urdu will render as Latin placeholders
try:
    pdfmetrics.registerFont(TTFont("NotoNastaliq", "/usr/share/fonts/truetype/noto/NotoNastaliqUrdu-Regular.ttf"))
    URDU_FONT = "NotoNastaliq"
    print("Noto Nastaliq loaded")
except:
    try:
        pdfmetrics.registerFont(TTFont("NotoNaskhArabic", "/usr/share/fonts/truetype/noto/NotoNaskhArabic-Regular.ttf"))
        URDU_FONT = "NotoNaskhArabic"
        print("Noto Naskh Arabic loaded")
    except:
        print("Urdu font not found, using fallback")

# ─────────────────────────────────────────────────────────────────
# CASE DATA — 25 cases
# Each case: no, title_en, title_ur, diagnosis_en, diagnosis_ur,
#            medicines: [ (name_en, dose_en, freq_ur, dur_en) ],
#            prevention: [ (text_ur, text_en) ]
# ─────────────────────────────────────────────────────────────────
CASES = [
    # ══════════════════════════════════════════════════════════════
    {
        "no": 1,
        "title": "Benign Prostatic Hyperplasia (BPH)",
        "title_ur": "پروسٹیٹ غدود کا بڑھنا",
        "diagnosis": "BPH Grade II — IPSS Score >20, Qmax <10 ml/s, PVR >100 ml",
        "diagnosis_ur": "پروسٹیٹ کا بڑھنا - درجہ دوم",
        "meds": [
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو سونے سے پہلے - روزانہ",      "3 ماہ"),
            ("TAB. FINASTERIDE (5 MG)",          "1 Tab",  "روزانہ ایک بار - صبح",              "6 ماہ"),
            ("TAB. SOLIFENACIN (5 MG)",          "1 Tab",  "روزانہ ایک بار - اگر عجلت بھی ہو",  "1 ماہ"),
        ],
        "prevention": [
            ("شام کے بعد پانی کم پئیں",                "Reduce fluid intake after evening"),
            ("چائے، کافی اور الکوحل سے پرہیز کریں",   "Avoid caffeine and alcohol"),
            ("ہر 6 ماہ بعد PSA ٹیسٹ کروائیں",         "PSA monitoring every 6 months"),
            ("قبض سے بچیں",                            "Avoid constipation"),
            ("باقاعدہ ورزش کریں",                       "Regular exercise"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 2,
        "title": "Acute Uncomplicated UTI (Cystitis)",
        "title_ur": "مثانے کا انفیکشن",
        "diagnosis": "Acute Uncomplicated Cystitis — E.coli (commonest); Urine C&S: >10⁵ CFU/ml",
        "diagnosis_ur": "مثانے کا تیز انفیکشن - بغیر پیچیدگی کے",
        "meds": [
            ("TAB. NITROFURANTOIN (100 MG)",     "1 Tab",  "دن میں دو بار کھانے کے ساتھ",    "7 دن"),
            ("TAB. PHENAZOPYRIDINE (200 MG)",    "1 Tab",  "دن میں تین بار",                  "2 دن صرف"),
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "ضرورت پر کھانے کے بعد",           "3 دن"),
        ],
        "prevention": [
            ("روزانہ 2-3 لیٹر پانی پئیں",             "Drink 2–3 L water daily"),
            ("پیشاب روکیں نہیں",                       "Do not hold urine"),
            ("صفائی آگے سے پیچھے کی طرف کریں",         "Wipe front to back (females)"),
            ("جنسی تعلق کے بعد پیشاب کریں",            "Void after intercourse"),
            ("Cranberry juice مفید ہے",                "Cranberry juice reduces recurrence"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 3,
        "title": "Ureteric Colic / Kidney Stone",
        "title_ur": "گردے کی پتھری - یوریٹر میں",
        "diagnosis": "Right Ureteric Calculus 6 mm (Lower 1/3rd) — KUB + USS confirmed; No infection",
        "diagnosis_ur": "دائیں یوریٹر میں پتھری - 6 ملی میٹر",
        "meds": [
            ("TAB. DICLOFENAC SODIUM (75 MG)",   "1 Tab",  "دن میں دو بار کھانے کے بعد",     "5 دن"),
            ("TAB. TAMSULOSIN (0.4 MG)",          "1 Tab",  "رات کو - پتھری نکالنے کے لیے",   "4 ہفتے (MET)"),
            ("TAB. METOCLOPRAMIDE (10 MG)",       "1 Tab",  "متلی پر دن میں تین بار",          "3 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",           "1 Tab",  "کھانے سے پہلے صبح",              "5 دن"),
        ],
        "prevention": [
            ("روزانہ 3 لیٹر سے زیادہ پانی پئیں",     "Drink >3 L water daily — most important"),
            ("نمک کم کھائیں",                         "Reduce dietary salt"),
            ("پالک، ٹماٹر، مونگ پھلی کم کھائیں",     "Reduce oxalate-rich foods"),
            ("سرخ گوشت اور پروٹین کم کریں",           "Reduce red meat / animal protein"),
            ("پیشاب ہلکا پیلا رکھیں",                 "Keep urine pale yellow (hydration check)"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 4,
        "title": "Painless Macroscopic Haematuria",
        "title_ur": "بغیر درد خون آنا پیشاب میں",
        "diagnosis": "Painless Macroscopic Haematuria — Urgent: CT Urogram + Flexible Cystoscopy (? TCC Bladder)",
        "diagnosis_ur": "بغیر درد پیشاب میں خون - مثانے کا کینسر خارج از امکان نہیں",
        "meds": [
            ("TAB. TRANEXAMIC ACID (500 MG)",    "2 Tabs", "دن میں تین بار",                  "3 دن"),
            ("TAB. CIPROFLOXACIN (500 MG)",      "1 Tab",  "دن میں دو بار",                   "5 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",          "1 Tab",  "صبح کھانے سے پہلے",               "5 دن"),
        ],
        "prevention": [
            ("تمباکو نوشی فوری بند کریں - سب سے اہم",  "Stop smoking immediately — #1 risk factor"),
            ("خوب پانی پئیں",                            "Drink plenty of water"),
            ("CT Urogram اور Cystoscopy لازمی",          "CT urogram + cystoscopy mandatory"),
            ("خون بند نہ ہو تو فوری A&E جائیں",          "Emergency if bleeding does not stop"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 5,
        "title": "Epididymo-Orchitis (STI Related)",
        "title_ur": "خصیے کی سوزش - جنسی انفیکشن",
        "diagnosis": "Acute Epididymo-Orchitis — STI origin (Chlamydia trachomatis / N. gonorrhoeae); NAAT positive",
        "diagnosis_ur": "خصیے اور ایپیڈیڈیمس کی سوزش - جنسی طور پر منتقل",
        "meds": [
            ("TAB. DOXYCYCLINE (100 MG)",         "1 Tab",  "دن میں دو بار کھانے کے ساتھ",    "14 دن"),
            ("INJ. CEFTRIAXONE 500 MG IM",        "1 Inj",  "صرف ایک بار IM - آج دیں",        "1 بار صرف"),
            ("TAB. IBUPROFEN (400 MG)",           "1 Tab",  "دن میں تین بار کھانے کے بعد",    "7 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",           "1 Tab",  "کھانے سے پہلے",                   "7 دن"),
        ],
        "prevention": [
            ("جنسی تعلق میں condom استعمال کریں",    "Use condoms — safe sex"),
            ("جنسی ساتھی کا علاج بھی ضروری ہے",     "Treat sexual partner simultaneously"),
            ("STI مکمل اسکریننگ کروائیں",            "Full STI screen (HIV, Hep B, syphilis)"),
            ("خصیوں کو سہارا دیں / اونچا رکھیں",    "Scrotal support and elevation"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 6,
        "title": "Localised Prostate Cancer",
        "title_ur": "پروسٹیٹ کا کینسر - ابتدائی مرحلہ",
        "diagnosis": "Prostate Adenocarcinoma — Gleason 7 (3+4), cT2b N0 M0; PSA 12 ng/mL; ISUP Grade 2",
        "diagnosis_ur": "پروسٹیٹ کینسر - گلیسن 7، مقامی مرحلہ",
        "meds": [
            ("TAB. BICALUTAMIDE (50 MG)",         "1 Tab",  "روزانہ ایک بار",                  "3 ماہ"),
            ("INJ. LEUPROLIDE 3.75 MG IM",        "3.75 mg","ہر ماہ ایک بار",                  "آنکولوجی کے مطابق"),
            ("TAB. TAMSULOSIN (0.4 MG)",          "1 Tab",  "رات کو - LUTS کے لیے",            "جاری رہے"),
            ("TAB. CALCIUM + VIT D3 (500/400)",   "1 Tab",  "روزانہ ایک بار",                  "طویل مدتی"),
        ],
        "prevention": [
            ("سرخ گوشت اور چکنائی کم کریں",         "Reduce red meat and saturated fat"),
            ("ٹماٹر اور سبز سبزیاں زیادہ کھائیں",   "Increase lycopene — tomatoes, greens"),
            ("PSA ہر 3 ماہ بعد چیک کروائیں",        "PSA monitoring every 3 months"),
            ("DEXA scan کروائیں ہارمون تھراپی میں", "DEXA bone scan during ADT therapy"),
            ("باقاعدہ ورزش - ہڈیوں کے لیے",         "Regular weight-bearing exercise"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 7,
        "title": "Bladder Cancer TCC — Post-TURBT",
        "title_ur": "مثانے کا کینسر - آپریشن کے بعد BCG علاج",
        "diagnosis": "Transitional Cell Carcinoma Bladder (Ta G2) — Post-TURBT; for BCG intravesical immunotherapy",
        "diagnosis_ur": "مثانے کا TCC کینسر - Ta G2 - TURBT کے بعد",
        "meds": [
            ("BCG INTRAVESICAL (81 mg/vial)",     "1 Vial", "ہفتے میں ایک بار - 6 ہفتے",     "6 ہفتے"),
            ("TAB. OXYBUTYNIN (5 MG)",            "1 Tab",  "دن میں دو بار",                   "BCG دوران"),
            ("TAB. PHENAZOPYRIDINE (200 MG)",     "1 Tab",  "دن میں تین بار - جلن پر",         "ضرورت پر"),
        ],
        "prevention": [
            ("تمباکو نوشی مکمل بند کریں",             "Stop smoking completely — strongest risk factor"),
            ("صنعتی کیمیکلز سے دور رہیں",             "Avoid industrial chemicals / dyes / rubber"),
            ("خوب پانی پئیں",                         "Drink plenty of water — dilutes carcinogens"),
            ("Cystoscopy ہر 3 ماہ بعد لازمی",         "Surveillance cystoscopy every 3 months"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 8,
        "title": "Female Stress Urinary Incontinence",
        "title_ur": "خواتین میں کھانسنے / ہنسنے پر پیشاب نکلنا",
        "diagnosis": "Genuine Stress Urinary Incontinence (GSI) — Urodynamics: USI confirmed, no detrusor overactivity",
        "diagnosis_ur": "حقیقی اسٹریس پیشاب بے قابوی - یورو ڈائنامکس تصدیق شدہ",
        "meds": [
            ("TAB. DULOXETINE (40 MG)",           "1 Tab",  "دن میں دو بار کھانے کے ساتھ",   "3 ماہ"),
            ("VAGINAL ESTROGEN CREAM (Ovestin)",  "Apply",  "رات کو لگائیں - اندام نہانی میں","3 ماہ"),
            ("TAB. OXYBUTYNIN (5 MG)",            "1 Tab",  "رات کو - اگر عجلت بھی ہو",       "1 ماہ"),
        ],
        "prevention": [
            ("Kegel exercises روزانہ کریں - سب سے اہم", "Daily pelvic floor exercises — FIRST LINE"),
            ("وزن کم کریں اگر زیادہ ہو",              "Lose weight if BMI >30"),
            ("قبض سے بچیں",                           "Avoid constipation"),
            ("بھاری چیزیں اٹھانے سے بچیں",            "Avoid heavy lifting"),
            ("چائے اور کافی کم کریں",                 "Reduce caffeine intake"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 9,
        "title": "Erectile Dysfunction (ED)",
        "title_ur": "مردانہ کمزوری",
        "diagnosis": "Erectile Dysfunction — Mixed Organic (Vasculogenic + Diabetic Neuropathy); IIEF-5 score <10",
        "diagnosis_ur": "عضو تناسل کی خرابی - مخلوط وجوہات - ذیابطیس اور بلڈ پریشر",
        "meds": [
            ("TAB. SILDENAFIL (50 MG)",           "1 Tab",  "جنسی تعلق سے 1 گھنٹہ پہلے - ضرورت پر", "جاری رہے"),
            ("TAB. METFORMIN (500 MG)",           "1 Tab",  "دن میں دو بار کھانے کے ساتھ",    "طویل مدتی"),
            ("TAB. TESTOSTERONE (if low level)",  "per TFT","ڈاکٹر کی ہدایت کے مطابق",         "3 ماہ ٹرائل"),
        ],
        "prevention": [
            ("ذیابطیس اور بلڈ پریشر قابو میں رکھیں", "Control DM and hypertension — key"),
            ("تمباکو نوشی بند کریں",                  "Stop smoking — major vascular risk"),
            ("الکوحل سے پرہیز کریں",                  "Avoid alcohol"),
            ("باقاعدہ ورزش کریں",                     "Regular aerobic exercise"),
            ("ذہنی تناؤ کم کریں",                     "Manage psychological stress / anxiety"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 10,
        "title": "Overactive Bladder (OAB)",
        "title_ur": "مثانے کی بے قابوی اور عجلت",
        "diagnosis": "OAB Wet Syndrome — Urodynamics: Detrusor Overactivity; MSU negative",
        "diagnosis_ur": "مثانے کی زیادہ حرکت - ڈیٹروسر اوور ایکٹیوٹی",
        "meds": [
            ("TAB. SOLIFENACIN (5 MG)",           "1 Tab",  "روزانہ ایک بار",                  "3 ماہ"),
            ("TAB. MIRABEGRON (50 MG)",           "1 Tab",  "روزانہ ایک بار - متبادل دوا",     "3 ماہ"),
            ("TAB. OXYBUTYNIN (5 MG)",            "1 Tab",  "دن میں دو بار",                   "2 ماہ"),
        ],
        "prevention": [
            ("مثانے کی ٹریننگ کریں - ہر ہفتے 5 منٹ دیر کریں", "Bladder retraining — delay voiding 5 min/week"),
            ("چائے اور کافی مکمل بند کریں",         "Stop caffeine completely"),
            ("پیشاب کی ڈائری لکھیں",               "Keep a voiding diary"),
            ("شام 6 بجے کے بعد پانی کم پئیں",       "Restrict fluids after 6 PM"),
            ("روزانہ Kegel exercises کریں",          "Daily pelvic floor exercises"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 11,
        "title": "Varicocele + Male Infertility",
        "title_ur": "خصیوں کی رگوں کا پھولنا اور بانجھ پن",
        "diagnosis": "Left Varicocele Grade II — Semen Analysis: Oligoasthenospermia; USS Doppler confirmed",
        "diagnosis_ur": "بائیں جانب ورائیکوسیل گریڈ 2 - سپرم کی کمی اور کمزوری",
        "meds": [
            ("TAB. IBUPROFEN (400 MG)",           "1 Tab",  "دن میں تین بار کھانے کے بعد",   "1 ہفتہ"),
            ("TAB. VITAMIN E (400 IU)",           "1 Cap",  "روزانہ ایک بار",                  "3 ماہ"),
            ("TAB. FOLIC ACID (5 MG)",            "1 Tab",  "روزانہ ایک بار",                  "3 ماہ"),
            ("TAB. COENZYME Q10 (200 MG)",        "1 Cap",  "روزانہ ایک بار",                  "3 ماہ"),
        ],
        "prevention": [
            ("Scrotal support / jockstrap پہنیں",  "Wear scrotal support — reduces discomfort"),
            ("لمبے عرصے تک کھڑے نہ رہیں",          "Avoid prolonged standing"),
            ("بھاری ورزش سے گریز کریں",             "Avoid heavy weightlifting"),
            ("سالانہ سپرم ٹیسٹ کروائیں",            "Annual semen analysis"),
            ("Varicocelectomy کی رائے لیں",         "Surgical referral — microsurgical varicocelectomy"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 12,
        "title": "PUJ Obstruction / Hydronephrosis",
        "title_ur": "گردے کی نالی کی رکاوٹ",
        "diagnosis": "Left PUJ Obstruction — MAG3 Renogram: Obstructed pattern; Differential Function 38%; Moderate hydronephrosis",
        "diagnosis_ur": "بائیں گردے کی نالی میں رکاوٹ - MAG3 ثابت",
        "meds": [
            ("TAB. DICLOFENAC SODIUM (50 MG)",   "1 Tab",  "دن میں دو بار کھانے کے بعد - درد پر", "5 دن ضرورت پر"),
            ("TAB. TRIMETHOPRIM (200 MG)",        "1 Tab",  "رات کو - آپریشن تک",               "آپریشن تک"),
            ("TAB. OMEPRAZOLE (20 MG)",           "1 Tab",  "کھانے سے پہلے",                    "NSAID کے ساتھ"),
        ],
        "prevention": [
            ("پانی آہستہ آہستہ پئیں - یکدم بہت زیادہ نہیں", "Avoid rapid large fluid intake"),
            ("بخار یا شدید درد پر فوری ڈاکٹر سے ملیں",      "Immediate review if fever / severe pain"),
            ("Laparoscopic Pyeloplasty کروائیں",             "Surgical referral — Anderson-Hynes pyeloplasty"),
            ("سالانہ MAG3 renogram کروائیں",                 "Annual MAG3 renogram follow-up"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 13,
        "title": "Testicular Germ Cell Tumour",
        "title_ur": "خصیے کا کینسر",
        "diagnosis": "Right Testicular NSGCT — AFP elevated, βhCG mildly raised; LDH raised; Stage IS; Urgent orchidectomy",
        "diagnosis_ur": "دائیں خصیے کا کینسر - نان سیمینوما - ابتدائی مرحلہ",
        "meds": [
            ("SPERM BANKING — before surgery",    "Referral","آپریشن سے پہلے لازمی",           "ایک بار"),
            ("TAB. IBUPROFEN (400 MG)",           "1 Tab",  "ضرورت پر کھانے کے بعد",           "ضرورت پر"),
            ("TAB. ONDANSETRON (4 MG)",           "1 Tab",  "دن میں تین بار - کیموتھراپی دوران","کیمو دوران"),
        ],
        "prevention": [
            ("ماہانہ خصیوں کا خود معائنہ کریں",       "Monthly testicular self-examination"),
            ("Undescended testis بچپن میں ٹھیک کروائیں", "Treat cryptorchidism in childhood"),
            ("AFP, HCG, LDH ہر 6 ہفتے",              "Tumour markers every 6 weeks"),
            ("دوسرے خصیے کا بھی معائنہ کریں",         "Examine contralateral testis"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 14,
        "title": "Acute Urinary Retention (AUR)",
        "title_ur": "اچانک پیشاب بند ہو جانا",
        "diagnosis": "AUR secondary to BPH — Bladder volume 650 ml on USS; Catheterised; TWOC planned at 3 days with alpha-blocker",
        "diagnosis_ur": "BPH کی وجہ سے اچانک پیشاب بند - کیتھیٹر لگایا - TWOC 3 دن بعد",
        "meds": [
            ("TAB. TAMSULOSIN (0.4 MG)",         "1 Tab",  "رات کو - TWOC سے پہلے لازمی",    "کم از کم 3 دن"),
            ("TAB. FINASTERIDE (5 MG)",           "1 Tab",  "روزانہ ایک بار",                  "طویل مدتی"),
            ("TAB. TRIMETHOPRIM (200 MG)",        "1 Tab",  "رات کو - کیتھیٹر تک",            "کیتھیٹر دوران"),
            ("TAB. PARACETAMOL (500 MG)",         "2 Tabs", "دن میں چار بار",                  "3 دن"),
        ],
        "prevention": [
            ("یکدم بہت زیادہ پانی نہ پئیں",          "Avoid rapid large fluid intake"),
            ("قبض سے بچیں",                          "Avoid constipation"),
            ("اینٹی ہسٹامین سے پرہیز کریں",           "Avoid antihistamines / decongestants"),
            ("سردی سے بچیں - retention trigger ہے",  "Avoid cold weather — triggers AUR"),
            ("TWOC ناکام ہو تو TURP کی رائے لیں",    "TURP referral if TWOC fails twice"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 15,
        "title": "Chronic Prostatitis / CPPS",
        "title_ur": "پروسٹیٹ کا دائمی درد",
        "diagnosis": "Chronic Prostatitis / CPPS — NIH Category IIIB; NIH-CPSI Score 22; MSU: negative; Symptoms >3 months",
        "diagnosis_ur": "دائمی پروسٹیٹائٹس / CPPS - NIH زمرہ IIIB",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",      "1 Tab",  "دن میں دو بار",                   "4 ہفتے"),
            ("TAB. TAMSULOSIN (0.4 MG)",         "1 Tab",  "رات کو",                           "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "دن میں تین بار کھانے کے بعد",    "2 ہفتے"),
            ("TAB. AMITRIPTYLINE (10 MG)",       "1 Tab",  "رات کو سونے سے پہلے",             "3 ماہ"),
        ],
        "prevention": [
            ("مسالہ دار کھانا اور الکوحل سے پرہیز",  "Avoid spicy food and alcohol"),
            ("گرم پانی میں بیٹھیں (Sitz bath)",      "Warm sitz baths daily"),
            ("دیر تک ایک جگہ بیٹھنے سے گریز کریں",  "Avoid prolonged sitting"),
            ("باقاعدہ ورزش - تیراکی، چہل قدمی",     "Regular exercise — swimming, walking"),
            ("ذہنی تناؤ کم کریں",                    "Stress management / psychological support"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    # NEW CASES 16-25
    # ══════════════════════════════════════════════════════════════
    {
        "no": 16,
        "title": "Recurrent UTI in Women",
        "title_ur": "خواتین میں بار بار پیشاب کا انفیکشن",
        "diagnosis": "Recurrent UTI (≥2 episodes/6 months or ≥3/year) — E.coli; Post-menopausal atrophic changes noted",
        "diagnosis_ur": "بار بار آنے والا UTI - سال میں 3 یا اس سے زیادہ بار",
        "meds": [
            ("TAB. NITROFURANTOIN (100 MG)",     "1 Tab",  "رات کو صرف - طویل روک تھام",     "6 ماہ (Prophylaxis)"),
            ("VAGINAL ESTROGEN CREAM (Ovestin)", "Apply",  "رات کو لگائیں - اندام نہانی میں", "3 ماہ"),
            ("TAB. TRIMETHOPRIM (200 MG)",       "1 Tab",  "جنسی تعلق کے بعد - ایک بار",     "ضرورت پر"),
        ],
        "prevention": [
            ("روزانہ خوب پانی پئیں",                 "Drink plenty of water daily"),
            ("جنسی تعلق کے بعد پیشاب کریں",          "Void after intercourse every time"),
            ("Probiotics (Lactobacillus) لیں",       "Lactobacillus probiotics — evidence-based"),
            ("Cranberry extract روزانہ لیں",          "Daily cranberry extract reduces recurrence"),
            ("Postmenopausal: HRT کی رائے لیں",      "Consider local oestrogen if postmenopausal"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 17,
        "title": "Urethral Stricture",
        "title_ur": "پیشاب کی نالی کا تنگ ہونا",
        "diagnosis": "Anterior Urethral Stricture — Bulbar urethra 1.5 cm; RGU confirmed; Qmax <5 ml/s; Uroflowmetry: plateau pattern",
        "diagnosis_ur": "پیشاب کی نالی کا تنگ ہونا - بلبر پوزیشن",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",      "1 Tab",  "دن میں دو بار",                   "5 دن"),
            ("TAB. TAMSULOSIN (0.4 MG)",         "1 Tab",  "رات کو - پیشاب کی دھار بہتر کرنے کو", "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "ضرورت پر کھانے کے بعد",           "ضرورت پر"),
        ],
        "prevention": [
            ("Urethral Dilatation یا Optical Urethrotomy کروائیں", "Urethral dilatation / OIU — definitive"),
            ("بار بار ہو تو Urethroplasty کروائیں",              "Recurrent stricture → urethroplasty"),
            ("گونوریا انفیکشن سے بچاؤ - stricture کی وجہ",      "Prevent gonorrhoea — common cause"),
            ("پیشاب کی دھار کمزور ہو تو فوری دکھائیں",         "Prompt review if urinary flow worsens"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 18,
        "title": "Scrotal Pain — Chronic / Idiopathic",
        "title_ur": "خصیوں میں دائمی درد",
        "diagnosis": "Chronic Orchialgia / Chronic Scrotal Content Pain (CSCP) — >3 months; Infection excluded; No mass; USS normal",
        "diagnosis_ur": "خصیوں میں دائمی درد - 3 ماہ سے زیادہ - کوئی انفیکشن یا گانٹھ نہیں",
        "meds": [
            ("TAB. AMITRIPTYLINE (10 MG)",       "1 Tab",  "رات کو سونے سے پہلے",             "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "دن میں دو بار کھانے کے بعد",     "2 ہفتے"),
            ("TAB. GABAPENTIN (300 MG)",         "1 Tab",  "رات کو - ضرورت پر",               "3 ماہ"),
        ],
        "prevention": [
            ("Scrotal support پہنیں",              "Wear scrotal support at all times"),
            ("دیر تک بیٹھنے سے گریز کریں",        "Avoid prolonged sitting / cycling"),
            ("گرم پانی میں بیٹھیں",               "Warm baths for comfort"),
            ("ذہنی تناؤ کم کریں",                 "Psychological support / CBT if needed"),
            ("Physiotherapy - pelvic floor",      "Pelvic physiotherapy often helps"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 19,
        "title": "Interstitial Cystitis / Bladder Pain Syndrome",
        "title_ur": "مثانے کا دائمی درد - بغیر انفیکشن",
        "diagnosis": "Bladder Pain Syndrome / Interstitial Cystitis (IC/BPS) — Pelvic pain >6 months; Frequency; Urgency; MSU negative; Cystoscopy: glomerulations",
        "diagnosis_ur": "مثانے کا دائمی درد - 6 ماہ سے زیادہ - کلچر منفی",
        "meds": [
            ("TAB. AMITRIPTYLINE (10-25 MG)",    "1 Tab",  "رات کو سونے سے پہلے",             "3-6 ماہ"),
            ("TAB. HYDROXYZINE (25 MG)",         "1 Tab",  "رات کو",                           "3 ماہ"),
            ("INSTILL. HEPARIN (Intravesical)",  "Bladder instillation", "ہفتے میں 2 بار",    "6 ہفتے"),
        ],
        "prevention": [
            ("ایسڈک کھانا پینا بند کریں",          "Avoid acidic foods: citrus, tomato, coffee"),
            ("Stress کم کریں",                     "Stress reduction — major trigger"),
            ("IC diet follow کریں",               "Follow IC-specific elimination diet"),
            ("Bladder training کریں",             "Bladder retraining programme"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 20,
        "title": "Phimosis / Balanitis Xerotica Obliterans",
        "title_ur": "غلاف ختنہ کا تنگ ہونا / BXO",
        "diagnosis": "Phimosis with BXO (Lichen Sclerosus) — White sclerotic plaques; Non-retractile foreskin; Recurrent balanitis",
        "diagnosis_ur": "ختنے کا تنگ ہونا - BXO (Lichen Sclerosus) کے ساتھ",
        "meds": [
            ("BETAMETHASONE 0.05% CREAM",        "Apply",  "دن میں دو بار - 4-6 ہفتے",       "4-6 ہفتے"),
            ("TAB. FLUCONAZOLE (150 MG)",        "1 Tab",  "ہفتے میں ایک بار",                "4 ہفتے"),
            ("TAB. CETIRIZINE (10 MG)",          "1 Tab",  "رات کو - خارش پر",               "2 ہفتے"),
        ],
        "prevention": [
            ("روزانہ صابن سے صفائی کریں",           "Daily hygiene with gentle soap"),
            ("Circumcision کی رائے لیں",           "Circumcision — definitive for BXO"),
            ("مثانے کے کینسر کی نگرانی کریں",      "BXO increases urethral stricture and SCC risk"),
            ("Steroid cream 6 ہفتے سے زیادہ نہیں", "Do not use steroid cream >6 weeks unsupervised"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 21,
        "title": "Nocturia (Isolated / Nocturnal Polyuria)",
        "title_ur": "رات کو بار بار پیشاب آنا",
        "diagnosis": "Nocturnal Polyuria — Frequency-Volume Chart: NPI >33%; Nocturnal urine volume >2500 ml/night; No cardiac/renal cause",
        "diagnosis_ur": "رات کو پیشاب زیادہ بننا - نوکٹرنل پولی یوریا",
        "meds": [
            ("TAB. DESMOPRESSIN (0.1 MG)",       "1 Tab",  "رات کو سونے سے 1 گھنٹہ پہلے",   "3 ماہ - ہفتہ وار Na+ چیک"),
            ("TAB. FUROSEMIDE (20 MG)",          "1 Tab",  "سہ پہر 4-6 بجے - دوپہر بعد",    "4 ہفتے"),
            ("TAB. SOLIFENACIN (5 MG)",          "1 Tab",  "روزانہ ایک بار",                  "اگر OAB بھی ہو"),
        ],
        "prevention": [
            ("شام 6 بجے کے بعد پانی بالکل کم کریں",  "Restrict evening fluids strictly after 6 PM"),
            ("Desmopressin پر سوڈیم مانیٹر کریں",  "Monitor serum sodium weekly on desmopressin (hyponatraemia risk)"),
            ("نمک اور الکوحل سے پرہیز",              "Reduce salt and avoid alcohol"),
            ("Compression stockings پہنیں",         "Compression stockings reduce evening oedema"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 22,
        "title": "Hydrocele",
        "title_ur": "خصیے میں پانی",
        "diagnosis": "Primary Hydrocele — Transilluminates; USS: fluid confirmed; No solid mass; Testis normal",
        "diagnosis_ur": "خصیے میں پانی - پہلی قسم - روشنی سے چمکتا ہے",
        "meds": [
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "دن میں دو بار ضرورت پر",         "ضرورت پر"),
            ("No specific medication needed",    "—",      "دوا سے ٹھیک نہیں ہوتا",          "جراحی ضروری"),
        ],
        "prevention": [
            ("Jaboulay/Lord's procedure کروائیں", "Surgical repair — Jaboulay or Lord's procedure"),
            ("ضرورت نہ ہو تو انتظار کریں",         "Can observe if small and asymptomatic"),
            ("خود ٹیکہ نہ لگوائیں",               "Avoid aspiration — high recurrence rate"),
            ("ہر 6 ماہ بعد USS کروائیں",           "USS surveillance every 6 months"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 23,
        "title": "Renal Cell Carcinoma (Incidental Finding)",
        "title_ur": "گردے کا کینسر - اتفاقی دریافت",
        "diagnosis": "Incidental RCC — Right kidney 4 cm solid enhancing mass on CT (cT1b N0 M0); Bosniak IV or solid; Clear cell likely",
        "diagnosis_ur": "گردے کا کینسر - 4 سینٹی میٹر - CT سکین پر اتفاقی ملا",
        "meds": [
            ("No chemotherapy — surgery first line", "—",  "آپریشن پہلا علاج ہے",             "آنکولوجی ریفرل"),
            ("TAB. OMEPRAZOLE (20 MG)",          "1 Tab",  "کھانے سے پہلے",                   "جاری رہے"),
            ("TAB. AMLODIPINE (5 MG) - if HTN",  "1 Tab",  "روزانہ ایک بار - BP کنٹرول",    "طویل مدتی"),
        ],
        "prevention": [
            ("تمباکو نوشی بند کریں",               "Stop smoking — major risk factor"),
            ("وزن کم کریں",                        "Lose weight — obesity is risk factor"),
            ("بلڈ پریشر قابو میں رکھیں",           "Control hypertension strictly"),
            ("Partial Nephrectomy یا RFA کروائیں", "Partial nephrectomy / RFA for T1 lesions"),
            ("سالانہ CT urogram کروائیں",          "Annual CT urogram surveillance post-surgery"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 24,
        "title": "Priapism (Non-Ischaemic / Ischaemic)",
        "title_ur": "بے وقت اور دردناک عضو تناسل کا سخت رہنا",
        "diagnosis": "Ischaemic Priapism >4 hrs — Low-flow; Blood gas: pO2 <30 mmHg; Emergency aspiration + sympathomimetic required",
        "diagnosis_ur": "اسکیمک پریاپزم - 4 گھنٹے سے زیادہ - ہنگامی علاج ضروری",
        "meds": [
            ("INJ. PHENYLEPHRINE 200 mcg intracavernosal", "200 mcg", "ہر 3-5 منٹ میں - جب تک ڈھیلا نہ ہو", "ہنگامی طور پر"),
            ("ASPIRATION intracavernosal",       "Aspiration", "فوری - ہنگامی",               "ایک بار"),
            ("TAB. SILDENAFIL (50 MG)",          "1 Tab",  "بعد میں - ED کے لیے",             "ED follow-up"),
        ],
        "prevention": [
            ("Sickle cell disease والے خاص احتیاط کریں", "Sickle cell patients — hydroxurea, hydration"),
            ("Phosphodiesterase inhibitors کا غلط استعمال نہ کریں", "Avoid PDE5 inhibitor misuse"),
            ("ہنگامی صورت میں فوری A&E جائیں",    "Any priapism >4 hrs is urological emergency"),
            ("تمام خون کی بیماریوں کو کنٹرول کریں", "Control underlying haematological disorders"),
        ],
    },
    # ══════════════════════════════════════════════════════════════
    {
        "no": 25,
        "title": "Prostatitis — Acute Bacterial",
        "title_ur": "پروسٹیٹ کا تیز انفیکشن",
        "diagnosis": "Acute Bacterial Prostatitis — NIH Category I; PSA markedly raised (do NOT biopsy); Tender boggy prostate on DRE; E.coli on MSU",
        "diagnosis_ur": "پروسٹیٹ کا تیز بخاری انفیکشن - NIH زمرہ اول - PSA بہت بلند",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",      "1 Tab",  "دن میں دو بار",                   "4-6 ہفتے"),
            ("TAB. IBUPROFEN (400 MG)",          "1 Tab",  "دن میں تین بار کھانے کے بعد",    "2 ہفتے"),
            ("TAB. TAMSULOSIN (0.4 MG)",         "1 Tab",  "رات کو - پیشاب کی سہولت کے لیے", "4 ہفتے"),
            ("TAB. PARACETAMOL (500 MG)",        "2 Tabs", "دن میں چار بار - بخار پر",        "ضرورت پر"),
        ],
        "prevention": [
            ("پانی خوب پئیں",                     "Drink plenty of water — 2-3 L/day"),
            ("مکمل اینٹی بایوٹک کورس کریں",       "Complete full antibiotic course — do not stop early"),
            ("علاج بعد PSA recheck کروائیں",      "Recheck PSA 3 months after treatment"),
            ("مسالہ دار کھانا اور الکوحل بند",    "Avoid spicy food and alcohol"),
            ("Prostatic abscess کا خیال رکھیں",   "Monitor for prostatic abscess — TRUS if no improvement"),
        ],
    },
]

# ─────────────────────────────────────────────────────────────────
# COLOR PALETTE
# ─────────────────────────────────────────────────────────────────
C_DARK_BLUE   = colors.HexColor("#003366")
C_MID_BLUE    = colors.HexColor("#0055A5")
C_LIGHT_BLUE  = colors.HexColor("#D6E8FF")
C_TEAL        = colors.HexColor("#006B6B")
C_ORANGE      = colors.HexColor("#E87722")
C_LIGHT_ORANGE= colors.HexColor("#FFF3E0")
C_GREEN_LIGHT = colors.HexColor("#E8F5E9")
C_GREEN_DARK  = colors.HexColor("#1B5E20")
C_RED_LIGHT   = colors.HexColor("#FFEBEE")
C_RED_DARK    = colors.HexColor("#B71C1C")
C_GRAY_LIGHT  = colors.HexColor("#F5F5F5")
C_GRAY_MED    = colors.HexColor("#BDBDBD")
C_YELLOW_SOFT = colors.HexColor("#FFFDE7")

# ─────────────────────────────────────────────────────────────────
# PAGE LAYOUT
# ─────────────────────────────────────────────────────────────────
PAGE_W, PAGE_H = A4
M = 1.5*cm  # margin

def on_page(canvas, doc):
    """Header & footer on every page."""
    canvas.saveState()
    # Top bar
    canvas.setFillColor(C_DARK_BLUE)
    canvas.rect(0, PAGE_H - 1.2*cm, PAGE_W, 1.2*cm, fill=1, stroke=0)
    canvas.setFillColor(colors.white)
    canvas.setFont("Helvetica-Bold", 9)
    canvas.drawCentredString(PAGE_W/2, PAGE_H - 0.85*cm,
        "UROLOGY OPD CASES — 25 Most Important Cases  |  Based on Viva Practice for FRCS(Urol)")
    # Bottom bar
    canvas.setFillColor(C_DARK_BLUE)
    canvas.rect(0, 0, PAGE_W, 1.1*cm, fill=1, stroke=0)
    canvas.setFillColor(colors.white)
    canvas.setFont("Helvetica", 8)
    canvas.drawString(M, 0.4*cm, "Dr. Urology Clinic  |  FRCS(Urol) OPD Reference")
    canvas.drawRightString(PAGE_W - M, 0.4*cm, f"Page {doc.page}")
    canvas.restoreState()

def build_book():
    doc = SimpleDocTemplate(
        OUTPUT,
        pagesize=A4,
        leftMargin=M, rightMargin=M,
        topMargin=1.5*cm, bottomMargin=1.5*cm,
        title="Urology OPD 25 Cases",
        author="FRCS(Urol) Reference",
    )

    styles = getSampleStyleSheet()

    # Custom styles
    s_cover_main = ParagraphStyle("CoverMain", fontName="Helvetica-Bold", fontSize=28,
                                   textColor=C_DARK_BLUE, alignment=TA_CENTER, leading=36)
    s_cover_sub  = ParagraphStyle("CoverSub",  fontName="Helvetica",      fontSize=14,
                                   textColor=C_TEAL,      alignment=TA_CENTER, leading=20)
    s_cover_note = ParagraphStyle("CoverNote", fontName="Helvetica-Oblique", fontSize=11,
                                   textColor=colors.HexColor("#555555"), alignment=TA_CENTER)

    s_case_num   = ParagraphStyle("CaseNum",  fontName="Helvetica-Bold",  fontSize=11,
                                   textColor=colors.white, alignment=TA_LEFT)
    s_case_title = ParagraphStyle("CaseTitle",fontName="Helvetica-Bold",  fontSize=13,
                                   textColor=colors.white, alignment=TA_LEFT, leading=16)
    s_case_ur    = ParagraphStyle("CaseUr",   fontName=URDU_FONT,         fontSize=12,
                                   textColor=colors.HexColor("#FFE082"), alignment=TA_RIGHT)

    s_diag_label = ParagraphStyle("DiagLabel",fontName="Helvetica-Bold",  fontSize=9,
                                   textColor=C_RED_DARK)
    s_diag_text  = ParagraphStyle("DiagText", fontName="Helvetica-Bold",  fontSize=9,
                                   textColor=C_DARK_BLUE, leading=13)
    s_diag_ur    = ParagraphStyle("DiagUr",   fontName=URDU_FONT,         fontSize=10,
                                   textColor=C_TEAL, alignment=TA_RIGHT)

    s_med_hdr    = ParagraphStyle("MedHdr",   fontName="Helvetica-Bold",  fontSize=8,
                                   textColor=colors.white)
    s_med_name   = ParagraphStyle("MedName",  fontName="Helvetica-Bold",  fontSize=8,
                                   textColor=C_DARK_BLUE, leading=11)
    s_med_data   = ParagraphStyle("MedData",  fontName="Helvetica",       fontSize=8,
                                   textColor=colors.black, leading=11)
    s_med_ur     = ParagraphStyle("MedUr",    fontName=URDU_FONT,         fontSize=9,
                                   textColor=C_TEAL, alignment=TA_RIGHT, leading=13)
    s_med_dur    = ParagraphStyle("MedDur",   fontName="Helvetica-Bold",  fontSize=8,
                                   textColor=C_ORANGE)

    s_prev_hdr   = ParagraphStyle("PrevHdr",  fontName="Helvetica-Bold",  fontSize=9,
                                   textColor=C_GREEN_DARK)
    s_prev_ur    = ParagraphStyle("PrevUr",   fontName=URDU_FONT,         fontSize=9,
                                   textColor=colors.black, leading=13)
    s_prev_en    = ParagraphStyle("PrevEn",   fontName="Helvetica-Oblique",fontSize=8,
                                   textColor=colors.HexColor("#555555"), leading=11)

    s_toc_title  = ParagraphStyle("TocTitle", fontName="Helvetica-Bold",  fontSize=20,
                                   textColor=C_DARK_BLUE, alignment=TA_CENTER)
    s_toc_item   = ParagraphStyle("TocItem",  fontName="Helvetica",       fontSize=10,
                                   textColor=colors.black, leading=16)
    s_toc_bold   = ParagraphStyle("TocBold",  fontName="Helvetica-Bold",  fontSize=10,
                                   textColor=C_MID_BLUE,  leading=16)

    story = []

    # ── COVER PAGE ──────────────────────────────────────────────
    story.append(Spacer(1, 3*cm))

    # Big orange accent bar
    cover_bar = Table([[ Paragraph("", s_cover_main) ]], colWidths=[PAGE_W - 2*M])
    cover_bar.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_ORANGE),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
    ]))
    story.append(cover_bar)
    story.append(Spacer(1, 0.3*cm))

    story.append(Paragraph("UROLOGY OPD", s_cover_main))
    story.append(Spacer(1, 0.2*cm))
    story.append(Paragraph("25 Most Important Cases", ParagraphStyle("CM2",
        fontName="Helvetica-Bold", fontSize=22, textColor=C_ORANGE, alignment=TA_CENTER)))
    story.append(Spacer(1, 0.4*cm))

    story.append(HRFlowable(width="80%", thickness=2, color=C_DARK_BLUE, hAlign="CENTER"))
    story.append(Spacer(1, 0.4*cm))

    story.append(Paragraph("Diagnosis • Medicines (English) • Dose • Frequency (Urdu) • Prevention (Urdu)", s_cover_sub))
    story.append(Spacer(1, 0.6*cm))
    story.append(Paragraph("Based on:<br/><b>Viva Practice for the FRCS(Urol)</b>", s_cover_sub))
    story.append(Paragraph("Manit Arya &amp; Iqbal Shergill", s_cover_note))
    story.append(Spacer(1, 0.8*cm))

    # Decorative box
    info_data = [[
        Paragraph("<b>Campbell-Walsh-Wein Urology</b><br/>Smith &amp; Tanagho General Urology<br/>EAU / NICE Guidelines 2024", ParagraphStyle("ref", fontName="Helvetica", fontSize=9, textColor=C_DARK_BLUE, leading=14))
    ]]
    info_tbl = Table(info_data, colWidths=[PAGE_W - 2*M])
    info_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), C_LIGHT_BLUE),
        ("BOX",           (0,0), (-1,-1), 1, C_DARK_BLUE),
        ("TOPPADDING",    (0,0), (-1,-1), 10),
        ("BOTTOMPADDING", (0,0), (-1,-1), 10),
        ("LEFTPADDING",   (0,0), (-1,-1), 14),
    ]))
    story.append(info_tbl)
    story.append(Spacer(1, 1*cm))
    story.append(Paragraph("Urdu Dose &amp; Prevention Guide for OPD Practice", s_cover_note))
    story.append(PageBreak())

    # ── TABLE OF CONTENTS ────────────────────────────────────────
    story.append(Spacer(1, 0.5*cm))
    story.append(Paragraph("TABLE OF CONTENTS", s_toc_title))
    story.append(Spacer(1, 0.3*cm))
    story.append(HRFlowable(width="100%", thickness=1.5, color=C_ORANGE))
    story.append(Spacer(1, 0.3*cm))

    toc_rows = []
    for c in CASES:
        toc_rows.append([
            Paragraph(f"<b>{c['no']:02d}.</b>", s_toc_bold),
            Paragraph(c["title"], s_toc_item),
            Paragraph(c["title_ur"], ParagraphStyle("TocUr", fontName=URDU_FONT, fontSize=9,
                                                     textColor=C_TEAL, alignment=TA_RIGHT, leading=14)),
        ])

    toc_tbl = Table(toc_rows, colWidths=[1*cm, 9.5*cm, 6.5*cm])
    toc_tbl.setStyle(TableStyle([
        ("ROWBACKGROUNDS", (0,0), (-1,-1), [colors.white, C_GRAY_LIGHT]),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("GRID",          (0,0), (-1,-1), 0.3, C_GRAY_MED),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    story.append(toc_tbl)
    story.append(PageBreak())

    # ── CASES ────────────────────────────────────────────────────
    for c in CASES:
        elements = []

        # ── Case header ──
        hdr_data = [[
            Paragraph(f"CASE {c['no']:02d}", s_case_num),
            Paragraph(c["title"], s_case_title),
            Paragraph(c["title_ur"], s_case_ur),
        ]]
        hdr_tbl = Table(hdr_data, colWidths=[1.5*cm, 10*cm, 5.5*cm])
        hdr_tbl.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), C_DARK_BLUE),
            ("TOPPADDING",    (0,0), (-1,-1), 8),
            ("BOTTOMPADDING", (0,0), (-1,-1), 8),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 8),
            ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ]))
        elements.append(hdr_tbl)
        elements.append(Spacer(1, 0.15*cm))

        # ── Diagnosis ──
        diag_data = [[
            Paragraph("DIAGNOSIS:", s_diag_label),
            Paragraph(c["diagnosis"], s_diag_text),
            Paragraph(c["diagnosis_ur"], s_diag_ur),
        ]]
        diag_tbl = Table(diag_data, colWidths=[2*cm, 9*cm, 6*cm])
        diag_tbl.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), C_RED_LIGHT),
            ("BOX",           (0,0), (-1,-1), 0.5, C_RED_DARK),
            ("TOPPADDING",    (0,0), (-1,-1), 6),
            ("BOTTOMPADDING", (0,0), (-1,-1), 6),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 6),
            ("VALIGN",        (0,0), (-1,-1), "TOP"),
        ]))
        elements.append(diag_tbl)
        elements.append(Spacer(1, 0.15*cm))

        # ── Medicines header ──
        med_hdr_data = [[
            Paragraph("S.No  MEDICINE NAME", s_med_hdr),
            Paragraph("DOSE", s_med_hdr),
            Paragraph("FREQUENCY / TARTEEB (Urdu)", s_med_hdr),
            Paragraph("DURATION", s_med_hdr),
        ]]
        med_hdr_tbl = Table(med_hdr_data, colWidths=[7*cm, 1.8*cm, 6.2*cm, 2*cm])
        med_hdr_tbl.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), C_MID_BLUE),
            ("TOPPADDING",    (0,0), (-1,-1), 5),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5),
            ("LEFTPADDING",   (0,0), (-1,-1), 6),
            ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ]))
        elements.append(med_hdr_tbl)

        # ── Medicine rows ──
        med_rows = []
        for idx, (name, dose, freq_ur, dur) in enumerate(c["meds"]):
            row_bg = colors.white if idx % 2 == 0 else C_GRAY_LIGHT
            med_rows.append([
                Paragraph(f"<b>{idx+1}.</b>  {name}", s_med_name),
                Paragraph(dose, s_med_data),
                Paragraph(freq_ur, s_med_ur),
                Paragraph(dur, s_med_dur),
            ])

        med_tbl = Table(med_rows, colWidths=[7*cm, 1.8*cm, 6.2*cm, 2*cm])
        row_fills = [("BACKGROUND", (0,i), (-1,i),
                      colors.white if i % 2 == 0 else C_GRAY_LIGHT) for i in range(len(med_rows))]
        med_tbl.setStyle(TableStyle([
            ("GRID",          (0,0), (-1,-1), 0.4, C_GRAY_MED),
            ("TOPPADDING",    (0,0), (-1,-1), 5),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5),
            ("LEFTPADDING",   (0,0), (-1,-1), 6),
            ("RIGHTPADDING",  (0,0), (-1,-1), 6),
            ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ] + row_fills))
        elements.append(med_tbl)
        elements.append(Spacer(1, 0.15*cm))

        # ── Prevention ──
        prev_hdr = Table([[
            Paragraph("احتیاطی تدابیر / PREVENTION & ADVICE", s_prev_hdr)
        ]], colWidths=[PAGE_W - 2*M])
        prev_hdr.setStyle(TableStyle([
            ("BACKGROUND",    (0,0), (-1,-1), C_GREEN_LIGHT),
            ("BOX",           (0,0), (-1,-1), 0.5, C_GREEN_DARK),
            ("TOPPADDING",    (0,0), (-1,-1), 5),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ]))
        elements.append(prev_hdr)

        prev_rows = []
        for i, (ur, en) in enumerate(c["prevention"]):
            row_bg = colors.white if i % 2 == 0 else C_YELLOW_SOFT
            prev_rows.append([
                Paragraph(f"• {ur}", s_prev_ur),
                Paragraph(f"({en})", s_prev_en),
            ])

        prev_tbl = Table(prev_rows, colWidths=[9*cm, 8*cm])
        row_fills2 = [("BACKGROUND", (0,i), (-1,i),
                       colors.white if i % 2 == 0 else C_YELLOW_SOFT) for i in range(len(prev_rows))]
        prev_tbl.setStyle(TableStyle([
            ("GRID",          (0,0), (-1,-1), 0.3, C_GRAY_MED),
            ("TOPPADDING",    (0,0), (-1,-1), 4),
            ("BOTTOMPADDING", (0,0), (-1,-1), 4),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 6),
            ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
        ] + row_fills2))
        elements.append(prev_tbl)
        elements.append(Spacer(1, 0.3*cm))

        # Keep case together if small enough, else just append
        story.append(KeepTogether(elements))
        story.append(PageBreak())

    # ── Build PDF ──
    doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
    print(f"PDF saved: {OUTPUT}")

if __name__ == "__main__":
    build_book()
Running Command

python3 /home/daytona/workspace/urology-opd-cases/build_book.py 2>&1

Running Command

find /usr/share/fonts -name "*Noto*" -name "*.ttf" 2>/dev/null | grep -i "arabic\|urdu\|naskh\|nastaliq" | head -20; find /usr/share/fonts -name "*Arabic*" -o -name "*Urdu*" 2>/dev/null | head -10

Running Command

find /usr/share/fonts -name "*.ttf" 2>/dev/null | head -20; find /home/daytona/.local/share/fonts -name "*.ttf" 2>/dev/null | head -10; ls /usr/share/fonts/ 2>/dev/null

Running Command

pip install --user arabic-reshaper python-bidi --quiet 2>&1 | tail -3 && echo "Done"

Running Command

# Download Noto Naskh Arabic font (supports Urdu) mkdir -p /home/daytona/workspace/urology-opd-cases/fonts wget -q "https://github.com/notofonts/arabic/releases/download/NotoNaskhArabic-v2.016/NotoNaskhArabic-v2.016.zip" \ -O /home/daytona/workspace/urology-opd-cases/fonts/noto.zip && \ unzip -q /home/daytona/workspace/urology-opd-cases/fonts/noto.zip -d /home/daytona/workspace/urology-opd-cases/fonts/ && \ find /home/daytona/workspace/urology-opd-cases/fonts/ -name "*.ttf" | head -5 && echo "Font downloaded"

Running Command

ls /home/daytona/workspace/urology-opd-cases/fonts/NotoNaskhArabic/hinted/ttf/ && echo "Font files exist"

Running Command

python3 -c " import arabic_reshaper from bidi.algorithm import get_display from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont FONT_PATH = '/home/daytona/workspace/urology-opd-cases/fonts/NotoNaskhArabic/hinted/ttf/NotoNaskhArabic-Regular.ttf' pdfmetrics.registerFont(TTFont('NotoNaskhArabic', FONT_PATH)) # Test reshaping test = 'روزانہ ایک بار کھانے کے ساتھ' reshaped = arabic_reshaper.reshape(test) bidi_text = get_display(reshaped) print('Reshaped:', repr(bidi_text[:30])) print('Font OK') "

complete above given task

Writing File

~/urology-opd-cases/build_book_final.py

#!/usr/bin/env python3
"""
UROLOGY OPD CASES - Complete Book (25 Cases) — FINAL with Urdu font
"""

import os, sys
import arabic_reshaper
from bidi.algorithm import get_display

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
    PageBreak, HRFlowable, KeepTogether
)
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

OUTPUT = "/home/daytona/workspace/urology-opd-cases/output/Urology_OPD_25_Cases_Book.pdf"

FONT_DIR = "/home/daytona/workspace/urology-opd-cases/fonts/NotoNaskhArabic/hinted/ttf"
pdfmetrics.registerFont(TTFont("NotoAr",     f"{FONT_DIR}/NotoNaskhArabic-Regular.ttf"))
pdfmetrics.registerFont(TTFont("NotoArBold", f"{FONT_DIR}/NotoNaskhArabic-Bold.ttf"))
print("Urdu font loaded OK")

def u(text):
    """Reshape + bidi Urdu/Arabic text so ReportLab renders it correctly."""
    reshaped = arabic_reshaper.reshape(str(text))
    return get_display(reshaped)

# ─── COLOUR PALETTE ──────────────────────────────────────────────
C_DARK_BLUE   = colors.HexColor("#003366")
C_MID_BLUE    = colors.HexColor("#0055A5")
C_LIGHT_BLUE  = colors.HexColor("#D6E8FF")
C_TEAL        = colors.HexColor("#005F5F")
C_ORANGE      = colors.HexColor("#E87722")
C_LIGHT_ORANGE= colors.HexColor("#FFF3E0")
C_GREEN_LIGHT = colors.HexColor("#E8F5E9")
C_GREEN_DARK  = colors.HexColor("#1B5E20")
C_RED_LIGHT   = colors.HexColor("#FFEBEE")
C_RED_DARK    = colors.HexColor("#B71C1C")
C_GRAY_LIGHT  = colors.HexColor("#F5F5F5")
C_GRAY_MED    = colors.HexColor("#BDBDBD")
C_YELLOW_SOFT = colors.HexColor("#FFFDE7")
WHITE         = colors.white
BLACK         = colors.black

PAGE_W, PAGE_H = A4
M = 1.4*cm

# ─── CASE DATA (25 cases) ────────────────────────────────────────
# Each case: no, title, title_ur, diagnosis, diagnosis_ur,
#            meds: [(name, dose, freq_ur, dur_ur)],
#            prevention: [(ur, en)]
CASES = [
    {
        "no": 1,
        "title": "Benign Prostatic Hyperplasia (BPH)",
        "title_ur": "پروسٹیٹ غدود کا بڑھنا",
        "diagnosis": "BPH Grade II  |  IPSS >20, Qmax <10 ml/s, PVR >100 ml",
        "diagnosis_ur": "پروسٹیٹ کا بڑھنا - درجہ دوم",
        "meds": [
            ("TAB. TAMSULOSIN (0.4 MG)",      "1 Tab",  "رات کو سونے سے پہلے - روزانہ",          "3 ماہ"),
            ("TAB. FINASTERIDE (5 MG)",        "1 Tab",  "روزانہ ایک بار - صبح",                  "6 ماہ"),
            ("TAB. SOLIFENACIN (5 MG)",        "1 Tab",  "روزانہ ایک بار - اگر عجلت بھی ہو",      "1 ماہ"),
        ],
        "prevention": [
            ("شام کے بعد پانی کم پئیں",                    "Reduce fluid intake after evening"),
            ("چائے، کافی اور الکوحل سے پرہیز کریں",       "Avoid caffeine and alcohol"),
            ("ہر 6 ماہ بعد PSA ٹیسٹ کروائیں",             "PSA check every 6 months"),
            ("قبض سے بچیں",                                "Avoid constipation"),
            ("باقاعدہ ورزش کریں",                           "Regular exercise"),
        ],
    },
    {
        "no": 2,
        "title": "Acute Uncomplicated UTI (Cystitis)",
        "title_ur": "مثانے کا انفیکشن",
        "diagnosis": "Acute Uncomplicated Cystitis  |  E.coli commonest  |  MSU: >10⁵ CFU/ml",
        "diagnosis_ur": "مثانے کا تیز انفیکشن - بغیر پیچیدگی",
        "meds": [
            ("TAB. NITROFURANTOIN (100 MG)",   "1 Tab",  "دن میں دو بار کھانے کے ساتھ",           "7 دن"),
            ("TAB. PHENAZOPYRIDINE (200 MG)",  "1 Tab",  "دن میں تین بار",                         "2 دن صرف"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "ضرورت پر کھانے کے بعد",                  "3 دن"),
        ],
        "prevention": [
            ("روزانہ 2-3 لیٹر پانی پئیں",                 "Drink 2-3 L water daily"),
            ("پیشاب روکیں نہیں",                           "Do not hold urine"),
            ("صفائی آگے سے پیچھے کی طرف کریں",             "Wipe front to back (females)"),
            ("جنسی تعلق کے بعد پیشاب کریں",                "Void after intercourse"),
            ("Cranberry juice مفید ہے",                    "Cranberry juice reduces recurrence"),
        ],
    },
    {
        "no": 3,
        "title": "Ureteric Colic / Kidney Stone",
        "title_ur": "گردے کی پتھری - یوریٹر میں",
        "diagnosis": "Right Ureteric Calculus 6 mm  |  Lower 1/3rd  |  KUB + USS confirmed  |  No infection",
        "diagnosis_ur": "دائیں یوریٹر میں پتھری - 6 ملی میٹر",
        "meds": [
            ("TAB. DICLOFENAC SODIUM (75 MG)", "1 Tab",  "دن میں دو بار کھانے کے بعد",             "5 دن"),
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو - پتھری نکالنے کے لیے (MET)",     "4 ہفتے"),
            ("TAB. METOCLOPRAMIDE (10 MG)",    "1 Tab",  "متلی پر دن میں تین بار",                  "3 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",        "1 Tab",  "کھانے سے پہلے صبح",                       "5 دن"),
        ],
        "prevention": [
            ("روزانہ 3 لیٹر سے زیادہ پانی پئیں",         "Drink >3 L water daily — most important"),
            ("نمک کم کھائیں",                             "Reduce dietary salt"),
            ("پالک، ٹماٹر، مونگ پھلی کم کھائیں",         "Reduce oxalate-rich foods"),
            ("سرخ گوشت اور پروٹین کم کریں",               "Reduce red meat / animal protein"),
            ("پیشاب ہلکا پیلا رکھیں",                     "Keep urine pale yellow (hydration check)"),
        ],
    },
    {
        "no": 4,
        "title": "Painless Macroscopic Haematuria",
        "title_ur": "بغیر درد پیشاب میں خون",
        "diagnosis": "Painless Macroscopic Haematuria  |  URGENT: CT Urogram + Flexible Cystoscopy  |  ?TCC Bladder",
        "diagnosis_ur": "بغیر درد پیشاب میں خون - مثانے کا کینسر ممکن",
        "meds": [
            ("TAB. TRANEXAMIC ACID (500 MG)",  "2 Tabs", "دن میں تین بار",                          "3 دن"),
            ("TAB. CIPROFLOXACIN (500 MG)",    "1 Tab",  "دن میں دو بار",                           "5 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",        "1 Tab",  "صبح کھانے سے پہلے",                       "5 دن"),
        ],
        "prevention": [
            ("تمباکو نوشی فوری بند کریں",                 "Stop smoking immediately — #1 risk factor"),
            ("خوب پانی پئیں",                             "Drink plenty of water"),
            ("CT Urogram اور Cystoscopy لازمی",           "CT urogram + cystoscopy mandatory"),
            ("خون بند نہ ہو تو فوری ہسپتال جائیں",       "Emergency if bleeding does not stop"),
        ],
    },
    {
        "no": 5,
        "title": "Epididymo-Orchitis (STI Related)",
        "title_ur": "خصیے کی سوزش - جنسی انفیکشن",
        "diagnosis": "Acute Epididymo-Orchitis  |  STI origin (Chlamydia / N.gonorrhoeae)  |  NAAT positive",
        "diagnosis_ur": "خصیے کی سوزش - جنسی طور پر منتقل",
        "meds": [
            ("TAB. DOXYCYCLINE (100 MG)",      "1 Tab",  "دن میں دو بار کھانے کے ساتھ",           "14 دن"),
            ("INJ. CEFTRIAXONE 500 MG IM",     "1 Inj",  "صرف ایک بار IM - آج",                    "ایک بار صرف"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں تین بار کھانے کے بعد",            "7 دن"),
            ("TAB. OMEPRAZOLE (20 MG)",        "1 Tab",  "کھانے سے پہلے",                           "7 دن"),
        ],
        "prevention": [
            ("جنسی تعلق میں condom استعمال کریں",        "Use condoms — safe sex always"),
            ("جنسی ساتھی کا علاج بھی ضروری",             "Treat sexual partner simultaneously"),
            ("STI مکمل اسکریننگ کروائیں",                "Full STI screen (HIV, HepB, syphilis)"),
            ("خصیوں کو سہارا دیں / اونچا رکھیں",        "Scrotal support and elevation"),
        ],
    },
    {
        "no": 6,
        "title": "Localised Prostate Cancer",
        "title_ur": "پروسٹیٹ کا کینسر - ابتدائی مرحلہ",
        "diagnosis": "Prostate Adenocarcinoma  |  Gleason 7 (3+4)  |  cT2b N0 M0  |  PSA 12 ng/mL  |  ISUP Grade 2",
        "diagnosis_ur": "پروسٹیٹ کینسر گلیسن 7 - مقامی مرحلہ",
        "meds": [
            ("TAB. BICALUTAMIDE (50 MG)",      "1 Tab",  "روزانہ ایک بار",                          "3 ماہ"),
            ("INJ. LEUPROLIDE 3.75 MG IM",     "3.75 mg","ہر ماہ ایک بار",                          "آنکولوجی کے مطابق"),
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو - LUTS کے لیے",                   "جاری رہے"),
            ("TAB. CALCIUM + VIT D3",          "1 Tab",  "روزانہ ایک بار",                          "طویل مدتی"),
        ],
        "prevention": [
            ("سرخ گوشت اور چکنائی کم کریں",             "Reduce red meat and saturated fat"),
            ("ٹماٹر اور سبز سبزیاں زیادہ کھائیں",       "Increase lycopene — tomatoes, greens"),
            ("PSA ہر 3 ماہ بعد چیک کروائیں",            "PSA monitoring every 3 months"),
            ("DEXA scan - ہارمون تھراپی دوران",         "DEXA bone scan during ADT therapy"),
            ("باقاعدہ ورزش - ہڈیوں کے لیے",             "Regular weight-bearing exercise"),
        ],
    },
    {
        "no": 7,
        "title": "Bladder Cancer TCC — Post-TURBT",
        "title_ur": "مثانے کا کینسر - TURBT بعد BCG علاج",
        "diagnosis": "TCC Bladder (Ta G2) — Post-TURBT  |  BCG intravesical immunotherapy required",
        "diagnosis_ur": "مثانے کا کینسر - Ta G2 - TURBT کے بعد",
        "meds": [
            ("BCG INTRAVESICAL (81 mg/vial)",  "1 Vial", "ہفتے میں ایک بار - 6 ہفتے",             "6 ہفتے"),
            ("TAB. OXYBUTYNIN (5 MG)",         "1 Tab",  "دن میں دو بار",                           "BCG دوران"),
            ("TAB. PHENAZOPYRIDINE (200 MG)",  "1 Tab",  "دن میں تین بار - جلن پر",                "ضرورت پر"),
        ],
        "prevention": [
            ("تمباکو نوشی مکمل بند کریں",               "Stop smoking — strongest risk factor"),
            ("صنعتی کیمیکلز سے دور رہیں",               "Avoid industrial chemicals / dyes"),
            ("خوب پانی پئیں",                           "Drink plenty of water"),
            ("Cystoscopy ہر 3 ماہ بعد لازمی",           "Surveillance cystoscopy every 3 months"),
        ],
    },
    {
        "no": 8,
        "title": "Female Stress Urinary Incontinence",
        "title_ur": "کھانسنے / ہنسنے پر پیشاب نکلنا",
        "diagnosis": "Genuine Stress Urinary Incontinence (GSI)  |  Urodynamics: USI confirmed  |  No DO",
        "diagnosis_ur": "حقیقی اسٹریس پیشاب بے قابوی - یورو ڈائنامکس تصدیق شدہ",
        "meds": [
            ("TAB. DULOXETINE (40 MG)",        "1 Tab",  "دن میں دو بار کھانے کے ساتھ",           "3 ماہ"),
            ("VAGINAL ESTROGEN CREAM",         "Apply",  "رات کو لگائیں - اندام نہانی میں",        "3 ماہ"),
            ("TAB. OXYBUTYNIN (5 MG)",         "1 Tab",  "رات کو - اگر عجلت بھی ہو",              "1 ماہ"),
        ],
        "prevention": [
            ("Kegel exercises روزانہ کریں - سب سے اہم", "Daily pelvic floor exercises — FIRST LINE"),
            ("وزن کم کریں اگر زیادہ ہو",               "Lose weight if BMI > 30"),
            ("قبض سے بچیں",                             "Avoid constipation"),
            ("بھاری چیزیں اٹھانے سے بچیں",              "Avoid heavy lifting"),
            ("چائے اور کافی کم کریں",                   "Reduce caffeine intake"),
        ],
    },
    {
        "no": 9,
        "title": "Erectile Dysfunction (ED)",
        "title_ur": "مردانہ کمزوری",
        "diagnosis": "Erectile Dysfunction — Mixed Organic (Vasculogenic + Diabetic Neuropathy)  |  IIEF-5 < 10",
        "diagnosis_ur": "مردانہ کمزوری - ذیابطیس اور بلڈ پریشر کی وجہ سے",
        "meds": [
            ("TAB. SILDENAFIL (50 MG)",        "1 Tab",  "جنسی تعلق سے 1 گھنٹہ پہلے ضرورت پر",  "جاری رہے"),
            ("TAB. METFORMIN (500 MG)",        "1 Tab",  "دن میں دو بار کھانے کے ساتھ",           "طویل مدتی"),
            ("TAB. TESTOSTERONE (if low)",     "Per TFT","ڈاکٹر کی ہدایت کے مطابق",               "3 ماہ ٹرائل"),
        ],
        "prevention": [
            ("ذیابطیس اور بلڈ پریشر قابو میں رکھیں",   "Control DM and hypertension"),
            ("تمباکو نوشی بند کریں",                    "Stop smoking — major vascular risk"),
            ("الکوحل سے پرہیز کریں",                    "Avoid alcohol"),
            ("باقاعدہ ورزش کریں",                       "Regular aerobic exercise"),
            ("ذہنی تناؤ کم کریں",                       "Manage psychological stress / anxiety"),
        ],
    },
    {
        "no": 10,
        "title": "Overactive Bladder (OAB)",
        "title_ur": "مثانے کی بے قابوی اور عجلت",
        "diagnosis": "OAB Wet Syndrome  |  Urodynamics: Detrusor Overactivity  |  MSU negative",
        "diagnosis_ur": "مثانے کی زیادہ حرکت - ڈیٹروسر اوور ایکٹیوٹی",
        "meds": [
            ("TAB. SOLIFENACIN (5 MG)",        "1 Tab",  "روزانہ ایک بار",                          "3 ماہ"),
            ("TAB. MIRABEGRON (50 MG)",        "1 Tab",  "روزانہ ایک بار - متبادل دوا",             "3 ماہ"),
            ("TAB. OXYBUTYNIN (5 MG)",         "1 Tab",  "دن میں دو بار",                           "2 ماہ"),
        ],
        "prevention": [
            ("مثانے کی ٹریننگ کریں - ہر ہفتے 5 منٹ دیر","Bladder retraining — delay voiding 5 min/week"),
            ("چائے اور کافی مکمل بند کریں",             "Stop caffeine completely"),
            ("پیشاب کی ڈائری لکھیں",                   "Keep a voiding diary"),
            ("شام 6 بجے کے بعد پانی کم پئیں",           "Restrict fluids after 6 PM"),
            ("روزانہ Kegel exercises کریں",              "Daily pelvic floor exercises"),
        ],
    },
    {
        "no": 11,
        "title": "Varicocele + Male Infertility",
        "title_ur": "خصیوں کی رگوں کا پھولنا اور بانجھ پن",
        "diagnosis": "Left Varicocele Grade II  |  Semen: Oligoasthenospermia  |  USS Doppler confirmed",
        "diagnosis_ur": "بائیں ورائیکوسیل گریڈ 2 - سپرم کی کمی",
        "meds": [
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں تین بار کھانے کے بعد",            "1 ہفتہ"),
            ("TAB. VITAMIN E (400 IU)",        "1 Cap",  "روزانہ ایک بار",                          "3 ماہ"),
            ("TAB. FOLIC ACID (5 MG)",         "1 Tab",  "روزانہ ایک بار",                          "3 ماہ"),
            ("TAB. COENZYME Q10 (200 MG)",     "1 Cap",  "روزانہ ایک بار",                          "3 ماہ"),
        ],
        "prevention": [
            ("Scrotal support / jockstrap پہنیں",        "Wear scrotal support"),
            ("لمبے عرصے تک کھڑے نہ رہیں",              "Avoid prolonged standing"),
            ("بھاری ورزش سے گریز کریں",                 "Avoid heavy weightlifting"),
            ("سالانہ سپرم ٹیسٹ کروائیں",                "Annual semen analysis"),
            ("Varicocelectomy کی رائے لیں",             "Surgical referral — microsurgical varicocelectomy"),
        ],
    },
    {
        "no": 12,
        "title": "PUJ Obstruction / Hydronephrosis",
        "title_ur": "گردے کی نالی کی رکاوٹ",
        "diagnosis": "Left PUJ Obstruction  |  MAG3: Obstructed  |  Differential Function 38%  |  Moderate hydronephrosis",
        "diagnosis_ur": "بائیں گردے کی نالی میں رکاوٹ - MAG3 ثابت",
        "meds": [
            ("TAB. DICLOFENAC SODIUM (50 MG)", "1 Tab",  "دن میں دو بار کھانے کے بعد - درد پر",   "5 دن ضرورت پر"),
            ("TAB. TRIMETHOPRIM (200 MG)",     "1 Tab",  "رات کو - آپریشن تک",                     "آپریشن تک"),
            ("TAB. OMEPRAZOLE (20 MG)",        "1 Tab",  "کھانے سے پہلے",                           "NSAID کے ساتھ"),
        ],
        "prevention": [
            ("پانی آہستہ آہستہ پئیں - یکدم زیادہ نہیں", "Avoid rapid large fluid intake"),
            ("بخار یا شدید درد پر فوری ڈاکٹر",         "Immediate review if fever / severe pain"),
            ("Laparoscopic Pyeloplasty کروائیں",        "Surgical referral — pyeloplasty"),
            ("سالانہ MAG3 renogram کروائیں",            "Annual MAG3 renogram follow-up"),
        ],
    },
    {
        "no": 13,
        "title": "Testicular Germ Cell Tumour",
        "title_ur": "خصیے کا کینسر",
        "diagnosis": "Right Testicular NSGCT  |  AFP elevated  |  betaHCG raised  |  LDH raised  |  Stage IS",
        "diagnosis_ur": "دائیں خصیے کا نان سیمینوما کینسر - ابتدائی مرحلہ",
        "meds": [
            ("SPERM BANKING (before surgery)", "Referral","آپریشن سے پہلے لازمی",                  "ایک بار"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "ضرورت پر کھانے کے بعد",                  "ضرورت پر"),
            ("TAB. ONDANSETRON (4 MG)",        "1 Tab",  "دن میں تین بار - کیموتھراپی دوران",      "کیمو دوران"),
        ],
        "prevention": [
            ("ماہانہ خصیوں کا خود معائنہ کریں",         "Monthly testicular self-examination"),
            ("Undescended testis بچپن میں ٹھیک کروائیں","Treat cryptorchidism in childhood"),
            ("AFP، HCG، LDH ہر 6 ہفتے",               "Tumour markers every 6 weeks"),
            ("دوسرے خصیے کا بھی معائنہ کریں",           "Examine contralateral testis"),
        ],
    },
    {
        "no": 14,
        "title": "Acute Urinary Retention (AUR)",
        "title_ur": "اچانک پیشاب بند ہو جانا",
        "diagnosis": "AUR secondary to BPH  |  Bladder 650 ml on USS  |  Catheterised  |  TWOC at 3 days",
        "diagnosis_ur": "BPH کی وجہ سے پیشاب بند - کیتھیٹر لگایا - TWOC 3 دن بعد",
        "meds": [
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو - TWOC سے پہلے لازمی",            "کم از کم 3 دن"),
            ("TAB. FINASTERIDE (5 MG)",        "1 Tab",  "روزانہ ایک بار",                          "طویل مدتی"),
            ("TAB. TRIMETHOPRIM (200 MG)",     "1 Tab",  "رات کو - کیتھیٹر دوران",                 "کیتھیٹر تک"),
            ("TAB. PARACETAMOL (500 MG)",      "2 Tabs", "دن میں چار بار",                          "3 دن"),
        ],
        "prevention": [
            ("یکدم بہت زیادہ پانی نہ پئیں",             "Avoid rapid large fluid intake"),
            ("قبض سے بچیں",                             "Avoid constipation"),
            ("اینٹی ہسٹامین سے پرہیز کریں",             "Avoid antihistamines / decongestants"),
            ("سردی سے بچیں - retention trigger",        "Avoid cold weather — triggers AUR"),
            ("TWOC ناکام ہو تو TURP کی رائے لیں",      "TURP referral if TWOC fails twice"),
        ],
    },
    {
        "no": 15,
        "title": "Chronic Prostatitis / CPPS",
        "title_ur": "پروسٹیٹ کا دائمی درد",
        "diagnosis": "Chronic Prostatitis / CPPS  |  NIH Category IIIB  |  CPSI Score 22  |  MSU negative  |  >3 months",
        "diagnosis_ur": "دائمی پروسٹیٹائٹس - NIH زمرہ IIIB",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",    "1 Tab",  "دن میں دو بار",                           "4 ہفتے"),
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو",                                  "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں تین بار کھانے کے بعد",            "2 ہفتے"),
            ("TAB. AMITRIPTYLINE (10 MG)",     "1 Tab",  "رات کو سونے سے پہلے",                    "3 ماہ"),
        ],
        "prevention": [
            ("مسالہ دار کھانا اور الکوحل سے پرہیز",    "Avoid spicy food and alcohol"),
            ("گرم پانی میں بیٹھیں (Sitz bath)",        "Warm sitz baths daily"),
            ("دیر تک بیٹھنے سے گریز کریں",             "Avoid prolonged sitting"),
            ("باقاعدہ ورزش - تیراکی، چہل قدمی",       "Regular exercise — swimming, walking"),
            ("ذہنی تناؤ کم کریں",                       "Stress management / psychological support"),
        ],
    },
    # ═══════════════ NEW CASES 16-25 ════════════════════════════
    {
        "no": 16,
        "title": "Recurrent UTI in Women",
        "title_ur": "خواتین میں بار بار پیشاب کا انفیکشن",
        "diagnosis": "Recurrent UTI (≥2 /6 months or ≥3/year)  |  E.coli  |  Post-menopausal atrophic changes noted",
        "diagnosis_ur": "بار بار UTI - سال میں 3 یا زیادہ بار",
        "meds": [
            ("TAB. NITROFURANTOIN (100 MG)",   "1 Tab",  "رات کو صرف - طویل روک تھام",            "6 ماہ"),
            ("VAGINAL ESTROGEN CREAM (Ovestin)","Apply", "رات کو اندام نہانی میں لگائیں",          "3 ماہ"),
            ("TAB. TRIMETHOPRIM (200 MG)",     "1 Tab",  "جنسی تعلق کے فوری بعد - ایک بار",       "ضرورت پر"),
        ],
        "prevention": [
            ("روزانہ خوب پانی پئیں",                   "Drink plenty of water daily"),
            ("جنسی تعلق کے بعد ہر بار پیشاب کریں",    "Void after every intercourse"),
            ("Probiotics (Lactobacillus) لیں",          "Lactobacillus probiotics — evidence-based"),
            ("Cranberry extract روزانہ لیں",            "Daily cranberry extract"),
            ("Postmenopausal: مقامی ایسٹروجن لیں",     "Local oestrogen if postmenopausal"),
        ],
    },
    {
        "no": 17,
        "title": "Urethral Stricture",
        "title_ur": "پیشاب کی نالی کا تنگ ہونا",
        "diagnosis": "Anterior Urethral Stricture  |  Bulbar 1.5 cm  |  RGU confirmed  |  Qmax <5 ml/s  |  Plateau uroflow",
        "diagnosis_ur": "پیشاب کی نالی کا تنگ ہونا - بلبر پوزیشن",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",    "1 Tab",  "دن میں دو بار",                           "5 دن"),
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو - پیشاب کی دھار بہتر کرنے کو",   "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "ضرورت پر کھانے کے بعد",                  "ضرورت پر"),
        ],
        "prevention": [
            ("Urethral Dilatation یا OIU کروائیں",     "Urethral dilatation / OIU — definitive"),
            ("بار بار ہو تو Urethroplasty کروائیں",   "Recurrent stricture → urethroplasty"),
            ("گونوریا انفیکشن سے بچاؤ",               "Prevent gonorrhoea — common cause"),
            ("پیشاب کی دھار کمزور ہو تو فوری دکھائیں","Prompt review if flow worsens"),
        ],
    },
    {
        "no": 18,
        "title": "Chronic Scrotal Pain / Orchialgia",
        "title_ur": "خصیوں میں دائمی درد",
        "diagnosis": "Chronic Orchialgia / CSCP  |  >3 months  |  Infection excluded  |  No mass  |  USS normal",
        "diagnosis_ur": "خصیوں میں دائمی درد - 3 ماہ سے زیادہ - انفیکشن یا گانٹھ نہیں",
        "meds": [
            ("TAB. AMITRIPTYLINE (10 MG)",     "1 Tab",  "رات کو سونے سے پہلے",                    "3 ماہ"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں دو بار کھانے کے بعد",             "2 ہفتے"),
            ("TAB. GABAPENTIN (300 MG)",       "1 Tab",  "رات کو - ضرورت پر",                      "3 ماہ"),
        ],
        "prevention": [
            ("Scrotal support پہنیں",                  "Wear scrotal support at all times"),
            ("دیر تک بیٹھنے / سائیکلنگ سے گریز",     "Avoid prolonged sitting / cycling"),
            ("گرم پانی میں بیٹھیں",                   "Warm baths for comfort"),
            ("ذہنی تناؤ کم کریں",                     "Psychological support / CBT if needed"),
            ("Pelvic floor physiotherapy کروائیں",    "Pelvic physiotherapy often helps"),
        ],
    },
    {
        "no": 19,
        "title": "Interstitial Cystitis / Bladder Pain Syndrome",
        "title_ur": "مثانے کا دائمی درد بغیر انفیکشن",
        "diagnosis": "Bladder Pain Syndrome / IC  |  Pelvic pain >6 months  |  Frequency + Urgency  |  MSU negative  |  Cystoscopy: glomerulations",
        "diagnosis_ur": "مثانے کا دائمی درد - 6 ماہ سے زیادہ - کلچر منفی",
        "meds": [
            ("TAB. AMITRIPTYLINE (10-25 MG)",  "1 Tab",  "رات کو سونے سے پہلے",                    "3-6 ماہ"),
            ("TAB. HYDROXYZINE (25 MG)",       "1 Tab",  "رات کو",                                  "3 ماہ"),
            ("HEPARIN INTRAVESICAL INSTILL",   "Instill","ہفتے میں دو بار",                         "6 ہفتے"),
        ],
        "prevention": [
            ("ایسڈک کھانا پینا بند کریں",             "Avoid acidic foods: citrus, tomato, coffee"),
            ("ذہنی تناؤ کم کریں",                     "Stress reduction — major trigger"),
            ("IC diet follow کریں",                   "Follow IC-specific elimination diet"),
            ("Bladder training کریں",                 "Bladder retraining programme"),
        ],
    },
    {
        "no": 20,
        "title": "Phimosis / BXO (Lichen Sclerosus)",
        "title_ur": "غلاف ختنہ کا تنگ ہونا - BXO",
        "diagnosis": "Phimosis with BXO (Lichen Sclerosus)  |  White sclerotic plaques  |  Non-retractile foreskin  |  Recurrent balanitis",
        "diagnosis_ur": "ختنے کا تنگ ہونا - BXO کے ساتھ",
        "meds": [
            ("BETAMETHASONE 0.05% CREAM",      "Apply",  "دن میں دو بار - 4 سے 6 ہفتے",           "4-6 ہفتے"),
            ("TAB. FLUCONAZOLE (150 MG)",      "1 Tab",  "ہفتے میں ایک بار",                        "4 ہفتے"),
            ("TAB. CETIRIZINE (10 MG)",        "1 Tab",  "رات کو - خارش پر",                       "2 ہفتے"),
        ],
        "prevention": [
            ("روزانہ صابن سے صفائی کریں",             "Daily hygiene with gentle soap"),
            ("Circumcision کی رائے لیں",             "Circumcision — definitive for BXO"),
            ("BXO سے یوریترل stricture ممکن",        "BXO increases urethral stricture / SCC risk"),
            ("Steroid cream 6 ہفتے سے زیادہ نہیں",  "Do not use steroid cream > 6 weeks unsupervised"),
        ],
    },
    {
        "no": 21,
        "title": "Nocturia / Nocturnal Polyuria",
        "title_ur": "رات کو بار بار پیشاب آنا",
        "diagnosis": "Nocturnal Polyuria  |  FVC: NPI >33%  |  Nocturnal volume >2500 ml/night  |  No cardiac/renal cause",
        "diagnosis_ur": "رات کو پیشاب زیادہ بننا - نوکٹرنل پولی یوریا",
        "meds": [
            ("TAB. DESMOPRESSIN (0.1 MG)",     "1 Tab",  "رات کو سونے سے 1 گھنٹہ پہلے",           "3 ماہ - Na+ ہفتہ وار چیک"),
            ("TAB. FUROSEMIDE (20 MG)",        "1 Tab",  "سہ پہر 4 تا 6 بجے",                      "4 ہفتے"),
            ("TAB. SOLIFENACIN (5 MG)",        "1 Tab",  "روزانہ ایک بار - اگر OAB بھی ہو",        "3 ماہ"),
        ],
        "prevention": [
            ("شام 6 بجے کے بعد پانی بالکل کم کریں",  "Strictly restrict evening fluids after 6 PM"),
            ("Desmopressin پر سوڈیم مانیٹر",         "Monitor serum Na+ weekly — hyponatraemia risk"),
            ("نمک اور الکوحل سے پرہیز",               "Reduce salt and avoid alcohol"),
            ("Compression stockings پہنیں",           "Compression stockings reduce evening oedema"),
        ],
    },
    {
        "no": 22,
        "title": "Hydrocele",
        "title_ur": "خصیے میں پانی",
        "diagnosis": "Primary Hydrocele  |  Transilluminates  |  USS: fluid only  |  No solid mass  |  Testis normal",
        "diagnosis_ur": "خصیے میں پانی - روشنی سے چمکتا ہے - کینسر نہیں",
        "meds": [
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں دو بار - ضرورت پر",               "ضرورت پر"),
            ("Surgical repair required",       "—",      "دوا سے ٹھیک نہیں ہوتا - آپریشن ضروری", "جراحی"),
        ],
        "prevention": [
            ("Jaboulay / Lord's procedure کروائیں",   "Surgical repair — Jaboulay or Lord's procedure"),
            ("چھوٹا ہو اور تکلیف نہ ہو تو انتظار",   "Can observe if small and asymptomatic"),
            ("خود ٹیکہ لگوانے سے گریز",              "Avoid aspiration — high recurrence"),
            ("ہر 6 ماہ بعد USS کروائیں",             "USS surveillance every 6 months"),
        ],
    },
    {
        "no": 23,
        "title": "Renal Cell Carcinoma (Incidental)",
        "title_ur": "گردے کا کینسر - اتفاقی دریافت",
        "diagnosis": "Incidental RCC  |  Right kidney 4 cm solid enhancing  |  cT1b N0 M0  |  Clear cell likely",
        "diagnosis_ur": "گردے کا کینسر - 4 سینٹی میٹر - CT سکین پر اتفاقی",
        "meds": [
            ("Partial Nephrectomy / RFA — first line","—","آپریشن پہلا علاج ہے",                   "آنکولوجی ریفرل"),
            ("TAB. OMEPRAZOLE (20 MG)",        "1 Tab",  "کھانے سے پہلے",                           "جاری رہے"),
            ("TAB. AMLODIPINE 5 MG (if HTN)",  "1 Tab",  "روزانہ ایک بار - BP کنٹرول",             "طویل مدتی"),
        ],
        "prevention": [
            ("تمباکو نوشی بند کریں",                 "Stop smoking — major risk factor"),
            ("وزن کم کریں",                          "Lose weight — obesity is risk factor"),
            ("بلڈ پریشر قابو میں رکھیں",             "Control hypertension strictly"),
            ("سالانہ CT urogram کروائیں",            "Annual CT urogram surveillance post-surgery"),
        ],
    },
    {
        "no": 24,
        "title": "Ischaemic Priapism (Emergency)",
        "title_ur": "بے وقت اور دردناک عضو تناسل - ہنگامی",
        "diagnosis": "Ischaemic Priapism > 4 hrs  |  Low-flow  |  Blood gas: pO2 <30 mmHg  |  EMERGENCY aspiration required",
        "diagnosis_ur": "اسکیمک پریاپزم - 4 گھنٹے سے زیادہ - ہنگامی علاج ضروری",
        "meds": [
            ("INJ. PHENYLEPHRINE 200 mcg IC",  "200 mcg","ہر 3-5 منٹ میں - جب تک ڈھیلا نہ ہو",   "ہنگامی طور پر"),
            ("INTRACAVERNOSAL ASPIRATION",     "Aspirate","فوری - ہنگامی",                          "ایک بار"),
            ("TAB. SILDENAFIL (50 MG)",        "1 Tab",  "بعد میں - ED follow-up کے لیے",          "ED follow-up"),
        ],
        "prevention": [
            ("Sickle cell والے: hydroxurea، ہائیڈریشن","Sickle cell: hydroxurea + hydration"),
            ("PDE5 inhibitors کا غلط استعمال نہ کریں","Avoid PDE5 inhibitor misuse"),
            ("4 گھنٹے سے زیادہ ہو تو فوری A&E جائیں","Any priapism > 4 hrs = urological emergency"),
            ("خون کی بیماریوں کو کنٹرول کریں",       "Control underlying haematological disorders"),
        ],
    },
    {
        "no": 25,
        "title": "Acute Bacterial Prostatitis",
        "title_ur": "پروسٹیٹ کا تیز بخاری انفیکشن",
        "diagnosis": "Acute Bacterial Prostatitis  |  NIH Category I  |  PSA very high (do NOT biopsy now)  |  Tender boggy prostate  |  E.coli MSU",
        "diagnosis_ur": "پروسٹیٹ کا تیز انفیکشن - NIH زمرہ اول - PSA بہت بلند",
        "meds": [
            ("TAB. CIPROFLOXACIN (500 MG)",    "1 Tab",  "دن میں دو بار",                           "4 سے 6 ہفتے"),
            ("TAB. IBUPROFEN (400 MG)",        "1 Tab",  "دن میں تین بار کھانے کے بعد",            "2 ہفتے"),
            ("TAB. TAMSULOSIN (0.4 MG)",       "1 Tab",  "رات کو - پیشاب کی سہولت",               "4 ہفتے"),
            ("TAB. PARACETAMOL (500 MG)",      "2 Tabs", "دن میں چار بار - بخار پر",               "ضرورت پر"),
        ],
        "prevention": [
            ("پانی خوب پئیں - 2 سے 3 لیٹر روزانہ",   "Drink 2-3 L water daily"),
            ("مکمل اینٹی بایوٹک کورس کریں",           "Complete full antibiotic course"),
            ("علاج بعد PSA 3 ماہ پر دوبارہ چیک",     "Recheck PSA 3 months after treatment"),
            ("مسالہ دار کھانا اور الکوحل بند",        "Avoid spicy food and alcohol"),
            ("Prostatic abscess کا خیال رکھیں",       "Monitor for prostatic abscess — TRUS if no improvement"),
        ],
    },
]

# ─── PAGE HEADER / FOOTER ────────────────────────────────────────
def on_page(canvas, doc):
    canvas.saveState()
    # Top bar
    canvas.setFillColor(C_DARK_BLUE)
    canvas.rect(0, PAGE_H - 1.1*cm, PAGE_W, 1.1*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica-Bold", 8)
    canvas.drawCentredString(PAGE_W/2, PAGE_H - 0.75*cm,
        "UROLOGY OPD — 25 Most Important Cases  |  Based on Viva Practice for FRCS(Urol)  |  Medicines in English  |  Frequency in Urdu")
    # Bottom bar
    canvas.setFillColor(C_DARK_BLUE)
    canvas.rect(0, 0, PAGE_W, 1.0*cm, fill=1, stroke=0)
    canvas.setFillColor(WHITE)
    canvas.setFont("Helvetica", 7)
    canvas.drawString(M, 0.35*cm, "Dr. Urology Clinic  |  FRCS(Urol) OPD Reference  |  EAU / NICE Guidelines")
    canvas.drawRightString(PAGE_W - M, 0.35*cm, f"Page {doc.page}  /  25 Cases")
    canvas.restoreState()

# ─── STYLES ──────────────────────────────────────────────────────
def make_styles():
    s = {}
    def P(name, **kw):
        s[name] = ParagraphStyle(name, **kw)

    P("CoverH1",   fontName="Helvetica-Bold",  fontSize=32, textColor=C_DARK_BLUE,  alignment=TA_CENTER, leading=38)
    P("CoverH2",   fontName="Helvetica-Bold",  fontSize=20, textColor=C_ORANGE,     alignment=TA_CENTER, leading=26)
    P("CoverSub",  fontName="Helvetica",        fontSize=12, textColor=C_TEAL,       alignment=TA_CENTER, leading=18)
    P("CoverNote", fontName="Helvetica-Oblique",fontSize=10, textColor=colors.HexColor("#666666"), alignment=TA_CENTER)
    P("TocTitle",  fontName="Helvetica-Bold",  fontSize=18, textColor=C_DARK_BLUE,  alignment=TA_CENTER)
    P("TocNo",     fontName="Helvetica-Bold",  fontSize=10, textColor=C_MID_BLUE,   leading=16)
    P("TocEn",     fontName="Helvetica",        fontSize=10, textColor=BLACK,        leading=16)
    P("TocUr",     fontName="NotoAr",          fontSize=10, textColor=C_TEAL,       alignment=TA_RIGHT, leading=16)
    P("CaseNo",    fontName="Helvetica-Bold",  fontSize=10, textColor=WHITE)
    P("CaseTitle", fontName="Helvetica-Bold",  fontSize=13, textColor=WHITE,        leading=16)
    P("CaseUr",    fontName="NotoAr",          fontSize=12, textColor=colors.HexColor("#FFE082"), alignment=TA_RIGHT)
    P("DiagLbl",   fontName="Helvetica-Bold",  fontSize=8,  textColor=C_RED_DARK)
    P("DiagEn",    fontName="Helvetica-Bold",  fontSize=8,  textColor=C_DARK_BLUE, leading=12)
    P("DiagUr",    fontName="NotoArBold",      fontSize=10, textColor=C_TEAL,      alignment=TA_RIGHT)
    P("MedHdr",    fontName="Helvetica-Bold",  fontSize=8,  textColor=WHITE)
    P("MedName",   fontName="Helvetica-Bold",  fontSize=8,  textColor=C_DARK_BLUE, leading=11)
    P("MedDose",   fontName="Helvetica",        fontSize=8,  textColor=BLACK,       leading=11)
    P("MedFreqUr", fontName="NotoAr",          fontSize=10, textColor=C_TEAL,      alignment=TA_RIGHT, leading=14)
    P("MedDur",    fontName="Helvetica-Bold",  fontSize=8,  textColor=C_ORANGE,    leading=11)
    P("PrevHdr",   fontName="Helvetica-Bold",  fontSize=9,  textColor=C_GREEN_DARK)
    P("PrevUr",    fontName="NotoAr",          fontSize=10, textColor=BLACK,       alignment=TA_RIGHT, leading=14)
    P("PrevEn",    fontName="Helvetica-Oblique",fontSize=8, textColor=colors.HexColor("#555"), leading=11)
    return s

# ─── HELPERS ─────────────────────────────────────────────────────
def divider(story, color=C_DARK_BLUE, width="100%", thickness=1):
    story.append(HRFlowable(width=width, thickness=thickness, color=color, hAlign="CENTER"))

def sp(story, h=0.2):
    story.append(Spacer(1, h*cm))

# ─── BUILD ───────────────────────────────────────────────────────
def build():
    doc = SimpleDocTemplate(
        OUTPUT, pagesize=A4,
        leftMargin=M, rightMargin=M,
        topMargin=1.4*cm, bottomMargin=1.4*cm,
        title="Urology OPD 25 Cases Book",
        author="FRCS(Urol) Reference",
    )
    S = make_styles()
    story = []

    # ── COVER ──────────────────────────────────────────────────
    sp(story, 2.5)

    # Orange strip
    strip = Table([[""]], colWidths=[PAGE_W - 2*M])
    strip.setStyle(TableStyle([("BACKGROUND",(0,0),(-1,-1),C_ORANGE),
                                ("TOPPADDING",(0,0),(-1,-1),3),("BOTTOMPADDING",(0,0),(-1,-1),3)]))
    story.append(strip)
    sp(story, 0.3)
    story.append(Paragraph("UROLOGY OPD", S["CoverH1"]))
    sp(story, 0.1)
    story.append(Paragraph("25 Most Important Cases", S["CoverH2"]))
    sp(story, 0.3)
    divider(story, C_DARK_BLUE, "70%", 2)
    sp(story, 0.3)
    story.append(Paragraph(
        "Diagnosis  •  Medicine (English)  •  Dose  •  Frequency in Urdu  •  Prevention in Urdu",
        S["CoverSub"]))
    sp(story, 0.5)
    story.append(Paragraph(
        "<b>Based on:</b>  Viva Practice for the FRCS(Urol)<br/>"
        "Manit Arya  &amp;  Iqbal Shergill", S["CoverSub"]))
    sp(story, 0.2)
    story.append(Paragraph(
        "Campbell-Walsh-Wein Urology  •  Smith &amp; Tanagho General Urology  •  EAU / NICE Guidelines 2024",
        S["CoverNote"]))
    sp(story, 0.8)

    info = Table([[Paragraph(
        "<b>Medicines:</b> Generic names in CAPITAL LETTERS (English)<br/>"
        "<b>Frequency / ترتیب:</b>  Written in Urdu<br/>"
        "<b>Prevention / احتیاطی تدابیر:</b>  Urdu with English translation",
        ParagraphStyle("InfoBox", fontName="Helvetica", fontSize=10, textColor=C_DARK_BLUE, leading=16))
    ]], colWidths=[PAGE_W - 2*M])
    info.setStyle(TableStyle([
        ("BACKGROUND",(0,0),(-1,-1), C_LIGHT_BLUE),
        ("BOX",       (0,0),(-1,-1), 1, C_DARK_BLUE),
        ("TOPPADDING",(0,0),(-1,-1), 12), ("BOTTOMPADDING",(0,0),(-1,-1), 12),
        ("LEFTPADDING",(0,0),(-1,-1), 16),
    ]))
    story.append(info)
    story.append(PageBreak())

    # ── TABLE OF CONTENTS ─────────────────────────────────────
    sp(story, 0.4)
    story.append(Paragraph("TABLE OF CONTENTS", S["TocTitle"]))
    sp(story, 0.2)
    divider(story, C_ORANGE, "100%", 2)
    sp(story, 0.3)

    toc_rows = []
    for c in CASES:
        toc_rows.append([
            Paragraph(f"<b>{c['no']:02d}.</b>", S["TocNo"]),
            Paragraph(c["title"], S["TocEn"]),
            Paragraph(u(c["title_ur"]), S["TocUr"]),
        ])
    toc_t = Table(toc_rows, colWidths=[1*cm, 9.5*cm, 6.5*cm])
    toc_t.setStyle(TableStyle([
        ("ROWBACKGROUNDS", (0,0),(-1,-1), [WHITE, C_GRAY_LIGHT]),
        ("GRID",           (0,0),(-1,-1), 0.3, C_GRAY_MED),
        ("TOPPADDING",     (0,0),(-1,-1), 4), ("BOTTOMPADDING",(0,0),(-1,-1),4),
        ("LEFTPADDING",    (0,0),(-1,-1), 6), ("RIGHTPADDING",(0,0),(-1,-1),6),
        ("VALIGN",         (0,0),(-1,-1), "MIDDLE"),
    ]))
    story.append(toc_t)
    story.append(PageBreak())

    # ── CASES ────────────────────────────────────────────────
    for c in CASES:
        elems = []

        # Case header
        hdr = Table([[
            Paragraph(f"CASE {c['no']:02d}", S["CaseNo"]),
            Paragraph(c["title"], S["CaseTitle"]),
            Paragraph(u(c["title_ur"]), S["CaseUr"]),
        ]], colWidths=[1.5*cm, 10*cm, 5.5*cm])
        hdr.setStyle(TableStyle([
            ("BACKGROUND",(0,0),(-1,-1), C_DARK_BLUE),
            ("TOPPADDING",(0,0),(-1,-1),8),("BOTTOMPADDING",(0,0),(-1,-1),8),
            ("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),8),
            ("VALIGN",(0,0),(-1,-1),"MIDDLE"),
        ]))
        elems.append(hdr)
        elems.append(Spacer(1, 0.12*cm))

        # Diagnosis
        diag = Table([[
            Paragraph("DIAGNOSIS:", S["DiagLbl"]),
            Paragraph(c["diagnosis"], S["DiagEn"]),
            Paragraph(u(c["diagnosis_ur"]), S["DiagUr"]),
        ]], colWidths=[2*cm, 9*cm, 6*cm])
        diag.setStyle(TableStyle([
            ("BACKGROUND",(0,0),(-1,-1), C_RED_LIGHT),
            ("BOX",       (0,0),(-1,-1), 0.5, C_RED_DARK),
            ("TOPPADDING",(0,0),(-1,-1),6),("BOTTOMPADDING",(0,0),(-1,-1),6),
            ("LEFTPADDING",(0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),6),
            ("VALIGN",(0,0),(-1,-1),"TOP"),
        ]))
        elems.append(diag)
        elems.append(Spacer(1, 0.12*cm))

        # Medicine table header
        med_hdr = Table([[
            Paragraph("S.No  MEDICINE NAME", S["MedHdr"]),
            Paragraph("DOSE", S["MedHdr"]),
            Paragraph("FREQUENCY / TARTEEB  (Urdu)", S["MedHdr"]),
            Paragraph("DURATION", S["MedHdr"]),
        ]], colWidths=[7*cm, 1.7*cm, 6.3*cm, 2*cm])
        med_hdr.setStyle(TableStyle([
            ("BACKGROUND",(0,0),(-1,-1), C_MID_BLUE),
            ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
            ("LEFTPADDING",(0,0),(-1,-1),6),("RIGHTPADDING",(0,0),(-1,-1),6),
        ]))
        elems.append(med_hdr)

        med_rows = []
        for idx, (name, dose, freq_ur, dur_ur) in enumerate(c["meds"]):
            bg = WHITE if idx % 2 == 0 else C_GRAY_LIGHT
            med_rows.append([
                Paragraph(f"<b>{idx+1}.</b>  {name}", S["MedName"]),
                Paragraph(dose, S["MedDose"]),
                Paragraph(u(freq_ur), S["MedFreqUr"]),
                Paragraph(u(dur_ur), S["MedDur"]),
            ])
        fills = [("BACKGROUND",(0,i),(-1,i), WHITE if i%2==0 else C_GRAY_LIGHT) for i in range(len(med_rows))]
        med_t = Table(med_rows, colWidths=[7*cm, 1.7*cm, 6.3*cm, 2*cm])
        med_t.setStyle(TableStyle([
            ("GRID",         (0,0),(-1,-1),0.4, C_GRAY_MED),
            ("TOPPADDING",   (0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
            ("LEFTPADDING",  (0,0),(-1,-1),6),("RIGHTPADDING",(0,0),(-1,-1),6),
            ("VALIGN",       (0,0),(-1,-1),"MIDDLE"),
        ] + fills))
        elems.append(med_t)
        elems.append(Spacer(1, 0.12*cm))

        # Prevention header
        prev_hdr_t = Table([[
            Paragraph(u("احتیاطی تدابیر") + "  /  PREVENTION & ADVICE", S["PrevHdr"])
        ]], colWidths=[PAGE_W - 2*M])
        prev_hdr_t.setStyle(TableStyle([
            ("BACKGROUND",(0,0),(-1,-1), C_GREEN_LIGHT),
            ("BOX",       (0,0),(-1,-1), 0.5, C_GREEN_DARK),
            ("TOPPADDING",(0,0),(-1,-1),5),("BOTTOMPADDING",(0,0),(-1,-1),5),
            ("LEFTPADDING",(0,0),(-1,-1),8),
        ]))
        elems.append(prev_hdr_t)

        prev_rows = []
        for i, (pur, pen) in enumerate(c["prevention"]):
            bg = WHITE if i%2==0 else C_YELLOW_SOFT
            prev_rows.append([
                Paragraph(u("• " + pur), S["PrevUr"]),
                Paragraph(f"( {pen} )", S["PrevEn"]),
            ])
        fills2 = [("BACKGROUND",(0,i),(-1,i), WHITE if i%2==0 else C_YELLOW_SOFT) for i in range(len(prev_rows))]
        prev_t = Table(prev_rows, colWidths=[9*cm, 8*cm])
        prev_t.setStyle(TableStyle([
            ("GRID",        (0,0),(-1,-1),0.3, C_GRAY_MED),
            ("TOPPADDING",  (0,0),(-1,-1),4),("BOTTOMPADDING",(0,0),(-1,-1),4),
            ("LEFTPADDING", (0,0),(-1,-1),8),("RIGHTPADDING",(0,0),(-1,-1),6),
            ("VALIGN",      (0,0),(-1,-1),"MIDDLE"),
        ] + fills2))
        elems.append(prev_t)
        elems.append(Spacer(1, 0.25*cm))

        story.append(KeepTogether(elems))
        story.append(PageBreak())

    doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
    size = os.path.getsize(OUTPUT) / 1024
    print(f"\n✓  PDF saved: {OUTPUT}")
    print(f"   Size: {size:.0f} KB  |  25 cases")

if __name__ == "__main__":
    build()
Running Command

python3 /home/daytona/workspace/urology-opd-cases/build_book_final.py 2>&1

Running Command

python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/urology-opd-cases/output/Urology_OPD_25_Cases_Book.pdf') print(f'Pages: {len(r.pages)}') print(f'Title: {r.metadata.title}') # Print first few lines of first text page to verify for i in [2,3,4]: t = r.pages[i].extract_text() if t: print(f'Page {i+1} snippet: {t[:120]}') "

Your Urology OPD Book is ready — download it here:

Urology OPD 25 Cases Book

PDF Document · PDF


📖 What's Inside — 27-Page PDF Book

Structure: Cover Page → Table of Contents → 25 Case Pages (one per page)
Each case page contains:
SectionLanguage
Case titleEnglish + Urdu
Diagnosis with clinical detailsEnglish + Urdu
Medicine nameCAPITAL LETTERS in English
DoseEnglish
Frequency / ترتیبUrdu (proper RTL Naskh font)
DurationUrdu
احتیاطی تدابیر / PreventionUrdu + English translation

📋 All 25 Cases Covered

#Case
1Benign Prostatic Hyperplasia (BPH)
2Acute UTI / Cystitis
3Ureteric Colic / Kidney Stone
4Painless Macroscopic Haematuria
5Epididymo-Orchitis (STI)
6Localised Prostate Cancer
7Bladder Cancer TCC - Post-TURBT
8Female Stress Urinary Incontinence
9Erectile Dysfunction
10Overactive Bladder (OAB)
11Varicocele + Male Infertility
12PUJ Obstruction / Hydronephrosis
13Testicular Germ Cell Tumour
14Acute Urinary Retention (AUR)
15Chronic Prostatitis / CPPS
16Recurrent UTI in Women
17Urethral Stricture
18Chronic Scrotal Pain / Orchialgia
19Interstitial Cystitis / Bladder Pain Syndrome
20Phimosis / BXO (Lichen Sclerosus)
21Nocturia / Nocturnal Polyuria
22Hydrocele
23Renal Cell Carcinoma (Incidental)
24Ischaemic Priapism (Emergency)
25Acute Bacterial Prostatitis

Note: Urdu frequency and prevention text uses the Noto Naskh Arabic font with proper RTL shaping so it renders correctly in any PDF viewer.

give me pdf of 50 urology opd cases also include above given 25 cases every diagnose medicincine frequency dose and prevention should be in urdu .... write good title for book also mention made it by dr naveed ul hassan pgr urology make good and eyecatching book ... should be in both pdf and docx file

Running Command

ls /home/daytona/workspace/urology-opd-cases/fonts/NotoNaskhArabic/hinted/ttf/ && python3 -c "import arabic_reshaper; from bidi.algorithm import get_display; print('libs OK')"

complete above given task

give me pdf of 50 urology opd cases also include above given 25 cases every diagnose medicincine frequency dose and prevention should be in urdu .... write good title for book also mention made it by dr naveed ul hassan pgr urology make good and eyecatching book ... should be in both pdf and docx fileuse only remaining credits to answer my prompt

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.