Procalcitonin normal levels in newborn According to hours of life
procalcitonin reference values neonates hours of life
procalcitonin normal values newborn by hours of life nomogram
| Time (hours of life) | Typical PCT trend | Approximate range |
|---|---|---|
| 0 h (cord blood/birth) | Low, close to normal adult baseline | Usually < 2 ng/mL (often < 0.6 ng/mL) |
| 12-24 h | Rising — this is the physiological peak window | Peak commonly 2-20 ng/mL (mean ~15 ng/mL reported in some cohorts; higher in preterm/stressed infants) |
| 24-36 h | Peak or beginning decline | Can remain elevated, up to ~10-20 ng/mL in some series |
| 48 h | Falling | Typically single digits, trending down |
| 72 h (day 3) onward | Returns to baseline | < 0.5 ng/mL, approaching normal non-neonatal values |
Create a quick reference PDF chart of PCT norms by hours of life
mkdir -p /tmp/workspace/pct-newborn && ls -la /tmp/workspace/
~/pct-newborn/make_pdf.py
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.lib.units import inch
from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle, Paragraph,
Spacer, HRFlowable)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
doc = SimpleDocTemplate(
"/tmp/workspace/pct-newborn/PCT_Neonatal_Reference_Chart.pdf",
pagesize=letter,
topMargin=0.5*inch, bottomMargin=0.5*inch,
leftMargin=0.55*inch, rightMargin=0.55*inch,
)
styles = getSampleStyleSheet()
title_style = ParagraphStyle("title", parent=styles["Title"], fontSize=17,
textColor=colors.HexColor("#1a3a5c"), spaceAfter=2)
subtitle_style = ParagraphStyle("subtitle", parent=styles["Normal"], fontSize=10.5,
textColor=colors.HexColor("#555555"), spaceAfter=10)
section_style = ParagraphStyle("section", parent=styles["Heading2"], fontSize=12.5,
textColor=colors.HexColor("#1a3a5c"), spaceBefore=12, spaceAfter=6)
body_style = ParagraphStyle("body", parent=styles["Normal"], fontSize=9.3, leading=13)
note_style = ParagraphStyle("note", parent=styles["Normal"], fontSize=8.3, leading=11.5,
textColor=colors.HexColor("#333333"))
caveat_style = ParagraphStyle("caveat", parent=styles["Normal"], fontSize=8.2, leading=11.5,
textColor=colors.HexColor("#7a1f1f"))
source_style = ParagraphStyle("source", parent=styles["Normal"], fontSize=7.6, leading=10.5,
textColor=colors.HexColor("#666666"))
elements = []
elements.append(Paragraph("Procalcitonin (PCT) in the Newborn", title_style))
elements.append(Paragraph("Quick Reference Chart — Expected Physiological Values by Hours of Life", subtitle_style))
elements.append(HRFlowable(width="100%", thickness=1.1, color=colors.HexColor("#1a3a5c"), spaceAfter=10))
elements.append(Paragraph(
"PCT is <b>not flat</b> in healthy neonates — a physiological surge occurs in the first 1–3 days "
"of life, independent of infection. Age-specific (hours-of-life) reference ranges must be used instead of "
"the standard adult cutoff (elevated > 0.5 ng/mL).", body_style))
elements.append(Spacer(1, 10))
elements.append(Paragraph("Physiological PCT Curve — Healthy, Non-Septic Newborn", section_style))
data = [
["Hours of Life", "PCT Trend", "Approx. Range (ng/mL)", "Clinical Note"],
["0 h\n(birth / cord blood)", "Low, near baseline",
"< 2\n(often < 0.6)", "Should not yet reflect the postnatal surge"],
["12\u201324 h", "Rising \u2014 physiological peak window",
"2\u201320\n(mean ~15 reported in some cohorts)", "Peak values here do NOT automatically indicate sepsis"],
["24\u201336 h", "At or just past peak",
"Up to ~10\u201320\n(higher in preterm/stressed infants)", "Preterm & low-birth-weight infants trend lower/later"],
["48 h", "Falling", "Single digits, downtrending",
"Persistently rising level at this point is more concerning"],
["72 h (Day 3) onward", "Returns to baseline", "< 0.5",
"Approaches normal non-neonatal reference range"],
]
col_widths = [1.15*inch, 1.55*inch, 1.75*inch, 2.35*inch]
table = Table(data, colWidths=col_widths, repeatRows=1)
table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#1a3a5c")),
("TEXTCOLOR", (0,0), (-1,0), colors.white),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,0), 9.3),
("ALIGN", (0,0), (-1,0), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("FONTSIZE", (0,1), (-1,-1), 8.6),
("ALIGN", (0,1), (0,-1), "CENTER"),
("ALIGN", (2,1), (2,-1), "CENTER"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [colors.white, colors.HexColor("#eef3f8")]),
("GRID", (0,0), (-1,-1), 0.6, colors.HexColor("#b7c6d6")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
]))
elements.append(table)
elements.append(Spacer(1, 12))
elements.append(Paragraph("Reference Points from the Literature", section_style))
lit_items = [
"<b>Thermofisher / B·R·A·H·M·S PCT data:</b> PCT rises after birth, peaks around 24 hours, "
"then falls to normal (< 0.5 µg/L) by ~72 hours of age.",
"<b>Fioretto et al. (preterm infants, PMC9464813):</b> mean physiological peak ~15.12 ng/mL at "
"~36 hours of life in non-septic infants; peak magnitude/timing varies with gestational age and birth weight.",
"<b>Altunhan et al. 2011:</b> proposed sepsis-discriminating thresholds (not \"normal\" values) of "
"0.59 ng/mL at birth and 5.38 ng/mL at 24 hours — values above these raise suspicion for early-onset sepsis.",
"<b>Chiesa / Assicot-type neonatal nomograms:</b> classic references describing the birth-to-24h rise "
"followed by decline to near-baseline by day 2–3.",
]
for item in lit_items:
elements.append(Paragraph("• " + item, note_style))
elements.append(Spacer(1, 3))
elements.append(Spacer(1, 8))
elements.append(Paragraph("Practical Takeaway", section_style))
elements.append(Paragraph(
"<b>At birth:</b> PCT should be low (roughly < 2 ng/mL, often < 0.6). "
"<b>~24 hours:</b> expect the physiological peak — a moderate elevation here is not automatically sepsis. "
"<b>By 48–72 hours:</b> PCT should be trending back down toward < 0.5 ng/mL.", body_style))
elements.append(Spacer(1, 10))
elements.append(HRFlowable(width="100%", thickness=0.8, color=colors.HexColor("#7a1f1f")))
elements.append(Spacer(1, 4))
elements.append(Paragraph(
"CAVEAT: These are approximate physiological reference ranges compiled from published neonatal PCT kinetics "
"studies and manufacturer age-specific data — not a single canonical cutoff table. Absolute values vary by "
"assay/platform, gestational age, and lab. Always use the nomogram validated for your institution's specific "
"PCT assay, and interpret alongside clinical status; PCT is a complement to, not a replacement for, "
"clinical evaluation.", caveat_style))
elements.append(Spacer(1, 8))
elements.append(Paragraph(
"Sources: Thermofisher Procalcitonin – Neonatal Infections reference guide; Fioretto et al., "
"\"Procalcitonin levels in preterm newborns: Reference ranges during the first three days of life\" "
"(PMC9464813); Altunhan H et al. 2011, J Matern Fetal Neonatal Med / Early Hum Dev; "
"Fukuzumi N et al. 2016, Sci Rep 6:23871; Tietz Textbook of Laboratory Medicine, 7th Ed. (procalcitonin, general kinetics).",
source_style))
doc.build(elements)
print("PDF created.")
cd /tmp/workspace/pct-newborn && python3 make_pdf.py && ls -la
PCT Neonatal Reference Chart
PDF Document · PDF
And give same for hscrp
neonatal C-reactive protein reference values hours life
healthy term newborn C-reactive protein normal values hours of life 0 24 48 72 reference range
hs-CRP neonate reference interval hours of life newborn
https://fn.bmj.com/content/fetalneonatal/early/2017/06/30/ar…
~/
~/pct-newborn/make_hscrp_pdf.py
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.lib.units import inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
out = "/tmp/workspace/pct-newborn/hsCRP_Neonatal_Reference_Chart.pdf"
doc = SimpleDocTemplate(out, pagesize=letter, topMargin=0.5*inch, bottomMargin=0.5*inch,
leftMargin=0.55*inch, rightMargin=0.55*inch)
styles = getSampleStyleSheet()
title = ParagraphStyle("title", parent=styles["Title"], fontSize=17, textColor=colors.HexColor("#1a3a5c"), spaceAfter=2)
subtitle = ParagraphStyle("subtitle", parent=styles["Normal"], fontSize=10.5, textColor=colors.HexColor("#555555"), spaceAfter=10)
section = ParagraphStyle("section", parent=styles["Heading2"], fontSize=12.5, textColor=colors.HexColor("#1a3a5c"), spaceBefore=12, spaceAfter=6)
body = ParagraphStyle("body", parent=styles["Normal"], fontSize=9.2, leading=13)
note = ParagraphStyle("note", parent=styles["Normal"], fontSize=8.35, leading=11.5, textColor=colors.HexColor("#333333"))
caveat = ParagraphStyle("caveat", parent=styles["Normal"], fontSize=8.2, leading=11.5, textColor=colors.HexColor("#7a1f1f"))
source = ParagraphStyle("source", parent=styles["Normal"], fontSize=7.55, leading=10.3, textColor=colors.HexColor("#666666"))
E=[]
E.append(Paragraph("High-Sensitivity C-Reactive Protein (hs-CRP) in the Newborn", title))
E.append(Paragraph("Quick Reference Chart - Expected Physiological Values by Hours of Life", subtitle))
E.append(HRFlowable(width="100%", thickness=1.1, color=colors.HexColor("#1a3a5c"), spaceAfter=10))
E.append(Paragraph("<b>hs-CRP measures the same protein as conventional CRP</b>, using an assay able to quantify lower concentrations. In newborns, CRP rises physiologically after birth. It should be interpreted using the infant's exact age in hours, serial trend, gestation, delivery/perinatal factors, and the local laboratory method.", body))
E.append(Spacer(1,10))
E.append(Paragraph("Physiological hs-CRP / CRP Pattern - Healthy Term Newborns", section))
data=[
["Hours of life","Expected trend","Typical central values","Upper reference context / interpretation"],
["0-1 h\n(birth)","Very low / baseline","Median ~0 mg/L","97.5th percentile reported ~8.4 mg/L at birth; an initially low value may precede a later rise."],
["~12 h","Usually still low; rise may begin after ~8 h","Mean ~0.8 mg/L\n(median ~0 mg/L in one PROM cohort)","A single early normal CRP does not exclude infection because CRP response may be delayed."],
["~24 h","Rising","Mean ~2.3 mg/L","Physiological elevation may occur. Compare with repeat value and clinical condition."],
["24-36 h","Near peak / peak","Median ~4 mg/L at 36 h in a PROM cohort","Peak in asymptomatic term newborns reported around 35 h. Perinatal inflammation can elevate values without sepsis."],
["48 h","Peak or early decline","Mean ~4.1 mg/L at 48 h","97.5th percentile reported ~26.5 mg/L at 48 h in healthy term/near-term infants. Small minority may reach >=20 mg/L without infection."],
["48-72 h","Declining expected","Usually low and downtrending","At 48-72 h, 7% of healthy term infants had CRP >=20 mg/L and 1.1% >30 mg/L in one study. Persistent rise needs assessment."],
]
t = Table(data, colWidths=[1.0*inch,1.5*inch,1.35*inch,2.95*inch], repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0),colors.HexColor("#1a3a5c")),("TEXTCOLOR",(0,0),(-1,0),colors.white),
("FONTNAME",(0,0),(-1,0),"Helvetica-Bold"),("FONTSIZE",(0,0),(-1,0),8.8),("ALIGN",(0,0),(-1,0),"CENTER"),
("FONTNAME",(0,1),(-1,-1),"Helvetica"),("FONTSIZE",(0,1),(-1,-1),7.8),("VALIGN",(0,0),(-1,-1),"MIDDLE"),
("ALIGN",(0,1),(0,-1),"CENTER"),("ALIGN",(2,1),(2,-1),"CENTER"),
("ROWBACKGROUNDS",(0,1),(-1,-1),[colors.white,colors.HexColor("#eef3f8")]),
("GRID",(0,0),(-1,-1),0.55,colors.HexColor("#b7c6d6")),("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),5),("RIGHTPADDING",(0,0),(-1,-1),5)]))
E.append(t)
E.append(Spacer(1,11))
E.append(Paragraph("Key Points for Interpretation", section))
points=[
"<b>Do not apply adult cardiovascular-risk hs-CRP categories</b> (<1, 1-3, and >3 mg/L) to neonates.",
"<b>Trend is more informative than one value.</b> CRP begins to rise about 8-12 hours after an inflammatory stimulus and physiologically peaks at approximately 24-48 hours after birth.",
"<b>Delivery and perinatal factors matter.</b> Vaginal or emergency delivery, prolonged rupture of membranes, maternal/perinatal inflammation, respiratory distress, and tissue stress can increase CRP even without proven infection.",
"<b>Term and preterm infants differ.</b> Use a gestational-age-specific local laboratory reference interval when available.",
"<b>For suspected early-onset sepsis:</b> hs-CRP/CRP must complement clinical examination, cultures, and other investigations; it must not independently determine antibiotic decisions."
]
for p in points:
E.append(Paragraph("• "+p,note)); E.append(Spacer(1,3))
E.append(Spacer(1,7))
E.append(HRFlowable(width="100%", thickness=0.8, color=colors.HexColor("#7a1f1f")))
E.append(Spacer(1,4))
E.append(Paragraph("CAVEAT: This chart compiles published cohort values and percentile observations. It is <b>not</b> a universal diagnostic cutoff table. The precise analytical performance and reference interval differ by hs-CRP assay and laboratory. Use the local validated neonatal reference interval, especially for preterm infants and clinical decision-making.", caveat))
E.append(Spacer(1,8))
E.append(Paragraph("Sources: The Harriet Lane Handbook, 23rd ed., Table 28.1: high-sensitivity CRP reference value 0-14 days, 0.3-6.1 mg/L (assay-specific); Chiesa et al. C reactive protein in healthy term newborns during the first 48 hours of life. Arch Dis Child Fetal Neonatal Ed. 2018;103:F163-F168 (PMID 28667188): mean 0.80, 2.30, and 4.10 mg/L at 12, 24, and 48 h; Mjelle et al., 2025, reported Chiesa 97.5th percentile 8.4 mg/L at birth and 26.5 mg/L at 48 h, and summarised later healthy-term observations.",source))
doc.build(E)
print(out)
python3 /tmp/workspace/pct-newborn/make_hscrp_pdf.py && ls -lh /tmp/workspace/pct-newborn/hsCRP_Neonatal_Reference_Chart.pdf
python3 -c "from pypdf import PdfReader; p='/tmp/workspace/pct-newborn/hsCRP_Neonatal_Reference_Chart.pdf'; r=PdfReader(p); print('pages=',len(r.pages)); print(r.pages[0].extract_text()[:1000])"
hsCRP Neonatal Reference Chart
PDF Document · PDF
Create a combined PCT and hs-CRP reference PDF
~/pct-newborn
python3 -c "from pypdf import PdfReader, PdfWriter; base='/tmp/workspace/pct-newborn/'; paths=[base+'PCT_Neonatal_Reference_Chart.pdf',base+'hsCRP_Neonatal_Reference_Chart.pdf']; w=PdfWriter(); [ [w.add_page(p) for p in PdfReader(x).pages] for x in paths ]; w.add_metadata({'/Title':'Neonatal PCT and hs-CRP Reference Charts','/Subject':'Quick-reference charts by hours of life'}); out=base+'Combined_PCT_hsCRP_Neonatal_Reference_Charts.pdf'; open(out,'wb').write(bytes());"
python3 -c "from pypdf import PdfReader, PdfWriter; base='/tmp/workspace/pct-newborn/'; inputs=[base+'PCT_Neonatal_Reference_Chart.pdf', base+'hsCRP_Neonatal_Reference_Chart.pdf']; writer=PdfWriter(); [writer.add_page(page) for path in inputs for page in PdfReader(path).pages]; writer.add_metadata({'/Title':'Neonatal PCT and hs-CRP Reference Charts','/Subject':'Quick-reference charts by hours of life'}); out=base+'Combined_PCT_hsCRP_Neonatal_Reference_Charts.pdf'; f=open(out,'wb'); writer.write(f); f.close(); print(out)" && python3 -c "from pypdf import PdfReader; p='/tmp/workspace/pct-newborn/Combined_PCT_hsCRP_Neonatal_Reference_Charts.pdf'; r=PdfReader(p); print('pages:',len(r.pages)); print('p1:',r.pages[0].extract_text()[:50]); print('p2:',r.pages[1].extract_text()[:50])" && ls -lh /tmp/workspace/pct-newborn/Combined_PCT_hsCRP_Neonatal_Reference_Charts.pdf
Combined PCT hsCRP Neonatal Reference Charts
PDF Document · PDF