Uh, LMRI Green and Ovitz with visual pathway protocol. Says, "Minimal indentation of cisternal segment of left third cranial nerve by aberrant group of P1 segment of left PCA. Essentially normal study of brain parenchyma and essentially normal study of orbits, but the patient presented with a chief complaint of diplopia, uh, blurred vision, and left eye pain." management and diagnostic plan
P1 PCA compression CN III third nerve palsy management MRI findings
third cranial nerve palsy PCA compression management
oculomotor nerve palsy posterior cerebral artery neurovascular compression
PMID: 39233308
CN III oculomotor nerve palsy anatomy cisternal segment PCA compression MRI

This diagnostic image consists of two axial cranial MRI slices focusing on the skull base and midbrain. Image A is a T1-weighted post-contrast sequence showing smooth, linear gadolinium enhancement of the cisternal segment of the left oculomotor nerve (CN III), indicated by a red arrow. The enhancement suggests an inflammatory or neoplastic process. Image B displays the same anatomical region using a 3D Constructive Interference in Steady State (CISS) sequence, which provides high-resolution visualization of cranial nerves against the hyperintense cerebrospinal fluid (CSF). In image B, the red arrow points to the oculomotor nerve within the prepontine cistern, allowing for assessment of the nerve's morphology and its relationship with adjacent structures like the posterior cerebral and superior cerebellar arteries. Anatomical landmarks visible in both frames include the globes, orbital structures, the sphenoid sinus, and the midbrain. This comparison illustrates the clinical utility of utilizing both post-contrast and heavily T2-weighted steady-state sequences to evaluate cranial nerve pathology such as oculomotor nerve palsy.

This composite of diagnostic images illustrates the neuroanatomy of the oculomotor (CN III) and abducens (CN VI) nerves and their clinical involvement in pathology. Panels (a) and (b) utilize axial FIESTA MRI to demonstrate normal anatomy: yellow arrows track CN III from its cisternal segment into the cavernous sinus (asterisk), while red arrows show CN VI entering Dorello’s canal (green arrow). The white arrows indicate their anterior trajectory toward the superior orbital fissure. Panels (c) through (e) present axial and coronal fused FDG PET/CT and PET-only images of a 73-year-old male with diplopia. A large, peripherally ossified, hypometabolic mass is visible in the left petrous apex and cerebellopontine angle (long green arrow). Functional denervation is demonstrated by reduced FDG uptake in the left lateral rectus muscle (short green arrow) compared to the normal right side (red arrow), with compensatory hypermetabolism in the left medial rectus muscle. High-resolution MRI (f) confirms the mass involves the expected anatomical course of the left abducens nerve, contrasting with the visible normal right nerve.

This composite of four clinical images displays endoscopic views and micro-dissections of human cadaveric specimens, focusing on the neurovascular anatomy of the interpeduncular and ambient cisterns. Figure A shows an endoscopic endonasal view featuring a persistent trigeminal artery, a rare fetal anastomosis, connecting the left intracavernous Internal Carotid Artery (ICA) to the basilar artery (BA). Figures B, C, and D demonstrate the detailed vascular supply of the cisternal segment of the oculomotor nerve (CN III). The nerve is seen coursing between the posterior cerebral artery (PCA) and the superior cerebellar artery (SCA). Key educational focus is placed on the thalamoperforating arteries (TPA) arising from the pre-communicating (P1) segment of the PCA, which provide the primary blood supply to this segment of CN III (indicated by blue arrows). Significant anatomical landmarks shown include the pituitary stalk, Liliequist's membrane, posterior communicating artery (PcomA), and the anterior inferior cerebellar artery (AICA). This material serves as an advanced anatomical reference for neurosurgical planning and neurovascular education.

"All oculomotor palsies warrant imaging evaluation for a PCOM aneurysm... any pupil-involving or pupil-sparing incomplete oculomotor palsy requires immediate evaluation for a PCOM aneurysm, given the high risk of subarachnoid hemorrhage and mortality if left undiagnosed."
| Pupil Status | Implication |
|---|---|
| Pupil dilated and poorly reactive | Compressive etiology - aneurysm must be excluded STAT |
| Pupil completely spared + complete motor palsy | Favors ischemic (microvascular) - aneurysm very unlikely |
| Incomplete motor palsy, any pupil status | Aneurysm still possible - urgent imaging required |
"The absence of an affected pupil in the setting of a complete motor oculomotor paresis almost always excludes a diagnosis of aneurysm... Patients with a third nerve palsy with a normal pupillary sphincter and completely palsied EOMs and levator is almost never due to an intracranial aneurysm."
Patient: Diplopia + Blurred Vision + Left Eye Pain
MRI: Aberrant P1 PCA → Minimal indentation of Left CN III (cisternal)
↓
1. Examine pupil STATUS NOW
→ Dilated/unreactive: EMERGENT CTA/DSA - rule out aneurysm
→ Spared or mild: Proceed with urgent but non-emergent workup
↓
2. Confirm no aneurysm on vascular imaging (MRA/CTA/DSA)
↓
3. Workup: HbA1c, glucose, ESR, BP, lipids
↓
4. Diagnosis: Neurovascular Conflict (NVC) of CN III by aberrant PCA P1
↓
5. Treatment:
- Conservative: risk factor management, prism, patch, pain control
- Monitor 3-6 months
- If refractory/progressive → MVD referral
Sources: Bradley & Daroff's Neurology in Clinical Practice, p. 2512-2514; Adams & Victor's Principles of Neurology, 12th Ed., p. relevant; Localization in Clinical Neurology, 8e, p. 449-451; Zhao et al., World Neurosurg 2024, PMID 39233308
Is it a... Slow process or, uh, gradual process? Will any antibiotic cause it , like azithromycin? Recently had some fever and took azithromycin.
azithromycin cranial nerve palsy diplopia ocular side effects evidence
| Etiology | Onset | Pain? |
|---|---|---|
| Microvascular ischemic (diabetes, HTN) | Acute - hours | Usually yes, often periorbital |
| Aneurysmal compression | Acute to subacute - hours to days | Yes, often severe ("worst headache") |
| Neurovascular conflict / PCA loop (this patient) | Subacute to gradual - days to weeks | Variable, often mild to moderate |
| Tumor/mass | Gradual - weeks to months | Variable |
| Ophthalmoplegic migraine | Episodic, recurrent | Yes, headache |
तो, best way, now how can I explain the patient about the process and management plan? simple ans short
"Aapki aankhon ko chalane wali ek nerve hai - uspe ek artery thodi si press kar rahi hai. Isliye double vision, pain, aur blurred vision ho raha hai."
"Yeh koi sudden disease nahi hai. Yeh blood vessel shayad pehle se thodi si alag jagah par thi - lekin jab aapko fever aaya, blood pressure aur pulse thoda badha, toh nerve par pressure mehsoos hone laga."
"Antibiotic se yeh nahi hua. Woh toh sirf infection ke liye tha. Timing coincidence thi."
"Abhi hum kuch tests karenge - blood sugar, BP, ek special vascular scan - taaki confirm ho sake koi badi problem toh nahi hai. Uske baad:
- Pehle 3-6 mahine - dawai, diet, BP/sugar control, aur aankh ke liye special prism glass
- Agar theek nahi hua - toh ek chhoti surgery hoti hai jisme us blood vessel ko nerve se door kar dete hain - bahut safe hai"
"Yeh cancer nahi hai, stroke nahi hai. Bahut log isse theek ho jaate hain. Bas thoda patience chahiye aur regular follow-up."
"3 se 6 mahine mein aksar apne aap better hone lagta hai. Hum regular check karte rahenge."
"Hum ne MRI karke dekha - koi aneurysm nahi hai, koi tumor nahi hai. Isliye abhi emergency nahi hai - lekin follow-up zaroor karna hai."
in telugu
"మీ మెదడులో ఒక చిన్న రక్తనాళం ఉంది - అది కళ్ళని కదిలించే నరానికి కొంచెం తాకుతోంది. అందుకే కళ్ళు రెండుగా కనిపించడం, నొప్పి, మసకగా కనిపించడం జరుగుతోంది."
"ఈ రక్తనాళం పుట్టినప్పటి నుండీ కొంచెం వేరే చోట ఉంది - ఇప్పుడు జ్వరం వల్ల BP, pulse కొంచెం పెరిగాయి, అప్పుడు నరానికి pressure అనిపించింది. అంతే."
"లేదు. Azithromycin వల్ల ఇది రాదు. అది infection కి మాత్రమే. Timing coincidence అయింది."
"మనం కొన్ని tests చేస్తాం - blood sugar, BP, ఒక special vascular scan. తర్వాత:
- మొదట 3 నుండి 6 నెలలు - BP, sugar control, కళ్ళకి special glasses
- అయినా తగ్గకపోతే - ఒక చిన్న surgery ఉంది, దానిలో ఆ రక్తనాళాన్ని నరం నుండి తొలగిస్తారు - చాలా safe గా ఉంటుంది"
"లేదు. Cancer కాదు, stroke కాదు. MRI లో చూశాం - పెద్ద ప్రమాదం ఏమీ లేదు. చాలా మంది ఈ సమస్య నుండి తగ్గిపోతారు. Regular follow-up మాత్రం తప్పకుండా రావాలి."
"సాధారణంగా 3 నుండి 6 నెలల్లో మెరుగుపడుతుంది. మనం చూస్తూ ఉంటాం."
Create a patient handout PDF in Telugu explaining CN III palsy and PCA compression segment cant compress occulomotar nerve
ls /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace/patient-handout && echo "ready"
python3 -c " from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont import subprocess # Check for Telugu fonts result = subprocess.run(['fc-list', ':lang=te'], capture_output=True, text=True) print(result.stdout[:2000]) "
pip install --user --quiet Pillow reportlab arabic-reshaper python-bidi 2>/dev/null; python3 -c " import subprocess # Check all available fonts r = subprocess.run(['fc-list'], capture_output=True, text=True) lines = [l for l in r.stdout.split('\n') if 'Telugu' in l or 'Noto' in l or 'Lohit' in l] print('\n'.join(lines[:30])) "
# Download Noto Sans Telugu font mkdir -p /tmp/workspace/patient-handout/fonts wget -q "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansTelugu/NotoSansTelugu-Regular.ttf" -O /tmp/workspace/patient-handout/fonts/NotoSansTelugu-Regular.ttf wget -q "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansTelugu/NotoSansTelugu-Bold.ttf" -O /tmp/workspace/patient-handout/fonts/NotoSansTelugu-Bold.ttf ls -la /tmp/workspace/patient-handout/fonts/
curl -sL "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansTelugu/NotoSansTelugu-Regular.ttf" -o /tmp/workspace/patient-handout/fonts/NotoSansTelugu-Regular.ttf curl -sL "https://github.com/googlefonts/noto-fonts/raw/main/hinted/ttf/NotoSansTelugu/NotoSansTelugu-Bold.ttf" -o /tmp/workspace/patient-handout/fonts/NotoSansTelugu-Bold.ttf ls -lh /tmp/workspace/patient-handout/fonts/
~/patient-handout/create_handout.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer,
Table, TableStyle, HRFlowable)
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
# Register Telugu fonts
pdfmetrics.registerFont(TTFont('Telugu', '/tmp/workspace/patient-handout/fonts/NotoSansTelugu-Regular.ttf'))
pdfmetrics.registerFont(TTFont('TeluguBold', '/tmp/workspace/patient-handout/fonts/NotoSansTelugu-Bold.ttf'))
# Colors
DARK_BLUE = colors.HexColor('#1a3a5c')
MEDIUM_BLUE = colors.HexColor('#2e6da4')
LIGHT_BLUE = colors.HexColor('#ddeeff')
ACCENT_ORANGE = colors.HexColor('#e07b39')
LIGHT_ORANGE = colors.HexColor('#fff3ec')
LIGHT_GRAY = colors.HexColor('#f5f5f5')
WHITE = colors.white
GREEN = colors.HexColor('#2e7d32')
LIGHT_GREEN = colors.HexColor('#e8f5e9')
# Styles
styles = {
'hospital_name': ParagraphStyle('hospital_name',
fontName='TeluguBold', fontSize=13, textColor=WHITE,
leading=18, alignment=TA_CENTER),
'header_title': ParagraphStyle('header_title',
fontName='TeluguBold', fontSize=18, textColor=WHITE,
leading=24, alignment=TA_CENTER, spaceAfter=4),
'header_sub': ParagraphStyle('header_sub',
fontName='Telugu', fontSize=11, textColor=colors.HexColor('#cce0ff'),
leading=15, alignment=TA_CENTER),
'section_head': ParagraphStyle('section_head',
fontName='TeluguBold', fontSize=13, textColor=WHITE,
leading=18, alignment=TA_LEFT, leftIndent=6),
'body': ParagraphStyle('body',
fontName='Telugu', fontSize=11, textColor=colors.HexColor('#1a1a1a'),
leading=18, alignment=TA_JUSTIFY, spaceAfter=6),
'body_bold': ParagraphStyle('body_bold',
fontName='TeluguBold', fontSize=11, textColor=DARK_BLUE,
leading=18, spaceAfter=4),
'bullet': ParagraphStyle('bullet',
fontName='Telugu', fontSize=11, textColor=colors.HexColor('#1a1a1a'),
leading=18, leftIndent=16, spaceAfter=4),
'answer': ParagraphStyle('answer',
fontName='Telugu', fontSize=11, textColor=colors.HexColor('#1a3a1a'),
leading=18, leftIndent=12, spaceAfter=4, alignment=TA_JUSTIFY),
'important': ParagraphStyle('important',
fontName='TeluguBold', fontSize=11.5, textColor=colors.HexColor('#7b2000'),
leading=18, alignment=TA_CENTER),
'footer': ParagraphStyle('footer',
fontName='Telugu', fontSize=9, textColor=colors.HexColor('#666666'),
leading=13, alignment=TA_CENTER),
'question': ParagraphStyle('question',
fontName='TeluguBold', fontSize=12, textColor=DARK_BLUE,
leading=18, spaceAfter=2),
'small_label': ParagraphStyle('small_label',
fontName='TeluguBold', fontSize=10, textColor=MEDIUM_BLUE,
leading=14, spaceAfter=2),
}
def make_section_header(title_tel, color=DARK_BLUE):
data = [[Paragraph(title_tel, styles['section_head'])]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), color),
('ROUNDEDCORNERS', [6, 6, 6, 6]),
('TOPPADDING', (0,0), (-1,-1), 7),
('BOTTOMPADDING', (0,0), (-1,-1), 7),
('LEFTPADDING', (0,0), (-1,-1), 10),
]))
return t
def make_info_box(content_paragraphs, bg_color=LIGHT_BLUE, border_color=MEDIUM_BLUE):
data = [[p] for p in content_paragraphs]
flat = [[content_paragraphs]]
t = Table([[content_paragraphs[0] if len(content_paragraphs)==1 else
[p for p in content_paragraphs]]], colWidths=[17*cm])
# Use a simpler approach
inner = []
for p in content_paragraphs:
inner.append([p])
t2 = Table(inner, colWidths=[16.4*cm])
t2.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg_color),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 8),
('RIGHTPADDING', (0,0), (-1,-1), 8),
]))
outer = Table([[t2]], colWidths=[17*cm])
outer.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg_color),
('BOX', (0,0), (-1,-1), 1.5, border_color),
('ROUNDEDCORNERS', [5, 5, 5, 5]),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 4),
('RIGHTPADDING', (0,0), (-1,-1), 4),
]))
return outer
# Build document
doc = SimpleDocTemplate(
'/tmp/workspace/patient-handout/CN3_Telugu_Handout.pdf',
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=1.5*cm, bottomMargin=2*cm
)
story = []
# ── HEADER BANNER ──────────────────────────────────────────────────────────────
header_data = [[
Paragraph("రోగి సమాచార పత్రం", styles['header_title']),
Paragraph("Patient Information Handout", ParagraphStyle('en_sub',
fontName='Helvetica', fontSize=10, textColor=colors.HexColor('#cce0ff'),
alignment=TA_CENTER, leading=14)),
Spacer(1, 4),
Paragraph("కంటి నరం నొప్పి మరియు రక్తనాళ సమస్య\n(CN III Palsy & Vascular Compression)", styles['header_sub']),
]]
header_table = Table([[
Paragraph("రోగి సమాచార పత్రం", styles['header_title']),
]], colWidths=[17*cm])
header_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
('TOPPADDING', (0,0), (-1,-1), 14),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
story.append(header_table)
subtitle_table = Table([[
Paragraph("కంటి నరం నొప్పి మరియు రక్తనాళ పీడన సమస్య (CN III Palsy)", styles['header_sub']),
]], colWidths=[17*cm])
subtitle_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), MEDIUM_BLUE),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 10),
]))
story.append(subtitle_table)
story.append(Spacer(1, 0.4*cm))
# ── SECTION 1: WHAT IS THIS ────────────────────────────────────────────────────
story.append(make_section_header("📌 సమస్య ఏమిటి? (What is the Problem?)"))
story.append(Spacer(1, 0.25*cm))
story.append(Paragraph(
"మీ మెదడులో ఒక చిన్న రక్తనాళం (PCA - Posterior Cerebral Artery) ఉంది. "
"ఆ రక్తనాళం మీ కళ్ళను కదిలించే నరానికి (CN III - Oculomotor Nerve) చాలా దగ్గరగా ఉంది "
"మరియు కొంచెం తాకుతోంది.",
styles['body']
))
# Simple anatomy diagram using table
story.append(Spacer(1, 0.2*cm))
anat_data = [
[Paragraph("🧠 మెదడు", ParagraphStyle('c', fontName='TeluguBold', fontSize=10,
textColor=DARK_BLUE, alignment=TA_CENTER, leading=14)),
Paragraph("→", ParagraphStyle('arr', fontName='Helvetica', fontSize=16,
textColor=MEDIUM_BLUE, alignment=TA_CENTER)),
Paragraph("🩸 రక్తనాళం (PCA)", ParagraphStyle('c', fontName='TeluguBold', fontSize=10,
textColor=colors.HexColor('#8b0000'), alignment=TA_CENTER, leading=14)),
Paragraph("→", ParagraphStyle('arr', fontName='Helvetica', fontSize=16,
textColor=ACCENT_ORANGE, alignment=TA_CENTER)),
Paragraph("👁 కంటి నరం (CN III)", ParagraphStyle('c', fontName='TeluguBold', fontSize=10,
textColor=GREEN, alignment=TA_CENTER, leading=14))],
[Paragraph("Brain", ParagraphStyle('cs', fontName='Helvetica', fontSize=8,
textColor=colors.gray, alignment=TA_CENTER)),
Paragraph("", ParagraphStyle('x', fontName='Helvetica', fontSize=8)),
Paragraph("Blood Vessel\n(pressing)", ParagraphStyle('cs', fontName='Helvetica', fontSize=8,
textColor=colors.gray, alignment=TA_CENTER, leading=11)),
Paragraph("", ParagraphStyle('x', fontName='Helvetica', fontSize=8)),
Paragraph("Oculomotor Nerve\n(being pressed)", ParagraphStyle('cs', fontName='Helvetica', fontSize=8,
textColor=colors.gray, alignment=TA_CENTER, leading=11))],
]
anat_table = Table(anat_data, colWidths=[3.8*cm, 1.5*cm, 4*cm, 1.5*cm, 4.5*cm])
anat_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,1), colors.HexColor('#e3f0ff')),
('BACKGROUND', (2,0), (2,1), colors.HexColor('#ffe3e3')),
('BACKGROUND', (4,0), (4,1), colors.HexColor('#e3ffe3')),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('ROUNDEDCORNERS', [4, 4, 4, 4]),
('BOX', (0,0), (0,1), 1, MEDIUM_BLUE),
('BOX', (2,0), (2,1), 1, colors.HexColor('#cc0000')),
('BOX', (4,0), (4,1), 1, GREEN),
]))
story.append(anat_table)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"ఈ నరం సరిగ్గా పని చేయకపోతే కళ్ళు రెండుగా కనిపించడం, మసకగా కనిపించడం, "
"మరియు కంటి చుట్టూ నొప్పి వస్తాయి.",
styles['body']
))
story.append(Spacer(1, 0.3*cm))
# ── SECTION 2: SYMPTOMS ────────────────────────────────────────────────────────
story.append(make_section_header("🔍 లక్షణాలు (Symptoms)", MEDIUM_BLUE))
story.append(Spacer(1, 0.2*cm))
symptoms = [
("👁👁", "రెండు కళ్ళతో చూసినప్పుడు రెండు రెండుగా కనిపించడం", "Double / Diplopia"),
("😵", "కళ్ళు మసకగా కనిపించడం", "Blurred Vision"),
("😣", "కంటి చుట్టూ / తలలో నొప్పి", "Eye Pain / Headache"),
("🔄", "కళ్ళు కొన్ని దిశల్లో కదపడం కష్టంగా అనిపించడం", "Limited Eye Movement"),
]
for icon, tel, eng in symptoms:
row_data = [[
Paragraph(icon, ParagraphStyle('ic', fontName='Helvetica', fontSize=14, alignment=TA_CENTER)),
Paragraph(tel, ParagraphStyle('st', fontName='Telugu', fontSize=11, textColor=DARK_BLUE, leading=16, leftIndent=4)),
Paragraph(eng, ParagraphStyle('se', fontName='Helvetica-Oblique', fontSize=9, textColor=colors.gray, leading=13)),
]]
rt = Table(row_data, colWidths=[1.2*cm, 12.3*cm, 3.5*cm])
rt.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 6),
]))
story.append(rt)
story.append(Spacer(1, 0.3*cm))
# ── SECTION 3: CAUSE ────────────────────────────────────────────────────────────
story.append(make_section_header("❓ ఎందుకు వచ్చింది? (Why did this happen?)", colors.HexColor('#5c3a1a')))
story.append(Spacer(1, 0.2*cm))
causes = [
"ఈ రక్తనాళం పుట్టినప్పటి నుండి కొంచెం వేరే స్థానంలో ఉంది - ఇది పుట్టుకతో వచ్చే శారీరక వ్యత్యాసం.",
"జ్వరం లేదా BP పెరిగినప్పుడు రక్తనాళంలో pulse పెరుగుతుంది - అప్పుడు నరానికి pressure అనిపించి లక్షణాలు మొదలవుతాయి.",
"Antibiotic (Azithromycin) వల్ల ఇది రాలేదు - ఆ timing coincidence మాత్రమే.",
]
for c in causes:
story.append(Paragraph("▸ " + c, styles['bullet']))
story.append(Spacer(1, 0.3*cm))
# Important note box
imp_data = [[Paragraph(
"⚠️ ముఖ్యమైన విషయం: ఇది cancer కాదు, stroke కాదు, brain tumor కాదు.\n"
"MRI లో చూశాము - పెద్ద ప్రమాదం ఏమీ లేదు.",
ParagraphStyle('imp', fontName='TeluguBold', fontSize=11, textColor=colors.HexColor('#7b2000'),
leading=18, alignment=TA_CENTER)
)]]
imp_table = Table(imp_data, colWidths=[17*cm])
imp_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#fff8e1')),
('BOX', (0,0), (-1,-1), 2, ACCENT_ORANGE),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 12),
('RIGHTPADDING', (0,0), (-1,-1), 12),
]))
story.append(imp_table)
story.append(Spacer(1, 0.35*cm))
# ── SECTION 4: INVESTIGATIONS ──────────────────────────────────────────────────
story.append(make_section_header("🔬 పరీక్షలు (Investigations Required)", colors.HexColor('#1a5c3a')))
story.append(Spacer(1, 0.2*cm))
inv_data = [
["పరీక్ష", "ఎందుకు?"],
["Blood Sugar (HbA1c)", "చక్కెర వ్యాధి ఉందా అని చూడడానికి"],
["Blood Pressure", "BP control సరిగ్గా ఉందా"],
["MRA / CTA (Brain Scan)", "రక్తనాళంలో ballooning (aneurysm) లేదా అని confirm చేయడానికి"],
["Lipid Profile", "Cholesterol levels చూడడానికి"],
["Eye Examination", "Pupil, vision మరియు eye movement assessment"],
]
inv_table = Table(inv_data, colWidths=[7*cm, 10*cm])
inv_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a5c3a')),
('TEXTCOLOR', (0,0), (-1,0), WHITE),
('FONTNAME', (0,0), (-1,0), 'TeluguBold'),
('FONTSIZE', (0,0), (-1,0), 11),
('FONTNAME', (0,1), (-1,-1), 'Telugu'),
('FONTSIZE', (0,1), (-1,-1), 10.5),
('BACKGROUND', (0,1), (-1,1), colors.HexColor('#e8f5e9')),
('BACKGROUND', (0,2), (-1,2), WHITE),
('BACKGROUND', (0,3), (-1,3), colors.HexColor('#e8f5e9')),
('BACKGROUND', (0,4), (-1,4), WHITE),
('BACKGROUND', (0,5), (-1,5), colors.HexColor('#e8f5e9')),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#b0b0b0')),
('ALIGN', (0,0), (-1,-1), 'LEFT'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('LEADING', (0,0), (-1,-1), 16),
]))
story.append(inv_table)
story.append(Spacer(1, 0.35*cm))
# ── SECTION 5: MANAGEMENT ──────────────────────────────────────────────────────
story.append(make_section_header("💊 చికిత్స ప్రణాళిక (Treatment Plan)"))
story.append(Spacer(1, 0.2*cm))
# Phase 1
story.append(Paragraph("దశ 1: మొదట చేయాల్సినవి (First 3-6 నెలలు)", styles['body_bold']))
phase1 = [
"BP మరియు Blood Sugar control చేయడం",
"Cholesterol తగ్గించే మందులు (అవసరమైతే)",
"కళ్ళకు Prism Glasses - రెండుగా కనిపించకుండా",
"కంటికి Eye Patch - విశ్రాంతి కోసం",
"నొప్పికి మందులు (analgesics)",
"ప్రతి 4-6 వారాలకు follow-up visit",
]
for p in phase1:
story.append(Paragraph("✅ " + p, styles['bullet']))
story.append(Spacer(1, 0.25*cm))
# Phase 2
story.append(Paragraph("దశ 2: 6 నెలల తర్వాత తగ్గకపోతే (If not improved)", styles['body_bold']))
story.append(Paragraph(
"Microvascular Decompression (MVD) Surgery అనే చిన్న operation ఉంది. "
"దానిలో ఆ రక్తనాళాన్ని నరం నుండి తొలగిస్తారు. ఇది చాలా safe మరియు "
"ఫలితాలు మంచిగా ఉంటాయి.",
styles['body']
))
story.append(Spacer(1, 0.3*cm))
# Timeline box
timeline_data = [
[Paragraph("ఇప్పుడు", ParagraphStyle('tl', fontName='TeluguBold', fontSize=10,
textColor=WHITE, alignment=TA_CENTER, leading=14)),
Paragraph("→", ParagraphStyle('x', fontName='Helvetica', fontSize=18,
textColor=MEDIUM_BLUE, alignment=TA_CENTER)),
Paragraph("1-3 నెలలు", ParagraphStyle('tl', fontName='TeluguBold', fontSize=10,
textColor=WHITE, alignment=TA_CENTER, leading=14)),
Paragraph("→", ParagraphStyle('x', fontName='Helvetica', fontSize=18,
textColor=MEDIUM_BLUE, alignment=TA_CENTER)),
Paragraph("3-6 నెలలు", ParagraphStyle('tl', fontName='TeluguBold', fontSize=10,
textColor=WHITE, alignment=TA_CENTER, leading=14)),
Paragraph("→", ParagraphStyle('x', fontName='Helvetica', fontSize=18,
textColor=MEDIUM_BLUE, alignment=TA_CENTER)),
Paragraph("తగ్గకపోతే", ParagraphStyle('tl', fontName='TeluguBold', fontSize=10,
textColor=WHITE, alignment=TA_CENTER, leading=14))],
[Paragraph("Tests &\nMedications", ParagraphStyle('ts', fontName='Telugu', fontSize=9,
textColor=DARK_BLUE, alignment=TA_CENTER, leading=13)),
Paragraph("", ParagraphStyle('x', fontName='Helvetica', fontSize=8)),
Paragraph("Follow-up\n& Glasses", ParagraphStyle('ts', fontName='Telugu', fontSize=9,
textColor=DARK_BLUE, alignment=TA_CENTER, leading=13)),
Paragraph("", ParagraphStyle('x', fontName='Helvetica', fontSize=8)),
Paragraph("Review\nProgress", ParagraphStyle('ts', fontName='Telugu', fontSize=9,
textColor=DARK_BLUE, alignment=TA_CENTER, leading=13)),
Paragraph("", ParagraphStyle('x', fontName='Helvetica', fontSize=8)),
Paragraph("MVD\nSurgery", ParagraphStyle('ts', fontName='Telugu', fontSize=9,
textColor=DARK_BLUE, alignment=TA_CENTER, leading=13))],
]
tl_table = Table(timeline_data, colWidths=[3*cm, 1*cm, 3*cm, 1*cm, 3*cm, 1*cm, 3.3*cm])
tl_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,1), DARK_BLUE),
('BACKGROUND', (2,0), (2,1), MEDIUM_BLUE),
('BACKGROUND', (4,0), (4,1), colors.HexColor('#2e7d32')),
('BACKGROUND', (6,0), (6,1), ACCENT_ORANGE),
('ALIGN', (0,0), (-1,-1), 'CENTER'),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,0), 8),
('BOTTOMPADDING', (0,0), (-1,0), 8),
('TOPPADDING', (0,1), (-1,1), 4),
('BOTTOMPADDING', (0,1), (-1,1), 4),
('BOX', (0,0), (0,1), 1, DARK_BLUE),
('BOX', (2,0), (2,1), 1, MEDIUM_BLUE),
('BOX', (4,0), (4,1), 1, colors.HexColor('#2e7d32')),
('BOX', (6,0), (6,1), 1, ACCENT_ORANGE),
]))
story.append(tl_table)
story.append(Spacer(1, 0.35*cm))
# ── SECTION 6: FAQ ──────────────────────────────────────────────────────────────
story.append(make_section_header("❓ సాధారణ సందేహాలు (Common Questions)", colors.HexColor('#4a148c')))
story.append(Spacer(1, 0.2*cm))
faqs = [
("ఇది ఎంత కాలం ఉంటుంది?",
"చాలా మంది రోగులకు 3-6 నెలల్లో తగ్గిపోతుంది. కానీ క్రమం తప్పకుండా doctor ని కలవాలి."),
("Antibiotic వల్ల వచ్చిందా?",
"లేదు. Azithromycin వల్ల ఇది రాదు. Timing coincidence మాత్రమే. జ్వరం వల్ల BP/pulse పెరిగి లక్షణాలు కనిపించాయి."),
("ఇది dangerous గా ఉంటుందా?",
"లేదు. Cancer కాదు, stroke కాదు. Aneurysm లేదని MRI లో confirm అయింది. Proper treatment తో బాగవుతుంది."),
("Eye కప్పుకోవడం (patch) చేయాలా?",
"Diplopia (రెండుగా కనిపించడం) ఉన్నప్పుడు ఒక కంటికి patch వేసుకోవచ్చు - ఇది కష్టం తగ్గిస్తుంది."),
]
for q, a in faqs:
story.append(Paragraph("Q: " + q, styles['question']))
story.append(Paragraph("A: " + a, styles['answer']))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#dddddd'), spaceAfter=6))
story.append(Spacer(1, 0.2*cm))
# ── SECTION 7: WARNING SIGNS ───────────────────────────────────────────────────
warn_data = [[Paragraph(
"🚨 వెంటనే Doctor దగ్గరికి వెళ్ళాల్సిన లక్షణాలు (Red Flags):\n"
"• Pupil (కంటి బొమ్మ) అకస్మాత్తుగా పెద్దగా అయితే\n"
"• చాలా తీవ్రమైన తలనొప్పి వస్తే\n"
"• Eyelid (కంటి రెప్ప) అకస్మాత్తుగా పడిపోతే\n"
"• లక్షణాలు వేగంగా పెరిగిపోతే",
ParagraphStyle('warn', fontName='Telugu', fontSize=11, textColor=colors.HexColor('#b71c1c'),
leading=20, leftIndent=4)
)]]
warn_table = Table(warn_data, colWidths=[17*cm])
warn_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#ffebee')),
('BOX', (0,0), (-1,-1), 2, colors.HexColor('#c62828')),
('TOPPADDING', (0,0), (-1,-1), 10),
('BOTTOMPADDING', (0,0), (-1,-1), 10),
('LEFTPADDING', (0,0), (-1,-1), 12),
('RIGHTPADDING', (0,0), (-1,-1), 12),
]))
story.append(warn_table)
story.append(Spacer(1, 0.4*cm))
# ── FOOTER ─────────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=MEDIUM_BLUE, spaceAfter=6))
story.append(Paragraph(
"ఈ సమాచారం అర్థం కాకపోతే మీ Doctor ని అడగండి • Follow-up తప్పకుండా రండి\n"
"This handout is for patient education only. Please consult your physician for personal medical advice.",
styles['footer']
))
# Build PDF
doc.build(story)
print("PDF created successfully!")
cd /tmp/workspace/patient-handout && python3 create_handout.py 2>&1
ls -lh /tmp/workspace/patient-handout/CN3_Telugu_Handout.pdf
CN3 Telugu Handout
PDF Document · PDF
| విభాగం | Content |
|---|---|
| 📌 సమస్య ఏమిటి | Visual diagram of brain → PCA → CN III with color coding |
| 🔍 లక్షణాలు | All 4 symptoms with icons |
| ❓ ఎందుకు వచ్చింది | Cause explained simply, azithromycin clarified |
| ⚠️ Important box | "Cancer కాదు, stroke కాదు" reassurance box |
| 🔬 పరీక్షలు | Investigation table (HbA1c, BP, MRA, etc.) |
| 💊 చికిత్స | Phase 1 (conservative) + Phase 2 (MVD surgery) with timeline graphic |
| ❓ FAQs | 4 common patient questions answered in Telugu |
| 🚨 Red Flags | Warning signs box in red - when to come immediately |
Sorry, that was a wrong prompt. My question is... The P1 being aberrant is the reason why oculomotor nerve is being compressed. If it follows a normal pathway, then it wouldn't have been compressed.
PCA (P1) ──────────────────→ (runs away laterally)
↑
[CSF gap - nerve is free]
↓
CN III ───────────────────→
↓
[CSF gap]
↓
SCA ──────────────────────→
Normal P1 ────────────────────→ (clear of nerve)
Aberrant P1 ────↘
↘ LOOPS DOWN
↘ INDENTS CN III ← compression here
CN III ───────────[×]──────────→
I couldn't, uh, imagine the anatomy and how it's happening, uh, like a visual image. It's hard, you know? Show me image basically, a normal, uh, P1 part of PCA and an aberrant P1 form, how it's compressing. A comparison image of normal and an abnormal thing.
Medical anatomical comparison diagram showing two side-by-side panels labeled "NORMAL" and "ABERRANT", clean scientific illustration style on white background. LEFT PANEL - "NORMAL P1 PCA": - Brainstem/midbrain shown as a rounded gray structure on the left - Basilar artery coming up from below, splitting at top into two PCA arteries (red tubes) - P1 segment of left PCA curves UPWARD and LATERALLY away from the midbrain, arcing superiorly - CN III (oculomotor nerve) shown as a yellow-gold nerve cord exiting the midbrain ventrally, running horizontally to the right - PCA passes ABOVE CN III with a clear visible gap/space (labeled "CSF cushion") between PCA and CN III - SCA (Superior Cerebellar Artery) shown as a smaller red tube running below CN III - CN III is completely free, no contact with PCA - Green checkmark and label "No compression - CN III free" - Label: "P1 arcs superiorly away from CN III" RIGHT PANEL - "ABERRANT P1 PCA": - Same brainstem structure - Basilar artery splitting, but the LEFT P1 segment takes an ABNORMAL path - instead of arcing upward, it loops DOWNWARD and INFERIORLY, dipping into the path of CN III - The aberrant P1 vessel (bright red) is shown pressing/indenting into the CN III nerve (yellow-gold) from above - The point of contact is highlighted with a red/orange glow or circle labeled "COMPRESSION POINT" - CN III at the compression point shows a slight indentation/deformation - Arrow pointing to compression with label "Aberrant P1 loops down and indents CN III" - Red X mark and label "CN III compressed → diplopia, eye pain, blurred vision" - SCA still shown below Bottom of image: title "P1 Segment PCA - Normal vs Aberrant Course and CN III Compression" Color coding legend: Red = Arteries (PCA, SCA), Yellow-Gold = CN III oculomotor nerve, Gray = Brainstem

thanks.