Make a PowerPoint presentation for JV as jr1
~/attachments/2b5fc1d8-f941-4310-91b3-99cffec1111e
mkdir -p /tmp/workspace/jc_ppt && cd /tmp/workspace/jc_ppt && python3 -c " import pdfplumber path = '/tmp/workspace/attachments/2b5fc1d8-f941-4310-91b3-99cffec1111e/JC Article.pdf' with pdfplumber.open(path) as pdf: print('pages', len(pdf.pages)) text = '' for i, page in enumerate(pdf.pages): t = page.extract_text() or '' text += f'--- PAGE {i+1} ---\n' + t + '\n' with open('extracted.txt', 'w') as f: f.write(text) print(len(text)) "
cd /tmp/workspace/jc_ppt && python3 -c " import pdfplumber path = '/tmp/workspace/attachments/2b5fc1d8-f941-4310-91b3-99cffec1111e/JC Article.pdf' with pdfplumber.open(path) as pdf: for i, page in enumerate(pdf.pages): im = page.to_image(resolution=200) im.save(f'page_{i+1}.png') print('saved', i+1, page.width, page.height) " ls -la /tmp/workspace/jc_ppt/
cd /tmp/workspace/jc_ppt && python3 -c " from PIL import Image for i in range(1,5): im = Image.open(f'page_{i}.png') im = im.convert('RGB') im.save(f'page_{i}_sm.jpg', quality=60) print(i, im.size) " ls -la /tmp/workspace/jc_ppt/*.jpg
cd /tmp/workspace/jc_ppt && python3 -c " from PIL import Image for i in range(1,5): im = Image.open(f'page_{i}.png').convert('RGB') im = im.resize((900, 1275)) im.save(f'page_{i}_sm.jpg', quality=55) " ls -la /tmp/workspace/jc_ppt/*.jpg
~/jc_ppt/build_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.shapes import MSO_SHAPE
NAVY = RGBColor(0x0B, 0x2E, 0x4E)
BLUE = RGBColor(0x1F, 0x6F, 0xA8)
LIGHT = RGBColor(0xF2, 0xF6, 0xF9)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GRAY = RGBColor(0x4A, 0x4A, 0x4A)
ACCENT = RGBColor(0xE8, 0x8A, 0x2E)
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
SW, SH = prs.slide_width, prs.slide_height
def add_slide():
return prs.slides.add_slide(BLANK)
def bg(slide, color=WHITE):
slide.background.fill.solid()
slide.background.fill.fore_color.rgb = color
def add_bar(slide, y=Inches(0), height=Inches(1.15), color=NAVY):
shp = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, y, SW, height)
shp.fill.solid(); shp.fill.fore_color.rgb = color
shp.line.fill.background()
return shp
def add_text(slide, x, y, w, h, text, size=18, color=GRAY, bold=False, italic=False,
align=PP_ALIGN.LEFT, font="Calibri", anchor=None, line_spacing=1.0):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
if anchor:
tf.vertical_anchor = anchor
lines = text.split("\n")
for i, line in enumerate(lines):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.text = line
p.alignment = align
p.line_spacing = line_spacing
for r in p.runs:
r.font.size = Pt(size)
r.font.color.rgb = color
r.font.bold = bold
r.font.italic = italic
r.font.name = font
return tb
def add_bullets(slide, x, y, w, h, items, size=16, color=GRAY, bold_first=False,
font="Calibri", space_after=8, line_spacing=1.05, bullet_color=None):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
bc = bullet_color or BLUE
for i, item in enumerate(items):
if isinstance(item, tuple):
txt, lvl = item
else:
txt, lvl = item, 0
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.line_spacing = line_spacing
p.space_after = Pt(space_after)
prefix = ("• " if lvl == 0 else "- ")
p.text = prefix + txt
for r in p.runs:
r.font.size = Pt(size - (2 if lvl else 0))
r.font.color.rgb = color
r.font.name = font
p.level = 0
tb.text_frame.paragraphs[i].alignment = PP_ALIGN.LEFT
return tb
def footer(slide, page_num):
add_text(slide, Inches(0.5), Inches(7.15), Inches(6), Inches(0.3),
"Journal Club | Presenter: Dr. JV (JR-1)", size=10, color=RGBColor(0x9A,0x9A,0x9A))
add_text(slide, Inches(12.3), Inches(7.15), Inches(0.6), Inches(0.3),
str(page_num), size=10, color=RGBColor(0x9A,0x9A,0x9A), align=PP_ALIGN.RIGHT)
def title_header(slide, title, subtitle=None):
add_bar(slide, y=0, height=Inches(1.1), color=NAVY)
add_text(slide, Inches(0.55), Inches(0.18), Inches(12), Inches(0.7), title,
size=28, color=WHITE, bold=True)
if subtitle:
add_text(slide, Inches(0.55), Inches(0.7), Inches(12), Inches(0.4), subtitle,
size=14, color=RGBColor(0xBF,0xD7,0xEA), italic=True)
line = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(0.55), Inches(1.18), Inches(1.3), Pt(4))
line.fill.solid(); line.fill.fore_color.rgb = ACCENT
line.line.fill.background()
# ---------------- SLIDE 1: TITLE ----------------
s = add_slide(); bg(s, NAVY)
band = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, Inches(5.6), SW, Inches(1.9))
band.fill.solid(); band.fill.fore_color.rgb = RGBColor(0x08,0x22,0x3A); band.line.fill.background()
accent = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, Inches(2.55), Inches(0.18), Inches(1.6))
accent.fill.solid(); accent.fill.fore_color.rgb = ACCENT; accent.line.fill.background()
add_text(s, Inches(0.6), Inches(1.0), Inches(11), Inches(0.5), "JOURNAL CLUB", size=20, color=RGBColor(0x9A,0xC6,0xE8), bold=True)
add_text(s, Inches(0.55), Inches(2.3), Inches(12.2), Inches(2.0),
"Prophylactic Ureteral Stent Placement by General\nSurgeons is Safe and Feasible",
size=34, color=WHITE, bold=True, line_spacing=1.05)
add_text(s, Inches(0.6), Inches(4.15), Inches(12), Inches(0.6),
"Implementation of a Training and Credentialing Program for Non-Urologic Surgeons",
size=18, color=RGBColor(0xBF,0xD7,0xEA), italic=True)
add_text(s, Inches(0.6), Inches(4.85), Inches(12), Inches(0.5),
"Tamashiro K-K, Wilkins CJ, Maron A, et al. | The American Journal of Surgery 250 (2025) 116474",
size=13, color=RGBColor(0x9A,0xA9,0xB8))
add_text(s, Inches(0.6), Inches(5.85), Inches(6), Inches(0.5), "Presented by: Dr. JV", size=20, color=WHITE, bold=True)
add_text(s, Inches(0.6), Inches(6.3), Inches(6), Inches(0.5), "Junior Resident 1 (JR-1)", size=16, color=RGBColor(0xBF,0xD7,0xEA))
add_text(s, Inches(9.2), Inches(6.0), Inches(3.5), Inches(0.5), "Journal Club Presentation", size=13, color=RGBColor(0x9A,0xA9,0xB8), align=PP_ALIGN.RIGHT)
# ---------------- SLIDE 2: OUTLINE ----------------
s = add_slide(); bg(s)
title_header(s, "Outline")
items = ["Background & Rationale","Study Objective","Methods: Design & Training Program",
"Results: Patient Demographics","Results: Complications & Cannulation Outcomes",
"Risk Factors & Diagnosis-Specific Findings","Discussion & Comparison with Literature",
"Limitations","Conclusions & Take-Home Points"]
add_bullets(s, Inches(0.9), Inches(1.7), Inches(10.5), Inches(5), items, size=20, space_after=16, color=NAVY)
footer(s,2)
# ---------------- SLIDE 3: BACKGROUND ----------------
s = add_slide(); bg(s)
title_header(s, "Background & Rationale")
add_bullets(s, Inches(0.6), Inches(1.5), Inches(12.1), Inches(5.2), [
"Ureteral injury is a rare but serious complication of pelvic surgery (colorectal & gynecologic), incidence 0.2-10%",
"Associated with significant short- and long-term morbidity",
"Strategies to mitigate injury:",
("Prophylactic ureteral stenting (via rigid cystoscopy before abdominal incision)", 1),
("Intraureteral indocyanine green (ICG) injection for intraoperative fluorescence guidance", 1),
"Traditionally performed by urologists - requires coordination between operating and urology teams",
"At community-based institutions, urology coverage may not be consistently available",
"Reported complication rate of prophylactic stenting by urologists in literature: 2.37-12.1%",
], size=18, space_after=14)
footer(s,3)
# ---------------- SLIDE 4: OBJECTIVE ----------------
s = add_slide(); bg(s)
title_header(s, "Study Objective")
box = s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(1.2), Inches(2.4), Inches(10.9), Inches(2.6))
box.fill.solid(); box.fill.fore_color.rgb = LIGHT
box.line.color.rgb = BLUE; box.line.width = Pt(1.5)
tf = box.text_frame; tf.word_wrap = True; tf.vertical_anchor = MSO_ANCHOR.MIDDLE
tf.margin_left = Inches(0.4); tf.margin_right = Inches(0.4)
p = tf.paragraphs[0]
p.text = "To establish the safety and feasibility of non-urologic surgeons (general surgery, colorectal, obstetrics & gynecology) performing cystoscopy and prophylactic ureteral stent placement, after completing a structured training and credentialing program addressing limited urologic coverage."
p.alignment = PP_ALIGN.CENTER
for r in p.runs:
r.font.size = Pt(22); r.font.color.rgb = NAVY; r.font.bold = True
footer(s,4)
# ---------------- SLIDE 5: METHODS - DESIGN ----------------
s = add_slide(); bg(s)
title_header(s, "Methods: Study Design")
add_bullets(s, Inches(0.6), Inches(1.5), Inches(12.1), Inches(5.2), [
"Retrospective review, single institution (Community Medical Centers, Fresno, CA)",
"Study period: July 2017 - July 2024",
"Population: Adults (>=18 yrs) undergoing cystoscopy +/- prophylactic ureteral stent placement and/or ureteral cannulation with ICG injection, performed by the PRIMARY OPERATING SURGEON",
"Excluded: stent placement by urologists; patients with pre-op AKI, UTI, or indwelling urinary catheters",
"Data collected: demographics, service/indication for surgery, surgical approach (open vs robotic vs laparoscopic), laterality (unilateral vs bilateral), indwelling vs ICG-alone, and complications",
"Complications assessed (within 30 days): gross hematuria >=3 days, AKI (KDIGO criteria), urinary retention, UTI, urethral injury, ureteral injury",
"Statistics: chi-square/Fisher's exact, Bonferroni post-hoc, binary logistic regression; significance p<0.05 (SPSS v29)",
], size=16.5, space_after=11)
footer(s,5)
# ---------------- SLIDE 6: TRAINING PROGRAM ----------------
s = add_slide(); bg(s)
title_header(s, "Methods: Training & Credentialing Program")
add_bullets(s, Inches(0.6), Inches(1.45), Inches(12.1), Inches(5.4), [
"Structured in-house course for surgeons without prior ureteral stent experience",
"Step 1 - Didactic session: stent types, indications, placement/removal technique, management of complications, and criteria for urology consultation",
"Step 2 - Simulation: hands-on practice on a custom bladder model (suction cups simulating ureteral orifices) - minimum of 4 sets of bilateral stents placed",
"Step 3 - Supervised clinical practice: 6 proctored ureteral stent placements under an experienced surgeon before independent privileges granted",
"Maintenance of privileges: minimum 2 procedures/year required",
"Since 2017, 23 providers across general surgery, colorectal surgery, and OB/GYN obtained credentialing",
], size=17, space_after=13)
footer(s,6)
# ---------------- SLIDE 7: RESULTS - DEMOGRAPHICS ----------------
s = add_slide(); bg(s)
title_header(s, "Results: Patient Demographics (Table 1)")
add_text(s, Inches(0.6), Inches(1.35), Inches(12), Inches(0.4),
"748 cases included (of 834 screened) | Mean age 54.6 +/- 15.7 yrs | 482 female (64.4%)", size=16, color=NAVY, bold=True)
rows = [
("Service performed by", "Colorectal 504 (67.4%) | General Surgery 68 (9.1%) | Gynecology 112 (15.0%) | Obstetrics 64 (8.6%)"),
("Pre-op diagnosis", "Benign colorectal 364 (48.7%) | Colorectal cancer 206 (27.5%) | Gynecologic 122 (16.3%) | Obstetric 64 (8.6%)"),
("Surgical approach", "Robotic-assisted 478 (63.9%) | Open 239 (32.0%) | Laparoscopic 31 (4.1%)"),
("Complications", "70 cases (9.4%)"),
("Inability to cannulate ureter", "17 cases (2.3%)"),
]
y = Inches(2.0)
for label, val in rows:
r = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(0.6), y, Inches(3.3), Inches(0.85))
r.fill.solid(); r.fill.fore_color.rgb = NAVY; r.line.fill.background()
tf = r.text_frame; tf.word_wrap = True; tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]; p.text = label; p.alignment = PP_ALIGN.CENTER
for run in p.runs: run.font.size = Pt(13); run.font.bold = True; run.font.color.rgb = WHITE
r2 = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(3.95), y, Inches(8.75), Inches(0.85))
r2.fill.solid(); r2.fill.fore_color.rgb = LIGHT; r2.line.color.rgb = RGBColor(0xD8,0xD8,0xD8); r2.line.width=Pt(0.75)
tf2 = r2.text_frame; tf2.word_wrap = True; tf2.vertical_anchor = MSO_ANCHOR.MIDDLE
tf2.margin_left = Inches(0.15); tf2.margin_right = Inches(0.1)
p2 = tf2.paragraphs[0]; p2.text = val; p2.alignment = PP_ALIGN.LEFT
for run in p2.runs: run.font.size = Pt(13); run.font.color.rgb = GRAY
y += Inches(0.95)
footer(s,7)
# ---------------- SLIDE 8: RESULTS - COMPLICATIONS ----------------
s = add_slide(); bg(s)
title_header(s, "Results: Complications & Cannulation Success")
add_text(s, Inches(0.6), Inches(1.35), Inches(12), Inches(0.4),
"Overall complication rate: 9.4% | Successful ureter cannulation rate: 97.7%", size=18, color=NAVY, bold=True)
comp_data = [("AKI","4.4%"),("Urinary retention","3.3%"),("UTI","2.7%"),
("Hematuria >=3 days","0.9%"),("Ureteral injury","0.5%"),("Urethral injury","0.4%")]
x0 = Inches(0.7); w = Inches(1.95); gap = Inches(0.15); y0 = Inches(2.2); maxh = Inches(3.6)
maxval = 4.4
for i,(label,val) in enumerate(comp_data):
v = float(val.strip('%').replace('>=',''))
h = Inches(0.3 + (v/maxval)*3.0)
x = Inches(0.7 + i*(1.95+0.15))
bar = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, x, Inches(2.2)+ (maxh-h), w, h)
bar.fill.solid(); bar.fill.fore_color.rgb = BLUE if val!="0.5%" and val!="0.4%" else ACCENT
bar.line.fill.background()
add_text(s, x, Inches(2.2)+(maxh-h)-Inches(0.35), w, Inches(0.35), val, size=15, bold=True, color=NAVY, align=PP_ALIGN.CENTER)
add_text(s, x-Inches(0.05), Inches(2.2)+maxh+Inches(0.08), w+Inches(0.1), Inches(0.6), label, size=12, color=GRAY, align=PP_ALIGN.CENTER)
add_bullets(s, Inches(0.6), Inches(6.25), Inches(12.1), Inches(1.1), [
"No significant difference in complications by surgical service (p=0.193), approach (p=0.648), unilateral stent (p=0.768), bilateral stents (p=0.801), or ICG alone (p=0.596)",
"4 ureteral injuries occurred; none attributed to cystoscopy/stent placement itself",
], size=13.5, space_after=6)
footer(s,8)
# ---------------- SLIDE 9: RISK FACTORS ----------------
s = add_slide(); bg(s)
title_header(s, "Risk Factors for Complications")
add_bullets(s, Inches(0.6), Inches(1.55), Inches(12.1), Inches(3.0), [
"Increasing age significantly associated with higher odds of complication (p < 0.001)",
"Male sex significantly associated with complications (p = 0.036)",
"Colorectal cancer as surgical indication significantly associated with complications (p < 0.001)",
"Specific associations:",
("Age -> predictor of AKI (p<0.001), urinary retention (p<0.001), UTI (p=0.008)", 1),
("Male sex -> predictor of hematuria (p=0.010) and urethral injury (p=0.045)", 1),
], size=17, space_after=10)
box = s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(0.6), Inches(5.1), Inches(12.1), Inches(1.7))
box.fill.solid(); box.fill.fore_color.rgb = LIGHT; box.line.color.rgb=BLUE; box.line.width=Pt(1)
tf = box.text_frame; tf.word_wrap=True; tf.vertical_anchor=MSO_ANCHOR.MIDDLE
tf.margin_left=Inches(0.3); tf.margin_right=Inches(0.3)
p = tf.paragraphs[0]
p.text = "Table 2 (diagnosis-specific): Colorectal cancer -> higher AKI (p<0.001) & urinary retention (p<0.001); Benign colorectal -> higher urinary retention (p<0.001) & UTI (p=0.038); Obstetrics -> higher ureteral injury (p=0.015)"
p.alignment = PP_ALIGN.LEFT
for r in p.runs: r.font.size=Pt(15); r.font.color.rgb=NAVY; r.font.italic=True
footer(s,9)
# ---------------- SLIDE 10: DISCUSSION ----------------
s = add_slide(); bg(s)
title_header(s, "Discussion: Comparison with Literature")
add_bullets(s, Inches(0.6), Inches(1.5), Inches(12.1), Inches(5.2), [
"Non-urologic surgeon complication rate (9.4%) comparable to published urologist rates (2.7-12.1%)",
"Cannulation success (97.2%) comparable to urologist rates (90-98%)",
"No incidence of acute renal failure requiring dialysis; no complications requiring subsequent urologic intervention",
"Prior work (Rizvi et al.) showed general surgeons can safely place emergency ureteral stents for obstructive uropathy - this study extends that to elective prophylactic placement",
"First study to assess non-urologic surgeon performance specifically for prophylactic cystoscopic stenting and ICG use",
"Clinical implication: allows flexibility in OR scheduling and reduces burden on urology services, especially where urology coverage is limited (rural/community hospitals)",
], size=16.5, space_after=12)
footer(s,10)
# ---------------- SLIDE 11: LIMITATIONS ----------------
s = add_slide(); bg(s)
title_header(s, "Limitations")
add_bullets(s, Inches(0.6), Inches(1.6), Inches(12.1), Inches(4.8), [
"Observational, retrospective design",
"Single institution - may limit generalizability (most applicable to rural/smaller hospital systems with limited urology access)",
"Multiple providers performed procedures - potential technique variability",
"Female predominance due to inclusion of OB/GYN cases (inherently all-female)",
"Potential selection bias: patients with known urologic pathology or difficult anatomy had stenting performed by a urologist and were excluded",
], size=18, space_after=16)
footer(s,11)
# ---------------- SLIDE 12: CONCLUSION ----------------
s = add_slide(); bg(s)
title_header(s, "Conclusions")
box = s.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(1.0), Inches(1.9), Inches(11.3), Inches(2.2))
box.fill.solid(); box.fill.fore_color.rgb = NAVY; box.line.fill.background()
tf = box.text_frame; tf.word_wrap=True; tf.vertical_anchor=MSO_ANCHOR.MIDDLE
tf.margin_left=Inches(0.4); tf.margin_right=Inches(0.4)
p = tf.paragraphs[0]
p.text = "Cystoscopy with prophylactic ureteral stent placement can be safely performed by non-urologic surgeons, with complication and cannulation rates comparable to urologists."
p.alignment=PP_ALIGN.CENTER
for r in p.runs: r.font.size=Pt(22); r.font.bold=True; r.font.color.rgb=WHITE
add_bullets(s, Inches(1.0), Inches(4.4), Inches(11.3), Inches(2.2), [
"In regions where urology coverage is scarce, enabling the primary operating team to place prophylactic ureteral stents is invaluable",
"Supports wider adoption of structured training/credentialing programs for non-urologic surgeons",
], size=18, space_after=14)
footer(s,12)
# ---------------- SLIDE 13: TAKE-HOME POINTS ----------------
s = add_slide(); bg(s)
title_header(s, "Take-Home Points")
pts = [
"Ureteral injury is rare (0.2-10%) but serious; prophylactic stenting aids identification during pelvic surgery",
"A structured didactic + simulation + proctored-case training program can safely credential non-urologic surgeons",
"748 cases: 9.4% complication rate, 97.7% cannulation success - on par with urologist-performed benchmarks",
"Older age, male sex, and colorectal cancer as indication were independent risk factors for complications",
"This approach reduces reliance on urology availability and improves OR scheduling flexibility",
]
for i, pt in enumerate(pts):
y = Inches(1.55 + i*1.05)
num = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(0.7), y, Inches(0.55), Inches(0.55))
num.fill.solid(); num.fill.fore_color.rgb = ACCENT; num.line.fill.background()
tf = num.text_frame; tf.vertical_anchor = MSO_ANCHOR.MIDDLE
p = tf.paragraphs[0]; p.text = str(i+1); p.alignment = PP_ALIGN.CENTER
for r in p.runs: r.font.size=Pt(20); r.font.bold=True; r.font.color.rgb=WHITE
add_text(s, Inches(1.5), y, Inches(11.0), Inches(0.9), pt, size=16.5, color=GRAY, anchor=MSO_ANCHOR.MIDDLE)
footer(s,13)
# ---------------- SLIDE 14: THANK YOU / CITATION ----------------
s = add_slide(); bg(s, NAVY)
add_text(s, Inches(0.6), Inches(2.6), Inches(12), Inches(1.2), "Thank You", size=48, color=WHITE, bold=True, align=PP_ALIGN.CENTER)
add_text(s, Inches(0.6), Inches(3.9), Inches(12), Inches(0.5), "Questions & Discussion", size=20, color=RGBColor(0xBF,0xD7,0xEA), align=PP_ALIGN.CENTER, italic=True)
add_text(s, Inches(1.0), Inches(5.4), Inches(11.3), Inches(1.0),
"Reference: Tamashiro K-K, Wilkins CJ, Maron A, et al. Prophylactic ureteral stent placement by "
"general surgeons is safe and feasible: implementation of a training and credentialing program for "
"non-urologic surgeons. Am J Surg. 2025;250:116474.",
size=12, color=RGBColor(0x9A,0xA9,0xB8), align=PP_ALIGN.CENTER)
add_text(s, Inches(0.6), Inches(6.8), Inches(12), Inches(0.4), "Presented by Dr. JV (JR-1)", size=13, color=WHITE, align=PP_ALIGN.CENTER)
prs.save("/tmp/workspace/jc_ppt/Journal_Club_Ureteral_Stent_JV_JR1.pptx")
print("saved")
cd /tmp/workspace/jc_ppt && python3 build_ppt.py
cd /tmp/workspace/jc_ppt && python3 -c " from pptx import Presentation prs = Presentation('Journal_Club_Ureteral_Stent_JV_JR1.pptx') print('slides:', len(prs.slides)) " && ls -la Journal_Club_Ureteral_Stent_JV_JR1.pptx
Journal Club Ureteral Stent JV JR1
Presentation · PPTX