@precisa-saude/fhir 0.15.2 → 0.15.3

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.
@@ -1 +0,0 @@
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 * Pré-condição de jejum para a faixa de referência.\n *\n * - `strict`: coleta exige jejum mínimo (ex.: glicemia de jejum, insulina).\n * - `preferred`: jejum recomendado, mas faixa aplicável em não-jejum\n * (ex.: perfil lipídico pós-SBC 2017, com corte de triglicérides distinto).\n * - `not-required`: valor independe do estado prandial (ex.: HbA1c, TSH).\n */\nexport type FastingRequirement = 'strict' | 'preferred' | 'not-required';\n\n/**\n * Reference range configuration for a biomarker\n */\nexport interface BiomarkerReferenceRange {\n /**\n * Pré-condição de jejum para a interpretação da faixa. Opcional;\n * consumidores devem aplicar sinalização adequada quando `strict`.\n */\n fastingRequired?: FastingRequirement;\n max?: number;\n min?: number;\n optimalMax?: number;\n optimalMin?: number;\n unit: string;\n warningMax?: number;\n}\n\n/**\n * Trimestre gestacional. Usado em variantes e no contexto de consulta\n * para matching de faixas específicas da gestação.\n */\nexport type PregnancyTrimester = 1 | 2 | 3;\n\n/**\n * A variant of a reference range that applies to a specific sex, age group,\n * and/or pregnancy state.\n *\n * Ordem de avaliação: variantes são processadas na ordem em que aparecem.\n * Para que usuárias gestantes recebam a variante gestacional correta,\n * essas variantes devem ser listadas **antes** das variantes por idade/sexo.\n */\nexport interface RangeVariant {\n ageMax?: number;\n ageMin?: number;\n pregnancyTrimester?: PregnancyTrimester;\n /**\n * Quando `true`, a variante só se aplica a contextos de gestação.\n * Se `pregnancyTrimester` estiver definido, o trimestre deve coincidir.\n */\n pregnant?: boolean;\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 /**\n * Chave de fonte bibliográfica, opcionalmente com localizador.\n *\n * Formato: `'chave'` ou `'chave:localizador'`\n *\n * Exemplos:\n * - `'sbc-lipids-2017'` — fonte sem localização específica\n * - `'sbc-lipids-2017:p15'` — página 15\n * - `'sbpc-ml-2021:t4.1'` — tabela 4.1\n *\n * As chaves devem corresponder a entradas em `SOURCE_REGISTRY` (sources.ts).\n * Consulte `docs/fontes-referencia.md` para a bibliografia completa em formato ABNT.\n */\n source?: string;\n variants?: RangeVariant[];\n}\n\n/**\n * User context for personalized reference range lookup.\n *\n * Para gestação, defina `pregnant: true` e, quando disponível,\n * `pregnancyTrimester` para obter a variante trimestre-específica.\n */\nexport interface ReferenceRangeContext {\n age?: number;\n biologicalSex?: 'M' | 'F';\n pregnancyTrimester?: PregnancyTrimester;\n pregnant?: boolean;\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 Albumin_Creatinine_Ratio: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/g' },\n source: 'tietz-7ed-2015',\n },\n\n Adiponectin: {\n default: { max: 26, min: 4, optimalMax: 20, optimalMin: 8, unit: 'mcg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n ADMA: {\n default: { max: 0.7, min: 0.3, optimalMax: 0.55, optimalMin: 0.3, unit: 'umol/L' },\n source: 'nemeth-adma-2017',\n },\n\n AFP: {\n default: { max: 10, min: 0, optimalMax: 8, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n Albumin_Globulin_Ratio: {\n default: { max: 2.5, min: 1.0, optimalMax: 2.2, optimalMin: 1.2, unit: '' },\n source: 'tietz-7ed-2015',\n },\n\n Albumin: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.8, optimalMin: 4.0, unit: 'g/dL' },\n source: 'pns-bioquimica-2019',\n },\n\n AlkalinePhosphatase: {\n default: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n source: 'tietz-7ed-2015',\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: 'tietz-7ed-2015',\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 — fortemente dependente de idade e sexo. As variantes femininas por\n // faixa etária são a referência clínica; o `default` foi ajustado para\n // refletir uma faixa adulta conservadora (~18-40 anos, mulheres em idade\n // reprodutiva geral). optimalMax anterior (6.9 ng/mL) sobrepunha-se a\n // valores sugestivos de SOP ou risco de OHSS; clinicamente, valores acima\n // de ~4 ng/mL já merecem investigação.\n AMH: {\n default: { max: 6.0, min: 1.0, optimalMax: 4.0, optimalMin: 1.5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n AntiThyroglobulin: {\n default: { max: 115, min: 0, optimalMax: 40, optimalMin: 0, unit: 'IU/mL' },\n source: 'tietz-7ed-2015',\n },\n\n AntiTPO: {\n default: { max: 34, min: 0, optimalMax: 9, optimalMin: 0, unit: 'IU/mL' },\n source: 'tietz-7ed-2015',\n },\n\n // Aortic valve calcium — no standardized clinical threshold; use mild cutoff\n // Cálcio de válvula aórtica — usa mesma classificação Agatston\n AorticValveCalcium: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n ApoA1: {\n default: { max: 200, min: 100, optimalMax: 180, optimalMin: 120, unit: 'mg/dL' },\n source: 'contois-apoa1-1996',\n },\n\n ApoB: {\n default: { max: 90, min: 0, optimalMax: 70, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n ApoCIII: {\n default: { max: 10, min: 0, optimalMax: 7, optimalMin: 0, unit: 'mg/dL' },\n source: 'khetarpal-apociii-2016',\n },\n\n // ApoCIII/ApoA1 Ratio: derivado de ApoCIII (~10 mg/dL) e ApoA1 (~100-150 mg/dL)\n // NOTA: corte de 0.15 sem fonte publicada — valor calculado, não validado clinicamente\n ApoCIII_ApoA1_Ratio: {\n default: { max: 0.15, min: 0, optimalMax: 0.1, optimalMin: 0, unit: '' },\n },\n\n Omega6_AA: {\n default: { max: 15.0, min: 5.0, optimalMax: 12.0, optimalMin: 7.0, unit: '%' },\n source: 'simopoulos-omega-ratio-2002',\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 source: 'simopoulos-omega-ratio-2002',\n },\n\n Arsenic: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n AST: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n source: 'tietz-7ed-2015',\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 source: 'pns-hemograma-2019',\n },\n\n Basophils_Abs: {\n default: { max: 0.1, min: 0, optimalMax: 0.05, optimalMin: 0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Bicarbonate: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n // β-Hidroxibutirato (BHB) sérico — corpos cetônicos. Faixa derivada de\n // amostra populacional não-jejum (German National Cohort, n=304, 20–69 a)\n // como percentis 2,5–97,5: 0,02–0,28 mmol/L. Em jejum prolongado ou\n // cetose nutricional, valores acima de 0,5 mmol/L são esperados; o limite\n // superior aqui reflete estado pós-prandial habitual, não jejum.\n BetaHydroxybutyrate: {\n default: { max: 0.28, min: 0.02, optimalMax: 0.28, optimalMin: 0.02, unit: 'mmol/L' },\n source: 'klee-bhb-2020',\n },\n\n BilirubinDirect: {\n default: { max: 0.3, min: 0, optimalMax: 0.2, optimalMin: 0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n BilirubinIndirect: {\n default: { max: 0.8, min: 0, optimalMax: 0.6, optimalMin: 0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n BilirubinTotal: {\n default: { max: 1.2, min: 0.1, optimalMax: 0.9, optimalMin: 0.2, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // BNP: 35 pg/mL = corte não-agudo para triagem de IC (SBC IC 2018)\n BNP: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'pg/mL' },\n source: 'sbc-ic-2018',\n },\n\n // Razão BUN/Creatinina — faixa 10-20 aplica-se ao Nitrogênio Ureico (BUN).\n // Laboratórios brasileiros que reportam Ureia (e não BUN) usam razão\n // Ureia/Creatinina, cuja faixa normal é aproximadamente 21-43\n // (Ureia ≈ BUN × 2,14). O biomarcador atualmente assume a convenção BUN;\n // consumidores que dosem Ureia devem converter ou reportar como razão\n // distinta. Ver issue #41 para alinhamento de nomenclatura/LOINC.\n BUN_Creatinine_Ratio: {\n default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: '' },\n source: 'tietz-7ed-2015',\n },\n\n CA125: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n CA199: {\n default: { max: 37, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/mL' },\n source: 'sturgeon-nacb-2008',\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 source: 'rumberger-cac-1999',\n },\n\n // Per-vessel scores — same Agatston classification applied per vessel\n CAC_LAD: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_LCX: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_LMA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_Percentile: {\n default: { max: 50, min: 0, optimalMax: 25, optimalMin: 0, unit: '%', warningMax: 75 },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_RCA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n Cadmium: {\n default: { max: 1.2, min: 0, optimalMax: 0.5, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n Calcium: {\n default: { max: 10.5, min: 8.5, optimalMax: 10.0, optimalMin: 9.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CEA: {\n default: { max: 3.0, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n // CK: valores conservadores baseados em faixas laboratoriais típicas\n CK: {\n default: { max: 190, min: 30, optimalMax: 170, optimalMin: 40, unit: 'U/L' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n // Colesterol total — SBC 2017/2025: valor desejável < 190 mg/dL para adultos,\n // com ou sem jejum. Limite anterior (200 mg/dL) refletia a diretriz ATP III\n // (NCEP, 2002), superada pelas atualizações brasileiras.\n Cholesterol: {\n default: { max: 190, min: 0, optimalMax: 170, optimalMin: 0, unit: 'mg/dL' },\n source: 'sbc-lipids-2025',\n },\n\n // Índice de Castelli I (CT/HDL-c)\n Cholesterol_HDL_Ratio: {\n // Índice de Castelli I — SBC 2017: M <4.9, F <4.3\n default: { max: 4.9, min: 0, optimalMax: 3.5, optimalMin: 0, unit: '' },\n direction: 'lower-better',\n source: 'castelli-ratio-1992',\n variants: [\n {\n ageMin: 18,\n range: { max: 4.9, min: 0, optimalMax: 4.0, optimalMin: 0, unit: '' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 4.3, 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 source: 'tietz-7ed-2015',\n },\n\n Copper: {\n default: { max: 175, min: 70, optimalMax: 150, optimalMin: 85, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CoQ10: {\n default: { max: 1.5, min: 0.5, optimalMax: 1.3, optimalMin: 0.7, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n Cortisol: {\n default: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CortisolFree: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CPeptide: {\n default: {\n fastingRequired: 'strict',\n max: 3.9,\n min: 0.8,\n optimalMax: 3.0,\n optimalMin: 1.0,\n unit: 'ng/mL',\n },\n source: 'tietz-7ed-2015',\n },\n\n Creatinine: {\n default: { max: 1.2, min: 0.6, optimalMax: 1.0, optimalMin: 0.7, unit: 'mg/dL' },\n source: 'pns-bioquimica-2019',\n variants: [\n // Gestação: hiperfiltração glomerular (↑ 40–50% GFR) reduz a creatinina\n // sérica. Valores \"normais\" de não-gestante podem sinalizar disfunção\n // renal em gestante. Limites tipicamente citados: 0.4–0.8 mg/dL.\n {\n pregnant: true,\n range: { max: 0.8, min: 0.4, optimalMax: 0.7, optimalMin: 0.5, unit: 'mg/dL' },\n sex: 'F',\n },\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 source: 'tietz-7ed-2015',\n },\n\n CystatinC: {\n default: { max: 1.0, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n // D-Dímero: 500 ng/mL é o corte clínico padrão para exclusão de TEV\n DDimer: {\n default: { max: 500, min: 0, optimalMax: 250, optimalMin: 0, unit: 'ng/mL' },\n source: 'wells-ddimer-2003',\n },\n\n Omega3_DHA: {\n default: { max: 8.0, min: 2.0, optimalMax: 6.5, optimalMin: 3.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n DHEAS: {\n default: { max: 500, min: 100, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\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 source: 'harris-omega3-2004',\n },\n\n eGFR: {\n default: { max: 120, min: 90, optimalMax: 120, optimalMin: 90, unit: 'mL/min/1.73m²' },\n source: 'kdigo-ckd-2024',\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 source: 'pns-hemograma-2019',\n },\n\n Eosinophils_Abs: {\n default: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Omega3_EPA: {\n default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n EPADPADHA: {\n default: { max: 10.0, min: 3.0, optimalMax: 9.0, optimalMin: 5.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n ESR: {\n default: { max: 20, min: 0, optimalMax: 10, optimalMin: 0, unit: 'mm/hr' },\n source: 'tietz-7ed-2015',\n },\n\n Estradiol: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n // Ferritina — WHO 2020 é o documento de referência específico para avaliação\n // do status de ferro via ferritina. Importante: inflamação aguda eleva\n // ferritina (proteína de fase aguda); WHO 2020 recomenda dosagem concomitante\n // de PCR para interpretação em contexto inflamatório (fora do escopo deste\n // tipo de faixa, mas documentado aqui para consumidores).\n Ferritin: {\n default: { max: 150, min: 12, optimalMax: 120, optimalMin: 30, unit: 'ng/mL' },\n source: 'who-iron-2020',\n variants: [\n // Gestação: ferritina cai fisiologicamente no 2º/3º trimestre pela expansão\n // do volume plasmático e maior demanda fetal. WHO 2020: <15 ng/mL sugere\n // depleção; muitas diretrizes nacionais usam <30 como gatilho mais sensível\n // na gestação dada a alta prevalência de deficiência subclínica.\n {\n pregnant: true,\n range: { max: 120, min: 15, optimalMax: 80, optimalMin: 30, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 18,\n range: { max: 250, min: 20, optimalMax: 200, optimalMin: 40, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 120, min: 10, optimalMax: 80, optimalMin: 20, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 200, min: 20, optimalMax: 150, optimalMin: 30, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n // Fibrinogênio: 200-400 mg/dL — faixa de referência padrão (método de Clauss)\n Fibrinogen: {\n default: { max: 400, min: 200, optimalMax: 350, optimalMin: 250, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n FolicAcid: {\n default: { max: 20, min: 3, optimalMax: 15, optimalMin: 5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n FSH: {\n default: { max: 12.4, min: 1.5, optimalMax: 10.0, optimalMin: 3.0, unit: 'mIU/mL' },\n source: 'tietz-7ed-2015',\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: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n Globulin: {\n default: { max: 3.5, min: 2.0, optimalMax: 3.2, optimalMin: 2.3, unit: 'g/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Glicemia de jejum — 70–99 mg/dL é a faixa de normalidade (SBD 2024, ADA);\n // hipoglicemia clinicamente acionável em não-diabético é <54 mg/dL (Level 2\n // ADA/SBD), não 70. O corte 70 era Level 1 (alerta em diabético em tratamento)\n // e gerava falsos \"abaixo do normal\" em indivíduos saudáveis cuja glicemia\n // em jejum está fisiologicamente entre 54–70. optimalMin preserva o alvo.\n Glucose: {\n default: {\n fastingRequired: 'strict',\n max: 100,\n min: 54,\n optimalMax: 90,\n optimalMin: 70,\n unit: 'mg/dL',\n },\n source: 'sbd-diabetes-2024',\n variants: [\n // Gestação: DMG (IADPSG/SBD 2024) usa cortes mais restritivos na glicemia\n // de jejum — ≥92 mg/dL já indica diabetes mellitus gestacional. Portanto\n // a faixa \"normal\" em gestante vai até 91 mg/dL no jejum.\n {\n pregnant: true,\n range: {\n fastingRequired: 'strict',\n max: 91,\n min: 54,\n optimalMax: 85,\n optimalMin: 70,\n unit: 'mg/dL',\n },\n sex: 'F',\n },\n ],\n },\n\n GlycoMark: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'mcg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n GrowthHormone: {\n default: { max: 5, min: 0, optimalMax: 3, optimalMin: 0, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n // HbA1c — SBD 2024 não estabelece piso de referência clinicamente acionável.\n // Valores <4.0% podem refletir anemia hemolítica, perda sanguínea recente ou\n // hemoglobinopatia, não patologia do metabolismo glicêmico. Usamos min=2 como\n // piso de sanidade (HbA1c <2% é quase sempre erro instrumental/entrada) sem\n // criar flag clínico em valores fisiologicamente baixos. optimalMin preserva\n // o alvo fisiológico da fração glicada.\n HbA1c: {\n default: { max: 5.7, min: 2, 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 source: 'pns-hemograma-2019',\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 — SBC 2017/2025: desejável > 40 mg/dL (♂) e > 50 mg/dL (♀).\n // A diretriz NÃO define teto de normalidade — HDL alto é cardioprotetor.\n // Limites superiores anteriormente fixados em 60 mg/dL geravam falsos\n // alertas. Mantém-se `max` apenas como limite técnico do gauge (100 mg/dL),\n // não como ponto de corte clínico; consumidores devem tratar `direction:\n // higher-better` como sinal autoritativo.\n HDL: {\n default: { max: 100, min: 40, optimalMax: 100, optimalMin: 50, unit: 'mg/dL' },\n direction: 'higher-better',\n source: 'sbc-lipids-2025',\n variants: [\n {\n ageMin: 18,\n range: { max: 100, min: 40, optimalMax: 100, optimalMin: 45, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 100, min: 50, optimalMax: 100, 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 source: 'caulfield-ionmobility-2008',\n },\n\n Hgb: {\n default: { max: 17.5, min: 12.0, optimalMax: 16.0, optimalMin: 13.5, unit: 'g/dL' },\n source: 'pns-hemograma-2019',\n variants: [\n // Gestação: hemodiluição fisiológica reduz o piso aceitável.\n // OMS e CDC: anemia gestacional quando Hgb <11 g/dL (1º e 3º tri) ou\n // <10.5 g/dL (2º tri, dilucional mais acentuada). Catch-all adota a\n // faixa mais conservadora (2º tri) quando trimestre é desconhecido.\n {\n pregnant: true,\n pregnancyTrimester: 1,\n range: { max: 14.0, min: 11.0, optimalMax: 13.0, optimalMin: 11.5, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 2,\n range: { max: 14.0, min: 10.5, optimalMax: 13.0, optimalMin: 11.0, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 3,\n range: { max: 14.0, min: 11.0, optimalMax: 13.0, optimalMin: 11.5, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n range: { max: 14.0, min: 10.5, optimalMax: 13.0, optimalMin: 11.0, unit: 'g/dL' },\n sex: 'F',\n },\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 — corte 2.71 do estudo BRAMS (Geloneze et al., 2009) validado em\n // população urbana brasileira; Tietz 7ª ed. não publica corte próprio de\n // HOMA-IR, então a fonte anterior era citação inadequada.\n HOMA_IR: {\n default: {\n fastingRequired: 'strict',\n max: 2.71,\n min: 0,\n optimalMax: 1.5,\n optimalMin: 0,\n unit: '',\n },\n direction: 'lower-better',\n source: 'geloneze-brams-2009',\n },\n\n Homocysteine: {\n default: { max: 15, min: 4, optimalMax: 10, optimalMin: 5, unit: 'umol/L' },\n direction: 'lower-better',\n source: 'selhub-homocysteine-1999',\n },\n\n IGF1: {\n default: { max: 350, min: 100, optimalMax: 300, optimalMin: 150, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n ImmatureGranulocytes: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Insulin: {\n default: {\n fastingRequired: 'strict',\n max: 25,\n min: 2,\n optimalMax: 8,\n optimalMin: 3,\n unit: 'µIU/mL',\n },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n // DHL/LDH — método IFCC a 37 °C (padrão atual na maioria dos laboratórios\n // brasileiros). Limites superiores de referência (97,5° percentil) obtidos\n // por Schumann & Klauke (2002) em indivíduos ≥17 anos: 247 U/L (mulheres)\n // e 248 U/L (homens). O IFCC publica apenas o limite superior; o limite\n // inferior é fixado em 0 pois DHL baixa não tem significado clínico.\n // Não comparar com método Wróblewski-LaDue (faixas mais antigas, ~240–480).\n LDH: {\n default: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: 'U/L' },\n direction: 'lower-better',\n source: 'schumann-ifcc-ldh-2002',\n variants: [\n {\n ageMin: 17,\n range: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 17,\n range: { max: 247, min: 0, optimalMax: 247, optimalMin: 0, unit: 'U/L' },\n sex: 'F',\n },\n ],\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-2025',\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 source: 'caulfield-ionmobility-2008',\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 source: 'caulfield-ionmobility-2008',\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 source: 'caulfield-ionmobility-2008',\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 source: 'caulfield-ionmobility-2008',\n },\n\n Lead: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: 'mcg/dL' },\n source: 'nr7-pcmso-2020',\n },\n\n Leptin: {\n default: { max: 15, min: 2, optimalMax: 12, optimalMin: 3, unit: 'ng/mL' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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 source: 'simopoulos-omega-ratio-2002',\n },\n\n // Lp(a) — SBC 2025 (seção 3.1.1.2.7): níveis ≥ 50 mg/dL ou ≥ 125 nmol/L são\n // considerados aumentados, com indicação de rastreamento em cascata familiar.\n // A diretriz recomenda ensaio independente de isoforma medido em nmol/L; a\n // unidade nmol/L é mantida aqui por refletir o padrão laboratorial atual.\n // Limites anteriores (max=75) refletiam pontos de corte expressos em mg/dL,\n // gerando incompatibilidade com a unidade nmol/L declarada.\n Lipoprotein_a: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'nmol/L' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n Lymphocytes: {\n default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Lymphocytes_Abs: {\n default: { max: 4.0, min: 1.0, optimalMax: 3.0, optimalMin: 1.5, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Magnesium: {\n default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Magnesium_RBC: {\n default: { max: 6.8, min: 4.0, optimalMax: 6.0, optimalMin: 4.5, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n MCH: {\n default: { max: 33, min: 27, optimalMax: 32, optimalMin: 28, unit: 'pg' },\n source: 'pns-hemograma-2019',\n },\n\n MCHC: {\n default: { max: 36, min: 32, optimalMax: 35, optimalMin: 33, unit: 'g/dL' },\n source: 'pns-hemograma-2019',\n },\n\n MCV: {\n default: { max: 100, min: 80, optimalMax: 98, optimalMin: 82, unit: 'fL' },\n source: 'pns-hemograma-2019',\n },\n\n Mercury: {\n default: { max: 10, min: 0, optimalMax: 5, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n Microalbumin: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n source: 'kdigo-ckd-2024',\n },\n\n MMA: {\n default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\n },\n\n Monocytes: {\n default: { max: 8, min: 2, optimalMax: 7, optimalMin: 3, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Monocytes_Abs: {\n default: { max: 0.8, min: 0.2, optimalMax: 0.7, optimalMin: 0.3, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n MPV: {\n default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8.0, unit: 'fL' },\n source: 'pns-hemograma-2019',\n },\n\n // MPO: Meuwese 2007 (EPIC-Norfolk) — risco CV elevado >322 pmol/L\n Myeloperoxidase: {\n default: { max: 470, min: 0, optimalMax: 322, optimalMin: 0, unit: 'pmol/L' },\n source: 'meuwese-mpo-2007',\n },\n\n // WBC Differential (%)\n Neutrophils: {\n default: { max: 70, min: 40, optimalMax: 65, optimalMin: 50, unit: '%' },\n source: 'pns-hemograma-2019',\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 source: 'pns-hemograma-2019',\n },\n\n NonHDL_Cholesterol: {\n default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n NRBC: {\n default: { max: 0, min: 0, optimalMax: 0, optimalMin: 0, unit: '/100WBC' },\n source: 'tietz-7ed-2015',\n },\n\n NTproBNP: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'pg/mL' },\n source: 'sbc-ic-2018',\n },\n\n Oleic_Acid: {\n default: { max: 25.0, min: 15.0, optimalMax: 22.0, optimalMin: 18.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Omega3_Index: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n // Ômega-3 Total (% de ácidos graxos eritrocitários) — Harris & von Schacky\n // (2004) propõem ≥ 8% como zona ótima de proteção cardiovascular; valores\n // entre 4% e 8% representam risco intermediário, < 4% risco alto.\n // optimalMin anterior (5.5%) ficava em zona intermediária, contradizendo\n // a literatura e o próprio texto educacional do `platform`.\n Omega3_Total: {\n default: { max: 12.0, min: 3.0, optimalMax: 10.0, optimalMin: 8.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n Omega6_Total: {\n default: { max: 40.0, min: 20.0, optimalMax: 35.0, optimalMin: 25.0, unit: '%' },\n source: 'simopoulos-omega-ratio-2002',\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 source: 'simopoulos-omega-ratio-2002',\n },\n\n OmegaCheck: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n Palmitic_Acid: {\n default: { max: 30.0, min: 20.0, optimalMax: 27.0, optimalMin: 22.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Phosphorus: {\n default: { max: 4.5, min: 2.5, optimalMax: 4.0, optimalMin: 3.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Platelets: {\n default: { max: 400, min: 150, optimalMax: 350, optimalMin: 180, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Potassium: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.6, optimalMin: 3.8, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n Prealbumin: {\n default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Progesterona — varia drasticamente com a fase do ciclo menstrual.\n // O schema atual não modela fase do ciclo, então adotamos faixas amplas\n // por sexo: o `default` cobre homens/fase folicular/pós-menopausa; a\n // variante feminina expande até a faixa esperada de fase lútea\n // (~3-20 ng/mL). Interpretação correta exige correlação com a fase do\n // ciclo, indisponível neste contexto.\n Progesterone: {\n default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 0.9, min: 0.1, optimalMax: 0.6, optimalMin: 0.2, unit: 'ng/mL' },\n sex: 'M',\n },\n // Mulheres em idade reprodutiva: faixa que abarca fases folicular\n // (0.1-0.9 ng/mL) e lútea (3-20 ng/mL). Sem contexto de fase do ciclo,\n // valores intermediários (1-3 ng/mL) ficam em zona ambígua.\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 20.0, min: 0.1, optimalMax: 15.0, optimalMin: 0.2, unit: 'ng/mL' },\n sex: 'F',\n },\n // Pós-menopausa: valores tipicamente < 0.5 ng/mL (sem ovulação).\n {\n ageMin: 51,\n range: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n Prolactin: {\n default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\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 source: 'sturgeon-nacb-2008',\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 source: 'pns-hemograma-2019',\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 RDW: {\n default: { max: 14.5, min: 11.5, optimalMax: 14.0, optimalMin: 12.0, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Reticulocytes: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n SDMA: {\n default: { max: 0.6, min: 0.3, optimalMax: 0.5, optimalMin: 0.3, unit: 'umol/L' },\n source: 'schwedhelm-sdma-2011',\n },\n\n Selenium: {\n default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: 'mcg/L' },\n source: 'tietz-7ed-2015',\n },\n\n SHBG: {\n default: { max: 54, min: 18, optimalMax: 50, optimalMin: 20, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n SpecificGravity_Urine: {\n default: { max: 1.03, min: 1.005, optimalMax: 1.025, optimalMin: 1.01, unit: 'SG' },\n source: 'tietz-7ed-2015',\n },\n\n Stearic_Acid: {\n default: { max: 14.0, min: 8.0, optimalMax: 12.0, optimalMin: 10.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n T3Free: {\n default: { max: 4.2, min: 2.3, optimalMax: 3.8, optimalMin: 2.8, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n T3Reverse: {\n default: { max: 24, min: 10, optimalMax: 20, optimalMin: 12, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n },\n\n T4Free: {\n default: { max: 1.8, min: 0.8, optimalMax: 1.5, optimalMin: 1.0, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n },\n\n T4Total: {\n default: { max: 12.0, min: 4.5, optimalMax: 10.0, optimalMin: 6.0, unit: 'ug/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Testosterone: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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: 370, min: 250, optimalMax: 350, optimalMin: 280, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n TotalProtein: {\n default: { max: 8.3, min: 6.0, optimalMax: 7.8, optimalMin: 6.5, unit: 'g/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Trans_Fat_Index: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Transferrin: {\n default: { max: 360, min: 200, optimalMax: 340, optimalMin: 220, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n TransferrinSaturation: {\n default: { max: 50, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n source: 'tietz-7ed-2015',\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 // Triglicérides — SBC 2017/2025 permite dosagem não-jejum com corte distinto\n // (<175 mg/dL pós-prandial). Marcamos `preferred` para indicar que a faixa\n // padrão é de jejum, mas não bloqueamos interpretação em não-jejum.\n Triglycerides: {\n default: {\n fastingRequired: 'preferred',\n max: 150,\n min: 0,\n optimalMax: 100,\n optimalMin: 0,\n unit: 'mg/dL',\n },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n // TroponinI: 0.04 ng/mL = percentil 99 (ensaio Siemens TnI-Ultra)\n TroponinI: {\n default: { max: 0.04, min: 0, optimalMax: 0.02, optimalMin: 0, unit: 'ng/mL' },\n source: 'keller-tni-2013',\n },\n\n // TroponinT: 14 ng/L = percentil 99 hs-cTnT (ensaio Roche Elecsys 5ª geração)\n TroponinT: {\n default: { max: 14, min: 0, optimalMax: 10, optimalMin: 0, unit: 'ng/L' },\n source: 'giannitsis-hstnt-2010',\n },\n\n // TSH — 0.4–4.0 é a faixa de referência adulta geral. O alvo 2.5 µIU/mL é\n // específico do 1º trimestre gestacional (ATA 2017) e não se aplica a\n // não-gestantes; optimalMax=3.0 reflete o limite superior do tercil \"ótimo\"\n // sem invadir a faixa subclínica. Variante ageMin=65 mantém limite superior\n // expandido (tolerância fisiológica do eixo em idosos, SBEM 2013).\n TSH: {\n default: { max: 4.0, min: 0.4, optimalMax: 3.0, optimalMin: 1.0, unit: 'µIU/mL' },\n source: 'sbem-thyroid-2013',\n variants: [\n // Variantes gestacionais (ATA 2017 / SBEM): supressão fisiológica por hCG\n // no 1º trimestre, recuperação progressiva no 2º/3º. Trimestre-específicas\n // precedem a catch-all; catch-all cobre contexto gestante sem trimestre\n // conhecido.\n // optimalMin/optimalMax definem subfaixa \"alvo\" mais estreita que o\n // intervalo de referência — ex.: 1º tri aceita 0.1–2.5, mas o alvo\n // terapêutico é 0.5–2.5.\n {\n pregnant: true,\n pregnancyTrimester: 1,\n range: { max: 2.5, min: 0.1, optimalMax: 2.0, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 2,\n range: { max: 3.0, min: 0.2, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 3,\n range: { max: 3.0, min: 0.3, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n // Catch-all gestacional — usada quando o trimestre não é informado.\n // Adota a faixa mais conservadora (2º/3º trimestre: 0.2–3.0).\n {\n pregnant: true,\n range: { max: 3.0, min: 0.2, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\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 // Ureia — convenção brasileira (laboratórios reportam Ureia, não BUN).\n // Faixa adulta de 15-50 mg/dL (Ureia ≈ BUN × 2,14). Limites anteriores\n // (7-20 mg/dL) refletiam BUN/Nitrogênio Ureico, gerando falsos diagnósticos\n // de azotemia em pacientes com Ureia normal. LOINC 3094-0 (BUN) também\n // deve ser revisto em biomarkers.ts — ver issue #41.\n Urea: {\n default: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n UricAcid: {\n default: { max: 7.0, min: 2.5, optimalMax: 5.5, optimalMin: 3.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n pH_Urine: {\n default: { max: 8.0, min: 4.5, optimalMax: 7.0, optimalMin: 5.5, unit: 'pH' },\n source: 'tietz-7ed-2015',\n },\n\n HyalineCasts_Urine: {\n default: { max: 2, min: 0, optimalMax: 1, optimalMin: 0, unit: '/LPF' },\n source: 'tietz-7ed-2015',\n },\n\n RBC_Urine: {\n default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n SquamousEpithelial_Urine: {\n default: { max: 15, min: 0, optimalMax: 5, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n Leukocytes_Urine: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n Folate: {\n default: { max: 20, min: 3.9, optimalMax: 17, optimalMin: 5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminA: {\n default: { max: 100, min: 20, optimalMax: 80, optimalMin: 30, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB1: {\n default: { max: 180, min: 70, optimalMax: 150, optimalMin: 80, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB12: {\n default: { max: 900, min: 200, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB6: {\n default: { max: 50, min: 5, optimalMax: 40, optimalMin: 10, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminC: {\n default: { max: 2.0, min: 0.4, optimalMax: 1.5, optimalMin: 0.6, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Vitamina D — posicionamento conjunto SBEM/SBPC-ML 2017:\n // ≥20 ng/mL é desejável para população saudável <60 anos\n // ≥30 ng/mL é recomendado para grupos de risco (idosos, gestantes, DRC,\n // osteoporose, hiperparatireoidismo secundário).\n // A variante ageMin=60 cobre idosos. Gestação, doença renal crônica,\n // osteoporose e hiperparatireoidismo secundário também exigem min=30;\n // o tipo `BiomarkerReferenceRange` atual não expressa esses contextos\n // clínicos além de gestação e idade, portanto consumidores devem aplicar\n // o limiar ≥30 nessas populações quando souberem a comorbidade. Gestação\n // será modelada quando `pregnant: true` — aceita-se TODO até lá.\n // TODO(PR-vitd-pregnancy): adicionar variante `pregnant: true` com min=30\n // quando a modelagem de comorbidades chegar ao schema.\n VitaminD: {\n default: { max: 100, min: 20, optimalMax: 70, optimalMin: 40, unit: 'ng/mL' },\n source: 'ferreira-vitd-2017',\n variants: [\n {\n ageMin: 60,\n range: { max: 100, min: 30, optimalMax: 70, optimalMin: 40, unit: 'ng/mL' },\n sex: 'all',\n },\n ],\n },\n\n VitaminD_1_25: {\n default: { max: 72, min: 18, optimalMax: 60, optimalMin: 25, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminE: {\n default: { max: 17, min: 5.5, optimalMax: 14, optimalMin: 7, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n // VLDL — estimado clinicamente via TG/5 (método Friedewald). O corte de\n // referência deriva de triglicérides <150 mg/dL (SBC 2025, dislipidemias),\n // portanto VLDL <30. Friedewald-1972 permanece registrada como fonte do\n // método de cálculo, mas a faixa de referência tem respaldo na diretriz\n // SBC 2025.\n VLDL: {\n default: { max: 30, min: 2, optimalMax: 20, optimalMin: 5, unit: 'mg/dL' },\n source: 'sbc-lipids-2025',\n },\n\n WBC: {\n default: { max: 11.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Zinc: {\n default: { max: 120, min: 60, optimalMax: 100, optimalMin: 70, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n AndroidFatPct: {\n default: { max: 35, min: 10, optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'gallagher-bodyfat-2000',\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 source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'kelly-dxa-2009',\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 source: 'ofenheimer-vat-2020',\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: {\n max: 852,\n min: 0,\n optimalMax: 600,\n optimalMin: 0,\n unit: 'cm³',\n warningMax: 1837,\n },\n direction: 'lower-better',\n source: 'ge-corescan',\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 source: 'who-osteoporosis-1994',\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 source: 'who-osteoporosis-1994',\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 source: 'who-osteoporosis-1994',\n },\n\n Amylase: {\n default: { max: 100, min: 28, optimalMax: 90, optimalMin: 35, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n },\n\n Creatinine_Urine: {\n default: { max: 300, min: 20, optimalMax: 250, optimalMin: 40, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n Lipase: {\n default: { max: 60, min: 0, optimalMax: 50, optimalMin: 10, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n },\n\n Microalbumin_Urine: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n source: 'kdigo-ckd-2024',\n },\n\n PSA_Free: {\n default: { max: 1.5, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n PSA_FreeRatio: {\n default: { max: 100, min: 25, optimalMax: 100, optimalMin: 30, unit: '%' },\n source: 'sturgeon-nacb-2008',\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 source: 'who-obesity-2000',\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 source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n // Prothrombin Time\n ProthrombinTime: {\n default: { max: 13.5, min: 11, optimalMax: 13, optimalMin: 11, unit: 'seconds' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\n },\n\n // IgG - Immunoglobulin G\n IgG: {\n default: { max: 1600, min: 700, optimalMax: 1600, optimalMin: 700, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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 source: 'tietz-7ed-2015',\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, pregnancyTrimester, pregnant } = context;\n\n // Detect whether the biomarker has pregnancy-specific variants at all.\n // Se o biomarcador não modela gestação, uma usuária gestante deve continuar\n // recebendo a variante por sexo/idade (mais informativa que o default). Apenas\n // quando existe ao menos uma variante gestacional é que bloqueamos as variantes\n // não-gestacionais para contextos gestantes — evitando mistura de faixas.\n //\n // Precedência quando pregnant=true: variantes gestacionais têm precedência\n // absoluta sobre variantes etárias. Uma gestante de 65+ anos consultando\n // TSH recebe a faixa gestacional, não a variante ageMin=65. Isto é\n // intencional — em gestação, o eixo HPG domina sobre o envelhecimento\n // fisiológico. Casos raros de gestação pós-menopausa (FIV) seguem essa\n // regra; o consumidor que precise distinguir deve aplicar lógica de\n // contexto adicional.\n //\n // Tratamento de `pregnant: undefined` vs `false`: ambos são tratados como\n // \"não-gestante\" (fallback seguro). O consumidor deve setar pregnant: true\n // explicitamente para ativar variantes gestacionais; contexto sem a flag\n // recebe a faixa padrão da população geral.\n const hasPregnancyVariant = definition.variants.some((v) => v.pregnant === true);\n\n // Find matching variant (first match wins — more specific variants must be\n // listed first). Ordem obrigatória quando há variantes gestacionais:\n // 1. variantes trimestre-específicas (pregnant=true + pregnancyTrimester=N)\n // 2. catch-all gestacional (pregnant=true, sem trimester)\n // 3. variantes por sexo/idade não-gestacionais\n // Reordenar quebraria o matching; a verificação `variant.pregnancyTrimester\n // !== pregnancyTrimester` depende da catch-all vir por último.\n for (const variant of definition.variants) {\n if (variant.pregnant === true) {\n if (!pregnant) continue;\n // Variante com trimestre específico só casa quando o contexto também\n // especifica o mesmo trimestre. Variantes gestacionais sem trimestre\n // (catch-all) casam com qualquer contexto gestante, servindo de fallback.\n if (\n variant.pregnancyTrimester !== undefined &&\n variant.pregnancyTrimester !== pregnancyTrimester\n ) {\n continue;\n }\n } else if (pregnant && hasPregnancyVariant) {\n // Só pulamos variantes não-gestacionais se o biomarcador tem variantes\n // gestacionais; caso contrário, a variante por sexo/idade é aplicável.\n continue;\n }\n\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":[]}