What medicine and precautions while going to baralacha la pass
Baralacha La pass altitude sickness medicine precautions trekking
acute mountain sickness prevention treatment altitude
https://www.cdc.gov/yellow-book/hcp/environmental-hazards-ri…
| Condition | Key Features |
|---|---|
| AMS (Acute Mountain Sickness) | Headache + nausea, fatigue, dizziness, poor sleep |
| HACE (High-Altitude Cerebral Edema) | AMS + ataxia (unsteady gait), confusion, altered consciousness |
| HAPE (High-Altitude Pulmonary Edema) | Breathlessness at rest, cough (pink frothy sputum), cyanosis - rapidly life-threatening |
| Situation | Action |
|---|---|
| Healthy person crossing pass | Acclimatize 1-2 days in Manali; Acetazolamide 125 mg BD if rapid ascent |
| Mild AMS (headache, nausea) | Rest, hydrate, ibuprofen/paracetamol, stop ascending |
| Moderate AMS (worsening) | Acetazolamide 250 mg BD + Dexamethasone 4 mg q6h + oxygen; consider descent |
| HACE (ataxia, confusion) | Immediate descent + Dexamethasone 8 mg then 4 mg q6h + oxygen |
| HAPE (breathlessness at rest) | Immediate descent + oxygen 4-6 L/min + Nifedipine 30 mg SR |
Sources: Harrison's Principles of Internal Medicine, 22nd Ed. (2025), Table 475-1; CDC Yellow Book 2026 - High-Altitude Travel; PubMed Systematic Review PMID 40383249 (2025 network meta-analysis on AMS prophylaxis).
Create a travel checklist PDF with medication list and packing guide for Baralacha La
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist"
mkdir -p /home/daytona/workspace/baralacha-checklist && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')"
~/baralacha-checklist/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import mm, cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import Flowable
OUTPUT = "/home/daytona/workspace/baralacha-checklist/Baralacha_La_Travel_Checklist.pdf"
# ── Colors ──────────────────────────────────────────────────────────────────
DARK_BLUE = colors.HexColor("#1A3A5C")
MED_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F7")
ACCENT_RED = colors.HexColor("#C0392B")
ACCENT_GREEN= colors.HexColor("#1E8449")
ORANGE = colors.HexColor("#D35400")
YELLOW_BG = colors.HexColor("#FFF8E1")
WHITE = colors.white
LIGHT_GREY = colors.HexColor("#F4F6F7")
MID_GREY = colors.HexColor("#B2BABB")
TEXT_DARK = colors.HexColor("#1C2833")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
TITLE_STYLE = style("MainTitle",
fontSize=26, fontName="Helvetica-Bold", textColor=WHITE,
alignment=TA_CENTER, spaceAfter=2)
SUBTITLE_STYLE = style("SubTitle",
fontSize=11, fontName="Helvetica", textColor=colors.HexColor("#AED6F1"),
alignment=TA_CENTER, spaceAfter=4)
SEC_HEADER = style("SectionHeader",
fontSize=13, fontName="Helvetica-Bold", textColor=WHITE,
alignment=TA_LEFT, spaceAfter=0, spaceBefore=0,
leftIndent=6)
SUBSEC = style("SubSection",
fontSize=10, fontName="Helvetica-Bold", textColor=DARK_BLUE,
spaceBefore=6, spaceAfter=2)
BODY = style("Body",
fontSize=9, fontName="Helvetica", textColor=TEXT_DARK,
leading=13, spaceAfter=1)
BODY_BOLD = style("BodyBold",
fontSize=9, fontName="Helvetica-Bold", textColor=TEXT_DARK,
leading=13, spaceAfter=1)
NOTE_STYLE = style("Note",
fontSize=8, fontName="Helvetica-Oblique", textColor=colors.HexColor("#5D6D7E"),
leading=11, spaceAfter=2, leftIndent=4)
WARNING_STYLE = style("Warning",
fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_RED,
leading=12, spaceAfter=2)
SMALL = style("Small",
fontSize=7.5, fontName="Helvetica", textColor=colors.HexColor("#5D6D7E"),
leading=10)
FOOTER_STYLE = style("Footer",
fontSize=7, fontName="Helvetica-Oblique", textColor=MID_GREY,
alignment=TA_CENTER)
# ── Helper Flowables ─────────────────────────────────────────────────────────
class ColorRect(Flowable):
"""A filled rectangle as a header banner."""
def __init__(self, w, h, fill_color, corner=4):
Flowable.__init__(self)
self.w, self.h, self.fill = w, h, fill_color
self.corner = corner
def draw(self):
self.canv.setFillColor(self.fill)
self.canv.roundRect(0, 0, self.w, self.h, self.corner, fill=1, stroke=0)
def wrap(self, *args):
return self.w, self.h
def section_block(title, icon, color=MED_BLUE):
"""Returns a colored section-header table row."""
data = [[Paragraph(f"{icon} {title}", SEC_HEADER)]]
t = Table(data, colWidths=["100%"])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
return t
def checklist_table(rows, col_widths=None, header=None):
"""Generic two-column checklist table with checkbox col."""
W = 170*mm
if col_widths is None:
col_widths = [8*mm, W - 8*mm]
data = []
if header:
data.append([Paragraph(header[0], BODY_BOLD), Paragraph(header[1], BODY_BOLD)])
for item, detail in rows:
chk = Paragraph("☐", style("chk", fontSize=11, fontName="Helvetica",
textColor=MED_BLUE, alignment=TA_CENTER))
cell = Paragraph(f"<b>{item}</b> <font size='8' color='#5D6D7E'>{detail}</font>", BODY)
data.append([chk, cell])
t = Table(data, colWidths=col_widths)
ts = TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 3),
("RIGHTPADDING", (0,0), (-1,-1), 3),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("ROWBACKGROUNDS",(0,0), (-1,-1), [WHITE, LIGHT_GREY]),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
])
t.setStyle(ts)
return t
def med_table(rows):
"""Medication table with 4 columns."""
W = 170*mm
col_widths = [46*mm, 28*mm, 42*mm, W - 116*mm]
header = [
Paragraph("Medication", BODY_BOLD),
Paragraph("Dose", BODY_BOLD),
Paragraph("Purpose", BODY_BOLD),
Paragraph("Notes", BODY_BOLD),
]
data = [header]
for med, dose, purpose, note in rows:
data.append([
Paragraph(med, BODY),
Paragraph(dose, BODY),
Paragraph(purpose, BODY),
Paragraph(note, SMALL),
])
t = Table(data, colWidths=col_widths)
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LINEBELOW", (0,0), (-1,-1), 0.4, MID_GREY),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
]))
return t
def warning_box(text):
data = [[Paragraph(f"⚠ {text}", WARNING_STYLE)]]
t = Table(data, colWidths=[170*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FDEDEC")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1.0, ACCENT_RED),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
return t
def info_box(text, bg=YELLOW_BG, border=ORANGE):
data = [[Paragraph(text, style("info", fontSize=8.5, fontName="Helvetica",
textColor=TEXT_DARK, leading=12))]]
t = Table(data, colWidths=[170*mm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 1.0, border),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
return t
def sp(n=4):
return Spacer(1, n*mm)
# ── Document Build ────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=20*mm, rightMargin=20*mm,
topMargin=18*mm, bottomMargin=18*mm,
title="Baralacha La Travel Checklist",
author="Orris Medical AI",
)
story = []
# ── COVER HEADER ─────────────────────────────────────────────────────────────
header_data = [[
Paragraph("BARALACHA LA", TITLE_STYLE),
Paragraph("COMPLETE TRAVEL CHECKLIST", SUBTITLE_STYLE),
Paragraph("Altitude 4,890 m (16,040 ft) • Manali–Leh Highway, Himachal Pradesh", SUBTITLE_STYLE),
Paragraph("Medication Guide • Packing List • Emergency Protocols", SUBTITLE_STYLE),
]]
header_t = Table(header_data, colWidths=[170*mm])
header_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [6,6,6,6]),
]))
story.append(header_t)
story.append(sp(3))
# ── ALTITUDE QUICK FACTS ──────────────────────────────────────────────────────
facts_data = [
[
Paragraph("🏔 <b>4,890 m</b><br/><font size='7'>Altitude</font>", BODY),
Paragraph("❄ <b>-5°C to 10°C</b><br/><font size='7'>Temp Range (Summer)</font>", BODY),
Paragraph("💧 <b>~50%</b><br/><font size='7'>O₂ vs Sea Level</font>", BODY),
Paragraph("🚑 <b>Keylong / Manali</b><br/><font size='7'>Nearest Hospital</font>", BODY),
]
]
facts_t = Table(facts_data, colWidths=[42.5*mm]*4)
facts_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LINEAFTER", (0,0), (2,-1), 0.5, MED_BLUE),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("ROUNDEDCORNERS", [4,4,4,4]),
]))
story.append(facts_t)
story.append(sp(4))
# ── SECTION 1: MEDICATIONS ───────────────────────────────────────────────────
story.append(section_block("SECTION 1: MEDICATION LIST", "💊", DARK_BLUE))
story.append(sp(2))
story.append(Paragraph("PREVENTIVE & TREATMENT MEDICATIONS", SUBSEC))
meds = [
("Acetazolamide (Diamox)", "125 mg twice daily\n(prevention)", "AMS / HACE Prevention", "Start 1–2 days before ascent. Rx needed. Avoid if sulfa allergy. Side effect: tingling in fingers/toes, frequent urination."),
("Dexamethasone", "4 mg every 12h\n(prevention)\n8 mg then 4 mg q6h (HACE tx)", "AMS / HACE Treatment", "Do NOT use to push higher. Rebound if stopped at altitude. Reserve for emergencies unless Diamox contraindicated."),
("Nifedipine SR", "30 mg SR every 12h", "HAPE Prevention / Treatment", "For high-risk individuals or active HAPE. Extended-release only. Keep warm while taking."),
("Ibuprofen", "600 mg every 8h", "AMS Headache / Mild AMS prevention", "OTC. Effective for altitude headache. Do not use to mask symptoms and keep ascending."),
("Paracetamol (Acetaminophen)", "500–1000 mg every 6–8h", "Headache / Fever / Pain relief", "Safer on stomach than ibuprofen. Does not prevent AMS — symptom relief only."),
("Ondansetron / Domperidone", "4–8 mg (Ondansetron)\n10 mg (Domperidone)", "Nausea / Vomiting from AMS", "Carry for GI symptoms associated with altitude sickness."),
("ORS Sachets (Electrolytes)", "1 sachet in 1 L water as needed", "Hydration / Dehydration", "Essential at altitude — dehydration worsens AMS. Mix with clean water."),
("Antacid (Pantoprazole / Gelusil)", "Pantoprazole 40 mg once daily", "Gastric protection", "High altitude + ibuprofen use can cause gastric irritation."),
("Antihistamine (Cetirizine)", "10 mg once daily", "Allergic reactions / Urticaria", "Avoid sedating antihistamines (chlorpheniramine) — they suppress breathing."),
("Broad-spectrum Antibiotic\n(Azithromycin / Ciprofloxacin)", "As prescribed by doctor", "Respiratory / GI infections", "Carry a course; remote areas have no pharmacy access."),
("Antiseptic cream + Bandages", "Topical", "Wound care", "Cuts at altitude heal slowly due to hypoxia."),
("Sunscreen SPF 50+ / Lip balm SPF", "Apply every 2h", "UV protection", "UV radiation doubles every 1,000 m gain. Burns are rapid above 4,000 m."),
]
story.append(med_table(meds))
story.append(sp(2))
story.append(info_box(
"📋 <b>Consult your doctor before travelling</b> — especially for Acetazolamide and Dexamethasone. "
"People with sulfa allergy, kidney/liver disease, pregnancy, heart disease, or on blood thinners need "
"specialist advice. Always carry prescriptions for controlled medications."
))
story.append(sp(3))
# Pulse Ox section
story.append(Paragraph("PULSE OXIMETER GUIDE (SpO₂ Readings)", SUBSEC))
ox_data = [
[Paragraph("SpO₂ Range", BODY_BOLD), Paragraph("Status", BODY_BOLD), Paragraph("Action", BODY_BOLD)],
[Paragraph("95–100%", BODY), Paragraph("✅ Normal", style("g", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_GREEN)), Paragraph("Continue as planned", BODY)],
[Paragraph("90–94%", BODY), Paragraph("⚠ Acclimatizing", style("o", fontSize=9, fontName="Helvetica-Bold", textColor=ORANGE)), Paragraph("Rest, hydrate, monitor closely", BODY)],
[Paragraph("85–89%", BODY), Paragraph("🔴 Risk of AMS", style("r", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_RED)), Paragraph("Stop ascent; use O₂ cylinder; consider descent", BODY)],
[Paragraph("< 85%", BODY), Paragraph("🆘 Danger", style("r2", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_RED)), Paragraph("IMMEDIATE descent + oxygen + emergency help", BODY)],
]
ox_t = Table(ox_data, colWidths=[35*mm, 45*mm, 90*mm])
ox_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
]))
story.append(ox_t)
story.append(sp(4))
# ── SECTION 2: PACKING LIST ───────────────────────────────────────────────────
story.append(section_block("SECTION 2: PACKING CHECKLIST", "🎒", MED_BLUE))
story.append(sp(2))
# Two-column packing layout
def two_col_checklist(left_items, right_items, left_header, right_header):
def make_col(header, items):
rows = [Paragraph(f"<b>{header}</b>", SUBSEC)]
for item, detail in items:
chk = "☐"
rows.append(Paragraph(
f"<font size='11' color='#2E6DA4'>{chk}</font> <b>{item}</b>"
+ (f" <font size='8' color='#717D7E'>{detail}</font>" if detail else ""),
BODY
))
return rows
lc = make_col(left_header, left_items)
rc = make_col(right_header, right_items)
max_rows = max(len(lc), len(rc))
while len(lc) < max_rows: lc.append(Paragraph("", BODY))
while len(rc) < max_rows: rc.append(Paragraph("", BODY))
data = [[l, r] for l, r in zip(lc, rc)]
t = Table(data, colWidths=[83*mm, 87*mm])
t.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), 2),
("BOTTOMPADDING", (0,0), (-1,-1), 2),
("LINEAFTER", (0,0), (0,-1), 0.5, MID_GREY),
]))
return t
# Clothing
clothing = [
("Thermal base layer (top + bottom)", "Woollen or synthetic, 2 sets"),
("Fleece mid-layer jacket", "At least 200 g fleece"),
("Waterproof windproof outer shell", "Gore-Tex or equivalent"),
("Insulated down jacket", "For cold nights / stops"),
("Trekking trousers (×2)", "Quick-dry, convertible"),
("Waterproof over-trousers", "For rain / snow"),
("Warm hat / balaclava", "Covers ears"),
("Sun hat / cap", "Wide brim for UV"),
("Gloves (thin liner + outer mitts)", "Layered system"),
("Woollen / thermal socks (×4 pairs)", "Merino wool preferred"),
("Waterproof trekking boots", "Ankle support, broken in"),
("Camp sandals / flip-flops", "For evenings at camp"),
("Gaiters", "For snow / mud crossings"),
("Balaclava / neck gaiter", "Wind protection"),
]
gear = [
("Backpack 40–60 L", "Waterproof cover included"),
("Sleeping bag (-10°C rated)", "Mummy style"),
("Trekking poles (×2)", "Telescopic, collapsible"),
("Headlamp + extra batteries", "LED, 200+ lumens"),
("Swiss army knife / multi-tool", ""),
("Duct tape (small roll)", "Emergency repairs"),
("Dry bags / zip-lock bags", "Waterproof your gear"),
("Portable charger / power bank", "20,000 mAh+"),
("Solar charger panel", "For multi-day trips"),
("Compass + physical map", "No cell signal here"),
("Whistle + signalling mirror", "Emergency signalling"),
("Emergency space / bivvy blanket", "Foil type"),
("Satellite communicator (SPOT/Garmin inReach)", "Critical for solo trips"),
("Rope (6–10 m, 6 mm)", "For scrambles / emergency"),
]
story.append(two_col_checklist(clothing, gear, "CLOTHING & FOOTWEAR", "GEAR & EQUIPMENT"))
story.append(sp(3))
# Food and water
food = [
("Water bottles (2 × 1 L)", "BPA-free, wide mouth"),
("Hydration bladder (2–3 L)", "In-pack reservoir"),
("Water purification tablets", "Iodine or chlorine"),
("SteriPen / filter straw", "UV or filter purifier"),
("High-energy bars / trail mix", "Nuts, dates, choco bars"),
("Instant oatmeal packets", "Easy hot breakfast"),
("Electrolyte powder sachets", "Prevent dehydration"),
("Instant noodles / ready meals", "Lightweight calorie source"),
("Dates / figs / dry fruits", "Natural sugar boosts"),
("Tea / coffee sachets", "Warm drinks for morale"),
("Gas stove + fuel canister", "Jetboil or similar"),
("Lightweight pot + spork", "Cook + eat kit"),
]
docs = [
("Government-issued photo ID", "Aadhar / Passport"),
("Inner Line Permit (if required)", "Check current rules"),
("Travel insurance document", "With emergency evacuation"),
("Emergency contact list (printed)", "Do not rely on phone only"),
("Doctor's prescription (for meds)", "Especially controlled drugs"),
("Blood group card", "Carry in wallet"),
("Vehicle RC / Driving Licence", "For road travellers"),
("Cash (sufficient)", "No ATM on route"),
("Hotel / camp booking confirmations", "Offline copy"),
("First aid manual (pocket)", "Or offline phone app"),
]
story.append(two_col_checklist(food, docs, "FOOD & WATER", "DOCUMENTS & ESSENTIALS"))
story.append(sp(3))
# ── FIRST AID KIT ─────────────────────────────────────────────────────────────
story.append(section_block("SECTION 3: FIRST AID KIT", "🩺", colors.HexColor("#1A6B3A")))
story.append(sp(2))
fa_left = [
("Pulse oximeter", "Most important item — monitor SpO₂"),
("Digital thermometer", "Detect hypothermia / fever"),
("Blood pressure monitor", "Useful for cardiac patients"),
("Sterile gauze pads (×10)", "Wound dressing"),
("Adhesive bandages (assorted)", "Cuts and blisters"),
("Elastic bandage (crepe)", "Sprains and strains"),
("Medical tape + scissors", "Secure dressings"),
("Triangular bandage", "Sling / immobilisation"),
("Tweezers + safety pins", "Splinter removal"),
("Sterile gloves (×4 pairs)", "Infection control"),
]
fa_right = [
("Antiseptic wipes / Betadine", "Wound cleaning"),
("Povidone-iodine solution", "Larger wound irrigation"),
("Blister pads (Compeed)", "Prevent / treat hot spots"),
("Moleskin", "Foot blister prevention"),
("Portable oxygen cylinder", "2 L mini can, with mask"),
("Gamow bag (group trek)", "Portable hyperbaric chamber"),
("CPR face shield", "Emergency resuscitation"),
("SAM splint", "Lightweight fracture support"),
("Loperamide (Imodium)", "For traveller's diarrhoea"),
("Eye drops (lubricating)", "Dry eyes at altitude"),
]
story.append(two_col_checklist(fa_left, fa_right, "DIAGNOSTIC TOOLS & DRESSINGS", "TREATMENTS & ADVANCED ITEMS"))
story.append(sp(3))
# ── SECTION 4: EMERGENCY PROTOCOL ────────────────────────────────────────────
story.append(section_block("SECTION 4: ALTITUDE ILLNESS EMERGENCY PROTOCOL", "🆘", ACCENT_RED))
story.append(sp(2))
ems_data = [
[
Paragraph("Condition", BODY_BOLD),
Paragraph("Key Symptoms", BODY_BOLD),
Paragraph("Immediate Action", BODY_BOLD),
Paragraph("Medications", BODY_BOLD),
],
[
Paragraph("MILD AMS", style("c1", fontSize=9, fontName="Helvetica-Bold", textColor=ORANGE)),
Paragraph("Headache, nausea, fatigue, poor sleep", BODY),
Paragraph("STOP ascending. Rest at same altitude. Hydrate.", BODY),
Paragraph("Ibuprofen 600 mg or Paracetamol 1 g.\nAcetazolamide 250 mg q12h.", SMALL),
],
[
Paragraph("MODERATE AMS", style("c2", fontSize=9, fontName="Helvetica-Bold", textColor=ORANGE)),
Paragraph("Severe headache, vomiting, weakness, not improving after 12h rest", BODY),
Paragraph("DESCEND at least 500 m. Use oxygen if available.", BODY),
Paragraph("Acetazolamide 250 mg q12h + Dexamethasone 4 mg q6h.", SMALL),
],
[
Paragraph("HACE", style("c3", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_RED)),
Paragraph("Ataxia (stumbling), confusion, altered consciousness, severe headache", BODY),
Paragraph("IMMEDIATE descent. This is life-threatening. Activate emergency evacuation.", BODY),
Paragraph("Dexamethasone 8 mg IM/IV/PO STAT, then 4 mg q6h.\nO₂ 2–4 L/min.\nGamow bag if no descent possible.", SMALL),
],
[
Paragraph("HAPE", style("c4", fontSize=9, fontName="Helvetica-Bold", textColor=ACCENT_RED)),
Paragraph("Breathlessness at rest, dry then wet cough, pink frothy sputum, cyanosis", BODY),
Paragraph("IMMEDIATE descent. Minimize exertion. Keep patient warm. Call for helicopter evacuation.", BODY),
Paragraph("O₂ 4–6 L/min to keep SpO₂ >90%.\nNifedipine 30 mg SR q12h.\nGamow bag if descent impossible.", SMALL),
],
]
ems_t = Table(ems_data, colWidths=[28*mm, 42*mm, 52*mm, 48*mm])
ems_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, colors.HexColor("#FEF9F9")]),
("VALIGN", (0,0), (-1,-1), "TOP"),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LINEBELOW", (0,0), (-1,-1), 0.4, MID_GREY),
("BOX", (0,0), (-1,-1), 1.0, ACCENT_RED),
]))
story.append(ems_t)
story.append(sp(2))
story.append(warning_box(
"GOLDEN RULE: If in doubt — DESCEND. Even 300–500 m descent can reverse AMS. "
"Never leave a sick person alone. Never ascend with any AMS symptoms."
))
story.append(sp(3))
# ── SECTION 5: PRECAUTIONS ────────────────────────────────────────────────────
story.append(section_block("SECTION 5: GENERAL PRECAUTIONS & TIPS", "📋", colors.HexColor("#5B2C6F")))
story.append(sp(2))
precaution_data = [
("BEFORE YOU LEAVE", [
("Get a full medical check-up", "Especially if you have cardiac, pulmonary, or neurological conditions"),
("Consult doctor for Acetazolamide prescription", "Start 1–2 days before reaching high altitude"),
("Avoid alcohol for 48h before departure", "Alcohol impairs acclimatization and causes dehydration"),
("Acclimatize in Manali (2,050 m) for 1–2 nights", "Do not fly from sea level to high altitude directly"),
("Check weather forecasts", "Avoid crossing in bad weather or late season (post-September)"),
("Inform someone of your itinerary", "Leave a route plan and expected return time"),
]),
("ON THE ROUTE", [
("Walk slowly; pace yourself", "'Pole pole' — slow and steady prevents AMS"),
("Drink 3–4 litres of water daily", "Dehydration significantly worsens altitude sickness"),
("Eat light, high-carb meals", "Rice, bread, pasta, lentils; avoid heavy fatty food"),
("Avoid sedatives and sleeping pills", "They suppress breathing during sleep; dangerous at altitude"),
("Do not smoke at altitude", "Smoking reduces O₂ delivery; worsens hypoxia"),
("Monitor SpO₂ twice daily with oximeter", "Morning and evening readings; descend if <85%"),
("Limit exertion on the day of crossing", "Save energy; do not sprint or run at the pass"),
("Above 3,000 m: sleep altitude +300 m max per day", "Climb high, sleep low principle"),
]),
]
for section_title, items in precaution_data:
story.append(Paragraph(section_title, SUBSEC))
story.append(checklist_table(items))
story.append(sp(2))
# Avoid list
story.append(Paragraph("THINGS TO AVOID AT HIGH ALTITUDE", SUBSEC))
avoid_items = [
"Alcohol (first 48h especially) — causes dehydration and suppresses hypoxic ventilatory response",
"Sleeping pills / benzodiazepines — suppress breathing during sleep",
"Sedating antihistamines (Chlorpheniramine) — use Cetirizine instead",
"Heavy physical exertion on arrival day",
"Going higher with ANY symptoms of AMS",
"Travelling alone on remote stretches without communication device",
"Ignoring early symptoms — fatigue and mild headache can escalate quickly",
]
avoid_data = [[
Paragraph(f"✗ {item}", style("av", fontSize=8.5, fontName="Helvetica", textColor=ACCENT_RED, leading=12))
] for item in avoid_items]
av_t = Table(avoid_data, colWidths=[170*mm])
av_t.setStyle(TableStyle([
("ROWBACKGROUNDS",(0,0), (-1,-1), [colors.HexColor("#FEF9F9"), WHITE]),
("TOPPADDING", (0,0), (-1,-1), 3),
("BOTTOMPADDING",(0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 8),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
("BOX", (0,0), (-1,-1), 0.5, ACCENT_RED),
]))
story.append(av_t)
story.append(sp(3))
# ── SECTION 6: EMERGENCY CONTACTS ────────────────────────────────────────────
story.append(section_block("SECTION 6: EMERGENCY CONTACTS & RESOURCES", "📞", colors.HexColor("#1A5276")))
story.append(sp(2))
contacts = [
["National Emergency", "112", "Pan-India emergency number"],
["Himachal Pradesh Police", "100 / 01902-222249", ""],
["Manali Hospital (DRPGMC)", "01902-252379", "Nearest major hospital before Baralacha La"],
["Keylong CHC (Lahaul)", "01900-222334", "Nearest hospital on Leh side"],
["Leh District Hospital", "01982-252014", "For evacuees from Baralacha La northward"],
["HRTC Manali Bus Stand", "01902-252323", "For vehicle / route assistance"],
["Atal Tunnel Control Room", "1800-180-8080", "For road closures and emergencies"],
["Mountain Rescue / ITBP", "01982-252420", "Indo-Tibetan Border Police, Leh"],
]
con_data = [[Paragraph("Organisation", BODY_BOLD), Paragraph("Contact", BODY_BOLD), Paragraph("Notes", BODY_BOLD)]]
for org, num, note in contacts:
con_data.append([Paragraph(org, BODY), Paragraph(f"<b>{num}</b>", BODY), Paragraph(note, SMALL)])
con_t = Table(con_data, colWidths=[60*mm, 45*mm, 65*mm])
con_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT_BLUE]),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 6),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("BOX", (0,0), (-1,-1), 0.5, MED_BLUE),
("LINEBELOW", (0,0), (-1,-1), 0.3, MID_GREY),
]))
story.append(con_t)
story.append(sp(2))
story.append(info_box(
"📱 <b>Mobile connectivity</b>: BSNL has limited coverage on the Manali–Leh highway. "
"Airtel / Jio signals are largely absent between Rohtang and Leh. "
"Carry a <b>satellite communicator</b> (Garmin inReach / SPOT) for remote stretches. "
"Download offline maps (Maps.me / Google Maps offline) before departure."
))
story.append(sp(3))
# ── FOOTER NOTE ──────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=MID_GREY))
story.append(sp(1))
story.append(Paragraph(
"This checklist is for general informational purposes. It does not replace professional medical advice. "
"Always consult a doctor before travelling to high altitude, especially if you have pre-existing medical conditions. "
"Medication doses are based on Harrison's Principles of Internal Medicine (22nd Ed., 2025) and CDC Yellow Book 2026.",
FOOTER_STYLE
))
story.append(Paragraph(
"Prepared by Orris Medical AI • June 2026 • Sources: Harrison's 22nd Ed., CDC Yellow Book 2026, PubMed",
FOOTER_STYLE
))
# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved: {OUTPUT}")
cd /home/daytona/workspace/baralacha-checklist && python3 generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/baralacha-checklist/Baralacha_La_Travel_Checklist.pdf
Baralacha La Travel Checklist
PDF Document · PDF
| Section | Contents |
|---|---|
| 1. Medication List | Full table: Acetazolamide, Dexamethasone, Nifedipine, Ibuprofen, antibiotics, ORS + dosages, purposes, notes |
| Pulse Oximeter Guide | Color-coded SpO₂ table (normal / acclimatizing / danger zones) |
| 2. Packing Checklist | Clothing, gear/equipment, food & water, documents — all with checkboxes |
| 3. First Aid Kit | Diagnostic tools, dressings, oxygen, Gamow bag, advanced items |
| 4. Emergency Protocol | Table: Mild AMS → Moderate AMS → HACE → HAPE with immediate actions + meds |
| 5. Precautions | Before departure, on route, and a "Things to Avoid" list |
| 6. Emergency Contacts | Manali hospital, Keylong CHC, Leh hospital, ITBP, police, Atal Tunnel control |