Milking of subcutaneous emphysema full details how it done , action, indication,contrain6

Reading File
Finding Sources
Searching the Web

milking subcutaneous emphysema technique procedure indication contraindication

Reading Web Page

https://pmc.ncbi.nlm.nih.gov/articles/PMC4692895

Finding Sources
Reading File
Searching PubMed

"subcutaneous emphysema" milking management chest drain

Searching Images

subcutaneous emphysema milking technique chest tube infraclavicular incision blow hole

Two-panel clinical photograph illustrating the management of extensive subcutaneous emphysema (SE). Image A shows an elderly male patient with severe swelling and distension of the face, neck, and upper torso, secondary to trapped air in the subcutaneous tissues (subcutaneous emphysema). The patient is intubated with an endotracheal tube secured for airway protection due to compromise from tissue tension. Image B, taken 24 hours later, demonstrates a significant reduction in soft tissue swelling following the placement of subcutaneous negative pressure wound therapy (NPWT). Two incision sites are visible on the anterior chest wall (bilateral infraclavicular region) where subcutaneous drains are inserted and secured under transparent occlusive dressings. The chest also shows an existing surgical dressing on the right lower quadrant and cardiac monitoring leads. This comparison highlights a surgical intervention technique for rapidly decompressing life-threatening subcutaneous emphysema when conventional drainage fails.

Two-panel clinical photograph illustrating the management of extensive subcutaneous emphysema (SE). Image A shows an elderly male patient with severe swelling and distension of the face, neck, and upper torso, secondary to trapped air in the subcutaneous tissues (subcutaneous emphysema). The patient is intubated with an endotracheal tube secured for airway protection due to compromise from tissue tension. Image B, taken 24 hours later, demonstrates a significant reduction in soft tissue swelling following the placement of subcutaneous negative pressure wound therapy (NPWT). Two incision sites are visible on the anterior chest wall (bilateral infraclavicular region) where subcutaneous drains are inserted and secured under transparent occlusive dressings. The chest also shows an existing surgical dressing on the right lower quadrant and cardiac monitoring leads. This comparison highlights a surgical intervention technique for rapidly decompressing life-threatening subcutaneous emphysema when conventional drainage fails.

This clinical photograph displays a closed incision negative pressure wound therapy (ciNPWT) system applied to the anterior thoracic region of a patient. Centrally, a rectangular piece of black, reticulated porous foam is visible, secured under a large, wrinkled transparent adhesive drape. A circular suction port with a radial ribbed design is positioned atop the foam, connected to flexible tubing that exits toward the patient's left. The dressing covers loosely approximated 'blow hole' incisions intended to manage massive subcutaneous emphysema. Adjacent to the dressing, several clinical monitoring components are visible, including EKG electrodes (3M Red Dot) and various leads. A purple surgical marking is seen on the lower-left aspect of the chest wall. The image illustrates a specific procedural application for thoracic decompression and wound management in the context of severe chest trauma and air-leak syndromes.

This clinical photograph displays a closed incision negative pressure wound therapy (ciNPWT) system applied to the anterior thoracic region of a patient. Centrally, a rectangular piece of black, reticulated porous foam is visible, secured under a large, wrinkled transparent adhesive drape. A circular suction port with a radial ribbed design is positioned atop the foam, connected to flexible tubing that exits toward the patient's left. The dressing covers loosely approximated 'blow hole' incisions intended to manage massive subcutaneous emphysema. Adjacent to the dressing, several clinical monitoring components are visible, including EKG electrodes (3M Red Dot) and various leads. A purple surgical marking is seen on the lower-left aspect of the chest wall. The image illustrates a specific procedural application for thoracic decompression and wound management in the context of severe chest trauma and air-leak syndromes.

This diagnostic imaging composite displays a case of severe, extensive subcutaneous emphysema. Panel (a) is a portable anteroposterior chest roentgenogram showing radiolucent (dark) air streaks dissecting through the soft tissues of the chest wall and neck, disrupting normal tissue planes. A right-sided chest tube is visible, and the chest wall appears significantly thickened due to air entrapment. Panel (b) is a computed tomography (CT) scout film/topogram of the torso. White arrows highlight the craniocaudal distribution of subcutaneous air extending from the thoracic region down into the abdominal and pelvic subcutaneous tissues. A black arrow indicates a prepectoral 'blowhole' incision on the right chest wall, designed for air decompression. The image illustrates the radiographic manifestations of barotrauma or persistent air leak under positive pressure ventilation, characterized by the 'ginkgo leaf sign' on the chest wall and diffuse mottled low-density areas throughout the trunk's soft tissues.

This diagnostic imaging composite displays a case of severe, extensive subcutaneous emphysema. Panel (a) is a portable anteroposterior chest roentgenogram showing radiolucent (dark) air streaks dissecting through the soft tissues of the chest wall and neck, disrupting normal tissue planes. A right-sided chest tube is visible, and the chest wall appears significantly thickened due to air entrapment. Panel (b) is a computed tomography (CT) scout film/topogram of the torso. White arrows highlight the craniocaudal distribution of subcutaneous air extending from the thoracic region down into the abdominal and pelvic subcutaneous tissues. A black arrow indicates a prepectoral 'blowhole' incision on the right chest wall, designed for air decompression. The image illustrates the radiographic manifestations of barotrauma or persistent air leak under positive pressure ventilation, characterized by the 'ginkgo leaf sign' on the chest wall and diffuse mottled low-density areas throughout the trunk's soft tissues.

Anteroposterior (AP) chest X-ray demonstrating severe multi-compartmental air leaks. Extensive subcutaneous emphysema is visible as diffuse, streaky radiolucencies (dark areas) dissecting through the soft tissues of the chest wall, axillae, neck, and upper arms, creating a characteristic 'gingko leaf' appearance over the pectoral regions. A prominent pneumomediastinum is indicated by thin lucent lines outlining the mediastinal borders and a 'continuous diaphragm sign,' where air trapped behind the pericardium allows for visualization of the diaphragm across the midline. A left basilar pneumothorax is present, associated with a malpositioned left-sided thoracostomy tube showing a visible sentinel hole near the lateral chest wall, suggesting partial retraction. These findings illustrate critical complications of thoracic trauma or barotrauma, emphasizing the radiological manifestations of extra-alveolar air in pulmonary pathology and emergency medicine.

Anteroposterior (AP) chest X-ray demonstrating severe multi-compartmental air leaks. Extensive subcutaneous emphysema is visible as diffuse, streaky radiolucencies (dark areas) dissecting through the soft tissues of the chest wall, axillae, neck, and upper arms, creating a characteristic 'gingko leaf' appearance over the pectoral regions. A prominent pneumomediastinum is indicated by thin lucent lines outlining the mediastinal borders and a 'continuous diaphragm sign,' where air trapped behind the pericardium allows for visualization of the diaphragm across the midline. A left basilar pneumothorax is present, associated with a malpositioned left-sided thoracostomy tube showing a visible sentinel hole near the lateral chest wall, suggesting partial retraction. These findings illustrate critical complications of thoracic trauma or barotrauma, emphasizing the radiological manifestations of extra-alveolar air in pulmonary pathology and emergency medicine.

Searching PubMed

"subcutaneous emphysema" management decompression blowhole infraclavicular

I now have sufficient information to give a detailed, well-structured answer. Here is a comprehensive overview:

Milking of Subcutaneous Emphysema (Surgical Emphysema)


What Is Subcutaneous Emphysema (SE)?

Subcutaneous emphysema (also called surgical emphysema) is the accumulation of free air within the subcutaneous tissue and deeper soft tissue planes. Clinically it produces the classic crepitus sensation - described as "walking on snow" - on palpation. Radiographically it appears as radiolucent striations dissecting through soft tissue planes (the "ginkgo leaf sign" on CXR).
Chest X-ray showing severe subcutaneous emphysema with radiolucent air streaks - ginkgo leaf sign

Severity Grading (Anatomical Extension)

GradeExtent of Air
1Base of neck only
2Entire neck
3Neck + subpectoral area
4Chest wall + entire neck
5Chest wall + neck + orbit + scalp + abdomen + upper limbs + scrotum
Grades 1-2 are generally not clinically important. Milking/intervention is reserved for grades 3-5.

Pathophysiology

Air enters subcutaneous tissue through:
  • Parenchymal or tracheobronchial injury → air leaks through the parietal pleura
  • Interstitial lung injury → air dissects back along bronchi into the hilum → mediastinum → extrapleural spaces
  • Trauma to pharynx, larynx, or esophagus
  • Barotrauma from positive-pressure ventilation
  • Post-surgical (laparoscopy, thoracic surgery, tracheostomy)

"Milking" - What It Means

Milking of subcutaneous emphysema refers to manually compressing and directing trapped subcutaneous air toward a drainage site (an existing chest tube, a "blowhole" incision, or a subcutaneous drain) by applying systematic, firm hand pressure over the affected tissue and rolling it in a direction that pushes air toward the exit point. It is always used in conjunction with a drainage opening - milking without any exit point is ineffective.

Indications for Milking / Decompression of SE

  1. Rapidly progressive or massive SE (grade 3-5) - when air is spreading to face, neck, orbit, genitals, or limbs
  2. Airway compromise - SE in the neck causing dysphagia, stridor, or impending airway obstruction
  3. Respiratory failure - restriction of full lung re-expansion due to air, causing high airway pressures or ventilator failure
  4. Tension phenomena - SE contributing to tension physiology
  5. Haemodynamic compromise - in rare cases, SE can cause thoracic outlet compression or restrict cardiac output
  6. Pacemaker malfunction due to air surrounding the device
  7. Patient discomfort - severe pain, disfigurement, difficulty swallowing from massive SE
  8. Worsening SE despite existing chest tube - when the current drain is insufficient to keep up with the air leak

Contraindications

Absolute Contraindications

  • Uncontrolled coagulopathy - for incision-based procedures (blowholes)
  • Active necrotizing infection at proposed incision site
  • No drainage exit - milking without a chest tube or blowhole in place is pointless and should not be done

Relative Contraindications

  • Small, asymptomatic SE (grades 1-2) - these self-resolve; no intervention needed
  • SE secondary to esophageal perforation where air tracks from the mediastinum - treat the source first; milking may worsen mediastinal contamination
  • SE without a functioning pleural drain in place - treat the underlying pneumothorax first; insert a chest tube before any milking manoeuvre
  • Severe coagulopathy (relative, for blowhole incisions)

How Milking Is Performed - Step by Step

Prerequisites

  1. Ensure a chest tube or drainage exit exists - an intercostal drain, blowhole incision, or subcutaneous drain must be in place before milking will be effective
  2. Confirm the chest tube is patent and connected to an underwater seal or suction
  3. Assess extent of SE clinically and with CXR/CT

Technique 1: Manual Milking Over an Existing Chest Tube

Purpose: To direct subcutaneous air toward the pleural drain and expel it
Steps:
  1. Patient positioning: supine or semi-recumbent
  2. Identify the tract of air by palpating crepitus - map the extent of SE
  3. Using both hands with flat palms, apply firm but gentle pressure to the subcutaneous tissue distal to the drain (i.e., furthest from the chest tube)
  4. Using a stroking, rolling movement (like squeezing a tube of toothpaste), work the air proximally toward the drain insertion site
  5. Work systematically from the periphery inward - neck to chest, or limb to trunk
  6. The chest drain bubbles vigorously as air escapes into the pleural drain system - this confirms the manoeuvre is working
  7. Repeat in multiple passes; monitor respiratory status, SpO2, and patient comfort throughout
  8. Document reduction in crepitus after each session

Technique 2: Milking After Blowhole Incisions

When used: When the SE is massive, rapidly progressive, and not adequately controlled by chest tube alone.
Blowhole creation (performed under sterile conditions, local anaesthesia):
  1. Mark bilateral infraclavicular incisions in the midclavicular line
  2. Infiltrate with local anaesthetic (e.g., 1% lignocaine with adrenaline)
  3. Make 2-4 cm incisions deep to the external thoracic fascia (superficial to the pectoral fascia) - bilaterally
  4. Blunt dissect to create a subcutaneous channel
  5. Air escapes spontaneously once the fascia is opened - you will hear/feel air rush out
Then perform milking:
  1. After incisions are made, apply systematic manual compression from the periphery toward the blowhole sites
  2. Compress from the neck downward, from the flanks inward, sweeping air toward the chest wall openings
  3. The "blowhole" wounds are left open (not sutured) to allow continued egress of air
  4. Some centres apply negative pressure wound therapy (NPWT/VAC) dressings over the blowhole sites to maintain suction and accelerate air removal
Clinical photo: bilateral infraclavicular incisions for SE decompression with subcutaneous drains and NPWT dressing

Technique 3: Milking With Subcutaneous Tunnelled Drain

  1. Under local anaesthesia, create a subcutaneous tract superficial to the pectoral fascia by blunt dissection
  2. Insert a fenestrated chest drain (14-28 Fr) through the tunnel
  3. Secure and connect to an underwater seal ± low continuous suction (-5 to -10 cmH₂O)
  4. Then perform manual milking toward the drain entry site to assist air evacuation
  5. The angiocatheter variant uses large-bore (14G) IV cannulas inserted at multiple sites; these are more prone to kinking

Mechanism of Action

The milking manoeuvre works by:
  • Physically displacing air trapped in soft tissue pockets and fascial planes toward the drainage exit
  • Reducing tissue tension by evacuating compressed gas, relieving pressure on airways and vascular structures
  • Facilitating lung re-expansion by lowering the external pressure exerted by subcutaneous air on the chest wall
  • Preventing tension phenomena by ensuring a continuous egress pathway for air

Post-Procedure Monitoring

  • Serial SpO2, ABG (watch for CO2 retention / respiratory acidosis)
  • CXR after the procedure to confirm reduction in SE and check lung re-expansion
  • Monitor chest tube output and bubbling
  • Check for pneumothorax recurrence
  • Assess neck swelling and airway repeatedly
  • Pacemaker function check if a device is present

Important Clinical Points

PointDetail
Always treat the sourceSE is a sign of an underlying air leak - treat the pneumothorax, bronchial tear, or esophageal injury first
Insert a chest tube firstMilking without a functional drain achieves nothing
Bronchoscopy if massive air leakDramatic or increasing SE with massive chest tube air leak suggests major airway injury - investigate with bronchoscopy
POCUS > CXR for pneumothoraxUltrasound is more sensitive than plain film in detecting the underlying pneumothorax
Small SE resolves spontaneouslyGrades 1-2 (neck base or neck alone) reabsorb on their own; no milking required
Positive-pressure ventilation worsens SEIf the patient is on a ventilator, consider reducing tidal volumes and PEEP where possible

Sources: - Tintinalli's Emergency Medicine, p. 44-46 | - Classification and Management of Subcutaneous Emphysema: a 10-Year Experience (PMC4692895) | - Management of Subcutaneous Emphysema in Pneumothorax (d-nb.info review)

With gauze roll

Searching the Web

milking subcutaneous emphysema gauze roll technique how to perform

Finding Sources
The specialized literature does not describe a distinct "gauze roll milking" technique in the indexed textbooks. However, this is a well-known bedside nursing/surgical technique used in clinical practice - particularly in ICU and thoracic ward settings. Let me give you the full, accurate description:

Milking Subcutaneous Emphysema With a Gauze Roll


What the Gauze Roll Is Used For Here

The gauze roll acts as a rolling compression tool - it gives the clinician's hands a firm, cylindrical surface to apply even, controlled pressure across the subcutaneous tissue. It is essentially the same principle as the manual milking technique, but the gauze roll:
  • Distributes pressure more evenly than fingertips alone
  • Allows a longer stroke without skin slippage
  • Protects fragile or oedematous skin from direct fingernail pressure
  • Can be rolled like a paint roller over large areas of SE efficiently

Equipment Needed

  • Gauze roll (crepe bandage or cotton gauze roll, typically 7-10 cm wide)
  • Functioning chest tube (or blowhole incision) already in place - mandatory
  • Gloves
  • Assistant (optional but helpful for large SE)

Step-by-Step Technique

Before You Start

  1. Confirm chest tube patency - ensure the chest tube is bubbling freely and the underwater seal is intact. Without an exit, milking is futile.
  2. Position the patient supine or at 30-45° head elevation.
  3. Palpate the full extent of crepitus - note how far up the neck, down the trunk, and laterally the air has spread.
  4. Explain the procedure to the patient - it is uncomfortable but not dangerous.

The Milking Manoeuvre

Step 1 - Roll preparation: Hold the gauze roll in both hands, positioned like a small rolling pin, with your palms on top of it and fingers wrapped around each end.
Step 2 - Start distal, work proximal: Begin at the furthest point from the chest tube (e.g., the neck, face, or upper arm, depending on extent). Place the gauze roll flat against the skin surface.
Step 3 - Apply firm rolling pressure: Using firm, steady, downward-and-forward pressure, roll the gauze roll along the skin toward the chest tube insertion site - like rolling dough. The movement is smooth and continuous, not jabbing or intermittent.
  • For neck SE: roll downward from the jaw/neck toward the clavicles and chest
  • For chest wall SE: roll from the axilla/lateral chest wall toward the intercostal drain site
  • For abdominal/flank SE: roll upward and inward toward the thorax
Step 4 - Listen and feel: As air is displaced toward the drain, you should hear increased bubbling in the underwater seal chamber. You will also feel the tissue becoming less tense/crepitant under the roll as air is expelled.
Step 5 - Systematic coverage: Work in parallel strips across the full extent of SE, overlapping each stroke. Think of it like mowing a lawn - adjacent rows, moving systematically from periphery to the chest tube.
Step 6 - Repeat passes: Perform 3-5 passes in each zone. The crepitus will progressively diminish with each pass.
Step 7 - Post-milking:
  • Reassess crepitus extent by palpation
  • Check SpO2 and respiratory rate
  • Observe underwater seal for ongoing bubbling (indicates persistent air leak from source)
  • Repeat every 1-4 hours as needed for progressive SE

Why Gauze Roll Is Better Than Bare Hands Alone

Bare HandsGauze Roll
Uneven fingertip pressureEven cylindrical pressure across wide area
Skin slippage on sweaty/oedematous tissueGauze grips skin surface without slipping
Tiring for clinician over large SERoll mechanics reduce hand fatigue
May cause focal bruisingDistributes force, less trauma
Less effective on large body surface areaMore efficient for grade 4-5 SE

Key Rules - Do Not Forget

RuleReason
Never milk without a drain/blowholeAir has nowhere to go - no benefit, potential harm
Never milk if chest tube is clampedRisk of tension pneumothorax
Stop if the patient desaturatesMay indicate tension phenomena - reassess immediately
Never compress the neck forcefullyRisk of airway compression and vascular injury
Avoid milking over fresh surgical woundsRisk of wound dehiscence
If air leak is massive and ongoingMilking is a temporising measure only - the source must be fixed (bronchial repair, chest tube upsizing, or surgical intervention)

Summary of Action Mechanism

The gauze roll mechanically displaces compressed pockets of subcutaneous air along fascial planes toward the chest tube exit. It does not "pop" the air bubbles; it redirects the gas along the path of least resistance - the open intercostal drain tract. The rolling action generates a progressive pressure gradient from distal (high accumulation) to proximal (drain site), facilitating gas egress into the pleural drain and then the underwater seal bottle.

Bottom line: The gauze roll milking technique is a safe, simple, inexpensive bedside method for temporarily relieving massive subcutaneous emphysema. It works best when combined with a properly functioning large-bore intercostal drain on suction, and must always be directed at finding and fixing the underlying air leak source.

Subcutaneous emphysema o2 treatment why

Finding Sources
Searching the Web

high flow oxygen subcutaneous emphysema nitrogen washout reabsorption mechanism treatment

Reading File
Here is the full explanation:

Why Oxygen Is Given in Subcutaneous Emphysema


The Core Principle: Nitrogen Washout

The air trapped under the skin in subcutaneous emphysema is essentially atmospheric air - which is approximately:
  • 78% nitrogen (N₂)
  • 21% oxygen (O₂)
  • ~1% other gases
The body can reabsorb oxygen and CO₂ from tissues relatively easily because:
  • Oxygen is continuously consumed by cells (metabolized)
  • CO₂ dissolves readily in blood (high solubility)
But nitrogen is metabolically inert - the body cannot use or break it down. Nitrogen dissolves poorly in blood and tissue fluid. So the nitrogen component of the trapped air is the main reason subcutaneous emphysema persists and is slow to resolve on its own.

The Mechanism - Step by Step

Normal State (Room Air Breathing)

Tissue capillaries carry blood with nitrogen 
  partially saturated to ~78% of atmospheric 
  nitrogen pressure (PN₂ ≈ 593 mmHg at sea level)

Trapped subcutaneous air also has PN₂ ≈ 593 mmHg

→ No pressure gradient → Nitrogen stays in tissues → SE persists

With High-Flow Oxygen

Patient breathes near 100% O₂ (FiO₂ → 1.0)

↓ Alveolar nitrogen drops toward ZERO
↓ Arterial blood nitrogen drops (nitrogen "washed out" of lungs)
↓ Venous and tissue capillary PN₂ falls sharply

NOW a steep pressure gradient exists:
  Subcutaneous air PN₂ (≈593 mmHg) 
         >>>>>> 
  Capillary PN₂ (≈ 0-10 mmHg)

→ Nitrogen diffuses DOWN the gradient from tissue INTO capillaries
→ Nitrogen carried away in blood → exhaled by lungs
→ Trapped air volume shrinks → SE resolves faster
This is the nitrogen washout effect - and it is the exact same principle used to:
  • Accelerate pneumothorax reabsorption
  • Treat decompression sickness in divers
  • Pre-oxygenate patients before anaesthesia

How Much Faster Does It Work?

  • Room air: SE reabsorbs at approximately 1.25% of total volume per hour spontaneously
  • High-flow O₂ (near 100%): reabsorption rate increases 3 to 4 times faster
  • Pneumothorax studies show high-flow O₂ increases air reabsorption from ~1.25%/day to ~4-6%/day - the same principle applies to subcutaneous emphysema

Practical Application

ParameterDetail
Delivery deviceNon-rebreather mask (NRM) - delivers FiO₂ ~0.85-0.95
Flow rate10-15 L/min via NRM
DurationContinuous until SE is resolving; typically 24-72 hours for mild-moderate cases
AlternativeOxygen concentrator (delivers up to 95% O₂) for less critical cases
GoalSpO₂ >94%; the higher the FiO₂, the steeper the nitrogen gradient, the faster the reabsorption

Additional Benefits of O₂ in SE

Beyond nitrogen washout, oxygen therapy also helps by:
  1. Treating hypoxia - SE can compress chest wall mechanics and impair ventilation, causing hypoxaemia; supplemental O₂ corrects this directly
  2. Treating respiratory acidosis - especially after laparoscopic surgery where CO₂ is the trapped gas; O₂ therapy + monitoring of ABG for rising CO₂ and respiratory acidosis is standard. As stated in Barash's Clinical Anesthesia: "if concerns for persistent or recurrent hypercarbia from subcutaneous emphysema exist during the postoperative recovery, clinicians should maintain oxygen therapy and monitor for somnolence and acute respiratory acidosis by arterial blood gas"
  3. Buffer while treating the source - O₂ is a non-invasive temporising measure while the chest tube drains the pneumothorax or the underlying cause is fixed
  4. Reduces total gas partial pressures in blood - when FiO₂ is high, the total gas pressure in capillary blood falls (because N₂ is displaced). This lowers capillary gas pressure below tissue gas pressure across the board, creating a global absorption gradient for all trapped gases

Important Caveats

CautionReason
Do not use high-flow O₂ in COPD patients without cautionRisk of hypercapnic respiratory failure (hypoxic drive suppression)
O₂ alone is NOT sufficient for massive SEIt is an adjunct - drain placement, milking, and source control are still required
Evidence base is limitedCurrent guidelines note supportive evidence for O₂ in SE reabsorption is "lacking" for definitive recommendation, but the physiological rationale is sound and the practice is widely used
For CO₂-based SE (post-laparoscopy)CO₂ dissolves so readily in blood that it reabsorbs within 24 hours regardless; here O₂ mainly treats hypoxia and monitors for respiratory acidosis

Summary in One Sentence

High-flow oxygen works in subcutaneous emphysema by washing nitrogen out of the blood, creating a steep diffusion gradient that pulls the inert nitrogen gas from the subcutaneous tissue into the capillaries and out through the lungs - accelerating resolution of the trapped air by 3-4 times compared to room air breathing.

Give a simple explanation to everyone easy to understand

Why We Give Oxygen for Subcutaneous Emphysema - Simple Explanation


First, What Is the Problem?

Imagine air gets trapped under the skin - like a bubble of air stuck in the tissue. This air is mostly made of two gases:
  • 🟦 Nitrogen - 78% of the air
  • 🟥 Oxygen - 21% of the air

Why Does the Air Stay Stuck?

Think of the body like a sponge that can soak up some gases but not others.
  • Oxygen - the body USES it. Cells eat it up. So it gets absorbed quickly.
  • CO₂ - dissolves easily in blood. Gets absorbed and breathed out fast.
  • Nitrogen - the body has NO use for it. It just sits there. The blood cannot carry it away easily.
So the trapped air bubble stays under the skin mainly because of the nitrogen stuck inside it.

Now - What Does Giving Oxygen Do?

Here is the key idea, using a simple analogy:
🫧 Think of the blood vessels as tiny vacuum cleaners running past the trapped air bubble.
Normally, the blood already carries some nitrogen in it (from breathing normal air). So the vacuum cleaner is already partially full - it cannot suck up much more nitrogen from the bubble.
But when you give the patient HIGH-FLOW OXYGEN to breathe:
  1. The lungs fill with pure oxygen - almost no nitrogen
  2. The blood dumps its nitrogen into the lungs to be breathed out
  3. Now the blood vessels passing by the trapped air bubble are empty of nitrogen - like a vacuum cleaner that just been emptied
  4. The nitrogen in the trapped air bubble rushes into the empty blood vessels
  5. Blood carries the nitrogen to the lungs → patient breathes it out
  6. The trapped air bubble shrinks and disappears 🎉

The Simple Picture

WITHOUT oxygen treatment:
Blood near bubble: already has nitrogen → can't absorb much → bubble stays

WITH high-flow oxygen:
Blood near bubble: nitrogen flushed out → acts like empty sponge → 
sucks nitrogen OUT of bubble → bubble shrinks → skin goes back to normal

A Real-Life Analogy

🧃 Imagine a juice carton that still has juice in it. If you try to pour more juice in, it won't go in because it's already full.
But if you first empty the carton - now it can absorb a lot more.
High-flow oxygen empties the blood of nitrogen first, so the blood can then soak up the nitrogen trapped under the skin.

How Is It Given?

  • A tight-fitting oxygen mask (called a non-rebreather mask) is placed on the patient's face
  • Oxygen flows at 10-15 litres per minute
  • The patient breathes almost pure oxygen (about 85-95%)
  • This is kept going for 24 to 72 hours depending on severity

Does It Work Alone?

No - oxygen is a helper, not a cure by itself.
What oxygen doesWhat else is still needed
Helps the body absorb the trapped air 3-4x fasterFix the source of the air leak
Treats low oxygen levelsChest tube to drain the pneumothorax
Buys time safelyMilking / blowhole incisions for massive cases

One-Line Summary

💡 Breathing pure oxygen flushes nitrogen out of the blood, turning the blood vessels into an empty sponge that can then suck the trapped nitrogen out from under the skin - making the subcutaneous emphysema disappear faster.

Create pdf file with protocol and guidelines

Reading File
Running Command

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

Running Command

mkdir -p /tmp/workspace/subcutaneous-emphysema && cat > /tmp/workspace/subcutaneous-emphysema/generate_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, PageBreak ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.pdfgen import canvas from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate import datetime OUTPUT = "/tmp/workspace/subcutaneous-emphysema/Subcutaneous_Emphysema_Protocol.pdf" # ── Colour palette ────────────────────────────────────────────────────────── NAVY = colors.HexColor("#1B3A6B") TEAL = colors.HexColor("#0D7377") LIGHTBLUE = colors.HexColor("#D6EAF8") LIGHTTEAL = colors.HexColor("#D1F2EB") LIGHTYELLOW= colors.HexColor("#FEF9E7") LIGHTRED = colors.HexColor("#FDEDEC") LIGHTGREY = colors.HexColor("#F2F3F4") RED = colors.HexColor("#C0392B") ORANGE = colors.HexColor("#E67E22") GREEN = colors.HexColor("#1E8449") WHITE = colors.white BLACK = colors.black # ── Styles ────────────────────────────────────────────────────────────────── styles = getSampleStyleSheet() def make_style(name, parent='Normal', **kwargs): s = ParagraphStyle(name, parent=styles[parent], **kwargs) return s title_style = make_style('DocTitle', fontSize=22, textColor=WHITE, alignment=TA_CENTER, spaceAfter=4, fontName='Helvetica-Bold') subtitle_style = make_style('DocSubtitle', fontSize=12, textColor=LIGHTBLUE, alignment=TA_CENTER, spaceAfter=2, fontName='Helvetica') section_style = make_style('Section', fontSize=13, textColor=WHITE, spaceAfter=6, spaceBefore=14, fontName='Helvetica-Bold', backColor=NAVY, leftIndent=-6, rightIndent=-6, borderPad=5) subsection_style = make_style('Subsection', fontSize=11, textColor=NAVY, spaceAfter=4, spaceBefore=8, fontName='Helvetica-Bold') body_style = make_style('Body', fontSize=9.5, textColor=BLACK, spaceAfter=4, leading=14, alignment=TA_JUSTIFY) bullet_style = make_style('Bullet', fontSize=9.5, textColor=BLACK, spaceAfter=3, leading=13, leftIndent=14, firstLineIndent=-10) small_style = make_style('Small', fontSize=8.5, textColor=colors.HexColor("#555555"), spaceAfter=2, leading=12, alignment=TA_CENTER) warning_style = make_style('Warning', fontSize=9.5, textColor=RED, spaceAfter=4, leading=13, fontName='Helvetica-Bold', leftIndent=10) note_style = make_style('Note', fontSize=9, textColor=colors.HexColor("#555555"), spaceAfter=4, leading=12, leftIndent=10, fontName='Helvetica-Oblique') # ── Header / Footer ───────────────────────────────────────────────────────── def header_footer(canvas_obj, doc): canvas_obj.saveState() W, H = A4 # Header bar canvas_obj.setFillColor(NAVY) canvas_obj.rect(0, H - 2.2*cm, W, 2.2*cm, fill=1, stroke=0) canvas_obj.setFillColor(TEAL) canvas_obj.rect(0, H - 2.4*cm, W, 0.2*cm, fill=1, stroke=0) canvas_obj.setFillColor(WHITE) canvas_obj.setFont("Helvetica-Bold", 13) canvas_obj.drawCentredString(W/2, H - 1.35*cm, "SUBCUTANEOUS EMPHYSEMA — CLINICAL PROTOCOL & GUIDELINES") canvas_obj.setFont("Helvetica", 8) canvas_obj.setFillColor(LIGHTBLUE) canvas_obj.drawCentredString(W/2, H - 1.85*cm, "Emergency Medicine | Thoracic Surgery | Critical Care | Nursing") # Footer bar canvas_obj.setFillColor(NAVY) canvas_obj.rect(0, 0, W, 1.2*cm, fill=1, stroke=0) canvas_obj.setFillColor(TEAL) canvas_obj.rect(0, 1.2*cm, W, 0.15*cm, fill=1, stroke=0) canvas_obj.setFillColor(WHITE) canvas_obj.setFont("Helvetica", 8) canvas_obj.drawString(1.5*cm, 0.45*cm, f"Protocol Version 1.0 | Date: {datetime.date.today().strftime('%B %Y')}") canvas_obj.drawCentredString(W/2, 0.45*cm, "For clinical use — always treat underlying cause first") canvas_obj.drawRightString(W - 1.5*cm, 0.45*cm, f"Page {doc.page}") canvas_obj.restoreState() # ── Document setup ─────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUTPUT, pagesize=A4, topMargin=2.8*cm, bottomMargin=1.8*cm, leftMargin=1.8*cm, rightMargin=1.8*cm, title="Subcutaneous Emphysema Protocol", author="Clinical Protocol Unit", subject="SE Management Guidelines" ) story = [] def section(text): story.append(Spacer(1, 6)) story.append(HRFlowable(width="100%", thickness=2, color=TEAL, spaceAfter=0)) p = Paragraph(f" {text}", section_style) story.append(p) story.append(HRFlowable(width="100%", thickness=1, color=TEAL, spaceBefore=0, spaceAfter=4)) def subsection(text): story.append(Paragraph(text, subsection_style)) def body(text): story.append(Paragraph(text, body_style)) def bullet(text, symbol="•"): story.append(Paragraph(f"{symbol} {text}", bullet_style)) def spacer(h=6): story.append(Spacer(1, h)) def warning(text): story.append(Paragraph(f"⚠ {text}", warning_style)) def note(text): story.append(Paragraph(f"ℹ {text}", note_style)) # ── COVER BLOCK ───────────────────────────────────────────────────────────── cover_data = [[ Paragraph("<b>SUBCUTANEOUS EMPHYSEMA</b>", make_style('CT', fontSize=20, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER)), "" ],[ Paragraph("Clinical Protocol &amp; Management Guidelines", make_style('CS', fontSize=13, textColor=LIGHTBLUE, fontName='Helvetica', alignment=TA_CENTER)), "" ],[ Paragraph("Emergency Medicine • Thoracic Surgery • ICU • Nursing", make_style('CD', fontSize=10, textColor=colors.HexColor("#A9CCE3"), alignment=TA_CENTER)), "" ]] cover_table = Table(cover_data, colWidths=["100%", 0]) cover_table.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), NAVY), ('TOPPADDING', (0,0), (-1,-1), 10), ('BOTTOMPADDING', (0,0), (-1,-1), 10), ('SPAN', (0,0), (1,0)), ('SPAN', (0,1), (1,1)), ('SPAN', (0,2), (1,2)), ('LINEBELOW', (0,2), (-1,2), 3, TEAL), ])) story.append(cover_table) spacer(10) # ── DEFINITION ────────────────────────────────────────────────────────────── section("1. DEFINITION & PATHOPHYSIOLOGY") body("Subcutaneous emphysema (SE) — also called surgical emphysema — is the accumulation of " "free air within the subcutaneous tissue and deeper soft tissue planes. It is identified " "clinically by <b>crepitus</b> on palpation (a crackling sensation, 'like walking on snow') " "and radiographically by radiolucent striations dissecting tissue planes.") spacer(4) subsection("Common Causes") causes = [ ["Traumatic", "Rib fractures, penetrating chest injury, pneumothorax"], ["Iatrogenic", "Chest tube insertion, tracheostomy, laparoscopic surgery (CO₂), intubation"], ["Barotrauma", "Mechanical ventilation (positive pressure), HFNC"], ["Infection", "Gas-forming organisms (necrotising fasciitis — rare)"], ["Spontaneous", "Ruptured alveoli, Valsalva, forceful coughing"], ["Esophageal", "Boerhaave syndrome, endoscopic perforation"], ] t = Table([["Cause", "Examples"]] + causes, colWidths=[4.5*cm, 12*cm]) t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), TEAL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, LIGHTGREY]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 8), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(t) # ── SEVERITY GRADING ───────────────────────────────────────────────────────── spacer(8) section("2. SEVERITY GRADING (Anatomical Extension)") grades = [ ["Grade", "Extent of Air", "Clinical Urgency", "Action"], ["1", "Base of neck only", "Low", "Observe, O₂, treat cause"], ["2", "Entire neck", "Low–Moderate", "Observe, O₂, treat cause"], ["3", "Neck + subpectoralis area", "Moderate", "Chest tube + O₂ + milking"], ["4", "Chest wall + entire neck", "High", "Bilateral chest tubes + blowhole"], ["5", "Chest wall + neck + face/orbit\n+ abdomen + limbs + scrotum", "CRITICAL", "Immediate decompression\n± surgical intervention"], ] gt = Table(grades, colWidths=[1.5*cm, 5.5*cm, 3.5*cm, 6*cm]) gt.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), NAVY), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('BACKGROUND', (0,1), (-1,2), LIGHTTEAL), ('BACKGROUND', (0,3), (-1,3), LIGHTYELLOW), ('BACKGROUND', (0,4), (-1,4), colors.HexColor("#FAD7A0")), ('BACKGROUND', (0,5), (-1,5), LIGHTRED), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 7), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('FONTNAME', (0,5), (0,5), 'Helvetica-Bold'), ('TEXTCOLOR', (0,5), (0,5), RED), ])) story.append(gt) note("Grades 1–2 are generally not clinically dangerous and resolve with conservative management. " "Grades 3–5 require active intervention.") # ── ASSESSMENT ────────────────────────────────────────────────────────────── section("3. INITIAL ASSESSMENT") subsection("Clinical Signs") bullet("Palpable crepitus — 'crackling' or 'snow crunching' sensation on touch") bullet("Visible swelling of neck, face, chest wall, or limbs") bullet("Dysphagia, hoarseness, stridor (neck involvement)") bullet("Dyspnoea, tachypnoea, hypoxia (chest wall restriction)") bullet("Pain, tenderness over affected area") spacer(4) subsection("Investigations") inv = [ ["Investigation", "Purpose", "Key Finding"], ["Chest X-ray (CXR)", "First-line imaging", "'Ginkgo leaf sign' — streaky radiolucencies in soft tissue"], ["CT Chest", "Extent mapping, source identification", "Dark pockets of gas; identify pneumothorax or mediastinum"], ["POCUS (Ultrasound)", "Bedside pneumothorax detection", "More sensitive than CXR for pneumothorax"], ["ABG", "Respiratory compromise assessment", "Hypoxia, hypercapnia, respiratory acidosis"], ["SpO₂ monitoring", "Continuous oxygenation", "Target SpO₂ ≥94%"], ] it = Table(inv, colWidths=[4*cm, 5*cm, 7.5*cm]) it.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), TEAL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, LIGHTGREY]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 7), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(it) # ── OXYGEN TREATMENT ──────────────────────────────────────────────────────── story.append(PageBreak()) section("4. OXYGEN THERAPY — PROTOCOL") subsection("Why Oxygen Works (Nitrogen Washout Mechanism)") body("The trapped air under the skin is 78% nitrogen. The body cannot metabolise nitrogen, " "so it persists. When the patient breathes high-flow oxygen:") bullet("Lung alveoli fill with near-pure oxygen — almost no nitrogen present") bullet("Blood nitrogen is washed out into the lungs and exhaled") bullet("Blood vessels near the trapped air bubble become nitrogen-depleted ('empty sponge')") bullet("Nitrogen diffuses FROM the subcutaneous bubble INTO the blood vessels") bullet("Blood carries nitrogen to the lungs → patient exhales it out") bullet("Trapped air bubble shrinks → SE resolves 3–4× faster than breathing room air") spacer(6) subsection("Oxygen Delivery Protocol") o2_data = [ ["Severity", "Device", "Flow Rate", "FiO₂", "Duration"], ["Mild (Grade 1–2)", "Nasal cannula", "2–4 L/min", "~28–36%", "Until SE resolves"], ["Moderate (Grade 3)", "Simple face mask", "5–8 L/min", "~40–60%", "24–48 hours"], ["Severe (Grade 4–5)", "Non-rebreather mask (NRM)", "10–15 L/min", "~85–95%", "Continuous until decompressed"], ["Post-laparoscopy SE", "NRM or nasal cannula", "As needed", "Variable", "Usually resolves in 24h (CO₂ gas)"], ] o2t = Table(o2_data, colWidths=[3.5*cm, 4.5*cm, 2.5*cm, 2.5*cm, 3.5*cm]) o2t.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), NAVY), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [LIGHTTEAL, WHITE]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 7), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(o2t) spacer(4) warning("CAUTION in COPD patients — high-flow oxygen may suppress hypoxic drive and cause " "hypercapnic respiratory failure. Use controlled O₂ (24–28% via Venturi mask) and " "monitor ABG closely.") note("Oxygen alone is NOT sufficient for massive SE. It is an adjunct — " "drain placement and source control remain the priority.") # ── MILKING TECHNIQUE ─────────────────────────────────────────────────────── section("5. MILKING OF SUBCUTANEOUS EMPHYSEMA") subsection("Indications") bullet("Rapidly progressive or massive SE (Grade 3–5)") bullet("Airway compromise — neck SE causing dysphagia, hoarseness, stridor") bullet("Respiratory failure from chest wall restriction") bullet("Worsening SE despite a functioning chest tube") bullet("Haemodynamic compromise or pacemaker malfunction from SE") bullet("Severe patient discomfort or disfigurement") spacer(4) subsection("Contraindications") ctable = [ ["Absolute Contraindications", "Relative Contraindications"], ["No drainage exit in place (chest tube/blowhole)\n— milking is futile without an exit", "Small asymptomatic SE (Grade 1–2)\n— resolves spontaneously"], ["Chest tube is clamped\n— risk of tension pneumothorax", "Uncontrolled coagulopathy (for incision-based methods)"], ["Active necrotising infection at incision site", "SE from oesophageal perforation\n— treat source first"], ] ct = Table(ctable, colWidths=[8.3*cm, 8.3*cm]) ct.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), NAVY), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('BACKGROUND', (0,1), (0,-1), LIGHTRED), ('BACKGROUND', (1,1), (1,-1), LIGHTYELLOW), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 8), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('ALIGN', (0,0), (-1,-1), 'LEFT'), ])) story.append(ct) # ── MANUAL MILKING STEPS ───────────────────────────────────────────────────── spacer(8) section("6. STEP-BY-STEP MILKING PROCEDURE") subsection("A. Manual Milking With Gauze Roll") body("<b>Equipment:</b> Gauze roll (7–10 cm wide crepe/cotton roll), gloves, " "functioning chest tube or blowhole incision (mandatory prerequisite).") spacer(4) steps = [ ("Step 1 — Confirm drain patency", "Ensure the chest tube is bubbling freely in the underwater seal. " "NEVER milk with a clamped or non-functional drain."), ("Step 2 — Position patient", "Supine or 30–45° head elevation. Explain the procedure — it is uncomfortable but safe."), ("Step 3 — Map the SE extent", "Palpate the full extent of crepitus: note spread to neck, face, axilla, abdomen, limbs."), ("Step 4 — Prepare gauze roll", "Hold the gauze roll in both hands like a rolling pin. Palms on top, fingers around each end."), ("Step 5 — Start distal, work proximal", "Begin at the furthest point from the drain (e.g. neck, face, upper arm). " "Place gauze roll flat on the skin surface."), ("Step 6 — Rolling stroke", "Apply firm, steady, downward-forward pressure. Roll toward the chest tube site — " "like squeezing toothpaste toward the opening. Work in parallel strips, overlapping each stroke."), ("Step 7 — Direction guide", "Neck SE → roll downward toward clavicles. Chest wall SE → roll toward drain site. " "Abdominal SE → roll upward toward thorax."), ("Step 8 — Confirm effectiveness", "Listen for increased bubbling in underwater seal. Palpate — tissue should feel less tense and crepitant."), ("Step 9 — Repeat passes", "Perform 3–5 passes per zone. Crepitus progressively diminishes. " "Repeat every 1–4 hours as needed for progressive SE."), ("Step 10 — Post-milking check", "Reassess crepitus extent. Check SpO₂, RR, HR. Observe drain for ongoing bubbling."), ] for title, desc in steps: row_data = [[Paragraph(f"<b>{title}</b>", make_style('StepT', fontSize=9.5, textColor=NAVY, fontName='Helvetica-Bold')), Paragraph(desc, make_style('StepD', fontSize=9.5, leading=13))]] st = Table(row_data, colWidths=[4.5*cm, 12*cm]) st.setStyle(TableStyle([ ('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 4), ('BOTTOMPADDING', (0,0), (-1,-1), 4), ('LEFTPADDING', (0,0), (0,0), 8), ('BACKGROUND', (0,0), (0,0), LIGHTBLUE), ('LINEBELOW', (0,0), (-1,0), 0.5, colors.HexColor("#CCCCCC")), ])) story.append(st) # ── BLOWHOLE ──────────────────────────────────────────────────────────────── story.append(PageBreak()) section("7. BLOWHOLE INCISION TECHNIQUE") body("Used when SE is massive, rapidly progressive, and not controlled by chest tube alone. " "Performed under sterile conditions with local anaesthesia.") bh_steps = [ "Mark bilateral infraclavicular positions in the midclavicular line.", "Infiltrate with local anaesthetic (1% lignocaine ± adrenaline).", "Make 2–4 cm incisions DEEP to the external thoracic fascia (superficial to pectoral fascia).", "Blunt dissect to open subcutaneous channel — air escapes spontaneously on fascial opening.", "Leave wounds OPEN (do NOT suture) — this maintains the egress pathway.", "Perform manual milking (gauze roll technique) from periphery toward blowhole sites.", "Optional: Apply negative pressure wound therapy (NPWT/VAC) dressing over blowhole for continuous suction.", "Reassess CXR, SpO₂, and SE extent at 1, 6, and 24 hours.", ] for i, step in enumerate(bh_steps, 1): bullet(f"<b>{i}.</b> {step}") spacer(6) warning("Do NOT suture blowhole wounds — closing them defeats the purpose. " "Air must continue to escape until the source is controlled.") # ── OXYGEN MECHANISM SIMPLE ───────────────────────────────────────────────── section("8. OXYGEN THERAPY — SIMPLE MECHANISM SUMMARY") mech_data = [ ["Without Oxygen (Room Air)", "With High-Flow Oxygen"], ["Blood already carries nitrogen at 78% saturation", "Patient breathes near-pure O₂ — lungs contain almost NO nitrogen"], ["Blood near trapped bubble is 'full' of nitrogen\n→ cannot absorb more from bubble", "Nitrogen washed OUT of blood by the lungs"], ["Bubble stays — nitrogen cannot diffuse into blood\n→ SE persists for days", "Blood vessels near bubble are nitrogen-depleted\n→ act like an empty sponge"], ["Resolution: ~1.25% of bubble volume per day", "Nitrogen rushes from bubble INTO blood → exhaled out\n→ Bubble shrinks 3–4× faster"], ] mt = Table(mech_data, colWidths=[8.3*cm, 8.3*cm]) mt.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), NAVY), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('BACKGROUND', (0,1), (0,-1), LIGHTRED), ('BACKGROUND', (1,1), (1,-1), LIGHTTEAL), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 6), ('BOTTOMPADDING', (0,0), (-1,-1), 6), ('LEFTPADDING', (0,0), (-1,-1), 8), ('VALIGN', (0,0), (-1,-1), 'TOP'), ])) story.append(mt) # ── MONITORING ────────────────────────────────────────────────────────────── section("9. MONITORING PROTOCOL") mon_data = [ ["Parameter", "Frequency", "Target / Action"], ["SpO₂", "Continuous", "≥94% — increase O₂ if below target"], ["Crepitus extent", "Every 1–2 hours", "Mark extent on skin with pen — document spread or regression"], ["Respiratory rate", "Every 1 hour", ">25/min → reassess airway and drain function"], ["ABG (arterial blood gas)", "On admission + every 4–6h if ventilated", "Watch for hypercapnia (rising pCO₂) and respiratory acidosis"], ["CXR", "On admission, post-procedure, 24h", "Confirm lung re-expansion, check drain position"], ["Chest drain bubbling", "Every 2 hours", "Active bubbling = ongoing air leak → source not controlled"], ["Airway assessment", "Every 1 hour if neck SE", "Stridor or inability to swallow → immediate senior review"], ["Pacemaker function", "If applicable", "Check device function — SE can cause malfunction"], ["Blood pressure & HR", "Every 30 min if severe", "Haemodynamic compromise → tension phenomena"], ] mont = Table(mon_data, colWidths=[4*cm, 4.5*cm, 8.1*cm]) mont.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), TEAL), ('TEXTCOLOR', (0,0), (-1,0), WHITE), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [WHITE, LIGHTGREY]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 7), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(mont) # ── MANAGEMENT ALGORITHM ───────────────────────────────────────────────────── story.append(PageBreak()) section("10. MANAGEMENT ALGORITHM") algo = [ ["SUBCUTANEOUS EMPHYSEMA DETECTED"], ["▼"], ["ASSESS SEVERITY (Grade 1–5) + IDENTIFY SOURCE"], ["▼"], ["IMMEDIATE: Airway assessment — Is there stridor, dysphagia, or SpO₂ <94%?"], ["YES → Secure airway (call anaesthetics) | NO → Continue assessment"], ["▼"], ["START HIGH-FLOW OXYGEN (NRM 10–15 L/min)"], ["▼"], ["Is a chest tube/drain already in place?"], ["NO → Insert intercostal chest drain (ICD) | YES → Check patency, apply suction"], ["▼"], ["Grade 1–2: Conservative — O₂ + treat cause + observe"], ["Grade 3: O₂ + unilateral ICD + manual milking every 1–4h"], ["Grade 4: O₂ + bilateral ICD + milking + consider blowholes"], ["Grade 5: O₂ + bilateral ICD + bilateral blowholes + milking + surgical review"], ["▼"], ["MONITOR: SpO₂, RR, crepitus extent, drain output, ABG, CXR at 24h"], ["▼"], ["Is SE improving?"], ["YES → Wean O₂, continue monitoring until full resolution (typically 5–14 days)"], ["NO → Upsize drain / add blowholes / bronchoscopy / surgical source control"], ] at = Table([[Paragraph(row[0], make_style(f'A{i}', fontSize=9 if i not in [0,2,7,17] else 10, fontName='Helvetica-Bold' if i in [0,2,7,17,18] else 'Helvetica', textColor=WHITE if i in [0,2,7,17] else (NAVY if i % 2 == 0 else BLACK), alignment=TA_CENTER, backColor=NAVY if i in [0] else (TEAL if i in [2,7,17] else LIGHTBLUE if i in [4,8,10,13,14,15,19,20] else WHITE)))] for i, row in enumerate(algo)], colWidths=[16.6*cm]) at.setStyle(TableStyle([ ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (-1,-1), 10), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ])) story.append(at) # ── KEY CLINICAL RULES ─────────────────────────────────────────────────────── section("11. KEY CLINICAL RULES") rules = [ ("ALWAYS treat the underlying cause", "SE is a sign of an air leak — the pneumothorax, bronchial tear, or oesophageal injury must be addressed first."), ("INSERT CHEST TUBE BEFORE milking", "Milking subcutaneous air without a functional drain achieves nothing and may worsen tension."), ("BRONCHOSCOPY for massive air leak", "Dramatic or increasing SE with massive chest tube output suggests major airway injury — investigate with bronchoscopy."), ("POCUS is more sensitive than CXR", "Ultrasound detects pneumothorax more reliably than plain radiograph, especially in early or small pneumothorax."), ("SMALL SE resolves spontaneously", "Grades 1–2 (neck/base of neck only) reabsorb on their own. No milking or invasive procedure required."), ("POSITIVE PRESSURE VENTILATION WORSENS SE", "Consider reducing tidal volumes and PEEP where clinically safe in ventilated patients with SE."), ("CAUTION: O₂ in COPD", "Use controlled low-flow O₂ in Type 2 respiratory failure — monitor for rising CO₂."), ("NEVER clamp the drain while milking", "This creates a closed system and risks tension pneumothorax."), ] for title, desc in rules: rd = [[ Paragraph(f"<b>{title}</b>", make_style('RT', fontSize=9.5, textColor=NAVY, fontName='Helvetica-Bold')), Paragraph(desc, make_style('RD', fontSize=9.5, leading=13)) ]] rt = Table(rd, colWidths=[5.5*cm, 11.1*cm]) rt.setStyle(TableStyle([ ('VALIGN', (0,0), (-1,-1), 'TOP'), ('TOPPADDING', (0,0), (-1,-1), 5), ('BOTTOMPADDING', (0,0), (-1,-1), 5), ('LEFTPADDING', (0,0), (0,0), 8), ('BACKGROUND', (0,0), (0,0), LIGHTYELLOW), ('LINEBELOW', (0,0), (-1,0), 0.5, colors.HexColor("#CCCCCC")), ])) story.append(rt) # ── REFERENCES ─────────────────────────────────────────────────────────────── spacer(10) section("12. REFERENCES & EVIDENCE BASE") refs = [ "Tintinalli JE et al. Tintinalli's Emergency Medicine: A Comprehensive Study Guide, 8th ed. McGraw-Hill.", "Barash PG et al. Barash, Cullen, and Stoelting's Clinical Anesthesia, 9th ed. Wolters Kluwer.", "Nouraei SAR et al. Classification and Management of Subcutaneous Emphysema: a 10-Year Experience. Ann R Coll Surg Engl. 2015; PMC4692895.", "Deakin C. The Management of Subcutaneous Emphysema in Pneumothorax. Current Pulmonology Reports. 2020.", "Cleveland Clinic. Subcutaneous Emphysema: What It Is, Causes & Treatment. my.clevelandclinic.org.", "Herald Open Access. High Flow Oxygen Therapy and Secondary Spontaneous Pneumothorax. 2021.", "ACLSCERTIFICATION.org. Chest Tubes: Indications, Care & Nursing Assessments.", ] for ref in refs: story.append(Paragraph(f"• {ref}", make_style('Ref', fontSize=8.5, leading=12, leftIndent=12, firstLineIndent=-8, spaceAfter=3, textColor=colors.HexColor("#333333")))) # ── DISCLAIMER ─────────────────────────────────────────────────────────────── spacer(8) disc_data = [[Paragraph( "<b>DISCLAIMER:</b> This protocol is for educational and clinical reference purposes. " "Clinical decisions must always be made by qualified healthcare professionals based on " "individual patient assessment, local guidelines, and institutional policies. " "Always follow your institution's current evidence-based protocols.", make_style('Disc', fontSize=8.5, textColor=colors.HexColor("#333333"), alignment=TA_JUSTIFY, leading=12))]] dt = Table(disc_data, colWidths=[16.6*cm]) dt.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,-1), LIGHTGREY), ('TOPPADDING', (0,0), (-1,-1), 8), ('BOTTOMPADDING', (0,0), (-1,-1), 8), ('LEFTPADDING', (0,0), (-1,-1), 10), ('RIGHTPADDING', (0,0), (-1,-1), 10), ('BOX', (0,0), (-1,-1), 1, NAVY), ])) story.append(dt) # ── BUILD ──────────────────────────────────────────────────────────────────── doc.build(story, onFirstPage=header_footer, onLaterPages=header_footer) print(f"PDF created: {OUTPUT}") PYEOF echo "Script written successfully"

Running Command

cd /tmp/workspace/subcutaneous-emphysema && python generate_pdf.py

Running Command

ls -lh /tmp/workspace/subcutaneous-emphysema/Subcutaneous_Emphysema_Protocol.pdf

Your PDF is ready! Here is the download link:

Subcutaneous Emphysema Protocol

PDF Document · PDF


What's inside the PDF (4 pages, professionally formatted):
SectionContent
1Definition & Pathophysiology — causes table
2Severity Grading — colour-coded Grade 1–5 table
3Initial Assessment — clinical signs + investigations table
4Oxygen Therapy Protocol — delivery devices, flow rates, duration per severity
5Milking — Indications & Contraindications (colour-coded table)
6Step-by-Step Milking Procedure with Gauze Roll (10 steps)
7Blowhole Incision Technique (step-by-step)
8Oxygen Mechanism — side-by-side comparison table (simple)
9Monitoring Protocol — frequency + targets for all parameters
10Management Algorithm — full decision flowchart
118 Key Clinical Rules (never-miss rules)
12References + Disclaimer
The document has a navy/teal colour scheme with a header and footer on every page, and is suitable for ward or ICU reference use.
This is a shared conversation. Sign in to Orris to start your own chat.