@precisa-saude/fhir 0.31.1 → 0.31.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/biomarkers.cjs +2 -2
  2. package/dist/biomarkers.js +1 -1
  3. package/dist/{chunk-R4MUCMO3.js → chunk-3XIMPALK.js} +23 -6
  4. package/dist/chunk-3XIMPALK.js.map +1 -0
  5. package/dist/{chunk-4NSBIPLW.cjs → chunk-555WKD6J.cjs} +61 -37
  6. package/dist/chunk-555WKD6J.cjs.map +1 -0
  7. package/dist/{chunk-MJ254F5K.cjs → chunk-AZTZYOAV.cjs} +23 -6
  8. package/dist/chunk-AZTZYOAV.cjs.map +1 -0
  9. package/dist/{chunk-WRDWLWU2.js → chunk-BXHJ3JAC.js} +3 -3
  10. package/dist/{chunk-FSAQ3USO.js → chunk-L4KJ3QWU.js} +2 -2
  11. package/dist/{chunk-FSAQ3USO.js.map → chunk-L4KJ3QWU.js.map} +1 -1
  12. package/dist/{chunk-KL5SYSYZ.cjs → chunk-L7WLJNU5.cjs} +7 -7
  13. package/dist/{chunk-KL5SYSYZ.cjs.map → chunk-L7WLJNU5.cjs.map} +1 -1
  14. package/dist/{chunk-37LQWDN7.js → chunk-PLR54334.js} +60 -36
  15. package/dist/chunk-PLR54334.js.map +1 -0
  16. package/dist/{chunk-YX6B5YFJ.cjs → chunk-PS4LXHHO.cjs} +6 -6
  17. package/dist/{chunk-YX6B5YFJ.cjs.map → chunk-PS4LXHHO.cjs.map} +1 -1
  18. package/dist/{chunk-3GN33H37.cjs → chunk-R5S7URXW.cjs} +2 -2
  19. package/dist/{chunk-3GN33H37.cjs.map → chunk-R5S7URXW.cjs.map} +1 -1
  20. package/dist/{chunk-XX7KTBUX.js → chunk-TV4NPK5N.js} +2 -2
  21. package/dist/cli.js +80 -41
  22. package/dist/converter.cjs +4 -4
  23. package/dist/converter.js +3 -3
  24. package/dist/importer.cjs +3 -3
  25. package/dist/importer.js +2 -2
  26. package/dist/index.cjs +9 -9
  27. package/dist/index.js +5 -5
  28. package/dist/reference-ranges.cjs +3 -3
  29. package/dist/reference-ranges.js +2 -2
  30. package/dist/units.cjs +2 -2
  31. package/dist/units.js +1 -1
  32. package/package.json +1 -1
  33. package/dist/chunk-37LQWDN7.js.map +0 -1
  34. package/dist/chunk-4NSBIPLW.cjs.map +0 -1
  35. package/dist/chunk-MJ254F5K.cjs.map +0 -1
  36. package/dist/chunk-R4MUCMO3.js.map +0 -1
  37. /package/dist/{chunk-WRDWLWU2.js.map → chunk-BXHJ3JAC.js.map} +0 -0
  38. /package/dist/{chunk-XX7KTBUX.js.map → chunk-TV4NPK5N.js.map} +0 -0
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- var _chunk3GN33H37cjs = require('./chunk-3GN33H37.cjs');
33
+ var _chunkR5S7URXWcjs = require('./chunk-R5S7URXW.cjs');
34
34
 
35
35
 
36
36
 
@@ -63,5 +63,5 @@ var _chunk3GN33H37cjs = require('./chunk-3GN33H37.cjs');
63
63
 
64
64
 
65
65
 
66
- exports.BIOMARKER_DEFINITIONS = _chunk3GN33H37cjs.BIOMARKER_DEFINITIONS; exports.CAC_INDICATOR_CODES = _chunk3GN33H37cjs.CAC_INDICATOR_CODES; exports.DEXA_CATEGORIES = _chunk3GN33H37cjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunk3GN33H37cjs.DEXA_INDICATOR_CODES; exports.codeToLoinc = _chunk3GN33H37cjs.codeToLoinc; exports.filterVisibleBiomarkers = _chunk3GN33H37cjs.filterVisibleBiomarkers; exports.findCodeByName = _chunk3GN33H37cjs.findCodeByName; exports.generateCacFullReference = _chunk3GN33H37cjs.generateCacFullReference; exports.generateDexaFullReference = _chunk3GN33H37cjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunk3GN33H37cjs.generateFilteredLLMReference; exports.generateLLMReference = _chunk3GN33H37cjs.generateLLMReference; exports.getAllCodes = _chunk3GN33H37cjs.getAllCodes; exports.getAllDefinitions = _chunk3GN33H37cjs.getAllDefinitions; exports.getAllLoincCodes = _chunk3GN33H37cjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunk3GN33H37cjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunk3GN33H37cjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunk3GN33H37cjs.getBiomarkersForCategories; exports.getDefinitionByCode = _chunk3GN33H37cjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunk3GN33H37cjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunk3GN33H37cjs.getDefinitionsBySex; exports.getSexForCode = _chunk3GN33H37cjs.getSexForCode; exports.getVisibleDefinitions = _chunk3GN33H37cjs.getVisibleDefinitions; exports.isBiomarkerVisible = _chunk3GN33H37cjs.isBiomarkerVisible; exports.isCacDocument = _chunk3GN33H37cjs.isCacDocument; exports.isDexaDocument = _chunk3GN33H37cjs.isDexaDocument; exports.isValidCode = _chunk3GN33H37cjs.isValidCode; exports.isValidLoinc = _chunk3GN33H37cjs.isValidLoinc; exports.loincToCode = _chunk3GN33H37cjs.loincToCode; exports.normalizeCode = _chunk3GN33H37cjs.normalizeCode; exports.toBiomarkerTests = _chunk3GN33H37cjs.toBiomarkerTests; exports.validateLoincNameMatch = _chunk3GN33H37cjs.validateLoincNameMatch;
66
+ exports.BIOMARKER_DEFINITIONS = _chunkR5S7URXWcjs.BIOMARKER_DEFINITIONS; exports.CAC_INDICATOR_CODES = _chunkR5S7URXWcjs.CAC_INDICATOR_CODES; exports.DEXA_CATEGORIES = _chunkR5S7URXWcjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunkR5S7URXWcjs.DEXA_INDICATOR_CODES; exports.codeToLoinc = _chunkR5S7URXWcjs.codeToLoinc; exports.filterVisibleBiomarkers = _chunkR5S7URXWcjs.filterVisibleBiomarkers; exports.findCodeByName = _chunkR5S7URXWcjs.findCodeByName; exports.generateCacFullReference = _chunkR5S7URXWcjs.generateCacFullReference; exports.generateDexaFullReference = _chunkR5S7URXWcjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunkR5S7URXWcjs.generateFilteredLLMReference; exports.generateLLMReference = _chunkR5S7URXWcjs.generateLLMReference; exports.getAllCodes = _chunkR5S7URXWcjs.getAllCodes; exports.getAllDefinitions = _chunkR5S7URXWcjs.getAllDefinitions; exports.getAllLoincCodes = _chunkR5S7URXWcjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunkR5S7URXWcjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunkR5S7URXWcjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunkR5S7URXWcjs.getBiomarkersForCategories; exports.getDefinitionByCode = _chunkR5S7URXWcjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunkR5S7URXWcjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunkR5S7URXWcjs.getDefinitionsBySex; exports.getSexForCode = _chunkR5S7URXWcjs.getSexForCode; exports.getVisibleDefinitions = _chunkR5S7URXWcjs.getVisibleDefinitions; exports.isBiomarkerVisible = _chunkR5S7URXWcjs.isBiomarkerVisible; exports.isCacDocument = _chunkR5S7URXWcjs.isCacDocument; exports.isDexaDocument = _chunkR5S7URXWcjs.isDexaDocument; exports.isValidCode = _chunkR5S7URXWcjs.isValidCode; exports.isValidLoinc = _chunkR5S7URXWcjs.isValidLoinc; exports.loincToCode = _chunkR5S7URXWcjs.loincToCode; exports.normalizeCode = _chunkR5S7URXWcjs.normalizeCode; exports.toBiomarkerTests = _chunkR5S7URXWcjs.toBiomarkerTests; exports.validateLoincNameMatch = _chunkR5S7URXWcjs.validateLoincNameMatch;
67
67
  //# sourceMappingURL=biomarkers.cjs.map
@@ -30,7 +30,7 @@ import {
30
30
  normalizeCode,
31
31
  toBiomarkerTests,
32
32
  validateLoincNameMatch
33
- } from "./chunk-FSAQ3USO.js";
33
+ } from "./chunk-L4KJ3QWU.js";
34
34
  export {
35
35
  BIOMARKER_DEFINITIONS,
36
36
  CAC_INDICATOR_CODES,
@@ -447,17 +447,20 @@ var BIOMARKER_UNITS = {
447
447
  siUcum: "umol/L",
448
448
  siUnit: "\xB5mol/L"
449
449
  },
450
+ // Imunoglobulinas: canônica em mg/dL, a unidade da faixa de referência
451
+ // (Tietz) e a que laboratórios brasileiros e americanos imprimem. g/L fica
452
+ // como unidade SI; a conversão é exata (g/L × 100 = mg/dL, em FIXED_FACTORS).
450
453
  IgA: {
451
454
  aliases: { "g/l": "g/L", "mg/dl": "mg/dL" },
452
- canonicalUcum: "g/L",
453
- canonicalUnit: "g/L",
455
+ canonicalUcum: "mg/dL",
456
+ canonicalUnit: "mg/dL",
454
457
  siUcum: "g/L",
455
458
  siUnit: "g/L"
456
459
  },
457
460
  IgG: {
458
461
  aliases: { "g/l": "g/L", "mg/dl": "mg/dL" },
459
- canonicalUcum: "g/L",
460
- canonicalUnit: "g/L",
462
+ canonicalUcum: "mg/dL",
463
+ canonicalUnit: "mg/dL",
461
464
  siUcum: "g/L",
462
465
  siUnit: "g/L"
463
466
  },
@@ -772,8 +775,20 @@ var BIOMARKER_UNITS = {
772
775
  siUcum: "ng/mL",
773
776
  siUnit: "ng/mL"
774
777
  },
778
+ // Troponina T: canônica em ng/L (hs-cTnT). O ensaio convencional imprime em
779
+ // ng/mL, que é a mesma grandeza que µg/L; converte por fator exato
780
+ // (ng/mL × 1000 = ng/L, em FIXED_FACTORS). pg/mL é a mesma unidade que ng/L
781
+ // e entra como alias, como em VitaminB12.
775
782
  TroponinT: {
776
- aliases: { "ng/l": "ng/L" },
783
+ aliases: {
784
+ "mcg/l": "ng/mL",
785
+ "microg/l": "ng/mL",
786
+ "ng/l": "ng/L",
787
+ "ng/ml": "ng/mL",
788
+ "pg/ml": "ng/L",
789
+ "ug/l": "ng/mL",
790
+ "\xB5g/l": "ng/mL"
791
+ },
777
792
  canonicalUcum: "ng/L",
778
793
  canonicalUnit: "ng/L",
779
794
  siUcum: "ng/L",
@@ -857,6 +872,8 @@ var FIXED_FACTORS = {
857
872
  "mg/dL -> g/L": 0.01,
858
873
  "mmol/L -> mEq/L": 1,
859
874
  "ng/dL -> pg/mL": 10,
875
+ "ng/L -> ng/mL": 1e-3,
876
+ "ng/mL -> ng/L": 1e3,
860
877
  "ng/mL -> \xB5g/L": 1,
861
878
  "pg/mL -> ng/dL": 0.1,
862
879
  "\xB5g/L -> ng/mL": 1
@@ -914,4 +931,4 @@ export {
914
931
  getSIUnit,
915
932
  convertUnit
916
933
  };
917
- //# sourceMappingURL=chunk-R4MUCMO3.js.map
934
+ //# sourceMappingURL=chunk-3XIMPALK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/units.ts"],"sourcesContent":["/**\n * Unit Mappings and Biomarker Unit Definitions\n *\n * Maps units to UCUM format, provides default units for biomarkers,\n * and defines canonical/SI unit configurations with aliases.\n */\n\n// ─── UCUM Mappings ───────────────────────────────────────────────────────────\n\n/**\n * Map units to UCUM (Unified Code for Units of Measure)\n * See: https://ucum.org/\n */\nexport const UNIT_TO_UCUM: Record<string, string> = {\n // Dimensionless / special measurements\n '[pH]': '[pH]',\n '{ratio}': '{ratio}',\n '{specific gravity}': '{specific gravity}',\n\n '/µL': '/uL',\n // Percentage\n '%': '%',\n // Count units\n '10³/µL': '10*3/uL',\n '10⁶/µL': '10*6/uL',\n // Volume\n fL: 'fL',\n g: 'g',\n\n // Mass concentration\n 'g/dL': 'g/dL',\n L: 'L',\n // Molar concentration\n 'mEq/L': 'meq/L',\n\n mg: 'mg',\n 'mg/dL': 'mg/dL',\n mL: 'mL',\n 'mmol/L': 'mmol/L',\n 'mUI/mL': 'm[IU]/mL',\n\n ng: 'ng',\n\n 'ng/dL': 'ng/dL',\n 'ng/mL': 'ng/mL',\n 'nmol/L': 'nmol/L',\n // Mass\n pg: 'pg',\n\n 'pg/mL': 'pg/mL',\n pH: '[pH]',\n // Enzyme activity\n 'U/L': 'U/L',\n // Special units\n 'U/mL': 'U/mL',\n 'UI/L': '[IU]/L',\n\n 'UI/mL': '[IU]/mL',\n\n µg: 'ug',\n 'µg/dL': 'ug/dL',\n 'µmol/L': 'umol/L',\n 'µUI/mL': 'u[IU]/mL',\n};\n\n/**\n * Default units for biomarkers when source data doesn't provide one\n * These are the most common units used in Brazilian labs\n */\nexport const BIOMARKER_DEFAULT_UNIT: Record<string, string> = {\n // Proteins\n Albumin: 'g/dL',\n AlkalinePhosphatase: 'U/L',\n // Liver\n ALT: 'U/L',\n AST: 'U/L',\n\n Calcium: 'mg/dL',\n Chloride: 'mEq/L',\n // Lipids\n Cholesterol: 'mg/dL',\n // Kidney\n Creatinine: 'mg/dL',\n eAG: 'mg/dL',\n Ferritin: 'ng/mL',\n\n FolicAcid: 'ng/mL',\n GGT: 'U/L',\n // Glucose/Diabetes\n Glucose: 'mg/dL',\n\n HbA1c: '%',\n Hct: '%',\n\n HDL: 'mg/dL',\n // Hematology\n Hgb: 'g/dL',\n Insulin: 'µUI/mL',\n\n // Iron studies\n Iron: 'µg/dL',\n LDL: 'mg/dL',\n Magnesium: 'mg/dL',\n NonHDL_Cholesterol: 'mg/dL',\n\n // Urinalysis - dimensionless\n pH_Urine: '[pH]',\n Potassium: 'mEq/L',\n RDW: '%',\n // Electrolytes\n Sodium: 'mEq/L',\n SpecificGravity_Urine: '{specific gravity}',\n\n T3Free: 'pg/mL',\n T4Free: 'ng/dL',\n TIBC: 'µg/dL',\n TotalProtein: 'g/dL',\n\n TransferrinSaturation: '%',\n Triglycerides: 'mg/dL',\n // Thyroid\n TSH: 'µUI/mL',\n\n Urea: 'mg/dL',\n UricAcid: 'mg/dL',\n\n // Vitamins\n VitaminB12: 'pg/mL',\n VitaminD: 'ng/mL',\n VLDL: 'mg/dL',\n};\n\n/**\n * Convert unit to UCUM format\n */\nexport function unitToUCUM(unit: string): string {\n return UNIT_TO_UCUM[unit] || unit;\n}\n\n/**\n * Get default unit for a biomarker code\n * @param biomarkerCode - The biomarker code (e.g., \"Glucose\", \"HbA1c\")\n * @returns The default unit or empty string if not found\n */\nexport function getDefaultUnit(biomarkerCode: string): string {\n return BIOMARKER_DEFAULT_UNIT[biomarkerCode] || '';\n}\n\n// ─── Biomarker Unit Configurations ───────────────────────────────────────────\n\n/** Biomarker unit definitions — canonical units match reference-ranges.ts (BR conventional). */\n\nexport interface BiomarkerUnitConfig {\n aliases: Record<string, string>;\n canonicalUcum: string;\n canonicalUnit: string;\n molecularWeight?: number;\n siUcum: string;\n siUnit: string;\n}\n\nconst CBC_DIFF_ALIASES: Record<string, string> = {\n '/ul': '/uL',\n '/µl': '/uL',\n '10*3/ul': 'K/uL',\n 'cells/ul': '/uL',\n 'cells/µl': '/uL',\n 'k/ul': 'K/uL',\n 'x10e3/ul': 'K/uL',\n};\nconst CBC_DIFF: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: '10*3/uL',\n canonicalUnit: 'K/uL',\n siUcum: '10*3/uL',\n siUnit: 'K/uL',\n};\nconst DEXA_KG_ALIASES: Record<string, string> = {\n kg: 'kg',\n lb: '[lb_av]',\n lbs: '[lb_av]',\n};\nconst DEXA_KG: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: 'kg',\n canonicalUnit: 'kg',\n siUcum: 'kg',\n siUnit: 'kg',\n};\n\n/**\n * Urine sediment units — Brazilian automated analyzers (Sysmex UF-series)\n * report in /mL while manual microscopy uses /HPF. Canonical unit is /HPF.\n */\nconst URINE_SEDIMENT_ALIASES: Record<string, string> = {\n '/hpf': '/HPF',\n '/ml': '/mL',\n};\nconst URINE_SEDIMENT: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: '/[HPF]',\n canonicalUnit: '/HPF',\n siUcum: '/[HPF]',\n siUnit: '/HPF',\n};\n\n/** Percentage biomarkers — canonical and SI both use %. */\nconst PERCENTAGE_ALIASES: Record<string, string> = { '%': '%', pct: '%', percent: '%' };\nconst PERCENTAGE: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: '%',\n canonicalUnit: '%',\n siUcum: '%',\n siUnit: '%',\n};\n\n/** Enzyme activity — canonical and SI both use U/L. */\nconst ENZYME_ALIASES: Record<string, string> = { 'iu/l': 'U/L', 'u/l': 'U/L' };\nconst ENZYME: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: 'U/L',\n canonicalUnit: 'U/L',\n siUcum: 'U/L',\n siUnit: 'U/L',\n};\n\n/** Monovalent electrolytes — mEq/L ↔ mmol/L (1:1). */\nconst ELECTROLYTE_MONO_ALIASES: Record<string, string> = { 'meq/l': 'mEq/L', 'mmol/l': 'mmol/L' };\nconst ELECTROLYTE_MONO: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: 'meq/L',\n canonicalUnit: 'mEq/L',\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n};\n\n/** CAC scores — Agatston Units (AU), dimensionless. */\nconst CAC_ALIASES: Record<string, string> = { au: 'AU' };\nconst CAC: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: '{score}',\n canonicalUnit: 'AU',\n siUcum: '{score}',\n siUnit: 'AU',\n};\n\n/** nmol/L biomarkers — same unit for canonical and SI. */\nconst NMOL_L_ALIASES: Record<string, string> = { 'nmol/l': 'nmol/L' };\nconst NMOL_L: Omit<BiomarkerUnitConfig, 'aliases'> = {\n canonicalUcum: 'nmol/L',\n canonicalUnit: 'nmol/L',\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n};\n\nexport const BIOMARKER_UNITS: Record<string, BiomarkerUnitConfig> = {\n AFP: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n Albumin: {\n aliases: { 'g/dl': 'g/dL', 'g/l': 'g/L' },\n canonicalUcum: 'g/dL',\n canonicalUnit: 'g/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n AlkalinePhosphatase: { aliases: ENZYME_ALIASES, ...ENZYME },\n ALT: { aliases: ENZYME_ALIASES, ...ENZYME },\n AMH: {\n aliases: { 'ng/ml': 'ng/mL', 'pmol/l': 'pmol/L' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n molecularWeight: 12_500,\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n Amylase: { aliases: ENZYME_ALIASES, ...ENZYME },\n AntiThyroglobulin: {\n aliases: { 'iu/ml': 'IU/mL', 'ui/ml': 'IU/mL' },\n canonicalUcum: '[iU]/mL',\n canonicalUnit: 'IU/mL',\n siUcum: '[iU]/mL',\n siUnit: 'IU/mL',\n },\n AntiTPO: {\n aliases: { 'iu/ml': 'IU/mL', 'ui/ml': 'IU/mL' },\n canonicalUcum: '[iU]/mL',\n canonicalUnit: 'IU/mL',\n siUcum: '[iU]/mL',\n siUnit: 'IU/mL',\n },\n AoA1: {\n aliases: { 'mg/dl': 'mg/dL' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n siUcum: 'mg/dL',\n siUnit: 'mg/dL',\n },\n AorticValveCalcium: { aliases: CAC_ALIASES, ...CAC },\n ApoB: {\n aliases: { 'mg/dl': 'mg/dL' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n siUcum: 'mg/dL',\n siUnit: 'mg/dL',\n },\n AST: { aliases: ENZYME_ALIASES, ...ENZYME },\n Basophils: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Basophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n BilirubinDirect: {\n aliases: { 'mg/dl': 'mg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 584.66,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n BilirubinIndirect: {\n aliases: { 'mg/dl': 'mg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 584.66,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n BilirubinTotal: {\n aliases: { 'mg/dl': 'mg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 584.66,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n BMC: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n BMI: {\n aliases: { 'kg/m2': 'kg/m²', 'kg/m²': 'kg/m²' },\n canonicalUcum: 'kg/m2',\n canonicalUnit: 'kg/m²',\n siUcum: 'kg/m2',\n siUnit: 'kg/m²',\n },\n BNP: {\n aliases: { 'pg/ml': 'pg/mL' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n siUcum: 'pg/mL',\n siUnit: 'pg/mL',\n },\n CA125: {\n aliases: { 'u/ml': 'U/mL' },\n canonicalUcum: 'U/mL',\n canonicalUnit: 'U/mL',\n siUcum: 'U/mL',\n siUnit: 'U/mL',\n },\n CAC_LAD: { aliases: CAC_ALIASES, ...CAC },\n CAC_LCX: { aliases: CAC_ALIASES, ...CAC },\n CAC_LMA: { aliases: CAC_ALIASES, ...CAC },\n CAC_RCA: { aliases: CAC_ALIASES, ...CAC },\n Calcium: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 40.08,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n CEA: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n Chloride: { aliases: ELECTROLYTE_MONO_ALIASES, ...ELECTROLYTE_MONO },\n Cholesterol: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 386.65,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n CK: { aliases: ENZYME_ALIASES, ...ENZYME },\n CO2: { aliases: ELECTROLYTE_MONO_ALIASES, ...ELECTROLYTE_MONO },\n Cortisol: {\n aliases: { 'mcg/dl': 'µg/dL', 'nmol/l': 'nmol/L', 'ug/dl': 'µg/dL', 'µg/dl': 'µg/dL' },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'µg/dL',\n molecularWeight: 362.46,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n Creatinine: {\n aliases: { 'mg/dl': 'mg/dL', 'umol/l': 'µmol/L', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 113.12,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n CRP: {\n aliases: { 'mg/dl': 'mg/dL', 'mg/l': 'mg/L' },\n canonicalUcum: 'mg/L',\n canonicalUnit: 'mg/L',\n siUcum: 'mg/L',\n siUnit: 'mg/L',\n },\n DHEAS: {\n aliases: { 'mcg/dl': 'µg/dL', 'ug/dl': 'µg/dL', 'µg/dl': 'µg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'µg/dL',\n molecularWeight: 368.49,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n DHT: {\n aliases: { 'ng/dl': 'ng/dL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'ng/dL',\n canonicalUnit: 'ng/dL',\n molecularWeight: 290.44,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n eGFR: {\n aliases: {\n 'ml/min/1,73 m2': 'mL/min/1.73m²',\n 'ml/min/1.73m2': 'mL/min/1.73m²',\n 'ml/min/1.73m²': 'mL/min/1.73m²',\n },\n canonicalUcum: 'mL/min/{1.73_m2}',\n canonicalUnit: 'mL/min/1.73m²',\n siUcum: 'mL/min/{1.73_m2}',\n siUnit: 'mL/min/1.73m²',\n },\n Eosinophils: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Eosinophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n EPADPADHA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n ESR: {\n aliases: { 'mm/h': 'mm/h', 'mm/hr': 'mm/h' },\n canonicalUcum: 'mm/h',\n canonicalUnit: 'mm/h',\n siUcum: 'mm/h',\n siUnit: 'mm/h',\n },\n Estradiol: {\n aliases: { 'ng/dl': 'ng/dL', 'pg/ml': 'pg/mL' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n molecularWeight: 272.38,\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n FatFreeMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n FatMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n Ferritin: {\n aliases: {\n 'mcg/l': 'ng/mL',\n 'microg/l': 'ng/mL',\n 'ng/ml': 'ng/mL',\n 'µg/l': 'ng/mL',\n },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ug/L',\n siUnit: 'µg/L',\n },\n Folate: {\n aliases: { 'ng/ml': 'ng/mL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n molecularWeight: 441.4,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n FSH: {\n aliases: {\n 'iu/l': 'mIU/mL',\n 'miu/ml': 'mIU/mL',\n 'ui/l': 'mIU/mL',\n },\n canonicalUcum: 'mIU/mL',\n canonicalUnit: 'mIU/mL',\n siUcum: '[iU]/L',\n siUnit: 'IU/L',\n },\n GGT: { aliases: ENZYME_ALIASES, ...ENZYME },\n Globulin: {\n aliases: { 'g/dl': 'g/dL', 'g/l': 'g/L' },\n canonicalUcum: 'g/dL',\n canonicalUnit: 'g/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n Glucose: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 180.156,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n HbA1c: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Hct: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n HDL: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 386.65,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n HDL_Large: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n Hgb: {\n aliases: { 'g/dl': 'g/dL', 'g/l': 'g/L' },\n canonicalUcum: 'g/dL',\n canonicalUnit: 'g/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n Homocysteine: {\n aliases: { 'umol/l': 'µmol/L', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'umol/L',\n canonicalUnit: 'µmol/L',\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n // Imunoglobulinas: canônica em mg/dL, a unidade da faixa de referência\n // (Tietz) e a que laboratórios brasileiros e americanos imprimem. g/L fica\n // como unidade SI; a conversão é exata (g/L × 100 = mg/dL, em FIXED_FACTORS).\n IgA: {\n aliases: { 'g/l': 'g/L', 'mg/dl': 'mg/dL' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n IgG: {\n aliases: { 'g/l': 'g/L', 'mg/dl': 'mg/dL' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n INR: {\n aliases: { '{ratio}': '{ratio}' },\n canonicalUcum: '{ratio}',\n canonicalUnit: '{ratio}',\n siUcum: '{ratio}',\n siUnit: '{ratio}',\n },\n Insulin: {\n aliases: {\n 'mu/l': 'uIU/mL',\n 'uiu/ml': 'uIU/mL',\n 'µu/ml': 'uIU/mL',\n 'µui/ml': 'uIU/mL',\n },\n canonicalUcum: 'u[iU]/mL',\n canonicalUnit: 'uIU/mL',\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n Iron: {\n aliases: {\n 'mcg/dl': 'mcg/dL',\n 'microg/dl': 'mcg/dL',\n 'ug/dl': 'mcg/dL',\n 'µg/dl': 'mcg/dL',\n },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'mcg/dL',\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n LDL: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 386.65,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n LDL_Medium: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n LDL_ParticleNumber: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n LDL_Peak_Size: {\n aliases: { å: 'Ao', angstrom: 'Ao', ao: 'Ao', nm: 'nm' },\n canonicalUcum: 'Ao',\n canonicalUnit: 'Angstrom',\n siUcum: 'nm',\n siUnit: 'nm',\n },\n LDL_Small: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n Lead: {\n aliases: { 'mcg/dl': 'µg/dL', 'ug/dl': 'µg/dL', 'µg/dl': 'µg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'µg/dL',\n molecularWeight: 207.2,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n LeanMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n Leptin: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n Leukocytes_Urine: { aliases: URINE_SEDIMENT_ALIASES, ...URINE_SEDIMENT },\n LH: {\n aliases: {\n 'iu/l': 'mIU/mL',\n 'miu/ml': 'mIU/mL',\n 'ui/l': 'mIU/mL',\n },\n canonicalUcum: 'mIU/mL',\n canonicalUnit: 'mIU/mL',\n siUcum: '[iU]/L',\n siUnit: 'IU/L',\n },\n Lipase: { aliases: ENZYME_ALIASES, ...ENZYME },\n Lipoprotein_a: {\n aliases: { 'mg/dl': 'mg/dL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'nmol/L',\n canonicalUnit: 'nmol/L',\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n Lymphocytes: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Lymphocytes_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n MCH: {\n aliases: { pg: 'pg' },\n canonicalUcum: 'pg',\n canonicalUnit: 'pg',\n siUcum: 'pg',\n siUnit: 'pg',\n },\n MCHC: {\n aliases: { 'g/dl': 'g/dL', 'g/l': 'g/L' },\n canonicalUcum: 'g/dL',\n canonicalUnit: 'g/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n MCV: {\n aliases: { fl: 'fL' },\n canonicalUcum: 'fL',\n canonicalUnit: 'fL',\n siUcum: 'fL',\n siUnit: 'fL',\n },\n Mercury: {\n aliases: { 'mcg/l': 'µg/L', 'nmol/l': 'nmol/L', 'ug/l': 'µg/L', 'µg/l': 'µg/L' },\n canonicalUcum: 'ug/L',\n canonicalUnit: 'µg/L',\n molecularWeight: 200.59,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n Microalbumin_Urine: {\n aliases: { 'mg/l': 'mg/L' },\n canonicalUcum: 'mg/L',\n canonicalUnit: 'mg/L',\n siUcum: 'mg/L',\n siUnit: 'mg/L',\n },\n MMA: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n Monocytes: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Monocytes_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n MPV: {\n aliases: { fl: 'fL' },\n canonicalUcum: 'fL',\n canonicalUnit: 'fL',\n siUcum: 'fL',\n siUnit: 'fL',\n },\n Myeloperoxidase: {\n aliases: { 'pmol/l': 'pmol/L' },\n canonicalUcum: 'pmol/L',\n canonicalUnit: 'pmol/L',\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n Neutrophils: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Neutrophils_Abs: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n // MW 386.65 = colesterol livre. Frações lipoproteicas são heterogêneas,\n // mas a conversão mg/dL→mmol/L usa MW do colesterol por convenção clínica.\n NonHDL_Cholesterol: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 386.65,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n NTproBNP: {\n aliases: { 'pg/ml': 'pg/mL' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n siUcum: 'pg/mL',\n siUnit: 'pg/mL',\n },\n Omega3_DHA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega3_DPA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega3_EPA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega3_Total: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega6_AA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega6_LA: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Omega6_Total: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Platelets: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n Potassium: { aliases: ELECTROLYTE_MONO_ALIASES, ...ELECTROLYTE_MONO },\n Progesterone: {\n aliases: { 'ng/ml': 'ng/mL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n molecularWeight: 314.46,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n Prolactin: {\n aliases: {\n 'microg/l': 'ng/mL',\n 'ng/ml': 'ng/mL',\n 'µg/l': 'ng/mL',\n },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ug/L',\n siUnit: 'µg/L',\n },\n ProthrombinTime: {\n aliases: { s: 's', sec: 's' },\n canonicalUcum: 's',\n canonicalUnit: 's',\n siUcum: 's',\n siUnit: 's',\n },\n PSA: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n PSA_Free: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n RBC: {\n aliases: {\n '/ul': '/uL',\n '/µl': '/uL',\n '10*6/ul': 'M/uL',\n 'cells/ul': '/uL',\n 'm/ul': 'M/uL',\n 'milhões/mm3': 'M/uL',\n 'milhões/mm³': 'M/uL',\n 'x10e6/ul': 'M/uL',\n },\n canonicalUcum: '10*6/uL',\n canonicalUnit: 'M/uL',\n siUcum: '10*6/uL',\n siUnit: 'M/uL',\n },\n RBC_Urine: { aliases: URINE_SEDIMENT_ALIASES, ...URINE_SEDIMENT },\n RDW: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n Reticulocytes: { aliases: PERCENTAGE_ALIASES, ...PERCENTAGE },\n RheumatoidFactor: {\n aliases: { 'iu/ml': 'IU/mL', 'ui/ml': 'IU/mL' },\n canonicalUcum: '[iU]/mL',\n canonicalUnit: 'IU/mL',\n siUcum: '[iU]/mL',\n siUnit: 'IU/mL',\n },\n SHBG: { aliases: NMOL_L_ALIASES, ...NMOL_L },\n Sodium: { aliases: ELECTROLYTE_MONO_ALIASES, ...ELECTROLYTE_MONO },\n T3Free: {\n aliases: { 'pg/ml': 'pg/mL', 'pmol/l': 'pmol/L' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n molecularWeight: 650.98,\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n T4Free: {\n aliases: { 'ng/dl': 'ng/dL', 'pmol/l': 'pmol/L' },\n canonicalUcum: 'ng/dL',\n canonicalUnit: 'ng/dL',\n molecularWeight: 776.87,\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n T4Total: {\n aliases: { 'mcg/dl': 'µg/dL', 'nmol/l': 'nmol/L', 'ug/dl': 'µg/dL', 'µg/dl': 'µg/dL' },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'µg/dL',\n molecularWeight: 776.87,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n Testosterone: {\n aliases: { 'ng/dl': 'ng/dL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'ng/dL',\n canonicalUnit: 'ng/dL',\n molecularWeight: 288.42,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n TestosteroneFree: {\n aliases: { 'pg/ml': 'pg/mL', 'pmol/l': 'pmol/L' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n molecularWeight: 288.42,\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n TIBC: {\n aliases: {\n 'mcg/dl': 'mcg/dL',\n 'microg/dl': 'mcg/dL',\n 'ug/dl': 'mcg/dL',\n 'µg/dl': 'mcg/dL',\n },\n canonicalUcum: 'ug/dL',\n canonicalUnit: 'mcg/dL',\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n TotalMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n TotalProtein: {\n aliases: { 'g/dl': 'g/dL', 'g/l': 'g/L' },\n canonicalUcum: 'g/dL',\n canonicalUnit: 'g/dL',\n siUcum: 'g/L',\n siUnit: 'g/L',\n },\n Triglycerides: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 885.4,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n TroponinI: {\n aliases: { 'ng/ml': 'ng/mL' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n siUcum: 'ng/mL',\n siUnit: 'ng/mL',\n },\n // Troponina T: canônica em ng/L (hs-cTnT). O ensaio convencional imprime em\n // ng/mL, que é a mesma grandeza que µg/L; converte por fator exato\n // (ng/mL × 1000 = ng/L, em FIXED_FACTORS). pg/mL é a mesma unidade que ng/L\n // e entra como alias, como em VitaminB12.\n TroponinT: {\n aliases: {\n 'mcg/l': 'ng/mL',\n 'microg/l': 'ng/mL',\n 'ng/l': 'ng/L',\n 'ng/ml': 'ng/mL',\n 'pg/ml': 'ng/L',\n 'ug/l': 'ng/mL',\n 'µg/l': 'ng/mL',\n },\n canonicalUcum: 'ng/L',\n canonicalUnit: 'ng/L',\n siUcum: 'ng/L',\n siUnit: 'ng/L',\n },\n TSH: {\n aliases: {\n 'miu/l': 'uIU/mL',\n 'mui/l': 'uIU/mL',\n 'uiu/ml': 'uIU/mL',\n 'µui/ml': 'uIU/mL',\n },\n canonicalUcum: 'u[iU]/mL',\n canonicalUnit: 'uIU/mL',\n siUcum: 'mIU/L',\n siUnit: 'mIU/L',\n },\n Urea: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 60.06,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n UricAcid: {\n aliases: { 'mg/dl': 'mg/dL', 'µmol/l': 'µmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 168.11,\n siUcum: 'umol/L',\n siUnit: 'µmol/L',\n },\n VATMass: { aliases: DEXA_KG_ALIASES, ...DEXA_KG },\n VATVolume: {\n aliases: { cm3: 'cm3', 'cm³': 'cm3', in3: '[in_i]3', 'in³': '[in_i]3' },\n canonicalUcum: 'cm3',\n canonicalUnit: 'cm³',\n siUcum: 'cm3',\n siUnit: 'cm³',\n },\n VitaminB12: {\n aliases: { 'ng/l': 'pg/mL', 'pg/ml': 'pg/mL' },\n canonicalUcum: 'pg/mL',\n canonicalUnit: 'pg/mL',\n siUcum: 'pmol/L',\n siUnit: 'pmol/L',\n },\n VitaminD: {\n aliases: { 'ng/ml': 'ng/mL', 'nmol/l': 'nmol/L' },\n canonicalUcum: 'ng/mL',\n canonicalUnit: 'ng/mL',\n molecularWeight: 384.64,\n siUcum: 'nmol/L',\n siUnit: 'nmol/L',\n },\n VLDL: {\n aliases: { 'mg/dl': 'mg/dL', 'mmol/l': 'mmol/L' },\n canonicalUcum: 'mg/dL',\n canonicalUnit: 'mg/dL',\n molecularWeight: 386.65,\n siUcum: 'mmol/L',\n siUnit: 'mmol/L',\n },\n WBC: { aliases: CBC_DIFF_ALIASES, ...CBC_DIFF },\n};\n\n/**\n * Get the canonical unit for a biomarker code.\n */\nexport function getCanonicalUnit(code: string): string | null {\n return BIOMARKER_UNITS[code]?.canonicalUnit ?? null;\n}\n\n/**\n * Get the SI unit for a biomarker code.\n */\nexport function getSIUnit(code: string): string | null {\n return BIOMARKER_UNITS[code]?.siUnit ?? null;\n}\n\n// ─── Unit Conversion ────────────────────────────────────────────────────────────\n\n/**\n * Normalize a unit string to its canonical display form for a given biomarker.\n * Returns the input unchanged if no alias is found.\n */\nfunction normalizeUnit(unit: string, config: BiomarkerUnitConfig): string {\n return config.aliases[unit.toLowerCase()] ?? config.aliases[unit] ?? unit;\n}\n\n/**\n * Conversion factor tables for unit pairs that don't require molecular weight.\n * Key format: \"fromUnit -> toUnit\" (using canonical display forms).\n * Both directions must be listed explicitly — there is no auto-inversion.\n */\nconst FIXED_FACTORS: Record<string, number> = {\n 'g/dL -> g/L': 10,\n 'g/L -> g/dL': 0.1,\n 'g/L -> mg/dL': 100,\n 'mEq/L -> mmol/L': 1,\n 'mg/dL -> g/L': 0.01,\n 'mmol/L -> mEq/L': 1,\n 'ng/dL -> pg/mL': 10,\n 'ng/L -> ng/mL': 0.001,\n 'ng/mL -> ng/L': 1000,\n 'ng/mL -> µg/L': 1,\n 'pg/mL -> ng/dL': 0.1,\n 'µg/L -> ng/mL': 1,\n};\n\n/**\n * MW-based conversion definitions.\n * Each entry maps a (fromUnit, toUnit) pair to the formula:\n * result = value × numerator / (MW × denominator)\n *\n * Common patterns:\n * mg/dL → mmol/L: value × 10 / MW\n * mg/dL → µmol/L: value × 10000 / MW (or equivalently × 10 / MW × 1000)\n * ng/mL → nmol/L: value × 1000 / MW\n * pg/mL → pmol/L: value × 1000 / MW\n * ng/dL → nmol/L: value × 10 / MW\n */\n/**\n * MW conversion entries. Each direction is explicit to avoid fragile inversion logic.\n * Formula: result = value × scale / MW (when divideByMW is true)\n * result = value × MW / scale (when divideByMW is false)\n */\ninterface MWConversion {\n divideByMW: boolean;\n scale: number;\n}\n\nconst MW_CONVERSIONS: Record<string, MWConversion> = {\n 'mg/dL -> mmol/L': { divideByMW: true, scale: 10 },\n 'mg/dL -> µmol/L': { divideByMW: true, scale: 10_000 },\n 'mmol/L -> mg/dL': { divideByMW: false, scale: 10 },\n 'ng/dL -> nmol/L': { divideByMW: true, scale: 10 },\n 'ng/dL -> pmol/L': { divideByMW: true, scale: 10_000 },\n 'ng/mL -> nmol/L': { divideByMW: true, scale: 1000 },\n 'ng/mL -> pmol/L': { divideByMW: true, scale: 1_000_000 },\n 'nmol/L -> ng/dL': { divideByMW: false, scale: 10 },\n 'nmol/L -> ng/mL': { divideByMW: false, scale: 1000 },\n 'nmol/L -> µg/dL': { divideByMW: false, scale: 10_000 },\n 'nmol/L -> µg/L': { divideByMW: false, scale: 1000 },\n 'pg/mL -> pmol/L': { divideByMW: true, scale: 1000 },\n 'pmol/L -> ng/dL': { divideByMW: false, scale: 10_000 },\n 'pmol/L -> ng/mL': { divideByMW: false, scale: 1_000_000 },\n 'pmol/L -> pg/mL': { divideByMW: false, scale: 1000 },\n 'µg/dL -> nmol/L': { divideByMW: true, scale: 10_000 },\n 'µg/dL -> µmol/L': { divideByMW: true, scale: 10 },\n 'µg/L -> nmol/L': { divideByMW: true, scale: 1000 },\n 'µmol/L -> mg/dL': { divideByMW: false, scale: 10_000 },\n 'µmol/L -> µg/dL': { divideByMW: false, scale: 10 },\n};\n\nexport interface ConversionResult {\n unit: string;\n value: number;\n}\n\n/**\n * Convert a biomarker value between units.\n *\n * Supports:\n * - Fixed-factor conversions (e.g. ng/dL ↔ pg/mL, g/dL ↔ g/L)\n * - Molecular-weight-based conversions (e.g. mg/dL ↔ mmol/L, pg/mL ↔ pmol/L)\n *\n * @returns The converted value and target unit, or null if conversion is not possible.\n */\nexport function convertUnit(\n value: number,\n fromUnit: string,\n toUnit: string,\n biomarkerCode: string,\n): ConversionResult | null {\n const config = BIOMARKER_UNITS[biomarkerCode];\n if (!config) return null;\n\n const normFrom = normalizeUnit(fromUnit, config);\n const normTo = normalizeUnit(toUnit, config);\n\n if (normFrom === normTo) {\n return { unit: normTo, value };\n }\n\n const key = `${normFrom} -> ${normTo}`;\n\n const fixedFactor = FIXED_FACTORS[key];\n if (fixedFactor !== undefined) {\n return { unit: normTo, value: value * fixedFactor };\n }\n\n const mwConv = MW_CONVERSIONS[key];\n if (mwConv && config.molecularWeight) {\n const result = mwConv.divideByMW\n ? (value * mwConv.scale) / config.molecularWeight\n : (value * config.molecularWeight) / mwConv.scale;\n return { unit: normTo, value: result };\n }\n\n return null;\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkMJ254F5Kcjs = require('./chunk-MJ254F5K.cjs');
3
+ var _chunkAZTZYOAVcjs = require('./chunk-AZTZYOAV.cjs');
4
4
 
5
5
  // src/reference-ranges.ts
6
6
  var biomarkerRangeDefinitions = {
@@ -171,13 +171,15 @@ var biomarkerRangeDefinitions = {
171
171
  }
172
172
  ]
173
173
  },
174
- Basophils: {
175
- default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "%" },
176
- source: "pns-hemograma-2019"
177
- },
174
+ // `Basophils` (%) fica sem faixa de propósito e `Basophils_Abs` usa os limites da
175
+ // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.
178
176
  Basophils_Abs: {
179
- default: { max: 0.1, min: 0, optimalMax: 0.05, optimalMin: 0, unit: "K/uL" },
180
- source: "pns-hemograma-2019"
177
+ default: { max: 0.072, min: 0, unit: "K/uL" },
178
+ source: "pns-hemograma-2019",
179
+ variants: [
180
+ { ageMin: 18, range: { max: 0.062, min: 0, unit: "K/uL" }, sex: "M" },
181
+ { ageMin: 18, range: { max: 0.072, min: 0, unit: "K/uL" }, sex: "F" }
182
+ ]
181
183
  },
182
184
  Bicarbonate: {
183
185
  default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: "mEq/L" },
@@ -471,14 +473,15 @@ var biomarkerRangeDefinitions = {
471
473
  // alterado qualquer idoso com função preservada.
472
474
  source: "kdigo-ckd-2024"
473
475
  },
474
- Eosinophils: {
475
- default: { max: 5, min: 0, optimalMax: 4, optimalMin: 1, unit: "%" },
476
- direction: "lower-better",
477
- source: "pns-hemograma-2019"
478
- },
476
+ // `Eosinophils` (%) fica sem faixa de propósito e `Eosinophils_Abs` usa os limites da
477
+ // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.
479
478
  Eosinophils_Abs: {
480
- default: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: "K/uL" },
481
- source: "pns-hemograma-2019"
479
+ default: { max: 0.66, min: 0, unit: "K/uL" },
480
+ source: "pns-hemograma-2019",
481
+ variants: [
482
+ { ageMin: 18, range: { max: 0.66, min: 0, unit: "K/uL" }, sex: "M" },
483
+ { ageMin: 18, range: { max: 0.55, min: 0, unit: "K/uL" }, sex: "F" }
484
+ ]
482
485
  },
483
486
  Omega3_EPA: {
484
487
  default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1, unit: "%" },
@@ -930,13 +933,15 @@ var biomarkerRangeDefinitions = {
930
933
  direction: "lower-better",
931
934
  source: "sbc-lipids-2025"
932
935
  },
933
- Lymphocytes: {
934
- default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: "%" },
935
- source: "pns-hemograma-2019"
936
- },
936
+ // `Lymphocytes` (%) fica sem faixa de propósito e `Lymphocytes_Abs` usa os limites da
937
+ // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.
937
938
  Lymphocytes_Abs: {
938
- default: { max: 4, min: 1, optimalMax: 3, optimalMin: 1.5, unit: "K/uL" },
939
- source: "pns-hemograma-2019"
939
+ default: { max: 3.414, min: 0.72, unit: "K/uL" },
940
+ source: "pns-hemograma-2019",
941
+ variants: [
942
+ { ageMin: 18, range: { max: 3.37, min: 0.72, unit: "K/uL" }, sex: "M" },
943
+ { ageMin: 18, range: { max: 3.414, min: 0.796, unit: "K/uL" }, sex: "F" }
944
+ ]
940
945
  },
941
946
  Magnesium: {
942
947
  default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: "mg/dL" },
@@ -970,13 +975,15 @@ var biomarkerRangeDefinitions = {
970
975
  default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: "nmol/L" },
971
976
  source: "tietz-7ed-2015"
972
977
  },
973
- Monocytes: {
974
- default: { max: 8, min: 2, optimalMax: 7, optimalMin: 3, unit: "%" },
975
- source: "pns-hemograma-2019"
976
- },
978
+ // `Monocytes` (%) fica sem faixa de propósito e `Monocytes_Abs` usa os limites da
979
+ // Tabela 2 da PNS 2019. Ver o comentário em `Neutrophils_Abs`.
977
980
  Monocytes_Abs: {
978
- default: { max: 0.8, min: 0.2, optimalMax: 0.7, optimalMin: 0.3, unit: "K/uL" },
979
- source: "pns-hemograma-2019"
981
+ default: { max: 0.812, min: 0.011, unit: "K/uL" },
982
+ source: "pns-hemograma-2019",
983
+ variants: [
984
+ { ageMin: 18, range: { max: 0.812, min: 0.011, unit: "K/uL" }, sex: "M" },
985
+ { ageMin: 18, range: { max: 0.692, min: 0.022, unit: "K/uL" }, sex: "F" }
986
+ ]
980
987
  },
981
988
  MPV: {
982
989
  default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8, unit: "fL" },
@@ -987,15 +994,32 @@ var biomarkerRangeDefinitions = {
987
994
  default: { max: 470, min: 0, optimalMax: 322, optimalMin: 0, unit: "pmol/L" },
988
995
  source: "meuwese-mpo-2007"
989
996
  },
990
- // WBC Differential (%)
991
- Neutrophils: {
992
- default: { max: 70, min: 40, optimalMax: 65, optimalMin: 50, unit: "%" },
993
- source: "pns-hemograma-2019"
994
- },
995
- // WBC Differential (Absolute)
997
+ // Leucograma diferencial em percentual (`Neutrophils`, `Lymphocytes`,
998
+ // `Monocytes`, `Eosinophils`, `Basophils`) fica sem faixa de propósito.
999
+ // As faixas em % que existiam aqui citavam `pns-hemograma-2019`, mas o
1000
+ // artigo (ROSENFELD et al., Rev. Bras. Epidemiol., v. 22, supl. 2, 2019,
1001
+ // DOI 10.1590/1980-549720190003.supl.2) publica o diferencial só em
1002
+ // contagem absoluta por mm³, separado por sexo (Tabela 2: basófilos 0–62
1003
+ // em homens e 0–72 em mulheres, eosinófilos 0–660 e 0–550, e assim por
1004
+ // diante). Não há intervalo percentual em nenhuma tabela. Sem fonte, a
1005
+ // lacuna é melhor que um intervalo inventado: o consumidor usa a faixa
1006
+ // impressa no laudo, como já acontece com `Glucose`.
1007
+ //
1008
+ // Diferencial absoluto (`*_Abs`): limites inferior e superior da Tabela 2
1009
+ // do mesmo artigo, por sexo, exatamente como publicados. São limites da
1010
+ // distribuição amostral de adultos (18 anos ou mais), não cortes clínicos.
1011
+ // O artigo informa células/mm³ (= células/µL); aqui a unidade é K/uL, então
1012
+ // cada limite foi dividido por 1.000 sem arredondar (62/mm³ = 0,062 K/uL).
1013
+ // O artigo não publica faixa ótima, por isso não há optimalMin/optimalMax.
1014
+ // Quando o sexo não é informado, o default é a união das duas faixas
1015
+ // (menor mínimo e maior máximo entre homens e mulheres).
996
1016
  Neutrophils_Abs: {
997
- default: { max: 8, min: 1.5, optimalMax: 6, optimalMin: 2, unit: "K/uL" },
998
- source: "pns-hemograma-2019"
1017
+ default: { max: 6.474, min: 0.576, unit: "K/uL" },
1018
+ source: "pns-hemograma-2019",
1019
+ variants: [
1020
+ { ageMin: 18, range: { max: 5.971, min: 0.576, unit: "K/uL" }, sex: "M" },
1021
+ { ageMin: 18, range: { max: 6.474, min: 0.612, unit: "K/uL" }, sex: "F" }
1022
+ ]
999
1023
  },
1000
1024
  NonHDL_Cholesterol: {
1001
1025
  default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: "mg/dL" },
@@ -1166,7 +1190,7 @@ var biomarkerRangeDefinitions = {
1166
1190
  source: "schwedhelm-sdma-2011"
1167
1191
  },
1168
1192
  Selenium: {
1169
- default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: "mcg/L" },
1193
+ default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: "\xB5g/L" },
1170
1194
  source: "tietz-7ed-2015"
1171
1195
  },
1172
1196
  SHBG: {
@@ -1989,7 +2013,7 @@ function applyFallbackReferenceRanges(biomarkers) {
1989
2013
  }
1990
2014
  const fallback = getFallbackReferenceRange(biomarker.code);
1991
2015
  if (fallback) {
1992
- const canonicalUnit = _chunkMJ254F5Kcjs.getCanonicalUnit.call(void 0, biomarker.code);
2016
+ const canonicalUnit = _chunkAZTZYOAVcjs.getCanonicalUnit.call(void 0, biomarker.code);
1993
2017
  const unitsMatch = !biomarker.unit || biomarker.unit.toLowerCase() === fallback.unit.toLowerCase() || canonicalUnit && biomarker.unit.toLowerCase() === canonicalUnit.toLowerCase() || // Handle common unit variations
1994
2018
  biomarker.unit === "%" && fallback.unit === "%";
1995
2019
  if (unitsMatch) {
@@ -2014,4 +2038,4 @@ function applyFallbackReferenceRanges(biomarkers) {
2014
2038
 
2015
2039
 
2016
2040
  exports.biomarkerRangeDefinitions = biomarkerRangeDefinitions; exports.defaultReferenceRanges = defaultReferenceRanges; exports.getReferenceRange = getReferenceRange; exports.getRangeDirection = getRangeDirection; exports.getFallbackReferenceRange = getFallbackReferenceRange; exports.applyFallbackReferenceRanges = applyFallbackReferenceRanges;
2017
- //# sourceMappingURL=chunk-4NSBIPLW.cjs.map
2041
+ //# sourceMappingURL=chunk-555WKD6J.cjs.map