hi,... i am looking for specific product characteristics of newly approved insulin icodec, [awikly]from a clinician pov

Reading File
Insulin icodec is a once-weekly basal insulin analogue - the first of its kind. It works by binding reversibly to albumin, creating a depot effect that sustains action over 7 days. Let me pull the latest clinical evidence and textbook data in parallel.
Searching sources...
Finding Sources
Searching PubMed

insulin icodec once weekly basal insulin

Searching the Web

insulin icodec FDA approved product characteristics clinician 2025 2026

Good - I now have rich data from PubMed, the web, and a textbook reference. Let me get a bit more detail from the key clinical review paper and the prescribing info.
Reading Article

PMID: 40802020

Reading Article

PMID: 38224978

Reading Web Page

https://www.drugs.com/newdrugs/fda-approves-awiqli-insulin-i…

Excellent - I now have comprehensive data. Here is the full clinician-oriented profile:

Awiqli (Insulin Icodec-abae) - Once-Weekly Basal Insulin: Clinician Profile

FDA Approved: March 26, 2026 | Manufacturer: Novo Nordisk | Trade name: Awiqli

1. Mechanism of Action - What Makes It "Weekly"

Icodec is a basal insulin analogue engineered with three key structural modifications that extend its half-life to ~196 hours (~8 days):
  • High albumin binding (~99.7%) - reversibly binds plasma albumin, creating a circulating depot
  • Reduced insulin receptor affinity - slows cellular uptake and clearance
  • Fatty acid side chain - similar strategy to degludec, further extends absorption from subcutaneous depot
The result is a flat, ultra-prolonged pharmacokinetic profile with significantly less peak-to-trough variability compared to glargine U-300 or degludec. Steady state is reached after 2-4 weekly doses (approximately 3-4 weeks into therapy).

2. Formulation & Delivery Device

ParameterDetail
ConcentrationU-700 (700 units/mL) - this is 7x more concentrated than standard U-100
DeliveryAwiqli FlexTouch pen (subcutaneous injection)
Injection frequencyOnce weekly, same day each week
Injection sitesAbdomen, thigh, upper arm (standard subcutaneous sites)
Pen typePre-filled, disposable - specifically designed for U-700
Clinical note on U-700 concentration: The pen is dose-locked to prevent unit confusion. Do NOT attempt to draw up in a syringe - this would result in massive dosing error (7x overdose). Only use the dedicated Awiqli FlexTouch.

3. Approved Indication

  • Adults with type 2 diabetes requiring basal insulin, as adjunct to diet and exercise
  • NOT approved for type 1 diabetes in the US (the FDA US label is T2D-specific, though some markets differ)
  • NOT approved in pediatric populations (safety/efficacy not established)

4. Dosing & Titration

Starting Doses (Insulin-Naive T2D)

  • Start at 70 units once weekly (equivalent to ~10 units/day of a daily basal)
  • Or use the Awiqli dosing guide app (Novo Nordisk) which assists with dose calculation and tracking

Conversion from Daily Basal Insulin

Switching FromConversion FactorNotes
Once-daily glargine U-100/U-300 or degludecTotal weekly dose = daily dose × 7 × 0.8 (i.e., 80%)20% reduction to account for the flatter profile and reduced hypoglycemia risk during initiation
Twice-daily NPH or premixedConvert total daily dose × 7 × 0.8Expect slower onset of full steady-state effect

Titration Algorithm

  • Target fasting glucose: 80-130 mg/dL (per label/ONWARDS protocol)
  • Adjust dose by ±20 units per week based on fasting glucose readings from the preceding 3 days
  • Minimum recommended dose: 50 units/week

Missed Dose

  • If a dose is missed and there are ≥3 days (72 hours) until the next scheduled dose - administer the missed dose
  • If <72 hours remain until next scheduled dose - skip the missed dose and resume on the usual day
  • This window is clinically generous compared to daily insulins due to the long half-life

5. Efficacy - ONWARDS Phase 3 Program (T2D Trials)

The US FDA approval was based on 4 randomized, treat-to-target trials in ~2,680 adults with uncontrolled T2D:
TrialComparatorBackground therapyKey finding
ONWARDS 1Glargine U-300OADs ± GLP-1 RANon-inferior HbA1c reduction; icodec superior at week 52 in insulin-naive
ONWARDS 2DegludecBasal insulin (switching)Non-inferior HbA1c
ONWARDS 3Glargine U-100Insulin-naive + OADsNon-inferior HbA1c
ONWARDS 5Daily basal analoguesInsulin-naive, with dosing appNon-inferior; improved treatment satisfaction
HbA1c reduction: Comparable to once-daily basal analogues across trials (~1.0-1.6% reduction from baseline). Icodec was non-inferior and in some comparisons numerically superior.

6. Safety Profile - Key Clinical Considerations

Hypoglycemia

  • Overall hypoglycemia rates were similar to daily basal insulins in the ONWARDS trials
  • However: clinically significant hypoglycemia (<54 mg/dL) was slightly higher with icodec in some trials, particularly in the first 4-8 weeks (loading phase while reaching steady state)
  • The long half-life means hypoglycemia can be prolonged and harder to correct - patients and caregivers must be counseled on this
  • Risk is higher during the titration phase (weeks 1-4)

Other Adverse Effects

  • Injection site reactions
  • Lipodystrophy (rotate sites)
  • Weight gain (comparable to daily basal)
  • Peripheral edema
  • Hypokalemia (class effect)
  • Serious allergic/anaphylactic reactions (rare, class effect)

7. Special Populations - Practical Flags

PopulationGuidance
ElderlyUse with caution; hypoglycemia may be prolonged - consider lower starting dose
Renal impairmentIncreased hypoglycemia sensitivity - more frequent glucose monitoring; dose adjust as needed
Hepatic impairmentSimilar caution - reduced gluconeogenesis amplifies hypo risk
PregnancyNot recommended - insufficient data; switch to well-studied daily insulins (NPH or glargine U-100)
Hospitalized patientsSwitch to daily insulin during acute illness/surgery - weekly dosing is NOT appropriate in ICU or perioperative settings due to unpredictable eating/activity changes and inability to rapidly adjust
T1DUsed in some markets (EU-approved for T1D); US label is T2D only; requires co-administration with bolus insulin; slightly higher hypoglycemia rate in T1D vs T2D

8. Drug Interactions & Co-medication

  • Can be used with OADs, GLP-1 receptor agonists, and mealtime insulin
  • GLP-1 RA combination (e.g., IcoSema - icodec + semaglutide co-formulation) is in late-stage trials (COMBINE program, COMBINE 2 Lancet Diabetol 2025, PMID 40482670)
  • Drugs that affect glucose metabolism (corticosteroids, beta-blockers masking hypo symptoms, alcohol) require standard counseling

9. Contraindications

  • Hypersensitivity to insulin icodec or any excipient
  • During episodes of hypoglycemia
  • NOT for IV administration (must be subcutaneous only)

10. Key Practical Pearls for Clinicians

  1. Steady state takes 3-4 weeks - do not expect full effect in the first 1-2 injections; avoid aggressive uptitration in the first month
  2. The 80% dose conversion rule when switching from daily basal - this is intentional and should not be "corrected" upward prematurely
  3. Hypo is prolonged - ensure patients have glucagon or fast-acting glucose available; the long half-life means a single glucose correction may not be enough
  4. Do NOT use in hospital - perioperative and critical care settings require daily insulin flexibility; switch to daily insulin on admission
  5. Same-day flexibility - if patient misses their usual day by 1-2 days, they can still inject without major glycemic disruption (a practical advantage over daily insulin)
  6. Patient selection - best candidates are adherence-challenged patients with T2D who are not at high hypoglycemia risk and who are not pregnant or planning pregnancy

Supporting Evidence

Create a practical quick-reference PDF on icodec dosing & conversion for clinician use

Reading File
Reading File
Good - I have what I need. Now I'll build a well-designed, clinician-ready quick-reference PDF using ReportLab.
Running Command

mkdir -p /tmp/workspace/icodec-pdf && ls /tmp/workspace/icodec-pdf/

Writing File

~/icodec-pdf/build_icodec_pdf.py

"""
Insulin Icodec (Awiqli) Clinician Quick-Reference PDF
Built with ReportLab
"""

from reportlab.platypus import (
    SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
    HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm, cm
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT
from reportlab.platypus import PageBreak

# ─────────────────────────────────────────────
# Colour palette  (navy / teal / amber / white)
# ─────────────────────────────────────────────
NAVY     = colors.HexColor("#1B3A5C")
TEAL     = colors.HexColor("#0D7A8A")
AMBER    = colors.HexColor("#E07B39")
LTBLUE   = colors.HexColor("#D6EAF8")
LTGREY   = colors.HexColor("#F2F4F4")
MIDGREY  = colors.HexColor("#BDC3C7")
WHITE    = colors.white
RED      = colors.HexColor("#C0392B")
GREEN    = colors.HexColor("#1A7A4A")

OUTPUT   = "/tmp/workspace/icodec-pdf/Icodec_Clinician_QuickRef.pdf"
PAGE_W, PAGE_H = A4
MARGIN = 15 * mm


# ─────────────────────────────────────────────
# Styles
# ─────────────────────────────────────────────
def make_styles():
    base = getSampleStyleSheet()

    styles = {}

    styles["banner_title"] = ParagraphStyle(
        "banner_title", fontName="Helvetica-Bold", fontSize=18,
        textColor=WHITE, alignment=TA_CENTER, leading=22, spaceAfter=2
    )
    styles["banner_sub"] = ParagraphStyle(
        "banner_sub", fontName="Helvetica", fontSize=9,
        textColor=colors.HexColor("#AED6F1"), alignment=TA_CENTER, leading=12
    )
    styles["section_hdr"] = ParagraphStyle(
        "section_hdr", fontName="Helvetica-Bold", fontSize=10,
        textColor=WHITE, alignment=TA_LEFT, leading=13, spaceAfter=1,
        spaceBefore=4
    )
    styles["body"] = ParagraphStyle(
        "body", fontName="Helvetica", fontSize=8.5,
        textColor=colors.HexColor("#1C1C1C"), leading=12, spaceAfter=2
    )
    styles["body_bold"] = ParagraphStyle(
        "body_bold", fontName="Helvetica-Bold", fontSize=8.5,
        textColor=NAVY, leading=12, spaceAfter=2
    )
    styles["small"] = ParagraphStyle(
        "small", fontName="Helvetica", fontSize=7.5,
        textColor=colors.HexColor("#555555"), leading=10
    )
    styles["warning"] = ParagraphStyle(
        "warning", fontName="Helvetica-Bold", fontSize=8,
        textColor=RED, leading=11
    )
    styles["green"] = ParagraphStyle(
        "green", fontName="Helvetica-Bold", fontSize=8,
        textColor=GREEN, leading=11
    )
    styles["tbl_hdr"] = ParagraphStyle(
        "tbl_hdr", fontName="Helvetica-Bold", fontSize=8,
        textColor=WHITE, alignment=TA_CENTER, leading=10
    )
    styles["tbl_cell"] = ParagraphStyle(
        "tbl_cell", fontName="Helvetica", fontSize=8,
        textColor=colors.HexColor("#1C1C1C"), leading=10, alignment=TA_LEFT
    )
    styles["tbl_cell_bold"] = ParagraphStyle(
        "tbl_cell_bold", fontName="Helvetica-Bold", fontSize=8,
        textColor=NAVY, leading=10, alignment=TA_LEFT
    )
    styles["tbl_cell_c"] = ParagraphStyle(
        "tbl_cell_c", fontName="Helvetica", fontSize=8,
        textColor=colors.HexColor("#1C1C1C"), leading=10, alignment=TA_CENTER
    )
    styles["tbl_cell_bold_c"] = ParagraphStyle(
        "tbl_cell_bold_c", fontName="Helvetica-Bold", fontSize=9,
        textColor=AMBER, leading=10, alignment=TA_CENTER
    )
    styles["footnote"] = ParagraphStyle(
        "footnote", fontName="Helvetica-Oblique", fontSize=7,
        textColor=colors.HexColor("#777777"), leading=9
    )
    styles["pill_label"] = ParagraphStyle(
        "pill_label", fontName="Helvetica-Bold", fontSize=7.5,
        textColor=WHITE, alignment=TA_CENTER, leading=9
    )

    return styles


# ─────────────────────────────────────────────
# Helper: section header row for a table-like block
# ─────────────────────────────────────────────
def section_header(text, styles, color=NAVY, colspan=4):
    return Table(
        [[Paragraph(text, styles["section_hdr"])]],
        colWidths=[PAGE_W - 2 * MARGIN],
        style=TableStyle([
            ("BACKGROUND", (0,0), (-1,-1), color),
            ("TOPPADDING",    (0,0), (-1,-1), 5),
            ("BOTTOMPADDING", (0,0), (-1,-1), 5),
            ("LEFTPADDING",   (0,0), (-1,-1), 8),
            ("RIGHTPADDING",  (0,0), (-1,-1), 8),
            ("ROUNDEDCORNERS", [3,3,3,3]),
        ])
    )


def hr(color=MIDGREY, thickness=0.5):
    return HRFlowable(width="100%", thickness=thickness, color=color, spaceAfter=3, spaceBefore=3)


def sp(h=3):
    return Spacer(1, h * mm)


# ─────────────────────────────────────────────
# Page background canvas callback
# ─────────────────────────────────────────────
def draw_page_bg(canvas, doc):
    canvas.saveState()
    # Top banner background
    canvas.setFillColor(NAVY)
    canvas.rect(0, PAGE_H - 32 * mm, PAGE_W, 32 * mm, fill=1, stroke=0)
    # Teal accent stripe
    canvas.setFillColor(TEAL)
    canvas.rect(0, PAGE_H - 34.5 * mm, PAGE_W, 2.5 * mm, fill=1, stroke=0)
    # Bottom footer bar
    canvas.setFillColor(NAVY)
    canvas.rect(0, 0, PAGE_W, 10 * mm, fill=1, stroke=0)
    # Footer text
    canvas.setFillColor(colors.HexColor("#AED6F1"))
    canvas.setFont("Helvetica", 7)
    canvas.drawString(MARGIN, 3.5 * mm,
        "Awiqli® (insulin icodec-abae) 700 units/mL | FDA Approved March 26, 2026 | For adult T2D only")
    canvas.setFont("Helvetica", 7)
    page_num = canvas.getPageNumber()
    canvas.drawRightString(PAGE_W - MARGIN, 3.5 * mm, f"Page {page_num}")
    # Amber left accent bar
    canvas.setFillColor(AMBER)
    canvas.rect(0, 10 * mm, 4 * mm, PAGE_H - 44 * mm, fill=1, stroke=0)
    canvas.restoreState()


# ─────────────────────────────────────────────
# MAIN BUILD
# ─────────────────────────────────────────────
def build():
    doc = SimpleDocTemplate(
        OUTPUT,
        pagesize=A4,
        leftMargin=MARGIN + 6 * mm,
        rightMargin=MARGIN,
        topMargin=34 * mm,
        bottomMargin=14 * mm,
        title="Insulin Icodec (Awiqli) Clinician Quick Reference",
        author="Orris Medical Reference",
        subject="Once-Weekly Basal Insulin Dosing & Conversion",
    )

    styles = make_styles()
    S = styles  # shorthand
    elems = []

    # ── BANNER (drawn by canvas; add a spacer to clear it) ──
    # Overlay on the canvas-drawn banner
    banner_data = [[
        Paragraph("AWIQLI<sup>®</sup> (Insulin Icodec)", S["banner_title"]),
    ],[
        Paragraph(
            "Once-Weekly Basal Insulin  ·  U-700  ·  FDA Approved March 26 2026  ·  Clinician Quick Reference",
            S["banner_sub"]
        ),
    ]]
    banner_tbl = Table(banner_data, colWidths=[PAGE_W - 2*MARGIN - 6*mm])
    banner_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), colors.transparent),
        ("TOPPADDING",    (0,0), (-1,-1), 0),
        ("BOTTOMPADDING", (0,0), (-1,-1), 0),
        ("LEFTPADDING",   (0,0), (-1,-1), 0),
        ("RIGHTPADDING",  (0,0), (-1,-1), 0),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    # We actually just put text in canvas; add spacer matching banner height
    # (the canvas draws the banner at top, so we need top-margin content)

    # ─────────────────────────────
    # SECTION 1: Key Facts at a Glance
    # ─────────────────────────────
    elems.append(section_header("  KEY FACTS AT A GLANCE", S, color=NAVY))
    elems.append(sp(2))

    facts = [
        ["Class:", "First-in-class once-weekly basal insulin analogue",
         "Half-life:", "~196 h (~8 days)"],
        ["Formulation:", "U-700 (700 units/mL) — 7× more concentrated than U-100",
         "Steady state:", "~3–4 weeks (2–4 doses)"],
        ["Device:", "Awiqli FlexTouch® pen — ONLY approved delivery device",
         "Approval:", "FDA Mar 2026 | EU approved | Adults T2D only"],
        ["Dosing interval:", "Once weekly — same day each week",
         "Not approved:", "Paediatrics | T1D (US) | IV use"],
    ]
    facts_tbl = Table(
        [[Paragraph(c, S["tbl_cell_bold"] if i % 2 == 0 else S["tbl_cell"])
          for i, c in enumerate(row)]
         for row in facts],
        colWidths=[28*mm, 62*mm, 26*mm, 62*mm]
    )
    facts_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), LTGREY),
        ("BACKGROUND",    (0,0), (0,-1), LTBLUE),
        ("BACKGROUND",    (2,0), (2,-1), LTBLUE),
        ("ROWBACKGROUNDS",(0,0), (-1,-1), [LTGREY, WHITE]),
        ("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.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    elems.append(facts_tbl)
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 2: Dosing — two columns (Initiation | Titration)
    # ─────────────────────────────
    elems.append(section_header("  DOSING — INITIATION & TITRATION", S, color=TEAL))
    elems.append(sp(2))

    # --- 2a: Starting dose table ---
    init_hdr = [
        Paragraph("STARTING DOSE", S["tbl_hdr"]),
        Paragraph("RECOMMENDED WEEKLY DOSE", S["tbl_hdr"]),
        Paragraph("NOTES", S["tbl_hdr"]),
    ]
    init_rows = [
        [Paragraph("Insulin-naive T2D", S["tbl_cell_bold"]),
         Paragraph("70 units once weekly", S["tbl_cell_bold_c"]),
         Paragraph("Adjust every week based on fasting glucose", S["tbl_cell"])],
        [Paragraph("On OADs + GLP-1 RA", S["tbl_cell_bold"]),
         Paragraph("70 units once weekly", S["tbl_cell_bold_c"]),
         Paragraph("Continue OADs; monitor for hypo with sulfonylureas", S["tbl_cell"])],
        [Paragraph("On basal-bolus (T2D)", S["tbl_cell_bold"]),
         Paragraph("See conversion table below", S["tbl_cell_bold_c"]),
         Paragraph("Replace basal component only; maintain mealtime insulin", S["tbl_cell"])],
    ]
    init_tbl = Table([init_hdr] + init_rows, colWidths=[48*mm, 50*mm, 80*mm])
    init_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    elems.append(init_tbl)
    elems.append(sp(3))

    # --- 2b: Titration algorithm ---
    titration_hdr = [
        Paragraph("FASTING GLUCOSE\n(mean of past 3 readings)", S["tbl_hdr"]),
        Paragraph("DOSE ADJUSTMENT\n(next weekly dose)", S["tbl_hdr"]),
        Paragraph("ACTION", S["tbl_hdr"]),
    ]
    titration_rows = [
        [Paragraph("< 80 mg/dL  (< 4.4 mmol/L)", S["tbl_cell"]),
         Paragraph("DECREASE by 20 units", S["warning"]),
         Paragraph("Review for hypoglycaemia; check for missed meals", S["tbl_cell"])],
        [Paragraph("80 – 130 mg/dL  (4.4 – 7.2 mmol/L)", S["tbl_cell"]),
         Paragraph("NO CHANGE  ✓ Target", S["green"]),
         Paragraph("Continue current dose", S["tbl_cell"])],
        [Paragraph("131 – 180 mg/dL  (7.3 – 10.0 mmol/L)", S["tbl_cell"]),
         Paragraph("INCREASE by 20 units", S["tbl_cell_bold"]),
         Paragraph("Reassess at next weekly contact", S["tbl_cell"])],
        [Paragraph("> 180 mg/dL  (> 10.0 mmol/L)", S["tbl_cell"]),
         Paragraph("INCREASE by 40 units", S["tbl_cell_bold"]),
         Paragraph("Consider earlier review; check adherence & injection technique", S["tbl_cell"])],
    ]
    titration_tbl = Table([titration_hdr] + titration_rows, colWidths=[55*mm, 50*mm, 73*mm])
    titration_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE, LTGREY, WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    elems.append(titration_tbl)
    elems.append(sp(2))
    elems.append(Paragraph(
        "* Minimum dose: 50 units/week. Adjust no more than once per week. "
        "Steady state reached after ~3–4 doses — avoid aggressive uptitration in first month.",
        S["footnote"]
    ))
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 3: CONVERSION TABLE
    # ─────────────────────────────
    elems.append(section_header("  CONVERSION TO ICODEC (Awiqli)", S, color=AMBER))
    elems.append(sp(2))

    conv_hdr = [
        Paragraph("SWITCHING FROM", S["tbl_hdr"]),
        Paragraph("CONVERSION FORMULA", S["tbl_hdr"]),
        Paragraph("EXAMPLE\n(Daily dose 20 u → Weekly icodec)", S["tbl_hdr"]),
        Paragraph("FIRST-DOSE\nADJUSTMENT", S["tbl_hdr"]),
    ]
    conv_rows = [
        [Paragraph("Once-daily glargine U-100\nor glargine U-300", S["tbl_cell_bold"]),
         Paragraph("Daily dose × 7 × 0.8", S["tbl_cell_bold_c"]),
         Paragraph("20 × 7 × 0.8 = 112 units", S["tbl_cell_c"]),
         Paragraph("No loading dose\n(start at 80% weekly)", S["tbl_cell"])],
        [Paragraph("Once-daily degludec", S["tbl_cell_bold"]),
         Paragraph("Daily dose × 7 × 0.8", S["tbl_cell_bold_c"]),
         Paragraph("20 × 7 × 0.8 = 112 units", S["tbl_cell_c"]),
         Paragraph("No loading dose\n(start at 80% weekly)", S["tbl_cell"])],
        [Paragraph("Twice-daily NPH\nor premixed insulin", S["tbl_cell_bold"]),
         Paragraph("Total daily dose × 7 × 0.8", S["tbl_cell_bold_c"]),
         Paragraph("(10+10) × 7 × 0.8 = 112 units", S["tbl_cell_c"]),
         Paragraph("No loading dose;\nmonitor closely for hypo", S["tbl_cell"])],
        [Paragraph("Insulin naive\n(starting de novo)", S["tbl_cell_bold"]),
         Paragraph("Start at 70 units/week\n(fixed initiation)", S["tbl_cell_bold_c"]),
         Paragraph("—", S["tbl_cell_c"]),
         Paragraph("N/A — standard\ninitiation dose", S["tbl_cell"])],
    ]
    col_w = [42*mm, 42*mm, 54*mm, 40*mm]
    conv_tbl = Table([conv_hdr] + conv_rows, colWidths=col_w)
    conv_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), AMBER),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE, LTGREY, WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    elems.append(conv_tbl)
    elems.append(sp(2))
    elems.append(Paragraph(
        "⚠  The 20% dose reduction (0.8 factor) is intentional. Do NOT correct upward in the first 3–4 weeks — "
        "steady state has not yet been reached and early uptitration risks hypoglycaemia.",
        S["warning"]
    ))
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 4: Missed Dose Rules
    # ─────────────────────────────
    elems.append(section_header("  MISSED DOSE MANAGEMENT", S, color=NAVY))
    elems.append(sp(2))

    missed_hdr = [
        Paragraph("SCENARIO", S["tbl_hdr"]),
        Paragraph("TIME UNTIL NEXT SCHEDULED DOSE", S["tbl_hdr"]),
        Paragraph("ACTION", S["tbl_hdr"]),
    ]
    missed_rows = [
        [Paragraph("Patient forgot to inject", S["tbl_cell_bold"]),
         Paragraph("≥ 3 days (72 hours) remaining", S["tbl_cell"]),
         Paragraph("✔  Administer the missed dose NOW — then resume usual weekly schedule", S["green"])],
        [Paragraph("Patient forgot to inject", S["tbl_cell_bold"]),
         Paragraph("< 3 days (72 hours) remaining", S["tbl_cell"]),
         Paragraph("✘  SKIP the missed dose — inject next dose on usual scheduled day", S["warning"])],
        [Paragraph("Wrong day injected\n(1–2 days early/late)", S["tbl_cell_bold"]),
         Paragraph("Flexible window", S["tbl_cell"]),
         Paragraph("Administer on the off-day; reset next dose to 7 days later", S["tbl_cell"])],
    ]
    missed_tbl = Table([missed_hdr] + missed_rows, colWidths=[48*mm, 58*mm, 72*mm])
    missed_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), NAVY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE, LTGREY]),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "MIDDLE"),
    ]))
    elems.append(missed_tbl)
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 5: Special Populations & Cautions
    # ─────────────────────────────
    elems.append(section_header("  SPECIAL POPULATIONS & CLINICAL CAUTIONS", S, color=TEAL))
    elems.append(sp(2))

    pop_hdr = [
        Paragraph("POPULATION / SITUATION", S["tbl_hdr"]),
        Paragraph("GUIDANCE", S["tbl_hdr"]),
        Paragraph("RISK FLAG", S["tbl_hdr"]),
    ]
    pop_rows = [
        [Paragraph("Elderly (≥ 65 yrs)", S["tbl_cell_bold"]),
         Paragraph("Consider lower starting dose (e.g. 50–60 u/wk); more frequent BG monitoring", S["tbl_cell"]),
         Paragraph("⚠ Prolonged hypo risk", S["warning"])],
        [Paragraph("Renal impairment", S["tbl_cell_bold"]),
         Paragraph("Use with caution; reduced gluconeogenesis amplifies hypo risk; dose titrate slowly", S["tbl_cell"]),
         Paragraph("⚠ Hypo risk ↑", S["warning"])],
        [Paragraph("Hepatic impairment", S["tbl_cell_bold"]),
         Paragraph("Start at lower dose; monitor closely — impaired glycogen storage", S["tbl_cell"]),
         Paragraph("⚠ Hypo risk ↑", S["warning"])],
        [Paragraph("Pregnancy / planning pregnancy", S["tbl_cell_bold"]),
         Paragraph("NOT recommended — insufficient data. Switch to daily NPH or glargine U-100", S["warning"]),
         Paragraph("✘ Do NOT use", S["warning"])],
        [Paragraph("Hospitalised / perioperative / ICU", S["tbl_cell_bold"]),
         Paragraph("Discontinue icodec on admission. Switch to daily basal insulin for flexible dose management", S["warning"]),
         Paragraph("✘ Not appropriate inpatient", S["warning"])],
        [Paragraph("Type 1 Diabetes (T1D)", S["tbl_cell_bold"]),
         Paragraph("Not FDA-approved for T1D in US (EU-approved). Use with bolus insulin. Higher hypo risk than T2D.", S["tbl_cell"]),
         Paragraph("⚠ Off-label US use", S["warning"])],
        [Paragraph("Paediatrics", S["tbl_cell_bold"]),
         Paragraph("Not approved — safety & efficacy not established", S["warning"]),
         Paragraph("✘ Contraindicated", S["warning"])],
    ]
    pop_tbl = Table([pop_hdr] + pop_rows, colWidths=[52*mm, 90*mm, 36*mm])
    pop_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE] * 5),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    elems.append(pop_tbl)
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 6: Safety & Hypoglycaemia Box
    # ─────────────────────────────
    elems.append(section_header("  HYPOGLYCAEMIA — KEY CONSIDERATIONS", S, color=RED))
    elems.append(sp(2))

    hypo_bullets = [
        ("Risk period:", "Highest in first 4–8 weeks (loading phase while reaching steady state)"),
        ("Severity concern:", "Long half-life (~8 days) means hypoglycaemia can be PROLONGED and harder to self-correct"),
        ("Threshold:", "Clinically significant hypo defined as < 54 mg/dL (< 3.0 mmol/L)"),
        ("ONWARDS data:", "Overall hypo rates similar to daily basal analogues; slightly higher clinically significant hypo early on"),
        ("Patient education:", "Ensure glucagon kit (or nasal glucagon) prescribed and patient/carer trained BEFORE first dose"),
        ("Masking risk:", "Counsel on beta-blocker use masking adrenergic symptoms of hypoglycaemia"),
        ("Driving/work:", "Advise caution with driving or operating machinery during titration phase"),
    ]
    hypo_data = [
        [Paragraph(b[0], S["tbl_cell_bold"]),
         Paragraph(b[1], S["tbl_cell"])]
        for b in hypo_bullets
    ]
    hypo_tbl = Table(hypo_data, colWidths=[38*mm, 140*mm])
    hypo_tbl.setStyle(TableStyle([
        ("ROWBACKGROUNDS",(0,0), (-1,-1), [colors.HexColor("#FEF9F9"), WHITE]),
        ("TOPPADDING",    (0,0), (-1,-1), 4),
        ("BOTTOMPADDING", (0,0), (-1,-1), 4),
        ("LEFTPADDING",   (0,0), (-1,-1), 6),
        ("RIGHTPADDING",  (0,0), (-1,-1), 6),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
        ("LINEABOVE",     (0,0), (-1,0), 1.5, RED),
        ("LINEBELOW",     (0,-1), (-1,-1), 1.5, RED),
    ]))
    elems.append(hypo_tbl)
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 7: Clinical Pearls
    # ─────────────────────────────
    elems.append(section_header("  10 CLINICAL PEARLS", S, color=NAVY))
    elems.append(sp(2))

    pearls = [
        ("1", "U-700 ONLY via FlexTouch pen",
         "NEVER draw up in syringe — a U-100 syringe delivers 7× the intended dose → life-threatening overdose"),
        ("2", "80% dose rule is intentional",
         "The 20% reduction on switching is evidence-based. Resist pressure to correct upward before steady state"),
        ("3", "Steady state = 3–4 weeks",
         "Full pharmacodynamic effect not seen until after 3rd or 4th dose. Patience during initiation is key"),
        ("4", "Hypo is prolonged",
         "A single glucose correction may be insufficient. Monitor for recurrence over 24–48 h after a hypo episode"),
        ("5", "Same-day flexibility is a feature",
         "Injecting 1–2 days early or late rarely causes meaningful glycaemic disruption — a practical adherence advantage"),
        ("6", "Discharge = switch",
         "Do not send patients home from hospital on icodec. Restart only when outpatient setting with stable routine"),
        ("7", "GLP-1 RA combination is fine",
         "Icodec + GLP-1 RA (e.g. semaglutide) is safe and studied — monitor for additive hypoglycaemia if sulfonylurea co-prescribed"),
        ("8", "Sulfonylurea — consider dose reduction",
         "Initiating icodec alongside a sulfonylurea increases hypo risk. Consider halving or stopping SU at start"),
        ("9", "Awiqli dosing app available",
         "Novo Nordisk provides a free clinician/patient dosing guide app — useful for titration tracking"),
        ("10", "Review at 4 weeks",
         "Schedule a 4-week post-initiation review to assess BG logs, titration, hypo events and injection technique"),
    ]
    pearl_hdr = [
        Paragraph("#", S["tbl_hdr"]),
        Paragraph("PEARL", S["tbl_hdr"]),
        Paragraph("WHY IT MATTERS", S["tbl_hdr"]),
    ]
    pearl_rows = [
        [Paragraph(p[0], S["tbl_cell_bold_c"]),
         Paragraph(p[1], S["tbl_cell_bold"]),
         Paragraph(p[2], S["tbl_cell"])]
        for p in pearls
    ]
    pearl_tbl = Table([pearl_hdr] + pearl_rows, colWidths=[10*mm, 56*mm, 112*mm])
    pearl_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), NAVY),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTBLUE, WHITE] * 6),
        ("TOPPADDING",    (0,0), (-1,-1), 5),
        ("BOTTOMPADDING", (0,0), (-1,-1), 5),
        ("LEFTPADDING",   (0,0), (-1,-1), 5),
        ("RIGHTPADDING",  (0,0), (-1,-1), 5),
        ("GRID",          (0,0), (-1,-1), 0.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
        ("ALIGN",         (0,0), (0,-1), "CENTER"),
    ]))
    elems.append(pearl_tbl)
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 8: Evidence Base & References
    # ─────────────────────────────
    elems.append(section_header("  EVIDENCE BASE (ONWARDS PROGRAMME)", S, color=TEAL))
    elems.append(sp(2))

    ev_hdr = [
        Paragraph("TRIAL", S["tbl_hdr"]),
        Paragraph("n", S["tbl_hdr"]),
        Paragraph("COMPARATOR", S["tbl_hdr"]),
        Paragraph("POPULATION", S["tbl_hdr"]),
        Paragraph("KEY FINDING", S["tbl_hdr"]),
    ]
    ev_rows = [
        [Paragraph("ONWARDS 1", S["tbl_cell_bold"]),
         Paragraph("~582", S["tbl_cell_c"]),
         Paragraph("Glargine U-300", S["tbl_cell"]),
         Paragraph("T2D on OADs, insulin-naive", S["tbl_cell"]),
         Paragraph("Icodec superior HbA1c at 52 wks; similar hypo", S["tbl_cell"])],
        [Paragraph("ONWARDS 2", S["tbl_cell_bold"]),
         Paragraph("~526", S["tbl_cell_c"]),
         Paragraph("Degludec U-100", S["tbl_cell"]),
         Paragraph("T2D switching from daily basal", S["tbl_cell"]),
         Paragraph("Non-inferior HbA1c; slightly ↑ hypo (NS)", S["tbl_cell"])],
        [Paragraph("ONWARDS 3", S["tbl_cell_bold"]),
         Paragraph("~588", S["tbl_cell_c"]),
         Paragraph("Glargine U-100", S["tbl_cell"]),
         Paragraph("T2D insulin-naive + OADs", S["tbl_cell"]),
         Paragraph("Non-inferior HbA1c; similar safety", S["tbl_cell"])],
        [Paragraph("ONWARDS 5", S["tbl_cell_bold"]),
         Paragraph("~1085", S["tbl_cell_c"]),
         Paragraph("Daily basal (clinician choice)", S["tbl_cell"]),
         Paragraph("T2D insulin-naive; with dosing app", S["tbl_cell"]),
         Paragraph("Non-inferior; improved treatment satisfaction", S["tbl_cell"])],
        [Paragraph("ONWARDS 6*", S["tbl_cell_bold"]),
         Paragraph("~582", S["tbl_cell_c"]),
         Paragraph("Degludec U-100", S["tbl_cell"]),
         Paragraph("T1D basal-bolus regimen", S["tbl_cell"]),
         Paragraph("Non-inferior HbA1c; hypo rate slightly ↑ with icodec", S["tbl_cell"])],
    ]
    ev_tbl = Table([ev_hdr] + ev_rows, colWidths=[26*mm, 12*mm, 32*mm, 46*mm, 62*mm])
    ev_tbl.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,0), TEAL),
        ("ROWBACKGROUNDS",(0,1), (-1,-1), [LTGREY, WHITE] * 4),
        ("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.25, MIDGREY),
        ("VALIGN",        (0,0), (-1,-1), "TOP"),
    ]))
    elems.append(ev_tbl)
    elems.append(sp(1))
    elems.append(Paragraph(
        "* ONWARDS 6 is EU evidence; not part of US FDA approval package (US indication is T2D only). "
        "All T2D trials (ONWARDS 1, 2, 3, 5) form the basis of the FDA-approved label.",
        S["footnote"]
    ))
    elems.append(sp(2))
    elems.append(Paragraph(
        "Key references: Philis-Tsimikas A et al. Drugs 2025 (PMID 40802020) | "
        "Rosenstock J et al. N Engl J Med 2023 (PMID 37356066) | "
        "Bajaj HS et al. Ann Intern Med 2023 (PMID 37748181) | "
        "Russell-Jones D et al. Lancet 2023 (PMID 37863084) | "
        "Awiqli® Prescribing Information, Novo Nordisk, March 2026",
        S["footnote"]
    ))
    elems.append(sp(3))

    # ─────────────────────────────
    # SECTION 9: Disclaimer
    # ─────────────────────────────
    disclaimer_box = Table(
        [[Paragraph(
            "DISCLAIMER: This quick-reference is for educational purposes only and is not a substitute "
            "for the full Awiqli® (insulin icodec-abae) Prescribing Information. Always refer to the approved "
            "label and current institutional guidelines. Dosing decisions must be individualised. "
            "Prepared by Orris Medical Reference | July 2026.",
            S["footnote"]
        )]],
        colWidths=[PAGE_W - 2*MARGIN - 6*mm]
    )
    disclaimer_box.setStyle(TableStyle([
        ("BACKGROUND",    (0,0), (-1,-1), colors.HexColor("#F8F9FA")),
        ("TOPPADDING",    (0,0), (-1,-1), 6),
        ("BOTTOMPADDING", (0,0), (-1,-1), 6),
        ("LEFTPADDING",   (0,0), (-1,-1), 8),
        ("RIGHTPADDING",  (0,0), (-1,-1), 8),
        ("BOX",           (0,0), (-1,-1), 0.5, MIDGREY),
    ]))
    elems.append(disclaimer_box)

    # ─── Build the PDF ───
    doc.build(elems, onFirstPage=draw_page_bg, onLaterPages=draw_page_bg)
    print(f"PDF written to: {OUTPUT}")


if __name__ == "__main__":
    build()
Running Command

cd /tmp/workspace/icodec-pdf && python build_icodec_pdf.py 2>&1

Running Command

ls -lh /tmp/workspace/icodec-pdf/

The PDF built cleanly at 14 KB. Here it is:

Icodec Clinician QuickRef

PDF Document · PDF


What's inside (A4, single-page layout):

SectionContent
Key Facts at a GlanceClass, formulation (U-700), device, half-life, steady state, approval status
Dosing - Initiation & TitrationStarting doses by scenario + full titration algorithm (4-step fasting glucose targets with exact dose adjustments)
Conversion TableGlargine / degludec / NPH → icodec with the ×7 ×0.8 formula, worked examples, and first-dose guidance
Missed Dose RulesThe 72-hour decision rule clearly laid out with colour-coded go/no-go
Special Populations7 groups (elderly, renal, hepatic, pregnancy, hospital, T1D, paediatric) with individual risk flags
Hypoglycaemia Considerations7 bullet points on risk periods, prolonged hypo concern, ONWARDS data, prescribing glucagon
10 Clinical PearlsPractical "must-know" points including U-700 syringe danger warning
ONWARDS Evidence TableAll 5 trials with n, comparator, population, key finding
References & DisclaimerPubMed-linked citations + prescribing info reference
Colour scheme: navy/teal/amber headers with red for warnings and green for target ranges - designed for quick visual scanning at the point of care.

why is it not used in type 1 DM?

Good question - and the short answer is: it IS used in T1D in some parts of the world, but the US FDA specifically did not approve it for T1D. Let me explain both dimensions.
Searching sources...
Searching PubMed

insulin icodec type 1 diabetes hypoglycemia ONWARDS 6

Searching the Web

insulin icodec type 1 diabetes FDA not approved reason hypoglycemia risk 2026

Finding Sources
Reading Article

PMID: 37863084

Reading Article

PMID: 40587391

Excellent - the ONWARDS 6 data tells the whole story very clearly. Here is a thorough answer:

Why Icodec Is Not FDA-Approved for Type 1 Diabetes

The short version

It is not a lack of efficacy - icodec works in T1D. The FDA rejected the T1D indication because of a significantly higher hypoglycaemia rate that the agency considered an unfavourable risk-benefit trade-off, given the alternatives already available.

The ONWARDS 6 Trial - The Pivotal Evidence

ONWARDS 6 (Russell-Jones et al., Lancet 2023, PMID 37863084) was the head-to-head RCT of icodec vs. once-daily degludec in 582 adults with T1D on a basal-bolus regimen (52 weeks):
OutcomeIcodec (weekly)Degludec (daily)Result
HbA1c change at 26 weeks-0.47%-0.51%Non-inferior (confirmed)
Combined clinically significant + severe hypo (baseline - week 26)19.9 events/patient-year10.4 events/patient-yearRate ratio 1.9 (95% CI 1.5-2.3), p<0.0001
Time below 3.0 mmol/L (<54 mg/dL)At the threshold of 1% (international limit)Below thresholdBorderline unsafe
So icodec matched degludec on glycaemic control but almost doubled the rate of clinically significant or severe hypoglycaemia in T1D. This was statistically significant and persisted over 52 weeks.

Why T1D Is Fundamentally Different - The Pathophysiological Reasons

This is not just a regulatory quirk. T1D creates structural pharmacological problems for a once-weekly insulin:

1. Absolute insulin deficiency = no buffer

In T2D, residual beta-cell function and hepatic glucose production provide a partial safety buffer against excessive insulin effect. In T1D, there is no endogenous insulin production at all - every unit of exogenous insulin is acting unopposed, and the margin between euglycaemia and hypoglycaemia is razor-thin.

2. Highly variable insulin requirements day-to-day

T1D patients have far greater intraday and day-to-day variability in insulin needs - driven by:
  • Exercise (can dramatically drop requirements for hours)
  • Illness, stress, menstrual cycle
  • Meal composition
  • Activity level
A once-daily basal insulin can be dose-adjusted the next day. A once-weekly basal insulin with an 8-day half-life cannot be undone if a patient's requirements suddenly drop - for example, after unexpectedly vigorous exercise or an acute illness with reduced appetite.

3. Slow steady-state = prolonged exposure window

Icodec takes 3-4 weeks to reach steady state. Any dose that is even slightly too high results in persistent low-level excess insulin over days, not hours. In T1D, this window of vulnerability is clinically dangerous.

4. Hypoglycaemia unawareness is more common in T1D

Long-standing T1D is frequently complicated by impaired hypoglycaemia awareness (hypoglycaemia-associated autonomic failure, HAAF). Combined with prolonged insulin action, this is a particularly dangerous combination.

5. Dose corrections are not nimble

If a T1D patient on daily degludec is running too low, you cut the dose by 2 units tomorrow. If they are on once-weekly icodec, the dose is already circulating for the rest of the week at near-steady concentrations. The only effective "antidote" is more oral glucose - not dose reduction.

What the FDA Actually Did

  • May 2024: FDA Advisory Committee voted 7-4 against approving icodec for T1D (while expressing no concerns about T2D use)
  • July 2024: FDA issued a Complete Response Letter (CRL) to Novo Nordisk - rejecting the T1D indication and flagging manufacturing concerns. The T2D indication was held pending resolution of those manufacturing issues
  • March 2026: FDA approved icodec for T2D only, after manufacturing concerns were resolved. The T1D rejection stood

How Does T2D Escape This Problem?

In T2D, several factors make the weekly dosing safer:
FactorT2DT1D
Residual beta-cell functionPresent (variable)Absent
Hepatic glucose outputRelatively preservedAbsent insulin-mediated suppression
Typical insulin dose variabilityLowerMuch higher
Hypoglycaemia unawareness prevalenceLowerHigher (especially long-duration)
Concomitant GLP-1/SGLT2 agents that raise hypo thresholdCommonLess common
In T2D the ONWARDS trials showed hypo rates numerically higher but not statistically significantly so in most comparisons - and the benefit-risk balance favoured approval.

Global Situation

RegionT2DT1D
USA (FDA)Approved (Mar 2026)Rejected
European Union (EMA)ApprovedApproved
CanadaApprovedApproved
Australia, Japan, SwitzerlandApprovedApproved
So icodec is used in T1D in the EU and Canada - but with the strong caveat that CGM use is recommended, patient selection is careful, and titration protocols are adapted for T1D's narrower therapeutic window.

The Bottom Line for Clinicians

The issue is not efficacy - icodec controls HbA1c just as well in T1D. The problem is that the long, irremovable pharmacokinetic tail creates a prolonged hypoglycaemia risk that the FDA considered unacceptable given that degludec, glargine U-300, and other daily options are already safe and effective in T1D. Until better titration algorithms and perhaps CGM-integrated dosing guidance are validated for T1D specifically, the FDA's position is unlikely to change for that indication.
Key references:

can you summarize onwards protocol for me?

The ONWARDS program is a phase 3a clinical trial series of 6 trials (ONWARDS 1-6) by Novo Nordisk, evaluating icodec across different T2D and T1D patient populations. Let me pull the full details on each trial.
Searching sources...
Searching PubMed

insulin icodec ONWARDS clinical trial program phase 3

Searching the Web

ONWARDS 1 2 3 4 5 6 insulin icodec trial design results summary protocol

Reading Article

PMID: 36106652

Reading Web Page

https://pmc.ncbi.nlm.nih.gov/articles/PMC12484257

I now have all 6 trials fully characterised. Here is a clean summary:

ONWARDS Programme - Complete Summary

6 Phase 3a, randomised, open-label, treat-to-target trials by Novo Nordisk. All compared icodec (once weekly) vs. a once-daily basal insulin analogue. Primary endpoint across all 6: change in HbA1c from baseline.

The 6 Trials at a Glance

TrialPopulationnComparatorDurationIcodec HbA1c ΔComparator HbA1c ΔResultHypo (combined L2+L3, per PYE)
ONWARDS 1T2D, insulin-naive, on OADs~582Glargine U-10078 wks (52 main + 26 ext.)-0.98%-0.84%Icodec superiorSimilar (0.30 vs 0.16)
ONWARDS 2T2D, switching from once-daily basal~526Degludec U-10026 wks-0.93%-0.71%Icodec superior0.73 vs 0.27 (NS)
ONWARDS 3T2D, insulin-naive, on OADs~588Degludec U-10026 wks-1.57%-1.36%Icodec superiorSimilar, very low
ONWARDS 4T2D, basal-bolus (insulin-experienced)~582Glargine U-10026 wks~-0.6%~-0.5%Non-inferiorSimilar
ONWARDS 5T2D, insulin-naive + dosing app~1,085Daily basal (clinician choice)52 wksSuperior-Icodec superior + better treatment satisfactionSimilar
ONWARDS 6T1D, basal-bolus regimen~582Degludec U-10052 wks (26 main + 26 ext.)-0.47%-0.51%Non-inferior19.9 vs 10.4 (p<0.0001) - nearly DOUBLE

Trial-by-Trial Breakdown

ONWARDS 1 - The "Flagship" T2D Trial

  • Who: Insulin-naive T2D on OADs (metformin, SGLT2i, GLP-1 RA, etc.)
  • Design: 52-week main phase + 26-week extension = 78 weeks total (longest trial in programme)
  • Comparator: Glargine U-100 once daily
  • Key finding: Icodec was statistically superior to glargine U-100 in HbA1c reduction at week 52 (-0.98% vs -0.84%). Superiority maintained at week 78.
  • Hypo: Numerically higher with icodec (0.30 vs 0.16 events/PYE) but not statistically significant (rate ratio 1.64, 95% CI 0.98-2.75)
  • CGM: Used to measure time in range - TIR was higher with icodec
  • Verdict: Strong T2D efficacy signal in insulin-naive patients

ONWARDS 2 - The "Switching" Trial

  • Who: T2D already on once-daily basal insulin (glargine or degludec), switching to icodec
  • Design: 26 weeks, treat-to-target
  • Comparator: Degludec U-100 once daily
  • Key finding: Icodec was superior in HbA1c reduction (-0.93% vs -0.71%). Also showed significantly better treatment satisfaction scores
  • Dose conversion: Used the 80% conversion rule (daily dose × 7 × 0.8) with an optional one-time loading dose in a subset analysis
  • Hypo: 0.73 vs 0.27/PYE - numerically higher but not statistically significant; no severe hypoglycaemia with icodec
  • Verdict: Supports safe switching from daily basal; better glycaemic control and patient satisfaction

ONWARDS 3 - The "Head-to-Head vs Degludec" in Naive T2D

  • Who: Insulin-naive T2D on OADs
  • Design: 26 weeks
  • Comparator: Degludec U-100 once daily
  • Key finding: Icodec superior in HbA1c reduction (-1.57% vs -1.36%). Notable because degludec is considered the best-in-class daily basal - beating it is clinically significant
  • Hypo: Very low absolute rates in both arms; similar between groups
  • Verdict: Icodec can beat even the gold-standard daily basal in insulin-naive T2D

ONWARDS 4 - The "Basal-Bolus T2D" Trial

  • Who: T2D already on basal-bolus regimen (most complex patient type in T2D)
  • Design: 26 weeks; basal component replaced with icodec; mealtime aspart continued (2-4 daily injections)
  • Comparator: Glargine U-100 once daily (as basal component)
  • Key finding: Icodec was non-inferior to glargine U-100 in HbA1c reduction
  • Hypo: Similar rates between arms
  • Verdict: Even in complex basal-bolus T2D, the weekly basal is a viable replacement for the daily basal component

ONWARDS 5 - The "Real-World + App" Trial

  • Who: Insulin-naive T2D (largest trial, n ~1,085)
  • Design: 52 weeks; incorporated real-world elements - icodec arm used a Novo Nordisk digital dosing guide app for titration; comparator arm did NOT use an app (reflecting usual clinical practice asymmetry)
  • Comparator: Once-daily basal insulin of clinician's choice (not pre-specified)
  • Key finding: Icodec was superior in HbA1c reduction. Significantly improved Diabetes Treatment Satisfaction Questionnaire (DTSQ) scores
  • Hypo: Similar rates
  • Note: The app advantage in the icodec arm is a confound to acknowledge - it slightly inflates the icodec benefit
  • Verdict: Demonstrates feasibility with digital titration support in a real-world-like setting; strong patient satisfaction data

ONWARDS 6 - The T1D Trial (The Problematic One)

  • Who: Adults with T1D on basal-bolus regimen (insulin aspart ≥2x daily)
  • Design: 26-week main phase + 26-week safety extension = 52 weeks total
  • Comparator: Degludec U-100 once daily
  • Key finding: Icodec non-inferior in HbA1c reduction (-0.47% vs -0.51%) - efficacy confirmed
  • The problem:
    • Combined clinically significant + severe hypo: 19.9 vs 10.4 events/PYE at week 26 (rate ratio 1.9, p<0.0001)
    • Persisted through week 57 (17.0 vs 9.16/PYE, p<0.0001)
    • Time below range (<54 mg/dL) was at the upper threshold of the internationally recommended <1% limit during weeks 22-26
  • Post-hoc CGM analysis (PMID 40742780): Confirmed higher hypoglycaemia duration with icodec in T1D - hypoglycaemic episodes lasted longer, consistent with the long half-life preventing rapid glucose recovery
  • Verdict: Efficacy OK; safety unacceptable - the basis for FDA rejecting the T1D indication

Shared Trial Design Features Across All 6

FeatureDetail
DesignRandomised, open-label, treat-to-target
Phase3a
Titration targetFasting SMBG 80-130 mg/dL
Icodec titrationAdjust ±20 units/week based on 3 fasting readings
Primary endpointChange in HbA1c from baseline to week 26 or 52
Secondary endpointsCGM metrics (TIR, TAR, TBR), body weight, fasting glucose, hypoglycaemia rates, patient-reported outcomes
Hypoglycaemia definitionLevel 2 (<54 mg/dL / <3.0 mmol/L) + Level 3 (severe, requiring external assistance) combined
CGM useONWARDS 1, 2, 4 (substudy); all trials used SMBG for titration

Overarching Conclusions

QuestionAnswer
Does icodec work?Yes - non-inferior or superior to daily analogues in all 6 trials
Is it safe in T2D?Yes - hypo rates comparable to daily basal insulin across ONWARDS 1-5
Is it safe in T1D?No - nearly double the clinically significant hypo rate vs degludec
Does patient satisfaction improve?Yes - significantly better DTSQ scores in ONWARDS 2 and 5
Does it work in basal-bolus?Yes (ONWARDS 4 for T2D); but hypo risk too high in T1D (ONWARDS 6)
Does it work with GLP-1 RA / SGLT2i?Yes - post-hoc analyses of ONWARDS 1-5 show consistent efficacy regardless of background therapy
This is a shared conversation. Sign in to Orris to start your own chat.