Give me Answer of question no 3
normal pressure hydrocephalus diagnosis evaluation urinary incontinence gait disturbance guidelines
normal pressure hydrocephalus AND diagnosis
https://pmc.ncbi.nlm.nih.gov/articles/PMC5390935
| Condition | Clues |
|---|---|
| Idiopathic NPH | Progressive magnetic gait, urinary urgency/incontinence, cognitive slowing, ventriculomegaly |
| Parkinson disease or atypical parkinsonism | Tremor, rigidity, bradykinesia, asymmetry, vertical gaze palsy or early falls |
| Vascular parkinsonism/subcortical vascular disease | Stepwise progression, pyramidal signs, vascular risk factors, extensive white-matter disease |
| Cervical spondylotic myelopathy | Spastic gait, hyperreflexia, extensor plantar, hand dysfunction, sensory signs |
| Lumbar spinal stenosis | Back/leg pain, neurogenic claudication, lower-limb radicular symptoms |
| Peripheral neuropathy | Distal weakness/sensory loss, depressed ankle jerks |
| Alzheimer disease or Lewy body dementia | Cognitive symptoms predominate; hallucinations/fluctuations may indicate Lewy body disease |
| Urological causes | BPH, UTI, diabetes, prostate disease, drug-induced urinary symptoms |
Create a quick-reference PDF for normal-pressure hydrocephalus
~/
normal pressure hydrocephalus AND diagnosis
normal pressure hydrocephalus diagnosis management clinical practice guidelines CSF tap test ventriculoperitoneal shunt
https://pmc.ncbi.nlm.nih.gov/articles/PMC7905302
mkdir -p "/tmp/workspace/nph-quick-reference/output" && python - <<'PY' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER, TA_LEFT from reportlab.lib.units import mm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, KeepTogether from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.pdfmetrics import stringWidth from reportlab.pdfgen import canvas from reportlab.lib.colors import HexColor from reportlab.lib.utils import simpleSplit from reportlab.pdfbase.pdfmetrics import registerFontFamily import os out='/tmp/workspace/nph-quick-reference/output/Normal_Pressure_Hydrocephalus_Quick_Reference.pdf' W,H=A4 navy=HexColor('#183B5B'); teal=HexColor('#0B7882'); light=HexColor('#EAF4F5'); pale=HexColor('#F4F7FA'); gold=HexColor('#D88A20'); red=HexColor('#A33A35'); gray=HexColor('#46505A') styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='TitleX', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=20, leading=23, textColor=navy, alignment=TA_CENTER, spaceAfter=3)) styles.add(ParagraphStyle(name='SubX', parent=styles['Normal'], fontName='Helvetica', fontSize=8.5, leading=10, textColor=gray, alignment=TA_CENTER, spaceAfter=8)) styles.add(ParagraphStyle(name='HeadX', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=9.4, leading=11, textColor=colors.white, spaceBefore=0, spaceAfter=0)) styles.add(ParagraphStyle(name='BodyX', parent=styles['Normal'], fontName='Helvetica', fontSize=7.25, leading=9.1, textColor=HexColor('#1D2A33'), spaceAfter=0)) styles.add(ParagraphStyle(name='SmallX', parent=styles['Normal'], fontName='Helvetica', fontSize=6.3, leading=7.7, textColor=gray)) styles.add(ParagraphStyle(name='AlertX', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=7.2, leading=9, textColor=red)) def P(txt, style='BodyX'): return Paragraph(txt, styles[style]) def section(title, content, accent=teal): header=Table([[P(title,'HeadX')]], colWidths=[84*mm], rowHeights=[5.8*mm]) header.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),accent),('LEFTPADDING',(0,0),(-1,-1),3*mm),('VALIGN',(0,0),(-1,-1),'MIDDLE')])) body=Table([[content]], colWidths=[84*mm]) body.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),colors.white),('BOX',(0,0),(-1,-1),0.4,HexColor('#C7D5DB')),('LEFTPADDING',(0,0),(-1,-1),3*mm),('RIGHTPADDING',(0,0),(-1,-1),3*mm),('TOPPADDING',(0,0),(-1,-1),2.2*mm),('BOTTOMPADDING',(0,0),(-1,-1),2.2*mm)])) return KeepTogether([header,body,Spacer(1,2.5*mm)]) def bullet(items): return P('<br/>'.join('• '+x for x in items)) class NumCanvas(canvas.Canvas): def __init__(self,*a,**kw): canvas.Canvas.__init__(self,*a,**kw); self.pages=[] def showPage(self): self.pages.append(dict(self.__dict__)); self._startPage() def save(self): total=len(self.pages) for st in self.pages: self.__dict__.update(st) self.setStrokeColor(HexColor('#C7D5DB')); self.line(15*mm,13*mm,W-15*mm,13*mm) self.setFont('Helvetica',6.5); self.setFillColor(gray) self.drawString(15*mm,8.5*mm,'Educational quick-reference | Normal-pressure hydrocephalus (NPH)') self.drawRightString(W-15*mm,8.5*mm,f'Page {self._pageNumber} of {total}') canvas.Canvas.showPage(self) canvas.Canvas.save(self) doc=SimpleDocTemplate(out,pagesize=A4,rightMargin=15*mm,leftMargin=15*mm,topMargin=12*mm,bottomMargin=18*mm) story=[] story += [P('NORMAL-PRESSURE HYDROCEPHALUS','TitleX'),P('A rapid clinical guide to recognition, evaluation, shunt selection and follow-up','SubX')] banner=Table([[P('<b>Think NPH:</b> an older adult with an unexplained, progressive, symmetric higher-level gait disorder, urinary urgency/incontinence and frontal-subcortical cognitive slowing, with ventriculomegaly on imaging. Gait is usually the earliest and most prominent feature.','BodyX')]],colWidths=[180*mm]) banner.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),light),('BOX',(0,0),(-1,-1),0.7,teal),('LEFTPADDING',(0,0),(-1,-1),4*mm),('RIGHTPADDING',(0,0),(-1,-1),4*mm),('TOPPADDING',(0,0),(-1,-1),3*mm),('BOTTOMPADDING',(0,0),(-1,-1),3*mm)])) story += [banner,Spacer(1,3*mm)] left=[]; right=[] left.append(section('1. CORE CLINICAL FEATURES', bullet([ '<b>Gait:</b> broad-based, short-stepped, shuffling or “magnetic”; poor foot clearance; initiation and turning difficulty; falls.', '<b>Cognition:</b> psychomotor slowing, impaired attention/executive function, apathy; memory may be less prominent early.', '<b>Bladder:</b> urgency/frequency, urge incontinence. Often occurs after gait symptoms.', '<b>Pattern:</b> insidious progression over months to years. Complete triad is not required.' ]))) left.append(section('2. FOCUSED ASSESSMENT', bullet([ '<b>History:</b> timeline, falls, functional decline; prior SAH, meningitis, head injury or surgery; drug review; vascular and urological history.', '<b>Examination:</b> observe sit-to-stand, initiation, 10-m walk and turns; document Timed Up and Go (TUG) or other standardized gait measure before/after CSF removal.', '<b>Cognition:</b> MoCA/MMSE plus executive function and ADL assessment; obtain collateral history.', '<b>Look for alternatives:</b> focal deficit, marked asymmetry, tremor/rigidity, sensory level, neuropathy, spinal signs or severe cortical dementia.' ]))) left.append(section('3. KEY DIFFERENTIALS', bullet([ '<b>Cervical myelopathy:</b> spasticity, hyperreflexia, Babinski, hand dysfunction, sensory level.', '<b>Parkinson disease/atypical parkinsonism:</b> asymmetric bradykinesia, resting tremor, rigidity, early autonomic or eye-movement signs.', '<b>Vascular parkinsonism:</b> vascular risk factors, pyramidal signs, extensive small-vessel disease.', '<b>Peripheral neuropathy, lumbar stenosis, vestibular/visual impairment, arthritis.</b>', '<b>Incontinence mimics:</b> UTI, BPH/outflow obstruction, diabetes, diuretics and other drugs.' ]))) right.append(section('4. INVESTIGATIONS', bullet([ '<b>Baseline:</b> CBC, electrolytes/renal function, glucose, TSH, vitamin B12; urinalysis/culture; post-void residual when indicated.', '<b>MRI brain preferred</b> (CT if unavailable): ventriculomegaly out of proportion to atrophy; exclude mass, subdural collection, stroke and obstruction.', '<b>Evans index:</b> frontal horn width ÷ internal skull width on same axial slice. <b>>0.30</b> supports ventriculomegaly but is not specific.', '<b>DESH pattern:</b> enlarged Sylvian fissures with tight high-convexity/midline sulci. A supportive, not mandatory, finding.', '<b>MRI cervical spine</b> if signs/symptoms suggest myelopathy.' ]))) right.append(section('5. TEST FOR SHUNT RESPONSIVENESS', bullet([ '<b>Large-volume lumbar tap test:</b> remove about <b>30-50 mL</b> CSF, record opening pressure, and repeat objective gait assessment. Assess cognition and urinary symptoms too.', '<b>Positive response:</b> improvement, especially gait, supports likely shunt benefit.', '<b>Negative result:</b> does <b>not</b> exclude NPH. If clinical-imaging suspicion remains high, consider external lumbar drainage or CSF infusion testing at an experienced center.', '<b>Probable iNPH:</b> compatible syndrome, normal CSF composition and pressure typically ≤200 mmH<sub>2</sub>O, plus DESH with characteristic gait and/or improvement after CSF drainage.' ]))) right.append(section('6. MANAGEMENT & FOLLOW-UP', bullet([ '<b>Before shunting:</b> identify and treat reversible coexisting causes; discuss realistic goals and comorbidity burden.', '<b>Definitive treatment:</b> ventriculoperitoneal shunt, often with an adjustable/programable valve, in appropriately selected patients.', '<b>Expected response:</b> gait usually improves most reliably; bladder response may follow; cognitive response is less predictable.', '<b>Complications:</b> over-drainage, subdural hygroma/hematoma, infection, obstruction or mechanical failure. Severe complications require neurosurgical review.', '<b>Supportive care:</b> physiotherapy, falls prevention, bladder care, caregiver education, serial gait/cognition/continence measures.' ]))) two=Table([[left,right]],colWidths=[88*mm,88*mm],hAlign='CENTER') two.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),0),('RIGHTPADDING',(0,0),(-1,-1),0),('TOPPADDING',(0,0),(-1,-1),0),('BOTTOMPADDING',(0,0),(-1,-1),0)])) story.append(two) alert=Table([[P('<b>Refer urgently</b> if symptoms are acute/rapidly progressive, there is headache/vomiting or reduced consciousness, fever/meningism, new focal neurological deficit, or a suspected shunt infection/malfunction. These presentations are not typical uncomplicated iNPH.','AlertX')]],colWidths=[180*mm]) alert.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),HexColor('#FFF4E8')),('BOX',(0,0),(-1,-1),0.6,gold),('LEFTPADDING',(0,0),(-1,-1),4*mm),('RIGHTPADDING',(0,0),(-1,-1),4*mm),('TOPPADDING',(0,0),(-1,-1),2.5*mm),('BOTTOMPADDING',(0,0),(-1,-1),2.5*mm)])) story += [alert,Spacer(1,2.5*mm)] source=P('<b>Sources:</b> Bradley and Daroff’s Neurology in Clinical Practice, NPH section, pp. 2071-72; Japanese Society of NPH Guidelines, 3rd ed. (2021); Williams MA & Malm J. Diagnosis and Treatment of Idiopathic Normal Pressure Hydrocephalus, <i>Continuum</i> (2016), PMC5390935; Panciani et al., systematic review (2025), PMID 40045807. Clinical education only: use local protocols and specialist input for patient-specific decisions.','SmallX') story.append(source) doc.build(story,canvasmaker=NumCanvas) print(out) PY python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/nph-quick-reference/output/Normal_Pressure_Hydrocephalus_Quick_Reference.pdf' r=PdfReader(p) print('pages',len(r.pages),'bytes',os.path.getsize(p) if False else '') print(r.pages[0].extract_text()[:1000]) PY
python - <<'PY' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER from reportlab.lib.units import mm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle from reportlab.pdfgen import canvas from reportlab.lib.colors import HexColor import os out='/tmp/workspace/nph-quick-reference/output/Normal_Pressure_Hydrocephalus_Quick_Reference.pdf' W,H=A4; navy=HexColor('#183B5B'); teal=HexColor('#0B7882'); light=HexColor('#EAF4F5'); gold=HexColor('#D88A20'); red=HexColor('#A33A35'); gray=HexColor('#46505A') s=getSampleStyleSheet(); s.add(ParagraphStyle(name='T',fontName='Helvetica-Bold',fontSize=19,leading=22,textColor=navy,alignment=TA_CENTER)); s.add(ParagraphStyle(name='ST',fontName='Helvetica',fontSize=8.4,leading=10,textColor=gray,alignment=TA_CENTER)); s.add(ParagraphStyle(name='H',fontName='Helvetica-Bold',fontSize=9,leading=10.5,textColor=colors.white)); s.add(ParagraphStyle(name='B',fontName='Helvetica',fontSize=7.05,leading=8.55,textColor=HexColor('#1D2A33'))); s.add(ParagraphStyle(name='A',fontName='Helvetica-Bold',fontSize=7,leading=8.6,textColor=red)); s.add(ParagraphStyle(name='S',fontName='Helvetica',fontSize=6.1,leading=7.2,textColor=gray)) def p(x,st='B'): return Paragraph(x,s[st]) def bullets(items): return p('<br/>'.join('• '+x for x in items)) def section(title, body): h=Table([[p(title,'H')]],colWidths=[84*mm],rowHeights=[5.5*mm]); h.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),teal),('LEFTPADDING',(0,0),(-1,-1),3*mm),('VALIGN',(0,0),(-1,-1),'MIDDLE')])) b=Table([[body]],colWidths=[84*mm]); b.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),colors.white),('BOX',(0,0),(-1,-1),.35,HexColor('#C7D5DB')),('LEFTPADDING',(0,0),(-1,-1),3*mm),('RIGHTPADDING',(0,0),(-1,-1),3*mm),('TOPPADDING',(0,0),(-1,-1),2*mm),('BOTTOMPADDING',(0,0),(-1,-1),2*mm)])) return [h,b,Spacer(1,2.1*mm)] class NC(canvas.Canvas): def __init__(self,*a,**k): super().__init__(*a,**k); self.saved=[] def showPage(self): self.saved.append(dict(self.__dict__)); self._startPage() def save(self): n=len(self.saved) for d in self.saved: self.__dict__.update(d); self.setStrokeColor(HexColor('#C7D5DB')); self.line(15*mm,13*mm,W-15*mm,13*mm); self.setFont('Helvetica',6.4); self.setFillColor(gray); self.drawString(15*mm,8.5*mm,'Educational quick-reference | Normal-pressure hydrocephalus (NPH)'); self.drawRightString(W-15*mm,8.5*mm,f'Page {self._pageNumber} of {n}'); super().showPage() super().save() doc=SimpleDocTemplate(out,pagesize=A4,leftMargin=15*mm,rightMargin=15*mm,topMargin=11*mm,bottomMargin=18*mm) st=[p('NORMAL-PRESSURE HYDROCEPHALUS','T'),p('Rapid clinical guide to recognition, evaluation, shunt selection and follow-up','ST'),Spacer(1,2*mm)] ban=Table([[p('<b>Think NPH:</b> older adult with unexplained progressive, symmetric higher-level gait disorder, urinary urgency/incontinence and frontal-subcortical cognitive slowing, with ventriculomegaly. Gait is usually the earliest and most prominent feature.')]],colWidths=[180*mm]); ban.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),light),('BOX',(0,0),(-1,-1),.65,teal),('LEFTPADDING',(0,0),(-1,-1),4*mm),('RIGHTPADDING',(0,0),(-1,-1),4*mm),('TOPPADDING',(0,0),(-1,-1),2.7*mm),('BOTTOMPADDING',(0,0),(-1,-1),2.7*mm)])); st += [ban,Spacer(1,3*mm)] left=[]; right=[] for x in section('1. CORE CLINICAL FEATURES',bullets(['<b>Gait:</b> broad-based, short-stepped, shuffling or “magnetic”; poor foot clearance; initiation/turning difficulty; falls.','<b>Cognition:</b> slowing, impaired attention/executive function, apathy; memory may be less prominent early.','<b>Bladder:</b> urgency/frequency and urge incontinence, often after gait symptoms.','Insidious progression over months to years; complete triad is not essential.'])): left.append(x) for x in section('2. FOCUSED ASSESSMENT',bullets(['<b>History:</b> timeline, falls, ADL decline, prior SAH/meningitis/head injury, drugs, vascular and urological history.','<b>Examination:</b> sit-to-stand, initiation, 10-m walk and turns. Record TUG or other standardized gait measure.','<b>Cognition:</b> MoCA/MMSE plus executive function; obtain collateral history.','Look for focal/asymmetric signs, tremor/rigidity, sensory level, neuropathy, spinal signs or severe cortical dementia.'])): left.append(x) for x in section('3. KEY DIFFERENTIALS',bullets(['<b>Cervical myelopathy:</b> spasticity, hyperreflexia, Babinski, hand dysfunction, sensory level.','<b>Parkinsonism:</b> asymmetric bradykinesia, tremor, rigidity; atypical features.','<b>Vascular parkinsonism:</b> pyramidal signs and extensive small-vessel disease.','Peripheral neuropathy, lumbar stenosis, vestibular/visual impairment, arthritis.','UTI, BPH/outflow obstruction, diabetes and drugs can mimic urinary symptoms.'])): left.append(x) for x in section('4. INVESTIGATIONS',bullets(['<b>Baseline:</b> CBC, electrolytes/renal function, glucose, TSH, B12; urinalysis/culture; post-void residual when indicated.','<b>MRI brain preferred:</b> ventriculomegaly out of proportion to atrophy; exclude mass, subdural collection, stroke and obstruction.','<b>Evans index >0.30</b> supports ventriculomegaly but is not specific.','<b>DESH:</b> enlarged Sylvian fissures with tight high-convexity/midline sulci. Supportive, not mandatory.','MRI cervical spine if myelopathy is suspected.'])): right.append(x) for x in section('5. TEST FOR SHUNT RESPONSIVENESS',bullets(['<b>Large-volume lumbar tap:</b> remove about <b>30-50 mL</b> CSF; record opening pressure and repeat objective gait assessment.','<b>Positive:</b> especially gait improvement, supports likely shunt benefit.','<b>Negative does not exclude NPH.</b> If suspicion remains high: external lumbar drainage or CSF infusion testing at an experienced center.','Probable iNPH typically requires normal CSF composition, pressure ≤200 mmH<sub>2</sub>O, and supportive DESH/gait or response to CSF drainage.'])): right.append(x) for x in section('6. MANAGEMENT & FOLLOW-UP',bullets(['Treat reversible comorbidities first; discuss goals and risks.','<b>Definitive treatment:</b> VP shunt, commonly with an adjustable valve, in appropriately selected patients.','<b>Response:</b> gait most reliable; bladder may improve; cognitive response less predictable.','<b>Complications:</b> over-drainage, subdural hygroma/hematoma, infection, obstruction or failure.','Physiotherapy, falls prevention, bladder care and serial gait/cognition/continence measurements.'])): right.append(x) cols=Table([[left,right]],colWidths=[88*mm,88*mm]); cols.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),0),('RIGHTPADDING',(0,0),(-1,-1),0),('TOPPADDING',(0,0),(-1,-1),0),('BOTTOMPADDING',(0,0),(-1,-1),0)])); st.append(cols) alert=Table([[p('<b>Refer urgently</b> for acute/rapid progression, headache/vomiting or reduced consciousness, fever/meningism, a new focal deficit, or suspected shunt infection/malfunction. These are not typical uncomplicated iNPH.','A')]],colWidths=[180*mm]); alert.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),HexColor('#FFF4E8')),('BOX',(0,0),(-1,-1),.6,gold),('LEFTPADDING',(0,0),(-1,-1),4*mm),('RIGHTPADDING',(0,0),(-1,-1),4*mm),('TOPPADDING',(0,0),(-1,-1),2.3*mm),('BOTTOMPADDING',(0,0),(-1,-1),2.3*mm)])); st += [alert,Spacer(1,2*mm),p('<b>Sources:</b> Bradley and Daroff’s Neurology in Clinical Practice, NPH section, pp. 2071-72; Japanese Society of NPH Guidelines, 3rd ed. (2021); Williams & Malm, <i>Continuum</i> (2016), PMC5390935; Panciani et al. (2025), PMID 40045807. Educational use only: follow local protocols and specialist advice for individual patients.','S')] doc.build(st,canvasmaker=NC) print('created',out,os.path.getsize(out)) PY python - <<'PY' from pypdf import PdfReader import os p='/tmp/workspace/nph-quick-reference/output/Normal_Pressure_Hydrocephalus_Quick_Reference.pdf'; r=PdfReader(p) print('pages=',len(r.pages),'size=',os.path.getsize(p)); print(r.pages[0].extract_text()[:500]) PY
Normal Pressure Hydrocephalus Quick Reference
PDF Document · PDF