I actually think this topic can become **far more impressive than Play** if you structure it as a **clinical reasoning seminar** instead of just teaching behaviour theory. Since you're presenting to an **interdisciplinary pediatric team**, the audience will appreciate content they can immediately apply in the clinic. I'd title it: > **"Understanding and Managing Challenging Behaviours in Children with Special Needs: A Functional and Multidisciplinary Approach"** --- # Suggested Seminar Flow (15–20 min) ## 1. Introduction * Opening case scenario * "Behaviour is communication" * Why understanding behaviour matters --- ## 2. What is Behaviour? * Definition * Appropriate vs Challenging behaviour * Observable vs Hidden behaviour --- ## 3. Why Does Behaviour Occur? * Child development * Communication deficits * Sensory processing * Emotional regulation * Executive functioning * Medical/environmental factors Introduce the **Behaviour Iceberg** here. --- ## 4. Behaviour is Communication Explain that behaviour always serves a purpose. Examples: * Crying * Hitting * Throwing * Running away * Self-injury Ask: > "What is the child trying to communicate?" --- ## 5. Functions of Behaviour (Core Topic) The four functions: * **Attention** * **Escape/Avoidance** * **Access to Tangibles** * **Sensory/Automatic Reinforcement** Include one clinical example for each. --- ## 6. Behaviour Assessment Introduce: * ABC Analysis * Functional Behaviour Assessment (FBA) * Frequency * Duration * Intensity * Antecedent analysis * Consequence analysis --- # 7. Behaviour Therapy Approaches This is where you discuss different approaches instead of focusing on only ABA. ### A. Applied Behaviour Analysis (ABA) Techniques: * Reinforcement * Prompting * Chaining * Shaping * Extinction * Token Economy * Differential Reinforcement --- ### B. Cognitive Behaviour Therapy (CBT) Useful for: * ADHD * Anxiety * Older children Techniques: * Self-talk * Cognitive restructuring * Problem-solving * Relaxation --- ### C. Positive Behaviour Support (PBS) Focus: * Modify environment * Teach replacement skills * Improve quality of life --- ### D. Functional Communication Training (FCT) Instead of reducing behaviour, Teach communication. Example Instead of hitting ↓ Teach "Break please." --- ### E. Parent-Mediated Behaviour Therapy * Consistency * Home routines * Positive reinforcement * Behaviour contracts --- ### F. Sensory-Based Behaviour Management (OT) When behaviour is sensory-driven Use * Sensory diet * Heavy work * Deep pressure * Vestibular input * Environmental modification --- # 8. Behaviour Management Techniques Instead of listing them, group them. ### Reinforcement Techniques Positive reinforcement Negative reinforcement Token economy Premack Principle Praise --- ### Teaching Techniques Prompting Prompt fading Shaping Chaining Modelling Backward chaining Forward chaining Errorless learning --- ### Behaviour Reduction Extinction Response interruption Differential reinforcement Planned ignoring Redirection Choice making Visual schedules First-Then boards --- # 9. Activity Prescription (This will make your seminar unique ⭐⭐⭐⭐⭐) This is something many presentations don't include. | Behaviour | Possible Function | OT Activity Prescription | | -------------------------------- | -------------------------- | ---------------------------------------------------------------------------------- | | Running | Vestibular seeking | Obstacle course, scooter board, trampoline, animal walks | | Spinning | Vestibular input | Spinning chair (graded), platform swing, rotational games with regulation | | Jumping | Proprioceptive seeking | Trampoline, crash mat, jumping games | | Throwing objects | Heavy work/attention | Ball throwing target games, bean bag toss, wall push-ups | | Hitting | Communication/anger | Punching pillow, therapy putty, resistance bands, emotional regulation games | | Biting | Oral sensory seeking | Chewy tubes, crunchy foods, blowing whistles | | Mouthing objects | Oral seeking | Oral motor activities, textured chew tools | | Hand flapping | Excitement/self-regulation | Don't always stop; redirect only if it interferes with participation | | Toe walking | Sensory/postural | Heel walking games, balance beam, weighted cart pushing | | Rocking | Vestibular regulation | Therapy ball, rocking chair, rhythmic movement | | Head banging | Sensory/pain/frustration | Deep pressure, communication alternatives, medical evaluation if needed | | Lining up toys | Need for predictability | Gradually introduce flexible play, turn-taking games | | Repetitive opening/closing doors | Cause-effect interest | Busy boards, locks and latches activities | | Screaming | Attention/escape | Teach functional communication, visual supports, calm corner | | Eloping (running away) | Escape/sensory | Obstacle course before tasks, visual boundaries, movement breaks | | Refusing table work | Escape | First-Then board, task breakdown, movement breaks, choices | | Tantrums | Multiple functions | Identify trigger, co-regulation, teach replacement skills, don't reinforce tantrum | | Poor eye contact | Social communication | Bubble play, peek-a-boo, highly motivating face-to-face games | | Difficulty waiting | Impulse control | Turn-taking board games, timer activities, waiting games | | Difficulty transitioning | Predictability | Visual schedule, countdown timer, transition songs | --- # 10. Clinical Cases Include 2–3 quick cases. ### Case 1 Behaviour Throwing toys ↓ ABC ↓ Function ↓ Intervention --- ### Case 2 Spinning ↓ Sensory assessment ↓ Heavy work ↓ Replacement activities --- ### Case 3 Biting ↓ Communication assessment ↓ Teach requesting ↓ Positive reinforcement --- # 11. Multidisciplinary Roles | Discipline | Contribution | | ---------------- | ---------------------------------------------------------------------------- | | OT | Sensory regulation, environmental adaptation, self-regulation, participation | | PT | Gross motor regulation, movement opportunities, posture | | SLP | Functional communication, AAC, PECS, requesting | | Psychologist | Behaviour plans, CBT, parent counselling | | Special Educator | Classroom behaviour management, structured learning | | Parents | Consistency, reinforcement, home carryover | --- # 12. Clinical Pearls * Every behaviour has a function. * Don't ask, "How do I stop it?" * Ask, "Why is it happening?" * Replace behaviour—don't simply suppress it. * Reinforce the behaviour you want to see. * Behaviour management should be individualized and based on assessment, not assumptions. --- ## This is the seminar I would give. It combines: * **Behaviour science** (ABA, PBS, CBT, FCT) * **Occupational therapy** (sensory integration, environmental adaptation) * **Clinical reasoning** (ABC, FBA) * **Practical intervention** (activity prescriptions) * **Interdisciplinary collaboration** (roles of OT, PT, SLP, psychology, special education) It moves beyond theory and answers the questions clinicians ask every day: **"Why is this child behaving this way, and what can we do about it?"** That practical focus is what will make your presentation memorable. make this topic details with answers into a hand written notes
mkdir -p /tmp/workspace/behaviour-seminar && ls /tmp/workspace/behaviour-seminar/
~/behaviour-seminar/generate_notes.py
"""
Handwritten-style clinical seminar notes using ReportLab.
Topic: Understanding and Managing Challenging Behaviours in Children with Special Needs
"""
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm, cm
from reportlab.lib.colors import (
HexColor, white, black
)
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.enums import TA_LEFT, TA_CENTER
import math, os
# ── Colour palette (warm notebook feel) ──────────────────────────────────────
BG = HexColor("#FFFDF4") # cream page
LINE_COL = HexColor("#C8D8E8") # soft blue ruled lines
MARGIN_LINE = HexColor("#F2A0A0") # red margin line
INK = HexColor("#1A1A2E") # near-black ink
HEADING_INK = HexColor("#1B3A6B") # navy for section headings
ACCENT1 = HexColor("#E63946") # red accent (stars, bullets)
ACCENT2 = HexColor("#2A9D8F") # teal accent
ACCENT3 = HexColor("#F4A261") # orange accent
HIGHLIGHT = HexColor("#FFF176") # yellow highlight box
BOX_BG = HexColor("#EAF4FB") # light blue box
BOX_BG2 = HexColor("#FFF0E0") # peach box
BOX_BG3 = HexColor("#E8F5E9") # mint box
RULE_COLOUR = HexColor("#90CAF9") # table rule
W, H = A4 # 595 x 842 pt
# ── Fonts ─────────────────────────────────────────────────────────────────────
# Use built-in Helvetica family (universally available). We simulate the
# "handwritten" look through colour, ruled lines, margin rule and styling.
FONT_BODY = "Helvetica"
FONT_BOLD = "Helvetica-Bold"
FONT_ITALIC = "Helvetica-Oblique"
FONT_BI = "Helvetica-BoldOblique"
# ── Layout constants ──────────────────────────────────────────────────────────
LEFT_MARGIN = 22 * mm
RIGHT_MARGIN = 15 * mm
TOP_MARGIN = 20 * mm
BOTTOM_MARGIN = 18 * mm
LINE_SPACE = 7.5 * mm # ruled-line spacing
MARGIN_X = 18 * mm # red margin rule x-position
CONTENT_LEFT = LEFT_MARGIN + 3 * mm
CONTENT_RIGHT = W - RIGHT_MARGIN
# ─────────────────────────────────────────────────────────────────────────────
class NotesDoc:
def __init__(self, filename):
self.c = canvas.Canvas(filename, pagesize=A4)
self.c.setTitle("Challenging Behaviours in Children – Seminar Notes")
self.c.setAuthor("Interdisciplinary Paediatric Team")
self.filename = filename
self.page_num = 0
self._new_page()
# ── Page infrastructure ───────────────────────────────────────────────────
def _draw_ruled_background(self):
c = self.c
c.setFillColor(BG)
c.rect(0, 0, W, H, fill=1, stroke=0)
# Horizontal ruled lines
c.setStrokeColor(LINE_COL)
c.setLineWidth(0.4)
y = H - TOP_MARGIN
while y > BOTTOM_MARGIN:
c.line(0, y, W, y)
y -= LINE_SPACE
# Red margin line
c.setStrokeColor(MARGIN_LINE)
c.setLineWidth(0.9)
c.line(MARGIN_X, 0, MARGIN_X, H)
# Binding holes (decorative)
for yh in [H * 0.25, H * 0.5, H * 0.75]:
c.setFillColor(HexColor("#D0D0D0"))
c.circle(8 * mm, yh, 3.5 * mm, fill=1, stroke=0)
def _draw_page_footer(self):
c = self.c
c.setFont(FONT_ITALIC, 7)
c.setFillColor(HexColor("#999999"))
c.drawCentredString(W / 2, 10 * mm,
f"Challenging Behaviours in Children with Special Needs · Page {self.page_num}")
# top corner tab
c.setFillColor(HEADING_INK)
c.rect(W - 22*mm, H - 10*mm, 22*mm, 10*mm, fill=1, stroke=0)
c.setFillColor(white)
c.setFont(FONT_BOLD, 7)
c.drawCentredString(W - 11*mm, H - 6.5*mm, f"p.{self.page_num}")
def _new_page(self):
if self.page_num > 0:
self._draw_page_footer()
self.c.showPage()
self.page_num += 1
self._draw_ruled_background()
self.y = H - TOP_MARGIN - 4 * mm # current write head
def _check_space(self, needed=10*mm):
if self.y < BOTTOM_MARGIN + needed:
self._new_page()
# ── Drawing primitives ────────────────────────────────────────────────────
def _snap(self, y):
"""Snap y down to nearest ruled line."""
steps = (H - TOP_MARGIN - y) / LINE_SPACE
return H - TOP_MARGIN - math.ceil(steps) * LINE_SPACE
def move_down(self, amount=LINE_SPACE):
self.y -= amount
self._check_space()
def write_line(self, text, font=FONT_BODY, size=9.5, color=INK,
x=None, center=False, indent=0):
if x is None:
x = CONTENT_LEFT + indent
self.c.setFont(font, size)
self.c.setFillColor(color)
if center:
self.c.drawCentredString(W / 2, self.y, text)
else:
self.c.drawString(x, self.y, text)
self.move_down(LINE_SPACE)
def write_wrapped(self, text, font=FONT_BODY, size=9.5, color=INK,
indent=0, leading=LINE_SPACE, max_width=None):
"""Simple word-wrap writer."""
if max_width is None:
max_width = CONTENT_RIGHT - CONTENT_LEFT - indent
x = CONTENT_LEFT + indent
self.c.setFont(font, size)
self.c.setFillColor(color)
words = text.split()
line = ""
for word in words:
test = (line + " " + word).strip()
if self.c.stringWidth(test, font, size) <= max_width:
line = test
else:
self.c.drawString(x, self.y, line)
self.y -= leading
self._check_space()
line = word
if line:
self.c.drawString(x, self.y, line)
self.y -= leading
self._check_space()
def bullet(self, text, symbol="•", color=ACCENT2, font=FONT_BODY,
size=9.5, indent=5*mm, text_indent=12*mm):
self.c.setFont(FONT_BOLD, size)
self.c.setFillColor(color)
self.c.drawString(CONTENT_LEFT + indent, self.y, symbol)
self.c.setFont(font, size)
self.c.setFillColor(INK)
max_w = CONTENT_RIGHT - CONTENT_LEFT - text_indent
words = text.split()
line = ""
first = True
for word in words:
test = (line + " " + word).strip()
if self.c.stringWidth(test, font, size) <= max_w:
line = test
else:
xpos = CONTENT_LEFT + (text_indent if first else text_indent)
self.c.drawString(xpos, self.y, line)
self.y -= LINE_SPACE
self._check_space()
first = False
line = word
if line:
self.c.drawString(CONTENT_LEFT + text_indent, self.y, line)
self.y -= LINE_SPACE
self._check_space()
def sub_bullet(self, text, symbol="–", indent=10*mm, text_indent=17*mm):
self.c.setFont(FONT_BODY, 9)
self.c.setFillColor(ACCENT3)
self.c.drawString(CONTENT_LEFT + indent, self.y, symbol)
self.c.setFillColor(INK)
max_w = CONTENT_RIGHT - CONTENT_LEFT - text_indent
words = text.split()
line = ""
for word in words:
test = (line + " " + word).strip()
if self.c.stringWidth(test, FONT_BODY, 9) <= max_w:
line = test
else:
self.c.drawString(CONTENT_LEFT + text_indent, self.y, line)
self.y -= LINE_SPACE
self._check_space()
line = word
if line:
self.c.drawString(CONTENT_LEFT + text_indent, self.y, line)
self.y -= LINE_SPACE
self._check_space()
def section_heading(self, number, title, color=HEADING_INK):
self._check_space(20 * mm)
self.move_down(3 * mm)
c = self.c
# Coloured tab behind number
tab_w = 28 * mm
c.setFillColor(HEADING_INK)
c.roundRect(CONTENT_LEFT - 2*mm, self.y - 2*mm,
tab_w, LINE_SPACE + 2*mm, 2*mm, fill=1, stroke=0)
c.setFillColor(white)
c.setFont(FONT_BOLD, 10.5)
c.drawString(CONTENT_LEFT + 1*mm, self.y + 1*mm, number)
# Title text
c.setFillColor(color)
c.setFont(FONT_BI, 11)
c.drawString(CONTENT_LEFT + tab_w + 2*mm, self.y + 1*mm, title)
# Underline
c.setStrokeColor(ACCENT2)
c.setLineWidth(1.2)
c.line(CONTENT_LEFT, self.y - 2*mm, CONTENT_RIGHT, self.y - 2*mm)
self.y -= LINE_SPACE + 4 * mm
self._check_space()
def sub_heading(self, text, color=ACCENT2):
self._check_space(14 * mm)
self.move_down(1.5 * mm)
self.c.setFont(FONT_BOLD, 10)
self.c.setFillColor(color)
self.c.drawString(CONTENT_LEFT + 3*mm, self.y, text)
self.c.setStrokeColor(color)
self.c.setLineWidth(0.6)
self.c.line(CONTENT_LEFT + 3*mm, self.y - 1.5*mm,
CONTENT_LEFT + 3*mm + self.c.stringWidth(text, FONT_BOLD, 10) + 2*mm,
self.y - 1.5*mm)
self.y -= LINE_SPACE + 1 * mm
self._check_space()
def highlight_box(self, lines, bg=HIGHLIGHT, border=ACCENT1, indent=3*mm):
self._check_space((len(lines) + 2) * LINE_SPACE + 4*mm)
pad = 3 * mm
box_h = len(lines) * LINE_SPACE + 2 * pad
bx = CONTENT_LEFT + indent
self.c.setFillColor(bg)
self.c.setStrokeColor(border)
self.c.setLineWidth(1.2)
self.c.roundRect(bx, self.y - box_h + LINE_SPACE, CONTENT_RIGHT - bx, box_h,
3*mm, fill=1, stroke=1)
self.y -= pad
for line in lines:
font = FONT_BOLD if line.startswith("★") or line.startswith("!") else FONT_ITALIC
self.c.setFont(font, 9.5)
self.c.setFillColor(INK)
self.c.drawString(bx + pad, self.y, line)
self.y -= LINE_SPACE
self.y -= pad
self._check_space()
def info_box(self, title, lines, bg=BOX_BG, title_color=HEADING_INK):
self._check_space((len(lines) + 3) * LINE_SPACE + 6*mm)
pad = 3.5 * mm
box_h = (len(lines) + 1.5) * LINE_SPACE + 2 * pad
bx = CONTENT_LEFT + 2*mm
by = self.y - box_h + LINE_SPACE
self.c.setFillColor(bg)
self.c.setStrokeColor(ACCENT2)
self.c.setLineWidth(1)
self.c.roundRect(bx, by, CONTENT_RIGHT - bx - 2*mm, box_h, 3*mm, fill=1, stroke=1)
self.c.setFont(FONT_BOLD, 9.5)
self.c.setFillColor(title_color)
self.c.drawString(bx + pad, self.y - 1*mm, title)
self.c.setStrokeColor(title_color)
self.c.setLineWidth(0.5)
self.c.line(bx + pad, self.y - 3*mm, bx + pad + self.c.stringWidth(title, FONT_BOLD, 9.5), self.y - 3*mm)
self.y -= LINE_SPACE + 1*mm
for line in lines:
self.c.setFont(FONT_BODY, 9)
self.c.setFillColor(INK)
self.c.drawString(bx + pad + 2*mm, self.y, line)
self.y -= LINE_SPACE
self.y -= pad
self._check_space()
def flow_arrow(self, items, color=ACCENT2):
"""Draw a horizontal flow: item → item → item"""
self._check_space(16 * mm)
total = len(items)
box_w = (CONTENT_RIGHT - CONTENT_LEFT - 2*mm) / total - 3*mm
x = CONTENT_LEFT + 2*mm
y_box = self.y - 8*mm
for i, item in enumerate(items):
bx = x + i * (box_w + 6*mm)
self.c.setFillColor(BOX_BG)
self.c.setStrokeColor(color)
self.c.setLineWidth(0.8)
self.c.roundRect(bx, y_box, box_w, 8*mm, 2*mm, fill=1, stroke=1)
self.c.setFont(FONT_BOLD, 8)
self.c.setFillColor(HEADING_INK)
tw = self.c.stringWidth(item, FONT_BOLD, 8)
self.c.drawString(bx + (box_w - tw) / 2, y_box + 2.5*mm, item)
if i < total - 1:
ax = bx + box_w + 1*mm
ay = y_box + 4*mm
self.c.setStrokeColor(ACCENT1)
self.c.setLineWidth(1.2)
self.c.line(ax, ay, ax + 4*mm, ay)
# arrowhead
self.c.setFillColor(ACCENT1)
self.c.polygon([ax + 4*mm, ay + 1.5*mm,
ax + 4*mm, ay - 1.5*mm,
ax + 6*mm, ay], fill=1, stroke=0)
self.y = y_box - 3*mm
self._check_space()
def two_col_list(self, col1_items, col2_items, header1="", header2="", bg=BOX_BG):
mid = CONTENT_LEFT + (CONTENT_RIGHT - CONTENT_LEFT) / 2
rows = max(len(col1_items), len(col2_items))
box_h = (rows + (1.5 if header1 else 0)) * LINE_SPACE + 6*mm
self._check_space(box_h + 4*mm)
bx = CONTENT_LEFT + 1*mm
by = self.y - box_h + LINE_SPACE
self.c.setFillColor(bg)
self.c.setStrokeColor(ACCENT2)
self.c.setLineWidth(0.8)
self.c.roundRect(bx, by, CONTENT_RIGHT - bx - 1*mm, box_h, 3*mm, fill=1, stroke=1)
# divider
self.c.setStrokeColor(ACCENT2)
self.c.line(mid, by, mid, by + box_h)
pad = 4*mm
cy = self.y - 2*mm
if header1:
self.c.setFont(FONT_BOLD, 9)
self.c.setFillColor(HEADING_INK)
self.c.drawString(bx + pad, cy, header1)
self.c.drawString(mid + pad, cy, header2)
cy -= LINE_SPACE
self.c.setFont(FONT_BODY, 8.5)
self.c.setFillColor(INK)
for i in range(rows):
if i < len(col1_items):
self.c.drawString(bx + pad, cy, "• " + col1_items[i])
if i < len(col2_items):
self.c.drawString(mid + pad, cy, "• " + col2_items[i])
cy -= LINE_SPACE
self.y = cy - 3*mm
self._check_space()
def big_table(self, headers, rows, col_widths=None):
"""Draw a table with given headers and rows."""
n_cols = len(headers)
if col_widths is None:
avail = CONTENT_RIGHT - CONTENT_LEFT - 2*mm
col_widths = [avail / n_cols] * n_cols
row_h = LINE_SPACE + 2*mm
total_rows = len(rows) + 1
needed = total_rows * row_h + 4*mm
self._check_space(needed + 4*mm)
bx = CONTENT_LEFT + 1*mm
ty = self.y
# Header row
self.c.setFillColor(HEADING_INK)
self.c.rect(bx, ty - row_h, sum(col_widths), row_h, fill=1, stroke=0)
cx = bx + 2*mm
self.c.setFont(FONT_BOLD, 8)
self.c.setFillColor(white)
for i, h in enumerate(headers):
self.c.drawString(cx, ty - row_h + 3*mm, h)
cx += col_widths[i]
ty -= row_h
alt = False
for row in rows:
# check if this row needs a new page
if ty - row_h < BOTTOM_MARGIN + 5*mm:
self._draw_page_footer()
self.c.showPage()
self.page_num += 1
self._draw_ruled_background()
ty = H - TOP_MARGIN - 4*mm
# re-draw header
self.c.setFillColor(HEADING_INK)
self.c.rect(bx, ty - row_h, sum(col_widths), row_h, fill=1, stroke=0)
cx = bx + 2*mm
self.c.setFont(FONT_BOLD, 8)
self.c.setFillColor(white)
for i, h in enumerate(headers):
self.c.drawString(cx, ty - row_h + 3*mm, h)
cx += col_widths[i]
ty -= row_h
bg_row = HexColor("#F0F8FF") if alt else white
self.c.setFillColor(bg_row)
self.c.rect(bx, ty - row_h, sum(col_widths), row_h, fill=1, stroke=0)
cx = bx + 2*mm
self.c.setFont(FONT_BODY, 7.5)
self.c.setFillColor(INK)
for i, cell in enumerate(row):
max_cw = col_widths[i] - 4*mm
# truncate if too wide
txt = str(cell)
while self.c.stringWidth(txt, FONT_BODY, 7.5) > max_cw and len(txt) > 3:
txt = txt[:-2] + "…"
self.c.drawString(cx, ty - row_h + 3*mm, txt)
cx += col_widths[i]
# grid lines
self.c.setStrokeColor(RULE_COLOUR)
self.c.setLineWidth(0.3)
self.c.rect(bx, ty - row_h, sum(col_widths), row_h, fill=0, stroke=1)
ty -= row_h
alt = not alt
self.y = ty - 3*mm
self._check_space()
def save(self):
self._draw_page_footer()
self.c.save()
print(f"Saved: {self.filename}")
# ═══════════════════════════════════════════════════════════════════════════════
# CONTENT
# ═══════════════════════════════════════════════════════════════════════════════
def build_notes():
out = "/tmp/workspace/behaviour-seminar/Challenging_Behaviours_Seminar_Notes.pdf"
doc = NotesDoc(out)
c = doc.c
# ── COVER PAGE ─────────────────────────────────────────────────────────────
# Large title banner
c.setFillColor(HEADING_INK)
c.roundRect(CONTENT_LEFT - 2*mm, H - 80*mm, CONTENT_RIGHT - CONTENT_LEFT + 4*mm, 55*mm,
4*mm, fill=1, stroke=0)
c.setFillColor(white)
c.setFont(FONT_BOLD, 14)
c.drawCentredString(W/2, H - 38*mm, "Understanding & Managing")
c.setFont(FONT_BOLD, 13)
c.drawCentredString(W/2, H - 50*mm, "Challenging Behaviours in Children")
c.setFont(FONT_BOLD, 11)
c.drawCentredString(W/2, H - 62*mm, "with Special Needs")
c.setFillColor(ACCENT3)
c.setFont(FONT_ITALIC, 9.5)
c.drawCentredString(W/2, H - 72*mm, "A Functional & Multidisciplinary Approach")
# Subtitle band
c.setFillColor(ACCENT2)
c.roundRect(CONTENT_LEFT + 10*mm, H - 92*mm,
CONTENT_RIGHT - CONTENT_LEFT - 20*mm, 8*mm, 2*mm, fill=1, stroke=0)
c.setFillColor(white)
c.setFont(FONT_BOLD, 9)
c.drawCentredString(W/2, H - 87.5*mm, "Clinical Reasoning Seminar · Interdisciplinary Paediatric Team")
# Decorative divider
c.setStrokeColor(ACCENT1)
c.setLineWidth(2)
c.line(CONTENT_LEFT + 20*mm, H - 97*mm, CONTENT_RIGHT - 20*mm, H - 97*mm)
# Key icons / legend row
doc.y = H - 105*mm
legend = [
("★", ACCENT1, "Key Pearl"),
("◆", ACCENT2, "Core Concept"),
("●", ACCENT3, "Technique"),
("→", HEADING_INK, "Flow / Example"),
]
lx = CONTENT_LEFT + 4*mm
for sym, col, label in legend:
c.setFillColor(col)
c.setFont(FONT_BOLD, 11)
c.drawString(lx, doc.y, sym)
c.setFillColor(INK)
c.setFont(FONT_ITALIC, 9)
c.drawString(lx + 7*mm, doc.y, label)
lx += 36*mm
doc.y -= LINE_SPACE * 2
# Seminar overview box
doc.info_box("Seminar at a Glance", [
"Duration : 15 – 20 minutes",
"Audience : OT · PT · SLP · Psychology · Special Education · Paediatricians",
"Sections : 12 (Introduction → Clinical Pearls)",
"Approach : Behaviour Science + Sensory Integration + Clinical Reasoning",
], bg=BOX_BG2)
doc.y -= LINE_SPACE
# Behaviour = Communication call-out
doc.highlight_box([
'★ "Behaviour is Communication."',
" Every behaviour serves a function.",
" Don't ask 'How do I stop it?'",
" Ask 'Why is this happening?'",
], bg=HIGHLIGHT, border=ACCENT1)
doc.y -= LINE_SPACE
c.setFont(FONT_ITALIC, 8)
c.setFillColor(HexColor("#888888"))
c.drawCentredString(W/2, doc.y,
"Handwritten-style seminar notes · All content evidence-based · For educational use")
# ── PAGE 2 : SECTION 1 & 2 ─────────────────────────────────────────────────
doc._new_page()
doc.section_heading("1", "Introduction")
doc.sub_heading("Opening Case Scenario", ACCENT1)
doc.write_wrapped(
"A 5-year-old boy with ASD is brought to the paediatric OPD. "
"He suddenly starts hitting his head against the wall during "
"a waiting-room assessment. The mother says: 'He always does "
"this. I don't know how to stop him.' — What is he trying to tell us?",
font=FONT_ITALIC, color=HexColor("#333355"))
doc.move_down(2*mm)
doc.sub_heading("Why Behaviour Matters", ACCENT2)
for item in [
"Behaviour is the PRIMARY language of children who cannot yet speak effectively.",
"Understanding function → correct intervention → better outcomes.",
"Ignoring function → suppression of behaviour but unmet need persists.",
"Multidisciplinary teams must share a common behaviour language.",
]:
doc.bullet(item)
doc.move_down(2*mm)
doc.section_heading("2", "What is Behaviour?")
doc.sub_heading("Definition")
doc.write_wrapped(
"Any observable, measurable action of an individual in response to "
"an internal or external stimulus.",
font=FONT_BODY, color=INK)
doc.move_down(1*mm)
doc.two_col_list(
["Goal-directed", "Purposeful", "Learned or reinforced", "Context-dependent"],
["Observable (hitting, running)", "Hidden (internal anxiety)", "Functional (serves a need)", "Communicative"],
header1="All behaviours are…", header2="Types of behaviour", bg=BOX_BG
)
doc.move_down(2*mm)
doc.sub_heading("Appropriate vs Challenging Behaviour")
doc.two_col_list(
["Age-appropriate curiosity", "Emotional expression", "Social play", "Routine seeking"],
["Self-injurious (SIB)", "Aggression to others", "Property destruction", "Eloping"],
header1="Appropriate", header2="Challenging", bg=BOX_BG3
)
doc.move_down(2*mm)
doc.sub_heading("The Behaviour Iceberg")
doc.highlight_box([
"Observable (above water): hitting, biting, screaming, running",
"Hidden (below water): sensory overload, fear, pain, hunger,",
" communication deficit, anxiety, unmet need, executive dysfunction",
"★ Treat the ICEBERG, not just the tip!",
], bg=BOX_BG2, border=ACCENT2)
# ── PAGE 3 : SECTION 3 ─────────────────────────────────────────────────────
doc._new_page()
doc.section_heading("3", "Why Does Behaviour Occur?")
factors = [
("Child Development", [
"Developmental stage & age expectations",
"Cognitive, social, emotional maturity",
"Temperament and personality traits",
]),
("Communication Deficits", [
"Cannot express needs verbally",
"Limited requesting / protesting skills",
"Behaviour replaces words",
]),
("Sensory Processing", [
"Hyper- or hypo-sensitivity",
"Sensory seeking or avoiding",
"Vestibular · Proprioceptive · Tactile · Auditory · Visual",
]),
("Emotional Regulation", [
"Difficulty identifying emotions",
"Poor frustration tolerance",
"Meltdown vs. tantrum distinction",
]),
("Executive Functioning", [
"Impulse control deficits",
"Difficulty shifting attention",
"Working memory limitations",
]),
("Medical / Environmental", [
"Pain (otitis, GI issues, dental)",
"Medications / sleep disorders",
"Overstimulating environment",
]),
]
for title, pts in factors:
doc.sub_heading(title, ACCENT2)
for p in pts:
doc.bullet(p, symbol="◆", color=ACCENT2)
doc.move_down(1*mm)
# ── PAGE 4 : SECTION 4 & 5 ─────────────────────────────────────────────────
doc._new_page()
doc.section_heading("4", "Behaviour is Communication")
doc.write_wrapped(
"Every behaviour has a purpose. Before asking 'How do I stop it?' — ask "
"'What is the child trying to communicate?'",
font=FONT_BI, color=HEADING_INK)
doc.move_down(2*mm)
examples = [
("Crying", "Pain · fear · hunger · fatigue · loneliness"),
("Hitting", "Frustration · communication breakdown · attention need"),
("Throwing", "Protest · escape · heavy-work seeking · anger"),
("Running away", "Escape from demand · sensory overload · seeking space"),
("Self-injury", "Sensory stimulation · extreme frustration · pain · communication"),
]
doc.sub_heading("Behaviour Examples — What are they communicating?")
doc.big_table(
["Behaviour", "Possible Communication"],
examples,
col_widths=[50*mm, 110*mm]
)
doc.move_down(3*mm)
doc.section_heading("5", "Functions of Behaviour (SEAT)")
functions = [
("Attention", ACCENT1,
"Child wants social interaction, eye contact, or a response from others.",
"Example: Child throws toy → teacher rushes over → toy-throwing is reinforced."),
("Escape / Avoidance", ACCENT2,
"Child wants to get away from a demand, activity, person, or environment.",
"Example: Child cries at handwriting task → sent to cool-down → escape achieved."),
("Access to Tangibles", ACCENT3,
"Child wants an object, food, activity, or preferred item.",
"Example: Child screams in store → parent buys candy → access achieved."),
("Sensory / Automatic", HEADING_INK,
"Behaviour produces its own sensory reward — no external reinforcement needed.",
"Example: Rocking, hand-flapping, spinning — self-regulating sensory input."),
]
for name, col, desc, ex in functions:
doc.move_down(1*mm)
doc.sub_heading(f"S·E·A·T → {name}", col)
doc.write_wrapped(desc, color=INK)
doc.write_wrapped(ex, font=FONT_ITALIC, color=HexColor("#444466"),
indent=5*mm)
doc.move_down(0.5*mm)
doc.highlight_box([
"★ The SAME behaviour can serve DIFFERENT functions in different children.",
" → Always assess the function before choosing an intervention.",
" SEAT = Sensory · Escape · Attention · Tangible",
], bg=HIGHLIGHT, border=ACCENT1)
# ── PAGE 5 : SECTION 6 ─────────────────────────────────────────────────────
doc._new_page()
doc.section_heading("6", "Behaviour Assessment")
doc.sub_heading("ABC Analysis", ACCENT1)
doc.flow_arrow(["A Antecedent", "B Behaviour", "C Consequence"])
doc.move_down(2*mm)
abc = [
("Antecedent", "What happened BEFORE the behaviour?", "Teacher gave instruction to sit"),
("Behaviour", "What did the child DO? (Observable, measurable)", "Child screamed and ran"),
("Consequence","What happened AFTER? (Maintains behaviour?)", "Teacher stopped instruction"),
]
doc.big_table(["Component", "Question to Ask", "Example"], abc,
col_widths=[35*mm, 80*mm, 45*mm])
doc.move_down(2*mm)
doc.sub_heading("Functional Behaviour Assessment (FBA)", ACCENT2)
for item in [
"Indirect: interviews, rating scales, questionnaires with parents/teachers",
"Direct: structured ABC observation in natural setting",
"Experimental (FA): systematic manipulation to confirm function",
"Output: Behaviour Support Plan (BSP) with hypothesis statement",
]:
doc.bullet(item)
doc.move_down(2*mm)
doc.sub_heading("Measurement Parameters")
doc.two_col_list(
["Frequency – how often?", "Duration – how long?", "Intensity – how severe?"],
["Latency – time to respond", "Antecedent triggers", "Consequence patterns"],
bg=BOX_BG
)
doc.move_down(2*mm)
doc.sub_heading("Hypothesis Statement Template", ACCENT3)
doc.highlight_box([
"When [ANTECEDENT] occurs,",
"[CHILD'S NAME] engages in [BEHAVIOUR]",
"in order to [FUNCTION].",
"",
"Example: When asked to do handwriting,",
"Riya screams and flips the table in order to escape the task.",
], bg=BOX_BG2, border=ACCENT2)
# ── PAGE 6 : SECTION 7A & 7B ───────────────────────────────────────────────
doc._new_page()
doc.section_heading("7", "Behaviour Therapy Approaches")
doc.sub_heading("A. Applied Behaviour Analysis (ABA)", ACCENT1)
doc.write_wrapped(
"Evidence-based approach based on principles of learning and behaviour. "
"Focuses on measurable behaviour change through reinforcement and systematic teaching.",
color=INK)
doc.move_down(1*mm)
aba_tech = [
("Reinforcement", "Increase a desired behaviour using positive/negative consequences"),
("Prompting", "Physical · gestural · verbal · visual cues to elicit correct response"),
("Prompt Fading", "Systematically reduce prompt level to build independence"),
("Chaining", "Link steps; forward chain (start→end) / backward chain (end→start)"),
("Shaping", "Reinforce successive approximations toward target behaviour"),
("Extinction", "Withhold reinforcement for problem behaviour (use with caution)"),
("Token Economy", "Earn tokens for desired behaviours; exchange for preferred reward"),
("Differential Reinforcement","DRI · DRA · DRO · DRL — reinforce behaviours incompatible with problem"),
]
doc.big_table(["Technique", "Description"], aba_tech,
col_widths=[42*mm, 118*mm])
doc.move_down(3*mm)
doc.sub_heading("B. Cognitive Behaviour Therapy (CBT)", ACCENT2)
doc.write_wrapped(
"Best for older children (5+) with ADHD, anxiety, oppositional behaviour, "
"depression. Addresses thoughts → feelings → behaviour cycle.",
color=INK)
doc.move_down(1*mm)
doc.two_col_list(
["Self-talk / self-monitoring", "Cognitive restructuring", "Problem-solving steps", "Relaxation training"],
["Best for: ADHD inattention", "Best for: anxiety, anger", "Requires: language skills", "Co-regulation first"],
header1="CBT Techniques", header2="Clinical Notes", bg=BOX_BG
)
# ── PAGE 7 : SECTION 7C–7F ─────────────────────────────────────────────────
doc._new_page()
doc.sub_heading("C. Positive Behaviour Support (PBS)", ACCENT3)
doc.write_wrapped(
"Person-centred, proactive framework. Changes environment and systems "
"rather than just targeting the child. Improves quality of life.",
color=INK)
for item in [
"Modify the environment BEFORE behaviour occurs (antecedent intervention)",
"Teach replacement skills (communication, coping, social)",
"Build on strengths, preferences, and motivators",
"Family and team consistency is essential",
]:
doc.bullet(item)
doc.move_down(2*mm)
doc.sub_heading("D. Functional Communication Training (FCT)", HEADING_INK)
doc.write_wrapped(
"Replace a problem behaviour with an appropriate communicative "
"alternative that serves the SAME function.",
color=INK)
doc.move_down(1*mm)
doc.flow_arrow(["Problem Behaviour", "Identify Function", "Teach Equivalent Comm.", "Reinforce New Behaviour"])
doc.move_down(2*mm)
fct_ex = [
("Hitting", "Escape", "\"Break please\" (sign/card/PECS)"),
("Screaming", "Attention", "Tap shoulder + wait"),
("Biting", "Sensory", "Request chewy toy"),
("Running away", "Escape", "\"Help me\" + movement break"),
]
doc.big_table(["Behaviour", "Function", "FCT Replacement"], fct_ex,
col_widths=[38*mm, 35*mm, 87*mm])
doc.move_down(3*mm)
doc.sub_heading("E. Parent-Mediated Behaviour Therapy", ACCENT2)
for item in [
"Consistency across settings: home · school · clinic",
"Establish predictable routines and visual schedules",
"Use positive reinforcement, not punishment",
"Behaviour contracts for older children",
"Parent coaching sessions; include siblings if possible",
]:
doc.bullet(item)
doc.move_down(2*mm)
doc.sub_heading("F. Sensory-Based Behaviour Management (OT Focus)", ACCENT1)
doc.write_wrapped(
"When behaviour is driven by sensory processing differences — "
"treat the sensory root, not just the behaviour.",
font=FONT_BI, color=HEADING_INK)
doc.move_down(1*mm)
doc.two_col_list(
["Sensory diet (scheduled input)", "Heavy work activities", "Deep pressure (weighted vest · squeeze)"],
["Vestibular input (swing · trampoline)", "Environmental modification", "Noise/visual reduction strategies"],
bg=BOX_BG3
)
# ── PAGE 8 : SECTION 8 ─────────────────────────────────────────────────────
doc._new_page()
doc.section_heading("8", "Behaviour Management Techniques")
doc.sub_heading("Group 1 — Reinforcement Techniques", ACCENT1)
rein = [
("Positive Reinforcement", "Add something desirable → increases behaviour"),
("Negative Reinforcement", "Remove something aversive → increases behaviour (≠ punishment)"),
("Token Economy", "Earn tokens → exchange for reward; visual and systematic"),
("Premack Principle", "'First work, then play' — preferred activity reinforces non-preferred"),
("Behaviour-specific Praise","Immediate, specific, warm: 'Great waiting with your hands in your lap!'"),
]
doc.big_table(["Technique", "How It Works"], rein, col_widths=[52*mm, 108*mm])
doc.move_down(3*mm)
doc.sub_heading("Group 2 — Teaching Techniques", ACCENT2)
teaching = [
("Prompting", "Physical · gestural · verbal · visual; least-to-most or most-to-least"),
("Prompt Fading", "Systematically reduce prompts to build independence"),
("Shaping", "Reinforce successive approximations; build toward goal gradually"),
("Forward Chaining", "Teach Step 1 first; complete rest for child; add steps sequentially"),
("Backward Chaining", "Teach last step first; child finishes task; builds success momentum"),
("Modelling", "Demonstrate target behaviour; peer/therapist/video model"),
("Errorless Learning", "Provide immediate prompt so child always succeeds; fades over time"),
]
doc.big_table(["Technique", "Description"], teaching, col_widths=[42*mm, 118*mm])
doc.move_down(3*mm)
doc.sub_heading("Group 3 — Behaviour Reduction Techniques", ACCENT3)
reduction = [
("Extinction", "Withhold reinforcement; expect extinction burst first"),
("Differential Reinforcement","DRI/DRA/DRO/DRL — reward alternative or incompatible behaviour"),
("Planned Ignoring", "Ignore attention-motivated behaviours consistently"),
("Redirection", "Re-direct to appropriate activity before behaviour escalates"),
("Response Interruption", "Interrupt and redirect repetitive/disruptive behaviour"),
("Choice Making", "Offer 2 acceptable choices — increases control, reduces resistance"),
("Visual Schedule", "Predictable sequence reduces anxiety and transitions resistance"),
("First-Then Board", "Visual 'First __ Then __' — clear contingency, reduces protests"),
]
doc.big_table(["Technique", "Note"], reduction, col_widths=[52*mm, 108*mm])
# ── PAGE 9 : SECTION 9 (Activity Prescription) ─────────────────────────────
doc._new_page()
doc.section_heading("9", "Activity Prescription ★ OT Unique Contribution ★")
doc.write_wrapped(
"Match the sensory function of the behaviour to a therapeutic activity. "
"This is NOT about stopping behaviour — it is about meeting the underlying need.",
font=FONT_ITALIC, color=HEADING_INK)
doc.move_down(2*mm)
act_rows = [
("Running", "Vestibular seeking", "Obstacle course · scooter board · trampoline · animal walks"),
("Spinning", "Vestibular input", "Spinning chair (graded) · platform swing · rotational games"),
("Jumping", "Proprioceptive seeking", "Trampoline · crash mat · jumping games"),
("Throwing objects", "Heavy work / attention", "Ball-throwing target games · bean-bag toss · wall push-ups"),
("Hitting", "Communication / anger", "Punching pillow · therapy putty · resistance bands"),
("Biting", "Oral sensory seeking", "Chewy tubes · crunchy foods · blowing whistles"),
("Mouthing objects", "Oral seeking", "Oral motor activities · textured chew tools"),
("Hand flapping", "Excitement / self-reg.", "Don't always stop; redirect only if interferes with tasks"),
("Toe walking", "Sensory / postural", "Heel-walking games · balance beam · weighted cart pushing"),
("Rocking", "Vestibular regulation", "Therapy ball · rocking chair · rhythmic movement"),
("Head banging", "Sensory / pain / frustration","Deep pressure · communication alternatives · medical eval."),
("Lining up toys", "Need for predictability", "Flexible play gradually · turn-taking games"),
("Repetitive door opening","Cause-effect interest", "Busy boards · locks and latches activities"),
("Screaming", "Attention / escape", "Functional communication · visual supports · calm corner"),
("Eloping", "Escape / sensory", "Obstacle course before tasks · visual boundaries · movement breaks"),
("Refusing table work", "Escape", "First-Then board · task breakdown · movement breaks · choices"),
("Tantrums", "Multiple functions", "Identify trigger · co-regulation · teach replacement · don't reinforce"),
("Poor eye contact", "Social communication", "Bubble play · peek-a-boo · highly motivating face-to-face games"),
("Difficulty waiting", "Impulse control", "Turn-taking board games · timer activities · waiting games"),
("Difficulty transitioning","Predictability", "Visual schedule · countdown timer · transition songs"),
]
doc.big_table(
["Behaviour", "Possible Function", "OT Activity Prescription"],
act_rows,
col_widths=[38*mm, 38*mm, 84*mm]
)
# ── PAGE 10 : SECTION 10 (Cases) ───────────────────────────────────────────
doc._new_page()
doc.section_heading("10", "Clinical Cases")
cases = [
{
"title": "Case 1 — Throwing Toys",
"steps": [
("Behaviour", "4-year-old boy throws toys repeatedly during structured OT session"),
("ABC", "A: Therapist introduces puzzle task | B: Child throws puzzle pieces | C: Task removed"),
("Function", "Escape / Avoidance — behaviour is maintained by task termination"),
("Intervention", "FCT: teach 'break please' card · Break contingent on requesting, not throwing ·"
" Gradually increase task tolerance · Offer choices within task"),
],
"col": ACCENT1,
},
{
"title": "Case 2 — Spinning",
"steps": [
("Behaviour", "6-year-old girl spins repeatedly; difficult to redirect"),
("Assessment", "Sensory profile → vestibular seeking · Spinning increases with task demands"),
("Function", "Sensory / Automatic reinforcement"),
("Intervention", "Sensory diet: platform swing before school · Spinning chair (graded) ·"
" Rotational movement breaks scheduled · Do not use extinction"),
],
"col": ACCENT2,
},
{
"title": "Case 3 — Biting",
"steps": [
("Behaviour", "3-year-old nonverbal boy bites peers and self"),
("Assessment", "Communication assessment → minimal requesting skills · Oral sensory seeking"),
("Function", "Dual: oral sensory + communication"),
("Intervention", "FCT: PECS / AAC to request 'help' / 'break' · Chewy tubes on schedule ·"
" Oral motor warm-up before sessions · Positive reinforcement for manding"),
],
"col": ACCENT3,
},
]
for case in cases:
doc._check_space(40*mm)
doc.sub_heading(case["title"], case["col"])
rows = [(step, detail) for step, detail in case["steps"]]
doc.big_table(["Step", "Detail"], rows, col_widths=[30*mm, 130*mm])
doc.move_down(3*mm)
# ── PAGE 11 : SECTION 11 ────────────────────────────────────────────────────
doc._new_page()
doc.section_heading("11", "Multidisciplinary Roles")
doc.write_wrapped(
"Behaviour management is most effective when the whole team works from "
"a shared understanding. Each discipline brings a unique lens.",
color=INK)
doc.move_down(2*mm)
mdt = [
("OT (Occupational Therapist)",
"Sensory regulation · environmental adaptation · self-regulation · "
"fine motor participation · sensory diet · activity prescription"),
("PT (Physiotherapist)",
"Gross motor regulation · movement opportunities · posture & body awareness · "
"heavy work activities"),
("SLP (Speech-Language Pathologist)",
"Functional communication training · AAC · PECS · requesting & protesting · "
"social communication"),
("Psychologist",
"FBA · behaviour support plans · CBT · parent counselling · "
"diagnostic clarity (ASD, ADHD, anxiety)"),
("Special Educator",
"Classroom behaviour management · structured learning environment · "
"visual supports · social skills curriculum"),
("Parents / Caregivers",
"Consistency across home and school · reinforcement strategies · "
"behaviour contracts · carryover of therapy goals"),
]
doc.big_table(["Discipline", "Key Contributions"], mdt,
col_widths=[50*mm, 110*mm])
doc.move_down(3*mm)
doc.info_box("Keys to Effective MDT Collaboration", [
"→ Shared behaviour vocabulary (everyone uses ABC, FBA, SEAT)",
"→ Regular team meetings with case discussions",
"→ Unified behaviour plan — same responses across settings",
"→ Parent as equal team member, not just recipient of advice",
"→ Data collection and shared monitoring of behaviour trends",
], bg=BOX_BG2)
# ── PAGE 12 : SECTION 12 (Clinical Pearls) ─────────────────────────────────
doc._new_page()
doc.section_heading("12", "Clinical Pearls ★")
pearls = [
"Every behaviour has a function — understand it before intervening.",
"Don't ask 'How do I stop it?' — ask 'Why is it happening?'",
"Replace the behaviour — don't just suppress it.",
"Reinforce the behaviour you WANT to see, not the one you want to stop.",
"Behaviour management must be individualised — based on assessment, not assumptions.",
"The same behaviour can have different functions in different children.",
"Sensory-driven behaviour needs a sensory solution, not only a behavioural one.",
"Consistency across home, school, and clinic is essential for behaviour change.",
"Parent training is as important as direct therapy.",
"Document ABC data before every behaviour support plan — guessing the function is risky.",
"Extinction produces an extinction burst — prepare the team and family.",
"FCT is one of the most powerful tools: give the child a voice.",
]
for i, pearl in enumerate(pearls, 1):
doc._check_space(10*mm)
c = doc.c
# Star badge
c.setFillColor(ACCENT1)
c.circle(CONTENT_LEFT + 4*mm, doc.y + 2*mm, 4*mm, fill=1, stroke=0)
c.setFillColor(white)
c.setFont(FONT_BOLD, 8)
c.drawCentredString(CONTENT_LEFT + 4*mm, doc.y + 0.5*mm, str(i))
c.setFillColor(INK)
c.setFont(FONT_BODY, 9.5)
max_w = CONTENT_RIGHT - CONTENT_LEFT - 14*mm
words = pearl.split()
line = ""
first = True
for word in words:
test = (line + " " + word).strip()
if c.stringWidth(test, FONT_BODY, 9.5) <= max_w:
line = test
else:
c.drawString(CONTENT_LEFT + 12*mm, doc.y + (2*mm if first else 0), line)
doc.y -= LINE_SPACE
doc._check_space()
first = False
line = word
if line:
c.drawString(CONTENT_LEFT + 12*mm, doc.y + (2*mm if first else 0), line)
doc.y -= LINE_SPACE + 1*mm
doc._check_space()
doc.move_down(3*mm)
doc.highlight_box([
"★ SUMMARY: Behaviour = Communication. Assess it. Understand it.",
" Match your intervention to the FUNCTION — not just the topography.",
" Work as a team. Include the parents. Document. Review. Adjust.",
], bg=HIGHLIGHT, border=ACCENT1)
doc.move_down(4*mm)
# Final footer note
doc.c.setFont(FONT_ITALIC, 8)
doc.c.setFillColor(HexColor("#777777"))
doc.c.drawCentredString(W/2, doc.y,
"Prepared for Interdisciplinary Paediatric Team · Clinical Reasoning Seminar · 2024")
doc.move_down(LINE_SPACE)
doc.c.setFont(FONT_BOLD, 8)
doc.c.setFillColor(HEADING_INK)
doc.c.drawCentredString(W/2, doc.y,
"References: Cooper et al. (ABA); Schreibman et al. (PBS); Bundy & Murray (Sensory Integration)")
doc.save()
return out
if __name__ == "__main__":
result = build_notes()
print(f"Done: {result}")
ok js type n send your content in chat