Pulse oximetry

Reading File
Finding Sources
Searching Images

pulse oximetry probe finger SpO2 diagram

A clinical photograph in grayscale showing a pulse oximeter probe applied to a patient's index finger over a white glove. The hand is resting on a textured medical surface. The pulse oximeter is a spring-loaded clip-on device, connected via a cable to an external monitor. This procedural image demonstrates a clinical experimental setup used to evaluate the effect of glove material on oxygen saturation (SpO2) measurement accuracy. The visible portion of the hand shows normal skin texture and nail anatomy on the adjacent uncovered fingers. The educational focus is on medical instrumentation, patient monitoring, and the potential interference of external barriers, such as gloves, with non-invasive diagnostic tools. The setup represents a study of how light source transmission in pulse oximetry is impacted by synthetic materials in a clinical or perioperative setting.

A clinical photograph in grayscale showing a pulse oximeter probe applied to a patient's index finger over a white glove. The hand is resting on a textured medical surface. The pulse oximeter is a spring-loaded clip-on device, connected via a cable to an external monitor. This procedural image demonstrates a clinical experimental setup used to evaluate the effect of glove material on oxygen saturation (SpO2) measurement accuracy. The visible portion of the hand shows normal skin texture and nail anatomy on the adjacent uncovered fingers. The educational focus is on medical instrumentation, patient monitoring, and the potential interference of external barriers, such as gloves, with non-invasive diagnostic tools. The setup represents a study of how light source transmission in pulse oximetry is impacted by synthetic materials in a clinical or perioperative setting.

This clinical photograph demonstrates a procedural setup for dental pulse oximetry, a non-invasive method used to assess dental pulp vitality. The image shows a close-up of a patient's mouth with a gloved operator positioning a modified pulse oximeter probe (Nellcor OxiMax style) against a maxillary tooth. A distinctive red light emission is visible from the probe, which is being held against the buccal surface of the clinical crown. This technique measures oxygen saturation (SpO2) within the pulpal microcirculation to determine tissue health, providing an objective alternative to traditional thermal or electric pulp testing. The surrounding perioral skin and lips appear healthy, and the procedure is being performed in a controlled clinical environment, likely within pedodontics or endodontics. The educational focus is on the clinical application of pulse oximetry in dentistry for vitality assessment.

This clinical photograph demonstrates a procedural setup for dental pulse oximetry, a non-invasive method used to assess dental pulp vitality. The image shows a close-up of a patient's mouth with a gloved operator positioning a modified pulse oximeter probe (Nellcor OxiMax style) against a maxillary tooth. A distinctive red light emission is visible from the probe, which is being held against the buccal surface of the clinical crown. This technique measures oxygen saturation (SpO2) within the pulpal microcirculation to determine tissue health, providing an objective alternative to traditional thermal or electric pulp testing. The surrounding perioral skin and lips appear healthy, and the procedure is being performed in a controlled clinical environment, likely within pedodontics or endodontics. The educational focus is on the clinical application of pulse oximetry in dentistry for vitality assessment.

A clinical photograph depicting the neonatal intensive care of a preterm infant, focusing on the application of a pulse oximetry probe to the foot. The probe is secured across the midfoot and digits with a white, porous medical-grade adhesive wrap or gauze, which emits a characteristic red light from the internal light-emitting diode (LED) used for spectrophotometric oxygen saturation (SpO2) measurement. A thin, gray data cable extends from the probe to a bedside monitor (not visible). The infant's lower extremity is resting on a textured blue fabric surface, typical of neonatal bedding, with a translucent yellow medical tube visible in the blurred foreground, likely part of an incubator or respiratory support system. This image demonstrates standard non-invasive hemodynamic monitoring in a pediatric or neonatal clinical setting, emphasizing the importance of continuous oxygenation assessment in preterm newborns.

A clinical photograph depicting the neonatal intensive care of a preterm infant, focusing on the application of a pulse oximetry probe to the foot. The probe is secured across the midfoot and digits with a white, porous medical-grade adhesive wrap or gauze, which emits a characteristic red light from the internal light-emitting diode (LED) used for spectrophotometric oxygen saturation (SpO2) measurement. A thin, gray data cable extends from the probe to a bedside monitor (not visible). The infant's lower extremity is resting on a textured blue fabric surface, typical of neonatal bedding, with a translucent yellow medical tube visible in the blurred foreground, likely part of an incubator or respiratory support system. This image demonstrates standard non-invasive hemodynamic monitoring in a pediatric or neonatal clinical setting, emphasizing the importance of continuous oxygenation assessment in preterm newborns.

Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Loading Image
Finding Sources
Reading File
Reading File
I now have comprehensive content. Let me compile the full answer.

Pulse Oximetry

Principle

Pulse oximetry provides continuous, noninvasive, in vivo assessment of arterial oxygen saturation (SpO2) using dual-wavelength spectrophotometry. The device exploits the fact that oxyhemoglobin (O2Hb) and deoxyhemoglobin (deO2Hb) have distinct light absorption characteristics:
  • At 660 nm (red light): deO2Hb absorbs more light than O2Hb
  • At 940 nm (infrared light): O2Hb absorbs more light than deO2Hb
The probe contains two LEDs and a photodetector. It cycles through: red ON, infrared ON, both OFF (to measure ambient light and subtract it). The pulsatile arterial blood creates a time-varying ("AC") component, while venous blood, capillary blood, and tissue create a steady ("DC") background. The device uses only the AC component, effectively isolating arterial blood.
The ratio R is calculated as:
R = (AC₆₆₀ / DC₆₆₀) / (AC₉₄₀ / DC₉₄₀)
This R value is mapped to an SpO2 percentage via an empirically-derived calibration curve built into each device, developed from healthy volunteers breathing hypoxic gas mixtures (SpO2 range 70-100%).
Pulse oximeter calibration curve relating SpO2 to the R value
Fig. 37.5 - Calibration curve relating SpO2 to R value. Miller's Anesthesia, 10e.

Probe Types

TypeConfigurationSite
TransmissionEmitter and detector on opposite sidesFinger, toe, earlobe
ReflectanceEmitter and detector on same sideForehead
  • Costanzo Physiology, 7th Ed., p. 227
  • Miller's Anesthesia, 10e, p. 5456-5460

Normal Values and Accuracy

  • Normal SpO2: 95-100%
  • Accuracy: ±2-3% for SpO2 70-100% (FDA mandated ≤3.0% RMS for transmission sensors, ≤3.5% for ear clip/reflectance sensors)
  • Accuracy begins to decline below SpO2 92% and becomes unreliable below 85-70%
  • The device does not directly measure PaO2 - PaO2 must be estimated from the O2-hemoglobin dissociation curve

Clinical Uses

  1. Intraoperative monitoring - mandatory ASA minimum standard since 1986; part of the WHO Safe Surgery Checklist
  2. Procedural sedation / PSA - continuous SpO2 with audible signal is standard
  3. ICU / mechanical ventilation - titration of FiO2 and PEEP; has reduced the need for serial ABGs
  4. Newborn screening - SpO2 < 95% or >2% difference between right upper and lower limbs: screen for critical congenital heart disease (sensitivity ~75% for suspected cases; 92% when combined with anomaly scan and physical exam)
  5. Remote / outpatient monitoring - highlighted during the COVID-19 pandemic for home monitoring of patients
  • Roberts and Hedges' Clinical Procedures in Emergency Medicine
  • Schwartz's Principles of Surgery, 11e, p. 474
  • Miller's Anesthesia, 10e, p. 5460

Photoplethysmography

In addition to SpO2, the pulse oximeter waveform can be used as a photoplethysmograph - changes in light absorption reflect changes in blood volume with each pulse. This waveform provides information about cardiac rhythm, perfusion, and can be used to estimate respiratory variation in stroke volume (a marker of fluid responsiveness under mechanical ventilation).

Limitations and Sources of Error

Dyshemoglobins

ConditionEffect on SpO2
Carboxyhemoglobin (CO poisoning)COHb absorbs identically to O2Hb at 660 nm → SpO2 falsely elevated (reads ~90-95% regardless of true saturation)
MethemoglobinemiaMetHb has equal absorption at both wavelengths → SpO2 fixed at ~83-87%, regardless of true saturation
  • Methylene blue (used to treat methemoglobinemia) also absorbs at 660 nm and may transiently falsely lower SpO2.

Low / Absent Pulsatility

  • Cardiac arrest, profound shock, cardiopulmonary bypass, ventricular assist devices (VADs), and extracorporeal membrane oxygenators (ECMO) provide non-pulsatile flow - the device cannot function
  • Severe tricuspid regurgitation causes venous pulsatility, which can give artificially low readings

Skin Pigmentation and Nail Polish

  • Darker skin has been shown to cause pulse oximeters to overestimate true SaO2 ("occult hypoxemia")
  • In a large series of >48,000 paired measurements, occult hypoxemia (SpO2 92-96% with true SaO2 <88%) was 3-5x more common in Black patients than in White patients
  • Blue or green nail polish can produce similar errors
  • Goldman-Cecil Medicine, p. 794-797

Motion Artifact

  • Patient movement introduces artifact; newer devices use advanced signal processing to improve performance during motion

Other Interference

  • Ambient light, dyes (indocyanine green, indigo carmine), electrocautery, infrared surgical positioning systems
  • Barash Clinical Anesthesia, 9e, p. 2102

Does Not Detect Hypoventilation

  • With supplemental oxygen, SpO2 can remain normal for 4-5 minutes even with complete apnea
  • Pulse oximetry is not a substitute for monitoring ventilation - capnography detects hypoventilation/apnea far earlier, especially in patients on supplemental O2
  • Roberts and Hedges' Clinical Procedures in Emergency Medicine

Multiwavelength (Pulse CO-Oximetry)

Standard pulse oximeters use 2 wavelengths. Newer devices use up to 12 wavelengths and can continuously and noninvasively measure:
  • Total hemoglobin (SpHb)
  • Carboxyhemoglobin (SpCO)
  • Methemoglobin (SpMet)
These are called pulse CO-oximeters to distinguish them from standard pulse oximeters. SpHb shows reasonable correlation with lab values, but is less reliable in patients with Hb 6-10 g/dL or under low-perfusion conditions. Noninvasive COHb measurement still lacks sufficient precision to replace lab co-oximetry.
  • Miller's Anesthesia, 10e, p. 5457-5458
  • Schwartz's Principles of Surgery, 11e, p. 474

Key Clinical Pearls

  • SpO2 is relatively insensitive to changes in PaO2 from 90 to 65 mmHg (the flat upper part of the oxyhemoglobin dissociation curve) - significant drops in PaO2 may occur without alarming changes in SpO2
  • A normal SpO2 in a markedly tachypneic patient should not be reassuring - the patient may be struggling to maintain oxygenation
  • Asymptomatic hypoxemia by pulse oximetry is a poor prognostic sign in COVID-19 ("silent hypoxemia")
  • There are no absolute clinical contraindications to pulse oximetry monitoring

Give me in pdf

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"

Running Command

mkdir -p /tmp/workspace/pulse-oximetry && python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.lib import colors from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY import urllib.request, os # Download the calibration curve image img_url = "https://cdn.orris.care/cdss_images/c1187fe04b8563d43d699e8a80c77147ae77dfeb2c40f8141ef2bec0c8c81528.png" img_path = "/tmp/workspace/pulse-oximetry/cal_curve.png" try: urllib.request.urlretrieve(img_url, img_path) print("Image downloaded") except Exception as e: print(f"Image download failed: {e}") img_path = None EOF

Running Command

python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm from reportlab.lib import colors from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, Image ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY import os output_path = "/tmp/workspace/pulse-oximetry/Pulse_Oximetry.pdf" img_path = "/tmp/workspace/pulse-oximetry/cal_curve.png" doc = SimpleDocTemplate( output_path, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2.2*cm, bottomMargin=2.2*cm ) W, H = A4 content_width = W - 4*cm # ── Colours ────────────────────────────────────────────────────────────────── TEAL = colors.HexColor("#006D77") LTEAL = colors.HexColor("#83C5BE") CREAM = colors.HexColor("#EDF6F9") DGRAY = colors.HexColor("#2D2D2D") MGRAY = colors.HexColor("#555555") LGRAY = colors.HexColor("#F4F4F4") WHITE = colors.white # ── Styles ──────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() title_style = ParagraphStyle( "Title", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=26, textColor=WHITE, alignment=TA_CENTER, spaceAfter=4 ) subtitle_style = ParagraphStyle( "Subtitle", parent=styles["Normal"], fontName="Helvetica", fontSize=11, textColor=CREAM, alignment=TA_CENTER, spaceAfter=0 ) h1_style = ParagraphStyle( "H1", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=14, textColor=WHITE, spaceBefore=14, spaceAfter=6, leftIndent=0, borderPad=6 ) h2_style = ParagraphStyle( "H2", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=11, textColor=TEAL, spaceBefore=10, spaceAfter=4 ) body_style = ParagraphStyle( "Body", parent=styles["Normal"], fontName="Helvetica", fontSize=9.5, textColor=DGRAY, leading=14, alignment=TA_JUSTIFY, spaceAfter=5 ) bullet_style = ParagraphStyle( "Bullet", parent=styles["Normal"], fontName="Helvetica", fontSize=9.5, textColor=DGRAY, leading=14, leftIndent=16, firstLineIndent=-10, spaceAfter=3 ) caption_style = ParagraphStyle( "Caption", parent=styles["Normal"], fontName="Helvetica-Oblique", fontSize=8, textColor=MGRAY, alignment=TA_CENTER, spaceAfter=6 ) pearl_style = ParagraphStyle( "Pearl", parent=styles["Normal"], fontName="Helvetica", fontSize=9.5, textColor=DGRAY, leading=14, leftIndent=12, spaceAfter=3 ) source_style = ParagraphStyle( "Source", parent=styles["Normal"], fontName="Helvetica-Oblique", fontSize=7.5, textColor=MGRAY, spaceAfter=2 ) def section_header(text): """Teal banner paragraph acting as a section header.""" para = Paragraph(f"<b>{text}</b>", h1_style) tbl = Table([[para]], colWidths=[content_width]) tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), TEAL), ("ROUNDEDCORNERS", [4, 4, 4, 4]), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ])) return tbl def bullet(text): return Paragraph(f"• {text}", bullet_style) def sub(text): return Paragraph(text, body_style) def h2(text): return Paragraph(text, h2_style) def src(text): return Paragraph(f"<i>Source: {text}</i>", source_style) # ── Title block ─────────────────────────────────────────────────────────────── title_table = Table( [[Paragraph("Pulse Oximetry", title_style)], [Paragraph("A Comprehensive Clinical Reference", subtitle_style)]], colWidths=[content_width] ) title_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), TEAL), ("ROUNDEDCORNERS",[6,6,6,6]), ("TOPPADDING", (0,0), (-1,-1), 18), ("BOTTOMPADDING", (0,0), (-1,-1), 18), ("LEFTPADDING", (0,0), (-1,-1), 14), ])) # ── Build story ─────────────────────────────────────────────────────────────── story = [] story.append(title_table) story.append(Spacer(1, 0.4*cm)) story.append(sub( "Sources: Miller's Anesthesia 10e | Goldman-Cecil Medicine | Schwartz's Principles of Surgery 11e | " "Costanzo Physiology 7e | Fishman's Pulmonary Diseases | Barash Clinical Anesthesia 9e | " "Roberts & Hedges' Clinical Procedures in Emergency Medicine" )) story.append(HRFlowable(width="100%", thickness=1, color=LTEAL, spaceAfter=8)) # ── 1. Principle ───────────────────────────────────────────────────────────── story.append(section_header("1. Principle")) story.append(Spacer(1, 0.2*cm)) story.append(sub( "Pulse oximetry provides continuous, noninvasive, in vivo assessment of arterial oxygen saturation (SpO2) " "using dual-wavelength spectrophotometry. It exploits the different light-absorption spectra of " "oxyhemoglobin (O2Hb) and deoxyhemoglobin (deO2Hb):" )) story.append(bullet("<b>660 nm (red light)</b>: deO2Hb absorbs significantly more than O2Hb")) story.append(bullet("<b>940 nm (infrared light)</b>: O2Hb absorbs more than deO2Hb")) story.append(Spacer(1, 0.2*cm)) story.append(sub( "The probe cycles each LED on and off in sequence; when both are off, ambient light is measured and " "subtracted. Arterial blood produces a time-varying pulsatile (\"AC\") signal that is separated from " "the steady non-pulsatile (\"DC\") background of venous blood, capillary blood, and tissue." )) story.append(Spacer(1, 0.2*cm)) # R formula table formula_table = Table( [[Paragraph("R = AC₆₆₀ / DC₆₆₀ ÷ AC₉₄₀ / DC₉₄₀", ParagraphStyle("Form", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=11, textColor=TEAL, alignment=TA_CENTER))]], colWidths=[content_width * 0.7] ) formula_table.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), CREAM), ("BOX", (0,0), (-1,-1), 1.5, TEAL), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("ALIGN", (0,0), (-1,-1), "CENTER"), ])) story.append(Table([[formula_table]], colWidths=[content_width], style=[("ALIGN",(0,0),(-1,-1),"CENTER")])) story.append(Spacer(1, 0.2*cm)) story.append(sub( "This R ratio is mapped to SpO2 via an empirically-derived calibration curve built into each device, " "developed from healthy volunteers breathing hypoxic gas mixtures over an SpO2 range of 70-100%." )) # Calibration curve image if os.path.exists(img_path): story.append(Spacer(1, 0.2*cm)) img = Image(img_path, width=content_width*0.62, height=content_width*0.38) img.hAlign = "CENTER" story.append(img) story.append(Paragraph( "Fig. 37.5 – Calibration curve relating SpO2 to R value (Miller's Anesthesia, 10e, p. 5457)", caption_style )) story.append(src("Miller's Anesthesia 10e, p. 5456-5457 | Costanzo Physiology 7e, p. 227")) # ── 2. Probe Types ──────────────────────────────────────────────────────────── story.append(section_header("2. Probe Types")) story.append(Spacer(1, 0.2*cm)) probe_data = [ [Paragraph("<b>Type</b>", body_style), Paragraph("<b>Configuration</b>", body_style), Paragraph("<b>Typical Site</b>", body_style)], [Paragraph("Transmission", body_style), Paragraph("Emitter and detector on opposite sides of tissue", body_style), Paragraph("Finger, toe, earlobe", body_style)], [Paragraph("Reflectance", body_style), Paragraph("Emitter and detector on the same side", body_style), Paragraph("Forehead", body_style)], ] probe_tbl = Table(probe_data, colWidths=[content_width*0.22, content_width*0.50, content_width*0.28]) probe_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("BACKGROUND", (0,1), (-1,1), LGRAY), ("BACKGROUND", (0,2), (-1,2), WHITE), ("GRID", (0,0), (-1,-1), 0.5, LTEAL), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ])) story.append(probe_tbl) # ── 3. Normal Values & Accuracy ─────────────────────────────────────────────── story.append(section_header("3. Normal Values & Accuracy")) story.append(Spacer(1, 0.2*cm)) acc_data = [ [Paragraph("<b>Parameter</b>", body_style), Paragraph("<b>Value</b>", body_style)], [Paragraph("Normal SpO2", body_style), Paragraph("95 – 100%", body_style)], [Paragraph("Clinical accuracy (SpO2 70-100%)", body_style), Paragraph("± 2-3% (FDA mandated ≤ 3.0% RMS for transmission; ≤ 3.5% for ear-clip/reflectance)", body_style)], [Paragraph("Accuracy begins to decline", body_style), Paragraph("SpO2 < 92%", body_style)], [Paragraph("Unreliable range", body_style), Paragraph("SpO2 < 85% (and especially < 70%)", body_style)], [Paragraph("Does not directly measure", body_style), Paragraph("PaO2 (must use O2-Hb dissociation curve)", body_style)], ] acc_tbl = Table(acc_data, colWidths=[content_width*0.40, content_width*0.60]) acc_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE]), ("GRID", (0,0), (-1,-1), 0.5, LTEAL), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ])) story.append(acc_tbl) story.append(src("Miller's Anesthesia 10e | Barash Clinical Anesthesia 9e, p. 2102")) # ── 4. Clinical Uses ────────────────────────────────────────────────────────── story.append(section_header("4. Clinical Uses")) story.append(Spacer(1, 0.2*cm)) uses = [ ("<b>Intraoperative monitoring</b>", "Mandatory ASA minimum standard since 1986; included in WHO Safe Surgery Checklist"), ("<b>Procedural sedation (PSA)</b>", "Continuous SpO2 with audible signal is standard of care; note lag time with supplemental O2"), ("<b>ICU / Mechanical ventilation</b>", "Guides FiO2 and PEEP titration; reduces need for serial arterial blood gases"), ("<b>Neonatal screening</b>", "SpO2 < 95% or > 2% difference between right upper and lower limbs triggers workup for critical congenital heart disease (sensitivity ~75% for suspected cases; 92% combined with anomaly scan + physical exam)"), ("<b>Remote / outpatient monitoring</b>", "Prominent role during COVID-19 pandemic for home monitoring of patients with silent hypoxemia"), ("<b>Transport monitoring</b>", "Battery-backed devices allow monitoring during patient transport"), ] for title_text, desc in uses: row_tbl = Table( [[Paragraph(title_text, ParagraphStyle("UseTitle", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=9.5, textColor=TEAL)), Paragraph(desc, body_style)]], colWidths=[content_width*0.32, content_width*0.68] ) row_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 3), ("BOTTOMPADDING", (0,0), (-1,-1), 3), ("LEFTPADDING", (0,0), (-1,-1), 0), ("LINEBELOW", (0,0), (-1,-1), 0.3, LTEAL), ])) story.append(row_tbl) story.append(src("Roberts & Hedges' | Miller's Anesthesia 10e, p. 5460 | Schwartz's Surgery 11e, p. 474")) # ── 5. Photoplethysmography ─────────────────────────────────────────────────── story.append(section_header("5. Photoplethysmography")) story.append(Spacer(1, 0.2*cm)) story.append(sub( "In addition to SpO2, the pulse oximeter generates a photoplethysmographic (PPG) waveform. " "Changes in light absorption reflect changes in blood volume with each pulse. During anesthesia, " "this trace is influenced by vessel wall distensibility and intravascular pulse pressure." )) story.append(bullet("Provides information about cardiac rhythm and peripheral perfusion")) story.append(bullet("Respiratory variation in stroke volume can be estimated from the waveform - a marker of fluid responsiveness under mechanical ventilation")) story.append(src("Miller's Anesthesia 10e, p. 5460")) # ── 6. Limitations ──────────────────────────────────────────────────────────── story.append(section_header("6. Limitations and Sources of Error")) story.append(Spacer(1, 0.2*cm)) story.append(h2("A. Dyshemoglobins")) dyshb_data = [ [Paragraph("<b>Condition</b>", body_style), Paragraph("<b>Mechanism</b>", body_style), Paragraph("<b>Effect on SpO2</b>", body_style)], [Paragraph("Carboxyhemoglobinemia\n(CO poisoning)", body_style), Paragraph("COHb absorbs identically to O2Hb at 660 nm; minimal absorption at 940 nm", body_style), Paragraph("Falsely ELEVATED (~90-95%) regardless of true saturation", body_style)], [Paragraph("Methemoglobinemia", body_style), Paragraph("MetHb has equal absorption at both wavelengths (R = 1)", body_style), Paragraph("Fixed reading of ~83-87% regardless of true saturation", body_style)], [Paragraph("Methylene blue\n(MetHb antidote)", body_style), Paragraph("Absorbs at 660 nm", body_style), Paragraph("Transiently falsely LOWERS SpO2", body_style)], ] dyshb_tbl = Table(dyshb_data, colWidths=[content_width*0.24, content_width*0.42, content_width*0.34]) dyshb_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE, LGRAY]), ("GRID", (0,0), (-1,-1), 0.5, LTEAL), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(dyshb_tbl) story.append(Spacer(1, 0.2*cm)) story.append(h2("B. Low / Absent Pulsatility")) story.append(bullet("Cardiac arrest, profound shock - no signal possible")) story.append(bullet("Cardiopulmonary bypass, VADs (ventricular assist devices), ECMO - non-pulsatile flow")) story.append(bullet("Severe tricuspid regurgitation - venous pulsatility causes artificially LOW readings")) story.append(h2("C. Skin Pigmentation and Nail Polish")) story.append(sub( "In a large series of >48,000 paired measurements, 'occult hypoxemia' (SpO2 92-96% with true SaO2 <88%) " "was 3-5x more common in Black patients (12-17%) than in White patients (3.6-6.2%). Blue or green nail " "polish produces similar overestimation. Clinicians must remain vigilant for hypoxemia even when " "SpO2 appears acceptable - obtain an ABG if clinically concerned." )) story.append(src("Goldman-Cecil Medicine, p. 794-797")) story.append(h2("D. Motion Artifact and Other Interference")) story.append(bullet("Patient movement - newer devices use advanced signal processing to reject artifacts")) story.append(bullet("Dyes: indocyanine green, indigo carmine, methylene blue")) story.append(bullet("Blue or green nail polish")) story.append(bullet("Ambient light (bright surgical lights, phototherapy)")) story.append(bullet("Electrocautery - radiofrequency emissions sensed by the photodetector")) story.append(bullet("Infrared surgical positioning systems interfere with the 940 nm signal")) story.append(bullet("Burns or pressure necrosis from prolonged probe placement (infrequent)")) story.append(src("Barash Clinical Anesthesia 9e, p. 2102-2103")) story.append(h2("E. Does NOT Detect Hypoventilation")) story.append(sub( "With supplemental oxygen, SpO2 can remain normal for 4-5 minutes of complete apnea. " "Pulse oximetry is NOT a substitute for ventilation monitoring. Capnography detects " "hypoventilation and apnea far earlier - especially important in patients on supplemental O2, " "and in infants/toddlers who have a smaller functional residual capacity." )) story.append(src("Roberts & Hedges' Clinical Procedures in Emergency Medicine, p. 712")) story.append(h2("F. Range Limitation")) story.append(sub( "Pulse oximetry is relatively insensitive to PaO2 changes from 90 to 65 mmHg " "(the flat upper portion of the O2-Hb dissociation curve). It becomes unreliable below SpO2 70%. " "Calibration curves are not validated below this threshold." )) # ── 7. Multiwavelength ──────────────────────────────────────────────────────── story.append(section_header("7. Multiwavelength Pulse CO-Oximetry")) story.append(Spacer(1, 0.2*cm)) story.append(sub( "Standard pulse oximeters use 2 wavelengths. Newer pulse CO-oximeters use up to 12 wavelengths, " "enabling continuous noninvasive measurement of additional hemoglobin species:" )) mw_data = [ [Paragraph("<b>Parameter</b>", body_style), Paragraph("<b>Symbol</b>", body_style), Paragraph("<b>Notes</b>", body_style)], [Paragraph("Total hemoglobin", body_style), Paragraph("SpHb", body_style), Paragraph("Reasonable correlation with lab values; less reliable at Hb 6-10 g/dL or in low perfusion", body_style)], [Paragraph("Carboxyhemoglobin", body_style), Paragraph("SpCO", body_style), Paragraph("Noninvasive COHb still lacks precision to replace lab co-oximetry", body_style)], [Paragraph("Methemoglobin", body_style), Paragraph("SpMet", body_style), Paragraph("Newer devices accurate even under hypoxia", body_style)], [Paragraph("Oxygen saturation", body_style), Paragraph("SpO2", body_style), Paragraph("Standard 2-wavelength measurement", body_style)], ] mw_tbl = Table(mw_data, colWidths=[content_width*0.28, content_width*0.15, content_width*0.57]) mw_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), TEAL), ("TEXTCOLOR", (0,0), (-1,0), WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [LGRAY, WHITE, LGRAY, WHITE]), ("GRID", (0,0), (-1,-1), 0.5, LTEAL), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 6), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(mw_tbl) story.append(src("Miller's Anesthesia 10e, p. 5457-5458 | Schwartz's Surgery 11e, p. 474")) # ── 8. Clinical Pearls ──────────────────────────────────────────────────────── story.append(section_header("8. Key Clinical Pearls")) story.append(Spacer(1, 0.2*cm)) pearls = [ ("1", "SpO2 is relatively insensitive to PaO2 drops from 90 to 65 mmHg (flat top of O2-Hb dissociation curve)."), ("2", "A normal SpO2 in a markedly tachypneic patient should not be reassuring - the patient may be struggling to maintain oxygenation."), ("3", "Asymptomatic hypoxemia by pulse oximetry is a poor prognostic sign in COVID-19 ('silent hypoxemia')."), ("4", "There are no absolute clinical contraindications to pulse oximetry monitoring."), ("5", "Coincident with the introduction of pulse oximeters, anesthesia mortality decreased and malpractice claims from respiratory events fell - though no RCT has proven causation."), ("6", "Pulse oximetry does NOT measure PaCO2. A patient can be dangerously hypercapnic with a normal SpO2 on supplemental O2."), ("7", "Always check for nail polish, inspect probe placement, and consider skin pigmentation bias when readings seem inconsistent with the clinical picture."), ] for num, text in pearls: pearl_row = Table( [[Paragraph(f"<b>{num}</b>", ParagraphStyle("Num", parent=styles["Normal"], fontName="Helvetica-Bold", fontSize=10, textColor=WHITE, alignment=TA_CENTER)), Paragraph(text, body_style)]], colWidths=[0.7*cm, content_width - 0.7*cm] ) pearl_row.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), TEAL), ("VALIGN", (0,0), (-1,-1), "TOP"), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (1,0), (1,0), 8), ("LINEBELOW", (0,0), (-1,-1), 0.3, LTEAL), ])) story.append(pearl_row) # ── Footer note ─────────────────────────────────────────────────────────────── story.append(Spacer(1, 0.4*cm)) story.append(HRFlowable(width="100%", thickness=1, color=LTEAL, spaceAfter=4)) story.append(Paragraph( "Compiled from authoritative medical textbooks. For clinical decisions, consult current institutional protocols and guidelines.", ParagraphStyle("Footer", parent=styles["Normal"], fontName="Helvetica-Oblique", fontSize=7.5, textColor=MGRAY, alignment=TA_CENTER) )) # ── Build PDF ───────────────────────────────────────────────────────────────── doc.build(story) print(f"PDF created: {output_path}") import os print(f"File size: {os.path.getsize(output_path):,} bytes") PYEOF

Your PDF is ready. Here's the download link:

Pulse Oximetry

PDF Document · PDF

The document includes all 8 sections with formatted tables and the calibration curve image:
  1. Principle - Physics of dual-wavelength spectrophotometry, AC/DC concept, R-ratio formula, calibration curve
  2. Probe Types - Transmission vs. reflectance
  3. Normal Values & Accuracy - SpO2 ranges, FDA accuracy standards
  4. Clinical Uses - OR monitoring, PSA, ICU, neonatal screening, COVID-19
  5. Photoplethysmography - Waveform applications
  6. Limitations & Sources of Error - Dyshemoglobins (COHb, MetHb), low perfusion, skin pigmentation bias, motion artifact, failure to detect hypoventilation
  7. Multiwavelength Pulse CO-Oximetry - SpHb, SpCO, SpMet
  8. Key Clinical Pearls - 7 high-yield points
This is a shared conversation. Sign in to Orris to start your own chat.