Lipids · LIVE
Dutch Lipid Clinic Network FH
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.
Markdown: /docs/dutch-fh.md · Canonical: https://magentlab.com/docs/dutch-fh
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
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.
When to use
When an agent already has untreated LDL cholesterol and caller-assigned Dutch Lipid Clinic Network Table 1 family, clinical, physical, and DNA flags and needs the published adult DLCN score and classification. magent does not assay lipids, examine tendons or arcus, or sequence genes.
When not to use
- Not a medical device and not a diagnosis of familial hypercholesterolaemia.
- magent does not assay lipids, examine tendons or arcus, or sequence genes. The caller supplies exactly one LDL value and assigns every flag.
- Adult Dutch Lipid Clinic Network Table 1 (Nordestgaard 2013 EAS consensus) only. Not Simon Broome, not MEDPED, and not homozygous FH.
- Per group only the highest applicable score is counted. Family, clinical, and physical items do not add within a group.
Formula
DLCN (Nordestgaard 2013 Table 1) = family + clinical + physical + ldl + dna (per group only the highest); family: first_degree_xanthoma_or_arcus or child_ldl_gt_95th -> 2 else first_degree_premature_chd or first_degree_ldl_gt_95th -> 1; clinical: premature_chd -> 2 else premature_cerebral_or_pvd -> 1; physical: tendon_xanthoma -> 6 else corneal_arcus_age_lt_45 -> 4; ldl mmol/L: >8.5 -> 8, 6.5-8.4 -> 5, 5.0-6.4 -> 3, 4.0-4.9 -> 1; dna causative_mutation_ldlr_apob_pcsk9 -> 8; max 26; definite >8, probable 6-8, possible 3-5, unlikely 0-2
Citation
- Authors
- Nordestgaard BG, Chapman MJ, Humphries SE, et al.
- Source
- Eur Heart J. 2013;34(45):3478-3490
Worked example
LDL 9.0 mmol/L with tendon xanthoma is definite FH
Given:
causative_mutation_ldlr_apob_pcsk9=falsechild_ldl_gt_95th=falsecorneal_arcus_age_lt_45=falsefirst_degree_ldl_gt_95th=falsefirst_degree_premature_chd=falsefirst_degree_xanthoma_or_arcus=falseldl_mmol_l=9.0premature_cerebral_or_pvd=falsepremature_chd=falsetendon_xanthoma=true
- ldl_mmol_l 9.0 > 8.5 → ldl_points 8
- tendon_xanthoma true → physical_points 6 (max of the physical group)
- family, clinical, and DNA groups 0 → score 14 (max 26); classification definite
Also searched as
- Dutch Lipid Clinic Network
- DLCN
- Dutch FH criteria
- familial hypercholesterolaemia score
- Nordestgaard FH
- DLCN FH
- Dutch lipid clinic
- familial hypercholesterolemia 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/dutch_fh?ldl_mmol_l=9.0&first_degree_premature_chd=false&first_degree_ldl_gt_95th=false&first_degree_xanthoma_or_arcus=false&child_ldl_gt_95th=false&premature_chd=false&premature_cerebral_or_pvd=false&tendon_xanthoma=true&corneal_arcus_age_lt_45=false&causative_mutation_ldlr_apob_pcsk9=false
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/dutch_fh?ldl_mmol_l=9.0&first_degree_premature_chd=false&first_degree_ldl_gt_95th=false&first_degree_xanthoma_or_arcus=false&child_ldl_gt_95th=false&premature_chd=false&premature_cerebral_or_pvd=false&tendon_xanthoma=true&corneal_arcus_age_lt_45=false&causative_mutation_ldlr_apob_pcsk9=false"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ldl_mmol_l |
number | optional | LDL cholesterol in mmol/L (1-20). Nordestgaard 2013 Table 1 bands: >8.5 → 8, 6.5-8.4 → 5, 5.0-6.4 → 3, 4.0-4.9 → 1. Provide exactly one of ldl_mmol_l or ldl_mg_dl. magent does not assay lipids. |
ldl_mg_dl |
number | optional | LDL cholesterol in mg/dL (40-800). Converted to mmol/L as mg/dL / 38.67, then scored on the mmol/L bands. Provide exactly one lipid parameter. |
first_degree_premature_chd |
boolean | required | First-degree relative with premature coronary heart disease (Nordestgaard 2013 Table 1 family history, 1 point). true or false as assigned by the caller. magent does not take a pedigree. Either this or first_degree_ldl_gt_95th scores 1 for the family group; a 2-point family item still yields family 2, not 3. |
first_degree_ldl_gt_95th |
boolean | required | First-degree relative with LDL cholesterol above the 95th percentile (Nordestgaard 2013 Table 1 family history, 1 point). true or false as assigned by the caller. magent does not assay lipids or take a pedigree. |
first_degree_xanthoma_or_arcus |
boolean | required | First-degree relative with tendon xanthoma and/or arcus cornealis (Nordestgaard 2013 Table 1 family history, 2 points). true or false as assigned by the caller. magent does not examine relatives. Either this or child_ldl_gt_95th scores 2 for the family group (max of family items). |
child_ldl_gt_95th |
boolean | required | Child under 18 years with LDL cholesterol above the 95th percentile (Nordestgaard 2013 Table 1 family history, 2 points). true or false as assigned by the caller. magent does not assay lipids or take a pedigree. |
premature_chd |
boolean | required | Premature coronary heart disease in the subject (Nordestgaard 2013 Table 1 clinical history, 2 points; men <55 years / women <60 years as assigned by the caller). true or false. magent does not diagnose CHD or compute age or sex. If premature_cerebral_or_pvd is also true, the clinical group is 2, not 3. |
premature_cerebral_or_pvd |
boolean | required | Premature cerebral or peripheral vascular disease in the subject (Nordestgaard 2013 Table 1 clinical history, 1 point). true or false as assigned by the caller. magent does not diagnose vascular disease. |
tendon_xanthoma |
boolean | required | Tendon xanthoma in the subject (Nordestgaard 2013 Table 1 physical examination, 6 points). true or false as assigned by the caller. magent does not examine tendons. If corneal_arcus_age_lt_45 is also true, the physical group is 6, not 10. |
corneal_arcus_age_lt_45 |
boolean | required | Arcus cornealis before age 45 years (Nordestgaard 2013 Table 1 physical examination, 4 points). true or false as assigned by the caller. magent does not examine the cornea or compute age. |
causative_mutation_ldlr_apob_pcsk9 |
boolean | required | Causative mutation in LDLR, APOB, or PCSK9 as assigned by the caller (Nordestgaard 2013 Table 1 DNA analysis, 8 points). true or false. magent does not sequence genes. Mutation alone is probable (score 8), not definite. |
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": [
{
"causative_mutation_ldlr_apob_pcsk9": "false",
"child_ldl_gt_95th": "false",
"corneal_arcus_age_lt_45": "false",
"first_degree_ldl_gt_95th": "false",
"first_degree_premature_chd": "false",
"first_degree_xanthoma_or_arcus": "false",
"ldl_mmol_l": "9.0",
"premature_cerebral_or_pvd": "false",
"premature_chd": "false",
"tendon_xanthoma": "true"
},
{
"causative_mutation_ldlr_apob_pcsk9": "false",
"child_ldl_gt_95th": "false",
"corneal_arcus_age_lt_45": "false",
"first_degree_ldl_gt_95th": "false",
"first_degree_premature_chd": "false",
"first_degree_xanthoma_or_arcus": "false",
"ldl_mmol_l": "9.0",
"premature_cerebral_or_pvd": "false",
"premature_chd": "false",
"tendon_xanthoma": "true"
}
]
}
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/dutch_fh",
"items": [
{
"components": [
{
"factor": "family",
"points": 0,
"present": false
},
{
"factor": "clinical",
"points": 0,
"present": false
},
{
"factor": "physical",
"points": 6,
"present": true
},
{
"value": 9.0,
"factor": "ldl",
"points": 8,
"present": true
},
{
"factor": "dna",
"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.",
"citation": {
"authors": "Nordestgaard BG, Chapman MJ, Humphries SE, et al.",
"doi": "10.1093/eurheartj/eht273",
"id": "nordestgaard-2013",
"pmid": "23956253",
"source": "Eur Heart J. 2013;34(45):3478-3490",
"title": "Familial hypercholesterolaemia is underdiagnosed and undertreated in the general population: guidance for clinicians to prevent coronary heart disease: consensus statement of the European Atherosclerosis Society"
},
"formula": "dutch_fh",
"formula_expression": "DLCN (Nordestgaard 2013 Table 1) = family + clinical + physical + ldl + dna (per group only the highest); family: first_degree_xanthoma_or_arcus or child_ldl_gt_95th -> 2 else first_degree_premature_chd or first_degree_ldl_gt_95th -> 1; clinical: premature_chd -> 2 else premature_cerebral_or_pvd -> 1; physical: tendon_xanthoma -> 6 else corneal_arcus_age_lt_45 -> 4; ldl mmol/L: >8.5 -> 8, 6.5-8.4 -> 5, 5.0-6.4 -> 3, 4.0-4.9 -> 1; dna causative_mutation_ldlr_apob_pcsk9 -> 8; max 26; definite >8, probable 6-8, possible 3-5, unlikely 0-2",
"max_score": 26,
"score": 14,
"clinical_points": 0,
"classification": "definite",
"dna_points": 0,
"family_points": 0,
"ldl_mmol_l": 9.0,
"ldl_points": 8,
"physical_points": 6
},
{
"components": [
{
"factor": "family",
"points": 0,
"present": false
},
{
"factor": "clinical",
"points": 0,
"present": false
},
{
"factor": "physical",
"points": 6,
"present": true
},
{
"value": 9.0,
"factor": "ldl",
"points": 8,
"present": true
},
{
"factor": "dna",
"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.",
"citation": {
"authors": "Nordestgaard BG, Chapman MJ, Humphries SE, et al.",
"doi": "10.1093/eurheartj/eht273",
"id": "nordestgaard-2013",
"pmid": "23956253",
"source": "Eur Heart J. 2013;34(45):3478-3490",
"title": "Familial hypercholesterolaemia is underdiagnosed and undertreated in the general population: guidance for clinicians to prevent coronary heart disease: consensus statement of the European Atherosclerosis Society"
},
"formula": "dutch_fh",
"formula_expression": "DLCN (Nordestgaard 2013 Table 1) = family + clinical + physical + ldl + dna (per group only the highest); family: first_degree_xanthoma_or_arcus or child_ldl_gt_95th -> 2 else first_degree_premature_chd or first_degree_ldl_gt_95th -> 1; clinical: premature_chd -> 2 else premature_cerebral_or_pvd -> 1; physical: tendon_xanthoma -> 6 else corneal_arcus_age_lt_45 -> 4; ldl mmol/L: >8.5 -> 8, 6.5-8.4 -> 5, 5.0-6.4 -> 3, 4.0-4.9 -> 1; dna causative_mutation_ldlr_apob_pcsk9 -> 8; max 26; definite >8, probable 6-8, possible 3-5, unlikely 0-2",
"max_score": 26,
"score": 14,
"clinical_points": 0,
"classification": "definite",
"dna_points": 0,
"family_points": 0,
"ldl_mmol_l": 9.0,
"ldl_points": 8,
"physical_points": 6
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | dutch_fh |
formula_expression |
string | Nordestgaard 2013 Table 1 Dutch Lipid Clinic Network expression |
score |
integer | DLCN points 0-26 |
max_score |
integer | Always 26 |
classification |
string | definite when score >8; probable when 6, 7, or 8; possible when 3, 4, or 5; unlikely when 0, 1, or 2. Score 8 (including mutation alone) is probable, not definite. Not a diagnosis. |
ldl_mmol_l |
number | The supplied LDL converted to mmol/L (mg/dL / 38.67 when ldl_mg_dl is used), rounded |
ldl_points |
integer | LDL group points: 8, 5, 3, 1, or 0 |
family_points |
integer | Family-history group points: 2, 1, or 0 (max of family items) |
clinical_points |
integer | Clinical-history group points: 2, 1, or 0 (max of clinical items) |
physical_points |
integer | Physical-examination group points: 6, 4, or 0 (max of physical items) |
dna_points |
integer | DNA-analysis group points: 8 if a causative LDLR/APOB/PCSK9 mutation, else 0 |
components |
array | Five group rows (family, clinical, physical, ldl, dna) with factor, present, points, and value on the ldl row |
citation |
object | Nordestgaard 2013 Eur Heart J EAS consensus citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"factor": "family",
"points": 0,
"present": false
},
{
"factor": "clinical",
"points": 0,
"present": false
},
{
"factor": "physical",
"points": 6,
"present": true
},
{
"value": 9.0,
"factor": "ldl",
"points": 8,
"present": true
},
{
"factor": "dna",
"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.",
"citation": {
"authors": "Nordestgaard BG, Chapman MJ, Humphries SE, et al.",
"doi": "10.1093/eurheartj/eht273",
"id": "nordestgaard-2013",
"pmid": "23956253",
"source": "Eur Heart J. 2013;34(45):3478-3490",
"title": "Familial hypercholesterolaemia is underdiagnosed and undertreated in the general population: guidance for clinicians to prevent coronary heart disease: consensus statement of the European Atherosclerosis Society"
},
"formula": "dutch_fh",
"formula_expression": "DLCN (Nordestgaard 2013 Table 1) = family + clinical + physical + ldl + dna (per group only the highest); family: first_degree_xanthoma_or_arcus or child_ldl_gt_95th -> 2 else first_degree_premature_chd or first_degree_ldl_gt_95th -> 1; clinical: premature_chd -> 2 else premature_cerebral_or_pvd -> 1; physical: tendon_xanthoma -> 6 else corneal_arcus_age_lt_45 -> 4; ldl mmol/L: >8.5 -> 8, 6.5-8.4 -> 5, 5.0-6.4 -> 3, 4.0-4.9 -> 1; dna causative_mutation_ldlr_apob_pcsk9 -> 8; max 26; definite >8, probable 6-8, possible 3-5, unlikely 0-2",
"max_score": 26,
"score": 14,
"clinical_points": 0,
"classification": "definite",
"dna_points": 0,
"family_points": 0,
"ldl_mmol_l": 9.0,
"ldl_points": 8,
"physical_points": 6
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_dutch_ldl |
provide exactly one of ldl_mmol_l (1-20) or ldl_mg_dl (40-800) (Nordestgaard 2013 DLCN). Returned before settlement; you are not charged. |
| 400 | invalid_flag |
boolean clinical flags must be true or false 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
- 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.
- MEDPED — Apply the Williams 1993 US MEDPED total cholesterol tables and return whether caller-supplied total cholesterol exceeds the cutoff for that age and relative degree. Not a diagnosis.
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.