@precisa-saude/fhir 0.37.0 → 0.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/biomarkers.cjs +2 -2
- package/dist/biomarkers.js +1 -1
- package/dist/{chunk-WKTDMR5P.cjs → chunk-A2R65X4X.cjs} +9 -9
- package/dist/{chunk-WKTDMR5P.cjs.map → chunk-A2R65X4X.cjs.map} +1 -1
- package/dist/{chunk-F7CC4SV5.cjs → chunk-AJUDODBT.cjs} +10 -10
- package/dist/{chunk-F7CC4SV5.cjs.map → chunk-AJUDODBT.cjs.map} +1 -1
- package/dist/{chunk-JES2ZLH5.cjs → chunk-BDS6CM7F.cjs} +30 -9
- package/dist/chunk-BDS6CM7F.cjs.map +1 -0
- package/dist/{chunk-YI5WYZCP.js → chunk-CVMOQDM2.js} +2 -2
- package/dist/{chunk-LWSKO7UV.js → chunk-CZLX33DZ.js} +2 -2
- package/dist/{chunk-H64L6SOV.cjs → chunk-DE7NHXIR.cjs} +7 -9
- package/dist/chunk-DE7NHXIR.cjs.map +1 -0
- package/dist/{chunk-M6AYGD7P.js → chunk-I6FCFMAO.js} +4 -4
- package/dist/{chunk-RPGJK7ZM.cjs → chunk-LSC7NHFE.cjs} +3 -3
- package/dist/{chunk-RPGJK7ZM.cjs.map → chunk-LSC7NHFE.cjs.map} +1 -1
- package/dist/{chunk-7TDZX5HO.js → chunk-O7SK2YUU.js} +6 -8
- package/dist/chunk-O7SK2YUU.js.map +1 -0
- package/dist/{chunk-AQTHAZLK.cjs → chunk-RWUFK5AN.cjs} +3 -3
- package/dist/{chunk-AQTHAZLK.cjs.map → chunk-RWUFK5AN.cjs.map} +1 -1
- package/dist/{chunk-3UCY4HPJ.js → chunk-VOBVUACD.js} +3 -3
- package/dist/{chunk-KTV4H2QQ.js → chunk-YCJUGK6D.js} +30 -9
- package/dist/chunk-YCJUGK6D.js.map +1 -0
- package/dist/cli.js +56 -15
- package/dist/converter.cjs +5 -5
- package/dist/converter.js +4 -4
- package/dist/importer.cjs +5 -5
- package/dist/importer.js +4 -4
- package/dist/index.cjs +33 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +28 -6
- package/dist/index.js.map +1 -1
- package/dist/reference-ranges.cjs +4 -4
- package/dist/reference-ranges.js +3 -3
- package/dist/units.cjs +3 -3
- package/dist/units.js +2 -2
- package/dist/validators.cjs +4 -4
- package/dist/validators.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-7TDZX5HO.js.map +0 -1
- package/dist/chunk-H64L6SOV.cjs.map +0 -1
- package/dist/chunk-JES2ZLH5.cjs.map +0 -1
- package/dist/chunk-KTV4H2QQ.js.map +0 -1
- /package/dist/{chunk-YI5WYZCP.js.map → chunk-CVMOQDM2.js.map} +0 -0
- /package/dist/{chunk-LWSKO7UV.js.map → chunk-CZLX33DZ.js.map} +0 -0
- /package/dist/{chunk-M6AYGD7P.js.map → chunk-I6FCFMAO.js.map} +0 -0
- /package/dist/{chunk-3UCY4HPJ.js.map → chunk-VOBVUACD.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-H64L6SOV.cjs","../src/reference-ranges.ts"],"names":[],"mappings":"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","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-H64L6SOV.cjs","sourcesContent":[null,"/**\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 * Que tipo de afirmação a faixa faz. As três respondem perguntas diferentes, e\n * uma banda de \"faixa normal\" que as misture diz coisas diferentes conforme o\n * marcador.\n *\n * - `reference-interval`: o intervalo de referência do ensaio, tirado de uma\n * população de referência saudável (percentis centrais, ou o percentil 99\n * no caso das troponinas). Estar fora dele é estar fora do esperado para\n * quem não tem a doença.\n * - `decision-threshold`: limiar de decisão de diretriz ou de estudo de risco\n * (meta de LDL, corte de pré-diabetes, estágio de DRC). Diz o que fazer, e\n * não como o valor se distribui em gente saudável.\n * - `population`: como o valor se distribui numa população, sem filtrar por\n * saúde (NHANES, coortes de base populacional). Descreve, não julga.\n *\n * Em FHIR, o primeiro vira `normal` e o segundo `recommended` no\n * `referenceRange.type`; o terceiro não tem código próprio no\n * `referencerange-meaning`. Ver `referenceRangeMeaning`.\n */\nexport type RangeKind = 'reference-interval' | 'decision-threshold' | 'population';\n\n/**\n * Se um limite da faixa é corte clínico ou está ali para o desenho.\n *\n * `display` é o limite que existe para a faixa ter dois lados no gauge ou na\n * banda, e que não deve virar flag: o teto de 100 mg/dL do HDL, o piso 2 da\n * HbA1c. Ausente quer dizer `clinical`, que é o caso comum e o comportamento\n * de sempre da comparação crua.\n */\nexport type BoundKind = 'clinical' | 'display';\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 /**\n * Tipo da faixa. Propagado do `BiomarkerRangeDefinition` (ou da variante que\n * casou) no momento da consulta, como o `source`.\n */\n kind?: RangeKind;\n max?: number;\n /** Ver `BoundKind`. Ausente vale `clinical`. */\n maxKind?: BoundKind;\n min?: number;\n /** Ver `BoundKind`. Ausente vale `clinical`. */\n minKind?: BoundKind;\n optimalMax?: number;\n optimalMin?: number;\n /**\n * Chave de fonte bibliográfica (ex.: `'sbc-lipids-2025'`). Propagada\n * do `BiomarkerRangeDefinition` no momento da consulta; ausente em\n * faixas declaradas diretamente sem uma definição completa.\n */\n source?: string;\n unit: string;\n warningMax?: number;\n /**\n * Análogo de `warningMax` para marcadores `higher-better`. Define o limite\n * inferior da zona de atenção (âmbar): valores entre `warningMin` e `min`\n * são âmbar e abaixo de `warningMin` são vermelhos. (`warningMax` cobre o\n * caso `lower-better`, com a zona âmbar acima de `max`.)\n */\n warningMin?: 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 /**\n * Tipo da faixa desta variante, quando ela vem de outra fonte que a da\n * definição. Ausente herda o `kind` da definição.\n */\n kind?: RangeKind;\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 /**\n * Para que lado o marcador melhora. Serve à cor e ao gauge.\n *\n * Não decide flag: se um limite é corte clínico é o `minKind`/`maxKind` da\n * faixa que diz, e quem compara valor com faixa usa `flagAgainstCatalogRange`.\n * Até a 0.33 o `direction` fazia os dois trabalhos, e eles se separam na\n * composição corporal: o `BodyFatPct` é `lower-better` e o piso dele é\n * clínico.\n */\n direction?: RangeDirection;\n /**\n * Tipo da faixa. Opcional no tipo para não quebrar quem monta definições\n * próprias; todo o catálogo declara, e um teste garante.\n */\n kind?: RangeKind;\n /**\n * O código LOINC para o qual a faixa vale, quando ela depende do ensaio ou\n * da convenção de medida: o D-dímero em FEU, a troponina de um ensaio\n * específico, a Lp(a) molar. Um teste exige que seja o mesmo código do\n * biomarcador em `biomarkers.ts`.\n *\n * Só nessas faixas, e não em todas: a maioria das fontes (Tietz, a PNS) não\n * é de um código ou ensaio, e declarar ali só copiaria o código do catálogo\n * sem conferir nada. Foi esse descasamento, entre o código DDU e a faixa FEU\n * do D-dímero, que nenhum teste de eixo pegou.\n */\n loinc?: string;\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 kind: 'decision-threshold',\n source: 'tietz-7ed-2015',\n },\n\n Adiponectin: {\n default: { max: 26, min: 4, optimalMax: 20, optimalMin: 8, unit: 'mcg/mL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'nemeth-adma-2017',\n },\n\n AFP: {\n default: { max: 10, min: 0, optimalMax: 8, optimalMin: 0, unit: 'ng/mL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'pns-bioquimica-2019',\n },\n\n AlkalinePhosphatase: {\n default: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n AntiThyroglobulin: {\n default: { max: 115, min: 0, optimalMax: 40, optimalMin: 0, unit: 'IU/mL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n AntiTPO: {\n default: { max: 34, min: 0, optimalMax: 9, optimalMin: 0, unit: 'IU/mL' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\n source: 'rumberger-cac-1999',\n },\n\n ApoA1: {\n default: { max: 200, min: 100, optimalMax: 180, optimalMin: 120, unit: 'mg/dL' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\n source: 'sbc-lipids-2025',\n },\n\n ApoCIII: {\n default: { max: 10, min: 0, optimalMax: 7, optimalMin: 0, unit: 'mg/dL' },\n kind: 'decision-threshold',\n source: 'khetarpal-apociii-2016',\n },\n\n Omega6_AA: {\n default: { max: 15.0, min: 5.0, optimalMax: 12.0, optimalMin: 7.0, unit: '%' },\n kind: 'decision-threshold',\n source: 'simopoulos-omega-ratio-2002',\n },\n\n // Razão Ácido Araquidônico/EPA (sangue total) — `lower-better`: razão menor =\n // menos eicosanoides pró-inflamatórios. NÃO há intervalo de referência\n // validado em periódico para esta razão; o intervalo 3,7–40,7 é o de\n // referência laboratorial do ensaio Quest/Cleveland HeartLab OmegaCheck®\n // (população interna do laboratório, sem fonte primária publicada). É\n // corroborado por Torrissen 2025 (>500 mil amostras de sangue total): a\n // mediana brasileira (≈18,8) e as ocidentais (EUA ≈22,3; Europa ≈14,2) caem\n // dentro do intervalo. Sem `optimal*`: não há corte ótimo de AA/EPA com fonte.\n // Em telas de relatório único, prefira o intervalo impresso pelo laboratório.\n AA_EPA_Ratio: {\n default: { max: 40.7, min: 3.7, minKind: 'display', unit: '' },\n direction: 'lower-better',\n kind: 'population',\n source: 'torrissen-omega3-dbs-2025',\n },\n\n Arsenic: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mcg/L' },\n kind: 'decision-threshold',\n source: 'nr7-pcmso-2020',\n },\n\n AST: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n kind: 'reference-interval',\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` (%) fica sem faixa de propósito e `Basophils_Abs` usa os limites da\n // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.\n Basophils_Abs: {\n default: { max: 0.072, min: 0, unit: 'K/uL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n variants: [\n { ageMin: 18, range: { max: 0.062, min: 0, unit: 'K/uL' }, sex: 'M' },\n { ageMin: 18, range: { max: 0.072, min: 0, unit: 'K/uL' }, sex: 'F' },\n ],\n },\n\n Bicarbonate: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n CA125: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/mL' },\n kind: 'reference-interval',\n source: 'sturgeon-nacb-2008',\n },\n\n CA199: {\n default: { max: 37, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/mL' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'sturgeon-nacb-2008',\n },\n\n // CK: valores conservadores baseados em faixas laboratoriais típicas\n // CK — o teto masculino era 190 U/L, bem abaixo de qualquer limite superior\n // derivado de população: 314 no Kalaria 2026 (homens brancos) e 382 no McLeod\n // 2016 (NHANES, brancos, p97.5). Sinalizava como alterado um monte de gente\n // com músculo, exercício recente ou simplesmente CK alto normal.\n //\n // Passa a 314, que é o mais baixo entre os limites populacionais disponíveis\n // — a escolha que menos deixa passar elevação real. O `optimalMax` fica em\n // 170, então a faixa 170–314 lê como \"acima do ótimo, dentro da referência\",\n // e não como alteração.\n //\n // O teto feminino de 170 já coincide com o limite de mulheres brancas do\n // mesmo estudo, e fica como está.\n //\n // Estratificação por ancestralidade NÃO foi adotada, apesar de o estudo\n // mostrar limites bem maiores em pessoas negras (389 ♀ / 757 ♂). As\n // categorias do estudo são britânicas e não mapeiam na população brasileira:\n // SUAREZ-KURTZ et al. (Front Pharmacol, 2012, PMID 23133420) mostram que a\n // variação relevante é contínua entre brasileiros e \"não é capturada pela\n // autodeclaração de raça/Cor\". Ver a issue #3 para a decisão registrada.\n CK: {\n default: { max: 314, min: 30, optimalMax: 170, optimalMin: 40, unit: 'U/L' },\n kind: 'reference-interval',\n source: 'kalaria-ck-ri-2026',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Copper: {\n default: { max: 175, min: 70, optimalMax: 150, optimalMin: 85, unit: 'mcg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Cortisol: {\n default: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: 'mcg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n // D-Dímero — exame de exclusão de TEV (tromboembolismo venoso) com\n // ponto de corte único, não uma faixa graduada. Valores < 500 ng/mL\n // têm alto valor preditivo negativo; acima disso a investigação\n // clínica decide. Removidos `optimalMin/optimalMax` porque a\n // dicotomia clínica (positivo/negativo para exclusão) não é melhor\n // representada por zonas verde/amarela. Em pacientes > 50 anos,\n // diretrizes (ESC 2019, ACEP) recomendam corte ajustado pela idade:\n // idade × 10 ng/mL (até 750 ng/mL aos 75+).\n //\n // Todos os valores são em FEU (unidades equivalentes de fibrinogênio), e o\n // código do catálogo é o do FEU (48065-7). Em DDU os cortes caem pela\n // metade; não existe faixa DDU aqui.\n DDimer: {\n default: { max: 500, min: 0, unit: 'ng/mL' },\n direction: 'lower-better',\n kind: 'decision-threshold',\n loinc: '48065-7',\n source: 'wells-ddimer-2003',\n variants: [\n // Corte ajustado por idade — ESC 2019 (Konstantinides et al.) e\n // ACEP recomendam em pacientes não gestantes ≥ 50 anos com\n // probabilidade clínica baixa/intermediária de TEV. Fórmula:\n // idade × 10 ng/mL. Aproximação por faixas etárias.\n { ageMax: 59, ageMin: 50, range: { max: 590, min: 0, unit: 'ng/mL' }, sex: 'all' },\n { ageMax: 69, ageMin: 60, range: { max: 690, min: 0, unit: 'ng/mL' }, sex: 'all' },\n { ageMin: 70, range: { max: 750, min: 0, unit: 'ng/mL' }, sex: 'all' },\n ],\n },\n\n Omega3_DHA: {\n default: { max: 8.0, min: 2.0, optimalMax: 6.5, optimalMin: 3.5, unit: '%' },\n kind: 'decision-threshold',\n source: 'harris-omega3-2004',\n },\n\n DHEAS: {\n default: { max: 500, min: 100, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\n source: 'harris-omega3-2004',\n },\n\n eGFR: {\n default: {\n max: 120,\n maxKind: 'display',\n min: 60,\n optimalMax: 120,\n optimalMin: 90,\n unit: 'mL/min/1.73m²',\n },\n // KDIGO 2024: TFG 60-89 (G2) sem marcador de lesão renal não é DRC, em\n // nenhuma faixa etária. A variante por idade que existia aqui rebaixava o\n // piso só para 60+ e ainda limitava o teto a 90, o que sinalizava como\n // alterado qualquer idoso com função preservada.\n kind: 'decision-threshold',\n source: 'kdigo-ckd-2024',\n },\n\n // `Eosinophils` (%) fica sem faixa de propósito e `Eosinophils_Abs` usa os limites da\n // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.\n Eosinophils_Abs: {\n default: { max: 0.66, min: 0, unit: 'K/uL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n variants: [\n { ageMin: 18, range: { max: 0.66, min: 0, unit: 'K/uL' }, sex: 'M' },\n { ageMin: 18, range: { max: 0.55, min: 0, unit: 'K/uL' }, sex: 'F' },\n ],\n },\n\n Omega3_EPA: {\n default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1.0, unit: '%' },\n kind: 'decision-threshold',\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 kind: 'decision-threshold',\n source: 'harris-omega3-2004',\n },\n\n ESR: {\n default: { max: 20, min: 0, optimalMax: 10, optimalMin: 0, unit: 'mm/hr' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Estradiol: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'pg/mL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n FolicAcid: {\n default: { max: 20, min: 3, optimalMax: 15, optimalMin: 5, unit: 'ng/mL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 61, min: 8, minKind: 'display', optimalMax: 40, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 36, min: 5, minKind: 'display', 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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n // A faixa é de jejum, então mora na definição que afirma jejum. Glicose\n // genérica (`Glucose`, `2345-7`) ficou sem faixa de propósito: a SBD 2024\n // publica o intervalo de jejum, não o de coleta casual, e inventar um\n // intervalo sem fonte é pior do que não ter. Na prática o laudo costuma\n // imprimir a própria faixa, e é ela que o consumidor usa.\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_Fasting: {\n default: {\n fastingRequired: 'strict',\n max: 100,\n min: 54,\n optimalMax: 90,\n optimalMin: 70,\n unit: 'mg/dL',\n },\n kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n GrowthHormone: {\n default: { max: 5, min: 0, optimalMax: 3, optimalMin: 0, unit: 'ng/mL' },\n kind: 'reference-interval',\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, minKind: 'display', optimalMax: 5.3, optimalMin: 4.5, unit: '%' },\n kind: 'decision-threshold',\n source: 'sbd-diabetes-2024',\n },\n\n Hct: {\n default: { max: 50, min: 36, optimalMax: 48, optimalMin: 40, unit: '%' },\n kind: 'reference-interval',\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: {\n max: 100,\n maxKind: 'display',\n min: 40,\n optimalMax: 100,\n optimalMin: 50,\n unit: 'mg/dL',\n },\n direction: 'higher-better',\n kind: 'decision-threshold',\n source: 'sbc-lipids-2025',\n variants: [\n {\n ageMin: 18,\n range: {\n max: 100,\n maxKind: 'display',\n min: 40,\n optimalMax: 100,\n optimalMin: 45,\n unit: 'mg/dL',\n },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: {\n max: 100,\n maxKind: 'display',\n min: 50,\n optimalMax: 100,\n optimalMin: 55,\n unit: 'mg/dL',\n },\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: {\n max: 17886,\n maxKind: 'display',\n min: 4334,\n optimalMax: 17886,\n optimalMin: 6729,\n unit: 'nmol/L',\n },\n direction: 'higher-better',\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 — três faixas do estudo BRAMS (Geloneze et al., 2009) validado em\n // população urbana brasileira: ótimo até 1.5; sensibilidade reduzida (zona de\n // atenção) entre 1.5 e 2.71; resistência à insulina acima de 2.71. Tietz 7ª\n // ed. não publica corte próprio de HOMA-IR. `max` (1.5) delimita o verde,\n // `warningMax` (2.71) o âmbar e acima disso o vermelho.\n HOMA_IR: {\n default: {\n fastingRequired: 'strict',\n max: 1.5,\n min: 0,\n unit: '',\n warningMax: 2.71,\n },\n direction: 'lower-better',\n kind: 'decision-threshold',\n source: 'geloneze-brams-2009',\n },\n\n Homocysteine: {\n default: { max: 15, min: 4, minKind: 'display', optimalMax: 10, optimalMin: 5, unit: 'umol/L' },\n direction: 'lower-better',\n kind: 'reference-interval',\n source: 'selhub-homocysteine-1999',\n },\n\n IGF1: {\n default: { max: 350, min: 100, optimalMax: 300, optimalMin: 150, unit: 'ng/mL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n ImmatureGranulocytes: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n kind: 'reference-interval',\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: 'uIU/mL',\n },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Iron: {\n default: { max: 170, min: 60, optimalMax: 140, optimalMin: 80, unit: 'mcg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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: {\n max: 485,\n min: 121,\n minKind: 'display',\n optimalMax: 215,\n optimalMin: 121,\n unit: 'nmol/L',\n },\n direction: 'lower-better',\n kind: 'reference-interval',\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: {\n max: 2185,\n min: 1016,\n minKind: 'display',\n optimalMax: 1138,\n optimalMin: 1016,\n unit: 'nmol/L',\n },\n direction: 'lower-better',\n kind: 'reference-interval',\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: {\n max: 250.0,\n maxKind: 'display',\n min: 217.4,\n optimalMax: 250.0,\n optimalMin: 222.9,\n unit: 'Angstrom',\n },\n direction: 'higher-better',\n kind: 'reference-interval',\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: {\n max: 441,\n min: 123,\n minKind: 'display',\n optimalMax: 142,\n optimalMin: 123,\n unit: 'nmol/L',\n },\n direction: 'lower-better',\n kind: 'reference-interval',\n source: 'caulfield-ionmobility-2008',\n },\n\n Lead: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: 'mcg/dL' },\n kind: 'decision-threshold',\n source: 'nr7-pcmso-2020',\n },\n\n Leptin: {\n default: { max: 15, min: 2, minKind: 'clinical', optimalMax: 12, optimalMin: 3, unit: 'ng/mL' },\n direction: 'lower-better',\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: {\n max: 10,\n min: 1,\n minKind: 'clinical',\n optimalMax: 8,\n optimalMin: 2,\n unit: 'ng/mL',\n },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: {\n max: 25,\n min: 4,\n minKind: 'clinical',\n optimalMax: 18,\n optimalMin: 5,\n unit: 'ng/mL',\n },\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\n loinc: '43583-4',\n source: 'sbc-lipids-2025',\n },\n\n // `Lymphocytes` (%) fica sem faixa de propósito e `Lymphocytes_Abs` usa os limites da\n // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.\n Lymphocytes_Abs: {\n default: { max: 3.414, min: 0.72, unit: 'K/uL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n variants: [\n { ageMin: 18, range: { max: 3.37, min: 0.72, unit: 'K/uL' }, sex: 'M' },\n { ageMin: 18, range: { max: 3.414, min: 0.796, unit: 'K/uL' }, sex: 'F' },\n ],\n },\n\n Magnesium: {\n default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: 'mg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n MCH: {\n default: { max: 33, min: 27, optimalMax: 32, optimalMin: 28, unit: 'pg' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n },\n\n MCHC: {\n default: { max: 36, min: 32, optimalMax: 35, optimalMin: 33, unit: 'g/dL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n },\n\n MCV: {\n default: { max: 100, min: 80, optimalMax: 98, optimalMin: 82, unit: 'fL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n },\n\n Mercury: {\n default: { max: 10, min: 0, optimalMax: 5, optimalMin: 0, unit: 'mcg/L' },\n kind: 'decision-threshold',\n source: 'nr7-pcmso-2020',\n },\n\n Microalbumin: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n kind: 'decision-threshold',\n source: 'kdigo-ckd-2024',\n },\n\n MMA: {\n default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: 'nmol/L' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n // `Monocytes` (%) fica sem faixa de propósito e `Monocytes_Abs` usa os limites da\n // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.\n Monocytes_Abs: {\n default: { max: 0.812, min: 0.011, unit: 'K/uL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n variants: [\n { ageMin: 18, range: { max: 0.812, min: 0.011, unit: 'K/uL' }, sex: 'M' },\n { ageMin: 18, range: { max: 0.692, min: 0.022, unit: 'K/uL' }, sex: 'F' },\n ],\n },\n\n MPV: {\n default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8.0, unit: 'fL' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\n source: 'meuwese-mpo-2007',\n },\n\n // Leucograma diferencial em percentual (`Neutrophils`, `Lymphocytes`,\n // `Monocytes`, `Eosinophils`, `Basophils`) fica sem faixa de propósito.\n // As faixas em % que existiam aqui citavam `pns-hemograma-2019`, mas o\n // artigo (ROSENFELD et al., Rev. Bras. Epidemiol., v. 22, supl. 2, 2019,\n // DOI 10.1590/1980-549720190003.supl.2) publica o diferencial só em\n // contagem absoluta por mm³, separado por sexo (Tabela 2: basófilos 0–62\n // em homens e 0–72 em mulheres, eosinófilos 0–660 e 0–550, e assim por\n // diante). Não há intervalo percentual em nenhuma tabela. Sem fonte, a\n // lacuna é melhor que um intervalo inventado: o consumidor usa a faixa\n // impressa no laudo, como já acontece com `Glucose`.\n //\n // Diferencial absoluto (`*_Abs`): limites inferior e superior da Tabela 2\n // do mesmo artigo, por sexo, exatamente como publicados. São limites da\n // distribuição amostral de adultos (18 anos ou mais), não cortes clínicos.\n // O artigo informa células/mm³ (= células/µL); aqui a unidade é K/uL, então\n // cada limite foi dividido por 1.000 sem arredondar (62/mm³ = 0,062 K/uL).\n // O artigo não publica faixa ótima, por isso não há optimalMin/optimalMax.\n // Quando o sexo não é informado, o default é a união das duas faixas\n // (menor mínimo e maior máximo entre homens e mulheres).\n Neutrophils_Abs: {\n default: { max: 6.474, min: 0.576, unit: 'K/uL' },\n kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n variants: [\n { ageMin: 18, range: { max: 5.971, min: 0.576, unit: 'K/uL' }, sex: 'M' },\n { ageMin: 18, range: { max: 6.474, min: 0.612, unit: 'K/uL' }, sex: 'F' },\n ],\n },\n\n NonHDL_Cholesterol: {\n default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n kind: 'decision-threshold',\n source: 'sbc-lipids-2025',\n },\n\n NRBC: {\n default: { max: 0, min: 0, optimalMax: 0, optimalMin: 0, unit: '/100WBC' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n NTproBNP: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'pg/mL' },\n kind: 'decision-threshold',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\n source: 'simopoulos-omega-ratio-2002',\n },\n\n Omega6_Omega3_Ratio: {\n default: {\n max: 10.0,\n min: 1.0,\n minKind: 'display',\n optimalMax: 4.0,\n optimalMin: 1.0,\n unit: '',\n },\n direction: 'lower-better',\n kind: 'decision-threshold',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Platelets: {\n default: { max: 400, min: 150, optimalMax: 350, optimalMin: 180, unit: 'K/uL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Prealbumin: {\n default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: 'mg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'schwedhelm-sdma-2011',\n },\n\n Selenium: {\n default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: 'µg/L' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n SHBG: {\n default: { max: 54, min: 18, optimalMax: 50, optimalMin: 20, unit: 'nmol/L' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n T3Reverse: {\n default: { max: 24, min: 10, optimalMax: 20, optimalMin: 12, unit: 'ng/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Testosterone: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Transferrin: {\n default: { max: 360, min: 200, optimalMax: 340, optimalMin: 220, unit: 'mg/dL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n TransferrinSaturation: {\n default: { max: 50, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n loinc: '49563-0',\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 kind: 'reference-interval',\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: 'uIU/mL' },\n kind: 'reference-interval',\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: 'uIU/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: 'uIU/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: 'uIU/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: 'uIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 65,\n range: { max: 6.0, min: 0.4, optimalMax: 4.0, optimalMin: 1.0, unit: 'uIU/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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n HyalineCasts_Urine: {\n default: { max: 2, min: 0, optimalMax: 1, optimalMin: 0, unit: '/LPF' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n RBC_Urine: {\n default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: '/HPF' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n SquamousEpithelial_Urine: {\n default: { max: 15, min: 0, optimalMax: 5, optimalMin: 0, unit: '/HPF' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Leukocytes_Urine: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: '/HPF' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Folate: {\n default: { max: 20, min: 3.9, optimalMax: 17, optimalMin: 5, unit: 'ng/mL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n VitaminA: {\n default: { max: 100, min: 20, optimalMax: 80, optimalMin: 30, unit: 'mcg/dL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n VitaminB1: {\n default: { max: 180, min: 70, optimalMax: 150, optimalMin: 80, unit: 'nmol/L' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n VitaminB12: {\n default: { max: 900, min: 200, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n VitaminB6: {\n default: { max: 50, min: 5, optimalMax: 40, optimalMin: 10, unit: 'ng/mL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n VitaminE: {\n default: { max: 17, min: 5.5, optimalMax: 14, optimalMin: 7, unit: 'mg/L' },\n kind: 'reference-interval',\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, minKind: 'display', optimalMax: 20, optimalMin: 5, unit: 'mg/dL' },\n kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'pns-hemograma-2019',\n },\n\n Zinc: {\n default: { max: 120, min: 60, optimalMax: 100, optimalMin: 70, unit: 'mcg/dL' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n AndroidFatPct: {\n default: { max: 35, min: 10, minKind: 'display', optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 30, min: 10, minKind: 'display', optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 42, min: 15, minKind: 'display', optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n // Revisão sistemática de 78 estudos, catorze países, incluindo população\n // centro-americana: o limite médio ficou em 0,50 para homens e para\n // mulheres, e é o mesmo para os dois sexos, daí não haver variantes.\n //\n // Só `max`. O limite inferior não entra porque a revisão não estabelece\n // piso, e inventar um transformaria em alteração um valor que a fonte não\n // classifica.\n // O EWGSOP2 traz um único corte, <31 cm, e o enuncia restrito: \"Calf\n // circumference has been shown to predict performance and survival in\n // older people (cut-off point <31 cm)\". Por isso entra como variante por\n // idade, e não como padrão para todo adulto — estender o número para\n // gente de 30 anos seria ir além do que a fonte diz.\n //\n // O padrão fica sem `min` de propósito: não há corte publicado para\n // adulto jovem, e o consumidor lê a medida sem zona em vez de ler uma\n // zona inventada.\n //\n // Como interpretar, por faixa etária:\n //\n // 60+ a medida tem corte e classifica: abaixo de 31 cm é sinal de\n // alerta para perda de massa muscular.\n // <60 a medida é válida e comparável com ela mesma ao longo do tempo,\n // mas não classifica. Uma queda consistente entre exames importa\n // mais do que o valor absoluto num único dia, e é assim que o\n // conteúdo do marcador orienta o usuário.\n //\n // A ausência de zona abaixo dos 60 não é lacuna a preencher com o número\n // dos idosos: massa muscular tem trajetória própria por idade, e o\n // consenso deriva o corte justamente na faixa em que a perda vira\n // desfecho.\n //\n // Recência conferida em 28/08/2026. Existe consenso mais novo, o GLIS\n // 2024 (Age and Ageing, DOI 10.1093/ageing/afae052), primeiro global\n // sobre sarcopenia, com Cruz-Jentoft e Chen entre os autores — ou seja,\n // os líderes do EWGSOP2 e do AWGS. Ele **não** substitui este corte: é\n // conceitual, e o próprio texto diz que servirá \"to develop an\n // operational definition for clinical and research settings\". Enquanto a\n // definição operacional não sai, o EWGSOP2 segue sendo a referência de\n // ponto de corte.\n //\n // Nota: o consenso asiático (AWGS 2019) usa 34 cm para homens e 33 para\n // mulheres, em outra população e como triagem, não como corte de massa.\n // Os números não são intercambiáveis.\n CalfCircumference: {\n default: { unit: 'cm' },\n direction: 'higher-better',\n kind: 'decision-threshold',\n source: 'ewgsop2-2019',\n // O corte não é específico por sexo na fonte; as duas variantes existem\n // porque `RangeVariant` exige o campo, e carregam o mesmo número.\n variants: [\n { ageMin: 60, range: { min: 31, unit: 'cm' }, sex: 'F' },\n { ageMin: 60, range: { min: 31, unit: 'cm' }, sex: 'M' },\n ],\n },\n\n WaistToHeightRatio: {\n default: { max: 0.5, unit: '' },\n direction: 'lower-better',\n kind: 'decision-threshold',\n source: 'browning-ashwell-2010',\n },\n\n AndroidGynoidRatio: {\n default: { max: 1.2, min: 0.5, minKind: 'display', optimalMax: 1.0, optimalMin: 0.6, unit: '' },\n direction: 'lower-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: {\n max: 1.2,\n min: 0.6,\n minKind: 'display',\n optimalMax: 1.0,\n optimalMin: 0.7,\n unit: '',\n },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: {\n max: 1.0,\n min: 0.4,\n minKind: 'display',\n optimalMax: 0.8,\n optimalMin: 0.5,\n unit: '',\n },\n sex: 'F',\n },\n ],\n },\n\n BMC: {\n default: {\n max: 3.5,\n maxKind: 'display',\n min: 2.0,\n optimalMax: 3.2,\n optimalMin: 2.3,\n unit: 'kg',\n },\n direction: 'higher-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: {\n max: 4.0,\n maxKind: 'display',\n min: 2.5,\n optimalMax: 3.5,\n optimalMin: 2.8,\n unit: 'kg',\n },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: {\n max: 3.0,\n maxKind: 'display',\n min: 1.8,\n optimalMax: 2.7,\n optimalMin: 2.0,\n unit: 'kg',\n },\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, minKind: 'clinical', optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n kind: 'decision-threshold',\n source: 'gallagher-bodyfat-2000',\n variants: [\n // Men — age brackets\n {\n ageMax: 25,\n ageMin: 18,\n range: { max: 25, min: 5, minKind: 'clinical', optimalMax: 20, optimalMin: 10, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 26, min: 5, minKind: 'clinical', optimalMax: 21, optimalMin: 11, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 27, min: 5, minKind: 'clinical', optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 28, min: 5, minKind: 'clinical', optimalMax: 23, optimalMin: 13, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 56,\n range: { max: 29, min: 5, minKind: 'clinical', 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, minKind: 'clinical', optimalMax: 28, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 33, min: 13, minKind: 'clinical', optimalMax: 29, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 34, min: 13, minKind: 'clinical', optimalMax: 30, optimalMin: 19, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 35, min: 13, minKind: 'clinical', optimalMax: 31, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n {\n ageMin: 56,\n range: { max: 36, min: 13, minKind: 'clinical', optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n FatFreeMass: {\n default: { max: 80, maxKind: 'display', min: 40, optimalMax: 70, optimalMin: 45, unit: 'kg' },\n direction: 'higher-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 90, maxKind: 'display', min: 50, optimalMax: 80, optimalMin: 55, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 60, maxKind: 'display', min: 35, optimalMax: 52, optimalMin: 38, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n FatMass: {\n default: { max: 30, min: 5, minKind: 'clinical', optimalMax: 20, optimalMin: 8, unit: 'kg' },\n direction: 'lower-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 25, min: 5, minKind: 'clinical', optimalMax: 18, optimalMin: 7, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 30, min: 8, minKind: 'clinical', optimalMax: 22, optimalMin: 10, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n GynoidFatPct: {\n default: { max: 45, min: 15, minKind: 'display', optimalMax: 35, optimalMin: 20, unit: '%' },\n direction: 'lower-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 35, min: 12, minKind: 'display', optimalMax: 28, optimalMin: 15, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 50, min: 20, minKind: 'display', optimalMax: 40, optimalMin: 25, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n LeanMass: {\n default: { max: 75, maxKind: 'display', min: 35, optimalMax: 65, optimalMin: 40, unit: 'kg' },\n direction: 'higher-better',\n kind: 'population',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 85, maxKind: 'display', min: 45, optimalMax: 75, optimalMin: 50, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 55, maxKind: 'display', 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 kind: 'population',\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 kind: 'population',\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 kind: 'decision-threshold',\n source: 'ge-corescan',\n },\n\n BMD_Total: {\n default: {\n max: 1.4,\n maxKind: 'display',\n min: 0.9,\n optimalMax: 1.3,\n optimalMin: 1.0,\n unit: 'g/cm²',\n },\n direction: 'higher-better',\n kind: 'decision-threshold',\n source: 'who-osteoporosis-1994',\n },\n\n TScore_Total: {\n default: {\n max: 4.0,\n maxKind: 'display',\n min: -1.0,\n optimalMax: 2.0,\n optimalMin: -0.5,\n unit: '',\n },\n direction: 'higher-better',\n kind: 'decision-threshold',\n source: 'who-osteoporosis-1994',\n },\n\n ZScore_Total: {\n default: {\n max: 2.0,\n maxKind: 'display',\n min: -2.0,\n optimalMax: 1.0,\n optimalMin: -1.0,\n unit: '',\n },\n direction: 'higher-better',\n kind: 'decision-threshold',\n source: 'who-osteoporosis-1994',\n },\n\n Amylase: {\n default: { max: 100, min: 28, optimalMax: 90, optimalMin: 35, unit: 'U/L' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Creatinine_Urine: {\n default: { max: 300, min: 20, optimalMax: 250, optimalMin: 40, unit: 'mg/dL' },\n kind: 'reference-interval',\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 kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Lipase: {\n default: { max: 60, min: 0, optimalMax: 50, optimalMin: 10, unit: 'U/L' },\n kind: 'reference-interval',\n source: 'tietz-7ed-2015',\n },\n\n Microalbumin_Urine: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n kind: 'decision-threshold',\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 kind: 'reference-interval',\n source: 'sturgeon-nacb-2008',\n },\n\n // Relação PSA livre/total — `higher-better`: razão maior = menor risco de\n // câncer de próstata, logo não há limite superior \"ruim\" (acima do normal é\n // verde). Faixas alinhadas à tabela clínica: ≥25% baixo risco (verde),\n // 10–25% atenção — intermediário/moderado (âmbar), <10% alto risco >50%\n // (vermelho). Limites: `min` (25) é o piso do verde e `warningMin` (10) o\n // piso do âmbar — o vermelho é estritamente abaixo de 10% (< 10%); 10%\n // pertence ao âmbar, conforme a faixa \"10–15% moderado\" da tabela.\n PSA_FreeRatio: {\n default: {\n max: 100,\n maxKind: 'display',\n min: 25,\n optimalMax: 100,\n optimalMin: 30,\n unit: '%',\n warningMin: 10,\n },\n direction: 'higher-better',\n kind: 'decision-threshold',\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 kind: 'decision-threshold',\n source: 'who-obesity-2000',\n },\n\n // eAG — Estimated Average Glucose, derivada da HbA1c pela fórmula ADAG:\n // eAG (mg/dL) = 28,7 × HbA1c(%) − 46,7 (NATHAN, D. M. et al. Translating the\n // A1C assay into estimated average glucose values. Diabetes Care, v. 31, n. 8,\n // p. 1473-1478, 2008. DOI: 10.2337/dc08-0545).\n //\n // As faixas espelham os cortes diagnósticos de HbA1c da SBD (ver entrada\n // `HbA1c`) convertidos por essa fórmula, mantendo a eAG coerente com o\n // marcador de origem:\n // optimalMax 105 ← HbA1c 5,3 % (teto do controle ótimo)\n // max 117 ← HbA1c 5,7 % (teto do não diabético → início do pré-diabetes)\n // warningMax 137 ← HbA1c 6,4 % (teto do pré-diabetes → acima disso, diabetes)\n // optimalMin 82 ← HbA1c 4,5 % (piso do alvo fisiológico da entrada HbA1c)\n // min 11 ← HbA1c 2,0 % (mesmo piso de sanidade da entrada HbA1c)\n //\n // O piso era 70 nos dois campos, e não vinha desta conversão: 70 é o limite\n // inferior clássico da glicemia **de jejum**, transplantado para uma média\n // estimada de ~3 meses. Pela fórmula, 70 equivale a HbA1c 4,07 % — ou seja,\n // marcava como alterado exatamente quem a entrada `HbA1c` documenta que não\n // deve ser sinalizado, já que HbA1c baixa reflete hemólise, perda sanguínea\n // ou hemoglobinopatia, e não doença do metabolismo glicêmico. Espelhar o piso\n // do HbA1c mantém as duas entradas coerentes, que é o que o comentário sempre\n // afirmou fazer.\n //\n // Substitui a faixa anterior (optimalMax 126 = corte de glicemia de jejum;\n // max 154 = meta terapêutica do diabético, HbA1c 7 %), que classificava como\n // \"Normal\" valores já pré-diabéticos e diabéticos.\n eAG: {\n default: {\n max: 117,\n min: 11,\n minKind: 'display',\n optimalMax: 105,\n optimalMin: 82,\n unit: 'mg/dL',\n warningMax: 137,\n },\n kind: 'decision-threshold',\n source: 'sbd-diabetes-2024',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'reference-interval',\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 kind: 'decision-threshold',\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 kind: 'decision-threshold',\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]) => [\n code,\n {\n ...def.default,\n ...(def.kind && { kind: def.kind }),\n ...(def.source && { source: def.source }),\n },\n ]),\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 const withSource = (\n range: BiomarkerReferenceRange,\n kind: RangeKind | undefined = definition.kind,\n ): BiomarkerReferenceRange => ({\n ...range,\n ...(kind && { kind }),\n ...(definition.source && { source: definition.source }),\n });\n\n // If no context or no variants, return default\n if (!context || !definition.variants || definition.variants.length === 0) {\n return withSource(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 withSource(variant.range, variant.kind ?? definition.kind);\n }\n\n // No matching variant found - return default\n return withSource(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 * A flag de um valor contra a faixa do catálogo, só pelos limites clínicos.\n *\n * Compara contra a faixa que o `getReferenceRange` devolve para o contexto, e\n * ignora o limite marcado como `display`. Não olha o `direction`: o HDL de 105\n * sai sem flag porque o teto de 100 é `display`, e o `BodyFatPct` de 8% sai\n * `L` porque o piso é clínico, embora o marcador seja `lower-better`.\n *\n * **Só serve para a faixa do catálogo.** Faixa que o laboratório imprimiu é\n * afirmação dele sobre aquela amostra, e a comparação contra ela é crua.\n *\n * Devolve `''` quando o código não tem faixa ou o valor está dentro dela.\n */\nexport function flagAgainstCatalogRange(\n testCode: string,\n value: number,\n context?: ReferenceRangeContext,\n): 'H' | 'L' | '' {\n const range = getReferenceRange(testCode, context);\n if (!range) return '';\n if (range.max !== undefined && range.maxKind !== 'display' && value > range.max) return 'H';\n if (range.min !== undefined && range.minKind !== 'display' && value < range.min) return 'L';\n return '';\n}\n\n/**\n * O `referenceRange.type` do FHIR para um tipo de faixa.\n *\n * `population` não tem código no `referencerange-meaning`, e a função devolve\n * `undefined` em vez de escolher um parecido.\n */\nexport function referenceRangeMeaning(\n kind: RangeKind,\n): { code: 'normal' | 'recommended'; display: string; system: string } | undefined {\n const system = 'http://terminology.hl7.org/CodeSystem/referencerange-meaning';\n if (kind === 'reference-interval') return { code: 'normal', display: 'Normal Range', system };\n if (kind === 'decision-threshold') {\n return { code: 'recommended', display: 'Recommended Range', system };\n }\n return undefined;\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"]}
|