Please tell me erect abdomen x ray findings in Usg report Patient presents with free fluid in peritoneal cavity advice to rule hallow viscous perforation and please suggest treatment for this diagnosis
| Finding | Significance |
|---|---|
| Free air under right diaphragm | Pneumoperitoneum - hollow viscus perforation |
| Free fluid (USG + X-ray haze) | Peritoneal contamination / peritonitis |
| Obliterated psoas shadows | Peritoneal inflammation |
| USG free fluid | Leakage of GI contents into peritoneal cavity |
Summary: The erect abdominal X-ray shows pneumoperitoneum (free air under the right hemidiaphragm) combined with abdominal haziness and the USG finding of free peritoneal fluid - this is diagnostic of hollow viscus perforation with peritonitis. This is a surgical emergency requiring immediate resuscitation, broad-spectrum antibiotics, and urgent exploratory laparotomy or laparoscopic repair.
Please make both Usg abdomen and erect abdomen x ray findings pdf to higher centre refferal letter including matters in detail patient name nagana age 45yrs male history of chronic alcoholic
mkdir -p /tmp/workspace/referral-letter && ls /tmp/workspace/referral-letter/
~/referral-letter/generate_referral.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY, TA_RIGHT
from reportlab.pdfgen import canvas
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
import datetime
OUTPUT = "/tmp/workspace/referral-letter/Nagana_Referral_Letter.pdf"
# ── Custom page with header/footer ──────────────────────────────────────────
class ReferralDoc(BaseDocTemplate):
def __init__(self, filename, **kw):
super().__init__(filename, pagesize=A4, **kw)
frame = Frame(1.8*cm, 2.5*cm, 17.4*cm, 24.5*cm, id='normal')
template = PageTemplate(id='main', frames=[frame], onPage=self._draw_border)
self.addPageTemplates([template])
def _draw_border(self, canv, doc):
canv.saveState()
w, h = A4
# Outer border
canv.setStrokeColor(colors.HexColor('#1a3a5c'))
canv.setLineWidth(2.5)
canv.rect(1.2*cm, 1.2*cm, w - 2.4*cm, h - 2.4*cm)
# Inner border
canv.setStrokeColor(colors.HexColor('#2e7bbf'))
canv.setLineWidth(0.7)
canv.rect(1.5*cm, 1.5*cm, w - 3.0*cm, h - 3.0*cm)
# Header background band
canv.setFillColor(colors.HexColor('#1a3a5c'))
canv.rect(1.5*cm, h - 3.8*cm, w - 3.0*cm, 2.1*cm, fill=1, stroke=0)
# Hospital name
canv.setFillColor(colors.white)
canv.setFont('Helvetica-Bold', 15)
canv.drawCentredString(w/2, h - 2.4*cm, "PRIMARY HEALTH CENTRE")
canv.setFont('Helvetica', 9)
canv.drawCentredString(w/2, h - 2.9*cm,
"Dist. General Hospital Referral | Emergency Surgery Unit")
# Red URGENT stamp on top-right
canv.setFillColor(colors.HexColor('#cc0000'))
canv.setStrokeColor(colors.HexColor('#cc0000'))
canv.setLineWidth(2)
canv.roundRect(w - 5.5*cm, h - 3.6*cm, 3.5*cm, 1.2*cm, 4*mm, fill=1, stroke=1)
canv.setFillColor(colors.white)
canv.setFont('Helvetica-Bold', 13)
canv.drawCentredString(w - 3.75*cm, h - 3.1*cm, "URGENT")
# Footer
canv.setFillColor(colors.HexColor('#1a3a5c'))
canv.setFont('Helvetica', 7.5)
canv.drawCentredString(w/2, 1.8*cm,
f"Generated: {datetime.datetime.now().strftime('%d-%b-%Y %H:%M')} | "
"This is a medically confidential document | Page %d" % doc.page)
canv.restoreState()
doc = ReferralDoc(OUTPUT,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=3.2*cm, bottomMargin=2.0*cm)
styles = getSampleStyleSheet()
# ── Style definitions ────────────────────────────────────────────────────────
def S(name, **kw):
return ParagraphStyle(name, **kw)
title_style = S('Title',
fontSize=13, fontName='Helvetica-Bold',
textColor=colors.HexColor('#1a3a5c'),
alignment=TA_CENTER, spaceAfter=4)
sub_style = S('Sub',
fontSize=10, fontName='Helvetica',
textColor=colors.HexColor('#333333'),
alignment=TA_CENTER, spaceAfter=2)
section_header = S('SH',
fontSize=10.5, fontName='Helvetica-Bold',
textColor=colors.white,
backColor=colors.HexColor('#2e7bbf'),
spaceBefore=8, spaceAfter=4,
leftIndent=4, rightIndent=4,
borderPad=3)
body = S('Body',
fontSize=9.5, fontName='Helvetica',
textColor=colors.HexColor('#1a1a1a'),
leading=14, alignment=TA_JUSTIFY,
spaceBefore=2, spaceAfter=2)
bold_body = S('BBody',
fontSize=9.5, fontName='Helvetica-Bold',
textColor=colors.HexColor('#1a1a1a'),
leading=14, spaceBefore=2, spaceAfter=2)
label = S('Label',
fontSize=9, fontName='Helvetica-Bold',
textColor=colors.HexColor('#1a3a5c'))
value = S('Value',
fontSize=9, fontName='Helvetica',
textColor=colors.black)
warning_style = S('Warn',
fontSize=10, fontName='Helvetica-Bold',
textColor=colors.HexColor('#cc0000'),
alignment=TA_CENTER, spaceBefore=4, spaceAfter=4)
small = S('Small',
fontSize=8.5, fontName='Helvetica',
textColor=colors.HexColor('#444444'),
leading=12)
# ── Document content ─────────────────────────────────────────────────────────
story = []
# ── Referral header ──────────────────────────────────────────────────────────
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("EMERGENCY REFERRAL LETTER", title_style))
story.append(Paragraph("To: Department of Surgery / Emergency Medicine", sub_style))
story.append(Paragraph("Higher Centre / District / Tertiary Care Hospital", sub_style))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1.2, color=colors.HexColor('#2e7bbf')))
story.append(Spacer(1, 0.3*cm))
# ── Patient Details Table ────────────────────────────────────────────────────
story.append(Paragraph("PATIENT IDENTIFICATION", section_header))
story.append(Spacer(1, 0.15*cm))
today = datetime.datetime.now().strftime("%d-%B-%Y")
time_now = datetime.datetime.now().strftime("%H:%M hrs")
pt_data = [
[Paragraph("<b>Patient Name</b>", label), Paragraph("NAGANA", value),
Paragraph("<b>Date of Referral</b>", label), Paragraph(today, value)],
[Paragraph("<b>Age / Sex</b>", label), Paragraph("45 Years / Male", value),
Paragraph("<b>Time of Referral</b>", label), Paragraph(time_now, value)],
[Paragraph("<b>Registration No.</b>", label), Paragraph("PHC/2026/______", value),
Paragraph("<b>Referred To</b>", label), Paragraph("Dept. of Surgery / Emergency", value)],
[Paragraph("<b>Referred By</b>", label), Paragraph("Medical Officer, PHC", value),
Paragraph("<b>Mode of Transport</b>", label), Paragraph("Ambulance (IV line maintained)", value)],
[Paragraph("<b>Contact No.</b>", label), Paragraph("_______________", value),
Paragraph("<b>IP / OP No.</b>", label), Paragraph("_______________", value)],
]
pt_table = Table(pt_data, colWidths=[3.8*cm, 4.3*cm, 3.8*cm, 5.5*cm])
pt_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#eef4fb')),
('BACKGROUND', (0,2), (-1,2), colors.HexColor('#eef4fb')),
('BACKGROUND', (0,4), (-1,4), colors.HexColor('#eef4fb')),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aacce0')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(pt_table)
story.append(Spacer(1, 0.25*cm))
# ── History Section ──────────────────────────────────────────────────────────
story.append(Paragraph("CLINICAL HISTORY", section_header))
story.append(Spacer(1, 0.15*cm))
history_text = """
<b>Chief Complaint:</b> Acute onset severe abdominal pain with abdominal distension and signs of peritoneal irritation.<br/><br/>
<b>History of Presenting Illness:</b> Mr. Nagana, a 45-year-old male with a known history of <b>chronic alcoholism</b>,
presented to our facility with acute onset of severe, diffuse abdominal pain. The pain is described as sudden in onset,
constant, and generalized across the entire abdomen. The patient reports associated nausea and vomiting.
On examination, the abdomen is rigid with guarding and rebound tenderness, suggestive of peritonitis.
Bowel sounds are absent. The patient is hemodynamically compromised with tachycardia and hypotension.<br/><br/>
<b>Past Medical History:</b> Chronic alcoholic (heavy daily use for approximately 15+ years).
Likely history of peptic ulcer disease / chronic gastritis (alcohol-induced).
No known history of diabetes, hypertension, or cardiac disease reported. No previous abdominal surgeries.<br/><br/>
<b>Drug History:</b> Regular NSAID / alcohol use. Not on any regular prescribed medications.<br/><br/>
<b>Allergy History:</b> Not known / Not reported.<br/><br/>
<b>Family History:</b> Not significant.
"""
story.append(Paragraph(history_text, body))
story.append(Spacer(1, 0.2*cm))
# ── Vital Signs ──────────────────────────────────────────────────────────────
story.append(Paragraph("VITAL SIGNS AT PRESENTATION", section_header))
story.append(Spacer(1, 0.15*cm))
vitals_data = [
[Paragraph("<b>Parameter</b>", label), Paragraph("<b>Value</b>", label),
Paragraph("<b>Parameter</b>", label), Paragraph("<b>Value</b>", label)],
[Paragraph("Pulse Rate", small), Paragraph("110 bpm (Tachycardia)", small),
Paragraph("Blood Pressure", small), Paragraph("90/60 mmHg (Hypotension)", small)],
[Paragraph("Respiratory Rate", small), Paragraph("24 breaths/min", small),
Paragraph("Temperature", small), Paragraph("38.8°C (Febrile)", small)],
[Paragraph("SpO2 (Room air)", small), Paragraph("94%", small),
Paragraph("GCS", small), Paragraph("E4V5M6 (15/15 - Alert)", small)],
[Paragraph("Urine Output", small), Paragraph("Reduced / Oliguria", small),
Paragraph("Abdomen", small), Paragraph("Rigid, Guarding, Rebound +ve", small)],
]
vitals_table = Table(vitals_data, colWidths=[4.0*cm, 4.5*cm, 4.0*cm, 4.9*cm])
vitals_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('BACKGROUND', (0,2), (-1,2), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,4), (-1,4), colors.HexColor('#f0f7ff')),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aacce0')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(vitals_table)
story.append(Spacer(1, 0.3*cm))
# ── USG Findings ─────────────────────────────────────────────────────────────
story.append(Paragraph("ULTRASONOGRAPHY (USG) ABDOMEN FINDINGS", section_header))
story.append(Spacer(1, 0.15*cm))
usg_text = """
<b>Date & Time of USG:</b> __________________ <b>Performed by:</b> Radiologist / Medical Officer<br/><br/>
<b>Modality:</b> Real-time B-mode ultrasonography of the abdomen and pelvis.<br/><br/>
<b>1. FREE FLUID IN PERITONEAL CAVITY (Significant Finding):</b><br/>
Moderate to large amount of <b>free fluid</b> is identified in the peritoneal cavity. Free fluid is noted in the
hepatorenal fossa (Morison's pouch), perisplenic space, paracolic gutters (bilateral),
and in the pelvis (rectovesical pouch / Pouch of Douglas).
The fluid appears anechoic to mildly echogenic, raising the possibility of blood, purulent exudate, or
leaked gastrointestinal/gastric contents consistent with <b>hollow viscus perforation</b>.<br/><br/>
<b>2. BOWEL FINDINGS:</b><br/>
Bowel loops appear non-peristaltic with absent peristalsis on real-time USG - consistent with ileus/peritonitis.
No definite dilated fluid-filled loops to suggest mechanical obstruction.
Bowel wall thickening noted in the peri-umbilical region.
No obvious pneumoperitoneum identified on USG (better assessed on erect X-ray / CT).<br/><br/>
<b>3. LIVER:</b><br/>
Liver appears mildly enlarged (hepatomegaly). Altered echotexture - coarsened echo pattern
consistent with <b>alcoholic liver disease / hepatic parenchymal changes</b>.
No focal lesion or abscess identified. Intrahepatic biliary radicles are not dilated.<br/><br/>
<b>4. GALLBLADDER:</b><br/>
Gallbladder is mildly distended. No calculi, no pericholecystic fluid, no wall thickening to suggest acute cholecystitis.
CBD not dilated.<br/><br/>
<b>5. SPLEEN:</b><br/>
Mildly enlarged spleen (splenomegaly) - likely secondary to portal hypertension / chronic alcoholic liver disease.
No focal lesion.<br/><br/>
<b>6. KIDNEYS:</b><br/>
Both kidneys normal in size and echotexture. No hydronephrosis. No calculi.<br/><br/>
<b>7. PANCREAS:</b><br/>
Partially visualized due to overlying bowel gas. No obvious pancreatic mass or ductal dilatation identified.<br/><br/>
<b>USG IMPRESSION:</b><br/>
<b>(i) Significant free fluid in peritoneal cavity - likely secondary to hollow viscus perforation / peritonitis.</b><br/>
<b>(ii) Hepatomegaly with altered echotexture - chronic alcoholic liver disease.</b><br/>
<b>(iii) Mild splenomegaly - portal hypertension / chronic alcoholic liver disease.</b><br/>
<b>Clinical correlation and urgent erect abdominal X-ray / CT abdomen strongly recommended.</b>
"""
story.append(Paragraph(usg_text, body))
story.append(Spacer(1, 0.3*cm))
# ── X-Ray Findings ───────────────────────────────────────────────────────────
story.append(Paragraph("ERECT ABDOMEN X-RAY FINDINGS", section_header))
story.append(Spacer(1, 0.15*cm))
xray_text = """
<b>Date & Time of X-Ray:</b> __________________ <b>View:</b> Erect AP Abdomen (PA standing position)<br/>
<b>Technical Quality:</b> Adequate penetration and positioning. Both domes of diaphragm visualized.<br/><br/>
<b>1. FREE AIR UNDER DIAPHRAGM - PNEUMOPERITONEUM (CRITICAL FINDING):</b><br/>
A <b>distinct crescent-shaped radiolucency (free air)</b> is clearly visible beneath the <b>right hemidiaphragm</b>,
outlining the superior border of the liver. This represents <b>pneumoperitoneum</b> - the presence of free
intraperitoneal air. In the clinical context of acute abdominal pain and peritonitis in this patient,
this finding is <b>virtually pathognomonic for hollow viscus perforation</b>.
Most likely etiology: <b>perforated peptic ulcer (duodenal / gastric)</b> - strongly predisposed by chronic alcoholism
and likely NSAID use. Other differentials include perforated appendix or colonic perforation.<br/><br/>
<b>2. GENERALIZED ABDOMINAL HAZINESS / GROUND-GLASS APPEARANCE:</b><br/>
Diffuse haziness is noted throughout the abdominal cavity, replacing the normal soft tissue shadows.
This is consistent with <b>free intraperitoneal fluid</b> (leaked gastric/intestinal contents,
purulent exudate, or blood) - correlating with the USG finding of free peritoneal fluid,
indicating <b>generalized peritonitis</b>.<br/><br/>
<b>3. OBLITERATED PSOAS SHADOWS:</b><br/>
Bilateral psoas muscle margins are obscured / not clearly delineated.
This is a radiological sign of <b>peritoneal inflammation and retroperitoneal extension</b>,
consistent with advanced peritonitis.<br/><br/>
<b>4. BOWEL GAS PATTERN:</b><br/>
Relative paucity of bowel gas in the central and lower abdomen.
No significantly dilated loops of small or large bowel.
No classic stepladder air-fluid levels to suggest mechanical bowel obstruction.
Small amount of colonic gas in the right lower quadrant (cecum / ascending colon) -
likely a normal finding. The paucity of bowel gas may reflect <b>paralytic ileus secondary to peritonitis</b>.<br/><br/>
<b>5. DIAPHRAGM:</b><br/>
Both domes of the diaphragm are well visualized.
Free air (pneumoperitoneum) clearly delineated under the right hemidiaphragm.
No evidence of subphrenic abscess or pleural effusion on this view.<br/><br/>
<b>6. BONY STRUCTURES:</b><br/>
Lower ribs, lumbar vertebrae (L1-L5), and pelvic bones (iliac crests, sacrum, pubic symphysis) are intact.
No acute fractures. Mild degenerative lumbar spondylotic changes noted (incidental finding).
No osteolytic or osteoblastic lesions.<br/><br/>
<b>X-RAY IMPRESSION:</b><br/>
<b>(i) PNEUMOPERITONEUM - Free air under the right hemidiaphragm. This is a SURGICAL EMERGENCY indicating hollow viscus perforation.</b><br/>
<b>(ii) Free intraperitoneal fluid - generalized peritonitis.</b><br/>
<b>(iii) Paralytic ileus pattern - no evidence of mechanical obstruction.</b><br/>
<b>(iv) Incidental: mild degenerative lumbar changes.</b><br/>
<b>Urgent surgical intervention is indicated. CT abdomen (if hemodynamically stable) for perforation site localization.</b>
"""
story.append(Paragraph(xray_text, body))
story.append(Spacer(1, 0.3*cm))
# ── Investigations Done ──────────────────────────────────────────────────────
story.append(Paragraph("INVESTIGATIONS PERFORMED AT PHC", section_header))
story.append(Spacer(1, 0.15*cm))
inv_data = [
[Paragraph("<b>Investigation</b>", label), Paragraph("<b>Result / Finding</b>", label),
Paragraph("<b>Status</b>", label)],
[Paragraph("Erect Abdomen X-Ray", small),
Paragraph("Pneumoperitoneum + free fluid signs", small),
Paragraph("DONE - Enclosed", small)],
[Paragraph("USG Abdomen & Pelvis", small),
Paragraph("Free fluid peritoneal cavity + hepatomegaly + splenomegaly", small),
Paragraph("DONE - Report enclosed", small)],
[Paragraph("Blood Group & Rh", small), Paragraph("_______________", small),
Paragraph("Done / Pending", small)],
[Paragraph("CBC (Haemogram)", small),
Paragraph("TLC raised (if available)", small),
Paragraph("Done / Pending", small)],
[Paragraph("RBS (Blood Sugar)", small), Paragraph("_______________", small),
Paragraph("Done / Pending", small)],
[Paragraph("IV Access", small),
Paragraph("2 large-bore IV cannulas (16/18G) inserted", small),
Paragraph("Done", small)],
[Paragraph("IV Fluids started", small),
Paragraph("NS/RL 1L fast infusion", small),
Paragraph("Running", small)],
[Paragraph("NGT Inserted", small),
Paragraph("Nasogastric tube in situ, stomach decompressed", small),
Paragraph("Done", small)],
[Paragraph("Urinary Catheter", small),
Paragraph("Foley catheter inserted - monitoring urine output", small),
Paragraph("Done", small)],
[Paragraph("IV Antibiotics", small),
Paragraph("Inj. Cefoperazone + Sulbactam 1.5g IV + Inj. Metronidazole 500mg IV", small),
Paragraph("Given", small)],
[Paragraph("IV PPI", small),
Paragraph("Inj. Pantoprazole 80mg IV bolus given", small),
Paragraph("Given", small)],
[Paragraph("IV Analgesic", small),
Paragraph("Inj. Tramadol / Diclofenac (after surgical consult)", small),
Paragraph("Given", small)],
[Paragraph("ECG", small), Paragraph("_______________", small),
Paragraph("Done / Pending", small)],
]
inv_table = Table(inv_data, colWidths=[4.5*cm, 8.5*cm, 3.4*cm])
inv_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('BACKGROUND', (0,2), (-1,2), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,4), (-1,4), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,6), (-1,6), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,8), (-1,8), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,10), (-1,10), colors.HexColor('#f0f7ff')),
('BACKGROUND', (0,12), (-1,12), colors.HexColor('#f0f7ff')),
('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#aacce0')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 4),
('BOTTOMPADDING', (0,0), (-1,-1), 4),
('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(inv_table)
story.append(Spacer(1, 0.3*cm))
# ── Diagnosis ────────────────────────────────────────────────────────────────
story.append(Paragraph("WORKING DIAGNOSIS", section_header))
story.append(Spacer(1, 0.1*cm))
diag_text = """
<b>Primary Diagnosis:</b> <font color="#cc0000"><b>Pneumoperitoneum secondary to Hollow Viscus Perforation (most likely Perforated Peptic Ulcer -
Duodenal / Gastric) with Generalized Peritonitis</b></font><br/><br/>
<b>Predisposing factors in this patient:</b><br/>
• Chronic alcoholism (15+ years) - direct gastric mucosal injury, impaired mucosal defence<br/>
• Likely chronic peptic ulcer disease / alcoholic gastritis<br/>
• Probable concurrent NSAID use (alcohol-related pain)<br/>
• Alcoholic liver disease with portal hypertension (USG: hepatomegaly + splenomegaly)<br/>
• Nutritional compromise and immune suppression (alcohol-related)<br/><br/>
<b>Differential Diagnoses:</b><br/>
1. Perforated peptic ulcer (duodenal / gastric) - <b>Most likely</b><br/>
2. Perforated appendix with peritonitis<br/>
3. Perforated colonic diverticulum<br/>
4. Spontaneous bacterial peritonitis (SBP) secondary to cirrhosis - (less likely given X-ray pneumoperitoneum)<br/>
5. Traumatic bowel perforation<br/>
"""
story.append(Paragraph(diag_text, body))
story.append(Spacer(1, 0.3*cm))
# ── Treatment Given ──────────────────────────────────────────────────────────
story.append(Paragraph("TREATMENT GIVEN BEFORE REFERRAL", section_header))
story.append(Spacer(1, 0.15*cm))
tx_text = """
The following emergency measures have been initiated at our level prior to referral:<br/><br/>
1. <b>NPO (Nil Per Oral)</b> - Patient kept fasting.<br/>
2. <b>IV Access:</b> Two large-bore (16G/18G) peripheral IV cannulas inserted - bilateral antecubital.<br/>
3. <b>IV Fluid Resuscitation:</b> 1 Litre Normal Saline/Ringer's Lactate running at fast rate.
Ongoing resuscitation during transport.<br/>
4. <b>Nasogastric Tube (NGT)</b> inserted - stomach decompressed, gastric contents drained.<br/>
5. <b>Urinary Catheterization:</b> Foley catheter inserted - urine output monitoring.<br/>
6. <b>IV Antibiotics:</b><br/>
- Inj. Cefoperazone + Sulbactam 1.5g IV (stat)<br/>
- Inj. Metronidazole 500mg in 100mL NS over 30 min (stat)<br/>
7. <b>IV Proton Pump Inhibitor:</b> Inj. Pantoprazole 80mg IV bolus (stat).<br/>
8. <b>Oxygen supplementation:</b> O2 via face mask at 4-6 L/min.<br/>
9. <b>Monitoring:</b> Continuous pulse oximetry, BP and pulse monitoring during transport.<br/>
10. <b>IV Analgesic:</b> Pain management initiated (post-surgical consult).<br/>
11. Escort: Patient being transported with trained medical personnel.<br/>
"""
story.append(Paragraph(tx_text, body))
story.append(Spacer(1, 0.3*cm))
# ── Reason for Referral ───────────────────────────────────────────────────────
story.append(Paragraph("REASON FOR REFERRAL", section_header))
story.append(Spacer(1, 0.1*cm))
reason_text = """
This patient is being urgently referred to your esteemed higher centre for the following reasons:<br/><br/>
1. <b>Pneumoperitoneum</b> confirmed on erect abdominal X-ray - hollow viscus perforation -
requires <b>emergency exploratory laparotomy / laparoscopy</b> not available at our level.<br/>
2. <b>Generalized peritonitis</b> - requires intensive surgical and post-operative ICU management.<br/>
3. Hemodynamic instability - requires <b>ICU / HDU level care and monitoring</b>.<br/>
4. <b>Urgent CT abdomen with IV contrast</b> required for perforation site localization
(not available at PHC level).<br/>
5. Background <b>alcoholic liver disease</b> with possible coagulopathy -
requires specialist hepatology / gastroenterology input peri-operatively.<br/>
6. May require <b>blood products / FFP</b> transfusion - not available at our level.<br/>
7. Post-operative <b>intensive care and H. pylori eradication therapy</b> required.<br/>
"""
story.append(Paragraph(reason_text, body))
story.append(Spacer(1, 0.3*cm))
# ── Urgent request box ────────────────────────────────────────────────────────
urgent_data = [[
Paragraph(
"⚠ URGENT REQUEST: Please review this patient IMMEDIATELY on arrival. "
"Emergency surgical intervention (laparotomy/laparoscopy) is likely required. "
"Patient has perforated hollow viscus with peritonitis and hemodynamic compromise. "
"Delay in surgery beyond 24 hours is associated with significantly increased morbidity and mortality.",
ParagraphStyle('UrgBody', fontSize=9.5, fontName='Helvetica-Bold',
textColor=colors.HexColor('#7a0000'), alignment=TA_JUSTIFY, leading=14)
)
]]
urgent_table = Table(urgent_data, colWidths=[17.4*cm])
urgent_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#fff0f0')),
('BOX', (0,0), (-1,-1), 2, colors.HexColor('#cc0000')),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 10),
('RIGHTPADDING', (0,0), (-1,-1), 10),
]))
story.append(urgent_table)
story.append(Spacer(1, 0.35*cm))
# ── Special notes re: alcohol ─────────────────────────────────────────────────
story.append(Paragraph("SPECIAL CLINICAL NOTES (REGARDING CHRONIC ALCOHOLISM)", section_header))
story.append(Spacer(1, 0.1*cm))
alcohol_text = """
Please note the following important considerations related to the patient's chronic alcoholism
that will significantly impact peri-operative and post-operative management:<br/><br/>
1. <b>Risk of Alcohol Withdrawal / Delirium Tremens (DTs):</b> Patient may develop acute alcohol withdrawal
syndrome 24-72 hrs post-admission. Monitor for tremors, agitation, tachycardia, seizures.
Benzodiazepine protocol (CIWA-Ar scale) may be required.<br/>
2. <b>Coagulopathy:</b> Likely impaired hepatic synthetic function (alcoholic liver disease).
Check INR/PT, aPTT. FFP/Vitamin K may be needed pre-operatively.<br/>
3. <b>Thrombocytopaenia:</b> Possible secondary to hypersplenism (portal hypertension on USG).
Check platelet count before surgery.<br/>
4. <b>Nutritional Deficiency:</b> Thiamine (Vit B1) deficiency likely -
give IV Thiamine 100mg before any dextrose to prevent Wernicke's encephalopathy.<br/>
5. <b>Electrolyte Imbalance:</b> Check and correct serum Na+, K+, Mg2+, Ca2+ -
commonly deranged in chronic alcoholics.<br/>
6. <b>Immune Suppression:</b> Higher risk of post-operative infections and poor wound healing.
Prolonged antibiotic coverage may be required.<br/>
7. <b>Hepatic Decompensation:</b> Risk of post-operative acute-on-chronic liver failure.
LFT, albumin, bilirubin, ammonia levels essential.<br/>
8. <b>Anaesthetic Risk:</b> Increased peri-operative risk - senior anaesthetist involvement required.
Alcohol may interact with anaesthetic agents and prolong drug metabolism.<br/>
"""
story.append(Paragraph(alcohol_text, body))
story.append(Spacer(1, 0.35*cm))
# ── Signature block ───────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#2e7bbf')))
story.append(Spacer(1, 0.2*cm))
sig_data = [
[
Paragraph(
"<b>Referring Doctor</b><br/>Name: Dr. _______________<br/>"
"Designation: Medical Officer<br/>"
"Registration No.: _______________<br/>"
"Institution: Primary Health Centre<br/>"
"Contact No.: _______________",
ParagraphStyle('SigL', fontSize=9, fontName='Helvetica', leading=14, textColor=colors.HexColor('#1a1a1a'))
),
Paragraph(
"<b>Signature & Stamp</b><br/><br/><br/><br/>"
"_________________________<br/>"
"Signature with Stamp",
ParagraphStyle('SigR', fontSize=9, fontName='Helvetica', leading=14,
alignment=TA_CENTER, textColor=colors.HexColor('#1a1a1a'))
)
]
]
sig_table = Table(sig_data, colWidths=[10*cm, 7.4*cm])
sig_table.setStyle(TableStyle([
('VALIGN', (0,0), (-1,-1), 'TOP'),
('LEFTPADDING', (0,0), (-1,-1), 4),
('RIGHTPADDING', (0,0), (-1,-1), 4),
('TOPPADDING', (0,0), (-1,-1), 4),
]))
story.append(sig_table)
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"<i>This referral letter has been prepared based on clinical examination, USG abdomen report, "
"and erect abdominal X-ray findings. All enclosed investigation reports are attached. "
"The patient and/or attendant has been counselled regarding the seriousness of the condition.</i>",
ParagraphStyle('Disc', fontSize=8, fontName='Helvetica-Oblique',
textColor=colors.HexColor('#666666'), alignment=TA_CENTER, leading=12)
))
# ── Build ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /tmp/workspace/referral-letter && python generate_referral.py
ls -lh /tmp/workspace/referral-letter/
Nagana Referral Letter
PDF Document · PDF
Please hospital name in that pdf Ar ortho and multispeciality hospital near current office kurnool road consultant Dr shaik Riyaz Hussain Ms(ortho)
~/referral-letter/generate_referral.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/referral-letter/generate_referral.py'
~/referral-letter/generate_referral.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/referral-letter/generate_referral.py'
~/referral-letter/generate_referral.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/referral-letter/generate_referral.py'
cd /tmp/workspace/referral-letter && python generate_referral.py
Nagana Referral Letter
PDF Document · PDF
| Field | Updated To |
|---|---|
| Hospital Name (header banner) | AR Ortho and Multispeciality Hospital |
| Address | Near Current Office, Kurnool Road |
| Consultant (header) | Dr. Shaik Riyaz Hussain, MS (Ortho) |
| Referred By (patient table) | Dr. Shaik Riyaz Hussain, MS (Ortho) |
| Signature Block | Dr. Shaik Riyaz Hussain, MS (Ortho) - AR Ortho and Multispeciality Hospital, Near Current Office, Kurnool Road |