powerpoint for guest lecture
need to edit a ppt which also contains intraop videos that is suitable for presentation as guest lecture within 15min time period at a national ent conference, first slide title next slides should contain introduction about variety of beningn laryngeal lesions which are common and few which are rare, which we are presenting, next slides should contain various surgical or treatment opiotions available, next about coblation and the bonns system which we are using images and settings also add various laryngeal wands available of bonns system, next slides brieff history of each case with clinical picture or endoscopic video and radiology pictures. next sluide for preop, introp and end of surgery picture and hpe image and then postop picture or video at 1week and at end of 6months or 1 year. also include what is the challwnge in that particular case. literature supporting also should be included by searching pubmed indexed journals and cite reference, whereever applicable.
Which part should I develop and edit first?
coblation benign laryngeal lesions surgery PubMed ENT review
coblation laryngeal lesions
~/
coblation larynx
Bonss laryngeal coblation wand system ENT
~/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00
python -c "from pptx import Presentation; from pathlib import Path; base=Path('/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00');\nfor f in base.glob('*.pptx'):\n print('FILE',f.name); p=Presentation(str(f)); print('slides',len(p.slides));\n for i,s in enumerate(p.slides,1):\n tx=[]\n for sh in s.shapes:\n if getattr(sh,'has_text_frame',False) and sh.text.strip(): tx.append(sh.text.replace('\\n',' | '))\n print(i, ' || '.join(tx)[:700])\n"
python -c "from docx import Document; p='/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00/MANUSCRIPT CHANGES.docx'; d=Document(p);\nprint('PARAGRAPHS'); [print(x.text) for x in d.paragraphs if x.text.strip()]; print('TABLES',len(d.tables));\nfor ti,t in enumerate(d.tables):\n print('TABLE',ti); [print(' | '.join(c.text for c in r.cells)) for r in t.rows]\n"
python -c "import pdfplumber; p='/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00/video presentation 2026.pdf'; pdf=pdfplumber.open(p); print('PAGES',len(pdf.pages));\nfor i,page in enumerate(pdf.pages): print('PAGE',i+1, (page.extract_text() or '')[:2500].replace('\\n',' | '))\n"
python -c "import zipfile,os; from pathlib import Path; base=Path('/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00');\nfor f in base.glob('*.pptx'):\n z=zipfile.ZipFile(f); names=z.namelist(); print(f.name,'media:',[x for x in names if x.startswith('ppt/media/')]); print('video rels:', [x for x in names if 'video' in x.lower()]);\n"
~/inspect_attachments.py
from pptx import Presentation
from pathlib import Path
from docx import Document
import pdfplumber, zipfile
base=Path('/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00')
for f in base.glob('*.pptx'):
print('\nFILE',f.name)
p=Presentation(str(f)); print('SLIDES',len(p.slides))
for i,s in enumerate(p.slides,1):
tx=[]
for sh in s.shapes:
if getattr(sh,'has_text_frame',False) and sh.text.strip(): tx.append(sh.text.replace('\n',' | '))
print('SLIDE',i, ' || '.join(tx)[:1200])
z=zipfile.ZipFile(f); names=z.namelist(); print('MEDIA', [x for x in names if x.startswith('ppt/media/')]); print('VIDEO', [x for x in names if 'video' in x.lower()])
print('\nDOCX')
d=Document(base/'MANUSCRIPT CHANGES.docx')
for x in d.paragraphs:
if x.text.strip(): print(x.text)
for ti,t in enumerate(d.tables):
print('TABLE',ti)
for r in t.rows: print(' | '.join(c.text for c in r.cells))
print('\nPDF')
with pdfplumber.open(base/'video presentation 2026.pdf') as pdf:
print('PAGES',len(pdf.pages))
for i,page in enumerate(pdf.pages): print('PAGE',i+1, (page.extract_text() or '')[:2000].replace('\n',' | '))
python "/tmp/workspace/inspect_attachments.py"
laryngeal amyloidosis surgery
vocal process granuloma treatment
subglottic stenosis granulomatosis polyangiitis management
laryngeal chondroma management
laryngeal hemangioma coblation
~/
PMID: 37394981
PMID: 36790723
PMID: 31628044
PMID: 38835336
PMID: 34482444
PMID: 35261874
~/
mkdir -p "/tmp/workspace/ent_coblation_guest_lecture/assets" "/tmp/workspace/ent_coblation_guest_lecture/output" "/tmp/workspace/ent_coblation_guest_lecture/src" && python -c "import zipfile, pathlib; src=pathlib.Path('/tmp/workspace/attachments/94d79901-2f9d-4001-aee8-ec25c7215c00/Coblation_in_Diverse_Laryngeal_Lesions (1).pptx'); out=pathlib.Path('/tmp/workspace/ent_coblation_guest_lecture/assets'); z=zipfile.ZipFile(src); [out.joinpath(pathlib.Path(n).name).write_bytes(z.read(n)) for n in z.namelist() if n.startswith('ppt/media/')]; print([p.name for p in out.iterdir()])"
python -c "from PIL import Image; from pathlib import Path; p=Path('/tmp/workspace/ent_coblation_guest_lecture/assets'); [(print(x.name,Image.open(x).size,Image.open(x).mode)) for x in p.iterdir()]"
~/ent_coblation_guest_lecture/src/build_deck.py
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
from pptx.enum.dml import MSO_THEME_COLOR
from pptx.enum.text import MSO_AUTO_SIZE
from pathlib import Path
OUT=Path('/tmp/workspace/ent_coblation_guest_lecture/output/Coblation_Guest_Lecture_15min_ENT_2026.pptx')
AS=Path('/tmp/workspace/ent_coblation_guest_lecture/assets')
prs=Presentation(); prs.slide_width=Inches(13.333); prs.slide_height=Inches(7.5)
blank=prs.slide_layouts[6]
NAVY=RGBColor(9,32,59); TEAL=RGBColor(0,146,150); GOLD=RGBColor(231,171,50); PALE=RGBColor(238,245,247); INK=RGBColor(28,43,55); GREY=RGBColor(93,107,115); WHITE=RGBColor(255,255,255); RED=RGBColor(179,57,57)
def rect(s,x,y,w,h,c, radius=False, line=None):
sh=s.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=c; sh.line.color.rgb=line or c; return sh
def text(s,txt,x,y,w,h,size=18,color=INK,bold=False,align=None, font='Aptos',valign=MSO_ANCHOR.TOP):
tb=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(h)); tf=tb.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=tf.margin_right=Pt(0); tf.margin_top=tf.margin_bottom=Pt(0); tf.vertical_anchor=valign
for j,line in enumerate(txt.split('\n')):
p=tf.paragraphs[0] if j==0 else tf.add_paragraph(); p.text=line; p.font.name=font; p.font.size=Pt(size); p.font.bold=bold; p.font.color.rgb=color; p.space_after=Pt(4)
if align: p.alignment=align
return tb
def base(label='', num=None):
s=prs.slides.add_slide(blank); rect(s,0,0,13.333,7.5,WHITE); rect(s,0,0,13.333,.18,TEAL); text(s,label.upper(),.55,.34,8,.25,9,TEAL,True);
if num: text(s,str(num).zfill(2),12.2,.32,.55,.25,10,GREY,True,PP_ALIGN.RIGHT)
return s
def title(s,head,sub=''):
text(s,head,.55,.70,12.0,.65,28,NAVY,True);
if sub:text(s,sub,.58,1.40,11.5,.38,12,GREY)
def footer(s,ref=''):
rect(s,.55,7.13,12.2,.012,RGBColor(210,220,225)); text(s,'National ENT Conference 2026 | Coblation in diverse laryngeal lesions',.55,7.19,7,.18,8,GREY)
if ref:text(s,ref,7.1,7.18,5.65,.20,7,GREY,False,PP_ALIGN.RIGHT)
def bullets(s,items,x,y,w,size=17,colour=INK, gap=8):
tb=s.shapes.add_textbox(Inches(x),Inches(y),Inches(w),Inches(4.8)); tf=tb.text_frame; tf.clear(); tf.word_wrap=True; tf.margin_left=Pt(2); tf.margin_right=Pt(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=colour; p.space_after=Pt(gap); p.text='• '+item
return tb
def pill(s,txt,x,y,w,c=TEAL):
rect(s,x,y,w,.32,c,True); text(s,txt,x+.1,y+.065,w-.2,.18,9,WHITE,True,PP_ALIGN.CENTER)
def image(s,path,x,y,w,h):
if Path(path).exists(): s.shapes.add_picture(str(path), Inches(x), Inches(y), width=Inches(w),height=Inches(h))
def video_box(s,label,x,y,w,h,caption='Insert 12-20 s edited clip'):
rect(s,x,y,w,h,NAVY,True); text(s,'▶',x+w/2-.23,y+h/2-.30,.46,.5,31,WHITE,True,PP_ALIGN.CENTER); text(s,label,x+.15,y+.16,w-.3,.25,12,WHITE,True,PP_ALIGN.CENTER); text(s,caption,x+.14,y+h-.38,w-.28,.18,8,RGBColor(205,222,226),False,PP_ALIGN.CENTER)
# 1
s=base('Guest Lecture',1); rect(s,0,.18,13.333,7.32,NAVY); rect(s,.64,1.13,.1,4.75,GOLD); text(s,'ONE TOOL,\nMANY LESIONS',1.05,1.22,7.5,1.6,33,WHITE,True); text(s,'Coblation-assisted endoscopic management of\nselected benign and non-malignant laryngeal lesions',1.05,3.05,8.2,.85,19,RGBColor(220,237,240)); pill(s,'15-MINUTE GUEST LECTURE',1.05,4.30,2.55,GOLD); text(s,'[Presenter name, qualifications]\n[Department / Institution]\nNational ENT Conference | 2026',1.05,5.20,6.5,.85,15,WHITE); image(s,AS/'image2.jpg',9.05,1.25,3.25,2.5); text(s,'Case-led approach\nwith operative video vignettes',9.05,4.3,3.2,.7,17,RGBColor(220,237,240),True,PP_ALIGN.CENTER)
#2
s=base('Opening',2); title(s,'Why this topic?','A confined, function-critical airway with very different tissue challenges')
for x,hd,body in [(0.7,'COMMON','Nodules, polyps, cysts, Reinke edema, papilloma, granuloma'),(4.55,'UNCOMMON','Amyloidosis, chondroma, vascular lesions, inflammatory stenosis'),(8.4,'THE SHARED GOAL','Clear disease while preserving airway, voice and swallow')]:
rect(s,x,2.1,3.45,2.65,PALE,True); text(s,hd,x+.25,2.42,2.95,.28,13,TEAL,True); text(s,body,x+.25,2.95,2.9,1.2,18,NAVY,True,PP_ALIGN.CENTER, valign=MSO_ANCHOR.MIDDLE)
text(s,'Today: five rare or high-stakes patterns where tissue selectivity and haemostasis matter.',.85,5.55,11.65,.50,21,NAVY,True,PP_ALIGN.CENTER); footer(s,'Cummings Otolaryngology, 8th ed.')
#3
s=base('Treatment landscape',3); title(s,'The treatment menu is lesion-specific')
items=[('Observation / medical','Voice therapy, reflux control, steroid or disease-directed treatment'),('Office procedures','Injection, laser in selected lesions'),('Microlaryngeal surgery','Cold instruments, microflap, microdebrider'),('Energy devices','CO₂ / KTP laser, RF plasma-coblation, electrosurgery'),('Airway reconstruction','Balloon dilation, open surgery for selected stenosis')]
for i,(a,b) in enumerate(items):
y=1.75+i*.88; rect(s,.8,y,2.5,.58,TEAL if i==3 else PALE,True); text(s,a,.98,y+.16,2.13,.2,12,WHITE if i==3 else NAVY,True,PP_ALIGN.CENTER); text(s,b,3.65,y+.11,8.6,.38,15,INK)
text(s,'Not a “one-device-for-all” claim: modality, extent and pathology determine the safest treatment.',.85,6.35,11.6,.35,15,RED,True,PP_ALIGN.CENTER); footer(s)
#4
s=base('Technology',4); title(s,'Coblation and the BONSS RF plasma system','What is relevant in laryngeal work')
rect(s,.65,1.65,5.7,4.85,PALE,True); text(s,'Principle',.95,1.98,1.5,.3,16,TEAL,True); bullets(s,['Bipolar RF energy in saline creates a plasma field at the electrode surface','Tissue ablation and coagulation are controlled separately by the surgeon','Potential practical advantages: precise soft-tissue reduction, concurrent haemostasis and a clear field'],.95,2.45,4.95,17)
rect(s,6.7,1.65,5.95,4.85,NAVY,True); text(s,'BONSS set-up: document, do not generalise',7.02,1.98,5.25,.3,16,WHITE,True); bullets(s,['Controller: ARS700 RF Plasma Surgical System','Laryngeal electrode: LarynMax (A7171) where locally available','Modes: ABLATE and COAG. Record wand, mode, power and irrigation for every case.','Use only the current manufacturer IFU and institution-approved settings.'],7.02,2.45,5.15,16,WHITE)
footer(s,'BONSS product information; PMID 34482444')
#5
s=base('Technology',5); title(s,'BONSS laryngeal wand: practical slide for the theatre team')
rect(s,.7,1.65,4.2,4.85,PALE,True); image(s,AS/'image3.jpg',.95,2.0,3.7,1.38); text(s,'Available BONSS ENT electrode families',1.0,3.75,3.6,.25,15,TEAL,True,PP_ALIGN.CENTER); bullets(s,['Laryngeal: LarynMax A7171','Other families: tonsil, turbinate, sinus and palate electrodes','Do not substitute a product label for a clinical indication.'],1.0,4.25,3.55,14)
rect(s,5.25,1.65,7.35,4.85,NAVY,True); text(s,'Institutional operative record',5.60,2.0,4,.3,18,WHITE,True);
for i,t in enumerate(['Wand / lot number','ABLATE power: ____','COAG power: ____','Saline / suction setting: ____','Airway strategy and backup plan: ____']):
rect(s,5.62,2.55+i*.60,6.4,.42,RGBColor(27,63,87),True); text(s,t,5.82,2.67+i*.60,5.9,.16,14,WHITE)
text(s,'Populate these fields from the operative notes and IFU before presenting.',5.62,5.95,6.1,.25,12,RGBColor(255,218,141),True); footer(s,'Manufacturer IFU supersedes this slide')
#6
s=base('Cases',6); title(s,'Five case vignettes: one question per lesion','Use a 15-20 second operative clip only where it changes the teaching point')
rows=[('01','Subglottic chondroma','Airway restoration without destabilising the cricoid'),('02','Post-cricoid cavernous hemangioma','Vascular control in a narrow hypopharynx'),('03','Subglottic necrotising granuloma','Diagnostic uncertainty and restenosis risk'),('04','Laryngeal amyloidosis','Tissue-sparing debulking for recurrent infiltration'),('05','Intubation granuloma','Avoiding further posterior-glottic trauma')]
for i,(n,a,b) in enumerate(rows):
y=1.65+i*.85; rect(s,.75,y,.55,.48,TEAL,True); text(s,n,.75,y+.13,.55,.16,12,WHITE,True,PP_ALIGN.CENTER); text(s,a,1.55,y+.08,3.5,.22,17,NAVY,True); text(s,b,5.18,y+.10,6.85,.2,14,INK)
footer(s)
# helper case slides
def case_slide(num,name,history,challenge,procedure,outcome,ref,video=True, imagefile=None):
s=base('Case '+str(num),6+num); title(s,f'Case {num}: {name}',history)
rect(s,.65,1.7,3.5,4.95,PALE,True); text(s,'THE CHALLENGE',.95,2.02,2.7,.25,14,TEAL,True); text(s,challenge,.95,2.48,2.85,1.25,19,NAVY,True,PP_ALIGN.CENTER,valign=MSO_ANCHOR.MIDDLE); text(s,'Operative strategy',.95,4.28,2.6,.25,14,TEAL,True); bullets(s,procedure,.95,4.68,2.85,14)
if imagefile: image(s,imagefile,4.55,1.84,3.45,2.35); text(s,'Preoperative endoscopy / imaging',4.55,4.30,3.45,.20,11,GREY,False,PP_ALIGN.CENTER)
else: video_box(s,'PREOPERATIVE ENDOSCOPY',4.55,1.84,3.45,2.35,'Replace with patient still or 8 s clip')
video_box(s,'INTRAOPERATIVE COBLATION',8.35,1.84,3.45,2.35,'Replace with 12-20 s edited clip')
rect(s,4.55,4.85,7.25,1.45,NAVY,True); text(s,'OUTCOME / FOLLOW-UP',4.82,5.12,2.5,.2,12,RGBColor(170,230,228),True); text(s,outcome,4.82,5.48,6.65,.55,16,WHITE,True); text(s,'HPE: insert annotated photomicrograph + final pathology label. Follow-up: show 1-week and 6-12 month endoscopy.',4.55,6.44,7.3,.22,10,GREY,False,PP_ALIGN.CENTER); footer(s,ref)
return s
case_slide(1,'Subglottic chondroma','Slowly progressive dyspnoea / stridor; CT defines cricoid origin and extent.','Differentiate from low-grade chondrosarcoma and improve airway while preserving the laryngeal framework.',['Secure airway and expose under suspension microlaryngoscopy','Obtain representative tissue for pathology','Selected endoscopic debulking only when access, anatomy and pathology permit'],'Show: pre-op airway, key debulking step, immediate calibre, then 6-12 month patency.','PMID 38835336')
case_slide(2,'Post-cricoid cavernous hemangioma','65-year-old woman, 7-month globus/dysphagia; MRI: 0.9 × 1.0 × 1.1 cm post-cricoid lesion.','Bleeding risk, difficult access and protection of the post-cricoid wall.',['Avoid blind biopsy of a suspected vascular lesion','Edge coagulation followed by controlled ablation/resection','Use cold steel plus coblation when tissue plane demands it'],'Case record: HPE cavernous hemangioma; Ryle tube removed at 6 weeks; asymptomatic without residual/recurrent lesion on follow-up.','PMID 37394981; institutional abstract',imagefile=AS/'image1.png')
case_slide(3,'Subglottic necrotising granuloma','Progressive stridor with a tumour-mimic subglottic lesion.','Obtain an adequate diagnosis while preventing iatrogenic scarring in a restenosis-prone airway.',['Deep biopsy and microbiology where indicated','Correlate pathology with ANCA, systemic evaluation and imaging','Endoscopic restoration of calibre with disease-directed medical therapy'],'Show: pre-op stenosis, tissue sampling / limited debulking, 1-week healing and serial airway surveillance.','PMID 35261874')
case_slide(4,'Laryngeal amyloidosis','Slowly progressive dysphonia with submucosal, often multifocal infiltration.','Repeated intervention may be needed: preserve phonatory tissue and exclude systemic disease.',['Biopsy confirmation with Congo red; complete systemic evaluation','Tailored, staged endoscopic debulking based on extent','Avoid circumferential injury; plan long-term surveillance'],'Evidence: recurrence after primary surgery was 28.4% in a 2023 systematic review. Show 1-week healing and 6-12 month voice/airway result.','PMID 36790723')
case_slide(5,'Intubation granuloma','Posterior glottic lesion after airway instrumentation, often amplified by reflux and phonotrauma.','Recurrence after excision and risk of additional posterior-glottic trauma.',['Confirm vocal fold mobility and treat reflux / cough / phonotrauma','Reserve excision for symptomatic, large or refractory disease','Pair surgery with medical and voice management'],'Evidence supports conservative treatment for many lesions; when surgery is needed, combine it with cause-directed management to reduce recurrence.','PMID 31628044')
# synthesis
s=base('Synthesis',12); title(s,'What changed the operative plan?','Not the diagnosis alone: the tissue challenge')
cols=[('LESION','PRIMARY CHALLENGE','ROLE OF COBLATION'),('Chondroma','Firm airway mass / framework','Selected controlled debulking'),('Hemangioma','Bleeding / access','Haemostasis plus tissue reduction'),('Necrotising granuloma','Diagnosis + fibrosis','Limited airway restoration'),('Amyloidosis','Infiltrative recurrence','Tissue-sparing staged debulking'),('Intubation granuloma','Posterior-glottic trauma','Precise excision when needed')]
xs=[.7,3.35,7.3]; ws=[2.35,3.55,5.15]
for r,row in enumerate(cols):
y=1.65+r*.75
for c,val in enumerate(row):
rect(s,xs[c],y,ws[c],.58,NAVY if r==0 else (PALE if r%2 else WHITE),False,RGBColor(215,225,228)); text(s,val,xs[c]+.14,y+.15,ws[c]-.25,.22,13,WHITE if r==0 else INK,r==0 or c==0)
text(s,'Message: coblation is a complementary tool. Its utility depends on lesion anatomy, pathology, surgeon experience and the planned functional endpoint.',.85,6.55,11.7,.3,15,TEAL,True,PP_ALIGN.CENTER); footer(s)
# evidence
s=base('Evidence',13); title(s,'Evidence: promising, but lesion-specific and limited')
for x,hd,body in [(0.7,'COBLATION IN LARYNGOLOGY','Review-level data describe lower-temperature tissue interaction, haemostasis and use across ENT, but high-quality lesion-specific comparisons are sparse.\nPMID 34482444'),(4.55,'HEMANGIOMA','23-patient retrospective series: single-session success, no postoperative bleeding, 1-year recurrence-free follow-up.\nPMID 37394981'),(8.4,'AMYLOIDOSIS','Systematic review, 515 patients: recurrence 28.4%; tailored surgery and long follow-up recommended.\nPMID 36790723')]:
rect(s,x,1.75,3.45,3.65,PALE,True); text(s,hd,x+.23,2.05,2.95,.3,13,TEAL,True,PP_ALIGN.CENTER); text(s,body,x+.25,2.62,2.93,2.1,15,NAVY,False,PP_ALIGN.CENTER,valign=MSO_ANCHOR.MIDDLE)
text(s,'Do not claim superiority over CO₂ laser or cold steel without lesion-specific comparative data.',.8,5.92,11.7,.35,17,RED,True,PP_ALIGN.CENTER); footer(s,'Selected PubMed-indexed literature')
# takehome
s=base('Close',14); rect(s,0,.18,13.333,7.32,NAVY); text(s,'TAKE-HOME MESSAGES',.75,.88,8,.35,14,RGBColor(171,232,230),True)
for i,st in enumerate(['Start with the lesion biology and functional target, not the device.','Coblation can combine tissue reduction with haemostasis in selected endoscopic laryngeal and hypopharyngeal cases.','Show your evidence transparently: this is a case-led experience, not a superiority claim.','Document wand, settings, pathology and long-term functional follow-up for every case.']):
rect(s,.85,1.65+i*1.14,.55,.55,GOLD,True); text(s,str(i+1),.85,1.80+i*1.14,.55,.18,14,NAVY,True,PP_ALIGN.CENTER); text(s,st,1.72,1.70+i*1.14,10.4,.48,19,WHITE,True)
text(s,'Coblation + cold instruments: complementary, not competitive.',.85,6.45,11.6,.35,19,RGBColor(255,220,147),True,PP_ALIGN.CENTER)
# refs
s=base('References',15); title(s,'Selected references','Full citations and PMIDs for the spoken claims')
refs=['OuYang Z, Lou Z. Management of adult laryngeal hemangioma with low-temperature plasma RF coblation. Ear Nose Throat J. 2026. PMID: 37394981.','Galluzzi F, Garavello W. Surgical treatment of laryngeal amyloidosis: a systematic review. Eur Arch Otorhinolaryngol. 2023. PMID: 36790723.','Tsai SW, et al. Operative and conservative management of laryngeal contact granuloma: systematic review. J Voice. 2021. PMID: 31628044.','Candelo E, et al. Laryngeal chondromas: current knowledge and future directions. Laryngoscope Investig Otolaryngol. 2024. PMID: 38835336.','Pasick LJ, et al. An updated review of subglottic stenosis. Curr Pulmonol Rep. 2022. PMID: 35261874.','Svistushkin VM, et al. Possibilities of coblation in otorhinolaryngology: analytical review. Eur Arch Otorhinolaryngol. 2022. PMID: 34482444.']
bullets(s,refs,.75,1.70,11.85,15,INK,13); text(s,'Device-specific directions for use and institutional protocols supersede general educational material.',.8,6.52,11.75,.25,12,RED,True,PP_ALIGN.CENTER); footer(s)
# end
s=base('Discussion',16); rect(s,0,.18,13.333,7.32,NAVY); text(s,'Thank you',.7,1.55,11.9,.7,37,WHITE,True,PP_ALIGN.CENTER); text(s,'Questions and discussion',.7,2.45,11.9,.4,20,RGBColor(184,230,229),PP_ALIGN.CENTER); text(s,'[Presenter] | [Institution] | [Email]',.7,5.75,11.9,.28,16,WHITE,False,PP_ALIGN.CENTER)
prs.save(OUT)
print(OUT)
python "/tmp/workspace/ent_coblation_guest_lecture/src/build_deck.py" && python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/ent_coblation_guest_lecture/output/Coblation_Guest_Lecture_15min_ENT_2026.pptx'); print('slides=',len(p.slides)); print([(i+1, sum(1 for sh in s.shapes if getattr(sh,'has_text_frame',False) and sh.text.strip())) for i,s in enumerate(p.slides)])" && ls -lh "/tmp/workspace/ent_coblation_guest_lecture/output/"
~/ent_coblation_guest_lecture/src/build_deck.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/ent_coblation_guest_lecture/src/build_deck.py'
Continue editing the 15-minute guest lecture PPTX
~/ent_coblation_guest_lecture/
~/
PubMed coblation laryngeal lesions recent review 2024 2026
coblation larynx
python "/tmp/workspace/ent_coblation_guest_lecture/src/build_deck.py" && python -c "from pptx import Presentation; p=Presentation('/tmp/workspace/ent_coblation_guest_lecture/output/Coblation_Guest_Lecture_15min_ENT_2026.pptx'); print('slides=',len(p.slides)); print('size=',__import__('os').path.getsize('/tmp/workspace/ent_coblation_guest_lecture/output/Coblation_Guest_Lecture_15min_ENT_2026.pptx'))" && ls -lh "/tmp/workspace/ent_coblation_guest_lecture/output/"