@precisa-saude/fhir 0.15.0 → 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-KIYE6S66.js → chunk-V5X3RU6M.js} +75 -10
  12. package/dist/chunk-V5X3RU6M.js.map +1 -0
  13. package/dist/{chunk-3IOAP7CG.cjs → chunk-ZKN5UI7R.cjs} +75 -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 +87 -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-3IOAP7CG.cjs.map +0 -1
  28. package/dist/chunk-EW5GLFSC.cjs.map +0 -1
  29. package/dist/chunk-ICSMWCVT.js.map +0 -1
  30. package/dist/chunk-KIYE6S66.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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/biomarkers.ts"],"sourcesContent":["/**\n * Biomarker Definitions - Single Source of Truth\n *\n * This file defines all supported biomarkers with:\n * - LOINC codes (canonical identifier for cross-language matching)\n * - Internal codes (for UI display)\n * - Portuguese and English names\n * - Categories\n * - Default units\n *\n * The LLM extraction prompt includes these definitions so it can output\n * LOINC codes directly, eliminating the need for name-matching logic.\n */\n\nexport interface BiomarkerDefinition {\n category: string | string[];\n code: string;\n codeAliases?: string[];\n hidden?: boolean; // If true, biomarker is extracted but not shown in UI\n loinc?: string; // Optional - some DEXA regional metrics don't have official LOINC codes\n loincAliases?: string[];\n names: {\n en: string[];\n pt: string[];\n };\n sex?: 'male' | 'female' | 'both';\n unit?: string;\n}\n\n/** @deprecated Use `BiomarkerDefinition` instead */\nexport type SupportedBiomarker = BiomarkerDefinition;\n\n/**\n * All supported biomarker definitions\n */\nexport const BIOMARKER_DEFINITIONS: BiomarkerDefinition[] = [\n // ============================================================================\n // HEART / CORACAO\n // ============================================================================\n {\n category: 'coracao',\n code: 'ApoB',\n loinc: '1884-6',\n names: {\n en: ['Apolipoprotein B', 'ApoB'],\n pt: ['Apolipoproteína B', 'ApoB'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'HDL',\n loinc: '2085-9',\n names: {\n en: ['HDL Cholesterol', 'HDL', 'High-Density Lipoprotein'],\n pt: ['Colesterol HDL', 'HDL', 'HDL-Colesterol'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'HDL_Large',\n loinc: '43729-3',\n names: {\n en: ['HDL Large', 'Large HDL Particles'],\n pt: ['HDL Grande', 'Partículas HDL Grandes'],\n },\n unit: 'nmol/L',\n },\n {\n category: 'coracao',\n code: 'CRP',\n loinc: '1988-5',\n names: {\n en: ['C-Reactive Protein', 'CRP', 'hs-CRP', 'High-Sensitivity CRP'],\n pt: ['Proteína C-Reativa', 'PCR', 'PCR-as', 'PCR Ultrassensível'],\n },\n unit: 'mg/L',\n },\n {\n category: 'coracao',\n code: 'LDL',\n loinc: '2089-1',\n names: {\n en: ['LDL Cholesterol', 'LDL', 'Low-Density Lipoprotein'],\n pt: ['Colesterol LDL', 'LDL', 'LDL-Colesterol'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'LDL_Medium',\n loinc: '96735-6',\n names: {\n en: ['LDL Medium', 'Medium LDL Particles'],\n pt: ['LDL Médio', 'Partículas LDL Médias'],\n },\n unit: 'nmol/L',\n },\n {\n category: 'coracao',\n code: 'LDL_ParticleNumber',\n codeAliases: ['LDL_Particle_Number'],\n loinc: '54434-6',\n names: {\n en: ['LDL Particle Number', 'LDL-P'],\n pt: ['Número de Partículas LDL', 'LDL-P'],\n },\n unit: 'nmol/L',\n },\n {\n category: 'coracao',\n code: 'LDL_Pattern',\n loinc: '35505-7',\n names: {\n en: ['LDL Pattern', 'LDL Particle Pattern'],\n pt: ['Padrão LDL', 'Padrão de Partículas LDL'],\n },\n },\n {\n category: 'coracao',\n code: 'LDL_Peak_Size',\n loinc: '17782-4',\n names: {\n en: ['LDL Peak Size', 'LDL Particle Size'],\n pt: ['Tamanho de Pico LDL', 'Tamanho de Partícula LDL'],\n },\n unit: 'Angstrom',\n },\n {\n category: 'coracao',\n code: 'LDL_Small',\n loinc: '43727-7',\n names: {\n en: ['LDL Small', 'Small Dense LDL'],\n pt: ['LDL Pequeno', 'LDL Denso Pequeno'],\n },\n unit: 'nmol/L',\n },\n {\n // LOINC 43583-4 = \"Lipoprotein a [Moles/volume] in Serum or Plasma\" (nmol/L).\n // Anteriormente 10835-7 (\"Lipoprotein a [Mass/volume]\", mg/dL),\n // incompatível com a unidade nmol/L declarada. SBC 2025 recomenda\n // ensaio independente de isoforma reportado em nmol/L.\n category: 'coracao',\n code: 'Lipoprotein_a',\n loinc: '43583-4',\n names: {\n en: ['Lipoprotein (a)', 'Lp(a)'],\n pt: ['Lipoproteína (a)', 'Lp(a)'],\n },\n unit: 'nmol/L',\n },\n {\n category: 'coracao',\n code: 'NonHDL_Cholesterol',\n codeAliases: ['UNKNOWN_Colesterol_no_HDL', 'UNKNOWN_Colesterol_No_HDL'],\n loinc: '43396-1',\n names: {\n en: ['Non-HDL Cholesterol', 'Non HDL Cholesterol', 'NonHDL Cholesterol', 'Non-HDL-C'],\n pt: ['Colesterol Não-HDL', 'Colesterol no HDL', 'Colesterol não HDL', 'Colesterol Non-HDL'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'Cholesterol',\n loinc: '2093-3',\n names: {\n en: ['Total Cholesterol', 'Cholesterol'],\n pt: ['Colesterol Total', 'Colesterol'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'Cholesterol_HDL_Ratio',\n codeAliases: ['CholHDL_Ratio'],\n loinc: '9830-1',\n names: {\n en: [\n 'Total Cholesterol / HDL Ratio',\n 'Cholesterol/HDL Ratio',\n 'Chol/HDL Ratio',\n 'CholHDL Ratio',\n 'Cholesterol HDL Ratio',\n 'Chol/HDLC Ratio',\n 'CHOL/HDLC RATIO',\n ],\n pt: ['Razão Colesterol Total / HDL', 'Razão Colesterol/HDL'],\n },\n unit: 'razão',\n },\n {\n category: 'coracao',\n code: 'Triglycerides',\n loinc: '2571-8',\n names: {\n en: ['Triglycerides'],\n pt: ['Triglicerídeos', 'Triglicérides'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'coracao',\n code: 'VLDL',\n codeAliases: ['VLDL_Cholesterol'],\n loinc: '13458-5',\n names: {\n en: ['VLDL Cholesterol', 'VLDL'],\n pt: ['Colesterol VLDL', 'VLDL'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // CORONARY ARTERY CALCIUM (CAC) SCORE\n // ============================================================================\n {\n category: 'coracao',\n code: 'CAC',\n hidden: true,\n names: {\n en: [\n 'Coronary Artery Calcium Score',\n 'CAC Score',\n 'Calcium Score',\n 'Agatston Score',\n 'Total Agatston Score',\n 'CT Calcium Score',\n 'Total Coronary Calcium Score',\n ],\n pt: [\n 'Escore de Cálcio Coronariano',\n 'Escore de Cálcio',\n 'Escore CAC',\n 'Escore Agatston',\n 'Escore de Cálcio Total',\n 'Cálcio Coronariano',\n ],\n },\n unit: 'AU',\n },\n {\n category: 'coracao',\n code: 'CAC_LMA',\n hidden: true,\n names: {\n en: ['Left Main Artery Calcium', 'LMA Calcium Score', 'Left Main Calcium'],\n pt: ['Cálcio Tronco Coronária Esquerda', 'Cálcio TCE', 'Cálcio Artéria Coronária Esquerda'],\n },\n unit: 'AU',\n },\n {\n category: 'coracao',\n code: 'CAC_LAD',\n hidden: true,\n names: {\n en: ['Left Anterior Descending Calcium', 'LAD Calcium Score', 'LAD Calcium'],\n pt: [\n 'Cálcio Descendente Anterior Esquerda',\n 'Cálcio DA',\n 'Cálcio Artéria Descendente Anterior',\n ],\n },\n unit: 'AU',\n },\n {\n category: 'coracao',\n code: 'CAC_LCX',\n hidden: true,\n names: {\n en: ['Left Circumflex Calcium', 'LCX Calcium Score', 'LCX Calcium', 'Circumflex Calcium'],\n pt: ['Cálcio Circunflexa', 'Cálcio CX', 'Cálcio Artéria Circunflexa'],\n },\n unit: 'AU',\n },\n {\n category: 'coracao',\n code: 'CAC_RCA',\n hidden: true,\n names: {\n en: ['Right Coronary Artery Calcium', 'RCA Calcium Score', 'RCA Calcium'],\n pt: ['Cálcio Coronária Direita', 'Cálcio CD', 'Cálcio Artéria Coronária Direita'],\n },\n unit: 'AU',\n },\n {\n category: 'coracao',\n code: 'CAC_Percentile',\n names: {\n en: [\n 'CAC Percentile',\n 'MESA Percentile',\n 'Calcium Score Percentile',\n 'Age-Sex-Ethnicity Percentile',\n ],\n pt: ['Percentil CAC', 'Percentil MESA', 'Percentil do Escore de Cálcio'],\n },\n unit: '%',\n },\n {\n category: 'coracao',\n code: 'AorticValveCalcium',\n hidden: true,\n names: {\n en: ['Aortic Valve Calcium Score', 'Aortic Valve Calcium', 'AVC Score'],\n pt: ['Cálcio Valva Aórtica', 'Escore de Cálcio Valva Aórtica', 'Cálcio Válvula Aórtica'],\n },\n unit: 'AU',\n },\n\n {\n category: 'coracao',\n code: 'ApoA1',\n codeAliases: ['Apolipoprotein_A1'],\n loinc: '1869-7',\n names: {\n en: ['Apolipoprotein A-1', 'ApoA1', 'Apo A-I', 'Apolipoprotein A1'],\n pt: ['Apolipoproteína A-1', 'ApoA1', 'Apo A-I'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // THYROID / TIREOIDE\n // ============================================================================\n {\n category: 'tireoide',\n code: 'AntiThyroglobulin',\n loinc: '8098-6',\n names: {\n en: [\n 'Thyroglobulin Antibodies',\n 'Anti-TgAb',\n 'TgAb',\n 'Anti-Thyroglobulin Antibody',\n 'Anti-Thyroglobulin Antibodies',\n ],\n pt: [\n 'Anticorpos Anti-Tireoglobulina',\n 'Anti-Tg',\n 'TgAb',\n 'Anti-Tiroglobulina',\n 'Antic anti-tiroglobulina',\n 'Anticorpos Antitireoglobulina',\n ],\n },\n unit: 'IU/mL',\n },\n {\n category: 'tireoide',\n code: 'AntiTPO',\n loinc: '8099-4',\n names: {\n en: ['Thyroid Peroxidase Antibodies', 'TPO Antibodies', 'Anti-TPO'],\n pt: ['Anticorpos Anti-Peroxidase Tireoidiana', 'Anti-TPO', 'TPO'],\n },\n unit: 'IU/mL',\n },\n {\n category: 'tireoide',\n code: 'TSH',\n loinc: '3016-3',\n names: {\n en: ['Thyroid-Stimulating Hormone', 'TSH', 'Thyrotropin'],\n pt: ['Hormônio Tireoestimulante', 'TSH', 'Tireotrofina'],\n },\n unit: 'uIU/mL',\n },\n {\n category: 'tireoide',\n code: 'T4Free',\n loinc: '3024-7',\n names: {\n en: ['Thyroxine Free', 'Free T4', 'T4 Free', 'T4, Free', 'T4 FREE'],\n pt: ['Tiroxina Livre', 'T4 Livre'],\n },\n unit: 'ng/dL',\n },\n {\n category: 'tireoide',\n code: 'T3Free',\n loinc: '3051-0',\n names: {\n en: ['Triiodothyronine Free', 'Free T3', 'T3 Free', 'T3, Free', 'T3 FREE'],\n pt: ['Triiodotironina Livre', 'T3 Livre'],\n },\n unit: 'pg/mL',\n },\n {\n category: 'tireoide',\n code: 'T4Total',\n codeAliases: ['Tiroxina_T4', 'Thyroxine_T4_serum'],\n loinc: '3026-2',\n names: {\n en: ['Thyroxine', 'T4 Total', 'Total T4', 'Thyroxine (T4)', 'Thyroxine (T4), serum'],\n pt: ['Tiroxina', 'T4 Total', 'Tiroxina Total', 'Tiroxina (T4)'],\n },\n unit: 'ug/dL',\n },\n\n // ============================================================================\n // AUTOIMMUNITY / AUTOIMUNIDADE\n // ============================================================================\n {\n category: 'autoimunidade',\n code: 'ANA_Screen',\n loinc: '8061-4',\n names: {\n en: ['Antinuclear Antibodies Screen', 'ANA Screen'],\n pt: ['Triagem de Anticorpos Antinucleares', 'FAN Triagem'],\n },\n },\n {\n category: 'autoimunidade',\n code: 'RheumatoidFactor',\n loinc: '11572-5',\n names: {\n en: ['Rheumatoid Factor', 'RF'],\n pt: ['Fator Reumatoide', 'FR'],\n },\n unit: 'IU/mL',\n },\n\n // ============================================================================\n // IMMUNE REGULATION / REGULACAO-IMUNOLOGICA\n // ============================================================================\n {\n category: 'regulacao-imunologica',\n code: 'Basophils',\n loinc: '706-2',\n names: {\n en: ['Basophils', 'Basophils %'],\n pt: ['Basófilos', 'Basófilos %'],\n },\n unit: '%',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Basophils_Abs',\n hidden: true,\n loinc: '704-7',\n names: {\n en: ['Absolute Basophils', 'Basophils Absolute'],\n pt: ['Basófilos Absolutos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Eosinophils',\n loinc: '713-8',\n names: {\n en: ['Eosinophils', 'Eosinophils %'],\n pt: ['Eosinófilos', 'Eosinófilos %'],\n },\n unit: '%',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Eosinophils_Abs',\n hidden: true,\n loinc: '711-2',\n names: {\n en: ['Absolute Eosinophils', 'Eosinophils Absolute'],\n pt: ['Eosinófilos Absolutos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Lymphocytes',\n loinc: '736-9',\n names: {\n en: ['Lymphocytes', 'Lymphocytes %'],\n pt: ['Linfócitos', 'Linfócitos %'],\n },\n unit: '%',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Lymphocytes_Abs',\n hidden: true,\n loinc: '731-0',\n names: {\n en: ['Absolute Lymphocytes', 'Lymphocytes Absolute'],\n pt: ['Linfócitos Absolutos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Monocytes',\n loinc: '5905-5',\n names: {\n en: ['Monocytes', 'Monocytes %'],\n pt: ['Monócitos', 'Monócitos %'],\n },\n unit: '%',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Monocytes_Abs',\n hidden: true,\n loinc: '742-7',\n names: {\n en: ['Absolute Monocytes', 'Monocytes Absolute'],\n pt: ['Monócitos Absolutos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Neutrophils',\n loinc: '770-8',\n names: {\n en: ['Neutrophils', 'Neutrophils %'],\n pt: ['Neutrófilos', 'Neutrófilos %'],\n },\n unit: '%',\n },\n {\n category: 'regulacao-imunologica',\n code: 'Neutrophils_Abs',\n hidden: true,\n loinc: '751-8',\n names: {\n en: ['Absolute Neutrophils', 'Neutrophils Absolute'],\n pt: ['Neutrófilos Absolutos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'WBC',\n loinc: '6690-2',\n names: {\n en: ['White Blood Cell Count', 'WBC', 'Leukocytes'],\n pt: ['Contagem de Leucócitos', 'Leucócitos', 'Glóbulos Brancos'],\n },\n unit: 'K/uL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'IgA',\n loinc: '2458-8',\n names: {\n en: ['Immunoglobulin A', 'IgA', 'Serum IgA'],\n pt: ['Imunoglobulina A', 'IgA'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'IgG',\n codeAliases: ['IgG_Immunoglobulin', 'Immunoglobulin_G'],\n loinc: '2465-3',\n names: {\n en: ['Immunoglobulin G', 'IgG', 'Serum IgG'],\n pt: ['Imunoglobulina G', 'IgG'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'IgE_Total',\n codeAliases: ['IgE_Immunoglobulin', 'Total_IgE'],\n loinc: '19113-0',\n names: {\n en: ['Total IgE', 'IgE', 'Immunoglobulin E', 'IgE Total'],\n pt: ['IgE Total', 'Imunoglobulina E', 'IgE'],\n },\n unit: 'IU/mL',\n },\n {\n category: 'regulacao-imunologica',\n code: 'IgE_E1_CatDander',\n codeAliases: ['IgE_Cat_Dander', 'IgE_E1', 'IgE_Specific_E1__Cat_Dander'],\n loinc: '6833-8',\n names: {\n en: ['IgE E1 Cat Dander', 'Cat Dander IgE', 'Cat Allergy IgE', 'IgE Cat Epithelium'],\n pt: ['IgE E1 Epitélio de Gato', 'IgE Gato', 'Alergia a Gato IgE'],\n },\n unit: 'kU/L',\n },\n {\n category: 'regulacao-imunologica',\n code: 'IgE_GX1_Grasses',\n codeAliases: ['IgE_GX1', 'IgE_Grass_Pollen', 'IgE_Specific_GX1__Grasses'],\n loinc: '30189-5',\n names: {\n en: ['IgE GX1 Grasses', 'Grass Pollen IgE', 'Grass Mix IgE', 'IgE GX1 Grass Pollen Mix'],\n pt: ['IgE GX1 Gramíneas', 'IgE Pólen de Gramíneas', 'Painel de Gramíneas IgE'],\n },\n unit: 'kU/L',\n },\n\n // ============================================================================\n // WOMEN'S HEALTH / SAUDE-FEMININA\n // ============================================================================\n {\n category: 'saude-feminina',\n code: 'AMH',\n loinc: '38476-8',\n names: {\n en: ['Anti-Mullerian Hormone', 'AMH'],\n pt: ['Hormônio Anti-Mülleriano', 'AMH'],\n },\n sex: 'female',\n unit: 'ng/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'DHEAS',\n loinc: '2191-5',\n names: {\n en: ['DHEA-Sulfate', 'DHEAS', 'DHEA-S', 'DHEA Sulfate'],\n pt: ['DHEA-Sulfato', 'DHEAS', 'Sulfato de DHEA'],\n },\n unit: 'mcg/dL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'Estradiol',\n loinc: '2243-4',\n names: {\n en: ['Estradiol', 'E2'],\n pt: ['Estradiol', 'E2'],\n },\n unit: 'pg/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'FSH',\n loinc: '15067-2',\n names: {\n en: ['Follicle Stimulating Hormone', 'FSH'],\n pt: ['Hormônio Folículo-Estimulante', 'FSH', 'Folitropina'],\n },\n unit: 'mIU/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'LH',\n loinc: '10501-5',\n names: {\n en: ['Luteinizing Hormone', 'LH'],\n pt: ['Hormônio Luteinizante', 'LH', 'Lutropina'],\n },\n unit: 'mIU/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'Prolactin',\n loinc: '2842-3',\n names: {\n en: ['Prolactin'],\n pt: ['Prolactina'],\n },\n unit: 'ng/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'SHBG',\n loinc: '13967-5',\n names: {\n en: ['Sex Hormone Binding Globulin', 'SHBG'],\n pt: ['Globulina Ligadora de Hormônios Sexuais', 'SHBG'],\n },\n unit: 'nmol/L',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'TestosteroneFree',\n loinc: '2991-8',\n names: {\n en: [\n 'Testosterone Free',\n 'Free Testosterone',\n 'Testosterone, Free',\n 'Testosterone (Free)',\n 'Testosterone Free (Direct)',\n 'Free Testosterone (Direct)',\n ],\n pt: ['Testosterona Livre'],\n },\n unit: 'pg/mL',\n },\n {\n category: ['saude-feminina', 'saude-masculina'],\n code: 'Testosterone',\n loinc: '2986-8',\n names: {\n en: ['Testosterone Total', 'Testosterone'],\n pt: ['Testosterona Total', 'Testosterona'],\n },\n unit: 'ng/dL',\n },\n {\n category: 'saude-feminina',\n code: 'Progesterone',\n loinc: '2839-9',\n names: {\n en: ['Progesterone'],\n pt: ['Progesterona'],\n },\n sex: 'female',\n unit: 'ng/mL',\n },\n\n // ============================================================================\n // MEN'S HEALTH / SAUDE-MASCULINA\n // ============================================================================\n {\n category: 'saude-masculina',\n code: 'PSA',\n loinc: '2857-1',\n names: {\n en: ['Prostate Specific Antigen', 'PSA', 'PSA Total'],\n pt: ['Antígeno Prostático Específico', 'PSA', 'PSA Total'],\n },\n sex: 'male',\n unit: 'ng/mL',\n },\n {\n category: 'saude-masculina',\n code: 'PSA_Free',\n loinc: '10886-0',\n names: {\n en: ['Prostate Specific Antigen Free', 'PSA Free', 'Free PSA'],\n pt: ['PSA Livre', 'Antígeno Prostático Específico Livre'],\n },\n sex: 'male',\n unit: 'ng/mL',\n },\n {\n category: 'saude-masculina',\n code: 'PSA_FreeRatio',\n loinc: '12841-3',\n names: {\n en: ['PSA Free/Total Ratio', 'PSA % Free', 'Free PSA Ratio', 'PSA, % Free'],\n pt: ['Relação PSA Livre/Total', 'PSA % Livre', 'Razão PSA Livre'],\n },\n sex: 'male',\n unit: '%',\n },\n {\n category: 'hormonios',\n code: 'DHT',\n codeAliases: ['Dihydrotestosterone'],\n loinc: '1848-1',\n names: {\n en: ['Dihydrotestosterone', 'DHT', 'Androstanolone'],\n pt: ['Diidrotestosterona', 'DHT'],\n },\n unit: 'ng/dL',\n },\n\n // ============================================================================\n // METABOLIC / METABOLICO\n // ============================================================================\n {\n category: 'metabolico',\n code: 'Glucose',\n loinc: '2345-7',\n names: {\n en: ['Glucose', 'Blood Glucose', 'Fasting Glucose'],\n pt: ['Glicose', 'Glicemia', 'Glicemia de Jejum'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'metabolico',\n code: 'HbA1c',\n loinc: '4548-4',\n names: {\n en: ['Hemoglobin A1c', 'HbA1c', 'Glycated Hemoglobin'],\n pt: ['Hemoglobina Glicada', 'HbA1c', 'Hemoglobina Glicosilada'],\n },\n unit: '%',\n },\n {\n category: 'metabolico',\n code: 'eAG',\n codeAliases: ['Estimated_Average_Glucose'],\n loinc: '27353-2',\n names: {\n en: ['Estimated Average Glucose', 'eAG', 'Mean Glucose'],\n pt: ['Glicemia Média Estimada', 'GME', 'Glicose Média Estimada'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'metabolico',\n code: 'Insulin',\n loinc: '20448-7',\n names: {\n en: ['Insulin', 'Fasting Insulin'],\n pt: ['Insulina', 'Insulina de Jejum'],\n },\n unit: 'uIU/mL',\n },\n {\n category: 'metabolico',\n code: 'HOMA_IR',\n loinc: '47214-2',\n names: {\n en: ['HOMA-IR', 'Homeostatic Model Assessment for Insulin Resistance'],\n pt: ['HOMA-IR', 'Índice HOMA'],\n },\n unit: 'índice',\n },\n {\n category: 'metabolico',\n code: 'Leptin',\n loinc: '21365-2',\n names: {\n en: ['Leptin'],\n pt: ['Leptina'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'metabolico',\n code: 'UricAcid',\n loinc: '3084-1',\n names: {\n en: ['Uric Acid', 'Urate'],\n pt: ['Ácido Úrico'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'metabolico',\n code: 'CK',\n codeAliases: ['Creatine_Kinase', 'CK_Total'],\n loinc: '2157-6',\n names: {\n en: ['Creatine Kinase', 'CK', 'CPK', 'CK Total', 'Creatine Phosphokinase'],\n pt: ['Creatina Quinase', 'CK', 'CPK', 'Creatinoquinase', 'CK Total'],\n },\n unit: 'U/L',\n },\n\n // ============================================================================\n // ENVIRONMENTAL TOXINS / TOXINAS-AMBIENTAIS\n // ============================================================================\n {\n category: 'toxinas-ambientais',\n code: 'Lead',\n loinc: '77307-7',\n names: {\n en: ['Lead', 'Blood Lead'],\n pt: ['Chumbo', 'Chumbo no Sangue'],\n },\n unit: 'mcg/dL',\n },\n {\n category: 'toxinas-ambientais',\n code: 'Mercury',\n loinc: '5685-3',\n names: {\n en: ['Mercury', 'Blood Mercury'],\n pt: ['Mercúrio', 'Mercúrio no Sangue'],\n },\n unit: 'mcg/L',\n },\n\n // ============================================================================\n // NUTRIENTS / NUTRIENTES\n // ============================================================================\n {\n category: 'nutrientes',\n code: 'AA_EPA_Ratio',\n codeAliases: ['Arachidonic_AcidEPA_Ratio'],\n loinc: '90909-3',\n names: {\n en: ['Arachidonic Acid/EPA Ratio', 'AA/EPA Ratio', 'Arachidonic Acid EPA Ratio'],\n pt: ['Razão Ácido Araquidônico/EPA', 'Razão AA/EPA'],\n },\n unit: 'razão',\n },\n {\n category: 'nutrientes',\n code: 'Calcium',\n loinc: '17861-6',\n names: {\n en: ['Calcium', 'Serum Calcium'],\n pt: ['Cálcio', 'Cálcio Sérico'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'nutrientes',\n code: 'Ferritin',\n loinc: '2276-4',\n names: {\n en: ['Ferritin'],\n pt: ['Ferritina'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'nutrientes',\n code: 'Folate',\n loinc: '2284-8',\n names: {\n en: ['Folate', 'Folic Acid', 'Serum Folate'],\n pt: ['Folato', 'Ácido Fólico', 'Folato Sérico', 'Ac. Fólico', 'Dosagem de Ácido Fólico'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'nutrientes',\n code: 'Homocysteine',\n loinc: '13965-9',\n names: {\n en: ['Homocysteine'],\n pt: ['Homocisteína'],\n },\n unit: 'umol/L',\n },\n {\n category: 'nutrientes',\n code: 'Iron',\n loinc: '2498-4',\n names: {\n en: ['Iron', 'Serum Iron'],\n pt: ['Ferro', 'Ferro Sérico'],\n },\n unit: 'mcg/dL',\n },\n {\n category: 'nutrientes',\n code: 'TransferrinSaturation',\n codeAliases: ['Saturation_of_Transferrin'],\n loinc: '2502-3',\n names: {\n en: [\n 'Iron Saturation',\n 'Transferrin Saturation',\n 'TSAT',\n '% Saturation',\n 'Iron % Saturation',\n 'Saturation',\n 'Saturation of Transferrin',\n ],\n pt: [\n 'Saturação de Ferro',\n 'Saturação de Transferrina',\n 'IST',\n '% Saturação',\n 'Ferro - Grau de Saturação',\n 'Grau de Saturação do Ferro',\n ],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'TIBC',\n loinc: '2500-7',\n names: {\n en: ['Iron Binding Capacity', 'TIBC', 'Total Iron Binding Capacity'],\n pt: [\n 'Capacidade de Ligação do Ferro',\n 'TIBC',\n 'CTLFe',\n 'Capacidade Total de Ligação do Ferro',\n 'Ferro - Capac Total ligação',\n ],\n },\n unit: 'mcg/dL',\n },\n {\n category: 'nutrientes',\n code: 'Magnesium_RBC',\n loinc: '26746-8',\n names: {\n en: [\n 'Magnesium RBC',\n 'Magnesium Red Blood Cells',\n 'RBC Magnesium',\n 'Magnesium, RBC',\n 'Magnesium (RBC)',\n ],\n pt: ['Magnésio RBC', 'Magnésio Eritrocitário', 'Magnésio Intraeritrocitário'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'nutrientes',\n code: 'MMA',\n loinc: '13964-2',\n names: {\n en: ['Methylmalonic Acid', 'MMA'],\n pt: ['Ácido Metilmalônico', 'MMA'],\n },\n unit: 'nmol/L',\n },\n {\n category: 'nutrientes',\n code: 'Omega3_Total',\n loinc: '35178-3',\n names: {\n en: ['Omega-3 Total', 'Total Omega-3'],\n pt: ['Ômega-3 Total'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega3_DHA',\n codeAliases: ['DHA'],\n loinc: '75095-0',\n names: {\n en: ['Omega-3 DHA', 'DHA', 'Docosahexaenoic Acid'],\n pt: ['Ômega-3: DHA', 'DHA', 'Ácido Docosahexaenoico'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega3_DPA',\n codeAliases: ['DPA'],\n loinc: '48371-9',\n names: {\n en: ['Omega-3 DPA', 'DPA', 'Docosapentaenoic Acid'],\n pt: ['Ômega-3: DPA', 'DPA', 'Ácido Docosapentaenoico'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega3_EPA',\n codeAliases: ['EPA'],\n loinc: '75097-6',\n names: {\n en: ['Omega-3 EPA', 'EPA', 'Eicosapentaenoic Acid'],\n pt: ['Ômega-3: EPA', 'EPA', 'Ácido Eicosapentaenoico'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'EPADPADHA',\n loinc: '90908-5',\n names: {\n en: ['Omega-3 EPA+DPA+DHA', 'EPA+DPA+DHA'],\n pt: ['Ômega-3: EPA+DPA+DHA'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega6_Omega3_Ratio',\n codeAliases: ['Omega6Omega3_Ratio'],\n loinc: '90910-1',\n names: {\n en: ['Omega-6/Omega-3 Ratio'],\n pt: ['Razão Ômega-6 / Ômega-3'],\n },\n unit: 'razão',\n },\n {\n category: 'nutrientes',\n code: 'Omega6_Total',\n loinc: '35177-5',\n names: {\n en: ['Omega-6 Total', 'Total Omega-6'],\n pt: ['Ômega-6 Total'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega6_AA',\n codeAliases: ['Arachidonic_Acid'],\n loinc: '75110-7',\n names: {\n en: ['Omega-6 Arachidonic Acid', 'Arachidonic Acid', 'AA'],\n pt: ['Ômega-6: Ácido Araquidônico', 'Ácido Araquidônico', 'AA'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'Omega6_LA',\n codeAliases: ['Linoleic_Acid'],\n loinc: '75117-2',\n names: {\n en: ['Omega-6 Linoleic Acid', 'Linoleic Acid', 'LA'],\n pt: ['Ômega-6: Ácido Linoleico', 'Ácido Linoleico', 'LA'],\n },\n unit: '%',\n },\n {\n category: 'nutrientes',\n code: 'VitaminA',\n loinc: '2923-1',\n names: {\n en: ['Vitamin A', 'Retinol', 'Serum Retinol'],\n pt: ['Vitamina A', 'Retinol', 'Retinol Sérico', 'Vit A', 'Vit. A', 'Dosagem de Vitamina A'],\n },\n unit: 'mcg/dL',\n },\n {\n category: 'nutrientes',\n code: 'VitaminB12',\n loinc: '2132-9',\n names: {\n en: ['Vitamin B12', 'Cobalamin', 'B12', 'Cyanocobalamin'],\n pt: [\n 'Vitamina B12',\n 'Vitamina B-12',\n 'Cobalamina',\n 'B12',\n 'Cianocobalamina',\n 'Vit B12',\n 'Vit. B12',\n 'Dosagem de Vitamina B12',\n ],\n },\n unit: 'pg/mL',\n },\n {\n category: 'nutrientes',\n code: 'VitaminC',\n loinc: '1903-4',\n names: {\n en: ['Vitamin C', 'Ascorbic Acid'],\n pt: [\n 'Vitamina C',\n 'Ácido Ascórbico',\n 'Vit C',\n 'Vit. C',\n 'Dosagem de Vitamina C',\n 'Dosagem de Ácido Ascórbico',\n ],\n },\n unit: 'mg/dL',\n },\n {\n category: 'nutrientes',\n code: 'VitaminD',\n loinc: '1989-3',\n names: {\n en: [\n 'Vitamin D',\n '25-Hydroxy Vitamin D',\n '25-OH Vitamin D',\n 'Vitamin D, 25-Hydroxy',\n '25-Hydroxy Vitamin D, Total',\n ],\n pt: [\n 'Vitamina D',\n '25-Hidroxivitamina D',\n '25-OH Vitamina D',\n 'Vitamina D, 25-Hidroxi',\n '25-Hidroxi Vitamina D',\n ],\n },\n unit: 'ng/mL',\n },\n {\n category: 'nutrientes',\n code: 'Zinc',\n loinc: '8245-3',\n names: {\n en: ['Zinc', 'Serum Zinc'],\n pt: ['Zinco'],\n },\n unit: 'mcg/dL',\n },\n\n // ============================================================================\n // STRESS & AGING / ESTRESSE-ENVELHECIMENTO\n // ============================================================================\n {\n category: 'estresse-envelhecimento',\n code: 'Cortisol',\n loinc: '2143-6',\n names: {\n en: ['Cortisol', 'Serum Cortisol'],\n pt: ['Cortisol'],\n },\n unit: 'mcg/dL',\n },\n\n // ============================================================================\n // LIVER / FIGADO\n // ============================================================================\n {\n category: 'figado',\n code: 'ALT',\n loinc: '1742-6',\n names: {\n en: ['Alanine Transaminase', 'ALT', 'SGPT'],\n pt: ['Alanina Aminotransferase', 'ALT', 'TGP'],\n },\n unit: 'U/L',\n },\n {\n category: 'figado',\n code: 'Albumin',\n loinc: '1751-7',\n names: {\n en: ['Albumin', 'Serum Albumin'],\n pt: ['Albumina'],\n },\n unit: 'g/dL',\n },\n {\n category: 'figado',\n code: 'Albumin_Globulin_Ratio',\n codeAliases: ['AG_Ratio'],\n loinc: '1759-0',\n names: {\n en: ['Albumin/Globulin Ratio', 'A/G Ratio'],\n pt: ['Razão Albumina / Globulina', 'Razão A/G'],\n },\n unit: 'razão',\n },\n {\n category: 'figado',\n code: 'AlkalinePhosphatase',\n loinc: '6768-6',\n names: {\n en: ['Alkaline Phosphatase', 'ALP'],\n pt: ['Fosfatase Alcalina', 'ALP'],\n },\n unit: 'U/L',\n },\n {\n category: 'figado',\n code: 'AST',\n loinc: '1920-8',\n names: {\n en: ['Aspartate Aminotransferase', 'AST', 'SGOT'],\n pt: ['Aspartato Aminotransferase', 'AST', 'TGO'],\n },\n unit: 'U/L',\n },\n {\n category: 'figado',\n code: 'GGT',\n loinc: '2324-2',\n names: {\n en: ['Gamma-glutamyl Transferase', 'GGT', 'Gamma GT'],\n pt: ['Gama-Glutamil Transferase', 'GGT', 'Gama GT'],\n },\n unit: 'U/L',\n },\n {\n category: 'figado',\n code: 'Globulin',\n loinc: '2336-6',\n names: {\n en: ['Globulin', 'Serum Globulin'],\n pt: ['Globulina'],\n },\n unit: 'g/dL',\n },\n {\n category: 'figado',\n code: 'TotalProtein',\n loinc: '2885-2',\n names: {\n en: ['Total Protein', 'Serum Protein'],\n pt: ['Proteína Total', 'Proteínas Totais'],\n },\n unit: 'g/dL',\n },\n {\n category: 'figado',\n code: 'BilirubinTotal',\n loinc: '1975-2',\n names: {\n en: ['Total Bilirubin', 'Bilirubin Total', 'Bilirubin, Total', 'BILIRUBIN TOTAL'],\n pt: ['Bilirrubina Total'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'figado',\n code: 'BilirubinDirect',\n codeAliases: ['Bilirubin_Direct', 'Direct_Bilirubin', 'Bilirrubina_Direta'],\n loinc: '1968-7',\n names: {\n en: ['Direct Bilirubin', 'Bilirubin Direct', 'Conjugated Bilirubin'],\n pt: ['Bilirrubina Direta', 'Bilirrubina Conjugada'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'figado',\n code: 'BilirubinIndirect',\n codeAliases: ['Bilirubin_Indirect', 'Indirect_Bilirubin', 'Bilirrubina_Indireta'],\n loinc: '1971-1',\n names: {\n en: ['Indirect Bilirubin', 'Bilirubin Indirect', 'Unconjugated Bilirubin'],\n pt: ['Bilirrubina Indireta', 'Bilirrubina Não Conjugada'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // BLOOD / SANGUE\n // ============================================================================\n {\n category: 'sangue',\n code: 'Hct',\n loinc: '4544-3',\n names: {\n en: ['Hematocrit', 'Hct', 'HCT'],\n pt: ['Hematócrito', 'Hct'],\n },\n unit: '%',\n },\n {\n category: 'sangue',\n code: 'Hgb',\n loinc: '718-7',\n names: {\n en: ['Hemoglobin', 'Hgb', 'HGB'],\n pt: ['Hemoglobina', 'Hgb'],\n },\n unit: 'g/dL',\n },\n {\n category: 'sangue',\n code: 'MCH',\n loinc: '785-6',\n names: {\n en: ['Mean Corpuscular Hemoglobin', 'MCH'],\n pt: ['Hemoglobina Corpuscular Média', 'HCM'],\n },\n unit: 'pg',\n },\n {\n category: 'sangue',\n code: 'MCHC',\n loinc: '786-4',\n names: {\n en: ['Mean Corpuscular Hemoglobin Concentration', 'MCHC'],\n pt: ['Concentração de Hemoglobina Corpuscular Média', 'CHCM'],\n },\n unit: 'g/dL',\n },\n {\n category: 'sangue',\n code: 'MCV',\n loinc: '787-2',\n names: {\n en: ['Mean Corpuscular Volume', 'MCV'],\n pt: ['Volume Corpuscular Médio', 'VCM'],\n },\n unit: 'fL',\n },\n {\n category: 'sangue',\n code: 'MPV',\n loinc: '32623-1',\n names: {\n en: ['Mean Platelet Volume', 'MPV'],\n pt: ['Volume Plaquetário Médio', 'VPM'],\n },\n unit: 'fL',\n },\n {\n category: 'sangue',\n code: 'Platelets',\n loinc: '777-3',\n names: {\n en: ['Platelet Count', 'Platelets'],\n pt: ['Contagem de Plaquetas', 'Plaquetas'],\n },\n unit: 'K/uL',\n },\n {\n category: 'sangue',\n code: 'RBC',\n loinc: '789-8',\n names: {\n en: ['Red Blood Cell Count', 'RBC', 'Erythrocytes'],\n pt: ['Contagem de Hemácias', 'Hemácias', 'Eritrócitos'],\n },\n unit: 'M/uL',\n },\n {\n category: 'sangue',\n code: 'RDW',\n loinc: '788-0',\n names: {\n en: ['Red Cell Distribution Width', 'RDW'],\n pt: ['Amplitude de Distribuição dos Eritrócitos', 'RDW'],\n },\n unit: '%',\n },\n {\n category: 'sangue',\n code: 'ABO_Group',\n hidden: true,\n loinc: '883-9',\n names: {\n en: ['ABO Group', 'ABO Blood Group', 'Blood Type ABO'],\n pt: ['Grupo ABO', 'Tipo Sanguíneo ABO', 'Grupo Sanguíneo ABO'],\n },\n },\n {\n category: 'sangue',\n code: 'Rh_Type',\n hidden: true,\n loinc: '10331-7',\n names: {\n en: ['Rh Type', 'Rh Factor', 'Rhesus Factor'],\n pt: ['Tipo Rh', 'Fator Rh', 'Fator Rhesus'],\n },\n },\n {\n category: 'sangue',\n code: 'ESR',\n codeAliases: ['Erythrocyte_Sedimentation_Rate', 'VHS'],\n loinc: '30341-2',\n names: {\n en: ['Erythrocyte Sedimentation Rate', 'ESR', 'Sed Rate'],\n pt: ['Velocidade de Hemossedimentação', 'VHS', 'VSG'],\n },\n unit: 'mm/hr',\n },\n {\n category: 'sangue',\n code: 'INR',\n codeAliases: ['International_Normalized_Ratio'],\n loinc: '6301-6',\n names: {\n en: ['International Normalized Ratio', 'INR'],\n pt: ['Razão Normalizada Internacional', 'INR', 'RNI'],\n },\n unit: 'ratio',\n },\n {\n category: 'sangue',\n code: 'ProthrombinTime',\n codeAliases: ['Prothrombin_Time', 'PT_Time'],\n loinc: '5902-2',\n names: {\n en: ['Prothrombin Time', 'PT', 'Pro Time'],\n pt: ['Tempo de Protrombina', 'TP', 'TAP'],\n },\n unit: 'seconds',\n },\n {\n category: 'sangue',\n code: 'Reticulocytes',\n codeAliases: ['Reticulocyte_Count', 'Reticulocyte_Fraction'],\n loinc: '4679-7',\n names: {\n en: ['Reticulocytes', 'Reticulocyte Count', 'Reticulocyte Fraction', 'Retic Count'],\n pt: ['Reticulócitos', 'Contagem de Reticulócitos'],\n },\n unit: '%',\n },\n\n // ============================================================================\n // KIDNEYS / RINS\n // ============================================================================\n {\n category: 'rins',\n code: 'Microalbumin_Urine',\n codeAliases: ['Urine_Microalbumin'],\n loinc: '14957-5',\n names: {\n en: ['Microalbumin Urine', 'Urine Albumin', 'Urine Microalbumin'],\n pt: ['Albumina Urina', 'Microalbumina Urina', 'Microalbumina na Urina'],\n },\n unit: 'mg/L',\n },\n {\n // LOINC 3091-6 = \"Urea [Mass/volume] in Serum or Plasma\" (mg/dL).\n // Anteriormente 3094-0 (\"Urea nitrogen\", BUN), inconsistente com a faixa\n // de referência brasileira (15-50 mg/dL) e com os nomes pt-BR (Ureia).\n // Aliases 'BUN' e 'Blood Urea Nitrogen' removidos para evitar matching\n // de relatórios de BUN contra faixas de Ureia (BUN ≈ Ureia / 2,14).\n category: 'rins',\n code: 'Urea',\n loinc: '3091-6',\n names: {\n en: ['Urea'],\n pt: ['Ureia', 'Uréia'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'rins',\n code: 'BUN_Creatinine_Ratio',\n loinc: '3097-3',\n names: {\n en: ['BUN/Creatinine Ratio', 'Urea/Creatinine Ratio'],\n pt: ['Razão Ureia / Creatinina'],\n },\n unit: 'razão',\n },\n {\n category: 'rins',\n code: 'Creatinine',\n loinc: '2160-0',\n names: {\n en: ['Creatinine', 'Serum Creatinine'],\n pt: ['Creatinina', 'Creatinina Sérica'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'rins',\n code: 'eGFR',\n codeAliases: ['CKDEPI_2021', 'CKDEPI_eGFR_2021', 'eGFR_CKDEPI_2021', 'eGFR_MDRD'],\n loinc: '98979-8',\n names: {\n en: [\n 'Estimated Glomerular Filtration Rate',\n 'eGFR',\n 'GFR',\n 'eGFR CKD-EPI',\n 'eGFR CKD-EPI 2021',\n 'CKD-EPI 2021',\n 'CKD-EPI eGFR 2021',\n 'eGFR (CKD-EPI 2021)',\n 'eGFR (MDRD)',\n 'Glomerular Filtration Rate',\n ],\n pt: [\n 'Taxa de Filtração Glomerular Estimada',\n 'TFGe',\n 'TFG',\n 'TFGe CKD-EPI',\n 'Filtração Glomerular',\n 'CKD-EPI 2021',\n 'TFGe CKD-EPI 2021',\n ],\n },\n unit: 'mL/min/1.73m²',\n },\n {\n category: 'rins',\n code: 'Potassium',\n loinc: '2823-3',\n names: {\n en: ['Potassium', 'K'],\n pt: ['Potássio', 'K'],\n },\n unit: 'mEq/L',\n },\n {\n category: 'rins',\n code: 'Sodium',\n loinc: '2951-2',\n names: {\n en: ['Sodium', 'Na'],\n pt: ['Sódio', 'Na'],\n },\n unit: 'mEq/L',\n },\n {\n category: 'rins',\n code: 'Creatinine_Urine',\n codeAliases: ['Urine_Creatinine'],\n loinc: '2161-8',\n names: {\n en: ['Creatinine Urine', 'Urine Creatinine', 'Creatinine Random Urine'],\n pt: ['Creatinina Urinária', 'Creatinina na Urina'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'rins',\n code: 'Albumin_Creatinine_Ratio',\n codeAliases: ['ACR'],\n loinc: '9318-7',\n names: {\n en: [\n 'Albumin/Creatinine Ratio',\n 'Albumin Creatinine Ratio',\n 'ACR',\n 'Urine Albumin to Creatinine Ratio',\n ],\n pt: [\n 'Razão Albumina/Creatinina',\n 'Relação Albumina Creatinina',\n 'RAC',\n 'Razão Albumina Creatinina Urinária',\n ],\n },\n unit: 'mg/g',\n },\n\n // ============================================================================\n // PANCREAS\n // ============================================================================\n {\n category: 'pancreas',\n code: 'Amylase',\n loinc: '1798-8',\n names: {\n en: ['Amylase', 'Serum Amylase'],\n pt: ['Amilase'],\n },\n unit: 'U/L',\n },\n {\n category: 'pancreas',\n code: 'Lipase',\n loinc: '3040-3',\n names: {\n en: ['Lipase', 'Serum Lipase'],\n pt: ['Lipase'],\n },\n unit: 'U/L',\n },\n\n // ============================================================================\n // ELECTROLYTES / ELETROLITOS\n // ============================================================================\n {\n category: 'eletrolitos',\n code: 'CO2',\n loinc: '2028-9',\n names: {\n en: ['Carbon Dioxide', 'CO2', 'Bicarbonate'],\n pt: ['Dióxido de Carbono', 'CO2', 'Bicarbonato'],\n },\n unit: 'mEq/L',\n },\n {\n category: 'eletrolitos',\n code: 'Chloride',\n loinc: '2075-0',\n names: {\n en: ['Chloride', 'Cl'],\n pt: ['Cloreto', 'Cloretos', 'Cl'],\n },\n unit: 'mEq/L',\n },\n\n // ============================================================================\n // URINE / URINA\n // ============================================================================\n {\n category: 'urina',\n code: 'Appearance_Urine',\n codeAliases: ['UrineAppearance'],\n loinc: '5767-9',\n names: {\n en: ['Urine Appearance', 'Appearance'],\n pt: ['Aparência da Urina', 'Aparência'],\n },\n },\n {\n category: 'urina',\n code: 'Bacteria_Urine',\n codeAliases: ['UrineBacteria'],\n loinc: '630-4',\n names: {\n en: ['Urine Bacteria', 'Bacteria Urine', 'Bacteria, Urine', 'Bacteria'],\n pt: ['Bactérias na Urina', 'Bactérias'],\n },\n unit: '/HPF',\n },\n {\n category: 'urina',\n code: 'Bilirubin_Urine',\n codeAliases: ['UrineBilirubin'],\n loinc: '5770-3',\n names: {\n en: ['Urine Bilirubin', 'Bilirubin Urine', 'Bilirubin, Urine', 'Bilirubin'],\n pt: ['Bilirrubina na Urina', 'Bilirrubina Urina', 'Bilirrubina'],\n },\n },\n {\n category: 'urina',\n code: 'Blood_Urine',\n codeAliases: ['UrineBlood'],\n loinc: '5794-3',\n names: {\n en: ['Urine Blood', 'Occult Blood in Urine', 'Occult Blood', 'Blood'],\n pt: ['Sangue Oculto na Urina', 'Sangue Oculto'],\n },\n },\n {\n category: 'urina',\n code: 'Color_Urine',\n codeAliases: ['UrineColor'],\n loinc: '5778-6',\n names: {\n en: ['Urine Color', 'Color'],\n pt: ['Cor da Urina', 'Cor'],\n },\n },\n {\n category: 'urina',\n code: 'Glucose_Urine',\n loinc: '5792-7',\n names: {\n en: ['Urine Glucose', 'Glucose Urine', 'Glucose, Urine'],\n pt: ['Glicose na Urina', 'Glicose Urina'],\n },\n },\n {\n category: 'urina',\n code: 'HyalineCasts_Urine',\n codeAliases: ['UrineHyalineCast'],\n loinc: '5796-8',\n names: {\n en: ['Hyaline Casts Urine', 'Hyaline Cast', 'Hyaline Casts'],\n pt: ['Cilindros Hialinos na Urina', 'Cilindro Hialino'],\n },\n unit: '/LPF',\n },\n {\n category: 'urina',\n code: 'Ketones_Urine',\n codeAliases: ['UrineKetones'],\n loinc: '5797-6',\n names: {\n en: ['Urine Ketones', 'Ketones Urine', 'Ketones, Urine', 'Ketones'],\n pt: ['Cetonas na Urina', 'Cetonas'],\n },\n },\n {\n category: 'urina',\n code: 'LeukocyteEsterase_Urine',\n loinc: '5799-2',\n names: {\n en: ['Leukocyte Esterase Urine', 'Leukocyte Esterase', 'Leuk Esterase'],\n pt: ['Esterase Leucocitária na Urina', 'Esterase Leucocitária'],\n },\n },\n {\n category: 'urina',\n code: 'Leukocytes_Urine',\n codeAliases: ['UrineLeukocytes'],\n loinc: '5821-4',\n names: {\n en: ['Urine Leukocytes', 'Urine WBC', 'White Blood Cells in Urine', 'WBC Urine'],\n pt: ['Leucócitos na Urina', 'Leucócitos Urinários'],\n },\n unit: '/HPF',\n },\n {\n category: 'urina',\n code: 'Nitrite_Urine',\n codeAliases: ['UrineNitrite'],\n loinc: '5802-4',\n names: {\n en: ['Urine Nitrite', 'Nitrite Urine', 'Nitrite, Urine', 'Nitrite'],\n pt: ['Nitrito na Urina', 'Nitrito Urina', 'Nitrito'],\n },\n },\n {\n category: 'urina',\n code: 'pH_Urine',\n codeAliases: ['UrinaryPH'],\n loinc: '5803-2',\n names: {\n en: ['Urine pH', 'pH Urine', 'pH, Urine'],\n pt: ['pH Urinário', 'pH da Urina'],\n },\n },\n {\n category: 'urina',\n code: 'Protein_Urine',\n loinc: '5804-0',\n names: {\n en: ['Urine Protein', 'Protein Urine', 'Protein, Urine', 'Protein'],\n pt: ['Proteína na Urina', 'Proteína'],\n },\n },\n {\n category: 'urina',\n code: 'RBC_Urine',\n loinc: '5808-1',\n names: {\n en: ['Urine RBC', 'Red Blood Cells in Urine', 'RBC Urine', 'RBC, Urine'],\n pt: ['Hemácias na Urina'],\n },\n unit: '/HPF',\n },\n {\n category: 'urina',\n code: 'SpecificGravity_Urine',\n codeAliases: ['SpecificGravity'],\n loinc: '5811-5',\n names: {\n en: [\n 'Urine Specific Gravity',\n 'Specific Gravity Urine',\n 'Specific Gravity, Urine',\n 'Specific Gravity',\n ],\n pt: ['Densidade da Urina', 'Gravidade Específica'],\n },\n },\n {\n category: 'urina',\n code: 'SquamousEpithelial_Urine',\n codeAliases: ['UrineSquamousEpithelial'],\n loinc: '11277-1',\n names: {\n en: [\n 'Squamous Epithelial Cells Urine',\n 'Squamous Epithelial Cells, Urine',\n 'Squamous Epithelial Urine',\n 'Squamous Epithelial Cells',\n ],\n pt: ['Células Epiteliais Escamosas na Urina'],\n },\n unit: '/HPF',\n },\n {\n category: 'urina',\n code: 'Urobilinogen_Urine',\n codeAliases: ['Urine_Urobilinogen'],\n loinc: '20405-7',\n names: {\n en: ['Urobilinogen Urine', 'Urine Urobilinogen', 'Urobilinogen'],\n pt: ['Urobilinogênio Urinário', 'Urobilinogênio na Urina'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // TUMOR MARKERS / MARCADORES TUMORAIS\n // ============================================================================\n {\n category: 'marcadores-tumorais',\n code: 'AFP',\n codeAliases: ['AlfaFetoproteina', 'Alfa_Fetoprotena'],\n loinc: '1834-1',\n names: {\n en: ['Alpha-Fetoprotein', 'AFP', 'Alfa-Fetoprotein'],\n pt: ['Alfa-Fetoproteína', 'AFP', 'Alfafetoproteína'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'marcadores-tumorais',\n code: 'CA125',\n codeAliases: ['CA_125'],\n loinc: '10334-1',\n names: {\n en: ['CA-125', 'CA 125', 'Cancer Antigen 125'],\n pt: ['CA-125', 'CA 125', 'Antígeno CA-125'],\n },\n sex: 'female',\n unit: 'U/mL',\n },\n {\n category: 'marcadores-tumorais',\n code: 'CEA',\n codeAliases: ['Carcinoembryonic_Antigen_CEA_Serum'],\n loinc: '2039-6',\n names: {\n en: ['Carcinoembryonic Antigen', 'CEA'],\n pt: ['Antígeno Carcinoembrionário', 'CEA'],\n },\n unit: 'ng/mL',\n },\n\n // ============================================================================\n // ADD-ON TESTS (Commented out for future use)\n // These are specialized tests available as add-ons in Function Health.\n // Uncomment when ready to support in the UI.\n // ============================================================================\n\n // --- CELIAC / GLUTEN INTOLERANCE (Add-on) ---\n {\n category: 'autoimunidade',\n code: 'Gliadin_Deamidated_IgA',\n loinc: '63453-5',\n names: {\n en: [\n 'Gliadin (Deamidated) Antibodies IgA',\n 'DGP IgA',\n 'Deamidated Gliadin Peptide IgA',\n 'Gliadin Deamidated AB IgA',\n 'Gliadin Deamidated AB, IgA',\n 'Gliadin (Deamidated) AB (IgA)',\n 'Gliadin (Deamidated) AB (IGA)',\n ],\n pt: ['Anticorpos Anti-Gliadina Deamidada IgA', 'DGP IgA'],\n },\n unit: 'U',\n },\n {\n category: 'autoimunidade',\n code: 'Gliadin_Deamidated_IgG',\n loinc: '63459-2',\n names: {\n en: [\n 'Gliadin (Deamidated) Antibodies IgG',\n 'DGP IgG',\n 'Deamidated Gliadin Peptide IgG',\n 'Gliadin Deamidated AB IgG',\n 'Gliadin Deamidated AB, IgG',\n 'Gliadin (Deamidated) AB (IgG)',\n 'Gliadin (Deamidated) AB (IGG)',\n ],\n pt: ['Anticorpos Anti-Gliadina Deamidada IgG', 'DGP IgG'],\n },\n unit: 'U',\n },\n {\n category: 'autoimunidade',\n code: 'tTG_IgA',\n loinc: '31017-7',\n names: {\n en: [\n 'Tissue Transglutaminase IgA',\n 'tTG IgA',\n 'Anti-tTG IgA',\n 'Tissue Transglutaminase AB, IGA',\n 'Tissue Transglutaminase AB IgA',\n 'TTG AB IGA',\n 'T-Transglutaminase IgA',\n 'Transglutaminase IgA',\n ],\n pt: ['Transglutaminase Tecidual IgA', 'tTG IgA', 'Anti-tTG IgA'],\n },\n unit: 'U/mL',\n },\n {\n category: 'autoimunidade',\n code: 'tTG_IgG',\n loinc: '32998-7',\n names: {\n en: [\n 'Tissue Transglutaminase IgG',\n 'tTG IgG',\n 'Anti-tTG IgG',\n 'Tissue Transglutaminase AB, IGG',\n 'Tissue Transglutaminase AB IgG',\n 'TTG AB IGG',\n 'T-Transglutaminase IgG',\n 'Transglutaminase IgG',\n ],\n pt: ['Transglutaminase Tecidual IgG', 'tTG IgG', 'Anti-tTG IgG'],\n },\n unit: 'U/mL',\n },\n\n // ============================================================================\n // CARDIOVASCULAR GENETICS / GENÉTICA CARDIOVASCULAR\n // ============================================================================\n {\n category: 'coracao',\n code: 'APOE_Genotype',\n loinc: '21619-2',\n names: {\n en: [\n 'APOE Genotype',\n 'Apolipoprotein E Genotype',\n 'ApoE Gene',\n 'APO E Genotype',\n 'Cardio IQ APOE Genotype',\n ],\n pt: ['Genótipo APOE', 'Genótipo Apolipoproteína E'],\n },\n },\n\n // ============================================================================\n // METABOLIC ADD-ONS / MARCADORES METABÓLICOS ADICIONAIS\n // ============================================================================\n {\n category: 'metabolico',\n code: 'Adiponectin',\n loinc: '47828-9',\n names: {\n en: ['Adiponectin', 'Serum Adiponectin'],\n pt: ['Adiponectina'],\n },\n unit: 'mcg/mL',\n },\n\n // ============================================================================\n // BODY COMPOSITION / COMPOSIÇÃO CORPORAL (DEXA Scan)\n // ============================================================================\n {\n category: 'composicao-corporal',\n code: 'BMI',\n codeAliases: ['Body_Mass_Index'],\n loinc: '39156-5',\n names: {\n en: ['Body Mass Index', 'BMI'],\n pt: ['Índice de Massa Corporal', 'IMC'],\n },\n unit: 'kg/m2',\n },\n {\n category: 'composicao-corporal',\n code: 'BodyFatPct',\n loinc: '41982-0',\n names: {\n en: [\n 'Body Fat Percentage',\n 'Body Fat %',\n 'Total Body Fat %',\n 'Body Fat',\n 'Fat Percentage',\n 'Percent Body Fat',\n '% Body Fat',\n 'Total Body % Fat',\n ],\n pt: [\n 'Percentual de Gordura Corporal',\n '% Gordura Corporal',\n 'Gordura Corporal Total %',\n 'Percentual de Gordura',\n '% Gordura Total',\n 'Gordura Corporal',\n ],\n },\n unit: '%',\n },\n {\n category: 'composicao-corporal',\n code: 'FatMass',\n loinc: '73708-0',\n names: {\n en: ['Fat Mass', 'Total Fat Mass', 'Body Fat Mass', 'Fat Tissue Mass'],\n pt: ['Massa de Gordura', 'Massa Gorda', 'Massa de Gordura Total', 'Tecido Adiposo'],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'LeanMass',\n loinc: '73964-9',\n names: {\n en: ['Lean Mass', 'Lean Body Mass', 'Lean Tissue Mass', 'Total Lean Mass', 'LBM'],\n pt: ['Massa Magra', 'Massa Corporal Magra', 'Tecido Magro', 'Massa Magra Total'],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'BMC',\n // No official LOINC code exists for total body BMC from DEXA\n names: {\n en: [\n 'Bone Mineral Content',\n 'BMC',\n 'Total Body BMC',\n 'Bone Mass',\n 'Total Bone Mineral Content',\n ],\n pt: [\n 'Conteúdo Mineral Ósseo',\n 'CMO',\n 'Massa Óssea',\n 'Conteúdo Mineral Ósseo Total',\n 'CMO Total',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'FatFreeMass',\n // No official LOINC code exists for fat-free mass from DEXA\n names: {\n en: ['Fat-Free Mass', 'Fat Free Mass', 'Fat Free', 'FFM', 'Non-Fat Mass'],\n pt: ['Massa Livre de Gordura', 'Massa Isenta de Gordura', 'MLG'],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'VATVolume',\n // No official LOINC code exists for visceral adipose tissue volume\n names: {\n en: [\n 'Visceral Fat Volume',\n 'VAT Volume',\n 'VATVolume',\n 'Visceral Adipose Tissue Volume',\n 'VAT',\n 'Visceral Fat',\n 'Visceral Volume',\n 'Volume',\n ],\n pt: [\n 'Volume de Gordura Visceral',\n 'Volume TAV',\n 'Tecido Adiposo Visceral Volume',\n 'Gordura Visceral',\n 'Volume Visceral',\n ],\n },\n unit: 'cm³',\n },\n {\n category: 'composicao-corporal',\n code: 'VATMass',\n // No official LOINC code exists for visceral adipose tissue mass\n names: {\n en: [\n 'Visceral Fat Mass',\n 'VAT Mass',\n 'VATMass',\n 'Visceral Adipose Tissue Mass',\n 'Visceral Adipose Tissue',\n 'Visceral Mass',\n ],\n pt: [\n 'Massa de Gordura Visceral',\n 'Massa TAV',\n 'Tecido Adiposo Visceral Massa',\n 'Tecido Adiposo Visceral',\n 'Massa Visceral',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'AndroidGynoidRatio',\n // No official LOINC code exists for android/gynoid ratio\n names: {\n en: [\n 'Android/Gynoid Ratio',\n 'A/G Ratio',\n 'Android Gynoid Ratio',\n 'AndroidGynoidRatio',\n 'AG Ratio',\n 'Android to Gynoid Ratio',\n 'AndrogenGynoindRatio',\n 'Androgen Gynoid Ratio',\n ],\n pt: [\n 'Razão Androide/Ginoide',\n 'Razão A/G',\n 'Relação Androide Ginoide',\n 'Razão AG',\n 'Índice Androide/Ginoide',\n ],\n },\n unit: 'ratio',\n },\n {\n category: 'composicao-corporal',\n code: 'AndroidFatPct',\n // No official LOINC code exists for android region fat percentage\n names: {\n en: [\n 'Android Fat Percentage',\n 'Android Fat %',\n 'AndroidFatPct',\n 'AndroidFatPercent',\n 'Android Region Fat %',\n 'Abdominal Fat %',\n 'Android % Fat',\n ],\n pt: [\n 'Percentual de Gordura Androide',\n '% Gordura Androide',\n 'Gordura Região Androide %',\n '% Gordura Abdominal',\n ],\n },\n unit: '%',\n },\n {\n category: 'composicao-corporal',\n code: 'GynoidFatPct',\n // No official LOINC code exists for gynoid region fat percentage\n names: {\n en: [\n 'Gynoid Fat Percentage',\n 'Gynoid Fat %',\n 'GynoidFatPct',\n 'GynoidFatPercent',\n 'GynoindFatPercent',\n 'Gynoid Region Fat %',\n 'Hip Fat %',\n 'Gynoid % Fat',\n ],\n pt: [\n 'Percentual de Gordura Ginoide',\n '% Gordura Ginoide',\n 'Gordura Região Ginoide %',\n '% Gordura Quadril',\n ],\n },\n unit: '%',\n },\n {\n category: 'composicao-corporal',\n code: 'TotalMass',\n loinc: '29463-7',\n names: {\n en: ['Total Mass', 'Total Body Mass', 'Body Weight', 'Weight'],\n pt: ['Massa Total', 'Massa Corporal Total', 'Peso Corporal', 'Peso'],\n },\n unit: 'kg',\n },\n\n // Regional Body Composition (DEXA)\n // Note: No official LOINC codes exist for regional lean/fat mass measurements\n // Hidden from UI for now - may be shown in future regional breakdown view\n {\n category: 'composicao-corporal',\n code: 'ArmsLeanMass',\n hidden: true,\n names: {\n en: [\n 'Arms Lean Mass',\n 'Arms Lean',\n 'Arms Lean Tissue',\n 'Arm Lean Mass',\n 'Arm Lean',\n 'Upper Limb Lean Mass',\n 'Upper Limbs Lean Mass',\n 'Upper Extremity Lean Mass',\n 'Lean Arms',\n 'Lean Mass Arms',\n 'Lean Mass Bracos',\n ],\n pt: [\n 'Massa Magra Braços',\n 'Tecido Magro Braços',\n 'Massa Magra Membros Superiores',\n 'Braços Massa Magra',\n 'Massa Magra dos Braços',\n 'MMSS Massa Magra',\n 'Membros Superiores Magro',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'ArmsFatMass',\n hidden: true,\n names: {\n en: [\n 'Arms Fat Mass',\n 'Arms Fat',\n 'Arms Fat Tissue',\n 'Arm Fat Mass',\n 'Arm Fat',\n 'Upper Limb Fat Mass',\n 'Upper Limbs Fat Mass',\n 'Upper Extremity Fat Mass',\n 'Fat Arms',\n 'Fat Mass Arms',\n 'Fat Mass Bracos',\n ],\n pt: [\n 'Massa de Gordura Braços',\n 'Tecido Adiposo Braços',\n 'Gordura Membros Superiores',\n 'Braços Gordura',\n 'Gordura dos Braços',\n 'Braços Massa Gorda',\n 'MMSS Gordura',\n 'Membros Superiores Gordura',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'LegsLeanMass',\n hidden: true,\n names: {\n en: [\n 'Legs Lean Mass',\n 'Legs Lean',\n 'Legs Lean Tissue',\n 'Leg Lean Mass',\n 'Leg Lean',\n 'Lower Limb Lean Mass',\n 'Lower Limbs Lean Mass',\n 'Lower Extremity Lean Mass',\n 'Lean Legs',\n 'Lean Mass Legs',\n 'Lean Mass Pernas',\n ],\n pt: [\n 'Massa Magra Pernas',\n 'Tecido Magro Pernas',\n 'Massa Magra Membros Inferiores',\n 'Pernas Massa Magra',\n 'Massa Magra das Pernas',\n 'MMII Massa Magra',\n 'Membros Inferiores Magro',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'LegsFatMass',\n hidden: true,\n names: {\n en: [\n 'Legs Fat Mass',\n 'Legs Fat',\n 'Legs Fat Tissue',\n 'Leg Fat Mass',\n 'Leg Fat',\n 'Lower Limb Fat Mass',\n 'Lower Limbs Fat Mass',\n 'Lower Extremity Fat Mass',\n 'Fat Legs',\n 'Fat Mass Legs',\n 'Fat Mass Pernas',\n ],\n pt: [\n 'Massa de Gordura Pernas',\n 'Tecido Adiposo Pernas',\n 'Gordura Membros Inferiores',\n 'Pernas Gordura',\n 'Gordura das Pernas',\n 'Pernas Massa Gorda',\n 'MMII Gordura',\n 'Membros Inferiores Gordura',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'TrunkLeanMass',\n hidden: true,\n names: {\n en: [\n 'Trunk Lean Mass',\n 'Trunk Lean',\n 'Trunk Lean Tissue',\n 'Torso Lean Mass',\n 'Core Lean Mass',\n 'Lean Trunk',\n 'Lean Mass Trunk',\n 'Lean Mass Tronco',\n ],\n pt: [\n 'Massa Magra Tronco',\n 'Tecido Magro Tronco',\n 'Massa Magra Core',\n 'Tronco Massa Magra',\n 'Massa Magra do Tronco',\n ],\n },\n unit: 'kg',\n },\n {\n category: 'composicao-corporal',\n code: 'TrunkFatMass',\n hidden: true,\n names: {\n en: [\n 'Trunk Fat Mass',\n 'Trunk Fat',\n 'Trunk Fat Tissue',\n 'Torso Fat Mass',\n 'Core Fat Mass',\n 'Fat Trunk',\n 'Fat Mass Trunk',\n 'Fat Mass Tronco',\n ],\n pt: [\n 'Massa de Gordura Tronco',\n 'Tecido Adiposo Tronco',\n 'Gordura Core',\n 'Tronco Gordura',\n 'Gordura do Tronco',\n 'Tronco Massa Gorda',\n ],\n },\n unit: 'kg',\n },\n\n // ============================================================================\n // BONE DENSITY / DENSIDADE ÓSSEA (DEXA Scan)\n // ============================================================================\n {\n category: 'densidade-ossea',\n code: 'BMD_Total',\n // No official LOINC code exists for total body BMD (only site-specific)\n names: {\n en: [\n 'Total Body BMD',\n 'BMD Total',\n 'BMD',\n 'TotalBodyBMD',\n 'Bone Mineral Density',\n 'Total BMD',\n 'Bone Density',\n 'Total Body Bone Density',\n ],\n pt: [\n 'DMO Corpo Total',\n 'DMO Total',\n 'DMO',\n 'Densidade Mineral Óssea',\n 'Densidade Óssea Total',\n 'Densidade Óssea',\n ],\n },\n unit: 'g/cm²',\n },\n {\n category: 'densidade-ossea',\n code: 'TScore_Total',\n // No official LOINC code exists for total body T-score (only site-specific)\n names: {\n en: [\n 'Total Body T-Score',\n 'T-Score',\n 'T Score',\n 'TScore',\n 'TScore_Total',\n 'TotalBodyTScore',\n 'BMD T-Score',\n 'Bone Density T-Score',\n 'T-Score Total Body',\n ],\n pt: ['T-Score Corpo Total', 'T-Score', 'Escore T', 'T-Score DMO', 'T-Score Densidade Óssea'],\n },\n unit: 'score',\n },\n {\n category: 'densidade-ossea',\n code: 'ZScore_Total',\n // No official LOINC code exists for total body Z-score (only site-specific)\n names: {\n en: [\n 'Total Body Z-Score',\n 'Z-Score',\n 'Z Score',\n 'ZScore',\n 'ZScore_Total',\n 'TotalBodyZScore',\n 'BMD Z-Score',\n 'Bone Density Z-Score',\n 'Z-Score Total Body',\n ],\n pt: ['Z-Score Corpo Total', 'Z-Score', 'Escore Z', 'Z-Score DMO', 'Z-Score Densidade Óssea'],\n },\n unit: 'score',\n },\n\n // ============================================================================\n // CARDIOVASCULAR MARKERS — Insuficiência cardíaca e dano miocárdico\n // ============================================================================\n {\n category: 'coracao',\n code: 'NTproBNP',\n loinc: '33762-6',\n names: {\n en: ['NT-proBNP', 'N-Terminal pro B-Type Natriuretic Peptide', 'NT-pro-BNP'],\n pt: ['NT-proBNP', 'Peptídeo Natriurético Tipo B N-Terminal', 'Pró-BNP N-Terminal'],\n },\n unit: 'pg/mL',\n },\n {\n category: 'coracao',\n code: 'BNP',\n loinc: '30934-4',\n names: {\n en: ['BNP', 'B-Type Natriuretic Peptide', 'Brain Natriuretic Peptide'],\n pt: ['BNP', 'Peptídeo Natriurético Tipo B', 'Peptídeo Natriurético Cerebral'],\n },\n unit: 'pg/mL',\n },\n {\n category: 'coracao',\n code: 'TroponinI',\n loinc: '49563-0',\n names: {\n en: ['Troponin I', 'cTnI', 'Cardiac Troponin I', 'hs-TnI', 'High-Sensitivity Troponin I'],\n pt: ['Troponina I', 'cTnI', 'Troponina I Cardíaca', 'Troponina I Ultrassensível'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'coracao',\n code: 'TroponinT',\n loinc: '6598-7',\n names: {\n en: ['Troponin T', 'cTnT', 'Cardiac Troponin T', 'hs-TnT', 'High-Sensitivity Troponin T'],\n pt: ['Troponina T', 'cTnT', 'Troponina T Cardíaca', 'Troponina T Ultrassensível'],\n },\n unit: 'ng/mL',\n },\n\n // ============================================================================\n // COAGULATION — Coagulação\n // ============================================================================\n {\n category: 'sangue',\n code: 'DDimer',\n loinc: '48066-5',\n names: {\n en: ['D-Dimer', 'D Dimer', 'Fibrin D-Dimer'],\n pt: ['Dímero-D', 'Dímero D', 'D-Dímero'],\n },\n unit: 'ng/mL',\n },\n {\n category: 'sangue',\n code: 'Fibrinogen',\n loinc: '3255-7',\n names: {\n en: ['Fibrinogen', 'Fibrinogen Activity'],\n pt: ['Fibrinogênio', 'Atividade do Fibrinogênio'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // HEMATOLOGY — Hematologia adicional\n // ============================================================================\n {\n category: 'figado',\n code: 'LDH',\n loinc: '2532-0',\n names: {\n en: ['Lactate Dehydrogenase', 'LDH', 'LD'],\n pt: ['Desidrogenase Lática', 'DHL', 'LDH', 'Lactato Desidrogenase'],\n },\n unit: 'U/L',\n },\n\n // ============================================================================\n // ENDOCRINE — Eixo cálcio/fósforo\n // ============================================================================\n {\n category: 'hormonios',\n code: 'PTH',\n loinc: '2731-8',\n names: {\n en: ['Parathyroid Hormone', 'PTH', 'Intact PTH'],\n pt: ['Paratormônio', 'PTH', 'Hormônio da Paratireoide', 'PTH Intacto'],\n },\n unit: 'pg/mL',\n },\n\n // ============================================================================\n // IMMUNOLOGY — Complemento e imunoglobulinas\n // ============================================================================\n {\n category: 'autoimunidade',\n code: 'IgM',\n loinc: '2472-9',\n names: {\n en: ['Immunoglobulin M', 'IgM', 'Total IgM'],\n pt: ['Imunoglobulina M', 'IgM', 'IgM Total'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'autoimunidade',\n code: 'C3',\n loinc: '4485-3',\n names: {\n en: ['Complement C3', 'C3'],\n pt: ['Complemento C3', 'C3', 'Fração C3 do Complemento'],\n },\n unit: 'mg/dL',\n },\n {\n category: 'autoimunidade',\n code: 'C4',\n loinc: '4498-6',\n names: {\n en: ['Complement C4', 'C4'],\n pt: ['Complemento C4', 'C4', 'Fração C4 do Complemento'],\n },\n unit: 'mg/dL',\n },\n\n // ============================================================================\n // TUMOR MARKERS — Marcadores tumorais adicionais\n // ============================================================================\n {\n category: 'marcadores-tumorais',\n code: 'CA199',\n loinc: '24108-3',\n names: {\n en: ['CA 19-9', 'Carbohydrate Antigen 19-9', 'CA19-9'],\n pt: ['CA 19-9', 'Antígeno Carboidrato 19-9', 'CA19-9'],\n },\n unit: 'U/mL',\n },\n {\n category: 'marcadores-tumorais',\n code: 'CA153',\n loinc: '6875-9',\n names: {\n en: ['CA 15-3', 'Cancer Antigen 15-3', 'CA15-3'],\n pt: ['CA 15-3', 'Antígeno Câncer 15-3', 'CA15-3'],\n },\n sex: 'female',\n unit: 'U/mL',\n },\n {\n category: ['saude-feminina', 'marcadores-tumorais'],\n code: 'BetaHCG',\n loinc: '19080-1',\n names: {\n en: ['Beta-hCG', 'Beta Human Chorionic Gonadotropin', 'β-hCG Quantitative', 'hCG'],\n pt: [\n 'Beta-hCG',\n 'Beta Gonadotrofina Coriônica Humana',\n 'β-hCG Quantitativo',\n 'hCG',\n 'Gonadotrofina Coriônica',\n ],\n },\n unit: 'mIU/mL',\n },\n\n // ============================================================================\n // RENAL — Filtração glomerular alternativa\n // ============================================================================\n {\n category: 'rins',\n code: 'CystatinC',\n loinc: '33863-2',\n names: {\n en: ['Cystatin C', 'Cystatin-C'],\n pt: ['Cistatina C', 'Cistatina-C'],\n },\n unit: 'mg/L',\n },\n\n // ============================================================================\n // NUTRIENTS — Oligoelementos adicionais\n // ============================================================================\n {\n category: 'nutrientes',\n code: 'Selenium',\n loinc: '5697-7',\n names: {\n en: ['Selenium', 'Se'],\n pt: ['Selênio', 'Se'],\n },\n unit: 'µg/L',\n },\n\n // ============================================================================\n // METABOLIC — Cetonas séricas\n // ============================================================================\n {\n category: 'pancreas',\n code: 'BetaHydroxybutyrate',\n loinc: '53060-0',\n names: {\n en: ['Beta-Hydroxybutyrate', 'β-Hydroxybutyrate', 'BHB', 'Ketone Bodies'],\n pt: ['Beta-Hidroxibutirato', 'β-Hidroxibutirato', 'BHB', 'Corpos Cetônicos'],\n },\n unit: 'mmol/L',\n },\n];\n\n// ============================================================================\n// LOOKUP MAPS (Generated from definitions)\n// ============================================================================\n\n/** Map LOINC code to internal code */\nconst loincToCodeMap = new Map<string, string>();\n\n/** Map internal code to LOINC */\nconst codeToLoincMap = new Map<string, string>();\n\n/** Map internal code to definition */\nconst codeToDefinitionMap = new Map<string, BiomarkerDefinition>();\n\n/** Set of all valid LOINC codes */\nconst validLoincSet = new Set<string>();\n\n/** Map code alias to canonical code */\nconst codeAliasToCanonicalMap = new Map<string, string>();\n\n/** Set of all valid codes (canonical + aliases) */\nconst validCodeSet = new Set<string>();\n\n// Initialize maps\nfor (const def of BIOMARKER_DEFINITIONS) {\n // Only add to LOINC maps if loinc is defined\n if (def.loinc) {\n loincToCodeMap.set(def.loinc, def.code);\n codeToLoincMap.set(def.code, def.loinc);\n validLoincSet.add(def.loinc);\n }\n\n codeToDefinitionMap.set(def.code, def);\n validCodeSet.add(def.code);\n\n // Handle LOINC aliases\n if (def.loincAliases) {\n for (const alias of def.loincAliases) {\n loincToCodeMap.set(alias, def.code);\n validLoincSet.add(alias);\n }\n }\n\n // Handle code aliases\n if (def.codeAliases) {\n for (const alias of def.codeAliases) {\n codeAliasToCanonicalMap.set(alias, def.code);\n validCodeSet.add(alias);\n // Also add alias to definition map for easy lookup\n codeToDefinitionMap.set(alias, def);\n }\n }\n}\n\n// ============================================================================\n// EXPORTED FUNCTIONS\n// ============================================================================\n\n/**\n * Convert LOINC code to internal code\n */\nexport function loincToCode(loinc: string): string | undefined {\n return loincToCodeMap.get(loinc);\n}\n\n/**\n * Convert internal code to LOINC\n */\nexport function codeToLoinc(code: string): string | undefined {\n return codeToLoincMap.get(code);\n}\n\n/**\n * Check if a LOINC code is in our supported list\n */\nexport function isValidLoinc(loinc: string): boolean {\n return validLoincSet.has(loinc);\n}\n\n/**\n * Check if a code is valid (canonical or alias)\n */\nexport function isValidCode(code: string): boolean {\n return validCodeSet.has(code);\n}\n\n/**\n * Normalize a code alias to its canonical form.\n * Returns the canonical code if input is an alias, otherwise returns the input unchanged.\n *\n * Use this at data boundaries (e.g. parsing lab results) to map incoming aliases\n * to canonical codes. Do NOT use this as a fallback inside lookup functions —\n * dictionary keys (e.g. biomarkerRangeDefinitions) must use canonical codes directly.\n */\nexport function normalizeCode(code: string): string {\n return codeAliasToCanonicalMap.get(code) ?? code;\n}\n\n/**\n * Get the sex relevance for a biomarker code\n * @returns 'male', 'female', or 'both' (default)\n */\nexport function getSexForCode(code: string): 'male' | 'female' | 'both' {\n const def = codeToDefinitionMap.get(code);\n return def?.sex ?? 'both';\n}\n\n/**\n * Get all biomarker definitions filtered by sex\n * @param sex - 'male', 'female', or 'both' (returns all)\n */\nexport function getDefinitionsBySex(sex: 'male' | 'female' | 'both'): BiomarkerDefinition[] {\n if (sex === 'both') {\n return BIOMARKER_DEFINITIONS;\n }\n return BIOMARKER_DEFINITIONS.filter(\n (def) => def.sex === sex || def.sex === undefined || def.sex === 'both',\n );\n}\n\n/**\n * Get biomarker definition by code\n */\nexport function getDefinitionByCode(code: string): BiomarkerDefinition | undefined {\n return codeToDefinitionMap.get(code);\n}\n\n/**\n * Get biomarker definition by LOINC\n */\nexport function getDefinitionByLoinc(loinc: string): BiomarkerDefinition | undefined {\n const code = loincToCodeMap.get(loinc);\n return code ? codeToDefinitionMap.get(code) : undefined;\n}\n\n/**\n * Get all biomarker definitions\n */\nexport function getAllDefinitions(): BiomarkerDefinition[] {\n return BIOMARKER_DEFINITIONS;\n}\n\n/**\n * Get all visible biomarker definitions (excludes hidden biomarkers)\n */\nexport function getVisibleDefinitions(): BiomarkerDefinition[] {\n return BIOMARKER_DEFINITIONS.filter((def) => !def.hidden);\n}\n\n/**\n * Get all supported internal codes (canonical codes only, not aliases)\n */\nexport function getAllCodes(): string[] {\n return BIOMARKER_DEFINITIONS.map((def) => def.code);\n}\n\n/**\n * Get all supported LOINC codes\n */\nexport function getAllLoincCodes(): string[] {\n return Array.from(validLoincSet);\n}\n\n/**\n * Generate LLM reference prompt for biomarker extraction\n * This is included in the extraction prompt so the LLM can output LOINC codes directly\n */\nexport function generateLLMReference(): string {\n const lines: string[] = [\n 'SUPPORTED BIOMARKERS (output the LOINC code or internal Code for each matched biomarker):',\n '',\n ];\n\n // Group by category for better organization\n const byCategory = new Map<string, BiomarkerDefinition[]>();\n for (const def of BIOMARKER_DEFINITIONS) {\n const categories = Array.isArray(def.category) ? def.category : [def.category];\n for (const cat of categories) {\n const existing = byCategory.get(cat) || [];\n existing.push(def);\n byCategory.set(cat, existing);\n }\n }\n\n for (const [category, defs] of byCategory) {\n lines.push(`[${category.toUpperCase()}]`);\n for (const def of defs) {\n const ptNames = def.names.pt.join(', ');\n const enNames = def.names.en.join(', ');\n if (def.loinc) {\n lines.push(`- LOINC: ${def.loinc} | Code: ${def.code}`);\n } else {\n lines.push(`- Code: ${def.code} (no LOINC - use code only)`);\n }\n lines.push(` EN: ${enNames}`);\n lines.push(` PT: ${ptNames}`);\n }\n lines.push('');\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Generate biomarkerTests format for UI compatibility\n * This replaces the old hardcoded biomarkerTests.ts\n * Excludes hidden biomarkers from the output\n */\nexport function toBiomarkerTests(): Record<\n string,\n Array<{ pt: string; en: string; code: string }>\n> {\n const result: Record<string, Array<{ pt: string; en: string; code: string }>> = {};\n\n for (const def of BIOMARKER_DEFINITIONS) {\n // Skip hidden biomarkers\n if (def.hidden) continue;\n\n const categories = Array.isArray(def.category) ? def.category : [def.category];\n const ptName = def.names.pt[0] ?? def.code;\n const enName = def.names.en[0] ?? def.code;\n for (const category of categories) {\n if (!result[category]) {\n result[category] = [];\n }\n result[category]!.push({\n code: def.code,\n en: enName,\n pt: ptName,\n });\n }\n }\n\n return result;\n}\n\n/**\n * Biomarker search pattern for OCR text anchoring\n */\nexport interface BiomarkerSearchPattern {\n code: string;\n loinc?: string;\n names: string[]; // All names (EN + PT) for this biomarker\n}\n\n/**\n * Get all biomarker search patterns for OCR text anchoring\n * Returns a flat list of all biomarker codes with their searchable names\n */\nexport function getAllSearchPatterns(): BiomarkerSearchPattern[] {\n return BIOMARKER_DEFINITIONS.map((def) => ({\n code: def.code,\n ...(def.loinc && { loinc: def.loinc }),\n names: [...def.names.en, ...def.names.pt],\n }));\n}\n\n/**\n * Generate filtered LLM reference for specific biomarker codes\n * Only includes biomarkers that were found in the OCR text\n */\nexport function generateFilteredLLMReference(codes: string[]): string {\n const codeSet = new Set(codes);\n const filteredDefs = BIOMARKER_DEFINITIONS.filter((def) => codeSet.has(def.code));\n\n if (filteredDefs.length === 0) {\n return 'NO MATCHING BIOMARKERS FOUND IN TEXT - Return empty biomarkers array.';\n }\n\n const lines: string[] = [\n 'ALLOWED BIOMARKERS (ONLY extract these - they were found in the document):',\n '',\n ];\n\n // Group by category for organization\n const byCategory = new Map<string, BiomarkerDefinition[]>();\n for (const def of filteredDefs) {\n const categories = Array.isArray(def.category) ? def.category : [def.category];\n for (const cat of categories) {\n const existing = byCategory.get(cat) || [];\n existing.push(def);\n byCategory.set(cat, existing);\n }\n }\n\n for (const [category, defs] of byCategory) {\n lines.push(`[${category.toUpperCase()}]`);\n for (const def of defs) {\n const ptNames = def.names.pt.join(', ');\n const enNames = def.names.en.join(', ');\n if (def.loinc) {\n lines.push(`- LOINC: ${def.loinc} | Code: ${def.code}`);\n } else {\n lines.push(`- Code: ${def.code} (no LOINC - use code only)`);\n }\n lines.push(` EN: ${enNames}`);\n lines.push(` PT: ${ptNames}`);\n }\n lines.push('');\n }\n\n return lines.join('\\n');\n}\n\n/**\n * DEXA indicator biomarker codes\n * When these are found in OCR text, the document is likely a DEXA/body composition scan\n */\nexport const DEXA_INDICATOR_CODES = [\n 'BodyFatPct',\n 'FatMass',\n 'LeanMass',\n 'BMC',\n 'FatFreeMass',\n 'TotalMass',\n] as const;\n\n/**\n * DEXA-related categories that should be included when a DEXA document is detected\n */\nexport const DEXA_CATEGORIES = ['composicao-corporal', 'densidade-ossea'] as const;\n\n/**\n * Generate full DEXA/body composition reference for LLM extraction\n * This includes ALL body composition biomarkers (regional metrics, VAT, bone density)\n * that may not be detected by OCR anchoring due to table layouts\n *\n * Use this when DEXA indicator biomarkers (BodyFatPct, FatMass, LeanMass, etc.)\n * are detected in the document\n */\nexport function generateDexaFullReference(): string {\n const dexaCodes = BIOMARKER_DEFINITIONS.filter((def) => {\n const categories = Array.isArray(def.category) ? def.category : [def.category];\n return categories.some((cat) =>\n DEXA_CATEGORIES.includes(cat as (typeof DEXA_CATEGORIES)[number]),\n );\n }).map((def) => def.code);\n\n return generateFilteredLLMReference(dexaCodes);\n}\n\n/**\n * Check if a list of biomarker codes indicates a DEXA/body composition document\n */\nexport function isDexaDocument(matchedCodes: string[]): boolean {\n return DEXA_INDICATOR_CODES.some((code) => matchedCodes.includes(code));\n}\n\n/**\n * CAC (Coronary Artery Calcium) indicator biomarker codes\n * When these are found in OCR text, the document is likely a CAC scoring report\n */\nexport const CAC_INDICATOR_CODES = [\n 'CAC',\n 'CAC_LAD',\n 'CAC_LCX',\n 'CAC_RCA',\n 'CAC_Percentile',\n] as const;\n\n/**\n * Generate full CAC reference for LLM extraction\n * This includes all CAC-related biomarkers (total score, per-vessel, percentile, aortic valve)\n */\nexport function generateCacFullReference(): string {\n const cacCodes = BIOMARKER_DEFINITIONS.filter((def) => {\n return def.code === 'CAC' || def.code.startsWith('CAC_') || def.code === 'AorticValveCalcium';\n }).map((def) => def.code);\n\n return generateFilteredLLMReference(cacCodes);\n}\n\n/**\n * Check if a list of biomarker codes indicates a CAC scoring document\n */\nexport function isCacDocument(matchedCodes: string[]): boolean {\n return CAC_INDICATOR_CODES.some((code) => matchedCodes.includes(code));\n}\n\n/**\n * Normalize text for comparison\n * - Splits camelCase/PascalCase into words (e.g., \"ArmsLeanMass\" → \"arms lean mass\")\n * - Removes diacritics\n * - Lowercases\n * - Normalizes whitespace\n */\nfunction normalizeText(text: string): string {\n return (\n text\n // Replace underscores, hyphens, and slashes with spaces (BMD_Total → BMD Total, LDL-Cholesterol → LDL Cholesterol, Omega6/Omega3 → Omega6 Omega3)\n .replace(/[_\\-/]/g, ' ')\n // Split camelCase/PascalCase into words (ArmsLeanMass → Arms Lean Mass)\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Split uppercase sequences followed by lowercase (VATVolume → VAT Volume)\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n // Remove diacritics\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/\\s+/g, ' ')\n .trim()\n );\n}\n\n// Build a normalized name map for fast lookups\nconst normalizedNameToCodeMap = new Map<string, string>();\nfor (const def of BIOMARKER_DEFINITIONS) {\n for (const name of [...def.names.en, ...def.names.pt]) {\n normalizedNameToCodeMap.set(normalizeText(name), def.code);\n }\n}\n\n/**\n * Find a biomarker code by name (with normalization)\n * This is a fallback when LOINC lookup fails\n * @param name - The biomarker name from the LLM output\n * @returns The internal code if found, undefined otherwise\n */\nexport function findCodeByName(name: string): string | undefined {\n // Check if the input is already a valid biomarker code (e.g., \"Omega3_DHA\")\n if (codeToDefinitionMap.has(name)) {\n return codeToDefinitionMap.get(name)!.code;\n }\n\n // Check code aliases (e.g., alias → canonical code)\n const canonical = codeAliasToCanonicalMap.get(name);\n if (canonical) {\n return canonical;\n }\n\n const normalized = normalizeText(name);\n return normalizedNameToCodeMap.get(normalized);\n}\n\n/**\n * Validate that a LOINC code matches a given name\n * Returns the correct code if they match, or the name-based code if they don't\n * This catches cases where LLM provides a valid-but-wrong LOINC\n * @param loinc - The LOINC code provided by LLM\n * @param name - The biomarker name provided by LLM\n * @returns Object with code and whether a correction was made\n */\nexport function validateLoincNameMatch(\n loinc: string,\n name: string,\n): { code: string | undefined; corrected: boolean } {\n const loincCode = loincToCode(loinc);\n const nameCode = findCodeByName(name);\n\n // If LOINC maps to a code, check if it matches the name-based code\n if (loincCode && nameCode && loincCode !== nameCode) {\n // LOINC and name disagree - trust the name since it's what the LLM saw in the document\n return { code: nameCode, corrected: true };\n }\n\n // If LOINC is valid, use it\n if (loincCode) {\n return { code: loincCode, corrected: false };\n }\n\n // Fallback to name-based lookup\n return { code: nameCode, corrected: !!nameCode };\n}\n\n/**\n * Check if a biomarker code should be displayed in the UI\n *\n * Returns false for:\n * - UNKNOWN_ codes (unrecognized biomarkers)\n * - Biomarkers marked as hidden in their definition\n *\n * @param code - The biomarker code to check\n * @returns true if the biomarker should be displayed\n */\nexport function isBiomarkerVisible(code: string): boolean {\n // Filter out UNKNOWN codes\n if (code.startsWith('UNKNOWN_') || code === 'UNKNOWN') {\n return false;\n }\n\n // Check if the biomarker is marked as hidden\n const definition = codeToDefinitionMap.get(code);\n if (definition?.hidden) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Filter an array of biomarkers to only include visible ones\n *\n * @param biomarkers - Array of objects with a `code` property\n * @returns Filtered array with only visible biomarkers\n */\nexport function filterVisibleBiomarkers<T extends { code: string }>(biomarkers: T[]): T[] {\n return biomarkers.filter((b) => isBiomarkerVisible(b.code));\n}\n\n/**\n * Get all biomarkers for a specific category\n *\n * @param category - The category slug (e.g., 'coracao', 'tireoide')\n * @param options - Optional filters\n * @param options.includeHidden - Include hidden biomarkers (default: false)\n * @param options.sex - Filter by sex ('male', 'female', or 'both' for all)\n * @returns Array of biomarker definitions for the category\n */\nexport function getBiomarkersByCategory(\n category: string,\n options?: {\n includeHidden?: boolean;\n sex?: 'male' | 'female' | 'both';\n },\n): BiomarkerDefinition[] {\n const { includeHidden = false, sex = 'both' } = options ?? {};\n\n return BIOMARKER_DEFINITIONS.filter((def) => {\n const categories = Array.isArray(def.category) ? def.category : [def.category];\n if (!categories.includes(category)) return false;\n if (!includeHidden && def.hidden) return false;\n if (sex !== 'both') {\n // Include biomarkers that are for this sex or for 'both' (undefined)\n if (def.sex && def.sex !== sex && def.sex !== 'both') return false;\n }\n return true;\n });\n}\n\n/**\n * Get all biomarkers for multiple categories\n *\n * @param categories - Array of category slugs\n * @param options - Optional filters (same as getBiomarkersByCategory)\n * @returns Array of biomarker definitions grouped by category\n */\nexport function getBiomarkersForCategories(\n categories: string[],\n options?: {\n includeHidden?: boolean;\n sex?: 'male' | 'female' | 'both';\n },\n): Record<string, BiomarkerDefinition[]> {\n const result: Record<string, BiomarkerDefinition[]> = {};\n\n for (const category of categories) {\n const biomarkers = getBiomarkersByCategory(category, options);\n if (biomarkers.length > 0) {\n result[category] = biomarkers;\n }\n }\n\n return result;\n}\n"],"mappings":"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","names":[]}
package/dist/cli.js CHANGED
@@ -158,9 +158,13 @@ var BIOMARKER_DEFINITIONS = [
158
158
  unit: "nmol/L"
159
159
  },
160
160
  {
161
+ // LOINC 43583-4 = "Lipoprotein a [Moles/volume] in Serum or Plasma" (nmol/L).
162
+ // Anteriormente 10835-7 ("Lipoprotein a [Mass/volume]", mg/dL),
163
+ // incompatível com a unidade nmol/L declarada. SBC 2025 recomenda
164
+ // ensaio independente de isoforma reportado em nmol/L.
161
165
  category: "coracao",
162
166
  code: "Lipoprotein_a",
163
- loinc: "10835-7",
167
+ loinc: "43583-4",
164
168
  names: {
165
169
  en: ["Lipoprotein (a)", "Lp(a)"],
166
170
  pt: ["Lipoprote\xEDna (a)", "Lp(a)"]
@@ -1480,11 +1484,16 @@ var BIOMARKER_DEFINITIONS = [
1480
1484
  unit: "mg/L"
1481
1485
  },
1482
1486
  {
1487
+ // LOINC 3091-6 = "Urea [Mass/volume] in Serum or Plasma" (mg/dL).
1488
+ // Anteriormente 3094-0 ("Urea nitrogen", BUN), inconsistente com a faixa
1489
+ // de referência brasileira (15-50 mg/dL) e com os nomes pt-BR (Ureia).
1490
+ // Aliases 'BUN' e 'Blood Urea Nitrogen' removidos para evitar matching
1491
+ // de relatórios de BUN contra faixas de Ureia (BUN ≈ Ureia / 2,14).
1483
1492
  category: "rins",
1484
1493
  code: "Urea",
1485
- loinc: "3094-0",
1494
+ loinc: "3091-6",
1486
1495
  names: {
1487
- en: ["Blood Urea Nitrogen", "BUN", "Urea"],
1496
+ en: ["Urea"],
1488
1497
  pt: ["Ureia", "Ur\xE9ia"]
1489
1498
  },
1490
1499
  unit: "mg/dL"
@@ -4180,8 +4189,14 @@ var biomarkerRangeDefinitions = {
4180
4189
  }
4181
4190
  ]
4182
4191
  },
4192
+ // AMH — fortemente dependente de idade e sexo. As variantes femininas por
4193
+ // faixa etária são a referência clínica; o `default` foi ajustado para
4194
+ // refletir uma faixa adulta conservadora (~18-40 anos, mulheres em idade
4195
+ // reprodutiva geral). optimalMax anterior (6.9 ng/mL) sobrepunha-se a
4196
+ // valores sugestivos de SOP ou risco de OHSS; clinicamente, valores acima
4197
+ // de ~4 ng/mL já merecem investigação.
4183
4198
  AMH: {
4184
- default: { max: 10, min: 1, optimalMax: 6.9, optimalMin: 2, unit: "ng/mL" },
4199
+ default: { max: 6, min: 1, optimalMax: 4, optimalMin: 1.5, unit: "ng/mL" },
4185
4200
  source: "tietz-7ed-2015",
4186
4201
  variants: [
4187
4202
  {
@@ -4319,6 +4334,12 @@ var biomarkerRangeDefinitions = {
4319
4334
  default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: "pg/mL" },
4320
4335
  source: "sbc-ic-2018"
4321
4336
  },
4337
+ // Razão BUN/Creatinina — faixa 10-20 aplica-se ao Nitrogênio Ureico (BUN).
4338
+ // Laboratórios brasileiros que reportam Ureia (e não BUN) usam razão
4339
+ // Ureia/Creatinina, cuja faixa normal é aproximadamente 21-43
4340
+ // (Ureia ≈ BUN × 2,14). O biomarcador atualmente assume a convenção BUN;
4341
+ // consumidores que dosem Ureia devem converter ou reportar como razão
4342
+ // distinta. Ver issue #41 para alinhamento de nomenclatura/LOINC.
4322
4343
  BUN_Creatinine_Ratio: {
4323
4344
  default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: "" },
4324
4345
  source: "tietz-7ed-2015"
@@ -4388,8 +4409,11 @@ var biomarkerRangeDefinitions = {
4388
4409
  default: { max: 106, min: 98, optimalMax: 105, optimalMin: 100, unit: "mEq/L" },
4389
4410
  source: "tietz-7ed-2015"
4390
4411
  },
4412
+ // Colesterol total — SBC 2017/2025: valor desejável < 190 mg/dL para adultos,
4413
+ // com ou sem jejum. Limite anterior (200 mg/dL) refletia a diretriz ATP III
4414
+ // (NCEP, 2002), superada pelas atualizações brasileiras.
4391
4415
  Cholesterol: {
4392
- default: { max: 200, min: 0, optimalMax: 180, optimalMin: 0, unit: "mg/dL" },
4416
+ default: { max: 190, min: 0, optimalMax: 170, optimalMin: 0, unit: "mg/dL" },
4393
4417
  source: "sbc-lipids-2025"
4394
4418
  },
4395
4419
  // Índice de Castelli I (CT/HDL-c)
@@ -4745,19 +4769,25 @@ var biomarkerRangeDefinitions = {
4745
4769
  }
4746
4770
  ]
4747
4771
  },
4772
+ // HDL — SBC 2017/2025: desejável > 40 mg/dL (♂) e > 50 mg/dL (♀).
4773
+ // A diretriz NÃO define teto de normalidade — HDL alto é cardioprotetor.
4774
+ // Limites superiores anteriormente fixados em 60 mg/dL geravam falsos
4775
+ // alertas. Mantém-se `max` apenas como limite técnico do gauge (100 mg/dL),
4776
+ // não como ponto de corte clínico; consumidores devem tratar `direction:
4777
+ // higher-better` como sinal autoritativo.
4748
4778
  HDL: {
4749
- default: { max: 60, min: 40, optimalMax: 60, optimalMin: 50, unit: "mg/dL" },
4779
+ default: { max: 100, min: 40, optimalMax: 100, optimalMin: 50, unit: "mg/dL" },
4750
4780
  direction: "higher-better",
4751
4781
  source: "sbc-lipids-2025",
4752
4782
  variants: [
4753
4783
  {
4754
4784
  ageMin: 18,
4755
- range: { max: 60, min: 40, optimalMax: 60, optimalMin: 45, unit: "mg/dL" },
4785
+ range: { max: 100, min: 40, optimalMax: 100, optimalMin: 45, unit: "mg/dL" },
4756
4786
  sex: "M"
4757
4787
  },
4758
4788
  {
4759
4789
  ageMin: 18,
4760
- range: { max: 60, min: 50, optimalMax: 60, optimalMin: 55, unit: "mg/dL" },
4790
+ range: { max: 100, min: 50, optimalMax: 100, optimalMin: 55, unit: "mg/dL" },
4761
4791
  sex: "F"
4762
4792
  }
4763
4793
  ]
@@ -4974,8 +5004,14 @@ var biomarkerRangeDefinitions = {
4974
5004
  default: { max: 35, min: 15, optimalMax: 28, optimalMin: 18, unit: "%" },
4975
5005
  source: "simopoulos-omega-ratio-2002"
4976
5006
  },
5007
+ // Lp(a) — SBC 2025 (seção 3.1.1.2.7): níveis ≥ 50 mg/dL ou ≥ 125 nmol/L são
5008
+ // considerados aumentados, com indicação de rastreamento em cascata familiar.
5009
+ // A diretriz recomenda ensaio independente de isoforma medido em nmol/L; a
5010
+ // unidade nmol/L é mantida aqui por refletir o padrão laboratorial atual.
5011
+ // Limites anteriores (max=75) refletiam pontos de corte expressos em mg/dL,
5012
+ // gerando incompatibilidade com a unidade nmol/L declarada.
4977
5013
  Lipoprotein_a: {
4978
- default: { max: 75, min: 0, optimalMax: 30, optimalMin: 0, unit: "nmol/L" },
5014
+ default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: "nmol/L" },
4979
5015
  direction: "lower-better",
4980
5016
  source: "sbc-lipids-2025"
4981
5017
  },
@@ -5067,8 +5103,13 @@ var biomarkerRangeDefinitions = {
5067
5103
  default: { max: 8, min: 4, optimalMax: 8, optimalMin: 5.5, unit: "%" },
5068
5104
  source: "harris-omega3-2004"
5069
5105
  },
5106
+ // Ômega-3 Total (% de ácidos graxos eritrocitários) — Harris & von Schacky
5107
+ // (2004) propõem ≥ 8% como zona ótima de proteção cardiovascular; valores
5108
+ // entre 4% e 8% representam risco intermediário, < 4% risco alto.
5109
+ // optimalMin anterior (5.5%) ficava em zona intermediária, contradizendo
5110
+ // a literatura e o próprio texto educacional do `platform`.
5070
5111
  Omega3_Total: {
5071
- default: { max: 12, min: 3, optimalMax: 10, optimalMin: 5.5, unit: "%" },
5112
+ default: { max: 12, min: 3, optimalMax: 10, optimalMin: 8, unit: "%" },
5072
5113
  source: "harris-omega3-2004"
5073
5114
  },
5074
5115
  Omega6_Total: {
@@ -5104,9 +5145,37 @@ var biomarkerRangeDefinitions = {
5104
5145
  default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: "mg/dL" },
5105
5146
  source: "tietz-7ed-2015"
5106
5147
  },
5148
+ // Progesterona — varia drasticamente com a fase do ciclo menstrual.
5149
+ // O schema atual não modela fase do ciclo, então adotamos faixas amplas
5150
+ // por sexo: o `default` cobre homens/fase folicular/pós-menopausa; a
5151
+ // variante feminina expande até a faixa esperada de fase lútea
5152
+ // (~3-20 ng/mL). Interpretação correta exige correlação com a fase do
5153
+ // ciclo, indisponível neste contexto.
5107
5154
  Progesterone: {
5108
5155
  default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: "ng/mL" },
5109
- source: "tietz-7ed-2015"
5156
+ source: "tietz-7ed-2015",
5157
+ variants: [
5158
+ {
5159
+ ageMin: 18,
5160
+ range: { max: 0.9, min: 0.1, optimalMax: 0.6, optimalMin: 0.2, unit: "ng/mL" },
5161
+ sex: "M"
5162
+ },
5163
+ // Mulheres em idade reprodutiva: faixa que abarca fases folicular
5164
+ // (0.1-0.9 ng/mL) e lútea (3-20 ng/mL). Sem contexto de fase do ciclo,
5165
+ // valores intermediários (1-3 ng/mL) ficam em zona ambígua.
5166
+ {
5167
+ ageMax: 50,
5168
+ ageMin: 18,
5169
+ range: { max: 20, min: 0.1, optimalMax: 15, optimalMin: 0.2, unit: "ng/mL" },
5170
+ sex: "F"
5171
+ },
5172
+ // Pós-menopausa: valores tipicamente < 0.5 ng/mL (sem ovulação).
5173
+ {
5174
+ ageMin: 51,
5175
+ range: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: "ng/mL" },
5176
+ sex: "F"
5177
+ }
5178
+ ]
5110
5179
  },
5111
5180
  Prolactin: {
5112
5181
  default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: "ng/mL" },
@@ -5384,8 +5453,13 @@ var biomarkerRangeDefinitions = {
5384
5453
  }
5385
5454
  ]
5386
5455
  },
5456
+ // Ureia — convenção brasileira (laboratórios reportam Ureia, não BUN).
5457
+ // Faixa adulta de 15-50 mg/dL (Ureia ≈ BUN × 2,14). Limites anteriores
5458
+ // (7-20 mg/dL) refletiam BUN/Nitrogênio Ureico, gerando falsos diagnósticos
5459
+ // de azotemia em pacientes com Ureia normal. LOINC 3094-0 (BUN) também
5460
+ // deve ser revisto em biomarkers.ts — ver issue #41.
5387
5461
  Urea: {
5388
- default: { max: 20, min: 7, optimalMax: 16, optimalMin: 10, unit: "mg/dL" },
5462
+ default: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: "mg/dL" },
5389
5463
  source: "tietz-7ed-2015"
5390
5464
  },
5391
5465
  UricAcid: {
@@ -6029,7 +6103,7 @@ async function main() {
6029
6103
  strict: false
6030
6104
  });
6031
6105
  if (values.version) {
6032
- process.stdout.write(`${"0.15.0"}
6106
+ process.stdout.write(`${"0.15.1"}
6033
6107
  `);
6034
6108
  return;
6035
6109
  }
@@ -3,13 +3,13 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkOPS7XHILcjs = require('./chunk-OPS7XHIL.cjs');
7
- require('./chunk-EW5GLFSC.cjs');
6
+ var _chunkBRP5MGMEcjs = require('./chunk-BRP5MGME.cjs');
7
+ require('./chunk-JCLBVPUP.cjs');
8
8
  require('./chunk-MJ254F5K.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- exports.labObservationToFHIR = _chunkOPS7XHILcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkOPS7XHILcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkOPS7XHILcjs.labResultToFHIRBundle; exports.userProfileToFHIR = _chunkOPS7XHILcjs.userProfileToFHIR;
14
+ exports.labObservationToFHIR = _chunkBRP5MGMEcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkBRP5MGMEcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkBRP5MGMEcjs.labResultToFHIRBundle; exports.userProfileToFHIR = _chunkBRP5MGMEcjs.userProfileToFHIR;
15
15
  //# sourceMappingURL=converter.cjs.map
package/dist/converter.js CHANGED
@@ -3,8 +3,8 @@ import {
3
3
  labReportToFHIR,
4
4
  labResultToFHIRBundle,
5
5
  userProfileToFHIR
6
- } from "./chunk-NR4OTNC4.js";
7
- import "./chunk-ICSMWCVT.js";
6
+ } from "./chunk-EHJB2UOI.js";
7
+ import "./chunk-ZQXKRINW.js";
8
8
  import "./chunk-R4MUCMO3.js";
9
9
  export {
10
10
  labObservationToFHIR,
package/dist/importer.cjs CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkNOJRDKFOcjs = require('./chunk-NOJRDKFO.cjs');
8
- require('./chunk-EW5GLFSC.cjs');
7
+ var _chunkKPRIOLLXcjs = require('./chunk-KPRIOLLX.cjs');
8
+ require('./chunk-JCLBVPUP.cjs');
9
9
  require('./chunk-3ILBFLVQ.cjs');
10
10
 
11
11
 
@@ -13,5 +13,5 @@ require('./chunk-3ILBFLVQ.cjs');
13
13
 
14
14
 
15
15
 
16
- exports.MAX_FILE_SIZE = _chunkNOJRDKFOcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkNOJRDKFOcjs.MAX_OBSERVATIONS; exports.extractObservationsFromBundle = _chunkNOJRDKFOcjs.extractObservationsFromBundle; exports.mapFHIRObservationToInternal = _chunkNOJRDKFOcjs.mapFHIRObservationToInternal; exports.processImportBundle = _chunkNOJRDKFOcjs.processImportBundle;
16
+ exports.MAX_FILE_SIZE = _chunkKPRIOLLXcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkKPRIOLLXcjs.MAX_OBSERVATIONS; exports.extractObservationsFromBundle = _chunkKPRIOLLXcjs.extractObservationsFromBundle; exports.mapFHIRObservationToInternal = _chunkKPRIOLLXcjs.mapFHIRObservationToInternal; exports.processImportBundle = _chunkKPRIOLLXcjs.processImportBundle;
17
17
  //# sourceMappingURL=importer.cjs.map