I am doing a case presentation on respiratory system as bedside , Make a framework of clinical case proforma and summary . Find me 10 common good viva questions and Find me 10 extraordinary tough viva questions with answers and explainations use figures and diagrams wherever necessary. All the criterias in respiratory system and all clinical signs
All of them in seperate pdf
~/
respiratory physical examination
Merck Manual physical examination lungs tracheal deviation percussion breath sounds
clinical diagram percussion and auscultation chest respiratory examination
respiratory examination clinical signs tactile vocal fremitus pleural effusion consolidation professional manual
~/respiratory-bedside/src_create_pdfs.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, KeepTogether, Flowable
from reportlab.pdfbase.pdfmetrics import stringWidth
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.colors import HexColor
from reportlab.lib import utils
from reportlab.platypus import HRFlowable
from reportlab.lib.styles import ListStyle
import os
OUT='/tmp/workspace/respiratory-bedside/output'
os.makedirs(OUT,exist_ok=True)
NAVY=HexColor('#12324A'); BLUE=HexColor('#246B8E'); TEAL=HexColor('#1B8A8F'); PALE=HexColor('#EAF4F6'); GREY=HexColor('#F4F6F7'); RED=HexColor('#9C2D2D'); GREEN=HexColor('#24734B')
styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='TitleR',parent=styles['Title'],fontName='Helvetica-Bold',fontSize=22,leading=27,textColor=NAVY,spaceAfter=8))
styles.add(ParagraphStyle(name='SubR',parent=styles['Normal'],fontSize=10.5,leading=14,textColor=HexColor('#40515C'),spaceAfter=14))
styles.add(ParagraphStyle(name='H1R',parent=styles['Heading1'],fontName='Helvetica-Bold',fontSize=15,leading=19,textColor=NAVY,spaceBefore=12,spaceAfter=7))
styles.add(ParagraphStyle(name='H2R',parent=styles['Heading2'],fontName='Helvetica-Bold',fontSize=11.5,leading=14,textColor=BLUE,spaceBefore=9,spaceAfter=5))
styles.add(ParagraphStyle(name='BodyR',parent=styles['BodyText'],fontSize=9.1,leading=12.2,spaceAfter=5))
styles.add(ParagraphStyle(name='SmallR',parent=styles['BodyText'],fontSize=7.8,leading=9.6,spaceAfter=3))
styles.add(ParagraphStyle(name='CalloutR',parent=styles['BodyText'],fontSize=9,leading=12,textColor=NAVY,leftIndent=8,rightIndent=8,spaceBefore=5,spaceAfter=7))
styles.add(ParagraphStyle(name='Q',parent=styles['BodyText'],fontName='Helvetica-Bold',fontSize=9.5,leading=12,textColor=NAVY,spaceBefore=7,spaceAfter=2))
def P(x,style='BodyR'): return Paragraph(x,styles[style])
def bullets(items): return [P('• '+x) for x in items]
def table(data,widths,small=False,header=True):
d=[[P(str(x),'SmallR' if small else 'BodyR') for x in row] for row in data]
t=Table(d,colWidths=widths,repeatRows=1 if header else 0,hAlign='LEFT')
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),NAVY),('TEXTCOLOR',(0,0),(-1,0),colors.white),('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),('VALIGN',(0,0),(-1,-1),'TOP'),('GRID',(0,0),(-1,-1),0.25,HexColor('#B8C5CC')),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,GREY]),('LEFTPADDING',(0,0),(-1,-1),5),('RIGHTPADDING',(0,0),(-1,-1),5),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)]))
return t
def header_footer(canvas,doc):
canvas.saveState(); w,h=A4
canvas.setStrokeColor(TEAL); canvas.setLineWidth(1); canvas.line(1.5*cm,h-1.25*cm,w-1.5*cm,h-1.25*cm)
canvas.setFont('Helvetica',7.5); canvas.setFillColor(HexColor('#5A6870'))
canvas.drawString(1.5*cm,0.8*cm,'Respiratory Bedside Case Presentation')
canvas.drawRightString(w-1.5*cm,0.8*cm,f'Page {doc.page}')
canvas.restoreState()
def doc(name,title,subtitle):
d=SimpleDocTemplate(os.path.join(OUT,name),pagesize=A4,rightMargin=1.35*cm,leftMargin=1.35*cm,topMargin=1.6*cm,bottomMargin=1.35*cm,title=title,author='Orris')
story=[P(title,'TitleR'),P(subtitle,'SubR'),HRFlowable(width='100%',thickness=1,color=TEAL,spaceAfter=7)]
return d,story
def build(d,story): d.build(story,onFirstPage=header_footer,onLaterPages=header_footer)
# 1 PROFORMA
d,s=doc('01_Respiratory_Clinical_Case_Proforma_and_Summary.pdf','Respiratory Clinical Case Proforma and Summary','Bedside template for adult medicine examinations. Adapt to the patient and local examination format.')
s += [P('A. Opening the bedside encounter','H1R'),P('<b>Prepare:</b> introduce yourself, confirm identity, explain the examination, obtain consent, ask about pain, position the patient at 45 degrees where possible, expose the chest appropriately, and compare symmetrical areas. Inspect the hands and face before asking the patient to sit forward for the posterior chest.'),P('<b>Safety:</b> record urgent abnormalities first: inability to speak full sentences, severe work of breathing, cyanosis, altered consciousness, hypotension, silent chest, or suspected tension pneumothorax. Escalate care rather than continuing a routine examination.','CalloutR')]
s += [P('B. Identification and presenting complaints','H1R')]
s += [table([['Field','Record'],['Identification','Name, age, sex, occupation, address, date and time of assessment.'],['Chief complaints','Cough, sputum, breathlessness, wheeze, chest pain, fever, hemoptysis, weight loss - each with duration.'],['Baseline status','Exercise tolerance, usual walking distance, stairs, home oxygen or inhalers, previous spirometry / imaging.']], [3.0*cm,14.5*cm])]
s += [P('C. History of present illness','H1R'),P('<b>Chronology:</b> onset, progression, triggers, severity, prior episodes, treatment already received, and response. Ask the patient to describe breathlessness in their own words, then grade functional limitation. Use an mMRC grade if chronic dyspnea is present.'),table([['Symptom','Targeted questions and diagnostic pointers'],['Cough','Acute or chronic; dry or productive; nocturnal, positional, postural, seasonal, or exertional; relation to ACE inhibitor, smoking, reflux, postnasal drip.'],['Sputum','Amount, color, viscosity, odor, blood streaks; daily volume; worse on waking or with posture. Purulent sputum suggests infection but does not establish it.'],['Dyspnea','At rest or exertion; onset; orthopnea, paroxysmal nocturnal dyspnea; wheeze, chest tightness; mMRC grade. Consider respiratory, cardiac, anemia, metabolic, and neuromuscular causes.'],['Chest pain','Pleuritic versus central pressure; sudden onset; radiation; cough-related; trauma. Sudden pleuritic pain with dyspnea raises pneumothorax or pulmonary embolism.'],['Hemoptysis','Amount and frequency; bright red / mixed sputum; tuberculosis contact, bronchiectasis, cancer risk, anticoagulants. First confirm it is not hematemesis or epistaxis.'],['Fever / infection','Fever, chills, sore throat, sick contacts, aspiration, recent viral illness, travel.'],['Systemic features','Weight loss, anorexia, fatigue, night sweats, hoarseness, dysphagia, bone pain, headache, leg swelling, rash, joint pain.']], [3*cm,14.5*cm],small=True)]
s += [P('D. Focused background history','H1R'),table([['Domain','Ask and document'],['Past illnesses','Asthma, COPD, tuberculosis, pneumonia, bronchiectasis, ILD, cancer, cardiac disease, thromboembolism, immunosuppression, HIV risk where appropriate.'],['Drugs and allergies','Inhalers with technique and adherence; steroids, antibiotics, anticoagulants, ACE inhibitors, amiodarone, methotrexate, chemotherapy; oxygen and NIV history; allergies.'],['Exposure history','Smoking: type, quantity, pack-years, quit date; vaping; biomass fuel; occupational dust/fumes/asbestos/silica; birds, mold, hot tubs; travel; TB and COVID exposure.'],['Personal history','Sleep, appetite, weight, alcohol/recreational drugs (including inhalation), vaccination, functional status.'],['Family history','Asthma/atopy, alpha-1 antitrypsin deficiency, cystic fibrosis, ILD, malignancy.'],['Review of systems','Cardiac: edema, syncope, palpitations. ENT: sinus disease. GI: reflux/aspiration. Rheumatologic: Raynaud, sicca, arthritis, myositis. Neurologic: weakness, bulbar symptoms.']], [3*cm,14.5*cm],small=True)]
s += [P('E. Examination proforma','H1R'),P('Record both the <b>finding</b> and whether it is symmetrical. Do not infer a diagnosis from one sign alone.'),table([['Stage','Checklist'],['General survey and vitals','Comfort at rest; speech; respiratory rate and pattern; pulse; BP; temperature; SpO2 and oxygen device/flow; body habitus; hydration; mental state.'],['Hands and arms','Nicotine staining; clubbing; cyanosis; tremor (beta-agonist); flap (CO2 retention); peripheral edema; pulse and capillary refill.'],['Face and neck','Central cyanosis; conjunctival pallor; Horner syndrome; facial plethora; nasal flaring; JVP; cervical/supraclavicular lymph nodes; tracheal position; cricosternal distance.'],['Chest inspection','Scars, deformity, AP diameter, kyphoscoliosis, asymmetry, intercostal recession, accessory muscle use, paradoxical movement, visible veins, chest expansion.'],['Palpation','Trachea; apex beat; chest expansion at upper and lower zones; tactile vocal fremitus; tenderness; subcutaneous emphysema.'],['Percussion','Compare side to side: supraclavicular, anterior, axillary, infrascapular and interscapular regions. Identify resonance, dullness, stony dullness or hyperresonance. Assess diaphragmatic excursion if indicated.'],['Auscultation','Breath-sound intensity and character; inspiration/expiration ratio; added sounds; vocal resonance; whispering pectoriloquy; egophony. Listen anteriorly, laterally, posteriorly.'],['Other systems','Cardiovascular examination, abdomen for hepatosplenomegaly/ascites, legs for edema/DVT signs, joints/skin/neurology when indicated.']], [3.4*cm,14.1*cm],small=True)]
s += [P('F. One-minute case-summary framework','H1R'),P('<b>Template:</b> “This is a [age]-year-old [sex], [smoking/exposure status], with [duration] of [dominant symptoms]. The illness is associated with [key positives] and without [key negatives]. Relevant background includes [comorbidities, drugs, exposures]. On examination the patient is [stable/unwell], with [vital-sign and general findings]. Respiratory examination localizes the process to [side/zone] and demonstrates [key inspection, palpation, percussion, auscultation signs]. These findings are most consistent with [syndrome / working diagnosis], with [two important differentials]. I would assess severity and obtain [immediate investigations].”')]
s += [P('G. Example problem representation','H1R'),P('“A 62-year-old 40 pack-year former smoker with 3 months of progressive exertional dyspnea, productive cough, and weight loss has reduced right lower chest expansion, stony dullness, reduced tactile fremitus and absent breath sounds at the right base. This is a right-sided pleural-effusion syndrome, requiring imaging and diagnostic pleural fluid evaluation, with malignant and parapneumonic etiologies among key considerations.”','CalloutR')]
s += [P('H. Closing the station','H1R')] + bullets(['Thank the patient, help them dress and ensure comfort.','State the most likely clinical syndrome before naming a disease if evidence is incomplete.','Mention focused next tests: pulse oximetry/ABG if unwell, chest radiograph, ultrasound for pleural fluid, ECG as indicated, CBC and inflammatory markers, sputum studies, spirometry only when stable and appropriate, CT when indicated.','Do not perform invasive procedures from bedside signs alone.'])
s += [P('References','H1R'),P('Murray & Nadel’s Textbook of Respiratory Medicine, “Normal Lung Sounds”; The Washington Manual of Medical Therapeutics, “Physical Examination”; MSD Manual Professional Edition, “Evaluation of the Patient With Pulmonary Issues” (accessed September 2026).')]
build(d,s)
# 2 SIGNS
d,s=doc('02_Respiratory_Clinical_Signs_and_Differential_Diagnosis.pdf','Respiratory Clinical Signs: Interpretation and Differentials','A bedside guide to inspection, palpation, percussion, auscultation, and syndrome recognition.')
s += [P('1. Examination sequence','H1R'),P('Use the sequence <b>inspect - palpate - percuss - auscultate</b>, comparing like with like, side to side. Posterior lower zones are important for basal disease and pleural fluid.'),table([['Observe','Meaning / examples'],['Increased respiratory rate or inability to complete sentences','Respiratory distress, hypoxemia, metabolic acidosis, severe infection, pulmonary edema, obstruction. Interpret with vitals and context.'],['Accessory muscle use, recession, tripod posture, pursed-lip breathing','Increased work of breathing; common in acute obstruction and severe COPD.'],['Central cyanosis','Potentially significant hypoxemia or dyshemoglobinemia; verify with oximetry / ABG and assess urgently.'],['Clubbing','Think lung cancer, bronchiectasis, cystic fibrosis, idiopathic pulmonary fibrosis, chronic suppurative lung disease. Clubbing is not typical of uncomplicated COPD or asthma.'],['Barrel-shaped chest','Hyperinflation, usually advanced emphysema; reduced diaphragmatic efficiency.'],['Unilateral reduced movement','Effusion, pneumothorax, collapse, consolidation, pain, fibrosis, diaphragm weakness.']], [5.2*cm,12.3*cm],small=True)]
s += [P('2. A practical sound-transmission diagram','H1R'),P('<b>Voice vibration from bronchi to chest wall</b>'),P('Normal aerated lung attenuates low-frequency sound. A patent bronchus surrounded by dense airless lung transmits sound better. Pleural fluid or pleural air between lung and chest wall usually blocks transmission.'),table([['Condition','Airway','Intervening medium','Fremitus / vocal resonance'],['Consolidation','Open','Dense, airless alveoli','Increased'],['Pleural effusion','Often open','Fluid in pleural space','Reduced or absent over fluid'],['Pneumothorax','Often open','Air in pleural space','Reduced or absent'],['Obstructive collapse','Blocked','Airless lung distal to obstruction','Usually reduced'],['Compression collapse above effusion','Open','Compressed, airless lung','May increase just above fluid level']], [3.2*cm,3.3*cm,5.1*cm,5.9*cm],small=True)]
s += [P('3. Percussion: interpret the note','H1R'),table([['Percussion note','Common implication','Important caveat'],['Dull','Consolidation, collapse, pleural thickening, mass, small/moderate effusion','Dullness alone cannot distinguish fluid from solid lung.'],['Stony dull','Large pleural effusion','Classical but not perfectly sensitive.'],['Hyperresonant / tympanitic','Pneumothorax, hyperinflation, giant bulla','Compare sides; technical factors and body habitus matter.'],['Reduced diaphragmatic excursion','Hyperinflation, pleural fluid, diaphragmatic paralysis, basal fibrosis','Assess bilaterally and in context.']], [3.5*cm,7.2*cm,6.8*cm],small=True)]
s += [P('4. Auscultation and voice signs','H1R'),table([['Sign','Description','Usual associations'],['Bronchial breathing','Harsh, higher pitch; expiration as loud/longer than inspiration with a pause','Consolidation with patent bronchus; may occur above an effusion or over cavity with patent bronchus.'],['Reduced breath sounds','Quiet / absent airflow sound','Pleural effusion, pneumothorax, severe obstruction, hyperinflation, obesity, shallow breathing, endobronchial obstruction.'],['Fine crackles','Brief, discontinuous, high-pitched inspiratory sounds, often late','Fibrosis, pulmonary edema, pneumonia; “Velcro” basal crackles support ILD.'],['Coarse crackles','Lower-pitched, longer, may change after cough','Secretions in large airways, bronchiectasis, pneumonia.'],['Wheeze','Continuous musical expiratory sound','Asthma, COPD; focal monophonic wheeze suggests localized obstruction.'],['Stridor','Harsh, predominantly inspiratory sound loudest over neck','Upper-airway obstruction - emergency if acute/severe.'],['Pleural rub','Superficial grating sound, often painful, persists despite cough','Pleuritis, pulmonary infarction, pneumonia, empyema.'],['Egophony','Patient says “E”; examiner hears nasal “A”','Consolidation or upper border of pleural effusion.'],['Whispering pectoriloquy','Whispered words unusually distinct','Consolidation with patent bronchus.']], [3.6*cm,6.3*cm,7.6*cm],small=True)]
s += [P('5. Tracheal and mediastinal shift','H1R'),P('<b>Rule of volume:</b> processes that pull reduce ipsilateral volume; processes that push increase ipsilateral pleural volume/pressure. A centered trachea does not exclude disease.'),table([['Shift toward affected side','Shift away from affected side'],['Lobar / whole-lung collapse from obstruction; pulmonary fibrosis; post-pneumonectomy.','Large pleural effusion; tension pneumothorax; very large mass.']], [8.7*cm,8.7*cm])]
s += [P('6. Syndrome comparison table','H1R'),table([['Finding','Consolidation','Pleural effusion','Pneumothorax','Obstructive collapse','Fibrosis / volume loss','COPD / hyperinflation'],['Chest movement','Reduced','Reduced','Reduced','Reduced','Reduced','Often globally reduced'],['Trachea','Usually central','Away if massive','Away if tension','Toward if major','Toward','Usually central'],['Fremitus','Increased','Reduced','Reduced','Reduced','Reduced','Often reduced'],['Percussion','Dull','Stony dull','Hyperresonant','Dull','Dull','Hyperresonant'],['Breath sounds','Bronchial / increased transmission','Reduced or absent over fluid','Reduced or absent','Reduced / absent','Reduced, may be bronchial locally','Quiet; prolonged expiration'],['Vocal resonance','Increased','Reduced; may increase above level','Reduced','Reduced','Variable','Reduced'],['Added sounds','Fine crackles possible','Rub above early stage possible','Usually none','Usually none','Fine late crackles','Wheeze / quiet chest']], [2.65*cm,2.1*cm,2.1*cm,2.1*cm,2.1*cm,2.1*cm,2.1*cm],small=True)]
s += [P('7. Red flags at bedside','H1R')] + bullets(['Suspected tension pneumothorax: acute respiratory compromise plus unilateral absent breath sounds / hyperresonance, hypotension or severe distress. Treat as an emergency and do not delay for imaging.','Silent chest in a breathless patient: possible life-threatening airflow obstruction.','Stridor with distress, drooling, or voice change: urgent upper-airway assessment.','Massive hemoptysis, severe hypoxemia, altered mental status, or exhaustion: urgent resuscitation and senior help.'])
s += [P('Interpretation limits','H1R'),P('Physical signs change probability but do not replace imaging or physiologic testing. Pleural ultrasound can identify very small volumes of fluid and is more sensitive than physical examination. Use the signs to localize and prioritize, then confirm appropriately.','CalloutR')]
s += [P('References','H1R'),P('Murray & Nadel’s Textbook of Respiratory Medicine, “Normal Lung Sounds”; Fishman’s Pulmonary Diseases and Disorders, “Pleural Ultrasonography”; The Washington Manual of Medical Therapeutics, “Physical Examination”; MSD Manual Professional Edition, “Evaluation of the Patient With Pulmonary Issues” (accessed September 2026).')]
build(d,s)
# 3 COMMON VIVA
d,s=doc('03_Respiratory_Common_Viva_Questions.pdf','Ten Common Respiratory Bedside Viva Questions','Concise, spoken answers for routine clinical examination stations.')
qas=[
('1. What are the four steps of respiratory-system examination?','Inspection, palpation, percussion, and auscultation. Begin with general observation and vital signs, compare sides at every stage, and complete relevant cardiovascular, abdominal, limb, and lymph-node examination.'),
('2. How do you assess tactile vocal fremitus?','Place the ulnar border or base of both hands on corresponding chest areas while the patient repeats a low-frequency phrase. Compare intensity side to side. It is increased when sound passes through dense lung with a patent bronchus, and reduced when pleural air/fluid, hyperinflation, chest-wall factors, or airway obstruction attenuate transmission.'),
('3. Why is vocal fremitus increased in consolidation?','Alveoli filled with inflammatory exudate become denser and transmit lower-frequency vocal vibrations more efficiently than normally aerated lung, provided the bronchus to that area remains patent.'),
('4. What are the classical signs of pleural effusion?','Reduced movement on the affected side, decreased tactile fremitus, stony dull percussion, reduced or absent breath sounds, and reduced vocal resonance. The trachea may shift away only if the effusion is very large. Bronchial breathing and egophony can occur just above the fluid level due to compressed lung.'),
('5. How do you distinguish consolidation from pleural effusion at the bedside?','Both may produce reduced expansion and dullness. Consolidation typically gives increased tactile fremitus and vocal resonance with bronchial breathing. Effusion typically gives reduced fremitus, reduced vocal resonance, and markedly reduced breath sounds over the fluid. Confirm with imaging, especially ultrasound when fluid is suspected.'),
('6. What is bronchial breathing?','It is a harsh, tubular breath sound with a relatively loud, prolonged expiratory component and a distinct gap between inspiration and expiration. Over peripheral lung it suggests sound transmission through airless lung, classically lobar consolidation with a patent bronchus.'),
('7. What are crackles and how do fine and coarse crackles differ?','Crackles are discontinuous, non-musical sounds. Fine crackles are brief and high pitched, often late inspiratory, as in fibrosis or edema. Coarse crackles are lower pitched and longer, often caused by airway secretions and may change after coughing, for example in bronchiectasis.'),
('8. What is the significance of clubbing in a respiratory patient?','It indicates hypertrophic osteoarthropathy spectrum or chronic systemic disease. Important respiratory causes include lung cancer, bronchiectasis, cystic fibrosis, lung abscess, and idiopathic pulmonary fibrosis. It is unusual in uncomplicated asthma or COPD, so its presence should prompt a search for another diagnosis.'),
('9. How do you assess tracheal position and interpret deviation?','Gently place a finger in the suprasternal notch and compare the space on each side of the trachea. Major volume loss tends to pull the trachea toward the lesion, while large pleural fluid collections or tension pneumothorax may push it away. It is often a late sign.'),
('10. What is a wheeze, and what does a unilateral monophonic wheeze suggest?','A wheeze is a continuous musical sound caused by narrowed airways, commonly expiratory. Polyphonic wheeze implies diffuse narrowing as in asthma/COPD. A localized, fixed, monophonic wheeze suggests focal airway obstruction, such as a tumor, foreign body, or mucus plug, and needs further evaluation.')]
for q,a in qas: s += [P(q,'Q'),P(a)]
s += [P('Rapid examination script','H1R'),P('“I would first assess respiratory distress and record respiratory rate, oxygen saturation, pulse, blood pressure and temperature. I would inspect the patient, assess for cyanosis, clubbing and lymphadenopathy, then examine the chest systematically from front, sides and back by inspection, palpation, percussion and auscultation. I would finish with cardiovascular examination, peripheral edema/DVT assessment, abdomen and relevant systemic signs.”','CalloutR')]
s += [P('References','H1R'),P('Murray & Nadel’s Textbook of Respiratory Medicine, “Normal Lung Sounds”; MSD Manual Professional Edition, “Evaluation of the Patient With Pulmonary Issues”; StatPearls, “Vocal Fremitus” (accessed September 2026).')]
build(d,s)
# 4 HARD VIVA
d,s=doc('04_Respiratory_Advanced_Viva_Questions.pdf','Ten Advanced Respiratory Bedside Viva Questions','Mechanism-based questions, model answers, and explanations for higher-level viva.')
qas2=[
('1. Why can bronchial breathing be heard immediately above a pleural effusion even though breath sounds are reduced over the fluid?','Pleural fluid compresses adjacent lung. At the upper fluid margin, the compressed, airless lung can transmit central airway sound efficiently if the bronchus remains patent, producing bronchial breathing and sometimes egophony. Over the main body of fluid, sound transmission to the chest wall is reduced.'),
('2. In a patient with a “white hemithorax” on chest radiograph, how do bedside signs guide your differential?','First assess mediastinal position. Tracheal shift toward the opaque side suggests volume loss, especially massive collapse or post-pneumonectomy. Shift away suggests mass effect, such as a large effusion. A centered mediastinum can occur with consolidation, combined collapse and effusion, or balanced processes. Then use percussion, fremitus and breath sounds, but confirm promptly with imaging.'),
('3. Explain why obstructive lobar collapse may have dullness but decreased, rather than increased, vocal fremitus.','The collapsed lung is dense, which might favor transmission, but the obstructed bronchus prevents vocal vibrations from reaching the distal lung. In complete bronchial obstruction, this loss of an air column dominates, so breath sounds, vocal resonance and fremitus are reduced. In compression collapse with a patent bronchus, transmission may be increased.'),
('4. Why does a patient with severe asthma sometimes have a “silent chest,” and why is this dangerous?','Wheeze requires airflow through narrowed airways. In extreme obstruction, airflow becomes too low to generate audible wheeze, so breath sounds diminish. This may indicate impending respiratory failure, especially with exhaustion, hypoxemia, altered consciousness, rising CO2, or poor peak flow. It requires urgent escalation.'),
('5. Why does the expiratory phase lengthen in obstructive airway disease?','Dynamic airway compression during expiration narrows already obstructed small airways. Elastic recoil is reduced in emphysema and airway resistance is increased in asthma/COPD. Emptying is slow, causing prolonged expiration and, in severe disease, air trapping and hyperinflation.'),
('6. Differentiate a pleural rub from coarse crackles at the bedside.','A pleural rub is a superficial grating or creaking sound caused by inflamed pleural surfaces. It is localized, follows respiratory movement, often occurs in both inspiration and expiration, and does not clear with cough. Coarse crackles arise from airway secretions, are usually inspiratory, and may alter after coughing. Asking the patient to briefly hold breath can help: a rub ceases when respiration stops.'),
('7. Why may oxygen saturation be misleadingly normal in early severe respiratory distress?','Pulse oximetry measures hemoglobin oxygen saturation, not work of breathing, ventilation, PaCO2, pH, hemoglobin concentration, or tissue perfusion. A patient may maintain SpO2 with high respiratory effort or supplemental oxygen while tiring and retaining CO2. Assess mental status, RR, fatigue, ABG/VBG where appropriate, and the clinical trajectory.'),
('8. Explain the physiological basis of fine “Velcro” crackles in fibrotic lung disease.','Fibrosis reduces lung compliance and promotes closure of small peripheral airways at low lung volumes. Their abrupt reopening during inspiration produces brief, late inspiratory crackles. They are often basal, persistent after cough, and may be heard early in ILD, but are not diagnostic in isolation.'),
('9. How can a large unilateral pleural effusion produce hypoxemia?','The effusion compresses lung, reduces regional ventilation and creates low ventilation-perfusion areas or shunt-like physiology. Dyspnea can also arise from reduced chest-wall and diaphragmatic mechanics. The degree of hypoxemia does not always correlate linearly with fluid volume because underlying lung and cardiac disease matter.'),
('10. What is the diagnostic logic of combining signs rather than relying on one sign?','Each sign has limited sensitivity and specificity and can be altered by body habitus, effort, coexisting disease, and examiner technique. A coherent cluster localizes a syndrome: for example, dullness + reduced fremitus + reduced breath sounds supports pleural fluid more than any sign alone. Imaging and physiologic tests confirm the suspected process and define etiology.')]
for q,a in qas2: s += [P(q,'Q'),P('<b>Model answer:</b> '+a),P('<b>Examiner-level point:</b> State the mechanism, then the clinical consequence or limitation.','SmallR')]
s += [P('Reasoning map for a unilateral abnormality','H1R'),table([['Step','Question','Interpretation'],['1','Is the patient unstable?','Prioritize emergency syndromes such as tension pneumothorax, severe asthma, massive hemoptysis, or sepsis.'],['2','Is volume increased, reduced, or unchanged?','Trachea/mediastinum and chest movement help, but may be late or absent.'],['3','Is percussion dull or hyperresonant?','Dull: fluid/solid/volume loss. Hyperresonant: pleural air/hyperinflation.'],['4','Are vocal vibrations transmitted?','Increased: dense lung with open bronchus. Reduced: pleural air/fluid, hyperinflation, or obstructed airway.'],['5','What does imaging show?','Use CXR, ultrasound, CT, and physiologic tests to confirm and determine cause.']], [1.2*cm,5.0*cm,10.8*cm],small=True)]
s += [P('References','H1R'),P('Murray & Nadel’s Textbook of Respiratory Medicine, “Normal Lung Sounds”; Fishman’s Pulmonary Diseases and Disorders, “Pleural Ultrasonography”; The Washington Manual of Medical Therapeutics, “Physical Examination”; MSD Manual Professional Edition, “Evaluation of the Patient With Pulmonary Issues” (accessed September 2026).')]
build(d,s)
print('\n'.join(os.path.join(OUT,x) for x in sorted(os.listdir(OUT))))
~/respiratory-bedside
mkdir -p "/tmp/workspace/respiratory-bedside/output" && python "/tmp/workspace/respiratory-bedside/src_create_pdfs.py"
python -c "from pypdf import PdfReader; import glob, os; files=glob.glob('/tmp/workspace/respiratory-bedside/output/*.pdf'); [print(os.path.basename(f), 'pages=',len(PdfReader(f).pages), 'textchars=',sum(len(p.extract_text() or '') for p in PdfReader(f).pages)) for f in files]"
01 Respiratory Clinical Case Proforma and Summary
PDF Document · PDF
02 Respiratory Clinical Signs and Differential Diagnosis
PDF Document · PDF
03 Respiratory Common Viva Questions
PDF Document · PDF
04 Respiratory Advanced Viva Questions
PDF Document · PDF
Make a good viva voice pdf for respiratory system case also add criterias scoring and guideline based question according to You
What should the new PDF include? · Which guideline context should I follow?
01 Respiratory Clinical Case Proforma and Summary
PDF Document · PDF
02 Respiratory Clinical Signs and Differential Diagnosis
PDF Document · PDF
03 Respiratory Common Viva Questions
PDF Document · PDF
04 Respiratory Advanced Viva Questions
PDF Document · PDF
Yes
~/
COPD asthma pneumonia guideline
GINA 2025 strategy report GOLD 2026 pocket guide community acquired pneumonia guideline CURB-65
~/respiratory-bedside/create_viva_voice_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.colors import HexColor
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, KeepTogether, Flowable
from reportlab.pdfbase.pdfmetrics import stringWidth
import os
OUT='/tmp/workspace/respiratory-bedside/output'
os.makedirs(OUT,exist_ok=True)
PATH=os.path.join(OUT,'05_Respiratory_Viva_Voice_Scoring_and_Guidelines.pdf')
NAVY=HexColor('#12324A'); BLUE=HexColor('#246B8E'); TEAL=HexColor('#15807C'); PALE=HexColor('#E9F4F4'); GREY=HexColor('#F4F6F7'); RED=HexColor('#9C2D2D'); GOLD=HexColor('#B87919')
S=getSampleStyleSheet()
for n,p in {
'TitleX':dict(parent=S['Title'],fontName='Helvetica-Bold',fontSize=22,leading=27,textColor=NAVY,alignment=TA_CENTER,spaceAfter=7),
'SubX':dict(parent=S['Normal'],fontSize=10,leading=13,textColor=HexColor('#40515C'),alignment=TA_CENTER,spaceAfter=12),
'H1X':dict(parent=S['Heading1'],fontName='Helvetica-Bold',fontSize=15,leading=19,textColor=NAVY,spaceBefore=12,spaceAfter=7),
'H2X':dict(parent=S['Heading2'],fontName='Helvetica-Bold',fontSize=11.5,leading=14,textColor=BLUE,spaceBefore=8,spaceAfter=4),
'BodyX':dict(parent=S['BodyText'],fontSize=9.1,leading=12.1,spaceAfter=5),
'SmallX':dict(parent=S['BodyText'],fontSize=7.6,leading=9.1,spaceAfter=2),
'QX':dict(parent=S['BodyText'],fontName='Helvetica-Bold',fontSize=10,leading=12.5,textColor=NAVY,spaceBefore=8,spaceAfter=3),
'VoiceX':dict(parent=S['BodyText'],fontName='Helvetica-Oblique',fontSize=9.2,leading=12.2,textColor=HexColor('#203A48'),leftIndent=8,rightIndent=8,spaceAfter=5),
}.items(): S.add(ParagraphStyle(name=n,**p))
def P(x,st='BodyX'): return Paragraph(x,S[st])
def tbl(data,widths,small=False):
d=[[P(str(x),'SmallX' if small else 'BodyX') for x in r] for r in data]
t=Table(d,colWidths=widths,repeatRows=1,hAlign='LEFT')
t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),NAVY),('TEXTCOLOR',(0,0),(-1,0),colors.white),('FONTNAME',(0,0),(-1,0),'Helvetica-Bold'),('VALIGN',(0,0),(-1,-1),'TOP'),('GRID',(0,0),(-1,-1),.25,HexColor('#BAC8CE')),('ROWBACKGROUNDS',(0,1),(-1,-1),[colors.white,GREY]),('LEFTPADDING',(0,0),(-1,-1),5),('RIGHTPADDING',(0,0),(-1,-1),5),('TOPPADDING',(0,0),(-1,-1),4),('BOTTOMPADDING',(0,0),(-1,-1),4)]))
return t
def box(text):
t=Table([[P(text,'BodyX')]],colWidths=[17.1*cm]); t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),PALE),('BOX',(0,0),(-1,-1),.5,TEAL),('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)])); return t
class Arrow(Flowable):
def __init__(self,labels): Flowable.__init__(self); self.labels=labels; self.width=17*cm; self.height=25
def draw(self):
c=self.canv; n=len(self.labels); w=self.width/n
for i,l in enumerate(self.labels):
x=i*w; c.setFillColor(TEAL if i==0 else BLUE); c.rect(x,2,w-3,17,fill=1,stroke=0); c.setFillColor(colors.white); c.setFont('Helvetica-Bold',7); c.drawCentredString(x+(w-3)/2,8,l)
if i<n-1: c.setFillColor(NAVY); c.setFont('Helvetica-Bold',12); c.drawString(x+w-1,6,'>')
def foot(c,doc):
c.saveState(); w,h=A4; c.setStrokeColor(TEAL); c.line(1.5*cm,h-1.1*cm,w-1.5*cm,h-1.1*cm); c.setFont('Helvetica',7.5); c.setFillColor(HexColor('#51636D')); c.drawString(1.5*cm,.8*cm,'Respiratory bedside viva voice guide | Educational use - verify local protocols'); c.drawRightString(w-1.5*cm,.8*cm,f'Page {doc.page}'); c.restoreState()
def q(stem,answer,marks,explain='',tip=''):
out=[P(stem+f' <font color="{GOLD.hexval()}">[{marks} marks]</font>','QX'),P('<b>Say:</b> “'+answer+'”','VoiceX')]
if explain: out.append(P('<b>Why this scores:</b> '+explain,'SmallX'))
if tip: out.append(P('<b>Examiner follow-up:</b> '+tip,'SmallX'))
return out
story=[]
story += [P('Respiratory System Viva Voice Guide','TitleX'),P('Spoken model answers, scoring criteria, clinical scores and guideline-based questions for bedside case presentation','SubX'),box('<b>How to use this:</b> Read the “Say” line aloud until it sounds natural. State the diagnosis first, then give two or three discriminating findings, then safety or next-step management. Scores are suggested for undergraduate bedside viva and may differ locally.'),Spacer(1,8),P('The 20-second answer structure','H1X'),Arrow(['NAME THE PROBLEM','SUPPORT WITH SIGNS','RISK / SEVERITY','NEXT STEP']),P('A safe opening phrase: <i>“This patient has clinical features of [syndrome], most likely due to [cause]. The key supporting findings are [three findings]. I would assess severity and confirm with [test], while addressing immediate threats such as hypoxaemia or tension pneumothorax.”</i>','VoiceX'),P('Bedside performance scoring rubric','H1X'),tbl([['Domain','0','1','2'],['Technique','Unsafe or omitted','Performs but misses comparison / sequence','Consent, position, exposure, side-to-side comparison, correct sequence'],['Findings','No / incorrect finding','Identifies but cannot interpret','States finding, side, and clinical meaning'],['Synthesis','No diagnosis','Lists a diagnosis only','Syndrome + likely cause + differential + next test'],['Safety','Misses red flags','Mentions oxygen / referral','Identifies unstable patient and prioritises action']], [3.3*cm,4.55*cm,9.25*cm],True),P('<b>Suggested global grade:</b> 0-3 unsafe/inadequate, 4-5 pass, 6-7 good, 8 excellent. A candidate must not pass if they fail to recognise a tension pneumothorax, severe acute asthma, massive haemoptysis, or respiratory failure.','SmallX'),P('Clinical case presentation: voice script','H1X'),P('Use this adaptable 45-second summary after you finish the examination.','BodyX'),box('<i>“I examined a [age]-year-old [man/woman] with [chief respiratory syndrome]. The patient is [comfortable/distressed] at rest, with [oxygen/device]. General examination shows [key sign, for example clubbing, cyanosis, cachexia]. On respiratory examination, the main abnormality is in the [right/left, upper/mid/lower] zone, with [expansion], [tracheal position], [percussion note], [breath sounds], and [vocal resonance]. This localises to [consolidation/effusion/collapse/pneumothorax/obstructive disease]. My most likely diagnosis is [diagnosis], with [one key differential]. I would assess immediate severity using vital signs and oxygenation, and confirm with chest radiograph and targeted tests.”</i>'),P('Core bedside viva: model answers','H1X')]
questions=[
('1. What is your clinical diagnosis from a stony dull hemithorax with absent breath sounds and decreased vocal fremitus?', 'This is a pleural effusion until proved otherwise. Fluid in the pleural space dampens percussion resonance and blocks transmission of voice and breath sounds. I would check the trachea, assess for respiratory distress, and confirm with chest ultrasound and chest radiograph.',4,'The discriminating triad is stony dullness, reduced vocal fremitus, and reduced breath sounds.','How does massive effusion affect the trachea? Answer: it usually pushes it away.'),
('2. How do you distinguish consolidation from pleural effusion at the bedside?', 'Both may be dull to percussion, but consolidation transmits sound better: tactile fremitus and vocal resonance are increased, and bronchial breathing or crackles may be heard. In pleural effusion, fremitus, vocal resonance, and breath sounds are reduced.',4,'State the principle: dense airless lung transmits sound; pleural fluid separates lung from chest wall.','Mention egophony at the upper border of an effusion.'),
('3. Why may the trachea deviate?', 'The trachea is pulled toward volume loss, such as upper-lobe collapse or fibrosis, and pushed away by increased intrathoracic volume, such as a massive effusion or tension pneumothorax. I interpret it with chest movement, percussion, and haemodynamic state.',3,'Avoid claiming that any deviation means tension pneumothorax. It is a late sign and instability is more important.','What is the emergency? Tension pneumothorax requires immediate decompression, not waiting for X-ray.'),
('4. What is the difference between wheeze and stridor?', 'Wheeze is usually an expiratory musical sound due to intrathoracic small-airway narrowing, common in asthma and COPD. Stridor is a harsh predominantly inspiratory sound from upper-airway obstruction. Stridor with respiratory distress is an airway emergency.',3,'Localise the sound and identify urgency.','Give causes of stridor: laryngeal oedema, foreign body, tumour, vocal-cord dysfunction.'),
('5. Interpret fine late inspiratory crackles.', 'Fine late inspiratory crackles suggest sudden opening of small airways or alveoli. Bibasal persistent “Velcro-like” crackles raise concern for fibrotic interstitial lung disease, whereas crackles can also occur with pulmonary oedema or pneumonia and must be interpreted in context.',3,'Do not label every crackle as infection.','What is a useful associated sign in fibrosis? Clubbing, reduced expansion, restrictive spirometry.'),
('6. How do you perform and interpret vocal resonance?', 'I compare corresponding areas while the patient repeats “ninety-nine”. Increased, clearer transmission suggests consolidation. Reduced transmission suggests pleural effusion, pneumothorax, or hyperinflation. An E-to-A change, egophony, may occur in consolidation or near the upper border of an effusion.',3,'Technique and interpretation both earn marks.','Why not assess over scapulae? Bone conducts sound and confounds comparison.'),
('7. How do you assess severity in an acutely breathless patient?', 'I use an ABCDE approach: airway patency, respiratory rate and work of breathing, oxygen saturation and blood gas if indicated, circulation and mental state. I look for inability to speak, silent chest, cyanosis, hypotension, exhaustion, confusion, and rising carbon dioxide. I treat immediate hypoxaemia while investigating the cause.',4,'A structured answer outranks a long differential.','State oxygen should be titrated to a target appropriate to the patient, particularly if at risk of hypercapnic respiratory failure.'),
('8. What examination findings suggest COPD?', 'Findings may include prolonged expiration, wheeze, reduced breath sounds, hyperresonance, reduced cardiac dullness, barrel-shaped chest, pursed-lip breathing, and use of accessory muscles. COPD is confirmed by post-bronchodilator spirometry showing FEV1/FVC below 0.70, not by examination alone.',4,'Include the diagnostic test and threshold.','How is symptom burden assessed? CAT or mMRC, plus exacerbation history.'),
('9. What is clubbing and what respiratory diseases cause it?', 'Clubbing is loss of the normal nail-bed angle with sponginess of the nail bed, often confirmed by a positive Schamroth window test. Respiratory causes include lung cancer, bronchiectasis, cystic fibrosis, lung abscess, and idiopathic pulmonary fibrosis. It is not a usual feature of uncomplicated COPD or asthma.',3,'Mention both technique and discriminating causes.','What does new clubbing in a smoker require? Urgent evaluation for malignancy.'),
('10. How would you present a patient with a unilateral pleural effusion?', 'This patient has a unilateral pleural effusion clinically, based on reduced expansion, stony dullness, diminished breath sounds, and decreased vocal resonance over the affected base. I would assess size and safety with ultrasound, perform diagnostic thoracentesis if indicated, and investigate for infection, malignancy, tuberculosis, pulmonary embolism, and heart failure according to the clinical setting.',4,'Shows synthesis and appropriate next step.','Do not promise thoracentesis without checking stability, imaging, and local protocol.')]
for x in questions: story += q(*x)
story += [PageBreak(),P('Scores and criteria examiners commonly ask','H1X'),P('Use the score only as an aid. It does not replace clinical judgement, social context, or escalation decisions.','SmallX'),P('1. CURB-65 and CRB-65 for adult community-acquired pneumonia','H2X'),tbl([['Score item','Point'],['Confusion: new disorientation','1'],['Urea >7 mmol/L (CURB-65 only)','1'],['Respiratory rate >=30/min','1'],['Blood pressure: systolic <90 mmHg or diastolic <=60 mmHg','1'],['Age >=65 years','1']], [12*cm,5.1*cm]),P('<b>Voice answer:</b> “CURB-65 gives one point each for confusion, urea above 7 mmol/L, respiratory rate 30 or more, low blood pressure, and age 65 or more. It estimates mortality risk and supports site-of-care decisions, but it does not replace judgement about oxygenation, sepsis, comorbidity, oral intake, or home support.”','VoiceX'),P('2. COPD: objective diagnosis, symptom burden, prognosis','H2X'),tbl([['Tool','What to say in viva','Key criterion'],['Spirometry','Confirms persistent airflow obstruction.','Post-bronchodilator FEV1/FVC <0.70.'],['mMRC','Grades exertional breathlessness.','0 to 4; higher = worse dyspnoea.'],['CAT','Measures symptom impact.','0 to 40; >=10 often indicates higher symptom burden.'],['BODE index','Predicts prognosis better than FEV1 alone in stable COPD.','BMI, obstruction (FEV1), dyspnoea (mMRC), exercise capacity (6-minute walk).']], [3.4*cm,8.1*cm,5.6*cm],True),P('3. Asthma: diagnosis and acute severity','H2X'),P('<b>Viva answer:</b> “Asthma requires typical variable respiratory symptoms plus evidence of variable expiratory airflow limitation. I would use spirometry with bronchodilator reversibility where possible, or peak-flow variability / alternative objective testing if spirometry is initially normal. During an acute attack, I prioritise speech, respiratory rate, pulse, oxygenation, peak flow where feasible, fatigue, and carbon dioxide. A normal or rising PaCO2 in a severely breathless patient is concerning.”','VoiceX'),P('4. Pulmonary embolism: pre-test probability','H2X'),tbl([['Wells item for PE','Points'],['Clinical signs of DVT','3'],['PE more likely than an alternative diagnosis','3'],['Heart rate >100/min','1.5'],['Immobilisation >=3 days or surgery in past 4 weeks','1.5'],['Previous DVT/PE','1.5'],['Haemoptysis','1'],['Malignancy','1']], [13.5*cm,3.6*cm]),P('<b>Voice answer:</b> “I first establish haemodynamic stability. In a stable patient, I use a validated clinical probability tool such as Wells, then D-dimer or imaging according to the probability and local pathway. In shock or hypotension, I escalate urgently for high-risk PE assessment and management.”','VoiceX')]
advanced=[
('11. A patient with severe asthma has a quiet chest. Is that reassuring?', 'No. A silent or very quiet chest can mean critically reduced airflow, particularly if accompanied by exhaustion, altered consciousness, hypoxaemia, or a normalising or rising PaCO2. I would treat as life-threatening asthma and call for senior and critical-care support.',4,'The absence of wheeze can reflect little airflow, not recovery.'),
('12. Why is a normal PaCO2 dangerous in severe acute asthma?', 'Early severe asthma commonly causes hyperventilation and low PaCO2. A normal or raised PaCO2 despite marked distress suggests ventilatory failure from fatigue or severe obstruction, so it is a red flag requiring urgent escalation.',3,'This tests physiology and interpretation rather than memorisation.'),
('13. Give an evidence-based initial COPD treatment answer.', 'After confirming COPD with post-bronchodilator spirometry, I assess symptoms and exacerbation history. Current GOLD strategy uses bronchodilator-based treatment, generally favouring long-acting dual bronchodilation for more symptomatic or exacerbation-prone patients. Inhaled corticosteroid use is individualised, especially considering exacerbations, blood eosinophils, coexisting asthma, and pneumonia risk. I also provide smoking cessation, vaccines, inhaler technique review, and pulmonary rehabilitation where appropriate.',5,'Guideline logic matters more than a rigid drug list.'),
('14. What are the severe CAP criteria that should make you think about ICU?', 'I assess physiology, organ dysfunction, oxygenation, and shock. Severe CAP frameworks include major criteria such as invasive mechanical ventilation or vasopressor-requiring septic shock, with minor criteria including marked tachypnoea, poor oxygenation, multilobar infiltrates, confusion, uraemia, hypotension needing fluids, thrombocytopenia, hypothermia, and leucopenia. I would involve critical care early rather than wait for a score alone.',5,'Answers based on safety and escalation score highly.'),
('15. Explain why breath sounds may be bronchial over consolidation.', 'Normally alveolar air filters high-frequency sound, producing soft vesicular breathing. In consolidation, alveoli become airless and denser while the bronchus remains patent, so higher-frequency sounds from central airways are transmitted more clearly to the chest wall, producing bronchial breathing and increased vocal resonance.',4,'Mention patent bronchus. Complete bronchial obstruction changes the pattern.'),
('16. A pleural effusion has a small area of bronchial breathing above it. Explain.', 'The compressed lung immediately above the fluid may be partially airless but still connected to a patent bronchus. This can transmit bronchial breath sounds and egophony. The fluid-filled dependent area itself usually has reduced breath sounds and vocal resonance.',4,'This prevents the common false statement that effusion always gives absent sounds everywhere.'),
('17. What is the difference between type 1 and type 2 respiratory failure?', 'Type 1 is hypoxaemia without hypercapnia, usually from ventilation-perfusion mismatch, shunt, or diffusion impairment, as in pneumonia, pulmonary oedema, pulmonary embolism, or interstitial disease. Type 2 is hypoxaemia with hypercapnia from alveolar hypoventilation, such as COPD exacerbation, severe asthma, neuromuscular weakness, obesity hypoventilation, or central depression. I interpret both with pH, bicarbonate, clinical state, and oxygen delivery.',4,'Avoid using one fixed oxygen target for every patient.'),
('18. How do you explain oxygen therapy in a patient at risk of hypercapnic respiratory failure?', 'I give controlled oxygen and titrate to an appropriate saturation target, commonly 88 to 92 percent in patients at risk, while obtaining an arterial or venous blood gas as clinically indicated and reassessing. Oxygen treats hypoxaemia and should not be withheld, but uncontrolled excess oxygen can worsen hypercapnia in susceptible patients.',4,'State reassessment and blood gas. Mechanisms include V/Q effects and the Haldane effect, not simply loss of hypoxic drive.'),
('19. What is the clinical significance of haemoptysis?', 'I first assess airway protection, respiratory compromise, haemodynamic stability, anticoagulants, and the volume and rate of bleeding. Massive or life-threatening haemoptysis is defined by physiological impact rather than a single volume. Causes include infection, bronchiectasis, malignancy, tuberculosis, pulmonary embolism, and vasculitis. I would stabilise, position the bleeding lung down if known, and urgently involve respiratory, interventional radiology, and critical-care teams.',5,'Prioritise airway and physiology, not just an exact millilitre cutoff.'),
('20. How does current asthma guidance change the message about reliever therapy?', 'Modern GINA strategy recommends that adults and adolescents should not be managed with SABA-only treatment. Treatment should include inhaled corticosteroid-containing therapy to reduce exacerbation risk. I would confirm diagnosis, assess control and future risk, check inhaler technique and adherence, address triggers, and give a written action plan.',5,'This is a high-yield current guideline question.')]
story += [P('Advanced and guideline-based viva','H1X')]
for x in advanced: story += q(*x)
story += [PageBreak(),P('Rapid fire: examiner scoring checklist','H1X'),tbl([['Expected action','Mark'],['Introduces self, confirms identity, explains, consents, positions patient at 45 degrees and exposes appropriately','1'],['Assesses distress, speech, respiratory rate, oxygen device and saturation before detailed examination','1'],['Completes inspection, palpation, percussion and auscultation systematically, comparing sides','2'],['Examines for clubbing, cyanosis, lymph nodes, JVP, peripheral oedema and relevant systemic signs','2'],['States positive and negative findings with side and level','2'],['Provides a syndrome-level diagnosis and one or two differentials','2'],['Recognises red flags and gives immediate action','2'],['Selects targeted confirmatory investigations','2'],['Uses a relevant score appropriately without over-relying on it','2'],['Communicates clearly, safely and succinctly','2']], [14.6*cm,2.5*cm]),P('Suggested 20-mark station interpretation: <b>0-7</b> inadequate / unsafe, <b>8-11</b> pass, <b>12-15</b> good, <b>16-20</b> excellent. Local university criteria take precedence.','BodyX'),P('Guideline and reference notes','H1X'),P('This handout is for educational bedside viva preparation, not a substitute for clinical supervision, national guidance, or local hospital protocols. The guideline-based content is aligned with the current major strategy documents available at time of preparation: GOLD 2026 for COPD, GINA 2025 for asthma, and current pneumonia risk-assessment practice.','BodyX'),P('Primary resources: GOLD, <i>2026 Report and Pocket Guide</i> (goldcopd.org); GINA, <i>2025 Strategy Report</i> (ginasthma.org); NICE, <i>Pneumonia in adults: diagnosis and management</i>, NG250 (2025); Murray & Nadel’s Textbook of Respiratory Medicine; Fishman’s Pulmonary Diseases and Disorders. The assessment tables should be used with their original guidance and local policy.','SmallX'),box('<b>Last viva tip:</b> If you do not know a numerical threshold, do not invent it. Say: “I would use the validated local pathway, but I would not delay immediate stabilisation or escalation in an unstable patient.”')]
doc=SimpleDocTemplate(PATH,pagesize=A4,rightMargin=1.55*cm,leftMargin=1.55*cm,topMargin=1.45*cm,bottomMargin=1.35*cm,title='Respiratory Viva Voice Guide')
doc.build(story,onFirstPage=foot,onLaterPages=foot)
print(PATH)
python "/tmp/workspace/respiratory-bedside/create_viva_voice_pdf.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/respiratory-bedside/output/05_Respiratory_Viva_Voice_Scoring_and_Guidelines.pdf'; r=PdfReader(p); print('pages=',len(r.pages)); print('textchars=',sum(len(x.extract_text() or '') for x in r.pages)); print('first=',(r.pages[0].extract_text() or '')[:200])"
05 Respiratory Viva Voice Scoring and Guidelines
PDF Document · PDF