This is THE most important physiology page in the renal section. Master this, and you'll understand diuretics, electrolyte disorders, acid-base, and tubular defects. Let me walk you through the nephron segment by segment. PROXIMAL CONVOLUTED TUBULE (PCT) The PCT is the workhorse—it does bulk reabsorption. Think of it as trying to reclaim as much of the valuable stuff as possible. Reabsorbs: - 65-80% of filtered Na+ and H2O (isotonic reabsorption—both move together) - ALL glucose and amino acids (via SGLT2 and amino acid transporters) - Most HCO3- (via carbonic anhydrase mechanism) - Most phosphate, K+, uric acid Key transporters: - Na+/H+ exchanger on apical membrane (blocked by carbonic anhydrase inhibitors indirectly) - Na+/K+-ATPase on basolateral membrane (powers everything) - SGLT2 (sodium-glucose cotransporter) Hormonal regulation: - Angiotensin II stimulates Na+/H+ exchanger → increases Na+, H2O, and HCO3- reabsorption - PTH inhibits Na+/phosphate cotransporter → increases phosphate excretion Secretes: - H+ (into lumen, combines with filtered HCO3- → CO2 + H2O → allows HCO3- reabsorption) - NH3 (important for acid excretion as NH4+) THIN DESCENDING LOOP OF HENLE Simple: permeable to WATER, impermeable to solutes. As filtrate descends into the hypertonic medulla, water gets sucked out osmotically. This CONCENTRATES the tubular fluid. This is the "concentrating segment." THIN ASCENDING LOOP OF HENLE Opposite: impermeable to water, permeable to solutes. NaCl passively diffuses out (down its concentration gradient). Tubular fluid becomes more dilute. THICK ASCENDING LOOP OF HENLE Still impermeable to water! But now actively transporting. Key transporter: Na+/K+/2Cl- cotransporter (NKCC2) - This is what LOOP DIURETICS block - Moves Na+, K+, and 2Cl- from lumen into cell - K+ backleak into lumen creates positive lumen potential - This positive potential drives PARACELLULAR reabsorption of Ca2+ and Mg2+ Important concept: When you block NKCC2 with loop diuretics: - You lose Na+, K+, Cl- in urine - You also lose Ca2+ and Mg2+ (no positive potential for paracellular reabsorption) This segment is the "diluting segment"—removes solutes without water, making tubular fluid hypotonic. DISTAL CONVOLUTED TUBULE (DCT) Still impermeable to water (early DCT). Fine-tuning begins. Key transporter: Na+/Cl- cotransporter (NCC) - This is what THIAZIDE DIURETICS block Ca2+ reabsorption here is TRANSCELLULAR: - Ca2+ enters cell through apical Ca2+ channel - Exits via basolateral Na+/Ca2+ exchanger - PTH STIMULATES this process → increases Ca2+ reabsorption Important concept: Thiazides SPARE calcium (hypocalciuria). Why? - Block NCC → less Na+ enters cell - Cell compensates by increasing Na+/Ca2+ exchange to bring in Na+ - This pulls MORE Ca2+ into blood - Result: less Ca2+ in urine (good for osteoporosis, hypercalciuria) This is OPPOSITE of loop diuretics (which waste calcium). COLLECTING TUBULE/DUCT This is where hormones rule. Principal cells: - Aldosterone → increases ENaC (Na+ channel) → more Na+ reabsorption - Aldosterone → increases K+ channel and Na+/K+-ATPase → more K+ secretion - ADH → inserts aquaporin-2 channels → water reabsorption α-intercalated cells: - Secrete H+ via H+-ATPase - Aldosterone increases their activity → more H+ secretion - This is how you regulate acid-base K+-sparing diuretics act here: - Spironolactone/eplerenone = aldosterone receptor antagonists - Amiloride/triamterene = block ENaC directly ADH (vasopressin): - Binds V2 receptors on principal cells - Triggers insertion of aquaporin-2 water channels - Without ADH: collecting duct is impermeable to water → dilute urine - With ADH: collecting duct becomes permeable → concentrated urine Urea reabsorption also occurs in the medullary collecting duct, stimulated by ADH, to maintain the medullary concentration gradient. anyway to remember this concept and transports easily

Here's a memory system that turns this entire nephron map into something you can reconstruct from scratch in an exam.

The Master Mnemonic Framework

1. The "NEPHRON STORY" - A Spatial Journey

Picture yourself as a water molecule traveling through the nephron. Each segment has a personality:

PCT - "The GREEDY Glutton"

Mnemonic: "PCT GRABS Everything First"
WhatMnemonic
65-80% Na+/H2O (isotonic)"Bulk buy, same ratio" - like buying wholesale
ALL glucose + amino acids"PCT Never Wastes Food" (glucosuria = PCT failure)
Most HCO3-"CA enzyme does the work"
PTH kills phosphate reabsorption"PTH Phosphate Throws away"
Ang II boosts Na+/H+ exchanger"Ang II is the PCT's boss"
Transporter Hook:
"SGLT2 Saves Glucose, NHE3 pumps H+, ATPase drives ALL"
  • S = SGLT2 (apical, glucose)
  • N = NHE3/Na+-H+ exchanger (apical, H+ out)
  • A = Na+/K+-ATPase (basolateral, the engine)

Loop of Henle - "The COUNTERCURRENT CASINO"

Use the word "WIPE" going DOWN then UP:
SegmentWaterIonsEffect
Thin DescendingWater OUTIons STAYConcentrates fluid
Thin AscendingWater STAYSIons OUT (passive)Dilutes
Thick AscendingWater STAYSIons OUT (NKCC2, active)Dilutes more
The "W-I-P-E" trick:
  • Water leaves descending (Window open going DOWN)
  • Ions leave ascending (Ions escape going UP)
  • Positive lumen in thick ascending (K+ backleak)
  • Evicts Ca2+/Mg2+ paracellularly (positive potential pulls them out)
Loop Diuretic Hook - "NKCC2 = No K+, Cl-, Ca2+ Kept"
Block NKCC2 → lose Na+, K+, Cl- → lose Ca2+ and Mg2+ (no positive potential) Loop diuretics = "CALCIUM WASTERS"

DCT - "The FINE-TUNER"

Mnemonic: "DCT TCs Ca2+" (DCT Takes Calcium)
  • NCC = Na+/Cl- cotransporter (THIAZIDEs block this)
  • Ca2+ reabsorption is transcellular here (PTH stimulates)
  • Thiazides → block NCC → cell starved of Na+ → cranks up Na+/Ca2+ exchanger → Ca2+ pulled INTO blood
The Ca2+ Rule:
"Loop = Lose Ca2+ | Thiazide = Take Ca2+ back"
  • Loop diuretics: hypercalciuria (good for hypercalcemia)
  • Thiazides: hypocalciuria (good for kidney stones, osteoporosis)

Collecting Duct - "The HORMONE HOTEL"

Two guests run the place:

Guest 1: ALDOSTERONE ("The Na+ Hoarder")

Mnemonic: "ALDO = Add Na+, Dump K+, Dump H+"
  • Activates ENaC (Na+ in)
  • Activates K+ channels (K+ out)
  • Activates α-intercalated cells (H+ out)
  • Result: Na+ up, K+ down, alkalosis
K+-sparing diuretics block this:
"Spiro Stops Steroid. Amiloride Attacks Channel."
  • Spironolactone/Eplerenone = block aldosterone receptor
  • Amiloride/Triamterene = block ENaC directly

Guest 2: ADH ("The Water Gatekeeper")

Mnemonic: "ADH = AQUAporin Door Handle"
  • Binds V2 → inserts AQP-2 channels
  • No ADH = locked door = dilute urine (diabetes insipidus)
  • ADH present = open door = concentrated urine

The MASTER DIURETIC TABLE (One-liner memory)

DiureticSiteBlocksCa2+ effectK+ effect
AcetazolamidePCTCarbonic anhydrase
Loop (furosemide)Thick ascendingNKCC2↑ loss
ThiazideDCTNCC↑ reabsorption
K+-sparingCollecting ductENaC/Aldoneutral↑ (spares)
One sentence: "PCT Loses All Calcium, Loop Loses Ca2+ Like crazy, Thiazides Take it back, K-sparing Keeps potassium."

The Hormone-Transporter Crossword

To lock in PTH vs Aldosterone vs ADH vs Ang II:
HormoneWhereDoes WhatNet Effect
PTHPCTBlocks Na-Pi↑ PO4 in urine
PTHDCTStimulates Ca2+ channels↑ Ca2+ in blood
Ang IIPCTStimulates NHE3↑ Na+, HCO3- reabsorption
AldosteroneCollecting ductENaC + K+/H+ secretion↑ Na+, ↓ K+, ↓ H+
ADHCollecting ductAQP-2 insertion↑ water reabsorption
Hook: "PTH Protects Ca2+, Poisons Phosphate. Ang II Amplifies PCT. Aldo Adds Na+ Dumps K+. ADH Opens Aqua-Doors."

The "Segment Personality" One-Liner Cheatsheet

Recite this like a story:
"PCT grabs everything in bulk (isotonic). Descending loop loses water. Ascending loop loses ions - passively then actively (NKCC2). DCT fine-tunes Ca2+ and Na+ (NCC, transcellular Ca2+). Collecting duct is hormone-controlled: Aldo keeps Na+, dumps K+/H+; ADH opens water gates."

Rapid-Fire "What blocks what?" Drill

Say these out loud 3 times and they stick:
  • Acetazolamide → blocks CA → PCT loses HCO3- (metabolic acidosis)
  • Furosemide → blocks NKCC2 → loop loses Na/K/Cl/Ca/Mg
  • Hydrochlorothiazide → blocks NCC → DCT loses Na/K, saves Ca
  • Spironolactone → blocks aldosterone receptor → saves K, loses Na
  • Amiloride → blocks ENaC → saves K, loses Na
  • Lithium/Demeclocycline → blocks V2 receptor/AQP2 → nephrogenic DI

Final Anchor Image

Visualize the nephron as a winding road through a city:
  • PCT = highway (fast, bulk traffic)
  • Descending loop = tunnel going underground (water leaks through walls)
  • Ascending loop = uphill road (ions fall out, water can't leave)
  • DCT = toll booth (fine-tuning, PTH/thiazide act here)
  • Collecting duct = the city hall (hormones make all the rules)
Each time you see a diuretic question, mentally place yourself on that road and ask: "What transporter is blocked here, and what can't be reabsorbed downstream?"

“ The Big Idea Potassium is scarce in the lumen — ROMK recycles it back so NKCC2 doesn't stall. 1 The Story The NKCC2 transporter in the thick ascending limb moves one sodium, one potassium, and two chloride ions from the tubular lumen into the cell — a fixed stoichiometry of 1:1:2. But here's the problem: tubular fluid arriving at the thick ascending limb has relatively little potassium compared to sodium and chloride. If potassium ran out in the lumen, the transporter would stall — like a machine that needs three different parts to assemble a product but keeps running out of one part. The ROMK channel solves this by recycling potassium: it takes potassium that entered the cell via NKCC2 and sends it back into the lumen through a dedicated channel, replenishing the luminal supply so NKCC2 can keep cycling. Now bridge to USMLE ↓ 2 On the Exam This recycling has a critical second consequence. As positive potassium ions leak back into the lumen, they create a lumen-positive electrical potential. This positive charge in the lumen drives divalent cations — calcium and magnesium — to be reabsorbed through the paracellular pathway (between cells, not through them), pushed by the electrical gradient from the positive lumen toward the relatively negative interstitium. When furosemide blocks NKCC2, potassium recycling stops, the lumen-positive potential collapses, and calcium and magnesium are no longer driven paracellularly — they're lost in the urine. This is why loop diuretics cause hypocalcemia and hypomagnesemia. On the exam, why K+ recycling is necessary — the answer is to provide the ion that would otherwise become rate-limiting for transporter cycling. 🎯 The Trap the Exam Sets Students think K+ recycling maintains electroneutrality. NKCC2 is actually electroneutral (1Na + 1K = 2Cl charges). The recycling ensures SUBSTRATE AVAILABILITY — without luminal K+, the transporter has nothing to co-transport and stalls from this concept make sticky notes

Here are your sticky notes - designed to be copy-pasted, printed, or dropped into Anki/Notion:

🟡 STICKY NOTE 1 — The Core Concept

╔══════════════════════════════════════════════════╗
║         WHY DOES ROMK RECYCLE K+ ?               ║
║                                                  ║
║  NKCC2 needs  1 Na⁺ : 1 K⁺ : 2 Cl⁻  to spin    ║
║                                                  ║
║  Problem: Tubular lumen is K⁺-POOR               ║
║  NKCC2 would STALL without luminal K⁺            ║
║                                                  ║
║  Fix: ROMK recycles K⁺ back into lumen           ║
║       → keeps NKCC2 supplied → keeps it cycling  ║
║                                                  ║
║  ✅ Reason = SUBSTRATE AVAILABILITY              ║
║  ❌ NOT electroneutrality (NKCC2 is neutral!)    ║
╚══════════════════════════════════════════════════╝

🔵 STICKY NOTE 2 — The Electrical Consequence

╔══════════════════════════════════════════════════╗
║      ROMK RECYCLING → LUMEN-POSITIVE POTENTIAL   ║
║                                                  ║
║  K⁺ leaks back INTO lumen via ROMK               ║
║       ↓                                          ║
║  Lumen becomes ELECTRICALLY POSITIVE             ║
║       ↓                                          ║
║  Ca²⁺ and Mg²⁺ driven PARACELLULARLY             ║
║  (positive lumen → negative interstitium)        ║
║                                                  ║
║  Think: "Positive lumen REPELS positive Ca/Mg    ║
║          OUT of lumen → INTO blood"              ║
╚══════════════════════════════════════════════════╝

🔴 STICKY NOTE 3 — The Furosemide Domino Chain

╔══════════════════════════════════════════════════╗
║           FUROSEMIDE DOMINO CHAIN                ║
║                                                  ║
║  Furosemide blocks NKCC2                         ║
║       ↓                                          ║
║  K⁺ no longer enters cell via NKCC2              ║
║       ↓                                          ║
║  ROMK has no K⁺ to recycle                       ║
║       ↓                                          ║
║  Lumen-positive potential COLLAPSES              ║
║       ↓                                          ║
║  Ca²⁺ and Mg²⁺ paracellular drive = GONE        ║
║       ↓                                          ║
║  Ca²⁺ + Mg²⁺ lost in urine                      ║
║                                                  ║
║  → Hypocalcemia + Hypomagnesemia                 ║
╚══════════════════════════════════════════════════╝

⚠️ STICKY NOTE 4 — The Classic Exam Trap

╔══════════════════════════════════════════════════╗
║              ⚠️  EXAM TRAP  ⚠️                   ║
║                                                  ║
║  Q: "Why does K⁺ recycle via ROMK?"              ║
║                                                  ║
║  ❌ WRONG: "To maintain electroneutrality"       ║
║     NKCC2 is ELECTRONEUTRAL                      ║
║     (1+ Na, 1+ K balanced by 2− Cl)              ║
║                                                  ║
║  ✅ RIGHT: "To maintain luminal K⁺ supply"       ║
║     Without recycling → K⁺ runs out in lumen    ║
║     → NKCC2 stalls (missing a required part)    ║
║                                                  ║
║  Think: MACHINE STALLS when ONE PART runs out    ║
╚══════════════════════════════════════════════════╝

🟢 STICKY NOTE 5 — One-Glance Summary Card

╔══════════════════════════════════════════════════╗
║         THICK ASCENDING LIMB — MASTER CARD       ║
╠══════════════════════════════════════════════════╣
║  NKCC2      →  1Na + 1K + 2Cl into cell          ║
║  ROMK       →  K⁺ back into lumen (recycling)    ║
║  Why?       →  Lumen is K⁺-poor → substrate      ║
║  Side FX    →  Lumen goes POSITIVE               ║
║  Result     →  Ca²⁺/Mg²⁺ reabsorbed (paracell.) ║
╠══════════════════════════════════════════════════╣
║  FUROSEMIDE BLOCKS NKCC2                         ║
║  → No K recycle → No + potential                 ║
║  → Ca²⁺/Mg²⁺ WASTED in urine                    ║
╠══════════════════════════════════════════════════╣
║  REMEMBER:                                       ║
║  Loop = Lose Ca & Mg                             ║
║  Thiazide = Take Ca back                         ║
╚══════════════════════════════════════════════════╝

🧠 STICKY NOTE 6 — The Analogy to Cement It

╔══════════════════════════════════════════════════╗
║              THE FACTORY ANALOGY                 ║
║                                                  ║
║  NKCC2 = Factory assembly line                   ║
║           needs Part A (Na), Part B (K),         ║
║           and 2x Part C (Cl) to make product     ║
║                                                  ║
║  Problem: Part B (K⁺) keeps running out          ║
║                                                  ║
║  ROMK = The recycling conveyor belt              ║
║          returns used Part B back to the line    ║
║          so production never stops               ║
║                                                  ║
║  Furosemide = Shuts down the whole line          ║
║               No recycling, no + potential,      ║
║               Ca²⁺/Mg²⁺ fall out the exit door  ║
╚══════════════════════════════════════════════════╝

How to use these: Print them at index-card size, or paste into Anki as image-occlusion cards covering the answer boxes. Review the domino chain (Note 3) every time you see a furosemide question - trace each arrow before reading the answer choice.

-

Looks like your message came through empty. What did you want to ask or share?

“ The Big Idea More sodium arriving at the collecting duct means more gets swapped for potassium — potassium lost. 1 The Story When furosemide blocks NKCC2 in the thick ascending limb, all the sodium that would have been reabsorbed there continues downstream to the collecting duct. It's like a marketplace suddenly flooded with extra currency — the traders (principal cells) see more sodium arriving through ENaC and eagerly reabsorb it. As sodium enters through ENaC, it creates a lumen-negative electrical potential (positive charge leaves the lumen). This negative charge in the lumen drives potassium to flow out of the cell through ROMK channels into the lumen — potassium secretion increases. More sodium delivered = more ENaC activity = more potassium secreted = hypokalemia. Now bridge to USMLE ↓ 2 On the Exam This is why adding furosemide can offset the hyperkalemia from spironolactone in this cirrhosis patient. Spironolactone blocks aldosterone, reducing both sodium reabsorption and potassium secretion in the collecting duct — potassium rises to 6.1. Furosemide floods the collecting duct with extra sodium, increasing ENaC-mediated reabsorption despite the aldosterone blockade, and the resulting lumen-negative potential drives potassium secretion through ROMK even without aldosterone's full effect. The potassium drops. The key concept is that potassium secretion in the collecting duct is driven by sodium delivery and reabsorption, not solely by aldosterone. On the exam, 'why does adding a loop diuretic reduce potassium' — the answer is increased sodium delivery to the collecting duct enhancing potassium secretion, not direct stimulation of K+ channels. 🎯 The Trap the Exam Sets Students think loop diuretics directly stimulate potassium secretion. Loops act on NKCC2 — they don't touch potassium secretion machinery in the collecting duct. The effect is INDIRECT: more sodium delivered distally means more ENaC activity, which generates the electrochemical gradient for K+ secretion.

Here are your sticky notes:

🟡 STICKY NOTE 1 — The Core Concept

╔══════════════════════════════════════════════════╗
║       WHY DO LOOP DIURETICS CAUSE HYPOKALEMIA?   ║
║                                                  ║
║  Furosemide blocks NKCC2                         ║
║       ↓                                          ║
║  Extra Na⁺ NOT reabsorbed in thick ascending     ║
║       ↓                                          ║
║  That Na⁺ FLOODS the collecting duct             ║
║       ↓                                          ║
║  More Na⁺ in → more ENaC activity                ║
║       ↓                                          ║
║  Lumen becomes NEGATIVE (Na⁺ leaves lumen)       ║
║       ↓                                          ║
║  K⁺ driven OUT of cell via ROMK into lumen       ║
║       ↓                                          ║
║  K⁺ lost in urine → HYPOKALEMIA                 ║
║                                                  ║
║  ✅ Mechanism = INCREASED DISTAL Na⁺ DELIVERY    ║
╚══════════════════════════════════════════════════╝

🔵 STICKY NOTE 2 — The Electrical Logic

╔══════════════════════════════════════════════════╗
║         THE LUMEN-NEGATIVE POTENTIAL             ║
║                                                  ║
║  Na⁺ enters cell via ENaC (positive leaves lumen)║
║       ↓                                          ║
║  Lumen becomes ELECTRICALLY NEGATIVE             ║
║       ↓                                          ║
║  K⁺ (positive) attracted OUT of cell            ║
║  through ROMK → into lumen → lost in urine       ║
║                                                  ║
║  Compare to thick ascending limb:                ║
║  ┌─────────────────────────────────────────┐     ║
║  │ Thick asc: K⁺ recycle → lumen POSITIVE  │     ║
║  │ Collecting duct: Na⁺ in → lumen NEGATIVE│     ║
║  └─────────────────────────────────────────┘     ║
║  Same K⁺, opposite direction, opposite charge    ║
╚══════════════════════════════════════════════════╝

🔴 STICKY NOTE 3 — The Clinical Scenario (Cirrhosis)

╔══════════════════════════════════════════════════╗
║    SPIRONOLACTONE + FUROSEMIDE IN CIRRHOSIS      ║
║                                                  ║
║  Spironolactone alone → K⁺ = 6.1 (TOO HIGH)     ║
║  Blocks aldosterone → less Na reabsorb           ║
║                     → less K⁺ secretion          ║
║                                                  ║
║  Add Furosemide → floods collecting duct with Na⁺║
║       ↓                                          ║
║  ENaC works harder DESPITE aldosterone blockade  ║
║       ↓                                          ║
║  Lumen-negative potential restored               ║
║       ↓                                          ║
║  K⁺ secretion via ROMK increases                 ║
║       ↓                                          ║
║  K⁺ drops back to normal ✅                      ║
║                                                  ║
║  Classic ratio used clinically: 100mg:40mg       ║
║  (Spiro:Lasix) to balance K⁺                     ║
╚══════════════════════════════════════════════════╝

⚠️ STICKY NOTE 4 — The Classic Exam Trap

╔══════════════════════════════════════════════════╗
║              ⚠️  EXAM TRAP  ⚠️                   ║
║                                                  ║
║  Q: "Why do loop diuretics cause hypokalemia?"   ║
║                                                  ║
║  ❌ WRONG: "Furosemide directly stimulates       ║
║             K⁺ secretion channels"              ║
║     Loops act on NKCC2 — they NEVER touch        ║
║     the collecting duct K⁺ machinery directly    ║
║                                                  ║
║  ✅ RIGHT: "Increased Na⁺ delivery to collecting ║
║             duct → more ENaC activity →          ║
║             lumen-negative potential →           ║
║             more K⁺ secretion via ROMK"          ║
║                                                  ║
║  The effect is INDIRECT. Always trace the chain. ║
╚══════════════════════════════════════════════════╝

🟢 STICKY NOTE 5 — The Rule to Memorize

╔══════════════════════════════════════════════════╗
║          THE GOLDEN RULE OF K⁺ SECRETION        ║
║                                                  ║
║   K⁺ secretion in collecting duct is driven by:  ║
║                                                  ║
║   1. Na⁺ DELIVERY (how much arrives)             ║
║   2. Aldosterone (how wide ENaC is open)         ║
║   3. Flow rate (washes K⁺ away, keeps gradient)  ║
║                                                  ║
║   ANY diuretic acting UPSTREAM of collecting     ║
║   duct delivers more Na⁺ distally                ║
║   → MORE K⁺ lost regardless of aldosterone       ║
║                                                  ║
║   High Na delivery + High aldosterone            ║
║   = Maximum K⁺ wasting (e.g. hyperaldosteronism) ║
╚══════════════════════════════════════════════════╝

🧠 STICKY NOTE 6 — The Analogy

╔══════════════════════════════════════════════════╗
║             THE MARKETPLACE ANALOGY              ║
║                                                  ║
║  Principal cells = currency traders              ║
║  Na⁺ = the currency flooding in                  ║
║  K⁺ = what they pay out in exchange              ║
║                                                  ║
║  Normal day: steady Na⁺ supply → steady K⁺ trade ║
║                                                  ║
║  Furosemide day: FLOOD of extra Na⁺ arrives      ║
║  → Traders go into overdrive                     ║
║  → Pay out WAY more K⁺ than usual                ║
║  → K⁺ depleted → hypokalemia                    ║
║                                                  ║
║  Spironolactone = closed the trading window      ║
║  But flood of Na⁺ is so large, some trading      ║
║  still happens → K⁺ comes back down              ║
╚══════════════════════════════════════════════════╝

🗂️ STICKY NOTE 7 — One-Glance Master Comparison

╔══════════════════════════════════════════════════╗
║        K⁺ EFFECTS ACROSS THE NEPHRON             ║
╠═══════════════════╦══════════════════════════════╣
║ Thick Asc. Limb   ║ ROMK recycles K⁺ INTO lumen  ║
║                   ║ → lumen POSITIVE              ║
║                   ║ → Ca²⁺/Mg²⁺ reabsorbed       ║
╠═══════════════════╬══════════════════════════════╣
║ Collecting Duct   ║ ENaC pulls Na⁺ OUT of lumen  ║
║                   ║ → lumen NEGATIVE              ║
║                   ║ → K⁺ secreted via ROMK        ║
╠═══════════════════╬══════════════════════════════╣
║ Furosemide net FX ║ ↑ Na⁺ delivery distally       ║
║                   ║ → ↑ K⁺ secretion              ║
║                   ║ → hypokalemia                 ║
║                   ║ → hypocalcemia/hypomagnesemia ║
╚═══════════════════╩══════════════════════════════╝

Tip: Stick notes 3 and 4 side by side - the cirrhosis scenario is the exam's favorite way to test whether you know the mechanism is indirect sodium delivery, not direct K+ channel stimulation.

Like the concept of above six sticky notes, try to make it into a one master class. Not like other sticky note seven, but the conceptual based sticky note, combining or clubbing the above six.

╔═════════════════════════════════════════════════════════════════════════╗
║          FUROSEMIDE — THE COMPLETE MECHANISM MASTERCARD                 ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  STEP 1 — WHY NKCC2 NEEDS K⁺ RECYCLED FIRST                           ║
║  ─────────────────────────────────────────────                         ║
║  Tubular lumen is K⁺-POOR                                              ║
║  NKCC2 needs 1Na⁺ : 1K⁺ : 2Cl⁻ to cycle                              ║
║  Without enough luminal K⁺ → transporter STALLS                        ║
║  ROMK recycles K⁺ back into lumen → NKCC2 keeps spinning               ║
║                                                                         ║
║  ✅ Reason = SUBSTRATE AVAILABILITY (not electroneutrality)             ║
║  ❌ Trap: NKCC2 is electroneutral (1+ Na, 1+ K balanced by 2− Cl)      ║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  STEP 2 — ROMK RECYCLING CREATES A LUMEN-POSITIVE POTENTIAL            ║
║  ────────────────────────────────────────────────────────────          ║
║  K⁺ leaks back into lumen via ROMK                                     ║
║       → Lumen becomes ELECTRICALLY POSITIVE                            ║
║       → Ca²⁺ and Mg²⁺ driven paracellularly into blood                 ║
║         (positive lumen repels positive divalents outward)             ║
║                                                                         ║
║  This is NORMAL thick ascending limb physiology                        ║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  STEP 3 — FUROSEMIDE BLOCKS NKCC2                                      ║
║  ─────────────────────────────────                                     ║
║  NKCC2 stops → K⁺ no longer enters cell                                ║
║  ROMK has nothing to recycle                                            ║
║  Lumen-positive potential COLLAPSES                                     ║
║       → Ca²⁺ and Mg²⁺ NO LONGER driven paracellularly                  ║
║       → Both LOST in urine                                             ║
║                                                                         ║
║  DIRECT consequences:  Hypocalcemia + Hypomagnesemia                   ║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  STEP 4 — UNABSORBED Na⁺ FLOODS THE COLLECTING DUCT                    ║
║  ────────────────────────────────────────────────────                  ║
║  All Na⁺ not grabbed by NKCC2 travels DOWNSTREAM                       ║
║  Principal cells see a FLOOD of luminal Na⁺                            ║
║  ENaC reabsorbs it aggressively                                         ║
║       → Na⁺ leaves lumen → Lumen becomes ELECTRICALLY NEGATIVE         ║
║       → K⁺ (positive) drawn OUT of cell via ROMK into lumen            ║
║       → K⁺ lost in urine                                               ║
║                                                                         ║
║  INDIRECT consequence:  Hypokalemia                                    ║
║  ✅ Mechanism = increased distal Na⁺ DELIVERY (not direct K⁺ effect)   ║
║  ❌ Trap: Furosemide does NOT directly touch collecting duct K⁺ channels║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  STEP 5 — THE CLINICAL PAYOFF (Cirrhosis: Spiro + Lasix)               ║
║  ─────────────────────────────────────────────────────────             ║
║  Spironolactone alone → blocks aldosterone → K⁺ rises to 6.1           ║
║  Add Furosemide → floods collecting duct with extra Na⁺                 ║
║       → ENaC works harder DESPITE aldosterone blockade                 ║
║       → Lumen-negative potential restored                              ║
║       → ROMK secretes K⁺ again → K⁺ normalizes ✅                     ║
║                                                                         ║
║  Key insight: K⁺ secretion is driven by Na⁺ DELIVERY + flow rate,      ║
║  not solely by aldosterone. High Na⁺ delivery can override             ║
║  partial aldosterone blockade.                                          ║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  THE TWO ELECTRICAL POTENTIALS — SIDE BY SIDE                          ║
║  ──────────────────────────────────────────────                        ║
║                                                                         ║
║  THICK ASCENDING LIMB          COLLECTING DUCT                         ║
║  K⁺ recycled INTO lumen        Na⁺ pulled OUT of lumen                 ║
║  → Lumen POSITIVE              → Lumen NEGATIVE                        ║
║  → Ca²⁺/Mg²⁺ reabsorbed       → K⁺ secreted                           ║
║  (furosemide kills this)       (furosemide feeds this)                 ║
║                                                                         ║
║  Same ion (K⁺). Same channel (ROMK). Opposite directions.              ║
║  Opposite electrical results. Opposite clinical consequences.           ║
║                                                                         ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  FUROSEMIDE NET SUMMARY                                                 ║
║  ──────────────────────                                                 ║
║  Blocks NKCC2 → no K⁺ recycle → lumen+ collapses                       ║
║                              → Ca²⁺/Mg²⁺ lost (hypocalcemia/hypoMg)   ║
║               → Na⁺ floods distally → lumen− in CD                     ║
║                              → K⁺ secreted → hypokalemia               ║
║                                                                         ║
║  One drug. One block. Two opposite potentials. Three electrolytes lost. ║
╚═════════════════════════════════════════════════════════════════════════╝

Hey, can you make this as a PDF note, like I can directly copy it in my book.

Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or not found"

Running Command

mkdir -p /home/daytona/workspace/furosemide-notes

Writing File

~/furosemide-notes/generate_pdf.py

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

OUTPUT = "/home/daytona/workspace/furosemide-notes/Furosemide_Mastercard.pdf"

doc = SimpleDocTemplate(
    OUTPUT,
    pagesize=A4,
    rightMargin=18*mm,
    leftMargin=18*mm,
    topMargin=15*mm,
    bottomMargin=15*mm,
)

W = A4[0] - 36*mm  # usable width

# ── Colour palette ──────────────────────────────────────────────────────────
C_HEADER_BG   = colors.HexColor("#1a1a2e")   # deep navy
C_HEADER_FG   = colors.HexColor("#e0e0e0")
C_STEP_BG     = colors.HexColor("#16213e")   # slightly lighter navy
C_STEP_FG     = colors.HexColor("#f0f0f0")
C_BODY_BG     = colors.HexColor("#0f3460")   # medium blue
C_BODY_FG     = colors.white
C_ACCENT      = colors.HexColor("#e94560")   # red accent
C_GREEN       = colors.HexColor("#00b894")
C_YELLOW      = colors.HexColor("#fdcb6e")
C_COMPARE_L   = colors.HexColor("#1e3a5f")
C_COMPARE_R   = colors.HexColor("#2d1b4e")
C_TRAP_BG     = colors.HexColor("#3d0000")
C_SUMMARY_BG  = colors.HexColor("#003d1a")
C_BORDER      = colors.HexColor("#e94560")

# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()

def S(name, **kw):
    return ParagraphStyle(name, **kw)

title_style = S("Title",
    fontName="Helvetica-Bold", fontSize=15, textColor=C_HEADER_FG,
    alignment=TA_CENTER, spaceAfter=2)

subtitle_style = S("Sub",
    fontName="Helvetica", fontSize=8, textColor=colors.HexColor("#aaaaaa"),
    alignment=TA_CENTER, spaceAfter=0)

step_label = S("StepLabel",
    fontName="Helvetica-Bold", fontSize=9, textColor=C_ACCENT,
    spaceBefore=0, spaceAfter=1)

step_title = S("StepTitle",
    fontName="Helvetica-Bold", fontSize=10.5, textColor=C_STEP_FG,
    spaceBefore=0, spaceAfter=0)

body_style = S("Body",
    fontName="Helvetica", fontSize=8.5, textColor=C_BODY_FG,
    leading=13, spaceBefore=0, spaceAfter=0)

body_bold = S("BodyBold",
    fontName="Helvetica-Bold", fontSize=8.5, textColor=C_BODY_FG,
    leading=13)

arrow_style = S("Arrow",
    fontName="Helvetica-Bold", fontSize=10, textColor=C_ACCENT,
    alignment=TA_CENTER, leading=12)

check_style = S("Check",
    fontName="Helvetica-Bold", fontSize=8.5, textColor=C_GREEN, leading=13)

cross_style = S("Cross",
    fontName="Helvetica-Bold", fontSize=8.5, textColor=C_ACCENT, leading=13)

col_head = S("ColHead",
    fontName="Helvetica-Bold", fontSize=9, textColor=C_YELLOW,
    alignment=TA_CENTER)

col_body = S("ColBody",
    fontName="Helvetica", fontSize=8, textColor=C_BODY_FG,
    leading=12, alignment=TA_LEFT)

trap_title = S("TrapTitle",
    fontName="Helvetica-Bold", fontSize=10, textColor=C_ACCENT,
    alignment=TA_CENTER)

trap_body = S("TrapBody",
    fontName="Helvetica", fontSize=8.5, textColor=C_BODY_FG, leading=13)

summary_title = S("SumTitle",
    fontName="Helvetica-Bold", fontSize=10, textColor=C_GREEN,
    alignment=TA_CENTER)

summary_body = S("SumBody",
    fontName="Helvetica", fontSize=8.5, textColor=C_BODY_FG, leading=14)

# ── Helper: boxed section ─────────────────────────────────────────────────────
def make_section(step_num, step_name, rows, bg=C_BODY_BG):
    """rows = list of Paragraph objects"""
    header_data = [[
        Paragraph(f"STEP {step_num}", step_label),
        Paragraph(step_name, step_title),
    ]]
    header_table = Table(header_data, colWidths=[14*mm, W - 14*mm])
    header_table.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), C_STEP_BG),
        ("VALIGN",     (0,0), (-1,-1), "MIDDLE"),
        ("LEFTPADDING",(0,0), (-1,-1), 6),
        ("RIGHTPADDING",(0,0),(-1,-1), 6),
        ("TOPPADDING", (0,0), (-1,-1), 5),
        ("BOTTOMPADDING",(0,0),(-1,-1), 5),
        ("LINEBELOW",  (0,0), (-1,-1), 0.5, C_ACCENT),
    ]))

    body_data = [[Paragraph("", body_style)]] if not rows else [[r] for r in rows]
    # pack into a single cell
    body_content = [[rows]]
    body_table = Table([[rows]], colWidths=[W])
    body_table.setStyle(TableStyle([
        ("BACKGROUND", (0,0), (-1,-1), bg),
        ("VALIGN",     (0,0), (-1,-1), "TOP"),
        ("LEFTPADDING",(0,0), (-1,-1), 8),
        ("RIGHTPADDING",(0,0),(-1,-1), 8),
        ("TOPPADDING", (0,0), (-1,-1), 6),
        ("BOTTOMPADDING",(0,0),(-1,-1), 6),
    ]))

    outer = Table([
        [header_table],
        [body_table],
    ], colWidths=[W])
    outer.setStyle(TableStyle([
        ("BOX",        (0,0), (-1,-1), 1, C_BORDER),
        ("LEFTPADDING",(0,0), (-1,-1), 0),
        ("RIGHTPADDING",(0,0),(-1,-1), 0),
        ("TOPPADDING", (0,0), (-1,-1), 0),
        ("BOTTOMPADDING",(0,0),(-1,-1), 0),
    ]))
    return outer

# ── Helper: arrow paragraph ───────────────────────────────────────────────────
def arrow(text="↓"):
    return Paragraph(text, arrow_style)

def bp(text):   return Paragraph(text, body_style)
def bpb(text):  return Paragraph(text, body_bold)
def chk(text):  return Paragraph(f"✅  {text}", check_style)
def crs(text):  return Paragraph(f"❌  {text}", cross_style)

# ── Build story ───────────────────────────────────────────────────────────────
story = []

# ── TITLE BLOCK ───────────────────────────────────────────────────────────────
title_data = [[
    Paragraph("FUROSEMIDE — THE COMPLETE MECHANISM MASTERCARD", title_style),
    Paragraph("Thick Ascending Limb  →  Collecting Duct  |  Renal Physiology", subtitle_style),
]]
title_tbl = Table(title_data, colWidths=[W])
title_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), C_HEADER_BG),
    ("LEFTPADDING",   (0,0), (-1,-1), 10),
    ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
    ("BOX",           (0,0), (-1,-1), 1.5, C_ACCENT),
]))
story.append(title_tbl)
story.append(Spacer(1, 5*mm))

# ── STEP 1 ────────────────────────────────────────────────────────────────────
s1_rows = [
    bp("Tubular lumen is <b>K⁺-POOR</b>"),
    arrow(),
    bp("NKCC2 needs  <b>1 Na⁺ : 1 K⁺ : 2 Cl⁻</b>  to cycle — missing K⁺ makes it <b>STALL</b>"),
    arrow(),
    bp("ROMK channel recycles K⁺ <b>back into lumen</b> → NKCC2 keeps spinning"),
    Spacer(1, 3*mm),
    chk("Reason = SUBSTRATE AVAILABILITY"),
    crs("NOT electroneutrality — NKCC2 is electroneutral (1+ Na, 1+ K balanced by 2− Cl)"),
]
story.append(KeepTogether(make_section("1", "WHY NKCC2 NEEDS K⁺ RECYCLED", s1_rows)))
story.append(Spacer(1, 4*mm))

# ── STEP 2 ────────────────────────────────────────────────────────────────────
s2_rows = [
    bp("K⁺ leaks back into lumen via ROMK"),
    arrow(),
    bp("Lumen becomes <b>ELECTRICALLY POSITIVE</b>"),
    arrow(),
    bp("Ca²⁺ and Mg²⁺ driven <b>paracellularly</b> into blood"),
    bp("(positive lumen repels positive divalents outward)"),
    Spacer(1, 2*mm),
    bp("<i>This is NORMAL thick ascending limb physiology.</i>"),
]
story.append(KeepTogether(make_section("2", "ROMK RECYCLING → LUMEN-POSITIVE POTENTIAL", s2_rows)))
story.append(Spacer(1, 4*mm))

# ── STEP 3 ────────────────────────────────────────────────────────────────────
s3_rows = [
    bpb("Furosemide blocks NKCC2"),
    arrow(),
    bp("K⁺ no longer enters cell  →  ROMK has nothing to recycle"),
    arrow(),
    bp("Lumen-positive potential <b>COLLAPSES</b>"),
    arrow(),
    bp("Ca²⁺ and Mg²⁺ NO LONGER driven paracellularly  →  <b>lost in urine</b>"),
    Spacer(1, 2*mm),
    Paragraph("<b>DIRECT consequences:  Hypocalcemia  +  Hypomagnesemia</b>",
              S("D", fontName="Helvetica-Bold", fontSize=9,
                textColor=C_YELLOW, leading=13)),
]
story.append(KeepTogether(make_section("3", "FUROSEMIDE BLOCKS NKCC2 → Ca²⁺ / Mg²⁺ LOST", s3_rows)))
story.append(Spacer(1, 4*mm))

# ── STEP 4 ────────────────────────────────────────────────────────────────────
s4_rows = [
    bp("All Na⁺ not grabbed by NKCC2 travels <b>DOWNSTREAM</b> to collecting duct"),
    arrow(),
    bp("Principal cells see a <b>FLOOD</b> of luminal Na⁺  →  ENaC reabsorbs it aggressively"),
    arrow(),
    bp("Na⁺ leaves lumen  →  Lumen becomes <b>ELECTRICALLY NEGATIVE</b>"),
    arrow(),
    bp("K⁺ (positive) drawn OUT of cell via ROMK into lumen  →  <b>K⁺ lost in urine</b>"),
    Spacer(1, 2*mm),
    Paragraph("<b>INDIRECT consequence:  Hypokalemia</b>",
              S("D2", fontName="Helvetica-Bold", fontSize=9,
                textColor=C_YELLOW, leading=13)),
    Spacer(1, 2*mm),
    chk("Mechanism = increased distal Na⁺ DELIVERY (not direct K⁺ channel effect)"),
    crs("Furosemide does NOT directly touch collecting duct K⁺ channels"),
]
story.append(KeepTogether(make_section("4", "UNABSORBED Na⁺ FLOODS THE COLLECTING DUCT → HYPOKALEMIA", s4_rows)))
story.append(Spacer(1, 4*mm))

# ── STEP 5 ────────────────────────────────────────────────────────────────────
s5_rows = [
    bpb("Spironolactone alone  →  blocks aldosterone  →  K⁺ rises to 6.1  ⚠️"),
    arrow(),
    bpb("Add Furosemide  →  floods collecting duct with extra Na⁺"),
    arrow(),
    bp("ENaC works harder <b>DESPITE</b> aldosterone blockade"),
    arrow(),
    bp("Lumen-negative potential restored  →  ROMK secretes K⁺ again"),
    arrow(),
    Paragraph("<b>K⁺ normalizes  ✅</b>",
              S("D3", fontName="Helvetica-Bold", fontSize=9,
                textColor=C_GREEN, leading=13)),
    Spacer(1, 2*mm),
    bp("<b>Key insight:</b> K⁺ secretion is driven by Na⁺ DELIVERY + flow rate,"),
    bp("not solely by aldosterone. High Na⁺ delivery can override partial aldosterone blockade."),
]
story.append(KeepTogether(make_section("5", "CLINICAL PAYOFF — CIRRHOSIS: SPIRO + LASIX", s5_rows)))
story.append(Spacer(1, 4*mm))

# ── COMPARISON TABLE ──────────────────────────────────────────────────────────
comp_data = [
    [
        Paragraph("THICK ASCENDING LIMB", col_head),
        Paragraph("COLLECTING DUCT", col_head),
    ],
    [
        Paragraph("K⁺ recycled INTO lumen via ROMK", col_body),
        Paragraph("Na⁺ pulled OUT of lumen via ENaC", col_body),
    ],
    [
        Paragraph("→ Lumen POSITIVE", col_body),
        Paragraph("→ Lumen NEGATIVE", col_body),
    ],
    [
        Paragraph("→ Ca²⁺/Mg²⁺ reabsorbed paracellularly", col_body),
        Paragraph("→ K⁺ secreted via ROMK", col_body),
    ],
    [
        Paragraph("Furosemide KILLS this", col_body),
        Paragraph("Furosemide FEEDS this", col_body),
    ],
]
half = (W - 3*mm) / 2
comp_tbl = Table(comp_data, colWidths=[half, half], spaceBefore=0)
comp_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (0,-1), C_COMPARE_L),
    ("BACKGROUND",    (1,0), (1,-1), C_COMPARE_R),
    ("BACKGROUND",    (0,0), (-1,0), C_STEP_BG),
    ("LINEAFTER",     (0,0), (0,-1), 0.5, C_ACCENT),
    ("BOX",           (0,0), (-1,-1), 1, C_BORDER),
    ("GRID",          (0,0), (-1,-1), 0.3, colors.HexColor("#333355")),
    ("LEFTPADDING",   (0,0), (-1,-1), 7),
    ("RIGHTPADDING",  (0,0), (-1,-1), 7),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("VALIGN",        (0,0), (-1,-1), "TOP"),
]))

comp_header = Table([[
    Paragraph("THE TWO ELECTRICAL POTENTIALS — SIDE BY SIDE", step_title),
]], colWidths=[W])
comp_header.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), C_STEP_BG),
    ("LEFTPADDING",   (0,0), (-1,-1), 8),
    ("TOPPADDING",    (0,0), (-1,-1), 5),
    ("BOTTOMPADDING", (0,0), (-1,-1), 5),
    ("LINEBELOW",     (0,0), (-1,-1), 0.5, C_ACCENT),
]))

comp_outer = Table([
    [comp_header],
    [comp_tbl],
    [[Paragraph(
        "<i>Same ion (K⁺). Same channel (ROMK). Opposite directions. "
        "Opposite electrical results. Opposite clinical consequences.</i>",
        S("italic_note", fontName="Helvetica-Oblique", fontSize=8,
          textColor=colors.HexColor("#aaaaff"), leading=12, alignment=TA_CENTER)
    )]],
], colWidths=[W])
comp_outer.setStyle(TableStyle([
    ("BOX",           (0,0), (-1,-1), 1, C_BORDER),
    ("BACKGROUND",    (0,2), (-1,2), C_STEP_BG),
    ("LEFTPADDING",   (0,2), (-1,2), 8),
    ("TOPPADDING",    (0,2), (-1,2), 4),
    ("BOTTOMPADDING", (0,2), (-1,2), 4),
    ("LEFTPADDING",   (0,0), (-1,-1), 0),
    ("RIGHTPADDING",  (0,0), (-1,-1), 0),
    ("TOPPADDING",    (0,0), (0,0),   0),
    ("BOTTOMPADDING", (0,-1),(-1,-1), 0),
]))
story.append(KeepTogether(comp_outer))
story.append(Spacer(1, 4*mm))

# ── EXAM TRAP ────────────────────────────────────────────────────────────────
trap_rows = [
    Paragraph("⚠️  EXAM TRAP  ⚠️", trap_title),
    Spacer(1, 3*mm),
    Paragraph("<b>Q: Why do loop diuretics cause hypokalemia?</b>", trap_body),
    Spacer(1, 2*mm),
    crs("WRONG: 'Furosemide directly stimulates K⁺ secretion channels'\n"
        "     Loops act on NKCC2 — they NEVER touch collecting duct K⁺ machinery directly"),
    Spacer(1, 2*mm),
    chk("RIGHT: Increased Na⁺ delivery to collecting duct → more ENaC activity\n"
        "     → lumen-negative potential → more K⁺ secretion via ROMK"),
    Spacer(1, 3*mm),
    Paragraph("<b>The effect is INDIRECT. Always trace the chain.</b>",
              S("imp", fontName="Helvetica-Bold", fontSize=8.5,
                textColor=C_YELLOW, leading=13, alignment=TA_CENTER)),
]
trap_tbl = Table([[trap_rows]], colWidths=[W])
trap_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), C_TRAP_BG),
    ("BOX",           (0,0), (-1,-1), 1.5, C_ACCENT),
    ("LEFTPADDING",   (0,0), (-1,-1), 10),
    ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(KeepTogether(trap_tbl))
story.append(Spacer(1, 4*mm))

# ── SUMMARY BOX ──────────────────────────────────────────────────────────────
sum_rows = [
    Paragraph("FUROSEMIDE NET SUMMARY", summary_title),
    Spacer(1, 4*mm),
    Paragraph(
        "<b>Blocks NKCC2</b>  →  no K⁺ recycle  →  <b>lumen+ collapses</b>  "
        "→  Ca²⁺/Mg²⁺ lost  →  <b>Hypocalcemia / HypoMg</b>",
        S("s1", fontName="Helvetica", fontSize=8.5, textColor=C_BODY_FG,
          leading=14, alignment=TA_CENTER)),
    Spacer(1, 2*mm),
    Paragraph(
        "<b>Blocks NKCC2</b>  →  Na⁺ floods distally  →  <b>lumen− in collecting duct</b>  "
        "→  K⁺ secreted  →  <b>Hypokalemia</b>",
        S("s2", fontName="Helvetica", fontSize=8.5, textColor=C_BODY_FG,
          leading=14, alignment=TA_CENTER)),
    Spacer(1, 4*mm),
    Paragraph(
        "One drug.  One block.  Two opposite potentials.  Three electrolytes lost.",
        S("s3", fontName="Helvetica-Bold", fontSize=9, textColor=C_YELLOW,
          leading=14, alignment=TA_CENTER)),
]
sum_tbl = Table([[sum_rows]], colWidths=[W])
sum_tbl.setStyle(TableStyle([
    ("BACKGROUND",    (0,0), (-1,-1), C_SUMMARY_BG),
    ("BOX",           (0,0), (-1,-1), 1.5, C_GREEN),
    ("LEFTPADDING",   (0,0), (-1,-1), 10),
    ("RIGHTPADDING",  (0,0), (-1,-1), 10),
    ("TOPPADDING",    (0,0), (-1,-1), 8),
    ("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(KeepTogether(sum_tbl))

# ── BUILD ─────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
Running Command

cd /home/daytona/workspace/furosemide-notes && python generate_pdf.py

Your PDF is ready. Here's what's inside:

Furosemide Mastercard

PDF Document · PDF


What the PDF contains:
  • 5 numbered steps - each in its own boxed section with a red header stripe, tracing the full mechanism from ROMK recycling all the way to hypokalemia
  • Side-by-side comparison table - Thick ascending limb vs. Collecting duct potentials, color-coded in contrasting panels
  • Exam Trap box - dark red background so it catches your eye, with ✅/❌ markers
  • Net Summary box - green border, the one-line chain for each consequence
The layout is A4, clean enough to print and paste directly into your notebook, or keep as a digital sticky note on your tablet.

So explain to me like a topper level USMLE topper level USMLE topper level knows you have to make when you have to make on neutron transport physiology. So the solving every solving every question in the US question in the US similarly complex, similarly complex with important uh with important uh conceptual conceptual based understanding based understanding. What can you what can you suggest and how can I suggest and how can I crack it? Crack it. You know what is the master concept first? What are the core principles? What are the core principles? And um and um you know what hormones are gonna act, what are the clinical core correlations? And um and yeah, yeah, and Sharma college and Sharma college G and G and you know concurrent by you know concurrent modifications, modifications. What all is necessary for me to study for me to do. Make can USMLE top can USMLE topper level notes, level notes.

Asking for Preferences

So explain to me like a topper level USMLE topper level USMLE topper level knows you have to make when you have to make on neutron transport physiology. So the solving every solving every question in the US question in the US similarly complex, similarly complex with important uh with important uh conceptual conceptual based understanding based understanding. What can you what can you suggest and how can I suggest and how can I crack it? Crack it. You know what is the master concept first? What are the core principles? What are the core principles? And um and um you know what hormones are gonna act, what are the clinical core correlations? And um and yeah, yeah, and Sharma college and Sharma college G and G and you know concurrent by you know concurrent modifications, modifications. What all is necessary for me to study for me to do. Make can USMLE top can USMLE topper level notes, level notes.

Asking for Preferences
This is a shared conversation. Sign in to Orris to start your own chat.