Lipids · LIVE
North American Familial Chylomicronemia Score (NAFCS)
NAFCS
Sum Hegele 2025 Table 3 NAFCS item points (age or early HTG onset, BMI, abdominal pain or pancreatitis, secondary factors, fasting TG, TG/TC ratio, apo B, and three published interactions) and return the 0–100 score plus ≥60 definite classical FCS and ≥45 very likely classical FCS flags. Not a diagnosis or genetic test.
Markdown: /docs/nafcs.md · Canonical: https://magentlab.com/docs/nafcs
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum Hegele 2025 Table 3 NAFCS item points (age or early HTG onset, BMI, abdominal pain or pancreatitis, secondary factors, fasting TG, TG/TC ratio, apo B, and three published interactions) and return the 0–100 score plus ≥60 definite classical FCS and ≥45 very likely classical FCS flags. Not a diagnosis or genetic test.
When to use
When an agent already has caller-assigned Hegele 2025 NAFCS clinical flags and fasting TG, TG/TC ratio, and apo B in published units and needs the published point total. magent does not examine the patient, assay lipids, sequence genes, or apply Simon Broome or Dutch Lipid Clinic Network FH criteria.
When not to use
- Not a medical device and not a diagnosis of familial chylomicronemia syndrome or multifactorial chylomicronemia syndrome.
- magent does not examine the patient, assay lipids, or sequence genes. The caller assigns age, onset, BMI vs threshold, abdominal history, secondary factors, and labs.
- Not a genetic test. Not Simon Broome. Not Dutch Lipid Clinic Network FH. Not the European Moulin FCS score.
- The paper does not provide a score for infants under 1 year or for pregnancy. For age ≥10 the score assumes non-response to fibrates and high-dose omega-3 fatty acids (TG decrease <20%).
- A single fasting TG and TG/TC ratio stand in for Table 1 lab categories; all adult last-3 or child last-2 readings must meet the band as assigned by the caller.
Formula
NAFCS = early_htg_onset 12 (age_years ≥10 and htg_onset_before_age_10) + child_htg 12 (age_years 1-9) + all_tg_severely_elevated 13 (all fasting TG >880 mg/dL or >10 mmol/L) + high_tg_tc_ratio 8 (TG/TC >8 mg/dL or >3.5 mmol/L) + low_apo_b 12 (apo B <1.0 g/L or <100 mg/dL) + bmi_below_threshold 9 (BMI <25 kg/m2 or <85th percentile) + abdominal_pain 9 (recurrent abdominal pain without pancreatitis) + pancreatitis 16 + no_secondary_factors 11 + high_ratio_and_low_apo_b 7 + child_and_no_secondary 7 + high_ratio_and_no_secondary 5 (Hegele 2025 Table 3, parameter estimates ×10); max 100; ≥60 definite classical FCS; ≥45 very likely classical FCS
Citation
- Authors
- Hegele RA, Ahmad Z, Ashraf A, et al.
- Source
- J Clin Lipidol. 2025;19(1):83-94
Worked example
All lowest-risk Table 2 categories
Given:
abdominal_history=noneage_years=40apo_b_g_l=1.2bmi_below_threshold=falsehtg_onset_before_age_10=falsesecondary_factors_present=truetg_mg_dl=500tg_tc_ratio_mg_dl=5
- age 40 with later HTG onset, BMI at or above threshold, ≥1 secondary factor, neither abdominal pain nor pancreatitis, TG 500 mg/dL (not all >880), TG/TC 5 (not >8), apo B 1.2 g/L (not <1.0)
- Each Table 3 item is 0, so score = 0 (max 100). definite_classical_fcs false; very_likely_classical_fcs false.
Table 2 later-onset pancreatitis with high labs and no secondary factors
Given:
abdominal_history=pancreatitisage_years=40apo_b_g_l=0.8bmi_below_threshold=falsehtg_onset_before_age_10=falsesecondary_factors_present=falsetg_mg_dl=900tg_tc_ratio_mg_dl=9
- pancreatitis 16 + no secondary factors 11 + all TG >880 13 + TG/TC >8 8 + apo B <1.0 12 + high ratio and low apo B 7 + high ratio and no secondary 5
- Score = 72 (max 100). definite_classical_fcs true (≥60); very_likely_classical_fcs true (≥45).
Also searched as
- North American Familial Chylomicronemia Score
- NAFCS Score
- North American FCS Score
- familial chylomicronemia syndrome score
- Hegele FCS score
- classical FCS clinical criteria
- NAFCS
- familial chylomicronemia criteria
Try
Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.
Full URL: https://api.magentlab.com/api/calc/nafcs?age_years=40&htg_onset_before_age_10=false&bmi_below_threshold=false&abdominal_history=none&secondary_factors_present=true&tg_mg_dl=500&tg_tc_ratio_mg_dl=5&apo_b_g_l=1.2
Call
Expect HTTP 402 until you retry with PAYMENT-SIGNATURE. Incomplete query params
return HTTP 400 before any quote or charge.
curl -i -H "Accept: application/json" "https://api.magentlab.com/api/calc/nafcs?age_years=40&htg_onset_before_age_10=false&bmi_below_threshold=false&abdominal_history=none&secondary_factors_present=true&tg_mg_dl=500&tg_tc_ratio_mg_dl=5&apo_b_g_l=1.2"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
age_years |
integer | required | Current age in whole years (1-120). Hegele 2025 Table 3: ages 1-9 score child_htg 12; ages ≥10 score early_htg_onset 12 only when htg_onset_before_age_10 is true. The score does not provide a value for infants <1 year. magent does not examine the patient. |
htg_onset_before_age_10 |
boolean | required | Hypertriglyceridemia onset in infancy or childhood (before age 10) as assigned by the caller (Hegele 2025 Table 1). true or false. Scores 12 only when age_years ≥10. For ages 1-9, child_htg is scored from age and this flag does not add points. magent does not date onset. |
bmi_below_threshold |
boolean | required | BMI <25.0 kg/m2 in adults or <85th percentile in children/adolescents as assigned by the caller (Hegele 2025 Table 3, 9 points). true or false. magent does not compute BMI or pediatric percentiles. |
abdominal_history |
string | required · none, abdominal_pain, pancreatitis | Caller-assigned chylomicronemia-related abdominal history (Hegele 2025 Table 3): none (0), abdominal_pain = recurrent abdominal pain without pancreatitis (9), pancreatitis = history of pancreatitis with or without abdominal pain (16). magent does not diagnose pancreatitis. |
secondary_factors_present |
boolean | required | One or more secondary factors that may contribute to hypertriglyceridemia as assigned by the caller (Hegele 2025 Table 1: lifestyle, medications, clinical conditions). true (≥1, 0 points) or false (none, 11 points, plus published interactions). magent does not take a history. |
tg_mg_dl |
number | optional | Caller-assigned fasting triglycerides in mg/dL (440-20000) representing all readings used in the score (Hegele 2025 Table 1: last 3 labs in adults, last 2 in children). All readings >880 score 13. Provide exactly one of tg_mg_dl or tg_mmol_l. magent does not assay lipids. |
tg_mmol_l |
number | optional | Caller-assigned fasting triglycerides in mmol/L (5-226). All readings >10 score 13. Provide exactly one of tg_mg_dl or tg_mmol_l. magent does not assay lipids. |
tg_tc_ratio_mg_dl |
number | optional | Triglyceride/total-cholesterol ratio when both are in mg/dL (0.1-80). >8 scores 8 (Hegele 2025 Table 1). Provide exactly one of tg_tc_ratio_mg_dl or tg_tc_ratio_mmol_l. magent does not assay lipids. |
tg_tc_ratio_mmol_l |
number | optional | Triglyceride/total-cholesterol ratio when both are in mmol/L (0.1-35). >3.5 scores 8. Provide exactly one of tg_tc_ratio_mg_dl or tg_tc_ratio_mmol_l. magent does not assay lipids. |
apo_b_g_l |
number | optional | Apolipoprotein B in g/L (0.1-3.0). <1.0 scores 12 (Hegele 2025 Table 3). Provide exactly one of apo_b_g_l or apo_b_mg_dl. 1.0 g/L = 100 mg/dL in the paper. magent does not assay apo B. |
apo_b_mg_dl |
number | optional | Apolipoprotein B in mg/dL (10-300). <100 scores 12. Provide exactly one of apo_b_g_l or apo_b_mg_dl. magent does not assay apo B. |
Bulk (POST)
POST the same path with a JSON items array. The first item is the GET unit; each additional item is $0.002. Invalid items return HTTP 400 before settlement.
- 1 to 25 items. Each item uses the same keys as the GET query parameters.
- POST of 1 item costs the same as GET. Lists longer than 25: chunk into multiple POSTs. Extra items still execute; do not pad dummy rows.
- The first invalid item fails the whole request (index in the 400 JSON). You are not charged.
- HTTP 200 is {count, path, items}. Each items[i] is the GET 200 body for that row.
- Catalog misses (empty matches, found=false) stay paid 200s inside that slot.
- x402 resource URL is this path plus n and body_sha256. Browsers that prefer text/html get the same paywall as GET; Pay retries POST with the same items.
Example request (fixture)
{
"items": [
{
"abdominal_history": "none",
"age_years": "40",
"apo_b_g_l": "1.2",
"bmi_below_threshold": "false",
"htg_onset_before_age_10": "false",
"secondary_factors_present": "true",
"tg_mg_dl": "500",
"tg_tc_ratio_mg_dl": "5"
},
{
"abdominal_history": "none",
"age_years": "40",
"apo_b_g_l": "1.2",
"bmi_below_threshold": "false",
"htg_onset_before_age_10": "false",
"secondary_factors_present": "true",
"tg_mg_dl": "500",
"tg_tc_ratio_mg_dl": "5"
}
]
}
Opens a two-item fixture on the API host. Unpaid browsers get the same MetaMask paywall as GET; Pay retries POST with those items.
Example 200 (fixture)
{
"count": 2,
"path": "/api/calc/nafcs",
"items": [
{
"components": [
{
"factor": "early_htg_onset",
"points": 0,
"present": false
},
{
"factor": "child_htg",
"points": 0,
"present": false
},
{
"factor": "all_tg_severely_elevated",
"points": 0,
"present": false
},
{
"factor": "high_tg_tc_ratio",
"points": 0,
"present": false
},
{
"factor": "low_apo_b",
"points": 0,
"present": false
},
{
"factor": "bmi_below_threshold",
"points": 0,
"present": false
},
{
"factor": "abdominal_pain",
"points": 0,
"present": false
},
{
"factor": "pancreatitis",
"points": 0,
"present": false
},
{
"factor": "no_secondary_factors",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_low_apo_b",
"points": 0,
"present": false
},
{
"factor": "child_and_no_secondary",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_no_secondary",
"points": 0,
"present": false
}
],
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"age_years": 40,
"citation": {
"authors": "Hegele RA, Ahmad Z, Ashraf A, et al.",
"doi": "10.1016/j.jacl.2024.09.008",
"id": "hegele-2025",
"pmid": "39537503",
"source": "J Clin Lipidol. 2025;19(1):83-94",
"title": "Development and validation of clinical criteria to identify familial chylomicronemia syndrome (FCS) in North America"
},
"formula": "nafcs",
"formula_expression": "NAFCS = early_htg_onset 12 (age_years ≥10 and htg_onset_before_age_10) + child_htg 12 (age_years 1-9) + all_tg_severely_elevated 13 (all fasting TG >880 mg/dL or >10 mmol/L) + high_tg_tc_ratio 8 (TG/TC >8 mg/dL or >3.5 mmol/L) + low_apo_b 12 (apo B <1.0 g/L or <100 mg/dL) + bmi_below_threshold 9 (BMI <25 kg/m2 or <85th percentile) + abdominal_pain 9 (recurrent abdominal pain without pancreatitis) + pancreatitis 16 + no_secondary_factors 11 + high_ratio_and_low_apo_b 7 + child_and_no_secondary 7 + high_ratio_and_no_secondary 5 (Hegele 2025 Table 3, parameter estimates ×10); max 100; ≥60 definite classical FCS; ≥45 very likely classical FCS",
"max_score": 100,
"score": 0,
"all_tg_severely_elevated": false,
"definite_classical_fcs": false,
"high_tg_tc_ratio": false,
"low_apo_b": false,
"very_likely_classical_fcs": false
},
{
"components": [
{
"factor": "early_htg_onset",
"points": 0,
"present": false
},
{
"factor": "child_htg",
"points": 0,
"present": false
},
{
"factor": "all_tg_severely_elevated",
"points": 0,
"present": false
},
{
"factor": "high_tg_tc_ratio",
"points": 0,
"present": false
},
{
"factor": "low_apo_b",
"points": 0,
"present": false
},
{
"factor": "bmi_below_threshold",
"points": 0,
"present": false
},
{
"factor": "abdominal_pain",
"points": 0,
"present": false
},
{
"factor": "pancreatitis",
"points": 0,
"present": false
},
{
"factor": "no_secondary_factors",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_low_apo_b",
"points": 0,
"present": false
},
{
"factor": "child_and_no_secondary",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_no_secondary",
"points": 0,
"present": false
}
],
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"age_years": 40,
"citation": {
"authors": "Hegele RA, Ahmad Z, Ashraf A, et al.",
"doi": "10.1016/j.jacl.2024.09.008",
"id": "hegele-2025",
"pmid": "39537503",
"source": "J Clin Lipidol. 2025;19(1):83-94",
"title": "Development and validation of clinical criteria to identify familial chylomicronemia syndrome (FCS) in North America"
},
"formula": "nafcs",
"formula_expression": "NAFCS = early_htg_onset 12 (age_years ≥10 and htg_onset_before_age_10) + child_htg 12 (age_years 1-9) + all_tg_severely_elevated 13 (all fasting TG >880 mg/dL or >10 mmol/L) + high_tg_tc_ratio 8 (TG/TC >8 mg/dL or >3.5 mmol/L) + low_apo_b 12 (apo B <1.0 g/L or <100 mg/dL) + bmi_below_threshold 9 (BMI <25 kg/m2 or <85th percentile) + abdominal_pain 9 (recurrent abdominal pain without pancreatitis) + pancreatitis 16 + no_secondary_factors 11 + high_ratio_and_low_apo_b 7 + child_and_no_secondary 7 + high_ratio_and_no_secondary 5 (Hegele 2025 Table 3, parameter estimates ×10); max 100; ≥60 definite classical FCS; ≥45 very likely classical FCS",
"max_score": 100,
"score": 0,
"all_tg_severely_elevated": false,
"definite_classical_fcs": false,
"high_tg_tc_ratio": false,
"low_apo_b": false,
"very_likely_classical_fcs": false
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | nafcs |
formula_expression |
string | Hegele 2025 Table 3 NAFCS expression |
score |
integer | NAFCS points 0-100 |
max_score |
integer | Always 100 |
age_years |
integer | Parsed current age in whole years |
all_tg_severely_elevated |
boolean | true when all fasting TG readings are >880 mg/dL or >10 mmol/L |
high_tg_tc_ratio |
boolean | true when TG/TC is >8 (mg/dL) or >3.5 (mmol/L) |
low_apo_b |
boolean | true when apo B is <1.0 g/L or <100 mg/dL |
definite_classical_fcs |
boolean | true when score ≥60 (Hegele 2025 abstract: definite classical FCS). Not a diagnosis. |
very_likely_classical_fcs |
boolean | true when score ≥45 (Hegele 2025 abstract: very likely classical FCS). Not a diagnosis. |
components |
array | Hegele 2025 Table 3 rows including three interaction terms |
citation |
object | Hegele 2025 J Clin Lipidol NAFCS citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"factor": "early_htg_onset",
"points": 0,
"present": false
},
{
"factor": "child_htg",
"points": 0,
"present": false
},
{
"factor": "all_tg_severely_elevated",
"points": 0,
"present": false
},
{
"factor": "high_tg_tc_ratio",
"points": 0,
"present": false
},
{
"factor": "low_apo_b",
"points": 0,
"present": false
},
{
"factor": "bmi_below_threshold",
"points": 0,
"present": false
},
{
"factor": "abdominal_pain",
"points": 0,
"present": false
},
{
"factor": "pancreatitis",
"points": 0,
"present": false
},
{
"factor": "no_secondary_factors",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_low_apo_b",
"points": 0,
"present": false
},
{
"factor": "child_and_no_secondary",
"points": 0,
"present": false
},
{
"factor": "high_ratio_and_no_secondary",
"points": 0,
"present": false
}
],
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"age_years": 40,
"citation": {
"authors": "Hegele RA, Ahmad Z, Ashraf A, et al.",
"doi": "10.1016/j.jacl.2024.09.008",
"id": "hegele-2025",
"pmid": "39537503",
"source": "J Clin Lipidol. 2025;19(1):83-94",
"title": "Development and validation of clinical criteria to identify familial chylomicronemia syndrome (FCS) in North America"
},
"formula": "nafcs",
"formula_expression": "NAFCS = early_htg_onset 12 (age_years ≥10 and htg_onset_before_age_10) + child_htg 12 (age_years 1-9) + all_tg_severely_elevated 13 (all fasting TG >880 mg/dL or >10 mmol/L) + high_tg_tc_ratio 8 (TG/TC >8 mg/dL or >3.5 mmol/L) + low_apo_b 12 (apo B <1.0 g/L or <100 mg/dL) + bmi_below_threshold 9 (BMI <25 kg/m2 or <85th percentile) + abdominal_pain 9 (recurrent abdominal pain without pancreatitis) + pancreatitis 16 + no_secondary_factors 11 + high_ratio_and_low_apo_b 7 + child_and_no_secondary 7 + high_ratio_and_no_secondary 5 (Hegele 2025 Table 3, parameter estimates ×10); max 100; ≥60 definite classical FCS; ≥45 very likely classical FCS",
"max_score": 100,
"score": 0,
"all_tg_severely_elevated": false,
"definite_classical_fcs": false,
"high_tg_tc_ratio": false,
"low_apo_b": false,
"very_likely_classical_fcs": false
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_nafcs |
NAFCS needs Hegele North American familial chylomicronemia inputs in published ranges. Returned before settlement; you are not charged. |
| 400 | invalid_items |
POST body must be a JSON object with only an items array Returned before settlement; you are not charged. |
| 400 | invalid_item_count |
items must be an array of 1 to 25 objects Returned before settlement; you are not charged. |
| 400 | invalid_item |
each items entry must be a JSON object Returned before settlement; you are not charged. |
Related tools
- Dutch FH — Apply the Nordestgaard 2013 Table 1 Dutch Lipid Clinic Network score from caller-supplied LDL cholesterol plus family, clinical, physical, and DNA flags, and return the 0–26 score and definite, probable, possible, or unlikely classification. Not a diagnosis.
- Simon Broome — Apply the 1991 Simon Broome Register adult definite familial hypercholesterolaemia rule and return definite or not_definite from one lipid value plus a caller-assigned tendon-xanthoma flag.
Payment
Unpaid requests return HTTP 402 even if query parameters or POST items are missing or invalid, so CDP and agents can index the path. After a PAYMENT-SIGNATURE, invalid params return HTTP 400 JSON before settlement. magent does not charge. Fix the params, then request a new 402 quote for that complete URL. Catalog misses (empty matches, found=false) are valid paid 200s. Unpaid valid requests return HTTP 402 with a base64
PAYMENT-REQUIRED
header. HTTP 503 is not a new quote: retry the same PAYMENT-SIGNATURE. Full handshake
and shared payment errors: Payments.
Stdio MCP: /docs/mcp.
Guarantees
- HTTP 402 is unpaid, including a missing query. After PAYMENT-SIGNATURE, invalid parameters return HTTP 400 before settlement. You are not charged. HTTP 402 never includes the tool JSON.
- exact: settlement finishes before the tool (paymentFlow upfront). batch-settlement: verify/deposit before the tool; chargedCumulativeAmount commits after HTTP 2xx. Uncertain or failed settlement fails closed (HTTP 503). Retry the same PAYMENT-SIGNATURE.
- HTTP 402 is unpaid only. Do not sign a second authorization because of a 503.
- Execution is timeout-bounded and concurrency-capped.
- Calculator inputs are stored encrypted for allowlisted operators (Magent Console). They are not in public logs, SSH lookups, catalog, or rollups. Request logs store path without query.