Give answers to this charts
cd /home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/ && python3 -c " import pdfplumber with pdfplumber.open('physiology practical charts.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): print(f'\n===== PAGE {i+1} =====') text = page.extract_text() if text: print(text) tables = page.extract_tables() if tables: for j, table in enumerate(tables): print(f'--- Table {j+1} ---') for row in table: print(row) "
cd /home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/ && python3 -c " from pdf2image import convert_from_path pages = convert_from_path('physiology practical charts.pdf', dpi=150, first_page=1, last_page=10) for i, page in enumerate(pages): page.save(f'/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/page_{i+1}.jpg', 'JPEG') print(f'Saved page {i+1}') print('Done') "
python3 -c " import base64, json with open('/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/page_1.jpg', 'rb') as f: data = base64.b64encode(f.read()).decode() print('base64 length:', len(data)) "
python3 -c " import pytesseract from PIL import Image import os base = '/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/' all_text = '' for i in range(1, 11): img = Image.open(f'{base}page_{i}.jpg') text = pytesseract.image_to_string(img) all_text += f'\n\n===== PAGE {i} =====\n' + text print(all_text[:8000]) " 2>&1
python3 -c " from pdf2image import convert_from_path import pytesseract from PIL import Image pdf_path = '/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/physiology practical charts.pdf' # Convert ALL pages pages = convert_from_path(pdf_path, dpi=200) print(f'Total pages: {len(pages)}') all_text = '' for i, page in enumerate(pages): text = pytesseract.image_to_string(page) if text.strip(): all_text += f'\n\n===== PAGE {i+1} =====\n' + text.strip() # Save to file with open('/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/ocr_output.txt', 'w') as f: f.write(all_text) print('Done. Characters:', len(all_text)) print(all_text[:3000]) " 2>&1
python3 -c " from pdf2image import convert_from_path import pytesseract from PIL import Image pdf_path = '/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/physiology practical charts.pdf' out_file = '/home/daytona/workspace/attachments/4d37d5bf-c29e-46b4-950f-8c07105698b8/ocr_output.txt' all_text = '' batch_size = 10 total = 123 for start in range(1, total+1, batch_size): end = min(start + batch_size - 1, total) pages = convert_from_path(pdf_path, dpi=150, first_page=start, last_page=end) for i, page in enumerate(pages): pnum = start + i text = pytesseract.image_to_string(page) if text.strip(): all_text += f'\n\n===== PAGE {pnum} =====\n' + text.strip() print(f'Processed pages {start}-{end}') with open(out_file, 'w') as f: f.write(all_text) print('DONE. Total chars:', len(all_text)) " 2>&1
Dyspneic Index = (Resting Pulmonary Ventilation / MVV) × 100 = (6 / 100) × 100 = 6% Normal dyspneic index = 3-6%. This value is normal.
| Obstructive | Restrictive |
|---|---|
| Bronchial asthma | Pulmonary fibrosis |
| COPD (emphysema, chronic bronchitis) | Silicosis / pneumoconiosis |
| Bronchiectasis | Pleural effusion |
| Cystic fibrosis | Kyphoscoliosis |
| Foreign body obstruction | Sarcoidosis |
MCV = PCV (%) / RBC count (millions/mm³) × 10 MCV = 42 / 4.8 × 10 = 87.5 fL (Normal: 80-100 fL) → Normocytic
MCH = Hb (g/dL) / RBC count (millions/mm³) × 10 MCH = 14.5 / 4.8 × 10 = 30.2 pg (Normal: 27-33 pg) → Normochromic
| Type | MCV | MCH | MCHC | Example |
|---|---|---|---|---|
| Normocytic normochromic | Normal (80-100 fL) | Normal | Normal | Aplastic anemia, acute blood loss |
| Microcytic hypochromic | Low (<80 fL) | Low | Low | Iron deficiency anemia, thalassemia |
| Macrocytic normochromic | High (>100 fL) | High | Normal | B12/folate deficiency (megaloblastic anemia) |
| Macrocytic hyperchromic | High | High | High | Hereditary spherocytosis (rarely) |
Filtered glucose = Plasma conc × GFR = 3 mg/mL × 100 mL/min = 300 mg/min Excreted glucose = Urine conc × Urine rate = 10 mg/mL × 1 mL/min = 10 mg/min TmG = Filtered - Excreted = 300 - 10 = 290 mg/min (Normal TmG = 320 mg/min in males, 260 mg/min in females)
| Renal Threshold | Tubular Maximum (Tm) |
|---|---|
| The plasma concentration at which a substance first appears in urine | The maximum rate of tubular reabsorption/secretion per minute |
| For glucose = ~180 mg/dL | For glucose = ~320 mg/min |
| Depends on both plasma concentration and GFR | Depends on number and capacity of tubular carriers |
NEFP = (PGC - PBS) - (πGC - πBS) NEFP = (60 - 15) - (30 - 0) NEFP = 45 - 30 = +15 mmHg (net filtration outward → filtration occurs)
GFR (Clearance of Inulin) = U × V / P GFR = 34 × 0.9 / 0.24 GFR = 30.6 / 0.24 = 127.5 mL/min ≈ Normal (125 mL/min)
Clearance = U × V / P (mL/min)
Compliance = ΔVolume / ΔPressure C = 1000 mL / 5 cm H₂O = 200 mL/cm H₂O = 0.2 L/cm H₂O Normal lung compliance = 0.2 L/cm H₂O ✓
VC = IRV + TV + ERV = 3 + 0.5 + 1.8 = 5.3 L RV = TLC - VC = 6 - 5.3 = 0.7 L (Normal: ~1.2 L) FRC = ERV + RV = 1.8 + 0.7 = 2.5 L (Normal: ~2.3 L) ✓
AEC = TLC × Eosinophil%/100 AEC = 6000 × 15/100 = 900/mm³ Normal AEC = 40-440/mm³ → This is elevated (eosinophilia)
Cardiac Output (CO) = O₂ consumption / A-V O₂ difference A-V difference = 19.5 - 14.8 = 4.7 mL/100 mL = 47 mL/L CO = 245 mL/min ÷ 47 mL/L = 5.21 L/min ≈ 5.2 L/min (Normal) Stroke Volume (SV) = CO / Heart rate = 5210 mL/min ÷ 70 = 74.4 mL/beat ≈ 70-80 mL (Normal)
A-V difference = 19 - 14 = 5 mL/dL = 50 mL/L CO = 250 / 50 = 5.0 L/min (Normal)
Cardiac Index = Cardiac Output / Body Surface Area (BSA) Normal = 3.0-3.5 L/min/m² It corrects for body size and allows comparison between individuals of different sizes.
CO = O₂ consumption / (Arterial O₂ content - Venous O₂ content)
CI = (Patient Hb% / Normal Hb%) ÷ (Patient RBC% / Normal RBC%) Hb% = 16/15 × 100 = 106.7% RBC% = 6/5 × 100 = 120% CI = 106.7 / 120 = 0.89 (Normal CI = 1; range 0.85-1.15)
VD/VT = (PACO₂ - PECO₂) / PACO₂ VD/VT = (40 - 26) / 40 = 14/40 = 0.35 VD = 0.35 × 450 = 157.5 mL ≈ 158 mL (Normal anatomical dead space ~150 mL)
| Anatomical Dead Space | Physiological Dead Space |
|---|---|
| Volume of conducting airways (nose to terminal bronchioles) | All areas ventilated but not perfused (anatomical + alveolar dead space) |
| ~150 mL | ≥150 mL (=150 mL in health) |
| Fixed structure | Increases in lung disease |
| Measured by Fowler's method | Measured by Bohr's formula |
Time difference = 0.01 - 0.005 = 0.005 sec Velocity = Distance / Time = 7.5 cm / 0.005 sec = 1500 cm/sec = 15 m/sec
| Type | Subtype | Myelin | Function | Velocity |
|---|---|---|---|---|
| A | Aα | + | Motor (skeletal muscle), proprioception | 70-120 m/s |
| A | Aβ | + | Touch, pressure | 40-70 m/s |
| A | Aγ | + | Motor to intrafusal fibers | 15-30 m/s |
| A | Aδ | + | Pain (fast/sharp), temperature | 6-30 m/s |
| B | - | + | Preganglionic autonomic | 3-15 m/s |
| C | - | - | Pain (slow/dull), postganglionic autonomic | 0.5-2 m/s |
Create a brief information pdf along with questions and answers
mkdir -p /home/daytona/workspace/physiology-pdf && python3 -c " 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, PageBreak from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY doc = SimpleDocTemplate( '/home/daytona/workspace/physiology-pdf/Physiology_Practical_Charts_QA.pdf', pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle('Title', parent=styles['Title'], fontSize=20, textColor=colors.HexColor('#1a3a5c'), spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold') subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'], fontSize=11, textColor=colors.HexColor('#4a6fa5'), spaceAfter=16, alignment=TA_CENTER, fontName='Helvetica-Oblique') section_style = ParagraphStyle('Section', parent=styles['Heading1'], fontSize=14, textColor=colors.white, spaceBefore=14, spaceAfter=6, fontName='Helvetica-Bold', backColor=colors.HexColor('#1a3a5c'), leftIndent=-10, rightIndent=-10, borderPad=6) info_heading = ParagraphStyle('InfoHead', parent=styles['Normal'], fontSize=11, textColor=colors.HexColor('#1a3a5c'), spaceBefore=8, spaceAfter=2, fontName='Helvetica-Bold') body_style = ParagraphStyle('Body', parent=styles['Normal'], fontSize=9.5, textColor=colors.HexColor('#222222'), spaceAfter=4, leading=14, fontName='Helvetica', alignment=TA_JUSTIFY) q_style = ParagraphStyle('Q', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#c0392b'), spaceBefore=8, spaceAfter=2, fontName='Helvetica-Bold', leftIndent=10) a_style = ParagraphStyle('A', parent=styles['Normal'], fontSize=9.5, textColor=colors.HexColor('#1e8449'), spaceAfter=4, leading=13, fontName='Helvetica', leftIndent=20) calc_style = ParagraphStyle('Calc', parent=styles['Normal'], fontSize=9.5, textColor=colors.HexColor('#2c3e50'), spaceAfter=4, leading=13, fontName='Courier', leftIndent=20, backColor=colors.HexColor('#f4f6f7'), borderPad=4) normal = ParagraphStyle('Normal2', parent=styles['Normal'], fontSize=9.5, spaceAfter=3, leading=13, fontName='Helvetica') story = [] # ---- COVER ---- story.append(Spacer(1, 2*cm)) story.append(Paragraph('PHYSIOLOGY PRACTICAL CHARTS', title_style)) story.append(Paragraph('Brief Information, Calculations & Q&A', subtitle_style)) story.append(HRFlowable(width='100%', thickness=2, color=colors.HexColor('#1a3a5c'))) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph('This document covers all major topics from the Physiology Practical Charts including:<br/>Respiratory Physiology • Renal Physiology • Haematology • Cardiac Physiology • Neurophysiology', body_style)) story.append(Spacer(1, 0.5*cm)) # helper def sec(title): story.append(Spacer(1, 0.3*cm)) story.append(HRFlowable(width='100%', thickness=1, color=colors.HexColor('#1a3a5c'))) story.append(Paragraph(title, section_style)) def info(heading, text): story.append(Paragraph(heading, info_heading)) story.append(Paragraph(text, body_style)) def qa(q, a): story.append(Paragraph('Q: ' + q, q_style)) story.append(Paragraph('A: ' + a, a_style)) def calc(text): story.append(Paragraph(text, calc_style)) story.append(Spacer(1, 0.1*cm)) # =================================================================== # 1. DYSPNEIC INDEX # =================================================================== sec('1. DYSPNEIC INDEX') info('Brief Information', 'Dyspneic Index measures the breathing reserve of a person by comparing resting ventilation to ' 'maximum voluntary ventilation (MVV). Normal value is 3-6%. Values above 6% indicate reduced ' 'breathing reserve, as seen in obstructive and restrictive lung diseases.') info('Formula', 'Dyspneic Index (%) = (Resting Pulmonary Ventilation / MVV) x 100') info('Solved Example', 'Resting ventilation = 6 L/min | MVV = 100 L/min') calc('Dyspneic Index = (6 / 100) x 100 = 6% [Normal: 3-6%] -> Normal breathing reserve') qa('Define Dyspneic Index.', 'Dyspneic Index is the ratio of resting pulmonary ventilation to maximum voluntary ventilation (MVV), ' 'expressed as a percentage. It reflects the breathing reserve. Normal = 3-6%.') qa('Define Maximum Voluntary Ventilation (MVV).', 'MVV is the maximum volume of air that can be breathed in and out per minute by voluntary effort. ' 'Normal = 100-170 L/min. Measured by breathing as fast and deeply as possible for 15 seconds ' 'and extrapolating to 1 minute.') qa('What is dyspnea?', 'Dyspnea is the subjective sensation of difficulty in breathing or breathlessness - an unpleasant ' 'awareness of the act of breathing. It occurs when ventilatory demand exceeds ventilatory capacity.') qa('Give examples of obstructive and restrictive lung disorders.', 'Obstructive: Bronchial asthma, COPD (emphysema, chronic bronchitis), bronchiectasis, cystic fibrosis. ' 'Restrictive: Pulmonary fibrosis, silicosis, pleural effusion, kyphoscoliosis, sarcoidosis.') # =================================================================== # 2. RED CELL INDICES (MCH, MCV, MCHC, COLOR INDEX) # =================================================================== sec('2. RED CELL INDICES (MCV, MCH, MCHC, Color Index)') info('Brief Information', 'Red cell indices are calculated values that describe the size and hemoglobin content of red blood cells. ' 'They are essential for classifying anaemia. The main indices are MCV (size), MCH (Hb per cell), ' 'MCHC (Hb concentration per unit volume of RBC), and Color Index.') # Table of formulas formula_data = [ ['Index', 'Formula', 'Normal Value'], ['MCV (fL)', 'PCV(%) / RBC(millions/mm3) x 10', '80-100 fL'], ['MCH (pg)', 'Hb(g/dL) / RBC(millions/mm3) x 10', '27-33 pg'], ['MCHC (g/dL)', 'Hb(g/dL) / PCV(%) x 100', '32-36 g/dL'], ['Color Index', '(Patient Hb% / Normal Hb%) / (Patient RBC% / Normal RBC%)', '0.85-1.15'], ] tbl = Table(formula_data, colWidths=[3.5*cm, 8*cm, 4*cm]) tbl.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf0fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.grey), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('PADDING', (0,0), (-1,-1), 4), ])) story.append(Spacer(1, 0.2*cm)) story.append(tbl) story.append(Spacer(1, 0.2*cm)) info('Solved Example', 'Hb = 14.5 g/dL | RBC = 4.8 million/mm3 | PCV = 42%') calc('MCV = 42 / 4.8 x 10 = 87.5 fL [Normal] -> Normocytic') calc('MCH = 14.5 / 4.8 x 10 = 30.2 pg [Normal] -> Normochromic') calc('MCHC = 14.5 / 42 x 100 = 34.5 g/dL [Normal]') info('Solved Example - Color Index', 'Hb = 16 g/dL (Normal 15), RBC = 6 million (Normal 5.0 million)') calc('Hb% = 16/15 x 100 = 106.7%') calc('RBC% = 6/5 x 100 = 120%') calc('Color Index = 106.7 / 120 = 0.89 [Normal range: 0.85-1.15]') qa('What are the different red cell indices?', 'MCV (Mean Corpuscular Volume) - size; MCH (Mean Corpuscular Haemoglobin) - Hb per cell; ' 'MCHC (Mean Corpuscular Haemoglobin Concentration) - Hb concentration; Color Index - ratio of Hb% to RBC%.') qa('Which blood index is most reliable and why?', 'MCHC is the most reliable because it does not depend on RBC count (which is prone to error). ' 'It is calculated from PCV and Hb, both measurable accurately, and is unaffected by anisocytosis.') qa('Why cannot MCHC exceed 38 g/dL?', 'Haemoglobin is the dominant protein inside RBCs. Beyond ~38 g/dL, Hb would crystallize/precipitate ' 'inside the cell, causing cell destruction. Thus MCHC has a physiological ceiling of 38 g/dL.') qa('Classify anaemia based on blood indices.', 'Normocytic normochromic (normal MCV, MCH, MCHC): aplastic anaemia, acute blood loss. ' 'Microcytic hypochromic (low MCV, low MCH): iron deficiency, thalassaemia. ' 'Macrocytic normochromic (high MCV): B12/folate deficiency (megaloblastic anaemia). ' 'Macrocytic hyperchromic: hereditary spherocytosis (rare).') # =================================================================== # 3. ABSOLUTE EOSINOPHIL COUNT # =================================================================== sec('3. ABSOLUTE EOSINOPHIL COUNT (AEC)') info('Brief Information', 'Absolute Eosinophil Count (AEC) is a more accurate measure of eosinophil status than differential ' 'percentage alone, because it is independent of changes in other cell populations. ' 'Normal AEC = 40-440/mm3. Elevated AEC (>500/mm3) = eosinophilia, commonly seen in allergic ' 'and parasitic conditions.') info('Formula', 'AEC = Total Leukocyte Count (TLC) x Eosinophil% / 100') info('Solved Example', 'TLC = 6000/mm3 | Eosinophils = 15%') calc('AEC = 6000 x 15 / 100 = 900/mm3 [Normal: 40-440/mm3] -> ELEVATED (Eosinophilia)') calc('Clinical context: Patient is asthmatic -> allergic eosinophilia expected.') qa('What is the clinical significance of AEC?', 'AEC is used to diagnose eosinophilia, monitor steroid therapy response (steroids suppress eosinophils), ' 'and assess diurnal variation (lowest at 10 AM with peak cortisol, highest at midnight).') qa('What is the normal range of AEC?', '40-440 cells/mm3 (some sources: 100-400/mm3). Values >500/mm3 = eosinophilia.') qa('List conditions that alter eosinophil count.', 'Eosinophilia (increase): Allergies (asthma, hay fever), parasitic infections, skin diseases (eczema), ' 'drug reactions, Hodgkin\'s lymphoma. ' 'Eosinopenia (decrease): Cushing\'s syndrome, corticosteroid therapy, acute infections/stress.') qa('Enumerate the functions of eosinophils.', '1. Phagocytosis of antigen-antibody complexes. ' '2. Modulate allergic reactions (release histaminase, arylsulfatase to break down mediators). ' '3. Defense against parasites (release major basic protein - MBP, eosinophil cationic protein - ECP). ' '4. Involved in inflammation via leukotriene release.') # =================================================================== # 4. GLOMERULAR FILTRATION (NEFP + GFR) # =================================================================== sec('4. GLOMERULAR FILTRATION - NEFP & GFR') info('Brief Information', 'The glomerular filtration rate (GFR) is the volume of plasma filtered per minute (normal ~125 mL/min). ' 'Filtration occurs due to the Net Effective Filtration Pressure (NEFP), which is the balance of ' 'hydrostatic pressures favouring filtration and osmotic pressure opposing it. ' 'Inulin clearance is the gold-standard measurement of GFR because inulin is only filtered and ' 'neither reabsorbed nor secreted.') info('Formulas', 'NEFP = (Glomerular HP - Bowman\'s capsule HP) - (Plasma oncotic P - Filtrate oncotic P) | ' 'GFR (Inulin Clearance) = U x V / P') info('Solved Example - NEFP', 'Glomerular HP = 60 | Bowman\'s HP = 15 | Plasma oncotic = 30 | Filtrate oncotic = 0 (all in mmHg)') calc('NEFP = (60 - 15) - (30 - 0) = 45 - 30 = +15 mmHg -> Net filtration outward (filtration occurs)') info('Solved Example - GFR', 'Inulin in plasma (P) = 0.24 mg/mL | Inulin in urine (U) = 34 mg/mL | Urine rate (V) = 0.9 mL/min') calc('GFR = U x V / P = 34 x 0.9 / 0.24 = 127.5 mL/min [Normal ~125 mL/min] -> Normal GFR') qa('Define GFR.', 'GFR is the volume of plasma filtered by the glomeruli per unit time. Normal = 125 mL/min (180 L/day). ' 'It is the best clinical indicator of renal function.') qa('Define ultrafiltration.', 'Ultrafiltration is filtration of plasma across the glomerular membrane under hydrostatic pressure. ' 'It filters all small molecules (water, electrolytes, glucose, urea) but retains plasma proteins and cells. ' 'The filtrate is protein-free and cell-free plasma.') qa('What are the factors affecting GFR?', '1. Glomerular capillary hydrostatic pressure (increase -> increase GFR). ' '2. Plasma oncotic pressure (increase -> decrease GFR). ' '3. Bowman\'s capsule pressure (increase -> decrease GFR). ' '4. Filtration coefficient Kf (surface area x permeability). ' '5. Renal blood flow (autoregulated between MAP 80-180 mmHg). ' '6. Afferent/efferent arteriolar tone.') qa('What are the functions of podocytes?', 'Podocytes form the outer layer of the glomerular filtration membrane. Their foot processes form ' 'filtration slits with slit diaphragms (nephrin protein) that act as size and charge barriers. ' 'They repel negatively-charged albumin. Podocyte damage leads to nephrotic syndrome.') qa('Define filtration fraction.', 'Filtration Fraction (FF) = GFR / Renal Plasma Flow. Normal = 125/650 ~ 19%. ' 'It represents the fraction of renal plasma that is filtered per pass through the glomerulus.') qa('What is renal clearance?', 'Renal clearance is the volume of plasma completely cleared of a substance per minute by the kidneys. ' 'Formula: Clearance = U x V / P. Inulin clearance = GFR; PAH clearance = RPF; Glucose clearance = 0.') # =================================================================== # 5. TmG - TUBULAR MAXIMUM FOR GLUCOSE # =================================================================== sec('5. TUBULAR MAXIMUM FOR GLUCOSE (TmG)') info('Brief Information', 'TmG is the maximum rate at which the renal proximal tubule can reabsorb glucose per minute. ' 'Glucose reabsorption occurs mainly via SGLT-2 transporters in the proximal tubule. ' 'When plasma glucose exceeds the renal threshold (~180 mg/dL), glucose spills into urine (glycosuria). ' 'Normal TmG = 320 mg/min (males), 260 mg/min (females).') info('Formula', 'TmG = Filtered glucose - Excreted glucose = (P x GFR) - (U x V)') info('Solved Example', 'Plasma glucose = 300 mg/dL = 3 mg/mL | GFR = 100 mL/min | Urine glucose = 10 mg/mL | Urine flow = 1 mL/min') calc('Filtered glucose = 3 mg/mL x 100 mL/min = 300 mg/min') calc('Excreted glucose = 10 mg/mL x 1 mL/min = 10 mg/min') calc('TmG = 300 - 10 = 290 mg/min [Normal: 260-320 mg/min] -> Normal TmG') qa('Define TmG.', 'TmG is the maximum rate of glucose reabsorption by the renal tubules per minute. ' 'It reflects the transport capacity of SGLT-2 carriers. Normal = 320 mg/min (male), 260 mg/min (female).') qa('What is the significance of TmG in diabetes mellitus?', 'In uncontrolled diabetes, plasma glucose greatly exceeds the renal threshold, so filtered glucose load ' 'surpasses TmG. Excess glucose spills into urine (glycosuria), causing osmotic diuresis, polyuria, and polydipsia.') qa('What is renal threshold splay?', 'Splay is the spread/scatter in the onset of glycosuria around the theoretical renal threshold, ' 'due to heterogeneity in TmG among nephrons. Some nephrons excrete glucose before others, ' 'so glycosuria begins at a lower plasma glucose than the theoretical threshold.') qa('Difference between renal threshold and tubular maximum.', 'Renal threshold: plasma concentration at which a substance first appears in urine (~180 mg/dL for glucose). ' 'Tubular maximum (Tm): maximum rate of tubular reabsorption/secretion per minute (~320 mg/min for glucose). ' 'Threshold depends on plasma concentration; Tm depends on number and capacity of tubular carriers.') # =================================================================== # 6. LUNG COMPLIANCE # =================================================================== sec('6. LUNG COMPLIANCE') info('Brief Information', 'Lung compliance is the distensibility (ease of expansion) of the lungs. It is influenced by elastic ' 'tissue, surface tension (surfactant), and lung volume. Normal compliance = 0.2 L/cm H2O. ' 'Decreased in fibrosis/RDS; increased in emphysema.') info('Formula', 'Compliance (C) = Change in Volume (DeltaV) / Change in Pressure (DeltaP)') info('Solved Example', 'Change in volume = 1 L | Pressure change = 5 cm H2O') calc('C = 1000 mL / 5 cm H2O = 200 mL/cm H2O = 0.2 L/cm H2O [Normal] -> Normal lung compliance') qa('Define lung compliance.', 'Lung compliance is the change in lung volume per unit change in transmural (transpulmonary) pressure. ' 'It measures lung distensibility. Normal = 0.2 L/cm H2O.') qa('State conditions in which lungs are more compliant.', 'Emphysema (elastic tissue destruction), old age (loss of elastin), and during surfactant therapy recovery. ' 'Note: increased compliance in emphysema comes at the cost of reduced elastic recoil.') qa('What are the types of lung compliance?', 'Static compliance: measured at zero airflow; reflects true elastic properties. ' 'Dynamic compliance: measured during breathing; influenced by airway resistance too. ' 'Specific compliance: compliance corrected for lung volume (C/FRC) for between-patient comparison.') qa('What factors influence lung compliance?', '1. Elastic tissue (elastin/collagen): reduced in fibrosis -> decreased compliance. ' '2. Surfactant: reduces surface tension; absence (RDS) -> decreased compliance. ' '3. Lung volume: compliance highest at mid-range volumes. ' '4. Pulmonary oedema/congestion: reduces compliance. ' '5. Age: increases with age (elastin loss). ' '6. Posture: slightly reduced in supine position.') # =================================================================== # 7. LUNG VOLUMES & CAPACITIES (RV & FRC) # =================================================================== sec('7. LUNG VOLUMES & CAPACITIES - RV and FRC') info('Brief Information', 'Lung volumes measured by spirometry: Tidal Volume (TV), Inspiratory Reserve Volume (IRV), ' 'Expiratory Reserve Volume (ERV). Capacities are sums of volumes. ' 'RV and FRC cannot be measured by spirometry alone - require helium dilution, N2 washout, ' 'or body plethysmography.') vol_data = [ ['Volume/Capacity', 'Description', 'Normal (Male)'], ['TV', 'Air breathed in/out in one quiet breath', '500 mL'], ['IRV', 'Extra air inspired after normal inspiration', '3000 mL'], ['ERV', 'Extra air expired after normal expiration', '1100 mL'], ['RV', 'Air remaining after maximum expiration', '1200 mL'], ['VC', 'IRV + TV + ERV', '4600 mL'], ['TLC', 'VC + RV', '5800 mL'], ['FRC', 'ERV + RV (end-expiratory resting lung volume)', '2300 mL'], ['IC', 'TV + IRV', '3500 mL'], ] tbl2 = Table(vol_data, colWidths=[3*cm, 8*cm, 4.5*cm]) tbl2.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf0fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.grey), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('PADDING', (0,0), (-1,-1), 4), ])) story.append(Spacer(1, 0.2*cm)) story.append(tbl2) story.append(Spacer(1, 0.2*cm)) info('Solved Example', 'IRV = 3 L | ERV = 1.8 L | TV = 0.5 L | TLC = 6 L') calc('VC = IRV + TV + ERV = 3 + 0.5 + 1.8 = 5.3 L') calc('RV = TLC - VC = 6 - 5.3 = 0.7 L [Normal ~1.2 L]') calc('FRC = ERV + RV = 1.8 + 0.7 = 2.5 L [Normal ~2.3 L]') qa('Define RV and state its importance.', 'Residual Volume (RV): volume of air remaining in lungs after maximum forced expiration. Normal ~1.2 L. ' 'Importance: prevents alveolar collapse between breaths; ensures continuous gas exchange; ' 'dilutes inspired air to prevent abrupt changes in alveolar gas composition.') qa('Define FRC.', 'Functional Residual Capacity (FRC) = ERV + RV. Volume of air in lungs at end of normal quiet expiration. ' 'Normal ~2.3 L. It is the resting volume of the lung - the point where elastic recoil inward equals ' 'chest wall recoil outward.') qa('How are RV and FRC estimated?', '1. Helium dilution (closed circuit): He is diluted by FRC volume; final concentration calculates FRC. ' '2. Nitrogen washout: patient breathes 100% O2; N2 washed out and collected; volume calculated from N2. ' '3. Body plethysmography (most accurate): uses Boyle\'s Law to measure total thoracic gas volume. ' 'RV = FRC - ERV once FRC is known.') # =================================================================== # 8. PHYSIOLOGICAL DEAD SPACE # =================================================================== sec('8. PHYSIOLOGICAL DEAD SPACE') info('Brief Information', 'Dead space is ventilated air that does not participate in gas exchange. ' 'Anatomical dead space (~150 mL) = conducting airways. ' 'Alveolar dead space = ventilated but non-perfused alveoli. ' 'Physiological dead space = anatomical + alveolar dead space. ' 'In health, physiological = anatomical (alveolar dead space ~0). ' 'Bohr\'s formula calculates physiological dead space using PCO2 values.') info('Formula (Bohr\'s equation)', 'VD/VT = (PACO2 - PECO2) / PACO2 then VD = VD/VT x Tidal Volume') info('Solved Example', 'TV = 450 mL | Alveolar PCO2 = 40 mmHg | Expired air PCO2 = 26 mmHg') calc('VD/VT = (40 - 26) / 40 = 14/40 = 0.35') calc('VD = 0.35 x 450 = 157.5 mL [Normal anatomical dead space ~150 mL] -> ~Normal') qa('Define dead space.', 'Dead space is the portion of tidal volume that does not participate in gas exchange - wasted ventilation. ' 'It includes the conducting airways (anatomical) and non-perfused alveoli (alveolar dead space).') qa('What is the normal anatomical dead space?', '~150 mL in adults. Approximately 2 mL/kg body weight or numerically equal to body weight in pounds.') qa('How does physiological dead space differ from anatomical dead space?', 'Anatomical dead space: fixed conducting airways (nose to terminal bronchioles), ~150 mL, measured by Fowler\'s method. ' 'Physiological dead space: includes alveolar dead space; equals anatomical in health but increases in lung disease ' '(e.g., pulmonary embolism); measured by Bohr\'s formula.') qa('What factors increase dead space?', '1. Pulmonary embolism (alveoli ventilated but not perfused). ' '2. Positive pressure/mechanical ventilation. ' '3. Emphysema (capillary destruction). ' '4. Old age. ' '5. Upright posture (lung apex underperfused). ' '6. Large tidal volumes on mechanical ventilation.') # =================================================================== # 9. CARDIAC OUTPUT (FICK'S PRINCIPLE) # =================================================================== sec('9. CARDIAC OUTPUT BY FICK\'S PRINCIPLE') info('Brief Information', 'Fick\'s Principle states that the amount of a substance consumed by an organ per unit time equals ' 'the blood flow to that organ multiplied by the arteriovenous concentration difference of that substance. ' 'Applied to the lungs, it calculates cardiac output using oxygen consumption and arteriovenous O2 difference. ' 'Normal cardiac output = 5 L/min; stroke volume = 70-80 mL/beat.') info('Formulas', 'CO = O2 consumption / (Arterial O2 - Venous O2) | SV = CO / Heart Rate | Cardiac Index = CO / BSA') info('Solved Example', 'O2 in mixed venous blood = 14.8 mL/100mL | O2 in arterial blood = 19.5 mL/100mL | HR = 70/min | O2 consumption = 245 mL/min') calc('A-V O2 difference = 19.5 - 14.8 = 4.7 mL/100mL = 47 mL/L') calc('Cardiac Output = 245 / 47 = 5.21 L/min [Normal ~5 L/min]') calc('Stroke Volume = 5210 / 70 = 74.4 mL/beat [Normal 70-80 mL]') info('Solved Example 2', 'O2 in pulmonary artery = 14 mL/dL | O2 in brachial artery = 19 mL/dL | O2 consumption = 250 mL/min') calc('A-V difference = 19 - 14 = 5 mL/dL = 50 mL/L') calc('CO = 250 / 50 = 5.0 L/min [Normal]') qa('State Fick\'s principle.', 'Fick\'s principle states that the amount of a substance taken up by an organ per unit time equals the ' 'blood flow to that organ multiplied by the arteriovenous difference of that substance. ' 'CO = O2 consumption / (Arterial O2 content - Venous O2 content).') qa('Define stroke volume and cardiac output.', 'Stroke Volume (SV): volume of blood ejected by one ventricle per beat. Normal = 70-80 mL. ' 'Cardiac Output (CO): volume pumped by one ventricle per minute. CO = SV x HR. Normal = 5 L/min.') qa('Name factors affecting cardiac output.', 'Heart rate; Stroke volume (determined by preload via Frank-Starling law, afterload, and myocardial contractility); ' 'Venous return; Blood volume; Autonomic nervous system (sympathetic increases, parasympathetic decreases CO).') qa('Name methods of measurement of cardiac output.', '1. Fick\'s principle (gold standard). ' '2. Indicator-dilution (dye dilution - indocyanine green). ' '3. Thermodilution (cold saline via Swan-Ganz catheter). ' '4. Echocardiography (Doppler). ' '5. Impedance cardiography. ' '6. Pulse contour analysis.') qa('Define cardiac index.', 'Cardiac Index = CO / Body Surface Area (BSA). Normal = 3.0-3.5 L/min/m2. ' 'It corrects for body size and allows meaningful comparison between individuals of different sizes.') # =================================================================== # 10. VELOCITY OF NERVE IMPULSE # =================================================================== sec('10. VELOCITY OF NERVE IMPULSE') info('Brief Information', 'Nerve conduction velocity is calculated from the latent period difference when stimulating at two ' 'different points along a nerve and the distance between those points. ' 'Myelinated fibres conduct fastest (70-120 m/s) via saltatory conduction at nodes of Ranvier. ' 'Unmyelinated C fibres are slowest (0.5-2 m/s).') info('Formula', 'Velocity = Distance between stimulation points / Difference in latent periods') info('Solved Example', 'Latent period at spinal end = 0.01 s | Latent period at muscle end = 0.005 s | Distance = 7.5 cm') calc('Time difference = 0.01 - 0.005 = 0.005 sec') calc('Velocity = 7.5 cm / 0.005 sec = 1500 cm/sec = 15 m/sec') # Table of nerve fiber classification nf_data = [ ['Type', 'Myelin', 'Function', 'Velocity'], ['A-alpha', 'Yes', 'Skeletal motor, proprioception', '70-120 m/s'], ['A-beta', 'Yes', 'Touch, pressure', '40-70 m/s'], ['A-gamma', 'Yes', 'Intrafusal muscle (spindle)', '15-30 m/s'], ['A-delta', 'Yes', 'Fast pain, cold temperature', '6-30 m/s'], ['B', 'Yes', 'Preganglionic autonomic', '3-15 m/s'], ['C', 'No', 'Slow pain, heat, postganglionic', '0.5-2 m/s'], ] tbl3 = Table(nf_data, colWidths=[2.5*cm, 2.5*cm, 7*cm, 3.5*cm]) tbl3.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf0fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.grey), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('PADDING', (0,0), (-1,-1), 4), ])) story.append(Spacer(1, 0.2*cm)) story.append(tbl3) story.append(Spacer(1, 0.2*cm)) qa('What factors affect velocity of nerve conduction?', '1. Fibre diameter: larger diameter = faster conduction (lower internal resistance). ' '2. Myelination: myelinated fibres faster (saltatory conduction) than unmyelinated. ' '3. Temperature: higher temperature = faster velocity (cooling slows conduction). ' '4. Age: lower in newborns; reaches adult values by age 3-5 years.') qa('What is a nerve impulse?', 'A nerve impulse (action potential) is a self-propagating wave of electrical depolarization along the ' 'nerve membrane. It involves rapid Na+ influx (depolarization) followed by K+ efflux (repolarization), ' 'restoring resting membrane potential of -70 mV. It obeys the all-or-none law.') qa('How are nerve fibres classified?', 'By Erlanger-Gasser classification: Type A (myelinated somatic: alpha, beta, gamma, delta), ' 'Type B (myelinated preganglionic autonomic), Type C (unmyelinated - pain, postganglionic autonomic). ' 'Largest diameter (A-alpha) = fastest; smallest (C fibres) = slowest.') # =================================================================== # 11. PROPERTIES OF CARDIAC MUSCLE # =================================================================== sec('11. PROPERTIES OF CARDIAC MUSCLE (Extrasystole & Refractory Periods)') info('Brief Information', 'Cardiac muscle has unique properties: automaticity, rhythmicity, conductivity, contractility, ' 'and a long absolute refractory period (250 msec) that prevents tetany. During the relative refractory ' 'period (50 msec), a stronger stimulus can trigger an extrasystole (premature beat).') qa('What is extrasystole? Why is it followed by a compensatory pause?', 'Extrasystole: a premature contraction triggered when the ventricle is stimulated during the relative ' 'refractory period. The next normal SA node impulse arrives during the refractory period of the extrasystole ' 'and fails to evoke a response, causing a longer-than-normal pause = compensatory pause.') qa('Define absolute and relative refractory periods.', 'Absolute Refractory Period (ARP): period during which NO stimulus (however strong) can re-excite the tissue. ' 'ARP of cardiac muscle = 250 msec - prevents tetany. ' 'Relative Refractory Period (RRP): period during which a stronger-than-normal stimulus CAN re-excite. ' 'RRP = 50 msec.') qa('What are factors predisposing to extrasystole?', '1. Excess coffee, alcohol, or tobacco. ' '2. Anxiety/emotional stress. ' '3. Hyperthyroidism. ' '4. Hypoxia. ' '5. Electrolyte imbalance (especially hypokalemia).') qa('How many extrasystoles/minute are normal? When are they significant?', '2-4 extrasystoles/minute are normal. They become clinically significant when >6/minute ' 'or when they occur in a diseased heart (e.g., myocardial infarction).') # =================================================================== # QUICK REFERENCE TABLE # =================================================================== story.append(PageBreak()) story.append(Paragraph('QUICK REFERENCE - Normal Values', title_style)) story.append(Spacer(1, 0.3*cm)) ref_data = [ ['Parameter', 'Normal Value', 'Unit'], ['Dyspneic Index', '3-6', '%'], ['MVV', '100-170', 'L/min'], ['MCV', '80-100', 'fL'], ['MCH', '27-33', 'pg'], ['MCHC', '32-36', 'g/dL'], ['Color Index', '0.85-1.15', '-'], ['AEC', '40-440', 'cells/mm3'], ['GFR (Inulin)', '~125', 'mL/min'], ['NEFP (Glomerulus)', '~15', 'mmHg'], ['Filtration Fraction', '~19', '%'], ['TmG (males)', '~320', 'mg/min'], ['Renal threshold (glucose)', '~180', 'mg/dL'], ['Lung Compliance (static)', '0.2', 'L/cm H2O'], ['Tidal Volume', '500', 'mL'], ['RV', '~1200', 'mL'], ['FRC', '~2300', 'mL'], ['TLC', '~5800', 'mL'], ['Anatomical Dead Space', '~150', 'mL'], ['Cardiac Output', '~5', 'L/min'], ['Stroke Volume', '70-80', 'mL/beat'], ['Cardiac Index', '3.0-3.5', 'L/min/m2'], ['ARP (cardiac muscle)', '250', 'msec'], ['RRP (cardiac muscle)', '50', 'msec'], ['Normal extrasystoles', '2-4', '/minute'], ['Nerve conduction (A-alpha)', '70-120', 'm/s'], ['Nerve conduction (C fibres)', '0.5-2', 'm/s'], ] tbl_ref = Table(ref_data, colWidths=[8*cm, 4*cm, 4*cm]) tbl_ref.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a3a5c')), ('TEXTCOLOR', (0,0), (-1,0), colors.white), ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eaf0fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.grey), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('ALIGN', (1,0), (-1,-1), 'CENTER'), ('PADDING', (0,0), (-1,-1), 4), ])) story.append(tbl_ref) story.append(Spacer(1, 0.5*cm)) story.append(HRFlowable(width='100%', thickness=1, color=colors.HexColor('#1a3a5c'))) story.append(Paragraph('End of Document - Physiology Practical Charts Q&A', subtitle_style)) doc.build(story) print('PDF created successfully!') "
ls -lh /home/daytona/workspace/physiology-pdf/
Physiology Practical Charts QA
PDF Document · PDF
| Section | Topic |
|---|---|
| 1 | Dyspneic Index |
| 2 | Red Cell Indices - MCV, MCH, MCHC, Color Index |
| 3 | Absolute Eosinophil Count |
| 4 | Glomerular Filtration - NEFP & GFR |
| 5 | Tubular Maximum for Glucose (TmG) |
| 6 | Lung Compliance |
| 7 | Lung Volumes & Capacities (RV & FRC) |
| 8 | Physiological Dead Space |
| 9 | Cardiac Output by Fick's Principle |
| 10 | Velocity of Nerve Impulse |
| 11 | Properties of Cardiac Muscle (Extrasystole & Refractory Periods) |
| + | Quick Reference Table of all normal values |