Tell me is this correct and also tell me from basic and in simplest words which drugs combition to use when what to use when only fasting is high or when ff is normal and pp is high when both are high pt with heart disease etc all in simple words and also give me seperewt for old people and also patient who can’t afford drugs and also who can afford all and everything a doctor should know ok and also with brand names too which are easily available
python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/869953de-9e5a-42e6-b609-e93a2a7841a9/Diabetes .pdf') as pdf: print(f'Pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages[:3]): print(f'--- PAGE {i+1} ---') print(page.extract_text()[:2000]) "
python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/869953de-9e5a-42e6-b609-e93a2a7841a9/Diabetes .pdf') as pdf: print(f'Pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages[3:]): print(f'--- PAGE {i+4} ---') print(page.extract_text()) "
| Term | Means | Target |
|---|---|---|
| Fasting Sugar (FBS) | Sugar first thing in morning before eating | 80-130 mg/dL |
| PP Sugar (Post-Prandial) | Sugar 2 hours after a meal | <180 mg/dL |
| HbA1c | Average sugar of last 3 months | <7% (most patients) |
| Drug | Why | Brand | Price |
|---|---|---|---|
| Metformin | Safe, proven, first-line | Glycomet 500/1000 | ₹3-6/tab |
| Empagliflozin | PROVEN to reduce heart death (EMPA-REG trial) | Jardiance 10/25, Empaone 10, Gibtulio | ₹25-42/tab |
| Dapagliflozin | Reduces heart failure hospitalizations | Udapa 10, Forxiga 10 | ₹12-25/tab |
| Sitagliptin | Cardiovascular SAFE (neutral) | Januvia 100, Istamet 50 (with Met) | ₹10-25/tab |
| Liraglutide (injection) | Proven CV benefit (LEADER trial) | Victoza | ₹expensive |
| Drug | Why Safe | Brand | Price |
|---|---|---|---|
| DPP4 inhibitors (Sitagliptin, Vildagliptin, Linagliptin) | NO hypoglycemia, no kidney dose adjustment needed for Linagliptin | Ondero 5 (Lina), Galvus 50 (Vilda), Januvia (Sita) | ₹15-30/tab |
| Teneligliptin | Cheapest DPP4, no kidney dose change | Tendia 20, Zita 20 | ₹8-12/tab |
| Low-dose Glimepiride (0.5-1mg only) | If needed, use minimum dose | Amaryl 1mg | ₹4-6/tab |
| SGLT2 inhibitors - use with caution | Monitor for dehydration, UTI | Remogliflozin (cheapest SGLT2) | ₹10-14/tab |
| Drug | Brand | Price/tab |
|---|---|---|
| Metformin 500mg | Glycomet, Glucophage (generic) | ₹2-4 |
| Glimepiride 1-2mg | Generic Glimepiride, Glucored | ₹3-5 |
| Voglibose 0.2mg | Generic Voglibose | ₹3-5 |
| Glipizide 5mg | Glynase, generic | ₹2-4 |
| Situation | Best Combination | Brands |
|---|---|---|
| Overweight + no complications | Metformin + Dapagliflozin OR Empagliflozin | Udapa-M, Empaone-M |
| Heart disease | Metformin + Empagliflozin (+/- Sitagliptin if HbA1c high) | Jardiance Met, Empaone-M |
| Fatty Liver / NASH | Metformin + Pioglitazone | Pioz MF, Glizone M |
| CKD / Kidney disease | Linagliptin + SGLT2i (Dapa/Empa) | Ondero + Udapa |
| If obese and can afford injections | Add Semaglutide (Ozempic weekly injection) or Liraglutide (Victoza) - best for weight loss + sugar control + CV protection | Ozempic, Victoza |
| High HbA1c (>9%) with no complications | Triple: Metformin + Glimepiride + Sitagliptin OR Metformin + Glimepiride + Pioglitazone | Tribet-2, Glycomet Trio |
| Situation | Drug/Combo | Brand | Approx Cost/day |
|---|---|---|---|
| Only fasting high, low budget | Metformin 500 BD | Glycomet | ₹8 |
| Only fasting high, can afford | Metformin + Glimepiride | Glycomet GP 500/1 | ₹18 |
| Only PP high | Voglibose + Metformin | Volibo M / Prandial M | ₹20 |
| Both high, low budget | Metformin + Glimepiride | Glycomet GP 500/2 | ₹18 |
| Both high, + PP spike | Metformin + Glimepiride + Voglibose | Glycomet Trio | ₹36 |
| Heart disease patient | Metformin + Empagliflozin | Empaone-M / Jardiance Met | ₹50-80 |
| Heart failure patient | Dapagliflozin or Empagliflozin | Udapa 10 / Jardiance | ₹25-42 |
| Elderly (no hypo risk) | Metformin + Teneligliptin | Tenlimac-M / Dynaglipt-M | ₹20-25 |
| Elderly + CKD | Linagliptin | Ondero 5 | ₹30 |
| Fatty Liver | Metformin + Pioglitazone | Pioz MF | ₹18 |
| Irregular meals | Metformin + Repaglinide | Eurepa MF | ₹20 |
| High HbA1c (>9%), can't afford insulin | Metformin + Glimepiride + Pioglitazone | Tribet-2 | ₹30 |
| Best overall (affordable) | Metformin + Vildagliptin | Galvus Met / Zomelis Met | ₹22-25 |
| Can't tolerate Metformin (gastritis) | Sitagliptin + Dapagliflozin | Sitara-D / Sita-Dapa | ₹32-36 |
| Condition | Avoid |
|---|---|
| Heart Failure | Pioglitazone (causes fluid, worsens HF) |
| CKD (eGFR <30) | Metformin (lactic acidosis risk), Glibenclamide |
| Elderly | Glibenclamide, long-acting sulfonylure |
| Liver disease | Metformin (use cautiously), Pioglitazone |
| Recurrent UTI | SGLT2 inhibitors (Dapa, Empa) |
| Bladder cancer history | Pioglitazone |
| Frequent hypoglycemia | All sulfonylure - switch to DPP4i |
Start all T2DM patients:
→ METFORMIN (unless contraindicated)
Add 2nd drug based on:
├── Heart disease/Heart failure? → SGLT2 inhibitor (Empa/Dapa)
├── Elderly/Low hypo risk needed? → DPP4 inhibitor (Teneligliptin/Linagliptin)
├── CKD severe? → Linagliptin (no dose change ever)
├── Fatty liver? → Pioglitazone
├── Only PP high? → Voglibose
├── Budget very tight? → Glimepiride (cheap, effective)
├── Overweight + no heart disease? → SGLT2i (weight loss bonus)
└── HbA1c >9%? → Don't wait - consider insulin early
Note: For heart disease patients, the choice of SGLT2 inhibitor over sulfonylurea is now a guideline-level recommendation backed by multiple large RCTs (EMPA-REG, DECLARE-TIMI, EMPEROR-Preserved). This is the single most important update in diabetes management in the last decade.
Tell me is this correct and also tell me from basic and in simplest words which drugs combition to use when what to use when only fasting is high or when ff is normal and pp is high when both are high pt with heart disease etc all in simple words and also give me seperewt for old people and also patient who can’t afford drugs and also who can afford all and everything a doctor should know ok and also with brand names too which are easily available
Create a simple printable PDF with drug doses and brand names I can share with patients
mkdir -p /home/daytona/workspace/diabetes-pdf && ls /home/daytona/workspace/diabetes-pdf/
~/diabetes-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.colors import HexColor
from reportlab.pdfgen import canvas
from reportlab.platypus import BaseDocTemplate, PageTemplate, Frame
# ── Color palette ──────────────────────────────────────────────
C_BLUE = HexColor("#1a5276") # dark navy blue – headers
C_LBLUE = HexColor("#d6eaf8") # light blue – row fill
C_GREEN = HexColor("#1e8449") # dark green – section accent
C_LGREEN = HexColor("#d5f5e3") # light green
C_ORANGE = HexColor("#e67e22") # orange – warnings
C_LORANGE = HexColor("#fdebd0") # light orange
C_RED = HexColor("#c0392b") # red – avoid
C_LRED = HexColor("#fadbd8") # light red
C_PURPLE = HexColor("#7d3c98") # purple – elderly
C_LPURPLE = HexColor("#e8daef") # light purple
C_TEAL = HexColor("#148f77") # teal – affordable
C_LTEAL = HexColor("#d0ece7") # light teal
C_GOLD = HexColor("#b7950b") # gold – premium
C_LGOLD = HexColor("#fef9e7") # light gold
C_GREY = HexColor("#f2f3f4") # very light grey rows
C_DARK = HexColor("#2c3e50") # near-black text
C_MID = HexColor("#566573") # medium grey text
W, H = A4 # 595 x 842 pts
# ── Document ────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/diabetes-pdf/Diabetes_Drug_Guide.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.5*cm, rightMargin=1.5*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="Diabetes Drug Guide – Patient Handout",
author="Dr. Guide"
)
# ── Styles ──────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
S_TITLE = style("TITLE",
fontSize=22, leading=28, textColor=C_BLUE,
fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=4)
S_SUBTITLE = style("SUBTITLE",
fontSize=11, leading=14, textColor=C_MID,
fontName="Helvetica", alignment=TA_CENTER, spaceAfter=12)
S_SECTION = style("SECTION",
fontSize=13, leading=16, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_LEFT,
spaceAfter=4, spaceBefore=10,
backColor=C_BLUE, borderPadding=(4, 6, 4, 6))
S_SUBSEC = style("SUBSEC",
fontSize=11, leading=14, textColor=C_BLUE,
fontName="Helvetica-Bold", spaceBefore=8, spaceAfter=2)
S_BODY = style("BODY",
fontSize=9, leading=13, textColor=C_DARK,
fontName="Helvetica", spaceAfter=2)
S_SMALL = style("SMALL",
fontSize=8, leading=11, textColor=C_MID,
fontName="Helvetica", spaceAfter=2)
S_NOTE = style("NOTE",
fontSize=8.5, leading=12, textColor=C_DARK,
fontName="Helvetica-Oblique", spaceAfter=3)
S_WARN = style("WARN",
fontSize=9, leading=12, textColor=C_RED,
fontName="Helvetica-Bold", spaceAfter=2)
S_TH = style("TH",
fontSize=9, leading=11, textColor=colors.white,
fontName="Helvetica-Bold", alignment=TA_CENTER)
S_TD = style("TD",
fontSize=8.5, leading=11, textColor=C_DARK,
fontName="Helvetica", alignment=TA_LEFT)
S_TDC = style("TDC",
fontSize=8.5, leading=11, textColor=C_DARK,
fontName="Helvetica", alignment=TA_CENTER)
S_TDB = style("TDB",
fontSize=8.5, leading=11, textColor=C_DARK,
fontName="Helvetica-Bold", alignment=TA_LEFT)
# ── Helper: section header ──────────────────────────────────────
def sec_header(text, bg=C_BLUE):
tbl = Table([[Paragraph(f" {text}", style("SH",
fontSize=12, leading=15, textColor=colors.white,
fontName="Helvetica-Bold"))]],
colWidths=[W - 3*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("ROWBACKGROUNDS", (0,0), (-1,-1), [bg]),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
return tbl
def sub_header(text, bg=C_LBLUE, tc=C_BLUE):
tbl = Table([[Paragraph(f" {text}", style("SSH",
fontSize=10, leading=13, textColor=tc,
fontName="Helvetica-Bold"))]],
colWidths=[W - 3*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
]))
return tbl
def spacer(h=0.3):
return Spacer(1, h*cm)
def hr(color=C_LBLUE, thickness=1):
return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=3, spaceBefore=3)
def para(text, st=S_BODY):
return Paragraph(text, st)
def note(text):
return Paragraph(f"<i>{text}</i>", S_SMALL)
def warn(text):
return Paragraph(f"⚠ {text}", S_WARN)
# ── Generic table builder ───────────────────────────────────────
def drug_table(headers, rows, col_widths, header_bg=C_BLUE, alt1=C_GREY, alt2=colors.white):
data = [[Paragraph(h, S_TH) for h in headers]]
for i, row in enumerate(rows):
styled = []
for j, cell in enumerate(row):
if j == 0:
styled.append(Paragraph(str(cell), S_TDB))
else:
styled.append(Paragraph(str(cell), S_TD))
data.append(styled)
tbl = Table(data, colWidths=col_widths, repeatRows=1)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), header_bg),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("ALIGN", (0,0), (-1,0), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("GRID", (0,0), (-1,-1), 0.4, HexColor("#bdc3c7")),
("ROWBACKGROUNDS",(0,1), (-1,-1), [alt1, alt2]),
]
tbl.setStyle(TableStyle(style_cmds))
return tbl
# ════════════════════════════════════════════════════════════════
# BUILD CONTENT
# ════════════════════════════════════════════════════════════════
story = []
# ── COVER / TITLE ───────────────────────────────────────────────
story.append(spacer(0.5))
story.append(para(
'<font color="#1a5276"><b>🩺 Diabetes Drug Guide</b></font>',
style("CT", fontSize=26, leading=32, fontName="Helvetica-Bold",
alignment=TA_CENTER, textColor=C_BLUE)))
story.append(para(
"Complete Prescription Reference with Brand Names & Doses",
style("CST", fontSize=13, leading=16, fontName="Helvetica",
alignment=TA_CENTER, textColor=C_MID)))
story.append(spacer(0.2))
story.append(HRFlowable(width="100%", thickness=2, color=C_BLUE, spaceAfter=4))
story.append(para(
"For Indian patients · Prices approximate (2025-2026) · Always consult your doctor before changing medicines",
style("CDS", fontSize=9, leading=12, fontName="Helvetica-Oblique",
alignment=TA_CENTER, textColor=C_MID)))
story.append(spacer(0.4))
# ── BOX: Blood Sugar Targets ────────────────────────────────────
tgt_data = [
[Paragraph("<b>Measurement</b>", S_TH),
Paragraph("<b>Normal Person</b>", S_TH),
Paragraph("<b>Diabetic Target</b>", S_TH),
Paragraph("<b>Elderly Target</b>", S_TH)],
[Paragraph("Fasting (morning)", S_TD),
Paragraph("70–100 mg/dL", S_TDC),
Paragraph("<b>80–130 mg/dL</b>", S_TDC),
Paragraph("90–150 mg/dL", S_TDC)],
[Paragraph("Post-meal (2 hrs after eating)", S_TD),
Paragraph("< 140 mg/dL", S_TDC),
Paragraph("<b>< 180 mg/dL</b>", S_TDC),
Paragraph("< 200 mg/dL", S_TDC)],
[Paragraph("HbA1c (3-month average)", S_TD),
Paragraph("< 5.7%", S_TDC),
Paragraph("<b>< 7.0%</b>", S_TDC),
Paragraph("< 8.0%", S_TDC)],
]
tgt_tbl = Table(tgt_data, colWidths=[6.5*cm, 3.5*cm, 3.5*cm, 3.5*cm])
tgt_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_BLUE),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ALIGN", (1,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 5),
("GRID", (0,0), (-1,-1), 0.4, HexColor("#bdc3c7")),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_LGOLD, colors.white]),
]))
story.append(sec_header("BLOOD SUGAR TARGETS"))
story.append(spacer(0.1))
story.append(tgt_tbl)
story.append(spacer(0.4))
# ════════════════════════════════════════════════════════════════
# SECTION 1 – WHICH DRUG WHEN
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 1: WHICH DRUG TO USE — BASED ON SUGAR PATTERN"))
story.append(spacer(0.15))
# 1a – Only fasting high
story.append(sub_header("SITUATION A: Only Fasting Sugar High, Post-meal is Normal", bg=C_LBLUE, tc=C_BLUE))
story.append(spacer(0.1))
story.append(para("<b>What it means:</b> Liver releases too much glucose overnight. "
"Body does not make enough baseline insulin.", S_BODY))
story.append(spacer(0.1))
sit_a = [
["Drug", "Dose", "Brand Names (India)", "Price/tab", "When to Take"],
["Metformin\n(Start here always)", "500–1000 mg\ntwice daily", "Glycomet 500/1000\nGlucophage 500\nFormit 500", "₹3–6", "With dinner\n(or morning+night)"],
["Metformin +\nGlimepiride\n(if Metformin not enough)", "Met 500 mg +\nGlim 1–2 mg\ntwice daily", "Glycomet GP 500/1\nGlycomet GP 500/2\nGluconorm G 1\nAmaryl M 1/2", "₹9–19", "With breakfast\n(main meal)"],
["Metformin +\nGliclazide\n(safer alternative)", "Met 500 mg +\nGliclazide 40–80 mg", "Reclide M 80\nGlizid M 80\nDiamicron MR (single)", "₹10–12", "With breakfast"],
]
story.append(drug_table(
sit_a[0], sit_a[1:],
[4*cm, 3.2*cm, 5*cm, 2*cm, 2.8*cm],
header_bg=C_BLUE, alt1=C_LBLUE, alt2=colors.white
))
story.append(spacer(0.3))
# 1b – Only PP high
story.append(sub_header("SITUATION B: Post-meal Sugar High, Fasting is Normal", bg=C_LGREEN, tc=C_GREEN))
story.append(spacer(0.1))
story.append(para("<b>What it means:</b> Body does not release insulin fast enough after eating. "
"Carbohydrates absorb too quickly.", S_BODY))
story.append(spacer(0.1))
sit_b = [
["Drug", "Dose", "Brand Names (India)", "Price/tab", "When to Take"],
["Voglibose\n(slows carb absorption)", "0.2 mg or 0.3 mg\nthree times daily", "Volix 0.3\nVolibo 0.3\nVoglibose generic", "₹3–6", "At FIRST BITE\nof each meal"],
["Metformin +\nVoglibose", "Met 500 +\nVogli 0.2 mg", "Volibo M 500/0.2\nPrandial M\nVoglistar M", "₹8–10", "At first bite\nof meal"],
["Repaglinide\n(short acting)", "0.5–2 mg before\neach meal", "Eurepa 0.5/1/2\nRegan 0.5/1", "₹5–10", "15 min before meal\nSkip if skipping meal"],
["Metformin +\nRepaglinide", "Met 500 +\nRepa 1 mg", "Eurepa MF 500/1\nRegan M", "₹9–12", "Before meals"],
["DPP4 Inhibitor\n(Sitagliptin)\nBoosts meal-time insulin", "Sitagliptin 50–100 mg\nonce daily", "Januvia 100\nZita 100", "₹25–30", "Any time with food"],
]
story.append(drug_table(
sit_b[0], sit_b[1:],
[4*cm, 3*cm, 5*cm, 2*cm, 3*cm],
header_bg=C_GREEN, alt1=C_LGREEN, alt2=colors.white
))
story.append(spacer(0.3))
# 1c – Both high
story.append(sub_header("SITUATION C: Both Fasting AND Post-meal are High (Most Common)", bg=C_LORANGE, tc=C_ORANGE))
story.append(spacer(0.1))
story.append(para("<b>Start with Metformin + one second drug.</b> Choose second drug based on patient type "
"(see sections below). If HbA1c > 9%, consider triple therapy or insulin early.", S_BODY))
story.append(spacer(0.1))
sit_c = [
["Combination", "Dose", "Brand Names (India)", "Price/tab", "Best For"],
["Metformin +\nGlimepiride\n(GOLD STANDARD)", "Met 500/1000 +\nGlim 1–2 mg BD", "Glycomet GP 500/1\nGlycomet GP 500/2\nGluconorm G 2\nAmaryl M 2", "₹9–19", "Most patients\nBudget-friendly\nStrong HbA1c drop"],
["Metformin +\nSitagliptin", "Met 500 +\nSita 50 mg BD\nor 1000 + 50 BD", "Janumet 500/50\nIstamet 500/50\nSitara M 500/50", "₹10–25", "Safe heart profile\nLow hypo risk"],
["Metformin +\nVildagliptin", "Met 500 +\nVilda 50 mg BD", "Galvus Met 500/50\nJalra M 500/50\nZomelis Met 500/50", "₹11–22", "Elderly\nWeight neutral"],
["Metformin +\nTeneligliptin\n(cheapest DPP4)", "Met 500 +\nTene 20 mg OD", "Tenlimac M 500/20\nDynaglipt M\nZita Met Plus", "₹10–15", "Budget + elderly\nCKD safe"],
["Metformin +\nDapagliflozin", "Met 500/1000 +\nDapa 10 mg OD", "Udapa M 500/10\nOxra Met 500/10\nXigduo XR (costly)", "₹12–70", "Overweight\nHeart/kidney risk"],
["Metformin +\nEmpagliflozin", "Met 500/1000 +\nEmpa 12.5–25 mg OD", "Empaone M 500/12.5\nGibtulio Met\nJardiance Met", "₹25–42", "Heart disease\nHeart failure"],
["Metformin +\nPioglitazone", "Met 500 +\nPio 15–30 mg OD", "Pioz MF 500/15\nPioglar M 500/15\nGlizone M 500/15", "₹7–9", "Fatty liver\nInsulin resistance"],
["Triple: Met +\nGlim + Voglibose", "Met 500 + Glim 2 +\nVogli 0.2 mg", "Glycomet Trio 2\nGluconorm V G 2\nVoglimac GM 2", "₹12–20", "Both fasting &\nPP spike high"],
["Triple: Met +\nGlim + Pioglitazone", "Met 500 + Glim 2 +\nPio 15 mg", "Tribet 2\nAccuglim MP 2\nTripride 2", "₹14–16", "HbA1c > 9%\nHigh insulin resistance"],
]
story.append(drug_table(
sit_c[0], sit_c[1:],
[4*cm, 3.2*cm, 4.5*cm, 2*cm, 3.3*cm],
header_bg=C_ORANGE, alt1=C_LORANGE, alt2=colors.white
))
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 2 – HEART DISEASE
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 2: PATIENT WITH HEART DISEASE / HEART FAILURE", C_RED))
story.append(spacer(0.15))
story.append(para(
"<b>Most important group!</b> SGLT2 inhibitors (Empagliflozin, Dapagliflozin) are now FIRST CHOICE "
"in diabetics with heart disease — proven to reduce heart death and hospitalization "
"(EMPA-REG, DECLARE-TIMI trials). Avoid Pioglitazone and Glibenclamide.", S_BODY))
story.append(spacer(0.1))
heart_data = [
["Drug", "Dose", "Brand Names", "Price/tab", "Why Use / Notes"],
["Metformin\n(always keep unless CKD)", "500–1000 mg BD", "Glycomet 500/1000\nGlucophage 500", "₹3–6", "Safe in heart disease\nReduce insulin resistance"],
["Empagliflozin\n✅ FIRST CHOICE in\nheart failure", "10 or 25 mg OD\n(morning)", "Jardiance 10/25\nEmpaone 10/25\nGibtulio 10/25", "₹25–42", "Proven: reduces CV death\nReduces HF hospitalizations\nLowers BP + weight"],
["Dapagliflozin\n✅ Also excellent", "10 mg OD\n(morning)", "Forxiga 10\nUdapa 10\nOxra 10", "₹12–25", "Proven in heart failure\nRenal protection too\nCheaper than Empa"],
["Sitagliptin\n(cardiovascular SAFE)", "50–100 mg OD/BD", "Januvia 100\nZita 100\nIstamet (with Met)", "₹10–25", "Neutral – no harm\nno CV benefit either\nGood add-on"],
["Metformin +\nEmpagliflozin", "Met 500 +\nEmpa 12.5 mg BD", "Empaone M 500/12.5\nGibtulio Met\nJardiance Met", "₹25–42", "BEST COMBINATION\nfor heart patients"],
["Metformin +\nDapagliflozin\n(budget option)", "Met 500 +\nDapa 10 mg OD", "Udapa M 500/10\nOxra Met 500/10", "₹12–14", "Affordable cardiac\nprotection combo"],
]
story.append(drug_table(
heart_data[0], heart_data[1:],
[3.8*cm, 2.8*cm, 4.5*cm, 2*cm, 4*cm],
header_bg=C_RED, alt1=C_LRED, alt2=colors.white
))
story.append(spacer(0.15))
avoid_heart = [
[Paragraph("<b>⚠ AVOID IN HEART DISEASE</b>", style("AH",
fontSize=10, fontName="Helvetica-Bold", textColor=C_RED))],
[Paragraph(
"• <b>Pioglitazone</b> – causes fluid retention, worsens heart failure<br/>"
"• <b>Glibenclamide (Daonil)</b> – increases cardiac risk, severe hypoglycemia<br/>"
"• <b>High-dose Glimepiride</b> (keep ≤ 2 mg if needed)<br/>"
"• <b>Rosiglitazone</b> – avoid completely in cardiac patients",
style("AL", fontSize=9, fontName="Helvetica", textColor=C_DARK, leading=14))],
]
avoid_tbl = Table(avoid_heart, colWidths=[W - 3*cm])
avoid_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_LRED),
("BACKGROUND", (0,1), (-1,-1), HexColor("#fff5f5")),
("BOX", (0,0), (-1,-1), 1, C_RED),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(avoid_tbl)
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 3 – ELDERLY
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 3: ELDERLY PATIENTS (Age 65+)", C_PURPLE))
story.append(spacer(0.15))
story.append(para(
"<b>Key concern:</b> Low sugar (hypoglycemia) is VERY DANGEROUS in elderly – can cause falls, "
"fractures, confusion, and stroke. Relax HbA1c target to <8%. "
"Prefer drugs with NO hypoglycemia risk.", S_BODY))
story.append(spacer(0.1))
elderly_data = [
["Drug", "Dose", "Brand Names", "Price/tab", "Why Preferred"],
["Teneligliptin\n(BEST for elderly, budget)", "20 mg OD\n(morning)", "Tendia 20\nZita 20\nTena 20\nPandia 20", "₹8–12", "No hypoglycemia\nCheapest DPP4\nNo kidney dose change"],
["Metformin +\nTeneligliptin\n(BEST combo for elderly)", "Met 500 +\nTene 20 mg BD", "Tenlimac M 500/20\nDynaglipt M 500/20\nZita Met Plus 500/20", "₹10–15", "Safe, affordable\nNo hypo risk\nWeight neutral"],
["Linagliptin\n(BEST for elderly with CKD)", "5 mg OD", "Ondero 5\nLinares 5\nLintra 5\nTradjenta 5", "₹14–28", "No dose change even\nin dialysis!\nSafest kidney drug"],
["Metformin +\nLinagliptin", "Met 500 +\nLina 2.5 mg BD", "Ondero Met 500/2.5\nLinares M 500/2.5\nLintra M 500/2.5", "₹14–28", "Safest elderly combo\nif kidney function low"],
["Vildagliptin\n(good elderly option)", "50 mg BD", "Galvus 50\nJalra 50\nZomelis 50", "₹15–25", "No hypoglycemia\nWeight neutral\nTwice daily dosing"],
["Low-dose Glimepiride\n(if must use SU)", "0.5–1 mg only\nwith breakfast", "Amaryl 1 mg\nGlucored 1 mg\n(half tablet)", "₹4–6", "Use MINIMUM dose only\nMonitor carefully\nDO NOT use 4 mg+ in elderly"],
["Remogliflozin\n(if SGLT2 needed)", "100–200 mg BD", "Remo 100\nRemozen 100\nRemo V (+ Vilda)", "₹10–14", "Cheapest Indian SGLT2\nUse cautiously\nWatch for dehydration/UTI"],
]
story.append(drug_table(
elderly_data[0], elderly_data[1:],
[3.8*cm, 2.8*cm, 4.5*cm, 2*cm, 4*cm],
header_bg=C_PURPLE, alt1=C_LPURPLE, alt2=colors.white
))
story.append(spacer(0.15))
avoid_eld = Table([[Paragraph(
"<b>⚠ AVOID IN ELDERLY:</b> Glibenclamide (Daonil) • Metformin if eGFR <30 • "
"Pioglitazone (edema, falls) • High-dose Glimepiride (4–8 mg)",
style("AE", fontSize=9, fontName="Helvetica", textColor=C_DARK, leading=13))]],
colWidths=[W - 3*cm])
avoid_eld.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LPURPLE),
("BOX", (0,0), (-1,-1), 1, C_PURPLE),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(avoid_eld)
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 4 – CANNOT AFFORD
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 4: BUDGET-CONSCIOUS PATIENTS (Cannot Afford Costly Drugs)", C_TEAL))
story.append(spacer(0.15))
story.append(para(
"<b>Goal:</b> Maximum sugar control at minimum cost. "
"Jan Aushadhi (PMBJP) stores have generic Metformin, Glimepiride, "
"Glipizide, Voglibose at 1/10th of MRP. Direct patient there.", S_BODY))
story.append(spacer(0.1))
budget_data = [
["Combination", "Dose", "Brand / Generic", "Cost/month*", "Good For"],
["Metformin alone\n(cheapest start)", "500 mg twice daily", "Glycomet 500\nGlucophage 500\nGeneric Metformin", "~₹60–120", "Newly diagnosed\nOverweight\nOnly mild elevation"],
["Metformin +\nGlimepiride\n(BEST BUDGET COMBO)", "Met 500 + Glim 1–2 mg\ntwice daily", "Glycomet GP 500/1\n(₹9/tab)\nGluconorm G 1\nAmaryl M 1", "~₹180–360", "Most Type 2 patients\nStrong HbA1c drop\nWidely available"],
["Metformin +\nGlipizide\n(very cheap alternative)", "Met 500 + Glipiz 5 mg\nbefore meals", "Glynase MF 500/5\n(₹5/tab)\nGeneric combo", "~₹100–200", "Rural / Govt hospital\nVery affordable"],
["Metformin +\nVoglibose\n(PP spike add-on)", "Met 500 + Vogli 0.2 mg\nwith meals", "Volibo M 500/0.2\nPrandial M\n(₹8–10/tab)", "~₹240–300", "Add when PP still high\non Metformin alone"],
["Triple cheap combo\n(HbA1c very high)", "Met 500 + Glim 2 +\nVogli 0.2 mg", "Glycomet Trio 2\nVoglimac GM 2\n(₹12–20/tab)", "~₹360–600", "Uncontrolled DM\nboth fasting + PP high"],
["Glimepiride alone\n(Metformin not tolerated)", "1–2 mg once daily\nwith breakfast", "Amaryl 1/2\nGlucored 1/2\nGeneric Glimepiride", "~₹120–200", "Metformin intolerance\nGastric issues"],
["Teneligliptin\n(cheapest DPP4, elderly)", "20 mg once daily", "Tendia 20\nZita 20\nTena 20\n(₹8–12/tab)", "~₹240–360", "Elderly on budget\nNo hypo risk\nCKD safe"],
["Remogliflozin\n(cheapest SGLT2)", "100–200 mg BD", "Remo 100\nRemozen 100\n(₹10–14/tab)", "~₹300–420", "Needs weight loss\nBP reduction\nCan't afford Dapa/Empa"],
]
story.append(drug_table(
budget_data[0], budget_data[1:],
[3.8*cm, 3*cm, 4.2*cm, 2.5*cm, 3.5*cm],
header_bg=C_TEAL, alt1=C_LTEAL, alt2=colors.white
))
story.append(spacer(0.15))
jan_box = Table([[Paragraph(
"<b>💊 Jan Aushadhi (PMBJP) Tip:</b> All generic Metformin, Glimepiride, Glipizide, "
"Voglibose, Pioglitazone available at Jan Aushadhi stores at 60–90% cheaper than MRP. "
"Always ask patient to go to nearest Jan Aushadhi Kendra.",
style("JB", fontSize=9, fontName="Helvetica", textColor=C_DARK, leading=13))]],
colWidths=[W - 3*cm])
jan_box.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LTEAL),
("BOX", (0,0), (-1,-1), 1.5, C_TEAL),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(jan_box)
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 5 – CAN AFFORD (PREMIUM)
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 5: PATIENTS WHO CAN AFFORD ALL DRUGS (Best Evidence-Based)", C_GOLD))
story.append(spacer(0.15))
story.append(para(
"<b>Goal:</b> Best possible sugar control + organ protection + weight management + "
"cardiovascular benefit. Use modern drugs with proven trial data.", S_BODY))
story.append(spacer(0.1))
premium_data = [
["Situation", "Best Combination", "Brand Names", "Daily Cost"],
["Overweight, no\ncomplications", "Metformin + Dapagliflozin\nor Empagliflozin", "Udapa M 500/10\nEmpaone M 500/12.5\nForxiga 10 + Glycomet", "₹30–60"],
["Heart disease /\nPost heart attack", "Metformin + Empagliflozin\n(+/- Sitagliptin if HbA1c high)", "Empaone M + Janumet\nJardiance Met + Januvia\nGibtulio Met", "₹60–100"],
["Heart failure\n(even non-diabetic)", "Empagliflozin or\nDapagliflozin alone", "Jardiance 10\nForxiga 10\nEmpaone 10", "₹42–80"],
["Kidney disease (CKD)\nwith Diabetes", "Metformin + Linagliptin\n+ Dapagliflozin (if eGFR ok)", "Ondero Met + Forxiga\nLinares M + Udapa", "₹40–70"],
["Fatty Liver (NASH)\n+ Diabetes", "Metformin + Pioglitazone\n+/- SGLT2 inhibitor", "Pioz MF 15 + Empaone\nGlizone M + Udapa M", "₹25–50"],
["Obese + Diabetes\n(best weight loss)", "Metformin + Semaglutide\n(injection, once weekly)\nor Liraglutide (daily)", "Ozempic 0.5/1 mg\n(Semaglutide)\nVictoza 1.2/1.8 mg", "₹150–300"],
["HbA1c > 9% not\ncontrolled on 2 drugs", "Triple: Met + Glimepiride\n+ Sitagliptin/SGLT2i", "Tribet 2 + Januvia\nor Met GP + Udapa", "₹50–80"],
["Metformin\nnot tolerated (gastric)", "Sitagliptin + Dapagliflozin\n(Met-free combination)", "Sitara D 100/10\nSita Dapa 100/10\nIstamet D", "₹35–55"],
]
story.append(drug_table(
premium_data[0], premium_data[1:],
[4*cm, 5*cm, 4.5*cm, 3.5*cm],
header_bg=C_GOLD, alt1=C_LGOLD, alt2=colors.white
))
story.append(spacer(0.3))
# GLP1 note
glp1 = Table([[Paragraph(
"<b>💉 GLP-1 Agonists (Semaglutide / Liraglutide):</b> Best drugs for obese Type 2 diabetics "
"who can afford injections. Semaglutide (Ozempic) given once a week. "
"Average weight loss 5–12 kg. Proven to reduce CV events. "
"Ozempic oral tablet (Rybelsus 7/14 mg) also available – take on empty stomach 30 min before food.",
style("GP", fontSize=9, fontName="Helvetica", textColor=C_DARK, leading=13))]],
colWidths=[W - 3*cm])
glp1.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_LGOLD),
("BOX", (0,0), (-1,-1), 1.5, C_GOLD),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(glp1)
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 6 – QUICK REFERENCE / DECISION TABLE
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 6: QUICK DECISION REFERENCE (At-a-Glance)", C_BLUE))
story.append(spacer(0.15))
qr_data = [
["Patient Type", "First Choice", "Alternative", "AVOID"],
["New diagnosis\nHbA1c 7–8%", "Metformin 500 BD\n(Glycomet 500)", "Metformin + Teneligliptin\n(Tenlimac M)", "Glibenclamide"],
["Only fasting high", "Metformin + Glimepiride 1 mg\n(Glycomet GP 500/1)", "Metformin + Gliclazide\n(Reclide M)", "Glibenclamide"],
["Only PP high", "Metformin + Voglibose\n(Volibo M / Prandial M)", "Metformin + Repaglinide\n(Eurepa MF)", "Nothing specific"],
["Both high, budget", "Metformin + Glimepiride 2 mg\n(Glycomet GP 500/2)", "Triple: Glycomet Trio 2", "Glibenclamide"],
["Heart disease /\nHeart failure", "Metformin + Empagliflozin\n(Empaone M / Jardiance Met)", "Metformin + Dapagliflozin\n(Udapa M)", "Pioglitazone\nGlibenclamide"],
["Elderly (65+)", "Metformin + Teneligliptin\n(Tenlimac M / Dynaglipt M)", "Metformin + Vildagliptin\n(Galvus Met / Jalra M)", "Glibenclamide\nHigh-dose Glimepiride"],
["Elderly + CKD", "Linagliptin 5 mg alone\n(Ondero 5 / Linares 5)", "Teneligliptin 20 mg\n(Tendia 20)", "Metformin (eGFR<30)\nGlibenclamide"],
["Fatty Liver (NASH)", "Metformin + Pioglitazone\n(Pioz MF / Glizone M)", "Metformin + SGLT2i\n(Udapa M)", "None specific"],
["Overweight", "Metformin + Dapagliflozin\n(Udapa M / Oxra Met)", "Metformin + Semaglutide\n(Ozempic, if afford)", "Pioglitazone\n(weight gain)"],
["CKD moderate\n(eGFR 30–60)", "Metformin (low dose) +\nLinagliptin (Ondero Met)", "Teneligliptin (Tendia)\n+ Insulin if needed", "Metformin high dose\nGlibenclamide"],
["Irregular meals\n(skips often)", "Metformin + Repaglinide\n(Eurepa MF)", "Metformin + DPP4\n(Galvus Met)", "Long-acting SU (hypo risk)"],
["HbA1c > 9%\n(very poor control)", "Triple oral OR\nStart Insulin + Metformin", "Met + Glim 2 + Pioglitazone\n(Tribet 2)", "Delay treatment"],
["Cannot take Metformin\n(severe gastric)", "Sitagliptin + Dapagliflozin\n(Sitara D / Istamet D)", "Glimepiride + Voglibose\n(Volix 2 / Voglistar G 2)", "Metformin"],
]
story.append(drug_table(
qr_data[0], qr_data[1:],
[3.5*cm, 5*cm, 4.5*cm, 4*cm],
header_bg=C_BLUE, alt1=C_LBLUE, alt2=colors.white
))
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 7 – DRUGS TO NEVER COMBINE / IMPORTANT RULES
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 7: IMPORTANT RULES EVERY DOCTOR MUST KNOW", C_RED))
story.append(spacer(0.15))
rules_data = [
["Rule", "Reason"],
["Never combine TWO sulfonylureas\n(e.g. Glimepiride + Glipizide + Gliclazide)", "Same class – no extra benefit, doubled hypoglycemia risk"],
["Never combine TWO SGLT2 inhibitors\n(e.g. Dapagliflozin + Empagliflozin)", "No added benefit, increases DKA and UTI risk"],
["Never combine TWO DPP4 inhibitors\n(e.g. Sitagliptin + Vildagliptin)", "No extra effect, wasted cost"],
["Metformin: STOP if eGFR < 30\nor before contrast CT scan", "Risk of lactic acidosis. Resume 48 hrs after contrast."],
["SGLT2 inhibitors: STOP before surgery\nor prolonged fasting (> 24 hrs)", "Risk of euglycemic DKA (sugar normal but acid in blood)"],
["Pioglitazone: NEVER in heart failure,\nbladder cancer history", "Worsens fluid retention; possible bladder cancer link"],
["Glibenclamide (Daonil): AVOID in\nelderly, CKD, heart disease", "Very long-acting, severe unpredictable hypoglycemia"],
["Repaglinide / Nateglinide: SKIP DOSE\nif patient is skipping meal", "These work only when food is taken – otherwise hypo"],
["Always take SGLT2 inhibitors\nin MORNING not at night", "Causes increased urination – disturbs sleep if taken late"],
["Voglibose: must take at FIRST BITE\nof food, not before or after", "Works by slowing carb digestion at the time of eating"],
]
story.append(drug_table(
rules_data[0], rules_data[1:],
[8.5*cm, 8.5*cm],
header_bg=C_RED, alt1=C_LRED, alt2=colors.white
))
story.append(spacer(0.5))
# ════════════════════════════════════════════════════════════════
# SECTION 8 – PATIENT INSTRUCTIONS (SIMPLE)
# ════════════════════════════════════════════════════════════════
story.append(sec_header("SECTION 8: SIMPLE PATIENT INSTRUCTIONS", C_GREEN))
story.append(spacer(0.15))
inst_data = [
["Drug Group", "Take It When?", "Common Brand", "Side Effects to Watch"],
["Metformin", "With food (to reduce nausea)\nMorning + Night", "Glycomet 500\nGlucophage 500", "Nausea, loose motions\n(settles in 2 weeks)"],
["Glimepiride\nGliclazide\nGlipizide\n(Sulfonylureas)", "With FIRST MEAL of the day\n(breakfast)\nDO NOT skip meal", "Amaryl 1/2\nGlizid 80\nGlynase 5", "Low sugar (dizziness, sweating)\nWeight gain"],
["Sitagliptin\nVildagliptin\nTeneligliptin\nLinagliptin\n(DPP4 inhibitors)", "Any time, with or without food\n(Vilda – twice daily)", "Januvia 100\nGalvus 50\nTendia 20\nOndero 5", "Generally very safe\nRare: joint pain, runny nose"],
["Dapagliflozin\nEmpagliflozin\nRemogliflozin\n(SGLT2 inhibitors)", "MORNING only with food\nDrink plenty of water (3–4 L/day)", "Forxiga 10\nJardiance 10\nRemo 100", "Frequent urination\nUTI/fungal infection\nDo not take if fasting/surgery"],
["Pioglitazone", "Once daily with food", "Pioz 15/30\nActos 15", "Swelling in legs\nWeight gain\nBladder discomfort (long term)"],
["Voglibose", "At VERY FIRST BITE of food", "Volix 0.3\nVolibo 0.3", "Gas, bloating, loose stools\n(common but harmless)"],
["Repaglinide", "15 min BEFORE each meal\nSkip if skipping meal", "Eurepa 0.5/1/2\nRegan 0.5/1", "Low sugar if meal skipped"],
["Insulin (Basal)\nGlargine / Degludec", "Fixed time every night\n(Glargine: bedtime)\n(Degludec: any fixed time)", "Lantus / Toujeo\nTresiba / Basalin", "Injection site pain\nLow sugar if dose too high\nKeep sugar biscuits ready"],
]
story.append(drug_table(
inst_data[0], inst_data[1:],
[3.5*cm, 3.5*cm, 3.5*cm, 6.5*cm],
header_bg=C_GREEN, alt1=C_LGREEN, alt2=colors.white
))
story.append(spacer(0.4))
# ── FOOTER NOTE ────────────────────────────────────────────────
footer = Table([[Paragraph(
"<b>Disclaimer:</b> This guide is for doctor reference and patient education only. "
"Drug doses must be individualized. Always check for contraindications and drug interactions. "
"Prices are approximate 2025-2026 Indian market rates and vary by state and pharmacy. "
"Consult a qualified physician before starting, stopping, or changing any medication.",
style("FT", fontSize=8, fontName="Helvetica-Oblique", textColor=C_MID, leading=11,
alignment=TA_JUSTIFY))]],
colWidths=[W - 3*cm])
footer.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_GREY),
("BOX", (0,0), (-1,-1), 0.5, C_MID),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(footer)
# ── BUILD ────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved: {OUTPUT}")
cd /home/daytona/workspace/diabetes-pdf && python3 generate_pdf.py
ls -lh /home/daytona/workspace/diabetes-pdf/Diabetes_Drug_Guide.pdf
Diabetes Drug Guide
PDF Document · PDF
| Section | Content |
|---|---|
| 🟦 Blood Sugar Targets | Normal vs diabetic vs elderly targets |
| 🟦 Section 1 | Which drug for only fasting high / only PP high / both high |
| 🔴 Section 2 | Heart disease patients - what to use, what to AVOID |
| 🟣 Section 3 | Elderly patients (65+) - safe choices only |
| 🟢 Section 4 | Budget patients - cheapest combos + Jan Aushadhi tip |
| 🟡 Section 5 | Patients who can afford all - best evidence-based regimens |
| 🟦 Section 6 | Quick decision table - all scenarios at a glance |
| 🔴 Section 7 | Rules every doctor must know (what NOT to combine) |
| 🟢 Section 8 | Simple patient instructions per drug group |