# North American Familial Chylomicronemia Score (NAFCS)

NAFCS

Status: LIVE
Price: $0.005 USDC
`GET /api/calc/nafcs`
HTML: https://magentlab.com/docs/nafcs
Markdown: https://magentlab.com/docs/nafcs.md

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

[Development and validation of clinical criteria to identify familial chylomicronemia syndrome (FCS) in North America](https://doi.org/10.1016/j.jacl.2024.09.008)
Hegele RA, Ahmad Z, Ashraf A, et al.
J Clin Lipidol. 2025;19(1):83-94
DOI: [10.1016/j.jacl.2024.09.008](https://doi.org/10.1016/j.jacl.2024.09.008)

## Worked example

### All lowest-risk Table 2 categories

Given: `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`

1. 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)
2. 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=pancreatitis, age_years=40, apo_b_g_l=0.8, bmi_below_threshold=false, htg_onset_before_age_10=false, secondary_factors_present=false, tg_mg_dl=900, tg_tc_ratio_mg_dl=9`

1. 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
2. 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

## Parameters

- `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): 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.

Method: `POST /api/calc/nafcs`
Max items: 25
Price: unit_amount + extra_item_amount * (n - 1) (unit 5000 atomic, extra 2000 atomic)
Status: PREVIEW

- 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:

```json
{
  "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"
    }
  ]
}
```

Human paywall (two-item fixture): https://api.magentlab.com/paywall/bulk/nafcs

Example 200:

```json
{
  "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 fields

- `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

Frozen fixture. Not a live lookup.

```json
{
  "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
}
```

## Errors

- HTTP 400 `invalid_nafcs`: NAFCS needs Hegele North American familial chylomicronemia inputs in published ranges. Returned before settlement; you are not charged.
- HTTP 400 `invalid_items`: POST body must be a JSON object with only an items array Returned before settlement; you are not charged.
- HTTP 400 `invalid_item_count`: items must be an array of 1 to 25 objects Returned before settlement; you are not charged.
- HTTP 400 `invalid_item`: each items entry must be a JSON object Returned before settlement; you are not charged.

Shared HTTP 402 and 503: https://magentlab.com/docs/payments

## Related tools

- [Dutch FH](https://magentlab.com/docs/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](https://magentlab.com/docs/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.

- GET the tool with Accept: application/json (do not send Accept: text/html unless you want the human paywall).
- HTTP 402 means you have not paid. Decode the base64 PAYMENT-REQUIRED header. HTTP 503 is not a new quote.
- Sign accepts[0] (exact, EIP-3009) with validBefore = now + maxTimeoutSeconds (600 seconds), or accepts[1] (batch-settlement deposit/voucher) on product GET. Ping and POST {items} stay exact. Magent retries transient facilitator 429/5xx before answering.
- Retry the same URL with PAYMENT-SIGNATURE (base64 JSON of accepted and payload). Magent attaches canonical extensions.bazaar on CDP verify/settle; echoing 402 bazaar is optional.
- Success is HTTP 200 JSON plus PAYMENT-RESPONSE. exact settles before the tool. batch-settlement verifies (and deposit-settles) before the tool and commits the charge after HTTP 2xx. HTTP 503: retry the same PAYMENT-SIGNATURE. Mint a new exact nonce only after a new HTTP 402.

- offered `exact` on eip155:8453: Fixed-price USDC on Base. The buyer authorizes the advertised amount (EIP-3009). magent settles before the tool runs (paymentFlow upfront). extra.assetTransferMethod=eip3009 extra.paymentFlow=upfront.
- offered `batch-settlement` on eip155:8453: Payment-channel vouchers claimed later in batches. Exact stays accepts[0]. Same-path POST {items} is still exact. extra.assetTransferMethod=eip3009 extra.paymentFlow=authorization.

- not offered `upto`: Not offered. Usage-based: buyer authorizes a ceiling, seller settles the actual amount after work. Reserved for a future metered tool. Not for current calculators or code search.

Same-path POST {items} is still scheme exact: one EIP-3009 authorization for GET unit plus $0.002 per extra item. That is not x402 batch-settlement (payment channels / vouchers).

Shared HTTP 402 and 503 table: https://magentlab.com/docs/payments

Stdio MCP (one process per host): https://magentlab.com/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.
