Make the contents in each slide a little more concise ie make it appear less crowded And give me a script for presentation of the ppt mbbs level It should be 10-12 minutes Dont use abbreviations and make it easy to explain
cd /tmp/workspace && python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/attachments/7cca9eb8-7aeb-4e6e-aa46-d33864436e93/Hyponatremia_Harrison22.pptx') for i, slide in enumerate(prs.slides, 1): print(f'\\n===== SLIDE {i} =====') for shape in slide.shapes: if shape.has_text_frame and shape.text_frame.text.strip(): print(f' [{shape.name}]: {repr(shape.text_frame.text[:500])}') "
mkdir -p /tmp/workspace/hyponatremia && python /tmp/skills/pptx/scripts/office/unpack.py /tmp/workspace/attachments/7cca9eb8-7aeb-4e6e-aa46-d33864436e93/Hyponatremia_Harrison22.pptx /tmp/workspace/hyponatremia/unpacked/ 2>&1
python3 << 'PYEOF' from pptx import Presentation from pptx.util import Pt import copy, re prs = Presentation('/tmp/workspace/attachments/7cca9eb8-7aeb-4e6e-aa46-d33864436e93/Hyponatremia_Harrison22.pptx') # Helper: replace all text in a shape's text frame while preserving paragraph/run formatting def set_shape_text(shape, new_text): """Replace all text in a shape, preserving first run's formatting for each paragraph.""" tf = shape.text_frame paragraphs = new_text.split('\n') # Clear extra paragraphs if needed or add new ones while len(tf.paragraphs) < len(paragraphs): # Add a paragraph by copying the last one's XML from pptx.oxml.ns import qn from lxml import etree last_p = tf.paragraphs[-1]._p new_p = copy.deepcopy(last_p) last_p.addnext(new_p) # Set text for each paragraph for i, para_text in enumerate(paragraphs): if i < len(tf.paragraphs): para = tf.paragraphs[i] # Keep first run formatting, clear others runs = para.runs if runs: # Set all text to first run, clear subsequent runs runs[0].text = para_text for run in runs[1:]: run.text = '' else: # No runs, add one from pptx.oxml.ns import qn from lxml import etree r_elem = etree.SubElement(para._p, qn('a:r')) rPr = etree.SubElement(r_elem, qn('a:rPr'), attrib={'lang': 'en-US', 'dirty': '0'}) t_elem = etree.SubElement(r_elem, qn('a:t')) t_elem.text = para_text # Remove extra paragraphs while len(tf.paragraphs) > len(paragraphs): last_p = tf.paragraphs[-1]._p last_p.getparent().remove(last_p) # ---- Concise content for each slide ---- slide_content = { # Slide 2: Normal Sodium & Water Physiology 2: { 'TextBox 6': 'Sodium Compartment\n• Na⁺ is the primary extracellular cation (135–145 mM)\n• Determines extracellular fluid volume and osmolality\n• Normal serum osmolality: 285–295 mOsm/kg\n• Body water: 60% in men, 50% in women (~42 L in 70 kg man)\n• Distributed: Intracellular fluid (2/3) and Extracellular fluid (1/3)', 'TextBox 7': 'Antidiuretic Hormone & Water Regulation\n• Antidiuretic hormone (ADH) is the master regulator of water balance\n• Released from posterior pituitary in response to:\n – Increased plasma osmolality (osmoreceptors)\n – Decreased volume / hypotension (baroreceptors)\n• Acts on V₂ receptors → aquaporin-2 insertion → water reabsorption\n• Thirst is stimulated when osmolality >295 mOsm/kg', }, # Slide 3: Definition & Epidemiology 3: { 'TextBox 9': '• One of the most common electrolyte disorders\n• Occurs in up to 22% of hospitalised patients\n• Caused by abnormalities in water homeostasis\n• Water intake and circulating antidiuretic hormone are key effectors\n• Classified into three groups based on volume status:\n – Hypovolemic, Euvolemic, Hypervolemic hyponatremia', 'TextBox 8': 'Almost always the result of increased circulating antidiuretic hormone combined with free water intake', }, # Slide 4: Pathophysiology 4: { 'TextBox 6': '• Serum Na⁺ = Total body sodium / Total body water\n• Hyponatremia = relative excess of water over sodium\n• Two key defence mechanisms:\n – 1. Water intake (thirst regulated by hypothalamus)\n – 2. Circulating antidiuretic hormone (renal water reabsorption)\n• Brain adaptation:\n – Acute: efflux of Na⁺, K⁺, Cl⁻ from brain cells\n – Chronic: organic osmolytes lost (adaptation takes >48 h)', }, # Slide 5: Hypovolemic Hyponatremia 5: { 'TextBox 7': 'Volume depletion → neurohumoral activation → non-osmotic antidiuretic hormone release → V₂-mediated water retention → hyponatremia', 'TextBox 8': 'Non-Renal Causes (Urine Na⁺ < 20 mM)\n• Vomiting / Diarrhea\n• Third spacing (burns, pancreatitis)\n• Trauma / insensible losses', 'TextBox 9': 'Renal Causes (Urine Na⁺ > 20 mM)\n• Diuretic excess (especially thiazides)\n• Mineralocorticoid deficiency\n• Salt-losing nephropathies\n• Osmotic diuresis\n• Cerebral salt-wasting syndrome', 'TextBox 12': '▶ Urine Na⁺ <20 mM (non-renal cause)', 'TextBox 13': '▶ Urine Na⁺ >20 mM (renal cause)', 'TextBox 14': '▶ Normal saline → rapid plasma Na⁺ rise as antidiuretic hormone falls', 'TextBox 15': '▶ May appear euvolemic – urine Na⁺ is the clue', 'TextBox 16': '▶ Adrenal insufficiency: high urine Na⁺ + hyperkalemia + hypotension', }, # Slide 6: Euvolemic Hyponatremia 6: { 'TextBox 6': '• Total body water increased; total body sodium essentially normal\n• No oedema (hence "euvolemic" clinically)\n• Syndrome of Inappropriate Antidiuresis is the most frequent cause\n• Hypothyroidism: correction normalises antidiuretic hormone response\n• Secondary adrenal insufficiency (glucocorticoid deficiency):\n – Hydrocortisone replacement rapidly corrects hyponatremia', 'TextBox 9': 'Syndrome of Inappropriate Antidiuresis\n\n• Persistent antidiuretic hormone secretion despite low plasma osmolality\n• Urine osmolality persistently >100 mOsm/kg\n• Urine Na⁺ usually >30 mM\n• Four recognised patterns of antidiuretic hormone secretion\n• Serum uric acid often <4 mg/dL', }, # Slide 7: Causes of SIAD 7: { 'TextBox 9': '• Small cell carcinoma of lung\n• GI and GU tract tumours\n• Lymphomas', 'TextBox 10': '', 'TextBox 11': '', 'TextBox 12': '', 'TextBox 13': '', 'TextBox 17': '• Infections (bacterial, viral, tuberculosis)\n• Asthma / Cystic fibrosis\n• ARDS / Positive pressure ventilation', 'TextBox 18': '', 'TextBox 19': '', 'TextBox 20': '', 'TextBox 24': '• Meningitis / Encephalitis\n• Head trauma\n• Subarachnoid haemorrhage\n• Guillain-Barré syndrome', 'TextBox 25': '', 'TextBox 26': '', 'TextBox 27': '', 'TextBox 28': '', 'TextBox 29': '', 'TextBox 30': '', 'TextBox 34': '• Selective serotonin reuptake inhibitors\n• Carbamazepine / Tricyclics\n• Antipsychotics\n• Cyclophosphamide', 'TextBox 35': '', 'TextBox 36': '', 'TextBox 37': '', 'TextBox 38': '', 'TextBox 39': '', 'TextBox 40': '', 'TextBox 41': '', 'TextBox 43': '', 'TextBox 44': '', 'TextBox 48': '• Idiopathic\n• Exercise / Nausea / Pain / Stress\n• Desmopressin, Oxytocin', 'TextBox 49': '', 'TextBox 50': '', 'TextBox 51': '', 'TextBox 52': '', 'TextBox 53': '', }, # Slide 8: Hypervolemic Hyponatremia 8: { 'TextBox 7': 'Increased total body Na⁺ accompanied by a proportionately greater increase in total body water → reduced plasma Na⁺', 'TextBox 8': '• Congestive heart failure\n• Cirrhosis of the liver\n• Nephrotic syndrome\n• Acute or chronic renal failure\n• Urine Na⁺ typically very low (<10 mM)\n – "Sodium-avid" state despite total body Na⁺ excess\n – Heart failure: reduced effective circulatory volume\n – Cirrhosis: peripheral vasodilation → reduced volume', }, # Slide 9: Diagnostic Approach (flow diagram – keep text short) 9: { 'TextBox 13': 'Renal losses:\n• Diuretic excess\n• Mineralocorticoid deficiency\n• Salt-losing nephropathies\n• Cerebral salt wasting', 'TextBox 17': 'Extrarenal losses:\n• Vomiting / Diarrhea\n• Third spacing\n• Burns / Trauma', 'TextBox 25': 'Causes:\n• Glucocorticoid deficiency\n• Hypothyroidism\n• Drugs\n• Syndrome of Inappropriate Antidiuresis', 'TextBox 29': 'Low solute intake:\n• Beer potomania\n• Psychogenic polydipsia', 'TextBox 37': 'Renal failure:\n• Acute\n• Chronic', 'TextBox 41': 'Oedematous states:\n• Nephrotic syndrome\n• Cirrhosis\n• Cardiac failure', }, # Slide 10: Clinical Features 10: { 'TextBox 6': '• Hyponatremia → cellular swelling (water moves from hypotonic extracellular fluid into cells)\n• CNS manifestations dominate: brain is encased in a rigid skull\n• Brain response:\n – Acute: efflux of Na⁺, K⁺, Cl⁻ from brain cells\n – Chronic: organic osmolytes lost over >48 h\n• Premenopausal women and children are at highest risk of encephalopathy', 'TextBox 11': 'Fatigue, nausea, headache, anorexia', 'TextBox 14': 'Confusion, disorientation, muscle cramps', 'TextBox 17': 'Seizures, coma, brainstem herniation', 'TextBox 18': '⚠ Acute symptomatic hyponatremia is a medical emergency', }, # Slide 11: Causes of Acute Hyponatremia 11: { 'TextBox 9': '• Postoperative: especially premenopausal women\n• Hypotonic intravenous fluids with raised antidiuretic hormone\n• Glycine irrigation (prostate / uterine surgery)', 'TextBox 10': '', 'TextBox 11': '', 'TextBox 12': '', 'TextBox 16': '• Thiazide diuretics\n• MDMA / Ecstasy ingestion\n• Desmopressin, Oxytocin', 'TextBox 17': '', 'TextBox 18': '', 'TextBox 22': '• Endurance events (marathons)\n• Non-osmotic antidiuretic hormone + excessive free water intake', 'TextBox 23': '', 'TextBox 24': '', 'TextBox 28': '• Psychogenic polydipsia', 'TextBox 29': '', }, # Slide 12: ODS 12: { 'TextBox 8': '• Brain cells reaccumulate organic osmolytes slowly after chronic adaptation\n• Overly rapid correction → brain cell shrinkage → hypertonic stress\n• Causes demyelination (classically the pons — central pontine myelinolysis)\n• Symptoms: dysarthria, dysphagia, paraplegia, altered consciousness\n (may be delayed 2–3 days after correction)', 'TextBox 23': '✔ If overcorrection occurs: re-lower plasma Na⁺ with intravenous 5% dextrose water + desmopressin', }, # Slide 13: Lab Investigation 13: { 'TextBox 9': 'Excludes pseudohyponatremia.\nTrue hyponatremia: effective osmolality <275 mOsm/kg', 'TextBox 13': '<100 mOsm/kg: polydipsia / low solute intake (antidiuretic hormone suppressed)\n>100 mOsm/kg: antidiuretic hormone excess\n>450 mOsm/kg: concentrated urine → major antidiuretic hormone effect', 'TextBox 17': '<20–30 mM: Hypovolemia or hypervolemic states (heart failure, cirrhosis)\n>30 mM: Syndrome of Inappropriate Antidiuresis, renal losses, adrenal insufficiency', 'TextBox 21': "Plasma Na⁺ falls ~1.6–2.4 mM per 100 mg/dL rise in glucose.\nResolves after correction of hyperglycaemia.", 'TextBox 25': 'Syndrome of Inappropriate Antidiuresis: typically <4 mg/dL (hypo-uricaemia)\nVolume depletion: often elevated\nUseful differentiator', 'TextBox 29': 'Elevated BUN suggests renal dysfunction\nPre-renal azotaemia: BUN rises disproportionately to creatinine', 'TextBox 33': 'Urine-to-plasma electrolyte ratio: [Urine Na⁺ + Urine K⁺] / Plasma Na⁺\n>1: Restrict fluids aggressively (<500 mL/d)\n~1: Restrict to 500–700 mL/d\n<1: Restrict to <1 L/d', 'TextBox 37': 'Thyroid-stimulating hormone: Exclude hypothyroidism\nMorning cortisol / stimulation test: Exclude adrenal insufficiency', }, # Slide 14: Treatment Overview 14: { 'TextBox 9': '• Acute (<48 h): May present with headache, nausea → seizures, coma\n• Chronic (>48 h): Usually fewer acute symptoms\n• Urgency is determined by symptom severity', 'TextBox 13': '• >8–10 mM rise in first 24 h\n• >18 mM within first 48 h\n• Plasma Na⁺ must be monitored every 2–4 hours during correction', 'TextBox 17': '• Physiology changes rapidly once underlying cause is treated\n• Antidiuretic hormone normalisation can cause sudden water diuresis → overcorrection\n• Check plasma Na⁺ every 2–4 hours during active treatment', 'TextBox 18': 'Once urgency is established, treat the underlying cause.', }, # Slide 15: Treatment Hypovolemic 15: { 'TextBox 6': '• Goal: Restore normovolemia and replace ongoing losses\n• Mild: Oral hydration + normal diet\n• Moderate–severe: Intravenous normal saline (0.9% NaCl, 154 mM Na⁺)\n• Mechanism: Saline restores volume → antidiuretic hormone falls → free water diuresis → Na⁺ rises\n• ⚠ Risk of overcorrection: Monitor closely as antidiuretic hormone levels drop', }, # Slide 16: Treatment Euvolemic SIAD 16: { 'TextBox 6': '• Treat underlying cause (hypothyroidism → thyroid hormone; adrenal insufficiency → hydrocortisone)\n• Fluid restriction is the cornerstone for chronic Syndrome of Inappropriate Antidiuresis:\n – Guide by urine-to-plasma electrolyte ratio\n – >1: Restrict to <500 mL/d\n – ~1: Restrict to 500–700 mL/d\n – <1: Restrict to <1 L/d', 'TextBox 11': 'Tolvaptan (oral V₂ antagonist) – approved for Syndrome of Inappropriate Antidiuresis\nConivaptan (intravenous V₁ₐ/V₂ antagonist)\n⚠ Liver toxicity – limit to <1–2 months', 'TextBox 14': 'Inhibits principal cells → nephrogenic diabetes insipidus-like effect\n⚠ Risk of nephrotoxicity in cirrhosis', 'TextBox 17': 'Increases solute excretion → free water excretion\nComparable efficacy to vaptans', }, # Slide 17: Treatment Hypervolemic 17: { 'TextBox 6': '• Focus on treating the underlying cause\n• Heart failure: Optimise cardiac function (ACE inhibitors, beta-blockers); loop diuretics\n• Cirrhosis: Manage portal hypertension; avoid ACE inhibitors in advanced cirrhosis\n• Renal failure: Water restriction; dialysis if severe\n• Tolvaptan effective but use with caution (initiate in hospital)', 'TextBox 9': '✔ Approved for: heart failure and Syndrome of Inappropriate Antidiuresis (tolvaptan)\n✔ Mechanism: Aquaretic effect – free water excretion without Na⁺ loss\n⚠ Contraindicated in:\n - Hypovolemic hyponatremia\n - Acute hyponatremia\n - Cirrhosis (nephrotoxicity)\n - Use >1–2 months (liver toxicity)\n⚠ ~10% may overcorrect – monitor Na⁺ closely', }, # Slide 18: Treatment Acute Symptomatic 18: { 'TextBox 8': '• Target: Increase plasma Na⁺ by 1–2 mM/h to a total of 4–6 mM initially\n• Bolus approach (preferred): 100 mL of 3% hypertonic saline intravenously\n – May repeat if symptoms persist\n• Ongoing infusion: Na⁺ deficit = 0.6 × body weight (kg) × (target Na⁺ – starting Na⁺)\n• Once severe symptoms resolve, switch to slower correction rate', }, # Slide 19: Correction Rate & Monitoring 19: { 'TextBox 6': '• Chronic hyponatremia: Target <6–8 mM rise in first 24 h; <6 mM each subsequent 24 h\n• Lower targets for high-risk patients (alcoholics, malnourished, hypokalaemia)\n• Overcorrection can occur when antidiuretic hormone levels rapidly normalise:\n – After normal saline in hypovolemic patients\n – After glucocorticoid replacement\n – Spontaneous water diuresis in polydipsia', 'TextBox 21': '⚠ Twice-daily desmopressin + hypertonic saline "clamp" approach:\nUsed in severe hyponatremia to allow controlled correction and prevent unpredictable water diuresis', }, # Slide 20: Summary 20: { 'TextBox 10': 'Measure serum osmolality. Exclude pseudohyponatremia (hyperlipidaemia, hyperproteinaemia) and hypertonic causes (hyperglycaemia). Effective osmolality <275 mOsm/kg confirms true hyponatremia.', 'TextBox 15': 'Classify as hypovolemic, euvolemic, or hypervolemic using clinical exam (pulse, blood pressure, skin turgor, oedema).', 'TextBox 20': 'Urine Na⁺: Distinguishes renal from non-renal loss.\nUrine osmolality: Distinguishes antidiuretic hormone excess from polydipsia.\nCalculate urine-to-plasma electrolyte ratio if fluid restriction planned.', 'TextBox 25': 'Acute (<48 h) or chronic (>48 h)?\nSeverity: mild (130–134 mM), moderate (125–129 mM), severe (<125 mM)\nPresence of symptoms determines urgency.', 'TextBox 30': 'Hypovolemic: isotonic saline.\nEuvolemic/Syndrome of Inappropriate Antidiuresis: fluid restriction ± pharmacotherapy.\nHypervolemic: treat underlying cause ± vaptans/diuretics.', 'TextBox 35': 'Check plasma Na⁺ every 2–4 hours. Target: <8–10 mM rise in 24 h (chronic). If overcorrection: desmopressin + free water immediately.', }, } # Apply changes for slide_num, changes in slide_content.items(): slide = prs.slides[slide_num - 1] for shape in slide.shapes: if shape.name in changes and shape.has_text_frame: new_text = changes[shape.name] tf = shape.text_frame # Get all paragraph elements from lxml import etree from pptx.oxml.ns import qn sp_tree = tf._txBody p_elems = sp_tree.findall(qn('a:p')) new_lines = new_text.split('\n') # For each existing paragraph, update or clear for i, p_elem in enumerate(p_elems): if i < len(new_lines): # Find all runs in this paragraph r_elems = p_elem.findall(qn('a:r')) if r_elems: # Set text to first run, clear others t_elem = r_elems[0].find(qn('a:t')) if t_elem is not None: t_elem.text = new_lines[i] for r in r_elems[1:]: t2 = r.find(qn('a:t')) if t2 is not None: t2.text = '' else: # No runs - create one r_elem = etree.SubElement(p_elem, qn('a:r')) t_elem = etree.SubElement(r_elem, qn('a:t')) t_elem.text = new_lines[i] else: # Extra paragraph - clear it r_elems = p_elem.findall(qn('a:r')) for r in r_elems: t2 = r.find(qn('a:t')) if t2 is not None: t2.text = '' prs.save('/tmp/workspace/hyponatremia/Hyponatremia_Concise.pptx') print("Saved successfully!") PYEOF
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/hyponatremia/Hyponatremia_Concise.pptx') for i, slide in enumerate(prs.slides, 1): print(f'\\n===== SLIDE {i} =====') for shape in slide.shapes: if shape.has_text_frame and shape.text_frame.text.strip(): print(f' [{shape.name}]: {repr(shape.text_frame.text[:300])}') " 2>&1 | head -200
python3 << 'PYEOF' from pptx import Presentation from lxml import etree from pptx.oxml.ns import qn import copy prs = Presentation('/tmp/workspace/hyponatremia/Hyponatremia_Concise.pptx') def replace_text_in_shape(shape, new_text): """Replace all text in a text frame. Multi-line text uses multiple paragraphs.""" if not shape.has_text_frame: return tf = shape.text_frame txBody = tf._txBody lines = new_text.split('\n') # Get existing paragraphs existing_p = txBody.findall(qn('a:p')) # Template: use first paragraph as style reference template_p = copy.deepcopy(existing_p[0]) if existing_p else None # Clear all existing paragraph text runs but keep structure for i, p_elem in enumerate(existing_p): if i < len(lines): # Update runs r_elems = p_elem.findall(qn('a:r')) if r_elems: t = r_elems[0].find(qn('a:t')) if t is not None: t.text = lines[i] for r in r_elems[1:]: t2 = r.find(qn('a:t')) if t2 is not None: t2.text = '' else: # No runs – create one new_r = etree.SubElement(p_elem, qn('a:r')) new_t = etree.SubElement(new_r, qn('a:t')) new_t.text = lines[i] else: # Remove extra paragraphs txBody.remove(p_elem) # If we need more paragraphs, add from template if len(lines) > len(existing_p) and template_p is not None: for i in range(len(existing_p), len(lines)): new_p = copy.deepcopy(template_p) r_elems = new_p.findall(qn('a:r')) if r_elems: t = r_elems[0].find(qn('a:t')) if t is not None: t.text = lines[i] for r in r_elems[1:]: t2 = r.find(qn('a:t')) if t2 is not None: t2.text = '' else: new_r = etree.SubElement(new_p, qn('a:r')) new_t = etree.SubElement(new_r, qn('a:t')) new_t.text = lines[i] txBody.append(new_p) # Slide 9 (index 8) - diagnostic flowchart - fix the bullet lists slide9 = prs.slides[8] fixes9 = { 'TextBox 13': 'Renal losses:\n• Diuretic excess\n• Mineralocorticoid deficiency\n• Salt-losing nephropathies\n• Cerebral salt wasting', 'TextBox 17': 'Extrarenal losses:\n• Vomiting / Diarrhea\n• Third spacing\n• Burns / Trauma', 'TextBox 25': 'Causes:\n• Glucocorticoid deficiency\n• Hypothyroidism\n• Drugs\n• Syndrome of Inappropriate Antidiuresis', 'TextBox 29': 'Low solute intake:\n• Beer potomania\n• Psychogenic polydipsia', 'TextBox 37': 'Renal failure:\n• Acute\n• Chronic', 'TextBox 41': 'Oedematous states:\n• Nephrotic syndrome\n• Cirrhosis\n• Cardiac failure', } for shape in slide9.shapes: if shape.name in fixes9 and shape.has_text_frame: replace_text_in_shape(shape, fixes9[shape.name]) # Slide 11 (index 10) - acute causes - fix the bullet lists slide11 = prs.slides[10] fixes11 = { 'TextBox 9': '• Postoperative (premenopausal women)\n• Hypotonic intravenous fluids with raised antidiuretic hormone\n• Glycine irrigation (prostate / uterine surgery)', 'TextBox 16': '• Thiazide diuretics\n• MDMA / Ecstasy ingestion\n• Desmopressin, Oxytocin', 'TextBox 22': '• Endurance events (marathons)\n• Non-osmotic antidiuretic hormone + excessive free water intake', 'TextBox 28': '• Psychogenic polydipsia', } for shape in slide11.shapes: if shape.name in fixes11 and shape.has_text_frame: replace_text_in_shape(shape, fixes11[shape.name]) # Slide 6 (index 5) - fix SIAD overview box slide6 = prs.slides[5] for shape in slide6.shapes: if shape.name == 'TextBox 9' and shape.has_text_frame: replace_text_in_shape(shape, 'Syndrome of Inappropriate Antidiuresis\n\n• Persistent antidiuretic hormone secretion despite low plasma osmolality\n• Urine osmolality persistently >100 mOsm/kg\n• Urine Na\u207a usually >30 mM\n• Four recognised patterns of antidiuretic hormone secretion\n• Serum uric acid often <4 mg/dL') # Slide 13 (index 12) - fix lab investigation multi-line boxes slide13 = prs.slides[12] fixes13 = { 'TextBox 9': 'Excludes pseudohyponatremia.\nTrue hyponatremia: effective osmolality <275 mOsm/kg', 'TextBox 13': '<100 mOsm/kg: polydipsia / low solute (antidiuretic hormone suppressed)\n>100 mOsm/kg: antidiuretic hormone excess\n>450 mOsm/kg: major antidiuretic hormone effect', 'TextBox 17': '<20 mM: Hypovolemia or hypervolemic states\n>30 mM: Syndrome of Inappropriate Antidiuresis, renal losses, adrenal insufficiency', 'TextBox 21': 'Plasma Na\u207a falls ~1.6\u20132.4 mM per 100 mg/dL rise in glucose.\nResolves after correction of hyperglycaemia.', 'TextBox 25': 'Syndrome of Inappropriate Antidiuresis: typically <4 mg/dL\nVolume depletion: often elevated\nUseful differentiator', 'TextBox 29': 'Elevated BUN suggests renal dysfunction\nPre-renal: BUN rises disproportionately to creatinine', 'TextBox 33': 'Urine-to-plasma electrolyte ratio: [Urine Na\u207a + Urine K\u207a] / Plasma Na\u207a\n>1: Restrict to <500 mL/d\n~1: Restrict to 500\u2013700 mL/d\n<1: Restrict to <1 L/d', 'TextBox 37': 'Thyroid-stimulating hormone: Exclude hypothyroidism\nMorning cortisol test: Exclude adrenal insufficiency', } for shape in slide13.shapes: if shape.name in fixes13 and shape.has_text_frame: replace_text_in_shape(shape, fixes13[shape.name]) # Slide 14 (index 13) - fix treatment overview slide14 = prs.slides[13] fixes14 = { 'TextBox 9': '• Acute (<48 h): headache, nausea → seizures, coma\n• Chronic (>48 h): Usually fewer acute symptoms\n• Urgency determined by symptom severity', 'TextBox 13': '• >8\u201310 mM rise in first 24 hours\n• >18 mM within first 48 hours\n• Monitor plasma Na\u207a every 2\u20134 hours during correction', 'TextBox 17': '• Antidiuretic hormone normalisation can cause sudden water diuresis\n• Check plasma Na\u207a every 2\u20134 hours during active treatment', } for shape in slide14.shapes: if shape.name in fixes14 and shape.has_text_frame: replace_text_in_shape(shape, fixes14[shape.name]) # Slide 7 (index 6) - causes of SIAD - fix multi-line slide7 = prs.slides[6] fixes7 = { 'TextBox 9': '• Small cell lung carcinoma\n• GI and GU tract tumours\n• Lymphomas', 'TextBox 17': '• Infections (bacterial, viral, tuberculosis)\n• Asthma / Cystic fibrosis\n• ARDS / Positive pressure ventilation', 'TextBox 24': '• Meningitis / Encephalitis\n• Head trauma\n• Subarachnoid haemorrhage\n• Guillain-Barré syndrome', 'TextBox 34': '• Selective serotonin reuptake inhibitors\n• Carbamazepine / Tricyclics\n• Antipsychotics\n• Cyclophosphamide', 'TextBox 48': '• Idiopathic\n• Exercise / Nausea / Pain\n• Desmopressin, Oxytocin', } for shape in slide7.shapes: if shape.name in fixes7 and shape.has_text_frame: replace_text_in_shape(shape, fixes7[shape.name]) # Slide 19 (index 18) - correction rate - fix multi-line slide19 = prs.slides[18] fixes19 = { 'TextBox 6': '• Chronic hyponatremia: Target <6\u20138 mM rise in first 24 h; <6 mM each subsequent 24 h\n• Lower targets for high-risk patients (alcoholics, malnourished, hypokalaemia)\n• Overcorrection can occur when antidiuretic hormone levels rapidly normalise:\n \u2013 After normal saline in hypovolemic patients\n \u2013 After glucocorticoid replacement\n \u2013 Spontaneous water diuresis in polydipsia', 'TextBox 21': '\u26a0 Desmopressin + hypertonic saline \u201cclamp\u201d approach:\nUsed in severe hyponatremia to allow controlled correction', } for shape in slide19.shapes: if shape.name in fixes19 and shape.has_text_frame: replace_text_in_shape(shape, fixes19[shape.name]) # Slide 20 (index 19) - summary - fix multi-line slide20 = prs.slides[19] fixes20 = { 'TextBox 10': 'Measure serum osmolality. Exclude pseudohyponatremia and hypertonic causes (hyperglycaemia). Effective osmolality <275 mOsm/kg confirms true hyponatremia.', 'TextBox 15': 'Classify as hypovolemic, euvolemic, or hypervolemic using clinical exam (pulse, blood pressure, skin turgor, oedema).', 'TextBox 20': 'Urine Na\u207a: Distinguishes renal from non-renal loss.\nUrine osmolality: Distinguishes antidiuretic hormone excess from polydipsia.\nCalculate urine-to-plasma electrolyte ratio if fluid restriction planned.', 'TextBox 25': 'Acute (<48 h) or chronic (>48 h)?\nSeverity: mild (130\u2013134), moderate (125\u2013129), severe (<125 mM)\nPresence of symptoms determines urgency.', 'TextBox 30': 'Hypovolemic: isotonic saline.\nEuvolemic: fluid restriction \u00b1 pharmacotherapy.\nHypervolemic: treat underlying cause \u00b1 diuretics/vaptans.', 'TextBox 35': 'Check plasma Na\u207a every 2\u20134 hours. Target: <8\u201310 mM rise in 24 h.\nIf overcorrection: desmopressin + free water immediately.', } for shape in slide20.shapes: if shape.name in fixes20 and shape.has_text_frame: replace_text_in_shape(shape, fixes20[shape.name]) # Slide 16 (index 15) - treatment euvolemic slide16 = prs.slides[15] fixes16 = { 'TextBox 11': 'Tolvaptan (oral V\u2082 antagonist) \u2013 approved for Syndrome of Inappropriate Antidiuresis\nConivaptan (intravenous)\n\u26a0 Liver toxicity \u2013 limit to <1\u20132 months', 'TextBox 14': 'Inhibits principal cells \u2192 nephrogenic diabetes insipidus-like effect\n\u26a0 Risk of nephrotoxicity in cirrhosis', 'TextBox 17': 'Increases solute excretion \u2192 free water excretion\nComparable efficacy to vaptans', } for shape in slide16.shapes: if shape.name in fixes16 and shape.has_text_frame: replace_text_in_shape(shape, fixes16[shape.name]) # Slide 17 (index 16) - treatment hypervolemic slide17 = prs.slides[16] fixes17 = { 'TextBox 9': '\u2714 Approved for: heart failure and Syndrome of Inappropriate Antidiuresis\n\u2714 Mechanism: Aquaretic \u2013 free water excretion without Na\u207a loss\n\u26a0 Contraindicated in:\n - Hypovolemic hyponatremia\n - Cirrhosis (nephrotoxicity)\n\u26a0 ~10% may overcorrect \u2013 monitor Na\u207a closely', } for shape in slide17.shapes: if shape.name in fixes17 and shape.has_text_frame: replace_text_in_shape(shape, fixes17[shape.name]) # Slide 18 (index 17) - treatment acute slide18 = prs.slides[17] fixes18 = { 'TextBox 8': '• Target: Increase plasma Na\u207a by 1\u20132 mM/h to a total of 4\u20136 mM initially\n• Bolus (preferred): 100 mL of 3% hypertonic saline intravenously\n \u2013 May repeat if symptoms persist\n• Na\u207a deficit = 0.6 \u00d7 body weight (kg) \u00d7 (target Na\u207a \u2013 starting Na\u207a)\n• Once severe symptoms resolve, switch to slower correction rate', } for shape in slide18.shapes: if shape.name in fixes18 and shape.has_text_frame: replace_text_in_shape(shape, fixes18[shape.name]) prs.save('/tmp/workspace/hyponatremia/Hyponatremia_Concise.pptx') print("All fixes applied and saved!") PYEOF
Hyponatremia Concise
Presentation · PPTX
Explain avp secretion pathway in 4 th slide
"When blood is too concentrated or volume is too low, AVP is released from the pituitary, travels to the kidney, opens water channels, and water is reabsorbed back - but if this happens inappropriately or excessively, it dilutes sodium and causes hyponatremia."
Barrter and shwartz criteria
| # | Criterion | What it means simply |
|---|---|---|
| 1 | Serum osmolality < 275 mOsm/kg | True hypotonic hyponatremia must be present - not pseudohyponatremia or hyperglycaemia |
| 2 | Urine osmolality > 100 mOsm/kg | The kidneys are NOT diluting urine maximally - antidiuretic hormone is active when it shouldn't be |
| 3 | Clinical euvolemia | No signs of volume depletion (no dry mouth, no postural drop, no tachycardia) AND no oedema or ascites |
| 4 | Urine Na⁺ > 30 mEq/L | Kidneys are still excreting sodium despite low blood sodium - this is "inappropriate" |
| 5 | Normal thyroid, adrenal, and kidney function | SIAD is a diagnosis of exclusion - hypothyroidism, adrenal insufficiency, and chronic kidney disease must be ruled out |
| # | Criterion | Significance |
|---|---|---|
| 1 | Abnormal water load test - unable to excrete 80% of a 20 mL/kg water load in 4 hours AND/OR fails to dilute urine osmolality below 100 mOsm/kg | Confirms impaired free water excretion |
| 2 | Plasma antidiuretic hormone level inappropriately elevated relative to plasma osmolality | Direct evidence of inappropriate hormone secretion |
| 3 | No correction of Na⁺ with normal saline, but improvement with fluid restriction | Distinguishes SIAD from hypovolemic hyponatremia - giving saline to SIAD patients does NOT raise sodium (or worsens it) |
| 4 | Fractional uric acid excretion > 12% | SIAD causes hypo-uricaemia - the kidney wastes uric acid along with sodium |
"Low serum osmolality, Inappropriately high urine osmolality, Elevated urine Na⁺, Normal volume, Normal thyroid/adrenal/kidneys"