E fast ppt picture
EFAST extended focused assessment sonography trauma ultrasound

An anatomical diagram illustrating the transducer placement for the FAST (Focused Assessment with Sonography in Trauma) and eFAST (extended FAST) examinations on a human torso. The diagram uses color-coded ultrasound probes to distinguish between protocols. Blue probes indicate the standard FAST positions: the subxiphoid view (pericardial assessment), the right upper quadrant (Morison's pouch/hepatorenal space), the left upper quadrant (splenorenal space), and the suprapubic view (pelvic/rectovesical or recto-uterine pouch assessment) to detect free intraperitoneal fluid. Green probes represent the eFAST extensions: bilateral anterior thoracic views at the second to fourth intercostal spaces and mid-axillary views to assess for pneumothorax and hemothorax. This illustration is an educational tool for emergency medicine, trauma surgery, and radiology, demonstrating the systematic sonographic approach used to identify life-threatening hemorrhage or air in the thoracic and abdominal cavities during the primary survey of trauma patients.

Educational photographs of test platforms for evaluating ultrasound probe adapters and robotic automation in emergency medicine. Figures A and B show a clinical torso mannequin configured for the Extended Focused Assessment with Sonography for Trauma (eFAST) exam. The mannequin is equipped with integrated force-sensing resistors, indicated by white rectangular patches with red wiring, strategically positioned at standardized eFAST scan points (e.g., pericardial, perihepatic, perisplenic, and pelvic views) to measure contact repeatability and force application. Figures C and D display an ultrasound tissue phantom representing the femoral region, used for image repeatability testing. This phantom features anatomically correct skin-tone material and internal vasculature suitable for evaluating vascular access and probe-to-tissue contact stability. The setup demonstrates specialized medical simulation technology used in biomedical engineering and clinical robotics to standardize ultrasound imaging protocols and improve procedural accuracy in high-stakes diagnostic environments.

This dual-panel image demonstrates a left-sided retroperitoneal hematoma through different imaging modalities. Image (a) is a retroperitoneal Extended Focused Assessment with Sonography for Trauma (r-EFAST) ultrasound scan. It shows an anechoic to hypoechoic fluid collection in the left perirenal space, with electronic callipers (dotted line marked 'A' and 'X') measuring the 1.5 cm hematoma. Image (b) is an axial contrast-enhanced CT scan of the abdomen. It reveals a hyperdense collection representing a combined perirenal and pararenal hematoma (indicated by a white arrow). The hematoma is situated adjacent to the left kidney, causing anterior displacement of the renal parenchyma. These images illustrate the diagnostic utility of specialized ultrasound protocols (r-EFAST) compared to gold-standard CT imaging for detecting retroperitoneal bleeding following invasive medical procedures. The clinical significance lies in the rapid identification of post-catheterization complications in patients presenting with flank pain and hemodynamic instability.

This composite image illustrates the use of M-mode ultrasonography for the diagnosis of pneumothorax (PTX) using both a tissue phantom and human simulator scans. (A) Anatomical diagram showing a rib cage phantom with an integrated actuator mechanism used to simulate lung respiration. (B) M-mode ultrasound image of the phantom showing the 'seashore' sign, characterized by a granular, textured appearance deep to the pleural line, indicating normal lung sliding. (C) M-mode image of the phantom showing the 'barcode' or 'stratosphere' sign, where parallel horizontal lines replace the granular texture, signifying the absence of lung sliding indicative of a pneumothorax. (D) Human eFAST simulator baseline scan demonstrating normal respiratory motion in M-mode with undulating lines and heterogeneous texture. (E) Human eFAST simulator scan showing PTX injury with rigid, striated echogenic lines and a uniform linear pattern. These visual signatures are critical landmarks in the eFAST (Extended Focused Assessment with Sonography for Trauma) protocol for identifying air in the pleural cavity.

This diagnostic image displays a split-screen B-mode ultrasound of a left hemothorax in a 30-year-old male. The scan, performed using a cardiac preset and harmonic imaging (2D HAR) at 3.6 MHz, shows a large anechoic to hypoechoic fluid collection in the pleural space, consistent with blood accumulation. The fluid collection demonstrates heterogeneous internal echotexture. Superior to the fluid, the lung appears as a consolidated, hyperechoic structure floating within the effusion. Dotted caliper lines indicate volumetric measurements (D1, D2, D3), with a calculated volume of approximately 416.09 cm³. The image demonstrates clinical utility in the eFAST (Extended Focused Assessment with Sonography for Trauma) protocol for identifying pleural effusions and hemothorax. Key ultrasound parameters are visible on the right sidebar, including a dynamic range (DR) of 65 and a frame rate (FR) of 59, optimized for high-contrast thoracic imaging.

This dual-modality figure presents a comparison of diagnostic imaging for a retroperitoneal hematoma. Image (a) is a retroperitoneal-Extended Focused Assessment with Sonography for Trauma (r-EFAST) ultrasound scan showing a left renal hematoma. The pathology appears as a hypoechoic (dark) fluid collection adjacent to the kidney, with calipers indicating a 6 cm measurement. Image (b) is an axial computed tomography (CT) scan with intravenous contrast of the same patient. The CT confirms a large perirenal hematoma (white arrow) that extends into the pararenal space. Notably, the CT scan demonstrates inhomogeneous contrast distribution within the left renal parenchyma, suggesting compromised perfusion or parenchymal injury. This comparison illustrates the utility of bedside ultrasound in the rapid detection of retroperitoneal bleeding following invasive procedures, while CT provides superior anatomical detail regarding the extent of the hematoma and the functional status of the renal tissue. The clinical focus is on emergency radiology, trauma, and post-procedural complication monitoring for medical students and residents.

A split-field thoracic ultrasound image demonstrating normal lung findings in both B-mode (left) and M-mode (right). The left panel shows a 2-D grayscale view of the chest wall with alternating hyperechoic and hypoechoic layers representing subcutaneous tissue and muscle. A distinct, bright hyperechoic horizontal line (indicated by white arrowheads) represents the normal pleura. The right panel displays the M-mode 'seashore sign,' which confirms the presence of lung sliding and rules out pneumothorax at that site. The 'sea' portion (top) consists of horizontal, parallel linear echogenicities representing the stationary chest wall. Below the pleural line, the 'shore' (bottom) displays a granular, sandy texture representing the dynamic motion of the pulmonary parenchyma during respiration. This visual comparison is a fundamental component of the Extended Focused Assessment with Sonography for Trauma (eFAST) protocol used to evaluate for intra-pleural air or fluid.
mkdir -p /tmp/workspace/efast-ppt && ls /tmp/workspace/efast-ppt/
~/efast-ppt/build_efast.py
import json, subprocess, base64, sys
from io import BytesIO
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.oxml.ns import qn
from lxml import etree
# ─── Colours ────────────────────────────────────────────────────────────────
DARK_BLUE = RGBColor(0x0D, 0x2B, 0x55) # deep navy
MED_BLUE = RGBColor(0x14, 0x5C, 0x9E) # mid-blue header
ACCENT = RGBColor(0x00, 0xB0, 0xD4) # teal accent
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_GREY = RGBColor(0xF0, 0xF4, 0xF8)
TEXT_DARK = RGBColor(0x1A, 0x1A, 0x2E)
BULLET_COL = RGBColor(0x00, 0xB0, 0xD4)
W = Inches(13.333)
H = Inches(7.5)
prs = Presentation()
prs.slide_width = W
prs.slide_height = H
blank = prs.slide_layouts[6] # fully blank
# ─── Helper: filled rectangle ───────────────────────────────────────────────
def add_rect(slide, x, y, w, h, fill_rgb, line_rgb=None):
shape = slide.shapes.add_shape(1, x, y, w, h) # MSO_SHAPE_TYPE.RECTANGLE = 1
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
if line_rgb:
shape.line.color.rgb = line_rgb
shape.line.width = Pt(1)
else:
shape.line.fill.background()
return shape
# ─── Helper: textbox ────────────────────────────────────────────────────────
def add_tb(slide, text, x, y, w, h, size=18, bold=False, color=TEXT_DARK,
align=PP_ALIGN.LEFT, wrap=True, italic=False):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = wrap
tf.margin_left = 0
tf.margin_right = 0
tf.margin_top = 0
tf.margin_bottom= 0
p = tf.paragraphs[0]
p.alignment = align
r = p.add_run()
r.text = text
r.font.name = "Calibri"
r.font.size = Pt(size)
r.font.bold = bold
r.font.italic = italic
r.font.color.rgb = color
return tb
# ─── Helper: multi-bullet textbox ───────────────────────────────────────────
def add_bullets(slide, items, x, y, w, h, size=15, color=TEXT_DARK, indent=True):
tb = slide.shapes.add_textbox(x, y, w, h)
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Inches(0.1)
tf.margin_top = 0
first = True
for item in items:
if first:
p = tf.paragraphs[0]
first = False
else:
p = tf.add_paragraph()
p.space_before = Pt(4)
r = p.add_run()
r.text = ("• " if indent else "") + item
r.font.name = "Calibri"
r.font.size = Pt(size)
r.font.color.rgb = color
return tb
# ─── Helper: fetch image from URL → BytesIO ─────────────────────────────────
def fetch_image(url):
try:
result = json.loads(subprocess.check_output(
["python", "/tmp/skills/shared/scripts/fetch_images.py", url],
timeout=30
))
if result and result[0].get("base64"):
b64 = result[0]["base64"]
if "," in b64:
b64 = b64.split(",", 1)[1]
return BytesIO(base64.b64decode(b64))
except Exception as e:
print(f" [warn] fetch failed for {url}: {e}", file=sys.stderr)
return None
# ─── Helper: add image safely ───────────────────────────────────────────────
def add_image(slide, url, x, y, w, h):
bio = fetch_image(url)
if bio:
try:
slide.shapes.add_picture(bio, x, y, w, h)
return True
except Exception as e:
print(f" [warn] add_picture failed: {e}", file=sys.stderr)
return False
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 1 — TITLE SLIDE
# ═══════════════════════════════════════════════════════════════════════════
slide1 = prs.slides.add_slide(blank)
# Full background
add_rect(slide1, 0, 0, W, H, DARK_BLUE)
# Accent bar (left side vertical stripe)
add_rect(slide1, 0, 0, Inches(0.45), H, ACCENT)
# Top accent line
add_rect(slide1, 0, 0, W, Inches(0.08), ACCENT)
# Title
add_tb(slide1,
"eFAST Examination",
Inches(1.1), Inches(1.8), Inches(11), Inches(1.6),
size=56, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# Subtitle
add_tb(slide1,
"Extended Focused Assessment with Sonography for Trauma",
Inches(1.1), Inches(3.5), Inches(11), Inches(0.9),
size=22, bold=False, color=ACCENT, align=PP_ALIGN.CENTER)
# Divider
add_rect(slide1, Inches(3.5), Inches(4.55), Inches(6.3), Inches(0.05), ACCENT)
# Tagline
add_tb(slide1,
"Rapid · Repeatable · Non-invasive · Bedside",
Inches(1.1), Inches(4.75), Inches(11), Inches(0.7),
size=16, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# Footer
add_tb(slide1,
"Emergency Medicine | Trauma Surgery | Critical Care",
Inches(1.1), Inches(6.7), Inches(11), Inches(0.5),
size=12, color=RGBColor(0xA0, 0xC4, 0xE0), align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 2 — WHAT IS eFAST?
# ═══════════════════════════════════════════════════════════════════════════
slide2 = prs.slides.add_slide(blank)
add_rect(slide2, 0, 0, W, H, LIGHT_GREY)
add_rect(slide2, 0, 0, W, Inches(1.35), DARK_BLUE)
add_rect(slide2, 0, 0, Inches(0.08), H, ACCENT)
add_rect(slide2, 0, Inches(1.35), Inches(0.08), H - Inches(1.35), MED_BLUE)
# Slide title
add_tb(slide2, "What is eFAST?",
Inches(0.25), Inches(0.22), Inches(9), Inches(0.9),
size=34, bold=True, color=WHITE)
# Slide number
add_tb(slide2, "01", Inches(12.3), Inches(0.22), Inches(0.9), Inches(0.8),
size=28, bold=True, color=ACCENT, align=PP_ALIGN.RIGHT)
# Left text column
bullets_left = [
"eFAST = Extended Focused Assessment with Sonography for Trauma",
"Bedside ultrasound exam — rapid, non-invasive, repeatable during resuscitation",
"Evolved from FAST (Focused Abdominal Sonography for Trauma), first developed in the 1970s",
"Replaces diagnostic peritoneal lavage (DPL) in most modern trauma algorithms",
"Incorporated into ATLS (Advanced Trauma Life Support) as standard of care",
"Can be performed on any patient — infants to pregnant women",
]
add_bullets(slide2, bullets_left,
Inches(0.35), Inches(1.6), Inches(7.4), Inches(5.5),
size=15, color=TEXT_DARK)
# Right panel image
img_url = "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5060df12afa1185b81b7aa008a4dd32715d375d3aab5722b28d7f496591185a8.jpg"
added = add_image(slide2, img_url, Inches(7.9), Inches(1.5), Inches(5.0), Inches(5.6))
if not added:
add_rect(slide2, Inches(7.9), Inches(1.5), Inches(5.0), Inches(5.6), MED_BLUE)
add_tb(slide2, "eFAST\nProbe Positions\nDiagram",
Inches(7.9), Inches(3.2), Inches(5.0), Inches(1.5),
size=16, color=WHITE, align=PP_ALIGN.CENTER)
# Caption
add_tb(slide2, "Probe placement for FAST (blue) and eFAST (green) examinations",
Inches(7.9), Inches(7.0), Inches(5.0), Inches(0.4),
size=10, italic=True, color=MED_BLUE, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 3 — VIEWS & ANATOMY
# ═══════════════════════════════════════════════════════════════════════════
slide3 = prs.slides.add_slide(blank)
add_rect(slide3, 0, 0, W, H, LIGHT_GREY)
add_rect(slide3, 0, 0, W, Inches(1.35), DARK_BLUE)
add_rect(slide3, 0, 0, Inches(0.08), H, ACCENT)
add_tb(slide3, "eFAST Views & Anatomy",
Inches(0.25), Inches(0.22), Inches(9), Inches(0.9),
size=34, bold=True, color=WHITE)
add_tb(slide3, "02", Inches(12.3), Inches(0.22), Inches(0.9), Inches(0.8),
size=28, bold=True, color=ACCENT, align=PP_ALIGN.RIGHT)
# ── four view cards ──────────────────────────────────────────────────────
card_data = [
("Subxiphoid / Parasternal", "Pericardial effusion\nCardiac tamponade\nHeart motion"),
("Right Upper Quadrant", "Morison's pouch\nHepato-renal space\nRight paracolic gutter"),
("Left Upper Quadrant", "Splenorenal space\nLeft paracolic gutter\nLeft hemithorax base"),
("Suprapubic (Pelvic)", "Recto-vesical pouch (M)\nPouchy of Douglas (F)\nFree pelvic fluid"),
]
extra = [
("Bilateral Thoracic\n(eFAST extension)", "Anterior chest 2nd-4th ICS\nMid-axillary view\nPneumothorax / Hemothorax"),
("M-mode Lung", "Seashore sign → normal\nBarcode sign → pneumothorax\nLung sliding assessment"),
]
cx = Inches(0.22)
cy = Inches(1.5)
cw = Inches(3.1)
ch = Inches(2.4)
gap = Inches(0.2)
all_cards = card_data
for i, (title, body) in enumerate(all_cards):
col = i % 4
row = i // 4
x = cx + col * (cw + gap)
y = cy + row * (ch + gap)
add_rect(slide3, x, y, cw, ch, WHITE)
# card header
add_rect(slide3, x, y, cw, Inches(0.5), MED_BLUE)
add_tb(slide3, title, x + Inches(0.08), y + Inches(0.04),
cw - Inches(0.15), Inches(0.45),
size=12, bold=True, color=WHITE, wrap=True)
add_tb(slide3, body, x + Inches(0.1), y + Inches(0.55),
cw - Inches(0.2), ch - Inches(0.65),
size=12, color=TEXT_DARK, wrap=True)
# Row 2: eFAST extensions (2 cards side by side, centred)
row2_y = cy + ch + gap
row2_start_x = Inches(0.22) + Inches(1.55) # indent to centre under 4 cards
for i, (title, body) in enumerate(extra):
x = row2_start_x + i * (cw + gap + Inches(3.3))
add_rect(slide3, x, row2_y, cw + Inches(0.5), ch, WHITE)
add_rect(slide3, x, row2_y, cw + Inches(0.5), Inches(0.5), ACCENT)
add_tb(slide3, title, x + Inches(0.08), row2_y + Inches(0.04),
cw + Inches(0.3), Inches(0.45),
size=12, bold=True, color=WHITE, wrap=True)
add_tb(slide3, body, x + Inches(0.1), row2_y + Inches(0.55),
cw + Inches(0.3), ch - Inches(0.65),
size=12, color=TEXT_DARK, wrap=True)
# Seashore / Barcode image (right side)
img_url3 = "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_59e138b16fde412e5797be3c63b3e2ebde6049450b75014e0c2f2067b890ede4.jpg"
add_image(slide3, img_url3, Inches(9.7), Inches(1.5), Inches(3.45), Inches(5.6))
add_tb(slide3, "M-mode: Seashore (normal) vs. Barcode (PTX)",
Inches(9.7), Inches(7.05), Inches(3.45), Inches(0.35),
size=9, italic=True, color=MED_BLUE, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 4 — PERFORMING THE EXAM
# ═══════════════════════════════════════════════════════════════════════════
slide4 = prs.slides.add_slide(blank)
add_rect(slide4, 0, 0, W, H, LIGHT_GREY)
add_rect(slide4, 0, 0, W, Inches(1.35), MED_BLUE)
add_rect(slide4, 0, 0, Inches(0.08), H, ACCENT)
add_tb(slide4, "Performing the eFAST Exam",
Inches(0.25), Inches(0.22), Inches(9), Inches(0.9),
size=34, bold=True, color=WHITE)
add_tb(slide4, "03", Inches(12.3), Inches(0.22), Inches(0.9), Inches(0.8),
size=28, bold=True, color=ACCENT, align=PP_ALIGN.RIGHT)
# Left column: equipment
add_rect(slide4, Inches(0.22), Inches(1.5), Inches(4.0), Inches(5.6), WHITE)
add_rect(slide4, Inches(0.22), Inches(1.5), Inches(4.0), Inches(0.5), DARK_BLUE)
add_tb(slide4, "Equipment", Inches(0.3), Inches(1.53), Inches(3.85), Inches(0.45),
size=14, bold=True, color=WHITE)
add_bullets(slide4, [
"Phased-array or curvilinear probe\n(2-5 MHz) for abdominal views",
"High-frequency linear probe\n(6-13 MHz) optimal for pleural views",
"Patient supine during primary survey",
"Probe marker orientation:\n- RUQ/LUQ: cephalad\n- Subxiphoid: toward left shoulder\n- Suprapubic: cephalad or transverse",
], Inches(0.32), Inches(2.1), Inches(3.8), Inches(4.8), size=13, color=TEXT_DARK, indent=True)
# Middle column: technique
add_rect(slide4, Inches(4.42), Inches(1.5), Inches(4.5), Inches(5.6), WHITE)
add_rect(slide4, Inches(4.42), Inches(1.5), Inches(4.5), Inches(0.5), DARK_BLUE)
add_tb(slide4, "Examination Sequence", Inches(4.5), Inches(1.53), Inches(4.3), Inches(0.45),
size=14, bold=True, color=WHITE)
steps = [
"1 Subxiphoid — pericardial effusion",
"2 Right upper quadrant — Morison's pouch",
"3 Left upper quadrant — splenorenal",
"4 Suprapubic — pelvic free fluid",
"5 Right anterior chest — lung sliding / PTX",
"6 Left anterior chest — lung sliding / PTX",
"7 Bilateral costophrenic angles — hemothorax",
]
add_bullets(slide4, steps, Inches(4.52), Inches(2.1), Inches(4.3), Inches(4.8),
size=13, color=TEXT_DARK, indent=False)
# Right: image
img_url4 = "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_6882730bc3b4a21d9b31976397409ed7956985a1c04ed2ed01e0aed5af710230.jpg"
added4 = add_image(slide4, img_url4, Inches(9.12), Inches(1.5), Inches(3.9), Inches(5.6))
if not added4:
add_rect(slide4, Inches(9.12), Inches(1.5), Inches(3.9), Inches(5.6), MED_BLUE)
add_tb(slide4, "Normal lung sliding — Seashore sign (M-mode)",
Inches(9.12), Inches(7.05), Inches(3.9), Inches(0.35),
size=9, italic=True, color=MED_BLUE, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 5 — POSITIVE FINDINGS
# ═══════════════════════════════════════════════════════════════════════════
slide5 = prs.slides.add_slide(blank)
add_rect(slide5, 0, 0, W, H, LIGHT_GREY)
add_rect(slide5, 0, 0, W, Inches(1.35), DARK_BLUE)
add_rect(slide5, 0, 0, Inches(0.08), H, ACCENT)
add_tb(slide5, "Positive eFAST Findings",
Inches(0.25), Inches(0.22), Inches(9), Inches(0.9),
size=34, bold=True, color=WHITE)
add_tb(slide5, "04", Inches(12.3), Inches(0.22), Inches(0.9), Inches(0.8),
size=28, bold=True, color=ACCENT, align=PP_ALIGN.RIGHT)
# Finding cards
findings = [
("Free Intraperitoneal Fluid",
"Appears anechoic (black)\nRUQ: Morison's pouch\nLUQ: splenorenal recess\nPelvis: behind bladder / uterus\nDetects > 100 mL of free blood"),
("Pericardial Effusion\n/ Tamponade",
"Anechoic halo around heart\nSubxiphoid view\nParasternal long-axis view\nLoss of cardiac motion\n→ Emergency pericardiocentesis"),
("Pneumothorax",
"Absent lung sliding\nBarcode sign on M-mode\nLung point (pathognomonic)\nAbolished comet-tail artefacts\nHigher sensitivity than CXR"),
("Hemothorax",
"Anechoic fluid at costophrenic angle\nCompressed/floating lung\nDetects as little as 10 mL\nChallenging on supine CXR\nGuides thoracocentesis / chest drain"),
]
fw = Inches(3.1)
fh = Inches(5.5)
fx_start = Inches(0.22)
fy = Inches(1.5)
fgap = Inches(0.22)
for i, (title, body) in enumerate(findings):
fx = fx_start + i * (fw + fgap)
add_rect(slide5, fx, fy, fw, fh, WHITE)
add_rect(slide5, fx, fy, fw, Inches(0.6), MED_BLUE)
add_tb(slide5, title, fx + Inches(0.08), fy + Inches(0.04),
fw - Inches(0.15), Inches(0.55),
size=12, bold=True, color=WHITE, wrap=True)
add_bullets(slide5, body.split("\n"),
fx + Inches(0.1), fy + Inches(0.68),
fw - Inches(0.2), fh - Inches(0.8),
size=12, color=TEXT_DARK, indent=True)
# Add RUQ positive image below 1st card or on the right
img_url5 = "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4e1ccec826f3d736679ec4b2889f8ddecca0f59265e13e88bdc9035c1fa26f6b.jpg"
add_image(slide5, img_url5, Inches(9.7), Inches(1.5), Inches(3.45), Inches(5.5))
add_tb(slide5, "Retroperitoneal hematoma: r-EFAST vs CT",
Inches(9.7), Inches(7.0), Inches(3.45), Inches(0.4),
size=9, italic=True, color=MED_BLUE, align=PP_ALIGN.CENTER)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 6 — ACCURACY, LIMITATIONS & CLINICAL CONTEXT
# ═══════════════════════════════════════════════════════════════════════════
slide6 = prs.slides.add_slide(blank)
add_rect(slide6, 0, 0, W, H, LIGHT_GREY)
add_rect(slide6, 0, 0, W, Inches(1.35), MED_BLUE)
add_rect(slide6, 0, 0, Inches(0.08), H, ACCENT)
add_tb(slide6, "Accuracy, Limitations & Clinical Context",
Inches(0.25), Inches(0.22), Inches(11), Inches(0.9),
size=30, bold=True, color=WHITE)
add_tb(slide6, "05", Inches(12.3), Inches(0.22), Inches(0.9), Inches(0.8),
size=28, bold=True, color=ACCENT, align=PP_ALIGN.RIGHT)
# Accuracy panel
add_rect(slide6, Inches(0.22), Inches(1.5), Inches(4.0), Inches(5.5), WHITE)
add_rect(slide6, Inches(0.22), Inches(1.5), Inches(4.0), Inches(0.5), ACCENT)
add_tb(slide6, "Sensitivity & Specificity", Inches(0.3), Inches(1.53),
Inches(3.85), Inches(0.45), size=13, bold=True, color=WHITE)
add_bullets(slide6, [
"Hypotensive blunt trauma:\n→ sensitivity ≈ 100%",
"Normotensive blunt trauma:\n→ sensitivity 42-86%\n→ specificity 98-99%",
"Pneumothorax:\n→ superior to supine CXR\n(CXR sensitivity 47-75%)",
"Haemothorax:\n→ detects as little as 10 mL",
"Detects free blood > 100 mL",
], Inches(0.32), Inches(2.1), Inches(3.8), Inches(4.7), size=12, color=TEXT_DARK)
# Limitations panel
add_rect(slide6, Inches(4.42), Inches(1.5), Inches(4.5), Inches(5.5), WHITE)
add_rect(slide6, Inches(4.42), Inches(1.5), Inches(4.5), Inches(0.5), RGBColor(0xC0, 0x39, 0x2B))
add_tb(slide6, "Limitations", Inches(4.5), Inches(1.53), Inches(4.3), Inches(0.45),
size=13, bold=True, color=WHITE)
add_bullets(slide6, [
"Operator dependent",
"Unreliable in obesity or bowel gas",
"Hollow viscus injury not well seen",
"Low sensitivity (29-35%) for solid organ injury without haemoperitoneum",
"Cannot exclude injury in penetrating trauma",
"Unreliable for retroperitoneum",
"May need repeat or CT supplementation",
], Inches(4.52), Inches(2.1), Inches(4.3), Inches(4.7), size=12, color=TEXT_DARK)
# Clinical context panel
add_rect(slide6, Inches(9.12), Inches(1.5), Inches(3.9), Inches(5.5), WHITE)
add_rect(slide6, Inches(9.12), Inches(1.5), Inches(3.9), Inches(0.5), DARK_BLUE)
add_tb(slide6, "When to Use", Inches(9.2), Inches(1.53), Inches(3.75), Inches(0.45),
size=13, bold=True, color=WHITE)
add_bullets(slide6, [
"Blunt & penetrating torso trauma",
"Unstable trauma patient",
"Suspected cardiac tamponade",
"Ruptured ectopic pregnancy",
"Unexplained hypotension / shock",
"Serial assessment during resuscitation",
"When CT is unavailable or delayed",
"Part of RUSH exam in undifferentiated shock",
], Inches(9.2), Inches(2.1), Inches(3.75), Inches(4.7), size=12, color=TEXT_DARK)
# ═══════════════════════════════════════════════════════════════════════════
# SLIDE 7 — SUMMARY / KEY TAKEAWAYS
# ═══════════════════════════════════════════════════════════════════════════
slide7 = prs.slides.add_slide(blank)
add_rect(slide7, 0, 0, W, H, DARK_BLUE)
add_rect(slide7, 0, 0, Inches(0.45), H, ACCENT)
add_rect(slide7, 0, H - Inches(0.08), W, Inches(0.08), ACCENT)
add_tb(slide7, "Key Takeaways",
Inches(1.0), Inches(0.35), Inches(11), Inches(1.0),
size=38, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide7, Inches(2.5), Inches(1.45), Inches(8.3), Inches(0.05), ACCENT)
takeaways = [
"eFAST extends classic FAST with bilateral thoracic views to detect pneumothorax and hemothorax",
"Performs 7 sonographic windows: subxiphoid, RUQ, LUQ, suprapubic, 2× anterior chest, 2× costophrenic",
"Sensitivity approaches 100% for free fluid in haemodynamically unstable blunt trauma",
"Seashore sign = normal lung sliding; Barcode sign = pneumothorax (M-mode)",
"More sensitive than supine CXR for pneumothorax — avoids radiation in primary survey",
"Limitations: operator dependent; misses hollow viscus injury; unreliable in penetrating trauma",
"A positive eFAST in an unstable patient mandates urgent surgical intervention",
]
for i, t in enumerate(takeaways):
y_pos = Inches(1.6) + i * Inches(0.75)
# Bullet circle
add_rect(slide7, Inches(1.0), y_pos + Inches(0.15), Inches(0.3), Inches(0.3), ACCENT)
add_tb(slide7, t, Inches(1.5), y_pos, Inches(11.2), Inches(0.7),
size=14, color=WHITE, wrap=True)
# ─── Save ───────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/efast-ppt/eFAST_Examination.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
cd /tmp/workspace/efast-ppt && python build_efast.py 2>&1
**/*.py in /tmp/skills
python /tmp/skills/shared/scripts/fetch_images.py "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5060df12afa1185b81b7aa008a4dd32715d375d3aab5722b28d7f496591185a8.jpg" 2>&1 | head -5
ls -la /tmp/workspace/efast-ppt/ && python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/efast-ppt/eFAST_Examination.pptx') print(f'Slides: {len(prs.slides)}') for i, s in enumerate(prs.slides, 1): texts = [sh.text_frame.text[:50] for sh in s.shapes if sh.has_text_frame and sh.text_frame.text.strip()] print(f'Slide {i}: {texts[:2]}') "
python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_5060df12afa1185b81b7aa008a4dd32715d375d3aab5722b28d7f496591185a8.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_59e138b16fde412e5797be3c63b3e2ebde6049450b75014e0c2f2067b890ede4.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_6882730bc3b4a21d9b31976397409ed7956985a1c04ed2ed01e0aed5af710230.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_4e1ccec826f3d736679ec4b2889f8ddecca0f59265e13e88bdc9035c1fa26f6b.jpg" \ 2>&1 | python -c " import sys, json data = json.load(sys.stdin) for item in data: has = 'OK' if item.get('base64') else 'FAIL' print(has, item['url'][-40:]) "
~/efast-ppt/build_efast.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/efast-ppt/build_efast.py'
cd /tmp/workspace/efast-ppt && python build_efast.py 2>&1
ls -lh /tmp/workspace/efast-ppt/eFAST_Examination.pptx && python -c " from pptx import Presentation prs = Presentation('/tmp/workspace/efast-ppt/eFAST_Examination.pptx') print(f'Slides: {len(prs.slides)}') for i, s in enumerate(prs.slides, 1): imgs = [sh for sh in s.shapes if sh.shape_type == 13] print(f'Slide {i}: {len(imgs)} image(s)') "
eFAST Examination
Presentation · PPTX
| Slide | Title | Images |
|---|---|---|
| 1 | Title Slide - eFAST Examination | - |
| 2 | What is eFAST? - History, evolution from FAST/DPL, ATLS standard | Probe placement diagram (FAST blue / eFAST green) |
| 3 | eFAST Views & Anatomy - 6 view cards (subxiphoid, RUQ, LUQ, suprapubic, bilateral thoracic, M-mode) | Seashore vs. Barcode sign (M-mode) |
| 4 | Performing the Exam - Equipment, 7-step examination sequence | Normal lung sliding seashore sign |
| 5 | Positive Findings - Free fluid, pericardial effusion/tamponade, pneumothorax, hemothorax | Retroperitoneal hematoma: r-EFAST vs CT |
| 6 | Accuracy, Limitations & Clinical Context - Sensitivity/specificity data, limitations, indications | - |
| 7 | Key Takeaways - 7 bullet summary | - |
Find recent research on eFAST accuracy in specific trauma scenarios
eFAST accuracy sensitivity specificity trauma
FAST ultrasound pneumothorax blunt trauma accuracy
eFAST examination accuracy trauma 2023 2024 systematic review sensitivity specificity
PMID: 40913875
PMID: 36247707
eFAST penetrating trauma sensitivity hemopericardium
FAST ultrasound pediatric trauma accuracy
PMID: 36800399
PMID: 39954070
https://pmc.ncbi.nlm.nih.gov/articles/PMC12595777
| Scenario | Sensitivity (recent range) | Specificity | Notable caveat |
|---|---|---|---|
| Hemoperitoneum (blunt, normotensive) | 33-81% | ~99-100% | Very volume/operator dependent |
| Hemoperitoneum (blunt, hypotensive) | ~49-100% | ~99% | Best performance |
| Pneumothorax (experienced) | 84-98% | 95-100% | Beats supine CXR (47-76%) |
| Pneumothorax (general ED physician) | 59-68% | 100% | Technique critical |
| Hemothorax | 36-86% | ~95-100% | Weakest thoracic domain |
| Penetrating trauma | lower/unreliable | high | Cannot exclude injury |
| Obesity (high BMI) | reduced | reduced | OR +5.65%/kg/m² |
| Paramedic-performed (prehospital) | 80-100% | 93-97% | Training quality matters |