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

Reading File
Reading File
Reading File
Reading File
Reading File
Running Command

python -m markitdown "/home/daytona/workspace/attachments/f4da7189-00eb-49ab-b288-d9609aab9ba0/Pre-testing, Validity, and Reliability _BPH.pptx" 2>&1 | head -300

Running Command

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

Running Command

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

Running Command

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

Running Command

# 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

Running Command

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

Running Command

# 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

Running Command

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

Running Command

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

Done! I've read all 4 of your files and made complete, easy notes. Here's a summary of what I covered:

What's in your notes above:

๐Ÿ“ File 1 - Pre-testing, Validity & Reliability (PPTX)

  • Pre-testing: what it is, 2 methods (Focus Groups vs Respondent Interviews), pilot study
  • 4 Types of Validity: Face โ†’ Content โ†’ Construct (Convergent + Discriminant) โ†’ Criterion (Concurrent + Predictive) - all with examples from your slides
  • 5 Methods of Reliability: Test-Retest, Inter-rater (Kappa), Internal Consistency (Cronbach's ฮฑ), Split-Half, Parallel Forms
  • The classic Validity vs Reliability bullseye diagram explained in words

๐Ÿ“ File 2 - Choosing Statistical Methods

  • Variable types, parametric vs non-parametric
  • Normality tests (Shapiro-Wilk vs Kolmogorov-Smirnov)
  • The full statistical test selection table (t-test, ANOVA, Mann-Whitney, Chi-square, Fisher's, etc.)
  • Chi-square vs Fisher's exact criteria
  • Confounding, interaction effects, p-hacking, clinical vs statistical significance

๐Ÿ“ File 3 - Citation & References

  • Vancouver style (most important for MBBS/PSM) with format and examples
  • APA style format and examples
  • Bibliography vs References
  • Citation software

๐Ÿ“ File 4 - Literature Review

  • Purpose, table template format, the assignment
The mnemonics at the end will help you remember everything quickly. Best of luck tomorrow - you've got this! ๐Ÿ’ช

Along with all also includes methods/ steps of literature review

Running Command

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

Running Command

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

Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
Reading File
I now have all the content. Here is the complete Literature Review section - fully extracted from your PDF slides, in easy language:

๐Ÿ“– LITERATURE REVIEW - COMPLETE NOTES

(From your Literature Review PDF - every slide read!)


๐Ÿ” What is a Literature Review?

"A literature review is a survey of scholarly sources on a specific topic."
It provides an overview of current knowledge, allowing you to:
  • Identify relevant theories
  • Identify methods already used
  • Find gaps in existing research
  • Apply findings to your own research or thesis

๐ŸŽฏ Purpose of Literature Review (5 purposes)

#PurposePlain meaning
1Demonstrate your familiarity with the topicShow you know what has been done
2Develop a theoretical framework and methodologyBuild the base for your research
3Position your work in relation to other researchersShow where YOUR study fits
4Show how your research addresses a gap or contributes to a debateJustify why your study is needed
5Evaluate the current state of research and demonstrate knowledge of scholarly debatesShow you understand what is argued and what is still unknown

๐Ÿ“‹ 5 KEY STEPS to Writing a Literature Review

Your slide says exactly these 5 steps (this is a very likely exam question!):
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
Mnemonic: "S-E-I-O-W" โ†’ "Some Elephants In Our World"

STEP 1: Search for Relevant Literature

Brainstorming before searching - ask yourself:
  • What to search?
  • Where to search?
  • How to search?
  • Who will help?
  • Who is the expert in your department, hospital, or locally?
  • What basic knowledge is needed?
Where to search (Search Engines):
EngineType
PubMedBest for medical/biomedical
Google ScholarBroad academic search
ScopusInternational peer-reviewed journals
Sources to search:
  • Online OR Offline
  • From: Journal articles, Book chapters, Conference papers, Reports, Reviews

๐Ÿ”‘ Boolean Search (Very Important!)

Boolean operators help you refine your search. Your slides have 5 operators:
OperatorEffectExampleResult
ANDNarrows results (both words must be present)Fever AND Joint PainOnly articles with BOTH topics
ORBroadens results (either word)Fever OR Joint PainArticles with ANY of the topics
NOTNarrows/excludesTyphoid fever NOT childrenTyphoid fever - but NOT in children
( )Groups terms(Fever AND joint pain) OR chillsControls order of operations
" "Exact phrase"Joint Pain"Finds exact phrase together
Quick memory: AND = smaller (stricter), OR = bigger (broader), NOT = removes
From your slides - real examples:
  • Fever AND Joint Pain โ†’ 4,432 results
  • Fever AND "Joint Pain" โ†’ 780 results (exact phrase, fewer)
  • (Fever AND joint pain) OR chills โ†’ 16,774 results (more because OR)
  • Typhoid fever NOT children โ†’ 10,758 results (removed children papers)

STEP 2: Evaluate and Select Sources

Ask these 8 "Wh" questions (from your slide) when reading each article:
  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 the research use established frameworks or take an innovative approach?
  5. What are the results and conclusions of the study?
  6. How does the publication 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 your sources (APA or Vancouver Style)

STEP 3: Identify Themes, Debates, and Gaps

After reading articles, group them by:
  • Common themes (what do many studies agree on?)
  • Debates (what do studies disagree on?)
  • Gaps (what has NOT been studied yet? - this justifies YOUR study)

STEP 4: Outline the Structure

4 types of structure (from your slides):
Structure TypeMeaning
ChronologicalOrganize by time order - oldest to newest studies
Thematic (Qualitative Analysis)Organize by themes/topics
MethodologicalOrganize by research methods used
TheoreticalOrganize by different theories
Which to use?
  • Most common in PSM research: Thematic structure

STEP 5: Write Your Literature Review

3 parts of a literature review:
Introduction:
  • Clearly establish the focus and purpose of the review
  • State what the review will cover
Body:
  • Summarize and synthesize the articles
  • Analyze and interpret the findings
  • Critically evaluate the sources
  • Write in well-structured paragraphs
Conclusion:
  • Summarize key findings from the literature
  • Emphasize their significance to your research

๐Ÿ“Š Conceptual Framework

What is a Conceptual Framework?

A visual/diagram that shows the relationships between variables in your study.
Purpose of Conceptual Framework:
  1. To clarify concepts and propose relationships among concepts in a study
  2. To explain observations
  3. To provide context for interpreting study findings
  4. To encourage theory development useful to practice
Example from your slides: (Adolescent Reproductive Health Wellness Program)
  • Demographics (Age, Civil Status, Education, Family order, Economic status) โ†’ Self-Esteem (High/Moderate/Low) โ†’ Parenting Styles (Authoritative/Democratic/Permissive)

๐Ÿ“ Literature Review Summary Table (Template)

Your slides show this exact table format - know these columns!
Author(s) & YearTitleObjectiveMethodologyKey FindingsConclusion
Author 1 et al., YYYYTitle of articleBriefly state aimSummarize methods (survey, experiment)Highlight significant resultsMain takeaway/implications
Real example from your slides (Tobacco topic):
AuthorTitleObjectiveMethodKey FindingsConclusion
Wakefield et al., 2010Impact of tobacco advertising bansAssess effect of tobacco ad bansSystematic reviewComprehensive bans reduced smoking especially in youthComplete advertising bans critical for tobacco control
Jha & Peto, 2014Global effects of smoking, quitting, taxingExamine smoking cessation impactEpidemiological analysisTax increases + cessation programs reduced mortalityHigher tobacco taxes are cost-effective
Sinha et al., 2012Tobacco use among youth in IndiaAnalyze tobacco use patternsCross-sectional (Global Youth Tobacco Survey)Peer pressure + lack of awareness = youth tobacco useAwareness campaigns targeting youth needed

โšก QUICK SUMMARY - LITERATURE REVIEW

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

๐Ÿง  MNEMONICS FOR LITERATURE REVIEW

  1. 5 Steps: "Some Elephants In Our World" = Search, Evaluate, Identify, Outline, Write
  2. Boolean operators: "And Or Not" = AND narrows, OR opens, NOT removes (AON)
  3. 4 Structure types: "Cows Think More Than" = Chronological, Thematic, Methodological, Theoretical
  4. Table columns: "A-T-O-M-K-C" = Author, Title, Objective, Methodology, Key findings, Conclusion

So now your complete notes cover ALL 4 topics. The examiner is most likely to ask you to:
  • Name and explain the 5 steps of a literature review - you have all 5 with details
  • What is Boolean search? Give examples - AND/OR/NOT all explained
  • What are the types of structure? - Chronological, Thematic, Methodological, Theoretical
  • Draw/describe the table template for summarizing literature
  • What is a conceptual framework and its purpose? - all 4 purposes ready
Good luck tomorrow! ๐ŸŽฏ

Create a study guide PDF combining all 4 topics

Running Command

ls -la /home/daytona/workspace/ 2>&1 | head -20

Running Command

mkdir -p /home/daytona/workspace/psm-study-guide && python3 -c "from reportlab.lib.pagesizes import A4; print('reportlab OK')" 2>&1

Writing File

~/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 &amp; 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} &nbsp;|&nbsp; {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 &amp; 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 &amp; 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., &amp; 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 &amp; 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)
Running Command

python3 /home/daytona/workspace/psm-study-guide/build_pdf.py 2>&1

Running Command

ls -lh /home/daytona/workspace/psm-study-guide/PSM_Study_Guide.pdf

Your PDF is ready! Download it here:

PSM Study Guide

PDF Document ยท PDF


Here's what's inside the PDF (7 sections, colour-coded and fully formatted):
SectionContent
Topic 1Pre-testing โ€” methods, benefits, pilot study, IRB
Topic 2Validity โ€” Face, Content, Construct (Convergent/Discriminant), Criterion (Concurrent/Predictive) with examples
Topic 3Reliability โ€” all 5 methods, Cronbach's Alpha interpretation table, Cohen's Kappa table, Bullseye analogy
Topic 4Statistics โ€” variable types, normality tests, the full test-selection table, Chi-sq vs Fisher's, regression models, p-hacking, clinical vs statistical significance
Topic 5Literature Review โ€” 5 steps in detail, Boolean search (AND/OR/NOT) with examples, 4 structure types, table template, conceptual framework
Topic 6Citation โ€” Vancouver vs APA comparison, formats, examples from your slides, bibliography rules
Topic 7Quick revision tables + ALL 10 mnemonics on one page + Top 8 expected exam questions
The PDF has colour-coded section banners, green mnemonic boxes, orange exam tip boxes, and full comparison tables - easy to read and revise from quickly. All the best tomorrow! ๐ŸŽฏ

This pdf is not opening

Running Command

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

Running Command

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

Writing File

~/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 &nbsp;ยท&nbsp; Validity &amp; Reliability &nbsp;ยท&nbsp; Statistical Methods &nbsp;ยท&nbsp; Literature Review &nbsp;ยท&nbsp; 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., &amp; 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)
Running Command

python3 /home/daytona/workspace/psm-study-guide/build_v2.py 2>&1

Running Command

# 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

The new PDF is verified - 14 pages, all content readable. Here it is:

PSM Study Guide v2

PDF Document ยท PDF

The previous version had 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.).
If it still doesn't open, try right-clicking the link โ†’ Save link as โ†’ then open the saved file directly.

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

Running Command

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

I've read your full proposal. Here are all the possible viva questions with model answers โ€” organized by topic exactly as a professor would ask:

๐ŸŽ“ PSM VIVA โ€” POSSIBLE QUESTIONS FROM YOUR RESEARCH PROPOSAL

"Association of Diurnal Sleeping Pattern and Obesity" โ€” Shishir Subedi, KAHS


๐Ÿ”ด SECTION 1: TITLE & BASICS (Professor asks these FIRST)


Q1. What is the title of your research?
"Association of Diurnal Sleeping Pattern and Obesity among adults aged 18โ€“60 years in Jumla, Nepal."

Q2. What do you mean by "diurnal sleeping pattern"?
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.

Q3. Why did you choose this topic?
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.

Q4. What is the general objective of your study?
To assess the relationship between diurnal sleep patterns and obesity among adults in Jumla.

Q5. What are your specific objectives?
  1. To determine the prevalence of obesity and irregular sleep patterns in the study population
  2. To examine the association between sleep duration, timing, and obesity
  3. To identify confounding factors (e.g., diet, sedentary behavior) influencing this relationship

Q6. What is your research hypothesis?
Adults with prolonged diurnal sleeping patterns have a higher likelihood of being obese.

๐ŸŸ  SECTION 2: STUDY DESIGN (Very likely to be asked)


Q7. What study design did you use and why?
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

Q8. What is the limitation of cross-sectional design?
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.

Q9. What would be a better design to establish 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.

Q10. What is your research method?
Quantitative survey with anthropometric measurements. Primary data will be collected through structured questionnaires and physical measurements (BMI, waist circumference).

๐ŸŸก SECTION 3: SAMPLING (Professors LOVE asking this)


Q11. What is your sample size and how did you calculate it?
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)

Q12. Why did you use p = 20% or 70%?
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.

Q13. What sampling technique did you use?
Stratified random sampling in three stages:
  1. Stratification by demographics: Urban vs. rural areas, age groups (18โ€“30, 31โ€“45, 46โ€“60 years), and gender
  2. Cluster sampling โ€” randomly select 10 health centers (5 urban Nagarpalika, 5 rural Gaupalika) across Jumla
  3. Systematic random sampling โ€” from each health center's patient registry, every 5th eligible adult is invited until strata quotas are met

Q14. Why did you use stratified random sampling instead of simple random sampling?
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.

Q15. What are your inclusion criteria?
  • 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

Q16. What are your exclusion criteria and why?
  • 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

Q17. What is your study site and why?
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.

๐ŸŸข SECTION 4: VARIABLES & CONCEPTUAL FRAMEWORK


Q18. What are your independent and dependent variables?
  • 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

Q19. What are the confounding variables in your study?
Age, gender, socioeconomic status, genetic predisposition to obesity, stress and mental health status, diet (junk food), physical activity, and caffeine/alcohol consumption.

Q20. Explain your conceptual framework.
The framework links diurnal sleep patterns (independent variable) to obesity (dependent variable) through mediating pathways:
  1. Hormonal imbalance โ€” sleep deprivation decreases leptin (satiety hormone) and increases ghrelin (hunger hormone), leading to increased caloric intake. Cortisol also rises, promoting visceral fat.
  2. Disrupted glucose metabolism โ€” short sleep reduces insulin sensitivity, causing hyperglycemia and fat storage.
  3. Behavioral factors โ€” sleep loss increases cravings for high-calorie foods and reduces physical activity.
  4. 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.

Q21. What are leptin and ghrelin? Why are they important in your study?
  • 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.

Q22. What is social jetlag?
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.

๐Ÿ”ต SECTION 5: DATA COLLECTION TOOLS


Q23. What tools did you use to collect data?
  1. Pittsburgh Sleep Quality Index (PSQI) โ€” a validated questionnaire assessing sleep duration, latency, efficiency, and disturbances
  2. Sleep Timing Questionnaire โ€” bedtime, wake time, social jetlag
  3. WHO STEPS Survey โ€” physical activity, sedentary behavior, dietary habits
  4. Anthropometric measurements โ€” calibrated weighing scale + stadiometer (for BMI), measuring tape (for waist circumference)
  5. 7-Day Sleep Diary โ€” daily self-recorded sleep/wake times
  6. Perceived Stress Scale-4 (PSS-4) โ€” stress levels
  7. Bioelectrical Impedance Analysis (BIA) โ€” optional, for body fat percentage

Q24. What is the Pittsburgh Sleep Quality Index (PSQI)?
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.

Q25. How did you measure BMI?
BMI = Weight (kg) / Heightยฒ (mยฒ) Measured using calibrated weighing scales and stadiometers. Obesity is defined as BMI โ‰ฅ 30 kg/mยฒ.

Q26. How did you measure waist circumference?
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.

Q27. What is the cut-off for waist circumference to define abdominal 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.

Q28. Why did you do pilot testing and with how many participants?
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

๐ŸŸฃ SECTION 6: BIAS (This is a FAVOURITE viva topic)


Q29. What biases can occur in your study? How will you minimize them?
BiasCauseMitigation
Selection biasNon-representative sampleStratified random sampling, multiple sites
Measurement biasSelf-reported sleep data (recall)Validated tools (PSQI), sleep diary, trained collectors
Confounding biasDiet, stress, geneticsMultivariable logistic regression, stratified analysis
Social desirability biasUnderreporting bad habitsAnonymous surveys, neutral question framing
Observer biasData collector's expectationsBlinding, double data entry, inter-rater reliability (ICC >0.9)
Recall biasMisremembering sleep habits7-day sleep diary instead of long-term recall
Publication biasOnly significant results publishedPre-registration on ClinicalTrials.gov, report all outcomes

Q30. What is selection bias? How does it affect your study?
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.

Q31. What is recall bias and how did you address it?
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.

โšช SECTION 7: STATISTICAL ANALYSIS


Q32. What statistical tests will you use?
  • 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

Q33. Why logistic regression and not linear regression?
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.

Q34. What does the logistic regression give you?
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.

Q35. What is a confounder? Give an example from your study.
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.

๐Ÿ”ด SECTION 8: ETHICS


Q36. What ethical considerations did you address?
  1. Informed consent โ€” written consent obtained by the principal investigator and trained research assistants
  2. Voluntariness โ€” participation is voluntary, participants can withdraw at any time without consequences
  3. Confidentiality โ€” anonymous IDs replace personal identifiers in datasets
  4. Minimal risk โ€” only discomfort during anthropometric measurement
  5. Benefits โ€” participants receive awareness about their own health status
  6. Cultural sensitivity โ€” study is designed to be sensitive to Nepali culture and social values
  7. IRC approval โ€” submitted to the Institutional Review Committee (IRC) of KAHS for ethical approval

Q37. Who approved your study ethically?
The study was submitted to the Institutional Review Committee (IRC) of Karnali Academy of Health Sciences (KAHS) for ethical approval before commencing.

Q38. Are vulnerable populations involved? How did you protect them?
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.

๐ŸŸ  SECTION 9: LIMITATIONS & IMPLICATIONS


Q39. What are the limitations of your study?
  1. Cross-sectional design โ€” cannot establish causality (reverse causality possible)
  2. Limited generalizability โ€” sample restricted to Jumla OPD; may not represent all Nepal populations
  3. BMI limitation โ€” BMI does not distinguish fat from muscle mass; may misclassify muscular individuals
  4. Self-reported data โ€” sleep diary and questionnaire data depend on participant honesty and memory
  5. Exclusion of shift workers โ€” may reduce generalizability

Q40. What are the expected outcomes of your research?
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

๐ŸŸก BONUS QUICK-FIRE QUESTIONS

QuestionAnswer
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)

๐Ÿง  MNEMONIC โ€” Remember the key parts of your proposal:

"DOSE-BATS" = Design (Cross-sectional) ยท Objectives (3 specific) ยท Sampling (Stratified random) ยท Ethics (IRC KAHS) ยท Bias (7 types) ยท Analysis (Chi-square + Logistic regression) ยท Tools (PSQI, Anthropometry) ยท Site (KAHS OPD, Jumla)

Most likely first question from your professor: "Tell me about your study in 2-3 sentences."
Your answer: "My study investigates the association between diurnal sleep patterns and obesity among 100 adults aged 18-60 years in Jumla, Nepal. It uses a cross-sectional design with stratified random sampling. Data will be collected using the Pittsburgh Sleep Quality Index and anthropometric measurements, and analyzed using logistic regression on SPSS."
All the best for your viva tomorrow! ๐ŸŽฏ

Given answer is very diffuct to memorize provide me very easy sentences so i will remeber

๐ŸŽ“ PSM VIVA โ€” SUPER EASY ANSWERS

(Like talking to a friend โ€” simple words, easy to remember!)


๐Ÿ“Œ FIRST THING PROFESSOR WILL ASK

"Tell me about your study in 2-3 sentences."
"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."

๐Ÿ”ด BASICS

Q: What is diurnal sleep pattern?
"It means your daily sleep routine โ€” when you sleep, how long you sleep, and how well you sleep."

Q: Why did you choose this topic?
"In Nepal, obesity is increasing. People also sleep less and sleep late. No one studied this connection in Jumla before. So I studied it."

Q: What is your objective?
"To find out โ€” does bad sleep make people obese in Jumla?"
3 specific objectives โ€” remember as 3 P's:
  • Prevalence โ†’ How many people are obese / sleep badly?
  • Pattern โ†’ Is sleep duration/timing linked to obesity?
  • Predictors โ†’ What other factors (diet, exercise) are involved?

Q: What is your hypothesis?
"People who sleep at wrong times or sleep too little are more likely to be obese."

๐ŸŸ  STUDY DESIGN

Q: What design did you use?
"Cross-sectional study โ€” I collected data from everyone at ONE point in time."

Q: Why cross-sectional?
"It is fast, cheap, and good for finding associations. Perfect for a student study."

Q: What is the limitation of cross-sectional?
"I cannot say which came first โ€” bad sleep OR obesity. It's like asking: did the chicken come first or the egg?"

Q: What better design could you use?
"A cohort study โ€” follow people over years and see who becomes obese."

๐ŸŸก SAMPLE SIZE & SAMPLING

Q: What is your sample size?
"100 adults, aged 18 to 60 years."

Q: What formula did you use?
"n = zยฒpq/eยฒ"
  • z = 1.96 (confidence level 95%)
  • p = 20% (obesity prevalence)
  • e = 8% (error allowed)
Easy way to remember: "z-p-q-e formula, confidence 95%, prevalence 20%, error 8%"

Q: What sampling technique?
"Stratified random sampling โ€” I divided people into groups first (urban/rural, age, gender), then randomly picked from each group."

Q: Why stratified?
"So that all types of people are included โ€” young, old, male, female, urban, rural. Not just one type."

Q: How did you actually select people?
"3 steps:
  1. Divided into groups (strata)
  2. Randomly picked 10 health centers (5 urban, 5 rural)
  3. From each center, selected every 5th patient from the register"

Q: Inclusion criteria?
"Adults 18-60 years, living in Karnali for 6+ months, willing to sign consent, and NO diagnosed sleep disorders."

Q: Exclusion criteria โ€” and why?
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

๐ŸŸข VARIABLES & CONCEPTUAL FRAMEWORK

Q: Independent vs dependent variable?
  • Independent (cause) = Sleep pattern (how long, when, how well)
  • Dependent (effect) = Obesity (BMI, waist size)
Easy: "Sleep โ†’ Obesity. Sleep is the cause I'm studying. Obesity is what I'm measuring."

Q: Confounding variables?
"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."

Q: Explain your conceptual framework simply.
"Bad sleep โ†’ hormones go wrong โ†’ person eats more and moves less โ†’ becomes obese."
The chain is:
Bad sleep โ†’ Leptin falls + Ghrelin rises โ†’ Hunger increases โ†’ Eats more โ†’ Obesity

Q: What is leptin? What is ghrelin?
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

Q: What is social jetlag?
"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."

๐Ÿ”ต DATA COLLECTION TOOLS

Q: What tools did you use? (Remember: PSWA)
  • 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

Q: What is PSQI?
"Pittsburgh Sleep Quality Index โ€” a standard questionnaire that gives a score for your sleep. Score more than 5 = bad sleep."

Q: How do you measure BMI?
"BMI = Weight divided by Height squared. Obesity = BMI โ‰ฅ 30."

Q: How do you measure waist circumference?
"Tape around the waist, at the midpoint between the lowest rib and the hip bone. Obesity in Asians = men > 90 cm, women > 80 cm."

Q: Why pilot testing? How many?
"To test if questions are clear and the process works well. Done on 20 people before the real study."

๐ŸŸฃ BIAS (Remember: 6 S's โ€” Super Simple)

BiasOne-line meaningMy solution
SelectionWrong people selectedUsed stratified random sampling
Self-report (Recall)People forget or lie about sleepUsed 7-day sleep diary (write daily)
Social desirabilityPeople say what sounds goodAnonymous survey, neutral questions
Systematic (Measurement)Wrong measurements takenTrained staff, calibrated tools
ObserverStaff expects certain resultsBlinded staff, double measurements
ConfoundingAnother factor is the real causeLogistic regression to control confounders

Q: What is selection bias simply?
"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."

Q: What is recall bias simply?
"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."

โšช STATISTICS (Very simple)

Q: What tests will you use?
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

Q: Why logistic regression and NOT linear regression?
"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."

Q: What does logistic regression give you?
"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."

Q: What is a confounder simply?
"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."

๐Ÿ”ด ETHICS (Remember: "VCCRA")

  • 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

Q: Who approved the study?
"IRC โ€” Institutional Review Committee of KAHS, Jumla."

๐ŸŸ  LIMITATIONS (Remember: "CGS")

  • 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

โญ QUICK FIRE โ€” Numbers to Remember

WhatAnswer
Sample size100
Age group18โ€“60 years
Study siteKAHS OPD, Jumla
Study designCross-sectional
Obesity BMI cut-offโ‰ฅ 30 kg/mยฒ
Optimal sleep7โ€“9 hours
Short sleep< 6 hours
PSQI cut-off> 5 = bad sleep
Cronbach's alpha needed> 0.7
Confidence level95%
BudgetNPR 6,200
References10 (Vancouver style)
SoftwareSPSS
Pilot testing size20
Sampling error8%

๐Ÿง  MASTER MNEMONIC โ€” Remember your whole study:

"Shishir Studies Sleep Slowly at KAHS"
  • Shishir = your name (principal investigator)
  • Studies = cross-sectional study
  • Sleep = independent variable (diurnal sleep pattern)
  • Slowly = stratified random sampling (step by step)
  • at = anthropometric measurements (BMI + waist)
  • KAHS = study site, ethics approval from IRC KAHS

๐Ÿ—ฃ๏ธ HOW TO OPEN YOUR VIVA (say this confidently):

"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."
Say this first โ€” professor will be impressed! ๐ŸŽฏ

All the best for your viva Shishir! You know your study well โ€” just speak in simple sentences like you're explaining it to a friend. ๐Ÿ’ช

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

Running Command

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

Running Command

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

I've read everything! Here are your complete, super easy notes for both topics:

๐Ÿฆ  TOPIC 1: LEPTOSPIROSIS

(In Simple Language โ€” Easy to Remember!)


๐Ÿ€ WHAT IS LEPTOSPIROSIS? (The 3-sentence story)

"A rat pees in floodwater. A farmer walks barefoot through it. Bacteria enter through his skin cut โ€” and he gets Leptospirosis."
That's the whole disease in one story! ๐Ÿ€๐Ÿ’ง๐Ÿฆถ

๐Ÿ“› NAME MEANING

  • "Lepto" = thin
  • "Spira" = coil
  • So Leptospira = thin coiled bacteria (spiral/corkscrew shaped)

๐Ÿงซ THE GERM

  • Type: Spirochete bacteria (spiral shaped)
  • Most important species: Leptospira interrogans
  • Seen under: Dark field microscopy + silver staining
  • Size: 0.1โ€“0.2 ยตm wide, 5โ€“15 ยตm long, with hooked ends

๐ŸŒ REMEMBER: THE 3 Rs (from your slide - THIS IS THE KEY!)

๐Ÿ€ RATS
๐ŸŒพ RICEFIELDS  
๐ŸŒง๏ธ RAINFALL
"Rats + Ricefields + Rainfall = Leptospirosis"

๐Ÿ“œ HISTORY

  • First described by Adolf Weil in 1886
  • He called it: "acute infectious disease with enlarged spleen, jaundice, and nephritis"
  • Also known as:
    • "Rice field jaundice" (China)
    • "Seven-day fever" (Japan)
    • "Mud fever / Cane-cutter's disease" (Europe)
    • "Black jaundice" (New Zealand)
Weil's Disease = the severe form with Jaundice + Kidney failure + Bleeding

๐Ÿ“Š HOW BIG IS THE PROBLEM?

  • 1 million cases per year worldwide
  • 60,000 deaths per year
  • Most cases in warm, humid, tropical countries
  • Outbreaks happen after heavy rain and floods
  • Mortality overall: < 10%
  • In severe form: 5โ€“15%
  • In pulmonary hemorrhage: > 50% ๐Ÿ˜ฑ

๐Ÿฆ  AGENT FACTORS (Easy version)

Source: Infected animal URINE (rats pee the bacteria)
Animal reservoirs โ€” remember "RCGPHDW":
"Rats Carry Germs, People Hate Dark Wetlands"
  • Rats & mice (most important - especially Rattus norvegicus and Mus musculus)
  • Cattle
  • Goats & sheep
  • Pigs
  • Horses
  • Dogs
  • Water buffalo
Humans = accidental dead-end hosts (we get infected but don't spread it further)

๐Ÿ‘จ HOST FACTORS

FactorDetails
SexMales > Females (more outdoor/farm work)
Age20โ€“45 years most commonly affected
OccupationFarmers, rice/sugarcane workers, sewage workers, vets, miners, soldiers, fishermen, lab workers
ImmunityInfection gives serovar-specific immunity (only for that type)
Easy memory for at-risk jobs: "FARSVMS"
Farmers ยท Abattoir workers ยท Rice paddy workers ยท Sewage workers ยท Veterinarians ยท Miners ยท Soldiers

๐ŸŒฟ ENVIRONMENTAL FACTORS

  • Bacteria survive weeks in soil and water (especially warm, moist, alkaline soil)
  • Survive in soil with pH alkaline, temperature โ‰ฅ 22ยฐC
  • Poor housing + poor sanitation = high risk
  • Floods and waterlogging spread the bacteria widely

๐Ÿ”„ MODES OF TRANSMISSION (Simple)

Think of it as: Animal pees โ†’ Bacteria in environment โ†’ Enters human body

A) DIRECT CONTACT (directly from animal):

  • Through skin cuts/wounds (farmer's cut hand touches infected cow urine)
  • Through eyes, nose, mouth (mucous membranes) โ€” like cow urine splashing in eye while milking

B) INDIRECT CONTACT (MOST COMMON MODE):

  • Through broken skin touching contaminated water/soil/mud
  • Example: Walking barefoot through flood water contaminated with rat urine
  • Ingestion of contaminated water or food

C) DROPLET INHALATION:

  • Breathing air with urine droplets (e.g., while milking infected animals)
โญ Most Common = Indirect contact with contaminated water through broken skin
Direct person-to-person transmission = RARE

๐Ÿค’ CLINICAL PICTURE (What happens to the patient)

Incubation period = 10 days (range: 4โ€“20 days)

TWO FORMS โ€” Think "Mild vs Severe":

Anicteric (Mild)Icteric (Severe / Weil's Disease)
Jaundice?โŒ Noโœ… YES (yellow skin/eyes)
Feverโœ…โœ…
Muscle painโœ… (myalgia)โœ… (especially CALF muscles)
Headacheโœ…โœ…
Conjunctival suffusionโœ…โœ…
Kidney involvementMildAcute kidney failure
Bleeding tendencyMildYES โ€” severe
OutcomeUsually recoversCan be fatal (5โ€“15% mortality)

โญ KEY SIGN: CONJUNCTIVAL SUFFUSION

Red eyes WITHOUT pus/discharge (not like conjunctivitis โ€” no sticky discharge) This PLUS jaundice = classic Leptospirosis

โญ WEIL'S DISEASE = JAR (Jaundice + Acute kidney failure + bleeding/haemorrhage)

CALF MUSCLE TENDERNESS = very specific finding in Leptospirosis!


๐Ÿ”ฌ DIAGNOSIS

Remember: DARK + CULTURE + SEROLOGY
TestWhen usedDetails
Dark field microscopyEarly (blood)Sees the spiral bacteria directly
CultureBlood early; urine after week 1Takes 1โ€“6 weeks to become positive
MAT (Microscopic Agglutination Test)After 7โ€“10 daysGold standard serological test
IgM ELISAVery earlyPositive as early as 2 days into illness!
Leptodipstick testQuick field testNow available
Lab findings:
  • Anaemia (blood loss + haemolysis)
  • WBC normal or elevated (mostly neutrophils)
  • WBC > 13,000 = poor prognosis sign
  • Thrombocytopenia (platelets โ‰ค100ร—10โน/L) in 40โ€“60% = severe disease + bleeding risk

๐Ÿ’Š TREATMENT

Remember: "PDA" = Penicillin, Doxycycline, Alternatives
DrugUse
PenicillinDrug of CHOICE (general)
DoxycyclineDOC in uncomplicated cases; also weekly for prophylaxis
Ceftriaxone, CefotaximeSevere cases
Tetracycline, Amoxicillin, AzithromycinAlternatives
โญ Weekly Doxycycline = prophylaxis for very high-risk groups (soldiers, farmers during floods)
Supportive care (for severe cases):
  • Careful fluid resuscitation
  • Haemodialysis for kidney failure
  • Respiratory support for lung involvement

๐Ÿ›ก๏ธ PREVENTION & CONTROL

Remember: "ERPP H" = Environmental + Rodent control + PPE + Prophylaxis + Health education
MethodDetails
EnvironmentalAvoid contaminated water, proper waste disposal
Rodent controlKill and control rats (main reservoir)
PPELong boots, gloves, long sleeves for workers
VaccinationAvailable in Italy, Cuba, France, Russia, China for high-risk workers
Health educationAwareness during rainy season in endemic areas
ChemoprophylaxisDoxycycline weekly for high-risk groups

โšก DIFFERENTIAL DIAGNOSES (Diseases that look similar)

Remember: "DMSHY HE"
  • Dengue
  • Malaria
  • Scrub typhus
  • Hepatitis
  • Yellow fever
  • Hantavirus (rodent exposure + hemorrhagic fever + renal syndrome)
  • Enteric fever

๐Ÿง  NEPAL CONTEXT

  • 21% positivity in Terai region (Regmi et al., 2017)
  • 41.8% among encephalitis patients (2007-2008)
  • More common in Terai (low-lying) areas โ€” hot, wet, flooded

โญ LEPTOSPIROSIS IN PREGNANCY

Can cause foetal death or abortion โ€” always mention this!



๐Ÿ”๏ธ TOPIC 2: HIGH ALTITUDE SICKNESS

(In Simple Language!)


๐Ÿ—ป THE STORY IN ONE LINE:

"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."

WHAT IS HIGH ALTITUDE? (Easy numbers to remember)

LevelHeight
High altitude starts2,700 m (9,000 feet)
Very high altitude3,601 โ€“ 4,500 m
Extreme high altitude> 5,400 m (permanent acclimatization very difficult)
Acclimatization needed from2,500 m onwards
Nepal examples: Jumla, Dolpa, Humla, Gosaikunda, Namche Bazar, Muktinath โ€” all high altitude!

๐Ÿ‘ฅ WHO GETS HIGH ALTITUDE SICKNESS?

Remember: "M-S-T-A-M-P"
  • Mountaineers
  • Soldiers
  • Trekkers
  • Adventurers
  • Miners
  • Pilgrims and porters
Also: Native highlanders who go to lower areas and come BACK (their body "forgets"!)

๐ŸŒฌ๏ธ WHY DOES IT HAPPEN?

At high altitude, air pressure is lower โ†’ less oxygen per breath โ†’ body is starved of oxygen
The body also faces: low temperature, low humidity, more UV radiation, isolation

๐Ÿฅ THE 3 TYPES OF HIGH ALTITUDE ILLNESS

Remember: "AMS โ†’ HACE โ†’ HAPE" (mild to severe)
AMS = Acute Mountain Sickness (mildest)
HACE = High Altitude Cerebral Edema (brain swells โ€” dangerous!)
HAPE = High Altitude Pulmonary Edema (lungs fill with fluid โ€” most fatal!)

1๏ธโƒฃ AMS (Acute Mountain Sickness) โ€” "The headache disease"

Symptoms appear 4โ€“12 hours after reaching high altitude
Remember "HDFNSS":
  • Headache (most important symptom)
  • Dizziness
  • Fatigue
  • Nausea/vomiting
  • Sleep disturbance
  • Swelling of hands, feet, eyelids
โญ Headache is the KEY symptom โ€” no headache = no AMS

2๏ธโƒฃ HACE (High Altitude Cerebral Edema) โ€” "The brain swelling disease"

AMS that got worse โ€” brain fills with fluid
Remember "UASA S":
  • Uncontrollable headache (despite painkillers)
  • Ataxia (can't walk straight โ€” like drunk person)
  • Altered mental status (confused, hallucinations, unreasonable behaviour)
  • Somnolence โ†’ coma
  • Impaired Sight (vision problems)
โญ ATAXIA (loss of coordination/balance) = key sign of HACE โญ HACE = MEDICAL EMERGENCY

3๏ธโƒฃ HAPE (High Altitude Pulmonary Edema) โ€” "The lung swelling disease"

Lungs fill with fluid โ€” MOST DANGEROUS
Remember "WCSF B":
  • Weakness and poor performance
  • Cough (dry first, then foamy or bloody)
  • Shortness of breath (even at REST)
  • Fever (slight), Fast heart rate and breathing
  • Blue tongue (cyanosis)
โญ Shortness of breath at REST = key sign of HAPE โญ HAPE is the most common cause of DEATH from altitude sickness

๐Ÿ“Š LAKE LOUISE SCORE (LLS) โ€” For Diagnosing AMS

How it works:
  • Needs: Recent altitude gain + HEADACHE
  • Score symptoms: headache, dizziness, nausea/vomiting, fatigue
  • Total score โ‰ฅ 3 = AMS diagnosis
ScoreSeverity
3โ€“5Mild AMS
6โ€“9Moderate AMS
10โ€“12Severe AMS
โญ Must be assessed at least 6 hours after reaching the altitude

๐Ÿ”„ ACCLIMATIZATION (How the body adjusts)

"Giving your body time to get used to less oxygen โ€” like slowly adjusting to cold water instead of jumping in"
When to acclimatize: From 2,500 m onwards
The rule: At altitudes > 3,000 m:
  • Don't go up more than 300 m per night
  • Rest day every 2โ€“3 days (every 1,000 m of ascent)
How:
  • 1โ€“2 days complete rest
  • Then 2โ€“4 days of gradually increasing physical activity
  • Repeat for every 1,000 m gained

๐Ÿ›ก๏ธ PREVENTION

The Golden Rule: "Climb High, Sleep Low"
  • Do NOT ascend > 300โ€“500 m per night
  • Rest day every 3โ€“4 days (every 800โ€“1,200 m)
Prophylactic drugs:
DrugUse
Acetazolamide (Diamox)125 mg every 12 hours โ€” for people with known susceptibility
Nifedipine30 mg every 12 hours โ€” if history of pulmonary edema
Tadalafil10 mg every 12 hours โ€” alternative

๐Ÿ’Š TREATMENT (Easy table)

ConditionActionDrug
Mild AMS (score 3โ€“5)Rest, no more ascentIbuprofen / Paracetamol (for headache), Metoclopramide/Domperidone (for nausea)
Severe AMS (score >5)DESCEND at least 1,000 mAcetazolamide 250 mg every 12 hr + Dexamethasone 4โ€“8 mg every 6 hr
HACEDESCEND immediately + hospitalDexamethasone 4 mg IM/IV every 6 hr + Oโ‚‚ 2โ€“4 L/min
HAPEDESCEND IMMEDIATELYNifedipine 20โ€“30 mg every 8 hr (1st choice) + Oโ‚‚ 2โ€“4 L/min
Both HACE + HAPEDescend + Oโ‚‚Nifedipine + Dexamethasone 4โ€“8 mg every 6 hr
โญ THE MOST IMPORTANT TREATMENT = DESCEND! Always descend first!
Drug memory tricks:
  • Acetazolamide = AMS (carbonic anhydrase inhibitor, makes you breathe faster)
  • Dexamethasone = brain/HACE (Dex for Da brain)
  • Nifedipine = lungs/HAPE (Nife for Nice lungs โ€” calcium channel blocker, widens lung vessels)

๐ŸŽ’ GAMOW BAG

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!

โญ QUICK COMPARISON TABLE โ€” AMS vs HACE vs HAPE

FeatureAMSHACEHAPE
Organ affectedGeneralBrainLungs
Key symptomHeadacheAtaxia + confusionBreathlessness at rest
SeverityMildSevereMost fatal
TreatmentRest + painkillersDescend + DexamethasoneDescend + Nifedipine
Emergency?NoYESYES (most dangerous)


๐Ÿง  MASTER MNEMONICS

For Leptospirosis:

  1. 3 Rs = Rats ยท Ricefields ยท Rainfall
  2. Weil's = JAR = Jaundice + Acute kidney failure + haemmoRrhage
  3. DOC = PD = Penicillin (general) ยท Doxycycline (uncomplicated)
  4. Conjunctival suffusion = red eyes WITHOUT discharge (specific sign!)
  5. Most common MOT = Indirect contact with contaminated water through broken skin
  6. Humans = dead-end hosts (we don't spread it further)

For High Altitude Sickness:

  1. AMS โ†’ HACE โ†’ HAPE = Brain then Lungs (severity increases)
  2. "Climb High, Sleep Low" = prevention rule
  3. 300 m/night = maximum safe ascent
  4. Key signs: AMS = headache ยท HACE = ataxia ยท HAPE = breathlessness at rest
  5. Treatment: Acetazolamide = AMS ยท Dexamethasone = HACE ยท Nifedipine = HAPE
  6. MOST IMPORTANT = DESCEND first, always!

โšก QUICK NUMBERS CHEAT SHEET

TopicNumber
Leptospirosis incubation10 days (4โ€“20 days)
Leptospirosis cases/year> 1 million
Leptospirosis deaths/year60,000
Overall mortality< 10%
Severe mortality5โ€“15%
Pulmonary hemorrhage mortality> 50%
IgM ELISA positive byDay 2 of illness
MAT becomes positive by7โ€“10 days
Culture takes1โ€“6 weeks
High altitude starts2,700 m
Acclimatize from2,500 m
Max ascent per night300 m
Rest day every2โ€“3 days
AMS symptoms start4โ€“12 hours after ascent
Lake Louise Score for AMSโ‰ฅ 3 (with headache)
Diamox (prophylaxis) dose125 mg every 12 hours
Nifedipine (HAPE) dose20โ€“30 mg every 8 hours
Dexamethasone (HACE) dose4 mg every 6 hours

Best of luck tomorrow! Remember: 3 Rs for Lepto, 3 letters for Altitude (AMS-HACE-HAPE)! ๐ŸŽฏ

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

Searching the Web

RDA Recommended Dietary Allowance PSM community medicine complete notes 2024

Finding Sources
Finding Sources
Searching the Web

RDA India ICMR recommended dietary allowance values table calories protein vitamins minerals PSM Park

Finding Sources
Reading Web Page

https://www.nin.res.in/rdabook/brief_note.pdf

Finding Sources
Reading Web Page

https://www.slideshare.net/slideshow/recommended-dietary-allโ€ฆ

Finding Sources
Searching the Web

RDA India ICMR reference man woman calorie protein fat requirements sedentary moderate heavy work Park PSM exam

Reading Web Page

https://metabolichealthdigest.com/nutrient-requirements-for-โ€ฆ

I now have all the information I need. Here are your complete, super easy RDA notes!

๐Ÿฝ๏ธ RDA (Recommended Dietary Allowance)

COMPLETE PSM EXAM NOTES โ€” Super Easy Language!


๐Ÿ”‘ WHAT IS RDA? (Say this definition confidently)

"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."
Simple version: "RDA = How much of each nutrient a healthy person needs to eat every day"

๐Ÿ“› FULL FORM & AUTHORITY

  • RDA = Recommended Dietary Allowance
  • Set by: ICMR (Indian Council of Medical Research)
  • Latest revision: ICMR-NIN, 2020
  • Previous revision: 2010
  • First recommendation: 1944 (revised in 1958, 1968, 1978, 2010, 2020)

๐Ÿงฎ HOW IS RDA CALCULATED? (The Formula)

RDA = Mean requirement + 2 ร— Standard Deviation (2SD)
i.e., RDA = Mean ยฑ 2SD
Why +2SD? Because this covers 97.5% of the population (almost everyone!)
Simple trick to remember: "Mean plus two SD = covers almost ALL of the people"

๐Ÿ‘จ REFERENCE MAN & REFERENCE WOMAN (ICMR Definition)

These are the "standard" people that ICMR uses to calculate RDA.

Reference Man:

FeatureValue
Age20โ€“39 years
Weight60 kg
Height163 cm
HealthHealthy, well-nourished since childhood
Work8 hours moderate activity (light industry/agriculture)
Sleep8 hours in bed
Rest8 hours sitting/light leisure

Reference Woman:

FeatureValue
Age20โ€“39 years
Weight50 kg
Height151 cm
HealthHealthy, well-nourished
Work8 hours moderate activity (household/light industry)
Sleep8 hours in bed
๐Ÿง  Memory trick: "Man = 60 kg, Woman = 50 kg โ€” Man has 10 kg extra!"

โšก ENERGY REQUIREMENTS BY ACTIVITY LEVEL

Activity Levels (3 types โ€” remember "SeMoHe"):

Sedentary โ†’ Moderate โ†’ Heavy
ActivityDescription
SedentaryOffice work, sitting most of the day, minimal physical effort
ModerateWalking, light fieldwork, household work
HeavyFarming, construction, mining, manual labor

Energy Requirements (Calories/kcal per day):

GroupSedentaryModerateHeavy
Man2110 kcal2710 kcal3470 kcal
Woman1660 kcal2130 kcal2720 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")

๐Ÿฅฉ PROTEIN REQUIREMENTS

GroupRDA (per day)
Adult Man60 g/day (1.0 g/kg body weight)
Adult Woman55 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 yr12.5 g/day
Children 4โ€“6 yr16 g/day
Children 7โ€“9 yr23 g/day
Safe protein intake (ICMR 2020): 0.83 g/kg/day EAR (minimum): 0.66 g/kg/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!"

Cereal:Legume:Milk ratio for good protein quality:

3 : 1 : 2.5 (ICMR 2020) โ€” previously was 11:1:3

๐Ÿงˆ FAT REQUIREMENTS (Visible fat per day)

ActivityMenWomen
Sedentary25 g/day20 g/day
Moderate30 g/day25 g/day
Heavy40 g/day30 g/day
๐Ÿง  Trick: "Men need 5g more fat than women at each activity level!" Fiber: 30 g per 2000 kcal (safe intake)

๐Ÿ’Š KEY VITAMINS & MINERALS RDA (Adult Men/Women)

NutrientMen (RDA 2020)Women (RDA 2020)Why important
Vitamin A1000 ยตg/day840 ยตg/dayVision, immunity
Vitamin D600 IU/day600 IU/dayBone health, calcium absorption
Vitamin C80 mg/day65 mg/dayImmunity, antioxidant
Vitamin B122.2 ยตg/day2.2 ยตg/dayNerve function, RBC
Folate300 ยตg/day220 ยตg/dayCell division
Folate (pregnancy)โ€”+80 ยตg/day extraPrevents neural tube defects
Thiamine (B1)1.8 mg/day1.7 mg/dayEnergy metabolism
Riboflavin (B2)2.5 mg/day2.4 mg/dayEnergy, growth
Niacin (B3) - sedentary14 mg/day11 mg/dayEnergy metabolism
Iron19 mg/day29 mg/dayHemoglobin formation
Calcium1000 mg/day1000 mg/dayBones and teeth
Zinc17 mg/day13 mg/dayImmunity, growth
Iodine150 ยตg/day150 ยตg/dayThyroid hormone
Magnesium440 mg/day370 mg/dayMuscle/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!"

๐Ÿคฐ SPECIAL REQUIREMENTS (Extra nutrients needed)

ConditionExtra EnergyExtra ProteinExtra IronExtra 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)

๐Ÿฅ— BALANCED DIET

"A balanced diet provides all nutrients in the right amounts and proportions needed for health."

Balanced Diet Contains:

  1. Macronutrients โ€” Carbohydrates (55โ€“60% of energy), Proteins (10โ€“15%), Fats (20โ€“30%)
  2. Micronutrients โ€” Vitamins and Minerals
  3. Non-nutrient compounds โ€” Dietary fiber, antioxidants (also important!)
  4. Water

Macronutrient Energy Values (Must know!):

NutrientEnergy per gram
Carbohydrate4 kcal/g
Protein4 kcal/g
Fat9 kcal/g
Alcohol7 kcal/g
๐Ÿง  "C and P = 4, F = 9, Alcohol = 7" (Fat has the most calories!)

๐Ÿ“ IMPORTANT CONCEPTS AROUND RDA

1. EAR (Estimated Average Requirement)

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

2. Upper Limit (UL)

The maximum safe amount โ€” beyond this, toxicity can occur

3. The relationship:

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"

๐Ÿ”„ FACTORS AFFECTING RDA

Remember: "AASP GLP"
FactorHow it affects RDA
AgeChildren and elderly have different needs
Activity levelHeavy workers need more calories
SexMen and women have different needs
Physiological statePregnancy and lactation increase needs
GrowthGrowing children need more protein, calcium
Loss/absorptionIron absorption is low from plant foods โ†’ higher RDA
Pathological stressIllness increases some requirements

๐ŸŽฏ DIFFERENCES TO REMEMBER (Exam Favorites!)

RDAEAR
Covers97.5% of population50% of population
FormulaMean + 2SDMean only
UseFor population planningFor research/surveys
Protein (adult)0.83 g/kg/day0.66 g/kg/day

โšก THE MOST IMPORTANT NUMBERS TO KNOW (Flash Cards!)

WhatNumber
Reference Man weight60 kg
Reference Woman weight50 kg
Reference Man/Woman age20โ€“39 years
Man protein60 g/day
Woman protein55 g/day
Sedentary man calories2110 kcal
Sedentary woman calories1660 kcal
Moderate man calories2710 kcal
Heavy man calories3470 kcal
Extra calories in pregnancy+350 kcal
Extra calories in lactation+600 kcal
Iron - woman29 mg/day
Iron - man19 mg/day
Calcium1000 mg/day
Vitamin D600 IU/day
Vitamin C (man)80 mg/day
Iodine150 ยตg/day
RDA covers97.5% population
EAR covers50% population
Fat = calories/gram9 kcal/g
Carb = calories/gram4 kcal/g
Protein = calories/gram4 kcal/g

๐Ÿง  ALL MNEMONICS TOGETHER

  1. RDA formula: "Mean Plus 2 SD = covers 97.5% โ€” Almost ALL people"
  2. Reference weights: "Man is 60, Woman is 50 โ€” Man has 10 kg more"
  3. Protein per kg: "1 gram per kg body weight โ€” 60 kg man = 60g, 50 kg woman = 55g"
  4. Calorie trick (Man): "2110 โ†’ 2710 โ†’ 3470 โ€” goes up by 600 each level (Sedentary โ†’ Moderate โ†’ Heavy)"
  5. Why women need MORE iron: "Women lose blood monthly โ€” so they need 29mg vs men's 19mg"
  6. Fat calories: "Fat is FAT = 9 kcal/g (the most!). C and P are only 4 kcal/g"
  7. Energy for pregnancy: "+350 = 3 trimesters ร— ~100 kcal"
  8. Lactation: "+600 first 6 months = 6 hundreds"
  9. EAR vs RDA: "EAR = Exactly Average (50%), RDA = Reaches Almost all (97.5%)"
  10. Activity levels: "SeMoHe" = Sedentary, Moderate, Heavy

๐Ÿ’ฌ HOW TO OPEN YOUR ANSWER (Impress the examiner immediately!)

"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."
This opening answer will 100% impress your examiner! ๐ŸŽฏ

Good luck in your exam today! Remember โ€” Mean + 2SD = 97.5% = RDA! ๐Ÿ’ช

RDA according to nepal

Searching the Web

RDA recommended dietary allowance Nepal DFTQC values table calories protein vitamins minerals 2024

Searching the Web

Nepal recommended dietary allowance reference man woman calorie protein fat requirements sedentary moderate heavy PSM KAHS

Reading Web Page

https://www.scribd.com/document/695437933/UNIT-2-Nutritionalโ€ฆ

Searching the Web

Nepal dietary guidelines DFTQC NPC nutrition policy reference man 65kg woman 55kg calorie 2500 kcal Nepal specific RDA

Reading Web Page

https://www.fao.org/nutrition/education/food-dietary-guideliโ€ฆ

Searching the Web

"Nepal" "RDA" "2500" OR "2250" OR "reference man" "55 kg" OR "60 kg" calories protein "Nepal specific" nutrition requirements community medicine MBBS

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.

RDA according to nepal

Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.