@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.
- package/dist/biomarkers.cjs +2 -2
- package/dist/biomarkers.js +1 -1
- package/dist/{chunk-R4MUCMO3.js → chunk-3XIMPALK.js} +23 -6
- package/dist/chunk-3XIMPALK.js.map +1 -0
- package/dist/{chunk-4NSBIPLW.cjs → chunk-555WKD6J.cjs} +61 -37
- package/dist/chunk-555WKD6J.cjs.map +1 -0
- package/dist/{chunk-MJ254F5K.cjs → chunk-AZTZYOAV.cjs} +23 -6
- package/dist/chunk-AZTZYOAV.cjs.map +1 -0
- package/dist/{chunk-WRDWLWU2.js → chunk-BXHJ3JAC.js} +3 -3
- package/dist/{chunk-FSAQ3USO.js → chunk-L4KJ3QWU.js} +2 -2
- package/dist/{chunk-FSAQ3USO.js.map → chunk-L4KJ3QWU.js.map} +1 -1
- package/dist/{chunk-KL5SYSYZ.cjs → chunk-L7WLJNU5.cjs} +7 -7
- package/dist/{chunk-KL5SYSYZ.cjs.map → chunk-L7WLJNU5.cjs.map} +1 -1
- package/dist/{chunk-37LQWDN7.js → chunk-PLR54334.js} +60 -36
- package/dist/chunk-PLR54334.js.map +1 -0
- package/dist/{chunk-YX6B5YFJ.cjs → chunk-PS4LXHHO.cjs} +6 -6
- package/dist/{chunk-YX6B5YFJ.cjs.map → chunk-PS4LXHHO.cjs.map} +1 -1
- package/dist/{chunk-3GN33H37.cjs → chunk-R5S7URXW.cjs} +2 -2
- package/dist/{chunk-3GN33H37.cjs.map → chunk-R5S7URXW.cjs.map} +1 -1
- package/dist/{chunk-XX7KTBUX.js → chunk-TV4NPK5N.js} +2 -2
- package/dist/cli.js +80 -41
- package/dist/converter.cjs +4 -4
- package/dist/converter.js +3 -3
- package/dist/importer.cjs +3 -3
- package/dist/importer.js +2 -2
- package/dist/index.cjs +9 -9
- package/dist/index.js +5 -5
- package/dist/reference-ranges.cjs +3 -3
- package/dist/reference-ranges.js +2 -2
- package/dist/units.cjs +2 -2
- package/dist/units.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-37LQWDN7.js.map +0 -1
- package/dist/chunk-4NSBIPLW.cjs.map +0 -1
- package/dist/chunk-MJ254F5K.cjs.map +0 -1
- package/dist/chunk-R4MUCMO3.js.map +0 -1
- /package/dist/{chunk-WRDWLWU2.js.map → chunk-BXHJ3JAC.js.map} +0 -0
- /package/dist/{chunk-XX7KTBUX.js.map → chunk-TV4NPK5N.js.map} +0 -0
package/dist/biomarkers.cjs
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
var
|
|
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 =
|
|
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
|
package/dist/biomarkers.js
CHANGED
|
@@ -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: "
|
|
453
|
-
canonicalUnit: "
|
|
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: "
|
|
460
|
-
canonicalUnit: "
|
|
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: {
|
|
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-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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
|
-
//
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
//
|
|
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:
|
|
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: "
|
|
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 =
|
|
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-
|
|
2041
|
+
//# sourceMappingURL=chunk-555WKD6J.cjs.map
|