~/personality-study-guide/create_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import mm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.colors import HexColor
OUTPUT = "/home/daytona/workspace/personality-study-guide/Personality_Psychology_Study_Guide.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
NAVY = HexColor("#1B3A6B")
TEAL = HexColor("#1A7A8A")
LIGHT_TEAL = HexColor("#E8F6F8")
GOLD = HexColor("#D4A017")
LIGHT_GOLD = HexColor("#FFF8E7")
LIGHT_GREY = HexColor("#F4F6F8")
MED_GREY = HexColor("#D0D5DD")
WHITE = colors.white
BLACK = colors.black
PINK_LIGHT = HexColor("#FDE8F0")
GREEN_LIGHT= HexColor("#E8F5E9")
PURPLE_LIGHT = HexColor("#F3E8FD")
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=18*mm, rightMargin=18*mm,
topMargin=15*mm, bottomMargin=18*mm
)
styles = getSampleStyleSheet()
def style(name, **kwargs):
return ParagraphStyle(name, **kwargs)
# Custom styles
S = {
"cover_title": style("cover_title",
fontName="Helvetica-Bold", fontSize=28, textColor=WHITE,
alignment=TA_CENTER, leading=34, spaceAfter=6),
"cover_sub": style("cover_sub",
fontName="Helvetica", fontSize=14, textColor=HexColor("#CCE4F0"),
alignment=TA_CENTER, leading=20),
"cover_tag": style("cover_tag",
fontName="Helvetica-Bold", fontSize=11, textColor=GOLD,
alignment=TA_CENTER),
"h1": style("h1",
fontName="Helvetica-Bold", fontSize=16, textColor=WHITE,
leading=20, spaceAfter=4),
"h2": style("h2",
fontName="Helvetica-Bold", fontSize=13, textColor=NAVY,
spaceBefore=10, spaceAfter=4, leading=17),
"h3": style("h3",
fontName="Helvetica-Bold", fontSize=11, textColor=TEAL,
spaceBefore=6, spaceAfter=2, leading=14),
"body": style("body",
fontName="Helvetica", fontSize=9.5, textColor=HexColor("#222222"),
leading=14, spaceAfter=4, alignment=TA_JUSTIFY),
"bullet": style("bullet",
fontName="Helvetica", fontSize=9, textColor=HexColor("#333333"),
leading=13, leftIndent=14, spaceAfter=2,
bulletIndent=4, bulletText="\u2022"),
"small": style("small",
fontName="Helvetica", fontSize=8.5, textColor=HexColor("#555555"),
leading=12, alignment=TA_CENTER),
"tip": style("tip",
fontName="Helvetica-Oblique", fontSize=9, textColor=HexColor("#7B4F00"),
leading=13, leftIndent=8),
"table_hdr": style("table_hdr",
fontName="Helvetica-Bold", fontSize=9, textColor=WHITE,
alignment=TA_CENTER, leading=12),
"table_cell": style("table_cell",
fontName="Helvetica", fontSize=8.5, textColor=HexColor("#222222"),
leading=12, alignment=TA_LEFT),
"table_cell_c": style("table_cell_c",
fontName="Helvetica", fontSize=8.5, textColor=HexColor("#222222"),
leading=12, alignment=TA_CENTER),
"badge": style("badge",
fontName="Helvetica-Bold", fontSize=9, textColor=WHITE,
alignment=TA_CENTER, leading=12),
"footer": style("footer",
fontName="Helvetica", fontSize=7.5, textColor=HexColor("#888888"),
alignment=TA_CENTER),
}
# ── Helpers ─────────────────────────────────────────────────────────────────
def section_header(text, bg=NAVY):
"""Full-width coloured section banner."""
tbl = Table([[Paragraph(text, S["h1"])]], colWidths=[174*mm])
tbl.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), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS",(0,0), (-1,-1), [4,4,4,4]),
]))
return tbl
def info_box(text, bg=LIGHT_TEAL, border=TEAL):
"""Coloured information callout box."""
tbl = Table([[Paragraph(text, S["body"])]], colWidths=[170*mm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LINEAFTER", (0,0), (0,-1), 3, border),
]))
return tbl
def tip_box(text):
tbl = Table([[Paragraph("<b>Nursing Tip:</b> " + text, S["tip"])]], colWidths=[170*mm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_GOLD),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LINEBEFORE", (0,0), (0,-1), 4, GOLD),
]))
return tbl
def mk_table(header, rows, col_widths, header_bg=NAVY, alt_bg=LIGHT_GREY):
data = [[Paragraph(h, S["table_hdr"]) for h in header]]
for i, row in enumerate(rows):
data.append([Paragraph(str(c), S["table_cell"]) for c in row])
tbl = Table(data, colWidths=col_widths, repeatRows=1)
style_cmds = [
("BACKGROUND", (0,0), (-1,0), header_bg),
("GRID", (0,0), (-1,-1), 0.4, MED_GREY),
("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"),
]
for i in range(1, len(rows)+1):
if i % 2 == 0:
style_cmds.append(("BACKGROUND", (0,i), (-1,i), alt_bg))
tbl.setStyle(TableStyle(style_cmds))
return tbl
# ══════════════════════════════════════════════════════════════════
# BUILD STORY
# ══════════════════════════════════════════════════════════════════
story = []
# ── COVER PAGE ────────────────────────────────────────────────────
cover_data = [[
Paragraph("PERSONALITY IN PSYCHOLOGY", S["cover_title"]),
Spacer(1, 6),
Paragraph("Complete Study Guide", S["cover_sub"]),
Spacer(1, 10),
Paragraph("PBBSc Nursing - 1st Year | MUHS University", S["cover_tag"]),
Spacer(1, 6),
Paragraph("Based on Kaplan & Sadock's Textbook of Psychiatry", S["small"]),
]]
cover_tbl = Table([
[Paragraph("PERSONALITY IN PSYCHOLOGY", S["cover_title"])],
[Spacer(1, 4)],
[Paragraph("Complete Study Guide", S["cover_sub"])],
[Spacer(1, 8)],
[Paragraph("PBBSc Nursing \u2022 1st Year \u2022 MUHS University", S["cover_tag"])],
[Spacer(1, 4)],
[Paragraph("Based on Kaplan & Sadock's Textbook of Psychiatry", S["small"])],
], colWidths=[174*mm])
cover_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), NAVY),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
("ROUNDEDCORNERS",(0,0), (-1,-1), [8,8,8,8]),
]))
story.append(Spacer(1, 20*mm))
story.append(cover_tbl)
story.append(Spacer(1, 12))
# Colour key legend
story.append(info_box(
"<b>How to Use This Guide:</b> Each theorist has a colour-coded card with their "
"key concepts, character types, and a nursing application note. The Quick Revision "
"Table on the final page is ideal for last-minute review before exams."
))
story.append(Spacer(1, 8))
# Table of Contents
toc_data = [
["1", "Definition of Personality"],
["2", "Factors Shaping Personality"],
["3", "Freud - Psychoanalytic Theory + Defense Mechanisms"],
["4", "Adler - Individual Psychology"],
["5", "Jung - Analytical Psychology"],
["6", "Horney - Social-Cultural Theory"],
["7", "Sullivan - Interpersonal Theory"],
["8", "Fromm - Humanistic Theory"],
["9", "Erikson - Psychosocial Stages (8 Stages Table)"],
["10", "Reich - Character Types"],
["11", "Allport - Trait Theory"],
["12", "Big Five / OCEAN Model"],
["13", "Personality Disorders Overview"],
["14", "Quick Revision Master Table"],
]
story.append(Paragraph("Contents", S["h2"]))
story.append(mk_table(
["#", "Topic"],
toc_data,
[14*mm, 156*mm],
header_bg=TEAL
))
story.append(PageBreak())
# ── SECTION 1 - DEFINITION ────────────────────────────────────────
story.append(section_header("1. DEFINITION OF PERSONALITY"))
story.append(Spacer(1, 6))
story.append(Paragraph(
"Personality is the <b>dynamic organization of the biopsychosocial systems</b> by which a person "
"shapes and adapts in a unique way to a changing internal and external environment. "
"<i>(Allport, modified definition)</i>", S["body"]))
story.append(Spacer(1, 6))
def_table = mk_table(
["Term", "Meaning"],
[
["Personality", "Overall dynamic pattern of behavior, thoughts, and emotions across situations"],
["Temperament", "Inborn, biologically-based style of responding (e.g., shy vs. bold from birth)"],
["Character", "Learned aspects shaped by culture, morals, and upbringing"],
["Psyche", "The total mental life of a person"],
["Motivation", "The driving forces that initiate and direct behavior toward goals"],
],
[38*mm, 132*mm], header_bg=TEAL
)
story.append(def_table)
story.append(Spacer(1, 8))
# Key features of personality
story.append(Paragraph("Key Features of Personality:", S["h3"]))
for feat in [
"<b>Dynamic</b> - constantly evolving, not fixed",
"<b>Unique</b> - no two people share identical personalities",
"<b>Biopsychosocial</b> - involves biology, psychology, AND social factors",
"<b>Adaptive</b> - helps us survive and adjust to life experiences",
"<b>Consistent</b> - shows pattern across time and different situations",
]:
story.append(Paragraph(feat, S["bullet"]))
story.append(Spacer(1, 8))
# ── SECTION 2 - FACTORS ───────────────────────────────────────────
story.append(section_header("2. FACTORS SHAPING PERSONALITY"))
story.append(Spacer(1, 6))
story.append(mk_table(
["Factor", "Contribution", "Detail"],
[
["Genetics (Heredity)", "~50%", "Twin studies show about half of personality trait variance is genetic"],
["Environment", "~50%", "Family, culture, parenting, peer relationships, life experiences"],
["Adoption Studies", "~30% heritability", "Lower than twin estimates due to non-additive genetic effects"],
["Epigenetics", "Modifies expression", "Even identical twins change gene expression over a lifetime"],
["Self-Awareness", "Unique to humans", "Allows deliberate change beyond genetic or past constraints"],
],
[40*mm, 35*mm, 95*mm], header_bg=NAVY
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Nature vs. Nurture - Remember: personality is NOT destiny. Both genes and environment "
"interact, and self-awareness allows people to change throughout life."
))
story.append(PageBreak())
# ── SECTION 3 - FREUD ─────────────────────────────────────────────
story.append(section_header("3. FREUD'S PSYCHOANALYTIC THEORY", bg=HexColor("#6B2D6B")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Sigmund Freud (1856-1939)</b> - Described the psyche as having three structural components. "
"Personality is driven by unconscious forces, instinctual drives (libido and aggression), "
"and early childhood experiences.",
bg=PURPLE_LIGHT, border=HexColor("#6B2D6B")
))
story.append(Spacer(1, 6))
story.append(Paragraph("Structural Model of the Psyche:", S["h3"]))
story.append(mk_table(
["Structure", "Nature", "Principle", "Function"],
[
["ID", "Unconscious, primitive", "Pleasure Principle", "Contains sexual/aggressive drives; seeks immediate gratification"],
["EGO", "Mostly conscious, rational", "Reality Principle", "Mediates between id and superego; adapts to real world"],
["SUPEREGO", "Partly conscious, moral", "Morality Principle", "Internalized rules from parents/society; creates guilt/pride"],
],
[22*mm, 40*mm, 38*mm, 66*mm], header_bg=HexColor("#6B2D6B")
))
story.append(Spacer(1, 8))
story.append(Paragraph("Freud's Psychosexual Stages:", S["h3"]))
story.append(mk_table(
["Stage", "Age", "Focus", "Fixation Effect"],
[
["Oral", "0-1 yr", "Feeding, mouth", "Dependency, overeating, smoking"],
["Anal", "1-3 yrs", "Bowel control", "Orderliness/obstinacy (retentive) or messiness (expulsive)"],
["Phallic", "3-6 yrs", "Genitals; Oedipus/Electra complex", "Vanity, recklessness, or authority conflicts"],
["Latency", "6-puberty","No sexual focus; social skills", "Generally none specific"],
["Genital", "Puberty+", "Mature sexual relationships", "Healthy adult sexuality if prior stages resolved"],
],
[22*mm, 20*mm, 55*mm, 73*mm], header_bg=HexColor("#6B2D6B")
))
story.append(Spacer(1, 8))
story.append(Paragraph("Major Defense Mechanisms:", S["h3"]))
story.append(mk_table(
["Defense Mechanism", "Definition", "Clinical Example"],
[
["Repression", "Pushing painful memories into the unconscious", "Patient 'forgets' traumatic childhood event"],
["Denial", "Refusing to accept a painful reality", "Newly diagnosed cancer patient says 'The tests must be wrong'"],
["Projection", "Attributing own unacceptable feelings to others", "Angry patient says 'The nurses don't like me'"],
["Rationalization", "Making up logical reasons for irrational behavior", "Patient refuses medication citing minor side-effects"],
["Displacement", "Redirecting emotions to a safer target", "Patient angry at diagnosis shouts at nursing staff"],
["Sublimation", "Channeling unacceptable impulses into acceptable outlets","Aggressive patient volunteers for hard physical therapy"],
["Regression", "Reverting to earlier stage behavior under stress", "Adult patient becomes clingy and childlike when ill"],
["Reaction Formation","Acting opposite to true feelings", "Patient shows excessive cheerfulness to hide fear"],
["Intellectualization","Excessive abstract thinking to avoid emotions", "Patient researches disease statistics instead of grieving"],
["Identification", "Adopting traits of admired person", "Patient mirrors calm behavior of their nurse"],
],
[40*mm, 64*mm, 62*mm], header_bg=HexColor("#6B2D6B")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Denial is the most common defense mechanism seen in newly diagnosed patients. "
"Recognize it, do NOT confront it aggressively - allow time and build trust first."
))
story.append(PageBreak())
# ── SECTION 4 - ADLER ─────────────────────────────────────────────
story.append(section_header("4. ADLER'S INDIVIDUAL PSYCHOLOGY", bg=HexColor("#1A6B3A")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Alfred Adler (1870-1937)</b> - Personality develops through social interactions. "
"The primary motivation in life is moving from a sense of inferiority to a sense of mastery. "
"Adler coined the term 'Inferiority Complex.'",
bg=GREEN_LIGHT, border=HexColor("#1A6B3A")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Key Concept", "Explanation"],
[
["Inferiority Complex", "Everyone starts with feelings of inferiority (vs. capable adults); life's goal is to overcome this"],
["Striving for Superiority","Healthy drive to achieve mastery and competence; not about dominating others"],
["Lifestyle / Life Goal", "Each person develops a unique goal around which their personality organizes itself"],
["Social Interest", "Healthy personalities are characterized by cooperation and community engagement"],
["Birth Order", "First-borns: conservative; Middle: social activists; Youngest: feel secure; Only child: pampered"],
["Mistaken Lifestyle", "Unhealthy personalities result from false beliefs about self/world; can be changed by will"],
],
[48*mm, 122*mm], header_bg=HexColor("#1A6B3A")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Patients who seem demanding or manipulative may be compensating for deep feelings of inferiority. "
"Respond with empathy and help restore their sense of competence and control."
))
story.append(Spacer(1, 8))
# ── SECTION 5 - JUNG ──────────────────────────────────────────────
story.append(section_header("5. JUNG'S ANALYTICAL PSYCHOLOGY", bg=HexColor("#8B4513")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Carl Gustav Jung (1875-1961)</b> - Expanded Freud's unconscious to include a "
"'Collective Unconscious' shared by all humans. Introduced the concepts of archetypes, "
"introversion/extraversion, and the shadow.",
bg=HexColor("#FEF0E6"), border=HexColor("#8B4513")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Key Concept", "Explanation"],
[
["Personal Unconscious", "Individual layer containing repressed memories and complexes"],
["Collective Unconscious", "Deeper universal layer shared by all humans; contains archetypes"],
["Archetypes", "Universal symbols/patterns: the Mother, the Hero, the Shadow, the Anima/Animus"],
["Complexes", "Emotionally charged groups of unconscious ideas; stimulated by external events"],
["Persona", "The 'mask' or social face we show the world"],
["Shadow", "The hidden, darker side of personality containing traits we deny or reject"],
["Introversion", "Energy directed inward; preference for reflection and solitude"],
["Extraversion", "Energy directed outward; preference for social interaction"],
["Ego (Jungian)", "Bridges conscious life with the unconscious; same function as Freudian ego"],
],
[48*mm, 122*mm], header_bg=HexColor("#8B4513")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Jung's introversion/extraversion is widely used today. Introverted patients may need "
"quieter environments and less stimulation to cope with hospital stress."
))
story.append(PageBreak())
# ── SECTION 6 - HORNEY ────────────────────────────────────────────
story.append(section_header("6. HORNEY'S SOCIAL-CULTURAL THEORY", bg=HexColor("#B5451B")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Karen Horney (1885-1952)</b> - Personality develops from social and cultural forces, "
"not biology. All people experience 'basic anxiety' (feeling helpless in a hostile world). "
"Culture, not anatomy, shapes personality differences between men and women.",
bg=HexColor("#FDE8E8"), border=HexColor("#B5451B")
))
story.append(Spacer(1, 6))
story.append(Paragraph("Horney's Three Character Types:", S["h3"]))
story.append(mk_table(
["Character Type", "Direction", "Behavior", "Coping Mechanism"],
[
["Compliant / Self-Effacing", "Moving TOWARD others", "Seeks approval, clings, avoids disagreement, self-subordinating", "Overcomes anxiety through love and acceptance"],
["Aggressive / Expansive", "Moving AGAINST others", "Domineering, power-seeking, competitive, distrusts others", "Overcomes anxiety through mastery and control"],
["Detached / Resigned", "Moving AWAY from others","Withdrawn, self-sufficient, private, avoids competition openly", "Overcomes anxiety through self-sufficiency"],
],
[38*mm, 30*mm, 54*mm, 48*mm], header_bg=HexColor("#B5451B")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Horney's model helps explain difficult patient interactions. The 'aggressive' patient "
"demanding control is coping with anxiety through mastery - give them choices to restore "
"their sense of control."
))
story.append(Spacer(1, 8))
# ── SECTION 7 - SULLIVAN ──────────────────────────────────────────
story.append(section_header("7. SULLIVAN'S INTERPERSONAL THEORY", bg=HexColor("#004080")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Harry Stack Sullivan (1892-1949)</b> - Personality is 'the relatively enduring pattern of "
"interpersonal relations which characterize a human life.' You cannot separate a person from "
"their social environment. Anxiety is the primary driver of personality development.",
bg=LIGHT_TEAL, border=HexColor("#004080")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Key Concept", "Explanation"],
[
["Two Basic Needs", "1. Need for SATISFACTION (food, warmth, emotional contact)\n2. Need for SECURITY (freedom from anxiety)"],
["Anxiety", "Arises when fundamental needs are threatened; primary motivator of personality development"],
["Self-System", "The dynamism (mechanism) that avoids or reduces anxiety; shapes personality patterns"],
["Security Operations", "Sullivan's version of defense mechanisms; e.g., selective inattention, apathy, somnolent detachment"],
["Empathic Linkage", "Infant senses caretaker's anxiety - tension transmits between people interpersonally"],
["Personifications", "Mental images of the self and others (good-me, bad-me, not-me) built from early interactions"],
],
[40*mm, 130*mm], header_bg=HexColor("#004080")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Sullivan directly applies to nursing: a hospitalized patient's anxiety = both physical need "
"(pain, illness) AND security threat (loss of control, fear). Address both dimensions in care."
))
story.append(PageBreak())
# ── SECTION 8 - FROMM ─────────────────────────────────────────────
story.append(section_header("8. FROMM'S HUMANISTIC THEORY", bg=HexColor("#5B4A8A")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Erich Fromm (1900-1980)</b> - Humans have a fundamental tension between the need "
"to individuate (be free, unique) and the terror of loneliness. Personality is shaped by "
"how people resolve this tension, largely determined by their society and culture.",
bg=PURPLE_LIGHT, border=HexColor("#5B4A8A")
))
story.append(Spacer(1, 6))
story.append(Paragraph("Four Basic Human Needs (Fromm):", S["h3"]))
story.append(mk_table(
["Need", "Description"],
[
["1. Relatedness", "The need to feel connected to other human beings"],
["2. Transcendence", "Rising above basic instincts; creating rather than destroying"],
["3. Identity", "The need to feel unique yet accepted; sense of individual self"],
["4. Frame of Orientation", "A coherent sense of meaning, direction, and purpose in life"],
],
[48*mm, 122*mm], header_bg=HexColor("#5B4A8A")
))
story.append(Spacer(1, 6))
story.append(Paragraph("Fromm's Unproductive Character Types (Modern Society):", S["h3"]))
story.append(mk_table(
["Character Type", "Core Behavior", "Underlying Fear"],
[
["Receptive", "Passive, dependent on others; seeks magical solutions from leaders", "Fear of loneliness; inability to self-direct"],
["Exploitative", "Aggressively takes from others; manipulative", "Terror of inadequacy; fills self from outside"],
["Hoarding", "Collects, stores, closes in on self; cold and aloof", "Fear of loss; security through possession"],
["Marketing", "Treats self as commodity; changes personality to please others", "Fear of rejection; value seen as externally given"],
],
[32*mm, 72*mm, 66*mm], header_bg=HexColor("#5B4A8A")
))
story.append(PageBreak())
# ── SECTION 9 - ERIKSON ───────────────────────────────────────────
story.append(section_header("9. ERIKSON'S PSYCHOSOCIAL STAGES OF DEVELOPMENT", bg=HexColor("#0D6E5A")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Erik Erikson (1902-1994)</b> - Personality develops through <b>8 stages across the entire "
"lifespan</b>. Each stage presents a central psychosocial conflict. Successful resolution "
"leads to a positive virtue; failure leaves a lasting deficit.",
bg=GREEN_LIGHT, border=HexColor("#0D6E5A")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Stage", "Age", "Conflict", "Positive Outcome (Virtue)", "Negative Outcome"],
[
["1. Infancy", "0-1 yr", "Trust vs. Mistrust", "Hope - world is safe and reliable", "Fear, suspicion, insecurity"],
["2. Early Childhood","1-3 yrs", "Autonomy vs. Shame & Doubt", "Will - self-control and independence", "Self-doubt, shame, dependency"],
["3. Play Age", "3-6 yrs", "Initiative vs. Guilt", "Purpose - ability to plan and take initiative", "Guilt, inhibition, passivity"],
["4. School Age", "6-12 yrs", "Industry vs. Inferiority", "Competence - mastery of skills", "Inferiority complex, failure feelings"],
["5. Adolescence", "12-18 yrs", "Identity vs. Role Confusion","Fidelity - clear sense of self and values", "Identity confusion, role diffusion"],
["6. Young Adult", "18-40 yrs", "Intimacy vs. Isolation", "Love - capacity for deep relationships", "Isolation, loneliness, avoidance"],
["7. Middle Adult", "40-65 yrs", "Generativity vs. Stagnation","Care - contributing to society/next generation", "Stagnation, self-absorption"],
["8. Late Adult", "65+ yrs", "Integrity vs. Despair", "Wisdom - acceptance of one's life as meaningful", "Despair, bitterness, regret"],
],
[22*mm, 18*mm, 42*mm, 44*mm, 44*mm], header_bg=HexColor("#0D6E5A")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"Use Erikson's stages to identify a patient's psychosocial needs: an adolescent patient "
"needs to maintain identity and control; an elderly patient near death may need help finding "
"meaning (integrity). Tailor your therapeutic communication accordingly."
))
story.append(PageBreak())
# ── SECTION 10 - REICH ────────────────────────────────────────────
story.append(section_header("10. REICH'S CHARACTER TYPES", bg=HexColor("#5C3317")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Wilhelm Reich (1897-1957)</b> - Described 'character armor': repetitive, involuntary "
"behaviors that defend against internal and external threats. Character is expressed both "
"psychologically AND physically (posture, body tension, movement).",
bg=HexColor("#FEF0E6"), border=HexColor("#5C3317")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Character Type", "Behavioral Features", "Physical Features", "Defense Against"],
[
["Hysterical", "Superficial, excitable, flighty, fearful, highly suggestible", "Soft, rolling, sexually suggestive movements; least body armor", "Sexual arousability - flushes out stimuli then reacts with anger"],
["Compulsive", "Overconcerned with order, indecisive, distrustful, ruminates", "Stiff walk, rigid posture; sits rigidly", "Repressed impulses via rigid overcontrol; threatened by routine changes"],
["Phallic-Narcissistic", "Cold, reserved, prickly, provocative, seeks power", "Appears controlled and prickly", "Frustration at genital-exhibitionist stage; identifies with power"],
["Masochistic", "Suffers, complains, self-depreciates, tortures others through suffering", "Excessive tension", "Enormous need + excessive guilt + low tolerance for pleasure"],
],
[38*mm, 52*mm, 40*mm, 40*mm], header_bg=HexColor("#5C3317")
))
story.append(PageBreak())
# ── SECTION 11 - ALLPORT ──────────────────────────────────────────
story.append(section_header("11. ALLPORT'S TRAIT THEORY", bg=HexColor("#2B5797")))
story.append(Spacer(1, 6))
story.append(info_box(
"<b>Gordon Allport (1897-1967)</b> - Personality consists of traits: stable, consistent "
"dispositions that guide behavior. Each person is unique (idiographic approach). "
"Allport classified personality traits into three levels.",
bg=LIGHT_TEAL, border=HexColor("#2B5797")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Trait Level", "Definition", "Number", "Example"],
[
["Cardinal Traits", "The single dominating trait around which a person's entire life revolves", "1 (rare)", "Gandhi - nonviolence; Mother Teresa - compassion"],
["Central Traits", "Main characteristic traits that define a person's general personality", "5-10", "Honesty, shyness, humor, generosity, punctuality"],
["Secondary Traits", "More specific, situation-dependent preferences and attitudes", "Many", "Prefers tea to coffee; nervous about public speaking"],
],
[38*mm, 74*mm, 18*mm, 40*mm], header_bg=HexColor("#2B5797")
))
story.append(Spacer(1, 6))
story.append(Paragraph("Allport's Proprium (Components of Self):", S["h3"]))
for item in [
"<b>Sense of body</b> - awareness of one's physical self",
"<b>Self-identity</b> - continuity of self over time",
"<b>Self-esteem</b> - sense of pride and competence",
"<b>Self-extension</b> - extension of self to valued objects/people",
"<b>Rational coping</b> - using reason to solve problems",
"<b>Self-image</b> - how we see ourselves and how we want others to see us",
"<b>Propriate striving</b> - long-term goals that give life meaning",
]:
story.append(Paragraph(item, S["bullet"]))
story.append(Spacer(1, 8))
# ── SECTION 12 - BIG FIVE ─────────────────────────────────────────
story.append(section_header("12. THE BIG FIVE / OCEAN MODEL", bg=HexColor("#00695C")))
story.append(Spacer(1, 6))
story.append(info_box(
"The most widely accepted modern personality model. Describes personality along 5 broad "
"dimensions. Remember the acronym <b>OCEAN</b>. Each trait exists on a continuum from "
"high to low.",
bg=GREEN_LIGHT, border=HexColor("#00695C")
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Letter", "Trait", "High Score", "Low Score", "Nursing Relevance"],
[
["O", "Openness to Experience", "Creative, curious, imaginative, adventurous", "Conventional, prefers routine, concrete", "High-O patients accept novel treatments more readily"],
["C", "Conscientiousness", "Organized, disciplined, reliable, goal-directed", "Impulsive, disorganized, careless", "High-C patients follow medication schedules better"],
["E", "Extraversion", "Sociable, talkative, assertive, energetic", "Quiet, reserved, introverted, solitary", "Extraverts benefit from group support; introverts need quiet space"],
["A", "Agreeableness", "Cooperative, empathetic, trusting, helpful", "Competitive, suspicious, uncooperative", "Low-A patients may question every intervention"],
["N", "Neuroticism", "Emotionally unstable, anxious, moody, irritable", "Emotionally stable, calm, even-tempered", "High-N patients need more reassurance and anxiety management"],
],
[10*mm, 30*mm, 44*mm, 40*mm, 46*mm], header_bg=HexColor("#00695C")
))
story.append(Spacer(1, 6))
story.append(tip_box(
"High Conscientiousness (C) is the single best personality predictor of health behavior "
"compliance. High Neuroticism (N) predicts anxiety disorders and depression risk. "
"These two are most clinically relevant for nurses."
))
story.append(PageBreak())
# ── SECTION 13 - PERSONALITY DISORDERS ───────────────────────────
story.append(section_header("13. PERSONALITY DISORDERS - OVERVIEW"))
story.append(Spacer(1, 6))
story.append(info_box(
"A personality disorder is diagnosed when personality traits are <b>inflexible, "
"maladaptive, and cause significant distress or functional impairment</b>. "
"They are grouped into three Clusters (A, B, C)."
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Cluster", "Theme", "Disorders", "Memory Aid"],
[
["A - Odd/Eccentric", "Strange, suspicious, withdrawn", "Paranoid, Schizoid, Schizotypal", "'Weird' cluster"],
["B - Dramatic/Emotional","Impulsive, unstable, dramatic", "Antisocial, Borderline, Histrionic, Narcissistic", "'Wild' cluster"],
["C - Anxious/Fearful", "Anxious, fearful, inhibited", "Avoidant, Dependent, Obsessive-Compulsive (OCPD)", "'Worried' cluster"],
],
[20*mm, 38*mm, 60*mm, 52*mm], header_bg=NAVY
))
story.append(Spacer(1, 6))
story.append(mk_table(
["Disorder", "Cluster", "Key Features"],
[
["Paranoid", "A", "Pervasive distrust and suspicion of others; interprets motives as malevolent"],
["Schizoid", "A", "Detachment from social relationships; restricted emotional expression"],
["Schizotypal", "A", "Odd beliefs, magical thinking, eccentric behavior, social isolation"],
["Antisocial", "B", "Disregard for rights of others; deceitfulness, impulsivity, lack of remorse"],
["Borderline", "B", "Unstable relationships, self-image, and emotions; impulsivity; fear of abandonment"],
["Histrionic", "B", "Excessive emotionality and attention-seeking behavior"],
["Narcissistic", "B", "Grandiosity, need for admiration, lack of empathy"],
["Avoidant", "C", "Social inhibition, feelings of inadequacy, hypersensitivity to criticism"],
["Dependent", "C", "Excessive need to be taken care of; clinging, submissive behavior"],
["OCPD", "C", "Preoccupation with orderliness, perfectionism, control (NOT OCD)"],
],
[35*mm, 18*mm, 117*mm], header_bg=NAVY
))
story.append(PageBreak())
# ── SECTION 14 - QUICK REVISION TABLE ────────────────────────────
story.append(section_header("14. QUICK REVISION MASTER TABLE", bg=HexColor("#B8860B")))
story.append(Spacer(1, 6))
story.append(mk_table(
["Theorist", "Period", "School", "Core Idea", "Key Concept(s)"],
[
["Sigmund Freud", "1856-1939", "Psychoanalysis", "Unconscious drives; childhood shapes personality", "Id/Ego/Superego; Defense mechanisms; Psychosexual stages"],
["Alfred Adler", "1870-1937", "Individual Psychology","Social motivation; inferiority to mastery", "Inferiority complex; Lifestyle; Birth order; Social interest"],
["Carl Jung", "1875-1961", "Analytical Psychology","Collective unconscious; archetypes; introvert/extravert","Archetypes; Persona/Shadow; Collective unconscious; Extraversion"],
["Karen Horney", "1885-1952", "Neo-Freudian/Cultural","Culture shapes personality; basic anxiety", "Basic anxiety; 3 character types (toward/against/away)"],
["Harry Sullivan", "1892-1949", "Interpersonal", "Personality = interpersonal relations pattern", "Needs for satisfaction & security; Self-system; Security operations"],
["Erich Fromm", "1900-1980", "Humanistic", "Freedom vs. loneliness tension", "4 human needs; Pseudoself; 4 character types"],
["Erik Erikson", "1902-1994", "Psychosocial", "8 lifespan stages; each has a conflict to resolve", "8 Psychosocial stages; Virtues at each stage"],
["Wilhelm Reich", "1897-1957", "Character Analysis", "Character armor; physical expression of defense", "Hysterical; Compulsive; Phallic-narcissistic; Masochistic types"],
["Gordon Allport", "1897-1967", "Trait Theory", "Unique personality traits; idiographic approach", "Cardinal/Central/Secondary traits; Proprium"],
["Big Five (OCEAN)","1990s+", "Trait Model", "5 broad personality dimensions", "Openness, Conscientiousness, Extraversion, Agreeableness, Neuroticism"],
],
[28*mm, 18*mm, 28*mm, 44*mm, 52*mm], header_bg=HexColor("#B8860B")
))
story.append(Spacer(1, 10))
# Memory aids
story.append(Paragraph("Memory Aids for Exams:", S["h3"]))
mem_data = [
[Paragraph("<b>OCEAN</b>", S["table_cell"]),
Paragraph("Big Five: <b>O</b>penness, <b>C</b>onscientiousness, <b>E</b>xtraversion, <b>A</b>greeableness, <b>N</b>euroticism", S["table_cell"])],
[Paragraph("<b>3 Rs - Reich</b>", S["table_cell"]),
Paragraph("Hysterical (flighty), Compulsive (Rigid), Phallic-narcissistic (Reserved), Masochistic (self-Ruin)", S["table_cell"])],
[Paragraph("<b>Horney's 3 Cs</b>", S["table_cell"]),
Paragraph("Compliant (toward), Competitive (against), Closed-off (away from others)", S["table_cell"])],
[Paragraph("<b>Erikson's 8</b>", S["table_cell"]),
Paragraph("Trust | Autonomy | Initiative | Industry | Identity | Intimacy | Generativity | Integrity", S["table_cell"])],
[Paragraph("<b>Freud's ID</b>", S["table_cell"]),
Paragraph("<b>I</b>d = Instincts (pleasure), <b>E</b>go = Executive (reality), <b>S</b>uperego = Standards (morality) - IES", S["table_cell"])],
]
mem_tbl = Table(mem_data, colWidths=[30*mm, 140*mm])
mem_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,-1), LIGHT_GOLD),
("BACKGROUND", (1,0), (1,-1), WHITE),
("GRID", (0,0), (-1,-1), 0.4, MED_GREY),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(mem_tbl)
story.append(Spacer(1, 10))
# Footer
story.append(HRFlowable(width="100%", thickness=1, color=NAVY))
story.append(Spacer(1, 4))
story.append(Paragraph(
"PBBSc Nursing 1st Year | MUHS University | Psychology Study Guide | "
"Source: Kaplan & Sadock's Comprehensive Textbook of Psychiatry",
S["footer"]
))
# ── BUILD ─────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")