Best contraceptive for newly married couple
best contraceptive methods newly married couple 2025 guidelines
"contraception" AND "family planning" AND "counseling"
https://pmc.ncbi.nlm.nih.gov/articles/PMC12187473
| Method | Theoretical Effectiveness | Actual (Typical Use) | Reversible? |
|---|---|---|---|
| Copper IUD | 99.4% | 99.8% | Yes |
| Hormonal IUD (progestin) | 99.8% | 99.8% | Yes |
| Implant (Nexplanon) | 99.9% | 99.9% | Yes |
| Depo-Provera (injection) | 99.8% | 94% | Yes (delay) |
| Combined pill / patch / ring | 99.7% | 91% | Yes |
| Progestin-only pill | 99.5% | 91% | Yes |
| Condoms | 98% | 82% | Yes |
| Withdrawal | 96% | 78% | Yes |
| Fertility awareness | 96% | 76% | Yes |
| Factor | Implications |
|---|---|
| Migraines with aura / smoker / hypertension | Avoid estrogen-containing methods; use progestin-only or copper IUD |
| Irregular periods, dysmenorrhea | Hormonal IUD or COCP helps regulate and reduce pain |
| Prefers no hormones | Copper IUD or barrier methods |
| Wants immediate pregnancy option | Avoid Depo-Provera (fertility can take 6-12 months to return) |
| Enzyme-inducing drugs (rifampicin, anticonvulsants) | Copper or hormonal IUD preferred; pills/implant may fail |
| Religious/cultural preference | Fertility awareness methods; natural family planning |
Make a pdf
mkdir -p /tmp/workspace/contraceptive-pdf && ls /tmp/workspace/
~/contraceptive-pdf/generate_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
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/tmp/workspace/contraceptive-pdf/Contraceptive_Guide_Newly_Married_Couple.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Best Contraceptives for a Newly Married Couple",
author="Orris Medical Guide",
subject="Contraception Guide"
)
styles = getSampleStyleSheet()
# Custom styles
TEAL = colors.HexColor("#007B7F")
LIGHT = colors.HexColor("#E8F6F7")
WHITE = colors.white
DARK = colors.HexColor("#1A1A2E")
GRAY = colors.HexColor("#555555")
ACCENT = colors.HexColor("#E74C3C")
title_style = ParagraphStyle(
"TitleStyle", parent=styles["Title"],
fontSize=22, textColor=WHITE,
spaceAfter=4, leading=28, alignment=TA_CENTER
)
subtitle_style = ParagraphStyle(
"SubtitleStyle", parent=styles["Normal"],
fontSize=11, textColor=colors.HexColor("#CCF0F2"),
alignment=TA_CENTER, spaceAfter=2
)
h1_style = ParagraphStyle(
"H1", parent=styles["Heading1"],
fontSize=14, textColor=TEAL,
spaceBefore=14, spaceAfter=4, leading=18,
borderPad=4
)
h2_style = ParagraphStyle(
"H2", parent=styles["Heading2"],
fontSize=11.5, textColor=DARK,
spaceBefore=10, spaceAfter=3, leading=15
)
body_style = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, textColor=DARK,
leading=14, spaceAfter=5, alignment=TA_JUSTIFY
)
bullet_style = ParagraphStyle(
"Bullet", parent=styles["Normal"],
fontSize=9.5, textColor=DARK,
leading=13, spaceAfter=3,
leftIndent=14, bulletIndent=4,
bulletFontName="Helvetica", bulletFontSize=9
)
note_style = ParagraphStyle(
"Note", parent=styles["Normal"],
fontSize=8.5, textColor=GRAY,
leading=12, spaceAfter=4, alignment=TA_CENTER,
fontName="Helvetica-Oblique"
)
footer_style = ParagraphStyle(
"Footer", parent=styles["Normal"],
fontSize=8, textColor=colors.HexColor("#888888"),
alignment=TA_CENTER, leading=10
)
story = []
# ── TITLE BANNER ──────────────────────────────────────────────────────────────
banner_data = [[
Paragraph("Best Contraceptive Methods", title_style),
]]
banner_sub = [[
Paragraph("A Practical Guide for Newly Married Couples", subtitle_style),
]]
banner_source = [[
Paragraph("Based on Harrison's Principles of Internal Medicine 22e (2025) & current clinical evidence", subtitle_style),
]]
banner_table = Table(
[
[Paragraph("Best Contraceptive Methods", title_style)],
[Paragraph("A Practical Guide for Newly Married Couples", subtitle_style)],
[Paragraph("Based on Harrison's Principles of Internal Medicine 22e (2025) & current clinical evidence", subtitle_style)],
],
colWidths=[17*cm]
)
banner_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("ROUNDEDCORNERS", [8]),
("TOPPADDING", (0,0), (-1,0), 18),
("BOTTOMPADDING",(0,-1),(-1,-1), 18),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("ROWBACKGROUNDS",(0,0),(-1,-1),[TEAL]),
]))
story.append(banner_table)
story.append(Spacer(1, 0.5*cm))
# ── INTRODUCTION ──────────────────────────────────────────────────────────────
story.append(Paragraph("Introduction", h1_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=TEAL, spaceAfter=6))
story.append(Paragraph(
"There is no single 'best' contraceptive - the right choice depends on when you plan to have children, "
"your health history, lifestyle, and personal preferences. This guide summarises all major methods, "
"their real-world effectiveness, and practical recommendations for newly married couples.",
body_style
))
# ── EFFECTIVENESS TABLE ────────────────────────────────────────────────────────
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Effectiveness of All Major Methods", h1_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=TEAL, spaceAfter=6))
eff_header = ["Method", "Theoretical\nEffectiveness", "Typical Use\n(Real-World)", "Reversible?"]
eff_data = [
eff_header,
["Copper IUD", "99.4%", "99.8%", "Yes"],
["Hormonal IUD (progestin)", "99.8%", "99.8%", "Yes"],
["Implant (Nexplanon)", "99.9%", "99.9%", "Yes"],
["Depo-Provera (injection)", "99.8%", "94%", "Yes (delay)"],
["Combined Pill / Patch / Ring","99.7%","91%", "Yes"],
["Progestin-only Pill", "99.5%", "91%", "Yes"],
["Condoms (male)", "98%", "82%", "Yes"],
["Diaphragm", "94%", "82%", "Yes"],
["Fertility Awareness", "96%", "76%", "Yes"],
["Withdrawal", "96%", "78%", "Yes"],
["Female Sterilisation", "99.5%", "99.5%", "No"],
["Vasectomy", "99.5%", "99.9%", "No"],
]
cell_style = ParagraphStyle("cell", fontSize=9, leading=12, alignment=TA_CENTER)
cell_left = ParagraphStyle("cellL", fontSize=9, leading=12, alignment=TA_LEFT)
eff_table_data = []
for i, row in enumerate(eff_data):
if i == 0:
eff_table_data.append([
Paragraph(f"<b>{c}</b>", cell_style) for c in row
])
else:
eff_table_data.append([
Paragraph(row[0], cell_left),
Paragraph(row[1], cell_style),
Paragraph(row[2], cell_style),
Paragraph(row[3], cell_style),
])
eff_table = Table(eff_table_data, colWidths=[6.5*cm, 3.5*cm, 3.5*cm, 3.5*cm])
eff_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LINEBELOW", (0,0), (-1,0), 1.5, TEAL),
]))
story.append(eff_table)
story.append(Paragraph(
"Source: Harrison's Principles of Internal Medicine, 22nd Edition (2025), Table 406-3",
note_style
))
# ── CHOOSING BY TIMELINE ──────────────────────────────────────────────────────
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Choosing Based on Your Family Planning Timeline", h1_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=TEAL, spaceAfter=6))
# Section 1
story.append(KeepTogether([
Paragraph("1. Delaying Children for 2+ Years - Long-Acting Reversible Contraceptives (LARCs)", h2_style),
Paragraph(
"LARCs are the gold standard for couples not planning pregnancy soon. They are 'set and forget', "
"have the highest effectiveness, and are fully reversible.",
body_style
),
Paragraph("<bullet>•</bullet> <b>Hormonal IUD (Mirena, Kyleena):</b> Lasts 5-8 years. Significantly reduces menstrual bleeding and cramping. Suitable for women who have not been pregnant. The 52 mg levonorgestrel IUD is effective for up to 8 years (Mirena Extension Trial, 2022).", bullet_style),
Paragraph("<bullet>•</bullet> <b>Copper IUD (non-hormonal):</b> Lasts 10+ years. Best choice for those wanting to avoid all hormones. Also works as emergency contraception if inserted within 5 days of unprotected sex.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Implant (Nexplanon):</b> A matchstick-sized rod inserted under the skin of the upper arm. Lasts 3 years. Highest typical-use effectiveness (~99.9%) of all reversible methods.", bullet_style),
]))
story.append(Spacer(1, 0.2*cm))
# Section 2
story.append(KeepTogether([
Paragraph("2. Planning Children Within 1-2 Years - Short-Acting Methods", h2_style),
Paragraph(
"Short-acting methods are preferable here since fertility returns immediately on stopping.",
body_style
),
Paragraph("<bullet>•</bullet> <b>Combined Oral Contraceptive Pill (COCP):</b> Most widely used worldwide. Regulates cycles, reduces period pain. Fertility returns promptly after stopping. Requires daily intake; typical-use effectiveness is 91%.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Progestin-only Pill ('Mini-pill'):</b> For women where estrogen is contraindicated (migraines with aura, smokers over 35, cardiovascular risk). Must be taken at the same time each day.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Vaginal Ring (NuvaRing/Annovera):</b> Inserted monthly, very convenient. 99.5% with perfect use / 93% with typical use.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Transdermal Patch:</b> Changed weekly. Similar effectiveness to the pill. Good option for those who forget daily tablets.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Condoms:</b> Lower effectiveness alone (82% typical) but the only method that also protects against STIs. Strongly recommended early in marriage until both partners are screened.", bullet_style),
]))
story.append(Spacer(1, 0.2*cm))
# Section 3
story.append(KeepTogether([
Paragraph("3. Family Complete - Permanent Options", h2_style),
Paragraph("<bullet>•</bullet> <b>Vasectomy:</b> Simple outpatient procedure. Failure rate of just 0.1 per 100 women-years. Not immediately effective - use other contraception for 3 months after.", bullet_style),
Paragraph("<bullet>•</bullet> <b>Tubal Ligation:</b> Failure rate of 0.5 per 100 women-years. Can be performed postpartum or as a separate procedure.", bullet_style),
]))
# ── SPECIAL CONSIDERATIONS TABLE ──────────────────────────────────────────────
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("Special Considerations", h1_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=TEAL, spaceAfter=6))
cons_header = ["Condition / Preference", "Recommendation"]
cons_data = [
cons_header,
["Migraines with aura / Smoker >35 / Hypertension", "Avoid estrogen; use progestin-only pill or IUD"],
["Irregular periods / Dysmenorrhoea", "Hormonal IUD or COCP - both help regulate cycles"],
["Prefers no hormones", "Copper IUD or barrier methods"],
["Wants quick return of fertility", "Avoid Depo-Provera (fertility can take 6-12 months to return)"],
["On enzyme-inducing drugs\n(rifampicin, anticonvulsants)", "Copper or hormonal IUD preferred - unaffected by drug interactions"],
["Religious / cultural preference", "Fertility awareness or natural family planning methods"],
["STI risk (new relationship)", "Condoms plus a hormonal method (dual protection)"],
["Breastfeeding (postpartum)", "Progestin-only methods; copper IUD; avoid COCPs in first 6 weeks"],
]
cons_table_data = []
for i, row in enumerate(cons_data):
if i == 0:
cons_table_data.append([Paragraph(f"<b>{c}</b>", cell_style) for c in row])
else:
cons_table_data.append([
Paragraph(row[0], cell_left),
Paragraph(row[1], cell_left),
])
cons_table = Table(cons_table_data, colWidths=[8*cm, 9*cm])
cons_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), TEAL),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, LIGHT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LINEBELOW", (0,0), (-1,0), 1.5, TEAL),
]))
story.append(cons_table)
# ── QUICK RECOMMENDATIONS BOX ─────────────────────────────────────────────────
story.append(Spacer(1, 0.4*cm))
story.append(Paragraph("Summary Recommendations", h1_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=TEAL, spaceAfter=6))
rec_box_data = [
[Paragraph("<b>Scenario</b>", cell_style), Paragraph("<b>First Choice</b>", cell_style)],
["Delay pregnancy 2+ years", "Hormonal IUD or Implant (LARC)"],
["Delay pregnancy 1-2 years", "Combined oral contraceptive pill"],
["No hormones preferred", "Copper IUD"],
["STI protection needed", "Condoms + hormonal method"],
["Family complete", "Vasectomy or tubal ligation"],
]
rec_table_data = []
for i, row in enumerate(rec_box_data):
if i == 0:
rec_table_data.append([Paragraph(f"<b>{c}</b>", cell_style) for c in row])
else:
rec_table_data.append([
Paragraph(row[0], cell_left),
Paragraph(row[1], cell_left),
])
rec_table = Table(rec_table_data, colWidths=[8*cm, 9*cm])
rec_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#2C3E50")),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [colors.HexColor("#FFF9E6"), WHITE]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LINEBELOW", (0,0), (-1,0), 1.5, colors.HexColor("#2C3E50")),
]))
story.append(rec_table)
# ── DISCLAIMER ────────────────────────────────────────────────────────────────
story.append(Spacer(1, 0.5*cm))
disclaimer_box = Table(
[[Paragraph(
"<b>Important:</b> Always consult a gynaecologist or family physician before starting any contraceptive. "
"The WHO Medical Eligibility Criteria for Contraceptive Use provides evidence-based guidance on "
"contraindications and safety for specific medical conditions.",
ParagraphStyle("disc", fontSize=8.5, textColor=colors.HexColor("#7D3C00"),
leading=12, alignment=TA_JUSTIFY)
)]],
colWidths=[17*cm]
)
disclaimer_box.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FEF9E7")),
("LINEABOVE", (0,0), (-1,0), 1.5, colors.HexColor("#F0B429")),
("LINEBELOW", (0,0), (-1,-1), 1.5, colors.HexColor("#F0B429")),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING",(0,0), (-1,-1), 8),
]))
story.append(disclaimer_box)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"Generated by Orris Medical Guide | Sources: Harrison's Principles of Internal Medicine 22e (2025), "
"Textbook of Family Medicine 9e, Park's Textbook of Preventive & Social Medicine, PMC12187473 (2025)",
footer_style
))
# ── BUILD ──────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /tmp/workspace/contraceptive-pdf && python generate_pdf.py
Contraceptive Guide Newly Married Couple
PDF Document · PDF