@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.
Files changed (72) hide show
  1. package/README.md +85 -0
  2. package/dist/biomarkers.cjs +67 -0
  3. package/dist/biomarkers.cjs.map +1 -0
  4. package/dist/biomarkers.d.cts +226 -0
  5. package/dist/biomarkers.d.ts +226 -0
  6. package/dist/biomarkers.js +67 -0
  7. package/dist/biomarkers.js.map +1 -0
  8. package/dist/chunk-2EVQ2ESB.cjs +2692 -0
  9. package/dist/chunk-2EVQ2ESB.cjs.map +1 -0
  10. package/dist/chunk-2X6MT5KE.cjs +1464 -0
  11. package/dist/chunk-2X6MT5KE.cjs.map +1 -0
  12. package/dist/chunk-3ILBFLVQ.cjs +63 -0
  13. package/dist/chunk-3ILBFLVQ.cjs.map +1 -0
  14. package/dist/chunk-FDOBUUGY.js +1464 -0
  15. package/dist/chunk-FDOBUUGY.js.map +1 -0
  16. package/dist/chunk-GFXKYXHW.cjs +436 -0
  17. package/dist/chunk-GFXKYXHW.cjs.map +1 -0
  18. package/dist/chunk-I6H35QXI.js +2692 -0
  19. package/dist/chunk-I6H35QXI.js.map +1 -0
  20. package/dist/chunk-N3ZCOLG2.js +63 -0
  21. package/dist/chunk-N3ZCOLG2.js.map +1 -0
  22. package/dist/chunk-O25F6G3K.cjs +153 -0
  23. package/dist/chunk-O25F6G3K.cjs.map +1 -0
  24. package/dist/chunk-S6VJHXJF.js +153 -0
  25. package/dist/chunk-S6VJHXJF.js.map +1 -0
  26. package/dist/chunk-UIDSSWBJ.js +251 -0
  27. package/dist/chunk-UIDSSWBJ.js.map +1 -0
  28. package/dist/chunk-VPMT4MRS.js +436 -0
  29. package/dist/chunk-VPMT4MRS.js.map +1 -0
  30. package/dist/chunk-Z6YE6FJ4.cjs +251 -0
  31. package/dist/chunk-Z6YE6FJ4.cjs.map +1 -0
  32. package/dist/converter-C-QpCcTL.d.ts +99 -0
  33. package/dist/converter-Dee-qjBV.d.cts +99 -0
  34. package/dist/converter.cjs +15 -0
  35. package/dist/converter.cjs.map +1 -0
  36. package/dist/converter.d.cts +2 -0
  37. package/dist/converter.d.ts +2 -0
  38. package/dist/converter.js +15 -0
  39. package/dist/converter.js.map +1 -0
  40. package/dist/fhir-types-D9hUzGrc.d.cts +129 -0
  41. package/dist/fhir-types-D9hUzGrc.d.ts +129 -0
  42. package/dist/importer.cjs +17 -0
  43. package/dist/importer.cjs.map +1 -0
  44. package/dist/importer.d.cts +60 -0
  45. package/dist/importer.d.ts +60 -0
  46. package/dist/importer.js +17 -0
  47. package/dist/importer.js.map +1 -0
  48. package/dist/index.cjs +540 -0
  49. package/dist/index.cjs.map +1 -0
  50. package/dist/index.d.cts +163 -0
  51. package/dist/index.d.ts +163 -0
  52. package/dist/index.js +540 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/reference-ranges.cjs +18 -0
  55. package/dist/reference-ranges.cjs.map +1 -0
  56. package/dist/reference-ranges.d.cts +106 -0
  57. package/dist/reference-ranges.d.ts +106 -0
  58. package/dist/reference-ranges.js +18 -0
  59. package/dist/reference-ranges.js.map +1 -0
  60. package/dist/units.cjs +19 -0
  61. package/dist/units.cjs.map +1 -0
  62. package/dist/units.d.cts +46 -0
  63. package/dist/units.d.ts +46 -0
  64. package/dist/units.js +19 -0
  65. package/dist/units.js.map +1 -0
  66. package/dist/validators.cjs +11 -0
  67. package/dist/validators.cjs.map +1 -0
  68. package/dist/validators.d.cts +23 -0
  69. package/dist/validators.d.ts +23 -0
  70. package/dist/validators.js +11 -0
  71. package/dist/validators.js.map +1 -0
  72. 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