Tomorrow is my PSM practica exam. Examiner will surely ask from this pdf and i dont know anything about them and i have no concept of this . please help me to understand this topic in very easy language and remember all of them so i will secure better marks
python -m markitdown "/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Pre-testing, Validity, and Reliability _BPH.pptx" 2>&1 | head -300
python3 -c " import pdfplumber files = [ '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf', '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Choosing_Appropriate_Statistical_Methods_BPH1_eb2b51ba_a163_4467.pdf', '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Citation_and_References_updated_e1fa4c04_e418_4020_bfec_8014f8eede80.pdf' ] for f in files: print('='*80) print('FILE:', f.split('/')[-1]) print('='*80) with pdfplumber.open(f) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- Page {i+1} ---') print(text[:3000]) if i >= 15: print('... (truncated at page 16)') break " 2>&1
python3 -c " from pptx import Presentation pptx_path = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Pre-testing, Validity, and Reliability _BPH.pptx' prs = Presentation(pptx_path) for i, slide in enumerate(prs.slides): print(f'=== SLIDE {i+1} ===') for shape in slide.shapes: if hasattr(shape, 'text') and shape.text.strip(): print(shape.text) print() " 2>&1
python3 -c " import pdfplumber # Get remaining pages of all PDFs files = [ ('/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf', 'LIT_REVIEW'), ('/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Choosing_Appropriate_Statistical_Methods_BPH1_eb2b51ba_a163_4467.pdf', 'STATS'), ('/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Citation_and_References_updated_e1fa4c04_e418_4020_bfec_8014f8eede80.pdf', 'CITATION'), ] for fpath, label in files: with pdfplumber.open(fpath) as pdf: total = len(pdf.pages) print(f'{label}: {total} pages total') # Get pages 16 onwards for i in range(16, min(total, 35)): page = pdf.pages[i] text = page.extract_text() if text and text.strip(): print(f'--- {label} Page {i+1} ---') print(text[:2000]) " 2>&1
# Extract PPTX using python-pptx installed differently pip3 show python-pptx 2>&1 | head -5 ls /usr/local/lib/python3*/dist-packages/ 2>/dev/null | grep pptx python3 -c "import importlib; print([m for m in dir(importlib) if 'find' in m.lower()])" find /usr/local/lib -name "*.dist-info" -type d 2>/dev/null | xargs -I{} basename {} | grep -i pptx 2>/dev/null | head find /home -name "*.egg-info" 2>/dev/null | head
python3 -c " import pdfplumber # Get ALL lit review pages fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf' with pdfplumber.open(fpath) as pdf: total = len(pdf.pages) print(f'Total pages: {total}') for i in range(total): page = pdf.pages[i] text = page.extract_text() if text and text.strip(): print(f'--- Page {i+1} ---') print(text[:2500]) " 2>&1
# Try extracting PPTX as ZIP python3 -c " import zipfile, os pptx_path = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Pre-testing, Validity, and Reliability _BPH.pptx' with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and not 'rels' in f]) print('Slides found:', len(slide_files)) for sf in slide_files[:30]: content = z.read(sf).decode('utf-8', errors='ignore') # Extract text between <a:t> tags import re texts = re.findall(r'<a:t[^>]*>([^<]+)</a:t>', content) slide_num = sf.split('slide')[-1].split('.')[0] combined = ' | '.join([t.strip() for t in texts if t.strip()]) if combined: print(f'SLIDE {slide_num}: {combined}') " 2>&1
python3 -c " import zipfile, re pptx_path = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Pre-testing, Validity, and Reliability _BPH.pptx' with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and not 'rels' in f]) for sf in slide_files: content = z.read(sf).decode('utf-8', errors='ignore') texts = re.findall(r'<a:t[^>]*>([^<]+)</a:t>', content) slide_num = re.search(r'slide(\d+)\.xml', sf).group(1) combined = ' | '.join([t.strip() for t in texts if t.strip()]) if combined: print(f'=== SLIDE {slide_num} ===') print(combined) print() " 2>&1
python3 -c " import pdfplumber # Get ALL lit review text fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf' fpath2 = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf' with pdfplumber.open(fpath2) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() if text and text.strip(): print(f'--- Page {i+1} ---') print(text) " 2>&1
Along with all also includes methods/ steps of literature review
python3 -c " import pdfplumber fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf' with pdfplumber.open(fpath) as pdf: total = len(pdf.pages) print(f'Total pages: {total}') for i in range(total): page = pdf.pages[i] # Try extracting all text including tables text = page.extract_text(layout=True) tables = page.extract_tables() print(f'=== PAGE {i+1} ===') if text and text.strip(): print('TEXT:', text[:3000]) if tables: print('TABLES:') for t in tables: for row in t: print(row) print() " 2>&1
python3 -c " import pdfplumber from PIL import Image import io, os fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Literature_Review_2025_MBBS_Revised_5194a3a4_829a_4a86_9275_0ec0d690273d.pdf' outdir = '/home/daytona/workspace/litreview_pages' os.makedirs(outdir, exist_ok=True) with pdfplumber.open(fpath) as pdf: for i, page in enumerate(pdf.pages): img = page.to_image(resolution=150) img.save(f'{outdir}/page_{i+1:02d}.png') print(f'Saved page {i+1}') print('Done') " 2>&1
"A literature review is a survey of scholarly sources on a specific topic."
| # | Purpose | Plain meaning |
|---|---|---|
| 1 | Demonstrate your familiarity with the topic | Show you know what has been done |
| 2 | Develop a theoretical framework and methodology | Build the base for your research |
| 3 | Position your work in relation to other researchers | Show where YOUR study fits |
| 4 | Show how your research addresses a gap or contributes to a debate | Justify why your study is needed |
| 5 | Evaluate the current state of research and demonstrate knowledge of scholarly debates | Show you understand what is argued and what is still unknown |
Step 1: Search for relevant literature
Step 2: Evaluate sources
Step 3: Identify themes, debates, and gaps
Step 4: Outline the structure
Step 5: Write your literature review
| Engine | Type |
|---|---|
| PubMed | Best for medical/biomedical |
| Google Scholar | Broad academic search |
| Scopus | International peer-reviewed journals |
| Operator | Effect | Example | Result |
|---|---|---|---|
| AND | Narrows results (both words must be present) | Fever AND Joint Pain | Only articles with BOTH topics |
| OR | Broadens results (either word) | Fever OR Joint Pain | Articles with ANY of the topics |
| NOT | Narrows/excludes | Typhoid fever NOT children | Typhoid fever - but NOT in children |
| ( ) | Groups terms | (Fever AND joint pain) OR chills | Controls order of operations |
| " " | Exact phrase | "Joint Pain" | Finds exact phrase together |
Remember: Take notes and cite your sources (APA or Vancouver Style)
| Structure Type | Meaning |
|---|---|
| Chronological | Organize by time order - oldest to newest studies |
| Thematic (Qualitative Analysis) | Organize by themes/topics |
| Methodological | Organize by research methods used |
| Theoretical | Organize by different theories |
| Author(s) & Year | Title | Objective | Methodology | Key Findings | Conclusion |
|---|---|---|---|---|---|
| Author 1 et al., YYYY | Title of article | Briefly state aim | Summarize methods (survey, experiment) | Highlight significant results | Main takeaway/implications |
| Author | Title | Objective | Method | Key Findings | Conclusion |
|---|---|---|---|---|---|
| Wakefield et al., 2010 | Impact of tobacco advertising bans | Assess effect of tobacco ad bans | Systematic review | Comprehensive bans reduced smoking especially in youth | Complete advertising bans critical for tobacco control |
| Jha & Peto, 2014 | Global effects of smoking, quitting, taxing | Examine smoking cessation impact | Epidemiological analysis | Tax increases + cessation programs reduced mortality | Higher tobacco taxes are cost-effective |
| Sinha et al., 2012 | Tobacco use among youth in India | Analyze tobacco use patterns | Cross-sectional (Global Youth Tobacco Survey) | Peer pressure + lack of awareness = youth tobacco use | Awareness campaigns targeting youth needed |
Definition โ Survey of scholarly sources on a specific topic
Purpose (5) โ Familiarity, Framework, Position work,
Address gaps, Evaluate current state
5 Steps โ Search โ Evaluate โ Identify themes โ Outline โ Write
Search engines โ PubMed, Google Scholar, Scopus
Boolean operators โ AND (narrows), OR (broadens), NOT (excludes)
Structure types โ Chronological, Thematic, Methodological, Theoretical
Writing format โ Introduction + Body + Conclusion
Table columns โ Author/Year, Title, Objective, Methodology,
Key Findings, Conclusion
Create a study guide PDF combining all 4 topics
ls -la /home/daytona/workspace/ 2>&1 | head -20
mkdir -p /home/daytona/workspace/psm-study-guide && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')" 2>&1
~/psm-study-guide/build_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.platypus.flowables import BalancedColumns
from reportlab.lib.colors import HexColor, white, black
OUTPUT = "/home/daytona/workspace/psm-study-guide/PSM_Study_Guide.pdf"
# โโโ Colour palette โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
C_DARK_BLUE = HexColor("#1a3557") # headings / title bg
C_MID_BLUE = HexColor("#2563a8") # section banners
C_LIGHT_BLUE = HexColor("#dbeafe") # section bg tint
C_ACCENT = HexColor("#e67e22") # orange accent / box
C_ACCENT_LIGHT= HexColor("#fef3c7") # soft yellow boxes
C_GREEN = HexColor("#166534") # green text
C_GREEN_LIGHT = HexColor("#dcfce7") # green box bg
C_RED_LIGHT = HexColor("#fee2e2") # warning box bg
C_RED = HexColor("#991b1b")
C_GRAY_BG = HexColor("#f1f5f9") # table alt rows
C_GRAY_LINE = HexColor("#cbd5e1")
C_WHITE = white
C_BLACK = black
W, H = A4
# โโโ Styles โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def make_styles():
base = getSampleStyleSheet()
def ps(name, parent="Normal", **kw):
return ParagraphStyle(name, parent=base[parent], **kw)
return {
"title_main": ps("title_main", "Title",
fontName="Helvetica-Bold", fontSize=26, textColor=C_WHITE,
alignment=TA_CENTER, spaceAfter=4),
"title_sub": ps("title_sub",
fontName="Helvetica", fontSize=12, textColor=HexColor("#bfdbfe"),
alignment=TA_CENTER, spaceAfter=2),
"title_date": ps("title_date",
fontName="Helvetica-Oblique", fontSize=10, textColor=HexColor("#93c5fd"),
alignment=TA_CENTER),
"h1": ps("h1", fontName="Helvetica-Bold", fontSize=15,
textColor=C_WHITE, spaceAfter=2, spaceBefore=4),
"h2": ps("h2", fontName="Helvetica-Bold", fontSize=12,
textColor=C_DARK_BLUE, spaceAfter=3, spaceBefore=8),
"h3": ps("h3", fontName="Helvetica-Bold", fontSize=10,
textColor=C_MID_BLUE, spaceAfter=2, spaceBefore=5),
"body": ps("body", fontName="Helvetica", fontSize=9,
leading=14, spaceAfter=3, spaceBefore=1),
"body_bold": ps("body_bold", fontName="Helvetica-Bold", fontSize=9,
leading=14, spaceAfter=3),
"bullet": ps("bullet", fontName="Helvetica", fontSize=9,
leading=13, spaceAfter=2, leftIndent=12, firstLineIndent=-8),
"mnemonic": ps("mnemonic", fontName="Helvetica-Bold", fontSize=9,
textColor=C_GREEN, leading=13, spaceAfter=2, leftIndent=8),
"caption": ps("caption", fontName="Helvetica-Oblique", fontSize=8,
textColor=HexColor("#64748b"), alignment=TA_CENTER),
"th": ps("th", fontName="Helvetica-Bold", fontSize=8,
textColor=C_WHITE, alignment=TA_CENTER, leading=10),
"td": ps("td", fontName="Helvetica", fontSize=8,
textColor=C_BLACK, leading=10),
"td_c": ps("td_c", fontName="Helvetica", fontSize=8,
textColor=C_BLACK, alignment=TA_CENTER, leading=10),
"td_bold": ps("td_bold", fontName="Helvetica-Bold", fontSize=8,
textColor=C_DARK_BLUE, leading=10),
"box_title": ps("box_title", fontName="Helvetica-Bold", fontSize=10,
textColor=C_DARK_BLUE, spaceAfter=2),
"box_body": ps("box_body", fontName="Helvetica", fontSize=8.5,
leading=13, spaceAfter=2),
"toc": ps("toc", fontName="Helvetica", fontSize=10,
leading=16, spaceAfter=0),
"toc_bold": ps("toc_bold", fontName="Helvetica-Bold", fontSize=10,
textColor=C_MID_BLUE, leading=16),
}
S = make_styles()
# โโโ Helper builders โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
def cover_block():
"""Returns a Table that acts as a full-width cover banner."""
inner = [
Paragraph("PSM PRACTICA", S["title_main"]),
Paragraph("COMPLETE STUDY GUIDE", ParagraphStyle("ts2",
fontName="Helvetica-Bold", fontSize=18, textColor=HexColor("#fbbf24"),
alignment=TA_CENTER, spaceAfter=6)),
Paragraph("Pre-testing ยท Validity & Reliability ยท Statistical Methods ยท Literature Review ยท Citation", S["title_sub"]),
Spacer(1, 6),
Paragraph("June 2026 | MBBS / BPH Examination Preparation", S["title_date"]),
]
t = Table([[inner]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_DARK_BLUE),
("ROUNDEDCORNERS", [8]),
("TOPPADDING", (0,0), (-1,-1), 28),
("BOTTOMPADDING", (0,0), (-1,-1), 28),
("LEFTPADDING", (0,0), (-1,-1), 20),
("RIGHTPADDING", (0,0), (-1,-1), 20),
]))
return t
def section_banner(text, num):
p = Paragraph(f"<b>TOPIC {num} | {text}</b>", S["h1"])
t = Table([[p]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_MID_BLUE),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 14),
]))
return t
def info_box(title, items, bg=C_LIGHT_BLUE, title_col=C_DARK_BLUE):
content = [Paragraph(f"<b>{title}</b>", ParagraphStyle("bxt",
fontName="Helvetica-Bold", fontSize=9.5, textColor=title_col, spaceAfter=4))]
for item in items:
content.append(Paragraph(f"โข {item}", S["bullet"]))
t = Table([[content]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", [6]),
]))
return t
def mnemonic_box(trick, bg=C_GREEN_LIGHT):
content = [
Paragraph("๐ง MNEMONIC", ParagraphStyle("mn_h", fontName="Helvetica-Bold",
fontSize=9, textColor=C_GREEN, spaceAfter=3)),
Paragraph(trick, ParagraphStyle("mn_b", fontName="Helvetica", fontSize=9,
leading=13, textColor=C_GREEN)),
]
t = Table([[content]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", [6]),
]))
return t
def exam_tip_box(text):
content = [
Paragraph("โญ EXAM TIP", ParagraphStyle("et_h", fontName="Helvetica-Bold",
fontSize=9, textColor=C_RED, spaceAfter=3)),
Paragraph(text, ParagraphStyle("et_b", fontName="Helvetica", fontSize=9,
leading=13, textColor=HexColor("#7f1d1d"))),
]
t = Table([[content]], colWidths=[W - 4*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_RED_LIGHT),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", [6]),
]))
return t
def simple_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [(W - 4*cm) / len(headers)] * len(headers)
header_row = [Paragraph(h, S["th"]) for h in headers]
data = [header_row]
for i, row in enumerate(rows):
bg = C_GRAY_BG if i % 2 == 0 else C_WHITE
data.append([Paragraph(str(c), S["td_c"] if j > 0 else S["td"]) for j, c in enumerate(row)])
t = Table(data, colWidths=col_widths, repeatRows=1)
style = [
("BACKGROUND", (0, 0), (-1, 0), C_DARK_BLUE),
("TEXTCOLOR", (0, 0), (-1, 0), C_WHITE),
("GRID", (0, 0), (-1, -1), 0.3, C_GRAY_LINE),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [C_GRAY_BG, C_WHITE]),
("TOPPADDING", (0, 0), (-1, -1), 5),
("BOTTOMPADDING",(0, 0), (-1, -1), 5),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
]
t.setStyle(TableStyle(style))
return t
def sp(n=1): return Spacer(1, n * 4)
def hr(): return HRFlowable(width="100%", thickness=0.5, color=C_GRAY_LINE, spaceAfter=4, spaceBefore=4)
def b(text): return f"<b>{text}</b>"
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# BUILD DOCUMENT
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=1.8*cm, bottomMargin=2*cm,
title="PSM Practica Study Guide",
author="Exam Prep Notes",
)
story = []
# โโโ COVER โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(Spacer(1, 1.5*cm))
story.append(cover_block())
story.append(Spacer(1, 0.6*cm))
# Table of Contents
toc_data = [
[Paragraph("<b>Topic</b>", S["th"]), Paragraph("<b>Subject</b>", S["th"])],
[Paragraph("1", S["td_c"]), Paragraph("Pre-testing, Pilot Study", S["td"])],
[Paragraph("2", S["td_c"]), Paragraph("Validity (Face, Content, Construct, Criterion)", S["td"])],
[Paragraph("3", S["td_c"]), Paragraph("Reliability (Test-Retest, Inter-rater, Internal Consistency, Split-Half, Parallel)", S["td"])],
[Paragraph("4", S["td_c"]), Paragraph("Choosing Appropriate Statistical Methods", S["td"])],
[Paragraph("5", S["td_c"]), Paragraph("Literature Review โ Steps, Boolean Search, Structure", S["td"])],
[Paragraph("6", S["td_c"]), Paragraph("Citation & References (Vancouver, APA, Bibliography)", S["td"])],
[Paragraph("7", S["td_c"]), Paragraph("Quick Revision Tables & Mnemonics", S["td"])],
]
toc_t = Table(toc_data, colWidths=[1.2*cm, W - 4*cm - 1.2*cm])
toc_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_GRAY_BG, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.3, C_GRAY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(Paragraph("Contents", S["h2"]))
story.append(toc_t)
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 1 โ PRE-TESTING & PILOT STUDY
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("PRE-TESTING & PILOT STUDY", 1))
story.append(sp(2))
story.append(Paragraph("What is Pre-testing?", S["h2"]))
story.append(Paragraph(
"Pre-testing means <b>testing your questionnaire BEFORE the real study starts</b> to find problems, "
"confusing questions, or design flaws โ so you can fix them early.",
S["body"]))
story.append(sp())
story.append(info_box("Benefits of Pre-testing", [
"Detect potential problems with the survey โ reduces errors in data gathering",
"Predict how participants will respond (future recruitment problems, response rates)",
"Refine research โ fix time estimates and appropriate methods of data collection",
], bg=C_LIGHT_BLUE))
story.append(sp(2))
story.append(Paragraph("Challenges of Pre-testing", S["h3"]))
story.append(Paragraph("Survey design difficulties, staff training issues, and logistical challenges that may occur during data collection.", S["body"]))
story.append(sp())
story.append(Paragraph("Pre-testing Methods", S["h2"]))
story.append(simple_table(
["Method", "What happens", "Pro โ
", "Con โ"],
[
["Focus Groups", "Small group discussions with community members where study will be done",
"Useful when topic information is scarce", "Needs well-trained moderators & qualitative researchers"],
["Respondent Interviews", "Respondents interviewed about impressions after taking survey",
"Does NOT interfere with survey-taking process", "Respondents may NOT recall all items they struggled with"],
],
col_widths=[2.5*cm, 5.5*cm, 4.2*cm, 4.2*cm]
))
story.append(sp())
story.append(info_box("How to Conduct Pre-testing", [
"Select 5โ10 participants",
"Convenience sampling is acceptable",
"Consult your IRB (ethics committee) to determine if prior approval is needed",
], bg=C_ACCENT_LIGHT))
story.append(sp(2))
story.append(Paragraph("Pilot Study", S["h2"]))
story.append(Paragraph(
"A pilot study is the <b>first step of the entire research protocol</b> โ a smaller study "
"that assists in planning and modifying the main study.",
S["body"]))
story.append(sp())
story.append(simple_table(
["Type", "Meaning"],
[
["External Pilot Study", "Done separately, independent of the main study"],
["Internal Pilot Study", "Done as part of the main study design"],
],
col_widths=[5*cm, W - 4*cm - 5*cm]
))
story.append(sp())
story.append(Paragraph("Sample Size for Pilot Study", S["h3"]))
story.append(Paragraph(
"Depends on: <b>type of study</b>, <b>problem probability</b>, <b>Confidence Interval (CI)</b>, "
"and <b>Probability of Success (ฯ)</b>.",
S["body"]))
story.append(sp(2))
story.append(mnemonic_box("Pre-testing methods: <b>\"FRI\"</b> โ Focus groups ยท Respondent interviews ยท IRB approval needed"))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 2 โ VALIDITY
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("VALIDITY", 2))
story.append(sp(2))
story.append(Paragraph("What is Validity?", S["h2"]))
story.append(Paragraph(
"<b>Validity = Does the instrument measure what it is SUPPOSED to measure?</b><br/>"
"Example: A ruler is valid for measuring height. A weighing scale is NOT valid for height.",
S["body"]))
story.append(sp())
story.append(mnemonic_box("Types of Validity: <b>\"Funny Cats Chase Prey\"</b><br/>"
"<b>F</b>ace โ <b>C</b>ontent โ <b>C</b>onstruct โ <b>P</b>redictive (Criterion)"))
story.append(sp(2))
# Validity types table
story.append(Paragraph("Types of Validity at a Glance", S["h2"]))
story.append(simple_table(
["Type", "Key Question", "Who Judges?", "Tool"],
[
["Face", "Does it LOOK valid on the surface?", "Individual/Researcher", "Subjective review"],
["Content", "Does it cover ALL domains?", "Panel of experts", "Structured expert review"],
["Construct", "Does it measure the underlying concept?", "Statistical analysis", "Pearson correlation"],
["Criterion", "Does it predict/agree with a standard?", "Statistical analysis", "Correlation"],
],
col_widths=[3.2*cm, 5.5*cm, 4*cm, 3.7*cm]
))
story.append(sp(2))
story.append(Paragraph("1. Face Validity", S["h2"]))
story.append(Paragraph(
'Considers <b>how suitable the content of a test seems on the surface</b>. '
'It is informal and subjective. <b>Face validity is NECESSARY but NOT SUFFICIENT</b> for construct validity.',
S["body"]))
story.append(simple_table(
["Face Validity", "Example"],
[
["HIGH face validity โ
", "Asking birthdate to calculate age โ directly measures age"],
["LOW face validity โ", "Counting gray hairs to guess age โ not a relevant measure"],
],
col_widths=[5*cm, W - 4*cm - 5*cm]
))
story.append(sp())
story.append(Paragraph("How to assess face validity?", S["h3"]))
story.append(Paragraph("โข Are the questions relevant to what is being measured?<br/>โข Does the measurement method seem useful for the variable?", S["body"]))
story.append(sp(2))
story.append(Paragraph("2. Content Validity", S["h2"]))
story.append(Paragraph(
'A <b>judgment by a panel of experts</b> about whether the instrument <b>comprehensively covers '
'all aspects (the full domain)</b> of the construct in a balanced way.',
S["body"]))
story.append(info_box("Dartboard Analogy (from your slides)", [
"Dart hits the board anywhere = Face validity โ
",
"Dart covers ALL areas of the board evenly = Content validity โ
",
"Dart hits only ONE area repeatedly = Content validity FAILS โ",
"Content validity is NOT proved if items are too similar and miss parts of the domain",
], bg=C_ACCENT_LIGHT))
story.append(sp(2))
story.append(Paragraph("3. Construct Validity", S["h2"]))
story.append(Paragraph(
'Refers to whether you can draw <b>inferences about test scores related to the concept being studied</b>.<br/>'
'<i>Example: If a person scores high on a depression questionnaire, do they truly have high depression?</i>',
S["body"]))
story.append(sp())
story.append(simple_table(
["Sub-type", "Memory Trick", "Meaning"],
[
["Convergent validity", "\"CONverge = come together\"",
"Scale SHOULD correlate with SIMILAR/related variables"],
["Discriminant validity", "\"DISCriminate = tell apart\"",
"Scale should NOT correlate with DISSIMILAR variables"],
],
col_widths=[4*cm, 4.5*cm, W - 4*cm - 8.5*cm]
))
story.append(sp())
story.append(mnemonic_box("<b>\"Come Down\"</b> โ <b>C</b>onvergent = similar variables agree | <b>D</b>iscriminant = dissimilar don't agree"))
story.append(sp(2))
story.append(Paragraph("4. Criterion Validity", S["h2"]))
story.append(Paragraph(
'Refers to how well the measurement of one variable can <b>predict or agree with another established measure</b>. '
'Measured using <b>correlation</b>.',
S["body"]))
story.append(simple_table(
["Sub-type", "When measured", "Memory Trick", "Example from slides"],
[
["Concurrent validity", "At the SAME TIME", "\"Current = Now\"",
"Salivary cotinine correlated with number of smokers present NOW"],
["Predictive validity", "Predicts the FUTURE", "\"Predictive = Predict\"",
"Plasma cotinine used to predict future metabolic clearance"],
],
col_widths=[3.5*cm, 3*cm, 3*cm, W - 4*cm - 9.5*cm]
))
story.append(sp(2))
story.append(exam_tip_box(
"You can have Reliability WITHOUT Validity. "
"But you CANNOT have Validity WITHOUT Reliability. "
"Validity requires reliability as a prerequisite."
))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 3 โ RELIABILITY
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("RELIABILITY", 3))
story.append(sp(2))
story.append(Paragraph("What is Reliability?", S["h2"]))
story.append(Paragraph(
'<b>Reliability = Consistency.</b> Same method + same sample + same conditions = same results.<br/>'
'It refers to the <b>homogeneity of the instrument</b> and the <b>degree to which it is free from random error</b>.',
S["body"]))
story.append(sp())
story.append(mnemonic_box(
"<b>\"Tigers In India Sometimes Purr\"</b><br/>"
"<b>T</b>est-Retest ยท <b>I</b>nter-rater ยท <b>I</b>nternal Consistency ยท <b>S</b>plit-Half ยท <b>P</b>arallel Forms"
))
story.append(sp(2))
story.append(simple_table(
["Method", "What it measures", "How", "Key statistic"],
[
["Test-Retest", "Consistency over TIME",
"Same test, same people, TWO different time points โ calculate correlation",
"Pearson correlation"],
["Inter-rater", "Agreement between RATERS/JUDGES",
"Two raters score the same item independently โ compare scores",
"Cohen's Kappa (ฮบ)"],
["Internal Consistency", "All items measure the SAME construct",
"All items administered once โ check inter-item correlation",
"Cronbach's Alpha (ฮฑ)"],
["Split-Half", "Internal consistency via TWO HALVES",
"Divide test into two halves โ correlate scores of each half",
"Spearman-Brown"],
["Parallel Forms", "Equivalence of TWO VERSIONS",
"Two equivalent test versions given to same group โ compare results",
"Pearson correlation"],
],
col_widths=[3.2*cm, 3.5*cm, 6.5*cm, 3.2*cm]
))
story.append(sp(2))
story.append(Paragraph("Inter-rater Reliability โ Cohen's Kappa Interpretation", S["h2"]))
story.append(simple_table(
["Kappa Value", "Interpretation"],
[
["< 0.20", "Slight agreement"],
["0.21 โ 0.40", "Fair agreement"],
["0.41 โ 0.60", "Moderate agreement"],
["0.61 โ 0.80", "Substantial agreement โ
"],
["0.81 โ 1.00", "Almost perfect agreement โ
โ
"],
],
col_widths=[5*cm, W - 4*cm - 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Cronbach's Alpha Interpretation", S["h2"]))
story.append(simple_table(
["Alpha Value", "Interpretation"],
[
["ฮฑ โฅ 0.9", "Excellent โ
โ
"],
["ฮฑ โฅ 0.8", "Good โ
"],
["ฮฑ โฅ 0.7", "Acceptable โ
(minimum threshold)"],
["ฮฑ < 0.7", "Questionable / Poor โ"],
],
col_widths=[5*cm, W - 4*cm - 5*cm]
))
story.append(sp(2))
story.append(Paragraph("Validity vs Reliability โ The Bullseye Analogy", S["h2"]))
story.append(simple_table(
["Darts on board", "Valid?", "Reliable?"],
[
["Spread all over, away from center", "No โ", "No โ"],
["Clustered together but OFF center", "No โ", "Yes โ
"],
["Spread around center (not clustered)", "Yes โ
", "No โ"],
["Clustered tightly AT center", "Yes โ
โ
", "Yes โ
โ
"],
],
col_widths=[9*cm, 2.5*cm, 2.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Threats to Reliability and Validity", S["h2"]))
story.append(Paragraph(
"Not only related to questionnaire design. Threats include:<br/>"
"โข <b>Bias and errors</b> in the conceptualization, design, sampling, and data collection process<br/>"
"โข <b>Contamination of results</b> in lab research as well as natural research settings",
S["body"]))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 4 โ STATISTICAL METHODS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("CHOOSING APPROPRIATE STATISTICAL METHODS", 4))
story.append(sp(2))
story.append(Paragraph("Step 1: Define Variables", S["h2"]))
story.append(simple_table(
["Variable Type", "Sub-type", "Examples"],
[
["Numerical", "Discrete (count)", "Number of children, hospital visits"],
["Numerical", "Continuous (measurement)", "Blood pressure, weight, height"],
["Categorical", "Nominal (no order)", "Blood group, gender, religion"],
["Categorical", "Ordinal (has order)", "Mild/Moderate/Severe, Likert scale"],
],
col_widths=[4*cm, 5*cm, W - 4*cm - 9*cm]
))
story.append(sp(2))
story.append(Paragraph("Step 2: Parametric vs Non-Parametric", S["h2"]))
story.append(simple_table(
["Feature", "Parametric", "Non-Parametric"],
[
["Assumes normal distribution?", "YES", "NO (distribution-free)"],
["Power", "More powerful", "Less powerful"],
["Use when data is...", "Normally distributed", "Skewed, ordinal, or small sample"],
],
col_widths=[5.5*cm, 4.5*cm, W - 4*cm - 10*cm]
))
story.append(sp(2))
story.append(Paragraph("Step 3: Check Normality of Data", S["h2"]))
story.append(simple_table(
["Test", "When to Use", "Interpretation"],
[
["Shapiro-Wilk", "Sample size n < 50", "p > 0.05 โ data is NORMALLY DISTRIBUTED โ
"],
["Kolmogorov-Smirnov", "Sample size n โฅ 50", "p > 0.05 โ data is NORMALLY DISTRIBUTED โ
"],
],
col_widths=[4*cm, 4*cm, W - 4*cm - 8*cm]
))
story.append(sp())
story.append(info_box("Skewness and Kurtosis Rules", [
"Values should be < ยฑ1.0 to be considered normal",
"< โ1 = Left skewed (negative skew) | > +1 = Right skewed (positive skew)",
"< โ1 kurtosis = Platykurtic (flat) | > +1 kurtosis = Leptokurtic (peaked)",
], bg=C_ACCENT_LIGHT))
story.append(sp(2))
story.append(Paragraph("Step 4: The Statistical Test Selection Table", S["h2"]))
story.append(exam_tip_box("This table is the MOST IMPORTANT thing to memorise in the statistics topic!"))
story.append(sp())
story.append(simple_table(
["Outcome Variable", "2 Unrelated Groups", "2 Related Groups", "3+ Unrelated Groups", "3+ Related Groups"],
[
["Continuous (Normal)", "Two-sample t-test", "Paired t-test", "ANOVA", "Mixed-effects model"],
["Ordinal / Non-normal", "Mann-Whitney U\n(Wilcoxon rank sum)", "Wilcoxon signed rank", "Kruskal-Wallis", "Friedman test"],
["Categorical", "Chi-square /\nFisher exact", "McNemar test", "Chi-square /\nFisher exact", "Cochran Q test"],
],
col_widths=[3.5*cm, 3.5*cm, 3.5*cm, 3.5*cm, 3*cm]
))
story.append(sp(2))
story.append(Paragraph("Chi-Square vs Fisher's Exact Test", S["h2"]))
story.append(simple_table(
["Criterion", "Chi-Square Test", "Fisher's Exact Test"],
[
["Sample size", "LARGE", "SMALL"],
["Accuracy", "Approximate", "Exact"],
["Table size", "Any size", "Usually 2ร2"],
["Expected frequency rule", "< 20% of cells have expected freq < 5", "> 20% of cells have expected freq < 5"],
["Interpretation", "Pearson residuals", "Odds Ratio"],
],
col_widths=[4.5*cm, 5.5*cm, W - 4*cm - 10*cm]
))
story.append(sp())
story.append(mnemonic_box("<b>\"Small sample = Fisher, Large sample = Chi\"</b> (F comes before C = F for Few/Small!)"))
story.append(sp(2))
story.append(Paragraph("Regression Models", S["h2"]))
story.append(simple_table(
["Outcome Variable", "Measure of Association", "Regression Model"],
[
["Continuous", "Difference in means", "Linear Regression"],
["Binary (Yes/No)", "Odds Ratio", "Logistic Regression"],
["Count data", "Rate Ratio", "Poisson Regression"],
],
col_widths=[5*cm, 4*cm, W - 4*cm - 9*cm]
))
story.append(sp(2))
story.append(Paragraph("Confounding, Interaction, P-Hacking", S["h2"]))
story.append(simple_table(
["Concept", "Definition", "Example"],
[
["Confounding variable", "A third variable that distorts the relationship between independent and dependent variables",
"Hot weather causes both ice cream sales AND drowning โ weather is the confounder"],
["Main effect", "Independent influence of ONE variable on the outcome (other variables held constant)",
"Exercise lowers blood pressure on average"],
["Interaction effect", "Effect of one variable DEPENDS ON the level of another variable",
"Effect of exercise on BP is stronger in younger people than older people"],
["P-Hacking", "Manipulating data/tests until p < 0.05 is achieved โ produces FALSE POSITIVES",
"Trying multiple combinations of variables until a significant result appears"],
],
col_widths=[4*cm, 6*cm, W - 4*cm - 10*cm]
))
story.append(sp(2))
story.append(info_box("Statistical vs Clinical Significance (Very Important!)", [
"BOTH Drug A and Drug B had p = 0.005 (statistically significant)",
"Drug A increased survival by 5 YEARS โ HIGH clinical significance โ
",
"Drug B increased survival by 5 MONTHS โ LOW clinical significance โ",
"KEY LESSON: Statistical significance does NOT equal clinical significance!",
"If 95% CI includes 1 โ RR is NOT significant (p โฅ 0.05)",
], bg=C_ACCENT_LIGHT))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 5 โ LITERATURE REVIEW
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("LITERATURE REVIEW", 5))
story.append(sp(2))
story.append(Paragraph("What is a Literature Review?", S["h2"]))
story.append(Paragraph(
'A literature review is a <b>survey of scholarly sources on a specific topic</b>. '
'It provides an overview of <b>current knowledge</b>, allowing you to identify relevant theories, '
'methods, and <b>gaps in existing research</b> that you can apply to your own research or thesis.',
S["body"]))
story.append(sp())
story.append(Paragraph("Purpose of Literature Review (5)", S["h2"]))
story.append(simple_table(
["#", "Purpose", "Plain meaning"],
[
["1", "Demonstrate familiarity with the topic", "Show you know what has been done"],
["2", "Develop theoretical framework & methodology", "Build the foundation for your research"],
["3", "Position your work in relation to others", "Show where YOUR study fits in the field"],
["4", "Show how your research addresses a gap", "Justify WHY your study is needed"],
["5", "Evaluate current state of research", "Show you understand ongoing debates"],
],
col_widths=[0.8*cm, 6*cm, W - 4*cm - 6.8*cm]
))
story.append(sp(2))
story.append(Paragraph("5 Key Steps to Writing a Literature Review", S["h2"]))
story.append(mnemonic_box(
"<b>\"Some Elephants In Our World\"</b><br/>"
"<b>S</b>earch โ <b>E</b>valuate โ <b>I</b>dentify themes โ <b>O</b>utline โ <b>W</b>rite"
))
story.append(sp(2))
steps = [
("STEP 1: Search for Relevant Literature", [
"Brainstorm: What to search? Where? How? Who can help? What basic knowledge is needed?",
"Search engines: PubMed (medical), Google Scholar (broad), Scopus (international)",
"Sources: Journal articles, Book chapters, Conference papers, Reports, Reviews",
"Search can be done Online or Offline",
]),
("STEP 2: Evaluate and Select Sources", [
"What question/problem is the author addressing?",
"What are the key concepts and how are they defined?",
"What are the key theories, models, and methods?",
"Does the research use established frameworks or an innovative approach?",
"What are the results and conclusions?",
"How does it relate to other literature in the field?",
"Does it confirm, add to, or challenge established knowledge?",
"What are the strengths and weaknesses of the research?",
"Remember: Take notes and cite sources (APA or Vancouver Style)",
]),
("STEP 3: Identify Themes, Debates, and Gaps", [
"Group articles by common themes (what do many studies agree on?)",
"Note debates (what do studies disagree on?)",
"Find gaps (what has NOT been studied?) โ this JUSTIFIES your research",
]),
("STEP 4: Outline the Structure", [
"Chronological โ organized from oldest to newest studies",
"Thematic (Qualitative Analysis) โ organized by topics/themes (MOST COMMON)",
"Methodological โ organized by research methods used",
"Theoretical โ organized by different theoretical frameworks",
]),
("STEP 5: Write Your Literature Review", [
"Introduction: Clearly establish the focus and PURPOSE of the literature review",
"Body: Summarize & synthesize | Analyze & interpret | Critically evaluate | Write in well-structured paragraphs",
"Conclusion: Summarize KEY FINDINGS and emphasize their significance",
]),
]
for title, points in steps:
story.append(KeepTogether([
Paragraph(title, S["h3"]),
*[Paragraph(f"โข {p}", S["bullet"]) for p in points],
sp(),
]))
story.append(sp(2))
story.append(Paragraph("Boolean Search Operators", S["h2"]))
story.append(simple_table(
["Operator", "Effect", "Medical Example", "Result"],
[
["AND", "Narrows search\n(both must be present)", "Fever AND Joint Pain", "4,432 results โ only articles about BOTH"],
["OR", "Broadens search\n(either word)", "Fever OR Joint Pain", "317,869 results โ any article about either"],
["NOT", "Excludes term", "Typhoid fever NOT children", "10,758 results โ removes children-related articles"],
['( )', "Groups terms", "(Fever AND joint pain) OR chills", "16,774 results โ controls search logic order"],
['" "', "Exact phrase", '"Joint Pain"', "Finds exact phrase together (fewer, more precise)"],
],
col_widths=[1.5*cm, 3.5*cm, 5*cm, W - 4*cm - 10*cm]
))
story.append(sp(2))
story.append(Paragraph("Literature Review Summary Table Format", S["h2"]))
story.append(Paragraph("You must know this table format โ it is the standard template from your slides:", S["body"]))
story.append(simple_table(
["Author(s) & Year", "Title", "Objective", "Methodology", "Key Findings", "Conclusion"],
[
["Author 1 et al., YYYY", "Title of article", "Briefly state aim", "Methods used (survey, experiment)", "Significant results/trends", "Main takeaway/implications"],
["Wakefield et al., 2010", "Impact of tobacco advertising bans", "Assess effect of comprehensive tobacco ad bans", "Systematic review across multiple countries", "Comprehensive bans reduced smoking, especially in youth", "Complete advertising bans are critical for tobacco control"],
],
col_widths=[2.8*cm, 2.8*cm, 2.8*cm, 2.8*cm, 2.8*cm, 2.4*cm]
))
story.append(sp(2))
story.append(Paragraph("Conceptual Framework", S["h2"]))
story.append(Paragraph(
"A <b>conceptual framework</b> is a visual diagram showing <b>relationships between variables</b> in your study.",
S["body"]))
story.append(simple_table(
["Purpose", "Meaning"],
[
["Clarify concepts & propose relationships", "Shows how variables are connected in your study"],
["Explain observations", "Provides a logical explanation for what you observe"],
["Provide context for interpreting findings", "Helps make sense of your results"],
["Encourage theory development", "Helps build theories useful to real practice"],
],
col_widths=[7*cm, W - 4*cm - 7*cm]
))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 6 โ CITATION & REFERENCES
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("CITATION & REFERENCES", 6))
story.append(sp(2))
story.append(Paragraph("What is a Citation?", S["h2"]))
story.append(Paragraph(
'A citation tells readers that certain material in your work came from another source and gives information to find that source. '
'<b>Without citation = PLAGIARISM.</b>',
S["body"]))
story.append(info_box("Why Cite Sources?", [
"Credits the original author โ avoids plagiarism",
"Helps readers find and verify sources",
"Shows the amount of research you have done",
"Protects you from being blamed for someone else's incorrect ideas",
"Not all sources are good โ your own ideas may sometimes be more accurate",
], bg=C_LIGHT_BLUE))
story.append(sp(2))
story.append(Paragraph("Citation Style Comparison", S["h2"]))
story.append(simple_table(
["Style", "Used in", "In-text Format", "Reference order"],
[
["Vancouver", "Medicine / Biomedical (MOST IMPORTANT FOR PSM!)", "Superscript numbersยนยฒยณ", "Order of appearance in text"],
["APA (7th ed)", "Psychology, Social Sciences", "(Author, Year)", "Alphabetical"],
["MLA", "Humanities, Literature", "(Author Page)", "Alphabetical"],
["Chicago", "History, Arts", "Footnotes / Endnotes", "Alphabetical"],
],
col_widths=[2.5*cm, 5.5*cm, 3.5*cm, W - 4*cm - 11.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Vancouver Style (Most Important!)", S["h2"]))
story.append(Paragraph("<b>Format for journal articles:</b>", S["body_bold"]))
story.append(Paragraph(
"Author(s). Title of article. <i>Journal Name</i>. Year;Volume(Issue):Pages.",
ParagraphStyle("fmt", fontName="Helvetica-Oblique", fontSize=9, leading=14,
leftIndent=12, textColor=C_MID_BLUE, spaceAfter=4)))
story.append(Paragraph("<b>Rules:</b>", S["body_bold"]))
story.append(Paragraph(
"โข Authors listed as Surname then Initials<br/>"
"โข Up to 6 authors, then 'et al.'<br/>"
"โข References numbered in ORDER OF APPEARANCE in text<br/>"
"โข Numbers appear as superscripts in the text like thisยน",
S["body"]))
story.append(sp())
story.append(info_box("Vancouver Example (from your slides)", [
"Vaidya SS, Aryal UR, Grjibovski AM, Krettek A. Visual status in primary open-angle glaucoma: "
"A hospital-based report from Nepal. Journal of Kathmandu Medical College. 2014 Oct 9;3(2):49โ57.",
], bg=C_GREEN_LIGHT))
story.append(sp(2))
story.append(Paragraph("APA Style (7th Edition)", S["h2"]))
story.append(Paragraph("<b>Format for journal articles:</b>", S["body_bold"]))
story.append(Paragraph(
"Author, A. A., & Author, B. B. (Year). Title of article. <i>Journal Name, Volume</i>(Issue), Pages. DOI",
ParagraphStyle("fmt2", fontName="Helvetica-Oblique", fontSize=9, leading=14,
leftIndent=12, textColor=C_MID_BLUE, spaceAfter=4)))
story.append(info_box("APA Example (from your slides)", [
"Killinger O. (2022). Examining the relationships between high school students' interests in music "
"and their creativity. International Journal on Social & Education Sciences (IJonSES), 4(3).",
], bg=C_GREEN_LIGHT))
story.append(sp(2))
story.append(Paragraph("Vancouver vs APA โ Quick Comparison", S["h2"]))
story.append(simple_table(
["Feature", "Vancouver", "APA"],
[
["In-text citation", "Superscript number ยน", "(Author, Year)"],
["Reference order", "By order of appearance", "Alphabetical by author"],
["Year placement", "At end before volume/page", "In parentheses after author(s)"],
["Journal name", "Full or abbreviated", "Full name in italics"],
["Used for", "Medical journals, PSM", "Psychology, social science"],
],
col_widths=[5*cm, 5*cm, W - 4*cm - 10*cm]
))
story.append(sp(2))
story.append(Paragraph("Bibliography", S["h2"]))
story.append(Paragraph(
'From Greek: <b>biblion</b> (book) + <b>graphia</b> (to write). '
'An <b>alphabetical list of ALL sources consulted</b> โ including those not directly cited. '
'Written on a separate page with <b>hanging indentation</b>.',
S["body"]))
story.append(simple_table(
["For Books/Journals โ Include", "For Websites โ Include"],
[["Author name, Title, Article title (if journal), Date, Place of publication, Publisher, Volume, Page numbers",
"Author/editor name, Title of website, Organization, URL, DATE OF ACCESS"]],
col_widths=[(W - 4*cm)/2, (W - 4*cm)/2]
))
story.append(sp())
story.append(info_box("Citation Management Software", [
"Mendeley", "Zotero", "EndNote", "RefWorks",
], bg=C_ACCENT_LIGHT))
story.append(PageBreak())
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 7 โ QUICK REVISION & MNEMONICS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story.append(section_banner("QUICK REVISION TABLES & MNEMONICS", 7))
story.append(sp(2))
story.append(Paragraph("All Validity Types โ One-Line Definitions", S["h2"]))
story.append(simple_table(
["Type", "One-line definition"],
[
["Face", "Looks valid on the surface (informal, subjective)"],
["Content", "Covers ALL domains (judged by panel of experts)"],
["Construct", "Measures the underlying concept"],
["Convergent (Construct)", "Correlates WITH similar/related variables"],
["Discriminant (Construct)", "Does NOT correlate with dissimilar variables"],
["Criterion-Concurrent", "Agrees with gold standard NOW (same time)"],
["Criterion-Predictive", "Predicts future outcome (measured later)"],
],
col_widths=[5.5*cm, W - 4*cm - 5.5*cm]
))
story.append(sp(2))
story.append(Paragraph("All Reliability Methods โ One-Line Definitions", S["h2"]))
story.append(simple_table(
["Method", "One-line definition"],
[
["Test-Retest", "Same test, same people, different time โ should give same results"],
["Inter-rater", "Same thing rated by different raters โ should agree (Cohen's Kappa)"],
["Internal Consistency", "All items measure the same thing (Cronbach's Alpha โฅ 0.7)"],
["Split-Half", "Two halves of the test should give similar results"],
["Parallel Forms", "Two equivalent versions of the test should give same results"],
],
col_widths=[5.5*cm, W - 4*cm - 5.5*cm]
))
story.append(sp(2))
story.append(Paragraph("Statistical Tests โ Complete Quick Reference", S["h2"]))
story.append(simple_table(
["Situation", "Use this test"],
[
["2 groups, continuous outcome, NORMAL distribution", "Independent (Two-sample) t-test"],
["2 groups, continuous outcome, NON-NORMAL / ordinal", "Mann-Whitney U test"],
["2 groups, SAME people (paired/repeated), normal", "Paired t-test"],
["2 groups, SAME people, non-normal", "Wilcoxon signed rank test"],
["3+ groups, continuous, normal", "ANOVA (Analysis of Variance)"],
["3+ groups, non-normal / ordinal", "Kruskal-Wallis test"],
["3+ groups, same people, normal", "Mixed-effects model / Repeated measures ANOVA"],
["3+ groups, same people, non-normal", "Friedman test"],
["2 categorical variables, LARGE sample", "Chi-square test"],
["2 categorical variables, SMALL sample / any cell < 5", "Fisher's Exact test"],
["2 categorical variables, SAME people (before/after)", "McNemar test"],
["3+ categorical variables, same people", "Cochran Q test"],
["Check normality (n < 50)", "Shapiro-Wilk test"],
["Check normality (n โฅ 50)", "Kolmogorov-Smirnov test"],
],
col_widths=[9*cm, W - 4*cm - 9*cm]
))
story.append(sp(2))
story.append(Paragraph("All Mnemonics on One Page", S["h2"]))
mnemonics = [
("Types of Validity", '"Funny Cats Chase Prey"', "Face ยท Content ยท Construct ยท Predictive (Criterion)"),
("Reliability Methods", '"Tigers In India Sometimes Purr"', "Test-Retest ยท Inter-rater ยท Internal Consistency ยท Split-Half ยท Parallel"),
("Construct Validity", '"Come Down"', "Convergent = similar variables agree | Discriminant = dissimilar don't agree"),
("5 Steps of Lit Review", '"Some Elephants In Our World"', "Search ยท Evaluate ยท Identify ยท Outline ยท Write"),
("4 Lit Review Structures", '"Cows Think More Than"', "Chronological ยท Thematic ยท Methodological ยท Theoretical"),
("Table Columns", '"A-T-O-M-K-C"', "Author ยท Title ยท Objective ยท Methodology ยท Key Findings ยท Conclusion"),
("Boolean Operators", '"AON Rule"', "AND = narrows | OR = opens | NOT = removes"),
("Fisher vs Chi-square", '"F before C = F for Few"', "Small sample โ Fisher's Exact | Large sample โ Chi-Square"),
("Pre-testing", '"FRI"', "Focus groups ยท Respondent interviews ยท IRB approval"),
("Cronbach's Alpha", '"Seven is the Heaven"', "ฮฑ โฅ 0.7 = Acceptable minimum threshold for internal consistency"),
]
mnem_data = [[Paragraph("<b>#</b>", S["th"]), Paragraph("<b>Topic</b>", S["th"]),
Paragraph("<b>Mnemonic</b>", S["th"]), Paragraph("<b>Meaning</b>", S["th"])]]
for i, (topic, trick, meaning) in enumerate(mnemonics):
bg = C_GRAY_BG if i % 2 == 0 else C_WHITE
mnem_data.append([
Paragraph(str(i+1), S["td_c"]),
Paragraph(topic, S["td_bold"]),
Paragraph(f"<b><i>{trick}</i></b>", ParagraphStyle("mn", fontName="Helvetica-BoldOblique",
fontSize=8, textColor=C_GREEN, leading=10)),
Paragraph(meaning, S["td"]),
])
mnem_t = Table(mnem_data, colWidths=[0.7*cm, 4*cm, 5*cm, W - 4*cm - 9.7*cm])
mnem_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [C_GRAY_BG, C_WHITE]),
("GRID", (0,0), (-1,-1), 0.3, C_GRAY_LINE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(mnem_t)
story.append(sp(2))
story.append(exam_tip_box(
"TOP EXAM QUESTIONS TO EXPECT:\n"
"1. Define validity. Explain the types of validity with examples.\n"
"2. What are the methods of reliability? Explain any two.\n"
"3. What is Cronbach's alpha / Cohen's Kappa? Interpret the values.\n"
"4. How do you choose an appropriate statistical test? Give examples.\n"
"5. Explain the 5 steps of a literature review.\n"
"6. What is Boolean search? Give examples of AND, OR, NOT.\n"
"7. Differentiate Vancouver and APA citation styles.\n"
"8. What is pre-testing? What are its methods and benefits?"
))
story.append(sp(2))
# Final footer box
footer_content = [
Paragraph("GOOD LUCK IN YOUR EXAM TOMORROW! ๐ฏ", ParagraphStyle("fl",
fontName="Helvetica-Bold", fontSize=13, textColor=C_WHITE,
alignment=TA_CENTER, spaceAfter=4)),
Paragraph("You have covered: Pre-testing ยท Validity ยท Reliability ยท Statistics ยท Literature Review ยท Citation",
ParagraphStyle("fs", fontName="Helvetica", fontSize=9, textColor=HexColor("#bfdbfe"),
alignment=TA_CENTER)),
]
foot_t = Table([[footer_content]], colWidths=[W - 4*cm])
foot_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), C_DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 18),
("BOTTOMPADDING", (0,0), (-1,-1), 18),
("LEFTPADDING", (0,0), (-1,-1), 20),
("ROUNDEDCORNERS", [8]),
]))
story.append(foot_t)
# โโโ Build โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc.build(story)
print("PDF created:", OUTPUT)
python3 /home/daytona/workspace/psm-study-guide/build_pdf.py 2>&1
ls -lh /home/daytona/workspace/psm-study-guide/PSM_Study_Guide.pdf
PSM Study Guide
PDF Document ยท PDF
| Section | Content |
|---|---|
| Topic 1 | Pre-testing โ methods, benefits, pilot study, IRB |
| Topic 2 | Validity โ Face, Content, Construct (Convergent/Discriminant), Criterion (Concurrent/Predictive) with examples |
| Topic 3 | Reliability โ all 5 methods, Cronbach's Alpha interpretation table, Cohen's Kappa table, Bullseye analogy |
| Topic 4 | Statistics โ variable types, normality tests, the full test-selection table, Chi-sq vs Fisher's, regression models, p-hacking, clinical vs statistical significance |
| Topic 5 | Literature Review โ 5 steps in detail, Boolean search (AND/OR/NOT) with examples, 4 structure types, table template, conceptual framework |
| Topic 6 | Citation โ Vancouver vs APA comparison, formats, examples from your slides, bibliography rules |
| Topic 7 | Quick revision tables + ALL 10 mnemonics on one page + Top 8 expected exam questions |
This pdf is not opening
python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/psm-study-guide/PSM_Study_Guide.pdf') print('Pages:', len(r.pages)) print('Page 1 text sample:', r.pages[0].extract_text()[:200]) " 2>&1
python3 -c " # Test with a simple PDF first from reportlab.platypus import SimpleDocTemplate, Paragraph from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.pagesizes import A4 doc = SimpleDocTemplate('/home/daytona/workspace/psm-study-guide/test_simple.pdf', pagesize=A4) styles = getSampleStyleSheet() story = [Paragraph('Hello World - Test PDF', styles['Title'])] doc.build(story) print('Simple PDF OK') " 2>&1
~/psm-study-guide/build_v2.py
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.lib.enums import TA_LEFT, TA_CENTER
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.colors import HexColor, white, black
OUTPUT = "/home/daytona/workspace/psm-study-guide/PSM_Study_Guide_v2.pdf"
W, H = A4
# Colours
C_DARK = HexColor("#1a3557")
C_BLUE = HexColor("#2563a8")
C_LBLUE = HexColor("#dbeafe")
C_ORANGE = HexColor("#e67e22")
C_LYELL = HexColor("#fef9c3")
C_GREEN = HexColor("#166534")
C_LGREEN = HexColor("#dcfce7")
C_LRED = HexColor("#fee2e2")
C_RED = HexColor("#991b1b")
C_LGRAY = HexColor("#f1f5f9")
C_GRAY = HexColor("#cbd5e1")
C_WHITE = white
C_BLACK = black
def S(name, **kw):
base = getSampleStyleSheet()
parent = kw.pop("parent", "Normal")
return ParagraphStyle(name, parent=base[parent], **kw)
# Styles dict
ST = {
"title": S("title", parent="Title", fontName="Helvetica-Bold", fontSize=24, textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=6),
"subtitle": S("subtitle", fontName="Helvetica-Bold", fontSize=13, textColor=HexColor("#fbbf24"), alignment=TA_CENTER, spaceAfter=4),
"sub2": S("sub2", fontName="Helvetica", fontSize=10, textColor=HexColor("#bfdbfe"), alignment=TA_CENTER, spaceAfter=3),
"date": S("date", fontName="Helvetica-Oblique", fontSize=9, textColor=HexColor("#93c5fd"), alignment=TA_CENTER),
"h1": S("h1", fontName="Helvetica-Bold", fontSize=13, textColor=C_WHITE, spaceAfter=2, spaceBefore=2),
"h2": S("h2", fontName="Helvetica-Bold", fontSize=11, textColor=C_DARK, spaceAfter=4, spaceBefore=8),
"h3": S("h3", fontName="Helvetica-Bold", fontSize=9.5,textColor=C_BLUE, spaceAfter=3, spaceBefore=5),
"body":S("body",fontName="Helvetica", fontSize=9, leading=13, spaceAfter=3),
"bull":S("bull",fontName="Helvetica", fontSize=9, leading=13, leftIndent=12, firstLineIndent=-8, spaceAfter=2),
"bold":S("bold",fontName="Helvetica-Bold", fontSize=9, leading=13, spaceAfter=3),
"th": S("th", fontName="Helvetica-Bold", fontSize=8, textColor=C_WHITE, alignment=TA_CENTER, leading=10),
"td": S("td", fontName="Helvetica", fontSize=8, leading=10),
"tdc": S("tdc", fontName="Helvetica", fontSize=8, alignment=TA_CENTER,leading=10),
"tdb": S("tdb", fontName="Helvetica-Bold", fontSize=8, textColor=C_DARK, leading=10),
"mn": S("mn", fontName="Helvetica-BoldOblique", fontSize=8.5, textColor=C_GREEN, leading=12),
"tip": S("tip", fontName="Helvetica", fontSize=8.5,textColor=HexColor("#7f1d1d"), leading=12),
}
CW = W - 4*cm # content width
def sp(n=4): return Spacer(1, n)
def hr(): return HRFlowable(width="100%", thickness=0.4, color=C_GRAY, spaceAfter=4, spaceBefore=4)
# โโ Banner helpers (plain coloured Table, no rounded corners) โโ
def cover_banner():
rows = [
[Paragraph("PSM PRACTICA", ST["title"])],
[Paragraph("COMPLETE STUDY GUIDE", ST["subtitle"])],
[Paragraph("Pre-testing ยท Validity & Reliability ยท Statistical Methods ยท Literature Review ยท Citation", ST["sub2"])],
[Spacer(1, 4)],
[Paragraph("June 2026 | MBBS / BPH Examination Preparation", ST["date"])],
]
t = Table([[rows]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_DARK),
("TOPPADDING", (0,0),(-1,-1), 26),
("BOTTOMPADDING",(0,0),(-1,-1), 26),
("LEFTPADDING", (0,0),(-1,-1), 16),
("RIGHTPADDING", (0,0),(-1,-1), 16),
]))
return t
def section_banner(num, text):
p = Paragraph(f"<b>TOPIC {num} | {text}</b>", ST["h1"])
t = Table([[p]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_BLUE),
("TOPPADDING", (0,0),(-1,-1), 8),
("BOTTOMPADDING",(0,0),(-1,-1), 8),
("LEFTPADDING", (0,0),(-1,-1), 12),
]))
return t
def coloured_box(title, items, bg, title_color=C_DARK):
content = [Paragraph(f"<b>{title}</b>", ParagraphStyle("bh", fontName="Helvetica-Bold",
fontSize=9.5, textColor=title_color, spaceAfter=4))]
for item in items:
content.append(Paragraph(f"โข {item}", ST["bull"]))
t = Table([[content]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 8),
("BOTTOMPADDING",(0,0),(-1,-1), 8),
("LEFTPADDING", (0,0),(-1,-1), 12),
("RIGHTPADDING", (0,0),(-1,-1), 12),
("BOX", (0,0),(-1,-1), 0.5, C_GRAY),
]))
return t
def mnemonic(text):
inner = [
Paragraph("MNEMONIC", ParagraphStyle("mnh", fontName="Helvetica-Bold", fontSize=8,
textColor=C_GREEN, spaceAfter=2)),
Paragraph(text, ST["mn"]),
]
t = Table([[inner]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_LGREEN),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 12),
("RIGHTPADDING", (0,0),(-1,-1), 12),
("BOX", (0,0),(-1,-1), 0.5, HexColor("#86efac")),
]))
return t
def exam_tip(text):
inner = [
Paragraph("EXAM TIP", ParagraphStyle("eth", fontName="Helvetica-Bold", fontSize=8,
textColor=C_RED, spaceAfter=2)),
Paragraph(text, ST["tip"]),
]
t = Table([[inner]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_LRED),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING",(0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 12),
("RIGHTPADDING", (0,0),(-1,-1), 12),
("BOX", (0,0),(-1,-1), 0.5, HexColor("#fca5a5")),
]))
return t
def tbl(headers, rows, widths=None):
if widths is None:
widths = [CW / len(headers)] * len(headers)
data = [[Paragraph(h, ST["th"]) for h in headers]]
for i, row in enumerate(rows):
data.append([Paragraph(str(c), ST["td"]) for c in row])
t = Table(data, colWidths=widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,0), C_DARK),
("ROWBACKGROUNDS", (0,1),(-1,-1), [C_LGRAY, C_WHITE]),
("GRID", (0,0),(-1,-1), 0.3, C_GRAY),
("TOPPADDING", (0,0),(-1,-1), 4),
("BOTTOMPADDING", (0,0),(-1,-1), 4),
("LEFTPADDING", (0,0),(-1,-1), 5),
("RIGHTPADDING", (0,0),(-1,-1), 5),
("VALIGN", (0,0),(-1,-1), "MIDDLE"),
]))
return t
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# BUILD
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=1.8*cm, bottomMargin=2*cm,
title="PSM Practica Study Guide",
author="Exam Prep 2026",
)
story = []
# โโ COVER โโ
story += [sp(12), cover_banner(), sp(8)]
toc = tbl(
["#", "Topic"],
[
["1", "Pre-testing & Pilot Study"],
["2", "Validity โ Face, Content, Construct, Criterion"],
["3", "Reliability โ Test-Retest, Inter-rater, Internal Consistency, Split-Half, Parallel"],
["4", "Choosing Appropriate Statistical Methods"],
["5", "Literature Review โ Steps, Boolean Search, Structure, Table"],
["6", "Citation & References โ Vancouver, APA, Bibliography"],
["7", "Quick Revision Tables & All Mnemonics"],
],
widths=[1*cm, CW - 1*cm]
)
story += [Paragraph("Contents", ST["h2"]), toc, PageBreak()]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 1 โ PRE-TESTING
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(1, "PRE-TESTING & PILOT STUDY"), sp(6)]
story += [
Paragraph("What is Pre-testing?", ST["h2"]),
Paragraph("Testing your questionnaire <b>BEFORE</b> the real study starts to find problems and fix them early.", ST["body"]),
sp(4),
coloured_box("Benefits of Pre-testing", [
"Detect potential problems โ reduces errors in data gathering",
"Predict how participants will respond (recruitment problems, response rates)",
"Refine research โ fix time estimates and data collection methods",
], C_LBLUE),
sp(6),
Paragraph("Pre-testing Methods", ST["h2"]),
tbl(
["Method", "What happens", "Pro", "Con"],
[
["Focus Groups", "Small group discussion with community members",
"Useful when topic info is scarce", "Needs well-trained moderators"],
["Respondent Interviews", "Respondents interviewed about survey impressions",
"Does NOT interfere with survey-taking", "May NOT recall all problem items"],
],
widths=[2.5*cm, 5.5*cm, 4*cm, 4*cm]
),
sp(6),
coloured_box("How to Conduct Pre-testing", [
"Select 5-10 participants (convenience sampling is OK)",
"Consult your IRB (ethics committee) before starting",
], C_LYELL),
sp(8),
Paragraph("Pilot Study", ST["h2"]),
Paragraph("The <b>first step of the entire research protocol</b> โ a smaller study to help plan and modify the main study.", ST["body"]),
sp(4),
tbl(
["Type", "Meaning"],
[
["External Pilot Study", "Done separately, independent of the main study"],
["Internal Pilot Study", "Done as part of the main study design"],
],
widths=[5*cm, CW - 5*cm]
),
sp(4),
Paragraph("<b>Sample size for pilot study</b> depends on: type of study, problem probability, Confidence Interval (CI), and Probability of Success (ฯ).", ST["body"]),
sp(6),
mnemonic("<b>Pre-testing methods: \"FRI\"</b> โ Focus groups ยท Respondent interviews ยท IRB approval needed"),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 2 โ VALIDITY
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(2, "VALIDITY"), sp(6)]
story += [
Paragraph("What is Validity?", ST["h2"]),
Paragraph("<b>Validity = Does the instrument measure what it is SUPPOSED to measure?</b><br/>"
"Example: A ruler is valid for height. A weighing scale is NOT valid for height.", ST["body"]),
sp(4),
mnemonic("<b>\"Funny Cats Chase Prey\"</b> โ Face ยท Content ยท Construct ยท Predictive (Criterion)"),
sp(8),
Paragraph("Types of Validity โ Overview Table", ST["h2"]),
tbl(
["Type", "Key Question", "Judged by", "Tool"],
[
["Face", "Does it LOOK valid on the surface?", "Individual/Researcher", "Subjective review"],
["Content", "Does it cover ALL domains?", "Panel of experts", "Expert structured review"],
["Construct", "Does it measure the underlying concept?", "Statistical analysis", "Pearson correlation"],
["Criterion", "Does it predict/agree with a standard?", "Statistical analysis", "Correlation"],
],
widths=[3*cm, 5.5*cm, 4*cm, 3.5*cm]
),
sp(8),
Paragraph("1. Face Validity", ST["h2"]),
Paragraph("How suitable the content seems <b>on the surface</b> โ informal, subjective. "
"<b>NECESSARY but NOT SUFFICIENT</b> for construct validity.", ST["body"]),
tbl(
["Face Validity Level", "Example"],
[
["HIGH face validity", "Asking birthdate to calculate age โ directly measures age"],
["LOW face validity", "Counting gray hairs to guess age โ not a relevant measure"],
],
widths=[5*cm, CW - 5*cm]
),
sp(8),
Paragraph("2. Content Validity", ST["h2"]),
Paragraph("A <b>panel of experts</b> judges whether the instrument <b>covers the FULL DOMAIN</b> of the construct in a balanced way.", ST["body"]),
coloured_box("Dartboard Analogy (from your slides)", [
"Dart hits the board anywhere = Face validity",
"Darts cover ALL areas evenly = Content validity",
"Darts only hit ONE area = Content validity FAILS (domain not fully covered)",
], C_LYELL),
sp(8),
Paragraph("3. Construct Validity", ST["h2"]),
Paragraph("Whether you can draw <b>inferences about test scores related to the concept</b> being studied.<br/>"
"<i>Example: High score on depression questionnaire โ does person truly have high depression?</i>", ST["body"]),
tbl(
["Sub-type", "Memory Trick", "Meaning"],
[
["Convergent", "\"CONverge = come TOGETHER\"", "Scale SHOULD correlate with SIMILAR variables"],
["Discriminant", "\"DISCriminate = tell APART\"", "Scale should NOT correlate with DISSIMILAR variables"],
],
widths=[3.5*cm, 5*cm, CW - 8.5*cm]
),
sp(4),
mnemonic("<b>\"Come Down\"</b> โ Convergent = similar agree | Discriminant = dissimilar don't agree"),
sp(8),
Paragraph("4. Criterion Validity", ST["h2"]),
Paragraph("How well the measurement can <b>predict or agree with</b> another established measure. Measured using <b>correlation</b>.", ST["body"]),
tbl(
["Sub-type", "When measured", "Memory trick", "Example (from your slides)"],
[
["Concurrent", "At the SAME TIME", "\"Current = Now\"", "Salivary cotinine correlated with number of smokers present NOW"],
["Predictive", "Predicts the FUTURE","\"Predictive = Predict\"", "Plasma cotinine used to predict future metabolic clearance"],
],
widths=[3*cm, 3*cm, 3*cm, CW - 9*cm]
),
sp(6),
exam_tip("KEY RULE: You can have Reliability WITHOUT Validity. But you CANNOT have Validity WITHOUT Reliability. Validity requires reliability as a prerequisite."),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 3 โ RELIABILITY
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(3, "RELIABILITY"), sp(6)]
story += [
Paragraph("What is Reliability?", ST["h2"]),
Paragraph("<b>Reliability = Consistency.</b> Same method + same sample + same conditions = same results.<br/>"
"It measures the <b>homogeneity of the instrument</b> and its freedom from random error.", ST["body"]),
sp(4),
mnemonic("<b>\"Tigers In India Sometimes Purr\"</b> โ Test-Retest ยท Inter-rater ยท Internal Consistency ยท Split-Half ยท Parallel Forms"),
sp(8),
Paragraph("Methods of Reliability โ Summary Table", ST["h2"]),
tbl(
["Method", "What it measures", "How", "Key Statistic"],
[
["Test-Retest", "Consistency over TIME", "Same test, same people, 2 different time points โ correlate", "Pearson r"],
["Inter-rater", "Agreement between RATERS", "Two raters score same item โ compare scores", "Cohen's Kappa (ฮบ)"],
["Internal Consistency", "All items measure SAME construct", "All items once โ check inter-item correlation", "Cronbach's Alpha (ฮฑ)"],
["Split-Half", "Consistency of TWO HALVES", "Split test into 2 halves โ correlate both halves", "Spearman-Brown"],
["Parallel Forms", "Equivalence of TWO TEST VERSIONS", "Two equivalent versions given to same group โ compare", "Pearson r"],
],
widths=[3*cm, 3.5*cm, 6*cm, 3.5*cm]
),
sp(8),
Paragraph("Cohen's Kappa (Inter-rater) Interpretation", ST["h2"]),
tbl(
["Kappa Value", "Interpretation"],
[
["< 0.20", "Slight agreement"],
["0.21 - 0.40", "Fair agreement"],
["0.41 - 0.60", "Moderate agreement"],
["0.61 - 0.80", "Substantial agreement (Good)"],
["0.81 - 1.00", "Almost perfect agreement (Excellent)"],
],
widths=[5*cm, CW - 5*cm]
),
sp(8),
Paragraph("Cronbach's Alpha Interpretation", ST["h2"]),
tbl(
["Alpha (ฮฑ) Value", "Interpretation"],
[
["ฮฑ >= 0.9", "Excellent"],
["ฮฑ >= 0.8", "Good"],
["ฮฑ >= 0.7", "Acceptable (minimum threshold)"],
["ฮฑ < 0.7", "Questionable / Poor"],
],
widths=[5*cm, CW - 5*cm]
),
sp(6),
mnemonic("<b>\"Seven is Heaven\"</b> โ ฮฑ โฅ 0.7 is the minimum acceptable threshold for Cronbach's Alpha"),
sp(8),
Paragraph("Validity vs Reliability โ The Bullseye Analogy", ST["h2"]),
tbl(
["Darts on board", "Valid?", "Reliable?"],
[
["Spread all over, away from center", "No", "No"],
["Clustered tightly but OFF center", "No", "Yes"],
["Spread around center (not clustered)", "Yes", "No"],
["Clustered tightly AT center", "Yes", "Yes"],
],
widths=[9*cm, 2.5*cm, 2.5*cm]
),
sp(8),
Paragraph("Threats to Reliability and Validity", ST["h2"]),
Paragraph("Not only related to questionnaire design. Threats include:<br/>"
"โข <b>Bias and errors</b> in conceptualization, design, sampling, and data collection process<br/>"
"โข <b>Contamination of results</b> in lab research as well as natural research settings",
ST["body"]),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 4 โ STATISTICAL METHODS
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(4, "CHOOSING APPROPRIATE STATISTICAL METHODS"), sp(6)]
story += [
Paragraph("Step 1 โ Define Your Variables", ST["h2"]),
tbl(
["Variable Type", "Sub-type", "Examples"],
[
["Numerical", "Discrete (count)", "Number of children, hospital visits"],
["Numerical", "Continuous (measurement)","Blood pressure, weight, height"],
["Categorical","Nominal (no order)", "Blood group, gender, religion"],
["Categorical","Ordinal (has order)", "Mild/Moderate/Severe, Likert scale (1-5)"],
],
widths=[3.5*cm, 5*cm, CW - 8.5*cm]
),
sp(8),
Paragraph("Step 2 โ Parametric vs Non-Parametric Tests", ST["h2"]),
tbl(
["Feature", "Parametric", "Non-Parametric"],
[
["Assumes normal distribution?", "YES", "NO (distribution-free)"],
["Power", "More powerful", "Less powerful"],
["Use when data is...", "Normally distributed", "Skewed, ordinal, or small sample"],
],
widths=[5*cm, 4*cm, CW - 9*cm]
),
sp(8),
Paragraph("Step 3 โ Check Normality of Data", ST["h2"]),
tbl(
["Test", "When to Use", "Interpretation"],
[
["Shapiro-Wilk", "n < 50 (small samples)", "p > 0.05 = normally distributed"],
["Kolmogorov-Smirnov", "n >= 50 (large samples)", "p > 0.05 = normally distributed"],
],
widths=[4*cm, 4*cm, CW - 8*cm]
),
sp(4),
coloured_box("Skewness and Kurtosis Rules", [
"Values within ยฑ1.0 = normal distribution",
"< -1 = Left (negative) skew | > +1 = Right (positive) skew",
"< -1 kurtosis = Platykurtic (flat) | > +1 = Leptokurtic (peaked)",
], C_LYELL),
sp(8),
Paragraph("Step 4 โ Statistical Test Selection Table (MEMORISE THIS)", ST["h2"]),
exam_tip("This is the MOST IMPORTANT table in statistics. The examiner WILL ask you to choose a test."),
sp(4),
tbl(
["Outcome Variable", "2 Unrelated Groups", "2 Related Groups", "3+ Unrelated Groups", "3+ Related Groups"],
[
["Continuous (Normal)", "Two-sample t-test", "Paired t-test", "ANOVA", "Mixed-effects model"],
["Ordinal / Non-normal", "Mann-Whitney U test", "Wilcoxon signed rank", "Kruskal-Wallis", "Friedman test"],
["Categorical", "Chi-square / Fisher exact", "McNemar test", "Chi-square / Fisher exact", "Cochran Q test"],
],
widths=[3.5*cm, 3.5*cm, 3.5*cm, 3.5*cm, 3*cm]
),
sp(8),
Paragraph("Chi-Square vs Fisher's Exact Test", ST["h2"]),
tbl(
["Criterion", "Chi-Square", "Fisher's Exact"],
[
["Sample size", "LARGE", "SMALL"],
["Accuracy", "Approximate", "Exact"],
["Table size", "Any size", "Usually 2x2"],
["Expected freq rule","<20% of cells have expected freq <5", ">20% of cells have expected freq <5"],
["Interpretation", "Pearson residuals", "Odds Ratio"],
],
widths=[4.5*cm, 5*cm, CW - 9.5*cm]
),
sp(4),
mnemonic("<b>\"F before C = F for Few\"</b> โ Small sample = Fisher's Exact | Large sample = Chi-Square"),
sp(8),
Paragraph("Regression Models", ST["h2"]),
tbl(
["Outcome Variable", "Measure of Association", "Regression Model"],
[
["Continuous", "Difference in means", "Linear Regression"],
["Binary (Yes/No)", "Odds Ratio", "Logistic Regression"],
["Count data", "Rate Ratio", "Poisson Regression"],
],
widths=[4.5*cm, 4.5*cm, CW - 9*cm]
),
sp(8),
Paragraph("Confounding, Interaction Effects & P-Hacking", ST["h2"]),
tbl(
["Concept", "Definition", "Example"],
[
["Confounding variable", "A third variable that distorts the relationship between independent and dependent variables",
"Hot weather causes BOTH ice cream sales AND drowning โ weather is the confounder"],
["Main effect", "Independent influence of ONE variable on the outcome (others held constant)",
"Exercise lowers BP on average across all age groups"],
["Interaction effect", "Effect of one variable DEPENDS ON level of another variable",
"Exercise effect on BP is STRONGER in young people than older people"],
["P-Hacking", "Manipulating data/tests until p<0.05 is obtained โ produces FALSE POSITIVES",
"Trying multiple variable combinations until a 'significant' result appears by chance"],
],
widths=[3.5*cm, 5.5*cm, CW - 9*cm]
),
sp(8),
coloured_box("Statistical vs Clinical Significance โ KEY CONCEPT", [
"Drug A: survival +5 YEARS | Drug B: survival +5 MONTHS",
"BOTH had p = 0.005 (statistically significant)",
"Drug A: HIGH clinical significance | Drug B: LOW clinical significance",
"LESSON: Statistical significance does NOT equal clinical significance!",
"If 95% CI includes 1 โ Relative Risk (RR) is NOT significant (p >= 0.05)",
], C_LYELL),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 5 โ LITERATURE REVIEW
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(5, "LITERATURE REVIEW"), sp(6)]
story += [
Paragraph("What is a Literature Review?", ST["h2"]),
Paragraph("A <b>survey of scholarly sources on a specific topic</b>. It provides an overview of current knowledge, "
"allowing you to identify relevant theories, methods, and <b>gaps in existing research</b> "
"that you can apply to your own research or thesis.", ST["body"]),
sp(6),
Paragraph("Purpose of Literature Review (5 purposes)", ST["h2"]),
tbl(
["#", "Purpose", "Plain meaning"],
[
["1", "Demonstrate familiarity with the topic", "Show you know what has been done"],
["2", "Develop theoretical framework and methodology", "Build the foundation for your research"],
["3", "Position your work in relation to other researchers", "Show where YOUR study fits in the field"],
["4", "Show how your research addresses a gap", "Justify WHY your study is needed"],
["5", "Evaluate current state of research", "Show you understand ongoing scholarly debates"],
],
widths=[0.8*cm, 6.5*cm, CW - 7.3*cm]
),
sp(8),
Paragraph("5 Key Steps to Writing a Literature Review", ST["h2"]),
mnemonic("<b>\"Some Elephants In Our World\"</b> โ Search ยท Evaluate ยท Identify ยท Outline ยท Write"),
sp(6),
]
steps = [
("STEP 1: Search for Relevant Literature", [
"Brainstorm: What to search? Where to search? How to search? Who can help?",
"Search engines: PubMed (medical/biomedical), Google Scholar (broad), Scopus (international)",
"Sources: Journal articles, Book chapters, Conference papers, Reports, Reviews",
"Search can be done Online or Offline",
]),
("STEP 2: Evaluate and Select Sources โ ask 8 Wh-Questions", [
"1. What question or problem is the author addressing?",
"2. What are the key concepts and how are they defined?",
"3. What are the key theories, models, and methods?",
"4. Does it use established frameworks or an innovative approach?",
"5. What are the results and conclusions of the study?",
"6. How does it relate to other literature in the field?",
"7. Does it confirm, add to, or challenge established knowledge?",
"8. What are the strengths and weaknesses of the research?",
"Remember: Take notes and cite sources (APA or Vancouver Style)",
]),
("STEP 3: Identify Themes, Debates, and Gaps", [
"Group articles by common THEMES (what do many studies agree on?)",
"Note DEBATES (what do studies disagree on?)",
"Find GAPS (what has NOT been studied yet?) โ this justifies your research",
]),
("STEP 4: Outline the Structure (4 types)", [
"Chronological โ oldest to newest studies (by time order)",
"Thematic (Qualitative Analysis) โ organized by topics/themes (MOST COMMON)",
"Methodological โ organized by research methods used",
"Theoretical โ organized by different theoretical frameworks",
]),
("STEP 5: Write Your Literature Review (3 parts)", [
"Introduction: Clearly establish the FOCUS and PURPOSE of the review",
"Body: Summarize & synthesize | Analyze & interpret | Critically evaluate | Well-structured paragraphs",
"Conclusion: Summarize KEY FINDINGS and emphasize their significance",
]),
]
for title, pts in steps:
story.append(KeepTogether([
Paragraph(title, ST["h3"]),
*[Paragraph(f"โข {p}", ST["bull"]) for p in pts],
sp(4),
]))
story += [
sp(6),
Paragraph("Boolean Search Operators (for literature searching)", ST["h2"]),
tbl(
["Operator", "Effect", "Medical Example", "Result"],
[
["AND", "Narrows (both must be present)", "Fever AND Joint Pain", "4,432 results โ only articles about BOTH topics"],
["OR", "Broadens (either word)", "Fever OR Joint Pain", "317,869 results โ any article about either topic"],
["NOT", "Excludes term", "Typhoid fever NOT children", "10,758 results โ removes all children-related articles"],
['( )', "Groups terms (controls order)", "(Fever AND joint pain) OR chills", "16,774 results โ parentheses control logic order"],
['" "', "Exact phrase search", '"Joint Pain"', "Fewer, more precise results โ finds exact phrase"],
],
widths=[1.5*cm, 3.5*cm, 5*cm, CW - 10*cm]
),
sp(8),
Paragraph("Literature Review Summary Table Template", ST["h2"]),
Paragraph("Know these 6 columns โ this is the standard template from your slides:", ST["body"]),
tbl(
["Author(s) & Year", "Title", "Objective", "Methodology", "Key Findings", "Conclusion"],
[
["Author 1 et al., YYYY", "Title of article", "State aim of study",
"Methods used (survey, experiment, review)", "Significant results/trends", "Main takeaway/implications"],
["Wakefield et al., 2010", "Impact of tobacco advertising bans", "Assess effect of ad bans",
"Systematic review across countries", "Bans reduced smoking in youth", "Complete bans critical for tobacco control"],
["Jha & Peto, 2014", "Global effects of smoking, quitting, taxing", "Examine cessation impact",
"Epidemiological analysis of global data", "Tax + cessation reduced mortality", "Higher taxes are cost-effective"],
],
widths=[2.8*cm, 2.5*cm, 2.8*cm, 3*cm, 3*cm, 2.4*cm]
),
sp(8),
Paragraph("Conceptual Framework", ST["h2"]),
Paragraph("A visual diagram showing <b>relationships between variables</b> in your study.", ST["body"]),
tbl(
["Purpose", "Meaning"],
[
["Clarify concepts and propose relationships", "Shows how variables connect in your study"],
["Explain observations", "Provides logical explanation for what you observe"],
["Provide context for interpreting findings", "Helps make sense of your study results"],
["Encourage theory development", "Helps build theories useful to real-world practice"],
],
widths=[6.5*cm, CW - 6.5*cm]
),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 6 โ CITATION
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(6, "CITATION & REFERENCES"), sp(6)]
story += [
Paragraph("What is a Citation?", ST["h2"]),
Paragraph("A citation tells readers that material in your work came from another source. "
"<b>Without citation = PLAGIARISM.</b>", ST["body"]),
coloured_box("Why Cite Sources?", [
"Credits the original author โ avoids plagiarism",
"Helps readers find and verify sources",
"Shows the amount of research you have done",
"Protects you from being blamed for someone else's incorrect ideas",
], C_LBLUE),
sp(8),
Paragraph("Citation Styles Comparison", ST["h2"]),
tbl(
["Style", "Used in", "In-text Format", "Order"],
[
["Vancouver", "Medicine / Biomedical (MOST IMPORTANT FOR PSM)", "Superscript numbers 1,2,3", "Order of appearance"],
["APA 7th ed", "Psychology, Social Sciences", "(Author, Year)", "Alphabetical"],
["MLA", "Humanities, Literature", "(Author Page)", "Alphabetical"],
["Chicago", "History, Arts", "Footnotes/Endnotes", "Alphabetical"],
],
widths=[2.5*cm, 5.5*cm, 4*cm, CW - 12*cm]
),
sp(8),
Paragraph("Vancouver Style Format (for journal articles)", ST["h2"]),
Paragraph("<b>Format:</b> Author(s). Title of article. <i>Journal Name</i>. Year;Volume(Issue):Pages.", ST["body"]),
Paragraph("<b>Rules:</b><br/>"
"โข Authors listed as Surname then Initials<br/>"
"โข Up to 6 authors, then 'et al.'<br/>"
"โข References numbered in ORDER OF APPEARANCE in text<br/>"
"โข Numbers in text appear as superscripts: like this<super>1</super>",
ST["body"]),
coloured_box("Vancouver Example (from your slides)", [
"Vaidya SS, Aryal UR, Grjibovski AM, Krettek A. Visual status in primary open-angle glaucoma: "
"A hospital-based report from Nepal. Journal of Kathmandu Medical College. 2014 Oct 9;3(2):49-57.",
], C_LGREEN, C_GREEN),
sp(8),
Paragraph("APA Style (7th Edition) Format", ST["h2"]),
Paragraph("<b>Format:</b> Author, A. A., & Author, B. B. (Year). Title of article. "
"<i>Journal Name, Volume</i>(Issue), Pages. https://doi.org/xxxxx", ST["body"]),
coloured_box("APA Example (from your slides)", [
"Killinger O. (2022). Examining the relationships between high school students' interests in music "
"and their creativity. International Journal on Social & Education Sciences (IJonSES), 4(3).",
], C_LGREEN, C_GREEN),
sp(8),
Paragraph("Vancouver vs APA โ Quick Comparison", ST["h2"]),
tbl(
["Feature", "Vancouver", "APA"],
[
["In-text citation", "Superscript number 1", "(Author, Year)"],
["Reference order", "By order of appearance in text","Alphabetical by author surname"],
["Year placement", "Near end, before volume/pages", "In parentheses right after author(s)"],
["Journal name", "Full or abbreviated name", "Full name in italics"],
["Best used for", "Medical journals, PSM", "Psychology, social sciences"],
],
widths=[4*cm, 5*cm, CW - 9*cm]
),
sp(8),
Paragraph("Bibliography", ST["h2"]),
Paragraph("From Greek: <i>biblion</i> (book) + <i>graphia</i> (to write).<br/>"
"An <b>alphabetical list of ALL sources consulted</b> (including those not directly cited).<br/>"
"Written on a <b>separate page</b> at the end, with <b>hanging indentation</b>.",
ST["body"]),
tbl(
["For Books/Journals โ include:", "For Websites โ include:"],
[["Author name, Title, Article title (if journal), Date of publication, Place, Publisher, Volume, Page numbers",
"Author/editor, Website title, Organization/company, URL, DATE OF ACCESS"]],
widths=[CW/2, CW/2]
),
sp(6),
coloured_box("Citation Management Software", [
"Mendeley | Zotero | EndNote | RefWorks",
], C_LYELL),
PageBreak(),
]
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# TOPIC 7 โ QUICK REVISION
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
story += [section_banner(7, "QUICK REVISION TABLES & ALL MNEMONICS"), sp(6)]
story += [
Paragraph("All Validity Types โ One-Line Definitions", ST["h2"]),
tbl(
["Type", "One-line definition"],
[
["Face", "Looks valid on the surface (informal, subjective judgment)"],
["Content", "Covers ALL domains (judged by panel of experts)"],
["Construct", "Measures the underlying concept (tested statistically)"],
["Convergent (Construct)","Correlates WITH similar/related variables"],
["Discriminant (Construct)","Does NOT correlate with dissimilar variables"],
["Criterion-Concurrent", "Agrees with gold standard measured NOW (same time point)"],
["Criterion-Predictive", "Predicts a future outcome (measured at a later time)"],
],
widths=[5*cm, CW - 5*cm]
),
sp(8),
Paragraph("All Reliability Methods โ One-Line Definitions", ST["h2"]),
tbl(
["Method", "One-line definition"],
[
["Test-Retest", "Same test, same people, different time โ should give same results"],
["Inter-rater", "Same thing rated by different raters โ should agree (Cohen's Kappa)"],
["Internal Consistency", "All items measure the same thing โ Cronbach's Alpha >= 0.7"],
["Split-Half", "Two halves of the test should give similar results to each other"],
["Parallel Forms", "Two equivalent test versions given to same group โ should agree"],
],
widths=[5*cm, CW - 5*cm]
),
sp(8),
Paragraph("All Statistical Tests โ Complete Quick Reference", ST["h2"]),
tbl(
["Situation", "Correct Test"],
[
["2 groups, continuous, NORMAL distribution", "Independent (two-sample) t-test"],
["2 groups, continuous, NON-NORMAL or ordinal", "Mann-Whitney U test"],
["2 groups, SAME people (paired/repeated), normal", "Paired t-test"],
["2 groups, SAME people, non-normal", "Wilcoxon signed rank test"],
["3+ groups, continuous, normal", "ANOVA"],
["3+ groups, non-normal or ordinal", "Kruskal-Wallis test"],
["3+ groups, SAME people, normal (repeated)", "Mixed-effects model / Repeated measures ANOVA"],
["3+ groups, SAME people, non-normal", "Friedman test"],
["2 categorical variables, large sample", "Chi-square test"],
["2 categorical variables, small sample / any cell < 5", "Fisher's Exact test"],
["2 categorical variables, SAME people (before/after)", "McNemar test"],
["3+ categorical variables, same people", "Cochran Q test"],
["Check normality, n < 50", "Shapiro-Wilk test"],
["Check normality, n >= 50", "Kolmogorov-Smirnov test"],
],
widths=[9*cm, CW - 9*cm]
),
sp(8),
Paragraph("All Mnemonics โ Complete Reference", ST["h2"]),
tbl(
["Topic", "Mnemonic", "Full Meaning"],
[
["Types of Validity", '"Funny Cats Chase Prey"', "Face ยท Content ยท Construct ยท Predictive (Criterion)"],
["Reliability Methods", '"Tigers In India Sometimes Purr"', "Test-Retest ยท Inter-rater ยท Internal Consistency ยท Split-Half ยท Parallel Forms"],
["Construct Validity", '"Come Down"', "Convergent = similar agree | Discriminant = dissimilar don't agree"],
["5 Steps of Lit Review", '"Some Elephants In Our World"',"Search ยท Evaluate ยท Identify ยท Outline ยท Write"],
["4 Lit Review Structures", '"Cows Think More Than"', "Chronological ยท Thematic ยท Methodological ยท Theoretical"],
["Table Columns", '"A-T-O-M-K-C"', "Author ยท Title ยท Objective ยท Methodology ยท Key Findings ยท Conclusion"],
["Boolean Operators", '"AON Rule"', "AND = narrows | OR = opens/broadens | NOT = removes/excludes"],
["Fisher vs Chi-square", '"F before C = F for Few"', "Small sample = Fisher's Exact | Large = Chi-Square"],
["Pre-testing Methods", '"FRI"', "Focus groups ยท Respondent interviews ยท IRB approval"],
["Cronbach's Alpha", '"Seven is Heaven"', "ฮฑ >= 0.7 is minimum acceptable threshold"],
],
widths=[4*cm, 5*cm, CW - 9*cm]
),
sp(8),
exam_tip(
"TOP 8 EXPECTED EXAM QUESTIONS:\n"
"1. Define validity. Explain its types with examples.\n"
"2. What are the methods of reliability? Explain any two with examples.\n"
"3. What is Cronbach's alpha / Cohen's Kappa? How do you interpret the values?\n"
"4. How do you choose an appropriate statistical test? (Show the selection table)\n"
"5. Explain the 5 steps of a literature review in detail.\n"
"6. What is Boolean search? Give examples of AND, OR, and NOT.\n"
"7. Differentiate Vancouver and APA citation styles with examples.\n"
"8. What is pre-testing? What are its methods, benefits, and how is it conducted?"
),
sp(8),
]
# Footer banner
foot = Table([[
[
Paragraph("GOOD LUCK IN YOUR EXAM TOMORROW!", ParagraphStyle("fl",
fontName="Helvetica-Bold", fontSize=14, textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=4)),
Paragraph("Pre-testing ยท Validity ยท Reliability ยท Statistics ยท Literature Review ยท Citation",
ParagraphStyle("fs", fontName="Helvetica", fontSize=9, textColor=HexColor("#bfdbfe"), alignment=TA_CENTER)),
]
]], colWidths=[CW])
foot.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_DARK),
("TOPPADDING", (0,0),(-1,-1), 18),
("BOTTOMPADDING",(0,0),(-1,-1), 18),
("LEFTPADDING", (0,0),(-1,-1), 16),
]))
story.append(foot)
doc.build(story)
print("PDF built:", OUTPUT)
python3 /home/daytona/workspace/psm-study-guide/build_v2.py 2>&1
# Verify the new PDF is valid and check its size + page count python3 -c " from pypdf import PdfReader r = PdfReader('/home/daytona/workspace/psm-study-guide/PSM_Study_Guide_v2.pdf') print('Pages:', len(r.pages)) for i in range(min(3, len(r.pages))): t = r.pages[i].extract_text() print(f'Page {i+1} preview:', t[:120].replace('\n',' ')) " ls -lh /home/daytona/workspace/psm-study-guide/PSM_Study_Guide_v2.pdf
PSM Study Guide v2
PDF Document ยท PDF
ROUNDEDCORNERS styling that some PDF viewers don't support. This new version removes that and uses only standard, universally compatible PDF elements - it should open on any device (phone, laptop, Adobe Reader, browser, etc.).Tomorrow is my psm viva. And professor will aks from this research proposal that I made. Please provide me possible question he might ask from this
python3 -c " import pdfplumber fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Research proposal.Shishir.pdf' with pdfplumber.open(fpath) as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): text = page.extract_text() if text and text.strip(): print(f'--- PAGE {i+1} ---') print(text) " 2>&1
"Association of Diurnal Sleeping Pattern and Obesity among adults aged 18โ60 years in Jumla, Nepal."
Diurnal means relating to the day. Diurnal sleeping pattern refers to sleep behaviors during daytime or the 24-hour sleep-wake cycle โ including sleep duration, sleep timing (what time you go to bed and wake up), and sleep quality. In this study, I am examining how these patterns relate to obesity.
Obesity is a growing public health problem in Nepal linked to diabetes and cardiovascular disease. Emerging evidence shows sleep disturbances disrupt circadian rhythms, affecting hormones like leptin and ghrelin that regulate appetite. However, this relationship is understudied in low-resource settings like Nepal โ especially in Karnali Province. This study fills that gap by providing locally relevant data.
To assess the relationship between diurnal sleep patterns and obesity among adults in Jumla.
- To determine the prevalence of obesity and irregular sleep patterns in the study population
- To examine the association between sleep duration, timing, and obesity
- To identify confounding factors (e.g., diet, sedentary behavior) influencing this relationship
Adults with prolonged diurnal sleeping patterns have a higher likelihood of being obese.
I used a cross-sectional study design. It is appropriate because:
- It measures exposure (sleep pattern) and outcome (obesity) at the same point in time
- It is cost-effective and quick to conduct
- Suitable for assessing prevalence and associations
- Appropriate for a student-level research proposal
The major limitation is that it cannot establish causality. We cannot determine whether poor sleep CAUSES obesity, or whether obesity DISRUPTS sleep โ the direction of the relationship cannot be confirmed. This is called the "chicken-and-egg problem" or reverse causality.
A cohort study (prospective longitudinal design) โ where we follow participants over time and observe who develops obesity among those with and without disturbed sleep patterns. This would allow causal inference.
Quantitative survey with anthropometric measurements. Primary data will be collected through structured questionnaires and physical measurements (BMI, waist circumference).
Sample size N = 100, calculated using the formula: n = zยฒpq / eยฒ Where:
- z = 1.96 (standard normal variant at 95% confidence level)
- p = 0.20 to 0.70 (expected prevalence based on previous studies)
- q = 1 - p
- e = 0.08 (8% acceptable error)
p = 20% was used based on estimated prevalence of obesity in similar Nepali populations. p = 70% was used for sleep disorder prevalence. The higher value gives a larger (safer) sample size, so I used the one that gave n = 100 as a feasible minimum for a student project.
Stratified random sampling in three stages:
- Stratification by demographics: Urban vs. rural areas, age groups (18โ30, 31โ45, 46โ60 years), and gender
- Cluster sampling โ randomly select 10 health centers (5 urban Nagarpalika, 5 rural Gaupalika) across Jumla
- Systematic random sampling โ from each health center's patient registry, every 5th eligible adult is invited until strata quotas are met
Stratified sampling ensures proportional representation of important subgroups (urban/rural, age, gender). Simple random sampling might by chance over-represent one group. Since obesity and sleep patterns differ across age, gender, and urban/rural settings, stratification ensures the sample reflects the true population diversity.
- Adults aged 18โ60 years residing in Karnali Province for โฅ6 months
- Willing to provide written informed consent
- No diagnosed sleep disorders (e.g., sleep apnea) โ to isolate the effect of diurnal patterns
- Pregnant women โ hormonal changes affect both weight and sleep independently
- Shift workers โ have irregular sleep schedules not related to diurnal patterns
- Chronic illnesses (e.g., thyroid disorders) or medications affecting sleep/weight โ these confound the relationship
The study will be carried out at the Out-Patient Department (OPD) of KAHS Hospital, Jumla โ a tertiary level hospital with high patient flow, enabling easy recruitment of the required sample size.
- Independent variable: Diurnal sleep patterns โ sleep duration (short <6 hrs, optimal 7โ9 hrs, long >9 hrs), sleep timing (early vs. late bedtime, social jetlag), sleep quality (fragmented sleep, insomnia)
- Dependent variable: Obesity indicators โ BMI (โฅ30 kg/mยฒ), waist circumference, body fat percentage
Age, gender, socioeconomic status, genetic predisposition to obesity, stress and mental health status, diet (junk food), physical activity, and caffeine/alcohol consumption.
The framework links diurnal sleep patterns (independent variable) to obesity (dependent variable) through mediating pathways:
- Hormonal imbalance โ sleep deprivation decreases leptin (satiety hormone) and increases ghrelin (hunger hormone), leading to increased caloric intake. Cortisol also rises, promoting visceral fat.
- Disrupted glucose metabolism โ short sleep reduces insulin sensitivity, causing hyperglycemia and fat storage.
- Behavioral factors โ sleep loss increases cravings for high-calorie foods and reduces physical activity.
- Circadian misalignment โ late-night sleepers ("night owls") have higher BMI due to delayed melatonin and disrupted lipid metabolism. Confounders like diet, stress, and genetics are controlled in the analysis.
- Leptin is the "satiety hormone" produced by fat cells โ it signals the brain to stop eating. Sleep deprivation DECREASES leptin.
- Ghrelin is the "hunger hormone" produced by the stomach โ it stimulates appetite. Sleep deprivation INCREASES ghrelin. Together, this leads to overeating and weight gain โ which is the key hormonal mechanism linking poor sleep to obesity.
Social jetlag is the discrepancy in sleep timing between workdays and weekends/free days. For example, sleeping at 11 PM on weekdays but at 2 AM on weekends. This creates a form of chronic circadian misalignment similar to flying across time zones repeatedly, and is associated with higher BMI.
- Pittsburgh Sleep Quality Index (PSQI) โ a validated questionnaire assessing sleep duration, latency, efficiency, and disturbances
- Sleep Timing Questionnaire โ bedtime, wake time, social jetlag
- WHO STEPS Survey โ physical activity, sedentary behavior, dietary habits
- Anthropometric measurements โ calibrated weighing scale + stadiometer (for BMI), measuring tape (for waist circumference)
- 7-Day Sleep Diary โ daily self-recorded sleep/wake times
- Perceived Stress Scale-4 (PSS-4) โ stress levels
- Bioelectrical Impedance Analysis (BIA) โ optional, for body fat percentage
The PSQI is a validated, self-administered questionnaire that measures sleep quality over the past month. It assesses 7 components: subjective sleep quality, sleep latency, sleep duration, habitual sleep efficiency, sleep disturbances, use of sleeping medications, and daytime dysfunction. Total score ranges from 0โ21; a score >5 indicates poor sleep quality.
BMI = Weight (kg) / Heightยฒ (mยฒ) Measured using calibrated weighing scales and stadiometers. Obesity is defined as BMI โฅ 30 kg/mยฒ.
Using a measuring tape at the midpoint between the lower rib and the iliac crest, with the participant standing and breathing normally. This measures abdominal/central obesity.
- Males: > 90 cm (Asian cut-off) or > 102 cm (WHO global cut-off)
- Females: > 80 cm (Asian cut-off) or > 88 cm (WHO global cut-off) Asian cut-offs are used for South Asian populations including Nepal.
Pilot testing was done with n = 20 participants to:
- Refine the questionnaire and identify unclear or confusing questions
- Test logistics and time required for data collection
- Ensure Cronbach's alpha > 0.7 for internal consistency of tools
Bias Cause Mitigation Selection bias Non-representative sample Stratified random sampling, multiple sites Measurement bias Self-reported sleep data (recall) Validated tools (PSQI), sleep diary, trained collectors Confounding bias Diet, stress, genetics Multivariable logistic regression, stratified analysis Social desirability bias Underreporting bad habits Anonymous surveys, neutral question framing Observer bias Data collector's expectations Blinding, double data entry, inter-rater reliability (ICC >0.9) Recall bias Misremembering sleep habits 7-day sleep diary instead of long-term recall Publication bias Only significant results published Pre-registration on ClinicalTrials.gov, report all outcomes
Selection bias occurs when the study sample is not representative of the target population. In my study, recruiting only from OPD may include people who are already unwell, which could over-represent certain health conditions. Stratified random sampling with multiple sites (urban and rural health centers) helps minimize this.
Recall bias occurs when participants cannot accurately remember past behaviors (e.g., "how many hours did you sleep last month?"). I addressed it by using a 7-day sleep diary for real-time recording, and by using the PSQI which limits recall to the past month only with specific structured questions.
- Descriptive statistics โ frequency, mean, standard deviation for participant characteristics
- Chi-square test โ for association between categorical variables (e.g., sleep category vs. obese/non-obese)
- Logistic regression โ to determine the strength and direction of association between sleep patterns and obesity while adjusting for confounders (age, sex, physical activity)
- Software: SPSS
Because the dependent variable (obesity) is categorical/binary (obese = BMI โฅ30 vs. non-obese = BMI <30). Logistic regression is used when the outcome is binary. Linear regression is used for continuous outcomes.
Logistic regression gives the Odds Ratio (OR) โ which tells us how much more likely obese participants are to have a particular sleep pattern compared to non-obese participants, after adjusting for confounders. An OR > 1 means increased odds of obesity with that sleep pattern.
A confounder is a variable that is associated with BOTH the independent and dependent variables and can distort the true relationship between them. In my study, physical activity is a confounder โ sedentary people tend to sleep more AND be more obese. If not controlled, physical activity could make it appear that sleep alone causes obesity. I control for confounders using multivariable logistic regression.
- Informed consent โ written consent obtained by the principal investigator and trained research assistants
- Voluntariness โ participation is voluntary, participants can withdraw at any time without consequences
- Confidentiality โ anonymous IDs replace personal identifiers in datasets
- Minimal risk โ only discomfort during anthropometric measurement
- Benefits โ participants receive awareness about their own health status
- Cultural sensitivity โ study is designed to be sensitive to Nepali culture and social values
- IRC approval โ submitted to the Institutional Review Committee (IRC) of KAHS for ethical approval
The study was submitted to the Institutional Review Committee (IRC) of Karnali Academy of Health Sciences (KAHS) for ethical approval before commencing.
No vulnerable populations (children, prisoners) are involved. However, pregnant women were excluded from the study because they represent a vulnerable group where hormonal changes independently affect sleep and weight, which could confound results.
- Cross-sectional design โ cannot establish causality (reverse causality possible)
- Limited generalizability โ sample restricted to Jumla OPD; may not represent all Nepal populations
- BMI limitation โ BMI does not distinguish fat from muscle mass; may misclassify muscular individuals
- Self-reported data โ sleep diary and questionnaire data depend on participant honesty and memory
- Exclusion of shift workers โ may reduce generalizability
Identification of potential sleep-related behavioral risk factors for obesity in the Nepali context, providing data to inform:
- Public health interventions โ sleep hygiene education programs
- Policy recommendations โ integrating sleep health into existing obesity prevention programs
- Scientific contribution โ publication in peer-reviewed journals to add to global evidence on sleep-obesity association
| Question | Answer |
|---|---|
| What is BMI cut-off for obesity? | โฅ 30 kg/mยฒ |
| What is overweight BMI? | 25โ29.9 kg/mยฒ |
| What is optimal sleep duration? | 7โ9 hours per night (adults) |
| What is short sleep? | < 6 hours |
| What is long sleep? | > 9 hours |
| What software will you use for analysis? | SPSS |
| What is your study population? | Adults aged 18โ60 years |
| What is your study site? | OPD, KAHS Hospital, Jumla |
| How many references do you have? | 10 references |
| What citation style did you use? | Vancouver style |
| What is the PSQI? | Pittsburgh Sleep Quality Index โ score >5 = poor sleep |
| What is WHO STEPS? | WHO STEPwise approach to Surveillance โ standardized tool for NCD risk factors |
| What is the total budget? | NPR 6,200 |
| Is your study funded? | No |
| What is ICC? | Intraclass Correlation Coefficient โ measures inter-rater reliability (>0.9 = excellent) |
| What is Cronbach's alpha used for? | Internal consistency of questionnaire (>0.7 acceptable) |
Given answer is very diffuct to memorize provide me very easy sentences so i will remeber
"I studied whether sleeping late or sleeping too little makes people fat. I took 100 adults from Jumla, measured their weight and sleep habits, and checked if there is a connection. I used a questionnaire and weighing scale to collect data."
"It means your daily sleep routine โ when you sleep, how long you sleep, and how well you sleep."
"In Nepal, obesity is increasing. People also sleep less and sleep late. No one studied this connection in Jumla before. So I studied it."
"To find out โ does bad sleep make people obese in Jumla?"
"People who sleep at wrong times or sleep too little are more likely to be obese."
"Cross-sectional study โ I collected data from everyone at ONE point in time."
"It is fast, cheap, and good for finding associations. Perfect for a student study."
"I cannot say which came first โ bad sleep OR obesity. It's like asking: did the chicken come first or the egg?"
"A cohort study โ follow people over years and see who becomes obese."
"100 adults, aged 18 to 60 years."
"n = zยฒpq/eยฒ"
- z = 1.96 (confidence level 95%)
- p = 20% (obesity prevalence)
- e = 8% (error allowed)
"Stratified random sampling โ I divided people into groups first (urban/rural, age, gender), then randomly picked from each group."
"So that all types of people are included โ young, old, male, female, urban, rural. Not just one type."
"3 steps:
- Divided into groups (strata)
- Randomly picked 10 health centers (5 urban, 5 rural)
- From each center, selected every 5th patient from the register"
"Adults 18-60 years, living in Karnali for 6+ months, willing to sign consent, and NO diagnosed sleep disorders."
Easy memory: "PSC" โ Pregnant, Shift workers, Chronic illness
- Pregnant โ hormones change weight and sleep naturally
- Shift workers โ already sleep at wrong times (not their choice)
- Chronic illness (thyroid etc.) โ medicines affect weight/sleep
- Independent (cause) = Sleep pattern (how long, when, how well)
- Dependent (effect) = Obesity (BMI, waist size)
"Things that can confuse my results โ like diet, exercise, stress, age, gender." Easy example: "A person may be obese because they eat a lot โ not because of bad sleep. So I need to control for diet."
"Bad sleep โ hormones go wrong โ person eats more and moves less โ becomes obese."
Bad sleep โ Leptin falls + Ghrelin rises โ Hunger increases โ Eats more โ Obesity
Easy trick: "Leptin = Lean (stops eating). Ghrelin = Greedy (makes you hungry)."
- Leptin = tells brain "I'm full" โ bad sleep = less leptin = always hungry
- Ghrelin = tells brain "I'm hungry" โ bad sleep = more ghrelin = eat more
"Sleeping at different times on weekdays vs weekends. Like sleeping at 10 PM on weekdays but 2 AM on weekends. Your body gets confused โ like flying to a different time zone every weekend."
- PSQI โ sleep quality questionnaire
- Scale & tape โ weighing scale + measuring tape (for BMI and waist)
- WHO STEPS โ diet and exercise questionnaire
- Anthropometric measurements โ weight, height, waist
"Pittsburgh Sleep Quality Index โ a standard questionnaire that gives a score for your sleep. Score more than 5 = bad sleep."
"BMI = Weight divided by Height squared. Obesity = BMI โฅ 30."
"Tape around the waist, at the midpoint between the lowest rib and the hip bone. Obesity in Asians = men > 90 cm, women > 80 cm."
"To test if questions are clear and the process works well. Done on 20 people before the real study."
| Bias | One-line meaning | My solution |
|---|---|---|
| Selection | Wrong people selected | Used stratified random sampling |
| Self-report (Recall) | People forget or lie about sleep | Used 7-day sleep diary (write daily) |
| Social desirability | People say what sounds good | Anonymous survey, neutral questions |
| Systematic (Measurement) | Wrong measurements taken | Trained staff, calibrated tools |
| Observer | Staff expects certain results | Blinded staff, double measurements |
| Confounding | Another factor is the real cause | Logistic regression to control confounders |
"When the people you study don't represent the real population. Like studying obesity by only going to a gym โ you'll miss the obese people who don't go to gym."
"People don't remember correctly. If I ask 'how many hours did you sleep last YEAR?' โ nobody knows. So I used a 7-day sleep diary instead."
Easy memory: "D + C + L"
- Descriptive stats = mean, frequency (describe the sample)
- Chi-square = check if sleep category and obesity are related
- Logistic regression = find how strongly sleep affects obesity, after removing effects of age, diet, exercise
"Because my outcome (obese vs not obese) is YES or NO โ not a number. Logistic regression is for YES/NO outcomes. Linear regression is for number outcomes like blood pressure."
"Odds Ratio (OR). It tells me โ people with bad sleep are HOW MANY TIMES more likely to be obese compared to those with good sleep."
"A third person who is secretly causing both things. Example: A person eats junk food (confounders) โ sleeps badly AND becomes obese. So it LOOKS like sleep causes obesity, but it's actually the junk food."
- Voluntary โ no one is forced
- Confidential โ no names used, only codes
- Consent โ written consent taken before anything
- Risk โ only minimal (slight discomfort during measurement)
- Approval โ IRC KAHS approval obtained
"IRC โ Institutional Review Committee of KAHS, Jumla."
- Cross-sectional = can't prove cause and effect
- Generalizability = only Jumla OPD, not all Nepal
- Self-report = people may not report sleep accurately; BMI doesn't show fat vs muscle
| What | Answer |
|---|---|
| Sample size | 100 |
| Age group | 18โ60 years |
| Study site | KAHS OPD, Jumla |
| Study design | Cross-sectional |
| Obesity BMI cut-off | โฅ 30 kg/mยฒ |
| Optimal sleep | 7โ9 hours |
| Short sleep | < 6 hours |
| PSQI cut-off | > 5 = bad sleep |
| Cronbach's alpha needed | > 0.7 |
| Confidence level | 95% |
| Budget | NPR 6,200 |
| References | 10 (Vancouver style) |
| Software | SPSS |
| Pilot testing size | 20 |
| Sampling error | 8% |
"My study is about the relationship between sleep patterns and obesity. I studied 100 adults aged 18 to 60 years at KAHS OPD in Jumla. I used a cross-sectional design, collected data using the PSQI questionnaire and anthropometric measurements, and analyzed the data using Chi-square test and logistic regression on SPSS. The main finding I expect is that people who sleep late or sleep less are more likely to be obese."
Tomorrow is my PSM practica exam. Examiner will surely ask from this pdf and i dont know anything about them and i have no concept of this . please help me to understand this topic in very easy language and remember all of them so i will secure better marks
python3 -c " import pdfplumber fpath = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/LEPTOSPIROSIS%20Dr.Bipul%20Singh-compressed-compressed%C2%A0%281%29.pdf' with pdfplumber.open(fpath) as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): text = page.extract_text() if text and text.strip(): print(f'--- PAGE {i+1} ---') print(text) " 2>&1
python3 -c " import zipfile, re pptx_path = '/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/High Altitude Sickness.pptx' with zipfile.ZipFile(pptx_path, 'r') as z: slide_files = sorted([f for f in z.namelist() if f.startswith('ppt/slides/slide') and 'rels' not in f]) print('Total slides:', len(slide_files)) for sf in slide_files: content = z.read(sf).decode('utf-8', errors='ignore') texts = re.findall(r'<a:t[^>]*>([^<]+)</a:t>', content) slide_num = re.search(r'slide(\d+)\.xml', sf).group(1) combined = ' | '.join([t.strip() for t in texts if t.strip()]) if combined: print(f'=== SLIDE {slide_num} ===') print(combined) print() " 2>&1
"A rat pees in floodwater. A farmer walks barefoot through it. Bacteria enter through his skin cut โ and he gets Leptospirosis."
๐ RATS
๐พ RICEFIELDS
๐ง๏ธ RAINFALL
"Rats + Ricefields + Rainfall = Leptospirosis"
1 million cases per year worldwide
60,000 deaths per year
"Rats Carry Germs, People Hate Dark Wetlands"
| Factor | Details |
|---|---|
| Sex | Males > Females (more outdoor/farm work) |
| Age | 20โ45 years most commonly affected |
| Occupation | Farmers, rice/sugarcane workers, sewage workers, vets, miners, soldiers, fishermen, lab workers |
| Immunity | Infection gives serovar-specific immunity (only for that type) |
Farmers ยท Abattoir workers ยท Rice paddy workers ยท Sewage workers ยท Veterinarians ยท Miners ยท Soldiers
โญ Most Common = Indirect contact with contaminated water through broken skin
Direct person-to-person transmission = RARE
| Anicteric (Mild) | Icteric (Severe / Weil's Disease) | |
|---|---|---|
| Jaundice? | โ No | โ YES (yellow skin/eyes) |
| Fever | โ | โ |
| Muscle pain | โ (myalgia) | โ (especially CALF muscles) |
| Headache | โ | โ |
| Conjunctival suffusion | โ | โ |
| Kidney involvement | Mild | Acute kidney failure |
| Bleeding tendency | Mild | YES โ severe |
| Outcome | Usually recovers | Can be fatal (5โ15% mortality) |
Red eyes WITHOUT pus/discharge (not like conjunctivitis โ no sticky discharge) This PLUS jaundice = classic Leptospirosis
| Test | When used | Details |
|---|---|---|
| Dark field microscopy | Early (blood) | Sees the spiral bacteria directly |
| Culture | Blood early; urine after week 1 | Takes 1โ6 weeks to become positive |
| MAT (Microscopic Agglutination Test) | After 7โ10 days | Gold standard serological test |
| IgM ELISA | Very early | Positive as early as 2 days into illness! |
| Leptodipstick test | Quick field test | Now available |
| Drug | Use |
|---|---|
| Penicillin | Drug of CHOICE (general) |
| Doxycycline | DOC in uncomplicated cases; also weekly for prophylaxis |
| Ceftriaxone, Cefotaxime | Severe cases |
| Tetracycline, Amoxicillin, Azithromycin | Alternatives |
โญ Weekly Doxycycline = prophylaxis for very high-risk groups (soldiers, farmers during floods)
| Method | Details |
|---|---|
| Environmental | Avoid contaminated water, proper waste disposal |
| Rodent control | Kill and control rats (main reservoir) |
| PPE | Long boots, gloves, long sleeves for workers |
| Vaccination | Available in Italy, Cuba, France, Russia, China for high-risk workers |
| Health education | Awareness during rainy season in endemic areas |
| Chemoprophylaxis | Doxycycline weekly for high-risk groups |
Remember: "DMSHY HE"
Can cause foetal death or abortion โ always mention this!
"You climb too fast to a high mountain. Your body doesn't get enough oxygen. Your brain and lungs swell. That's High Altitude Sickness."
| Level | Height |
|---|---|
| High altitude starts | 2,700 m (9,000 feet) |
| Very high altitude | 3,601 โ 4,500 m |
| Extreme high altitude | > 5,400 m (permanent acclimatization very difficult) |
| Acclimatization needed from | 2,500 m onwards |
At high altitude, air pressure is lower โ less oxygen per breath โ body is starved of oxygen
AMS = Acute Mountain Sickness (mildest)
HACE = High Altitude Cerebral Edema (brain swells โ dangerous!)
HAPE = High Altitude Pulmonary Edema (lungs fill with fluid โ most fatal!)
โญ Headache is the KEY symptom โ no headache = no AMS
โญ ATAXIA (loss of coordination/balance) = key sign of HACE โญ HACE = MEDICAL EMERGENCY
โญ Shortness of breath at REST = key sign of HAPE โญ HAPE is the most common cause of DEATH from altitude sickness
| Score | Severity |
|---|---|
| 3โ5 | Mild AMS |
| 6โ9 | Moderate AMS |
| 10โ12 | Severe AMS |
โญ Must be assessed at least 6 hours after reaching the altitude
"Giving your body time to get used to less oxygen โ like slowly adjusting to cold water instead of jumping in"
| Drug | Use |
|---|---|
| Acetazolamide (Diamox) | 125 mg every 12 hours โ for people with known susceptibility |
| Nifedipine | 30 mg every 12 hours โ if history of pulmonary edema |
| Tadalafil | 10 mg every 12 hours โ alternative |
| Condition | Action | Drug |
|---|---|---|
| Mild AMS (score 3โ5) | Rest, no more ascent | Ibuprofen / Paracetamol (for headache), Metoclopramide/Domperidone (for nausea) |
| Severe AMS (score >5) | DESCEND at least 1,000 m | Acetazolamide 250 mg every 12 hr + Dexamethasone 4โ8 mg every 6 hr |
| HACE | DESCEND immediately + hospital | Dexamethasone 4 mg IM/IV every 6 hr + Oโ 2โ4 L/min |
| HAPE | DESCEND IMMEDIATELY | Nifedipine 20โ30 mg every 8 hr (1st choice) + Oโ 2โ4 L/min |
| Both HACE + HAPE | Descend + Oโ | Nifedipine + Dexamethasone 4โ8 mg every 6 hr |
โญ THE MOST IMPORTANT TREATMENT = DESCEND! Always descend first!
A portable inflatable pressure bag big enough for a person. Simulates descending to a lower altitude by increasing pressure around the person. Used when actual descent is impossible (bad weather, night time). Emergency field treatment!
| Feature | AMS | HACE | HAPE |
|---|---|---|---|
| Organ affected | General | Brain | Lungs |
| Key symptom | Headache | Ataxia + confusion | Breathlessness at rest |
| Severity | Mild | Severe | Most fatal |
| Treatment | Rest + painkillers | Descend + Dexamethasone | Descend + Nifedipine |
| Emergency? | No | YES | YES (most dangerous) |
| Topic | Number |
|---|---|
| Leptospirosis incubation | 10 days (4โ20 days) |
| Leptospirosis cases/year | > 1 million |
| Leptospirosis deaths/year | 60,000 |
| Overall mortality | < 10% |
| Severe mortality | 5โ15% |
| Pulmonary hemorrhage mortality | > 50% |
| IgM ELISA positive by | Day 2 of illness |
| MAT becomes positive by | 7โ10 days |
| Culture takes | 1โ6 weeks |
| High altitude starts | 2,700 m |
| Acclimatize from | 2,500 m |
| Max ascent per night | 300 m |
| Rest day every | 2โ3 days |
| AMS symptoms start | 4โ12 hours after ascent |
| Lake Louise Score for AMS | โฅ 3 (with headache) |
| Diamox (prophylaxis) dose | 125 mg every 12 hours |
| Nifedipine (HAPE) dose | 20โ30 mg every 8 hours |
| Dexamethasone (HACE) dose | 4 mg every 6 hours |
Tomorrow is my psm practical exam and i dont know anything about RDA. please provide me answer in easy language and trick to remember all the necessary concepts also so that she will impress from my answer
RDA Recommended Dietary Allowance PSM community medicine complete notes 2024
RDA India ICMR recommended dietary allowance values table calories protein vitamins minerals PSM Park
https://www.nin.res.in/rdabook/brief_note.pdf
https://www.slideshare.net/slideshow/recommended-dietary-allโฆ
RDA India ICMR reference man woman calorie protein fat requirements sedentary moderate heavy work Park PSM exam
https://metabolichealthdigest.com/nutrient-requirements-for-โฆ
"RDA is the average daily amount of a nutrient that is sufficient to meet the nutritional requirements of nearly all (97.5%) healthy people in a population."
RDA = Mean requirement + 2 ร Standard Deviation (2SD)i.e., RDA = Mean ยฑ 2SD
| Feature | Value |
|---|---|
| Age | 20โ39 years |
| Weight | 60 kg |
| Height | 163 cm |
| Health | Healthy, well-nourished since childhood |
| Work | 8 hours moderate activity (light industry/agriculture) |
| Sleep | 8 hours in bed |
| Rest | 8 hours sitting/light leisure |
| Feature | Value |
|---|---|
| Age | 20โ39 years |
| Weight | 50 kg |
| Height | 151 cm |
| Health | Healthy, well-nourished |
| Work | 8 hours moderate activity (household/light industry) |
| Sleep | 8 hours in bed |
๐ง Memory trick: "Man = 60 kg, Woman = 50 kg โ Man has 10 kg extra!"
Sedentary โ Moderate โ Heavy
| Activity | Description |
|---|---|
| Sedentary | Office work, sitting most of the day, minimal physical effort |
| Moderate | Walking, light fieldwork, household work |
| Heavy | Farming, construction, mining, manual labor |
| Group | Sedentary | Moderate | Heavy |
|---|---|---|---|
| Man | 2110 kcal | 2710 kcal | 3470 kcal |
| Woman | 1660 kcal | 2130 kcal | 2720 kcal |
| Pregnant woman | +350 kcal extra | ||
| Lactating (0โ6m) | +600 kcal extra | ||
| Lactating (6โ12m) | +520 kcal extra |
๐ง Memory trick for Man's calories: "2110, 2710, 3470 โ each goes up by about 600!" ๐ง Memory trick for Woman's calories: "1660, 2130, 2720 โ starts lower than man!" ๐ง Pregnant = +350 ("3 months, 3 extra-50") ๐ง Lactating = +600 first 6 months ("6 months = 6 hundreds")
| Group | RDA (per day) |
|---|---|
| Adult Man | 60 g/day (1.0 g/kg body weight) |
| Adult Woman | 55 g/day (1.0 g/kg body weight) |
| Pregnant woman | +15 g/day extra |
| Lactating (0โ6m) | +25 g/day extra |
| Lactating (6โ12m) | +18 g/day extra |
| Children 1โ3 yr | 12.5 g/day |
| Children 4โ6 yr | 16 g/day |
| Children 7โ9 yr | 23 g/day |
๐ง Easy trick: "Man = 60g protein (same as his weight in kg). Woman = 55g (same as her weight in kg). Protein = 1g per kg body weight!"
3 : 1 : 2.5 (ICMR 2020) โ previously was 11:1:3
| Activity | Men | Women |
|---|---|---|
| Sedentary | 25 g/day | 20 g/day |
| Moderate | 30 g/day | 25 g/day |
| Heavy | 40 g/day | 30 g/day |
๐ง Trick: "Men need 5g more fat than women at each activity level!" Fiber: 30 g per 2000 kcal (safe intake)
| Nutrient | Men (RDA 2020) | Women (RDA 2020) | Why important |
|---|---|---|---|
| Vitamin A | 1000 ยตg/day | 840 ยตg/day | Vision, immunity |
| Vitamin D | 600 IU/day | 600 IU/day | Bone health, calcium absorption |
| Vitamin C | 80 mg/day | 65 mg/day | Immunity, antioxidant |
| Vitamin B12 | 2.2 ยตg/day | 2.2 ยตg/day | Nerve function, RBC |
| Folate | 300 ยตg/day | 220 ยตg/day | Cell division |
| Folate (pregnancy) | โ | +80 ยตg/day extra | Prevents neural tube defects |
| Thiamine (B1) | 1.8 mg/day | 1.7 mg/day | Energy metabolism |
| Riboflavin (B2) | 2.5 mg/day | 2.4 mg/day | Energy, growth |
| Niacin (B3) - sedentary | 14 mg/day | 11 mg/day | Energy metabolism |
| Iron | 19 mg/day | 29 mg/day | Hemoglobin formation |
| Calcium | 1000 mg/day | 1000 mg/day | Bones and teeth |
| Zinc | 17 mg/day | 13 mg/day | Immunity, growth |
| Iodine | 150 ยตg/day | 150 ยตg/day | Thyroid hormone |
| Magnesium | 440 mg/day | 370 mg/day | Muscle/nerve function |
๐ง Iron memory trick: "Women need MORE iron than men (29 vs 19) because they lose blood every month (menstruation)!" ๐ง Calcium trick: "1000 mg = 1 gram of calcium daily โ both men and women" ๐ง Vitamin D trick: "600 IU โ same for everyone!"
| Condition | Extra Energy | Extra Protein | Extra Iron | Extra Folate |
|---|---|---|---|---|
| Pregnancy | +350 kcal | +15 g | +38 mg (total ~67 mg) | +80 ยตg |
| Lactation 0โ6m | +600 kcal | +25 g | โ | +50 ยตg |
| Lactation 6โ12m | +520 kcal | +18 g | โ | +40 ยตg |
๐ง Pregnant woman trick: "3P" = +350 kcal, +Protein 15g, +Prevention of anaemia (iron)
"A balanced diet provides all nutrients in the right amounts and proportions needed for health."
| Nutrient | Energy per gram |
|---|---|
| Carbohydrate | 4 kcal/g |
| Protein | 4 kcal/g |
| Fat | 9 kcal/g |
| Alcohol | 7 kcal/g |
๐ง "C and P = 4, F = 9, Alcohol = 7" (Fat has the most calories!)
EAR = The amount of a nutrient that meets the needs of 50% of people
- RDA is HIGHER than EAR
- EAR for protein = 0.66 g/kg/day
- RDA for protein = 0.83 g/kg/day
The maximum safe amount โ beyond this, toxicity can occur
EAR < RDA < UL
(50% covered) (97.5% covered) (don't go beyond this)
๐ง "EAR covers half, RDA covers almost all, UL is the danger zone"
| Factor | How it affects RDA |
|---|---|
| Age | Children and elderly have different needs |
| Activity level | Heavy workers need more calories |
| Sex | Men and women have different needs |
| Physiological state | Pregnancy and lactation increase needs |
| Growth | Growing children need more protein, calcium |
| Loss/absorption | Iron absorption is low from plant foods โ higher RDA |
| Pathological stress | Illness increases some requirements |
| RDA | EAR | |
|---|---|---|
| Covers | 97.5% of population | 50% of population |
| Formula | Mean + 2SD | Mean only |
| Use | For population planning | For research/surveys |
| Protein (adult) | 0.83 g/kg/day | 0.66 g/kg/day |
| What | Number |
|---|---|
| Reference Man weight | 60 kg |
| Reference Woman weight | 50 kg |
| Reference Man/Woman age | 20โ39 years |
| Man protein | 60 g/day |
| Woman protein | 55 g/day |
| Sedentary man calories | 2110 kcal |
| Sedentary woman calories | 1660 kcal |
| Moderate man calories | 2710 kcal |
| Heavy man calories | 3470 kcal |
| Extra calories in pregnancy | +350 kcal |
| Extra calories in lactation | +600 kcal |
| Iron - woman | 29 mg/day |
| Iron - man | 19 mg/day |
| Calcium | 1000 mg/day |
| Vitamin D | 600 IU/day |
| Vitamin C (man) | 80 mg/day |
| Iodine | 150 ยตg/day |
| RDA covers | 97.5% population |
| EAR covers | 50% population |
| Fat = calories/gram | 9 kcal/g |
| Carb = calories/gram | 4 kcal/g |
| Protein = calories/gram | 4 kcal/g |
"RDA stands for Recommended Dietary Allowance. It is defined as the average daily dietary intake level that is sufficient to meet the nutritional requirements of nearly 97.5% of healthy individuals in a population. In India, it is set by the ICMR โ most recently revised in 2020 by ICMR-NIN. It is calculated as the mean requirement plus twice the standard deviation (Mean + 2SD). ICMR has defined a reference Indian man of 60 kg and reference woman of 50 kg, both aged 20โ39 years, to calculate these allowances."
RDA according to nepal
RDA recommended dietary allowance Nepal DFTQC values table calories protein vitamins minerals 2024
Nepal recommended dietary allowance reference man woman calorie protein fat requirements sedentary moderate heavy PSM KAHS
https://www.scribd.com/document/695437933/UNIT-2-Nutritionalโฆ
Nepal dietary guidelines DFTQC NPC nutrition policy reference man 65kg woman 55kg calorie 2500 kcal Nepal specific RDA
https://www.fao.org/nutrition/education/food-dietary-guideliโฆ
"Nepal" "RDA" "2500" OR "2250" OR "reference man" "55 kg" OR "60 kg" calories protein "Nepal specific" nutrition requirements community medicine MBBS
RDA according to nepal