... Presentation of, uh, tuberculosis, uh, tomorrow, uh, and my, uh, in pathol- uh, pathological anatomy. I gave you this, uh, page. Like, give me 30 slides according to this, uh, give me 30-slide presentation of this according to this. Make it i- interesting. What? Interesting?
WHO tuberculosis fact sheet 2026 diagnosis treatment pathological anatomy
tuberculosis pathology granuloma
~/
tuberculosis pathology caseating granuloma histology Ziehl Neelsen acid fast bacilli cavitary lung lesion
https://www.who.int/teams/global-programme-on-tuberculosis-a…
mkdir -p "/tmp/workspace/tuberculosis-pathological-anatomy/src" "/tmp/workspace/tuberculosis-pathological-anatomy/output"
python - <<'PY' from PIL import Image im=Image.open('/tmp/workspace/attachments/f84f3430-28c1-4357-8239-044bd8cb4307/73219DAD-0418-4ADF-975B-235C93ACD12C.png') print(im.size) PY
cat > "/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py" <<'PY' 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.oxml.xmlchemy import OxmlElement from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPE from PIL import Image import os OUT='/tmp/workspace/tuberculosis-pathological-anatomy/output/Tuberculosis_Pathological_Anatomy_30_Slides.pptx' REF='/tmp/workspace/attachments/f84f3430-28c1-4357-8239-044bd8cb4307/73219DAD-0418-4ADF-975B-235C93ACD12C.png' AS='/tmp/workspace/tuberculosis-pathological-anatomy/assets' os.makedirs(AS,exist_ok=True) # crops of supplied reference image as contextual visual cues, not primary content im=Image.open(REF) # Save cover and histology thumbnails from supplied preview for name,box in {'cover':(0,0,265,400),'histo':(1060,395,1310,795),'stain':(530,400,795,790),'miliary':(795,400,1060,790)}.items(): im.crop(box).save(f'{AS}/{name}.png') prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5) blank=prs.slide_layouts[6] NAVY=RGBColor(8,32,58); BLUE=RGBColor(20,92,150); CYAN=RGBColor(50,184,210); TEAL=RGBColor(30,153,137); ORANGE=RGBColor(239,132,62); RED=RGBColor(205,65,80); CREAM=RGBColor(246,249,251); INK=RGBColor(25,47,65); MUTED=RGBColor(93,114,130); WHITE=RGBColor(255,255,255); LILAC=RGBColor(232,223,244); PINK=RGBColor(250,226,230); GOLD=RGBColor(246,196,72) def bg(slide, dark=False): s=slide.background.fill; s.solid(); s.fore_color.rgb=NAVY if dark else CREAM # right accent sh=slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(12.92), Inches(0), Inches(.413), Inches(7.5)); sh.fill.solid(); sh.fill.fore_color.rgb=CYAN if not dark else TEAL; sh.line.fill.background() def text(slide,x,y,w,h,txt,size=20,color=INK,bold=False,align=PP_ALIGN.LEFT, font='Aptos', valign=MSO_ANCHOR.TOP): b=slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)); tf=b.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=tf.margin_right=0; tf.margin_top=tf.margin_bottom=0; tf.vertical_anchor=valign p=tf.paragraphs[0]; p.alignment=align; r=p.add_run(); r.text=txt; r.font.name=font; r.font.size=Pt(size); r.font.bold=bold; r.font.color.rgb=color return b def title(slide, n, t, sub=None): text(slide,.55,.35,11.7,.5,t,27,BLUE,True) text(slide,.57,.92,.6,.32,f'{n:02d}',12,WHITE,True,PP_ALIGN.CENTER,valign=MSO_ANCHOR.MIDDLE) q=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(.55), Inches(.89), Inches(.48), Inches(.32)); q.fill.solid(); q.fill.fore_color.rgb=BLUE; q.line.fill.background() if sub: text(slide,1.15,.94,10.7,.3,sub,11,MUTED) text(slide,.55,7.14,11.8,.18,'TUBERCULOSIS | PATHOLOGICAL ANATOMY',9,MUTED,True) def bullet(slide, items, x=.8,y=1.55,w=6.0,fs=19, color=INK, gap=.55): for i,it in enumerate(items): yy=y+i*gap dot=slide.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(yy+.12), Inches(.12), Inches(.12)); dot.fill.solid(); dot.fill.fore_color.rgb=ORANGE; dot.line.fill.background() text(slide,x+.25,yy,w-.25,.42,it,fs,color,False) def card(slide,x,y,w,h,head,body,accent=BLUE): sh=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h)); sh.fill.solid(); sh.fill.fore_color.rgb=WHITE; sh.line.color.rgb=RGBColor(210,222,230) bar=slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(.1), Inches(h));bar.fill.solid();bar.fill.fore_color.rgb=accent;bar.line.fill.background() text(slide,x+.28,y+.18,w-.45,.28,head,15,accent,True) text(slide,x+.28,y+.57,w-.45,h-.65,body,13,INK) def capsule(slide,x,y,w,label,fill=BLUE): s=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(.48));s.fill.solid();s.fill.fore_color.rgb=fill;s.line.fill.background();text(slide,x,y+.08,w,.23,label,13,WHITE,True,PP_ALIGN.CENTER) def lung(slide,x,y,w=3.0,h=4.1, cavity=False, nodes=False): # Trachea and lobes stylized tr=slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(x+w*.46), Inches(y), Inches(w*.08), Inches(h*.43));tr.fill.solid();tr.fill.fore_color.rgb=RGBColor(173,205,218);tr.line.color.rgb=BLUE for dx,flip in [(0,0),(w*.51,1)]: p=slide.shapes.add_shape(MSO_SHAPE.TEARDROP, Inches(x+dx), Inches(y+.43), Inches(w*.52), Inches(h*.72));p.fill.solid();p.fill.fore_color.rgb=RGBColor(225,177,166);p.line.color.rgb=BLUE if flip: p.rotation=180 # Branches for xx in [x+w*.48,x+w*.36,x+w*.62]: ln=slide.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Inches(x+w*.5), Inches(y+.55), Inches(xx), Inches(y+1.4));ln.line.color.rgb=BLUE;ln.line.width=Pt(1.2) if cavity: c=slide.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x+w*.1), Inches(y+1.0), Inches(w*.22), Inches(h*.18));c.fill.solid();c.fill.fore_color.rgb=RGBColor(75,41,38);c.line.color.rgb=ORANGE text(slide,x-.15,y+h*.88,w+.3,.3,'Cavity: typical of reactivation TB',11,RED,True,PP_ALIGN.CENTER) if nodes: for a,b in [(x+w*.62,y+1.4),(x+w*.68,y+1.8),(x+w*.59,y+2.0)]: o=slide.shapes.add_shape(MSO_SHAPE.OVAL, Inches(a), Inches(b), Inches(.18), Inches(.18));o.fill.solid();o.fill.fore_color.rgb=TEAL;o.line.fill.background() def granuloma(slide,x,y,scale=1.0, labels=True): # concentric tissue zones for r,c in [(2.2,LILAC),(1.7,RGBColor(238,205,214)),(1.1,RGBColor(247,224,180)),(.55,RGBColor(245,239,206))]: s=slide.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x+(2.2-r)*scale/2), Inches(y+(2.2-r)*scale/2), Inches(r*scale), Inches(r*scale));s.fill.solid();s.fill.fore_color.rgb=c;s.line.color.rgb=RGBColor(192,150,160) if labels: text(slide,x+2.4*scale,y+.15,2.4,.25,'Rim: lymphocytes',12,BLUE,True) text(slide,x+2.4*scale,y+.75,2.4,.25,'Epithelioid histiocytes',12,TEAL,True) text(slide,x+2.4*scale,y+1.35,2.4,.25,'Central caseation',12,RED,True) def add_ref(slide): text(slide,.6,6.72,11.7,.18,'Educational deck - confirm local diagnostic and treatment protocols before clinical use.',8,MUTED) slides=[] def new(n,t,sub=None,dark=False): s=prs.slides.add_slide(blank);bg(s,dark);title(s,n,t,sub);slides.append(s);return s # 1 cover s=prs.slides.add_slide(blank);bg(s,True);slides.append(s) text(s,.75,.8,7.4,.65,'TUBERCULOSIS',42,WHITE,True) text(s,.78,1.55,7.2,.44,'Pathological Anatomy',25,CYAN,True) text(s,.8,2.25,6.2,.8,'A 30-slide visual tour from inhaled bacillus to caseating granuloma, cavity, and miliary spread.',18,RGBColor(215,230,237)) lung(s,8.3,1.2,3.3,4.6,True) capsule(s,.8,4.25,3.0,'Small bacillus. Big impact.',ORANGE) text(s,.8,6.72,5,.25,'Pathology presentation • Prepared for class',11,RGBColor(215,230,237)) # 2 s=new(2,'Why tuberculosis still matters','A disease where host response shapes the lesion') bullet(s,['Chronic infection caused by Mycobacterium tuberculosis complex.','Usually begins in the lung, but may involve nearly any organ.','The pathological signature is granulomatous inflammation with caseous necrosis.','Pathology explains clinical behavior: latency, tissue destruction, and spread.'],.8,1.5,6.3,18,.75) granuloma(s,8.25,1.75,1.35,True) # 3 s=new(3,'The organism and transmission','Know the enemy before interpreting the tissue') card(s,.8,1.45,3.6,3.8,'MYCOBACTERIUM TUBERCULOSIS','• Slender, slow-growing bacillus\n• Lipid-rich, mycolic-acid cell wall\n• Acid-fast on special stains\n• Obligate aerobe: favors oxygen-rich upper lung',ORANGE) card(s,4.75,1.45,3.6,3.8,'TRANSMISSION','Airborne droplet nuclei generated by cough, speech, sneeze, or singing. Risk rises with close, poorly ventilated exposure.',TEAL) card(s,8.7,1.45,3.6,3.8,'FIRST CONTACT','Bacilli reach terminal airspaces, are phagocytosed by alveolar macrophages, then exploit intracellular survival.',BLUE) #4 s=new(4,'Pathogenesis: a battle inside macrophages','Inhalation → survival → immunity → granuloma') steps=[('1','Inhaled bacilli',ORANGE),('2','Alveolar macrophage uptake',BLUE),('3','Intracellular survival & multiplication',RED),('4','Th1 response: IFN-γ / TNF',TEAL),('5','Granuloma ± caseation',ORANGE)] for i,(n,a,c) in enumerate(steps): x=.75+i*2.45; capsule(s,x,2.3,2.0,n+' '+a,c) if i<4: ln=s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Inches(x+2.02), Inches(2.54), Inches(x+2.4), Inches(2.54));ln.line.color.rgb=BLUE;ln.line.width=Pt(2) text(s,1.3,4.2,10.6,.6,'Outcome depends on immune control: containment produces latent infection; failure permits progressive active disease.',22,INK,True,PP_ALIGN.CENTER) #5 s=new(5,'Primary tuberculosis','The first footprint of infection') lung(s,8.8,1.45,2.6,3.6,False,True) bullet(s,['Often follows first exposure, commonly in children.','Subpleural parenchymal focus, classically at lower upper lobe or upper lower lobe.','Drainage to hilar lymph nodes creates the Ghon complex.','Usually heals by fibrosis and calcification; may progress in vulnerable hosts.'],.8,1.45,7.2,18,.72) #6 s=new(6,'Ghon complex','A focus plus its draining nodes') lung(s,1.1,1.35,4.2,4.8,False,True) text(s,6.1,1.75,5.7,.4,'Two linked pathological sites',22,BLUE,True) card(s,6.1,2.4,5.4,1.15,'1. GHON FOCUS','Subpleural area of granulomatous inflammation in the lung.',ORANGE) card(s,6.1,3.85,5.4,1.15,'2. HILAR NODES','Lymphatic spread causes granulomatous lymphadenitis, often with caseation.',TEAL) text(s,6.1,5.45,5.2,.5,'When both calcify, the healed complex is called a Ranke complex.',16,RED,True) #7 s=new(7,'Secondary or reactivation TB','When containment breaks down') bullet(s,['Reactivation of latent bacilli or reinfection in a previously sensitized host.','Classically involves apical posterior upper lobes because of high oxygen tension.','Lesions tend to be destructive and cavitary.','Cavities communicate with airways, increasing organism burden and transmission.'],.8,1.45,6.5,18,.72) lung(s,8.2,1.2,3.4,4.4,True) #8 s=new(8,'Gross pathology','Read the organ before the microscope') card(s,.8,1.5,3.5,3.8,'PRIMARY PATTERN','Small peripheral focus with regional lymph-node enlargement. Healing may leave fibrotic or calcified scars.',TEAL) card(s,4.9,1.5,3.5,3.8,'POST-PRIMARY PATTERN','Apical fibrocaseous disease. Coalescent necrosis may drain into a bronchus and form a cavity.',RED) card(s,9.0,1.5,3.2,3.8,'MILIARY PATTERN','Countless tiny pale nodules dispersed through lung or multiple organs after hematogenous spread.',ORANGE) #9 s=new(9,'The spectrum of TB lesions','One organism, several tissue reactions') for i,(a,b,c) in enumerate([('Caseating granuloma','Classic lesion: central, acellular, cheese-like necrosis.',RED),('Non-caseating granuloma','Can occur early or in certain host settings; not specific for TB.',TEAL),('Fibrocaseous lesion','Chronic healing plus active necrosis, often apical.',ORANGE),('Miliary tubercle','Tiny hematogenous granuloma, often 1-2 mm.',BLUE)]): card(s,.8+(i%2)*5.9,1.5+(i//2)*2.25,5.2,1.65,a,b,c) #10 s=new(10,'Microscopy: the tuberculous granuloma','Organized immunity around a hostile center') granuloma(s,.95,1.55,1.9,True) card(s,7.1,1.7,4.6,3.3,'WHAT TO LOOK FOR','• Central caseous necrosis\n• Epithelioid histiocytes\n• Multinucleated giant cells\n• Peripheral lymphocytes\n• Fibrosis in older lesions',RED) #11 s=new(11,'The Langhans giant cell','A clue, not a diagnosis by itself') # giant cell diagram for i in range(12): import math xx=3.1+1.2*math.cos(i*math.pi/6); yy=3.3+.8*math.sin(i*math.pi/6) o=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(xx), Inches(yy), Inches(.24), Inches(.2));o.fill.solid();o.fill.fore_color.rgb=RGBColor(113,67,128);o.line.fill.background() core=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(2.2), Inches(2.45), Inches(2.0), Inches(1.65));core.fill.solid();core.fill.fore_color.rgb=RGBColor(239,191,211);core.line.color.rgb=RGBColor(113,67,128) text(s,1.1,4.8,5.2,.5,'Fused macrophage with nuclei arranged at the periphery in a horseshoe pattern.',18,INK,True,PP_ALIGN.CENTER) card(s,7.2,1.8,4.5,2.7,'INTERPRETATION','Langhans-type giant cells support granulomatous inflammation but occur in TB, fungal infection, sarcoidosis, and other conditions.',ORANGE) #12 s=new(12,'Ziehl-Neelsen staining','Making acid-fast bacilli visible') text(s,.8,1.45,6,.35,'Carbol fuchsin binds the mycolic-acid-rich wall.',22,BLUE,True) for i,(n,a,c) in enumerate([('1','Stain with carbol fuchsin',RED),('2','Acid-alcohol decolorization',BLUE),('3','Counterstain background blue',TEAL)]): capsule(s,.85+i*3.9,2.35,3.15,n+' '+a,c) text(s,.9,4.05,6.7,.75,'Result: acid-fast bacilli retain red stain against a blue background.',23,RED,True) # stylized bacilli for i in range(8): b=s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(9+(i%3)*.65), Inches(1.7+(i//3)*.85), Inches(.18), Inches(.65));b.rotation=35;b.fill.solid();b.fill.fore_color.rgb=RED;b.line.fill.background() text(s,8.7,4.55,3.2,.3,'Red bacilli = AFB positive',15,RED,True,PP_ALIGN.CENTER) #13 s=new(13,'Diagnostic toolkit','Pathology confirms tissue reaction, microbiology confirms cause') for i,(a,b,c) in enumerate([('Sputum smear','Rapid AFB detection',ORANGE),('NAAT / PCR','Fast molecular detection ± resistance targets',BLUE),('Culture','Reference method; allows drug susceptibility testing',TEAL),('Histopathology','Granulomas and necrosis; seek AFB/fungal stains',RED)]): card(s,.8+(i%2)*5.9,1.45+(i//2)*2.15,5.25,1.55,a,b,c) #14 s=new(14,'Miliary tuberculosis','Hematogenous dissemination in miniature') bullet(s,['Occurs when bacilli spread through blood from a primary or reactivation focus.','Tiny 1-2 mm granulomas resemble millet seeds, hence “miliary.”','Can involve lung, liver, spleen, marrow, meninges, adrenals, and kidney.','In severe immunosuppression, granulomas may be poorly formed or absent.'],.8,1.45,6.7,17,.69) # miliary dots for i in range(55): x=8.3+(i*37%260)/100; y=1.5+(i*71%390)/100 o=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(y), Inches(.09), Inches(.09));o.fill.solid();o.fill.fore_color.rgb=ORANGE;o.line.fill.background() text(s,8.0,5.85,4,.28,'Diffuse tiny nodules throughout the organ',13,RED,True,PP_ALIGN.CENTER) #15 s=new(15,'Extrapulmonary tuberculosis','The lesion follows the bloodstream and lymphatics') organs=[('Lymph nodes','Scrofula'),('Pleura','Effusion / pleuritis'),('Spine','Pott disease'),('CNS','Meningitis'),('Genitourinary','Sterile pyuria'),('Adrenals','Addison disease')] for i,(a,b) in enumerate(organs): card(s,.9+(i%3)*3.9,1.5+(i//3)*2.0,3.35,1.38,a,b,[TEAL,BLUE,ORANGE,RED,BLUE,TEAL][i]) #16 s=new(16,'Complications explained by pathology','Tissue destruction has clinical consequences') items=[('Cavitation','High bacillary load, hemoptysis, transmission'),('Fibrosis & bronchiectasis','Chronic airflow limitation and recurrent infection'),('Pleural disease','Effusion, empyema, or fibrothorax'),('Dissemination','Miliary disease and organ-specific failure')] for i,(a,b) in enumerate(items): card(s,.8+(i%2)*5.9,1.55+(i//2)*2.15,5.3,1.55,a,b,[RED,TEAL,BLUE,ORANGE][i]) #17 s=new(17,'Cell-mediated immunity','The protective response that also damages tissue') capsule(s,.75,2.3,2.1,'Antigen presentation',BLUE);capsule(s,3.15,2.3,1.8,'Th1 activation',TEAL);capsule(s,5.25,2.3,2.0,'IFN-γ / TNF signaling',ORANGE);capsule(s,7.55,2.3,1.85,'Macrophage activation',RED);capsule(s,9.7,2.3,1.65,'Granuloma',BLUE) for x in [2.9,5.0,7.3,9.45]: ln=s.shapes.add_connector(MSO_CONNECTOR.STRAIGHT, Inches(x), Inches(2.54), Inches(x+.18), Inches(2.54));ln.line.color.rgb=INK;ln.line.width=Pt(2) text(s,1.0,4.25,10.8,.55,'IFN-γ activates macrophage antimicrobial functions; TNF helps maintain granuloma architecture. Excess inflammation contributes to necrosis.',20,INK,True,PP_ALIGN.CENTER) #18 s=new(18,'Granulomas: differential diagnosis','Caseation narrows the field, but stains and culture decide') card(s,.8,1.45,5.4,3.65,'CASEATING GRANULOMA','More suggestive of TB or fungal infection.\n\nLook for: central necrosis, AFB on Ziehl-Neelsen/auramine, fungi on special stains, microbiologic confirmation.',RED) card(s,6.8,1.45,5.4,3.65,'NON-CASEATING GRANULOMA','Often prompts consideration of sarcoidosis, berylliosis, foreign material, and other causes.\n\nAbsence of caseation does not exclude TB.',TEAL) #19 s=new(19,'Diagnosis: connect specimen to syndrome','No single test answers every question') for i,(a,b) in enumerate([('Pulmonary disease','Sputum NAAT + smear + culture; chest imaging'),('Tissue disease','Biopsy for histology, AFB/fungal stains, culture, NAAT'),('Latent infection','TST or IGRA only after excluding active TB'),('Drug resistance','Molecular testing and phenotypic susceptibility testing')]): card(s,.8+(i%2)*5.9,1.35+(i//2)*2.2,5.25,1.65,a,b,[BLUE,ORANGE,TEAL,RED][i]) #20 s=new(20,'Treatment: why combination therapy works','Treat infection, prevent resistance, interrupt transmission') text(s,.8,1.35,11.5,.35,'Drug selection and duration depend on susceptibility, site, host factors, and current national/WHO guidance.',16,MUTED,True) for i,(a,b,c) in enumerate([('Isoniazid','Mycolic-acid synthesis',BLUE),('Rifampicin','RNA polymerase',ORANGE),('Pyrazinamide','Active in acidic environments',RED),('Ethambutol','Cell-wall arabinosyl transferase',TEAL)]): card(s,.8+i*3.0,2.1,2.65,1.65,a,b,c) text(s,.95,4.85,10.9,.6,'Teaching point: never construct an individualized regimen from slides. Follow contemporary guidelines and susceptibility results.',17,RED,True,PP_ALIGN.CENTER) #21 s=new(21,'High-yield pathology summary','If you remember five things, remember these') for i,a in enumerate(['M. tuberculosis is an acid-fast, slow-growing bacillus.','Primary TB: subpleural Ghon focus + hilar nodes.','Reactivation TB: apical fibrocaseous cavitary disease.','Granuloma: epithelioid histiocytes + giant cells + caseation.','Miliary TB: hematogenous “millet-seed” dissemination.']): capsule(s,.9,1.35+i*.85,10.9,f'{i+1}. {a}',[BLUE,TEAL,ORANGE,RED,BLUE][i]) #22 s=new(22,'Pattern recognition challenge','Can you name the pattern before revealing it?') for i,(a,b,c) in enumerate([('Subpleural focus + hilar nodes','PRIMARY TB',TEAL),('Upper-lobe cavity','REACTIVATION TB',RED),('Diffuse pin-point nodules','MILIARY TB',ORANGE)]): card(s,.85+i*4.0,1.55,3.45,2.8,a,b,c) text(s,.95,5.2,10.8,.48,'Pathology turns separate facts into a visual diagnostic language.',22,BLUE,True,PP_ALIGN.CENTER) #23 s=new(23,'Three interesting facts','Small details that make the topic memorable') card(s,.8,1.5,3.55,3.5,'“CASEATION”','The word describes the gross, cheese-like appearance of necrotic tissue. It is not literal cheese.',ORANGE) card(s,4.9,1.5,3.55,3.5,'LATENCY','The host can contain bacilli for years. “Latent” means immune sensitization without clinical disease.',TEAL) card(s,9.0,1.5,3.1,3.5,'MILLET','Miliary lesions earned their name because tiny nodules resemble millet seeds.',RED) #24 s=new(24,'Clinicopathological correlation: Pott disease','Granulomas can collapse a vertebral body') text(s,.8,1.4,5.5,.4,'Spinal TB is a model of anatomy meeting symptoms.',21,BLUE,True) bullet(s,['Contiguous spread often affects anterior vertebral bodies and disc spaces.','Caseous destruction may cause collapse and kyphotic deformity.','Paraspinal “cold” abscesses reflect chronic, relatively indolent inflammation.','Compression can produce neurological deficit.'],.85,2.0,6.0,17,.68) # stylized spine for i in range(6): v=s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(9.1), Inches(1.3+i*.65), Inches(1.4), Inches(.45));v.fill.solid();v.fill.fore_color.rgb=RGBColor(223,197,167);v.line.color.rgb=BLUE v=s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(9.05), Inches(3.25), Inches(1.5), Inches(.52));v.fill.solid();v.fill.fore_color.rgb=RED;v.line.color.rgb=RED #25 s=new(25,'Key takeaways','Think granuloma. Think TB. Then prove it.') for i,a in enumerate(['Recognize the primary versus reactivation pattern.','Identify the caseating granuloma and Langhans-type giant cell.','Use special stains and microbiology to establish etiology.','Respect the possibility of miliary and extrapulmonary disease.','Link tissue destruction to symptoms, spread, and complications.']): text(s,1.15,1.35+i*.85,10.5,.35,'✓ '+a,21,[BLUE,TEAL,ORANGE,RED,BLUE][i],True) #26 s=new(26,'Histology walkthrough','Build the diagnosis from the edge to the center') granuloma(s,1.0,1.65,1.9,True) card(s,7.2,1.55,4.6,3.6,'SCAN IN ORDER','1. Low power: granuloma distribution\n2. Rim: lymphocytes and fibrosis\n3. Middle: epithelioid histiocytes\n4. Giant cells: nuclear arrangement\n5. Center: caseous necrosis\n6. Correlate with stains/culture',BLUE) #27 s=new(27,'Acid-fast bacilli in context','A positive stain is powerful - but interpret the specimen') text(s,.85,1.45,7,.38,'AFB stains detect acid-fast organisms, not species identity.',23,RED,True) card(s,.9,2.25,3.45,2.2,'STRENGTH','Fast, inexpensive visual evidence of organisms in an appropriate clinical context.',TEAL) card(s,4.95,2.25,3.45,2.2,'LIMITATION','Sensitivity depends on specimen quality and bacillary burden; negative stain does not exclude TB.',ORANGE) card(s,9.0,2.25,3.0,2.2,'NEXT STEP','NAAT and culture provide organism confirmation and resistance information.',BLUE) #28 s=new(28,'Miliary TB: what the pathologist sees','Many lesions, each a tiny granuloma') # scatter to fit for i in range(75): x=.95+(i*83%570)/100; y=1.5+(i*47%350)/100 o=s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(x), Inches(y), Inches(.12), Inches(.12));o.fill.solid();o.fill.fore_color.rgb=RGBColor(242,214,163);o.line.color.rgb=ORANGE card(s,7.65,1.7,4.25,2.9,'PATHOLOGY PEARL','The radiologic “millet seed” pattern reflects hematogenous seeding of innumerable microscopic foci. In immunodeficiency, typical granulomas may be muted.',ORANGE) #29 s=new(29,'Conclusion','Tuberculosis is a pathology of containment versus destruction') text(s,1.0,1.55,11.1,.7,'The same host response that walls off M. tuberculosis can create the necrosis, fibrosis, and cavities that define disease.',26,INK,True,PP_ALIGN.CENTER) for i,(a,c) in enumerate([('Inhalation',BLUE),('Granuloma',TEAL),('Caseation',ORANGE),('Cavity / spread',RED)]): capsule(s,1.1+i*2.8,3.65,2.3,a,c) text(s,1.2,5.35,10.8,.45,'Early diagnosis, microbiologic confirmation, and effective treatment prevent tissue damage and transmission.',19,BLUE,True,PP_ALIGN.CENTER) #30 s=new(30,'References and image note','Suggested sources for speaking notes and further reading') bullet(s,['Robbins & Cotran Pathologic Basis of Disease - mycobacterial infections chapter.','Murray & Nadel’s Textbook of Respiratory Medicine - tuberculosis sections.','Textbook of Family Medicine, 9e, pp. 298: clinical forms, symptoms, testing, and standard drug principles.','World Health Organization: Global Tuberculosis Report 2025 and 2025 diagnostic operational handbook update.','Slide visuals are original schematic teaching diagrams. The supplied preview informed topic coverage and pacing.'],.8,1.45,11.1,15,.76) text(s,.8,5.95,10,.4,'Thank you',28,BLUE,True) # slide numbering final for i,s in enumerate(prs.slides,1): if i>1: text(s,12.1,7.08,.5,.2,str(i),9,MUTED,True,PP_ALIGN.RIGHT) prs.save(OUT) print(OUT, len(prs.slides)) PY python "/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py"
~/tuberculosis-pathological-anatomy/src/create_deck.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py'
python "/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py" && python - <<'PY' from pptx import Presentation p='/tmp/workspace/tuberculosis-pathological-anatomy/output/Tuberculosis_Pathological_Anatomy_30_Slides.pptx' prs=Presentation(p) print('slides',len(prs.slides)) for i,s in enumerate(prs.slides,1): texts=[sh.text for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text.strip()] print(i, texts[0][:65] if texts else 'NO_TEXT') PY
~/tuberculosis-pathological-anatomy/src/create_deck.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py'
python "/tmp/workspace/tuberculosis-pathological-anatomy/src/create_deck.py" && python - <<'PY' from pptx import Presentation p='/tmp/workspace/tuberculosis-pathological-anatomy/output/Tuberculosis_Pathological_Anatomy_30_Slides.pptx' prs=Presentation(p) print('slides',len(prs.slides)) for i,s in enumerate(prs.slides,1): texts=[sh.text for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text.strip()] print(i, texts[0][:60] if texts else 'NO_TEXT') PY
python - <<'PY' from pptx import Presentation from zipfile import ZipFile p='/tmp/workspace/tuberculosis-pathological-anatomy/output/Tuberculosis_Pathological_Anatomy_30_Slides.pptx' prs=Presentation(p) assert len(prs.slides)==30 for i,s in enumerate(prs.slides,1): assert any(getattr(sh,'has_text_frame',False) and sh.text.strip() for sh in s.shapes), f'Blank slide {i}' with ZipFile(p) as z: assert z.testzip() is None print('Verified: 30 readable, nonblank slides; PPTX archive integrity OK.') PY ls -lh "/tmp/workspace/tuberculosis-pathological-anatomy/output/Tuberculosis_Pathological_Anatomy_30_Slides.pptx"
Tuberculosis Pathological Anatomy 30 Slides
Presentation · PPTX
?
Tuberculosis Pathological Anatomy 30 Slides
Presentation · PPTX
Alô?
I want you to make some real preparations, may include some pictures, the like training methods, include make it interesting, okay? Include some diagrams. X-rays, clinical, uh, correlations.
CDC tuberculosis chest x ray cavitary miliary tuberculosis images public domain
tuberculosis pathology imaging
tuberculosis chest radiograph cavitary upper lobe lesion miliary tuberculosis histology caseating granuloma acid fast stain
https://commons.wikimedia.org/wiki/File:Tuberculosis-x-ray.j…
?