Diffuse alveolar hemorrhage no short form according to harrison
"alveolar hemorrhage"
Diffuse alveolar hemorrhage diagnosis management review 2025
| Cause | Core approach |
|---|---|
| Antineutrophil cytoplasmic antibody-associated vasculitis | Glucocorticoids plus remission-induction treatment, generally rituximab or cyclophosphamide for severe disease |
| Anti-glomerular basement membrane disease | Urgent glucocorticoids, cyclophosphamide, and plasma exchange, usually with nephrology involvement |
| Systemic lupus erythematosus | High-dose glucocorticoids with immunosuppressive treatment selected according to severity and organ involvement |
| Drug-induced disease | Stop the causative drug and manage immune disease if present |
| Coagulopathy or anticoagulant-related bleeding | Reverse or correct the hemostatic defect |
| Cardiac pulmonary venous hypertension | Treat heart failure or mitral valve disease |
| Infection | Targeted antimicrobial therapy and careful reassessment before immunosuppression |
Make ppt
diffuse alveolar hemorrhage chest CT ground glass opacities bronchoscopy serial bronchoalveolar lavage
"alveolar hemorrhage"
Diffuse alveolar hemorrhage review diagnostic bronchoalveolar lavage pulmonary renal syndrome
~/
~/
mkdir -p "/tmp/workspace/dah-harrison-ppt/src" "/tmp/workspace/dah-harrison-ppt/output" && python - <<'PY' from pathlib import Path p=Path('/tmp/workspace/dah-harrison-ppt/src/create_dah_ppt.py') p.write_text(r'''from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RGBColor from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.enum.dml import MSO_THEME_COLOR from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPE from pptx.enum.text import MSO_AUTO_SIZE # Palette NAVY=RGBColor(13,34,58); BLUE=RGBColor(29,94,153); TEAL=RGBColor(24,137,143) RED=RGBColor(177,45,59); PALE_RED=RGBColor(251,235,236); PALE_BLUE=RGBColor(234,244,252) INK=RGBColor(33,43,54); MUTED=RGBColor(92,108,122); WHITE=RGBColor(255,255,255) GRAY=RGBColor(222,230,236); PALE=RGBColor(247,250,252); GOLD=RGBColor(240,180,75) prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5) blank=prs.slide_layouts[6] def rect(slide,x,y,w,h,color, radius=False, line=None): sh=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE if radius else MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h)) sh.fill.solid(); sh.fill.fore_color.rgb=color sh.line.color.rgb = line if line else color if radius: sh.adjustments[0]=0.10 return sh def line(slide,x1,y1,x2,y2,color=GRAY,width=1.5): sh=slide.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Inches(x1), Inches(y1), Inches(x2), Inches(y2)); sh.line.color.rgb=color; sh.line.width=Pt(width); return sh def tb(slide,x,y,w,h,text,size=18,color=INK,bold=False,align=PP_ALIGN.LEFT, font='Aptos', valign=MSO_ANCHOR.TOP): sh=slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)); tf=sh.text_frame tf.clear(); tf.word_wrap=True; tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=0; tf.vertical_anchor=valign p=tf.paragraphs[0]; p.alignment=align r=p.add_run(); r.text=text; r.font.name=font; r.font.size=Pt(size); r.font.bold=bold; r.font.color.rgb=color return sh def bullet_list(slide,x,y,w,h,items,size=17,color=INK,leading=0.20): sh=slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)); tf=sh.text_frame; tf.clear(); tf.word_wrap=True tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=0 for i,item in enumerate(items): p=tf.paragraphs[0] if i==0 else tf.add_paragraph(); p.text=item; p.level=0; p.font.name='Aptos'; p.font.size=Pt(size); p.font.color.rgb=color; p.space_after=Pt(leading*72); p.bullet=True return sh def base(slide,number,title,kicker='DIFFUSE ALVEOLAR HEMORRHAGE'): rect(slide,0,0,13.333,0.16,TEAL); tb(slide,0.62,0.36,9.9,0.26,kicker,9,TEAL,True) tb(slide,0.62,0.67,11.8,0.58,title,28,NAVY,True) line(slide,0.62,1.36,12.72,1.36,GRAY,1) tb(slide,0.62,7.14,8.5,0.17,'Harrison’s Principles of Internal Medicine, 22nd ed. (2025)',8,MUTED) tb(slide,12.22,7.1,0.5,0.2,str(number).zfill(2),9,TEAL,True,PP_ALIGN.RIGHT) def pill(slide,x,y,w,text,color=BLUE): rect(slide,x,y,w,0.34,color,True); tb(slide,x+0.13,y+0.075,w-0.26,0.16,text,10,WHITE,True,PP_ALIGN.CENTER) def card(slide,x,y,w,h,title,body,accent=TEAL): rect(slide,x,y,w,h,WHITE,True,GRAY); rect(slide,x,y,0.07,h,accent,False,accent) tb(slide,x+0.24,y+0.20,w-0.42,0.26,title,15,NAVY,True) tb(slide,x+0.24,y+0.57,w-0.42,h-0.7,body,13,INK) def add_notes(slide, text): notes=slide.notes_slide.notes_text_frame notes.text=text # 1 Title s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,NAVY); rect(s,0,0,0.18,7.5,TEAL) # alveolar dots for x,y,r,c in [(10.5,1.2,.55,BLUE),(11.45,1.8,.75,TEAL),(10.75,2.6,.42,RED),(11.9,3.05,.55,BLUE),(10.0,3.65,.7,TEAL),(11.05,4.25,.4,RED),(12.05,4.6,.7,BLUE),(10.3,5.25,.4,TEAL)]: sh=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(y), Inches(r), Inches(r)); sh.fill.solid(); sh.fill.fore_color.rgb=c; sh.fill.transparency=15; sh.line.color.rgb=c line(s,9.5,1.4,11.4,2.05,RGBColor(77,159,171),2); line(s,10.3,3.9,11.8,3.3,RGBColor(77,159,171),2); line(s,10.5,5.5,12.25,4.9,RGBColor(77,159,171),2) tb(s,0.78,1.42,7.9,0.38,'HARRISON-BASED CLINICAL REVIEW',12,RGBColor(141,208,207),True) tb(s,0.76,1.94,8.5,1.42,'Diffuse Alveolar\nHemorrhage',41,WHITE,True) tb(s,0.80,3.73,7.5,0.56,'Recognition, confirmation, etiologic reasoning, and immediate management',18,RGBColor(211,224,233)) rect(s,0.78,5.23,5.55,0.55,TEAL,True); tb(s,1.04,5.39,5.05,0.17,'A medical emergency causing hypoxemic respiratory failure',11,WHITE,True) tb(s,0.80,6.62,7.2,0.22,'Prepared from Harrison’s Principles of Internal Medicine, 22nd ed. (2025)',9,RGBColor(176,194,207)) add_notes(s,'Opening slide. Define the session focus: recognize DAH early and identify pulmonary-renal syndrome.') # 2 Definition s=prs.slides.add_slide(blank); base(s,2,'What is diffuse alveolar hemorrhage?') tb(s,.66,1.72,5.75,.84,'Bleeding from the pulmonary microcirculation into alveolar spaces.',25,NAVY,True) tb(s,.68,2.75,5.6,.72,'It is a syndrome, not a single diagnosis. The underlying cause determines treatment.',17,INK) # schematic rect(s,7.0,1.75,5.1,3.8,PALE_BLUE,True,GRAY); tb(s,7.34,2.05,4.4,.25,'Alveolar-capillary barrier',15,NAVY,True) # capillary line line(s,7.55,3.45,11.55,3.45,RED,4) for x in [7.8,8.8,9.8,10.8]: sh=s.shapes.add_shape(MSO_SHAPE.OVAL,Inches(x),Inches(3.18),Inches(.32),Inches(.32)); sh.fill.solid(); sh.fill.fore_color.rgb=RED; sh.line.color.rgb=RED for x,y in [(8.0,4.15),(9.1,4.55),(10.2,4.1),(11.0,4.6)]: sh=s.shapes.add_shape(MSO_SHAPE.OVAL,Inches(x),Inches(y),Inches(.46),Inches(.46)); sh.fill.solid(); sh.fill.fore_color.rgb=RGBColor(244,198,201); sh.line.color.rgb=RED line(s,8.0,3.6,8.15,4.0,RED,1.5); line(s,9.0,3.6,9.3,4.4,RED,1.5); line(s,10.5,3.6,10.4,4.0,RED,1.5) tb(s,7.35,5.0,4.4,.24,'Capillary injury → alveolar flooding with blood',13,RED,True,PP_ALIGN.CENTER) card(s,.68,4.46,1.85,1.40,'Pattern 1','Capillaritis\nimmune injury',RED) card(s,2.72,4.46,1.85,1.40,'Pattern 2','Bland hemorrhage\nhemostatic / pressure',BLUE) card(s,4.76,4.46,1.85,1.40,'Pattern 3','Diffuse alveolar damage',TEAL) add_notes(s,'DAH indicates leakage of red cells into alveoli. The pathology may be capillaritis, bland hemorrhage, or diffuse alveolar damage.') #3 presentation s=prs.slides.add_slide(blank); base(s,3,'Clinical presentation: think beyond hemoptysis') pill(s,.68,1.66,2.05,'CLASSIC SYNDROME',RED) bullet_list(s,.75,2.2,5.4,2.7,['Acute or subacute dyspnea','Hemoptysis','New bilateral alveolar opacities','Falling hemoglobin concentration'],20,NAVY,.27) rect(s,6.48,1.75,5.66,2.12,PALE_RED,True,RGBColor(239,189,193)); tb(s,6.82,2.05,4.95,.30,'Do not rule it out when there is no hemoptysis',17,RED,True); tb(s,6.82,2.58,4.80,.72,'Harrison’s notes that significant parenchymal bleeding is often not accompanied by expectorated blood.',14,INK) card(s,.7,5.22,3.58,1.05,'Severity signs','Hypoxemia • tachycardia • hemodynamic instability',TEAL) card(s,4.55,5.22,3.58,1.05,'Systemic clues','Rash • sinus/ear disease • neuropathy • arthritis',BLUE) card(s,8.4,5.22,3.58,1.05,'Renal clues','Hematuria • proteinuria • rising creatinine • RBC casts',RED) add_notes(s,'The classical triad is incomplete. New infiltrates plus decreasing hemoglobin and hypoxemia should trigger suspicion even without hemoptysis.') #4 causes s=prs.slides.add_slide(blank); base(s,4,'Etiologic framework: classify before treating') card(s,.7,1.72,3.78,3.92,'Immune capillaritis','• ANCA-associated vasculitis\n• Anti-GBM disease\n• Systemic lupus erythematosus\n• Antiphospholipid syndrome\n• Drug-induced vasculitis',RED) card(s,4.78,1.72,3.78,3.92,'Bland hemorrhage','• Anticoagulants / coagulopathy\n• Severe thrombocytopenia\n• Mitral stenosis\n• Left-sided heart failure\n• Pulmonary venous hypertension',BLUE) card(s,8.86,1.72,3.78,3.92,'Alveolar damage / other','• Acute respiratory distress syndrome\n• Infection\n• Inhalational injury / cocaine\n• Stem-cell transplantation\n• Vaping-related injury',TEAL) tb(s,.72,6.12,11.5,.28,'High-yield Harrison’s association: pulmonary-renal syndromes include granulomatosis with polyangiitis and anti-glomerular basement membrane disease.',13,NAVY,True) add_notes(s,'Organize the differential by mechanism. The immune group needs time-sensitive immunologic and renal evaluation, but infection remains an important competing diagnosis.') #5 imaging s=prs.slides.add_slide(blank); base(s,5,'Imaging: supportive, not diagnostic') # stylized CT rect(s,.72,1.72,4.0,4.62,RGBColor(30,39,48),True,RGBColor(30,39,48)); sh=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(1.25), Inches(2.18), Inches(2.92), Inches(3.58)); sh.fill.solid(); sh.fill.fore_color.rgb=RGBColor(50,58,66); sh.line.color.rgb=RGBColor(50,58,66) for x,y,w,h in [(1.54,2.65,.9,1.68),(2.86,2.6,.86,1.85),(1.77,4.08,.8,.9),(2.69,4.13,.84,.82)]: sh=s.shapes.add_shape(MSO_SHAPE.OVAL,Inches(x),Inches(y),Inches(w),Inches(h)); sh.fill.solid(); sh.fill.fore_color.rgb=RGBColor(152,164,174); sh.fill.transparency=32; sh.line.color.rgb=RGBColor(152,164,174) tb(s,1.08,5.96,3.25,.18,'Illustrative CT pattern',10,WHITE,True,PP_ALIGN.CENTER) tb(s,5.35,1.82,6.8,.42,'Common computed tomography findings',21,NAVY,True) bullet_list(s,5.4,2.52,5.8,1.85,['Bilateral ground-glass opacities','Patchy or diffuse consolidation','May mimic pulmonary edema, infection, or acute respiratory distress syndrome'],17,INK,.26) rect(s,5.35,4.75,6.42,1.15,PALE_BLUE,True,GRAY); tb(s,5.68,5.03,5.7,.20,'Imaging helps identify the pattern and alternatives. It cannot confirm DAH alone.',14,BLUE,True) add_notes(s,'Use CT and chest radiograph to recognize bilateral alveolar disease and assess mimics. Diagnosis still requires clinical synthesis and often BAL.') #6 confirmation s=prs.slides.add_slide(blank); base(s,6,'Confirming the syndrome: serial bronchoalveolar lavage') tb(s,.72,1.70,11.1,.35,'Bronchoscopy supports DAH when sequential lavage aliquots from the same site become progressively bloodier.',19,NAVY,True) # arrows and tubes for i,(x,lab,fill) in enumerate([(1.12,'Aliquot 1',RGBColor(252,222,223)),(4.12,'Aliquot 2',RGBColor(232,143,149)),(7.12,'Aliquot 3',RED)]): rect(s,x,3.0,1.7,1.85,fill,True,fill); rect(s,x+.55,2.58,.60,.42,RGBColor(214,222,229),True,RGBColor(214,222,229)); tb(s,x,5.12,1.7,.20,lab,12,INK,True,PP_ALIGN.CENTER) if i<2: line(s,x+1.95,3.92,x+2.65,3.92,TEAL,2.5) tb(s,9.42,3.14,2.45,.74,'Increasing bloodiness\nor red-cell count',16,RED,True,PP_ALIGN.CENTER) card(s,.74,5.82,5.38,.74,'Also send lavage samples','Microbiology helps exclude infection before escalation of immunosuppression.',TEAL) card(s,6.38,5.82,5.38,.74,'Supportive delayed marker','Hemosiderin-laden macrophages can support recent hemorrhage.',BLUE) add_notes(s,'Harrison’s describes rising RBC counts or visibly bloodier sequential BAL returns. BAL also evaluates infection, a major management fork.') #7 approach s=prs.slides.add_slide(blank); base(s,7,'A practical diagnostic approach') steps=[('1','Stabilize','Oxygenation, airway risk, hemodynamics, blood count'),('2','Recognize','Infiltrates + anemia ± hemoptysis'),('3','Confirm','Serial BAL if feasible; assess infection'),('4','Phenotype','Urinalysis, renal function, coagulation, cardiac context'),('5','Identify cause','ANCA, anti-GBM, ANA/complement; targeted testing')] for i,(n,t,b) in enumerate(steps): y=1.7+i*.96 sh=s.shapes.add_shape(MSO_SHAPE.OVAL,Inches(.78),Inches(y),Inches(.48),Inches(.48)); sh.fill.solid(); sh.fill.fore_color.rgb=TEAL; sh.line.color.rgb=TEAL; tb(s,.78,y+.12,.48,.16,n,12,WHITE,True,PP_ALIGN.CENTER) tb(s,1.48,y+.02,2.1,.20,t,16,NAVY,True); tb(s,3.72,y+.03,7.65,.25,b,14,INK) if i<4: line(s,1.02,y+.49,1.02,y+.93,GRAY,1.5) rect(s,.74,6.72,11.72,.30,PALE_RED,True,RGBColor(239,189,193)); tb(s,.95,6.79,11.2,.16,'Urinalysis is a fast, high-yield discriminator: an active urine sediment points toward a pulmonary-renal syndrome.',11,RED,True,PP_ALIGN.CENTER) add_notes(s,'The initial approach runs in parallel: stabilize and investigate. A urinalysis is essential in suspected DAH due to the possibility of rapidly progressive glomerulonephritis.') #8 Management s=prs.slides.add_slide(blank); base(s,8,'Management: support first, treat the cause urgently') card(s,.72,1.70,3.78,4.85,'Immediate supportive care','• High-concentration oxygen\n• Escalate ventilatory support when required\n• Transfuse or correct coagulopathy as indicated\n• Stop/reverse anticoagulation when appropriate\n• Intensive-care involvement for severe hypoxemia',TEAL) card(s,4.78,1.70,3.78,4.85,'Immune-mediated DAH','• Glucocorticoids for severe immune disease\n• Rituximab or cyclophosphamide for severe ANCA-associated vasculitis\n• Anti-GBM disease: add plasma exchange with specialist care\n• Obtain tissue diagnosis when safe and useful',RED) card(s,8.84,1.70,3.78,4.85,'Avoid a harmful shortcut','• Exclude or cover infection when plausible\n• Treat cardiac / hemostatic cause when present\n• Plasma exchange is not routine solely for DAH in ANCA-associated vasculitis\n• Engage pulmonary, rheumatology, and nephrology early',BLUE) add_notes(s,'DAH is not treated with one universal regimen. Supportive care is immediate. Immunosuppression is directed by cause and should be balanced against infection risk.') #9 case s=prs.slides.add_slide(blank); base(s,9,'Clinical reasoning: the pulmonary-renal warning pattern') rect(s,.72,1.72,5.25,4.9,PALE,True,GRAY); tb(s,1.02,2.05,4.6,.28,'Scenario',16,NAVY,True) tb(s,1.02,2.55,4.48,1.54,'A patient develops acute dyspnea, diffuse ground-glass opacities, a falling hemoglobin level, microscopic hematuria, and a rising creatinine concentration.',17,INK) rect(s,1.02,4.85,4.4,.92,PALE_RED,True,RGBColor(239,189,193)); tb(s,1.25,5.13,3.95,.30,'Assume DAH with pulmonary-renal syndrome until proven otherwise.',14,RED,True,PP_ALIGN.CENTER) # right reasoning for y,t,b,c in [(1.82,'Immediate actions','Oxygenation; CBC; coagulation tests; urinalysis; renal function; infectious samples',TEAL),(3.18,'Urgent etiologic tests','ANCA; anti-GBM; ANA / anti-dsDNA; complement; consider echocardiography',BLUE),(4.54,'Confirmation pathway','Bronchoscopy with serial BAL if patient condition permits; early renal biopsy if indicated',RED)]: rect(s,6.38,y,5.78,1.06,WHITE,True,GRAY); rect(s,6.38,y,.09,1.06,c,False,c); tb(s,6.72,y+.17,2.35,.2,t,14,NAVY,True); tb(s,8.75,y+.15,3.0,.55,b,11,INK) add_notes(s,'This slide integrates pattern recognition. Pulmonary infiltrates plus active urinary sediment requires immediate consideration of vasculitis or anti-GBM disease.') #10 takeaway s=prs.slides.add_slide(blank); base(s,10,'Take-home messages') for i,(num,head,body,col) in enumerate([('01','Recognize','DAH may occur without hemoptysis. Consider it with hypoxemia, bilateral infiltrates, and falling hemoglobin.',RED),('02','Confirm','Serial bronchoalveolar lavage becomes increasingly bloody and helps investigate infection.',TEAL),('03','Search for renal disease','Urinalysis and renal function rapidly identify a pulmonary-renal pattern.',BLUE),('04','Treat the driver','Support respiration and hemostasis while urgently directing therapy at the cause.',NAVY)]): y=1.65+i*1.22 rect(s,.75,y,1.05,.77,col,True,col); tb(s,.75,y+.21,1.05,.25,num,16,WHITE,True,PP_ALIGN.CENTER) tb(s,2.08,y+.06,3.28,.24,head,17,NAVY,True); tb(s,5.45,y+.06,6.42,.45,body,13,INK) tb(s,.76,6.65,11.6,.18,'Core source: Harrison’s Principles of Internal Medicine, 22nd ed. (2025). Recent DAH evidence is largely cause-specific rather than a single universal management pathway.',9,MUTED) add_notes(s,'Summarize the recognition-confirmation-cause-specific treatment model. Emphasize that the presentation can be subtle and can deteriorate quickly.') # Sources slide s=prs.slides.add_slide(blank); base(s,11,'References') tb(s,.75,1.75,11.3,.30,'Primary teaching source',19,NAVY,True) tb(s,.75,2.25,11.5,.75,'Jameson JL, Fauci AS, Kasper DL, et al., eds. Harrison’s Principles of Internal Medicine. 22nd ed. McGraw Hill; 2025. Sections on hemoptysis, bronchoscopy, ANCA-associated vasculitis, anti-GBM disease, systemic lupus erythematosus, and respiratory failure.',15,INK) tb(s,.75,3.45,11.3,.30,'Recent evidence check',19,NAVY,True) tb(s,.75,3.94,11.5,.65,'Ruffatti A, et al. Risk and triggering factors for diffuse alveolar hemorrhage in primary antiphospholipid syndrome: an observational follow-up study and systematic review. Semin Arthritis Rheum. 2025;152697. PMID: 40056479.',14,INK) rect(s,.75,5.35,11.35,.83,PALE_BLUE,True,GRAY); tb(s,1.05,5.62,10.75,.27,'Clinical use: This deck is for education and does not replace emergency assessment or local specialty protocols.',13,BLUE,True,PP_ALIGN.CENTER) out='/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison.pptx' prs.save(out) print(out) ''') PY python "/tmp/workspace/dah-harrison-ppt/src/create_dah_ppt.py" python - <<'PY' from pptx import Presentation p='/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison.pptx' prs=Presentation(p) print('slides',len(prs.slides)) for i,s in enumerate(prs.slides,1): texts=[] for sh in s.shapes: if sh.has_text_frame and sh.text.strip(): texts.append(sh.text.replace('\n',' | ')) print(i, ' :: '.join(texts[:3])) PY
~/dah-harrison-ppt/output
python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison.pptx') assert p.exists() and p.stat().st_size > 10000, (p.exists(), p.stat().st_size if p.exists() else 0) prs=Presentation(str(p)) assert len(prs.slides)==11 for i, slide in enumerate(prs.slides,1): assert len(slide.shapes)>0, i print(f'validated: {p.name}; {len(prs.slides)} slides; {p.stat().st_size} bytes') PY
Diffuse Alveolar Hemorrhage Harrison
Presentation · PPTX
Make atleast 20 page ppt don't reduce content
~/
"alveolar hemorrhage"
Diffuse alveolar hemorrhage diagnosis bronchoalveolar lavage treatment review
diffuse alveolar hemorrhage chest CT ground glass opacity image

Educational comparison of thoracic imaging modalities in a patient with diffuse alveolar hemorrhage (DAH). Image A is a postoperative anteroposterior (AP) chest radiograph showing extensive, bilateral lung consolidation presenting as ill-defined areas of increased opacity throughout both hemithoraces. Image B is an axial chest computed tomography (CT) scan in lung window at the level of the main bronchi. The CT demonstrates a symmetrical, bilateral peribronchial alveolar pattern characterized by dense consolidations following the airway distribution. Interspersed with these consolidations are diffuse ground-glass opacities (GGO), which indicate partial filling of air spaces or interstitial thickening. The findings are characteristic of severe non-cardiogenic pulmonary edema or acute respiratory distress syndrome (ARDS) manifesting as pulmonary hemorrhage. The comparison highlights the superior sensitivity of CT in localizing the peribronchial distribution of alveolar patterns versus the more generalized consolidation visible on plain film radiography.

This composite medical image illustrates a case of Diffuse Alveolar Hemorrhage (DAH) secondary to cryoglobulinemic vasculitis through multimodality imaging and pathology.

This diagnostic imaging panel consists of a chest X-ray (A) and an axial chest CT scan (B) demonstrating diffuse lung pathology. Image A is a frontal radiograph showing extensive, bilateral pulmonary infiltrations characterized by increased opacity, which appears most dense in the upper and middle lung zones. Image B is a high-resolution CT (HRCT) slice showing widespread ground-glass opacities (GGO) with superimposed interlobular septal thickening, creating a classic 'crazy-paving' pattern. These findings involve nearly all lung segments symmetrically, affecting both central and peripheral regions without significant sparing. Clinically, this combination of radiological signs is indicative of acute alveolar filling processes, such as Diffuse Alveolar Hemorrhage (DAH), pulmonary alveolar proteinosis, or severe atypical pneumonia. The imaging serves as an educational example of advanced interstitial and alveolar lung disease patterns and their appearance across different imaging modalities.

Diagnostic Imaging: This image displays axial slices of a chest computerized tomography (CT) scan in a lung window, representing the upper and lower pulmonary regions. The imaging reveals diffuse, bilateral pulmonary opacities. Key findings include extensive ground-glass opacity (GGO), appearing as a hazy increase in lung density that partially obscures but does not completely hide pulmonary vessels, and areas of airspace consolidation, characterized by denser opacification with obscuration of vascular markings. The distribution is widespread across both lung fields, with consolidation appearing more prominent in the upper lobes. This radiographic pattern is highly suggestive of diffuse alveolar disease, such as atypical pneumonia (e.g., Pneumocystis jirovecii pneumonia), pulmonary edema, or alveolar hemorrhage. It serves as a classic educational example for distinguishing between GGO and consolidation in the context of bilateral diffuse lung infiltration.
~/dah-harrison-ppt
python - <<'PY' from pathlib import Path p=Path('/tmp/workspace/dah-harrison-ppt/src/create_expanded_dah_ppt.py') p.write_text(r'''from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RGBColor from pptx.enum.shapes import MSO_SHAPE, MSO_CONNECTOR from pptx.enum.text import PP_ALIGN, MSO_ANCHOR NAVY=RGBColor(13,34,58); BLUE=RGBColor(29,94,153); TEAL=RGBColor(24,137,143); RED=RGBColor(177,45,59) INK=RGBColor(33,43,54); MUTED=RGBColor(92,108,122); WHITE=RGBColor(255,255,255); GRAY=RGBColor(222,230,236) PALE=RGBColor(247,250,252); PBLUE=RGBColor(234,244,252); PRED=RGBColor(251,235,236); PGREEN=RGBColor(231,247,244) prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5); blank=prs.slide_layouts[6] def R(s,x,y,w,h,c,round=False,line=None): sh=s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE if round else MSO_SHAPE.RECTANGLE, Inches(x),Inches(y),Inches(w),Inches(h)); sh.fill.solid(); sh.fill.fore_color.rgb=c; sh.line.color.rgb=line or c; return sh def T(s,x,y,w,h,txt,sz=18,c=INK,b=False,align=PP_ALIGN.LEFT): sh=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=sh.text_frame;tf.clear();tf.word_wrap=True;tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=0 p=tf.paragraphs[0];p.alignment=align;r=p.add_run();r.text=txt;r.font.name='Aptos';r.font.size=Pt(sz);r.font.bold=b;r.font.color.rgb=c;return sh def L(s,x1,y1,x2,y2,c=GRAY,w=1): q=s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT,Inches(x1),Inches(y1),Inches(x2),Inches(y2));q.line.color.rgb=c;q.line.width=Pt(w) def B(s,x,y,w,h,items,sz=16,c=INK): sh=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h));tf=sh.text_frame;tf.clear();tf.word_wrap=True;tf.margin_left=tf.margin_right=tf.margin_top=tf.margin_bottom=0 for i,t in enumerate(items): p=tf.paragraphs[0] if i==0 else tf.add_paragraph();p.text=t;p.font.name='Aptos';p.font.size=Pt(sz);p.font.color.rgb=c;p.bullet=True;p.space_after=Pt(10) return sh def base(s,n,title): R(s,0,0,13.333,.16,TEAL);T(s,.62,.35,10,.22,'DIFFUSE ALVEOLAR HEMORRHAGE',9,TEAL,True);T(s,.62,.66,11.8,.5,title,27,NAVY,True);L(s,.62,1.35,12.72,1.35);T(s,.62,7.12,9,.15,'Harrison’s Principles of Internal Medicine, 22nd ed. (2025)',8,MUTED);T(s,12.12,7.1,.6,.16,f'{n:02}',9,TEAL,True,PP_ALIGN.RIGHT) def card(s,x,y,w,h,title,body,accent=TEAL): R(s,x,y,w,h,WHITE,True,GRAY);R(s,x,y,.07,h,accent);T(s,x+.23,y+.18,w-.4,.23,title,15,NAVY,True);T(s,x+.23,y+.54,w-.42,h-.66,body,13,INK) def notes(s,tx):s.notes_slide.notes_text_frame.text=tx # title s=prs.slides.add_slide(blank);R(s,0,0,13.333,7.5,NAVY);R(s,0,0,.18,7.5,TEAL) for x,y,r,c in [(10.1,1.1,.7,BLUE),(11.3,1.75,.8,TEAL),(10.7,2.75,.45,RED),(11.9,3.25,.55,BLUE),(10.0,4.05,.72,TEAL),(11.0,4.78,.43,RED),(12.0,5.1,.65,BLUE)]:R(s,x,y,r,r,c,True,c) T(s,.78,1.4,7.8,.28,'HARRISON-BASED CLINICAL REVIEW',12,RGBColor(141,208,207),True);T(s,.76,1.92,8.5,1.25,'Diffuse Alveolar\nHemorrhage',40,WHITE,True);T(s,.8,3.68,7.5,.5,'Recognition, confirmation, etiologic reasoning, and immediate management',18,RGBColor(211,224,233));R(s,.78,5.22,5.7,.54,TEAL,True);T(s,1.02,5.38,5.2,.16,'A medical emergency causing hypoxemic respiratory failure',11,WHITE,True);T(s,.8,6.62,7.2,.18,'Expanded teaching presentation | 23 slides',9,RGBColor(176,194,207));notes(s,'Introduce DAH as a medical emergency and a syndrome rather than one diagnosis.') # outline s=prs.slides.add_slide(blank);base(s,2,'Learning objectives and roadmap');B(s,.82,1.75,5.5,4.7,['Recognize the clinical syndrome even when hemoptysis is absent','Classify causes by mechanism: capillaritis, bland hemorrhage, diffuse alveolar damage','Confirm suspected hemorrhage and rapidly identify pulmonary-renal disease','Start supportive care and deliver cause-directed treatment'],18);card(s,7.1,1.72,4.6,1.0,'01 Recognition','Presentation and red flags',TEAL);card(s,7.1,2.95,4.6,1.0,'02 Confirmation','Imaging, lavage, laboratory testing',BLUE);card(s,7.1,4.18,4.6,1.0,'03 Etiology','Immune, cardiac, hemostatic, toxic, infectious',RED);card(s,7.1,5.41,4.6,1.0,'04 Management','Stabilization and targeted therapy',NAVY) # definition s=prs.slides.add_slide(blank);base(s,3,'Definition: a syndrome of alveolar bleeding');T(s,.72,1.72,5.8,.72,'Bleeding from the pulmonary microcirculation into alveolar spaces.',25,NAVY,True);T(s,.72,2.7,5.7,.65,'Diffuse alveolar hemorrhage is a clinical syndrome, not a single disease.',17,INK);R(s,7,1.7,5.1,3.8,PBLUE,True,GRAY);T(s,7.3,2.03,4.4,.22,'Alveolar-capillary barrier',15,NAVY,True) L(s,7.6,3.4,11.45,3.4,RED,4) for x in [7.8,8.75,9.7,10.65]:R(s,x,3.17,.3,.3,RED,True) for x,y in [(8.1,4.1),(9.25,4.55),(10.3,4.12),(11.0,4.55)]:R(s,x,y,.45,.45,RGBColor(244,198,201),True,RED) T(s,7.35,5.1,4.45,.2,'Capillary injury → blood in alveoli',13,RED,True,PP_ALIGN.CENTER);card(s,.72,4.55,1.82,1.35,'Pattern 1','Capillaritis\nimmune injury',RED);card(s,2.7,4.55,1.82,1.35,'Pattern 2','Bland hemorrhage\npressure / hemostasis',BLUE);card(s,4.68,4.55,1.82,1.35,'Pattern 3','Diffuse alveolar damage',TEAL) # Why important s=prs.slides.add_slide(blank);base(s,4,'Why DAH matters');card(s,.72,1.7,3.7,4.75,'Physiologic threat','Alveoli fill with blood, impairing gas exchange and producing severe hypoxemia. Acute respiratory failure can develop rapidly.',RED);card(s,4.82,1.7,3.7,4.75,'Diagnostic threat','It mimics infection, pulmonary edema, and acute respiratory distress syndrome. Hemoptysis can be absent.',BLUE);card(s,8.92,1.7,3.7,4.75,'Therapeutic threat','Incorrectly delaying treatment of vasculitis or anti-GBM disease risks irreversible renal and pulmonary injury. Premature immunosuppression can worsen infection.',TEAL) # clinical triad s=prs.slides.add_slide(blank);base(s,5,'Clinical presentation: the classical syndrome');T(s,.75,1.7,11,.28,'Think of DAH with this four-part pattern',20,NAVY,True) for i,(h,b,c) in enumerate([('Dyspnea','Acute or subacute hypoxemia',TEAL),('Hemoptysis','May be absent',RED),('Infiltrates','New bilateral alveolar opacities',BLUE),('Anemia','Falling hemoglobin concentration',NAVY)]): x=.75+i*3.0;R(s,x,2.45,2.55,2.22,WHITE,True,GRAY);R(s,x,2.45,2.55,.12,c);T(s,x+.22,2.87,2.1,.3,h,19,NAVY,True,PP_ALIGN.CENTER);T(s,x+.22,3.53,2.1,.38,b,14,INK,False,PP_ALIGN.CENTER) R(s,.75,5.45,11.85,.72,PRED,True,RGBColor(239,189,193));T(s,1.05,5.68,11.2,.21,'Absence of hemoptysis does not exclude DAH. Blood may remain within the alveolar compartment.',15,RED,True,PP_ALIGN.CENTER) # red flags s=prs.slides.add_slide(blank);base(s,6,'Clinical red flags and systemic clues');card(s,.72,1.68,3.7,4.85,'Respiratory severity','• Escalating oxygen requirement\n• Tachypnea or respiratory fatigue\n• Refractory hypoxemia\n• Need for ventilatory support',RED);card(s,4.82,1.68,3.7,4.85,'Vasculitis clues','• Purpura or skin rash\n• Sinusitis, otitis, nasal disease\n• Mononeuritis multiplex\n• Arthralgia / constitutional features',TEAL);card(s,8.92,1.68,3.7,4.85,'Renal clues','• Hematuria\n• Proteinuria\n• Red-cell casts / active sediment\n• Rising creatinine',BLUE) # pathology s=prs.slides.add_slide(blank);base(s,7,'Pathologic patterns of alveolar hemorrhage');card(s,.75,1.72,3.68,4.85,'Pulmonary capillaritis','Neutrophilic injury to alveolar capillaries. Typical of ANCA-associated vasculitis, anti-GBM disease, and connective-tissue disorders.',RED);card(s,4.83,1.72,3.68,4.85,'Bland hemorrhage','Blood in alveoli without capillaritis. Consider anticoagulation, coagulopathy, thrombocytopenia, mitral stenosis, and heart failure.',BLUE);card(s,8.91,1.72,3.68,4.85,'Diffuse alveolar damage','Hemorrhage accompanies acute lung injury such as acute respiratory distress syndrome, infection, toxins, or transplantation.',TEAL) # immune s=prs.slides.add_slide(blank);base(s,8,'Immune-mediated causes: capillaritis');B(s,.78,1.76,5.4,4.8,['Granulomatosis with polyangiitis','Microscopic polyangiitis','Anti-glomerular basement membrane disease','Systemic lupus erythematosus','Antiphospholipid syndrome','Drug-induced ANCA-associated vasculitis'],18);R(s,6.65,1.72,5.42,3.12,PRED,True,RGBColor(239,189,193));T(s,6.98,2.05,4.75,.25,'Pulmonary-renal syndrome',19,RED,True);T(s,6.98,2.58,4.65,1.28,'The combination of DAH and glomerulonephritis strongly suggests small-vessel vasculitis or anti-GBM disease. Either pulmonary or renal manifestations may predominate.',16,INK);R(s,6.65,5.27,5.42,.86,PGREEN,True,GRAY);T(s,6.96,5.55,4.86,.25,'Urgent serology and renal assessment are required.',14,TEAL,True,PP_ALIGN.CENTER) # nonimmune s=prs.slides.add_slide(blank);base(s,9,'Nonimmune causes: ask about pressure, hemostasis, and exposure');card(s,.75,1.72,3.68,4.7,'Hemostatic','Anticoagulants, thrombolysis, platelet dysfunction, disseminated intravascular coagulation, severe thrombocytopenia.',RED);card(s,4.83,1.72,3.68,4.7,'Cardiac / vascular','Mitral stenosis, severe left-sided heart failure, pulmonary venous hypertension, selected vascular lesions.',BLUE);card(s,8.91,1.72,3.68,4.7,'Toxic / other','Cocaine and other inhalants, vaping-associated injury, infections, hematopoietic stem-cell transplantation, idiopathic pulmonary hemosiderosis.',TEAL) # imaging CXR s=prs.slides.add_slide(blank);base(s,10,'Chest radiograph: an alveolar pattern with a broad differential');R(s,.8,1.72,4.15,4.45,RGBColor(34,42,50),True);R(s,1.45,2.2,2.84,3.28,RGBColor(77,86,94),True);R(s,1.72,2.62,.92,1.52,RGBColor(158,166,172),True);R(s,3.0,2.58,.9,1.62,RGBColor(158,166,172),True);T(s,1.22,5.75,3.35,.18,'Illustrative bilateral opacity pattern',10,WHITE,True,PP_ALIGN.CENTER);B(s,5.5,1.9,5.95,2.4,['Diffuse or patchy bilateral alveolar opacities','May evolve quickly over hours to days','Can be indistinguishable from edema, infection, or acute respiratory distress syndrome on radiograph alone'],17);card(s,5.5,4.85,5.95,1.2,'Interpretation','Integrate radiograph with hemoglobin trend, clinical context, urine findings, and bronchoalveolar lavage.',BLUE) # CT s=prs.slides.add_slide(blank);base(s,11,'Computed tomography: common DAH features');R(s,.75,1.72,4.25,4.52,RGBColor(29,37,45),True);R(s,1.35,2.23,3.04,3.38,RGBColor(67,77,85),True) for x,y,w,h in [(1.62,2.65,.85,1.55),(2.92,2.57,.86,1.75),(1.85,4.05,.75,.88),(2.74,4.05,.8,.88)]:R(s,x,y,w,h,RGBColor(150,163,173),True) T(s,1.15,5.82,3.6,.18,'Stylized ground-glass / consolidation pattern',10,WHITE,True,PP_ALIGN.CENTER);B(s,5.48,1.85,6.0,2.45,['Bilateral ground-glass opacities','Patchy or diffuse consolidation','Central or diffuse distribution may occur','Computed tomography assesses extent and competing diagnoses'],17);R(s,5.48,4.88,5.85,.94,PBLUE,True,GRAY);T(s,5.75,5.18,5.3,.25,'Computed tomography supports suspicion but does not establish DAH.',14,BLUE,True,PP_ALIGN.CENTER) # differential s=prs.slides.add_slide(blank);base(s,12,'Differential diagnosis of bilateral opacities with hypoxemia');card(s,.75,1.65,2.75,4.9,'DAH clues','Falling hemoglobin\nProgressively bloody lavage\nVasculitis or renal clues',RED);card(s,3.75,1.65,2.75,4.9,'Pulmonary edema','Cardiac history\nVolume overload\nEchocardiographic context',BLUE);card(s,6.75,1.65,2.75,4.9,'Infection','Fever / microbiology\nImmunosuppression\nFocal or diffuse pattern',TEAL);card(s,9.75,1.65,2.75,4.9,'Acute lung injury','Trigger for acute respiratory distress syndrome\nDrug / toxin exposure\nInflammatory injury',NAVY) # labs s=prs.slides.add_slide(blank);base(s,13,'Initial laboratory evaluation');B(s,.78,1.7,5.5,4.9,['Complete blood count and serial hemoglobin','Platelet count and coagulation profile','Renal function and electrolytes','Urinalysis with microscopy','Type and screen when significant bleeding is suspected','Microbiologic samples when infection is plausible'],18);card(s,7.0,1.72,4.85,1.17,'Urinalysis is high yield','Proteinuria, dysmorphic red cells, or red-cell casts support glomerulonephritis.',RED);card(s,7.0,3.15,4.85,1.17,'Cardiac evaluation','Use clinical examination and echocardiography when pulmonary venous hypertension or heart failure is possible.',BLUE);card(s,7.0,4.58,4.85,1.17,'Do not wait for every result','Stabilization and urgent specialist discussion should occur in parallel.',TEAL) # serology s=prs.slides.add_slide(blank);base(s,14,'Etiologic testing when capillaritis is suspected');card(s,.75,1.7,3.7,4.85,'Vasculitis / anti-GBM','ANCA, including proteinase-3 and myeloperoxidase antibodies\n\nAnti-GBM antibody',RED);card(s,4.82,1.7,3.7,4.85,'Connective-tissue disease','Antinuclear antibody\nAnti-double-stranded DNA antibody\nComplement levels\nAntiphospholipid antibodies when indicated',BLUE);card(s,8.89,1.7,3.7,4.85,'Targeted studies','Medication and exposure review\nCryoglobulins when relevant\nInfectious studies\nCardiac evaluation and anticoagulant review',TEAL) # BAL s=prs.slides.add_slide(blank);base(s,15,'Bronchoscopy and bronchoalveolar lavage: confirming DAH');T(s,.75,1.68,11.3,.3,'Serial lavage from the same site becomes increasingly bloody or shows rising red-cell counts.',19,NAVY,True) for i,(x,label,c) in enumerate([(1.1,'Aliquot 1',RGBColor(252,222,223)),(4.12,'Aliquot 2',RGBColor(232,143,149)),(7.14,'Aliquot 3',RED)]):R(s,x,2.85,1.7,1.85,c,True);R(s,x+.55,2.45,.6,.4,GRAY,True);T(s,x,4.98,1.7,.18,label,12,INK,True,PP_ALIGN.CENTER); L(s,2.95,3.75,3.77,3.75,TEAL,2);L(s,5.97,3.75,6.79,3.75,TEAL,2);T(s,9.4,3.02,2.25,.7,'Progressively\nbloodier return',16,RED,True,PP_ALIGN.CENTER);card(s,.76,5.62,5.45,.75,'Microbiology','Lavage samples help exclude infection before immunosuppression.',TEAL);card(s,6.43,5.62,5.45,.75,'Cytology','Hemosiderin-laden macrophages support prior or ongoing hemorrhage.',BLUE) # biopsy s=prs.slides.add_slide(blank);base(s,16,'Role of biopsy: seek the safest diagnostic tissue');card(s,.75,1.72,3.7,4.65,'Renal biopsy','Preferred when urinary abnormalities suggest glomerulonephritis. It may identify pauci-immune disease, anti-GBM disease, or immune-complex pathology.',BLUE);card(s,4.82,1.72,3.7,4.65,'Lung biopsy','May be considered only if diagnosis remains uncertain and the result is expected to change management. Risk is substantial in severe respiratory failure.',RED);card(s,8.89,1.72,3.7,4.65,'Principle','Do not delay emergency stabilization or essential treatment solely to obtain tissue. Consult pulmonary, nephrology, and rheumatology early.',TEAL) # algorithm s=prs.slides.add_slide(blank);base(s,17,'Practical diagnostic algorithm') steps=[('1','Stabilize','Oxygenation, ventilation, hemodynamics'),('2','Recognize','Infiltrates + anemia ± hemoptysis'),('3','Confirm','Serial BAL if feasible; send microbiology'),('4','Phenotype','Urine, renal function, coagulation, cardiac context'),('5','Identify cause','ANCA, anti-GBM, autoimmunity, exposures')] for i,(n,h,b) in enumerate(steps): y=1.62+i*.94;R(s,.82,y,.48,.48,TEAL,True);T(s,.82,y+.12,.48,.14,n,12,WHITE,True,PP_ALIGN.CENTER);T(s,1.55,y+.02,2.05,.2,h,16,NAVY,True);T(s,3.75,y+.02,7.6,.25,b,14,INK); if i<4:L(s,1.06,y+.48,1.06,y+.92,GRAY,1.5) R(s,.75,6.55,11.8,.35,PRED,True,RGBColor(239,189,193));T(s,1.0,6.66,11.3,.15,'Pulmonary infiltrates + active urine sediment = urgent pulmonary-renal syndrome evaluation.',11,RED,True,PP_ALIGN.CENTER) # initial management s=prs.slides.add_slide(blank);base(s,18,'Immediate management: stabilize the patient');card(s,.75,1.7,3.7,4.85,'Airway and oxygenation','Supplemental oxygen. Escalate to high-flow support, noninvasive support, or invasive ventilation according to respiratory failure and airway safety.',TEAL);card(s,4.82,1.7,3.7,4.85,'Hemostasis and blood','Monitor serial hemoglobin. Provide blood components and correct severe thrombocytopenia or coagulopathy when indicated.',RED);card(s,8.89,1.7,3.7,4.85,'Medication and setting','Hold anticoagulants or antiplatelet agents when appropriate; reverse anticoagulation when indicated. Use intensive care for severe hypoxemia.',BLUE) # immune treatment s=prs.slides.add_slide(blank);base(s,19,'Cause-directed treatment: immune-mediated DAH');card(s,.75,1.72,3.7,4.68,'ANCA-associated vasculitis','Severe disease is generally treated with glucocorticoids plus remission induction using rituximab or cyclophosphamide.',RED);card(s,4.82,1.72,3.7,4.68,'Anti-GBM disease','Urgent glucocorticoids and cyclophosphamide, with plasma exchange and nephrology input as part of the standard disease-specific approach.',BLUE);card(s,8.89,1.72,3.7,4.68,'Systemic lupus erythematosus','High-dose glucocorticoids with immunosuppression selected to the severity, organ involvement, infection assessment, and specialist plan.',TEAL) # PLEX nuance s=prs.slides.add_slide(blank);base(s,20,'Plasma exchange: an important cause-specific nuance');R(s,.85,1.78,11.55,1.35,PRED,True,RGBColor(239,189,193));T(s,1.2,2.08,10.85,.3,'Do not use plasma exchange as a universal DAH treatment.',20,RED,True,PP_ALIGN.CENTER);card(s,.85,3.62,5.38,2.05,'When it is central','Anti-GBM disease is a key setting in which plasma exchange is used as part of disease-specific urgent treatment.',BLUE);card(s,6.97,3.62,5.38,2.05,'ANCA-associated vasculitis','Harrison’s discussion does not support routine plasma exchange solely because alveolar hemorrhage is present. Decisions require specialist context.',TEAL) # nonimmune Rx s=prs.slides.add_slide(blank);base(s,21,'Cause-directed treatment: nonimmune DAH');card(s,.75,1.72,3.7,4.7,'Coagulopathy / anticoagulant','Stop or reverse the provoking agent as clinically appropriate. Correct platelets, coagulation factors, and other hemostatic defects.',RED);card(s,4.82,1.72,3.7,4.7,'Cardiac pulmonary venous hypertension','Treat decompensated heart failure or mitral-valve disease and address volume/pressure overload.',BLUE);card(s,8.89,1.72,3.7,4.7,'Infection / exposure','Give appropriate antimicrobial therapy; discontinue toxic exposure or culprit drug. Avoid uncritical immunosuppression until infection is assessed.',TEAL) # case s=prs.slides.add_slide(blank);base(s,22,'Clinical reasoning case: pulmonary-renal warning pattern');R(s,.75,1.7,5.2,4.85,PALE,True,GRAY);T(s,1.05,2.05,4.5,.23,'Scenario',16,NAVY,True);T(s,1.05,2.55,4.45,1.5,'Acute dyspnea, diffuse ground-glass opacities, falling hemoglobin, microscopic hematuria, and rising creatinine.',18,INK);R(s,1.05,5.02,4.35,.9,PRED,True,RGBColor(239,189,193));T(s,1.25,5.3,3.95,.26,'Treat as DAH with pulmonary-renal syndrome until proven otherwise.',13,RED,True,PP_ALIGN.CENTER) for y,h,b,c in [(1.75,'Immediate','Oxygenation, CBC, coagulation, urine, renal function, infectious samples',TEAL),(3.22,'Etiology','ANCA, anti-GBM, ANA / dsDNA, complement, medication review',BLUE),(4.69,'Confirm / tissue','Serial BAL if feasible; renal biopsy if indicated and safe',RED)]:R(s,6.38,y,5.75,1.1,WHITE,True,GRAY);R(s,6.38,y,.08,1.1,c);T(s,6.72,y+.17,1.8,.2,h,14,NAVY,True);T(s,8.72,y+.15,2.95,.5,b,11,INK) # takeaways s=prs.slides.add_slide(blank);base(s,23,'Take-home messages');msgs=[('01','Recognize','DAH may have no hemoptysis. Combine hypoxemia, infiltrates, and falling hemoglobin.',RED),('02','Confirm','Serial bronchoalveolar lavage becomes increasingly bloody; evaluate infection simultaneously.',TEAL),('03','Search for renal disease','Urine microscopy and renal function identify a high-risk pulmonary-renal pattern.',BLUE),('04','Treat the driver','Support oxygenation and hemostasis while directing therapy to the underlying cause.',NAVY)] for i,(n,h,b,c) in enumerate(msgs): y=1.55+i*1.2;R(s,.75,y,1.02,.75,c,True);T(s,.75,y+.21,1.02,.2,n,16,WHITE,True,PP_ALIGN.CENTER);T(s,2.05,y+.05,3.25,.22,h,17,NAVY,True);T(s,5.4,y+.05,6.25,.42,b,13,INK) # refs s=prs.slides.add_slide(blank);base(s,24,'References');T(s,.75,1.72,11,.26,'Primary teaching source',18,NAVY,True);T(s,.75,2.16,11.4,.8,'Jameson JL, Fauci AS, Kasper DL, et al., eds. Harrison’s Principles of Internal Medicine. 22nd ed. McGraw Hill; 2025. Sections on hemoptysis, bronchoscopy, ANCA-associated vasculitis, anti-GBM disease, systemic lupus erythematosus, and respiratory failure.',14,INK);T(s,.75,3.38,11,.26,'Recent evidence check',18,NAVY,True);T(s,.75,3.82,11.4,.62,'Ruffatti A, et al. Risk and triggering factors for diffuse alveolar hemorrhage in primary antiphospholipid syndrome: an observational follow-up study and systematic review. Semin Arthritis Rheum. 2025;152697. PMID: 40056479.',14,INK);R(s,.75,5.3,11.3,.8,PBLUE,True,GRAY);T(s,1.05,5.57,10.7,.25,'Educational material only. Urgent clinical assessment and local protocols take priority in suspected DAH.',13,BLUE,True,PP_ALIGN.CENTER) out='/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison_Expanded_24_Slides.pptx';prs.save(out);print(out) ''') PY python "/tmp/workspace/dah-harrison-ppt/src/create_expanded_dah_ppt.py" python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison_Expanded_24_Slides.pptx') q=Presentation(str(p)); print('file',p.exists(),p.stat().st_size,'slides',len(q.slides)); assert len(q.slides)>=20 PY
~/dah-harrison-ppt/output
python - <<'PY' from pptx import Presentation from pathlib import Path p=Path('/tmp/workspace/dah-harrison-ppt/output/Diffuse_Alveolar_Hemorrhage_Harrison_Expanded_24_Slides.pptx') assert p.exists() and p.stat().st_size > 50000 prs=Presentation(str(p)) assert len(prs.slides) == 24 for ix,slide in enumerate(prs.slides,1): content=' '.join(sh.text for sh in slide.shapes if getattr(sh,'has_text_frame',False)) assert content.strip(), f'empty slide {ix}' print(f'OK: {len(prs.slides)} slides, {p.stat().st_size} bytes, all slides contain text') PY
Diffuse Alveolar Hemorrhage Harrison Expanded 24 Slides
Presentation · PPTX