@precisa-saude/fhir 0.38.0 → 0.38.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.
Files changed (57) hide show
  1. package/dist/biomarkers.cjs +2 -2
  2. package/dist/biomarkers.js +1 -1
  3. package/dist/{chunk-I6SPJDZ2.js → chunk-2J3V7DCF.js} +10 -2
  4. package/dist/{chunk-I6SPJDZ2.js.map → chunk-2J3V7DCF.js.map} +1 -1
  5. package/dist/{chunk-6G5NUPZI.cjs → chunk-46PNS7KW.cjs} +24 -9
  6. package/dist/chunk-46PNS7KW.cjs.map +1 -0
  7. package/dist/{chunk-3M3VH7WG.cjs → chunk-4O3QE7DU.cjs} +12 -3
  8. package/dist/chunk-4O3QE7DU.cjs.map +1 -0
  9. package/dist/{chunk-5HDQCJWQ.js → chunk-77N3LQNM.js} +3 -3
  10. package/dist/{chunk-5FMR2U7P.cjs → chunk-C3SMDNLC.cjs} +8 -1
  11. package/dist/chunk-C3SMDNLC.cjs.map +1 -0
  12. package/dist/{chunk-DE7ZCFMA.js → chunk-GG3MOT3C.js} +2 -2
  13. package/dist/{chunk-4WY5YFWA.cjs → chunk-IY6BZX2V.cjs} +11 -3
  14. package/dist/chunk-IY6BZX2V.cjs.map +1 -0
  15. package/dist/{chunk-L6I4OYGS.cjs → chunk-LUGMRMWY.cjs} +10 -10
  16. package/dist/{chunk-L6I4OYGS.cjs.map → chunk-LUGMRMWY.cjs.map} +1 -1
  17. package/dist/{chunk-FETBCXN6.cjs → chunk-NUFN24W4.cjs} +3 -3
  18. package/dist/{chunk-FETBCXN6.cjs.map → chunk-NUFN24W4.cjs.map} +1 -1
  19. package/dist/{chunk-EVWEFMOY.js → chunk-SIXIWFC5.js} +11 -2
  20. package/dist/chunk-SIXIWFC5.js.map +1 -0
  21. package/dist/{chunk-HQ26GOLI.js → chunk-SZV66GMI.js} +8 -1
  22. package/dist/chunk-SZV66GMI.js.map +1 -0
  23. package/dist/{chunk-NIYSBB33.cjs → chunk-VMID6CDC.cjs} +21 -3
  24. package/dist/chunk-VMID6CDC.cjs.map +1 -0
  25. package/dist/{chunk-I7RF7YWM.js → chunk-X2BYLSNK.js} +19 -4
  26. package/dist/chunk-X2BYLSNK.js.map +1 -0
  27. package/dist/{chunk-JFJY7ZR6.js → chunk-XVXLDN4Q.js} +21 -3
  28. package/dist/chunk-XVXLDN4Q.js.map +1 -0
  29. package/dist/cli.js +67 -3
  30. package/dist/converter.cjs +5 -5
  31. package/dist/converter.js +4 -4
  32. package/dist/importer.cjs +5 -5
  33. package/dist/importer.js +4 -4
  34. package/dist/index.cjs +24 -17
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.js +14 -7
  37. package/dist/index.js.map +1 -1
  38. package/dist/reference-ranges.cjs +4 -4
  39. package/dist/reference-ranges.js +3 -3
  40. package/dist/sources.cjs +2 -2
  41. package/dist/sources.js +1 -1
  42. package/dist/units.cjs +3 -3
  43. package/dist/units.js +2 -2
  44. package/dist/validators.cjs +4 -4
  45. package/dist/validators.js +3 -3
  46. package/package.json +1 -1
  47. package/dist/chunk-3M3VH7WG.cjs.map +0 -1
  48. package/dist/chunk-4WY5YFWA.cjs.map +0 -1
  49. package/dist/chunk-5FMR2U7P.cjs.map +0 -1
  50. package/dist/chunk-6G5NUPZI.cjs.map +0 -1
  51. package/dist/chunk-EVWEFMOY.js.map +0 -1
  52. package/dist/chunk-HQ26GOLI.js.map +0 -1
  53. package/dist/chunk-I7RF7YWM.js.map +0 -1
  54. package/dist/chunk-JFJY7ZR6.js.map +0 -1
  55. package/dist/chunk-NIYSBB33.cjs.map +0 -1
  56. /package/dist/{chunk-5HDQCJWQ.js.map → chunk-77N3LQNM.js.map} +0 -0
  57. /package/dist/{chunk-DE7ZCFMA.js.map → chunk-GG3MOT3C.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/reference-ranges.ts"],"sourcesContent":["/**\n * Biomarker Reference Ranges\n *\n * Single source of truth for biomarker reference ranges used by both\n * web app (for display) and API (for fallback when LLM doesn't extract ranges).\n *\n * Data sources (priority order):\n * 1. Brazilian Government - SBPC/ML (Sociedade Brasileira de Patologia Clínica) guidelines\n * 2. International Standards - WHO, clinical laboratory guidelines\n * 3. Specific Labs - Fleury, Weinmann, Quest, LabCorp (when above unavailable)\n */\n\nimport { getCanonicalUnit as getCanonicalUnitForCode } from './units';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Sex-specific key for reference ranges\n */\nexport type SexKey = 'M' | 'F' | 'all';\n\n/**\n * 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: a faixa 10-20 é da convenção do nitrogênio ureico\n // (BUN). A razão ureia/creatinina do laudo brasileiro (ureia ≈ BUN × 2,14)\n // é outro biomarcador desde out/2026, `Urea_Creatinine_Ratio` (56997-0), e\n // fica sem faixa até haver fonte publicada para ela.\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 // BUN (nitrogênio ureico): \"The normal range of urea nitrogen in blood or\n // serum is 5 to 20 mg/dl\" (Hosten, Clinical Methods, cap. 193). O capítulo\n // não publica intervalo ótimo nem partição por sexo ou idade; a queda na\n // gestação (5 a 7 mg/dL) aparece como contexto, não como intervalo próprio.\n BUN: {\n default: { max: 20, min: 5, unit: 'mg/dL' },\n kind: 'reference-interval',\n source: 'hosten-clinical-methods-1990',\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"],"mappings":"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","names":[]}
@@ -97,6 +97,13 @@ var SOURCE_REGISTRY = {
97
97
  // ---------------------------------------------------------------------------
98
98
  // Referência laboratorial geral
99
99
  // ---------------------------------------------------------------------------
100
+ // Capítulo de livro no NCBI Bookshelf (PMID 21250147). A URL é a do texto
101
+ // completo, onde está o intervalo citado na faixa do BUN.
102
+ "hosten-clinical-methods-1990": {
103
+ abnt: "HOSTEN, A. O. BUN and creatinine. In: WALKER, H. K.; HALL, W. D.; HURST, J. W. (ed.). Clinical Methods: the history, physical, and laboratory examinations. 3. ed. Boston: Butterworths, 1990. cap. 193.",
104
+ key: "hosten-clinical-methods-1990",
105
+ url: "https://www.ncbi.nlm.nih.gov/books/NBK305/"
106
+ },
100
107
  "kalaria-ck-ri-2026": {
101
108
  abnt: "KALARIA, T. et al. Age, sex and ethnicity changes in creatine kinase and sex- and ethnicity-specific reference intervals of creatine kinase. Clinical Medicine, v. 26, n. 4, p. 100596, 2026.",
102
109
  doi: "10.1016/j.clinme.2026.100596",
@@ -339,4 +346,4 @@ export {
339
346
  SOURCE_REGISTRY,
340
347
  extractSourceKey
341
348
  };
342
- //# sourceMappingURL=chunk-HQ26GOLI.js.map
349
+ //# sourceMappingURL=chunk-SZV66GMI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sources.ts"],"sourcesContent":["/**\n * Registro de fontes bibliográficas para faixas de referência de biomarcadores.\n *\n * Exportado na API pública desde a 0.32: o campo `source` de cada faixa é uma\n * chave, e sem o registro ao lado ela não resolve para lugar nenhum. Quem\n * consome via `@precisa-saude/fhir/sources` ou pelo `fhir-bio source`.\n *\n * Todas as citações seguem o formato ABNT (NBR 6023).\n */\n\n/**\n * Referência bibliográfica completa para uma fonte de faixas de referência.\n */\nexport interface SourceReference {\n /** Citação completa em formato ABNT (NBR 6023) */\n abnt: string;\n /** DOI, quando disponível */\n doi?: string;\n /** ISBN, quando aplicável */\n isbn?: string;\n /** Chave curta usada no campo `source` de BiomarkerRangeDefinition */\n key: string;\n /** URL de acesso */\n url?: string;\n}\n\n/**\n * Registro central de todas as fontes bibliográficas utilizadas nas faixas de referência.\n *\n * Cada chave corresponde ao valor usado no campo `source` de `BiomarkerRangeDefinition`\n * (sem o sufixo de localização, ex: `'sbc-lipids-2017'` sem `':p15'`).\n */\nexport const SOURCE_REGISTRY: Record<string, SourceReference> = {\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Cardiovascular\n // ---------------------------------------------------------------------------\n 'agatston-1990': {\n abnt: 'AGATSTON, A. S. et al. Quantification of coronary artery calcium using ultrafast computed tomography. Journal of the American College of Cardiology, v. 15, n. 4, p. 827-832, 1990.',\n doi: '10.1016/0735-1097(90)90282-T',\n key: 'agatston-1990',\n url: 'https://pubmed.ncbi.nlm.nih.gov/2407762/',\n },\n\n 'browning-ashwell-2010': {\n abnt: 'BROWNING, L. M.; HSIEH, S. D.; ASHWELL, M. A systematic review of waist-to-height ratio as a screening tool for the prediction of cardiovascular disease and diabetes: 0,5 could be a suitable global boundary value. Nutrition Research Reviews, v. 23, n. 2, p. 247-269, 2010.',\n doi: '10.1017/S0954422410000144',\n key: 'browning-ashwell-2010',\n url: 'https://pubmed.ncbi.nlm.nih.gov/20819243/',\n },\n\n 'castelli-ratio-1992': {\n abnt: 'CASTELLI, W. P. et al. Lipids and risk of coronary heart disease: the Framingham Study. Annals of Epidemiology, v. 2, n. 1-2, p. 23-28, 1992.',\n doi: '10.1016/1047-2797(92)90033-M',\n key: 'castelli-ratio-1992',\n url: 'https://pubmed.ncbi.nlm.nih.gov/1342260/',\n },\n\n 'caulfield-ionmobility-2008': {\n abnt: 'CAULFIELD, M. P. et al. Direct determination of lipoprotein particle sizes and concentrations by ion mobility analysis. Clinical Chemistry, v. 54, n. 8, p. 1307-1316, 2008.',\n doi: '10.1373/clinchem.2007.100586',\n key: 'caulfield-ionmobility-2008',\n url: 'https://pubmed.ncbi.nlm.nih.gov/18515257/',\n },\n\n 'contois-apoa1-1996': {\n abnt: 'CONTOIS, J. H. et al. Reference intervals for plasma apolipoprotein A-1 determined with a standardized commercial immunoturbidimetric assay: results from the Framingham Offspring Study. Clinical Chemistry, v. 42, n. 4, p. 507-514, 1996.',\n doi: '10.1093/clinchem/42.4.507',\n key: 'contois-apoa1-1996',\n url: 'https://pubmed.ncbi.nlm.nih.gov/8605666/',\n },\n\n 'ewgsop2-2019': {\n abnt: 'CRUZ-JENTOFT, A. J. et al. Sarcopenia: revised European consensus on definition and diagnosis. Age and Ageing, v. 48, n. 1, p. 16-31, 2019.',\n doi: '10.1093/ageing/afy169',\n key: 'ewgsop2-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/30312372/',\n },\n\n 'ferreira-vitd-2017': {\n abnt: 'FERREIRA, C. E. S. et al. Posicionamento oficial da Sociedade Brasileira de Patologia Clínica/Medicina Laboratorial e da Sociedade Brasileira de Endocrinologia e Metabologia sobre intervalos de referência da vitamina D [25(OH)D]. Archives of Endocrinology and Metabolism, v. 61, n. 6, p. 527-542, 2017.',\n doi: '10.1590/2359-3997000000310',\n key: 'ferreira-vitd-2017',\n url: 'https://pubmed.ncbi.nlm.nih.gov/29412389/',\n },\n\n 'friedewald-1972': {\n abnt: 'FRIEDEWALD, W. T.; LEVY, R. I.; FREDRICKSON, D. S. Estimation of the concentration of low-density lipoprotein cholesterol in plasma, without use of the preparative ultracentrifuge. Clinical Chemistry, v. 18, n. 6, p. 499-502, 1972.',\n doi: '10.1093/clinchem/18.6.499',\n key: 'friedewald-1972',\n url: 'https://pubmed.ncbi.nlm.nih.gov/4337382/',\n },\n\n 'gallagher-bodyfat-2000': {\n abnt: 'GALLAGHER, D. et al. Healthy percentage body fat ranges: an approach for developing guidelines based on body mass index. American Journal of Clinical Nutrition, v. 72, n. 3, p. 694-701, 2000.',\n key: 'gallagher-bodyfat-2000',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10966886/',\n },\n\n 'ge-corescan': {\n abnt: 'GE HEALTHCARE. enCORE Software CoreScan: Visceral Adipose Tissue (VAT) assessment. Madison: GE Medical Systems Lunar, [s. d.]. (Documentação do fabricante do DEXA Lunar Prodigy; classificação Healthy 0–52 in³, Increased Risk 52,15–112,10 in³, At Risk 112,10+ in³, equivalente a 0–852 cm³, 854–1.837 cm³, 1.837+ cm³.)',\n key: 'ge-corescan',\n url: 'https://www.gehealthcare.com/products/bone-and-metabolic-health/encore',\n },\n\n 'geloneze-brams-2009': {\n abnt: 'GELONEZE, B. et al. HOMA1-IR and HOMA2-IR indexes in identifying insulin resistance and metabolic syndrome — Brazilian Metabolic Syndrome Study (BRAMS). Arquivos Brasileiros de Endocrinologia & Metabologia, v. 53, n. 2, p. 281-287, 2009.',\n doi: '10.1590/S0004-27302009000200020',\n key: 'geloneze-brams-2009',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19466221/',\n },\n\n 'george-ck-2016': {\n abnt: 'GEORGE, M. D.; MCGILL, N. K.; BAKER, J. F. Creatine kinase in the U.S. population: impact of demographics, comorbidities, and body composition on the normal range. Medicine, v. 95, n. 33, e4344, 2016.',\n doi: '10.1097/MD.0000000000004344',\n key: 'george-ck-2016',\n url: 'https://pubmed.ncbi.nlm.nih.gov/27537560/',\n },\n\n 'giannitsis-hstnt-2010': {\n abnt: 'GIANNITSIS, E. et al. Analytical validation of a high-sensitivity cardiac troponin T assay. Clinical Chemistry, v. 56, n. 2, p. 254-261, 2010.',\n doi: '10.1373/clinchem.2009.132654',\n key: 'giannitsis-hstnt-2010',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19959623/',\n },\n\n 'glis-2024': {\n abnt: 'KIRK, B. et al. The conceptual definition of sarcopenia: Delphi consensus from the Global Leadership Initiative in Sarcopenia (GLIS). Age and Ageing, v. 53, n. 3, afae052, 2024.',\n doi: '10.1093/ageing/afae052',\n key: 'glis-2024',\n url: 'https://pubmed.ncbi.nlm.nih.gov/38520141/',\n },\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Ácidos graxos ômega\n // ---------------------------------------------------------------------------\n 'harris-omega3-2004': {\n abnt: 'HARRIS, W. S.; VON SCHACKY, C. The Omega-3 Index: a new risk factor for death from coronary heart disease? Preventive Medicine, v. 39, n. 1, p. 212-220, 2004.',\n doi: '10.1016/j.ypmed.2004.02.030',\n key: 'harris-omega3-2004',\n url: 'https://pubmed.ncbi.nlm.nih.gov/15208005/',\n },\n\n // ---------------------------------------------------------------------------\n // Referência laboratorial geral\n // ---------------------------------------------------------------------------\n // Capítulo de livro no NCBI Bookshelf (PMID 21250147). A URL é a do texto\n // completo, onde está o intervalo citado na faixa do BUN.\n 'hosten-clinical-methods-1990': {\n abnt: 'HOSTEN, A. O. BUN and creatinine. In: WALKER, H. K.; HALL, W. D.; HURST, J. W. (ed.). Clinical Methods: the history, physical, and laboratory examinations. 3. ed. Boston: Butterworths, 1990. cap. 193.',\n key: 'hosten-clinical-methods-1990',\n url: 'https://www.ncbi.nlm.nih.gov/books/NBK305/',\n },\n\n 'kalaria-ck-ri-2026': {\n abnt: 'KALARIA, T. et al. Age, sex and ethnicity changes in creatine kinase and sex- and ethnicity-specific reference intervals of creatine kinase. Clinical Medicine, v. 26, n. 4, p. 100596, 2026.',\n doi: '10.1016/j.clinme.2026.100596',\n key: 'kalaria-ck-ri-2026',\n url: 'https://pubmed.ncbi.nlm.nih.gov/42142664/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Nefrologia\n // ---------------------------------------------------------------------------\n 'kdigo-ckd-2024': {\n abnt: 'KIDNEY DISEASE: IMPROVING GLOBAL OUTCOMES (KDIGO) CKD Work Group. KDIGO 2024 Clinical Practice Guideline for the Evaluation and Management of Chronic Kidney Disease. Kidney International, v. 105, n. 4S, p. S117-S314, 2024.',\n doi: '10.1016/j.kint.2023.10.018',\n key: 'kdigo-ckd-2024',\n url: 'https://pubmed.ncbi.nlm.nih.gov/38490803/',\n },\n\n 'keller-tni-2013': {\n abnt: 'KELLER, T. et al. Defining a reference population to determine the 99th percentile of a contemporary sensitive cardiac troponin I assay. International Journal of Cardiology, v. 167, n. 4, p. 1423-1429, 2013.',\n doi: '10.1016/j.ijcard.2012.04.063',\n key: 'keller-tni-2013',\n url: 'https://pubmed.ncbi.nlm.nih.gov/22560907/',\n },\n\n 'kelly-dxa-2009': {\n abnt: 'KELLY, T. L. et al. Dual energy X-ray absorptiometry body composition reference values from NHANES. PLoS One, v. 4, n. 9, e7038, 2009.',\n doi: '10.1371/journal.pone.0007038',\n key: 'kelly-dxa-2009',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19753111/',\n },\n\n 'khetarpal-apociii-2016': {\n abnt: 'KHETARPAL, S. A. et al. Why is apolipoprotein CIII emerging as a novel therapeutic target to reduce the burden of cardiovascular disease? Current Atherosclerosis Reports, v. 18, n. 10, p. 59, 2016.',\n key: 'khetarpal-apociii-2016',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC5018018/',\n },\n\n 'klee-bhb-2020': {\n abnt: 'KLEE, P. et al. Test validation, method comparison and reference range for the measurement of β-hydroxybutyrate in peripheral blood samples. Practical Laboratory Medicine, v. 18, e00146, 2020.',\n doi: '10.1016/j.plabm.2019.e00146',\n key: 'klee-bhb-2020',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC6999181/',\n },\n\n 'maisel-bnp-2002': {\n abnt: 'MAISEL, A. S. et al. Rapid measurement of B-type natriuretic peptide in the emergency diagnosis of heart failure. New England Journal of Medicine, v. 347, n. 3, p. 161-167, 2002.',\n doi: '10.1056/NEJMoa020233',\n key: 'maisel-bnp-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12124404/',\n },\n\n 'meuwese-mpo-2007': {\n abnt: 'MEUWESE, M. C. et al. Serum myeloperoxidase levels are associated with the future risk of coronary artery disease in apparently healthy individuals: the EPIC-Norfolk Prospective Population Study. Journal of the American College of Cardiology, v. 50, n. 2, p. 159-165, 2007.',\n doi: '10.1016/j.jacc.2007.03.033',\n key: 'meuwese-mpo-2007',\n url: 'https://pubmed.ncbi.nlm.nih.gov/17616301/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Marcadores metabólicos e inflamatórios\n // ---------------------------------------------------------------------------\n 'nemeth-adma-2017': {\n abnt: 'NEMETH, B. et al. The issue of plasma asymmetric dimethylarginine reference range: a systematic review and meta-analysis. PLoS One, v. 12, n. 5, e0177493, 2017.',\n doi: '10.1371/journal.pone.0177493',\n key: 'nemeth-adma-2017',\n url: 'https://pubmed.ncbi.nlm.nih.gov/28494019/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes brasileiras — Metais pesados (NR-7)\n // ---------------------------------------------------------------------------\n 'nr7-pcmso-2020': {\n abnt: 'BRASIL. Ministério do Trabalho e Emprego. NR-7 — PCMSO, Quadro 1: Indicadores biológicos. Portaria n. 6.734, de 9 de março de 2020. Diário Oficial da União, Brasília, 13 mar. 2020.',\n key: 'nr7-pcmso-2020',\n url: 'https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/inspecao-do-trabalho/seguranca-e-saude-no-trabalho/sst-portarias/2022/portaria-no-567-de-10-de-marco-de-2022-alteracoes-na-nr-7.pdf',\n },\n\n 'ofenheimer-vat-2020': {\n abnt: 'OFENHEIMER, A. et al. Reference values of body composition parameters and visceral adipose tissue (VAT) by DXA in adults aged 18-81 years: results from the LEAD cohort. European Journal of Clinical Nutrition, v. 74, p. 1181-1191, 2020.',\n doi: '10.1038/s41430-020-0596-5',\n key: 'ofenheimer-vat-2020',\n url: 'https://pubmed.ncbi.nlm.nih.gov/32123345/',\n },\n\n 'pns-bioquimica-2019': {\n abnt: 'SZWARCWALD, C. L. et al. Valores de referência para exames laboratoriais de colesterol, hemoglobina glicosilada e creatinina da população adulta brasileira. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190002.supl.2, 2019.',\n doi: '10.1590/1980-549720190002.supl.2',\n key: 'pns-bioquimica-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596373/',\n },\n\n // ---------------------------------------------------------------------------\n // Pesquisa Nacional de Saúde (PNS) — Intervalos de referência brasileiros\n // ---------------------------------------------------------------------------\n 'pns-hemograma-2019': {\n abnt: 'ROSENFELD, L. G. et al. Valores de referência para exames laboratoriais de hemograma da população adulta brasileira: Pesquisa Nacional de Saúde. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190003.supl.2, 2019.',\n doi: '10.1590/1980-549720190003.supl.2',\n key: 'pns-hemograma-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596374/',\n },\n\n 'pns-renal-2019': {\n abnt: 'MALTA, D. C. et al. Evaluation of renal function in the Brazilian adult population, according to laboratory criteria from the National Health Survey. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190010.supl.2, 2019.',\n doi: '10.1590/1980-549720190010.supl.2',\n key: 'pns-renal-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596381/',\n },\n\n 'rumberger-cac-1999': {\n abnt: 'RUMBERGER, J. A. et al. Electron beam computed tomographic coronary calcium scanning: a review and guidelines for use in asymptomatic persons. Mayo Clinic Proceedings, v. 74, n. 3, p. 243-252, 1999.',\n doi: '10.4065/74.3.243',\n key: 'rumberger-cac-1999',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10089993/',\n },\n\n 'sbc-ic-2018': {\n abnt: 'ROHDE, L. E. P. et al. Diretriz Brasileira de Insuficiência Cardíaca Crônica e Aguda. Arquivos Brasileiros de Cardiologia, São Paulo, v. 111, n. 3, p. 436-539, set. 2018.',\n doi: '10.5935/abc.20180190',\n key: 'sbc-ic-2018',\n url: 'https://pubmed.ncbi.nlm.nih.gov/30379264/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Cardiologia\n // ---------------------------------------------------------------------------\n 'sbc-lipids-2017': {\n abnt: 'FALUDI, A. A. et al. Atualização da Diretriz Brasileira de Dislipidemias e Prevenção da Aterosclerose – 2017. Arquivos Brasileiros de Cardiologia, São Paulo, v. 109, n. 2, supl. 1, p. 1-76, ago. 2017.',\n doi: '10.5935/abc.20170121',\n key: 'sbc-lipids-2017',\n url: 'https://www.scielo.br/j/abc/a/whBsCyzTDzGYJcsBY7YVkWn/?lang=pt',\n },\n\n 'sbc-lipids-2025': {\n abnt: 'RACHED, F. H. et al. Diretriz Brasileira de Dislipidemias e Prevenção da Aterosclerose – 2025. Arquivos Brasileiros de Cardiologia, São Paulo, v. 122, n. 9, e20250640, out. 2025.',\n doi: '10.36660/abc.20250640',\n key: 'sbc-lipids-2025',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC12674852/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Diabetes\n // ---------------------------------------------------------------------------\n 'sbd-diabetes-2024': {\n // Chave mantida como 'sbd-diabetes-2024' para compatibilidade com\n // consumidores publicados; a diretriz correspondente é o documento vivo\n // de diretriz.diabetes.org.br, cuja edição citada quando este registro foi\n // atualizado é \"Edição 2025\". Semelhante ao caso de sbpc-ml-2021 abaixo.\n abnt: 'SOCIEDADE BRASILEIRA DE DIABETES (SBD). Diretriz da Sociedade Brasileira de Diabetes — Edição 2025. São Paulo: SBD, 2025.',\n doi: '10.29327/5660187',\n isbn: '978-65-272-1932-3',\n key: 'sbd-diabetes-2024',\n url: 'https://diretriz.diabetes.org.br',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Endocrinologia e Metabologia\n // ---------------------------------------------------------------------------\n 'sbem-thyroid-2013': {\n abnt: 'SGARBI, J. A. et al. Consenso brasileiro para a abordagem clínica e tratamento do hipotireoidismo subclínico em adultos. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 57, n. 3, p. 166-183, 2013.',\n doi: '10.1590/S0004-27302013000300003',\n key: 'sbem-thyroid-2013',\n url: 'https://pubmed.ncbi.nlm.nih.gov/23681263/',\n },\n 'sbem-vitamind-2014': {\n abnt: 'MAEDA, S. S. et al. Recomendações da Sociedade Brasileira de Endocrinologia e Metabologia (SBEM) para o diagnóstico e tratamento da hipovitaminose D. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 58, n. 5, p. 411-433, 2014.',\n doi: '10.1590/0004-2730000003388',\n key: 'sbem-vitamind-2014',\n url: 'https://pubmed.ncbi.nlm.nih.gov/25166032/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Patologia Clínica / Medicina Laboratorial\n // ---------------------------------------------------------------------------\n 'sbpc-ml-2021': {\n // Chave mantida como 'sbpc-ml-2021' para compatibilidade com consumidores;\n // a edição autoritativa é de 2020 (verificada na Biblioteca Digital SBPC/ML\n // em 2026-04-18). Ano na citação ABNT reflete a edição real.\n abnt: 'SOCIEDADE BRASILEIRA DE PATOLOGIA CLÍNICA/MEDICINA LABORATORIAL (SBPC/ML). Recomendações da Sociedade Brasileira de Patologia Clínica/Medicina Laboratorial (SBPC/ML): Boas Práticas em Laboratório Clínico. São Paulo: SBPC/ML, 2020.',\n key: 'sbpc-ml-2021',\n url: 'https://bibliotecasbpc.org.br/index.php?P=4&C=0.2.443',\n },\n\n 'schumann-ifcc-ldh-2002': {\n abnt: 'SCHUMANN, G.; KLAUKE, R. New IFCC reference procedures for the determination of catalytic activity concentrations of five enzymes in serum: preliminary upper reference limits obtained in hospitalized subjects. Clinica Chimica Acta, v. 327, n. 1-2, p. 69-79, 2003.',\n doi: '10.1016/S0009-8981(02)00341-8',\n key: 'schumann-ifcc-ldh-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12482620/',\n },\n\n 'schwedhelm-sdma-2011': {\n abnt: 'SCHWEDHELM, E. et al. Plasma symmetric dimethylarginine reference limits from the Framingham Offspring Cohort. Clinical Chemistry and Laboratory Medicine, v. 49, n. 11, p. 1907-1910, 2011.',\n doi: '10.1515/CCLM.2011.679',\n key: 'schwedhelm-sdma-2011',\n url: 'https://pubmed.ncbi.nlm.nih.gov/21864208/',\n },\n\n 'selhub-homocysteine-1999': {\n abnt: 'SELHUB, J. et al. Serum total homocysteine concentrations in the third National Health and Nutrition Examination Survey (1991-1994): population reference ranges and contribution of vitamin status to high serum concentrations. Annals of Internal Medicine, v. 131, n. 5, p. 331-339, 1999.',\n doi: '10.7326/0003-4819-131-5-199909070-00003',\n key: 'selhub-homocysteine-1999',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10475885/',\n },\n\n 'simopoulos-omega-ratio-2002': {\n abnt: 'SIMOPOULOS, A. P. The importance of the ratio of omega-6/omega-3 essential fatty acids. Biomedicine & Pharmacotherapy, v. 56, n. 8, p. 365-379, 2002.',\n doi: '10.1016/S0753-3322(02)00253-6',\n key: 'simopoulos-omega-ratio-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12442909/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Marcadores tumorais\n // ---------------------------------------------------------------------------\n 'sturgeon-nacb-2008': {\n abnt: 'STURGEON, C. M. et al. National Academy of Clinical Biochemistry Laboratory Medicine Practice Guidelines for use of tumor markers in testicular, prostate, colorectal, breast, and ovarian cancers. Clinical Chemistry, v. 54, n. 12, p. e11-e79, 2008.',\n doi: '10.1373/clinchem.2008.105601',\n key: 'sturgeon-nacb-2008',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19042984/',\n },\n\n 'tietz-7ed-2015': {\n abnt: 'BURTIS, C. A.; BRUNS, D. E. Tietz Fundamentals of Clinical Chemistry and Molecular Diagnostics. 7. ed. St. Louis: Elsevier Saunders, 2015.',\n isbn: '978-1-4557-4165-6',\n key: 'tietz-7ed-2015',\n },\n\n 'torrissen-omega3-dbs-2025': {\n abnt: 'TORRISSEN, M. et al. Global variations in omega-3 fatty acid status and omega-6:omega-3 ratios: insights from > 500,000 whole-blood dried blood spot samples. Lipids in Health and Disease, v. 24, n. 1, p. 260, 2025.',\n doi: '10.1186/s12944-025-02676-6',\n key: 'torrissen-omega3-dbs-2025',\n url: 'https://pubmed.ncbi.nlm.nih.gov/40783537/',\n },\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Coagulação\n // ---------------------------------------------------------------------------\n 'wells-ddimer-2003': {\n abnt: 'WELLS, P. S. et al. Evaluation of D-dimer in the diagnosis of suspected deep-vein thrombosis. New England Journal of Medicine, v. 349, p. 1227-1235, 2003.',\n doi: '10.1056/NEJMoa023153',\n key: 'wells-ddimer-2003',\n url: 'https://pubmed.ncbi.nlm.nih.gov/14507948/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — OMS\n // ---------------------------------------------------------------------------\n 'who-iron-2020': {\n abnt: 'WORLD HEALTH ORGANIZATION. WHO guideline on use of ferritin concentrations to assess iron status in individuals and populations. Geneva: WHO, 2020.',\n isbn: '978-92-4-000012-4',\n key: 'who-iron-2020',\n url: 'https://www.who.int/publications/i/item/9789240000124',\n },\n\n 'who-obesity-2000': {\n abnt: 'WORLD HEALTH ORGANIZATION. Obesity: preventing and managing the global epidemic. WHO Technical Report Series, n. 894. Geneva: WHO, 2000.',\n isbn: '92-4-120894-5',\n key: 'who-obesity-2000',\n },\n\n 'who-osteoporosis-1994': {\n abnt: 'WHO STUDY GROUP. Assessment of fracture risk and its application to screening for postmenopausal osteoporosis. WHO Technical Report Series, n. 843. Geneva: WHO, 1994.',\n key: 'who-osteoporosis-1994',\n url: 'https://pubmed.ncbi.nlm.nih.gov/7941614/',\n },\n};\n\n/**\n * Extrai a chave de fonte de um valor `source` que pode conter localizador.\n *\n * @example\n * extractSourceKey('sbc-lipids-2017:p15') // 'sbc-lipids-2017'\n * extractSourceKey('sbpc-ml-2021') // 'sbpc-ml-2021'\n */\nexport function extractSourceKey(source: string): string {\n return source.split(':')[0] ?? source;\n}\n"],"mappings":"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","names":[]}
@@ -393,6 +393,22 @@ var BIOMARKER_DEFINITIONS = [
393
393
  },
394
394
  unit: "pg/mL"
395
395
  },
396
+ {
397
+ category: "tireoide",
398
+ code: "T3Total",
399
+ // 3053-6 é "Triiodothyronine (T3) [Mass/volume] in Serum or Plasma", o T3
400
+ // total, conferido no fhir.loinc.org em out/2026. O catálogo só tinha o
401
+ // livre (3051-0), e o SUS fatura o T3 num código só (SIGTAP 0202060390,
402
+ // "Dosagem de triiodotironina"), que é o total (fhir-brasil#132). Os nomes
403
+ // seguem os do `T4Total`. Sem faixa por enquanto: nenhuma fonte conferida
404
+ // publica o intervalo do T3 total para adultos aqui.
405
+ loinc: "3053-6",
406
+ names: {
407
+ en: ["Triiodothyronine", "T3 Total", "Total T3", "Triiodothyronine (T3)"],
408
+ pt: ["Triiodotironina", "T3 Total", "Triiodotironina Total", "Triiodotironina (T3)"]
409
+ },
410
+ unit: "ng/dL"
411
+ },
396
412
  {
397
413
  category: "tireoide",
398
414
  code: "T4Total",
@@ -1659,8 +1675,10 @@ var BIOMARKER_DEFINITIONS = [
1659
1675
  // de dentro de "UREA NITROGEN" ancorava a ureia, e o valor de BUN era lido
1660
1676
  // contra a faixa de 15-50 mg/dL da ureia.
1661
1677
  //
1662
- // Sem faixa de referência: nenhuma fonte de `sources.ts` foi conferida
1663
- // para o intervalo do BUN, e faixa sem citação conferida não entra.
1678
+ // Faixa (out/2026): 5 a 20 mg/dL, de Hosten, "BUN and Creatinine",
1679
+ // Clinical Methods, 3. ed., cap. 193: "The normal range of urea nitrogen in
1680
+ // blood or serum is 5 to 20 mg/dl, or 1.8 to 7.1 mmol urea per liter." O
1681
+ // capítulo não publica intervalo ótimo, e a faixa fica sem um.
1664
1682
  category: "rins",
1665
1683
  code: "BUN",
1666
1684
  loinc: "3094-0",
@@ -3644,4 +3662,4 @@ function getBiomarkersForCategories(categories, options) {
3644
3662
 
3645
3663
 
3646
3664
  exports.BIOMARKER_DEFINITIONS = BIOMARKER_DEFINITIONS; exports.loincToCode = loincToCode; exports.methodVariantOf = methodVariantOf; exports.codeToLoinc = codeToLoinc; exports.isValidLoinc = isValidLoinc; exports.isValidCode = isValidCode; exports.normalizeCode = normalizeCode; exports.getSexForCode = getSexForCode; exports.getDefinitionsBySex = getDefinitionsBySex; exports.getDefinitionByCode = getDefinitionByCode; exports.getDefinitionByLoinc = getDefinitionByLoinc; exports.getAllDefinitions = getAllDefinitions; exports.getVisibleDefinitions = getVisibleDefinitions; exports.getAllCodes = getAllCodes; exports.getAllLoincCodes = getAllLoincCodes; exports.generateLLMReference = generateLLMReference; exports.toBiomarkerTests = toBiomarkerTests; exports.getAllSearchPatterns = getAllSearchPatterns; exports.generateFilteredLLMReference = generateFilteredLLMReference; exports.DEXA_INDICATOR_CODES = DEXA_INDICATOR_CODES; exports.DEXA_CATEGORIES = DEXA_CATEGORIES; exports.generateDexaFullReference = generateDexaFullReference; exports.isDexaDocument = isDexaDocument; exports.CAC_INDICATOR_CODES = CAC_INDICATOR_CODES; exports.generateCacFullReference = generateCacFullReference; exports.isCacDocument = isCacDocument; exports.findCodeByName = findCodeByName; exports.validateLoincNameMatch = validateLoincNameMatch; exports.isBiomarkerVisible = isBiomarkerVisible; exports.filterVisibleBiomarkers = filterVisibleBiomarkers; exports.getBiomarkersByCategory = getBiomarkersByCategory; exports.getBiomarkersForCategories = getBiomarkersForCategories;
3647
- //# sourceMappingURL=chunk-NIYSBB33.cjs.map
3665
+ //# sourceMappingURL=chunk-VMID6CDC.cjs.map