Make PPT on direct laryngoscopy procedure. For post-graduates. In ent
direct laryngoscopy technique laryngoscope blade vocal cords

**Imaging Modality:** Direct laryngoscopy (intraoperative endoscopic view). **Anatomical Region:** Larynx, specifically the glottis and anterior commissure. **Observed Pathology/Intervention:** Post-surgical management of an anterior glottic web or laryngeal synechia. The image displays a Silastic keelโa thin, translucent, medical-grade silicone spacerโpositioned endolaryngeally. **Characteristic Visual Features:** * **Keel Placement:** The Silastic sheet is inserted vertically between the true vocal folds, extending through the anterior commissure. * **Laryngeal Appearance:** The surrounding laryngeal mucosa appears erythematous and edematous, consistent with recent surgical intervention. * **Instrumentation:** A metal laryngoscope blade is visible in the foreground, providing exposure of the endolarynx. * **Fixation:** The device is positioned to maintain separation of the raw mucosal surfaces of the vocal cords to prevent re-adhesion and recurrent webbing during the re-epithelialization phase. **Key Diagnostic/Clinical Context:** This is a standard otolaryngological procedure for the treatment of laryngeal stenosis or glottic webs. The visual hallmark is the presence of a foreign spacer (keel) bisecting the anterior glottic space.

A procedural photograph capturing a laryngeal view during direct laryngoscopy, performed on a simulation manikin in a semiprone position. A metallic, likely stainless steel, laryngoscope blade is inserted into the oral cavity to depress the tongue and displace the mandible, providing a line of sight to the airway. Visible anatomical structures within the simulated oropharynx include the upper dentition and the posterior aspect of the oral cavity. The instrument is held by a hand at the handle base, which features distinct etched markings. This image demonstrates the clinical approach for airway management and endotracheal intubation in an unconventional positioning (semiprone), intended to facilitate gravitational drainage of oral secretions or emesis away from the laryngeal opening to improve visualization and prevent aspiration. The focus is on procedural technique, anatomical orientation, and the use of standard instrumentation for emergency or anesthetic airway control.

This clinical photograph captures a direct laryngoscopy performed using a right molar approach with a Miller no. 3 straight blade. The image demonstrates the specialized airway management technique required for a patient with a pedicled tongue flap, which is visible in the oral cavity. The straight Miller blade is positioned to lift the epiglottis directly, facilitating a clear view of the glottic opening for endotracheal intubation. The right molar approach is utilized to bypass the central tongue flap, minimizing the risk of traumatic injury to the surgical site. Visible adjuncts include a corrugated anesthesia breathing circuit and a fine suction or catheter tube in the foreground. This visual illustrates a modification of standard intubation protocols in the context of reconstructive maxillofacial surgery, specifically for a patient with a prior palatal fistula repair. The image serves as an educational resource for anesthesiology and oral-maxillofacial surgery, focusing on difficult airway management and the clinical utility of straight laryngoscope blades in restricted oropharyngeal spaces.

This composite image illustrates the design and clinical application of the Airway Scopeยฎ (AWS), a portable, battery-operated video-laryngoscope used for endotracheal intubation. Figure A shows the device's physical components: an orange handle with an integrated 6.1 cm LCD monitor and a single-use 'Intlock' blade. An endotracheal tube (ETT) with a blue radiopaque stripe is preloaded into the bladeโs dedicated side-channel guide, which facilitates direct advancement into the trachea. Figure B demonstrates the device's functional output during indirect laryngoscopy. The LCD screen displays a real-time view of the upper airway, specifically focusing on the glottic opening. To assist the clinician, a green crosshair target is superimposed on the digital image; alignment of this target with the glottis indicates the correct path for ETT insertion. This visual aid is designed to simplify intubation by providing a wide viewing angle (180ยฐ) and clear anatomical visualization of the vocal cords, thereby potentially increasing first-pass success rates in both novice and expert practitioners.

A series of four endoscopic frames (A-D) documenting a tracheal intubation procedure using a video-assisted stylet (styletubation) in an obese patient. Image A illustrates the initial laryngoscopy phase, showing the blue blade of a video laryngoscope (marked with a white star) positioned within the oropharynx. Image B displays the successful exposure of the glottic opening and epiglottis prior to stylet insertion. Image C provides a clear, magnified view of the vocal cords and the dark laryngeal inlet achieved via the optical stylet. Image D captures the final advancement, showing the distal view of the tracheal lumen and rings. The series demonstrates the clinical application of combining video laryngoscopy with a video-intubating stylet to manage potentially difficult airways in patients with high BMI, where redundant pharyngeal soft tissues may obscure direct visualization. This educational sequence highlights key anatomical landmarks including the epiglottis, arytenoid cartilages, vocal cords, and trachea.

Comparison of glottic visualization during videolaryngoscopic intubation using two different techniques. Panel (a) demonstrates indirect epiglottis elevation, where the laryngoscope blade tip is typically placed in the vallecula. This view shows a partially obscured glottis with the epiglottis remaining in a relatively neutral position, limiting the direct line of sight to the vocal cords. Panel (b) illustrates direct epiglottis elevation, achieved by placing the blade tip directly under the epiglottis to lift it. This technique results in a more comprehensive glottic exposure, revealing the vocal cords, arytenoid cartilages, and a clearer glottic opening (rima glottidis). Both images show the normal anatomy of the upper airway, including the reddish-pink laryngeal mucosa and the posterior pharyngeal wall. The comparison highlights the differences in anatomical exposure relevant to airway management and tracheal tube placement, often quantified by the Percentage of Glottic Opening (POGO) score.
laryngoscope Macintosh Miller blade comparison anatomy

A composite clinical comparison image demonstrating a mismatch between oral anatomy and standard medical equipment. The left panel shows a clinical photograph of a patient's lower dental arch exhibiting severe dental arch stenosis, significant crowding, and misalignment of the mandibular teeth. An overlay indicates an intra-arch distance of 17.4 mm between the mandibular second molars. The right panel displays a metallic Macintosh laryngoscope blade #3, with a superimposed ruler measuring its width at 23.0 mm. A double chevron symbol between the images highlights that the patient's dental arch width is smaller than the laryngoscope blade. This comparison illustrates a physical barrier to conventional direct laryngoscopy, highlighting a predictor for difficult airway management and the need for alternative intubation techniques, such as video laryngoscopy, in patients with Moebius syndrome or similar craniofacial abnormalities.

This composite educational image illustrates airway management techniques using the VieScope, a novel Miller-shaped (straight) laryngoscope, in comparison to conventional methods. Panel A displays the device, featuring a transparent acrylic glass tube blade that provides 360-degree circular LED illumination and a blue ergonomic handle with a textured grip. Panel B shows the device being used on a medical manikin, demonstrating the line-of-sight visualization through the lumen of the laryngoscope tube. Panel C illustrates the clinical technique for intubation with this device, where a bougie is first introduced through the VieScope to facilitate subsequent placement of an endotracheal tube; the manikin is shown with a cervical collar, simulating a trauma or difficult airway scenario. Panel D provides a contrast with a traditional Macintosh curved-blade laryngoscope, showing the visualization of the glottic opening during direct laryngoscopy. The content focuses on anesthesiology, emergency medicine, and advanced airway management education, highlighting the structural differences and procedural workflow between straight-tube and curved-blade laryngoscopy.

This comparative medical photograph displays two airway management devices: a conventional Macintosh laryngoscope (left) and an i-viewยฎ video laryngoscope (right), positioned above metric rulers for scale. The Macintosh laryngoscope features a classic metal construction with a cross-hatched cylindrical handle and a curved size-4 blade. In contrast, the i-viewยฎ video laryngoscope is an integrated single-piece device made of white plastic, characterized by a thicker, ergonomically shaped handle with a significant forward angulation and a longer curved blade. Centrally inset is a monitor view captured from the i-viewยฎ camera, illustrating a real-time laryngeal view during intubation. The digital display shows anatomical landmarks including the epiglottis and the opening to the glottis with the vocal cords visible under blue-tinted illumination. This comparison highlights structural differences in device geometry and material, which are critical educational factors in understanding maxillary incisor pressure and visualization success (Cormack-Lehane classification) during endotracheal intubation training in anesthesia and emergency medicine.

**Imaging Modality:** Clinical photograph of medical instrumentation. **Device Classification:** Comparison of airway management tools, specifically laryngoscope blades. **Key Components:** The image displays four metallic laryngoscope blades arranged in a 2x2 grid. * **Superior Row:** Two C-MAC videolaryngoscope blades (sizes 3 and 4). These feature integrated digital camera housings and are attached to specialized ergonomic handles. The blade geometry maintains a traditional Macintosh-style curve but with a slimmer profile to accommodate the electronic optical components. * **Inferior Row:** Two conventional Macintosh laryngoscope blades (sizes 3 and 4). These are standard direct laryngoscopy blades characterized by a broad, curved spatula and a proximal heel designed for attachment to a standard battery-operated handle. **Characteristic Visual Features:** The comparison highlights the structural similarities in curvature (curved blade design for displacement of the tongue into the submandibular space) while illustrating the design modifications required for videolaryngoscopy. The C-MAC blades exhibit a more pronounced proximal housing for the video sensor compared to the thinner, purely mechanical hinge of the standard Macintosh blades. **Clinical Context:** These devices are utilized for endotracheal intubation and glottic visualization during anesthesia and emergency airway management.
microlaryngoscopy suspension laryngoscopy ENT operating room

This clinical comparison shows two endoscopic laryngoscopy frames demonstrating complications of suspension microlaryngoscopy. The left frame (pre-operative) displays a distinct, smooth-surfaced polyp on the medial margin of the right vocal fold. Concurrently, a faint, pale red post-intubation hematoma is visible on the anterolateral aspect of the left vocal fold. The right frame (post-operative) shows the same anatomical region after surgical excision of the right vocal fold polyp. Notably, the hematoma on the left vocal fold has progressed, appearing larger and deeper red/purple in color, indicating acute vascular congestion or hemorrhage likely secondary to laryngeal instrumentation or intubation trauma. The vocal folds otherwise appear pinkish-white with visible longitudinal vascular patterns. This image serves as an educational example of minor, temporary surgical complications in otolaryngology, specifically distinguishing between a primary pathology (vocal fold polyp) and iatrogenic trauma (post-intubation hematoma).

A series of four fiberoptic laryngoscopy images (A, B, C, and D) illustrating the progression and treatment of laryngeal amyloidosis. Image A (pre-operative) shows a prominent, erythematous subepithelial mass on the left false vocal cord extending toward the laryngeal ventricle, causing partial glottic obstruction. Image B (immediate post-operative) demonstrates the glottic area after microlaryngoscopy surgical excision; the mass is absent, though the surgical site shows localized mucosal irregularity and erythema. Image C (4-month follow-up) reveals a small, localized recurrence or focal granulation tissue at the site of the previous excision, accompanied by persistent mucosal hyperemia. Image D (final follow-up) shows a clear glottic opening with significantly improved mucosal health and restoration of regular vocal cord structure. This comparison sequence is an educational resource for Otolaryngology (ENT), highlighting clinical manifestations, post-surgical monitoring, and the healing progression of localized laryngeal lesions.

This endoscopic clinical photograph displays the laryngeal inlet during suspension laryngoscopy, specifically showing a right-sided laryngopyocele. The image reveals a prominent, bulging, erythematous mass protruding from the supraglottic area, causing partial obstruction of the airway lumen. The surface of the mass is smooth yet irregular in contour, with areas of intense hyperemic redness and lighter highlights suggestive of moist mucosal secretions. Adjacent to the mass, a white fibrous-appearing vocal cord is visible, though it is displaced by the swelling. The surrounding laryngeal mucosa appears edematous and inflamed with visible vascular markings. This image illustrates the typical clinical presentation of an infected laryngocele (laryngopyocele) requiring surgical intervention such as marsupialization or de-roofing to secure the airway and drain purulent material.

This clinical endoscopic image, obtained during suspension laryngoscopy, demonstrates the anatomical structures of the larynx with a significant obstructive lesion. The epiglottis (E) is visible superiorly, showing normal mucosal vascularity. Below the level of the white, tendinous right vocal cord (Rt VC), a prominent pinkish-red subglottic mass (M) is identified. The mass is lobulated and smooth-surfaced, positioned primarily beneath the right vocal fold. White arrows outline the mass's margins, highlighting its significant intrusion into the laryngeal airway. This encroachment results in substantial luminal narrowing of the subglottic region, clinically representing a high-grade subglottic stenosis. The visual characteristics and location are essential for the differential diagnosis of subglottic lesions, which in this case was histopathologically confirmed as a lobular capillary hemangioma following endoscopic excision. The image serves as an educational tool for otorhinolaryngology, illustrating airway assessment and the endoscopic presentation of laryngeal pathology causing biphasic stridor.
laryngeal anatomy epiglottis vocal cords arytenoids endoscopic view

This clinical image is a fiberoptic endoscopic view of the laryngeal introitus. The most striking pathological finding is the complete absence of the epiglottis, a condition known as epiglottic aplasia or agenesis. Normally, the epiglottis appears as a cartilaginous, flap-like structure anterior to the glottis; here, the region where the epiglottis should be located is characterized by a smooth, continuous mucosal surface without any distinct projection. Centrally, the vocal folds (true vocal cords) are visible and appear structurally intact with a clear glottic opening. The surrounding supraglottic tissues, including the arytenoids and aryepiglottic folds, show a moist, pink mucosal lining typical of laryngeal anatomy, though the normal contours are altered by the lack of epiglottic support. Small white specular reflections from the endoscopic light source are visible on the mucosal surface. This rare congenital anomaly has significant clinical relevance regarding airway protection and swallowing mechanics.

Two circular panels show a diagnostic endoscopy of the human larynx, specifically a postoperative view following surgical repair of laryngeal trauma. The clinical photographs depict the internal laryngeal anatomy, including the epiglottis, false vocal folds, and true vocal cords. The mucosal surfaces appear pinkish-red and healthy, with no visible signs of acute inflammation, significant granulation tissue, or ulceration. The true vocal folds are centrally positioned and form a dark triangular glottic opening, suggesting patency of the airway. The left panel shows the larynx in a more open (abducted) state, while the right panel shows a slightly different phase of mobilization or viewing angle. The anatomical structures, including the arytenoids and surrounding vestibular folds, appear symmetrical and well-defined. This endoscopic evaluation is used to assess postoperative healing, laryngeal lumen patency, and vocal cord mobility after complex laryngeal reconstruction, such as thyroid and cricoid cartilage fracture repair.

A two-panel clinical endoscopic image featuring a 2-month follow-up flexible laryngoscopy. The left panel provides a wide-angle view of the laryngeal inlet, showing the vocal folds, arytenoids, and epiglottis. The vocal folds appear white, smooth, and in an abducted position, with healthy-appearing surrounding laryngeal mucosa. The right panel displays a close-up view of the epiglottis, revealing a distinct surgical notch on its superior free margin, which is the result of a previous biopsy. The laryngeal surface of the epiglottis and the arytenoid mucosa show a complete resolution of prior granulomatous or ulcerated lesions, now presenting as pink, uniform, and healthy tissue. There are no signs of active inflammation, edema, or polylobulated masses. This image demonstrates the successful response of laryngeal tuberculosis to antitubercular treatment, highlighting the healing of the subepithelial chorion and the restoration of normal laryngeal anatomy and mucosal integrity in an adult patient.
Cormack Lehane grading laryngoscopy view classification

This set of four endoscopic images (A-D) illustrates the Cormack-Lehane (CL) grading system, a standardized clinical tool used in anesthesiology to assess the difficulty of tracheal intubation based on laryngeal visibility during direct laryngoscopy. Image A (Grade I) shows full visualization of the glottic opening, including the anterior and posterior commissures and clear vocal cords. Image B (Grade II) demonstrates partial glottic visualization; the posterior portion is visible, but the anterior commissure is obscured by the epiglottis. Image C (Grade III) shows only the epiglottis, with no glottic structures or vocal cords visible, representing a difficult airway scenario. Image D (Grade IV) shows no identifiable laryngeal structures, indicating only soft palate or oropharyngeal tissue is visible, often requiring advanced airway management techniques. This comparison serves as an educational reference for medical students and clinicians for airway assessment and predicting potential intubation difficulty.

Two side-by-side videolaryngoscopy images (labeled A and B) demonstrating a Cormack-Lehane Grade I view during a general anesthesia induction. Image A displays an open glottis, marked with a white star, showing clearly visible and separated vocal cords and a patent airway. The surrounding laryngeal anatomy, including the epiglottis and arytenoid cartilage regions, appears healthy and without structural anomalies. Image B illustrates the subsequent procedural step: the introduction of an endotracheal tube (ETT). The ETT is visible passing through the glottic opening between the vocal cords, ensuring correct intratracheal placement for mechanical ventilation. These images serve as an educational example of successful video-assisted laryngoscopy and intubation technique in a pediatric patient with craniofacial sequelae (cleft lip and palate).

This dual-panel clinical photograph displays airway anatomy via video laryngoscopy using a Glidescopeยฎ. Image (a) focuses on the epiglottis, which appears relatively large, thickened, and curvilinear with a smooth, glistening mucosal surface. This view is typical of the initial phase of laryngoscopy where the epiglottis is visualized prior to lifting it to expose the glottis. Image (b) shows the glottic opening, classified as Cormack-Lehane Grade 2. The dark, elliptical glottic aperture is partially visible, flanked by the aryepiglottic folds and posterior laryngeal structures which appear pink and well-perfused. These images illustrate the airway assessment of a pediatric patient with MillerโDieker syndrome, a condition associated with potential difficult intubation due to craniofacial and anatomical variations. The visual documentation is essential for anesthesiology education, highlighting the use of video-assisted intubation techniques to navigate complex neonatal or pediatric airways.
mkdir -p /tmp/workspace/direct-laryngoscopy-ppt && ls /tmp/workspace/
with clar diagrams
cd /tmp/workspace/direct-laryngoscopy-ppt && python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_0d9bdb6797b01b133e0da4d20b26b2b5f30da1232ba5840bd151ad4f44f8c7fa.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_27bc4b4972f67027950a6e2d686fae2c3d7b22c0a5c54a62599f1cad0cddb64c.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_d3a8554d736e8564fefecbdfe3bbb099ab82763b4fce8e2238260914267fe651.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_a1b1b1526a9ad3fab6c83a2a73f74faaccb44c77a3a1fcca6b8bed40f60b7bbd.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_9869d0c69677356fa9262e6e71851d82e5dc13360958ae1e2237c58e3bc212c6.jpg" \ "https://cdn.orris.care/cdss_images/547a2825b929166d5ff570e074b19be44d184a50bbc1fb8c9d648385ef973609.png" \ "https://cdn.orris.care/cdss_images/896db0be669d6498949c6bd" \ > /tmp/workspace/direct-laryngoscopy-ppt/images.json 2>&1 echo "Exit: $?" head -c 300 /tmp/workspace/direct-laryngoscopy-ppt/images.json
with clear diagrams
mkdir -p /tmp/workspace/direct-laryngoscopy-ppt && echo "Directory created"
python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_0d9bdb6797b01b133e0da4d20b26b2b5f30da1232ba5840bd151ad4f44f8c7fa.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_27bc4b4972f67027950a6e2d686fae2c3d7b22c0a5c54a62599f1cad0cddb64c.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_a1b1b1526a9ad3fab6c83a2a73f74faaccb44c77a3a1fcca6b8bed40f60b7bbd.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_9869d0c69677356fa9262e6e71851d82e5dc13360958ae1e2237c58e3bc212c6.jpg" \ "https://cdn.orris.care/cdss_images/547a2825b929166d5ff570e074b19be44d184a50bbc1fb8c9d648385ef973609.png" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_e0a18bb7ce96d3b65a4b6c488dd2ab39d33116cf29a00f2a401d2be4d3cbb8de.jpg" \ "https://cdn.orris.care/cdss_images/roco_radiology_ROCO_50708_1766648920539.png" \ > /tmp/workspace/direct-laryngoscopy-ppt/images.json echo "Done: $?"
python3 -c " import json with open('/tmp/workspace/direct-laryngoscopy-ppt/images.json') as f: data = json.load(f) for i, img in enumerate(data): status = 'OK' if img.get('base64') else 'FAIL' print(f'{i}: {status} - {img[\"url\"][:60]}') "
~/direct-laryngoscopy-ppt/build_ppt.py
import json, base64, subprocess
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.util import Inches, Pt
import textwrap
# โโ Color palette โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
NAVY = RGBColor(0x0D, 0x2A, 0x4A) # dark navy โ headers / accents
TEAL = RGBColor(0x00, 0x7B, 0x8A) # teal โ sub-headers / bullets
GOLD = RGBColor(0xF0, 0xA5, 0x00) # gold โ highlights
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
LIGHT_BG = RGBColor(0xF0, 0xF4, 0xF8) # very light blue-grey background
MID_GREY = RGBColor(0x55, 0x6B, 0x82)
DARK_TXT = RGBColor(0x1A, 0x1A, 0x2E)
# โโ Load images โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
with open('/tmp/workspace/direct-laryngoscopy-ppt/images.json') as f:
img_data = json.load(f)
def get_img_stream(idx):
raw = base64.b64decode(img_data[idx]['base64'].split(',')[-1])
return BytesIO(raw)
# โโ Presentation setup โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# Helpers
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def bg(slide, color=LIGHT_BG):
"""Fill slide background."""
from pptx.oxml.ns import qn
from lxml import etree
bg_elem = slide.background
fill = bg_elem.fill
fill.solid()
fill.fore_color.rgb = color
def add_rect(slide, x, y, w, h, fill_color, alpha=None):
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill_color
shape.line.fill.background()
return shape
def add_text(slide, text, x, y, w, h,
font_size=20, bold=False, color=DARK_TXT,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.TOP,
italic=False, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = wrap
tf.vertical_anchor = v_anchor
tf.margin_left = Pt(2)
tf.margin_right = Pt(2)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = "Calibri"
return tb
def add_bullet_slide(slide, title_text, bullets, title_color=WHITE,
content_x=0.4, content_y=1.5, content_w=12.5, content_h=5.6,
bullet_size=19, col2_bullets=None):
"""Standard two-pane or single-pane bullet slide."""
# Header bar
add_rect(slide, 0, 0, 13.333, 1.3, NAVY)
add_text(slide, title_text, 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# Accent bar
add_rect(slide, 0, 1.3, 13.333, 0.06, GOLD)
if col2_bullets:
# Two-column layout
for col_idx, col_bullets in enumerate([bullets, col2_bullets]):
cx = 0.4 + col_idx * 6.5
cw = 6.1
tb = slide.shapes.add_textbox(Inches(cx), Inches(content_y),
Inches(cw), Inches(content_h))
tf = tb.text_frame
tf.word_wrap = True
for i, b in enumerate(col_bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(4)
p.space_after = Pt(4)
run = p.add_run()
# Support sub-bullets (tuple: (text, level))
if isinstance(b, tuple):
text, level = b
p.level = level
bullet_char = " โข " if level == 1 else "โข "
run.text = bullet_char + text
run.font.size = Pt(bullet_size - 2)
run.font.color.rgb = MID_GREY
else:
run.text = "โธ " + b
run.font.size = Pt(bullet_size)
run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
else:
tb = slide.shapes.add_textbox(Inches(content_x), Inches(content_y),
Inches(content_w), Inches(content_h))
tf = tb.text_frame
tf.word_wrap = True
for i, b in enumerate(bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(4)
p.space_after = Pt(4)
run = p.add_run()
if isinstance(b, tuple):
text, level = b
run.text = (" โฆ " if level == 1 else "โธ ") + text
run.font.size = Pt(bullet_size - 2 if level == 1 else bullet_size)
run.font.color.rgb = MID_GREY if level == 1 else DARK_TXT
else:
run.text = "โธ " + b
run.font.size = Pt(bullet_size)
run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
def add_image_slide(slide, title_text, img_stream, caption,
img_x=3.5, img_y=1.5, img_w=6.3, img_h=4.5,
left_bullets=None):
"""Slide with image on right (or centre) and optional bullet text on left."""
add_rect(slide, 0, 0, 13.333, 1.3, NAVY)
add_text(slide, title_text, 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE,
align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(slide, 0, 1.3, 13.333, 0.06, GOLD)
if left_bullets:
# Image on right half
img_x, img_y, img_w, img_h = 6.9, 1.5, 6.1, 4.8
tb = slide.shapes.add_textbox(Inches(0.4), Inches(1.55),
Inches(6.2), Inches(5.5))
tf = tb.text_frame
tf.word_wrap = True
for i, b in enumerate(left_bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(5)
run = p.add_run()
if isinstance(b, tuple):
text, level = b
run.text = (" โฆ " if level == 1 else "โธ ") + text
run.font.size = Pt(17 - level * 1)
run.font.color.rgb = MID_GREY if level == 1 else DARK_TXT
else:
run.text = "โธ " + b
run.font.size = Pt(18)
run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
slide.shapes.add_picture(img_stream,
Inches(img_x), Inches(img_y),
Inches(img_w), Inches(img_h))
# Caption
add_text(slide, caption,
img_x, img_y + img_h + 0.05,
img_w, 0.45,
font_size=11, italic=True, color=MID_GREY,
align=PP_ALIGN.CENTER)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 1 โ Title slide
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, NAVY)
# Decorative gold bar top
add_rect(s, 0, 0, 13.333, 0.15, GOLD)
# Decorative gold bar bottom
add_rect(s, 0, 7.35, 13.333, 0.15, GOLD)
# Teal side accent
add_rect(s, 0, 0.15, 0.12, 7.2, TEAL)
# Big title
add_text(s, "DIRECT LARYNGOSCOPY", 0.6, 1.5, 12.2, 1.6,
font_size=52, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
# Subtitle
add_text(s, "A Comprehensive Guide for ENT Postgraduates",
0.6, 3.2, 12.2, 0.8,
font_size=26, color=GOLD, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
# Divider
add_rect(s, 3.0, 4.1, 7.333, 0.05, TEAL)
# Meta
add_text(s, "Department of Otorhinolaryngology โ Head & Neck Surgery",
0.6, 4.3, 12.2, 0.55,
font_size=18, color=WHITE, align=PP_ALIGN.CENTER, italic=True)
add_text(s, "Cummings Otolaryngology | Scott-Brown's Otorhinolaryngology | Roberts & Hedges'",
0.6, 4.9, 12.2, 0.5,
font_size=14, color=MID_GREY, align=PP_ALIGN.CENTER, italic=True)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 2 โ Table of Contents
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.3, NAVY)
add_text(s, "TABLE OF CONTENTS", 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 1.3, 13.333, 0.06, GOLD)
topics = [
("01", "Definition & Historical Background"),
("02", "Surgical Anatomy of the Larynx"),
("03", "Indications & Contraindications"),
("04", "Equipment & Instrumentation"),
("05", "Patient Preparation & Anaesthesia"),
("06", "Step-by-Step Procedure"),
("07", "Cormack-Lehane Classification"),
("08", "Microlaryngoscopy (Suspension Laryngoscopy)"),
("09", "Complications & Management"),
("10", "Direct vs Video Laryngoscopy"),
]
col1 = topics[:5]
col2 = topics[5:]
for col_i, col in enumerate([col1, col2]):
cx = 0.5 + col_i * 6.5
for row_i, (num, title) in enumerate(col):
ry = 1.55 + row_i * 1.1
# Number badge
badge = s.shapes.add_shape(1, Inches(cx), Inches(ry),
Inches(0.65), Inches(0.65))
badge.fill.solid()
badge.fill.fore_color.rgb = TEAL
badge.line.fill.background()
add_text(s, num, cx + 0.01, ry, 0.65, 0.65,
font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER,
v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, title, cx + 0.75, ry + 0.05, 5.5, 0.6,
font_size=17, color=DARK_TXT, align=PP_ALIGN.LEFT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 3 โ Definition & History
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_bullet_slide(s, "Definition & Historical Background", [
"Direct Laryngoscopy (DL): direct visualisation of the larynx with a rigid laryngoscope inserted transorally",
"Requires alignment of oral, pharyngeal & laryngeal axes",
"Distinguishes from indirect (mirror) and flexible fibreoptic laryngoscopy",
"",
"Historical Milestones",
("Manuel Garcรญa (1855) โ first laryngosceal mirror examination", 1),
("Kirstein (1895) โ first true direct autoscopy without a mirror", 1),
("Chevalier Jackson (1915) โ systematic direct laryngoscopy; standardised instruments", 1),
("Kleinsasser (1968) โ introduced microlaryngoscopy with operating microscope", 1),
("Video laryngoscopy era โ McGrath, C-MAC, GlideScope (2000s onwards)", 1),
"",
"Clinical Significance in ENT",
("Gold standard for endolaryngeal biopsy, phonosurgery & airway assessment", 1),
("Allows bimanual microsurgical dissection under magnification", 1),
])
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 4 โ Surgical Anatomy (image + bullets)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Surgical Anatomy of the Larynx",
get_img_stream(3), # endoscopic larynx anatomy view
"Flexible endoscopy: vocal folds, arytenoids & epiglottis",
img_x=7.1, img_y=1.45, img_w=5.9, img_h=4.8,
left_bullets=[
"Three cartilaginous compartments:",
("Supraglottis: epiglottis, aryepiglottic folds, false cords", 1),
("Glottis: true vocal cords + anterior & posterior commissures", 1),
("Subglottis: from inferior surface of cords to lower border of cricoid", 1),
"",
"Key Landmarks during DL:",
("Epiglottis โ first structure seen on blade insertion", 1),
("Vallecula โ tip of Macintosh blade placed here", 1),
("Arytenoid cartilages โ guide tube passage", 1),
("Rima glottidis โ the glottic aperture", 1),
("Anterior commissure โ most anterior junction of vocal cords", 1),
"",
"Innervation: SLN (internal branch) โ supraglottis; RLN โ glottis & subglottis",
]
)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 5 โ Indications & Contraindications
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.3, NAVY)
add_text(s, "Indications & Contraindications", 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 1.3, 13.333, 0.06, GOLD)
# Green box โ Indications
add_rect(s, 0.3, 1.5, 5.9, 0.55, RGBColor(0x00, 0x6B, 0x3C))
add_text(s, "โ INDICATIONS", 0.3, 1.5, 5.9, 0.55,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
ind_bullets = [
"Diagnostic",
("Hoarseness / dysphonia not resolving > 3 weeks", 1),
("Suspected laryngeal malignancy โ biopsy", 1),
("Vocal cord paralysis โ assessment & cause", 1),
("Stridor โ airway assessment", 1),
("Laryngeal trauma evaluation", 1),
"",
"Therapeutic",
("Microlaryngeal surgery: polyp, nodule, cyst excision", 1),
("Papillomatosis (RRP) resection โ COโ laser / microdebrider", 1),
("Subglottic stenosis dilatation", 1),
("Foreign body removal", 1),
("Endotracheal intubation (emergency)", 1),
("Arytenoid injection / medialization", 1),
]
tb = s.shapes.add_textbox(Inches(0.3), Inches(2.15), Inches(5.9), Inches(5.0))
tf = tb.text_frame; tf.word_wrap = True
for i, b in enumerate(ind_bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(3)
run = p.add_run()
if isinstance(b, tuple):
run.text = " โฆ " + b[0]
run.font.size = Pt(15)
run.font.color.rgb = MID_GREY
elif b == "":
run.text = ""
run.font.size = Pt(6)
else:
run.text = "โธ " + b
run.font.size = Pt(16)
run.font.color.rgb = TEAL
run.font.bold = True
run.font.name = "Calibri"
# Red box โ Contraindications
add_rect(s, 7.1, 1.5, 5.9, 0.55, RGBColor(0xB0, 0x20, 0x20))
add_text(s, "โ CONTRAINDICATIONS", 7.1, 1.5, 5.9, 0.55,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
con_bullets = [
"Absolute",
("Acute epiglottitis โ risk of complete obstruction", 1),
("Unstable cervical spine injury (until cleared)", 1),
"",
"Relative",
("Limited mouth opening (< 2.5 cm)", 1),
("Severe temporo-mandibular joint ankylosis", 1),
("Severe kyphosis / restricted neck extension", 1),
("Copious blood / secretions obscuring the view", 1),
("Uncooperative patient without GA", 1),
("Coagulopathy (relative โ correct pre-op)", 1),
"",
"Precautions",
("Bleeding disorders โ correct INR / platelets pre-op", 1),
("Anticoagulants โ plan bridging therapy", 1),
("Laryngeal angioedema โ secure airway first", 1),
]
tb2 = s.shapes.add_textbox(Inches(7.1), Inches(2.15), Inches(5.9), Inches(5.0))
tf2 = tb2.text_frame; tf2.word_wrap = True
for i, b in enumerate(con_bullets):
p = tf2.paragraphs[0] if i == 0 else tf2.add_paragraph()
p.space_before = Pt(3)
run = p.add_run()
if isinstance(b, tuple):
run.text = " โฆ " + b[0]
run.font.size = Pt(15)
run.font.color.rgb = MID_GREY
elif b == "":
run.text = ""
run.font.size = Pt(6)
else:
run.text = "โธ " + b
run.font.size = Pt(16)
run.font.color.rgb = RGBColor(0xB0, 0x20, 0x20)
run.font.bold = True
run.font.name = "Calibri"
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 6 โ Equipment & Instrumentation (image + bullets)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Equipment & Instrumentation",
get_img_stream(0), # direct laryngoscopy with blade
"Direct laryngoscopy technique on manikin โ blade in oral cavity",
img_x=7.1, img_y=1.45, img_w=5.9, img_h=4.5,
left_bullets=[
"Laryngoscope & Blades",
("Macintosh (curved) blade โ tip in vallecula; indirect epiglottis lift", 1),
("Miller (straight) blade โ tip under epiglottis; direct lift", 1),
("Blade sizes: 0โ4 (paediatric 0โ2, adult 3โ4)", 1),
("Illumination: fibre-optic > conventional bulb for brightness", 1),
"",
"ENT-specific Rigid Laryngoscopes",
("Benjamin-Lindholm / Jako / Dedo laryngoscopes", 1),
("Suspended via chest support โ frees both hands for microsurgery", 1),
"",
"Ancillary Equipment",
("Operating microscope (Zeiss) with 400 mm lens for microlaryngoscopy", 1),
("COโ laser / microdebrider / cold instruments", 1),
("Suction, jet ventilation system, defogging spray", 1),
("Jet ventilator (Sanders injector) for shared airway", 1),
]
)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 7 โ Patient Preparation & Anaesthesia
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_bullet_slide(s, "Patient Preparation & Anaesthesia", [],
content_y=1.55)
# Two custom boxes
for box_i, (box_title, box_color, bx, bullets) in enumerate([
("Pre-operative Assessment", TEAL, 0.3, [
"Airway assessment: LEMON score (Look, Evaluate 3-3-2, Mallampati, Obstruction, Neck mobility)",
"Mallampati classification (IโIV)",
"Mouth opening, neck extension, thyromental distance (>6 cm normal)",
"Dental status โ protect teeth with gum guard",
"Pre-op bloods: CBC, coagulation, LFTs",
"Imaging: CT larynx/neck for mass lesions; X-ray neck AP & lateral",
"NBM: 6 hrs solids, 2 hrs clear fluids",
]),
("Anaesthesia & Positioning", RGBColor(0x5A, 0x3D, 0x8A), 6.8, [
"General anaesthesia โ standard for ENT microlaryngoscopy",
"TIVA (propofol + remifentanil) preferred โ smooth induction, no airway fire risk with laser",
"Muscle relaxants: succinylcholine (RSI) or rocuronium",
"Airway options: MLT tube (microlaryngoscopy tube โ 5.0 mm ID), laser-safe tube, or jet ventilation",
"Patient position: supine, neck extended (Boyce-Jackson 'sniffing position')",
"Head elevated 10โ15ยฐ to optimise venous drainage",
"Dental guard placed before laryngoscope insertion",
"Throat pack placement noted and documented",
]),
]):
add_rect(s, bx, 1.42, 6.2, 0.5, box_color)
add_text(s, box_title, bx, 1.42, 6.2, 0.5,
font_size=16, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb = s.shapes.add_textbox(Inches(bx), Inches(2.0), Inches(6.2), Inches(5.2))
tf = tb.text_frame; tf.word_wrap = True
for i, b in enumerate(bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(5)
run = p.add_run()
run.text = "โธ " + b
run.font.size = Pt(16)
run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 8 โ Step-by-Step Procedure (image + steps)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.3, NAVY)
add_text(s, "Step-by-Step Procedure", 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 1.3, 13.333, 0.06, GOLD)
# Steps
steps = [
("1", "Position patient supine, head in 'sniffing position' โ neck flexed, head extended at atlanto-occipital joint"),
("2", "Check equipment: laryngoscope light, ETT cuff, suction ready"),
("3", "Pre-oxygenate with 100% Oโ for โฅ 3 min (denitrogenation)"),
("4", "Hold laryngoscope in LEFT hand; open mouth with scissor technique (right hand)"),
("5", "Insert blade into right side of mouth, sweep tongue LEFT"),
("6", "Macintosh: advance tip into vallecula. Miller: place tip under epiglottis"),
("7", "Lift in direction of handle (45ยฐ) โ do NOT lever on upper teeth"),
("8", "Identify landmarks: epiglottis โ arytenoids โ vocal cords"),
("9", "Apply BURP / ELM if view inadequate; pass ETT/instruments under direct vision"),
("10","Confirm tube placement: EtCOโ, bilateral auscultation, CXR"),
]
for i, (num, step) in enumerate(steps):
row = i % 5
col = i // 5
sx = 0.3 + col * 6.55
sy = 1.45 + row * 1.18
# Badge circle
badge = s.shapes.add_shape(1, Inches(sx), Inches(sy), Inches(0.6), Inches(0.6))
badge.fill.solid()
badge.fill.fore_color.rgb = TEAL if int(num) <= 5 else GOLD
badge.line.fill.background()
add_text(s, num, sx + 0.01, sy, 0.6, 0.6,
font_size=16, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, step, sx + 0.7, sy, 5.7, 0.85,
font_size=15, color=DARK_TXT, align=PP_ALIGN.LEFT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 9 โ Cormack-Lehane Classification (image)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Cormack-Lehane Grading of Laryngoscopic View",
get_img_stream(1),
"Cormack-Lehane Grades IโIV: from full glottic view to no visible laryngeal structures",
img_x=0.3, img_y=1.45, img_w=6.8, img_h=4.9,
left_bullets=None
)
# Table on right
grades = [
("Grade I", "Full glottic opening visible", "Easy intubation", RGBColor(0x00, 0x7B, 0x3A)),
("Grade II", "Partial glottis โ posterior commissure only","Usually possible", RGBColor(0x66, 0xAA, 0x00)),
("Grade IIb","Only arytenoids / tip of epiglottis", "May need bougie / stylet", RGBColor(0xF0, 0xA5, 0x00)),
("Grade III","Epiglottis only โ no glottis seen", "Difficult โ use adjuncts", RGBColor(0xE0, 0x60, 0x00)),
("Grade IV", "No laryngeal structures visible", "Cannot intubate by DL", RGBColor(0xB0, 0x20, 0x20)),
]
header_y = 1.5
add_rect(s, 7.2, header_y, 5.8, 0.45, NAVY)
for hx, htxt, hw in [(7.2, "Grade", 1.1), (8.35, "View", 2.3), (10.65, "Implication", 2.15)]:
add_text(s, htxt, hx + 0.05, header_y, hw, 0.45,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
for row_i, (grade, view, impl, col) in enumerate(grades):
ry = header_y + 0.45 + row_i * 0.9
fill = LIGHT_BG if row_i % 2 == 0 else WHITE
add_rect(s, 7.2, ry, 5.8, 0.88, fill)
add_rect(s, 7.2, ry, 1.1, 0.88, col)
add_text(s, grade, 7.2, ry, 1.1, 0.88,
font_size=13, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, view, 8.35, ry + 0.05, 2.3, 0.8,
font_size=13, color=DARK_TXT, align=PP_ALIGN.LEFT)
add_text(s, impl, 10.65, ry + 0.05, 2.15, 0.8,
font_size=12, color=MID_GREY, align=PP_ALIGN.LEFT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 10 โ Laryngoscopy View Comparison (vallecula vs direct epiglottis)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Blade Tip Position: Vallecula vs Direct Epiglottis Lift",
get_img_stream(2),
"Left: indirect epiglottis lift (Macintosh in vallecula) โ partial view\nRight: direct epiglottis lift (Miller under epiglottis) โ wider glottic exposure",
img_x=0.3, img_y=1.45, img_w=6.8, img_h=4.9,
left_bullets=None
)
# Right side key points
right_pts = [
("Macintosh (Curved) Blade", None),
("Tip placed in vallecula", 1),
("Lifts epiglottis via hyoepiglottic ligament", 1),
("Wider blade โ better tongue control", 1),
("Preferred for routine adult intubation", 1),
("",None),
("Miller (Straight) Blade", None),
("Tip placed under epiglottis โ direct lift", 1),
("Better view in anterior larynx / floppy epiglottis", 1),
("Preferred in children & difficult airways", 1),
("Risk: stimulates SLN โ laryngospasm", 1),
("",None),
("ENT Rigid Scope (Suspension)", None),
("Provides hands-free, stable glottic exposure", 1),
("Paired with operating microscope for microsurgery", 1),
]
tb = s.shapes.add_textbox(Inches(7.3), Inches(1.5), Inches(5.7), Inches(5.7))
tf = tb.text_frame; tf.word_wrap = True
for i, item in enumerate(right_pts):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(4)
run = p.add_run()
text, level = item
if text == "":
run.text = ""; run.font.size = Pt(5)
elif level is None:
run.text = "โ " + text
run.font.size = Pt(17); run.font.bold = True; run.font.color.rgb = TEAL
else:
run.text = " โฆ " + text
run.font.size = Pt(15); run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 11 โ Microlaryngoscopy / Suspension Laryngoscopy
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Microlaryngoscopy (Suspension Laryngoscopy)",
get_img_stream(5),
"Endoscopic view: vocal fold pathology seen during suspension microlaryngoscopy",
img_x=7.1, img_y=1.45, img_w=5.9, img_h=4.8,
left_bullets=[
"Principle: rigid laryngoscope suspended from chest support โ bimanual access",
"",
"Kleinsasser's Steps:",
("Patient supine, GA with MLT tube or jet ventilation", 1),
("Dental guard in place", 1),
("Insert Kleinsasser / Lindholm scope, visualise cords", 1),
("Suspend scope on chest support stand", 1),
("Couple operating microscope (400 mm lens)", 1),
("Perform microsurgery with cold instruments / laser", 1),
"",
"Indications (ENT-specific):",
("Vocal cord polyp / nodule / cyst excision", 1),
("Recurrent respiratory papillomatosis (RRP)", 1),
("Subglottic / tracheal stenosis โ dilatation", 1),
("Laryngeal biopsy for carcinoma", 1),
("Arytenoidectomy, posterior cordotomy", 1),
("Anterior commissure web repair", 1),
]
)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 12 โ Pathology seen at DL (image)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_image_slide(s,
"Pathology Identified at Direct Laryngoscopy",
get_img_stream(6), # silastic keel โ surgical procedure
"Silastic keel in situ at anterior commissure following glottic web repair",
img_x=7.1, img_y=1.45, img_w=5.9, img_h=4.8,
left_bullets=[
"Common Laryngeal Lesions Visualised:",
("Vocal cord polyp โ unilateral, pedicled / sessile, haemorrhagic", 1),
("Vocal cord nodule โ bilateral, at junction of ant 1/3 & post 2/3", 1),
("Vocal cord cyst โ mucous retention or epidermoid", 1),
("Leukoplakia โ white patch; biopsy mandatory", 1),
("Erythroplakia โ red velvety patch; higher malignant risk", 1),
("Carcinoma in-situ / invasive SCC", 1),
("Recurrent respiratory papillomatosis (RRP)", 1),
("Subglottic stenosis โ Cotton-Myer grading IโIV", 1),
("Anterior glottic web โ grade IโIV (Cohen classification)", 1),
("Arytenoid fixation / cricoarytenoid joint ankylosis", 1),
"",
"Staging laryngoscopy for laryngeal carcinoma:",
("Maps extent: supraglottic / glottic / subglottic / transglottic", 1),
("Anterior commissure involvement โ crucial for surgical planning", 1),
]
)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 13 โ Complications & Management
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.3, NAVY)
add_text(s, "Complications & Their Management", 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 1.3, 13.333, 0.06, GOLD)
comp_data = [
("Intra-operative", RGBColor(0xB0, 0x20, 0x20), 0.3, [
"Dental trauma โ chipped / avulsed teeth โ document; dental referral",
"Lip / tongue laceration โ from blade edge",
"Laryngospasm โ positive pressure, deepen anaesthesia, succinylcholine",
"Bronchospasm โ bronchodilators, deepen anaesthesia",
"Failed intubation โ escalate to VL / surgical airway",
"Airway fire (laser) โ stop Oโ, extubate, flood with saline",
"Oesophageal intubation โ withdraw, re-intubate",
]),
("Post-operative", RGBColor(0xE0, 0x70, 0x00), 6.8, [
"Sore throat / hoarseness โ common; reassure; resolves in days",
"Stridor / oedema โ nebulised adrenaline (1:1000); IV dexamethasone",
"Arytenoid dislocation โ rare; early reduction under GA",
"Haematoma at vocal cord โ voice rest; monitor",
"Aspiration โ elevate head; physiotherapy",
"Nerve injury (SLN / RLN) โ speech therapy; injection medialization",
"Temporomandibular joint pain โ analgesics; physiotherapy",
]),
]
for box_title, box_color, bx, comp_bullets in comp_data:
add_rect(s, bx, 1.42, 6.2, 0.5, box_color)
add_text(s, box_title, bx, 1.42, 6.2, 0.5,
font_size=16, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
tb = s.shapes.add_textbox(Inches(bx), Inches(2.0), Inches(6.2), Inches(5.2))
tf = tb.text_frame; tf.word_wrap = True
for i, b in enumerate(comp_bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(6)
run = p.add_run()
run.text = "โธ " + b
run.font.size = Pt(15.5)
run.font.color.rgb = DARK_TXT
run.font.name = "Calibri"
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 14 โ Direct vs Video Laryngoscopy
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, LIGHT_BG)
add_rect(s, 0, 0, 13.333, 1.3, NAVY)
add_text(s, "Direct Laryngoscopy vs Video Laryngoscopy", 0.3, 0.15, 12.7, 1.0,
font_size=30, bold=True, color=WHITE, align=PP_ALIGN.LEFT, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 0, 1.3, 13.333, 0.06, GOLD)
# Table header
cols = [(0.2, "Parameter", 3.0), (3.2, "Direct Laryngoscopy", 4.7), (7.9, "Video Laryngoscopy", 5.1)]
add_rect(s, 0.2, 1.5, 12.7, 0.5, NAVY)
for cx, ct, cw in cols:
add_text(s, ct, cx + 0.05, 1.5, cw, 0.5,
font_size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
rows = [
("Visualisation", "Direct line-of-sight", "Camera-assisted; screen view"),
("Axis alignment", "Required (sniffing position)", "Not required โ improved view"),
("C-L Grade III/IV", "Difficult; needs adjuncts", "Significantly improves view"),
("Tube passage", "Direct โ intuitive", "May need stylet; RARM issue"),
("Blood / secretions", "Clears quickly", "Soils lens; obstructs view"),
("Learning curve", "Fundamental skill โ shorter", "Requires additional training"),
("Device failure", "No electronics โ reliable", "Battery/software dependent"),
("ENT surgery", "Gold standard for microlaryngoscopy","Limited role in phonosurgery"),
("Cost", "Low", "ModerateโHigh"),
]
for row_i, (param, dl, vl) in enumerate(rows):
ry = 2.0 + row_i * 0.56
fill = LIGHT_BG if row_i % 2 == 0 else WHITE
add_rect(s, 0.2, ry, 12.7, 0.55, fill)
add_rect(s, 0.2, ry, 3.0, 0.55, RGBColor(0xE8, 0xF0, 0xF8))
add_text(s, param, 0.25, ry, 3.0, 0.55,
font_size=14, bold=True, color=NAVY, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, dl, 3.25, ry, 4.6, 0.55,
font_size=13, color=DARK_TXT, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, vl, 7.95, ry, 5.0, 0.55,
font_size=13, color=DARK_TXT, v_anchor=MSO_ANCHOR.MIDDLE)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 15 โ Key Points & Take-Home Messages
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
bg(s, NAVY)
add_rect(s, 0, 0, 13.333, 0.12, GOLD)
add_rect(s, 0, 7.38, 13.333, 0.12, GOLD)
add_text(s, "Key Points & Take-Home Messages",
0.3, 0.2, 12.7, 1.0,
font_size=32, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_rect(s, 3.5, 1.2, 6.333, 0.06, GOLD)
key_msgs = [
"Master direct laryngoscopy before using video-assisted adjuncts โ it remains the ENT foundation skill",
"Correct patient positioning (sniffing position) is the single most impactful factor for an optimal laryngoscopic view",
"Cormack-Lehane grade must be documented at every laryngoscopy and communicated to the team",
"BURP / ELM optimises glottic view without leveraging on teeth โ protect dentition always",
"Microlaryngoscopy under GA with a suspended scope + operating microscope is the gold standard for endolaryngeal surgery",
"Laser safety protocol is mandatory: MLT/laser-safe tube, FiOโ โค 0.3, wet packs, laser goggles for all",
"Throat packs must be documented IN and OUT โ never leave in situ",
"Post-op stridor: nebulised adrenaline + IV dexamethasone; have tracheotomy set at bedside",
]
for i, msg in enumerate(key_msgs):
my = 1.4 + i * 0.74
add_rect(s, 0.4, my, 0.5, 0.52, TEAL)
add_text(s, str(i+1), 0.4, my, 0.5, 0.52,
font_size=14, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v_anchor=MSO_ANCHOR.MIDDLE)
add_text(s, msg, 1.0, my, 12.0, 0.62,
font_size=15.5, color=WHITE, align=PP_ALIGN.LEFT,
v_anchor=MSO_ANCHOR.MIDDLE)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SAVE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
OUT = "/tmp/workspace/direct-laryngoscopy-ppt/Direct_Laryngoscopy_ENT_PG.pptx"
prs.save(OUT)
print(f"Saved: {OUT}")
cd /tmp/workspace/direct-laryngoscopy-ppt && python build_ppt.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/direct-laryngoscopy-ppt/Direct_Laryngoscopy_ENT_PG.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip()[:60] if t: texts.append(t) print(f' Slide {i}: {texts[0] if texts else \"(no text)\"}') import os sz = os.path.getsize('/tmp/workspace/direct-laryngoscopy-ppt/Direct_Laryngoscopy_ENT_PG.pptx') print(f'File size: {sz/1024:.0f} KB') "
Direct Laryngoscopy ENT PG
Presentation ยท PPTX
| # | Slide | Diagrams / Images |
|---|---|---|
| 1 | Title slide | Navy/gold design |
| 2 | Table of Contents | Numbered badge layout |
| 3 | Definition & Historical Background | Garcรญa โ Jackson โ Kleinsasser timeline |
| 4 | Surgical Anatomy of the Larynx | Clinical endoscopic larynx photo |
| 5 | Indications & Contraindications | Green/red dual-column layout |
| 6 | Equipment & Instrumentation | DL technique photo with blade |
| 7 | Patient Preparation & Anaesthesia | LEMON, Mallampati, TIVA, positioning |
| 8 | Step-by-Step Procedure (10 steps) | Numbered step-by-step with badges |
| 9 | Cormack-Lehane Classification | Real C-L Grade IโIV endoscopic image + colour-coded table |
| 10 | Blade Tip Position: Vallecula vs Epiglottis | Comparative glottic exposure image |
| 11 | Microlaryngoscopy / Suspension Laryngoscopy | Endoscopic pathology image |
| 12 | Pathology at DL | Silastic keel / anterior commissure repair image |
| 13 | Complications & Management | Intra-op vs post-op two-box layout |
| 14 | DL vs Video Laryngoscopy | 9-row comparison table |
| 15 | Key Take-Home Messages | Dark navy summary with 8 numbered points |
prepare ppt on direct layngoscopy only from scottbrown and cummings dont include other book it should include indications,contraindications,anesthesia,position,procedure,post op care and complications
suspension laryngoscopy rigid laryngoscope operative setup ENT theatre

This composite image illustrates a specialized surgical setup for endoscopic procedures in the pharyngo-esophageal region. Part A is a sagittal anatomical diagram showing a patient in the supine position under general anesthesia with an endotracheal tube in situ. A curved laryngoscope is positioned with its tip at the base of the tongue, effectively depressing the tongue and elevating the epiglottis to expand the working space. This allows for the parallel insertion of a flexible gastrointestinal endoscope toward the cervical esophagus. Part B is a clinical photograph of the Nagashima curved laryngoscope. The device is constructed of medical-grade metal, featuring an ergonomic handle and a distinctively curved, tapered blade. The laryngoscope is shown mounted to a rigid vertical stand via a mechanical clamp and adjustable arm, which facilitates stable, hands-free suspension laryngoscopy. This setup is clinically significant for securing a clear operative field during Endoscopic Submucosal Dissection (ESD) of tumors located at the pharyngo-esophageal junction or hypopharynx.

This clinical photograph displays a GlideScope video laryngoscope (GVL) alongside its dedicated rigid stylet, placed against a blue sterile field. The GVL is a reusable anesthetic device featuring an integrated, dark blue ergonomic handle and a blade with a characteristic 60-degree angulation. This significant curvature is designed to provide an indirect view of the glottis without requiring the alignment of oral, pharyngeal, and laryngeal axes. A white identification label is visible on the handle, and a connection port for a video monitor cable is located at the proximal end. Adjacent to the laryngoscope is the GlideScope-specific rigid stylet, which consists of a metallic rod with a specialized distal curve and a rounded tip to facilitate endotracheal tube placement. The stylet features a black T-shaped proximal handle for clinician control. This equipment is primarily used in airway management for both routine and difficult tracheal intubations to enhance laryngeal visualization while minimizing the upward lifting force required compared to traditional Macintosh direct laryngoscopy.

A clinical photograph of emergency airway management equipment and a training manikin for a comparative simulation study. The image displays four distinct laryngoscopes, numbered one through four, alongside adjunctive medical devices. Laryngoscope 1 is a McGrath MAC video laryngoscope (white body, integrated screen). Laryngoscope 2 is an AV-scope AVL (silver body with an attached rectangular monitor). Laryngoscope 3 is a conventional Macintosh laryngoscope (CML) with a metallic silver handle and a green-base blade. Laryngoscope 4 is a Pentax Airwayscope (orange handle with a transparent curved blade). Additional equipment includes a cervical collar with blue straps and color-coded adjustment indicators, a manual resuscitator bag (Ambu bag), and a medical training manikin torso. This setup is designed for clinical training and comparative evaluation of video laryngoscopy versus conventional direct laryngoscopy in scenarios involving airway stabilization. The educational focus is on intubation techniques, device morphology, and the selection of airway management tools for difficult airway scenarios or cervical spine immobilization training.
Cormack Lehane grading laryngoscopy view grades classification

This set of four endoscopic images (A-D) illustrates the Cormack-Lehane (CL) grading system, a standardized clinical tool used in anesthesiology to assess the difficulty of tracheal intubation based on laryngeal visibility during direct laryngoscopy. Image A (Grade I) shows full visualization of the glottic opening, including the anterior and posterior commissures and clear vocal cords. Image B (Grade II) demonstrates partial glottic visualization; the posterior portion is visible, but the anterior commissure is obscured by the epiglottis. Image C (Grade III) shows only the epiglottis, with no glottic structures or vocal cords visible, representing a difficult airway scenario. Image D (Grade IV) shows no identifiable laryngeal structures, indicating only soft palate or oropharyngeal tissue is visible, often requiring advanced airway management techniques. This comparison serves as an educational reference for medical students and clinicians for airway assessment and predicting potential intubation difficulty.

Two side-by-side videolaryngoscopy images (labeled A and B) demonstrating a Cormack-Lehane Grade I view during a general anesthesia induction. Image A displays an open glottis, marked with a white star, showing clearly visible and separated vocal cords and a patent airway. The surrounding laryngeal anatomy, including the epiglottis and arytenoid cartilage regions, appears healthy and without structural anomalies. Image B illustrates the subsequent procedural step: the introduction of an endotracheal tube (ETT). The ETT is visible passing through the glottic opening between the vocal cords, ensuring correct intratracheal placement for mechanical ventilation. These images serve as an educational example of successful video-assisted laryngoscopy and intubation technique in a pediatric patient with craniofacial sequelae (cleft lip and palate).
vocal cord larynx endoscopy normal anatomy structures

Two circular panels show a diagnostic endoscopy of the human larynx, specifically a postoperative view following surgical repair of laryngeal trauma. The clinical photographs depict the internal laryngeal anatomy, including the epiglottis, false vocal folds, and true vocal cords. The mucosal surfaces appear pinkish-red and healthy, with no visible signs of acute inflammation, significant granulation tissue, or ulceration. The true vocal folds are centrally positioned and form a dark triangular glottic opening, suggesting patency of the airway. The left panel shows the larynx in a more open (abducted) state, while the right panel shows a slightly different phase of mobilization or viewing angle. The anatomical structures, including the arytenoids and surrounding vestibular folds, appear symmetrical and well-defined. This endoscopic evaluation is used to assess postoperative healing, laryngeal lumen patency, and vocal cord mobility after complex laryngeal reconstruction, such as thyroid and cricoid cartilage fracture repair.

Post-operative clinical endoscopy (laryngoscopy) images comparing the larynx under two different lighting modalities. Image A demonstrates a standard White Light (WL) view, showing pale pink, smooth, and healthy-looking vocal cord mucosa without evidence of residual nodularity or mass lesions. Image B demonstrates the same anatomical region using Narrow-Band Imaging (NBI), which enhances vascular contrast. In the NBI view, the mucosal surface appears darker and more saturated, providing a detailed visualization of the underlying microvascular patterns. Both images confirm the successful surgical excision of a previous laryngeal lesion, likely a cavernous hemangioma, with preservation of normal glottic anatomy and smooth mucosal texture. This comparison is clinically significant for evaluating postoperative recovery and monitoring for potential recurrence by utilizing NBI to detect abnormal neoangiogenesis that might be missed under white light alone.
mkdir -p /tmp/workspace/dl-ppt && python /tmp/skills/shared/scripts/fetch_images.py \ "https://cdn.orris.care/cdss_images/15f5bcb45937448c974895f7f7bbeb8d585aabf36c474e042487338beb96a8e5.png" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_27bc4b4972f67027950a6e2d686fae2c3d7b22c0a5c54a62599f1cad0cddb64c.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_9869d0c69677356fa9262e6e71851d82e5dc13360958ae1e2237c58e3bc212c6.jpg" \ "https://cdn.orris.care/cdss_images/d38932ace97ccafff10d8da8d8e6680d036d1960f9d171a568d0c19bccce94cb.png" \ "https://cdn.orris.care/cdss_images/2cbaadd3e8aab2949a8d6bb8b6b1c9a6a268298379291616af01106f20bc1a75.png" \ "https://cdn.orris.care/cdss_images/977725507302e612e0e3652b6d379006c547528dd3f0872ffd1366eadfa7ef0a.png" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_a1b1b1526a9ad3fab6c83a2a73f74faaccb44c77a3a1fcca6b8bed40f60b7bbd.jpg" \ "https://cdn.orris.care/cdss_images/pmc_clinical_VQA_01ed30cf52704f5a5db6795f0505f9ab7a42f8d3f7361384a9af357a06b19daa.jpg" \ > /tmp/workspace/dl-ppt/images.json python3 -c " import json with open('/tmp/workspace/dl-ppt/images.json') as f: data=json.load(f) for i,img in enumerate(data): print(i,'OK' if img.get('base64') else 'FAIL',img['url'][-50:]) "
~/dl-ppt/build.py
import json, base64
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
# โโ Palette โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
NAVY = RGBColor(0x0A, 0x27, 0x4A)
TEAL = RGBColor(0x00, 0x7E, 0x8A)
GOLD = RGBColor(0xE8, 0xA0, 0x00)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
BGCOL = RGBColor(0xF2, 0xF5, 0xF9)
GREY = RGBColor(0x55, 0x68, 0x80)
DARK = RGBColor(0x18, 0x1C, 0x2E)
GREEN = RGBColor(0x1A, 0x6E, 0x3A)
RED = RGBColor(0xAD, 0x1A, 0x1A)
AMBER = RGBColor(0xC0, 0x60, 0x00)
# โโ Images โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
with open('/tmp/workspace/dl-ppt/images.json') as f:
imgs = json.load(f)
def img_stream(idx):
raw = base64.b64decode(imgs[idx]['base64'].split(',')[-1])
return BytesIO(raw)
# โโ Presentation โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
BLANK = prs.slide_layouts[6]
# โโโ HELPERS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def fill_bg(slide, color=BGCOL):
bg = slide.background
bg.fill.solid()
bg.fill.fore_color.rgb = color
def rect(slide, x, y, w, h, color, line=False):
s = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
s.fill.solid(); s.fill.fore_color.rgb = color
if not line: s.line.fill.background()
return s
def txt(slide, text, x, y, w, h, size=18, bold=False, italic=False,
color=DARK, align=PP_ALIGN.LEFT, v=MSO_ANCHOR.TOP, wrap=True):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame; tf.word_wrap = wrap
tf.vertical_anchor = v
tf.margin_left = tf.margin_right = tf.margin_top = tf.margin_bottom = Pt(1)
p = tf.paragraphs[0]; p.alignment = align
r = p.add_run(); r.text = text
r.font.size = Pt(size); r.font.bold = bold; r.font.italic = italic
r.font.color.rgb = color; r.font.name = "Calibri"
return tb
def header(slide, title, subtitle=None):
rect(slide, 0, 0, 13.333, 1.35, NAVY)
rect(slide, 0, 1.35, 13.333, 0.07, GOLD)
txt(slide, title, 0.35, 0.1, 12.6, 1.1,
size=31, bold=True, color=WHITE, v=MSO_ANCHOR.MIDDLE, align=PP_ALIGN.LEFT)
if subtitle:
txt(slide, subtitle, 0.35, 0.82, 12.6, 0.5,
size=16, italic=True, color=RGBColor(0xCC,0xDD,0xFF), align=PP_ALIGN.LEFT)
def bullet_block(slide, bullets, x, y, w, h, base_size=17):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame; tf.word_wrap = True
for i, b in enumerate(bullets):
p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
p.space_before = Pt(5); p.space_after = Pt(2)
r = p.add_run()
if isinstance(b, tuple):
text, lv = b
r.text = (" โฃ " if lv >= 2 else " โฆ ") + text
r.font.size = Pt(base_size - 2 if lv >= 2 else base_size - 1)
r.font.color.rgb = GREY if lv >= 2 else DARK
elif b == "":
r.text = ""; r.font.size = Pt(4)
else:
r.text = "โถ " + b
r.font.size = Pt(base_size); r.font.bold = False; r.font.color.rgb = DARK
r.font.name = "Calibri"
def source_tag(slide, book):
txt(slide, book, 0.2, 7.2, 12.9, 0.25,
size=9, italic=True, color=GREY, align=PP_ALIGN.RIGHT)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 1 โ Title
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s, NAVY)
rect(s, 0, 0, 13.333, 0.18, GOLD)
rect(s, 0, 7.32, 13.333, 0.18, GOLD)
rect(s, 0, 0.18, 0.14, 7.14, TEAL)
txt(s, "DIRECT LARYNGOSCOPY", 0.7, 1.5, 11.9, 1.7,
size=54, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
txt(s, "ENT Postgraduate Seminar", 0.7, 3.3, 11.9, 0.7,
size=28, color=GOLD, align=PP_ALIGN.CENTER)
rect(s, 3.2, 4.15, 6.9, 0.06, TEAL)
txt(s, "Department of Otorhinolaryngology โ Head & Neck Surgery",
0.7, 4.35, 11.9, 0.55, size=18, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
txt(s, "Sources: Scott-Brown's Otorhinolaryngology HNS | Cummings Otolaryngology HNS",
0.7, 5.0, 11.9, 0.5, size=14, italic=True,
color=RGBColor(0x99,0xAA,0xCC), align=PP_ALIGN.CENTER)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 2 โ Definition & Introduction
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Definition & Introduction")
# Definition box
rect(s, 0.35, 1.55, 12.6, 0.95, TEAL)
txt(s, "Direct Laryngoscopy: Direct visualisation of the larynx using a rigid laryngoscope passed transorally under general anaesthesia, enabling both diagnostic assessment and operative intervention on the larynx and adjacent structures.",
0.45, 1.58, 12.4, 0.9, size=16, color=WHITE, wrap=True)
bullet_block(s, [
"Also termed 'Rigid Laryngoscopy' or 'Suspension Laryngoscopy' (when scope is suspended)",
"The widest laryngoscope is used to maximise visualisation โ Scott-Brown",
"Enables assessment of all laryngeal subsites: supraglottis, glottis, subglottis",
("Subsites: anterior commissure, ventricle, free edge and undersurface of vocal fold", 1),
("Angled endoscopes (0ยฐ, 30ยฐ, 70ยฐ) give full endolaryngeal panorama โ Scott-Brown", 1),
"",
"Historical Milestones (Cummings)",
("Garcรญa (1800s) โ first indirect mirror laryngoscopy", 1),
("Horace Green โ first direct transoral polyp removal in a child with bent spatula", 1),
("Chevalier Jackson (1915) โ systematic direct laryngoscopy; standardised technique", 1),
("Oskar Kleinsasser (1968) โ adapted operating microscope to direct laryngoscopy", 1),
], 0.35, 2.6, 12.6, 4.7, base_size=17)
source_tag(s, "Scott-Brown's ORL HNS (Vol 2, Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 3 โ Indications (image right, text left)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Indications for Direct Laryngoscopy")
# Green header
rect(s, 0.35, 1.55, 6.5, 0.48, GREEN)
txt(s, "โ INDICATIONS", 0.35, 1.55, 6.5, 0.48,
size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
ind_bullets = [
"DIAGNOSTIC",
("Hoarseness / dysphonia not resolving >3 weeks", 1),
("Suspected laryngeal / hypopharyngeal malignancy โ biopsy", 1),
("Evaluate vocal cord mobility, paralysis or fixation", 1),
("Assess subglottis and trachea โ stenosis grading (Cotton-Myer)", 1),
("Staging endoscopy for HNS cancers โ map subsites (Scott-Brown checklist)", 1),
("Stridor โ assess dynamic airway obstruction", 1),
("Laryngeal trauma evaluation", 1),
"",
"THERAPEUTIC",
("Phonosurgery: polyp, nodule, cyst, Reinke's oedema", 1),
("Recurrent Respiratory Papillomatosis (RRP) โ COโ laser / microdebrider", 1),
("Laryngeal biopsy โ leukoplakia, erythroplakia, carcinoma", 1),
("Subglottic / tracheal stenosis dilatation", 1),
("Arytenoid procedures โ injection, arytenoidectomy", 1),
("Endolaryngeal laser resection (TLM) for early glottic cancer", 1),
("Foreign body removal", 1),
]
bullet_block(s, ind_bullets, 0.35, 2.1, 6.5, 5.1, base_size=15)
# Image on right
s.shapes.add_picture(img_stream(0), Inches(7.05), Inches(1.55), Inches(6.0), Inches(4.7))
txt(s, "Theatre setup for rigid laryngoscopy under GA โ telescope and two-handed technique\n(Scott-Brown's Otorhinolaryngology)",
7.05, 6.3, 6.0, 0.75, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 4 โ Contraindications
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Contraindications & Precautions")
# Two columns
for col_i, (label, bg_col, bx, bullets) in enumerate([
("โ ABSOLUTE CONTRAINDICATIONS", RED, 0.35, [
"Acute epiglottitis โ risk of precipitating complete obstruction",
"Unstable cervical spine injury (until cleared by imaging & orthopaedics)",
"Uncontrolled bleeding diathesis where haemostasis cannot be secured",
]),
("โ RELATIVE CONTRAINDICATIONS", AMBER, 6.85, [
"Limited mouth opening (<2.5 cm) โ trismus, TMJ ankylosis",
"Severe kyphosis / restricted neck extension",
"Micrognathia or prominent upper teeth โ blade insertion difficult",
"Copious blood / secretions obscuring the view",
"Obstructed or unstable airway (relative to HFJV technique) โ Scott-Brown",
"Severe emphysema / emphysematous bullae (relative to jet ventilation) โ Scott-Brown",
"ASA III/IV patients for tubeless TIVA technique โ Scott-Brown",
]),
]):
rect(s, bx, 1.55, 6.1, 0.48, bg_col)
txt(s, label, bx, 1.55, 6.1, 0.48,
size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
bullet_block(s, bullets, bx, 2.1, 6.1, 2.5, base_size=16)
rect(s, 0.35, 4.7, 12.6, 0.45, NAVY)
txt(s, "PRECAUTIONS โ Always assess and document", 0.35, 4.7, 12.6, 0.45,
size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
prec = [
("Mallampati score (IโIV) + thyromental distance + mouth opening + neck extension", 1),
("Bleeding disorders โ correct INR / platelets pre-operatively; anaesthetic review", 1),
("Anticoagulants โ bridging therapy in consultation with haematologist", 1),
("Teeth โ dental guard mandatory; document loose/crowned teeth pre-op โ Scott-Brown", 1),
("Down syndrome / rheumatoid arthritis โ atlantoaxial instability; do NOT overextend neck โ Scott-Brown", 1),
]
bullet_block(s, prec, 0.35, 5.2, 12.6, 2.1, base_size=15)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61, Vol 2) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 5 โ Anaesthesia
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Anaesthesia for Direct Laryngoscopy",
subtitle="Shared airway โ cooperative planning between otolaryngologist and anaesthetist (Scott-Brown)")
# Four technique boxes
techniques = [
("MLT (Microlaryngoscopy Tube)", TEAL, 0.25,
["Small-diameter cuffed ETT (16โ22 Fr) in posterior glottis โ Scott-Brown",
"Safe for operative laryngeal microsurgery",
"Laser-safe tubes (non-combustible, indicator-dye cuff) used for COโ laser โ Scott-Brown",
"Most widely used technique for phonosurgery"]),
("TIVA โ Tubeless", RGBColor(0x2E,0x6E,0x50), 3.6,
["IV propofol infusion + topical lignocaine; patient breathes spontaneously โ Scott-Brown",
"Clear view of larynx without tube obstruction",
"Only for ASA I/II patients; NOT for obstructed airway โ Scott-Brown",
"Requires expertise โ not for routine use"]),
("High-Frequency Jet Ventilation", RGBColor(0x4A,0x3A,0x88), 6.95,
["Venturi jet: supraglottic / glottic / subglottic / transtracheal โ Scott-Brown",
"No tube in airway โ optimal view; no fire risk for laser surgery",
"Large studies (643 & 872 pts): pneumothorax 1%, hypoventilation 2%, surgical emphysema 8%",
"Contraindicated: unstable airway, respiratory failure, emphysematous bullae"]),
("Intubation / Apnoea Technique", NAVY, 10.3,
["Standard oral-tracheal intubation by experienced anaesthetist โ Cummings",
"Smallest outer-diameter ETT to allow safe ventilation",
"Apnoea technique: intermittent extubation for unobstructed surgical field",
"General anaesthesia with muscle relaxants to ensure motionless vocal folds โ Cummings"]),
]
for title, col, bx, pts in techniques:
rect(s, bx, 1.55, 2.9, 0.45, col)
txt(s, title, bx+0.05, 1.55, 2.85, 0.45,
size=13, bold=True, color=WHITE, v=MSO_ANCHOR.MIDDLE, align=PP_ALIGN.CENTER)
tb = s.shapes.add_textbox(Inches(bx), Inches(2.05), Inches(2.9), Inches(4.9))
tf = tb.text_frame; tf.word_wrap = True
for i, p_text in enumerate(pts):
p = tf.paragraphs[0] if i==0 else tf.add_paragraph()
p.space_before = Pt(6)
r = p.add_run(); r.text = "โธ " + p_text
r.font.size = Pt(13); r.font.color.rgb = DARK; r.font.name = "Calibri"
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 6 โ Positioning (with image)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Patient Positioning")
# Positioning diagram โ suspension laryngoscope image
s.shapes.add_picture(img_stream(4), Inches(7.2), Inches(1.55), Inches(5.85), Inches(4.6))
txt(s, "Laryngoscope and suspension system โ lever formed by scope and arm.\nNote wheel for head extension (Scott-Brown, Fig. 4.4 โ Scott-Brown's ORL Vol 2)",
7.2, 6.22, 5.85, 0.9, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
bullet_block(s, [
"Standard Position",
("Supine on operating table", 1),
("Head extended, neck flexed โ 'Sniffing position' / 'Modified Jackson position'", 1),
("Extension at atlanto-occipital joint aligns oral, pharyngeal & laryngeal axes", 1),
("Head ring or donut support under occiput", 1),
("Bed/table at level of operator's xiphoid for ergonomic reach", 1),
"",
"Pre-procedure Preparation โ Scott-Brown",
("Eye protection applied", 1),
("Dental guard placed โ document tooth condition before guard", 1),
("Antiseptic draping", 1),
("Throat pack if required โ MUST be documented and removed post-op", 1),
"",
"Special Considerations",
("Down syndrome / RA: unstable atlanto-axial joint โ avoid overextension โ Scott-Brown", 1),
("Suspension arm: enormous mechanical advantage โ anaesthetist must monitor neck position โ Scott-Brown", 1),
("Once suspended, surgeon checks with anaesthetist at every stage โ Scott-Brown", 1),
], 0.35, 1.58, 6.6, 5.6, base_size=16)
source_tag(s, "Scott-Brown's ORL HNS (Vol 2, Ch 4 & Ch 61)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 7 โ Procedure Step-by-Step
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Procedure โ Step by Step", subtitle="Rigid Direct Laryngoscopy (Scott-Brown Ch 61 & Cummings Ch 67)")
steps = [
("1", TEAL, "Induce GA; position patient supine, head extended, neck flexed (sniffing position)"),
("2", TEAL, "Eye cover, dental guard and antiseptic draping applied โ Scott-Brown"),
("3", TEAL, "Insert widest appropriate laryngoscope perorally in midline โ Scott-Brown"),
("4", TEAL, "Negotiate the tongue carefully; avoid dental trauma to lips and teeth"),
("5", TEAL, "Identify epiglottis; elevator tip under or in vallecula to elevate epiglottis"),
("6", GOLD, "Visualise larynx; apply suspension arm to chest support โ frees both hands โ Scott-Brown"),
("7", GOLD, "Couple operating microscope (400 mm objective); 0ยฐ, 30ยฐ, 70ยฐ telescopes for full view โ Scott-Brown"),
("8", GOLD, "Anterior commissure scope used to maximise anterior glottis view โ Scott-Brown"),
("9", GOLD, "Record findings: site, extent, dimensions, shape, colour, surface โ photodocumentation โ Scott-Brown"),
("10",NAVY, "Perform procedure (biopsy / phonosurgery / laser) under direct binocular vision โ Cummings"),
("11",NAVY, "Surgeon checks with anaesthetist at every stage for oxygenation / stability โ Scott-Brown"),
("12",NAVY, "Remove instruments, deflate cuff, extubate carefully; inspect for dental / mucosal trauma"),
]
for i, (num, col, step) in enumerate(steps):
row = i % 6; c = i // 6
sx = 0.3 + c * 6.55; sy = 1.58 + row * 0.96
# badge
badge = s.shapes.add_shape(1, Inches(sx), Inches(sy), Inches(0.56), Inches(0.56))
badge.fill.solid(); badge.fill.fore_color.rgb = col; badge.line.fill.background()
txt(s, num, sx, sy, 0.56, 0.56, size=15, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
txt(s, step, sx+0.64, sy+0.02, 5.75, 0.75, size=14, color=DARK)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 8 โ Instruments & Endoscopes (image + text)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Instruments & Rigid Endoscopes")
s.shapes.add_picture(img_stream(3), Inches(7.0), Inches(1.55), Inches(6.0), Inches(4.0))
txt(s, "Selection of rigid endoscopes for laryngoscopy\n(Scott-Brown, Fig. 61.2)",
7.0, 5.6, 6.0, 0.55, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
bullet_block(s, [
"Rigid Laryngoscopes (Scott-Brown)",
("Kleinsasser / Lindholm / Jako / Dedo scopes", 1),
("Anterior commissure laryngoscope โ special narrow blade for anterior glottis", 1),
("Use widest scope possible to maximise vision โ Scott-Brown", 1),
"",
"Telescopes โ Hopkins Rod System",
("0ยฐ straight โ direct view of glottis and subglottis", 1),
("30ยฐ and 70ยฐ angled โ inspect laryngeal ventricle, free edge, undersurface of cord", 1),
("Produces much higher optical resolution than flexible scope โ Scott-Brown (Ch 61)", 1),
"",
"Suspension System",
("Chest support stand holds laryngoscope โ bimanual surgery possible", 1),
("Enormous mechanical advantage of wheel โ neck extension monitored by anaesthetist", 1),
"",
"Adjuncts (Cummings Ch 67)",
("Operating microscope โ Zeiss, 400 mm objective lens", 1),
("COโ laser / KTP laser / microdebrider", 1),
("Microlaryngeal forceps, scissors, suction", 1),
], 0.3, 1.58, 6.5, 5.7, base_size=16)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 9 โ Cormack-Lehane Classification (image left + table right)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Cormack-Lehane Grading of Laryngoscopic View")
s.shapes.add_picture(img_stream(1), Inches(0.25), Inches(1.55), Inches(6.8), Inches(4.9))
txt(s, "Cormack-Lehane Grades IโIV:\nGrade I = full glottis โ Grade IV = no laryngeal structures",
0.25, 6.52, 6.8, 0.8, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
grades = [
("Grade I", "Full glottic opening visible incl. anterior commissure", "Easy intubation", TEAL),
("Grade IIa", "Posterior portion of glottis visible", "Usually straightforward", RGBColor(0x40,0x90,0x40)),
("Grade IIb", "Only arytenoids / tip of epiglottis visible", "Bougie or stylet may be needed", GOLD),
("Grade III", "Only epiglottis โ no glottic structure seen", "Difficult; use adjuncts", AMBER),
("Grade IV", "No laryngeal structures visible", "Cannot intubate by DL โ escalate", RED),
]
# Header row
hy = 1.6
rect(s, 7.2, hy, 5.85, 0.5, NAVY)
for hx, ht, hw in [(7.2,"Grade",1.1),(8.3,"Laryngoscopic View",2.7),(11.0,"Clinical Implication",2.05)]:
txt(s, ht, hx+0.05, hy, hw, 0.5, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
for ri, (grd, view, impl, col) in enumerate(grades):
ry = hy + 0.5 + ri * 0.98
bg_fill = BGCOL if ri % 2 == 0 else WHITE
rect(s, 7.2, ry, 5.85, 0.96, bg_fill)
rect(s, 7.2, ry, 1.1, 0.96, col)
txt(s, grd, 7.2, ry, 1.1, 0.96, size=13, bold=True, color=WHITE,
align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
txt(s, view, 8.32, ry+0.06, 2.65, 0.85, size=12, color=DARK)
txt(s, impl, 11.0, ry+0.06, 2.0, 0.85, size=11, italic=True, color=GREY)
source_tag(s, "Referenced standard classification; Scott-Brown's ORL HNS (Ch 61) โ assessment documentation")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 10 โ Operative Findings / What to Record
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Operative Findings โ Documentation & Assessment",
subtitle="Scott-Brown: 'The site, extent, dimensions, shape, colour and surface characteristics must be defined'")
# Operative diagram image on right
s.shapes.add_picture(img_stream(5), Inches(7.0), Inches(1.55), Inches(6.0), Inches(4.1))
txt(s, "Printed operative diagram used to record laryngeal findings\n(Scott-Brown, Fig. 61.4)",
7.0, 5.7, 6.0, 0.6, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
bullet_block(s, [
"Scott-Brown's Staging Checklist (Table 16.1) โ must assess:",
("Supraglottis: epiglottis, vallecula, base of tongue", 1),
("Glottis: vocal cords โ mobile / impaired / fixed; anterior commissure", 1),
("Subglottis: extent of involvement (<1 cm anteriorly, <5 mm posteriorly)", 1),
("Inter-arytenoid region, paraglottic / pre-epiglottic space", 1),
("Hypopharynx: pyriform apex, cricoarytenoid joint, postcricoid, cricopharynx", 1),
"",
"Documentation Standards (Scott-Brown)",
("High-resolution digital still + video recording", 1),
("Printed operative laryngeal diagram with lesion mapped", 1),
("Medicolegal requirement: routine in modern practice", 1),
"",
"Narrow-Band Imaging (NBI) โ New Technique (Scott-Brown Ch 61)",
("Detects intraepithelial papillary capillary loops (IPCL) โ neoangiogenesis", 1),
("Better delineation of carcinoma in situ vs dysplasia vs benign", 1),
("Autofluorescence endoscopy: malignant tissue shows orange/red signal", 1),
], 0.3, 1.58, 6.5, 5.7, base_size=15)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61 & Table 16.1)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 11 โ Post-operative Care
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Post-operative Care")
# Two columns
rect(s, 0.3, 1.56, 6.1, 0.46, TEAL)
txt(s, "IMMEDIATE (Recovery Room)", 0.3, 1.56, 6.1, 0.46,
size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
imm = [
"Maintain airway: semi-upright position; oxygen supplementation",
"Monitor SpOโ, HR, BP continuously in recovery",
"Humidified oxygen via face mask โ reduces mucosal drying",
"Confirm throat pack removal (documented IN and OUT) โ Scott-Brown",
"Check oral cavity for dental or mucosal trauma before discharge from recovery",
"Anti-emetics routinely โ reduces risk of Valsalva and haematoma",
"IV dexamethasone 8 mg โ reduces post-operative laryngeal oedema",
"Nurse 45ยฐ head-up tilt โ minimise venous engorgement and oedema",
]
bullet_block(s, imm, 0.3, 2.1, 6.1, 4.6, base_size=15)
rect(s, 6.8, 1.56, 6.2, 0.46, NAVY)
txt(s, "POST-DISCHARGE & VOICE CARE", 6.8, 1.56, 6.2, 0.46,
size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
post = [
"Voice rest: 5โ7 days strict voice rest after phonosurgery โ Cummings",
("'Whispering is NOT voice rest' โ Cummings: whisper causes more cord tension", 2),
"Avoid coughing, throat-clearing, straining (Valsalva) for 2 weeks",
"Reflux prophylaxis: PPI for 4โ6 weeks (laryngopharyngeal reflux worsens healing) โ Cummings",
"Adequate hydration โ 2L water daily; avoid dehydrating agents",
"Steam inhalations โ mucosal healing",
"Speech and language therapy (SLT) referral post-phonosurgery",
"Follow-up clinic: fibreoptic laryngoscopy at 6 weeks to assess healing",
"Laser patients: wound may appear white/fibrinous initially โ expected finding",
"Day-case procedure when performed on appropriate patients โ Scott-Brown",
]
bullet_block(s, post, 6.8, 2.1, 6.2, 4.8, base_size=15)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 12 โ Complications (two columns with coloured headers)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Complications of Direct Laryngoscopy")
for col_i, (hdr, bg_col, bx, comps) in enumerate([
("INTRA-OPERATIVE", RED, 0.3, [
"Dental trauma โ chipped / avulsed teeth (most common); document pre-op โ Scott-Brown",
"Lip / tongue laceration from blade edges",
"Laryngospasm โ deepen anaesthesia, IV succinylcholine, positive pressure",
"Bronchospasm โ bronchodilators; HFJV complications: pneumothorax 1%, surgical emphysema 8% โ Scott-Brown",
"Failed / difficult laryngoscopy โ C-L grade III/IV; escalate to VL or surgical airway",
"Airway fire (COโ laser) โ STOP Oโ, extubate, flood field with saline",
"Oesophageal passage of bronchoscope causing inadequate ventilation โ Scott-Brown",
"Cervical spine injury (overextension) โ Down syndrome / RA โ Scott-Brown",
]),
("POST-OPERATIVE", AMBER, 6.85, [
"Sore throat โ universal; transient (1โ3 days); analgesics",
"Hoarseness โ from mucosal trauma / intubation; voice rest",
"Laryngeal / subglottic oedema โ stridor โ nebulised adrenaline 1:1000; IV dexamethasone; keep tracheostomy set at bedside",
"Arytenoid dislocation โ rare; early reduction under GA",
"Vocal fold haematoma โ strict voice rest; monitor; rarely needs drainage",
"Post-operative bleeding โ usually minor mucosal ooze",
"Granuloma formation at vocal process โ delayed complication; PPI + Botox ยฑ excision โ Cummings",
"Retained throat pack โ prevented by strict documentation (in/out count) โ Scott-Brown",
"TMJ pain / trismus โ from prolonged mouth opening; analgesics + physio",
]),
]):
rect(s, bx, 1.56, 6.1, 0.46, bg_col)
txt(s, hdr, bx, 1.56, 6.1, 0.46,
size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
bullet_block(s, comps, bx, 2.1, 6.1, 5.1, base_size=14)
source_tag(s, "Scott-Brown's ORL HNS (Ch 61) | Cummings Otolaryngology (Ch 67)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 13 โ Special: Microlaryngoscopy procedures (image + text)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s)
header(s, "Microlaryngoscopy โ Phonosurgical Applications",
subtitle="Cummings (Ch 67): 'Kleinsasser adapted the microscope to direct laryngoscopy โ the foundation of phonosurgery'")
s.shapes.add_picture(img_stream(6), Inches(0.25), Inches(1.55), Inches(5.5), Inches(4.5))
txt(s, "Indirect (vallecula, left) vs direct (under epiglottis, right) glottic exposure\nโ difference in POGO score",
0.25, 6.1, 5.5, 0.85, size=10, italic=True, color=GREY, align=PP_ALIGN.CENTER)
bullet_block(s, [
"Vocal Fold Microanatomy (Cummings Ch 67)",
("Epithelium (~50 ยตm) โ Superficial lamina propria (Reinke's space) โ Intermediate LP โ Deep LP โ Vocalis muscle", 1),
("Unique layered structure essential for vocal fold vibration โ must be preserved", 1),
("Vocal fold scar (loss of layered structure) โ severe permanent dysphonia", 1),
"",
"Phonosurgical Principles (Cummings)",
("POLYP: subepithelial resection preserving vocal fold cover", 1),
("CYST: cold instrument microsurgery โ preserve overlying epithelium", 1),
("NODULE: bilateral lesion at junction ant 1/3โpost 2/3; conservative excision", 1),
("REINKE'S OEDEMA: microsuction of gelatinous material, preserve cordal cover", 1),
("PAPILLOMA (RRP): COโ laser / microdebrider; suction collector for histology", 1),
("GRANULOMA: COโ laser excision + Botox injection to adductors โ Cummings", 1),
"",
"Contact Endoscopy (Scott-Brown)",
("Methylene blue / Lugol's iodine staining; ร60โร150 magnification in vivo", 1),
("Detects cytological changes in first 3 epithelial layers โ identify dysplasia early", 1),
], 6.0, 1.58, 7.1, 5.8, base_size=15)
source_tag(s, "Cummings Otolaryngology (Ch 67) | Scott-Brown's ORL HNS (Ch 61)")
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SLIDE 14 โ Summary / Key Points
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
s = prs.slides.add_slide(BLANK)
fill_bg(s, NAVY)
rect(s, 0, 0, 13.333, 0.16, GOLD)
rect(s, 0, 7.34, 13.333, 0.16, GOLD)
txt(s, "KEY TAKE-HOME MESSAGES", 0.3, 0.25, 12.7, 0.95,
size=34, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
rect(s, 3.0, 1.25, 7.333, 0.06, TEAL)
msgs = [
"Thorough pre-op assessment (Mallampati, mouth opening, neck mobility) prevents intra-op surprises โ Scott-Brown",
"Use the WIDEST laryngoscope to maximise vision; suspension frees both hands for bimanual microsurgery โ Scott-Brown",
"Anaesthetic choice (MLT, TIVA-tubeless, HFJV) tailored to procedure & patient โ shared airway decision โ Scott-Brown",
"Avoid neck overextension โ especially in Down syndrome & RA; anaesthetist monitors neck position โ Scott-Brown",
"Document ALL laryngeal subsites (Table 16.1 checklist), with photographic / video recording โ Scott-Brown",
"Vocal fold layered microarchitecture MUST be preserved in phonosurgery โ scar is irreversible โ Cummings",
"Post-op: strict voice rest, PPI, humidification, SLT referral after phonosurgery โ Cummings",
"Throat pack: documented IN and OUT every single case โ Scott-Brown",
]
for i, msg in enumerate(msgs):
my = 1.45 + i * 0.73
rect(s, 0.35, my, 0.55, 0.55, TEAL)
txt(s, str(i+1), 0.35, my, 0.55, 0.55,
size=15, bold=True, color=WHITE, align=PP_ALIGN.CENTER, v=MSO_ANCHOR.MIDDLE)
txt(s, msg, 1.0, my+0.02, 12.0, 0.62,
size=15, color=WHITE, v=MSO_ANCHOR.MIDDLE)
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# SAVE
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
OUT = "/tmp/workspace/dl-ppt/Direct_Laryngoscopy_ScottBrown_Cummings.pptx"
prs.save(OUT)
print(f"Saved โ {OUT}")
cd /tmp/workspace/dl-ppt && python build.py 2>&1
python3 -c " from pptx import Presentation import os prs = Presentation('/tmp/workspace/dl-ppt/Direct_Laryngoscopy_ScottBrown_Cummings.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides,1): texts=[s.text_frame.text.strip()[:70] for s in slide.shapes if s.has_text_frame and s.text_frame.text.strip()] print(f' {i}: {texts[0] if texts else \"(empty)\"}') print(f'Size: {os.path.getsize(\"/tmp/workspace/dl-ppt/Direct_Laryngoscopy_ScottBrown_Cummings.pptx\")/1024:.0f} KB') "
Direct Laryngoscopy ScottBrown Cummings
Presentation ยท PPTX
| # | Slide | Source |
|---|---|---|
| 1 | Title slide | - |
| 2 | Definition & Introduction | Scott-Brown Ch 61 + Cummings Ch 67 |
| 3 | Indications โ Diagnostic & Therapeutic | Scott-Brown Ch 61 + Cummings Ch 67 |
| 4 | Contraindications โ Absolute, Relative, Precautions | Scott-Brown Ch 61 |
| 5 | Anaesthesia โ MLT, TIVA-tubeless, HFJV, Intubation/apnoea | Scott-Brown Ch 61 |
| 6 | Patient Positioning โ sniffing position, dental guard, Down/RA warning | Scott-Brown Vol 2 Ch 4 & Ch 61 |
| 7 | Procedure โ 12-step operative sequence | Scott-Brown + Cummings |
| 8 | Instruments & Rigid Endoscopes (with real textbook image) | Scott-Brown Fig 61.2 |
| 9 | Cormack-Lehane Grading IโIIaโIIbโIIIโIV with real endoscopic image | Scott-Brown Ch 61 |
| 10 | Operative Findings & Documentation (Table 16.1 checklist + NBI/autofluorescence) | Scott-Brown |
| 11 | Post-operative Care โ immediate + voice care, PPI, SLT | Scott-Brown + Cummings |
| 12 | Complications โ Intra-op & Post-op (two columns) | Scott-Brown + Cummings |
| 13 | Microlaryngoscopy / Phonosurgical Applications | Cummings Ch 67 |
| 14 | Key Take-Home Messages | Both books |
make it fast
Direct Laryngoscopy ScottBrown Cummings
Presentation ยท PPTX