History taking
| Item | Clinical Relevance |
|---|---|
| Name | Builds rapport; patient feels known and reassured |
| Age | Congenital anomalies present at birth or early life; sarcomas in teenagers; carcinomas after 40; BPH and osteoarthritis in old age |
| Sex | Thyroid disease, cystitis, movable kidney more common in females; carcinomas of stomach, lung, kidney more common in males; haemophilia affects males only |
| Religion | Carcinoma penis is rare in Jews and Muslims (circumcision); intussusception may follow prolonged fasting in Muslims |
| Social status | Acute appendicitis is more common in high social status; tuberculosis in low socioeconomic status |
| Occupation | Varicose veins in bus conductors; bladder neoplasms in aniline dye workers; scrotal carcinoma in chimney sweepers; tennis elbow in tennis players |
| Residence/Address | Geographical diseases - filariasis (Orissa), leprosy (Bankura); also needed for future correspondence |
| # | Component |
|---|---|
| 1 | Patient Particulars (biodata) |
| 2 | Chief Complaints |
| 3 | History of Present Illness |
| 4 | Associated/comorbid diseases |
| 5 | Past History |
| 6 | Drug History |
| 7 | Allergy History |
| 8 | Personal History (social/habits/menstrual in women) |
| 9 | Family History |
| 10 | Immunization History |
In pdf
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && ls -la /tmp/workspace/
mkdir -p /tmp/workspace/history-taking && python3 << 'EOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import cm from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY doc = SimpleDocTemplate( "/tmp/workspace/history-taking/History_Taking.pdf", pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm, ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle( 'CustomTitle', parent=styles['Title'], fontSize=22, textColor=colors.HexColor('#1a3a5c'), spaceAfter=6, alignment=TA_CENTER, fontName='Helvetica-Bold', ) subtitle_style = ParagraphStyle( 'Subtitle', parent=styles['Normal'], fontSize=11, textColor=colors.HexColor('#4a7ab5'), spaceAfter=4, alignment=TA_CENTER, fontName='Helvetica', ) source_style = ParagraphStyle( 'Source', parent=styles['Normal'], fontSize=8, textColor=colors.HexColor('#888888'), spaceAfter=2, alignment=TA_CENTER, fontName='Helvetica-Oblique', ) section_style = ParagraphStyle( 'SectionHeader', parent=styles['Heading2'], fontSize=13, textColor=colors.white, backColor=colors.HexColor('#1a3a5c'), spaceBefore=14, spaceAfter=6, leftIndent=-0.5*cm, rightIndent=-0.5*cm, fontName='Helvetica-Bold', borderPad=6, ) subsection_style = ParagraphStyle( 'SubsectionHeader', parent=styles['Heading3'], fontSize=11, textColor=colors.HexColor('#1a3a5c'), spaceBefore=8, spaceAfter=4, fontName='Helvetica-Bold', ) body_style = ParagraphStyle( 'Body', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#222222'), spaceAfter=4, leading=15, fontName='Helvetica', alignment=TA_JUSTIFY, ) bullet_style = ParagraphStyle( 'Bullet', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#222222'), spaceAfter=3, leading=14, leftIndent=16, bulletIndent=4, fontName='Helvetica', ) note_style = ParagraphStyle( 'Note', parent=styles['Normal'], fontSize=9, textColor=colors.HexColor('#555555'), backColor=colors.HexColor('#f0f4fa'), spaceAfter=4, leading=13, leftIndent=8, rightIndent=8, borderPad=6, fontName='Helvetica-Oblique', ) story = [] # Title block story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("HISTORY TAKING", title_style)) story.append(Paragraph("A Complete Clinical Framework", subtitle_style)) story.append(Paragraph("Sources: S Das — Manual on Clinical Surgery, 13th Ed. | Bailey & Love's Short Practice of Surgery, 28th Ed.", source_style)) story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#4a7ab5'), spaceAfter=10)) # ------- SECTION 1: PATIENT PARTICULARS ------- story.append(Paragraph(" 1. PATIENT PARTICULARS (BIODATA)", section_style)) story.append(Paragraph( "Before asking about complaints, identify and get to know the patient. " "Addressing the patient by name builds rapport and provides immediate psychological reassurance.", body_style )) bio_data = [ ['Item', 'Clinical Relevance'], ['Name', 'Builds rapport; patient feels known and reassured before procedures'], ['Age', 'Congenital anomalies at birth; sarcomas in teenagers; carcinomas after 40; BPH and osteoarthritis in old age; Wilms\' tumour in infants'], ['Sex', 'Thyroid disease, cystitis, movable kidney more common in females; stomach/lung/kidney carcinomas more common in males; haemophilia affects males only'], ['Religion', 'Carcinoma penis rare in Jews & Muslims (circumcision); intussusception may follow prolonged fasting (Ramadan)'], ['Social Status', 'Acute appendicitis more common in high socioeconomic status; tuberculosis in low socioeconomic status'], ['Occupation', 'Varicose veins in bus conductors; bladder neoplasms in aniline dye workers; scrotal carcinoma in chimney sweepers; tennis elbow in tennis players'], ['Residence/Address', 'Geographical diseases (filariasis in Orissa, leprosy in Bankura); needed for future correspondence'], ] t = Table(bio_data, colWidths=[3.5*cm, 13*cm]) t.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('#eaf1fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 5), ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (0,1), (0,-1), colors.HexColor('#1a3a5c')), ])) story.append(t) # ------- SECTION 2: CHIEF COMPLAINTS ------- story.append(Paragraph(" 2. CHIEF COMPLAINTS", section_style)) story.append(Paragraph( "Record all complaints in <b>chronological order</b> of their appearance with exact duration.", body_style )) story.append(Paragraph('<b>How to ask:</b>', subsection_style)) for b in [ '"What are your complaints?" — or for dull patients: "What brings you here?"', '"How long have you been suffering from each complaint?"', '"Were you perfectly well before [symptom] appeared?" — confirms timeline and may reveal hidden earlier symptoms', ]: story.append(Paragraph(f'• {b}', bullet_style)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph('<b>Example (neck sinus):</b>', subsection_style)) ex_data = [ ['Complaint', 'Duration'], ['Swelling in the neck', '1 year'], ['Fever (evening rise)', '10 months'], ['Pain in the swelling', '6 months'], ['Sinus in the neck', '1 month'], ] et = Table(ex_data, colWidths=[10*cm, 6.5*cm]) et.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#4a7ab5')), ('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('#eaf1fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('PADDING', (0,0), (-1,-1), 5), ])) story.append(et) story.append(Paragraph( 'Note: If multiple complaints start simultaneously, list them in order of severity.', note_style )) # ------- SECTION 3: HPI ------- story.append(Paragraph(" 3. HISTORY OF PRESENT ILLNESS (HPI)", section_style)) story.append(Paragraph( "Covers from the <b>first symptom to the time of examination</b>. Must include three components:", body_style )) for b in [ '<b>Mode of onset</b> — sudden or gradual? Any precipitating cause? Ask: "How did the trouble start?"', '<b>Progress of disease</b> — evolution of symptoms in exact order. Ask: "What happened next?"', '<b>Treatment history</b> — what treatment was given, by whom, and the outcome', ]: story.append(Paragraph(f'• {b}', bullet_style)) story.append(Paragraph('<b>Key Rules for HPI:</b>', subsection_style)) rules = [ ('Record in patient\'s own words', 'Do NOT use diagnostic or scientific terminology — record what the patient says'), ('Avoid leading questions', 'Don\'t ask "Does pain go to the right shoulder?" — Ask "Does the pain move anywhere? Where?"'), ('Never ask "What are you suffering from?"', 'The patient will give you a diagnosis, not a symptom'), ('Value negative findings', 'Absence of watery discharge at mealtimes in a cheek sinus rules out parotid fistula'), ] rt = Table(rules, colWidths=[6*cm, 10.5*cm]) rt.setStyle(TableStyle([ ('BACKGROUND', (0,0), (0,-1), colors.HexColor('#eaf1fb')), ('FONTNAME', (0,0), (0,-1), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 9), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 5), ('ROWBACKGROUNDS', (0,0), (-1,-1), [colors.HexColor('#eaf1fb'), colors.white]), ])) story.append(rt) story.append(Paragraph('<b>For pain, specifically ask:</b> Site | Onset | Character | Radiation | Aggravating & alleviating factors | Associated symptoms | Timing & duration', note_style)) # ------- SECTION 4: ASSOCIATED DISEASES ------- story.append(Paragraph(" 4. ASSOCIATED DISEASES (COMORBIDITIES)", section_style)) story.append(Paragraph( "Ask about concurrent medical conditions that may affect management or require additional treatment:", body_style )) comorbids = ['Diabetes mellitus', 'Hypertension', 'Bronchial asthma', 'Bleeding disorders', 'Rheumatic fever', 'Tropical diseases', 'Syphilis / Gonorrhoea'] row = [] for i, c in enumerate(comorbids): row.append(Paragraph(f'• {c}', bullet_style)) # Two columns mid = len(comorbids)//2 + len(comorbids)%2 col1 = [Paragraph(f'• {c}', bullet_style) for c in comorbids[:mid]] col2 = [Paragraph(f'• {c}', bullet_style) for c in comorbids[mid:]] # pad while len(col2) < len(col1): col2.append(Spacer(1,1)) ct = Table([[c1, c2] for c1, c2 in zip(col1, col2)], colWidths=[8.25*cm, 8.25*cm]) ct.setStyle(TableStyle([ ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 2), ])) story.append(ct) # ------- SECTION 5: PAST HISTORY ------- story.append(Paragraph(" 5. PAST HISTORY", section_style)) story.append(Paragraph( "All previous illnesses in <b>chronological order</b> with dates and duration. Previous conditions may directly influence the current diagnosis or treatment.", body_style )) for b in [ 'Previous major illnesses: peptic ulcer, pancreatitis, tuberculosis, gallbladder disease, appendicitis', 'Previous <b>operations</b> — type, date, indication', 'Previous <b>accidents or trauma</b>', ]: story.append(Paragraph(f'• {b}', bullet_style)) # ------- SECTION 6: DRUG HISTORY ------- story.append(Paragraph(" 6. DRUG HISTORY", section_style)) story.append(Paragraph( "Ask about <b>all current and recent medications</b>. Critical for diagnosis, treatment planning, and anaesthetic safety.", body_style )) drugs = [ ['Drug / Category', 'Reason for Enquiry'], ['Steroids', 'Adrenal suppression; wound healing; peri-operative cover needed'], ['Insulin', 'Diabetes management; peri-operative glucose control'], ['Antihypertensives & Diuretics', 'Drug interactions; electrolyte imbalance'], ['Monoamine Oxidase Inhibitors (MAOIs)', 'Dangerous interactions with anaesthetic agents'], ['Ergot derivatives', 'Vascular effects; interactions'], ['Hormone Replacement Therapy (HRT)', 'Thrombotic risk; hormone effects'], ['Oral Contraceptive Pills (OCP)', 'Thrombotic risk; interactions'], ] dt = Table(drugs, colWidths=[7*cm, 9.5*cm]) dt.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('#eaf1fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 5), ])) story.append(dt) # ------- SECTION 7: ALLERGY ------- story.append(Paragraph(" 7. ALLERGY HISTORY", section_style)) story.append(Paragraph( '<b>Never miss this.</b> Ask about allergy to any drug or food. ' 'If allergy is present, mark it prominently in <b>RED</b> on the cover of the history sheet. ' 'Undetected drug allergy can be catastrophic during treatment or anaesthesia.', body_style )) # ------- SECTION 8: PERSONAL HISTORY ------- story.append(Paragraph(" 8. PERSONAL HISTORY", section_style)) ph_data = [ ['Item', 'What to Ask'], ['Smoking', 'Cigarettes / cigar / pipe; how many per day; for how many years'], ['Alcohol', 'Type (beer, spirits, etc.); quantity per day/week'], ['Diet', 'Regular or irregular; vegetarian/non-vegetarian; spicy food; nutritional adequacy'], ['Marital Status', 'Married / single / widowed / divorced'], ] pht = Table(ph_data, colWidths=[4*cm, 12.5*cm]) pht.setStyle(TableStyle([ ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#4a7ab5')), ('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('#eaf1fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 5), ('FONTNAME', (0,1), (0,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (0,1), (0,-1), colors.HexColor('#1a3a5c')), ])) story.append(pht) story.append(Paragraph('<b>In women, additionally record:</b>', subsection_style)) for b in [ '<b>Menstrual history</b> — regularity, duration (days), dysmenorrhoea, last menstrual period (LMP)', '<b>Obstetric history</b> — Gravida (G), Para (P), Abortus (A); normal vs Caesarean delivery and indication', '<b>Vaginal discharge</b> — presence, nature, duration', ]: story.append(Paragraph(f'• {b}', bullet_style)) # ------- SECTION 9: FAMILY HISTORY ------- story.append(Paragraph(" 9. FAMILY HISTORY", section_style)) story.append(Paragraph( "Many diseases have a familial tendency. Ask about parents (alive/deceased, causes of death), siblings, and children.", body_style )) fam = [ 'Haemophilia', 'Tuberculosis', 'Diabetes mellitus', 'Essential hypertension', 'Peptic ulcer', 'Breast cancer (and most carcinomas)', 'Haemorrhoids / fissure-in-ano', ] col1 = [Paragraph(f'• {c}', bullet_style) for c in fam[:4]] col2 = [Paragraph(f'• {c}', bullet_style) for c in fam[4:]] while len(col2) < len(col1): col2.append(Spacer(1,1)) fct = Table([[c1, c2] for c1, c2 in zip(col1, col2)], colWidths=[8.25*cm, 8.25*cm]) fct.setStyle(TableStyle([ ('VALIGN', (0,0), (-1,-1), 'TOP'), ('PADDING', (0,0), (-1,-1), 2), ])) story.append(fct) # ------- SECTION 10: IMMUNIZATION ------- story.append(Paragraph(" 10. IMMUNIZATION HISTORY", section_style)) story.append(Paragraph( "Especially relevant in children. Ask about vaccination against:", body_style )) imm = [ 'Diphtheria, Tetanus, Whooping cough (DTP)', 'Poliomyelitis (OPV / IPV)', 'Smallpox (now eradicated)', 'Tuberculosis (BCG)', ] for i in imm: story.append(Paragraph(f'• {i}', bullet_style)) # ------- SUMMARY TABLE ------- story.append(Spacer(1, 0.4*cm)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#4a7ab5'), spaceAfter=8)) story.append(Paragraph("SUMMARY: STANDARD ORDER OF HISTORY TAKING", ParagraphStyle( 'SummaryTitle', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1a3a5c'), alignment=TA_CENTER, spaceBefore=4, spaceAfter=8, fontName='Helvetica-Bold' ))) summary_data = [ ['#', 'Component', 'Key Focus'], ['1', 'Patient Particulars', 'Name, age, sex, religion, occupation, residence'], ['2', 'Chief Complaints', 'Chronological order with duration'], ['3', 'History of Present Illness', 'Onset, progress, treatment received'], ['4', 'Associated Diseases', 'Comorbidities affecting management'], ['5', 'Past History', 'Previous illnesses, operations, trauma'], ['6', 'Drug History', 'All medications; critical for anaesthesia'], ['7', 'Allergy History', 'Drug/food allergy — highlight in RED'], ['8', 'Personal History', 'Habits, diet, marital status, menstrual/OB in women'], ['9', 'Family History', 'Familial diseases in parents, siblings, children'], ['10', 'Immunization History', 'Especially in children'], ] st2 = Table(summary_data, colWidths=[1*cm, 5.5*cm, 10*cm]) st2.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('#eaf1fb'), colors.white]), ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#bbccdd')), ('VALIGN', (0,0), (-1,-1), 'MIDDLE'), ('PADDING', (0,0), (-1,-1), 5), ('ALIGN', (0,0), (0,-1), 'CENTER'), ('FONTNAME', (1,1), (1,-1), 'Helvetica-Bold'), ('TEXTCOLOR', (1,1), (1,-1), colors.HexColor('#1a3a5c')), ])) story.append(st2) # ------- GENERAL PRINCIPLES ------- story.append(Spacer(1, 0.4*cm)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#4a7ab5'), spaceAfter=8)) story.append(Paragraph("GENERAL PRINCIPLES OF HISTORY TAKING", ParagraphStyle( 'PrinciplesTitle', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1a3a5c'), alignment=TA_CENTER, spaceBefore=4, spaceAfter=8, fontName='Helvetica-Bold' ))) principles = [ 'Establish rapport — address the patient by name from the start', 'Use open-ended questions first, then directed/closed questions', 'Let the patient describe their story in their own words', 'Never suggest answers (avoid leading questions)', 'Do not ignore negative findings — they help rule out diagnoses', 'Ensure privacy and comfort; have a chaperone for female patients', 'Record everything clearly; mark allergy in RED on the history sheet cover', 'Reassure the patient throughout the interaction', ] for p in principles: story.append(Paragraph(f'✓ {p}', bullet_style)) # Footer story.append(Spacer(1, 0.5*cm)) story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#bbccdd'), spaceAfter=4)) story.append(Paragraph( "Sources: S Das — A Manual on Clinical Surgery, 13th Edition | Bailey and Love's Short Practice of Surgery, 28th Edition", source_style )) doc.build(story) print("PDF created successfully!") EOF
History Taking
PDF Document · PDF