@precisa-saude/fhir 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/dist/biomarkers.cjs +67 -0
- package/dist/biomarkers.cjs.map +1 -0
- package/dist/biomarkers.d.cts +226 -0
- package/dist/biomarkers.d.ts +226 -0
- package/dist/biomarkers.js +67 -0
- package/dist/biomarkers.js.map +1 -0
- package/dist/chunk-2EVQ2ESB.cjs +2692 -0
- package/dist/chunk-2EVQ2ESB.cjs.map +1 -0
- package/dist/chunk-2X6MT5KE.cjs +1464 -0
- package/dist/chunk-2X6MT5KE.cjs.map +1 -0
- package/dist/chunk-3ILBFLVQ.cjs +63 -0
- package/dist/chunk-3ILBFLVQ.cjs.map +1 -0
- package/dist/chunk-FDOBUUGY.js +1464 -0
- package/dist/chunk-FDOBUUGY.js.map +1 -0
- package/dist/chunk-GFXKYXHW.cjs +436 -0
- package/dist/chunk-GFXKYXHW.cjs.map +1 -0
- package/dist/chunk-I6H35QXI.js +2692 -0
- package/dist/chunk-I6H35QXI.js.map +1 -0
- package/dist/chunk-N3ZCOLG2.js +63 -0
- package/dist/chunk-N3ZCOLG2.js.map +1 -0
- package/dist/chunk-O25F6G3K.cjs +153 -0
- package/dist/chunk-O25F6G3K.cjs.map +1 -0
- package/dist/chunk-S6VJHXJF.js +153 -0
- package/dist/chunk-S6VJHXJF.js.map +1 -0
- package/dist/chunk-UIDSSWBJ.js +251 -0
- package/dist/chunk-UIDSSWBJ.js.map +1 -0
- package/dist/chunk-VPMT4MRS.js +436 -0
- package/dist/chunk-VPMT4MRS.js.map +1 -0
- package/dist/chunk-Z6YE6FJ4.cjs +251 -0
- package/dist/chunk-Z6YE6FJ4.cjs.map +1 -0
- package/dist/converter-C-QpCcTL.d.ts +99 -0
- package/dist/converter-Dee-qjBV.d.cts +99 -0
- package/dist/converter.cjs +15 -0
- package/dist/converter.cjs.map +1 -0
- package/dist/converter.d.cts +2 -0
- package/dist/converter.d.ts +2 -0
- package/dist/converter.js +15 -0
- package/dist/converter.js.map +1 -0
- package/dist/fhir-types-D9hUzGrc.d.cts +129 -0
- package/dist/fhir-types-D9hUzGrc.d.ts +129 -0
- package/dist/importer.cjs +17 -0
- package/dist/importer.cjs.map +1 -0
- package/dist/importer.d.cts +60 -0
- package/dist/importer.d.ts +60 -0
- package/dist/importer.js +17 -0
- package/dist/importer.js.map +1 -0
- package/dist/index.cjs +540 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +163 -0
- package/dist/index.d.ts +163 -0
- package/dist/index.js +540 -0
- package/dist/index.js.map +1 -0
- package/dist/reference-ranges.cjs +18 -0
- package/dist/reference-ranges.cjs.map +1 -0
- package/dist/reference-ranges.d.cts +106 -0
- package/dist/reference-ranges.d.ts +106 -0
- package/dist/reference-ranges.js +18 -0
- package/dist/reference-ranges.js.map +1 -0
- package/dist/units.cjs +19 -0
- package/dist/units.cjs.map +1 -0
- package/dist/units.d.cts +46 -0
- package/dist/units.d.ts +46 -0
- package/dist/units.js +19 -0
- package/dist/units.js.map +1 -0
- package/dist/validators.cjs +11 -0
- package/dist/validators.cjs.map +1 -0
- package/dist/validators.d.cts +23 -0
- package/dist/validators.d.ts +23 -0
- package/dist/validators.js +11 -0
- package/dist/validators.js.map +1 -0
- package/package.json +105 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/reference-ranges.ts"],"sourcesContent":["/**\n * Biomarker Reference Ranges\n *\n * Single source of truth for biomarker reference ranges used by both\n * web app (for display) and API (for fallback when LLM doesn't extract ranges).\n *\n * Data sources (priority order):\n * 1. Brazilian Government - SBPC/ML (Sociedade Brasileira de Patologia Clínica) guidelines\n * 2. International Standards - WHO, clinical laboratory guidelines\n * 3. Specific Labs - Fleury, Weinmann, Quest, LabCorp (when above unavailable)\n */\n\nimport { getCanonicalUnit as getCanonicalUnitForCode } from './units';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Sex-specific key for reference ranges\n */\nexport type SexKey = 'M' | 'F' | 'all';\n\n/**\n * Reference range configuration for a biomarker\n */\nexport interface BiomarkerReferenceRange {\n max?: number;\n min?: number;\n optimalMax?: number;\n optimalMin?: number;\n unit: string;\n warningMax?: number;\n}\n\n/**\n * A variant of a reference range that applies to a specific sex and/or age group\n */\nexport interface RangeVariant {\n ageMax?: number;\n ageMin?: number;\n range: BiomarkerReferenceRange;\n sex: SexKey;\n}\n\n/**\n * Extended biomarker range definition with sex/age-specific variants\n */\n/**\n * Direction indicates whether exceeding the reference range on one side is benign.\n * - 'range': both above-max and below-min are abnormal (default)\n * - 'higher-better': above-max is normal (e.g., BMC, HDL)\n * - 'lower-better': below-min is normal (e.g., LDL, CRP)\n */\nexport type RangeDirection = 'range' | 'higher-better' | 'lower-better';\n\nexport interface BiomarkerRangeDefinition {\n default: BiomarkerReferenceRange;\n direction?: RangeDirection;\n source?: string;\n variants?: RangeVariant[];\n}\n\n/**\n * User context for personalized reference range lookup\n */\nexport interface ReferenceRangeContext {\n age?: number;\n biologicalSex?: 'M' | 'F';\n}\n\n// =============================================================================\n// BIOMARKER RANGE DEFINITIONS\n// =============================================================================\n\n/**\n * Comprehensive biomarker reference range definitions with sex/age-specific variants\n *\n * Each marker has a default range (used as fallback) and optional variants\n * for sex/age-specific ranges.\n */\nexport const biomarkerRangeDefinitions: Record<string, BiomarkerRangeDefinition> = {\n // =============================================================================\n // LIPIDS\n // =============================================================================\n\n Albumin_Creatinine_Ratio: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/g' },\n },\n\n Adiponectin: {\n default: { max: 26, min: 4, optimalMax: 20, optimalMin: 8, unit: 'mcg/mL' },\n },\n\n ADMA: {\n default: { max: 0.7, min: 0.3, optimalMax: 0.55, optimalMin: 0.3, unit: 'umol/L' },\n },\n\n AFP: {\n default: { max: 10, min: 0, optimalMax: 8, optimalMin: 0, unit: 'ng/mL' },\n },\n\n Albumin_Globulin_Ratio: {\n default: { max: 2.5, min: 1.0, optimalMax: 2.2, optimalMin: 1.2, unit: '' },\n },\n\n Albumin: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.8, optimalMin: 4.0, unit: 'g/dL' },\n source: 'sbpc-ml-2021',\n },\n\n AlkalinePhosphatase: {\n default: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n variants: [\n {\n ageMin: 18,\n range: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 104, min: 35, optimalMax: 90, optimalMin: 40, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n ALT: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 56, min: 7, optimalMax: 35, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 45, min: 7, optimalMax: 30, optimalMin: 10, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n AMH: {\n default: { max: 10.0, min: 1.0, optimalMax: 6.9, optimalMin: 2.0, unit: 'ng/mL' },\n variants: [\n {\n ageMax: 24,\n ageMin: 18,\n range: { max: 13.0, min: 1.5, optimalMax: 10.0, optimalMin: 3.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 30,\n ageMin: 25,\n range: { max: 10.0, min: 1.5, optimalMax: 8.0, optimalMin: 2.5, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 35,\n ageMin: 31,\n range: { max: 8.0, min: 1.0, optimalMax: 6.0, optimalMin: 2.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 40,\n ageMin: 36,\n range: { max: 6.0, min: 0.5, optimalMax: 4.0, optimalMin: 1.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 41,\n range: { max: 3.0, min: 0.1, optimalMax: 2.0, optimalMin: 0.5, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n Ammonia: {\n default: { max: 45, min: 15, optimalMax: 40, optimalMin: 20, unit: 'umol/L' },\n },\n\n AntiThyroglobulin: {\n default: { max: 115, min: 0, optimalMax: 40, optimalMin: 0, unit: 'IU/mL' },\n },\n\n AntiTPO: {\n default: { max: 34, min: 0, optimalMax: 9, optimalMin: 0, unit: 'IU/mL' },\n },\n\n // Aortic valve calcium — no standardized clinical threshold; use mild cutoff\n AorticValveCalcium: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n ApoA1: {\n default: { max: 200, min: 100, optimalMax: 180, optimalMin: 120, unit: 'mg/dL' },\n },\n\n ApoB: {\n default: { max: 90, min: 0, optimalMax: 70, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n },\n\n ApoCIII: {\n default: { max: 10, min: 0, optimalMax: 7, optimalMin: 0, unit: 'mg/dL' },\n },\n\n ApoCIII_ApoA1_Ratio: {\n default: { max: 0.15, min: 0, optimalMax: 0.1, optimalMin: 0, unit: '' },\n },\n\n // =============================================================================\n // THYROID\n // =============================================================================\n\n Omega6_AA: {\n default: { max: 15.0, min: 5.0, optimalMax: 12.0, optimalMin: 7.0, unit: '%' },\n },\n\n AA_EPA_Ratio: {\n default: { max: 15.0, min: 1.0, optimalMax: 5.0, optimalMin: 1.5, unit: '' },\n direction: 'lower-better',\n },\n\n Arsenic: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mcg/L' },\n },\n\n AST: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 40, min: 10, optimalMax: 30, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 32, min: 9, optimalMax: 25, optimalMin: 10, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n Basophils: {\n default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n },\n\n Basophils_Abs: {\n default: { max: 0.1, min: 0, optimalMax: 0.05, optimalMin: 0, unit: 'K/uL' },\n },\n\n // =============================================================================\n // HEMATOLOGY - CBC\n // =============================================================================\n\n Bicarbonate: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n },\n\n BilirubinDirect: {\n default: { max: 0.3, min: 0, optimalMax: 0.2, optimalMin: 0, unit: 'mg/dL' },\n },\n\n BilirubinIndirect: {\n default: { max: 0.8, min: 0, optimalMax: 0.6, optimalMin: 0, unit: 'mg/dL' },\n },\n\n BilirubinTotal: {\n default: { max: 1.2, min: 0.1, optimalMax: 0.9, optimalMin: 0.2, unit: 'mg/dL' },\n },\n\n BNP: {\n default: { max: 100, min: 0, optimalMax: 50, optimalMin: 0, unit: 'pg/mL' },\n },\n\n BUN_Creatinine_Ratio: {\n default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: '' },\n },\n\n CA125: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/mL' },\n },\n\n CA199: {\n default: { max: 37, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/mL' },\n },\n\n // CAC: Agatston classification — 0=none, 1-99=mild, 100-399=moderate, 400+=severe\n // max=99 so only moderate+ scores (≥100) flag as ANORMAL; optimalMax=0 (zero is ideal)\n CAC: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n // Per-vessel scores (hidden) — no standardized thresholds, use same mild cutoff\n CAC_LAD: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n CAC_LCX: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n CAC_LMA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n CAC_Percentile: {\n default: { max: 50, min: 0, optimalMax: 25, optimalMin: 0, unit: '%', warningMax: 75 },\n direction: 'lower-better',\n },\n\n CAC_RCA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n },\n\n Cadmium: {\n default: { max: 1.2, min: 0, optimalMax: 0.5, optimalMin: 0, unit: 'mcg/L' },\n },\n\n Calcium: {\n default: { max: 10.5, min: 8.5, optimalMax: 10.0, optimalMin: 9.0, unit: 'mg/dL' },\n },\n\n CEA: {\n default: { max: 3.0, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n },\n\n CK: {\n default: { max: 190, min: 30, optimalMax: 170, optimalMin: 40, unit: 'U/L' },\n variants: [\n { sex: 'F', range: { max: 170, min: 30, optimalMax: 150, optimalMin: 40, unit: 'U/L' } },\n ],\n },\n\n Chloride: {\n default: { max: 106, min: 98, optimalMax: 105, optimalMin: 100, unit: 'mEq/L' },\n },\n\n Cholesterol: {\n default: { max: 200, min: 0, optimalMax: 180, optimalMin: 0, unit: 'mg/dL' },\n source: 'sbc-lipids-2017',\n },\n\n Cholesterol_HDL_Ratio: {\n // Lower is better - Function Health reference: <= 3.5\n default: { max: 5.0, min: 0, optimalMax: 3.5, optimalMin: 0, unit: '' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 5.0, min: 0, optimalMax: 4.0, optimalMin: 0, unit: '' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 4.5, min: 0, optimalMax: 3.5, optimalMin: 0, unit: '' },\n sex: 'F',\n },\n ],\n },\n\n CO2: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n },\n\n Copper: {\n default: { max: 175, min: 70, optimalMax: 150, optimalMin: 85, unit: 'mcg/dL' },\n },\n\n CoQ10: {\n default: { max: 1.5, min: 0.5, optimalMax: 1.3, optimalMin: 0.7, unit: 'mg/L' },\n },\n\n Cortisol: {\n default: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: 'mcg/dL' },\n },\n\n CortisolFree: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: 'mcg/dL' },\n },\n\n CPeptide: {\n default: { max: 3.9, min: 0.8, optimalMax: 3.0, optimalMin: 1.0, unit: 'ng/mL' },\n },\n\n Creatinine: {\n default: { max: 1.2, min: 0.6, optimalMax: 1.0, optimalMin: 0.7, unit: 'mg/dL' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 1.3, min: 0.7, optimalMax: 1.1, optimalMin: 0.8, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.1, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n CRP: {\n default: { max: 3.0, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'mg/L' },\n direction: 'lower-better',\n },\n\n CystatinC: {\n default: { max: 1.0, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: 'mg/L' },\n },\n\n DDimer: {\n default: { max: 500, min: 0, optimalMax: 250, optimalMin: 0, unit: 'ng/mL' },\n },\n\n // =============================================================================\n // METABOLIC PANEL\n // =============================================================================\n\n Omega3_DHA: {\n default: { max: 8.0, min: 2.0, optimalMax: 6.5, optimalMin: 3.5, unit: '%' },\n },\n\n DHEAS: {\n default: { max: 500, min: 100, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n variants: [\n {\n ageMax: 39,\n ageMin: 18,\n range: { max: 640, min: 280, optimalMax: 500, optimalMin: 300, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMax: 59,\n ageMin: 40,\n range: { max: 520, min: 120, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMin: 60,\n range: { max: 290, min: 42, optimalMax: 220, optimalMin: 80, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMax: 39,\n ageMin: 18,\n range: { max: 380, min: 65, optimalMax: 300, optimalMin: 100, unit: 'mcg/dL' },\n sex: 'F',\n },\n {\n ageMax: 59,\n ageMin: 40,\n range: { max: 240, min: 32, optimalMax: 180, optimalMin: 60, unit: 'mcg/dL' },\n sex: 'F',\n },\n {\n ageMin: 60,\n range: { max: 140, min: 18, optimalMax: 100, optimalMin: 30, unit: 'mcg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Omega3_DPA: {\n default: { max: 2.0, min: 0.3, optimalMax: 1.5, optimalMin: 0.5, unit: '%' },\n },\n\n eGFR: {\n default: { max: 120, min: 90, optimalMax: 120, optimalMin: 90, unit: 'mL/min/1.73m²' },\n variants: [\n {\n ageMin: 60,\n range: { max: 90, min: 60, optimalMax: 90, optimalMin: 60, unit: 'mL/min/1.73m²' },\n sex: 'all',\n },\n ],\n },\n\n Eosinophils: {\n default: { max: 5, min: 0, optimalMax: 4, optimalMin: 1, unit: '%' },\n direction: 'lower-better',\n },\n\n Eosinophils_Abs: {\n default: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: 'K/uL' },\n },\n\n Omega3_EPA: {\n default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1.0, unit: '%' },\n },\n\n EPADPADHA: {\n default: { max: 10.0, min: 3.0, optimalMax: 9.0, optimalMin: 5.0, unit: '%' },\n },\n\n ESR: {\n default: { max: 20, min: 0, optimalMax: 10, optimalMin: 0, unit: 'mm/hr' },\n },\n\n Estradiol: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'pg/mL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 40, min: 10, optimalMax: 30, optimalMin: 15, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 400, min: 30, optimalMax: 300, optimalMin: 50, unit: 'pg/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'pg/mL' },\n sex: 'F',\n },\n ],\n },\n\n F2Isoprostanes: {\n default: { max: 86, min: 0, optimalMax: 60, optimalMin: 0, unit: 'pg/mL' },\n },\n\n Ferritin: {\n default: { max: 300, min: 20, optimalMax: 150, optimalMin: 50, unit: 'ng/mL' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 400, min: 30, optimalMax: 200, optimalMin: 50, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 150, min: 15, optimalMax: 100, optimalMin: 30, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 300, min: 30, optimalMax: 150, optimalMin: 50, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n Fibrinogen: {\n default: { max: 400, min: 200, optimalMax: 350, optimalMin: 250, unit: 'mg/dL' },\n },\n\n FolicAcid: {\n default: { max: 20, min: 3, optimalMax: 15, optimalMin: 5, unit: 'ng/mL' },\n },\n\n // =============================================================================\n // LIVER FUNCTION\n // =============================================================================\n\n FSH: {\n default: { max: 12.4, min: 1.5, optimalMax: 10.0, optimalMin: 3.0, unit: 'mIU/mL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 12.4, min: 1.5, optimalMax: 8.0, optimalMin: 1.5, unit: 'mIU/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 12.5, min: 3.5, optimalMax: 10.0, optimalMin: 3.5, unit: 'mIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 134.8, min: 25.8, optimalMax: 80.0, optimalMin: 25.8, unit: 'mIU/mL' },\n sex: 'F',\n },\n ],\n },\n\n GGT: {\n default: { max: 55, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/L' },\n direction: 'lower-better',\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 61, min: 8, optimalMax: 40, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 36, min: 5, optimalMax: 25, optimalMin: 8, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n Ghrelin: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n },\n\n Globulin: {\n default: { max: 3.5, min: 2.0, optimalMax: 3.2, optimalMin: 2.3, unit: 'g/dL' },\n },\n\n Glucose: {\n default: { max: 100, min: 70, optimalMax: 90, optimalMin: 70, unit: 'mg/dL' },\n source: 'sbd-diabetes-2024',\n },\n\n GlycoMark: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'mcg/mL' },\n },\n\n GrowthHormone: {\n default: { max: 5, min: 0, optimalMax: 3, optimalMin: 0, unit: 'ng/mL' },\n },\n\n HbA1c: {\n default: { max: 5.7, min: 4.0, optimalMax: 5.3, optimalMin: 4.5, unit: '%' },\n source: 'sbd-diabetes-2024',\n },\n\n Hct: {\n default: { max: 50, min: 36, optimalMax: 48, optimalMin: 40, unit: '%' },\n variants: [\n {\n ageMin: 18,\n range: { max: 54, min: 40, optimalMax: 50, optimalMin: 42, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 48, min: 36, optimalMax: 45, optimalMin: 38, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n HDL: {\n default: { max: 60, min: 40, optimalMax: 60, optimalMin: 50, unit: 'mg/dL' },\n direction: 'higher-better',\n source: 'sbc-lipids-2017',\n variants: [\n {\n ageMin: 18,\n range: { max: 60, min: 40, optimalMax: 60, optimalMin: 45, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 60, min: 50, optimalMax: 60, optimalMin: 55, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n HDL_Large: {\n // HDL Large: higher is better\n // Quest Ion Mobility reference: Male 4334-10815, Female 5038-17886 nmol/L, optimal >6729\n default: { max: 17886, min: 4334, optimalMax: 17886, optimalMin: 6729, unit: 'nmol/L' },\n direction: 'higher-better',\n },\n\n // =============================================================================\n // INFLAMMATION\n // =============================================================================\n\n Hgb: {\n default: { max: 17.5, min: 12.0, optimalMax: 16.0, optimalMin: 13.5, unit: 'g/dL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 17.5, min: 13.5, optimalMax: 16.5, optimalMin: 14.0, unit: 'g/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 15.5, min: 12.0, optimalMax: 14.5, optimalMin: 12.5, unit: 'g/dL' },\n sex: 'F',\n },\n ],\n },\n\n HOMA_IR: {\n default: { max: 2.5, min: 0, optimalMax: 1.5, optimalMin: 0, unit: '' },\n direction: 'lower-better',\n },\n\n Homocysteine: {\n default: { max: 15, min: 4, optimalMax: 10, optimalMin: 5, unit: 'umol/L' },\n direction: 'lower-better',\n },\n\n IGF1: {\n default: { max: 350, min: 100, optimalMax: 300, optimalMin: 150, unit: 'ng/mL' },\n },\n\n // =============================================================================\n // METABOLIC\n // =============================================================================\n\n ImmatureGranulocytes: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n },\n\n Insulin: {\n default: { max: 25, min: 2, optimalMax: 8, optimalMin: 3, unit: 'µIU/mL' },\n },\n\n Iron: {\n default: { max: 170, min: 60, optimalMax: 140, optimalMin: 80, unit: 'mcg/dL' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 175, min: 65, optimalMax: 150, optimalMin: 80, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 170, min: 50, optimalMax: 130, optimalMin: 60, unit: 'mcg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Lactate: {\n default: { max: 2.2, min: 0.5, optimalMax: 1.8, optimalMin: 0.7, unit: 'mmol/L' },\n },\n\n LDL: {\n default: { max: 100, min: 0, optimalMax: 70, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2017',\n },\n\n LDL_Medium: {\n // LDL Medium (LDL Média): lower is better\n // Quest Ion Mobility reference: Male 167-485, Female 121-397 nmol/L, optimal <215\n default: { max: 485, min: 121, optimalMax: 215, optimalMin: 121, unit: 'nmol/L' },\n direction: 'lower-better',\n },\n\n LDL_ParticleNumber: {\n // LDL Particle Number: lower is better\n // Quest Ion Mobility reference: 1016-2185 nmol/L, optimal <1138\n default: { max: 2185, min: 1016, optimalMax: 1138, optimalMin: 1016, unit: 'nmol/L' },\n direction: 'lower-better',\n },\n\n LDL_Peak_Size: {\n // LDL Peak Size: higher is better (larger particles less atherogenic)\n // Quest Ion Mobility reference: optimal >222.9 Å (22.29 nm)\n default: { max: 250.0, min: 217.4, optimalMax: 250.0, optimalMin: 222.9, unit: 'Å' },\n direction: 'higher-better',\n },\n\n // =============================================================================\n // IRON STUDIES\n // =============================================================================\n\n LDL_Small: {\n // LDL Small (LDL Pequena): lower is better (small dense LDL is most atherogenic)\n // Quest Ion Mobility reference: Male 123-441, Female 126-382 nmol/L, optimal <142\n default: { max: 441, min: 123, optimalMax: 142, optimalMin: 123, unit: 'nmol/L' },\n direction: 'lower-better',\n },\n\n Lead: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: 'mcg/dL' },\n },\n\n Leptin: {\n default: { max: 15, min: 2, optimalMax: 12, optimalMin: 3, unit: 'ng/mL' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 10, min: 1, optimalMax: 8, optimalMin: 2, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 25, min: 4, optimalMax: 18, optimalMin: 5, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n LH: {\n default: { max: 8.6, min: 1.7, optimalMax: 8.0, optimalMin: 2.0, unit: 'mIU/mL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 8.6, min: 1.7, optimalMax: 6.0, optimalMin: 1.7, unit: 'mIU/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 12.6, min: 2.4, optimalMax: 10.0, optimalMin: 2.4, unit: 'mIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 58.5, min: 7.7, optimalMax: 40.0, optimalMin: 10.0, unit: 'mIU/mL' },\n sex: 'F',\n },\n ],\n },\n\n Omega6_LA: {\n default: { max: 35.0, min: 15.0, optimalMax: 28.0, optimalMin: 18.0, unit: '%' },\n },\n\n // =============================================================================\n // VITAMINS\n // =============================================================================\n\n Lipoprotein_a: {\n default: { max: 75, min: 0, optimalMax: 30, optimalMin: 0, unit: 'nmol/L' },\n direction: 'lower-better',\n },\n\n Lymphocytes: {\n default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: '%' },\n },\n\n Lymphocytes_Abs: {\n default: { max: 4.0, min: 1.0, optimalMax: 3.0, optimalMin: 1.5, unit: 'K/uL' },\n },\n\n Magnesium: {\n default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: 'mg/dL' },\n },\n\n Magnesium_RBC: {\n default: { max: 6.8, min: 4.0, optimalMax: 6.0, optimalMin: 4.5, unit: 'mg/dL' },\n },\n\n MCH: {\n default: { max: 33, min: 27, optimalMax: 32, optimalMin: 28, unit: 'pg' },\n },\n\n MCHC: {\n default: { max: 36, min: 32, optimalMax: 35, optimalMin: 33, unit: 'g/dL' },\n },\n\n MCV: {\n default: { max: 100, min: 80, optimalMax: 98, optimalMin: 82, unit: 'fL' },\n },\n\n Mercury: {\n default: { max: 10, min: 0, optimalMax: 5, optimalMin: 0, unit: 'mcg/L' },\n },\n\n Microalbumin: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n },\n\n // =============================================================================\n // HORMONES\n // =============================================================================\n\n MMA: {\n default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: 'nmol/L' },\n },\n\n Monocytes: {\n default: { max: 8, min: 2, optimalMax: 7, optimalMin: 3, unit: '%' },\n },\n\n Monocytes_Abs: {\n default: { max: 0.8, min: 0.2, optimalMax: 0.7, optimalMin: 0.3, unit: 'K/uL' },\n },\n\n MPV: {\n default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8.0, unit: 'fL' },\n },\n\n Myeloperoxidase: {\n default: { max: 420, min: 0, optimalMax: 300, optimalMin: 0, unit: 'pmol/L' },\n },\n\n // WBC Differential (%)\n Neutrophils: {\n default: { max: 70, min: 40, optimalMax: 65, optimalMin: 50, unit: '%' },\n },\n\n // WBC Differential (Absolute)\n Neutrophils_Abs: {\n default: { max: 8.0, min: 1.5, optimalMax: 6.0, optimalMin: 2.0, unit: 'K/uL' },\n },\n\n NonHDL_Cholesterol: {\n default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n },\n\n NRBC: {\n default: { max: 0, min: 0, optimalMax: 0, optimalMin: 0, unit: '/100WBC' },\n },\n\n NTproBNP: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'pg/mL' },\n },\n\n Oleic_Acid: {\n default: { max: 25.0, min: 15.0, optimalMax: 22.0, optimalMin: 18.0, unit: '%' },\n },\n\n Omega3_Index: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n },\n\n Omega3_Total: {\n default: { max: 12.0, min: 3.0, optimalMax: 10.0, optimalMin: 5.5, unit: '%' },\n },\n\n Omega6_Total: {\n default: { max: 40.0, min: 20.0, optimalMax: 35.0, optimalMin: 25.0, unit: '%' },\n },\n\n Omega6_Omega3_Ratio: {\n default: { max: 10.0, min: 1.0, optimalMax: 4.0, optimalMin: 1.0, unit: '' },\n direction: 'lower-better',\n },\n\n // =============================================================================\n // TUMOR MARKERS\n // =============================================================================\n\n OmegaCheck: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n },\n\n Palmitic_Acid: {\n default: { max: 30.0, min: 20.0, optimalMax: 27.0, optimalMin: 22.0, unit: '%' },\n },\n\n Phosphorus: {\n default: { max: 4.5, min: 2.5, optimalMax: 4.0, optimalMin: 3.0, unit: 'mg/dL' },\n },\n\n Platelets: {\n default: { max: 400, min: 150, optimalMax: 350, optimalMin: 180, unit: 'K/uL' },\n },\n\n Potassium: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.6, optimalMin: 3.8, unit: 'mEq/L' },\n },\n\n // =============================================================================\n // CARDIAC MARKERS\n // =============================================================================\n\n Prealbumin: {\n default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: 'mg/dL' },\n },\n\n Progesterone: {\n default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: 'ng/mL' },\n },\n\n Prolactin: {\n default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: 'ng/mL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 29, min: 2, optimalMax: 23, optimalMin: 4, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n PSA: {\n default: { max: 4.0, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 2.5, min: 0, optimalMax: 1.5, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 59,\n ageMin: 50,\n range: { max: 3.5, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 69,\n ageMin: 60,\n range: { max: 4.5, min: 0, optimalMax: 3.0, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 70,\n range: { max: 6.5, min: 0, optimalMax: 4.0, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n ],\n },\n\n RBC: {\n default: { max: 5.5, min: 4.0, optimalMax: 5.2, optimalMin: 4.3, unit: 'M/uL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 5.9, min: 4.5, optimalMax: 5.5, optimalMin: 4.7, unit: 'M/uL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 5.2, min: 4.0, optimalMax: 5.0, optimalMin: 4.2, unit: 'M/uL' },\n sex: 'F',\n },\n ],\n },\n\n // =============================================================================\n // URINALYSIS\n // =============================================================================\n\n RDW: {\n default: { max: 14.5, min: 11.5, optimalMax: 14.0, optimalMin: 12.0, unit: '%' },\n },\n\n Reticulocytes: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: '%' },\n },\n\n SDMA: {\n default: { max: 0.6, min: 0.3, optimalMax: 0.5, optimalMin: 0.3, unit: 'umol/L' },\n },\n\n Selenium: {\n default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: 'mcg/L' },\n },\n\n SHBG: {\n default: { max: 54, min: 18, optimalMax: 50, optimalMin: 20, unit: 'nmol/L' },\n variants: [\n {\n ageMin: 18,\n range: { max: 54, min: 18, optimalMax: 45, optimalMin: 20, unit: 'nmol/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 122, min: 24, optimalMax: 90, optimalMin: 30, unit: 'nmol/L' },\n sex: 'F',\n },\n ],\n },\n\n Sodium: {\n default: { max: 145, min: 136, optimalMax: 143, optimalMin: 138, unit: 'mEq/L' },\n },\n\n // =============================================================================\n // KIDNEY FUNCTION\n // =============================================================================\n\n SpecificGravity_Urine: {\n default: { max: 1.03, min: 1.005, optimalMax: 1.025, optimalMin: 1.01, unit: 'SG' },\n },\n\n Stearic_Acid: {\n default: { max: 14.0, min: 8.0, optimalMax: 12.0, optimalMin: 10.0, unit: '%' },\n },\n\n T3Free: {\n default: { max: 4.2, min: 2.3, optimalMax: 3.8, optimalMin: 2.8, unit: 'pg/mL' },\n },\n\n // =============================================================================\n // OMEGA FATTY ACIDS\n // =============================================================================\n\n T3Reverse: {\n default: { max: 27, min: 9, optimalMax: 22, optimalMin: 12, unit: 'ng/dL' },\n },\n\n T4Free: {\n default: { max: 1.8, min: 0.8, optimalMax: 1.5, optimalMin: 1.0, unit: 'ng/dL' },\n },\n\n T4Total: {\n default: { max: 12.0, min: 4.5, optimalMax: 10.0, optimalMin: 6.0, unit: 'ug/dL' },\n },\n\n Testosterone: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 50,\n range: { max: 800, min: 200, optimalMax: 650, optimalMin: 400, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 70, min: 15, optimalMax: 50, optimalMin: 20, unit: 'ng/dL' },\n sex: 'F',\n },\n ],\n },\n\n TestosteroneBioavailable: {\n default: { max: 200, min: 50, optimalMax: 150, optimalMin: 80, unit: 'ng/dL' },\n },\n\n // TestosteroneFree - using direct immunoassay ranges (Quest/LabCorp standard)\n // Previous values (9.3-26.5 pg/mL) were based on equilibrium dialysis method\n TestosteroneFree: {\n default: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: 'pg/mL' },\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMin: 50,\n range: { max: 130, min: 30, optimalMax: 100, optimalMin: 40, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 5.0, min: 0.2, optimalMax: 3.0, optimalMin: 0.5, unit: 'pg/mL' },\n sex: 'F',\n },\n ],\n },\n\n TIBC: {\n default: { max: 400, min: 250, optimalMax: 370, optimalMin: 280, unit: 'mcg/dL' },\n },\n\n TotalProtein: {\n default: { max: 8.3, min: 6.0, optimalMax: 7.8, optimalMin: 6.5, unit: 'g/dL' },\n },\n\n Trans_Fat_Index: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n },\n\n Transferrin: {\n default: { max: 360, min: 200, optimalMax: 340, optimalMin: 220, unit: 'mg/dL' },\n },\n\n TransferrinSaturation: {\n default: { max: 50, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n variants: [\n {\n ageMin: 18,\n range: { max: 55, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n Triglycerides: {\n default: { max: 150, min: 0, optimalMax: 100, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2017',\n },\n\n TroponinI: {\n default: { max: 0.04, min: 0, optimalMax: 0.02, optimalMin: 0, unit: 'ng/mL' },\n },\n\n TroponinT: {\n default: { max: 14, min: 0, optimalMax: 10, optimalMin: 0, unit: 'ng/L' },\n },\n\n TSH: {\n default: { max: 4.0, min: 0.4, optimalMax: 2.5, optimalMin: 1.0, unit: 'µIU/mL' },\n source: 'sbem-thyroid-2013',\n variants: [\n {\n ageMin: 65,\n range: { max: 6.0, min: 0.4, optimalMax: 4.0, optimalMin: 1.0, unit: 'µIU/mL' },\n sex: 'all',\n },\n ],\n },\n\n Urea: {\n default: { max: 20, min: 7, optimalMax: 16, optimalMin: 10, unit: 'mg/dL' },\n },\n\n UricAcid: {\n default: { max: 7.0, min: 2.5, optimalMax: 5.5, optimalMin: 3.0, unit: 'mg/dL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 7.0, min: 3.4, optimalMax: 6.0, optimalMin: 4.0, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 6.0, min: 2.4, optimalMax: 5.0, optimalMin: 3.0, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Urobilinogen_Urine: {\n default: { max: 1.0, min: 0.1, optimalMax: 1.0, optimalMin: 0.1, unit: 'mg/dL' },\n },\n\n // =============================================================================\n // ADVANCED CARDIOVASCULAR\n // =============================================================================\n\n pH_Urine: {\n default: { max: 8.0, min: 4.5, optimalMax: 7.0, optimalMin: 5.5, unit: 'pH' },\n },\n\n HyalineCasts_Urine: {\n default: { max: 2, min: 0, optimalMax: 1, optimalMin: 0, unit: '/LPF' },\n },\n\n RBC_Urine: {\n default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: '/HPF' },\n },\n\n SquamousEpithelial_Urine: {\n default: { max: 15, min: 0, optimalMax: 5, optimalMin: 0, unit: '/HPF' },\n },\n\n Leukocytes_Urine: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: '/HPF' },\n },\n\n Folate: {\n default: { max: 20, min: 3.9, optimalMax: 17, optimalMin: 5, unit: 'ng/mL' },\n },\n\n VitaminA: {\n default: { max: 100, min: 20, optimalMax: 80, optimalMin: 30, unit: 'mcg/dL' },\n },\n\n // =============================================================================\n // MINERALS\n // =============================================================================\n\n VitaminB1: {\n default: { max: 180, min: 70, optimalMax: 150, optimalMin: 80, unit: 'nmol/L' },\n },\n\n VitaminB12: {\n default: { max: 900, min: 200, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n source: 'sbpc-ml-2021',\n },\n\n VitaminB6: {\n default: { max: 50, min: 5, optimalMax: 40, optimalMin: 10, unit: 'ng/mL' },\n },\n\n VitaminC: {\n default: { max: 2.0, min: 0.4, optimalMax: 1.5, optimalMin: 0.6, unit: 'mg/dL' },\n },\n\n // =============================================================================\n // HEAVY METALS\n // =============================================================================\n\n VitaminD: {\n default: { max: 100, min: 30, optimalMax: 70, optimalMin: 40, unit: 'ng/mL' },\n source: 'sbem-thyroid-2013',\n },\n\n VitaminD_1_25: {\n default: { max: 72, min: 18, optimalMax: 60, optimalMin: 25, unit: 'pg/mL' },\n },\n\n VitaminE: {\n default: { max: 17, min: 5.5, optimalMax: 14, optimalMin: 7, unit: 'mg/L' },\n },\n\n VLDL: {\n default: { max: 40, min: 5, optimalMax: 30, optimalMin: 10, unit: 'mg/dL' },\n },\n\n // =============================================================================\n // OTHER\n // =============================================================================\n\n WBC: {\n default: { max: 11.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.0, unit: 'K/uL' },\n },\n\n Zinc: {\n default: { max: 120, min: 60, optimalMax: 100, optimalMin: 70, unit: 'mcg/dL' },\n },\n\n // =============================================================================\n // BODY COMPOSITION (DXA)\n // =============================================================================\n\n AndroidFatPct: {\n default: { max: 35, min: 10, optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 30, min: 10, optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 42, min: 15, optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n AndroidGynoidRatio: {\n default: { max: 1.2, min: 0.5, optimalMax: 1.0, optimalMin: 0.6, unit: '' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 1.2, min: 0.6, optimalMax: 1.0, optimalMin: 0.7, unit: '' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.0, min: 0.4, optimalMax: 0.8, optimalMin: 0.5, unit: '' },\n sex: 'F',\n },\n ],\n },\n\n BMC: {\n default: { max: 3.5, min: 2.0, optimalMax: 3.2, optimalMin: 2.3, unit: 'kg' },\n direction: 'higher-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 4.0, min: 2.5, optimalMax: 3.5, optimalMin: 2.8, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 3.0, min: 1.8, optimalMax: 2.7, optimalMin: 2.0, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n // BodyFatPct — Age-bracketed ranges from Gallagher et al. Am J Clin Nutr 2000;72:694-701\n // (PMID: 10966886) and ACSM Guidelines for Exercise Testing, 11th Ed (2021)\n BodyFatPct: {\n default: { max: 30, min: 10, optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n variants: [\n // Men — age brackets\n {\n ageMax: 25,\n ageMin: 18,\n range: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 26, min: 5, optimalMax: 21, optimalMin: 11, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 27, min: 5, optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 28, min: 5, optimalMax: 23, optimalMin: 13, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 56,\n range: { max: 29, min: 5, optimalMax: 24, optimalMin: 14, unit: '%' },\n sex: 'M',\n },\n // Women — age brackets\n {\n ageMax: 25,\n ageMin: 18,\n range: { max: 32, min: 13, optimalMax: 28, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 33, min: 13, optimalMax: 29, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 34, min: 13, optimalMax: 30, optimalMin: 19, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 35, min: 13, optimalMax: 31, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n {\n ageMin: 56,\n range: { max: 36, min: 13, optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n FatFreeMass: {\n default: { max: 80, min: 40, optimalMax: 70, optimalMin: 45, unit: 'kg' },\n direction: 'higher-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 90, min: 50, optimalMax: 80, optimalMin: 55, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 60, min: 35, optimalMax: 52, optimalMin: 38, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n FatMass: {\n default: { max: 30, min: 5, optimalMax: 20, optimalMin: 8, unit: 'kg' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 25, min: 5, optimalMax: 18, optimalMin: 7, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 30, min: 8, optimalMax: 22, optimalMin: 10, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n GynoidFatPct: {\n default: { max: 45, min: 15, optimalMax: 35, optimalMin: 20, unit: '%' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 35, min: 12, optimalMax: 28, optimalMin: 15, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 50, min: 20, optimalMax: 40, optimalMin: 25, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n LeanMass: {\n default: { max: 75, min: 35, optimalMax: 65, optimalMin: 40, unit: 'kg' },\n direction: 'higher-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 55, min: 30, optimalMax: 48, optimalMin: 35, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n TotalMass: {\n default: { max: 100, min: 50, optimalMax: 85, optimalMin: 55, unit: 'kg' },\n variants: [\n {\n ageMin: 18,\n range: { max: 100, min: 55, optimalMax: 90, optimalMin: 60, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n VATMass: {\n default: { max: 1.5, min: 0, optimalMax: 0.8, optimalMin: 0, unit: 'kg' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 1.5, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n VATVolume: {\n default: { max: 1500, min: 0, optimalMax: 800, optimalMin: 0, unit: 'cm³' },\n direction: 'lower-better',\n variants: [\n {\n ageMin: 18,\n range: { max: 1500, min: 0, optimalMax: 1000, optimalMin: 0, unit: 'cm³' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1000, min: 0, optimalMax: 500, optimalMin: 0, unit: 'cm³' },\n sex: 'F',\n },\n ],\n },\n\n // =============================================================================\n // BONE DENSITOMETRY (DXA)\n // =============================================================================\n\n BMD_Total: {\n default: { max: 1.4, min: 0.9, optimalMax: 1.3, optimalMin: 1.0, unit: 'g/cm²' },\n direction: 'higher-better',\n },\n\n TScore_Total: {\n default: { max: 4.0, min: -1.0, optimalMax: 2.0, optimalMin: -0.5, unit: '' },\n direction: 'higher-better',\n },\n\n ZScore_Total: {\n default: { max: 2.0, min: -2.0, optimalMax: 1.0, optimalMin: -1.0, unit: '' },\n direction: 'higher-better',\n },\n\n // =============================================================================\n // MISSING LAB RANGES\n // =============================================================================\n\n Amylase: {\n default: { max: 100, min: 28, optimalMax: 90, optimalMin: 35, unit: 'U/L' },\n },\n\n Creatinine_Urine: {\n default: { max: 300, min: 20, optimalMax: 250, optimalMin: 40, unit: 'mg/dL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 300, min: 40, optimalMax: 260, optimalMin: 60, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 220, min: 20, optimalMax: 180, optimalMin: 40, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n IgA: {\n default: { max: 400, min: 70, optimalMax: 350, optimalMin: 100, unit: 'mg/dL' },\n },\n\n Lipase: {\n default: { max: 60, min: 0, optimalMax: 50, optimalMin: 10, unit: 'U/L' },\n },\n\n Microalbumin_Urine: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n },\n\n PSA_Free: {\n default: { max: 1.5, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'ng/mL' },\n },\n\n PSA_FreeRatio: {\n default: { max: 100, min: 25, optimalMax: 100, optimalMin: 30, unit: '%' },\n },\n\n // BMI - WHO classification: 18.5–24.9 normal, 25–29.9 overweight, ≥30 obese\n BMI: {\n default: { max: 30, min: 18.5, optimalMax: 24.9, optimalMin: 18.5, unit: 'kg/m2' },\n },\n\n // eAG - Estimated Average Glucose, derived from HbA1c (ADAG study)\n eAG: {\n default: { max: 154, min: 70, optimalMax: 126, optimalMin: 70, unit: 'mg/dL' },\n },\n\n // INR - International Normalized Ratio (non-anticoagulated patients)\n INR: {\n default: { max: 1.2, min: 0.8, optimalMax: 1.1, optimalMin: 0.9, unit: 'ratio' },\n },\n\n // Prothrombin Time\n ProthrombinTime: {\n default: { max: 13.5, min: 11, optimalMax: 13, optimalMin: 11, unit: 'seconds' },\n },\n\n // DHT - Dihydrotestosterone (adult male reference; female values are much lower)\n DHT: {\n default: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: 'ng/dL' },\n variants: [\n {\n ageMin: 18,\n range: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 22, min: 4, optimalMax: 22, optimalMin: 4, unit: 'ng/dL' },\n sex: 'F',\n },\n ],\n },\n\n // Total IgE - higher values suggest atopy/allergic sensitization\n IgE_Total: {\n default: { max: 100, min: 0, optimalMax: 100, optimalMin: 0, unit: 'IU/mL' },\n direction: 'lower-better',\n },\n\n // IgG - Immunoglobulin G\n IgG: {\n default: { max: 1600, min: 700, optimalMax: 1600, optimalMin: 700, unit: 'mg/dL' },\n },\n\n // IgE E1 Cat Dander - Class 0 (≤0.35 kU/L) = negative\n IgE_E1_CatDander: {\n default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: 'kU/L' },\n direction: 'lower-better',\n },\n\n // IgE GX1 Grasses - Class 0 (≤0.35 kU/L) = negative\n IgE_GX1_Grasses: {\n default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: 'kU/L' },\n direction: 'lower-better',\n },\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Legacy flat reference ranges for backward compatibility\n * This is derived from biomarkerRangeDefinitions defaults\n */\nexport const defaultReferenceRanges: Record<string, BiomarkerReferenceRange> = Object.fromEntries(\n Object.entries(biomarkerRangeDefinitions).map(([code, def]) => [code, def.default]),\n);\n\n/**\n * Get the reference range for a biomarker code, optionally personalized for user context\n * @param testCode - The biomarker code (e.g., \"HDL\", \"Testosterone\")\n * @param context - Optional user context for personalized ranges\n * @returns Reference range or undefined if not found\n */\nexport function getReferenceRange(\n testCode: string,\n context?: ReferenceRangeContext,\n): BiomarkerReferenceRange | undefined {\n const definition = biomarkerRangeDefinitions[testCode];\n if (!definition) return undefined;\n\n // If no context or no variants, return default\n if (!context || !definition.variants || definition.variants.length === 0) {\n return definition.default;\n }\n\n const { age, biologicalSex } = context;\n\n // Find matching variant (first match wins - more specific variants should be listed first)\n for (const variant of definition.variants) {\n // Check sex match ('all' matches everyone)\n if (variant.sex !== 'all' && variant.sex !== biologicalSex) {\n continue;\n }\n\n // Check age range\n if (variant.ageMin !== undefined && (age === undefined || age < variant.ageMin)) {\n continue;\n }\n if (variant.ageMax !== undefined && (age === undefined || age > variant.ageMax)) {\n continue;\n }\n\n return variant.range;\n }\n\n // No matching variant found - return default\n return definition.default;\n}\n\n/**\n * Get the range direction for a biomarker code.\n * Returns 'range' (default) if not specified.\n */\nexport function getRangeDirection(testCode: string): RangeDirection {\n return biomarkerRangeDefinitions[testCode]?.direction ?? 'range';\n}\n\n/**\n * Get fallback reference range for a biomarker code (default only, no personalization)\n * Used by API when LLM doesn't extract reference values\n * @param biomarkerCode - The biomarker code\n * @returns Reference range with min/max/unit or undefined\n */\nexport function getFallbackReferenceRange(\n biomarkerCode: string,\n): { min: number; max: number; unit: string } | undefined {\n const definition = biomarkerRangeDefinitions[biomarkerCode];\n if (!definition || definition.default.min === undefined || definition.default.max === undefined) {\n return undefined;\n }\n return {\n max: definition.default.max,\n min: definition.default.min,\n unit: definition.default.unit,\n };\n}\n\n/**\n * Apply fallback reference ranges to biomarkers that are missing them\n * @param biomarkers - Array of parsed biomarkers\n * @returns Count of biomarkers that received fallback references\n */\nexport function applyFallbackReferenceRanges<\n T extends {\n code: string;\n referenceMin?: number | null;\n referenceMax?: number | null;\n unit?: string;\n },\n>(biomarkers: T[]): number {\n let fallbackCount = 0;\n\n for (const biomarker of biomarkers) {\n // Skip if already has reference values\n if (biomarker.referenceMin != null && biomarker.referenceMax != null) {\n continue;\n }\n\n const fallback = getFallbackReferenceRange(biomarker.code);\n if (fallback) {\n // Only apply if units are compatible or biomarker has no unit\n const canonicalUnit = getCanonicalUnitForCode(biomarker.code);\n const unitsMatch =\n !biomarker.unit ||\n biomarker.unit.toLowerCase() === fallback.unit.toLowerCase() ||\n (canonicalUnit && biomarker.unit.toLowerCase() === canonicalUnit.toLowerCase()) ||\n // Handle common unit variations\n (biomarker.unit === '%' && fallback.unit === '%');\n\n if (unitsMatch) {\n if (biomarker.referenceMin == null) {\n biomarker.referenceMin = fallback.min;\n }\n if (biomarker.referenceMax == null) {\n biomarker.referenceMax = fallback.max;\n }\n fallbackCount++;\n }\n }\n }\n\n return fallbackCount;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/units.ts
|
|
2
|
+
var UNIT_TO_UCUM = {
|
|
3
|
+
// Dimensionless / special measurements
|
|
4
|
+
"[pH]": "[pH]",
|
|
5
|
+
"{ratio}": "{ratio}",
|
|
6
|
+
"{specific gravity}": "{specific gravity}",
|
|
7
|
+
"/\xB5L": "/uL",
|
|
8
|
+
// Percentage
|
|
9
|
+
"%": "%",
|
|
10
|
+
// Count units
|
|
11
|
+
"10\xB3/\xB5L": "10*3/uL",
|
|
12
|
+
"10\u2076/\xB5L": "10*6/uL",
|
|
13
|
+
// Volume
|
|
14
|
+
fL: "fL",
|
|
15
|
+
g: "g",
|
|
16
|
+
// Mass concentration
|
|
17
|
+
"g/dL": "g/dL",
|
|
18
|
+
L: "L",
|
|
19
|
+
// Molar concentration
|
|
20
|
+
"mEq/L": "meq/L",
|
|
21
|
+
mg: "mg",
|
|
22
|
+
"mg/dL": "mg/dL",
|
|
23
|
+
mL: "mL",
|
|
24
|
+
"mmol/L": "mmol/L",
|
|
25
|
+
"mUI/mL": "m[IU]/mL",
|
|
26
|
+
ng: "ng",
|
|
27
|
+
"ng/dL": "ng/dL",
|
|
28
|
+
"ng/mL": "ng/mL",
|
|
29
|
+
"nmol/L": "nmol/L",
|
|
30
|
+
// Mass
|
|
31
|
+
pg: "pg",
|
|
32
|
+
"pg/mL": "pg/mL",
|
|
33
|
+
pH: "[pH]",
|
|
34
|
+
// Enzyme activity
|
|
35
|
+
"U/L": "U/L",
|
|
36
|
+
// Special units
|
|
37
|
+
"U/mL": "U/mL",
|
|
38
|
+
"UI/L": "[IU]/L",
|
|
39
|
+
"UI/mL": "[IU]/mL",
|
|
40
|
+
\u00B5g: "ug",
|
|
41
|
+
"\xB5g/dL": "ug/dL",
|
|
42
|
+
"\xB5mol/L": "umol/L",
|
|
43
|
+
"\xB5UI/mL": "u[IU]/mL"
|
|
44
|
+
};
|
|
45
|
+
var BIOMARKER_DEFAULT_UNIT = {
|
|
46
|
+
// Proteins
|
|
47
|
+
Albumin: "g/dL",
|
|
48
|
+
AlkalinePhosphatase: "U/L",
|
|
49
|
+
// Liver
|
|
50
|
+
ALT: "U/L",
|
|
51
|
+
AST: "U/L",
|
|
52
|
+
Calcium: "mg/dL",
|
|
53
|
+
Chloride: "mEq/L",
|
|
54
|
+
// Lipids
|
|
55
|
+
Cholesterol: "mg/dL",
|
|
56
|
+
// Kidney
|
|
57
|
+
Creatinine: "mg/dL",
|
|
58
|
+
eAG: "mg/dL",
|
|
59
|
+
Ferritin: "ng/mL",
|
|
60
|
+
FolicAcid: "ng/mL",
|
|
61
|
+
GGT: "U/L",
|
|
62
|
+
// Glucose/Diabetes
|
|
63
|
+
Glucose: "mg/dL",
|
|
64
|
+
HbA1c: "%",
|
|
65
|
+
Hct: "%",
|
|
66
|
+
HDL: "mg/dL",
|
|
67
|
+
// Hematology
|
|
68
|
+
Hgb: "g/dL",
|
|
69
|
+
Insulin: "\xB5UI/mL",
|
|
70
|
+
// Iron studies
|
|
71
|
+
Iron: "\xB5g/dL",
|
|
72
|
+
LDL: "mg/dL",
|
|
73
|
+
Magnesium: "mg/dL",
|
|
74
|
+
NonHDL_Cholesterol: "mg/dL",
|
|
75
|
+
// Urinalysis - dimensionless
|
|
76
|
+
pH_Urine: "[pH]",
|
|
77
|
+
Potassium: "mEq/L",
|
|
78
|
+
RDW: "%",
|
|
79
|
+
// Electrolytes
|
|
80
|
+
Sodium: "mEq/L",
|
|
81
|
+
SpecificGravity_Urine: "{specific gravity}",
|
|
82
|
+
T3Free: "pg/mL",
|
|
83
|
+
T4Free: "ng/dL",
|
|
84
|
+
TIBC: "\xB5g/dL",
|
|
85
|
+
TotalProtein: "g/dL",
|
|
86
|
+
TransferrinSaturation: "%",
|
|
87
|
+
Triglycerides: "mg/dL",
|
|
88
|
+
// Thyroid
|
|
89
|
+
TSH: "\xB5UI/mL",
|
|
90
|
+
Urea: "mg/dL",
|
|
91
|
+
UricAcid: "mg/dL",
|
|
92
|
+
// Vitamins
|
|
93
|
+
VitaminB12: "pg/mL",
|
|
94
|
+
VitaminD: "ng/mL",
|
|
95
|
+
VLDL: "mg/dL"
|
|
96
|
+
};
|
|
97
|
+
function unitToUCUM(unit) {
|
|
98
|
+
return UNIT_TO_UCUM[unit] || unit;
|
|
99
|
+
}
|
|
100
|
+
function getDefaultUnit(biomarkerCode) {
|
|
101
|
+
return BIOMARKER_DEFAULT_UNIT[biomarkerCode] || "";
|
|
102
|
+
}
|
|
103
|
+
var CBC_DIFF_ALIASES = {
|
|
104
|
+
"/ul": "/uL",
|
|
105
|
+
"/\xB5l": "/uL",
|
|
106
|
+
"10*3/ul": "K/uL",
|
|
107
|
+
"cells/ul": "/uL",
|
|
108
|
+
"cells/\xB5l": "/uL",
|
|
109
|
+
"k/ul": "K/uL",
|
|
110
|
+
"x10e3/ul": "K/uL"
|
|
111
|
+
};
|
|
112
|
+
var CBC_DIFF = {
|
|
113
|
+
canonicalUcum: "10*3/uL",
|
|
114
|
+
canonicalUnit: "K/uL",
|
|
115
|
+
siUcum: "10*3/uL",
|
|
116
|
+
siUnit: "K/uL"
|
|
117
|
+
};
|
|
118
|
+
var DEXA_KG_ALIASES = {
|
|
119
|
+
kg: "kg",
|
|
120
|
+
lb: "[lb_av]",
|
|
121
|
+
lbs: "[lb_av]"
|
|
122
|
+
};
|
|
123
|
+
var DEXA_KG = {
|
|
124
|
+
canonicalUcum: "kg",
|
|
125
|
+
canonicalUnit: "kg",
|
|
126
|
+
siUcum: "kg",
|
|
127
|
+
siUnit: "kg"
|
|
128
|
+
};
|
|
129
|
+
var URINE_SEDIMENT_ALIASES = {
|
|
130
|
+
"/hpf": "/HPF",
|
|
131
|
+
"/ml": "/mL"
|
|
132
|
+
};
|
|
133
|
+
var URINE_SEDIMENT = {
|
|
134
|
+
canonicalUcum: "/[HPF]",
|
|
135
|
+
canonicalUnit: "/HPF",
|
|
136
|
+
siUcum: "/[HPF]",
|
|
137
|
+
siUnit: "/HPF"
|
|
138
|
+
};
|
|
139
|
+
var BIOMARKER_UNITS = {
|
|
140
|
+
Albumin: {
|
|
141
|
+
aliases: { "g/dl": "g/dL", "g/l": "g/L" },
|
|
142
|
+
canonicalUcum: "g/dL",
|
|
143
|
+
canonicalUnit: "g/dL",
|
|
144
|
+
siUcum: "g/L",
|
|
145
|
+
siUnit: "g/L"
|
|
146
|
+
},
|
|
147
|
+
AntiThyroglobulin: {
|
|
148
|
+
aliases: { "iu/ml": "IU/mL", "ui/ml": "IU/mL" },
|
|
149
|
+
canonicalUcum: "[iU]/mL",
|
|
150
|
+
canonicalUnit: "IU/mL",
|
|
151
|
+
siUcum: "[iU]/mL",
|
|
152
|
+
siUnit: "IU/mL"
|
|
153
|
+
},
|
|
154
|
+
Basophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
155
|
+
BMC: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
156
|
+
Cholesterol: {
|
|
157
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
158
|
+
canonicalUcum: "mg/dL",
|
|
159
|
+
canonicalUnit: "mg/dL",
|
|
160
|
+
molecularWeight: 386.65,
|
|
161
|
+
siUcum: "mmol/L",
|
|
162
|
+
siUnit: "mmol/L"
|
|
163
|
+
},
|
|
164
|
+
Creatinine: {
|
|
165
|
+
aliases: { "mg/dl": "mg/dL", "umol/l": "\xB5mol/L", "\xB5mol/l": "\xB5mol/L" },
|
|
166
|
+
canonicalUcum: "mg/dL",
|
|
167
|
+
canonicalUnit: "mg/dL",
|
|
168
|
+
molecularWeight: 113.12,
|
|
169
|
+
siUcum: "umol/L",
|
|
170
|
+
siUnit: "\xB5mol/L"
|
|
171
|
+
},
|
|
172
|
+
CRP: {
|
|
173
|
+
aliases: { "mg/dl": "mg/dL", "mg/l": "mg/L" },
|
|
174
|
+
canonicalUcum: "mg/L",
|
|
175
|
+
canonicalUnit: "mg/L",
|
|
176
|
+
siUcum: "mg/L",
|
|
177
|
+
siUnit: "mg/L"
|
|
178
|
+
},
|
|
179
|
+
eGFR: {
|
|
180
|
+
aliases: {
|
|
181
|
+
"ml/min/1,73 m2": "mL/min/1.73m\xB2",
|
|
182
|
+
"ml/min/1.73m2": "mL/min/1.73m\xB2",
|
|
183
|
+
"ml/min/1.73m\xB2": "mL/min/1.73m\xB2"
|
|
184
|
+
},
|
|
185
|
+
canonicalUcum: "mL/min/{1.73_m2}",
|
|
186
|
+
canonicalUnit: "mL/min/1.73m\xB2",
|
|
187
|
+
siUcum: "mL/min/{1.73_m2}",
|
|
188
|
+
siUnit: "mL/min/1.73m\xB2"
|
|
189
|
+
},
|
|
190
|
+
Eosinophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
191
|
+
Estradiol: {
|
|
192
|
+
// TODO: ng/dL ≠ pg/mL (1 ng/dL = 10 pg/mL) — display-only alias for now
|
|
193
|
+
aliases: { "ng/dl": "pg/mL", "pg/ml": "pg/mL" },
|
|
194
|
+
canonicalUcum: "pg/mL",
|
|
195
|
+
canonicalUnit: "pg/mL",
|
|
196
|
+
siUcum: "pmol/L",
|
|
197
|
+
siUnit: "pmol/L"
|
|
198
|
+
},
|
|
199
|
+
FatFreeMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
200
|
+
FatMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
201
|
+
Ferritin: {
|
|
202
|
+
aliases: {
|
|
203
|
+
"mcg/l": "ng/mL",
|
|
204
|
+
"microg/l": "ng/mL",
|
|
205
|
+
"ng/ml": "ng/mL",
|
|
206
|
+
"\xB5g/l": "ng/mL"
|
|
207
|
+
},
|
|
208
|
+
canonicalUcum: "ng/mL",
|
|
209
|
+
canonicalUnit: "ng/mL",
|
|
210
|
+
siUcum: "ug/L",
|
|
211
|
+
siUnit: "\xB5g/L"
|
|
212
|
+
},
|
|
213
|
+
FSH: {
|
|
214
|
+
aliases: {
|
|
215
|
+
"iu/l": "mIU/mL",
|
|
216
|
+
"miu/ml": "mIU/mL",
|
|
217
|
+
"ui/l": "mIU/mL"
|
|
218
|
+
},
|
|
219
|
+
canonicalUcum: "mIU/mL",
|
|
220
|
+
canonicalUnit: "mIU/mL",
|
|
221
|
+
siUcum: "[iU]/L",
|
|
222
|
+
siUnit: "IU/L"
|
|
223
|
+
},
|
|
224
|
+
Glucose: {
|
|
225
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
226
|
+
canonicalUcum: "mg/dL",
|
|
227
|
+
canonicalUnit: "mg/dL",
|
|
228
|
+
molecularWeight: 180.156,
|
|
229
|
+
siUcum: "mmol/L",
|
|
230
|
+
siUnit: "mmol/L"
|
|
231
|
+
},
|
|
232
|
+
HDL: {
|
|
233
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
234
|
+
canonicalUcum: "mg/dL",
|
|
235
|
+
canonicalUnit: "mg/dL",
|
|
236
|
+
molecularWeight: 386.65,
|
|
237
|
+
siUcum: "mmol/L",
|
|
238
|
+
siUnit: "mmol/L"
|
|
239
|
+
},
|
|
240
|
+
Hgb: {
|
|
241
|
+
aliases: { "g/dl": "g/dL", "g/l": "g/L" },
|
|
242
|
+
canonicalUcum: "g/dL",
|
|
243
|
+
canonicalUnit: "g/dL",
|
|
244
|
+
siUcum: "g/L",
|
|
245
|
+
siUnit: "g/L"
|
|
246
|
+
},
|
|
247
|
+
Insulin: {
|
|
248
|
+
aliases: {
|
|
249
|
+
"mu/l": "uIU/mL",
|
|
250
|
+
"uiu/ml": "uIU/mL",
|
|
251
|
+
"\xB5u/ml": "uIU/mL",
|
|
252
|
+
"\xB5ui/ml": "uIU/mL"
|
|
253
|
+
},
|
|
254
|
+
canonicalUcum: "u[iU]/mL",
|
|
255
|
+
canonicalUnit: "uIU/mL",
|
|
256
|
+
siUcum: "pmol/L",
|
|
257
|
+
siUnit: "pmol/L"
|
|
258
|
+
},
|
|
259
|
+
Iron: {
|
|
260
|
+
aliases: {
|
|
261
|
+
"mcg/dl": "mcg/dL",
|
|
262
|
+
"microg/dl": "mcg/dL",
|
|
263
|
+
"ug/dl": "mcg/dL",
|
|
264
|
+
"\xB5g/dl": "mcg/dL"
|
|
265
|
+
},
|
|
266
|
+
canonicalUcum: "ug/dL",
|
|
267
|
+
canonicalUnit: "mcg/dL",
|
|
268
|
+
siUcum: "umol/L",
|
|
269
|
+
siUnit: "\xB5mol/L"
|
|
270
|
+
},
|
|
271
|
+
LDL: {
|
|
272
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
273
|
+
canonicalUcum: "mg/dL",
|
|
274
|
+
canonicalUnit: "mg/dL",
|
|
275
|
+
molecularWeight: 386.65,
|
|
276
|
+
siUcum: "mmol/L",
|
|
277
|
+
siUnit: "mmol/L"
|
|
278
|
+
},
|
|
279
|
+
LDL_Peak_Size: {
|
|
280
|
+
aliases: { \u00E5: "Ao", angstrom: "Ao", ao: "Ao", nm: "nm" },
|
|
281
|
+
canonicalUcum: "Ao",
|
|
282
|
+
canonicalUnit: "Angstrom",
|
|
283
|
+
siUcum: "nm",
|
|
284
|
+
siUnit: "nm"
|
|
285
|
+
},
|
|
286
|
+
LeanMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
287
|
+
Leukocytes_Urine: { aliases: URINE_SEDIMENT_ALIASES, ...URINE_SEDIMENT },
|
|
288
|
+
LH: {
|
|
289
|
+
aliases: {
|
|
290
|
+
"iu/l": "mIU/mL",
|
|
291
|
+
"miu/ml": "mIU/mL",
|
|
292
|
+
"ui/l": "mIU/mL"
|
|
293
|
+
},
|
|
294
|
+
canonicalUcum: "mIU/mL",
|
|
295
|
+
canonicalUnit: "mIU/mL",
|
|
296
|
+
siUcum: "[iU]/L",
|
|
297
|
+
siUnit: "IU/L"
|
|
298
|
+
},
|
|
299
|
+
Lipoprotein_a: {
|
|
300
|
+
aliases: { "mg/dl": "mg/dL", "nmol/l": "nmol/L" },
|
|
301
|
+
canonicalUcum: "nmol/L",
|
|
302
|
+
canonicalUnit: "nmol/L",
|
|
303
|
+
siUcum: "nmol/L",
|
|
304
|
+
siUnit: "nmol/L"
|
|
305
|
+
},
|
|
306
|
+
Lymphocytes_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
307
|
+
MCHC: {
|
|
308
|
+
aliases: { "g/dl": "g/dL", "g/l": "g/L" },
|
|
309
|
+
canonicalUcum: "g/dL",
|
|
310
|
+
canonicalUnit: "g/dL",
|
|
311
|
+
siUcum: "g/L",
|
|
312
|
+
siUnit: "g/L"
|
|
313
|
+
},
|
|
314
|
+
Monocytes_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
315
|
+
Neutrophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
316
|
+
Platelets: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },
|
|
317
|
+
Prolactin: {
|
|
318
|
+
aliases: {
|
|
319
|
+
"microg/l": "ng/mL",
|
|
320
|
+
"ng/ml": "ng/mL",
|
|
321
|
+
"\xB5g/l": "ng/mL"
|
|
322
|
+
},
|
|
323
|
+
canonicalUcum: "ng/mL",
|
|
324
|
+
canonicalUnit: "ng/mL",
|
|
325
|
+
siUcum: "ug/L",
|
|
326
|
+
siUnit: "\xB5g/L"
|
|
327
|
+
},
|
|
328
|
+
RBC: {
|
|
329
|
+
aliases: {
|
|
330
|
+
"/ul": "/uL",
|
|
331
|
+
"/\xB5l": "/uL",
|
|
332
|
+
"10*6/ul": "M/uL",
|
|
333
|
+
"cells/ul": "/uL",
|
|
334
|
+
"m/ul": "M/uL",
|
|
335
|
+
"milh\xF5es/mm3": "M/uL",
|
|
336
|
+
"milh\xF5es/mm\xB3": "M/uL",
|
|
337
|
+
"x10e6/ul": "M/uL"
|
|
338
|
+
},
|
|
339
|
+
canonicalUcum: "10*6/uL",
|
|
340
|
+
canonicalUnit: "M/uL",
|
|
341
|
+
siUcum: "10*6/uL",
|
|
342
|
+
siUnit: "M/uL"
|
|
343
|
+
},
|
|
344
|
+
RBC_Urine: { aliases: URINE_SEDIMENT_ALIASES, ...URINE_SEDIMENT },
|
|
345
|
+
TestosteroneFree: {
|
|
346
|
+
// TODO: pmol/L ≠ pg/mL (needs MW conversion) — display-only alias for now
|
|
347
|
+
aliases: { "pg/ml": "pg/mL", "pmol/l": "pg/mL" },
|
|
348
|
+
canonicalUcum: "pg/mL",
|
|
349
|
+
canonicalUnit: "pg/mL",
|
|
350
|
+
molecularWeight: 288.42,
|
|
351
|
+
siUcum: "pmol/L",
|
|
352
|
+
siUnit: "pmol/L"
|
|
353
|
+
},
|
|
354
|
+
TIBC: {
|
|
355
|
+
aliases: {
|
|
356
|
+
"mcg/dl": "mcg/dL",
|
|
357
|
+
"microg/dl": "mcg/dL",
|
|
358
|
+
"ug/dl": "mcg/dL",
|
|
359
|
+
"\xB5g/dl": "mcg/dL"
|
|
360
|
+
},
|
|
361
|
+
canonicalUcum: "ug/dL",
|
|
362
|
+
canonicalUnit: "mcg/dL",
|
|
363
|
+
siUcum: "umol/L",
|
|
364
|
+
siUnit: "\xB5mol/L"
|
|
365
|
+
},
|
|
366
|
+
TotalMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
367
|
+
Triglycerides: {
|
|
368
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
369
|
+
canonicalUcum: "mg/dL",
|
|
370
|
+
canonicalUnit: "mg/dL",
|
|
371
|
+
molecularWeight: 885.4,
|
|
372
|
+
siUcum: "mmol/L",
|
|
373
|
+
siUnit: "mmol/L"
|
|
374
|
+
},
|
|
375
|
+
TSH: {
|
|
376
|
+
aliases: {
|
|
377
|
+
"miu/l": "uIU/mL",
|
|
378
|
+
"mui/l": "uIU/mL",
|
|
379
|
+
"uiu/ml": "uIU/mL",
|
|
380
|
+
"\xB5ui/ml": "uIU/mL"
|
|
381
|
+
},
|
|
382
|
+
canonicalUcum: "u[iU]/mL",
|
|
383
|
+
canonicalUnit: "uIU/mL",
|
|
384
|
+
siUcum: "mIU/L",
|
|
385
|
+
siUnit: "mIU/L"
|
|
386
|
+
},
|
|
387
|
+
Urea: {
|
|
388
|
+
aliases: { "mg/dl": "mg/dL", "mmol/l": "mmol/L" },
|
|
389
|
+
canonicalUcum: "mg/dL",
|
|
390
|
+
canonicalUnit: "mg/dL",
|
|
391
|
+
molecularWeight: 60.06,
|
|
392
|
+
siUcum: "mmol/L",
|
|
393
|
+
siUnit: "mmol/L"
|
|
394
|
+
},
|
|
395
|
+
VATMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },
|
|
396
|
+
VATVolume: {
|
|
397
|
+
aliases: { cm3: "cm3", "cm\xB3": "cm3", in3: "[in_i]3", "in\xB3": "[in_i]3" },
|
|
398
|
+
canonicalUcum: "cm3",
|
|
399
|
+
canonicalUnit: "cm\xB3",
|
|
400
|
+
siUcum: "cm3",
|
|
401
|
+
siUnit: "cm\xB3"
|
|
402
|
+
},
|
|
403
|
+
VitaminB12: {
|
|
404
|
+
aliases: { "ng/l": "pg/mL", "pg/ml": "pg/mL" },
|
|
405
|
+
canonicalUcum: "pg/mL",
|
|
406
|
+
canonicalUnit: "pg/mL",
|
|
407
|
+
siUcum: "pmol/L",
|
|
408
|
+
siUnit: "pmol/L"
|
|
409
|
+
},
|
|
410
|
+
VitaminD: {
|
|
411
|
+
aliases: { "ng/ml": "ng/mL", "nmol/l": "nmol/L" },
|
|
412
|
+
canonicalUcum: "ng/mL",
|
|
413
|
+
canonicalUnit: "ng/mL",
|
|
414
|
+
molecularWeight: 384.64,
|
|
415
|
+
siUcum: "nmol/L",
|
|
416
|
+
siUnit: "nmol/L"
|
|
417
|
+
},
|
|
418
|
+
WBC: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF }
|
|
419
|
+
};
|
|
420
|
+
function getCanonicalUnit(code) {
|
|
421
|
+
return _nullishCoalesce(_optionalChain([BIOMARKER_UNITS, 'access', _ => _[code], 'optionalAccess', _2 => _2.canonicalUnit]), () => ( null));
|
|
422
|
+
}
|
|
423
|
+
function getSIUnit(code) {
|
|
424
|
+
return _nullishCoalesce(_optionalChain([BIOMARKER_UNITS, 'access', _3 => _3[code], 'optionalAccess', _4 => _4.siUnit]), () => ( null));
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
exports.UNIT_TO_UCUM = UNIT_TO_UCUM; exports.BIOMARKER_DEFAULT_UNIT = BIOMARKER_DEFAULT_UNIT; exports.unitToUCUM = unitToUCUM; exports.getDefaultUnit = getDefaultUnit; exports.BIOMARKER_UNITS = BIOMARKER_UNITS; exports.getCanonicalUnit = getCanonicalUnit; exports.getSIUnit = getSIUnit;
|
|
436
|
+
//# sourceMappingURL=chunk-GFXKYXHW.cjs.map
|