@precisa-saude/fhir 0.14.1 → 0.15.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 (32) hide show
  1. package/dist/biomarkers.cjs +2 -2
  2. package/dist/biomarkers.js +1 -1
  3. package/dist/{chunk-OPS7XHIL.cjs → chunk-BRP5MGME.cjs} +3 -3
  4. package/dist/{chunk-OPS7XHIL.cjs.map → chunk-BRP5MGME.cjs.map} +1 -1
  5. package/dist/{chunk-NR4OTNC4.js → chunk-EHJB2UOI.js} +2 -2
  6. package/dist/{chunk-4YQOKZX7.js → chunk-HMT4VBWN.js} +2 -2
  7. package/dist/{chunk-EW5GLFSC.cjs → chunk-JCLBVPUP.cjs} +13 -4
  8. package/dist/chunk-JCLBVPUP.cjs.map +1 -0
  9. package/dist/{chunk-NOJRDKFO.cjs → chunk-KPRIOLLX.cjs} +4 -4
  10. package/dist/{chunk-NOJRDKFO.cjs.map → chunk-KPRIOLLX.cjs.map} +1 -1
  11. package/dist/{chunk-DJSZUAZH.js → chunk-V5X3RU6M.js} +107 -10
  12. package/dist/chunk-V5X3RU6M.js.map +1 -0
  13. package/dist/{chunk-BSR2RHMT.cjs → chunk-ZKN5UI7R.cjs} +107 -10
  14. package/dist/chunk-ZKN5UI7R.cjs.map +1 -0
  15. package/dist/{chunk-ICSMWCVT.js → chunk-ZQXKRINW.js} +13 -4
  16. package/dist/chunk-ZQXKRINW.js.map +1 -0
  17. package/dist/cli.js +119 -13
  18. package/dist/converter.cjs +3 -3
  19. package/dist/converter.js +2 -2
  20. package/dist/importer.cjs +3 -3
  21. package/dist/importer.js +2 -2
  22. package/dist/index.cjs +6 -6
  23. package/dist/index.js +4 -4
  24. package/dist/reference-ranges.cjs +2 -2
  25. package/dist/reference-ranges.js +1 -1
  26. package/package.json +1 -1
  27. package/dist/chunk-BSR2RHMT.cjs.map +0 -1
  28. package/dist/chunk-DJSZUAZH.js.map +0 -1
  29. package/dist/chunk-EW5GLFSC.cjs.map +0 -1
  30. package/dist/chunk-ICSMWCVT.js.map +0 -1
  31. /package/dist/{chunk-NR4OTNC4.js.map → chunk-EHJB2UOI.js.map} +0 -0
  32. /package/dist/{chunk-4YQOKZX7.js.map → chunk-HMT4VBWN.js.map} +0 -0
@@ -60,8 +60,14 @@ var biomarkerRangeDefinitions = {
60
60
  }
61
61
  ]
62
62
  },
63
+ // AMH — fortemente dependente de idade e sexo. As variantes femininas por
64
+ // faixa etária são a referência clínica; o `default` foi ajustado para
65
+ // refletir uma faixa adulta conservadora (~18-40 anos, mulheres em idade
66
+ // reprodutiva geral). optimalMax anterior (6.9 ng/mL) sobrepunha-se a
67
+ // valores sugestivos de SOP ou risco de OHSS; clinicamente, valores acima
68
+ // de ~4 ng/mL já merecem investigação.
63
69
  AMH: {
64
- default: { max: 10, min: 1, optimalMax: 6.9, optimalMin: 2, unit: "ng/mL" },
70
+ default: { max: 6, min: 1, optimalMax: 4, optimalMin: 1.5, unit: "ng/mL" },
65
71
  source: "tietz-7ed-2015",
66
72
  variants: [
67
73
  {
@@ -173,6 +179,15 @@ var biomarkerRangeDefinitions = {
173
179
  default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: "mEq/L" },
174
180
  source: "tietz-7ed-2015"
175
181
  },
182
+ // β-Hidroxibutirato (BHB) sérico — corpos cetônicos. Faixa derivada de
183
+ // amostra populacional não-jejum (German National Cohort, n=304, 20–69 a)
184
+ // como percentis 2,5–97,5: 0,02–0,28 mmol/L. Em jejum prolongado ou
185
+ // cetose nutricional, valores acima de 0,5 mmol/L são esperados; o limite
186
+ // superior aqui reflete estado pós-prandial habitual, não jejum.
187
+ BetaHydroxybutyrate: {
188
+ default: { max: 0.28, min: 0.02, optimalMax: 0.28, optimalMin: 0.02, unit: "mmol/L" },
189
+ source: "klee-bhb-2020"
190
+ },
176
191
  BilirubinDirect: {
177
192
  default: { max: 0.3, min: 0, optimalMax: 0.2, optimalMin: 0, unit: "mg/dL" },
178
193
  source: "tietz-7ed-2015"
@@ -190,6 +205,12 @@ var biomarkerRangeDefinitions = {
190
205
  default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: "pg/mL" },
191
206
  source: "sbc-ic-2018"
192
207
  },
208
+ // Razão BUN/Creatinina — faixa 10-20 aplica-se ao Nitrogênio Ureico (BUN).
209
+ // Laboratórios brasileiros que reportam Ureia (e não BUN) usam razão
210
+ // Ureia/Creatinina, cuja faixa normal é aproximadamente 21-43
211
+ // (Ureia ≈ BUN × 2,14). O biomarcador atualmente assume a convenção BUN;
212
+ // consumidores que dosem Ureia devem converter ou reportar como razão
213
+ // distinta. Ver issue #41 para alinhamento de nomenclatura/LOINC.
193
214
  BUN_Creatinine_Ratio: {
194
215
  default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: "" },
195
216
  source: "tietz-7ed-2015"
@@ -259,8 +280,11 @@ var biomarkerRangeDefinitions = {
259
280
  default: { max: 106, min: 98, optimalMax: 105, optimalMin: 100, unit: "mEq/L" },
260
281
  source: "tietz-7ed-2015"
261
282
  },
283
+ // Colesterol total — SBC 2017/2025: valor desejável < 190 mg/dL para adultos,
284
+ // com ou sem jejum. Limite anterior (200 mg/dL) refletia a diretriz ATP III
285
+ // (NCEP, 2002), superada pelas atualizações brasileiras.
262
286
  Cholesterol: {
263
- default: { max: 200, min: 0, optimalMax: 180, optimalMin: 0, unit: "mg/dL" },
287
+ default: { max: 190, min: 0, optimalMax: 170, optimalMin: 0, unit: "mg/dL" },
264
288
  source: "sbc-lipids-2025"
265
289
  },
266
290
  // Índice de Castelli I (CT/HDL-c)
@@ -616,19 +640,25 @@ var biomarkerRangeDefinitions = {
616
640
  }
617
641
  ]
618
642
  },
643
+ // HDL — SBC 2017/2025: desejável > 40 mg/dL (♂) e > 50 mg/dL (♀).
644
+ // A diretriz NÃO define teto de normalidade — HDL alto é cardioprotetor.
645
+ // Limites superiores anteriormente fixados em 60 mg/dL geravam falsos
646
+ // alertas. Mantém-se `max` apenas como limite técnico do gauge (100 mg/dL),
647
+ // não como ponto de corte clínico; consumidores devem tratar `direction:
648
+ // higher-better` como sinal autoritativo.
619
649
  HDL: {
620
- default: { max: 60, min: 40, optimalMax: 60, optimalMin: 50, unit: "mg/dL" },
650
+ default: { max: 100, min: 40, optimalMax: 100, optimalMin: 50, unit: "mg/dL" },
621
651
  direction: "higher-better",
622
652
  source: "sbc-lipids-2025",
623
653
  variants: [
624
654
  {
625
655
  ageMin: 18,
626
- range: { max: 60, min: 40, optimalMax: 60, optimalMin: 45, unit: "mg/dL" },
656
+ range: { max: 100, min: 40, optimalMax: 100, optimalMin: 45, unit: "mg/dL" },
627
657
  sex: "M"
628
658
  },
629
659
  {
630
660
  ageMin: 18,
631
- range: { max: 60, min: 50, optimalMax: 60, optimalMin: 55, unit: "mg/dL" },
661
+ range: { max: 100, min: 50, optimalMax: 100, optimalMin: 55, unit: "mg/dL" },
632
662
  sex: "F"
633
663
  }
634
664
  ]
@@ -742,6 +772,29 @@ var biomarkerRangeDefinitions = {
742
772
  default: { max: 2.2, min: 0.5, optimalMax: 1.8, optimalMin: 0.7, unit: "mmol/L" },
743
773
  source: "tietz-7ed-2015"
744
774
  },
775
+ // DHL/LDH — método IFCC a 37 °C (padrão atual na maioria dos laboratórios
776
+ // brasileiros). Limites superiores de referência (97,5° percentil) obtidos
777
+ // por Schumann & Klauke (2002) em indivíduos ≥17 anos: 247 U/L (mulheres)
778
+ // e 248 U/L (homens). O IFCC publica apenas o limite superior; o limite
779
+ // inferior é fixado em 0 pois DHL baixa não tem significado clínico.
780
+ // Não comparar com método Wróblewski-LaDue (faixas mais antigas, ~240–480).
781
+ LDH: {
782
+ default: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: "U/L" },
783
+ direction: "lower-better",
784
+ source: "schumann-ifcc-ldh-2002",
785
+ variants: [
786
+ {
787
+ ageMin: 17,
788
+ range: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: "U/L" },
789
+ sex: "M"
790
+ },
791
+ {
792
+ ageMin: 17,
793
+ range: { max: 247, min: 0, optimalMax: 247, optimalMin: 0, unit: "U/L" },
794
+ sex: "F"
795
+ }
796
+ ]
797
+ },
745
798
  LDL: {
746
799
  default: { max: 100, min: 0, optimalMax: 70, optimalMin: 0, unit: "mg/dL" },
747
800
  direction: "lower-better",
@@ -822,8 +875,14 @@ var biomarkerRangeDefinitions = {
822
875
  default: { max: 35, min: 15, optimalMax: 28, optimalMin: 18, unit: "%" },
823
876
  source: "simopoulos-omega-ratio-2002"
824
877
  },
878
+ // Lp(a) — SBC 2025 (seção 3.1.1.2.7): níveis ≥ 50 mg/dL ou ≥ 125 nmol/L são
879
+ // considerados aumentados, com indicação de rastreamento em cascata familiar.
880
+ // A diretriz recomenda ensaio independente de isoforma medido em nmol/L; a
881
+ // unidade nmol/L é mantida aqui por refletir o padrão laboratorial atual.
882
+ // Limites anteriores (max=75) refletiam pontos de corte expressos em mg/dL,
883
+ // gerando incompatibilidade com a unidade nmol/L declarada.
825
884
  Lipoprotein_a: {
826
- default: { max: 75, min: 0, optimalMax: 30, optimalMin: 0, unit: "nmol/L" },
885
+ default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: "nmol/L" },
827
886
  direction: "lower-better",
828
887
  source: "sbc-lipids-2025"
829
888
  },
@@ -915,8 +974,13 @@ var biomarkerRangeDefinitions = {
915
974
  default: { max: 8, min: 4, optimalMax: 8, optimalMin: 5.5, unit: "%" },
916
975
  source: "harris-omega3-2004"
917
976
  },
977
+ // Ômega-3 Total (% de ácidos graxos eritrocitários) — Harris & von Schacky
978
+ // (2004) propõem ≥ 8% como zona ótima de proteção cardiovascular; valores
979
+ // entre 4% e 8% representam risco intermediário, < 4% risco alto.
980
+ // optimalMin anterior (5.5%) ficava em zona intermediária, contradizendo
981
+ // a literatura e o próprio texto educacional do `platform`.
918
982
  Omega3_Total: {
919
- default: { max: 12, min: 3, optimalMax: 10, optimalMin: 5.5, unit: "%" },
983
+ default: { max: 12, min: 3, optimalMax: 10, optimalMin: 8, unit: "%" },
920
984
  source: "harris-omega3-2004"
921
985
  },
922
986
  Omega6_Total: {
@@ -952,9 +1016,37 @@ var biomarkerRangeDefinitions = {
952
1016
  default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: "mg/dL" },
953
1017
  source: "tietz-7ed-2015"
954
1018
  },
1019
+ // Progesterona — varia drasticamente com a fase do ciclo menstrual.
1020
+ // O schema atual não modela fase do ciclo, então adotamos faixas amplas
1021
+ // por sexo: o `default` cobre homens/fase folicular/pós-menopausa; a
1022
+ // variante feminina expande até a faixa esperada de fase lútea
1023
+ // (~3-20 ng/mL). Interpretação correta exige correlação com a fase do
1024
+ // ciclo, indisponível neste contexto.
955
1025
  Progesterone: {
956
1026
  default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: "ng/mL" },
957
- source: "tietz-7ed-2015"
1027
+ source: "tietz-7ed-2015",
1028
+ variants: [
1029
+ {
1030
+ ageMin: 18,
1031
+ range: { max: 0.9, min: 0.1, optimalMax: 0.6, optimalMin: 0.2, unit: "ng/mL" },
1032
+ sex: "M"
1033
+ },
1034
+ // Mulheres em idade reprodutiva: faixa que abarca fases folicular
1035
+ // (0.1-0.9 ng/mL) e lútea (3-20 ng/mL). Sem contexto de fase do ciclo,
1036
+ // valores intermediários (1-3 ng/mL) ficam em zona ambígua.
1037
+ {
1038
+ ageMax: 50,
1039
+ ageMin: 18,
1040
+ range: { max: 20, min: 0.1, optimalMax: 15, optimalMin: 0.2, unit: "ng/mL" },
1041
+ sex: "F"
1042
+ },
1043
+ // Pós-menopausa: valores tipicamente < 0.5 ng/mL (sem ovulação).
1044
+ {
1045
+ ageMin: 51,
1046
+ range: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: "ng/mL" },
1047
+ sex: "F"
1048
+ }
1049
+ ]
958
1050
  },
959
1051
  Prolactin: {
960
1052
  default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: "ng/mL" },
@@ -1232,8 +1324,13 @@ var biomarkerRangeDefinitions = {
1232
1324
  }
1233
1325
  ]
1234
1326
  },
1327
+ // Ureia — convenção brasileira (laboratórios reportam Ureia, não BUN).
1328
+ // Faixa adulta de 15-50 mg/dL (Ureia ≈ BUN × 2,14). Limites anteriores
1329
+ // (7-20 mg/dL) refletiam BUN/Nitrogênio Ureico, gerando falsos diagnósticos
1330
+ // de azotemia em pacientes com Ureia normal. LOINC 3094-0 (BUN) também
1331
+ // deve ser revisto em biomarkers.ts — ver issue #41.
1235
1332
  Urea: {
1236
- default: { max: 20, min: 7, optimalMax: 16, optimalMin: 10, unit: "mg/dL" },
1333
+ default: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: "mg/dL" },
1237
1334
  source: "tietz-7ed-2015"
1238
1335
  },
1239
1336
  UricAcid: {
@@ -1777,4 +1874,4 @@ function applyFallbackReferenceRanges(biomarkers) {
1777
1874
 
1778
1875
 
1779
1876
  exports.biomarkerRangeDefinitions = biomarkerRangeDefinitions; exports.defaultReferenceRanges = defaultReferenceRanges; exports.getReferenceRange = getReferenceRange; exports.getRangeDirection = getRangeDirection; exports.getFallbackReferenceRange = getFallbackReferenceRange; exports.applyFallbackReferenceRanges = applyFallbackReferenceRanges;
1780
- //# sourceMappingURL=chunk-BSR2RHMT.cjs.map
1877
+ //# sourceMappingURL=chunk-ZKN5UI7R.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-ZKN5UI7R.cjs","../src/reference-ranges.ts"],"names":[],"mappings":"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","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-ZKN5UI7R.cjs","sourcesContent":[null,"/**\n * Biomarker Reference Ranges\n *\n * Single source of truth for biomarker reference ranges used by both\n * web app (for display) and API (for fallback when LLM doesn't extract ranges).\n *\n * Data sources (priority order):\n * 1. Brazilian Government - SBPC/ML (Sociedade Brasileira de Patologia Clínica) guidelines\n * 2. International Standards - WHO, clinical laboratory guidelines\n * 3. Specific Labs - Fleury, Weinmann, Quest, LabCorp (when above unavailable)\n */\n\nimport { getCanonicalUnit as getCanonicalUnitForCode } from './units';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Sex-specific key for reference ranges\n */\nexport type SexKey = 'M' | 'F' | 'all';\n\n/**\n * Pré-condição de jejum para a faixa de referência.\n *\n * - `strict`: coleta exige jejum mínimo (ex.: glicemia de jejum, insulina).\n * - `preferred`: jejum recomendado, mas faixa aplicável em não-jejum\n * (ex.: perfil lipídico pós-SBC 2017, com corte de triglicérides distinto).\n * - `not-required`: valor independe do estado prandial (ex.: HbA1c, TSH).\n */\nexport type FastingRequirement = 'strict' | 'preferred' | 'not-required';\n\n/**\n * Reference range configuration for a biomarker\n */\nexport interface BiomarkerReferenceRange {\n /**\n * Pré-condição de jejum para a interpretação da faixa. Opcional;\n * consumidores devem aplicar sinalização adequada quando `strict`.\n */\n fastingRequired?: FastingRequirement;\n max?: number;\n min?: number;\n optimalMax?: number;\n optimalMin?: number;\n unit: string;\n warningMax?: number;\n}\n\n/**\n * Trimestre gestacional. Usado em variantes e no contexto de consulta\n * para matching de faixas específicas da gestação.\n */\nexport type PregnancyTrimester = 1 | 2 | 3;\n\n/**\n * A variant of a reference range that applies to a specific sex, age group,\n * and/or pregnancy state.\n *\n * Ordem de avaliação: variantes são processadas na ordem em que aparecem.\n * Para que usuárias gestantes recebam a variante gestacional correta,\n * essas variantes devem ser listadas **antes** das variantes por idade/sexo.\n */\nexport interface RangeVariant {\n ageMax?: number;\n ageMin?: number;\n pregnancyTrimester?: PregnancyTrimester;\n /**\n * Quando `true`, a variante só se aplica a contextos de gestação.\n * Se `pregnancyTrimester` estiver definido, o trimestre deve coincidir.\n */\n pregnant?: boolean;\n range: BiomarkerReferenceRange;\n sex: SexKey;\n}\n\n/**\n * Extended biomarker range definition with sex/age-specific variants\n */\n/**\n * Direction indicates whether exceeding the reference range on one side is benign.\n * - 'range': both above-max and below-min are abnormal (default)\n * - 'higher-better': above-max is normal (e.g., BMC, HDL)\n * - 'lower-better': below-min is normal (e.g., LDL, CRP)\n */\nexport type RangeDirection = 'range' | 'higher-better' | 'lower-better';\n\nexport interface BiomarkerRangeDefinition {\n default: BiomarkerReferenceRange;\n direction?: RangeDirection;\n /**\n * Chave de fonte bibliográfica, opcionalmente com localizador.\n *\n * Formato: `'chave'` ou `'chave:localizador'`\n *\n * Exemplos:\n * - `'sbc-lipids-2017'` — fonte sem localização específica\n * - `'sbc-lipids-2017:p15'` — página 15\n * - `'sbpc-ml-2021:t4.1'` — tabela 4.1\n *\n * As chaves devem corresponder a entradas em `SOURCE_REGISTRY` (sources.ts).\n * Consulte `docs/fontes-referencia.md` para a bibliografia completa em formato ABNT.\n */\n source?: string;\n variants?: RangeVariant[];\n}\n\n/**\n * User context for personalized reference range lookup.\n *\n * Para gestação, defina `pregnant: true` e, quando disponível,\n * `pregnancyTrimester` para obter a variante trimestre-específica.\n */\nexport interface ReferenceRangeContext {\n age?: number;\n biologicalSex?: 'M' | 'F';\n pregnancyTrimester?: PregnancyTrimester;\n pregnant?: boolean;\n}\n\n// =============================================================================\n// BIOMARKER RANGE DEFINITIONS\n// =============================================================================\n\n/**\n * Comprehensive biomarker reference range definitions with sex/age-specific variants\n *\n * Each marker has a default range (used as fallback) and optional variants\n * for sex/age-specific ranges.\n */\nexport const biomarkerRangeDefinitions: Record<string, BiomarkerRangeDefinition> = {\n Albumin_Creatinine_Ratio: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/g' },\n source: 'tietz-7ed-2015',\n },\n\n Adiponectin: {\n default: { max: 26, min: 4, optimalMax: 20, optimalMin: 8, unit: 'mcg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n ADMA: {\n default: { max: 0.7, min: 0.3, optimalMax: 0.55, optimalMin: 0.3, unit: 'umol/L' },\n source: 'nemeth-adma-2017',\n },\n\n AFP: {\n default: { max: 10, min: 0, optimalMax: 8, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n Albumin_Globulin_Ratio: {\n default: { max: 2.5, min: 1.0, optimalMax: 2.2, optimalMin: 1.2, unit: '' },\n source: 'tietz-7ed-2015',\n },\n\n Albumin: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.8, optimalMin: 4.0, unit: 'g/dL' },\n source: 'pns-bioquimica-2019',\n },\n\n AlkalinePhosphatase: {\n default: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 104, min: 35, optimalMax: 90, optimalMin: 40, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n ALT: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 56, min: 7, optimalMax: 35, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 45, min: 7, optimalMax: 30, optimalMin: 10, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n // AMH — fortemente dependente de idade e sexo. As variantes femininas por\n // faixa etária são a referência clínica; o `default` foi ajustado para\n // refletir uma faixa adulta conservadora (~18-40 anos, mulheres em idade\n // reprodutiva geral). optimalMax anterior (6.9 ng/mL) sobrepunha-se a\n // valores sugestivos de SOP ou risco de OHSS; clinicamente, valores acima\n // de ~4 ng/mL já merecem investigação.\n AMH: {\n default: { max: 6.0, min: 1.0, optimalMax: 4.0, optimalMin: 1.5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMax: 24,\n ageMin: 18,\n range: { max: 13.0, min: 1.5, optimalMax: 10.0, optimalMin: 3.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 30,\n ageMin: 25,\n range: { max: 10.0, min: 1.5, optimalMax: 8.0, optimalMin: 2.5, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 35,\n ageMin: 31,\n range: { max: 8.0, min: 1.0, optimalMax: 6.0, optimalMin: 2.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMax: 40,\n ageMin: 36,\n range: { max: 6.0, min: 0.5, optimalMax: 4.0, optimalMin: 1.0, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 41,\n range: { max: 3.0, min: 0.1, optimalMax: 2.0, optimalMin: 0.5, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n Ammonia: {\n default: { max: 45, min: 15, optimalMax: 40, optimalMin: 20, unit: 'umol/L' },\n source: 'tietz-7ed-2015',\n },\n\n AntiThyroglobulin: {\n default: { max: 115, min: 0, optimalMax: 40, optimalMin: 0, unit: 'IU/mL' },\n source: 'tietz-7ed-2015',\n },\n\n AntiTPO: {\n default: { max: 34, min: 0, optimalMax: 9, optimalMin: 0, unit: 'IU/mL' },\n source: 'tietz-7ed-2015',\n },\n\n // Aortic valve calcium — no standardized clinical threshold; use mild cutoff\n // Cálcio de válvula aórtica — usa mesma classificação Agatston\n AorticValveCalcium: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n ApoA1: {\n default: { max: 200, min: 100, optimalMax: 180, optimalMin: 120, unit: 'mg/dL' },\n source: 'contois-apoa1-1996',\n },\n\n ApoB: {\n default: { max: 90, min: 0, optimalMax: 70, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n ApoCIII: {\n default: { max: 10, min: 0, optimalMax: 7, optimalMin: 0, unit: 'mg/dL' },\n source: 'khetarpal-apociii-2016',\n },\n\n // ApoCIII/ApoA1 Ratio: derivado de ApoCIII (~10 mg/dL) e ApoA1 (~100-150 mg/dL)\n // NOTA: corte de 0.15 sem fonte publicada — valor calculado, não validado clinicamente\n ApoCIII_ApoA1_Ratio: {\n default: { max: 0.15, min: 0, optimalMax: 0.1, optimalMin: 0, unit: '' },\n },\n\n Omega6_AA: {\n default: { max: 15.0, min: 5.0, optimalMax: 12.0, optimalMin: 7.0, unit: '%' },\n source: 'simopoulos-omega-ratio-2002',\n },\n\n AA_EPA_Ratio: {\n default: { max: 15.0, min: 1.0, optimalMax: 5.0, optimalMin: 1.5, unit: '' },\n direction: 'lower-better',\n source: 'simopoulos-omega-ratio-2002',\n },\n\n Arsenic: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n AST: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 40, min: 10, optimalMax: 30, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 32, min: 9, optimalMax: 25, optimalMin: 10, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n Basophils: {\n default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Basophils_Abs: {\n default: { max: 0.1, min: 0, optimalMax: 0.05, optimalMin: 0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Bicarbonate: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n // β-Hidroxibutirato (BHB) sérico — corpos cetônicos. Faixa derivada de\n // amostra populacional não-jejum (German National Cohort, n=304, 20–69 a)\n // como percentis 2,5–97,5: 0,02–0,28 mmol/L. Em jejum prolongado ou\n // cetose nutricional, valores acima de 0,5 mmol/L são esperados; o limite\n // superior aqui reflete estado pós-prandial habitual, não jejum.\n BetaHydroxybutyrate: {\n default: { max: 0.28, min: 0.02, optimalMax: 0.28, optimalMin: 0.02, unit: 'mmol/L' },\n source: 'klee-bhb-2020',\n },\n\n BilirubinDirect: {\n default: { max: 0.3, min: 0, optimalMax: 0.2, optimalMin: 0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n BilirubinIndirect: {\n default: { max: 0.8, min: 0, optimalMax: 0.6, optimalMin: 0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n BilirubinTotal: {\n default: { max: 1.2, min: 0.1, optimalMax: 0.9, optimalMin: 0.2, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // BNP: 35 pg/mL = corte não-agudo para triagem de IC (SBC IC 2018)\n BNP: {\n default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: 'pg/mL' },\n source: 'sbc-ic-2018',\n },\n\n // Razão BUN/Creatinina — faixa 10-20 aplica-se ao Nitrogênio Ureico (BUN).\n // Laboratórios brasileiros que reportam Ureia (e não BUN) usam razão\n // Ureia/Creatinina, cuja faixa normal é aproximadamente 21-43\n // (Ureia ≈ BUN × 2,14). O biomarcador atualmente assume a convenção BUN;\n // consumidores que dosem Ureia devem converter ou reportar como razão\n // distinta. Ver issue #41 para alinhamento de nomenclatura/LOINC.\n BUN_Creatinine_Ratio: {\n default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: '' },\n source: 'tietz-7ed-2015',\n },\n\n CA125: {\n default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: 'U/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n CA199: {\n default: { max: 37, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n // CAC: Agatston classification — 0=none, 1-99=mild, 100-399=moderate, 400+=severe\n // max=99 so only moderate+ scores (≥100) flag as ANORMAL; optimalMax=0 (zero is ideal)\n CAC: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n // Per-vessel scores — same Agatston classification applied per vessel\n CAC_LAD: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_LCX: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_LMA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_Percentile: {\n default: { max: 50, min: 0, optimalMax: 25, optimalMin: 0, unit: '%', warningMax: 75 },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n CAC_RCA: {\n default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: 'AU' },\n direction: 'lower-better',\n source: 'rumberger-cac-1999',\n },\n\n Cadmium: {\n default: { max: 1.2, min: 0, optimalMax: 0.5, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n Calcium: {\n default: { max: 10.5, min: 8.5, optimalMax: 10.0, optimalMin: 9.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CEA: {\n default: { max: 3.0, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n // CK: valores conservadores baseados em faixas laboratoriais típicas\n CK: {\n default: { max: 190, min: 30, optimalMax: 170, optimalMin: 40, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n variants: [\n { sex: 'F', range: { max: 170, min: 30, optimalMax: 150, optimalMin: 40, unit: 'U/L' } },\n ],\n },\n\n Chloride: {\n default: { max: 106, min: 98, optimalMax: 105, optimalMin: 100, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n // Colesterol total — SBC 2017/2025: valor desejável < 190 mg/dL para adultos,\n // com ou sem jejum. Limite anterior (200 mg/dL) refletia a diretriz ATP III\n // (NCEP, 2002), superada pelas atualizações brasileiras.\n Cholesterol: {\n default: { max: 190, min: 0, optimalMax: 170, optimalMin: 0, unit: 'mg/dL' },\n source: 'sbc-lipids-2025',\n },\n\n // Índice de Castelli I (CT/HDL-c)\n Cholesterol_HDL_Ratio: {\n // Índice de Castelli I — SBC 2017: M <4.9, F <4.3\n default: { max: 4.9, min: 0, optimalMax: 3.5, optimalMin: 0, unit: '' },\n direction: 'lower-better',\n source: 'castelli-ratio-1992',\n variants: [\n {\n ageMin: 18,\n range: { max: 4.9, min: 0, optimalMax: 4.0, optimalMin: 0, unit: '' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 4.3, min: 0, optimalMax: 3.5, optimalMin: 0, unit: '' },\n sex: 'F',\n },\n ],\n },\n\n CO2: {\n default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n Copper: {\n default: { max: 175, min: 70, optimalMax: 150, optimalMin: 85, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CoQ10: {\n default: { max: 1.5, min: 0.5, optimalMax: 1.3, optimalMin: 0.7, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n Cortisol: {\n default: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CortisolFree: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n CPeptide: {\n default: {\n fastingRequired: 'strict',\n max: 3.9,\n min: 0.8,\n optimalMax: 3.0,\n optimalMin: 1.0,\n unit: 'ng/mL',\n },\n source: 'tietz-7ed-2015',\n },\n\n Creatinine: {\n default: { max: 1.2, min: 0.6, optimalMax: 1.0, optimalMin: 0.7, unit: 'mg/dL' },\n source: 'pns-bioquimica-2019',\n variants: [\n // Gestação: hiperfiltração glomerular (↑ 40–50% GFR) reduz a creatinina\n // sérica. Valores \"normais\" de não-gestante podem sinalizar disfunção\n // renal em gestante. Limites tipicamente citados: 0.4–0.8 mg/dL.\n {\n pregnant: true,\n range: { max: 0.8, min: 0.4, optimalMax: 0.7, optimalMin: 0.5, unit: 'mg/dL' },\n sex: 'F',\n },\n {\n ageMin: 18,\n range: { max: 1.3, min: 0.7, optimalMax: 1.1, optimalMin: 0.8, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.1, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n CRP: {\n default: { max: 3.0, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'mg/L' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n },\n\n CystatinC: {\n default: { max: 1.0, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n // D-Dímero: 500 ng/mL é o corte clínico padrão para exclusão de TEV\n DDimer: {\n default: { max: 500, min: 0, optimalMax: 250, optimalMin: 0, unit: 'ng/mL' },\n source: 'wells-ddimer-2003',\n },\n\n Omega3_DHA: {\n default: { max: 8.0, min: 2.0, optimalMax: 6.5, optimalMin: 3.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n DHEAS: {\n default: { max: 500, min: 100, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMax: 39,\n ageMin: 18,\n range: { max: 640, min: 280, optimalMax: 500, optimalMin: 300, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMax: 59,\n ageMin: 40,\n range: { max: 520, min: 120, optimalMax: 400, optimalMin: 150, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMin: 60,\n range: { max: 290, min: 42, optimalMax: 220, optimalMin: 80, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMax: 39,\n ageMin: 18,\n range: { max: 380, min: 65, optimalMax: 300, optimalMin: 100, unit: 'mcg/dL' },\n sex: 'F',\n },\n {\n ageMax: 59,\n ageMin: 40,\n range: { max: 240, min: 32, optimalMax: 180, optimalMin: 60, unit: 'mcg/dL' },\n sex: 'F',\n },\n {\n ageMin: 60,\n range: { max: 140, min: 18, optimalMax: 100, optimalMin: 30, unit: 'mcg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Omega3_DPA: {\n default: { max: 2.0, min: 0.3, optimalMax: 1.5, optimalMin: 0.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n eGFR: {\n default: { max: 120, min: 90, optimalMax: 120, optimalMin: 90, unit: 'mL/min/1.73m²' },\n source: 'kdigo-ckd-2024',\n variants: [\n {\n ageMin: 60,\n range: { max: 90, min: 60, optimalMax: 90, optimalMin: 60, unit: 'mL/min/1.73m²' },\n sex: 'all',\n },\n ],\n },\n\n Eosinophils: {\n default: { max: 5, min: 0, optimalMax: 4, optimalMin: 1, unit: '%' },\n direction: 'lower-better',\n source: 'pns-hemograma-2019',\n },\n\n Eosinophils_Abs: {\n default: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Omega3_EPA: {\n default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n EPADPADHA: {\n default: { max: 10.0, min: 3.0, optimalMax: 9.0, optimalMin: 5.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n ESR: {\n default: { max: 20, min: 0, optimalMax: 10, optimalMin: 0, unit: 'mm/hr' },\n source: 'tietz-7ed-2015',\n },\n\n Estradiol: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 40, min: 10, optimalMax: 30, optimalMin: 15, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 400, min: 30, optimalMax: 300, optimalMin: 50, unit: 'pg/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'pg/mL' },\n sex: 'F',\n },\n ],\n },\n\n F2Isoprostanes: {\n default: { max: 86, min: 0, optimalMax: 60, optimalMin: 0, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n // Ferritina — WHO 2020 é o documento de referência específico para avaliação\n // do status de ferro via ferritina. Importante: inflamação aguda eleva\n // ferritina (proteína de fase aguda); WHO 2020 recomenda dosagem concomitante\n // de PCR para interpretação em contexto inflamatório (fora do escopo deste\n // tipo de faixa, mas documentado aqui para consumidores).\n Ferritin: {\n default: { max: 150, min: 12, optimalMax: 120, optimalMin: 30, unit: 'ng/mL' },\n source: 'who-iron-2020',\n variants: [\n // Gestação: ferritina cai fisiologicamente no 2º/3º trimestre pela expansão\n // do volume plasmático e maior demanda fetal. WHO 2020: <15 ng/mL sugere\n // depleção; muitas diretrizes nacionais usam <30 como gatilho mais sensível\n // na gestação dada a alta prevalência de deficiência subclínica.\n {\n pregnant: true,\n range: { max: 120, min: 15, optimalMax: 80, optimalMin: 30, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 18,\n range: { max: 250, min: 20, optimalMax: 200, optimalMin: 40, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 120, min: 10, optimalMax: 80, optimalMin: 20, unit: 'ng/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 200, min: 20, optimalMax: 150, optimalMin: 30, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n // Fibrinogênio: 200-400 mg/dL — faixa de referência padrão (método de Clauss)\n Fibrinogen: {\n default: { max: 400, min: 200, optimalMax: 350, optimalMin: 250, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n FolicAcid: {\n default: { max: 20, min: 3, optimalMax: 15, optimalMin: 5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n FSH: {\n default: { max: 12.4, min: 1.5, optimalMax: 10.0, optimalMin: 3.0, unit: 'mIU/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 12.4, min: 1.5, optimalMax: 8.0, optimalMin: 1.5, unit: 'mIU/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 12.5, min: 3.5, optimalMax: 10.0, optimalMin: 3.5, unit: 'mIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 134.8, min: 25.8, optimalMax: 80.0, optimalMin: 25.8, unit: 'mIU/mL' },\n sex: 'F',\n },\n ],\n },\n\n GGT: {\n default: { max: 55, min: 0, optimalMax: 30, optimalMin: 0, unit: 'U/L' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 61, min: 8, optimalMax: 40, optimalMin: 10, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 36, min: 5, optimalMax: 25, optimalMin: 8, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n Ghrelin: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n Globulin: {\n default: { max: 3.5, min: 2.0, optimalMax: 3.2, optimalMin: 2.3, unit: 'g/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Glicemia de jejum — 70–99 mg/dL é a faixa de normalidade (SBD 2024, ADA);\n // hipoglicemia clinicamente acionável em não-diabético é <54 mg/dL (Level 2\n // ADA/SBD), não 70. O corte 70 era Level 1 (alerta em diabético em tratamento)\n // e gerava falsos \"abaixo do normal\" em indivíduos saudáveis cuja glicemia\n // em jejum está fisiologicamente entre 54–70. optimalMin preserva o alvo.\n Glucose: {\n default: {\n fastingRequired: 'strict',\n max: 100,\n min: 54,\n optimalMax: 90,\n optimalMin: 70,\n unit: 'mg/dL',\n },\n source: 'sbd-diabetes-2024',\n variants: [\n // Gestação: DMG (IADPSG/SBD 2024) usa cortes mais restritivos na glicemia\n // de jejum — ≥92 mg/dL já indica diabetes mellitus gestacional. Portanto\n // a faixa \"normal\" em gestante vai até 91 mg/dL no jejum.\n {\n pregnant: true,\n range: {\n fastingRequired: 'strict',\n max: 91,\n min: 54,\n optimalMax: 85,\n optimalMin: 70,\n unit: 'mg/dL',\n },\n sex: 'F',\n },\n ],\n },\n\n GlycoMark: {\n default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: 'mcg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n GrowthHormone: {\n default: { max: 5, min: 0, optimalMax: 3, optimalMin: 0, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n // HbA1c — SBD 2024 não estabelece piso de referência clinicamente acionável.\n // Valores <4.0% podem refletir anemia hemolítica, perda sanguínea recente ou\n // hemoglobinopatia, não patologia do metabolismo glicêmico. Usamos min=2 como\n // piso de sanidade (HbA1c <2% é quase sempre erro instrumental/entrada) sem\n // criar flag clínico em valores fisiologicamente baixos. optimalMin preserva\n // o alvo fisiológico da fração glicada.\n HbA1c: {\n default: { max: 5.7, min: 2, optimalMax: 5.3, optimalMin: 4.5, unit: '%' },\n source: 'sbd-diabetes-2024',\n },\n\n Hct: {\n default: { max: 50, min: 36, optimalMax: 48, optimalMin: 40, unit: '%' },\n source: 'pns-hemograma-2019',\n variants: [\n {\n ageMin: 18,\n range: { max: 54, min: 40, optimalMax: 50, optimalMin: 42, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 48, min: 36, optimalMax: 45, optimalMin: 38, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n // HDL — SBC 2017/2025: desejável > 40 mg/dL (♂) e > 50 mg/dL (♀).\n // A diretriz NÃO define teto de normalidade — HDL alto é cardioprotetor.\n // Limites superiores anteriormente fixados em 60 mg/dL geravam falsos\n // alertas. Mantém-se `max` apenas como limite técnico do gauge (100 mg/dL),\n // não como ponto de corte clínico; consumidores devem tratar `direction:\n // higher-better` como sinal autoritativo.\n HDL: {\n default: { max: 100, min: 40, optimalMax: 100, optimalMin: 50, unit: 'mg/dL' },\n direction: 'higher-better',\n source: 'sbc-lipids-2025',\n variants: [\n {\n ageMin: 18,\n range: { max: 100, min: 40, optimalMax: 100, optimalMin: 45, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 100, min: 50, optimalMax: 100, optimalMin: 55, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n HDL_Large: {\n // HDL Large: higher is better\n // Quest Ion Mobility reference: Male 4334-10815, Female 5038-17886 nmol/L, optimal >6729\n default: { max: 17886, min: 4334, optimalMax: 17886, optimalMin: 6729, unit: 'nmol/L' },\n direction: 'higher-better',\n source: 'caulfield-ionmobility-2008',\n },\n\n Hgb: {\n default: { max: 17.5, min: 12.0, optimalMax: 16.0, optimalMin: 13.5, unit: 'g/dL' },\n source: 'pns-hemograma-2019',\n variants: [\n // Gestação: hemodiluição fisiológica reduz o piso aceitável.\n // OMS e CDC: anemia gestacional quando Hgb <11 g/dL (1º e 3º tri) ou\n // <10.5 g/dL (2º tri, dilucional mais acentuada). Catch-all adota a\n // faixa mais conservadora (2º tri) quando trimestre é desconhecido.\n {\n pregnant: true,\n pregnancyTrimester: 1,\n range: { max: 14.0, min: 11.0, optimalMax: 13.0, optimalMin: 11.5, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 2,\n range: { max: 14.0, min: 10.5, optimalMax: 13.0, optimalMin: 11.0, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 3,\n range: { max: 14.0, min: 11.0, optimalMax: 13.0, optimalMin: 11.5, unit: 'g/dL' },\n sex: 'F',\n },\n {\n pregnant: true,\n range: { max: 14.0, min: 10.5, optimalMax: 13.0, optimalMin: 11.0, unit: 'g/dL' },\n sex: 'F',\n },\n {\n ageMin: 18,\n range: { max: 17.5, min: 13.5, optimalMax: 16.5, optimalMin: 14.0, unit: 'g/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 15.5, min: 12.0, optimalMax: 14.5, optimalMin: 12.5, unit: 'g/dL' },\n sex: 'F',\n },\n ],\n },\n\n // HOMA-IR — corte 2.71 do estudo BRAMS (Geloneze et al., 2009) validado em\n // população urbana brasileira; Tietz 7ª ed. não publica corte próprio de\n // HOMA-IR, então a fonte anterior era citação inadequada.\n HOMA_IR: {\n default: {\n fastingRequired: 'strict',\n max: 2.71,\n min: 0,\n optimalMax: 1.5,\n optimalMin: 0,\n unit: '',\n },\n direction: 'lower-better',\n source: 'geloneze-brams-2009',\n },\n\n Homocysteine: {\n default: { max: 15, min: 4, optimalMax: 10, optimalMin: 5, unit: 'umol/L' },\n direction: 'lower-better',\n source: 'selhub-homocysteine-1999',\n },\n\n IGF1: {\n default: { max: 350, min: 100, optimalMax: 300, optimalMin: 150, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n ImmatureGranulocytes: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Insulin: {\n default: {\n fastingRequired: 'strict',\n max: 25,\n min: 2,\n optimalMax: 8,\n optimalMin: 3,\n unit: 'µIU/mL',\n },\n source: 'tietz-7ed-2015',\n },\n\n Iron: {\n default: { max: 170, min: 60, optimalMax: 140, optimalMin: 80, unit: 'mcg/dL' },\n source: 'sbpc-ml-2021',\n variants: [\n {\n ageMin: 18,\n range: { max: 175, min: 65, optimalMax: 150, optimalMin: 80, unit: 'mcg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 170, min: 50, optimalMax: 130, optimalMin: 60, unit: 'mcg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Lactate: {\n default: { max: 2.2, min: 0.5, optimalMax: 1.8, optimalMin: 0.7, unit: 'mmol/L' },\n source: 'tietz-7ed-2015',\n },\n\n // DHL/LDH — método IFCC a 37 °C (padrão atual na maioria dos laboratórios\n // brasileiros). Limites superiores de referência (97,5° percentil) obtidos\n // por Schumann & Klauke (2002) em indivíduos ≥17 anos: 247 U/L (mulheres)\n // e 248 U/L (homens). O IFCC publica apenas o limite superior; o limite\n // inferior é fixado em 0 pois DHL baixa não tem significado clínico.\n // Não comparar com método Wróblewski-LaDue (faixas mais antigas, ~240–480).\n LDH: {\n default: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: 'U/L' },\n direction: 'lower-better',\n source: 'schumann-ifcc-ldh-2002',\n variants: [\n {\n ageMin: 17,\n range: { max: 248, min: 0, optimalMax: 248, optimalMin: 0, unit: 'U/L' },\n sex: 'M',\n },\n {\n ageMin: 17,\n range: { max: 247, min: 0, optimalMax: 247, optimalMin: 0, unit: 'U/L' },\n sex: 'F',\n },\n ],\n },\n\n LDL: {\n default: { max: 100, min: 0, optimalMax: 70, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n LDL_Medium: {\n // LDL Medium (LDL Média): lower is better\n // Quest Ion Mobility reference: Male 167-485, Female 121-397 nmol/L, optimal <215\n default: { max: 485, min: 121, optimalMax: 215, optimalMin: 121, unit: 'nmol/L' },\n direction: 'lower-better',\n source: 'caulfield-ionmobility-2008',\n },\n\n LDL_ParticleNumber: {\n // LDL Particle Number: lower is better\n // Quest Ion Mobility reference: 1016-2185 nmol/L, optimal <1138\n default: { max: 2185, min: 1016, optimalMax: 1138, optimalMin: 1016, unit: 'nmol/L' },\n direction: 'lower-better',\n source: 'caulfield-ionmobility-2008',\n },\n\n LDL_Peak_Size: {\n // LDL Peak Size: higher is better (larger particles less atherogenic)\n // Quest Ion Mobility reference: optimal >222.9 Å (22.29 nm)\n default: { max: 250.0, min: 217.4, optimalMax: 250.0, optimalMin: 222.9, unit: 'Å' },\n direction: 'higher-better',\n source: 'caulfield-ionmobility-2008',\n },\n\n LDL_Small: {\n // LDL Small (LDL Pequena): lower is better (small dense LDL is most atherogenic)\n // Quest Ion Mobility reference: Male 123-441, Female 126-382 nmol/L, optimal <142\n default: { max: 441, min: 123, optimalMax: 142, optimalMin: 123, unit: 'nmol/L' },\n direction: 'lower-better',\n source: 'caulfield-ionmobility-2008',\n },\n\n Lead: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: 'mcg/dL' },\n source: 'nr7-pcmso-2020',\n },\n\n Leptin: {\n default: { max: 15, min: 2, optimalMax: 12, optimalMin: 3, unit: 'ng/mL' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 10, min: 1, optimalMax: 8, optimalMin: 2, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 25, min: 4, optimalMax: 18, optimalMin: 5, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n LH: {\n default: { max: 8.6, min: 1.7, optimalMax: 8.0, optimalMin: 2.0, unit: 'mIU/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 8.6, min: 1.7, optimalMax: 6.0, optimalMin: 1.7, unit: 'mIU/mL' },\n sex: 'M',\n },\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 12.6, min: 2.4, optimalMax: 10.0, optimalMin: 2.4, unit: 'mIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 51,\n range: { max: 58.5, min: 7.7, optimalMax: 40.0, optimalMin: 10.0, unit: 'mIU/mL' },\n sex: 'F',\n },\n ],\n },\n\n Omega6_LA: {\n default: { max: 35.0, min: 15.0, optimalMax: 28.0, optimalMin: 18.0, unit: '%' },\n source: 'simopoulos-omega-ratio-2002',\n },\n\n // Lp(a) — SBC 2025 (seção 3.1.1.2.7): níveis ≥ 50 mg/dL ou ≥ 125 nmol/L são\n // considerados aumentados, com indicação de rastreamento em cascata familiar.\n // A diretriz recomenda ensaio independente de isoforma medido em nmol/L; a\n // unidade nmol/L é mantida aqui por refletir o padrão laboratorial atual.\n // Limites anteriores (max=75) refletiam pontos de corte expressos em mg/dL,\n // gerando incompatibilidade com a unidade nmol/L declarada.\n Lipoprotein_a: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'nmol/L' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n Lymphocytes: {\n default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Lymphocytes_Abs: {\n default: { max: 4.0, min: 1.0, optimalMax: 3.0, optimalMin: 1.5, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Magnesium: {\n default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Magnesium_RBC: {\n default: { max: 6.8, min: 4.0, optimalMax: 6.0, optimalMin: 4.5, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n MCH: {\n default: { max: 33, min: 27, optimalMax: 32, optimalMin: 28, unit: 'pg' },\n source: 'pns-hemograma-2019',\n },\n\n MCHC: {\n default: { max: 36, min: 32, optimalMax: 35, optimalMin: 33, unit: 'g/dL' },\n source: 'pns-hemograma-2019',\n },\n\n MCV: {\n default: { max: 100, min: 80, optimalMax: 98, optimalMin: 82, unit: 'fL' },\n source: 'pns-hemograma-2019',\n },\n\n Mercury: {\n default: { max: 10, min: 0, optimalMax: 5, optimalMin: 0, unit: 'mcg/L' },\n source: 'nr7-pcmso-2020',\n },\n\n Microalbumin: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n source: 'kdigo-ckd-2024',\n },\n\n MMA: {\n default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\n },\n\n Monocytes: {\n default: { max: 8, min: 2, optimalMax: 7, optimalMin: 3, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Monocytes_Abs: {\n default: { max: 0.8, min: 0.2, optimalMax: 0.7, optimalMin: 0.3, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n MPV: {\n default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8.0, unit: 'fL' },\n source: 'pns-hemograma-2019',\n },\n\n // MPO: Meuwese 2007 (EPIC-Norfolk) — risco CV elevado >322 pmol/L\n Myeloperoxidase: {\n default: { max: 470, min: 0, optimalMax: 322, optimalMin: 0, unit: 'pmol/L' },\n source: 'meuwese-mpo-2007',\n },\n\n // WBC Differential (%)\n Neutrophils: {\n default: { max: 70, min: 40, optimalMax: 65, optimalMin: 50, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n // WBC Differential (Absolute)\n Neutrophils_Abs: {\n default: { max: 8.0, min: 1.5, optimalMax: 6.0, optimalMin: 2.0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n NonHDL_Cholesterol: {\n default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: 'mg/dL' },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n NRBC: {\n default: { max: 0, min: 0, optimalMax: 0, optimalMin: 0, unit: '/100WBC' },\n source: 'tietz-7ed-2015',\n },\n\n NTproBNP: {\n default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: 'pg/mL' },\n source: 'sbc-ic-2018',\n },\n\n Oleic_Acid: {\n default: { max: 25.0, min: 15.0, optimalMax: 22.0, optimalMin: 18.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Omega3_Index: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n // Ômega-3 Total (% de ácidos graxos eritrocitários) — Harris & von Schacky\n // (2004) propõem ≥ 8% como zona ótima de proteção cardiovascular; valores\n // entre 4% e 8% representam risco intermediário, < 4% risco alto.\n // optimalMin anterior (5.5%) ficava em zona intermediária, contradizendo\n // a literatura e o próprio texto educacional do `platform`.\n Omega3_Total: {\n default: { max: 12.0, min: 3.0, optimalMax: 10.0, optimalMin: 8.0, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n Omega6_Total: {\n default: { max: 40.0, min: 20.0, optimalMax: 35.0, optimalMin: 25.0, unit: '%' },\n source: 'simopoulos-omega-ratio-2002',\n },\n\n Omega6_Omega3_Ratio: {\n default: { max: 10.0, min: 1.0, optimalMax: 4.0, optimalMin: 1.0, unit: '' },\n direction: 'lower-better',\n source: 'simopoulos-omega-ratio-2002',\n },\n\n OmegaCheck: {\n default: { max: 8.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.5, unit: '%' },\n source: 'harris-omega3-2004',\n },\n\n Palmitic_Acid: {\n default: { max: 30.0, min: 20.0, optimalMax: 27.0, optimalMin: 22.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Phosphorus: {\n default: { max: 4.5, min: 2.5, optimalMax: 4.0, optimalMin: 3.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Platelets: {\n default: { max: 400, min: 150, optimalMax: 350, optimalMin: 180, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Potassium: {\n default: { max: 5.0, min: 3.5, optimalMax: 4.6, optimalMin: 3.8, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n Prealbumin: {\n default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Progesterona — varia drasticamente com a fase do ciclo menstrual.\n // O schema atual não modela fase do ciclo, então adotamos faixas amplas\n // por sexo: o `default` cobre homens/fase folicular/pós-menopausa; a\n // variante feminina expande até a faixa esperada de fase lútea\n // (~3-20 ng/mL). Interpretação correta exige correlação com a fase do\n // ciclo, indisponível neste contexto.\n Progesterone: {\n default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 0.9, min: 0.1, optimalMax: 0.6, optimalMin: 0.2, unit: 'ng/mL' },\n sex: 'M',\n },\n // Mulheres em idade reprodutiva: faixa que abarca fases folicular\n // (0.1-0.9 ng/mL) e lútea (3-20 ng/mL). Sem contexto de fase do ciclo,\n // valores intermediários (1-3 ng/mL) ficam em zona ambígua.\n {\n ageMax: 50,\n ageMin: 18,\n range: { max: 20.0, min: 0.1, optimalMax: 15.0, optimalMin: 0.2, unit: 'ng/mL' },\n sex: 'F',\n },\n // Pós-menopausa: valores tipicamente < 0.5 ng/mL (sem ovulação).\n {\n ageMin: 51,\n range: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n Prolactin: {\n default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 29, min: 2, optimalMax: 23, optimalMin: 4, unit: 'ng/mL' },\n sex: 'F',\n },\n ],\n },\n\n PSA: {\n default: { max: 4.0, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 2.5, min: 0, optimalMax: 1.5, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 59,\n ageMin: 50,\n range: { max: 3.5, min: 0, optimalMax: 2.5, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMax: 69,\n ageMin: 60,\n range: { max: 4.5, min: 0, optimalMax: 3.0, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n {\n ageMin: 70,\n range: { max: 6.5, min: 0, optimalMax: 4.0, optimalMin: 0, unit: 'ng/mL' },\n sex: 'M',\n },\n ],\n },\n\n RBC: {\n default: { max: 5.5, min: 4.0, optimalMax: 5.2, optimalMin: 4.3, unit: 'M/uL' },\n source: 'pns-hemograma-2019',\n variants: [\n {\n ageMin: 18,\n range: { max: 5.9, min: 4.5, optimalMax: 5.5, optimalMin: 4.7, unit: 'M/uL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 5.2, min: 4.0, optimalMax: 5.0, optimalMin: 4.2, unit: 'M/uL' },\n sex: 'F',\n },\n ],\n },\n\n RDW: {\n default: { max: 14.5, min: 11.5, optimalMax: 14.0, optimalMin: 12.0, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n Reticulocytes: {\n default: { max: 2.5, min: 0.5, optimalMax: 2.0, optimalMin: 0.8, unit: '%' },\n source: 'pns-hemograma-2019',\n },\n\n SDMA: {\n default: { max: 0.6, min: 0.3, optimalMax: 0.5, optimalMin: 0.3, unit: 'umol/L' },\n source: 'schwedhelm-sdma-2011',\n },\n\n Selenium: {\n default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: 'mcg/L' },\n source: 'tietz-7ed-2015',\n },\n\n SHBG: {\n default: { max: 54, min: 18, optimalMax: 50, optimalMin: 20, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 54, min: 18, optimalMax: 45, optimalMin: 20, unit: 'nmol/L' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 122, min: 24, optimalMax: 90, optimalMin: 30, unit: 'nmol/L' },\n sex: 'F',\n },\n ],\n },\n\n Sodium: {\n default: { max: 145, min: 136, optimalMax: 143, optimalMin: 138, unit: 'mEq/L' },\n source: 'tietz-7ed-2015',\n },\n\n SpecificGravity_Urine: {\n default: { max: 1.03, min: 1.005, optimalMax: 1.025, optimalMin: 1.01, unit: 'SG' },\n source: 'tietz-7ed-2015',\n },\n\n Stearic_Acid: {\n default: { max: 14.0, min: 8.0, optimalMax: 12.0, optimalMin: 10.0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n T3Free: {\n default: { max: 4.2, min: 2.3, optimalMax: 3.8, optimalMin: 2.8, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n T3Reverse: {\n default: { max: 24, min: 10, optimalMax: 20, optimalMin: 12, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n },\n\n T4Free: {\n default: { max: 1.8, min: 0.8, optimalMax: 1.5, optimalMin: 1.0, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n },\n\n T4Total: {\n default: { max: 12.0, min: 4.5, optimalMax: 10.0, optimalMin: 6.0, unit: 'ug/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Testosterone: {\n default: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 1000, min: 300, optimalMax: 800, optimalMin: 500, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 50,\n range: { max: 800, min: 200, optimalMax: 650, optimalMin: 400, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 70, min: 15, optimalMax: 50, optimalMin: 20, unit: 'ng/dL' },\n sex: 'F',\n },\n ],\n },\n\n TestosteroneBioavailable: {\n default: { max: 200, min: 50, optimalMax: 150, optimalMin: 80, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // TestosteroneFree - using direct immunoassay ranges (Quest/LabCorp standard)\n // Previous values (9.3-26.5 pg/mL) were based on equilibrium dialysis method\n TestosteroneFree: {\n default: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMax: 49,\n ageMin: 18,\n range: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMin: 50,\n range: { max: 130, min: 30, optimalMax: 100, optimalMin: 40, unit: 'pg/mL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 5.0, min: 0.2, optimalMax: 3.0, optimalMin: 0.5, unit: 'pg/mL' },\n sex: 'F',\n },\n ],\n },\n\n TIBC: {\n default: { max: 370, min: 250, optimalMax: 350, optimalMin: 280, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n TotalProtein: {\n default: { max: 8.3, min: 6.0, optimalMax: 7.8, optimalMin: 6.5, unit: 'g/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Trans_Fat_Index: {\n default: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: '%' },\n source: 'tietz-7ed-2015',\n },\n\n Transferrin: {\n default: { max: 360, min: 200, optimalMax: 340, optimalMin: 220, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n TransferrinSaturation: {\n default: { max: 50, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 55, min: 20, optimalMax: 45, optimalMin: 25, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n // Triglicérides — SBC 2017/2025 permite dosagem não-jejum com corte distinto\n // (<175 mg/dL pós-prandial). Marcamos `preferred` para indicar que a faixa\n // padrão é de jejum, mas não bloqueamos interpretação em não-jejum.\n Triglycerides: {\n default: {\n fastingRequired: 'preferred',\n max: 150,\n min: 0,\n optimalMax: 100,\n optimalMin: 0,\n unit: 'mg/dL',\n },\n direction: 'lower-better',\n source: 'sbc-lipids-2025',\n },\n\n // TroponinI: 0.04 ng/mL = percentil 99 (ensaio Siemens TnI-Ultra)\n TroponinI: {\n default: { max: 0.04, min: 0, optimalMax: 0.02, optimalMin: 0, unit: 'ng/mL' },\n source: 'keller-tni-2013',\n },\n\n // TroponinT: 14 ng/L = percentil 99 hs-cTnT (ensaio Roche Elecsys 5ª geração)\n TroponinT: {\n default: { max: 14, min: 0, optimalMax: 10, optimalMin: 0, unit: 'ng/L' },\n source: 'giannitsis-hstnt-2010',\n },\n\n // TSH — 0.4–4.0 é a faixa de referência adulta geral. O alvo 2.5 µIU/mL é\n // específico do 1º trimestre gestacional (ATA 2017) e não se aplica a\n // não-gestantes; optimalMax=3.0 reflete o limite superior do tercil \"ótimo\"\n // sem invadir a faixa subclínica. Variante ageMin=65 mantém limite superior\n // expandido (tolerância fisiológica do eixo em idosos, SBEM 2013).\n TSH: {\n default: { max: 4.0, min: 0.4, optimalMax: 3.0, optimalMin: 1.0, unit: 'µIU/mL' },\n source: 'sbem-thyroid-2013',\n variants: [\n // Variantes gestacionais (ATA 2017 / SBEM): supressão fisiológica por hCG\n // no 1º trimestre, recuperação progressiva no 2º/3º. Trimestre-específicas\n // precedem a catch-all; catch-all cobre contexto gestante sem trimestre\n // conhecido.\n // optimalMin/optimalMax definem subfaixa \"alvo\" mais estreita que o\n // intervalo de referência — ex.: 1º tri aceita 0.1–2.5, mas o alvo\n // terapêutico é 0.5–2.5.\n {\n pregnant: true,\n pregnancyTrimester: 1,\n range: { max: 2.5, min: 0.1, optimalMax: 2.0, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 2,\n range: { max: 3.0, min: 0.2, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n {\n pregnant: true,\n pregnancyTrimester: 3,\n range: { max: 3.0, min: 0.3, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n // Catch-all gestacional — usada quando o trimestre não é informado.\n // Adota a faixa mais conservadora (2º/3º trimestre: 0.2–3.0).\n {\n pregnant: true,\n range: { max: 3.0, min: 0.2, optimalMax: 2.5, optimalMin: 0.5, unit: 'µIU/mL' },\n sex: 'F',\n },\n {\n ageMin: 65,\n range: { max: 6.0, min: 0.4, optimalMax: 4.0, optimalMin: 1.0, unit: 'µIU/mL' },\n sex: 'all',\n },\n ],\n },\n\n // Ureia — convenção brasileira (laboratórios reportam Ureia, não BUN).\n // Faixa adulta de 15-50 mg/dL (Ureia ≈ BUN × 2,14). Limites anteriores\n // (7-20 mg/dL) refletiam BUN/Nitrogênio Ureico, gerando falsos diagnósticos\n // de azotemia em pacientes com Ureia normal. LOINC 3094-0 (BUN) também\n // deve ser revisto em biomarkers.ts — ver issue #41.\n Urea: {\n default: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n UricAcid: {\n default: { max: 7.0, min: 2.5, optimalMax: 5.5, optimalMin: 3.0, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 7.0, min: 3.4, optimalMax: 6.0, optimalMin: 4.0, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 6.0, min: 2.4, optimalMax: 5.0, optimalMin: 3.0, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n Urobilinogen_Urine: {\n default: { max: 1.0, min: 0.1, optimalMax: 1.0, optimalMin: 0.1, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n pH_Urine: {\n default: { max: 8.0, min: 4.5, optimalMax: 7.0, optimalMin: 5.5, unit: 'pH' },\n source: 'tietz-7ed-2015',\n },\n\n HyalineCasts_Urine: {\n default: { max: 2, min: 0, optimalMax: 1, optimalMin: 0, unit: '/LPF' },\n source: 'tietz-7ed-2015',\n },\n\n RBC_Urine: {\n default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n SquamousEpithelial_Urine: {\n default: { max: 15, min: 0, optimalMax: 5, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n Leukocytes_Urine: {\n default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: '/HPF' },\n source: 'tietz-7ed-2015',\n },\n\n Folate: {\n default: { max: 20, min: 3.9, optimalMax: 17, optimalMin: 5, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminA: {\n default: { max: 100, min: 20, optimalMax: 80, optimalMin: 30, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB1: {\n default: { max: 180, min: 70, optimalMax: 150, optimalMin: 80, unit: 'nmol/L' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB12: {\n default: { max: 900, min: 200, optimalMax: 800, optimalMin: 400, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminB6: {\n default: { max: 50, min: 5, optimalMax: 40, optimalMin: 10, unit: 'ng/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminC: {\n default: { max: 2.0, min: 0.4, optimalMax: 1.5, optimalMin: 0.6, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // Vitamina D — posicionamento conjunto SBEM/SBPC-ML 2017:\n // ≥20 ng/mL é desejável para população saudável <60 anos\n // ≥30 ng/mL é recomendado para grupos de risco (idosos, gestantes, DRC,\n // osteoporose, hiperparatireoidismo secundário).\n // A variante ageMin=60 cobre idosos. Gestação, doença renal crônica,\n // osteoporose e hiperparatireoidismo secundário também exigem min=30;\n // o tipo `BiomarkerReferenceRange` atual não expressa esses contextos\n // clínicos além de gestação e idade, portanto consumidores devem aplicar\n // o limiar ≥30 nessas populações quando souberem a comorbidade. Gestação\n // será modelada quando `pregnant: true` — aceita-se TODO até lá.\n // TODO(PR-vitd-pregnancy): adicionar variante `pregnant: true` com min=30\n // quando a modelagem de comorbidades chegar ao schema.\n VitaminD: {\n default: { max: 100, min: 20, optimalMax: 70, optimalMin: 40, unit: 'ng/mL' },\n source: 'ferreira-vitd-2017',\n variants: [\n {\n ageMin: 60,\n range: { max: 100, min: 30, optimalMax: 70, optimalMin: 40, unit: 'ng/mL' },\n sex: 'all',\n },\n ],\n },\n\n VitaminD_1_25: {\n default: { max: 72, min: 18, optimalMax: 60, optimalMin: 25, unit: 'pg/mL' },\n source: 'tietz-7ed-2015',\n },\n\n VitaminE: {\n default: { max: 17, min: 5.5, optimalMax: 14, optimalMin: 7, unit: 'mg/L' },\n source: 'tietz-7ed-2015',\n },\n\n // VLDL — estimado clinicamente via TG/5 (método Friedewald). O corte de\n // referência deriva de triglicérides <150 mg/dL (SBC 2025, dislipidemias),\n // portanto VLDL <30. Friedewald-1972 permanece registrada como fonte do\n // método de cálculo, mas a faixa de referência tem respaldo na diretriz\n // SBC 2025.\n VLDL: {\n default: { max: 30, min: 2, optimalMax: 20, optimalMin: 5, unit: 'mg/dL' },\n source: 'sbc-lipids-2025',\n },\n\n WBC: {\n default: { max: 11.0, min: 4.0, optimalMax: 8.0, optimalMin: 5.0, unit: 'K/uL' },\n source: 'pns-hemograma-2019',\n },\n\n Zinc: {\n default: { max: 120, min: 60, optimalMax: 100, optimalMin: 70, unit: 'mcg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n AndroidFatPct: {\n default: { max: 35, min: 10, optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 30, min: 10, optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 42, min: 15, optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n AndroidGynoidRatio: {\n default: { max: 1.2, min: 0.5, optimalMax: 1.0, optimalMin: 0.6, unit: '' },\n direction: 'lower-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 1.2, min: 0.6, optimalMax: 1.0, optimalMin: 0.7, unit: '' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.0, min: 0.4, optimalMax: 0.8, optimalMin: 0.5, unit: '' },\n sex: 'F',\n },\n ],\n },\n\n BMC: {\n default: { max: 3.5, min: 2.0, optimalMax: 3.2, optimalMin: 2.3, unit: 'kg' },\n direction: 'higher-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 4.0, min: 2.5, optimalMax: 3.5, optimalMin: 2.8, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 3.0, min: 1.8, optimalMax: 2.7, optimalMin: 2.0, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n // BodyFatPct — Age-bracketed ranges from Gallagher et al. Am J Clin Nutr 2000;72:694-701\n // (PMID: 10966886) and ACSM Guidelines for Exercise Testing, 11th Ed (2021)\n BodyFatPct: {\n default: { max: 30, min: 10, optimalMax: 25, optimalMin: 15, unit: '%' },\n direction: 'lower-better',\n source: 'gallagher-bodyfat-2000',\n variants: [\n // Men — age brackets\n {\n ageMax: 25,\n ageMin: 18,\n range: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 26, min: 5, optimalMax: 21, optimalMin: 11, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 27, min: 5, optimalMax: 22, optimalMin: 12, unit: '%' },\n sex: 'M',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 28, min: 5, optimalMax: 23, optimalMin: 13, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 56,\n range: { max: 29, min: 5, optimalMax: 24, optimalMin: 14, unit: '%' },\n sex: 'M',\n },\n // Women — age brackets\n {\n ageMax: 25,\n ageMin: 18,\n range: { max: 32, min: 13, optimalMax: 28, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 35,\n ageMin: 26,\n range: { max: 33, min: 13, optimalMax: 29, optimalMin: 18, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 45,\n ageMin: 36,\n range: { max: 34, min: 13, optimalMax: 30, optimalMin: 19, unit: '%' },\n sex: 'F',\n },\n {\n ageMax: 55,\n ageMin: 46,\n range: { max: 35, min: 13, optimalMax: 31, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n {\n ageMin: 56,\n range: { max: 36, min: 13, optimalMax: 32, optimalMin: 20, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n FatFreeMass: {\n default: { max: 80, min: 40, optimalMax: 70, optimalMin: 45, unit: 'kg' },\n direction: 'higher-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 90, min: 50, optimalMax: 80, optimalMin: 55, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 60, min: 35, optimalMax: 52, optimalMin: 38, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n FatMass: {\n default: { max: 30, min: 5, optimalMax: 20, optimalMin: 8, unit: 'kg' },\n direction: 'lower-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 25, min: 5, optimalMax: 18, optimalMin: 7, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 30, min: 8, optimalMax: 22, optimalMin: 10, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n GynoidFatPct: {\n default: { max: 45, min: 15, optimalMax: 35, optimalMin: 20, unit: '%' },\n direction: 'lower-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 35, min: 12, optimalMax: 28, optimalMin: 15, unit: '%' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 50, min: 20, optimalMax: 40, optimalMin: 25, unit: '%' },\n sex: 'F',\n },\n ],\n },\n\n LeanMass: {\n default: { max: 75, min: 35, optimalMax: 65, optimalMin: 40, unit: 'kg' },\n direction: 'higher-better',\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 55, min: 30, optimalMax: 48, optimalMin: 35, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n TotalMass: {\n default: { max: 100, min: 50, optimalMax: 85, optimalMin: 55, unit: 'kg' },\n source: 'kelly-dxa-2009',\n variants: [\n {\n ageMin: 18,\n range: { max: 100, min: 55, optimalMax: 90, optimalMin: 60, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n VATMass: {\n default: { max: 1.5, min: 0, optimalMax: 0.8, optimalMin: 0, unit: 'kg' },\n direction: 'lower-better',\n source: 'ofenheimer-vat-2020',\n variants: [\n {\n ageMin: 18,\n range: { max: 1.5, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'kg' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 1.0, min: 0, optimalMax: 0.5, optimalMin: 0, unit: 'kg' },\n sex: 'F',\n },\n ],\n },\n\n VATVolume: {\n default: {\n max: 852,\n min: 0,\n optimalMax: 600,\n optimalMin: 0,\n unit: 'cm³',\n warningMax: 1837,\n },\n direction: 'lower-better',\n source: 'ge-corescan',\n },\n\n BMD_Total: {\n default: { max: 1.4, min: 0.9, optimalMax: 1.3, optimalMin: 1.0, unit: 'g/cm²' },\n direction: 'higher-better',\n source: 'who-osteoporosis-1994',\n },\n\n TScore_Total: {\n default: { max: 4.0, min: -1.0, optimalMax: 2.0, optimalMin: -0.5, unit: '' },\n direction: 'higher-better',\n source: 'who-osteoporosis-1994',\n },\n\n ZScore_Total: {\n default: { max: 2.0, min: -2.0, optimalMax: 1.0, optimalMin: -1.0, unit: '' },\n direction: 'higher-better',\n source: 'who-osteoporosis-1994',\n },\n\n Amylase: {\n default: { max: 100, min: 28, optimalMax: 90, optimalMin: 35, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n },\n\n Creatinine_Urine: {\n default: { max: 300, min: 20, optimalMax: 250, optimalMin: 40, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 300, min: 40, optimalMax: 260, optimalMin: 60, unit: 'mg/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 220, min: 20, optimalMax: 180, optimalMin: 40, unit: 'mg/dL' },\n sex: 'F',\n },\n ],\n },\n\n IgA: {\n default: { max: 400, min: 70, optimalMax: 350, optimalMin: 100, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n Lipase: {\n default: { max: 60, min: 0, optimalMax: 50, optimalMin: 10, unit: 'U/L' },\n source: 'tietz-7ed-2015',\n },\n\n Microalbumin_Urine: {\n default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: 'mg/L' },\n source: 'kdigo-ckd-2024',\n },\n\n PSA_Free: {\n default: { max: 1.5, min: 0, optimalMax: 1.0, optimalMin: 0, unit: 'ng/mL' },\n source: 'sturgeon-nacb-2008',\n },\n\n PSA_FreeRatio: {\n default: { max: 100, min: 25, optimalMax: 100, optimalMin: 30, unit: '%' },\n source: 'sturgeon-nacb-2008',\n },\n\n // BMI - WHO classification: 18.5–24.9 normal, 25–29.9 overweight, ≥30 obese\n BMI: {\n default: { max: 30, min: 18.5, optimalMax: 24.9, optimalMin: 18.5, unit: 'kg/m2' },\n source: 'who-obesity-2000',\n },\n\n // eAG - Estimated Average Glucose, derived from HbA1c (ADAG study)\n eAG: {\n default: { max: 154, min: 70, optimalMax: 126, optimalMin: 70, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // INR - International Normalized Ratio (non-anticoagulated patients)\n INR: {\n default: { max: 1.2, min: 0.8, optimalMax: 1.1, optimalMin: 0.9, unit: 'ratio' },\n source: 'tietz-7ed-2015',\n },\n\n // Prothrombin Time\n ProthrombinTime: {\n default: { max: 13.5, min: 11, optimalMax: 13, optimalMin: 11, unit: 'seconds' },\n source: 'tietz-7ed-2015',\n },\n\n // DHT - Dihydrotestosterone (adult male reference; female values are much lower)\n DHT: {\n default: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: 'ng/dL' },\n source: 'tietz-7ed-2015',\n variants: [\n {\n ageMin: 18,\n range: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: 'ng/dL' },\n sex: 'M',\n },\n {\n ageMin: 18,\n range: { max: 22, min: 4, optimalMax: 22, optimalMin: 4, unit: 'ng/dL' },\n sex: 'F',\n },\n ],\n },\n\n // Total IgE - higher values suggest atopy/allergic sensitization\n IgE_Total: {\n default: { max: 100, min: 0, optimalMax: 100, optimalMin: 0, unit: 'IU/mL' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n },\n\n // IgG - Immunoglobulin G\n IgG: {\n default: { max: 1600, min: 700, optimalMax: 1600, optimalMin: 700, unit: 'mg/dL' },\n source: 'tietz-7ed-2015',\n },\n\n // IgE E1 Cat Dander - Class 0 (≤0.35 kU/L) = negative\n IgE_E1_CatDander: {\n default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: 'kU/L' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n },\n\n // IgE GX1 Grasses - Class 0 (≤0.35 kU/L) = negative\n IgE_GX1_Grasses: {\n default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: 'kU/L' },\n direction: 'lower-better',\n source: 'tietz-7ed-2015',\n },\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Legacy flat reference ranges for backward compatibility\n * This is derived from biomarkerRangeDefinitions defaults\n */\nexport const defaultReferenceRanges: Record<string, BiomarkerReferenceRange> = Object.fromEntries(\n Object.entries(biomarkerRangeDefinitions).map(([code, def]) => [code, def.default]),\n);\n\n/**\n * Get the reference range for a biomarker code, optionally personalized for user context\n * @param testCode - The biomarker code (e.g., \"HDL\", \"Testosterone\")\n * @param context - Optional user context for personalized ranges\n * @returns Reference range or undefined if not found\n */\nexport function getReferenceRange(\n testCode: string,\n context?: ReferenceRangeContext,\n): BiomarkerReferenceRange | undefined {\n const definition = biomarkerRangeDefinitions[testCode];\n if (!definition) return undefined;\n\n // If no context or no variants, return default\n if (!context || !definition.variants || definition.variants.length === 0) {\n return definition.default;\n }\n\n const { age, biologicalSex, pregnancyTrimester, pregnant } = context;\n\n // Detect whether the biomarker has pregnancy-specific variants at all.\n // Se o biomarcador não modela gestação, uma usuária gestante deve continuar\n // recebendo a variante por sexo/idade (mais informativa que o default). Apenas\n // quando existe ao menos uma variante gestacional é que bloqueamos as variantes\n // não-gestacionais para contextos gestantes — evitando mistura de faixas.\n //\n // Precedência quando pregnant=true: variantes gestacionais têm precedência\n // absoluta sobre variantes etárias. Uma gestante de 65+ anos consultando\n // TSH recebe a faixa gestacional, não a variante ageMin=65. Isto é\n // intencional — em gestação, o eixo HPG domina sobre o envelhecimento\n // fisiológico. Casos raros de gestação pós-menopausa (FIV) seguem essa\n // regra; o consumidor que precise distinguir deve aplicar lógica de\n // contexto adicional.\n //\n // Tratamento de `pregnant: undefined` vs `false`: ambos são tratados como\n // \"não-gestante\" (fallback seguro). O consumidor deve setar pregnant: true\n // explicitamente para ativar variantes gestacionais; contexto sem a flag\n // recebe a faixa padrão da população geral.\n const hasPregnancyVariant = definition.variants.some((v) => v.pregnant === true);\n\n // Find matching variant (first match wins — more specific variants must be\n // listed first). Ordem obrigatória quando há variantes gestacionais:\n // 1. variantes trimestre-específicas (pregnant=true + pregnancyTrimester=N)\n // 2. catch-all gestacional (pregnant=true, sem trimester)\n // 3. variantes por sexo/idade não-gestacionais\n // Reordenar quebraria o matching; a verificação `variant.pregnancyTrimester\n // !== pregnancyTrimester` depende da catch-all vir por último.\n for (const variant of definition.variants) {\n if (variant.pregnant === true) {\n if (!pregnant) continue;\n // Variante com trimestre específico só casa quando o contexto também\n // especifica o mesmo trimestre. Variantes gestacionais sem trimestre\n // (catch-all) casam com qualquer contexto gestante, servindo de fallback.\n if (\n variant.pregnancyTrimester !== undefined &&\n variant.pregnancyTrimester !== pregnancyTrimester\n ) {\n continue;\n }\n } else if (pregnant && hasPregnancyVariant) {\n // Só pulamos variantes não-gestacionais se o biomarcador tem variantes\n // gestacionais; caso contrário, a variante por sexo/idade é aplicável.\n continue;\n }\n\n // Check sex match ('all' matches everyone)\n if (variant.sex !== 'all' && variant.sex !== biologicalSex) {\n continue;\n }\n\n // Check age range\n if (variant.ageMin !== undefined && (age === undefined || age < variant.ageMin)) {\n continue;\n }\n if (variant.ageMax !== undefined && (age === undefined || age > variant.ageMax)) {\n continue;\n }\n\n return variant.range;\n }\n\n // No matching variant found - return default\n return definition.default;\n}\n\n/**\n * Get the range direction for a biomarker code.\n * Returns 'range' (default) if not specified.\n */\nexport function getRangeDirection(testCode: string): RangeDirection {\n return biomarkerRangeDefinitions[testCode]?.direction ?? 'range';\n}\n\n/**\n * Get fallback reference range for a biomarker code (default only, no personalization)\n * Used by API when LLM doesn't extract reference values\n * @param biomarkerCode - The biomarker code\n * @returns Reference range with min/max/unit or undefined\n */\nexport function getFallbackReferenceRange(\n biomarkerCode: string,\n): { min: number; max: number; unit: string } | undefined {\n const definition = biomarkerRangeDefinitions[biomarkerCode];\n if (!definition || definition.default.min === undefined || definition.default.max === undefined) {\n return undefined;\n }\n return {\n max: definition.default.max,\n min: definition.default.min,\n unit: definition.default.unit,\n };\n}\n\n/**\n * Apply fallback reference ranges to biomarkers that are missing them\n * @param biomarkers - Array of parsed biomarkers\n * @returns Count of biomarkers that received fallback references\n */\nexport function applyFallbackReferenceRanges<\n T extends {\n code: string;\n referenceMin?: number | null;\n referenceMax?: number | null;\n unit?: string;\n },\n>(biomarkers: T[]): number {\n let fallbackCount = 0;\n\n for (const biomarker of biomarkers) {\n // Skip if already has reference values\n if (biomarker.referenceMin != null && biomarker.referenceMax != null) {\n continue;\n }\n\n const fallback = getFallbackReferenceRange(biomarker.code);\n if (fallback) {\n // Only apply if units are compatible or biomarker has no unit\n const canonicalUnit = getCanonicalUnitForCode(biomarker.code);\n const unitsMatch =\n !biomarker.unit ||\n biomarker.unit.toLowerCase() === fallback.unit.toLowerCase() ||\n (canonicalUnit && biomarker.unit.toLowerCase() === canonicalUnit.toLowerCase()) ||\n // Handle common unit variations\n (biomarker.unit === '%' && fallback.unit === '%');\n\n if (unitsMatch) {\n if (biomarker.referenceMin == null) {\n biomarker.referenceMin = fallback.min;\n }\n if (biomarker.referenceMax == null) {\n biomarker.referenceMax = fallback.max;\n }\n fallbackCount++;\n }\n }\n }\n\n return fallbackCount;\n}\n"]}
@@ -104,9 +104,13 @@ var BIOMARKER_DEFINITIONS = [
104
104
  unit: "nmol/L"
105
105
  },
106
106
  {
107
+ // LOINC 43583-4 = "Lipoprotein a [Moles/volume] in Serum or Plasma" (nmol/L).
108
+ // Anteriormente 10835-7 ("Lipoprotein a [Mass/volume]", mg/dL),
109
+ // incompatível com a unidade nmol/L declarada. SBC 2025 recomenda
110
+ // ensaio independente de isoforma reportado em nmol/L.
107
111
  category: "coracao",
108
112
  code: "Lipoprotein_a",
109
- loinc: "10835-7",
113
+ loinc: "43583-4",
110
114
  names: {
111
115
  en: ["Lipoprotein (a)", "Lp(a)"],
112
116
  pt: ["Lipoprote\xEDna (a)", "Lp(a)"]
@@ -1426,11 +1430,16 @@ var BIOMARKER_DEFINITIONS = [
1426
1430
  unit: "mg/L"
1427
1431
  },
1428
1432
  {
1433
+ // LOINC 3091-6 = "Urea [Mass/volume] in Serum or Plasma" (mg/dL).
1434
+ // Anteriormente 3094-0 ("Urea nitrogen", BUN), inconsistente com a faixa
1435
+ // de referência brasileira (15-50 mg/dL) e com os nomes pt-BR (Ureia).
1436
+ // Aliases 'BUN' e 'Blood Urea Nitrogen' removidos para evitar matching
1437
+ // de relatórios de BUN contra faixas de Ureia (BUN ≈ Ureia / 2,14).
1429
1438
  category: "rins",
1430
1439
  code: "Urea",
1431
- loinc: "3094-0",
1440
+ loinc: "3091-6",
1432
1441
  names: {
1433
- en: ["Blood Urea Nitrogen", "BUN", "Urea"],
1442
+ en: ["Urea"],
1434
1443
  pt: ["Ureia", "Ur\xE9ia"]
1435
1444
  },
1436
1445
  unit: "mg/dL"
@@ -2893,4 +2902,4 @@ export {
2893
2902
  getBiomarkersByCategory,
2894
2903
  getBiomarkersForCategories
2895
2904
  };
2896
- //# sourceMappingURL=chunk-ICSMWCVT.js.map
2905
+ //# sourceMappingURL=chunk-ZQXKRINW.js.map