What is the answer
Generate a quick reference guide for pediatric vomiting disorders
| Age Group | Top Causes to Consider |
|---|---|
| Newborn (0-2 wk) | Esophageal atresia, malrotation/volvulus, intestinal atresia, meconium ileus, Hirschsprung disease, congenital adrenal hyperplasia, GER, sepsis |
| Infant (2-12 wk) | Pyloric stenosis, malrotation, intussusception, GER, UTI, gastroenteritis |
| Infant (3-24 mo) | Intussusception, Hirschsprung, GER, gastroenteritis, UTI, Meckel diverticulum |
| Child (>12 mo) | Gastroenteritis, appendicitis, intussusception, cyclic vomiting, migraine, peptic ulcer, foreign body |
Red flag: Bilious (green) vomiting = surgical emergency until proven otherwise. 1/3 to 1/2 of newborns with bilious vomiting have a surgical lesion (malrotation/volvulus or Hirschsprung disease).
| Feature | Details |
|---|---|
| Age | 2-8 weeks (peak ~4 weeks); rare after 12 weeks |
| Sex | Males 4-5x more common; first-born predisposition |
| Incidence | 1:250-900 live births |
| Vomiting type | Forceful projectile, non-bilious vomiting shortly after every feeding |
| Hunger | Infant remains hungry immediately after vomiting ("hungry vomiter") |
| Classic sign | Palpable "olive" mass in right epigastrium; visible left-to-right peristaltic waves |
| Labs | Hypochloremic, hypokalemic metabolic alkalosis (HCO3 ≥29, Cl ≤98 mmol/L) |
| Diagnosis | Ultrasound: pyloric muscle thickness >4 mm, diameter >14 mm, length >19 mm; "string sign" on UGI |
| Treatment | Pyloromyotomy (Ramstedt procedure) - surgical splitting of pyloric muscle |
| Risk factors | Erythromycin/azithromycin in first 2 weeks of life; prematurity; Down syndrome; family history |
| Feature | Details |
|---|---|
| Age | Begins shortly after birth; peaks 4 months; usually resolves by 12-18 months |
| Vomiting type | Passive regurgitation/spitting up; NOT projectile |
| Key distinction | Starts at birth, relatively constant (vs. pyloric stenosis which is progressive from 2-3 weeks) |
| Alarm features | Poor weight gain, irritability, arching, apnea (GERD) |
| Diagnosis | Clinical; pH probe or endoscopy if complicated |
| Treatment | Positioning, thickened feeds, PPI/H2 blockers if symptomatic GERD |
| Feature | Details |
|---|---|
| Age | Most common GI obstruction in children <2 years; peak 5-12 months |
| Sex | Males more common |
| Vomiting type | Present but secondary; colicky pain is dominant symptom |
| Classic triad | Colicky abdominal pain + palpable sausage-shaped mass + "currant jelly" stool (bloody mucus) - triad present in minority |
| Pain pattern | Severe episodic pain lasting 10-15 min, recurring every 15-30 min; child draws legs up |
| Lead point | Usually idiopathic (enlarged Peyer patches post-viral); >5 years: Meckel diverticulum, lymphoma, polyps |
| Diagnosis | Ultrasound ("target sign"); plain film "meniscus sign"; air enema is both diagnostic and therapeutic |
| Treatment | Air/hydrostatic enema reduction (first-line); surgery if failed or peritonitis |
| Feature | Details |
|---|---|
| Incidence | 1:5,000 live births; boys 4-5x more common |
| Association | 10% with Down syndrome |
| Pathophysiology | Failure of neural crest cell migration → absence of ganglion cells (Meissner + Auerbach plexuses) → functional obstruction → megacolon |
| Hallmark | Failure to pass meconium within 48h of birth |
| Presentation | Chronic constipation, abdominal distension, bilious vomiting, failure to thrive |
| Classic sign | "Squirt sign" - explosive stool release on rectal exam |
| Diagnosis | Barium enema (narrowed aganglionic segment + proximal dilation); confirmed by rectal biopsy (absence of ganglion cells) |
| Treatment | Surgical resection of aganglionic segment |
| Feature | Details |
|---|---|
| Age | 80% present in first month of life |
| Vomiting type | Sudden onset bilious (green) vomiting = SURGICAL EMERGENCY |
| Signs | Abdominal distension, bloody stools (late sign = ischemia), shock |
| Diagnosis | UGI series: duodenojejunal junction not in left upper quadrant; "corkscrew" sign |
| Treatment | Emergency Ladd's procedure; every minute counts to prevent bowel necrosis |
| Feature | Details |
|---|---|
| Age | Any age |
| Vomiting type | Acute onset, accompanied by diarrhea, fever, exposure history |
| Cause | Viral (Rotavirus, Norovirus most common); bacterial |
| Key distinction | Diarrhea + systemic illness differentiates from structural causes |
| Treatment | Oral rehydration therapy (ORT); IV fluids if severe dehydration |
| Clue | Diagnosis |
|---|---|
| 4-week-old, projectile non-bilious vomiting, hungry after | Pyloric stenosis |
| Bilious vomiting, newborn | Malrotation/volvulus (emergency) |
| Failure to pass meconium, constipation, Down syndrome | Hirschsprung disease |
| 6-12 month old, intermittent colicky pain + currant jelly stool | Intussusception |
| Vomiting + diarrhea, fever, viral exposure | Gastroenteritis |
| Spitting up from birth, non-projectile, otherwise well | Gastroesophageal reflux |
According to amc guidelines
What would you like according to AMC (Australian Medical Council) guidelines?
AMC Australian Medical Council exam pediatric GI vomiting topics syllabus 2024
AMC MCQ exam pediatric surgery pyloric stenosis intussusception high yield topics
https://www.fellowacademy.com.au/articles/amc-mcq-exam-forma…
| Vomiting Type | Suspect |
|---|---|
| Projectile | Pyloric stenosis |
| Bilious (dark green) | GIT obstruction (surgical emergency) |
| Blood | Upper GI haemorrhage / swallowed maternal blood |
| Early morning | Raised intracranial pressure |
| With diarrhoea | Gastroenteritis |
| With rectal bleeding | Intussusception / Meckel's diverticulum / colitis |
| Cyclic pattern | Cyclical vomiting syndrome |
| In neonate/infant | Consider inborn errors of metabolism |
| What AMC tests | Answer |
|---|---|
| Vomiting character | Forceful, projectile, non-bilious, post-prandial |
| Age at presentation | 2-8 weeks (peak ~4 weeks) |
| Sex | Males 4x more common |
| Classic exam sign | Palpable "olive" mass in right epigastrium |
| Visible on abdomen | Left-to-right peristaltic waves |
| Metabolic derangement | Hypochloraemic, hypokalaemic metabolic alkalosis |
| Best investigation | Ultrasound (pyloric thickness >4 mm, length >19 mm) |
| Treatment | Pyloromyotomy (Ramstedt procedure) - after fluid/electrolyte correction |
| Pre-op priority | Correct the metabolic alkalosis first before surgery |
AMC trap: Do NOT take to theatre immediately - stabilise electrolytes first. Pyloric stenosis is an urgent, not emergency operation.
| What AMC tests | Answer |
|---|---|
| Age peak | 5-12 months |
| Classic triad | Colicky pain + sausage-shaped mass + "currant jelly" stool |
| First-line investigation | Abdominal ultrasound ("target sign" or "doughnut sign") |
| Treatment (first-line) | Air enema reduction (diagnostic + therapeutic) |
| Contraindication to enema | Signs of perforation (free air) |
| Fallback treatment | Surgical reduction |
| Common trigger | Enlarged Peyer patches post-viral illness |
RCH Guideline tip: Rectal bleeding + vomiting in an infant = intussusception until proven otherwise.
| What AMC tests | Answer |
|---|---|
| Key hallmark | Failure to pass meconium within 48 hours of birth |
| Association | Down syndrome (trisomy 21) in ~10% of cases |
| Rectal exam finding | Explosive stool release = "squirt sign" |
| Pathology | Absent ganglion cells (aganglionosis) in distal colon |
| Confirmatory test | Rectal biopsy (absence of ganglion cells) |
| Diagnostic imaging | Barium enema: narrowed distal segment + proximal dilation |
| Treatment | Surgical resection of aganglionic segment |
| What AMC tests | Answer |
|---|---|
| Key distinction | Diarrhoea + fever differentiates from structural causes |
| Most common cause | Rotavirus (infants), Norovirus (older children) |
| Dehydration assessment | Sunken fontanelle, dry mucous membranes, reduced urine, skin turgor |
| First-line treatment | Oral rehydration therapy (ORT) - small frequent sips |
| Antiemetic (RCH guideline) | Ondansetron: 2mg (8-15kg), 4mg (15-30kg), 8mg (>30kg) |
| When to admit | Severe dehydration, unable to tolerate ORT, altered consciousness |
AMC focus: Always assess dehydration severity. The AMC may ask about ORT vs IV fluids decision-making.
| What AMC tests | Answer |
|---|---|
| Key distinction from pyloric stenosis | Begins from birth, constant (not progressive); non-projectile regurgitation |
| Alarm features (GORD) | Poor weight gain, irritability, arching (Sandifer syndrome), apnoea |
| Investigation (if complicated) | pH impedance study or endoscopy |
| First-line management | Parental reassurance, positioning, thickened feeds |
| Drug therapy | Alginate (Gaviscon) first; PPI (omeprazole) for confirmed GORD |
| Clue in stem | Go-to diagnosis |
|---|---|
| 4-week-old, projectile non-bilious, hungry after | Pyloric stenosis |
| Neonate, bilious vomiting | Malrotation/volvulus (emergency) |
| Neonate, no meconium, Down syndrome | Hirschsprung disease |
| 6-12 months, currant jelly stool, colicky pain | Intussusception |
| Vomiting + diarrhoea + fever | Gastroenteritis |
| Spitting from birth, not projectile, thriving | Gastroesophageal reflux |
| Vomiting + headache + papilloedema | Raised ICP |
| Cyclic vomiting, well between episodes | Cyclical vomiting syndrome |
Key AMC principle: Bilious vomiting at any age = surgical emergency. This is the single most important rule in AMC paediatric GI questions.
Create a pdf for amc guidelines for each and every topic
AMC MCQ exam high yield topics all specialties medicine surgery psychiatry paediatrics 2024 2025
https://www.fellowacademy.com.au/articles/amc-mcq-exam-forma…
mkdir -p /home/daytona/workspace/amc-guidelines && ls /home/daytona/workspace/
~/amc-guidelines/generate_amc_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import BaseDocTemplate, Frame, PageTemplate
from reportlab.lib.colors import HexColor
# ── Colour palette ──────────────────────────────────────────────
NAVY = HexColor('#1A3A5C')
TEAL = HexColor('#006B6B')
GOLD = HexColor('#C8860A')
LIGHT_BLUE = HexColor('#D6EAF8')
LIGHT_TEAL = HexColor('#D0EFEF')
LIGHT_GOLD = HexColor('#FEF9E7')
WHITE = colors.white
GREY_BG = HexColor('#F4F6F7')
RED_ALERT = HexColor('#C0392B')
GREEN_OK = HexColor('#1E8449')
ORANGE = HexColor('#D35400')
LIGHT_RED = HexColor('#FADBD8')
DARK_GREY = HexColor('#2C3E50')
# ── Styles ───────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def make_style(name, parent='Normal', **kwargs):
return ParagraphStyle(name, parent=styles[parent], **kwargs)
cover_title = make_style('CoverTitle', fontSize=32, textColor=WHITE,
alignment=TA_CENTER, fontName='Helvetica-Bold', leading=40)
cover_sub = make_style('CoverSub', fontSize=16, textColor=HexColor('#BDC3C7'),
alignment=TA_CENTER, fontName='Helvetica', leading=22)
cover_tag = make_style('CoverTag', fontSize=11, textColor=GOLD,
alignment=TA_CENTER, fontName='Helvetica-Bold')
chapter_title = make_style('ChapterTitle', fontSize=22, textColor=WHITE,
fontName='Helvetica-Bold', leading=28)
section_head = make_style('SectionHead', fontSize=14, textColor=NAVY,
fontName='Helvetica-Bold', leading=18, spaceAfter=4)
sub_head = make_style('SubHead', fontSize=11, textColor=TEAL,
fontName='Helvetica-Bold', leading=14, spaceAfter=3)
body_text = make_style('BodyText2', fontSize=9.5, textColor=DARK_GREY,
fontName='Helvetica', leading=13, spaceAfter=3)
bullet_style = make_style('Bullet2', fontSize=9.5, textColor=DARK_GREY,
fontName='Helvetica', leading=13, leftIndent=14,
bulletIndent=4, spaceAfter=2)
alert_style = make_style('Alert', fontSize=9.5, textColor=RED_ALERT,
fontName='Helvetica-Bold', leading=13,
leftIndent=10, spaceAfter=2)
tip_style = make_style('Tip', fontSize=9.5, textColor=GREEN_OK,
fontName='Helvetica-Bold', leading=13,
leftIndent=10, spaceAfter=2)
table_hdr = make_style('TableHdr', fontSize=9, textColor=WHITE,
fontName='Helvetica-Bold', alignment=TA_CENTER)
table_cell = make_style('TableCell', fontSize=8.5, textColor=DARK_GREY,
fontName='Helvetica', leading=12)
footer_style = make_style('Footer', fontSize=8, textColor=HexColor('#7F8C8D'),
alignment=TA_CENTER)
PAGE_W, PAGE_H = A4
# ── Helper builders ──────────────────────────────────────────────
def hline(color=TEAL, thickness=1):
return HRFlowable(width='100%', thickness=thickness, color=color, spaceAfter=6, spaceBefore=4)
def chapter_banner(title, subtitle='', color=NAVY):
data = [[Paragraph(title, chapter_title)],
[Paragraph(subtitle, make_style('CSubtitle', fontSize=10, textColor=HexColor('#BDC3C7'),
fontName='Helvetica'))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), color),
('ROUNDEDCORNERS', [6]),
('TOPPADDING', (0,0), (-1,-1), 12),
('BOTTOMPADDING', (0,0), (-1,-1), 12),
('LEFTPADDING', (0,0), (-1,-1), 16),
]))
return t
def info_table(headers, rows, col_widths=None, header_color=NAVY):
if col_widths is None:
n = len(headers)
col_widths = [17*cm/n]*n
header_row = [Paragraph(h, table_hdr) for h in headers]
table_data = [header_row]
for row in rows:
table_data.append([Paragraph(str(c), table_cell) for c in row])
t = Table(table_data, colWidths=col_widths)
ts = TableStyle([
('BACKGROUND', (0,0), (-1,0), header_color),
('ROWBACKGROUNDS',(0,1), (-1,-1), [WHITE, GREY_BG]),
('GRID', (0,0), (-1,-1), 0.4, HexColor('#BDC3C7')),
('VALIGN', (0,0), (-1,-1), 'TOP'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('RIGHTPADDING', (0,0), (-1,-1), 6),
('ROUNDEDCORNERS',[4]),
])
t.setStyle(ts)
return t
def alert_box(text, bg=LIGHT_RED, border=RED_ALERT, label='RED FLAG'):
data = [[Paragraph(f'<b>{label}:</b> {text}',
make_style('AlertBox', fontSize=9, textColor=RED_ALERT,
fontName='Helvetica-Bold', leading=12))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0),(-1,-1), bg),
('LEFTBORDERPADDING', (0,0), (-1,-1), 4),
('BOX', (0,0),(-1,-1), 1.5, border),
('TOPPADDING', (0,0),(-1,-1), 7),
('BOTTOMPADDING', (0,0),(-1,-1), 7),
('LEFTPADDING', (0,0),(-1,-1), 10),
('ROUNDEDCORNERS',[4]),
]))
return t
def tip_box(text, bg=LIGHT_TEAL, border=TEAL, label='AMC TIP'):
data = [[Paragraph(f'<b>{label}:</b> {text}',
make_style('TipBox', fontSize=9, textColor=TEAL,
fontName='Helvetica-Bold', leading=12))]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0),(-1,-1), bg),
('BOX', (0,0),(-1,-1), 1.5, border),
('TOPPADDING', (0,0),(-1,-1), 7),
('BOTTOMPADDING', (0,0),(-1,-1), 7),
('LEFTPADDING', (0,0),(-1,-1), 10),
('ROUNDEDCORNERS',[4]),
]))
return t
def bullet(text):
return Paragraph(f'• {text}', bullet_style)
def sp(n=6):
return Spacer(1, n)
# ── Page header/footer ───────────────────────────────────────────
def on_page(canvas, doc):
canvas.saveState()
# Header bar
canvas.setFillColor(NAVY)
canvas.rect(0, PAGE_H-1.2*cm, PAGE_W, 1.2*cm, fill=1, stroke=0)
canvas.setFillColor(WHITE)
canvas.setFont('Helvetica-Bold', 9)
canvas.drawString(1.5*cm, PAGE_H-0.8*cm, 'AMC MCQ Quick Reference Guide')
canvas.setFont('Helvetica', 9)
canvas.drawRightString(PAGE_W-1.5*cm, PAGE_H-0.8*cm, f'Page {doc.page}')
# Footer
canvas.setFillColor(HexColor('#7F8C8D'))
canvas.setFont('Helvetica', 7.5)
canvas.drawCentredString(PAGE_W/2, 0.7*cm,
'For AMC MCQ Exam Preparation | Based on Australian Clinical Guidelines | Updated 2025-26')
canvas.restoreState()
# ── Document setup ───────────────────────────────────────────────
OUTPUT = '/home/daytona/workspace/amc-guidelines/AMC_Guidelines_Quick_Reference.pdf'
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
topMargin=1.8*cm, bottomMargin=1.5*cm,
leftMargin=1.8*cm, rightMargin=1.8*cm,
title='AMC MCQ Quick Reference Guide',
author='Orris Medical AI',
)
story = []
# ════════════════════════════════════════════════════════════════
# COVER PAGE
# ════════════════════════════════════════════════════════════════
cover_bg = Table([['']], colWidths=[17*cm], rowHeights=[24*cm])
cover_bg.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),NAVY)]))
story.append(cover_bg)
# Overlay content on cover via nested table
cover_content = [
[Paragraph('AMC MCQ', make_style('CT1', fontSize=48, textColor=GOLD,
fontName='Helvetica-Bold', alignment=TA_CENTER))],
[Paragraph('Quick Reference Guide', make_style('CT2', fontSize=26, textColor=WHITE,
fontName='Helvetica-Bold', alignment=TA_CENTER))],
[Spacer(1, 0.5*cm)],
[Paragraph('Australian Medical Council', make_style('CT3', fontSize=14, textColor=HexColor('#BDC3C7'),
fontName='Helvetica', alignment=TA_CENTER))],
[Paragraph('All Clinical Disciplines | Exam-Ready Format', make_style('CT4', fontSize=11,
textColor=GOLD, fontName='Helvetica-Bold', alignment=TA_CENTER))],
[Spacer(1, 1*cm)],
[Table([[
Paragraph('150 MCQs', make_style('stat', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER)),
Paragraph('3.5 Hours', make_style('stat', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER)),
Paragraph('Pass: 250/500', make_style('stat', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER)),
Paragraph('6 Specialties', make_style('stat', fontSize=11, textColor=WHITE, fontName='Helvetica-Bold', alignment=TA_CENTER)),
]], colWidths=[4.25*cm]*4,
style=TableStyle([
('BACKGROUND',(0,0),(-1,-1),TEAL),
('BOX',(0,0),(-1,-1),1,WHITE),
('LINEAFTER',(0,0),(2,0),0.5,WHITE),
('TOPPADDING',(0,0),(-1,-1),8),
('BOTTOMPADDING',(0,0),(-1,-1),8),
('ROUNDEDCORNERS',[6]),
]))],
[Spacer(1, 1*cm)],
[Paragraph('Medicine 30% | Surgery 20% | Paediatrics 12.5%',
make_style('dist', fontSize=9, textColor=HexColor('#BDC3C7'),
fontName='Helvetica', alignment=TA_CENTER))],
[Paragraph('O&G 12.5% | Mental Health 12.5% | Population Health 12.5%',
make_style('dist2', fontSize=9, textColor=HexColor('#BDC3C7'),
fontName='Helvetica', alignment=TA_CENTER))],
]
# Replace cover_bg with a proper positioned cover
story = [] # reset
cover_tbl = Table(cover_content, colWidths=[17*cm])
cover_tbl.setStyle(TableStyle([
('BACKGROUND', (0,0),(-1,-1), NAVY),
('TOPPADDING', (0,0),(-1,-1), 8),
('BOTTOMPADDING',(0,0),(-1,-1), 8),
('LEFTPADDING',(0,0),(-1,-1), 10),
('RIGHTPADDING',(0,0),(-1,-1), 10),
('ALIGN',(0,0),(-1,-1),'CENTER'),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
]))
story.append(cover_tbl)
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# TABLE OF CONTENTS (simple)
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Table of Contents', 'AMC MCQ All Disciplines', TEAL))
story.append(sp(12))
toc_items = [
('1', 'INTERNAL MEDICINE', 'Cardiology, Endocrinology, Respiratory, Gastroenterology, Neurology, Renal, Haematology, Rheumatology', '4'),
('2', 'SURGERY', 'General Surgery, Orthopaedics, Urology, Vascular, Neurosurgery', '9'),
('3', 'PAEDIATRICS', 'Neonatal, GI Disorders, Respiratory, Growth & Development, Immunisation', '13'),
('4', 'OBSTETRICS & GYNAECOLOGY', 'Antenatal Care, Labour, Postpartum, Gynaecology, Contraception', '17'),
('5', 'MENTAL HEALTH & PSYCHIATRY', 'Mood Disorders, Psychosis, Anxiety, Substance Abuse, Child Psych', '21'),
('6', 'POPULATION HEALTH & EMERGENCY', 'Screening, Ethics, Emergency Algorithms, Public Health, Indigenous Health', '25'),
]
for num, title, subtitle, page in toc_items:
row_data = [[
Paragraph(f'<b>{num}</b>', make_style('tocnum', fontSize=14, textColor=NAVY,
fontName='Helvetica-Bold', alignment=TA_CENTER)),
Paragraph(f'<b>{title}</b><br/><font size="8" color="#5D6D7E">{subtitle}</font>',
make_style('toctitle', fontSize=11, textColor=DARK_GREY, fontName='Helvetica-Bold')),
Paragraph(f'<b>p.{page}</b>', make_style('tocpg', fontSize=11, textColor=TEAL,
fontName='Helvetica-Bold', alignment=TA_CENTER)),
]]
t = Table(row_data, colWidths=[1.5*cm, 13.5*cm, 2*cm])
t.setStyle(TableStyle([
('BACKGROUND',(0,0),(-1,-1), LIGHT_BLUE),
('BOX',(0,0),(-1,-1),0.5,HexColor('#AED6F1')),
('LEFTPADDING',(0,0),(-1,-1),8),
('RIGHTPADDING',(0,0),(-1,-1),8),
('TOPPADDING',(0,0),(-1,-1),8),
('BOTTOMPADDING',(0,0),(-1,-1),8),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
('ROUNDEDCORNERS',[4]),
]))
story.append(t)
story.append(sp(5))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 1: INTERNAL MEDICINE
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 1: Internal Medicine',
'Medicine constitutes 30% of the AMC MCQ blueprint', NAVY))
story.append(sp(10))
# ── Cardiology ──────────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('CARDIOLOGY', section_head),
hline(),
]))
story.append(Paragraph('Acute Coronary Syndrome (ACS)', sub_head))
story.append(info_table(
['Feature', 'STEMI', 'NSTEMI / UA'],
[
['ECG', 'ST elevation, new LBBB', 'ST depression, T-wave inversion or normal'],
['Troponin', 'Elevated', 'Elevated (NSTEMI) / Normal (UA)'],
['Immediate Rx', 'Primary PCI within 90 min', 'Anticoagulation + risk stratification'],
['Antiplatelet', 'Aspirin 300mg + P2Y12 inhibitor', 'Same'],
['Key drug', 'Morphine, O2, Nitrates, Aspirin (MONA)', 'MONA + heparin'],
],
col_widths=[4*cm, 6.5*cm, 6.5*cm]
))
story.append(sp(4))
story.append(tip_box('AMC often tests: Do NOT give nitrates if systolic BP <90 mmHg or right ventricular infarct (inferior STEMI). Avoid in phosphodiesterase inhibitor users.'))
story.append(sp(6))
story.append(Paragraph('Heart Failure', sub_head))
story.append(info_table(
['Type', 'EF', 'Key Features', 'Treatment'],
[
['HFrEF', '<40%', 'Dilated, systolic dysfunction', 'ACEi/ARB + Beta-blocker + MRA + SGLT2i'],
['HFpEF', '>50%', 'Preserved systolic, diastolic dysfunction', 'Diuretics, control comorbidities, SGLT2i'],
['Acute HF', 'Either', 'Pulmonary oedema, orthopnoea', 'O2, IV furosemide, GTN infusion, sit upright'],
],
col_widths=[2.5*cm, 2*cm, 6*cm, 6.5*cm]
))
story.append(sp(4))
story.append(alert_box('Bilateral crackles + S3 gallop + raised JVP + pitting oedema = cardiac failure. Order CXR, BNP, echo.'))
story.append(sp(6))
story.append(Paragraph('Atrial Fibrillation (AF)', sub_head))
story.append(info_table(
['Scenario', 'Management'],
[
['Haemodynamically unstable AF', 'Immediate DC cardioversion'],
['AF <48 hours, stable', 'Rate OR rhythm control; anticoagulate if CHADS2-VASc ≥1 (♂) / ≥2 (♀)'],
['AF >48 hours or unknown duration', 'Rate control + anticoagulate ≥3 weeks before cardioversion; TOE-guided if urgent'],
['Rate control drugs', 'Beta-blockers (first line), diltiazem, digoxin (if HF)'],
['Anticoagulation', 'DOAC (rivaroxaban, apixaban) preferred over warfarin in non-valvular AF'],
],
col_widths=[5.5*cm, 11.5*cm]
))
story.append(sp(8))
# ── Endocrinology ───────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('ENDOCRINOLOGY', section_head),
hline(),
]))
story.append(Paragraph('Diabetes Mellitus', sub_head))
story.append(info_table(
['Parameter', 'Normal', 'Pre-diabetes', 'Diabetes'],
[
['Fasting glucose', '<5.6 mmol/L', '5.6-6.9 mmol/L', '≥7.0 mmol/L'],
['2hr OGTT', '<7.8 mmol/L', '7.8-11.0 mmol/L', '≥11.1 mmol/L'],
['HbA1c', '<5.7%', '5.7-6.4%', '≥6.5%'],
['Random glucose', '-', '-', '≥11.1 + symptoms'],
],
col_widths=[4.5*cm, 3.5*cm, 4*cm, 5*cm]
))
story.append(sp(5))
story.append(info_table(
['Type', 'First-Line Rx', 'Key Drug Notes'],
[
['T2DM', 'Metformin (unless GFR <30)', 'Add SGLT2i if CVD/HF; GLP1-RA if obesity; insulin if HbA1c uncontrolled'],
['T1DM', 'Insulin (basal-bolus)', 'CSII (pump) for selected patients; check for coeliac, thyroid disease'],
['DKA', 'IV fluids + insulin infusion + K+ replacement', 'K+ must be ≥3.5 before starting insulin; switch to SC when eating'],
['HHS', 'Slow IV fluid replacement, heparin prophylaxis', 'Avoid rapid correction; BG target 10-15 mmol/L initially'],
],
col_widths=[2.5*cm, 6*cm, 8.5*cm]
))
story.append(sp(4))
story.append(tip_box('Antenatal OGTT at 24-28 weeks is Australian guideline standard. GDM target: fasting <5.0, 2hr <6.7 mmol/L. First-line is diet; metformin/insulin if not controlled.'))
story.append(sp(6))
story.append(Paragraph('Thyroid Disorders', sub_head))
story.append(info_table(
['Disorder', 'TSH', 'T4/T3', 'Symptoms', 'Treatment'],
[
['Hypothyroidism', 'High', 'Low', 'Fatigue, weight gain, cold intolerance, constipation, bradycardia', 'Levothyroxine (thyroxine)'],
['Hyperthyroidism (Graves)', 'Low', 'High', 'Weight loss, heat intolerance, tremor, tachycardia, exophthalmos', 'Carbimazole/PTU; beta-blocker for symptoms; radioiodine/surgery'],
['Thyroid storm', 'Very low', 'Very high', 'Fever, AF, altered consciousness, severe tachycardia', 'ICU; PTU, iodine (Lugol\'s), hydrocortisone, propranolol'],
['Subclinical hypothyroid', 'High', 'Normal', 'Minimal or none', 'Treat if TSH >10, symptomatic, or pregnant'],
],
col_widths=[3*cm, 1.5*cm, 1.5*cm, 6*cm, 5*cm]
))
story.append(sp(8))
# ── Respiratory ─────────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('RESPIRATORY', section_head),
hline(),
]))
story.append(info_table(
['Condition', 'Key Presentation', 'Investigation', 'Management'],
[
['Asthma', 'Wheeze, SOB, chest tightness; reversible airflow obstruction', 'Spirometry: FEV1/FVC <0.7, reversible with bronchodilator', 'SABA PRN; add ICS; LABA + ICS; biologics for severe. Avoid NSAIDs/aspirin if sensitive.'],
['COPD', 'Smoker, chronic productive cough, progressive dyspnoea; FEV1/FVC <0.7 post-BD NOT reversible', 'Spirometry (post-bronchodilator), CXR, ABG', 'SABA + SAMA; LABA+LAMA; add ICS if frequent exacerbations; pulm rehab; O2 if pO2 <55 mmHg'],
['Pneumonia (CAP)', 'Fever, productive cough, consolidation on CXR', 'CXR, sputum, FBC, CRP; CURB-65 score', 'CURB-65 0-1: oral amoxicillin; ≥2: admit; ≥3: IV amox-clav + azithromycin'],
['PE', 'Pleuritic chest pain, SOB, tachycardia, DVT risk', 'D-dimer (if low probability), CTPA', 'Anticoagulate: DOAC (rivaroxaban) first line; thrombolyse if massive PE with haemodynamic compromise'],
['Pneumothorax (tension)', 'Tracheal deviation, absent breath sounds, hypotension', 'Clinical diagnosis - do NOT wait for CXR', 'Immediate needle decompression (2nd ICS MCL), then chest drain'],
],
col_widths=[2.8*cm, 4.2*cm, 4*cm, 6*cm]
))
story.append(sp(4))
story.append(alert_box('Asthma prevalence is 11% in Australia - high-yield for AMC. Know the stepwise management and criteria for hospital admission (PEFR <50%, SpO2 <92%, inability to speak in sentences).'))
story.append(sp(8))
# ── Gastroenterology ────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('GASTROENTEROLOGY', section_head),
hline(),
]))
story.append(info_table(
['Condition', 'Key Features', 'Investigation', 'Treatment'],
[
['GORD', 'Heartburn, regurgitation, worse lying flat', 'Clinical; endoscopy if alarm features', 'PPI first line; lifestyle modification; surgery (fundoplication) for refractory'],
['Peptic Ulcer Disease', 'Epigastric pain; DU relieved by food; GU worse with food', 'Gastroscopy; H. pylori testing (UBT, faecal antigen)', 'PPI + triple therapy (amoxicillin + clarithromycin + PPI) for H. pylori'],
['IBD - Crohn\'s', 'Skip lesions, transmural, any GI; perianal disease', 'Colonoscopy + biopsy; CRP, FBC', 'Steroids (acute); azathioprine, biologics (infliximab) for maintenance'],
['IBD - Ulcerative Colitis', 'Continuous from rectum; blood + mucus PR', 'Colonoscopy; CRP; AXR for toxic megacolon', '5-ASA (mild-mod); steroids (acute flare); colectomy if medical failure'],
['Acute Pancreatitis', 'Epigastric pain radiating to back; N&V; raised lipase/amylase', 'Lipase (preferred), CT abdomen, USS', 'IV fluids, analgesia, NBM; ERCP if gallstone-induced'],
['Colorectal Cancer', 'Change in bowel habit, PR bleeding, weight loss, anaemia', 'Colonoscopy + biopsy; CEA; CT staging', 'Surgical resection; adjuvant chemotherapy if nodal involvement'],
],
col_widths=[3*cm, 4.5*cm, 4*cm, 5.5*cm]
))
story.append(sp(8))
# ── Neurology ───────────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('NEUROLOGY', section_head),
hline(),
]))
story.append(info_table(
['Condition', 'Key Differentiator', 'Investigation', 'Management'],
[
['Ischaemic Stroke', 'Sudden focal deficit; FAST positive; within hours', 'Non-contrast CT head first (exclude bleed); MRI-DWI gold standard', 'tPA within 4.5hr if no contraindications; endovascular thrombectomy within 24hr in selected'],
['TIA', 'Deficit fully resolves <24hr (usually <1hr)', 'MRI brain + vessel imaging; ECG (AF); carotid USS', 'ABCD2 score; dual antiplatelet 21 days then single; urgent specialist review'],
['Haemorrhagic stroke', 'Sudden severe headache (SAH) or focal deficit; blood on CT', 'Non-contrast CT; LP if CT negative for SAH (xanthochromia)', 'Reverse anticoagulation; BP control; neurosurgical consult; nimodipine for SAH'],
['Meningitis', 'Fever + headache + neck stiffness + photophobia; Kernig/Brudzinski', 'LP (after CT to exclude raised ICP); blood cultures', 'Dexamethasone + ceftriaxone IV immediately; do NOT delay for CT if no focal signs'],
['Epilepsy (status)', 'Seizure >5 min or repeated without recovery', 'EEG; glucose; electrolytes; toxicology', '1st: IV/IM lorazepam/diazepam; 2nd: IV levetiracetam/phenytoin; 3rd: general anaesthesia'],
['Parkinson\'s Disease', 'TRAP: Tremor (rest), Rigidity, Akinesia, Postural instability', 'Clinical diagnosis; DaT scan if uncertain', 'Levodopa (most effective); dopamine agonists; MAO-B inhibitors'],
],
col_widths=[3*cm, 4.5*cm, 4*cm, 5.5*cm]
))
story.append(sp(4))
story.append(tip_box('Cardioembolic stroke is most commonly from AF. AMC will test: start anticoagulation for AF stroke, timing 2-14 days depending on infarct size.'))
story.append(sp(6))
# ── Renal ───────────────────────────────────────────────────────
story.append(KeepTogether([
Paragraph('RENAL / NEPHROLOGY', section_head),
hline(),
]))
story.append(info_table(
['Condition', 'Na', 'Urine Na', 'Urine Osm', 'Treatment'],
[
['Pre-renal AKI', 'Normal/high', '<20 mmol/L', '>500 mOsm/kg', 'IV fluid resuscitation'],
['Intrinsic renal AKI', 'Normal', '>40 mmol/L', '<350 mOsm/kg', 'Stop nephrotoxins; treat cause (e.g. steroids for GN)'],
['Post-renal AKI', 'Normal', '>40 mmol/L', 'Variable', 'Relieve obstruction (catheter, nephrostomy)'],
['CKD Stage 3-5', 'Normal to low', 'Variable', 'Variable', 'ACEi/ARB; BP control <130/80; SGLT2i; low-protein diet; dialysis if stage 5'],
['Hyperkalaemia >6.5', 'Variable', '-', '-', 'ECG changes: calcium gluconate IV → salbutamol/insulin-dextrose → resonium/dialysis'],
],
col_widths=[3.5*cm, 1.5*cm, 2*cm, 2*cm, 8*cm]
))
story.append(sp(8))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 2: SURGERY
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 2: Surgery',
'Surgery constitutes 20% of the AMC MCQ blueprint', TEAL))
story.append(sp(10))
story.append(Paragraph('ACUTE ABDOMEN', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Classic Features', 'Investigation', 'Management'],
[
['Appendicitis', 'Periumbilical pain migrating to RIF; Rovsing, McBurney, Psoas signs; fever, raised WCC', 'CT abdomen (gold standard); USS (paeds/pregnancy); Alvarado score', 'Appendicectomy (laparoscopic); IV ceftriaxone + metronidazole'],
['Cholecystitis', 'RUQ pain after fatty meal; Murphy\'s sign; fever; raised WCC', 'USS (gallstones, thick GB wall); LFTs; ALP', 'IV fluids, antibiotics; laparoscopic cholecystectomy (early preferred)'],
['Bowel Obstruction (SBO)', 'Colicky pain, distension, vomiting, obstipation; ladder pattern on AXR', 'AXR (dilated loops >3cm, air-fluid levels); CT abdomen', 'NBM, NGT, IV fluids; surgery if no resolution in 48hr or strangulation signs'],
['Perforated Peptic Ulcer', 'Sudden severe epigastric pain; peritonism; free air under diaphragm', 'Erect CXR (free air); CT if uncertain', 'Resuscitate; IV antibiotics; emergency laparotomy or laparoscopic repair'],
['Mesenteric Ischaemia', 'Severe pain out of proportion to exam; AF or atherosclerosis history', 'CT angiography; raised lactate', 'Emergency surgery; embolectomy or bowel resection; anticoagulation'],
['Acute Pancreatitis', 'Epigastric pain to back, N+V, raised lipase; gallstones or alcohol', 'Lipase, LFTs, USS; CT (Balthazar) for severity', 'IV fluids (aggressive), analgesia, NBM; ERCP if CBD stone; HDU/ICU if severe'],
],
col_widths=[3*cm, 5*cm, 3.5*cm, 5.5*cm]
))
story.append(sp(6))
story.append(Paragraph('HERNIA', section_head))
story.append(hline())
story.append(info_table(
['Type', 'Location', 'Key Feature', 'Management'],
[
['Inguinal (indirect)', 'Lateral to inf. epigastric, through deep ring, into scrotum', 'Most common; young males; controlled by deep ring pressure', 'Laparoscopic or open repair (Lichtenstein)'],
['Inguinal (direct)', 'Medial to inf. epigastric, through Hesselbach triangle', 'Older males; weakness of posterior wall', 'Mesh repair'],
['Femoral', 'Below inguinal ligament, medial to femoral vein', 'More common in females; HIGH risk of strangulation', 'Urgent surgical repair'],
['Incisional', 'Through prior surgical scar', 'Obesity, infection risk factors', 'Mesh repair; optimise weight first'],
['Strangulated hernia', 'Any type, non-reducible + ischaemia signs', 'Pain, tenderness, peritonism, bowel obstruction', 'Emergency surgery'],
],
col_widths=[3.5*cm, 4.5*cm, 4.5*cm, 4.5*cm]
))
story.append(sp(6))
story.append(Paragraph('ORTHOPAEDICS', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Mechanism/Age', 'Diagnosis', 'Management'],
[
['NOF Fracture', 'Elderly female, osteoporosis, fall on hip; shortened/externally rotated leg', 'X-ray hip; MRI if X-ray negative', 'Total hip replacement (displaced); dynamic hip screw (undisplaced/subcapital)'],
['Colles Fracture', 'Elderly, FOOSH; dorsal angulation (dinner fork deformity)', 'X-ray wrist', 'Cast if undisplaced; ORIF if displaced/unstable'],
['Compartment Syndrome', 'Post-fracture, cast; pain on passive stretch; pulseless, paraesthesia, paralysis', 'Clinical - do NOT wait for imaging', 'Emergency fasciotomy - the 6 Ps: Pain, Pallor, Paraesthesia, Paralysis, Pulselessness, Perishingly cold'],
['Septic Arthritis', 'Hot, swollen joint; fever; child or immunocompromised', 'Joint aspiration (WCC >50,000); blood cultures', 'IV antibiotics + urgent surgical washout (emergency)'],
],
col_widths=[3*cm, 4.5*cm, 3.5*cm, 6*cm]
))
story.append(sp(4))
story.append(alert_box('Compartment syndrome: 6 Ps. Do NOT delay fasciotomy waiting for pulses to disappear. Paraesthesia is the earliest symptom. Remove all casts immediately.'))
story.append(sp(6))
story.append(Paragraph('UROLOGY', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Key Feature', 'Investigation', 'Management'],
[
['Testicular Torsion', 'Sudden scrotal pain; high-riding testis; absent cremasteric reflex; teenager', 'Clinical! Doppler USS (but do NOT delay surgery for it)', 'Emergency surgical exploration within 6 hours - manual detorsion while waiting'],
['Renal Colic', 'Loin to groin pain; haematuria; writhing in pain', 'CT KUB (non-contrast); urine dipstick', 'Analgesia (NSAIDs first line); alpha-blocker for stones <10mm; urological referral if >10mm'],
['BPH', 'Elderly male; hesitancy, poor flow, nocturia, incomplete emptying', 'PSA, USS, flow studies', 'Alpha-blockers (tamsulosin); 5-alpha reductase inhibitors; TURP if medical failure'],
['Bladder Cancer', 'Painless haematuria; smoker/aniline dye exposure', 'Cystoscopy + biopsy; CT urogram', 'TURBT for superficial; radical cystectomy for muscle-invasive; intravesical BCG for high-risk'],
],
col_widths=[3*cm, 4.5*cm, 3.5*cm, 6*cm]
))
story.append(sp(4))
story.append(alert_box('Testicular torsion is a surgical emergency. Salvage rate is >90% within 6 hours, drops to <10% after 24 hours. Any acute scrotal pain in a young male = torsion until proven otherwise.'))
story.append(sp(8))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 3: PAEDIATRICS
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 3: Paediatrics',
'Paediatrics = 12.5% of blueprint | Focus: neonatal, GI, respiratory, development, immunisation', GOLD))
story.append(sp(10))
story.append(Paragraph('NEONATAL EMERGENCIES', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Key Feature', 'Investigation', 'Management'],
[
['Pyloric Stenosis', '4-week-old; forceful PROJECTILE non-bilious vomiting post-feed; hungry after; "olive" mass', 'Ultrasound (pyloric muscle >4mm, length >19mm); hypochloraemic hypokalaemic metabolic alkalosis', 'Correct electrolytes FIRST; then Ramstedt pyloromyotomy'],
['Malrotation + Volvulus', 'Neonate; BILIOUS (green) vomiting = SURGICAL EMERGENCY', 'UGI series: duodenojejunal junction not in left upper quadrant; "corkscrew" sign', 'Emergency Ladd\'s procedure; every minute counts'],
['Hirschsprung Disease', 'Failure to pass meconium in 48hr; abdominal distension; "squirt sign" on rectal exam', 'Barium enema (transition zone); confirmed by RECTAL BIOPSY', 'Surgical resection of aganglionic segment'],
['Necrotising Enterocolitis', 'Premature neonate; abdominal distension; bloody stools; pneumatosis intestinalis on AXR', 'AXR (bowel wall gas = pathognomonic); blood cultures', 'NBM, NGT, IV antibiotics (gentamicin + metronidazole + ampicillin); surgery if perforation'],
['Oesophageal Atresia', 'Neonate with excessive secretions; fails to tolerate feeds; CXR shows coiled NGT in oesophagus', 'CXR with NGT; check for VACTERL associations', 'Surgical repair; suction of secretions; O2 as needed'],
],
col_widths=[3*cm, 4.5*cm, 4.5*cm, 5*cm]
))
story.append(sp(6))
story.append(Paragraph('PAEDIATRIC GI VOMITING - QUICK REFERENCE (RCH Guidelines)', section_head))
story.append(hline())
story.append(info_table(
['Vomiting Type', 'Suspect', 'Age', 'Key Management'],
[
['Projectile, non-bilious, post-feed', 'Pyloric Stenosis', '2-8 weeks', 'USS → correct electrolytes → pyloromyotomy'],
['Bilious (dark green)', 'GIT obstruction / Volvulus', 'Any age', 'SURGICAL EMERGENCY - urgent imaging + surgery'],
['With diarrhoea + fever', 'Gastroenteritis', 'Any age', 'ORT; Ondansetron if needed; assess dehydration'],
['Colicky pain + currant jelly stool', 'Intussusception', '5-12 months', 'USS → air enema reduction; surgery if failed/perforated'],
['No meconium + distension', 'Hirschsprung Disease', 'Newborn', 'Rectal biopsy → surgical resection'],
['From birth, non-projectile, thriving', 'GER / GORD', '0-12 months', 'Reassurance; positioning; thickened feeds; PPI if GORD'],
['Early morning, with headache', 'Raised ICP', 'Any age', 'CT head urgently; neurosurgical review'],
['Cyclic, well between episodes', 'Cyclic Vomiting Syndrome', '5-15 years', 'Ondansetron; prophylaxis with amitriptyline/propranolol'],
],
col_widths=[4*cm, 3.5*cm, 2.5*cm, 7*cm]
))
story.append(sp(4))
story.append(tip_box('RCH Ondansetron dosing for gastroenteritis: 8-15kg = 2mg; 15-30kg = 4mg; >30kg = 8mg. Do NOT use routinely - reserve for significant vomiting with dehydration risk.'))
story.append(sp(6))
story.append(Paragraph('PAEDIATRIC RESPIRATORY', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Age', 'Key Features', 'Management'],
[
['Croup (Laryngotracheobronchitis)', '6 months-3 years', 'Barking cough, inspiratory stridor, seal-like, worse at night; parainfluenza virus', 'Mild: oral dexamethasone 0.15-0.6mg/kg; Moderate-Severe: add nebulised adrenaline; O2 if SpO2 <92%'],
['Bronchiolitis', '<2 years', 'RSV; wheeze + crackles; low-grade fever; tachypnoea; first episode', 'Supportive: O2 to keep SpO2 ≥92%; NG/IV feeds if respiratory distress; NO steroids/bronchodilators'],
['Asthma (Paeds)', '>2 years', 'Wheeze + cough + SOB; reversible; atopy history; positive FHx', 'Mild: salbutamol MDI; Moderate: repeat salbutamol + ipratropium + oral pred; Severe: IV magnesium + ICU'],
['Epiglottitis', '2-7 years', 'Tripod position, drooling, muffled voice, stridor, HIGH fever; Hib', 'DO NOT examine throat! Urgent anaesthesia + ENT; IV ceftriaxone; secure airway first'],
['Pertussis', 'Any (often infants)', 'Paroxysmal cough + inspiratory whoop + post-tussive vomiting + cyanosis', 'Azithromycin; isolate; notify public health; vaccination (DTPa schedule)'],
],
col_widths=[3.5*cm, 2.5*cm, 5*cm, 6*cm]
))
story.append(sp(4))
story.append(alert_box('Epiglottitis: Do NOT attempt to examine the throat or lay the child down. Secure airway in theatre with ENT+anaesthesia present. Thumb sign on lateral neck X-ray.'))
story.append(sp(6))
story.append(Paragraph('AUSTRALIAN IMMUNISATION SCHEDULE (AMC High-Yield)', section_head))
story.append(hline())
story.append(info_table(
['Age', 'Vaccines Given'],
[
['Birth', 'Hepatitis B (hepB)'],
['6 weeks', 'DTPa-IPV-HepB-Hib (Infanrix-hexa), Rotavirus (oral), Pneumococcal 13v (PCV13), Meningococcal B'],
['4 months', 'DTPa-IPV-HepB-Hib, Rotavirus (oral), PCV13, Meningococcal B'],
['6 months', 'DTPa-IPV-HepB-Hib, Rotavirus (oral if 3-dose), PCV13, Influenza (annual from 6mo)'],
['12 months', 'MMR (measles-mumps-rubella), Pneumococcal 23v, Meningococcal ACWY, Hib booster'],
['18 months', 'MMR + Varicella (MMRV), DTPa booster, Hib'],
['4 years', 'DTPa-IPV (Infanrix-IPV), MMR (or MMRV)'],
['Year 7', 'HPV (2 doses, 6-12 months apart), dTpa (adolescent booster), Meningococcal ACWY booster'],
],
col_widths=[2.5*cm, 14.5*cm]
))
story.append(sp(4))
story.append(tip_box('Key AMC immunisation facts: 12 months = MenACWY + PCV23; 18 months = MMRV + DTPa. HPV given in Year 7. Influenza vaccine is annual from 6 months. Catch-up schedules exist for late presentations.'))
story.append(sp(8))
story.append(Paragraph('CHILD DEVELOPMENT MILESTONES', section_head))
story.append(hline())
story.append(info_table(
['Age', 'Gross Motor', 'Fine Motor', 'Language', 'Social'],
[
['2 months', 'Head control briefly', 'Follows to midline', 'Coos, social smile', 'Recognises faces'],
['4 months', 'Head steady, pushes on arms', 'Reaches for objects', 'Laughs', 'Enjoys interaction'],
['6 months', 'Sits with support', 'Transfers objects', 'Babbles', 'Stranger anxiety emerging'],
['9 months', 'Pulls to stand', 'Pincer grip emerging', 'Mama/dada (non-specific)', 'Waves bye-bye'],
['12 months', 'Stands alone, first steps', 'Neat pincer grip', '1 word with meaning', 'Points, symbolic play'],
['18 months', 'Walks well', 'Tower of 2-3 blocks', '10-20 words', 'Parallel play'],
['2 years', 'Runs, kicks ball', 'Tower of 6 blocks', '50+ words, 2-word phrases', 'Tantrums, parallel play'],
['3 years', 'Climbs stairs alternating', 'Copies circle', '3-word sentences, name', 'Cooperative play'],
['4 years', 'Hops on one foot', 'Copies cross', 'Full sentences, tells stories', 'Imaginative play'],
],
col_widths=[2*cm, 3.5*cm, 3.5*cm, 4*cm, 4*cm]
))
story.append(sp(4))
story.append(alert_box('Developmental RED FLAGS: No social smile by 3 months; no sitting by 9 months; no walking by 18 months; no words by 18 months; loss of previously acquired skills (regression) at ANY age.'))
story.append(sp(8))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 4: OBSTETRICS & GYNAECOLOGY
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 4: Obstetrics & Gynaecology',
'O&G = 12.5% of AMC MCQ blueprint | Key: Australian antenatal guidelines', TEAL))
story.append(sp(10))
story.append(Paragraph('ANTENATAL CARE (Australian Guidelines)', section_head))
story.append(hline())
story.append(info_table(
['Timing', 'Screening / Action'],
[
['First visit (<10 weeks)', 'Blood group + Rh, FBC, rubella immunity, hepatitis B+C, HIV, syphilis, urine MCS, STI screen, booking USS'],
['11-13+6 weeks', 'Combined first trimester screening: PAPP-A + beta-hCG + NT USS (Down syndrome, trisomy 18/13)'],
['18-20 weeks', 'Morphology USS (structural anomalies)'],
['24-28 weeks', 'OGTT (75g, 2hr) for GDM; repeat FBC; anti-D if Rh-ve'],
['28 weeks', 'Anti-D immunoglobulin 625 IU if Rh-ve (if no prior sensitisation)'],
['36 weeks', 'Group B Streptococcus (GBS) swab (vaginal + rectal); discuss birth plan'],
['GBS positive', 'IV penicillin in labour (benzyl penicillin); clindamycin if penicillin allergic'],
],
col_widths=[3.5*cm, 13.5*cm]
))
story.append(sp(4))
story.append(tip_box('GDM diagnosis criteria (IADPSG/WHO): Fasting ≥5.1 mmol/L OR 1hr ≥10.0 OR 2hr ≥8.5 mmol/L. Treatment: dietary first; if not controlled → metformin or insulin.'))
story.append(sp(6))
story.append(Paragraph('HYPERTENSIVE DISORDERS OF PREGNANCY', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Definition', 'Features', 'Management'],
[
['Gestational Hypertension', 'BP ≥140/90 after 20 weeks; NO proteinuria or features', 'Asymptomatic; monitor closely', 'Labetalol or nifedipine; deliver at 37-38 weeks if controlled'],
['Pre-eclampsia', 'BP ≥140/90 after 20 weeks + proteinuria ≥300mg/24hr OR organ damage', 'Headache, visual changes, RUQ pain, oedema, proteinuria', 'Antihypertensives; MgSO4 for seizure prevention; deliver at ≥37 weeks (mild) or urgently if severe'],
['Eclampsia', 'Pre-eclampsia + seizures', 'Tonic-clonic seizure', 'MgSO4 4g IV loading dose; then 1g/hr maintenance; deliver after stabilisation'],
['HELLP Syndrome', 'Haemolysis + Elevated LFTs + Low Platelets', 'RUQ/epigastric pain, N+V, jaundice, bleeding', 'Delivery is definitive; steroids if <34 weeks; platelet transfusion if <20'],
['Chronic Hypertension', 'Pre-existing or BP ≥140/90 before 20 weeks', 'Often asymptomatic', 'Safe drugs in pregnancy: methyldopa, labetalol, nifedipine. AVOID ACEi/ARB.'],
],
col_widths=[3*cm, 4*cm, 4*cm, 6*cm]
))
story.append(sp(4))
story.append(alert_box('MgSO4 toxicity: Loss of patellar reflex (first sign), respiratory arrest (serum Mg >7 mmol/L). Antidote: IV calcium gluconate 1g. Monitor urine output and reflexes.'))
story.append(sp(6))
story.append(Paragraph('LABOUR & DELIVERY', section_head))
story.append(hline())
story.append(info_table(
['Complication', 'Key Feature', 'Management'],
[
['PPH (Primary)', 'Blood loss >500mL vaginal or >1000mL LSCS; within 24hr', '4 Ts: Tone (most common 80%) → Trauma → Tissue → Thrombin. Oxytocin 10u IM + IV oxytocin; bimanual compression; uterotonic escalation; surgical if needed'],
['Shoulder Dystocia', 'Head delivers, turtle sign, shoulders impacted', 'McRoberts + suprapubic pressure (first line); Rubin II / Woods screw; last resort: Zavanelli'],
['Cord Prolapse', 'Umbilical cord before presenting part after membrane rupture', 'Manual elevation of presenting part; urgent LSCS; knee-chest position; O2'],
['Placenta Praevia', 'Painless bright red PV bleeding after 20 weeks; placenta covering os', 'NO digital vaginal exam; USS; elective LSCS if grade 3-4'],
['Placental Abruption', 'Painful dark red bleeding; hard uterus; fetal distress; trauma history', 'Resuscitate; CTG; emergency LSCS if fetal compromise; DIC risk'],
['Uterine Rupture', 'Previous scar; sudden scar pain; fetal bradycardia; presenting part recedes', 'Emergency LSCS + repair or hysterectomy; maternal and fetal emergency'],
],
col_widths=[3.5*cm, 5*cm, 8.5*cm]
))
story.append(sp(6))
story.append(Paragraph('GYNAECOLOGY', section_head))
story.append(hline())
story.append(info_table(
['Condition', 'Key Features', 'Investigation', 'Management'],
[
['Ectopic Pregnancy', 'Amenorrhoea + PV bleeding + lower abdominal pain; positive bHCG; empty uterus on USS', 'Transvaginal USS; serial bHCG', 'Haemodynamically unstable: emergency laparoscopy. Stable + small: methotrexate (if no contraindications)'],
['Ovarian Torsion', 'Sudden severe unilateral pain; nausea; Doppler may show absent flow', 'Pelvic USS + Doppler; laparoscopy', 'Emergency laparoscopic detorsion (preserve ovary if possible)'],
['Endometriosis', 'Dysmenorrhoea, dyspareunia, infertility; cyclical pain', 'Laparoscopy (gold standard); CA-125 elevated', 'Hormonal (OCP, Mirena, GnRH agonists); surgical excision if severe'],
['Cervical Cancer Screening (Australia)', 'Cervical Screening Test (HPV-based)', 'Every 5 years (ages 25-74); HPV test + reflex LBC', 'Colposcopy if HPV 16/18 positive or abnormal LBC'],
['PCOS', 'Oligomenorrhoea, hirsutism, acne, obesity; LH:FSH >2:1; polycystic ovaries', 'USS; LH, FSH, testosterone, SHBG; OGTT (insulin resistance)', 'Weight loss; OCP for cycles/hirsutism; metformin; clomiphene for fertility'],
],
col_widths=[3*cm, 5*cm, 3.5*cm, 5.5*cm]
))
story.append(sp(4))
story.append(tip_box('Australian cervical screening: HPV-based test every 5 years for women aged 25-74. This replaced the 2-yearly Pap smear in 2017. Know this difference - it is a frequent AMC question.'))
story.append(sp(8))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 5: MENTAL HEALTH & PSYCHIATRY
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 5: Mental Health & Psychiatry',
'Psychiatry = 12.5% of blueprint | Focus: first-line drugs, risk assessment, legal frameworks', NAVY))
story.append(sp(10))
story.append(Paragraph('MOOD DISORDERS', section_head))
story.append(hline())
story.append(info_table(
['Disorder', 'Diagnosis', 'First-Line Treatment', 'AMC Key Points'],
[
['Major Depressive Disorder', '≥2 weeks: depressed mood OR anhedonia + ≥5 symptoms total (SIG E CAPS)', 'SSRI (sertraline, escitalopram); CBT for mild-mod; combination for moderate-severe', 'Minimum 6-12 months treatment after remission. Screen for bipolar before prescribing antidepressants.'],
['Bipolar I', 'At least one manic episode (≥7 days: DIGFAST); may have depressive episodes', 'Mood stabiliser: lithium (gold standard) or valproate; antipsychotic for acute mania', 'Lithium monitoring: thyroid, renal function, serum levels. Toxic level >1.5 mmol/L.'],
['Bipolar II', 'At least one hypomanic episode + at least one major depressive episode', 'Lithium or lamotrigine; quetiapine for depression phase', 'AVOID antidepressant monotherapy (can trigger mania)'],
['Persistent Depressive Disorder (Dysthymia)', '≥2 years of depressed mood (not meeting MDD criteria)', 'SSRI + psychotherapy', 'Chronic, lower severity; high comorbidity with anxiety and substance use'],
['Postpartum Depression', 'Within 4 weeks to 12 months post-delivery; affects 10-15%', 'Psychotherapy first line if mild; SSRI if moderate-severe (sertraline is safest in breastfeeding)', 'Distinct from baby blues (<2 weeks, self-limiting). Screen at 6-week check.'],
],
col_widths=[3*cm, 4*cm, 4.5*cm, 5.5*cm]
))
story.append(sp(4))
story.append(tip_box('SIG E CAPS mnemonic for depression: Sleep changes, Interest loss, Guilt/worthlessness, Energy low, Concentration poor, Appetite change, Psychomotor change, Suicidal ideation.'))
story.append(sp(6))
story.append(Paragraph('PSYCHOTIC DISORDERS', section_head))
story.append(hline())
story.append(info_table(
['Disorder', 'Duration', 'Features', 'Treatment'],
[
['Schizophrenia', '≥6 months (≥1 month active)', 'Positive: hallucinations (auditory command), delusions, disorganised speech. Negative: flat affect, alogia, avolition, anhedonia', 'Atypical antipsychotic (risperidone, olanzapine, quetiapine); clozapine for treatment-resistant'],
['Brief Psychotic Disorder', '<1 month', 'Sudden onset psychosis, full recovery', 'Antipsychotic short course; identify precipitant'],
['Schizoaffective', '>1 month', 'Psychosis PLUS prominent mood episodes (concurrent)', 'Mood stabiliser + antipsychotic; lithium or valproate'],
['Delusional Disorder', '>1 month', 'Non-bizarre fixed delusions; otherwise functioning normally', 'Antipsychotic; often poorly compliant'],
],
col_widths=[3.5*cm, 2.5*cm, 6*cm, 5*cm]
))
story.append(sp(4))
story.append(alert_box('Clozapine: requires mandatory weekly FBC for first 18 weeks (agranulocytosis risk). Only indicated in treatment-resistant schizophrenia (failed 2 adequate antipsychotic trials).'))
story.append(sp(6))
story.append(Paragraph('ANXIETY & RELATED DISORDERS', section_head))
story.append(hline())
story.append(info_table(
['Disorder', 'Key Features', 'First-Line Treatment'],
[
['GAD', '≥6 months excessive worry; muscle tension, fatigue, irritability, poor concentration', 'SSRI or SNRI + CBT; buspirone as adjunct'],
['Panic Disorder', 'Recurrent unexpected panic attacks + anticipatory anxiety; agoraphobia possible', 'SSRI + CBT; benzodiazepines short-term only for acute attacks'],
['Social Anxiety Disorder', 'Fear of social situations; blushing, sweating, avoidance', 'SSRI + CBT; beta-blocker for performance anxiety (propranolol)'],
['OCD', 'Obsessions + compulsions, ego-dystonic, time-consuming (>1hr/day)', 'High-dose SSRI (e.g. fluoxetine 60-80mg) + ERP (CBT); clomipramine if resistant'],
['PTSD', 'Trauma + re-experiencing + avoidance + hyperarousal + negative cognitions; >1 month', 'Trauma-focused CBT (first line); SSRI (sertraline, paroxetine); avoid benzodiazepines'],
],
col_widths=[3*cm, 7*cm, 7*cm]
))
story.append(sp(6))
story.append(Paragraph('SUBSTANCE USE DISORDERS', section_head))
story.append(hline())
story.append(info_table(
['Substance', 'Withdrawal Features', 'Management'],
[
['Alcohol', 'Tremor, sweating, tachycardia (6-24hr); seizures (12-48hr); delirium tremens 48-72hr (fever, confusion, autonomic instability)', 'Diazepam or chlordiazepoxide (CIWA protocol); thiamine 100mg TDS or IV Pabrinex BEFORE glucose; seizure prophylaxis'],
['Opioids', 'Yawning, lacrimation, piloerection, diarrhoea, cramps, tachycardia, anxiety (not life-threatening)', 'Opioid replacement: methadone or buprenorphine/naloxone. Overdose: IV/IM naloxone'],
['Benzodiazepines', 'Similar to alcohol; potentially life-threatening; seizures, agitation', 'Long-acting diazepam taper; never abrupt cessation'],
['Amphetamines/stimulants', 'Crash: fatigue, depression, hypersomnia, craving', 'Supportive; no specific pharmacotherapy; CBT'],
['Nicotine', 'Irritability, cravings, weight gain, poor concentration', 'Combination NRT; varenicline (most effective); bupropion'],
],
col_widths=[3*cm, 7*cm, 7*cm]
))
story.append(sp(4))
story.append(alert_box('Wernicke\'s Encephalopathy (alcohol): CLASSIC TRIAD - confusion + ophthalmoplegia + ataxia. Give IV thiamine (Pabrinex) BEFORE any glucose administration. If missed, progresses to Korsakoff psychosis (anterograde amnesia - irreversible).'))
story.append(sp(8))
story.append(PageBreak())
# ════════════════════════════════════════════════════════════════
# CHAPTER 6: POPULATION HEALTH & EMERGENCY MEDICINE
# ════════════════════════════════════════════════════════════════
story.append(chapter_banner('Chapter 6: Population Health & Emergency Medicine',
'Population Health + Emergency = 12.5% of blueprint | Australian-specific guidelines critical', TEAL))
story.append(sp(10))
story.append(Paragraph('POPULATION HEALTH & SCREENING (Australian Guidelines)', section_head))
story.append(hline())
story.append(info_table(
['Screening Program', 'Target Population', 'Frequency / Method', 'Key AMC Points'],
[
['Cervical Screening', 'Women 25-74 years', 'HPV-based Cervical Screening Test every 5 years', 'Replaced 2-yearly Pap smear in 2017. HPV 16/18 = urgent colposcopy.'],
['Bowel Cancer Screening (NBCSP)', 'Ages 45-74 (free kit); priority 50-74', 'Biennial faecal immunochemical test (FIT/iFOBT)', 'Positive FIT → colonoscopy. Australian government funded.'],
['Breast Screening (BreastScreen)', 'Women 40-74 (free 50-74)', 'Biennial mammogram', '2-view mammography; diagnostic mammogram if symptomatic at any age.'],
['Cardiovascular Risk', 'Adults ≥45 years (≥30 if Aboriginal/Torres Strait Islander)', 'Absolute CVD risk calculator (smoking, BP, cholesterol, diabetes, age, sex)', '≥15% 5-year risk = pharmacotherapy threshold. Lifestyle modification for 10-15%.'],
['Diabetes Screening', 'Age ≥40 + risk factors; ≥18 if Aboriginal/Torres Strait Islander', 'Fasting glucose or HbA1c or OGTT every 1-3 years', 'AUSDRISK tool for risk assessment.'],
['Antenatal Screening', 'All pregnant women', '11-13wk combined screening; 18-20wk morphology USS; 24-28wk OGTT', 'OGTT at 24-28 weeks is Australian standard. GBS swab at 36 weeks.'],
],
col_widths=[3.5*cm, 3.5*cm, 4*cm, 6*cm]
))
story.append(sp(6))
story.append(Paragraph('EMERGENCY MEDICINE - HIGH YIELD ALGORITHMS', section_head))
story.append(hline())
story.append(Paragraph('Anaphylaxis (ASCIA Australian Guidelines)', sub_head))
story.append(info_table(
['Step', 'Action'],
[
['1. Call for help', 'Activate emergency response; lie patient flat (or seated if SOB); raise legs unless SOB'],
['2. Adrenaline (FIRST LINE)', 'IM adrenaline 0.01 mg/kg (max 0.5mg) into outer mid-thigh. Adult: 0.5mg (0.5mL of 1:1000)'],
['3. Repeat if needed', 'Repeat adrenaline every 5 minutes if no improvement'],
['4. Call ambulance', '000; observe minimum 4-6 hours post-reaction; 12-24hr if biphasic risk'],
['5. Adjuncts', 'IV fluids for hypotension; salbutamol for bronchospasm; antihistamines and steroids are ADJUNCTS only - NOT first line'],
['6. Discharge', 'EpiPen prescription x2; ASCIA action plan; refer to allergist; MedicAlert bracelet'],
],
col_widths=[3*cm, 14*cm]
))
story.append(sp(4))
story.append(alert_box('Adrenaline is the ONLY first-line treatment for anaphylaxis. Antihistamines and steroids are adjuncts. Pressure immobilisation bandage is for snake/funnel-web spider envenomation - NOT anaphylaxis.'))
story.append(sp(6))
story.append(Paragraph('Advanced Life Support (ALS) - Australian Resuscitation Council', sub_head))
story.append(info_table(
['Component', 'Details'],
[
['Compression rate', '100-120/min; 30:2 ratio until advanced airway placed, then continuous compressions'],
['Compression depth', '≥5cm (adult); 1/3 chest depth (paeds)'],
['Defibrillation', 'Biphasic 200J (360J monophasic); shock every 2 min for shockable rhythms (VF/pVT)'],
['Shockable rhythms', 'VF and pulseless VT → shock + CPR'],
['Non-shockable rhythms', 'Asystole and PEA → CPR; identify reversible causes (4Hs + 4Ts)'],
['Adrenaline', 'Non-shockable: 1mg IV every 3-5 min from cycle 1. Shockable: after 3rd shock, then every 3-5 min'],
['Amiodarone', '300mg IV bolus after 3rd shock (VF/pVT); second dose 150mg after 5th shock'],
['4Hs', 'Hypoxia, Hypovolaemia, Hypo/hyperkalaemia, Hypothermia'],
['4Ts', 'Tension pneumothorax, Tamponade, Toxins, Thrombosis (PE or coronary)'],
],
col_widths=[4*cm, 13*cm]
))
story.append(sp(6))
story.append(Paragraph('SNAKE ENVENOMATION (Australian)', sub_head))
story.append(info_table(
['Action', 'Details'],
[
['First aid', 'Pressure Immobilisation Bandage (PIB) immediately; firm bandage from bite site + limb immobilised; do NOT wash wound'],
['Do NOT', 'Cut, suck, tourniquet, remove bandage until in hospital with antivenom and resuscitation available'],
['Hospital', 'FBC, coag (fibrinogen, D-dimer), renal function, CK; 12hr observation minimum'],
['Antivenom', 'Specific antivenom based on polyvalent snake venom detection kit or clinical syndrome; give IV in ED with adrenaline drawn up'],
['Funnel-web spider', 'PIB; antivenom available - highly effective; atropine for bradycardia'],
],
col_widths=[3.5*cm, 13.5*cm]
))
story.append(sp(6))
story.append(Paragraph('ETHICS, CONSENT & LEGAL FRAMEWORK', section_head))
story.append(hline())
story.append(info_table(
['Topic', 'Key Principles for AMC'],
[
['Informed Consent', 'Patient must have capacity; be given material information; consent voluntarily. Must disclose risks a reasonable patient would want to know (Rogers v Whitaker, Australia).'],
['Capacity Assessment', '4 components: Understand information, Retain it, Weigh it, Communicate decision. Can have capacity for some decisions but not others.'],
['Refusal of Treatment', 'Adult with capacity can refuse ANY treatment, even life-saving. Respect autonomy.'],
['Children & Consent', 'Parental consent for under 16; Gillick competence if child demonstrates sufficient maturity. Emergency: treat in best interests.'],
['Mandatory Reporting', 'Child abuse: mandatory in all Australian states. Notifiable diseases to public health. Impaired drivers: varies by state.'],
['Confidentiality', 'Can be breached to prevent serious harm to identifiable third party (Tarasoff principle); to comply with law; to notify public health authorities.'],
['Advanced Care Directive', 'Legally binding if made when competent; must be followed. Enduring Power of Attorney (medical) for when capacity lost.'],
['Euthanasia/VAD', 'Voluntary Assisted Dying is legal in all Australian states (varies by criteria). Doctor may conscientiously object but must refer.'],
],
col_widths=[4*cm, 13*cm]
))
story.append(sp(6))
story.append(Paragraph('INDIGENOUS HEALTH (AMC - Culturally Safe Practice)', section_head))
story.append(hline())
story.append(info_table(
['Topic', 'Key Points'],
[
['Health disparities', 'Aboriginal and Torres Strait Islander peoples have 5.1 years lower life expectancy. Higher rates of CVD, diabetes, renal disease, mental health, infectious disease.'],
['Screening age differences', 'CVD risk screening from age 30; diabetes screening from age 18; bowel screening supported at younger ages.'],
['Cultural safety', 'Involve Aboriginal Health Workers; use interpreters; understand importance of family and community; avoid assumptions.'],
['Closing the Gap', 'Australian government strategy targeting Indigenous health equity. Includes health checks (MBS item 715 - annual Indigenous health assessment).'],
['MBS Item 715', 'Annual health assessment for Aboriginal and Torres Strait Islander people; includes BP, diabetes, smoking, alcohol, mental health, dental, eyes, ears.'],
['Communication', 'Allow silence; avoid interrupting; use plain language; acknowledge country; involve family in decisions when appropriate.'],
],
col_widths=[4*cm, 13*cm]
))
story.append(sp(6))
# ── Final exam strategy ─────────────────────────────────────────
story.append(PageBreak())
story.append(chapter_banner('AMC MCQ Exam Strategy', 'Maximise your score on exam day', GOLD))
story.append(sp(10))
story.append(info_table(
['Strategy', 'Detail'],
[
['Read the question last', 'Read the stem first, identify the clinical problem, THEN read the question. Prevents anchoring bias.'],
['Identify the "best answer"', 'AMC uses A-type questions: one BEST answer from 5 plausible options. Eliminate obvious wrong answers first.'],
['Australian guidelines priority', 'When in doubt between management options, choose what Australian guidelines (RCH, RANZCOG, Cardiac Society of Australia) recommend.'],
['Common > rare', 'AMC tests prevalence-based thinking. Always consider the most common diagnosis first unless red flag features point away.'],
['Emergency before investigation', 'For unstable patients: ALWAYS stabilise before investigating. Airway > Breathing > Circulation.'],
['Do not change answers', 'First instinct is usually correct unless you have a clear reason to change. Avoid second-guessing without new information.'],
['Timing', '3.5 hours for 150 questions = 84 seconds per question. Aim to finish 10-15 min early for review.'],
['Paediatrics is high-yield', 'Often underprepared by IMGs. Focus on immunisation schedule, developmental milestones, and GI emergencies.'],
['Indigenous health always relevant', 'At least a few questions will involve Aboriginal/Torres Strait Islander patients. Always consider culturally safe and equitable care.'],
],
col_widths=[4.5*cm, 12.5*cm]
))
story.append(sp(8))
story.append(tip_box('TOP 5 AMC HIGHEST-YIELD TOPICS: (1) CVD risk management and ACS, (2) Diabetes and GDM, (3) Paediatric immunisation schedule, (4) Pre-eclampsia and eclampsia management, (5) Mental health first-line medications and risk assessment.', bg=LIGHT_GOLD, border=GOLD, label='FINAL TIP'))
story.append(sp(6))
story.append(hline(NAVY, 2))
story.append(sp(4))
story.append(Paragraph(
'AMC MCQ Quick Reference Guide | Prepared for International Medical Graduates | '
'Based on AMC MCQ Exam Specifications V8 (2025) | RCH, RANZCOG, Cardiac Society, '
'RACGP, and Australian Government Health Guidelines | Last updated July 2026',
make_style('disclaimer', fontSize=8, textColor=HexColor('#7F8C8D'),
alignment=TA_CENTER, fontName='Helvetica')
))
# ── Build ────────────────────────────────────────────────────────
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f'PDF successfully created: {OUTPUT}')
cd /home/daytona/workspace/amc-guidelines && python generate_amc_pdf.py
ls -lh /home/daytona/workspace/amc-guidelines/AMC_Guidelines_Quick_Reference.pdf
AMC Guidelines Quick Reference
PDF Document · PDF
All
When you say 'All' - what do you mean?
Complete amc 1 mcq exam rapid revision each and every topic including guidelines for 200 pages