Give me a homoeopathic therapeutic of dentitation diarrhoea
homoeopathic therapeutics dentition diarrhoea remedies chamomilla calcarea
https://homeoco.fr/en/homeopathy-in-action/article/difficult…
dentition diarrhoea homoeopathic repertory Chamomilla Podophyllum Calcarea phos Kreosotum symptoms
https://hpathy.com/cause-symptoms-treatment/diarrhea-homeopa…
| Remedy | Character of Stool | Key Associated Symptom | Modality |
|---|---|---|---|
| Chamomilla | Green, chopped spinach-like, offensive | One cheek red; extreme irritability | Better carried/rocked |
| Podophyllum | Yellow, profuse, gushing, painless | Head rolling, drooling, early morning | Better lying on stomach |
| Calc. carb | Sour, white, undigested | Sweating head, open fontanelle, fat child | Better dry weather |
| Calc. phos | Green, mucous, fetid | Thin child, delayed fontanelle closure | Better warm dry weather |
| Rheum | Brown, frothy, sour body odour | Whole body smells sour; griping colic | Worse motion/eating |
| Kreosotum | Offensive, excoriating | Rapid tooth decay; gum bleeding | Better warmth |
| Ipecac | Grass-green, frothy | Constant unrelieved nausea | Worse warmth |
| Mercurius | Slimy, bloody, offensive | Never-get-done tenesmus; teeth marks on tongue | Worse night/warm bed |
| Pulsatilla | Changeable, no two stools alike | Mild, weepy, no thirst | Better open air |
| Belladonna | Green, watery, forceful | Sudden high fever, hot red face | Worse jarring/light |
Give me a pdf format
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace empty or missing"
mkdir -p /home/daytona/workspace/homoeopathy && python3 -c "from reportlab.lib i…
~/homoeopathy/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/homoeopathy/Dentition_Diarrhoea_Homoeopathic_Therapeutics.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Homoeopathic Therapeutics of Dentition Diarrhoea",
author="Orris – Homoeopathic Reference"
)
# ── Colour palette ──────────────────────────────────────────────────────────
DARK_GREEN = colors.HexColor("#1B4332")
MID_GREEN = colors.HexColor("#2D6A4F")
LIGHT_GREEN = colors.HexColor("#D8F3DC")
ACCENT = colors.HexColor("#40916C")
TABLE_HEADER = colors.HexColor("#1B4332")
ROW_ALT = colors.HexColor("#EEF7F1")
WHITE = colors.white
GREY_TEXT = colors.HexColor("#333333")
LIGHT_GREY = colors.HexColor("#F5F5F5")
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle(
"Title", parent=styles["Title"],
fontSize=22, leading=28,
textColor=WHITE, alignment=TA_CENTER,
spaceAfter=4, fontName="Helvetica-Bold"
)
subtitle_style = ParagraphStyle(
"Subtitle", parent=styles["Normal"],
fontSize=11, leading=16,
textColor=colors.HexColor("#B7E4C7"), alignment=TA_CENTER,
spaceAfter=2, fontName="Helvetica"
)
section_header = ParagraphStyle(
"SectionHeader",
fontSize=13, leading=18,
textColor=WHITE, fontName="Helvetica-Bold",
spaceBefore=14, spaceAfter=6,
leftIndent=0
)
remedy_title = ParagraphStyle(
"RemedyTitle",
fontSize=12, leading=16,
textColor=DARK_GREEN, fontName="Helvetica-Bold",
spaceBefore=10, spaceAfter=3
)
body = ParagraphStyle(
"Body", parent=styles["Normal"],
fontSize=9.5, leading=14,
textColor=GREY_TEXT, fontName="Helvetica",
spaceAfter=3, leftIndent=10
)
bullet_style = ParagraphStyle(
"Bullet", parent=styles["Normal"],
fontSize=9.5, leading=13.5,
textColor=GREY_TEXT, fontName="Helvetica",
leftIndent=18, spaceAfter=2,
bulletIndent=8
)
keynote_style = ParagraphStyle(
"Keynote", parent=styles["Normal"],
fontSize=9.5, leading=13.5,
textColor=DARK_GREEN, fontName="Helvetica-BoldOblique",
leftIndent=10, spaceAfter=4,
borderPad=4
)
note_style = ParagraphStyle(
"Note", parent=styles["Normal"],
fontSize=9, leading=13,
textColor=colors.HexColor("#7F0000"), fontName="Helvetica-Oblique",
leftIndent=10, rightIndent=10, spaceAfter=4
)
footer_style = ParagraphStyle(
"Footer", parent=styles["Normal"],
fontSize=7.5, textColor=colors.HexColor("#888888"),
alignment=TA_CENTER, fontName="Helvetica"
)
toc_style = ParagraphStyle(
"TOC", parent=styles["Normal"],
fontSize=10, leading=16, textColor=DARK_GREEN,
fontName="Helvetica", leftIndent=20
)
# ── Helper: coloured banner ──────────────────────────────────────────────────
def banner(text, style=section_header, bg=MID_GREEN, pad=6):
tbl = Table([[Paragraph(text, style)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), pad),
("BOTTOMPADDING", (0,0), (-1,-1), pad),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [4]),
]))
return tbl
def remedy_banner(text):
tbl = Table([[Paragraph(text, remedy_title)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_GREEN),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
("LINEBELOW", (0,0), (-1,-1), 1.5, ACCENT),
]))
return tbl
def bullet(text):
return Paragraph(f"• {text}", bullet_style)
def keynote(text):
return Paragraph(f"★ Key note: {text}", keynote_style)
# ── Content ─────────────────────────────────────────────────────────────────
story = []
# ── Title block ─────────────────────────────────────────────────────────────
title_block = Table(
[[Paragraph("Homoeopathic Therapeutics", title_style)],
[Paragraph("of Dentition Diarrhoea", title_style)],
[Spacer(1, 4)],
[Paragraph("A comprehensive remedy guide for diarrhoea during the teething period", subtitle_style)],
[Paragraph("Classical Homoeopathy | Paediatric Practice", subtitle_style)]],
colWidths=[17*cm]
)
title_block.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_GREEN),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
]))
story.append(title_block)
story.append(Spacer(1, 10))
# ── Overview ─────────────────────────────────────────────────────────────────
story.append(banner("Overview"))
story.append(Spacer(1, 4))
overview_text = (
"Dentition diarrhoea refers to loose or frequent stools occurring coincidentally with the eruption "
"of primary (deciduous) teeth, typically between 6 months and 3 years of age. It arises from "
"increased salivation, reflex stimulation of the gastrointestinal tract, and general constitutional "
"disturbance during tooth eruption. In homoeopathy, remedy selection rests on the <b>totality of "
"symptoms</b> — character of stool, associated mental/general symptoms, modalities, and the child's "
"constitutional type."
)
story.append(Paragraph(overview_text, body))
story.append(Spacer(1, 6))
# ── Remedies ──────────────────────────────────────────────────────────────────
story.append(banner("Major Homoeopathic Remedies"))
story.append(Spacer(1, 6))
remedies = [
{
"name": "1. Chamomilla ✦ (The Most Common Remedy)",
"stool": "Green, watery, like chopped spinach/grass; offensive, slimy, hot, corroding; may be mixed with mucus.",
"associated": [
"Violent colic with loud screaming.",
"One cheek red, the other pale.",
"Extreme irritability — demands things then refuses them.",
"Wants to be carried constantly; hypersensitive to pain.",
],
"modalities": "Better: rocking, being carried. Worse: night, warmth.",
"constitution": "Highly irritable, angry, impossible to please; nothing satisfies.",
"keynote": "The FIRST remedy to think of in dentition diarrhoea with extreme irritability and green, offensive stools.",
},
{
"name": "2. Podophyllum",
"stool": "Profuse, watery, yellowish, gushing, forcibly expelled, offensive; painless but exhausting. Early morning (3 AM – 9 AM).",
"associated": [
"Excessive drooling during sleep.",
"Child rolls head from side to side; grinds gums together.",
"Weak, sinking feeling in abdomen.",
"Tendency to rectal prolapse before stool.",
],
"modalities": "Better: lying on stomach with firm pressure. Worse: morning, hot humid weather.",
"constitution": "Child who moans in sleep and clamps gums together.",
"keynote": "Especially indicated when cerebral symptoms (head rolling, moaning) accompany dentition diarrhoea. Headache may alternate with diarrhoea.",
},
{
"name": "3. Calcarea Carbonica",
"stool": "Sour-smelling, whitish, undigested, acid; chalk-like or pale.",
"associated": [
"Profuse perspiration of the head during sleep (wet pillow).",
"Open fontanelles; delayed dentition.",
"Craving for eggs; ravenous appetite.",
"Large, sweating head; stool does not seem to weaken the child.",
],
"modalities": "Better: dry weather. Worse: cold, damp weather.",
"constitution": "Fat, chubby, fair-complexioned; slow to develop (the 'Calcarea baby').",
"keynote": "For dentition diarrhoea in infants with open fontanelles — never overlook Calcarea in any intestinal trouble in this type.",
},
{
"name": "4. Calcarea Phosphorica",
"stool": "Greenish, mucous, fetid, watery, offensive.",
"associated": [
"Delayed closure of fontanelles.",
"Thin, restless, irritable child; picky eater.",
"Stomachaches; susceptibility to food allergies.",
"Tendency to early tooth decay.",
],
"modalities": "Better: warm dry weather. Worse: cold, damp.",
"constitution": "Thin, dark-complexioned, growing children — the opposite of Calc. carb.",
"keynote": "Where Calc. carb suits the fat baby, Calc. phos suits the thin, lanky child with delayed dentition.",
},
{
"name": "5. Rheum (Rhubarb)",
"stool": "Brown, frothy, sour; the whole body smells sour (child, stool, and sweat all sour). Worse from motion and eating.",
"associated": [
"Griping colic followed by tenesmus.",
"Colic continues even after stool.",
"Chilliness during stool.",
"Marked debility.",
],
"modalities": "Worse: motion, eating.",
"constitution": "The 'sour baby' — every secretion and excretion is sour.",
"keynote": "The characteristic sourness of the entire body is the guiding symptom.",
},
{
"name": "6. Kreosotum",
"stool": "Offensive, dark, watery; burning and excoriating; may contain blood; corrodes the skin around the anus.",
"associated": [
"Rapid decay of newly erupted teeth — a hallmark.",
"Gum bleeding on slightest touch.",
"Intensely irritable child.",
"Offensive, acrid saliva causing excoriation around the mouth.",
],
"modalities": "Better: warmth. Worse: cold, during dentition.",
"constitution": "Irritable child with putrid odour from all discharges.",
"keynote": "Indicated when rapid tooth decay accompanies dentition diarrhoea.",
},
{
"name": "7. Ipecacuanha",
"stool": "Grass-green, fermented, frothy, slimy, with cutting colic.",
"associated": [
"Constant, persistent nausea — not relieved by vomiting.",
"Pale face; clean tongue despite nausea.",
"Cutting colicky pain around the navel.",
"Vomiting of mucus or bile.",
],
"modalities": "Worse: warmth, overeating.",
"constitution": "Child who is whiny and constantly nauseated.",
"keynote": "When persistent, unrelieved nausea accompanies dentition diarrhoea — Ipecac is strongly indicated.",
},
{
"name": "8. Mercurius Solubilis / Vivus",
"stool": "Slimy, bloody, green; burning, offensive; worse at night. Accompanied by never-get-done tenesmus.",
"associated": [
"Flabby tongue showing imprint of teeth.",
"Profuse, offensive perspiration.",
"Sickly, sweetish odour from mouth.",
"Increased salivation; rectal prolapse may follow stool.",
],
"modalities": "Worse: night, warmth of bed.",
"constitution": "Profusely perspiring child with metallic breath.",
"keynote": "The 'never-get-done' tenesmus and tongue showing teeth-marks are the guiding keynotes.",
},
{
"name": "9. Pulsatilla",
"stool": "Watery, changeable — no two stools alike; yellow-green mucus.",
"associated": [
"Mild, weepy, clinging child.",
"Absence of thirst (strong keynote).",
"Changeable symptoms.",
"Better in open air; worse in warm, stuffy rooms.",
],
"modalities": "Better: open air, cool. Worse: warmth, evening.",
"constitution": "Mild, yielding, emotional child who seeks affection.",
"keynote": "No thirst + changeable stools + mild clingy nature = Pulsatilla.",
},
{
"name": "10. Belladonna",
"stool": "Greenish, watery, offensive; passed with great force; may contain blood.",
"associated": [
"Sudden high fever with hot, flushed face.",
"Throbbing carotids; dilated pupils.",
"Extreme restlessness; may cry out during sleep.",
"Hypersensitivity to touch, light, and noise.",
],
"modalities": "Worse: jarring, touch, light, noise. Better: warmth.",
"constitution": "Acute, violent inflammatory states.",
"keynote": "When dentition diarrhoea is accompanied by acute cerebral congestion and sudden high fever.",
},
]
for r in remedies:
block = []
block.append(remedy_banner(r["name"]))
block.append(Paragraph(f"<b>Stools:</b> {r['stool']}", body))
block.append(Paragraph("<b>Associated symptoms:</b>", body))
for b in r["associated"]:
block.append(bullet(b))
block.append(Paragraph(f"<b>Modalities:</b> {r['modalities']}", body))
block.append(Paragraph(f"<b>Constitutional type:</b> {r['constitution']}", body))
block.append(keynote(r["keynote"]))
block.append(Spacer(1, 4))
story.append(KeepTogether(block))
# ── Comparative Table ─────────────────────────────────────────────────────────
story.append(Spacer(1, 8))
story.append(banner("Comparative Summary Table"))
story.append(Spacer(1, 6))
table_data = [
[
Paragraph("<b>Remedy</b>", ParagraphStyle("th", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Character of Stool</b>", ParagraphStyle("th", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Key Associated Symptom</b>", ParagraphStyle("th", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Modality</b>", ParagraphStyle("th", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE)),
],
["Chamomilla", "Green, chopped-spinach, offensive", "One cheek red; extreme irritability", "Better carried/rocked"],
["Podophyllum", "Yellow, profuse, gushing, painless", "Head rolling, drooling, early morning", "Better lying on stomach"],
["Calc. carb", "Sour, white, undigested", "Sweating head, open fontanelle, fat child", "Better dry weather"],
["Calc. phos", "Green, mucous, fetid", "Thin child, delayed fontanelle closure", "Better warm dry weather"],
["Rheum", "Brown, frothy, whole body sour", "Whole body smells sour; griping colic", "Worse motion/eating"],
["Kreosotum", "Offensive, dark, excoriating", "Rapid tooth decay; gum bleeding", "Better warmth"],
["Ipecacuanha", "Grass-green, frothy, slimy", "Constant unrelieved nausea", "Worse warmth"],
["Mercurius", "Slimy, bloody, never-get-done tenesmus", "Teeth-marks on tongue; offensive sweat", "Worse night/warm bed"],
["Pulsatilla", "Changeable, no two stools alike", "Mild, weepy, no thirst", "Better open air"],
["Belladonna", "Green, watery, forceful", "Sudden high fever; hot red face", "Worse jarring/light"],
]
col_widths = [3.2*cm, 4.8*cm, 5.5*cm, 3.5*cm]
tbl = Table(table_data, colWidths=col_widths, repeatRows=1)
tbl_style = TableStyle([
("BACKGROUND", (0,0), (-1,0), TABLE_HEADER),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
("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), "TOP"),
("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"),
("TEXTCOLOR", (0,1), (0,-1), DARK_GREEN),
])
tbl.setStyle(tbl_style)
story.append(tbl)
# ── Clinical Note ─────────────────────────────────────────────────────────────
story.append(Spacer(1, 12))
note_banner = Table(
[[Paragraph("⚕ Important Clinical Note", ParagraphStyle(
"nb", fontSize=11, fontName="Helvetica-Bold", textColor=colors.HexColor("#7F0000")))
]],
colWidths=[17*cm]
)
note_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), colors.HexColor("#FFF3F3")),
("LINEBELOW", (0,0), (-1,-1), 1.5, colors.HexColor("#C0392B")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(note_banner)
story.append(Spacer(1, 4))
note_text = (
"While mild diarrhoea may accompany teething, <b>severe or persistent diarrhoea, high fever "
"(>38.5°C), vomiting, or signs of dehydration should NOT be attributed to dentition alone</b> "
"and require prompt medical evaluation. Homoeopathic prescribing in such situations should be used "
"alongside — not instead of — appropriate medical assessment and rehydration therapy."
)
story.append(Paragraph(note_text, note_style))
# ── Footer ────────────────────────────────────────────────────────────────────
story.append(Spacer(1, 14))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Prepared by Orris | Classical Homoeopathic Reference | For educational purposes only | July 2026",
footer_style
))
# ── Build ────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
python3 /home/daytona/workspace/homoeopathy/generate_pdf.py
Dentition Diarrhoea Homoeopathic Therapeutics
PDF Document · PDF
Give me a homoeopathic therapeutic Preeclampsia
homoeopathic therapeutics preeclampsia remedies Belladonna Gelsemium Nux vomica Apis Helonias symptoms
homoeopathic treatment preeclampsia eclampsia Gelsemium Veratrum viride Apis mellifica Viscum album Helonias clinical symptoms
homeopathic materia medica preeclampsia hypertension pregnancy oedema proteinuria Natrum mur Lachesis Phosphorus Sepia remedy
https://www.journalijdr.com/sites/default/files/issue-pdf/29…
homoeopathic repertory preeclampsia Veratrum viride Gelsemium Crataegus Kali carb Sulphur Arsenicum album pregnancy hypertension convulsions
~/homoeopathy/generate_preeclampsia_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/homoeopathy/Preeclampsia_Homoeopathic_Therapeutics.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Homoeopathic Therapeutics of Preeclampsia",
author="Orris – Homoeopathic Reference"
)
# ── Colour palette ──────────────────────────────────────────────────────────
DEEP_NAVY = colors.HexColor("#0D1B2A")
MID_NAVY = colors.HexColor("#1B3A5C")
STEEL_BLUE = colors.HexColor("#2E6DA4")
LIGHT_BLUE = colors.HexColor("#D6E8F9")
ACCENT = colors.HexColor("#3A7EBF")
ROW_ALT = colors.HexColor("#EEF4FB")
WHITE = colors.white
GREY_TEXT = colors.HexColor("#2A2A2A")
RED_NOTE = colors.HexColor("#8B0000")
LIGHT_RED = colors.HexColor("#FFF0F0")
GOLD = colors.HexColor("#C8A800")
LIGHT_GOLD = colors.HexColor("#FFFBE6")
styles = getSampleStyleSheet()
title_style = ParagraphStyle(
"TitleS", fontSize=22, leading=28, textColor=WHITE,
alignment=TA_CENTER, fontName="Helvetica-Bold", spaceAfter=4
)
subtitle_style = ParagraphStyle(
"SubS", fontSize=10.5, leading=15, textColor=colors.HexColor("#B8D4F0"),
alignment=TA_CENTER, fontName="Helvetica", spaceAfter=2
)
section_header_style = ParagraphStyle(
"SecH", fontSize=13, leading=18, textColor=WHITE,
fontName="Helvetica-Bold", spaceBefore=2, spaceAfter=2, leftIndent=0
)
remedy_title_style = ParagraphStyle(
"RemT", fontSize=11.5, leading=16, textColor=MID_NAVY,
fontName="Helvetica-Bold", spaceBefore=2, spaceAfter=2
)
body_style = ParagraphStyle(
"Body", fontSize=9.5, leading=14, textColor=GREY_TEXT,
fontName="Helvetica", spaceAfter=3, leftIndent=10
)
bullet_style = ParagraphStyle(
"Bul", fontSize=9.5, leading=13.5, textColor=GREY_TEXT,
fontName="Helvetica", leftIndent=20, spaceAfter=2, bulletIndent=10
)
keynote_style = ParagraphStyle(
"KN", fontSize=9.5, leading=13.5, textColor=colors.HexColor("#1B5E20"),
fontName="Helvetica-BoldOblique", leftIndent=10, spaceAfter=4
)
note_style = ParagraphStyle(
"Note", fontSize=9, leading=13, textColor=RED_NOTE,
fontName="Helvetica-Oblique", leftIndent=10, rightIndent=10, spaceAfter=4
)
footer_style = ParagraphStyle(
"Foot", fontSize=7.5, textColor=colors.HexColor("#888888"),
alignment=TA_CENTER, fontName="Helvetica"
)
overview_style = ParagraphStyle(
"Ov", fontSize=9.5, leading=14.5, textColor=GREY_TEXT,
fontName="Helvetica", spaceAfter=4, leftIndent=8, alignment=TA_JUSTIFY
)
# ── Helpers ──────────────────────────────────────────────────────────────────
def section_banner(text):
tbl = Table([[Paragraph(text, section_header_style)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MID_NAVY),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
]))
return tbl
def remedy_banner(text):
tbl = Table([[Paragraph(text, remedy_title_style)]], colWidths=[17*cm])
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_BLUE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
("LINEBELOW", (0,0), (-1,-1), 1.5, STEEL_BLUE),
]))
return tbl
def bullet(text):
return Paragraph(f"• {text}", bullet_style)
def keynote(text):
return Paragraph(f"★ Key note: {text}", keynote_style)
# ── STORY ────────────────────────────────────────────────────────────────────
story = []
# Title block
title_block = Table(
[[Paragraph("Homoeopathic Therapeutics", title_style)],
[Paragraph("of Preeclampsia", title_style)],
[Spacer(1, 5)],
[Paragraph("Hypertension · Proteinuria · Oedema · Eclampsia in Pregnancy", subtitle_style)],
[Paragraph("Classical Homoeopathy | Obstetric Practice | Materia Medica Reference", subtitle_style)]],
colWidths=[17*cm]
)
title_block.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DEEP_NAVY),
("TOPPADDING", (0,0), (-1,-1), 16),
("BOTTOMPADDING", (0,0), (-1,-1), 16),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
]))
story.append(title_block)
story.append(Spacer(1, 10))
# ── Definition & Clinical Features ───────────────────────────────────────────
story.append(section_banner("Definition & Clinical Profile"))
story.append(Spacer(1, 5))
def_text = (
"<b>Preeclampsia</b> is a pregnancy-specific hypertensive disorder occurring after the 20th week of gestation, "
"characterised by a triad of <b>hypertension</b> (BP ≥140/90 mmHg on two readings ≥4 hours apart), "
"<b>proteinuria</b> (≥300 mg/24 h), and <b>oedema</b>. It may progress to eclampsia (tonic-clonic "
"seizures), HELLP syndrome, renal failure, hepatic rupture, and maternal or foetal death. "
"It is one of the leading causes of maternal and perinatal morbidity worldwide."
)
story.append(Paragraph(def_text, overview_style))
story.append(Spacer(1, 4))
# Two-column features table
features_data = [
[Paragraph("<b>Symptoms</b>", ParagraphStyle("hd", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE)),
Paragraph("<b>Severity Indicators</b>", ParagraphStyle("hd", fontSize=9, fontName="Helvetica-Bold", textColor=WHITE))],
["Severe, persistent headache (frontal/occipital)", "BP ≥160/110 mmHg"],
["Visual disturbances (blurring, scotomata, photophobia)","Platelet count <100,000/μL"],
["Pitting oedema (face, hands, ankles)", "Serum creatinine ≥1.5 mg/dL"],
["Epigastric / RUQ pain (liver capsule stretch)", "Pulmonary oedema"],
["Proteinuria, oliguria", "HELLP syndrome"],
["Hyperreflexia, drowsiness", "Foetal growth restriction"],
["Sudden weight gain (>1 kg/week)", "Eclamptic convulsions"],
]
feat_tbl = Table(features_data, colWidths=[8.5*cm, 8.5*cm], repeatRows=1)
feat_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_NAVY),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(feat_tbl)
story.append(Spacer(1, 10))
# ── Major Remedies ────────────────────────────────────────────────────────────
story.append(section_banner("Major Homoeopathic Remedies"))
story.append(Spacer(1, 6))
remedies = [
{
"name": "1. Belladonna",
"subtitle": "(Atropa belladonna)",
"bp": "Sudden-onset, very high blood pressure with bounding, full pulse.",
"symptoms": [
"Violent, throbbing, congestive headache — worse from light, noise, jar.",
"Flushed, hot, red, dry face; dilated pupils.",
"Extreme restlessness and hypersensitivity.",
"High fever; skin hot and dry to touch.",
"Convulsive movements, twitching; premonitory signs of eclampsia.",
"Scanty, concentrated urine; burning in kidneys.",
],
"modalities": "Worse: light, noise, touch, jar, lying down. Better: sitting upright, warmth.",
"constitution": "Plethoric, robust patient; symptoms sudden and violent in onset.",
"keynote": "The FIRST remedy when BP rises suddenly with a red, hot, throbbing head and restlessness — the preeclampsia storm in full force.",
},
{
"name": "2. Glonoinum (Glonoine)",
"subtitle": "(Nitroglycerine)",
"bp": "Acute hypertensive episodes with surging, bursting sensations.",
"symptoms": [
"Severe, bursting headache — sensation of fullness as if head would explode.",
"Pulsations felt throughout the body, especially in the head and neck.",
"Feeling of constriction in the chest and throat.",
"Flushing of face; hot, perspiring skin.",
"Fluctuating or rapidly rising blood pressure.",
"Confusion, loss of sense of location.",
],
"modalities": "Worse: heat of sun, jar, stooping, wine. Better: cool, open air.",
"constitution": "Patients sensitive to heat; symptoms triggered or worsened by sun exposure.",
"keynote": "The 'bursting, expanding' headache with surging circulation is the hallmark — closely related to Belladonna but more vascular/congestive.",
},
{
"name": "3. Veratrum Viride",
"subtitle": "(White American Hellebore)",
"bp": "One of the most directly anti-hypertensive remedies in the materia medica.",
"symptoms": [
"Rapid, full, hard, bounding pulse — markedly elevated systolic pressure.",
"Slow, soft, weak, irregular pulse in advanced cases (atrial fibrillation).",
"Burning, dull precordial pain; pulsation felt throughout the body.",
"Congestion of the brain; flushing and heat of head and face.",
"Nausea and vomiting with hypertension.",
"Venous engorgement; especially suited to plethoric constitutions.",
],
"modalities": "Worse: lying on left side; better after rest.",
"constitution": "Plethoric, full-blooded patients; blood rushing upward.",
"keynote": "The leading homoeopathic remedy for acute blood-pressure reduction — Boericke's therapeutic index lists it first for 'raised arterial tension'.",
},
{
"name": "4. Gelsemium Sempervirens",
"subtitle": "(Yellow Jasmine)",
"bp": "Hypertension associated with dizziness, muscular weakness, and anxiety.",
"symptoms": [
"Dull, heavy, occipital headache extending to forehead; head feels like a band.",
"Dizziness, drowsiness, and muscular weakness — the 'dull, dropy, drowsy, dumb' tetrad.",
"Blurred vision, diplopia; visual disturbances in preeclampsia.",
"Trembling; weak extremities; heaviness of eyelids.",
"Anxiety about upcoming labour; anticipatory dread.",
"Slow, weak pulse; BP fluctuating with anxiety.",
],
"modalities": "Worse: damp weather, excitement, emotion. Better: profuse urination, stimulants.",
"constitution": "Timid, emotionally sensitive patient; hypertension triggered by anxiety or emotional shock.",
"keynote": "For preeclampsia where BP rises with anxiety, dizziness, and visual blurring — especially in emotionally sensitive mothers.",
},
{
"name": "5. Apis Mellifica",
"subtitle": "(Bee venom)",
"bp": "Preeclampsia with pronounced oedema and albuminuria (proteinuria).",
"symptoms": [
"Generalised pitting oedema — face, eyelids, hands, ankles; skin looks waxy or transparent.",
"Proteinuria/albuminuria — a strong keynote of Apis in renal involvement.",
"Scanty, dark, burning urine; suppression of urine.",
"Burning, stinging pains; intolerance of heat.",
"Breathlessness from oedema of lungs; rapid, laboured respiration.",
"Restlessness; fidgety; cannot find comfortable position.",
],
"modalities": "Worse: heat, warm room, touch. Better: cold applications, cold air, open air.",
"constitution": "Absence of thirst despite oedema; jealous, fussy temperament.",
"keynote": "The prime remedy when OEDEMA and PROTEINURIA dominate — 'dropsy without thirst' is a clinical hallmark.",
},
{
"name": "6. Natrum Muriaticum",
"subtitle": "(Common salt — NaCl)",
"bp": "Hypertension in pregnancy linked to fluid retention and suppressed grief.",
"symptoms": [
"Generalised oedema; fluid retention with salt and water imbalance.",
"Persistent, hammering headache — worse in the morning.",
"Puffiness around eyes; pale, waxy face.",
"Proteinuria; renal dysfunction.",
"Emotionally reserved; suppressed grief or silent suffering; aversion to consolation.",
"Craving for salt; great thirst.",
],
"modalities": "Worse: heat of sun, consolation, 10 AM, seaside. Better: open air, cold bathing.",
"constitution": "Thin, reserved women with a history of suppressed emotions; tends to keep emotions internalised.",
"keynote": "When preeclampsia develops in a woman who has suffered grief or emotional stress and retains fluid — Nat. mur. covers the totality.",
},
{
"name": "7. Helonias Dioica",
"subtitle": "(Unicorn root)",
"bp": "Preeclampsia in exhausted, anaemic, overworked women.",
"symptoms": [
"Profound exhaustion and anaemia; the body feels heavy, dragging.",
"Albuminuria with weakness; burning and weight in the kidneys.",
"Engorged, congested uterus; dragging sensation in pelvis.",
"The woman feels better only when her mind is occupied (distraction ameliorates).",
"Oedema of lower extremities.",
"Sweetish taste; frequent, burning urination.",
],
"modalities": "Worse: when at rest, thinking of her condition. Better: diversion, attention.",
"constitution": "Worn-out women who work too hard — domestic overwork, anaemia, and uterine congestion.",
"keynote": "For the exhausted, anaemic pregnant woman with albuminuria who improves when her mind is kept busy.",
},
{
"name": "8. Viscum Album",
"subtitle": "(Mistletoe)",
"bp": "A direct anti-hypertensive — clinically used for sustained high blood pressure in pregnancy.",
"symptoms": [
"Sustained arterial hypertension; high systolic and diastolic readings.",
"Slow, weak, irregular pulse with raised blood pressure.",
"Headache and dizziness from vascular tension.",
"Oedema; tendency to cardiac weakness alongside high BP.",
"Bradycardia with hypertension — unusual combination well covered by this remedy.",
],
"modalities": "Worse: cold; better: warmth.",
"constitution": "Elderly or debilitated patients; also useful in younger women with persistent gestational hypertension.",
"keynote": "Listed by Boericke first (alongside Veratrum viride) under 'raised arterial tension' — a specific anti-hypertensive in the homoeopathic pharmacopoeia.",
},
{
"name": "9. Arsenicum Album",
"subtitle": "(Arsenic trioxide)",
"bp": "Preeclampsia with marked anxiety, restlessness, renal involvement, and prostration.",
"symptoms": [
"Generalised oedema (anasarca); puffy, waxy skin.",
"Albuminuria, haematuria; nephritis-like picture.",
"Extreme restlessness — moves constantly from place to place despite weakness.",
"Burning pains relieved by heat — burning in kidneys, bladder, stomach.",
"Great thirst for small, frequent sips of cold water.",
"Anxiety of death; fear that she will not survive.",
],
"modalities": "Worse: midnight to 2 AM, cold, exertion. Better: warmth, hot drinks, company.",
"constitution": "Fastidious, anxious, chilly women with fear of death and great restlessness.",
"keynote": "For preeclampsia progressing toward renal failure with extreme anxiety, burning oedema, and prostration.",
},
{
"name": "10. Phosphorus",
"subtitle": "",
"bp": "Preeclampsia with haemorrhagic tendency, visual disturbances, and renal involvement.",
"symptoms": [
"Visual disturbances — sees flashes, black spots (scotomata), temporary blindness.",
"Haemorrhages: epistaxis, haematuria, bleeding gums; low clotting tendency.",
"Proteinuria; granular casts in urine.",
"Burning in kidneys; bright red blood in urine.",
"Anxious, open, sympathetic; craves cold drinks and ice.",
"Palpitations; chest oppression; congestion of lungs.",
],
"modalities": "Worse: lying on left side, evening, cold. Better: cold food/drinks, open air, sleep.",
"constitution": "Tall, thin, open, affectionate; craves cold drinks (which may be vomited when warm).",
"keynote": "When scotomata, haemorrhagic tendency, and renal signs accompany preeclampsia — Phosphorus covers the danger of impending eclampsia.",
},
{
"name": "11. Secale Cornutum",
"subtitle": "(Ergot of Rye)",
"bp": "Preeclampsia with threatened or actual convulsions and vascular spasm.",
"symptoms": [
"Vascular spasm; constriction of peripheral vessels; numbness and tingling.",
"Threatened eclampsia with twitching and jerking.",
"Tendency to haemorrhage (thin, persistent, dark blood).",
"Burning sensation throughout the body, yet patient craves cold and is intolerant of heat.",
"Extreme prostration; sunken face; collapse-like state.",
"Dry, shrivelled, dark skin; cold extremities.",
],
"modalities": "Worse: warmth, covering. Better: cold, uncovering.",
"constitution": "Thin, cachectic, older pregnant women; or after exhausting deliveries.",
"keynote": "For impending eclampsia with vascular spasm, burning with desire for cold, and collapse.",
},
{
"name": "12. Lachesis Mutus",
"subtitle": "(Bushmaster snake venom)",
"bp": "Preeclampsia with loquaciousness, left-sided complaints, haemorrhagic tendency.",
"symptoms": [
"Hypertension worse on waking from sleep; all symptoms worse after sleep.",
"Flushes of heat; hot flushes alternating with chills.",
"Purplish discolouration; mottled skin.",
"Haemorrhagic tendency; dark, decomposed blood.",
"Constriction and tightness — cannot bear tight clothing around neck or abdomen.",
"Talkative, jealous, suspicious; worse from suppression of discharges.",
],
"modalities": "Worse: sleep, warmth, left side, pressure. Better: discharges, open air.",
"constitution": "Loquacious, jealous; hypertension worse on waking; left-sided affections.",
"keynote": "When preeclampsia is worse after sleep, left-sided, with purplish skin and haemorrhagic tendency — Lachesis should be strongly considered.",
},
]
for r in remedies:
block = []
name_text = r["name"]
if r["subtitle"]:
name_text += f" <i><font size='9' color='#555555'>{r['subtitle']}</font></i>"
block.append(remedy_banner(name_text))
block.append(Paragraph(f"<b>Blood Pressure Picture:</b> {r['bp']}", body_style))
block.append(Paragraph("<b>Key Symptoms:</b>", body_style))
for b in r["symptoms"]:
block.append(bullet(b))
block.append(Paragraph(f"<b>Modalities:</b> {r['modalities']}", body_style))
block.append(Paragraph(f"<b>Constitutional type:</b> {r['constitution']}", body_style))
block.append(keynote(r["keynote"]))
block.append(Spacer(1, 4))
story.append(KeepTogether(block))
# ── Comparative Table ─────────────────────────────────────────────────────────
story.append(Spacer(1, 6))
story.append(section_banner("Comparative Summary Table"))
story.append(Spacer(1, 6))
th = lambda t: Paragraph(f"<b>{t}</b>", ParagraphStyle("th", fontSize=8.5, fontName="Helvetica-Bold", textColor=WHITE))
td = lambda t: Paragraph(t, ParagraphStyle("td", fontSize=8, fontName="Helvetica", leading=11))
tdb = lambda t: Paragraph(f"<b>{t}</b>", ParagraphStyle("tdb", fontSize=8, fontName="Helvetica-Bold", leading=11, textColor=MID_NAVY))
table_data = [
[th("Remedy"), th("Dominant Feature"), th("Stool/Urine"), th("Key Modality"), th("Constitution")],
[tdb("Belladonna"), td("Sudden high BP; throbbing red head"), td("Scanty, dark urine"), td("Worse light/noise"), td("Plethoric, robust")],
[tdb("Glonoinum"), td("Bursting, expanding headache"), td("Flushed face"), td("Worse heat/sun"), td("Heat-sensitive")],
[tdb("Veratrum vir."), td("Full, hard, bounding pulse; direct ↓BP"), td("Nausea with hypertension"), td("Worse lying left"), td("Plethoric, venous")],
[tdb("Gelsemium"), td("Dull/droopy; anxiety-driven BP"), td("Diplopia, blurred vision"), td("Better urination"), td("Anxious, timid")],
[tdb("Apis mellifica"), td("Oedema + albuminuria; no thirst"), td("Scanty, dark, burning urine"), td("Worse heat; better cold"), td("Restless, jealous")],
[tdb("Natrum mur."), td("Fluid retention; suppressed grief"), td("Proteinuria; craves salt"), td("Worse 10 AM, consolation"),td("Reserved, grieving")],
[tdb("Helonias"), td("Exhaustion + albuminuria"), td("Sweetish taste, burning urine"), td("Better distraction"), td("Worn-out, anaemic")],
[tdb("Viscum album"), td("Sustained high BP; bradycardia"), td("Cardiac weakness + high BP"), td("Better warmth"), td("Debilitated")],
[tdb("Arsenicum alb."), td("Anxiety, restlessness, renal oedema"), td("Burning urine; albuminuria"), td("Worse midnight/cold"), td("Anxious, fastidious")],
[tdb("Phosphorus"), td("Haemorrhage + scotomata"), td("Haematuria; granular casts"), td("Worse lying left"), td("Thin, open, affectionate")],
[tdb("Secale cor."), td("Vascular spasm; impending eclampsia"), td("Burning, desires cold"), td("Better uncovering"), td("Thin, cachectic")],
[tdb("Lachesis"), td("Worse after sleep; left-sided"), td("Dark, decomposed blood"), td("Worse sleep/pressure"), td("Loquacious, jealous")],
]
cw = [3.0*cm, 4.3*cm, 3.5*cm, 3.2*cm, 3.0*cm]
tbl = Table(table_data, colWidths=cw, repeatRows=1)
tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), MID_NAVY),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(tbl)
story.append(Spacer(1, 12))
# ── Repertory Quick-Reference ─────────────────────────────────────────────────
story.append(section_banner("Repertory Quick Reference — Key Rubrics"))
story.append(Spacer(1, 6))
rubric_data = [
[th("Rubric / Symptom"), th("Leading Remedies")],
[td("Hypertension in pregnancy"), td("Veratrum vir., Viscum alb., Glonoinum, Belladonna, Apis")],
[td("Oedema with proteinuria"), td("Apis mel., Arsenicum alb., Natrum mur., Helonias")],
[td("Headache — throbbing/congestive"), td("Belladonna, Glonoinum, Gelsemium, Natrum mur.")],
[td("Visual disturbances / scotomata"), td("Gelsemium, Phosphorus, Belladonna, Apis")],
[td("Convulsions — eclampsia / threatened"), td("Belladonna, Secale cor., Glonoinum, Veratrum vir., Cuprum met.")],
[td("Haemorrhagic tendency in preeclampsia"),td("Phosphorus, Lachesis, Secale cor., Crotalus horr.")],
[td("Suppressed urine / oliguria"), td("Apis mel., Arsenicum alb., Helonias, Terebinthina")],
[td("Restlessness + oedema"), td("Apis mel., Arsenicum alb., Rhus tox.")],
[td("BP worse after sleep"), td("Lachesis (keynote)")],
[td("Anxiety of death in hypertensive"), td("Arsenicum alb., Aconite, Phosphorus")],
]
rub_tbl = Table(rubric_data, colWidths=[7.5*cm, 9.5*cm], repeatRows=1)
rub_tbl.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), STEEL_BLUE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ROWBACKGROUNDS",(0,1), (-1,-1), [WHITE, ROW_ALT]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#AAAAAA")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 7),
("RIGHTPADDING", (0,0), (-1,-1), 7),
("VALIGN", (0,0), (-1,-1), "TOP"),
]))
story.append(rub_tbl)
story.append(Spacer(1, 12))
# ── Critical Safety Note ──────────────────────────────────────────────────────
warn_banner = Table(
[[Paragraph("⚕ CRITICAL SAFETY NOTE — READ BEFORE PRESCRIBING", ParagraphStyle(
"wn", fontSize=11, fontName="Helvetica-Bold", textColor=RED_NOTE))]],
colWidths=[17*cm]
)
warn_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), LIGHT_RED),
("LINEBELOW", (0,0), (-1,-1), 2.0, RED_NOTE),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
story.append(warn_banner)
story.append(Spacer(1, 5))
warnings = [
"Preeclampsia is a potentially <b>life-threatening obstetric emergency</b>. Homoeopathic treatment must NEVER be used as a substitute for standard obstetric care.",
"Any patient with BP ≥160/110 mmHg, severe headache, visual disturbances, RUQ pain, or oliguria requires <b>immediate hospital admission and conventional management</b> (magnesium sulphate, antihypertensives, delivery planning).",
"Homoeopathy may be used as an <b>adjunct</b> to conventional care — never as a sole or primary treatment in severe preeclampsia or eclampsia.",
"Always inform the treating obstetrician about any homoeopathic remedies being taken.",
"Individualised constitutional prescribing by a qualified homoeopathic physician is essential — self-medication in preeclampsia is dangerous.",
]
for w in warnings:
story.append(Paragraph(f"• {w}", note_style))
# ── Footer ────────────────────────────────────────────────────────────────────
story.append(Spacer(1, 14))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor("#CCCCCC")))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Prepared by Orris | Classical Homoeopathic Reference | Based on Boericke's Materia Medica, Clarke's Prescriber & homoeopathic journals | July 2026",
footer_style
))
doc.build(story)
print(f"PDF saved: {OUTPUT}")
python3 /home/daytona/workspace/homoeopathy/generate_preeclampsia_pdf.py
Preeclampsia Homoeopathic Therapeutics
PDF Document · PDF