20 weeks pregnancy with CP cyst , UTD A1 and echogenic foci in left ventricle
choroid plexus cyst echogenic intracardiac focus soft markers aneuploidy
choroid plexus cyst echogenic intracardiac focus UTD A1 20 weeks soft markers trisomy 18 management 2024
PMID: 34171388
https://kurse.praenatal-zuerich.ch/wp-content/uploads/2024/0…
Multiple soft markers multiplicatively increase aneuploidy risk beyond what any single marker implies.
| Marker | Associated Aneuploidy | Isolated LR |
|---|---|---|
| CPC | Trisomy 18 | 1.5 |
| UTD A1 | Trisomy 21 | ~1.5-1.9 |
| EIF (left ventricle) | Trisomy 21 | 1.8-2.8 |
Generate a counseling document summarizing the findings and management options
ls -la /home/daytona/workspace/ && ls /home/daytona/skills/docx/
mkdir -p /home/daytona/workspace/prenatal-counseling && node --version && which …
cd /home/daytona/workspace/prenatal-counseling && npm install docx 2>&1 | tail -…
ls /home/daytona/skills/docx/scripts/ && node -e "require('docx'); console.log('…
~/prenatal-counseling/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
HeadingLevel, AlignmentType, BorderStyle, WidthType, ShadingType,
VerticalAlign, PageNumber, Header, Footer, TabStopType, TabStopPosition,
UnderlineType
} = require('docx');
const fs = require('fs');
// ── colour palette ──────────────────────────────────────────────────────────
const NAVY = "1B3A6B";
const TEAL = "2E7D6E";
const AMBER = "B45309";
const LGREY = "F3F4F6";
const MGREY = "D1D5DB";
const WHITE = "FFFFFF";
const BLACK = "1F2937";
// ── helpers ─────────────────────────────────────────────────────────────────
const bold = (text, sz = 22, color = BLACK) =>
new TextRun({ text, bold: true, size: sz, color, font: "Calibri" });
const normal = (text, sz = 20, color = BLACK) =>
new TextRun({ text, size: sz, color, font: "Calibri" });
const italic = (text, sz = 20, color = BLACK) =>
new TextRun({ text, italics: true, size: sz, color, font: "Calibri" });
const br = () => new TextRun({ text: "", break: 1 });
function heading1(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 280, after: 100 },
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: TEAL } },
children: [
new TextRun({ text, bold: true, size: 26, color: NAVY, font: "Calibri" })
]
});
}
function heading2(text) {
return new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 220, after: 80 },
children: [
new TextRun({ text, bold: true, size: 22, color: TEAL, font: "Calibri" })
]
});
}
function bullet(text, bold_prefix = "") {
const runs = [];
if (bold_prefix) {
runs.push(new TextRun({ text: bold_prefix + " ", bold: true, size: 20, font: "Calibri", color: BLACK }));
}
runs.push(new TextRun({ text, size: 20, font: "Calibri", color: BLACK }));
return new Paragraph({
bullet: { level: 0 },
spacing: { before: 60, after: 60 },
children: runs
});
}
function subbullet(text) {
return new Paragraph({
bullet: { level: 1 },
spacing: { before: 40, after: 40 },
children: [new TextRun({ text, size: 19, font: "Calibri", color: "374151" })]
});
}
function bodyPara(runs, spacing = { before: 100, after: 100 }) {
return new Paragraph({ spacing, children: runs });
}
function spacer(lines = 1) {
return new Paragraph({
spacing: { before: 0, after: 0 },
children: Array.from({ length: lines }, () => br())
});
}
function shadeBox(children_paras, fillColor = LGREY) {
// Wrap paragraphs inside a single-cell table for shading
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: [
new TableCell({
shading: { fill: fillColor, type: ShadingType.CLEAR },
margins: { top: 120, bottom: 120, left: 160, right: 160 },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
bottom: { style: BorderStyle.SINGLE, size: 4, color: TEAL },
left: { style: BorderStyle.SINGLE, size: 12, color: TEAL },
right: { style: BorderStyle.NONE }
},
children: children_paras
})
]
})
]
});
}
// ── marker table ─────────────────────────────────────────────────────────────
function markerTable() {
const headerCell = (text) => new TableCell({
shading: { fill: NAVY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text, bold: true, color: WHITE, size: 19, font: "Calibri" })]
})]
});
const dataCell = (text, shade = false) => new TableCell({
shading: { fill: shade ? LGREY : WHITE, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text, size: 19, font: "Calibri", color: BLACK })]
})]
});
const rows = [
new TableRow({
tableHeader: true,
children: [
headerCell("Soft Marker"),
headerCell("Prevalence"),
headerCell("Primary Association"),
headerCell("Likelihood Ratio (isolated)"),
headerCell("Resolves Spontaneously?")
]
}),
new TableRow({
children: [
dataCell("Choroid Plexus Cyst (CPC)", true),
dataCell("1-2% of 2nd-trimester fetuses", true),
dataCell("Trisomy 18", true),
dataCell("LR 1.5 for T18", true),
dataCell("Yes, ~90% by 28 weeks", true)
]
}),
new TableRow({
children: [
dataCell("Urinary Tract Dilation A1"),
dataCell("~3-5% of fetuses"),
dataCell("Trisomy 21 (mild)"),
dataCell("LR 1.5-1.9 for T21"),
dataCell("Most resolve; postnatal US needed")
]
}),
new TableRow({
children: [
dataCell("Echogenic Intracardiac Focus (EIF) - Left Ventricle", true),
dataCell("Up to 5% of normal pregnancies", true),
dataCell("Trisomy 21", true),
dataCell("LR 1.8-2.8 for T21", true),
dataCell("Normal variant; no fetal cardiac significance", true)
]
})
];
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows
});
}
// ── management table ─────────────────────────────────────────────────────────
function managementTable() {
const headerCell = (text) => new TableCell({
shading: { fill: TEAL, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({
children: [new TextRun({ text, bold: true, color: WHITE, size: 19, font: "Calibri" })]
})]
});
const cell = (text, shade = false, isBold = false) => new TableCell({
shading: { fill: shade ? LGREY : WHITE, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({
children: [new TextRun({ text, size: 19, font: "Calibri", color: BLACK, bold: isBold })]
})]
});
return new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
tableHeader: true,
children: [
headerCell("Prior Screening Status"),
headerCell("Recommended Action"),
headerCell("SMFM Grade")
]
}),
new TableRow({
children: [
cell("Negative cfDNA (NIPT)", true, true),
cell("Detailed Level II anatomy scan; reassurance appropriate if no structural anomaly; no additional genetic testing required for isolated markers", true),
cell("Grade 1B", true)
]
}),
new TableRow({
children: [
cell("Negative serum screening (1st-trimester / quad)"),
cell("Offer cfDNA (NIPT) - preferred; or discuss amniocentesis. Counsel on residual combined risk from multiple markers."),
cell("Grade 1B-1C")
]
}),
new TableRow({
children: [
cell("No prior screening", true, true),
cell("Strongly offer cfDNA (NIPT) screening; counsel on combined risk for T18 (CPC) and T21 (EIF + UTD); discuss amniocentesis as definitive option", true),
cell("Grade 1B / 1C", true)
]
}),
new TableRow({
children: [
cell("High-risk prior result"),
cell("Immediate genetic counseling; offer diagnostic amniocentesis or CVS for karyotype ± chromosomal microarray"),
cell("Grade 1B")
]
})
]
});
}
// ── MAIN DOCUMENT ─────────────────────────────────────────────────────────────
const doc = new Document({
styles: {
default: {
document: {
run: { font: "Calibri", size: 20, color: BLACK }
}
}
},
sections: [{
properties: {
page: {
margin: { top: 1080, bottom: 900, left: 1080, right: 1080 }
}
},
headers: {
default: new Header({
children: [
new Paragraph({
border: { bottom: { style: BorderStyle.SINGLE, size: 4, color: MGREY } },
spacing: { after: 100 },
children: [
new TextRun({ text: "PRENATAL COUNSELING DOCUMENT", bold: true, size: 18, color: NAVY, font: "Calibri" }),
new TextRun({ text: " | Confidential - For Patient and Clinician Use", size: 16, color: "6B7280", font: "Calibri" })
]
})
]
})
},
footers: {
default: new Footer({
children: [
new Paragraph({
border: { top: { style: BorderStyle.SINGLE, size: 4, color: MGREY } },
spacing: { before: 80 },
alignment: AlignmentType.CENTER,
children: [
new TextRun({ text: "Based on SMFM Consult Series #57 (2021) & Creasy & Resnik's Maternal-Fetal Medicine | Page ", size: 16, color: "6B7280", font: "Calibri" }),
new TextRun({ children: [PageNumber.CURRENT], size: 16, color: "6B7280", font: "Calibri" }),
new TextRun({ text: " of ", size: 16, color: "6B7280", font: "Calibri" }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 16, color: "6B7280", font: "Calibri" })
]
})
]
})
},
children: [
// ── TITLE BLOCK ──────────────────────────────────────────────────────
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 200, after: 60 },
children: [
new TextRun({ text: "Prenatal Counseling Summary", bold: true, size: 40, color: NAVY, font: "Calibri" })
]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 60 },
children: [
new TextRun({ text: "Second-Trimester Ultrasound Soft Markers", bold: true, size: 26, color: TEAL, font: "Calibri" })
]
}),
new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { before: 0, after: 40 },
children: [
new TextRun({ text: "Gestational Age: 20 Weeks", size: 22, color: "4B5563", font: "Calibri" })
]
}),
// date / patient info row
new Table({
width: { size: 100, type: WidthType.PERCENTAGE },
rows: [
new TableRow({
children: [
new TableCell({
shading: { fill: LGREY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 140, right: 140 },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
bottom: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
left: { style: BorderStyle.NONE },
right: { style: BorderStyle.NONE }
},
children: [new Paragraph({
children: [
new TextRun({ text: "Patient Name: ", bold: true, size: 19, font: "Calibri" }),
new TextRun({ text: "_______________________________", size: 19, font: "Calibri" })
]
})]
}),
new TableCell({
shading: { fill: LGREY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 140, right: 140 },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
bottom: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
left: { style: BorderStyle.NONE },
right: { style: BorderStyle.NONE }
},
children: [new Paragraph({
children: [
new TextRun({ text: "Date of Scan: ", bold: true, size: 19, font: "Calibri" }),
new TextRun({ text: "__________________", size: 19, font: "Calibri" })
]
})]
}),
new TableCell({
shading: { fill: LGREY, type: ShadingType.CLEAR },
margins: { top: 80, bottom: 80, left: 140, right: 140 },
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
bottom: { style: BorderStyle.SINGLE, size: 4, color: MGREY },
left: { style: BorderStyle.NONE },
right: { style: BorderStyle.NONE }
},
children: [new Paragraph({
children: [
new TextRun({ text: "Clinician: ", bold: true, size: 19, font: "Calibri" }),
new TextRun({ text: "_______________________________", size: 19, font: "Calibri" })
]
})]
})
]
})
]
}),
spacer(1),
// ── SECTION 1: WHAT WAS FOUND ────────────────────────────────────────
heading1("1. What Was Found on Ultrasound"),
bodyPara([
normal("Your ultrasound at 20 weeks identified three "),
bold("soft markers"),
normal(". Soft markers are minor variations in fetal appearance that, individually, are usually of no concern but may slightly increase the chance of certain chromosomal differences. None of these findings indicates that your baby has a structural problem or that something is definitely wrong.")
]),
spacer(1),
markerTable(),
spacer(1),
bodyPara([
italic("Important: Because three soft markers are present together, this pregnancy does not fall into the 'isolated' marker category. Combined soft markers require a more thorough assessment than any single marker alone would.", 19, "374151")
]),
spacer(1),
// ── SECTION 2: WHAT THE MARKERS MEAN ────────────────────────────────
heading1("2. What Each Marker Means"),
heading2("Choroid Plexus Cyst (CPC)"),
bullet("Small fluid-filled cysts inside the choroid plexus - tissue in the brain that produces cerebrospinal fluid."),
bullet("Found in 1-2% of all second-trimester fetuses; not a brain abnormality."),
bullet("~90% disappear on their own before 28 weeks of pregnancy."),
bullet("The main concern is a slightly increased statistical chance for Trisomy 18 (Edwards syndrome)."),
bullet("When truly isolated (no other findings), the additional risk for Trisomy 18 is small (likelihood ratio ~1.5)."),
bullet("Important context:", "Key point:"),
subbullet("Among fetuses with a CPC, approximately 3% have Trisomy 18."),
subbullet("When Trisomy 18 IS present, 65-90% of affected fetuses have other significant structural abnormalities alongside the CPC - not just the CPC alone."),
subbullet("CPC does NOT increase the risk for Trisomy 21 (Down syndrome)."),
spacer(1),
heading2("Urinary Tract Dilation (UTD) Grade A1"),
bullet("UTD A1 is the mildest degree of kidney collecting-system widening (renal pelvis AP diameter 4-6 mm before 28 weeks)."),
bullet("Seen in up to 3-5% of fetuses; most are a normal variation with no long-term kidney problems."),
bullet("A very mild association exists with Trisomy 21 (LR ~1.5-1.9) when isolated, but the vast majority of babies with this finding are chromosomally normal."),
bullet("Requires a postnatal kidney ultrasound (typically at 4-6 weeks of life) to confirm resolution."),
spacer(1),
heading2("Echogenic Intracardiac Focus (EIF) - Left Ventricle"),
bullet("A small bright spot within the left ventricle of the heart, representing a tiny calcium deposit (microcalcification) in the papillary muscle or tendons."),
bullet("Found in up to 5% of normal pregnancies; more common in fetuses of Asian ethnicity."),
bullet("This is a normal structural variant - it does NOT indicate a heart defect, and no follow-up cardiac echo or postnatal evaluation is needed when prior screening is negative."),
bullet("Associated with a slightly increased statistical chance for Trisomy 21 (LR 1.8-2.8 when isolated)."),
bullet("Location (left vs. right ventricle) or whether one or both sides are involved does not change the risk."),
spacer(1),
// ── SECTION 3: WHY MULTIPLE MARKERS MATTER ──────────────────────────
heading1("3. Why Having Three Markers Together Matters"),
shadeBox([
new Paragraph({
spacing: { before: 60, after: 80 },
children: [
new TextRun({ text: "Key Concept: 'Isolated' vs. 'Multiple' Markers", bold: true, size: 21, color: NAVY, font: "Calibri" })
]
}),
bodyPara([
normal("A marker is called 'isolated' only when there are no other soft markers AND no structural abnormalities found. In this pregnancy, three soft markers co-exist. This means the statistical risks associated with each marker combine - they are not simply added, but multiplied together against your individual background risk. The result is a higher chance for chromosomal difference than any single marker would suggest on its own.", 19)
]),
bodyPara([
bold("The two main chromosomal conditions of concern in this pregnancy are:", 19, NAVY)
]),
bullet("Trisomy 18 (Edwards syndrome) - prompted by the CPC"),
bullet("Trisomy 21 (Down syndrome) - prompted by the EIF and UTD")
]),
spacer(1),
// ── SECTION 4: MANAGEMENT OPTIONS ───────────────────────────────────
heading1("4. Management Options and Next Steps"),
bodyPara([
normal("The right path forward depends on what aneuploidy screening, if any, has already been done during this pregnancy. Your clinician will guide you through these options:")
]),
spacer(1),
managementTable(),
spacer(1),
heading2("4a. Cell-Free DNA Screening (NIPT / Non-Invasive Prenatal Testing)"),
bullet("A blood test from the mother that analyses fetal DNA fragments circulating in the maternal bloodstream."),
bullet("Can be done from 9 weeks onward; at 20 weeks the fetal fraction is adequate."),
bullet("Highly sensitive for Trisomy 21 (~99%), Trisomy 18 (~97%), and Trisomy 13."),
bullet("A negative (low-risk) cfDNA result provides strong reassurance and, for most isolated markers, removes the need for invasive testing."),
bullet("A positive (high-risk) cfDNA result is a screening result only - diagnostic confirmation with amniocentesis is recommended before any irrevocable decision is made."),
spacer(1),
heading2("4b. Diagnostic Amniocentesis"),
bullet("A needle is passed through the abdominal wall into the amniotic sac under ultrasound guidance to collect amniotic fluid containing fetal cells."),
bullet("Provides a definitive chromosomal diagnosis (karyotype). Chromosomal microarray (CMA) can also be requested for additional detail."),
bullet("Procedure-related pregnancy loss risk: approximately 0.1-0.3% (1 in 330 to 1 in 1000 procedures) at experienced centres."),
bullet("Results typically available in 2-3 weeks (rapid FISH/QF-PCR can provide preliminary results for major aneuploidies in 48-72 hours)."),
bullet("Recommended if cfDNA result is high-risk, or if the patient prefers certainty without waiting for cfDNA turnaround."),
spacer(1),
heading2("4c. Level II (Detailed) Anatomy Ultrasound"),
bullet("Regardless of screening result, a careful review of fetal anatomy is recommended to look for additional features of Trisomy 18 or Trisomy 21."),
bullet("Key features to exclude for Trisomy 18 include:", "Look for:"),
subbullet("Clenched fists / overlapping fingers"),
subbullet("Rocker-bottom feet"),
subbullet("Heart defects (VSD, AVSD)"),
subbullet("Fetal growth restriction"),
subbullet("Neural tube defects, omphalocele, diaphragmatic hernia"),
bullet("Key features to exclude for Trisomy 21 include:", "Look for:"),
subbullet("Nuchal fold thickening (>6 mm at 15-20 weeks)"),
subbullet("Short femur or humerus"),
subbullet("Echogenic bowel"),
subbullet("Absent or hypoplastic nasal bone"),
subbullet("AV canal heart defect"),
spacer(1),
// ── SECTION 5: REASSURANCE POINTS ───────────────────────────────────
heading1("5. Important Points of Reassurance"),
shadeBox([
bullet("Soft markers are common. Up to 15-20% of normal pregnancies have at least one soft marker on routine ultrasound."),
bullet("The majority of babies with these three findings will be chromosomally normal."),
bullet("None of these three markers is a structural defect of the brain, heart, or kidneys."),
bullet("A previously negative cfDNA result is highly reassuring - if you have had this test and it was negative, the chance of a chromosomal condition is very low."),
bullet("Even if cfDNA has not been done, the decision whether to proceed with invasive testing is yours to make. There is no obligation to have amniocentesis."),
bullet("These findings do not affect how or when you deliver. There is no recommendation to change your delivery plan based solely on soft markers.")
], "EFF6FF"),
spacer(1),
// ── SECTION 6: POSTNATAL FOLLOW-UP ──────────────────────────────────
heading1("6. Follow-Up After Birth"),
bullet("Renal ultrasound at 4-6 weeks of age to assess resolution of the urinary tract dilation (UTD A1). Most cases resolve without need for further investigation."),
bullet("If UTD persists postnatally: referral to paediatric nephrology or urology for assessment and voiding cystourethrogram (VCUG) as indicated."),
bullet("EIF and CPC: No postnatal follow-up is needed for these findings - they do not cause postnatal disease."),
bullet("Routine newborn screening and developmental follow-up as per local guidelines."),
spacer(1),
// ── SECTION 7: QUESTIONS ─────────────────────────────────────────────
heading1("7. Questions to Discuss With Your Doctor"),
bullet("Has my prior screening (first-trimester, quad screen, cfDNA) been reviewed in light of these markers?"),
bullet("What is my personalised background risk for Trisomy 18 and Trisomy 21 based on my age and prior screening?"),
bullet("What does my combined (multiplied) risk look like with these three markers included?"),
bullet("Which testing option do you recommend given my individual circumstances?"),
bullet("If cfDNA is recommended, how long will results take and what happens if the result is high-risk?"),
bullet("If I decide not to have cfDNA or amniocentesis, what monitoring will we do for the rest of pregnancy?"),
bullet("What postnatal follow-up plan should I arrange before the baby is born?"),
spacer(1),
// ── REFERENCES ───────────────────────────────────────────────────────
heading1("References & Sources"),
bodyPara([
normal("1. Prabhu M, Kuller JA, Biggio JR. Society for Maternal-Fetal Medicine Consult Series #57: Evaluation and management of isolated soft ultrasound markers for aneuploidy in the second trimester. ", 18),
italic("Am J Obstet Gynecol.", 18),
normal(" 2021;225(2):B2-B15. PMID: 34171388", 18)
]),
bodyPara([
normal("2. Creasy & Resnik's Maternal-Fetal Medicine: Principles and Practice, 9th ed. Chapter 30: Second-Trimester Ultrasound Markers of Trisomy 21 and Other Chromosomal Abnormalities. Elsevier.", 18)
]),
bodyPara([
normal("3. Nguyen HT et al. Multidisciplinary consensus on the classification of prenatal and postnatal urinary tract dilation (UTD classification system). ", 18),
italic("J Pediatr Urol.", 18),
normal(" 2014;10(6):982-98.", 18)
]),
spacer(1),
// ── SIGNATURE BLOCK ──────────────────────────────────────────────────
shadeBox([
new Paragraph({
spacing: { before: 60, after: 100 },
children: [bold("Counselling Acknowledgement", 20, NAVY)]
}),
bodyPara([
normal("I have reviewed this document with my healthcare provider and have had the opportunity to ask questions.", 19)
]),
new Paragraph({
spacing: { before: 140, after: 60 },
children: [
normal("Patient Signature: _______________________________ ", 19),
normal(" Date: ________________", 19)
]
}),
new Paragraph({
spacing: { before: 100, after: 60 },
children: [
normal("Provider Signature: _______________________________ ", 19),
normal(" Date: ________________", 19)
]
})
], LGREY)
]
}]
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync('/home/daytona/workspace/prenatal-counseling/Prenatal_Counseling_20wks_SoftMarkers.docx', buffer);
console.log('Document written successfully.');
}).catch(err => {
console.error('Error:', err);
process.exit(1);
});
node /home/daytona/workspace/prenatal-counseling/generate.js 2>&1
python3 /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/works…
# Validate by extracting text with pandoc instead pandoc /home/daytona/workspace…
Prenatal Counseling 20wks SoftMarkers
Word Document · DOCX