Approach to common eye problems in periphery centre (outskirts) or PHC with management as per latest guidelines
India national programme control blindness visual impairment primary health centre common eye conditions referral guidelines conjunctivitis red eye cataract 2025
primary eye care AND referral
https://dghs.mohfw.gov.in/opthalmology-division.php
Approach to common eye problems in periphery centre (outskirts) or PHC with management as per latest guidelines
primary eye care management referral
site:dghs.mohfw.gov.in OR site:nhm.gov.in NPCBVI primary eye care referral guidelines PHC cataract refractive error glaucoma diabetic retinopathy
| Presentation | Likely cause and clues | PHC management | Referral |
|---|---|---|---|
| Itchy, watery, bilateral red eye | Usually allergic conjunctivitis. Itching is prominent; vision and cornea normal. | Cold compresses, avoid rubbing, oral non-sedating antihistamine if needed, lubricating drops. Topical antihistamine/mast-cell stabiliser if locally available and permitted. | Routine if persistent, recurrent/severe, or visual symptoms. |
| Watery red eye with URI/contact history | Viral conjunctivitis. Often starts in one eye then bilateral; gritty sensation. | Hand hygiene, do not share towels/cosmetics, cool compresses, lubricants, advise contagiousness. No routine antibiotic. | Same day if pain, photophobia, corneal opacity, reduced vision, immunocompromise, or diagnostic doubt. |
| Mucopurulent discharge, lids stuck on waking | Bacterial conjunctivitis, but discharge alone does not reliably distinguish bacterial from viral disease. | Clean lids with clean water/saline, hand hygiene. If mild uncomplicated disease and local protocol permits, topical broad-spectrum antibiotic such as chloramphenicol may be used for a short course. Review in 48-72 hours. | Same day if corneal involvement, pain/photophobia, reduced vision, neonate, contact-lens wearer, or no improvement. |
| Red eye but no pain, normal vision, sharply demarcated red patch | Subconjunctival haemorrhage. | Reassure; usually resolves in 1-2 weeks. Check blood pressure; ask about trauma and anticoagulants. | Refer if trauma, recurrent episodes, bleeding tendency, pain, or visual loss. |
| Foreign-body sensation after dust exposure | Superficial foreign body or corneal abrasion. | Check vision first. Irrigate with clean saline/water. If clearly superficial and safely removable by trained staff, remove under clean conditions. Give oral analgesia. Do not patch routinely. | Same day if embedded foreign body, central corneal lesion, rust ring, persistent symptoms, contact lens, reduced vision, or any doubt. |
| Stye/hordeolum | Tender localised eyelid swelling. | Warm compress 10 minutes, 3-4 times/day; lid hygiene. Do not squeeze. | If diffuse lid swelling, fever, impaired eye movement, proptosis, recurrent lesion, or no improvement. |
| Chalazion | Painless, firm eyelid nodule. | Warm compresses and lid hygiene. | Routine referral if persistent for more than 1-2 months, recurrent, atypical, or affecting vision. |
| Blepharitis/dry-eye symptoms | Burning, crusting, fluctuating blur, gritty sensation. | Lid hygiene, warm compresses, preservative-free lubricants where available; reduce smoke/dust exposure. | Routine if unilateral, severe, corneal signs, visual loss, or unresponsive. |
| Acute dacryocystitis | Painful swelling near medial canthus, discharge on pressure, fever possible. | Do not attempt probing. Start systemic antibiotics only according to local protocol and arrange urgent evaluation. | Same day, especially fever, abscess, orbital signs, or infant. |
| Gradual painless blurred vision, lens opacity | Cataract. | Measure vision; exclude red flags. Counsel that definitive treatment is surgery, not drops. Refer through NPCBVI-linked eye service for assessment and surgery. | Routine, but expedite if vision affects work, mobility, self-care, or the person has one functioning eye. |
| Difficulty seeing distant or near objects, normal external eye | Refractive error/presbyopia. | Vision testing and refraction by trained optometrist/ophthalmic assistant. Provide or prescribe spectacles through local programme pathway. | Refer if acuity does not improve with refraction, unequal vision, rapidly changing refraction, child with suspected amblyopia/strabismus, or abnormal eye examination. |
| Known diabetes, no symptoms | Diabetic retinopathy may be asymptomatic until late. | Ensure diabetes, BP, and lipid control. Refer for retinal screening/dilated examination at diagnosis and at intervals advised by eye service, commonly at least annually. | Urgent if sudden visual loss, new floaters, vitreous haemorrhage symptoms, or known proliferative disease/macular oedema. |
| Glaucoma suspect | Family history, raised IOP if measured, suspicious disc, peripheral field loss, or progressive unexplained visual loss. | Do not reassure on the basis of normal central visual acuity. Refer for tonometry, gonioscopy, optic-nerve and field assessment. | Urgent if painful red eye or suspected acute angle closure; otherwise timely routine referral. |
Opd prescription style pdf
~/
WHO conjunctivitis treatment antibiotic eye drops primary care 2025 red eye steroid eye drops corneal ulcer referral guidance
mkdir -p "/tmp/workspace/phc-eye-opd-prescription/src" "/tmp/workspace/phc-eye-opd-prescription/output" && printf '%s\n' 'workspace directories prepared'
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, PageBreak, KeepTogether from reportlab.pdfbase.pdfmetrics import stringWidth from reportlab.lib.colors import HexColor from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase import pdfmetrics from pathlib import Path out=Path('/tmp/workspace/phc-eye-opd-prescription/output/PHC_Common_Eye_Problems_OPD_Prescription_Guide.pdf') PAGE_W,PAGE_H=A4 navy=HexColor('#123B5D'); teal=HexColor('#0D7A7A'); pale=HexColor('#EAF5F5'); red=HexColor('#A42121'); amber=HexColor('#FFF4D6'); grey=HexColor('#5B6470'); line=HexColor('#B9C6D1') styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='Title2', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=18, leading=22, textColor=navy, alignment=TA_CENTER, spaceAfter=5)) styles.add(ParagraphStyle(name='Sub', parent=styles['Normal'], fontName='Helvetica', fontSize=8.4, leading=10.5, textColor=grey, alignment=TA_CENTER, spaceAfter=7)) styles.add(ParagraphStyle(name='H1x', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=13, leading=16, textColor=navy, spaceBefore=8, spaceAfter=5)) styles.add(ParagraphStyle(name='H2x', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=10.2, leading=12, textColor=teal, spaceBefore=5, spaceAfter=3)) styles.add(ParagraphStyle(name='Bodyx', parent=styles['BodyText'], fontName='Helvetica', fontSize=8.2, leading=10.4, spaceAfter=3)) styles.add(ParagraphStyle(name='Small', parent=styles['BodyText'], fontName='Helvetica', fontSize=7.2, leading=8.7, textColor=grey)) styles.add(ParagraphStyle(name='Rx', parent=styles['BodyText'], fontName='Helvetica', fontSize=8.1, leading=10.5, leftIndent=4, spaceAfter=2)) styles.add(ParagraphStyle(name='White', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=8, leading=9.5, textColor=colors.white, alignment=TA_CENTER)) def P(t, style='Bodyx'): return Paragraph(t, styles[style]) def header_footer(canvas, doc): canvas.saveState() canvas.setStrokeColor(navy); canvas.setLineWidth(.7); canvas.line(15*mm, 286*mm, 195*mm,286*mm) canvas.setFont('Helvetica-Bold',8); canvas.setFillColor(navy); canvas.drawString(15*mm, 289*mm,'PHC / Peripheral Centre - Common Eye Problems: OPD Prescription Guide') canvas.setFont('Helvetica',7); canvas.setFillColor(grey); canvas.drawRightString(195*mm, 10*mm, f'Page {doc.page}') canvas.drawString(15*mm,10*mm,'Educational template - adapt to state formulary, scope of practice, and local referral pathway.') canvas.restoreState() def patient_block(): data=[[P('<b>OPD No.</b> ____________________','Small'),P('<b>Date / Time</b> ____________________','Small'),P('<b>Facility</b> ____________________','Small')], [P('<b>Name</b> __________________________________','Small'),P('<b>Age / Sex</b> ____________________','Small'),P('<b>Phone / Village</b> ____________________','Small')], [P('<b>Allergy / comorbidity / pregnancy / contact lens use:</b> _________________________________________________','Small'),'','']] t=Table(data,colWidths=[70*mm,55*mm,55*mm]) t.setStyle(TableStyle([('SPAN',(0,2),(2,2)),('GRID',(0,0),(-1,-1),.35,line),('BACKGROUND',(0,0),(-1,0),HexColor('#F7FAFC')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)])) return t def assessment_block(): data=[[P('<b>Presenting complaint / duration:</b> __________________________________________________________________________________________________','Small')], [P('<b>VA:</b> OD ________ OS ________ (with correction / without correction) <b>Pupils:</b> __________ <b>Cornea:</b> clear / abnormal <b>IOP:</b> ______ if available','Small')], [P('<b>Key findings:</b> pain Y/N; photophobia Y/N; discharge Y/N; trauma/chemical Y/N; eyelid / conjunctiva / cornea findings: _______________________________________','Small')], [P('<b>Provisional diagnosis:</b> _______________________________________________________________________________________','Small')]] t=Table(data,colWidths=[180*mm]) t.setStyle(TableStyle([('GRID',(0,0),(-1,-1),.35,line),('BACKGROUND',(0,0),(-1,0),HexColor('#F7FAFC')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)])) return t def rx_section(title, lines, instructions, follow, warn=None): elems=[P(title,'H2x')] rows=[[P('<b>Rx</b>','Rx'),P('<b>Drug / strength / route</b>','Rx'),P('<b>Directions and duration</b>','Rx')]] for n,drug,dose in lines: rows.append([P(n,'Rx'),P(drug,'Rx'),P(dose,'Rx')]) t=Table(rows,colWidths=[10*mm,78*mm,92*mm],repeatRows=1) t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),pale),('GRID',(0,0),(-1,-1),.35,line),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3)])) elems += [t, Spacer(1,2), P('<b>Advice:</b> '+instructions,'Small'),P('<b>Review / referral:</b> '+follow,'Small')] if warn: elems.append(P('<b>Safety:</b> '+warn,'Small')) return elems story=[] story += [P('COMMON EYE PROBLEMS', 'Title2'),P('PHC / Peripheral Centre OPD Prescription-Style Guide','Sub'),patient_block(),Spacer(1,5),assessment_block(),Spacer(1,6)] alert=P('<b>REFER NOW / SAME DAY:</b> sudden reduction of vision, severe pain, painful photophobia, corneal white spot/haze/ulcer, hypopyon, chemical injury, penetrating injury/irregular pupil, contact lens with painful red eye, acute red eye with headache-nausea, proptosis/restricted movements, or child with white pupil/abnormal red reflex.','Bodyx') at=Table([[alert]],colWidths=[180*mm]); at.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),amber),('BOX',(0,0),(-1,-1),.7,HexColor('#C88917')),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)])); story += [at] story += [P('Safe prescribing rules', 'H1x'), P('Check and record visual acuity before treatment whenever possible. Do not prescribe topical ocular steroid, steroid-antibiotic combination, or topical anaesthetic for an undiagnosed red eye. Do not patch suspected infection, ulcer, or penetrating injury. Use local essential-medicine list and state protocol for product choice, strength, age limits, and availability.', 'Bodyx')] story += [P('How to instil eye drops', 'H2x'),P('Wash hands. Pull lower lid down, instil one drop without touching bottle tip to the eye/lashes, close eye gently for 1 minute. If using more than one drop, wait at least 5 minutes. Do not share bottles. Stop and return urgently if pain, photophobia, worsening redness or decreased vision develops.','Bodyx')] story += [P('Template for an uncomplicated case only', 'H2x'),P('Use the following examples only when visual acuity is normal or unchanged, cornea appears clear, pain and photophobia are absent, and no red flag is present. This guide is not a substitute for clinical examination, paediatric dosing guidance, or local protocol.','Bodyx'),PageBreak()] story += [P('A. CONJUNCTIVITIS / OCULAR SURFACE', 'H1x')] story += rx_section('1. Viral conjunctivitis - watery discharge, gritty sensation, usually bilateral, normal vision', [('1.','Lubricating eye drops, preservative-free if available','1 drop in affected eye(s) 4-6 times daily as needed for 5-7 days.')], 'Cold compresses. Hand hygiene. Do not share towel, pillow, eye cosmetics or drops. School/work avoidance only as locally required; reduce close-contact spread.', 'Review in 48-72 hours if not improving. Same-day referral for pain, photophobia, reduced vision, corneal opacity, immunocompromise, or diagnostic doubt.', 'Antibiotics are not routinely required. Do not use steroid eye drops.') story += [Spacer(1,5)] story += rx_section('2. Allergic conjunctivitis - itch predominates, watery/stringy discharge, bilateral, normal vision', [('1.','Lubricating eye drops','1 drop in affected eye(s) 4-6 times daily as required.'),('2.','Oral non-sedating antihistamine, if suitable and in local formulary','Use age-appropriate local formulary dose.')], 'Cold compresses; avoid rubbing, dust/smoke and known allergens.', 'Routine referral if severe/recurrent, unilateral, vision affected, corneal symptoms, or not improving.', 'Avoid topical steroid unless initiated/supervised by an ophthalmologist.') story += [Spacer(1,5)] story += rx_section('3. Suspected uncomplicated bacterial conjunctivitis - mucopurulent discharge, mild discomfort, clear cornea, normal vision', [('1.','Topical antibiotic eye drop as per local formulary','Example: chloramphenicol 0.5% 1 drop in affected eye(s) four times daily for 5 days, where permitted.'),('2.','Lubricating eye drops','1 drop 4 times daily as needed for irritation.')], 'Clean lids with clean water/saline. Hand hygiene. Do not share towels/drops.', 'Review at 48-72 hours. Same-day referral if no response, contact lens use, pain/photophobia, corneal lesion, significant lid swelling, or reduced vision.', 'Neonates need same-day specialist/paediatric assessment; topical treatment alone may be inadequate.') story += [Spacer(1,5)] story += rx_section('4. Dry eye / blepharitis symptoms - burning, fluctuant blur, lid crusting, no red flags', [('1.','Lubricating eye drops','1 drop 4-6 times daily as required for 2-4 weeks.'),('2.','Lubricating ointment, if available','Apply a small ribbon at bedtime if night symptoms.')], 'Warm compresses 5-10 minutes twice daily; lid hygiene; reduce dust/smoke exposure and prolonged screen use.', 'Routine referral if unilateral, severe, recurrent, corneal signs, visual loss, or no response in 2-4 weeks.') story += [PageBreak()] story += [P('B. LID DISORDERS, FOREIGN BODY, TRAUMA', 'H1x')] story += rx_section('5. Hordeolum (stye) - tender localised lid swelling, no orbital signs', [('1.','No routine antibiotic required for a simple external stye','-')], 'Warm compress 10 minutes, 3-4 times/day. Lid hygiene. Do not squeeze or puncture.', 'Refer same day if fever, diffuse eyelid swelling, proptosis, painful/restricted eye movements, reduced vision. Routine referral if persistent/recurrent.', 'Treat suspected preseptal/orbital cellulitis according to local protocol and refer urgently.') story += [Spacer(1,5)] story += rx_section('6. Simple superficial foreign body / suspected abrasion - after irrigation, only if trained and no red flags', [('1.','Normal saline / clean water irrigation','Irrigate copiously; evert lid only if safe and trained.'),('2.','Oral analgesic as per local formulary','For pain relief, if no contraindication.')], 'Avoid rubbing. Do not provide topical anaesthetic for home use. Do not patch.', 'Same-day referral if embedded/central foreign body, metal/high-speed injury, reduced vision, persistent pain, contact lens use, corneal defect, or unable to remove safely.', 'Never attempt removal from a suspected penetrating injury.') story += [Spacer(1,5)] story += rx_section('7. Chemical splash - emergency first aid', [('1.','Immediate irrigation with clean water or normal saline','Start immediately and continue continuous irrigation during assessment/transport. Remove visible particles if safely possible.')], 'Document chemical, time, and duration of irrigation. Do not delay irrigation to take history or seek antidote.', 'Immediate referral after irrigation. Continue irrigation en route when feasible.', 'Do not attempt chemical neutralisation. Do not patch.') story += [Spacer(1,5)] story += rx_section('8. Suspected open-globe / penetrating eye injury - emergency', [('1.','Rigid eye shield','Place without pressure over the injured eye.'),('2.','Oral/IV analgesia and antiemetic, if available and within local protocol','Give before transfer as clinically appropriate.')], 'Keep nil by mouth if surgery anticipated. Arrange immediate transfer.', 'Immediate referral/transfer.', 'Do not press, patch, measure IOP, remove object, or instil drops into an obvious open globe.') story += [PageBreak()] story += [P('C. GRADUAL VISUAL LOSS / PROGRAMME REFERRALS', 'H1x')] story += rx_section('9. Cataract - gradual painless blurring with suspected lens opacity', [('1.','No eye drop reverses age-related cataract','-')], 'Counsel: definitive treatment is cataract surgery after ophthalmic assessment. Improve lighting and fall-prevention measures while awaiting care.', 'Routine referral through NPCBVI-linked ophthalmic service; expedite if vision impairs mobility, work, self-care, or patient has one seeing eye.') story += [Spacer(1,5)] story += rx_section('10. Refractive error / presbyopia - normal external eye, vision improves with pinhole/refraction', [('1.','Spectacle correction after refraction by trained provider','Issue/prescribe as per refraction and programme pathway.')], 'Use spectacles consistently; eye safety protection for occupational risk.', 'Refer if acuity fails to improve with correction, unequal acuity, rapidly changing refraction, suspected amblyopia/strabismus, abnormal pupil/cornea, or child with visual concern.') story += [Spacer(1,5)] story += rx_section('11. Diabetes - retinal screening pathway', [('1.','Optimise glycaemic, blood pressure and lipid control','Treat systemic disease as per diabetes/NCD protocol.')], 'Explain that diabetic retinopathy can be asymptomatic early. Ensure retinal screening/dilated examination via referral service.', 'Urgent referral for sudden visual loss, new floaters, suspected vitreous haemorrhage, or known proliferative retinopathy. Otherwise refer for scheduled retinal screening.') story += [Spacer(1,5)] story += rx_section('12. Glaucoma suspicion / raised IOP if measured', [('1.','Do not begin long-term glaucoma therapy unless designated/trained in local protocol','-')], 'Explain that glaucoma may have no early symptoms and may affect peripheral vision first.', 'Urgent if painful red eye, headache, nausea/vomiting, corneal haze, mid-dilated pupil or acute visual decline. Timely ophthalmology referral for asymptomatic suspicion.') story += [P('Referral note checklist', 'H1x'),P('Include: visual acuity OD/OS; onset and duration; pain/photophobia; trauma/chemical/contact-lens history; corneal and pupil findings; medicines already given with time; allergies; diabetes/hypertension; and referral urgency.','Bodyx')] story += [P('Source note', 'H2x'),P('Prepared for PHC education using the National Programme for Control of Blindness and Visual Impairment service scope, IPHS 2022 eye-care expectations, and standard ophthalmology/emergency-care principles. Clinical decisions must follow the current state/national formulary and local referral protocol.','Small')] doc=SimpleDocTemplate(str(out),pagesize=A4,rightMargin=15*mm,leftMargin=15*mm,topMargin=18*mm,bottomMargin=16*mm,title='PHC Common Eye Problems OPD Prescription Guide',author='Orris') doc.build(story,onFirstPage=header_footer,onLaterPages=header_footer) print(out) PY python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/phc-eye-opd-prescription/output/PHC_Common_Eye_Problems_OPD_Prescription_Guide.pdf' r=PdfReader(p) print('pages',len(r.pages),'size',__import__('os').path.getsize(p)) for i,page in enumerate(r.pages): text=page.extract_text() or '' print(i+1, len(text), text[:70].replace('\n',' | ')) PY
PHC Common Eye Problems OPD Prescription Guide
PDF Document · PDF
Opd prescription style pdf
PHC Common Eye Problems OPD Prescription Guide
PDF Document · PDF
With pediatric and adult dosage
~/
site:who.int child paracetamol ibuprofen cetirizine dose conjunctivitis eye treatment guideline children 2025
conjunctivitis children treatment
python - <<'PY' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.colors import HexColor 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, PageBreak from pathlib import Path out=Path('/tmp/workspace/phc-eye-opd-prescription/output/PHC_Eye_OPD_Prescription_Guide_Adult_Paediatric_Doses.pdf') navy=HexColor('#153B5A'); teal=HexColor('#087A78'); pale=HexColor('#E9F5F5'); amber=HexColor('#FFF4D5'); red=HexColor('#9D1B1B'); grey=HexColor('#4F5964'); line=HexColor('#B8C7D1') styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='titlex',parent=styles['Title'],fontName='Helvetica-Bold',fontSize=17,leading=21,textColor=navy,alignment=TA_CENTER,spaceAfter=3)) styles.add(ParagraphStyle(name='subx',parent=styles['Normal'],fontName='Helvetica',fontSize=8.2,leading=10,textColor=grey,alignment=TA_CENTER,spaceAfter=6)) styles.add(ParagraphStyle(name='h1x',parent=styles['Heading1'],fontName='Helvetica-Bold',fontSize=12.5,leading=15,textColor=navy,spaceBefore=7,spaceAfter=4)) styles.add(ParagraphStyle(name='h2x',parent=styles['Heading2'],fontName='Helvetica-Bold',fontSize=9.7,leading=12,textColor=teal,spaceBefore=4,spaceAfter=3)) styles.add(ParagraphStyle(name='bodyx',parent=styles['BodyText'],fontName='Helvetica',fontSize=7.9,leading=9.8,spaceAfter=3)) styles.add(ParagraphStyle(name='tiny',parent=styles['BodyText'],fontName='Helvetica',fontSize=6.8,leading=8.2,textColor=grey)) styles.add(ParagraphStyle(name='cell',parent=styles['BodyText'],fontName='Helvetica',fontSize=7.45,leading=9.1)) styles.add(ParagraphStyle(name='cellb',parent=styles['BodyText'],fontName='Helvetica-Bold',fontSize=7.45,leading=9.1)) P=lambda x,s='bodyx': Paragraph(x,styles[s]) def hf(c,doc): c.saveState(); c.setStrokeColor(navy); c.setLineWidth(.7); c.line(15*mm,286*mm,195*mm,286*mm) c.setFont('Helvetica-Bold',7.7); c.setFillColor(navy); c.drawString(15*mm,289*mm,'PHC / Peripheral Centre: Eye OPD Prescription Guide with Adult and Paediatric Doses') c.setFillColor(grey); c.setFont('Helvetica',6.8); c.drawString(15*mm,10*mm,'Educational reference. Verify product strength, age authorisation, contraindications, and your state formulary before prescribing.') c.drawRightString(195*mm,10*mm,f'Page {doc.page}'); c.restoreState() def table(data,widths,head=True): t=Table(data,colWidths=widths,repeatRows=1 if head else 0) commands=[('GRID',(0,0),(-1,-1),.32,line),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),3.5),('RIGHTPADDING',(0,0),(-1,-1),3.5),('TOPPADDING',(0,0),(-1,-1),3),('BOTTOMPADDING',(0,0),(-1,-1),3)] if head: commands += [('BACKGROUND',(0,0),(-1,0),pale)] t.setStyle(TableStyle(commands)); return t def patient(): d=[[P('<b>OPD No.</b> __________________','tiny'),P('<b>Date/time</b> __________________','tiny'),P('<b>Facility</b> __________________','tiny')], [P('<b>Name</b> ________________________________','tiny'),P('<b>Age / weight</b> __________________','tiny'),P('<b>Allergy / comorbidity</b> ______________','tiny')], [P('<b>VA:</b> OD ______ OS ______ <b>Contact lens:</b> Y/N <b>Pregnancy:</b> Y/N <b>Renal/liver disease:</b> Y/N <b>Provisional diagnosis:</b> _________________________________','tiny'),'','']] t=Table(d,colWidths=[72*mm,54*mm,54*mm]);t.setStyle(TableStyle([('SPAN',(0,2),(2,2)),('GRID',(0,0),(-1,-1),.35,line),('BACKGROUND',(0,0),(-1,0),HexColor('#F7FAFC')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),4),('RIGHTPADDING',(0,0),(-1,-1),4),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)]));return t def rx_template(title, diagnosis, prescriptions, advice, refer): out=[P(title,'h2x'),P('<b>Suitable only when:</b> '+diagnosis,'tiny')] d=[[P('<b>Rx</b>','cellb'),P('<b>Adult dose</b>','cellb'),P('<b>Paediatric dose</b>','cellb'),P('<b>Duration / instructions</b>','cellb')]] for r in prescriptions:d.append([P(x,'cell') for x in r]) out+=[table(d,[42*mm,44*mm,49*mm,45*mm]),Spacer(1,1.8),P('<b>Advice:</b> '+advice,'tiny'),P('<b>Review / refer:</b> '+refer,'tiny'),Spacer(1,4)] return out story=[P('COMMON EYE PROBLEMS: OPD PRESCRIPTION GUIDE','titlex'),P('PHC / Peripheral Centre | Adult and Paediatric Doses','subx'),patient(),Spacer(1,5)] warning=Table([[P('<b>DO NOT USE THIS SHEET FOR A RED-FLAG EYE.</b> Refer immediately / same day for: reduced vision; severe pain; photophobia; corneal white spot, haze or ulcer; hypopyon; chemical exposure; penetrating injury/irregular pupil; contact-lens wearer with painful red eye; red eye with headache/nausea; proptosis/restricted eye movement; or white pupil/abnormal red reflex in a child.','bodyx')]],colWidths=[180*mm]) warning.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),amber),('BOX',(0,0),(-1,-1),.75,HexColor('#C68A10')),('LEFTPADDING',(0,0),(-1,-1),6),('RIGHTPADDING',(0,0),(-1,-1),6),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)]));story += [warning] story += [P('Safety and dosing rules','h1x'),P('Record <b>weight in kg</b> for every child. Calculate paediatric doses by weight, observe stated maxima, and write both mg and mL where liquid is used. Product concentrations differ. Do not use a kitchen spoon. Use an oral syringe. Confirm renal/hepatic disease, allergy, pregnancy, interacting medicines, and dehydration before prescribing systemic medicines. Neonates with conjunctivitis require same-day paediatric/ophthalmology assessment.','bodyx')] story += [P('Eye drop technique','h2x'),P('One drop is sufficient. Wash hands; avoid touching bottle tip; gently close eye for one minute after instillation. Separate different drops by at least 5 minutes. Do not share eye drops. Stop treatment and return urgently for increasing pain, photophobia, worsening redness, or reduced vision.','bodyx')] story += [P('Doses below are examples for uncomplicated presentations only','h2x'),P('Topical drop dosing is generally not weight-based, but paediatric licence/age limits vary by product and country. Use the exact local product information before prescribing. Do not prescribe topical steroid, steroid-antibiotic combination, or topical anaesthetic for an undiagnosed red eye.','bodyx'),PageBreak()] story += [P('A. RED EYE: UNCOMPLICATED PRESENTATIONS','h1x')] story += rx_template('1. Viral conjunctivitis', 'watery discharge/grittiness, normal or baseline visual acuity, no photophobia, clear cornea, and no contact-lens risk.', [('Lubricating drops, preferably preservative-free if available','1 drop affected eye(s), 4-6 times/day as needed.','Same dose: 1 drop affected eye(s), 4-6 times/day as needed.','Usually 5-7 days; cold compresses.')], 'Hand hygiene; avoid sharing towels, pillowcases, cosmetics, or bottles. Antibiotic is not routinely required.', 'Review if not improving after 48-72 h. Refer same day for pain, photophobia, reduced vision, corneal signs, contact-lens use, immunocompromise, or doubt.') story += rx_template('2. Allergic conjunctivitis', 'itch is predominant, usually bilateral, no pain/photophobia, vision normal, cornea clear.', [('Lubricating drops','1 drop affected eye(s), 4-6 times/day as needed.','Same dose: 1 drop affected eye(s), 4-6 times/day as needed.','As needed for 1-2 weeks.'),('Cetirizine by mouth, if clinically appropriate','5-10 mg once daily. Use 5 mg in older/frail adults or renal impairment only if suitable.','Age 2-5 years: 2.5 mg once daily; may increase to 5 mg/day. Age 6 years and above: 5-10 mg once daily; max 10 mg/day. <b>Do not use under 2 years without clinician advice.</b>','For itch/allergic symptoms. May cause drowsiness.')], 'Cold compresses. Avoid rubbing and known triggers. Check local label before use in renal impairment or pregnancy.', 'Routine referral if recurrent/severe or not improving. Same day for pain, photophobia, reduced vision, corneal symptoms, or unilateral atypical disease.') story += rx_template('3. Suspected uncomplicated bacterial conjunctivitis', 'mild discharge/irritation, normal visual acuity, no significant pain or photophobia, clear cornea, no contact lens.', [('Chloramphenicol 0.5% eye drops <i>only where locally authorised</i>','1 drop affected eye(s) 4 times/day.','1 drop affected eye(s) 4 times/day <b>only if product label permits the child’s age</b>. Do not use as sole management in neonates.','5 days; reassess rather than extending if no improvement.'),('Lubricating drops','1 drop affected eye(s), 4 times/day as needed.','Same dose.','For irritation.')], 'Clean discharge with clean water/saline and use hand hygiene. Many mild cases are self-limited; do not use antibiotic automatically where watchful waiting is appropriate.', 'Review in 48-72 h. Same-day referral for any red flag, contact-lens use, severe lid swelling, neonate, or no improvement. Remove contact lenses and do not reuse until cleared.') story += [PageBreak()] story += [P('B. LID DISEASE, FOREIGN BODY, AND PAIN CONTROL','h1x')] story += rx_template('4. Stye (external hordeolum)', 'tender, localised eyelid swelling, with normal vision and no fever/diffuse cellulitis/orbital signs.', [('No routine antimicrobial needed for a simple stye','-','-','Warm compress 10 minutes, 3-4 times/day.'),('Paracetamol / acetaminophen by mouth, if pain requires it','500-1000 mg every 6 hours when required; <b>maximum 4 g/day</b>. Use a lower maximum or avoid in significant liver disease/alcohol excess.','10-15 mg/kg/dose every 4-6 hours when required; <b>max 1 g/dose</b>. Do not exceed <b>60 mg/kg/day</b> or 4 doses/day without local protocol review.','Use for 1-3 days if needed; avoid duplicate paracetamol-containing products.')], 'Do not squeeze or puncture. Lid hygiene.', 'Same-day referral if fever, diffuse swelling, proptosis, painful/restricted movements, or reduced vision. Routine referral if recurrent/persistent.') story += rx_template('5. Simple superficial foreign-body sensation / abrasion after irrigation', 'only after visual acuity check, no high-velocity injury, no contact lens, no central/embedded object, no corneal infiltrate, and no globe injury concern.', [('Normal saline or clean water irrigation','Irrigate copiously.','Same approach.','Start immediately.'),('Paracetamol / acetaminophen if needed','500-1000 mg every 6 hours PRN; max 4 g/day.','10-15 mg/kg/dose every 4-6 hours PRN; max 1 g/dose and 60 mg/kg/day.','Short course only.'),('Ibuprofen by mouth if suitable','200-400 mg every 8 hours with food PRN; <b>max 1200 mg/day</b> without specialist direction.','Age 6 months and above: 5-10 mg/kg/dose every 6-8 hours with food; <b>max 40 mg/kg/day</b>, max 400 mg/dose.','Avoid in dehydration, renal disease, active GI bleeding/ulcer, NSAID allergy, and in late pregnancy. Do not use under 6 months unless directed.')], 'Do not patch. No home topical anaesthetic. Avoid rubbing.', 'Same-day referral if persistent pain, reduced vision, contact lens, central/embedded/metal object, high-speed injury, corneal defect, or inability to remove safely.') story += rx_template('6. Chemical injury or suspected penetrating injury', 'emergency. Do not delay care for prescriptions.', [('Chemical splash: water or normal saline irrigation','Continuous, immediate irrigation.','Continuous, immediate irrigation.','Irrigate at once and during transfer if possible.'),('Open globe: rigid eye shield only','Analgesia/antiemetic as local emergency protocol.','Weight-based analgesia/antiemetic as local emergency protocol.','Keep nil by mouth if surgery likely.')], 'No chemical neutralisation. Do not apply pressure, patch, remove object, measure IOP, or instil drops into an obvious open globe.', '<b>Immediate transfer.</b>') story += [PageBreak()] story += [P('C. NON-RED EYE AND REFERRAL PRESCRIPTIONS','h1x')] story += rx_template('7. Dry eye / blepharitis symptoms', 'burning/grittiness/fluctuating blur with clear cornea, normal visual acuity, and no unilateral severe symptoms.', [('Lubricating drops','1 drop 4-6 times/day as needed.','Same dose.','Trial 2-4 weeks.'),('Lubricating ointment, if available','Small ribbon in affected eye(s) at bedtime.','Same dose, if age-appropriate product.','May blur vision temporarily.')], 'Warm compress and lid hygiene twice daily; reduce smoke/dust exposure. Avoid unsupervised steroid drops.', 'Routine referral if unilateral, severe, recurrent, corneal signs, visual reduction, or no response after 2-4 weeks.') story += rx_template('8. Cataract / refractive error', 'gradual painless visual blurring without red flags.', [('Cataract','No eye drop reverses age-related cataract.','Childhood cataract is not routine: urgent specialist review.','Counsel about definitive surgical assessment.'),('Refractive error/presbyopia','Spectacles after refraction by trained provider.','Spectacles after refraction by trained provider.','Use programme/refraction pathway.')], 'Improve lighting, reduce fall risk, and use protective eyewear for occupational exposure.', 'Routine cataract/refraction referral. Expedite if one seeing eye or visual function/safety is affected. Urgent referral for childhood cataract, leukocoria, abnormal red reflex, or squint with visual concern.') story += rx_template('9. Diabetic eye disease / glaucoma suspicion', 'may have normal central vision initially; do not treat as routine eye-drop case at PHC unless specifically trained and authorised.', [('Diabetes','Manage glucose, BP, and lipids under NCD protocol.','Refer children with diabetes according to paediatric diabetes/eye-service pathway.','Arrange retinal screening/dilated eye evaluation.'),('Glaucoma suspicion','Do not start chronic drops unless trained and required by local protocol.','Specialist assessment required.','Refer for IOP/optic nerve/field assessment.')], 'Explain that both conditions can damage vision before symptoms are obvious.', 'Urgent for acute painful red eye/headache/nausea/corneal haze. Otherwise timely referral for glaucoma suspicion; urgent for sudden visual loss/new floaters in diabetes.') story += [P('Quick paediatric safeguards','h1x')] d=[[P('<b>Situation</b>','cellb'),P('<b>Action</b>','cellb')],[P('Any child with a white pupil, abnormal red reflex, new squint, or unexplained reduced vision','cell'),P('<b>Urgent ophthalmology referral.</b> Do not wait for routine review.','cell')],[P('Neonate with red eye/discharge','cell'),P('<b>Same-day paediatric/ophthalmology assessment.</b> Possible gonococcal/chlamydial disease requires systemic evaluation; topical drops alone are not sufficient.','cell')],[P('Use of liquid medicines','cell'),P('Write drug strength, calculated mg dose, mL dose, frequency, maximum daily dose, and duration. Re-weigh if uncertain.','cell')]] story += [table(d,[62*mm,118*mm]),Spacer(1,5)] story += [P('Sources and update note','h2x'),P('Prepared as a PHC educational aid using standard ophthalmology and paediatric dosing references, NPCBVI/IPHS service expectations, and recent evidence. The 2024 Cochrane review of antibiotics for acute bacterial conjunctivitis and 2025 review of corticosteroids do not change the central safety rule: assess vision and cornea, avoid unsupervised ocular steroids, and refer red-flag eyes promptly. Local policies and exact product labels take precedence.','tiny')] doc=SimpleDocTemplate(str(out),pagesize=A4,leftMargin=15*mm,rightMargin=15*mm,topMargin=18*mm,bottomMargin=16*mm,title='PHC Eye OPD Prescription Guide - Adult and Paediatric Doses',author='Orris') doc.build(story,onFirstPage=hf,onLaterPages=hf) print(out) PY python - <<'PY' from pypdf import PdfReader from pathlib import Path p=Path('/tmp/workspace/phc-eye-opd-prescription/output/PHC_Eye_OPD_Prescription_Guide_Adult_Paediatric_Doses.pdf') r=PdfReader(str(p)); print('exists',p.exists(),'pages',len(r.pages),'bytes',p.stat().st_size) for i,x in enumerate(r.pages,1): t=x.extract_text() or ''; print(i,len(t),('Adult dose' in t),('Paediatric dose' in t)) PY
PHC Eye OPD Prescription Guide Adult Paediatric Doses
PDF Document · PDF