MAGENT

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.

LIVE $0.005 USDC GET /api/calc/dutch_fh

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

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
Authors
Nordestgaard BG, Chapman MJ, Humphries SE, et al.
Source
Eur Heart J. 2013;34(45):3478-3490
DOI
10.1093/eurheartj/eht273

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

  1. ldl_mmol_l 9.0 > 8.5 → ldl_points 8
  2. tendon_xanthoma true → physical_points 6 (max of the physical group)
  3. 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.

/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

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.

POST /api/calc/dutch_fh Max 25 unit_amount + extra_item_amount * (n - 1) extra $0.002 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 (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"
    }
  ]
}

Open bulk paywall →

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.