how to take history in detail from an obstetric pt

Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
I have enough from the textbook references, and my own clinical knowledge is strong here. Let me now deliver a comprehensive answer on obstetric history taking.

Taking a Detailed Obstetric History

A thorough obstetric history is systematic and covers several domains. Here is the full framework used in clinical practice.

1. Identifying Information / Demographics

  • Full name, age, address
  • Occupation (hers and her partner's)
  • Ethnicity (relevant for sickle cell, thalassaemia, cystic fibrosis screening)
  • Marital/relationship status
  • Referring source

2. Chief Complaint

State in the patient's own words - the reason for this visit (e.g., first booking visit, pain, bleeding, reduced fetal movement, labour, etc.).

3. History of Present Pregnancy (Current Obstetric History)

Menstrual History (key for dating)

  • LMP (Last Menstrual Period) - first day, certain or uncertain
  • Cycle length and regularity (28-day cycle is the reference for Naegele's rule)
  • Contraceptive use just before conception (especially OCP - cycles may be irregular)
  • EDD (Estimated Due Date) - calculated as LMP + 9 months + 7 days, or from early dating scan
  • Gestational age at present visit

Confirmation of Pregnancy

  • Pregnancy test (home or clinical) - when done
  • Ultrasound scans: dating scan (ideally 11-14 weeks), anatomy scan (18-20 weeks), any extra scans - dates, findings, any abnormalities noted

Symptoms in This Pregnancy

Go through trimester by trimester:
  • 1st trimester: nausea/vomiting, bleeding (threatened miscarriage?), vaginal discharge, urinary symptoms, cramping
  • 2nd trimester: fetal movements (when first felt - quickening), anatomy scan results, amniocentesis/CVS if done
  • 3rd trimester: fetal movement count, Braxton Hicks, leaking fluid (PROM?), bleeding (placenta praevia? abruption?), headache/visual disturbance/epigastric pain (pre-eclampsia?), swelling of hands/face/ankles

Antenatal Care This Pregnancy

  • Where booked, with whom
  • All investigations done: blood group, Rh status, Rubella immunity, HIV, Hep B/C, syphilis (VDRL/TPHA), FBC, urinalysis, GBS swab
  • Screening tests: Down syndrome screen (combined test, NIPT/cell-free fetal DNA)
  • Vaccinations given (Tdap, influenza, COVID-19 in pregnancy)
  • Any complications: hypertension, gestational diabetes, anaemia, infections, hospitalisation

4. Past Obstetric History (GOPTAL notation)

Record every previous pregnancy in order, including:
ParameterWhat to Ask
G (Gravida)Total number of times pregnant (including current)
P (Para)Number of deliveries at ≥20 weeks (or ≥500g)
T (Term)Deliveries ≥37 weeks
P (Preterm)Deliveries 20-36+6 weeks
A (Abortus)Miscarriages + terminations
L (Living)Number of living children
For each previous pregnancy, ask:
  • Year, gestational age at delivery
  • Mode of delivery: SVD, instrumental (forceps/ventouse), LSCS (elective or emergency - and why)
  • Place of delivery
  • Duration of labour
  • Complications: APH, PPH (amount), hypertension, GDM, malpresentation, cord prolapse, shoulder dystocia, perineal tears (degree), retained placenta
  • Baby: sex, birth weight, APGAR score, NICU admission, neonatal problems
  • Miscarriages/terminations: how many, gestation, type (spontaneous/induced), surgical intervention needed (ERPC/D&C), Rh prophylaxis given
  • Any previous uterine surgery (myomectomy, metroplasty) - relevant for mode of delivery

5. Gynaecological History

  • Last cervical smear (Pap) - result
  • History of STIs (gonorrhoea, chlamydia, HSV, HPV)
  • Fibroids, ovarian cysts, endometriosis, PCOS
  • Previous pelvic surgery, D&C, cone biopsy, LLETZ/LEEP (risk for cervical incompetence)
  • Contraception history
  • Infertility treatment (IVF, ovulation induction - increases multiple pregnancy risk)
  • Menstrual abnormalities prior to pregnancy

6. Past Medical History (PMH)

Conditions particularly relevant in obstetrics:
SystemConditions to Ask About
CVSHypertension, cardiac disease (congenital, valvular), DVT/PE, thrombophilia
EndocrineDiabetes (Type 1/2), thyroid disease, Addison's
RenalCKD, recurrent UTIs, single kidney
RespiratoryAsthma, TB
NeurologicalEpilepsy, MS, migraine
HaematologicalAnaemia (type), sickle cell, thalassaemia, ITP, thrombophilia
AutoimmuneSLE, antiphospholipid syndrome, rheumatoid arthritis
GI/HepaticLiver disease, IBD, cholestasis of pregnancy (in prior pregnancies)
Mental healthDepression, anxiety, bipolar disorder, eating disorders, previous perinatal mental illness
InfectionsHIV status, Hepatitis B/C, TB, history of TORCH infections

7. Surgical History

  • Any previous surgeries, especially abdominal/pelvic
  • Blood transfusions - when, why, how many units
  • Anaesthetic complications

8. Drug History

  • Current medications (prescribed and OTC)
  • Folic acid supplementation (started when, dose - 400 mcg standard, 5mg if high risk)
  • Vitamin D supplementation
  • Iron, aspirin (for pre-eclampsia prevention)
  • Any teratogenic drugs taken in early pregnancy
  • Traditional/herbal remedies

9. Allergy History

  • Drug allergies with type of reaction (rash, anaphylaxis)
  • Food, latex, other allergies

10. Family History

  • Hypertension, diabetes, cardiac disease, autoimmune conditions in first-degree relatives
  • Congenital anomalies or genetic conditions (chromosomal disorders, neural tube defects, congenital heart disease) - in either partner's family
  • Twins in family (maternal side determines dizygotic twin risk)
  • Haemophilia, cystic fibrosis, sickle cell, thalassaemia (consanguinity increases recessive disorder risk)
  • Pre-eclampsia, eclampsia in mother or sisters

11. Social History

DomainSpecifics
SmokingCurrent/ex-smoker, number of cigarettes/day, willing to quit?
AlcoholUnits per week, type; CAGE screening; any binge drinking in early pregnancy
Recreational drugsCannabis, cocaine, heroin, methadone (if on OST - dose, compliance)
DietVegetarian/vegan (iron, B12 supplementation?), food aversions/cravings, pica
HousingStable housing, overcrowding, hygiene
SupportPartner support, family support, single parent
OccupationWork environment risks (radiation, chemicals, heavy lifting); maternity leave plans
Domestic violenceAsk sensitively and privately: "Do you feel safe at home?"
TravelRecent travel to malaria-endemic or Zika-affected areas
Immigration statusMay affect healthcare access and screening history

12. Systemic Review (Brief)

Screen for symptoms not yet volunteered:
  • General: weight gain pattern, fatigue
  • Urinary: frequency, dysuria, haematuria (UTI, pre-eclampsia)
  • GI: heartburn, constipation, abdominal pain
  • MSK: back pain, pelvic girdle pain, carpal tunnel symptoms
  • Respiratory: breathlessness, cough
  • Neurological: headaches, visual disturbance, numbness

Summary: The "Obstetric Mnemonics"

OBSTETRIC framework at the bedside:
  • O - Obstetric history (G/P/A/L)
  • B - Booking details and scans
  • S - Symptoms in current pregnancy
  • T - Tests and investigations
  • E - Episodes of illness / medical history
  • T - Treatments / medications
  • R - Risk factors (social, genetic, medical)
  • I - Investigations already done
  • C - Concerns of the patient

Special Points to Always Clarify

  1. Blood group and Rh factor - if Rh negative, anti-D prophylaxis history?
  2. GBS status - known carrier?
  3. Consent for interventions - any birth preferences or refusals (e.g., Jehovah's Witness - blood refusal)
  4. Mental health screen - Whooley questions for depression are part of routine antenatal care
  5. Safeguarding - any child protection concerns, vulnerable adult concerns

Primary reference: Creasy & Resnik's Maternal-Fetal Medicine: Principles and Practice (clinical evaluation and prenatal care chapter); standard UK/WHO antenatal care guidelines.

Create a printable checklist for obstetric history-taking in clinic

Reading File
Reading File
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist yet"

Running Command

mkdir -p /home/daytona/workspace/obstetric-checklist && ls /home/daytona/skills/docx/

Writing File

~/obstetric-checklist/generate_checklist.js

const {
  Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
  AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
  VerticalAlign, LevelFormat, PageNumber, Header, Footer,
  convertInchesToTwip
} = require('docx');
const fs = require('fs');

// ─── Color palette ───────────────────────────────────────────────
const TEAL       = "006D77";  // section header bg
const TEAL_LIGHT = "E8F4F5";  // alternating row bg
const WHITE      = "FFFFFF";
const DARK_GRAY  = "2D2D2D";
const MID_GRAY   = "555555";

// ─── Helpers ──────────────────────────────────────────────────────

/** Checkbox cell (small square) */
function checkboxCell() {
  return new TableCell({
    width: { size: 360, type: WidthType.DXA },
    shading: { type: ShadingType.SOLID, color: WHITE },
    verticalAlign: VerticalAlign.CENTER,
    margins: { top: 40, bottom: 40, left: 80, right: 80 },
    children: [
      new Paragraph({
        alignment: AlignmentType.CENTER,
        children: [
          new TextRun({ text: "\u25A1", font: "Arial", size: 22, color: "888888" })
        ]
      })
    ]
  });
}

/** Item text cell */
function itemCell(text, bold = false, shade = WHITE) {
  return new TableCell({
    width: { size: 4200, type: WidthType.DXA },
    shading: { type: ShadingType.SOLID, color: shade },
    verticalAlign: VerticalAlign.CENTER,
    margins: { top: 40, bottom: 40, left: 120, right: 60 },
    children: [
      new Paragraph({
        children: [
          new TextRun({ text, font: "Arial", size: 18, bold, color: DARK_GRAY })
        ]
      })
    ]
  });
}

/** Notes / finding cell */
function notesCell(label = "Notes / Findings:", shade = WHITE) {
  return new TableCell({
    width: { size: 4600, type: WidthType.DXA },
    shading: { type: ShadingType.SOLID, color: shade },
    verticalAlign: VerticalAlign.CENTER,
    margins: { top: 40, bottom: 40, left: 120, right: 80 },
    children: [
      new Paragraph({
        children: [
          new TextRun({ text: label, font: "Arial", size: 16, color: "999999", italics: true })
        ]
      })
    ]
  });
}

/** Full-width section header row */
function sectionHeader(title) {
  return new TableRow({
    children: [
      new TableCell({
        columnSpan: 3,
        shading: { type: ShadingType.SOLID, color: TEAL },
        margins: { top: 80, bottom: 80, left: 160, right: 160 },
        children: [
          new Paragraph({
            alignment: AlignmentType.LEFT,
            children: [
              new TextRun({ text: title, font: "Arial", size: 22, bold: true, color: WHITE })
            ]
          })
        ]
      })
    ]
  });
}

/** Standard checklist row */
function checkRow(label, shade = WHITE) {
  return new TableRow({
    children: [
      checkboxCell(),
      itemCell(label, false, shade),
      notesCell("", shade)
    ]
  });
}

/** Sub-row (indented) */
function subRow(label, shade = WHITE) {
  return new TableRow({
    children: [
      checkboxCell(),
      new TableCell({
        width: { size: 4200, type: WidthType.DXA },
        shading: { type: ShadingType.SOLID, color: shade },
        verticalAlign: VerticalAlign.CENTER,
        margins: { top: 30, bottom: 30, left: 280, right: 60 },
        children: [
          new Paragraph({
            children: [
              new TextRun({ text: "- " + label, font: "Arial", size: 17, color: MID_GRAY })
            ]
          })
        ]
      }),
      notesCell("", shade)
    ]
  });
}

/** Column header row */
function colHeaderRow() {
  const style = (text, w) => new TableCell({
    width: { size: w, type: WidthType.DXA },
    shading: { type: ShadingType.SOLID, color: "EEEEEE" },
    margins: { top: 60, bottom: 60, left: 120, right: 80 },
    children: [
      new Paragraph({
        children: [new TextRun({ text, font: "Arial", size: 17, bold: true, color: MID_GRAY })]
      })
    ]
  });
  return new TableRow({
    children: [
      style("", 360),
      style("Item", 4200),
      style("Notes / Findings", 4600)
    ]
  });
}

// ─── Build document ───────────────────────────────────────────────

function makeTable(rows) {
  return new Table({
    width: { size: 100, type: WidthType.PERCENTAGE },
    borders: {
      top:    { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
      bottom: { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
      left:   { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
      right:  { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" },
      insideH:{ style: BorderStyle.SINGLE, size: 1, color: "DDDDDD" },
      insideV:{ style: BorderStyle.SINGLE, size: 1, color: "DDDDDD" },
    },
    rows
  });
}

// ─── SECTION TABLES ──────────────────────────────────────────────

// Alternating shading helper
const S = (i) => i % 2 === 0 ? WHITE : TEAL_LIGHT;

// 1. Patient Info
const patientInfoRows = [
  sectionHeader("1. PATIENT IDENTIFICATION"),
  colHeaderRow(),
  checkRow("Full name", S(0)),
  checkRow("Date of birth / Age", S(1)),
  checkRow("Address & contact number", S(2)),
  checkRow("Occupation (patient & partner)", S(3)),
  checkRow("Ethnicity / Nationality", S(4)),
  checkRow("Marital / relationship status", S(5)),
  checkRow("Referring clinician / GP", S(6)),
];

// 2. Presenting Complaint
const presentingRows = [
  sectionHeader("2. PRESENTING COMPLAINT"),
  colHeaderRow(),
  checkRow("Chief complaint in patient's own words", S(0)),
  checkRow("Duration of complaint", S(1)),
  checkRow("Reason for visit (booking / emergency / follow-up)", S(2)),
];

// 3. Menstrual & Pregnancy Dating
const menstrualRows = [
  sectionHeader("3. MENSTRUAL HISTORY & PREGNANCY DATING"),
  colHeaderRow(),
  checkRow("LMP (1st day of last menstrual period)", S(0)),
  checkRow("Certainty of LMP (certain / uncertain)", S(1)),
  checkRow("Cycle length & regularity", S(2)),
  checkRow("OCP or contraception used before conception", S(3)),
  checkRow("EDD by dates (Naegele's rule)", S(4)),
  checkRow("EDD confirmed by dating scan (CRL)", S(5)),
  checkRow("Current gestational age", S(6)),
];

// 4. Current Pregnancy
const currentPregRows = [
  sectionHeader("4. CURRENT PREGNANCY HISTORY"),
  colHeaderRow(),
  checkRow("Pregnancy test (date, type)", S(0)),
  checkRow("Nausea / vomiting (severity, hyperemesis?)", S(1)),
  checkRow("Bleeding PV (when, how much, clots, pain?)", S(2)),
  checkRow("Vaginal discharge (colour, odour, itch)", S(3)),
  checkRow("Fetal movements felt (quickening date)", S(4)),
  checkRow("Current fetal movement pattern (reduced?)", S(5)),
  checkRow("Urinary symptoms (frequency, dysuria, haematuria)", S(6)),
  checkRow("Headache / visual disturbance / epigastric pain", S(7)),
  checkRow("Oedema (hands, face, ankles)", S(8)),
  checkRow("Leaking liquor / PROM suspected", S(9)),
  checkRow("Contractions / Braxton Hicks", S(10)),
  checkRow("Pelvic girdle / back pain", S(11)),
];

// 5. Antenatal Care
const antenatalRows = [
  sectionHeader("5. ANTENATAL CARE THIS PREGNANCY"),
  colHeaderRow(),
  checkRow("Booking clinic (where, gestation at booking)", S(0)),
  checkRow("Blood group & Rh status", S(1)),
  checkRow("Anti-D prophylaxis given (if Rh negative)", S(2)),
  checkRow("FBC (haemoglobin, platelets)", S(3)),
  checkRow("Infection screen: HIV, Hep B/C, Syphilis (VDRL)", S(4)),
  checkRow("Rubella immune status", S(5)),
  checkRow("MSU / urinalysis results", S(6)),
  checkRow("GBS swab (if done)", S(7)),
  checkRow("Down syndrome / aneuploidy screening", S(8)),
  subRow("Combined test (PAPP-A + HCG + NT) / NIPT", S(9)),
  subRow("Result & risk given", S(10)),
  checkRow("Dating scan (11-14 wks) - date, findings", S(11)),
  checkRow("Anomaly scan (18-20 wks) - date, findings", S(12)),
  checkRow("Any additional scans - dates, findings", S(13)),
  checkRow("Folic acid (dose, when started)", S(14)),
  checkRow("Vitamin D / iron / aspirin supplementation", S(15)),
  checkRow("Vaccinations: Tdap, influenza, COVID-19", S(16)),
  checkRow("Any hospitalisations this pregnancy", S(17)),
  checkRow("Any complications (HTN, GDM, anaemia, infections)", S(18)),
];

// 6. Past Obstetric History
const pastObsRows = [
  sectionHeader("6. PAST OBSTETRIC HISTORY  (G___  T___  P___  A___  L___)"),
  colHeaderRow(),
  checkRow("Gravida / Para / Abortus / Living (GPAL)", S(0)),
  checkRow("For each previous pregnancy:", S(1)),
  subRow("Year & gestational age at delivery", S(2)),
  subRow("Mode of delivery (SVD / instrumental / LSCS - reason)", S(3)),
  subRow("Duration / complications of labour", S(4)),
  subRow("Antepartum / postpartum haemorrhage", S(5)),
  subRow("Pre-eclampsia / gestational hypertension", S(6)),
  subRow("Gestational diabetes", S(7)),
  subRow("Malpresentation / cord prolapse / shoulder dystocia", S(8)),
  subRow("Perineal tears (degree) / retained placenta", S(9)),
  subRow("Baby: sex, birth weight, APGAR, NICU admission", S(10)),
  subRow("Neonatal problems / congenital anomalies", S(11)),
  checkRow("Miscarriages / terminations: gestation, type, ERPC?", S(12)),
  checkRow("Anti-D given after miscarriage (if Rh negative)", S(13)),
  checkRow("Previous uterine surgery (myomectomy, metroplasty)", S(14)),
];

// 7. Gynaecological History
const gynaeRows = [
  sectionHeader("7. GYNAECOLOGICAL HISTORY"),
  colHeaderRow(),
  checkRow("Last cervical smear (Pap) - date, result", S(0)),
  checkRow("History of STIs (chlamydia, gonorrhoea, HSV, HPV)", S(1)),
  checkRow("Fibroids / ovarian cysts / endometriosis / PCOS", S(2)),
  checkRow("Previous pelvic surgery / D&C / LLETZ / cone biopsy", S(3)),
  checkRow("Infertility treatment (IVF, ovulation induction)", S(4)),
  checkRow("Contraception history", S(5)),
];

// 8. Past Medical History
const pmhRows = [
  sectionHeader("8. PAST MEDICAL HISTORY"),
  colHeaderRow(),
  checkRow("Hypertension / cardiac disease / DVT / PE", S(0)),
  checkRow("Thrombophilia (Factor V Leiden, antiphospholipid syndrome)", S(1)),
  checkRow("Diabetes mellitus (Type 1 / Type 2)", S(2)),
  checkRow("Thyroid disease (hypo / hyperthyroidism)", S(3)),
  checkRow("Renal disease / recurrent UTIs", S(4)),
  checkRow("Asthma / respiratory disease / TB", S(5)),
  checkRow("Epilepsy / neurological conditions", S(6)),
  checkRow("Anaemia (type: iron deficiency / B12 / sickle cell / thalassaemia)", S(7)),
  checkRow("SLE / autoimmune conditions / rheumatoid arthritis", S(8)),
  checkRow("Mental health: depression, anxiety, bipolar disorder", S(9)),
  checkRow("Liver / GI disease", S(10)),
  checkRow("HIV status / Hepatitis B or C", S(11)),
];

// 9. Surgical & Blood Transfusion History
const surgicalRows = [
  sectionHeader("9. SURGICAL & ANAESTHETIC HISTORY"),
  colHeaderRow(),
  checkRow("Previous surgeries (abdominal / pelvic)", S(0)),
  checkRow("Blood transfusions (when, units, indication)", S(1)),
  checkRow("Anaesthetic complications / difficult intubation", S(2)),
];

// 10. Drug History
const drugRows = [
  sectionHeader("10. MEDICATIONS & ALLERGIES"),
  colHeaderRow(),
  checkRow("Current prescribed medications (list all)", S(0)),
  checkRow("OTC medications / herbal / traditional remedies", S(1)),
  checkRow("Folic acid dose (400 mcg standard / 5 mg high-risk)", S(2)),
  checkRow("Aspirin 75-150 mg (pre-eclampsia prevention)", S(3)),
  checkRow("Teratogenic drug exposure in early pregnancy", S(4)),
  checkRow("Drug allergies (drug name + type of reaction)", S(5)),
  checkRow("Food / latex / other allergies", S(6)),
];

// 11. Family History
const familyRows = [
  sectionHeader("11. FAMILY HISTORY"),
  colHeaderRow(),
  checkRow("Hypertension / diabetes / cardiac disease", S(0)),
  checkRow("Pre-eclampsia / eclampsia (mother or sisters)", S(1)),
  checkRow("Congenital anomalies / chromosomal conditions", S(2)),
  checkRow("Neural tube defects / congenital heart disease", S(3)),
  checkRow("Genetic conditions: CF, sickle cell, thalassaemia, haemophilia", S(4)),
  checkRow("Twins (maternal side - dizygotic risk)", S(5)),
  checkRow("Consanguinity", S(6)),
];

// 12. Social History
const socialRows = [
  sectionHeader("12. SOCIAL HISTORY"),
  colHeaderRow(),
  checkRow("Smoking: current / ex / never (cigarettes/day)", S(0)),
  checkRow("Alcohol: units/week, any binge drinking in pregnancy", S(1)),
  checkRow("Recreational drugs / opioid substitution therapy", S(2)),
  checkRow("Diet: vegetarian/vegan, pica, food aversions", S(3)),
  checkRow("Housing: stable, overcrowding, sanitation", S(4)),
  checkRow("Social support (partner, family, single parent)", S(5)),
  checkRow("Occupation & workplace hazards", S(6)),
  checkRow("Recent travel (malaria / Zika endemic areas)", S(7)),
  checkRow("Domestic violence screen: 'Do you feel safe at home?'", S(8)),
  checkRow("Immigration status / access to healthcare", S(9)),
];

// 13. Systemic Review
const sysrevRows = [
  sectionHeader("13. SYSTEMIC REVIEW"),
  colHeaderRow(),
  checkRow("General: weight gain pattern, fatigue, fever", S(0)),
  checkRow("CVS: palpitations, chest pain, breathlessness", S(1)),
  checkRow("Respiratory: cough, wheeze, shortness of breath", S(2)),
  checkRow("GI: heartburn, nausea, constipation, abdominal pain", S(3)),
  checkRow("Urinary: frequency, dysuria, haematuria", S(4)),
  checkRow("Neurological: headache, visual changes, numbness", S(5)),
  checkRow("MSK: back pain, pelvic girdle pain, carpal tunnel", S(6)),
  checkRow("Skin: itching (obstetric cholestasis?), rashes", S(7)),
];

// 14. Mental Health
const mhRows = [
  sectionHeader("14. MENTAL HEALTH SCREEN"),
  colHeaderRow(),
  checkRow("Whooley questions (depression screen)", S(0)),
  subRow("'During the past month, have you often been bothered by feeling down, depressed or hopeless?'", S(1)),
  subRow("'Have you had little interest or pleasure in doing things?'", S(2)),
  checkRow("Anxiety screen", S(3)),
  checkRow("History of perinatal mental illness (previous pregnancies)", S(4)),
  checkRow("Current psychiatric treatment / medications", S(5)),
  checkRow("Safeguarding concerns / child protection issues", S(6)),
];

// ─── DOCUMENT ─────────────────────────────────────────────────────

const doc = new Document({
  styles: {
    default: {
      document: { run: { font: "Arial", size: 20, color: DARK_GRAY } }
    }
  },
  sections: [
    {
      properties: {
        page: {
          size: { width: 11906, height: 16838 },
          margin: { top: 720, bottom: 720, left: 720, right: 720 }
        }
      },
      headers: {
        default: new Header({
          children: [
            new Table({
              width: { size: 100, type: WidthType.PERCENTAGE },
              borders: {
                top: { style: BorderStyle.NONE },
                bottom: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
                left: { style: BorderStyle.NONE },
                right: { style: BorderStyle.NONE },
                insideH: { style: BorderStyle.NONE },
                insideV: { style: BorderStyle.NONE },
              },
              rows: [
                new TableRow({
                  children: [
                    new TableCell({
                      width: { size: 7000, type: WidthType.DXA },
                      borders: { top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE }, left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE } },
                      children: [
                        new Paragraph({
                          children: [
                            new TextRun({ text: "OBSTETRIC HISTORY-TAKING CHECKLIST", font: "Arial", size: 26, bold: true, color: TEAL })
                          ]
                        }),
                        new Paragraph({
                          children: [
                            new TextRun({ text: "Comprehensive Clinical Assessment Form", font: "Arial", size: 18, color: "888888", italics: true })
                          ]
                        })
                      ]
                    }),
                    new TableCell({
                      width: { size: 2906, type: WidthType.DXA },
                      borders: { top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE }, left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE } },
                      children: [
                        new Paragraph({
                          alignment: AlignmentType.RIGHT,
                          children: [new TextRun({ text: "Date: ___________________", font: "Arial", size: 18, color: MID_GRAY })]
                        }),
                        new Paragraph({
                          alignment: AlignmentType.RIGHT,
                          children: [new TextRun({ text: "Clinician: _______________", font: "Arial", size: 18, color: MID_GRAY })]
                        }),
                        new Paragraph({
                          alignment: AlignmentType.RIGHT,
                          children: [new TextRun({ text: "Clinic / Ward: __________", font: "Arial", size: 18, color: MID_GRAY })]
                        }),
                      ]
                    })
                  ]
                })
              ]
            })
          ]
        })
      },
      footers: {
        default: new Footer({
          children: [
            new Paragraph({
              alignment: AlignmentType.CENTER,
              children: [
                new TextRun({ text: "Page ", font: "Arial", size: 16, color: "999999" }),
                new PageNumber(),
                new TextRun({ text: "  |  Obstetric History Checklist  |  For clinical use only", font: "Arial", size: 16, color: "999999" })
              ]
            })
          ]
        })
      },
      children: [
        // Spacing after header
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(patientInfoRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(presentingRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(menstrualRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(currentPregRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(antenatalRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(pastObsRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(gynaeRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(pmhRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(surgicalRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(drugRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(familyRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(socialRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(sysrevRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        makeTable(mhRows),
        new Paragraph({ children: [new TextRun({ text: "" })] }),

        // Clinician sign-off
        makeTable([
          sectionHeader("CLINICIAN SIGN-OFF"),
          new TableRow({
            children: [
              new TableCell({
                columnSpan: 3,
                margins: { top: 80, bottom: 80, left: 160, right: 160 },
                children: [
                  new Paragraph({
                    children: [
                      new TextRun({ text: "Summary / Impression:   ", font: "Arial", size: 18, bold: true }),
                      new TextRun({ text: "_______________________________________________________________________________", font: "Arial", size: 18, color: "BBBBBB" })
                    ]
                  }),
                  new Paragraph({ children: [new TextRun({ text: "" })] }),
                  new Paragraph({
                    children: [
                      new TextRun({ text: "Plan / Referrals:            ", font: "Arial", size: 18, bold: true }),
                      new TextRun({ text: "_______________________________________________________________________________", font: "Arial", size: 18, color: "BBBBBB" })
                    ]
                  }),
                  new Paragraph({ children: [new TextRun({ text: "" })] }),
                  new Paragraph({
                    children: [
                      new TextRun({ text: "Signature: ______________________________   ", font: "Arial", size: 18 }),
                      new TextRun({ text: "Date: ____________________   ", font: "Arial", size: 18 }),
                      new TextRun({ text: "Bleep/GMC No.: ________________", font: "Arial", size: 18 })
                    ]
                  }),
                ]
              })
            ]
          })
        ])
      ]
    }
  ]
});

Packer.toBuffer(doc).then(buffer => {
  fs.writeFileSync("/home/daytona/workspace/obstetric-checklist/Obstetric_History_Checklist.docx", buffer);
  console.log("Done: Obstetric_History_Checklist.docx");
});
Running Command

cd /home/daytona/workspace/obstetric-checklist && node generate_checklist.js 2>&1

Editing File

~/obstetric-checklist/generate_checklist.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/obstetric-checklist/generate_checklist.js'
Editing File

~/obstetric-checklist/generate_checklist.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/obstetric-checklist/generate_checklist.js'
Running Command

cd /home/daytona/workspace/obstetric-checklist && node generate_checklist.js 2>&1

Running Command

python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/obstetric-checklist/Obstetric_History_Checklist.docx 2>&1

Running Command

python3 -c "import zipfile, sys; z=zipfile.ZipFile('/home/daytona/workspace/obstetric-checklist/Obstetric_History_Checklist.docx'); print('Files in docx:', z.namelist()[:8]); print('Size:', round(z.fp.seek(0,2)/1024), 'KB')" 2>&1

The file is valid and ready. Here's your checklist:

Obstetric History Checklist

Word Document · DOCX

The document is A4, print-ready, and includes:
  • 14 colour-coded sections with teal headers:
    1. Patient Identification
    2. Presenting Complaint
    3. Menstrual History & Pregnancy Dating
    4. Current Pregnancy History
    5. Antenatal Care This Pregnancy
    6. Past Obstetric History (with GPAL notation line)
    7. Gynaecological History
    8. Past Medical History
    9. Surgical & Anaesthetic History
    10. Medications & Allergies
    11. Family History
    12. Social History (incl. domestic violence screen prompt)
    13. Systemic Review
    14. Mental Health Screen (Whooley questions included)
  • Checkbox column (empty squares) for ticking off each item as you ask
  • Notes/Findings column alongside every item for writing in results
  • Clinician sign-off block at the bottom (summary, plan, signature, date)
  • Header with title + Date / Clinician / Clinic fields to fill in
Open in Word or LibreOffice, print A4 single- or double-sided.
This is a shared conversation. Sign in to Orris to start your own chat.