Synthetic data only. Never enter patient information; nothing is sent or stored. For clinicians. Not FDA cleared.

Biod clinical tools

Methodology

How the engines are designed, what they will not do, and how you can check them.

CPE-001 v1.1.0CPE-002 v1.0.0CPE-003 v1.2.0CPE-004 v1.0.0CPE-005 v1.0.0CPE-006 v1.0.0CPE-007 v1.0.0CPE-008 v1.0.0CPE-009 v1.0.0CPE-010 v1.0.0CPE-011 v1.0.0

What a Clinical Pattern Engine is

A Clinical Pattern Engine (CPE) turns structured laboratory data and documented clinical context into a named pattern for a physician to review. It applies published criteria as explicit, versioned rules. It does not learn from data, does not estimate probabilities, and does not decide.

Every output carries the rule that produced it, the exact inputs that triggered the rule, the evidence behind it, and a statement that physician adjudication is required.

Design principles

  1. 1Deterministic and explainableSame input, same output. The reasoning is the rule, so there is nothing to interpret but the rule.
  2. 2State is separate from causeWhat the labs show (a functional state or a formal classification) is reported apart from why it may be happening (etiology or context). An antibody never turns a normal thyroid into a hypothyroid one.
  3. 3Safety gates run firstAcute and emergent findings are evaluated before any classification, and urgent alerts are shown above everything else.
  4. 4Suppress rather than guessWhen a validity problem exists (non-fasting insulin, interfering HbA1c, an acute creatinine rise), the affected rules are suppressed and the suppression is logged.
  5. 5No unvalidated numbersNo probability, confidence score or symptom score is shown unless it has been calibrated. Where a validated external model exists (KFRE), the engine reports eligibility and waits for a verified implementation.
  6. 6The physician decidesNext steps are phrased for physician consideration. The engines never name a dose or order a treatment.

Runtime order

Each engine evaluates its rules in a fixed, logged order. Earlier stages can suppress later ones.

Thyroid (CPE-001)

Required context is gathered, then functional state from TSH and FT4 against the laboratory range, then etiology, then context modules (pregnancy, fertility, postpartum, medication, assay), then the decompensation alert (PR-HT-07).

Metabolic (CPE-002)

  1. input validation
  2. scope and suppression
  3. safety alerts
  4. glycemic state
  5. metabolic syndrome
  6. ir associated pattern
  7. clinical corroboration
  8. cross cpe triggers
  9. missing data and trends
  10. output assembly

Kidney (CPE-003)

  1. eligibility
  2. data quality
  3. global safety
  4. abnormality detection
  5. chronicity
  6. albuminuria
  7. gfr estimation
  8. classification
  9. etiology patterns
  10. progression
  11. risk prediction
  12. complications
  13. medication safety
  14. referral
  15. explainability output

Anatomy of a rule

Every rule page shows the same parts, taken from the engine specification itself rather than rewritten:

  • ID and name. A stable identifier such as PR-HT-03 or SAFE-GN-001. IDs are never reused.
  • Condition. The inputs and thresholds that make it fire, including what is required and what is only supportive.
  • Output. The state, alert or flag it sets, and anything it suppresses or must never output.
  • Diagnostic boundary. What the finding does not establish.
  • Evidence. The guideline or reference that supports it.
  • Status. Active, context module, or sandbox (disabled by default).

Evidence classes

The metabolic engine tags every input and rule with an evidence class, so a supporting pattern is never presented as a diagnostic criterion.

E1_GUIDELINE_DIAGNOSTIC
Formal diagnostic or classification criterion recognized by authoritative guidance.
E2_SYNDROME_OR_SCREENING_COMPONENT
Formal syndrome component or guideline-supported screening/risk component.
E3_SUPPORTING_PATTERN
Evidence-supported association usable only as supporting pattern.
E4_CONTEXTUAL_ASSOCIATION
Clinically relevant but nonspecific contextual finding.
E5_SAFETY_OR_DIFFERENTIAL
Safety or differential diagnostic pathway input.
E6_EXCLUDED_FROM_CLASSIFICATION
Stored but excluded from classification logic.

Sandbox rules and governance

Some rules are research candidates, for example fasting-insulin and HOMA-IR thresholds or a longitudinal deterioration warning. They are disabled by default, and their threshold profiles stay empty in production until all of the following exist:

  • external endocrinologist review
  • assay specific threshold governance
  • false positive false negative testing
  • documented versioned approval

Evidence is reviewed at least annually, and every output is built to be auditable: rule trace, evidence trace, input snapshot, suppression trace, physician adjudication record.

Release gates (kidney engine). Before any physician beta the specification requires, among others:

  • Independent nephrologist review and sign-off
  • Unit-test validation of eGFR formulas against NIDDK reference calculator
  • Version-controlled KFRE implementation validation or KFRE feature disabled
  • Acceptance fixtures all passing
  • Medication logic reconciled against current FDA labeling and formulary policy
  • Clinical risk review for alert fatigue and false positive/negative cases

Output guardrails

Outputs are checked for statements the engines must never make. The same list is enforced in the test suite.

  • Autonomous diagnosis
  • CKD confirmed from a single abnormal lab
  • Dialysis required solely from eGFR value
  • Phosphate binders required from one phosphate measurement
  • Calcitriol required from one PTH or vitamin D measurement
  • ESA required from one hemoglobin value
  • Engine-exclusive detection

The thyroid fixtures also forbid strings such as “Always treat”, “Start levothyroxine” and “Hashitoxicosis confirmed”, and the metabolic engine forbids “insulin resistance confirmed” from any single value.

What the validation does and does not show

The reviewed acceptance suites hold 56 synthetic scenarios (15 thyroid, 21 metabolic, 20 kidney); the newer engines add scenarios written by Biod from their specifications. Each asserts the expected state, the rules that must fire or stay quiet, the safety alerts, and the absence of prohibited statements. The eGFR equations are additionally checked against published reference values.

Passing proves the software behaves as specified. It does not measure sensitivity, specificity or outcomes, and it does not replace clinical validation on real patient data. Open the validation dashboard to re-run all scenarios in your browser.

Data handling

The engines are plain JavaScript that runs in your browser. Values you type are not transmitted, stored or logged. Please never enter patient identifiers or protected health information. The cases on this site are synthetic.

Regulatory posture

These tools are clinical decision support intended for licensed clinicians, who are expected to review the basis for every output independently. They are an educational demonstration, are not cleared or approved by the FDA, and are not for patient-facing use or autonomous decisions. Whether and how a given workflow is regulated depends on its intended use; Biod does not claim otherwise.

Version history (thyroid)

Why the thyroid engine moved from 1.0.0 to 1.1.0, straight from its specification.

  • Separated thyroid functional state from suspected etiology.
  • Removed unvalidated numeric confidence scores.
  • Removed reverse T3 from hypothyroidism evaluation.
  • Made FT3 non-routine for hypothyroidism diagnosis.
  • Replaced automatic treatment statements for subclinical hypothyroidism with contextual clinical review.
  • Routed pregnancy, preconception/infertility, postpartum, elderly/frail, coronary disease, and medication-related cases through context modifiers.
  • Reframed hashitoxicosis rule as thyrotoxicosis requiring etiologic differentiation.
  • Removed Zulewski score as a required criterion for central hypothyroidism.
  • Standardized TSH display unit to µIU/mL with numerical equivalence to mIU/L.

Current specifications: CPE-001 1.1.0 · CPE-002 1.0.0 · CPE-003 1.2.0 · CPE-004 1.0.0 · CPE-005 1.0.0 · CPE-006 1.0.0 · CPE-007 1.0.0 · CPE-008 1.0.0 · CPE-009 1.0.0 · CPE-010 1.0.0 · CPE-011 1.0.0. The kidney specification is in its v1.2.0 validation release; the metabolic specification is v1.0.0-draft-canonical.

How the newer engines were built

The thyroid, metabolic and kidney engines were ported from the clinical team's reviewed executable specifications. The other engines started as narrative specifications and were rewritten.

A narrative specification describes what a condition looks like. An executable one says exactly which inputs fire which rule. For the newer engines Biod turned the narrative specifications (May 2026) into rules-first specifications, applying the same guardrails as the reviewed engines: no probabilities, no treatment orders, safety gates first, evidence for every rule. Along the way some statements had to change. They are listed here so nothing is silent.

Iron Deficiency Pattern Engine CPE-004 v1.0.0

  • Removed all numeric confidence values (0.72 to 1.0) from the narrative rules: no calibration exists, so none is shown.
  • Removed the label “engine-exclusive detection” and the claim that conventional medicine misses early iron deficiency.
  • Removed the unsupported “85% sensitivity” statement attached to pica.
  • Replaced “oral iron supplementation” as an output with next steps for physician consideration; the engine never names a product, dose or duration.
  • Replaced the single ferritin threshold of 30 ng/mL with WHO 2020 (<15; <70 with inflammation), a low-ferritin band (<30) and a borderline band (<45, the AGA 2020 cutoff), and made the inflammation adjustment explicit.
  • Softened the “AHA/ACC mandates annual heart-failure iron screening” and “AAD mandates ferritin in hair loss” statements to what those sources support: guideline definitions and consideration of ferritin.
  • Added severe-anemia and overt-GI-bleeding safety gates, an iron-overload pattern, and routing out of patients under 18.

MASLD Pattern Engine CPE-005 v1.0.0

  • Removed the narrative's “indirect MASLD detection” rule that assigned the pattern from metabolic labs and ALT >25 alone. MASLD requires documented steatosis, so the engine now offers a FIB-4 screening opportunity instead and never labels MASLD without steatosis.
  • Removed numeric confidence values and the “Metabolic pattern consistent with MASLD” statement that was issued without steatosis.
  • Replaced the single alcohol assumption with the 2023 nomenclature: MASLD, MetALD and alcohol-related liver disease are separated by intake.
  • Applied the age-adjusted FIB-4 lower cutoff (2.0) for patients aged 65 and over, and added elastography and ELF strata with discordance handling.
  • Replaced “HCC surveillance MANDATED when FIB-4 > 2.67” with surveillance for known cirrhosis only, as AASLD 2023 recommends; FIB-4 alone does not trigger it.
  • Added decompensation, marked-transaminase and synthetic-dysfunction safety gates, and a cardiovascular-risk prompt.
  • Softened the viral-hepatitis rule from “MANDATORY” to a testing prompt consistent with CDC universal HBV and HCV screening recommendations.

Male Hypogonadism Pattern Engine CPE-006 v1.0.0

  • Removed all numeric confidence values and the symptom-keyword scoring from the narrative rules; symptoms only open a screening prompt.
  • Replaced “prolactinoma likely” and “do NOT start TRT” with what the Endocrine Society hyperprolactinemia guideline supports: pituitary imaging should be considered and the cause addressed before testosterone therapy is weighed.
  • Replaced “functional hypogonadism likely” with a list of reversible contributors to address, and removed the unsupported thresholds (HOMA-IR >3.0, BMI >35) in favor of the contributors the Endocrine Society names.
  • Made the diagnostic rule explicit: symptoms plus unequivocally low total testosterone on two separate morning samples (Endocrine Society 2018; AUA 2018 uses <300 ng/dL). One low value is reported as unconfirmed.
  • Added the Endocrine Society's contraindications and cautions to testosterone therapy (fertility desire, prostate or breast cancer, hematocrit above 50%, untreated severe sleep apnea, recent cardiovascular event) as a pre-treatment screen; the engine never recommends starting therapy.
  • Changed the TRT monitoring alert to hematocrit above 54% (stop-and-evaluate level) with an interval prompt for hematocrit and PSA, instead of a flat six-month rule.
  • Free testosterone is calculated with the Vermeulen formula and shown without a threshold, because cutoffs are assay-specific.

Cardiovascular Risk Pattern Engine CPE-007 v1.0.0

  • Removed the in-engine ASCVD risk calculation. The Pooled Cohort Equations are race-specific and the PREVENT equations are long; the engine will not hand-code coefficients it cannot verify. It accepts a 10-year risk entered from a validated calculator and applies the guideline categories to it.
  • Applied the 5% / 7.5% / 20% categories only to Pooled Cohort Equations results. A PREVENT result is reported without a category because the 2018 thresholds were not set for it.
  • Removed the quoted JUPITER percentages (44% and 48%) and the instruction “consider statin” issued from LDL and hs-CRP alone; the engine now lists hs-CRP as a risk enhancer that informs a shared decision.
  • Replaced “1 in 5 Americans” and “statins do NOT lower Lp(a)” style claims with the guideline statements they came from, and softened “Lp(a) measurement for all adults” to the societies that recommend one-time testing.
  • Removed the PCSK9-inhibitor, pelacarsen and olpasiran statements and the apoB < 80 target. Add-on therapy is a physician decision under the 2022 ACC pathway; the engine reports only that the LDL-C threshold is exceeded.
  • Dropped homocysteine as a cardiovascular rule: it is not a recommended risk marker.
  • Added the very-high-risk definition and the 2022 ACC LDL-C thresholds (55 and 70 mg/dL), a coronary-calcium rule, severe hypertriglyceridemia gates and an acute-symptom exit.

Adrenal Insufficiency Pattern Engine CPE-008 v1.0.0

  • Removed all numeric confidence values (0.70 to 0.95) and the “pathognomonic” label for hyperpigmentation; it is a strong clue that prompts testing, not a diagnosis.
  • Replaced the single morning-cortisol cutoff of <10 µg/dL with the Endocrine Society and consensus bands: below 5 µg/dL makes adrenal insufficiency very likely, 5 to under 15 is indeterminate and needs an ACTH-stimulation test, and 15 or above makes it unlikely.
  • Reworded “adrenal insufficiency confirmed” and “primary AI confirmed” as patterns for physician review, with ACTH and, when available, renin and aldosterone as supporting data.
  • Changed the glucocorticoid-exposure rule to the 2024 ESE/Endocrine Society definition: exposure at or above a prednisone equivalent of about 5 mg/day for 3–4 weeks or more, by any route, including high-dose inhaled, injected and topical glucocorticoids.
  • Replaced “DHEA-S below the 2.5th percentile is the earliest marker of adrenal reserve impairment” with “low DHEA-S supports ACTH deficiency”: it is age-dependent and supportive only.
  • Removed the “release as an immune-related adverse event, 5–10% incidence” statistic and kept the testing prompt for patients on checkpoint inhibitors.
  • Emergency text for suspected adrenal crisis now says to treat first and not wait for results, without naming a dose; added a sick-day prompt for known adrenal insufficiency and a link to the thyroid engine (assess the adrenal axis before levothyroxine in central hypothyroidism).

Vitamin B12 and Folate Pattern Engine CPE-009 v1.0.0

  • Removed all numeric confidence values and the unsupported “10–30% of metformin users develop deficiency” and “ADA MANDATORY annual screening” statements. The ADA standards say periodic B12 measurement should be considered in metformin-treated people, especially with anemia or neuropathy; the rule now says that.
  • Corrected the hyperhomocysteinemia rule: the narrative recommended MTHFR genotyping and switching to L-methylfolate. The ACMG practice guideline finds no evidence for MTHFR polymorphism testing, so the engine does not recommend it and points to renal function, hypothyroidism, B6 and drugs instead.
  • Replaced “treat with B12 supplementation” and other treatment wording with next steps for physician consideration. The engine names no product, dose, route or duration.
  • Replaced the 85–95% “confidence” wording on hypersegmented neutrophils and the “most specific CBC finding” claim with a supportive-finding statement.
  • Changed the folate deficiency threshold to the WHO 2015 values (serum 10 nmol/L ≈ 4.4 ng/mL; red-cell 305 nmol/L ≈ 135 ng/mL) and removed the preconception dose range: the rule cites USPSTF Grade A without restating a dose.
  • Added nitrous oxide exposure, a pancytopenia/hemolysis (pseudo-TTP) escalation and a subacute combined degeneration gate, which can be time-sensitive.
  • Made the folate-before-B12 safety alert explicit and standalone, because correcting anemia with folic acid while B12 deficiency is unrecognized can mask progressing neurologic damage.

PCOS Pattern Engine CPE-010 v1.0.0

  • Replaced the 2003 Rotterdam logic with the 2023 International Evidence-based Guideline: in adults, irregular cycles plus hyperandrogenism are enough once other causes are excluded; ultrasound or AMH is needed only when one of those two is missing.
  • Added the adolescent rule (both irregular cycles and hyperandrogenism, no ultrasound, nothing before one year after menarche), which the narrative ignored.
  • Removed all numeric confidence values and the unsupported statements “PCOS accounts for 70–80% of anovulatory infertility” and “OSA 5–10× more prevalent”; screening prompts now rest on the guideline recommendation.
  • Changed the glucose-screening rule from “OGTT mandatory every 1–3 years, HbA1c insufficient” to the 2023 position: assess glycemic status at diagnosis and every 1 to 3 years by risk, with an OGTT preferred and HbA1c or fasting glucose acceptable when it is not feasible.
  • Removed the medroxyprogesterone regimen from the endometrial rule; the engine flags the risk of prolonged amenorrhea and leaves assessment and protection to the physician.
  • Replaced the 17-OHP cutoff of “>200” stated as a diagnosis with an early-follicular-phase prompt for non-classic congenital adrenal hyperplasia.
  • Made hormonal contraception an explicit validity limit, and added hyperprolactinemia, thyroid disease, Cushing features and androgen-secreting tumor red flags as exclusions to complete before a PCOS label.

Anemia Classification Pattern Engine CPE-011 v1.0.0

  • Replaced the weighted confidence score that ranked nine etiologic hypotheses with deterministic rules: each pattern either fires or does not, and shows the values that fired it. No probability or score is displayed.
  • Removed the patient-friendly summary and the PT-BR/emoji alert strings; all output is physician-facing American English.
  • Replaced “consider immediate transfusion” (Hb below 6.5) with an urgent-assessment alert; transfusion decisions belong to the treating physician.
  • Re-expressed the corrected reticulocyte count as the standard reticulocyte production index (corrected count ÷ a maturation factor) and classified the marrow response against an RPI of 2.
  • Aligned thresholds with WHO hemoglobin criteria (including a pregnancy threshold) and with the iron, B12/folate and CKD engines; iron-deficiency, megaloblastic and CKD patterns point to those engines.
  • Added a thrombotic-microangiopathy gate, a leukemia/blasts gate and a mixed-anemia (high RDW, normal MCV) pattern, and removed the “trend alert” that treated a lab trend as a diagnosis.

Review status

  • CPE-001. Specification v1.1.0. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-002. Specification v1.0.0. Sandbox rules are disabled by default. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-003. Specification v1.2.0, validation release. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-004. Executable specification v1.0.0, authored by Biod from the narrative CPE-004 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-005. Executable specification v1.0.0, authored by Biod from the narrative CPE-005 specification and current guidance. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-006. Executable specification v1.0.0, authored by Biod from the narrative CPE-006 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-007. Executable specification v1.0.0, authored by Biod from the narrative CPE-007 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-008. Executable specification v1.0.0, authored by Biod from the narrative CPE-008 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-009. Executable specification v1.0.0, authored by Biod from the narrative CPE-009 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-010. Executable specification v1.0.0, authored by Biod from the narrative CPE-010 specification and current guidelines. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.
  • CPE-011. Executable specification v1.0.0, ported by Biod from the CBC_ANEMIA_001 prototype and rewritten as deterministic rules. Reviewed by Dr. Vinicius Amaral, D.O. Not for clinical production use.

Clinical review recorded: Dr. Vinicius Amaral, D.O., Medical reviewer, 2026-10-03.

Clinical review: Dr. Vinicius Amaral, D.O., Medical reviewer, 2026-10-03.

Common questions

Why not use machine learning?

A trained model can be accurate and still impossible to audit. These engines encode published criteria as explicit rules, so a specialist can read, challenge and version every threshold. Nothing is learned from data, so behavior cannot drift.

Why no probabilities?

A probability needs calibration against outcomes, and none exists for these rules. Showing a number without calibration would imply a precision the evidence does not support, so the engines report states, rules and evidence instead.

What does “deterministic” guarantee?

The same inputs always produce the same output, in your browser or in a test run. It does not guarantee that a rule is clinically right. That is what the open specification and specialist scrutiny are for.

Where does the data go?

Nowhere. The engines run in your browser, and no values are sent to a server or stored. Only anonymous page-interaction events, with no clinical values, are used for site analytics.

The Clinical Intelligence Layer — transforming fragmented clinical information into structured intelligence for clinician review and action.

Contact Biod