@precisa-saude/fhir 0.37.2 → 0.38.0
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-DE7NHXIR.cjs → chunk-3M3VH7WG.cjs} +3 -3
- package/dist/{chunk-DE7NHXIR.cjs.map → chunk-3M3VH7WG.cjs.map} +1 -1
- package/dist/{chunk-RWUFK5AN.cjs → chunk-4WY5YFWA.cjs} +14 -3
- package/dist/chunk-4WY5YFWA.cjs.map +1 -0
- package/dist/{chunk-VOBVUACD.js → chunk-5HDQCJWQ.js} +3 -3
- package/dist/{chunk-3YB2ORY7.cjs → chunk-6G5NUPZI.cjs} +23 -9
- package/dist/chunk-6G5NUPZI.cjs.map +1 -0
- package/dist/{chunk-CVMOQDM2.js → chunk-DE7ZCFMA.js} +2 -2
- package/dist/{chunk-O7SK2YUU.js → chunk-EVWEFMOY.js} +2 -2
- package/dist/{chunk-LSC7NHFE.cjs → chunk-FETBCXN6.cjs} +3 -3
- package/dist/{chunk-LSC7NHFE.cjs.map → chunk-FETBCXN6.cjs.map} +1 -1
- package/dist/{chunk-CZLX33DZ.js → chunk-I6SPJDZ2.js} +13 -2
- package/dist/chunk-I6SPJDZ2.js.map +1 -0
- package/dist/{chunk-JMWPX43H.js → chunk-I7RF7YWM.js} +18 -4
- package/dist/chunk-I7RF7YWM.js.map +1 -0
- package/dist/{chunk-YCJUGK6D.js → chunk-JFJY7ZR6.js} +27 -2
- package/dist/chunk-JFJY7ZR6.js.map +1 -0
- package/dist/{chunk-AJUDODBT.cjs → chunk-L6I4OYGS.cjs} +10 -10
- package/dist/{chunk-AJUDODBT.cjs.map → chunk-L6I4OYGS.cjs.map} +1 -1
- package/dist/{chunk-BDS6CM7F.cjs → chunk-NIYSBB33.cjs} +27 -2
- package/dist/chunk-NIYSBB33.cjs.map +1 -0
- package/dist/cli.js +64 -2
- package/dist/converter.cjs +5 -5
- package/dist/converter.js +4 -4
- package/dist/importer.cjs +5 -5
- package/dist/importer.js +4 -4
- package/dist/index.cjs +28 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/reference-ranges.cjs +4 -4
- package/dist/reference-ranges.js +3 -3
- package/dist/units.cjs +3 -3
- package/dist/units.js +2 -2
- package/dist/validators.cjs +4 -4
- package/dist/validators.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-3YB2ORY7.cjs.map +0 -1
- package/dist/chunk-BDS6CM7F.cjs.map +0 -1
- package/dist/chunk-CZLX33DZ.js.map +0 -1
- package/dist/chunk-JMWPX43H.js.map +0 -1
- package/dist/chunk-RWUFK5AN.cjs.map +0 -1
- package/dist/chunk-YCJUGK6D.js.map +0 -1
- /package/dist/{chunk-VOBVUACD.js.map → chunk-5HDQCJWQ.js.map} +0 -0
- /package/dist/{chunk-CVMOQDM2.js.map → chunk-DE7ZCFMA.js.map} +0 -0
- /package/dist/{chunk-O7SK2YUU.js.map → chunk-EVWEFMOY.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
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\nimport { BIOMARKER_DEFINITIONS } from './biomarkers';\n\n// ─── UCUM Mappings ───────────────────────────────────────────────────────────\n\n/**\n * Grafia impressa → código UCUM (Unified Code for Units of Measure).\n *\n * É a segunda fonte de `resolveUcum`, atrás de `BIOMARKER_UNITS`, e a única\n * para unidade que nenhum biomarcador configura. Cobre toda unidade declarada\n * em `biomarkers.ts`: o teste `loinc-axes.test.ts` confere isso, porque uma\n * unidade sem entrada aqui saía no FHIR como `code` sob o system do UCUM sem\n * ser UCUM (`uIU/mL`, `K/uL`, `razão`).\n *\n * `[IU]` e `[iU]` são o mesmo átomo no UCUM, nas grafias sensível e\n * insensível a caixa; esta tabela usa `[IU]` e `BIOMARKER_UNITS` usa `[iU]`.\n *\n * @see https://ucum.org/\n */\nexport const UNIT_TO_UCUM: Record<string, string> = {\n // Dimensionless / special measurements\n '[pH]': '[pH]',\n '{index}': '{index}',\n '{ratio}': '{ratio}',\n '{score}': '{score}',\n '{specific gravity}': '{specific gravity}',\n\n '/HPF': '/[HPF]',\n '/LPF': '/[LPF]',\n '/µL': '/uL',\n // Percentage\n '%': '%',\n // Count units\n '10³/µL': '10*3/uL',\n '10⁶/µL': '10*6/uL',\n Angstrom: 'Ao',\n AU: '{score}',\n cm: 'cm',\n 'cm³': 'cm3',\n deg: 'deg',\n // Volume\n fL: 'fL',\n g: 'g',\n 'g/cm²': 'g/cm2',\n\n // Mass concentration\n 'g/dL': 'g/dL',\n 'g/L': 'g/L',\n 'IU/L': '[IU]/L',\n 'IU/mL': '[IU]/mL',\n 'K/uL': '10*3/uL',\n 'kcal/d': 'kcal/d',\n kg: 'kg',\n 'kg/m2': 'kg/m2',\n 'kg/m²': 'kg/m2',\n 'kU/L': 'k[IU]/L',\n L: 'L',\n 'M/uL': '10*6/uL',\n 'mcg/dL': 'ug/dL',\n 'mcg/L': 'ug/L',\n 'mcg/mL': 'ug/mL',\n // Molar concentration\n 'mEq/L': 'meq/L',\n\n mg: 'mg',\n 'mg/dL': 'mg/dL',\n 'mg/g': 'mg/g',\n 'mg/L': 'mg/L',\n 'mIU/L': 'm[IU]/L',\n 'mIU/mL': 'm[IU]/mL',\n mL: 'mL',\n 'mL/min/1.73m²': 'mL/min/{1.73_m2}',\n mm: 'mm',\n 'mm/h': 'mm/h',\n 'mm/hr': 'mm/h',\n 'mmol/L': 'mmol/L',\n 'mUI/L': 'm[IU]/L',\n 'mUI/mL': 'm[IU]/mL',\n\n ng: 'ng',\n\n 'ng/dL': 'ng/dL',\n 'ng/L': 'ng/L',\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 'pmol/L': 'pmol/L',\n razão: '{ratio}',\n score: '{score}',\n segundos: 's',\n // Enzyme activity\n U: 'U',\n 'U/L': 'U/L',\n // Special units\n 'U/mL': 'U/mL',\n 'ug/dL': 'ug/dL',\n 'ug/L': 'ug/L',\n 'UI/L': '[IU]/L',\n\n 'UI/mL': '[IU]/mL',\n 'uIU/mL': 'u[IU]/mL',\n 'umol/L': 'umol/L',\n\n µg: 'ug',\n 'µg/dL': 'ug/dL',\n 'µg/L': 'ug/L',\n 'µmol/L': 'umol/L',\n 'µUI/mL': 'u[IU]/mL',\n índice: '{index}',\n};\n\n/**\n * Unidades adimensionais de urina, que a definição não declara porque o laudo\n * não as imprime: a densidade sai como `1.020` e o pH como `6.0`, sem unidade.\n * Quando o laudo não traz unidade, o FHIR ainda precisa de uma, e estas são\n * as do UCUM.\n */\nconst DIMENSIONLESS_DEFAULTS: Record<string, string> = {\n pH_Urine: '[pH]',\n SpecificGravity_Urine: '{specific gravity}',\n};\n\n/**\n * Unidade padrão de cada biomarcador, usada quando o laudo não imprime uma.\n *\n * Derivada de `unit` em `biomarkers.ts`, que é a fonte única. Até out/2026\n * era uma segunda tabela escrita à mão, e as duas divergiam: TSH era\n * `µUI/mL` aqui e `uIU/mL` lá, ferro era `µg/dL` aqui e `mcg/dL` lá. Duas\n * fontes para a mesma unidade é o que faz o `fhir-bio units` e o `fhir-bio\n * range` responderem coisas diferentes para o mesmo código.\n */\nexport const BIOMARKER_DEFAULT_UNIT: Record<string, string> = {\n ...Object.fromEntries(\n BIOMARKER_DEFINITIONS.filter((b) => b.unit).map((b) => [b.code, b.unit as string]),\n ),\n ...DIMENSIONLESS_DEFAULTS,\n};\n\n/**\n * Convert unit to UCUM format\n *\n * Devolve a entrada intacta quando não conhece a unidade. Para montar um\n * `Quantity` FHIR use `resolveUcum`, que diz \"não sei\" em vez de devolver\n * uma grafia qualquer como se fosse UCUM.\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// ─── UCUM syntax ─────────────────────────────────────────────────────────────\n\n/**\n * Átomos do UCUM que aparecem em laudo clínico, mais as bases do SI.\n *\n * Não é a tabela inteira do UCUM, que tem centenas de átomos. É a lista que\n * basta para dizer que `uIU/mL` não é UCUM (`IU` não é átomo; `[IU]` é) e que\n * `10*3/uL` é. Átomo fora desta lista cai em \"não é UCUM\", e o jeito certo de\n * aceitá-lo é acrescentá-lo aqui, com o laudo que o imprimiu.\n */\nconst UCUM_ATOMS = new Set([\n 'm',\n 'g',\n 's',\n 'L',\n 'l',\n 'mol',\n 'eq',\n 'U',\n 'cal',\n 'h',\n 'd',\n 'min',\n 'wk',\n 'mo',\n 'a',\n 'Ao',\n 'deg',\n 'K',\n 'A',\n 'N',\n 'Pa',\n 'J',\n 'W',\n 'Hz',\n 'V',\n 'C',\n 'osm',\n 't',\n 'u',\n 'bar',\n 'atm',\n 'rad',\n 'sr',\n 'cd',\n 'Bq',\n 'Gy',\n 'Sv',\n 'lm',\n 'lx',\n 'Cel',\n 'B',\n 'Np',\n]);\n\n/** Prefixos do UCUM, do yotta ao yocto. `da` (deca) é o único com duas letras. */\nconst UCUM_PREFIXES = new Set([\n 'Y',\n 'Z',\n 'E',\n 'P',\n 'T',\n 'G',\n 'M',\n 'k',\n 'h',\n 'da',\n 'd',\n 'c',\n 'm',\n 'u',\n 'n',\n 'p',\n 'f',\n 'a',\n 'z',\n 'y',\n]);\n\n/**\n * Um átomo com prefixo opcional: `g`, `mg`, `[IU]`, `u[IU]`, `10*3`, `%`.\n *\n * O prefixo só vale na frente de átomo métrico, e o UCUM marca essa\n * propriedade átomo a átomo. Aqui a regra é mais frouxa, prefixo na frente de\n * qualquer átomo, porque o que se quer pegar é grafia que não é UCUM de jeito\n * nenhum, e não o caso de borda `kdeg`.\n */\nfunction isUcumAtom(token: string): boolean {\n if (token === '%' || /^10\\*-?\\d+$/.test(token) || /^\\d+$/.test(token)) return true;\n // Átomo entre colchetes: `[IU]`, `[HPF]`, `[lb_av]`, `[pH]`. Com prefixo:\n // `u[IU]`, `m[IU]`, `k[IU]`.\n const bracket = /^([A-Za-z]{0,2})\\[[^[\\]{}\\s]+\\]$/.exec(token);\n if (bracket) return bracket[1] === '' || UCUM_PREFIXES.has(bracket[1] as string);\n if (UCUM_ATOMS.has(token)) return true;\n for (const prefix of UCUM_PREFIXES) {\n if (token.startsWith(prefix) && UCUM_ATOMS.has(token.slice(prefix.length))) return true;\n }\n return false;\n}\n\n/**\n * Um componente: átomo com expoente opcional e anotação opcional, ou anotação\n * sozinha. `m2`, `cm3`, `[in_i]3`, `mL{total}`, `{ratio}`.\n *\n * A anotação aceita qualquer caractere que não seja chave, que é o que a\n * especificação diz dela: texto sem interpretação. `{specific gravity}` passa\n * por isso, mesmo com espaço.\n */\nfunction isUcumComponent(token: string): boolean {\n const m = /^(.*?)(\\{[^{}]*\\})?$/.exec(token);\n if (!m) return false;\n const [, body, annotation] = m;\n if (!body) return annotation !== undefined;\n const exp = /^(.+?)([+-]?\\d+)?$/.exec(body as string);\n if (!exp) return false;\n const [, atom, exponent] = exp;\n // `10*3` termina em dígito e não tem expoente; o regex ganancioso já\n // separou errado, então tenta o token inteiro como átomo primeiro.\n if (isUcumAtom(body as string)) return true;\n if (exponent === undefined) return false;\n return isUcumAtom(atom as string);\n}\n\n/**\n * Diz se a string é sintaticamente UCUM: componentes ligados por `.` e `/`,\n * com `/` inicial permitido (`/[HPF]`).\n *\n * É sintaxe, não semântica: `K/uL` passa porque `K` é kelvin, e nada aqui sabe\n * que o laudo quis dizer milhares. É o que `resolveUcum` e `BIOMARKER_UNITS`\n * resolvem antes de a string chegar aqui. O que este check pega é o resto:\n * grafia em português, `µ` fora do ASCII, `IU` sem colchetes, `hr`.\n *\n * O `.` e o `/` só separam fora de chaves e colchetes: `mL/min/{1.73_m2}` tem\n * um ponto dentro da anotação, e `[in_i]` poderia ter um operador dentro do\n * átomo.\n */\nexport function isUcumCode(code: string): boolean {\n if (!code || /[^\\x21-\\x7E ]/.test(code)) return false;\n const terms: string[] = [];\n let current = '';\n let braces = 0;\n let inBracket = false;\n for (const ch of code) {\n if (ch === '{') braces++;\n else if (ch === '}') {\n if (braces === 0) return false;\n braces--;\n } else if (ch === '[') inBracket = true;\n else if (ch === ']') inBracket = false;\n if ((ch === '.' || ch === '/') && braces === 0 && !inBracket) {\n terms.push(current, ch);\n current = '';\n continue;\n }\n current += ch;\n }\n if (braces !== 0 || inBracket) return false;\n terms.push(current);\n // `/[HPF]` é `1/[HPF]` com o numerador implícito.\n if (terms[0] === '' && terms[1] === '/') terms[0] = '1';\n\n let expectOperand = true;\n for (const t of terms) {\n if (expectOperand) {\n if (!isUcumComponent(t)) return false;\n } else if (t !== '.' && t !== '/') {\n return false;\n }\n expectOperand = !expectOperand;\n }\n return !expectOperand;\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: 'm[iU]/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: 'm[iU]/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: 'm[iU]/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\n/**\n * Código UCUM para a unidade que o laudo imprimiu, ou `undefined`.\n *\n * Ordem: a configuração do biomarcador em `BIOMARKER_UNITS` (que já sabe que\n * `K/uL` de leucócito é `10*3/uL`), depois a tabela `UNIT_TO_UCUM`, e por\n * último a própria string, se for UCUM sintaticamente válido. Fora disso é\n * `undefined`, e o conversor deixa o `Quantity` só com `unit`: unidade que\n * não se sabe traduzir não sai sob `http://unitsofmeasure.org`.\n *\n * Até out/2026 o conversor só consultava a tabela e devolvia a entrada\n * intacta quando não achava, então `uIU/mL`, `K/uL` e `razão` saíam como\n * código UCUM, e os 85 `canonicalUcum` de `BIOMARKER_UNITS` não eram lidos\n * por ninguém fora de `units.ts`.\n */\nexport function resolveUcum(unit: string, biomarkerCode?: string): string | undefined {\n if (!unit) return undefined;\n const config = biomarkerCode ? BIOMARKER_UNITS[biomarkerCode] : undefined;\n if (config) {\n const normalized = normalizeUnit(unit, config);\n if (normalized === config.canonicalUnit) return config.canonicalUcum;\n if (normalized === config.siUnit) return config.siUcum;\n }\n const mapped = UNIT_TO_UCUM[unit];\n if (mapped) return mapped;\n return isUcumCode(unit) ? unit : undefined;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bundle-urls.ts","../src/loinc-snapshot.generated.ts","../src/loinc-axes.ts","../src/converter.ts"],"sourcesContent":["/**\n * Endereço das entradas de um Bundle.\n *\n * O `fullUrl` identifica a entrada, e é contra ele que o validador resolve as\n * referências entre os recursos. Um Bundle com `subject.reference` valendo\n * `Patient/abc` só resolve se alguma entrada tiver `fullUrl` terminando em\n * `/Patient/abc`: a referência relativa é lida contra a base do `fullUrl` da\n * entrada, que é como os exemplos da própria HL7 montam Bundle de coleção.\n *\n * Antes o `fullUrl` era `urn:uuid:observation-<laudo>-<código>`, que erra duas\n * vezes. `urn:uuid:` exige a sintaxe de UUID e aquilo não era um UUID, e num\n * Bundle de entradas `urn:uuid:` a referência precisa repetir a URN inteira,\n * então nenhuma das relativas resolvia. Um laudo de 22 marcadores saía com 24\n * erros de URN e 22 referências perdidas.\n */\n/**\n * Recurso que já tem id, e por isso pode ser endereçado numa entrada.\n *\n * No FHIR o `id` é opcional, porque um recurso pode viajar sem identidade\n * própria. Numa entrada de Bundle ele não pode: sem id não há `fullUrl`, e sem\n * `fullUrl` nenhuma referência chega ao recurso. Os conversores daqui sempre\n * atribuem um, e o tipo passa a dizer isso em vez de deixar `undefined` chegar\n * até a montagem da URL.\n */\nexport type Addressable<T> = T & { id: string };\n\n/**\n * Base dos `fullUrl`.\n *\n * Não precisa responder a uma requisição: no FHIR o `fullUrl` é identidade, não\n * endereço de download. Fica sob um domínio nosso para não colidir com a\n * identidade de recurso de outra instituição, que é o risco real de usar\n * `example.org` em dado que sai da máquina.\n */\nexport const BUNDLE_BASE_URL = 'https://precisa-saude.com.br/fhir';\n\n/**\n * Monta o `fullUrl` a partir do próprio recurso.\n *\n * Recebe o recurso em vez do tipo e do id soltos de propósito. O defeito que\n * isto substitui nasceu de montar os dois lados em separado: o `fullUrl` dizia\n * `observation-demo-Hgb` enquanto o recurso tinha id `demo-Hgb`, e ninguém\n * percebeu porque nada obrigava os dois a concordarem.\n *\n * O parâmetro pede o mínimo que a URL consome, e não a união de recursos que\n * este pacote converte. Um Bundle pode carregar qualquer recurso do R4, e quem\n * acrescenta uma entrada de um tipo que não está nessa união (um `Specimen`,\n * por exemplo) precisa do mesmo endereço, senão monta o dele e as duas formas\n * divergem outra vez.\n */\nexport const entryFullUrl = (resource: Addressable<{ resourceType: string }>): string =>\n `${BUNDLE_BASE_URL}/${resource.resourceType}/${resource.id}`;\n","// Gerado por scripts/generate-loinc-snapshot-module.ts a partir de\n// scripts/loinc-snapshot.json. Não editar à mão: rode o gerador.\nimport type { LoincSnapshot } from './loinc-axes';\n\nexport const LOINC_SNAPSHOT: LoincSnapshot = {\n _checkedAt: '2026-10-06',\n _loincVersion: '2.83',\n _notice:\n 'This material contains content from LOINC (http://loinc.org). LOINC is copyright © Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc.',\n codes: {\n '101683-1': {\n component: 'Body water',\n display: 'Body water mass',\n method: null,\n property: 'Mass',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '101684-9': {\n component: 'Body water',\n display: 'Percentage of body water',\n method: 'Measured',\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '10331-7': {\n component: 'Rh',\n display: 'Rh [Type] in Blood',\n method: null,\n property: 'Type',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '10334-1': {\n component: 'Cancer Ag 125',\n display: 'Cancer Ag 125 [Units/volume] in Serum or Plasma',\n groups: {\n 'LG108-7': 'Cancer Ag 125|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '10501-5': {\n component: 'Lutropin',\n display: 'Lutropin [Units/volume] in Serum or Plasma',\n groups: {\n 'LG151-7': 'Lutropin|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '107112-5': {\n component: 'Calf circumference',\n display: 'Calf circumference',\n method: null,\n property: 'Len',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '107160-4': {\n component: 'Phase angle Xc/R',\n display: 'Phase angle Xc/R [Ratio] Bioelectrical impedance analysis',\n method: 'BIA',\n property: 'Ratio',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '10835-7': {\n component: 'Lipoprotein (little a)',\n display: 'Lipoprotein a [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG45404-7': 'Lipoprotein (little a)|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '10886-0': {\n component: 'Prostate specific Ag.free',\n display: 'Prostate Specific Ag Free [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG46508-4': 'Prostate specific Ag.free|Pt|Ser/Plas',\n 'LG474-3': 'Prostate specific Ag.free|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '11277-1': {\n component: 'Epithelial cells.squamous',\n display:\n 'Epithelial cells.squamous [#/area] in Urine sediment by Microscopy high power field',\n groups: {\n 'LG40856-3': 'Epithelial cells.squamous|Urine/Urine sed',\n },\n method: 'Microscopy.light.HPF',\n property: 'Naric',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '11572-5': {\n component: 'Rheumatoid factor',\n display: 'Rheumatoid factor [Units/volume] in Serum or Plasma',\n groups: {\n 'LG357-0': 'Rheumatoid factor|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '12841-3': {\n component: 'Prostate specific Ag.free/Prostate specific Ag.total',\n display: 'Prostate Specific Ag Free/Prostate specific Ag.total in Serum or Plasma',\n groups: {\n 'LG2277-4': 'Prostate specific Ag.free/Prostate specific Ag.total|MFr|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '13457-7': {\n component: 'Cholesterol.in LDL',\n display: 'Cholesterol in LDL [Mass/volume] in Serum or Plasma by calculation',\n groups: {\n 'LG43020-3': 'Cholesterol.in LDL|Pt|Ser/Plas|Calculated',\n },\n method: 'Calculated',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '13458-5': {\n component: 'Cholesterol.in VLDL',\n display: 'Cholesterol in VLDL [Mass/volume] in Serum or Plasma by calculation',\n groups: {\n 'LG43739-8': 'Cholesterol.in VLDL|Pt|Ser/Plas|Calculated',\n },\n method: 'Calculated',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '13945-1': {\n component: 'Erythrocytes',\n display: 'Erythrocytes [#/area] in Urine sediment by Microscopy high power field',\n groups: {\n 'LG40868-8': 'Erythrocytes|Urine/Urine sed',\n },\n method: 'Microscopy.light.HPF',\n property: 'Naric',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '13964-2': {\n component: 'Methylmalonate',\n display: 'Methylmalonate [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG47301-3': 'Methylmalonate|Pt|Ser/Plas|118.088 g/mole',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '13965-9': {\n component: 'Homocysteine',\n display: 'Homocysteine [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG48762-5': 'Homocysteine|Pt|Ser/Plas',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '13967-5': {\n component: 'Sex hormone binding globulin',\n display: 'Sex hormone binding globulin [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG46684-3': 'Sex hormone binding globulin|Pt|Ser/Plas',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '14804-9': {\n component: 'Lactate dehydrogenase',\n display:\n 'Lactate dehydrogenase [Enzymatic activity/volume] in Serum or Plasma by Lactate to pyruvate reaction',\n method: 'Reaction: lactate to pyruvate',\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '14957-5': {\n component: 'Albumin',\n display: 'Microalbumin [Mass/volume] in Urine',\n groups: {\n 'LG37542-4': 'Microalbumin|MCnc|Urine',\n },\n method: 'Detection limit <= 20 mg/L',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '15067-2': {\n component: 'Follitropin',\n display: 'Follitropin [Units/volume] in Serum or Plasma',\n groups: {\n 'LG3268-2': 'Follitropin|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1558-6': {\n component: 'Glucose^post CFst',\n display: 'Fasting glucose [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG50685-3': 'Glucose^post CFst|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1742-6': {\n component: 'Alanine aminotransferase',\n display: 'Alanine aminotransferase [Enzymatic activity/volume] in Serum or Plasma',\n groups: {\n 'LG5272-2': 'Alanine aminotransferase|CCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1751-7': {\n component: 'Albumin',\n display: 'Albumin [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49829-1': 'Albumin|Pt|Ser/Plas|66.439 kDa g/mole',\n 'LG5465-2': 'Albumin|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1759-0': {\n component: 'Albumin/Globulin',\n display: 'Albumin/Globulin [Mass Ratio] in Serum or Plasma',\n groups: {\n 'LG5164-1': 'Albumin/Globulin|MRto|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '17782-4': {\n component: 'Lipoprotein.beta.subparticle',\n display: 'Lipoprotein.beta.subparticle [Entitic length] in Serum or Plasma',\n method: null,\n property: 'EntLen',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '17861-6': {\n component: 'Calcium',\n display: 'Calcium [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49864-8': 'Calcium|Pt|Ser/Plas|40.078 g/mole',\n 'LG7247-2': 'Calcium|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1798-8': {\n component: 'Amylase',\n display: 'Amylase [Enzymatic activity/volume] in Serum or Plasma',\n groups: {\n 'LG5805-9': 'Amylase|CCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '18262-6': {\n component: 'Cholesterol.in LDL',\n display: 'Cholesterol in LDL [Mass/volume] in Serum or Plasma by Direct assay',\n groups: {\n 'LG43023-7': 'Cholesterol.in LDL|Pt|Ser/Plas|Direct assay',\n 'LG6248-1': 'Cholesterol.in LDL|MCnc|Pt|ANYBldSerPl',\n },\n method: 'Direct assay',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1834-1': {\n component: 'Alpha-1-Fetoprotein',\n display: 'Alpha-1-Fetoprotein [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG42656-5': 'Alpha-1-Fetoprotein|Pt|Ser/Plas',\n 'LG5597-2': 'Alpha-1-Fetoprotein|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1848-1': {\n component: 'Androstanolone',\n display: 'Androstanolone [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG42603-7': 'Androstanolone|Pt|Ser/Plas|290.447 g/mole',\n 'LG6115-2': 'Androstanolone|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1869-7': {\n component: 'Apolipoprotein A-I',\n display: 'Apolipoprotein A-I [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG44102-8': 'Apolipoprotein A-I|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1884-6': {\n component: 'Apolipoprotein B',\n display: 'Apolipoprotein B [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG42611-0': 'Apolipoprotein B|Pt|Ser/Plas',\n 'LG5705-1': 'Apolipoprotein B|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1903-4': {\n component: 'Ascorbate',\n display: 'Ascorbate [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG42630-0': 'Ascorbate|Pt|Ser/Plas|176.124 g/mole',\n 'LG5723-4': 'Ascorbate|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '19080-1': {\n component: 'Choriogonadotropin',\n display: 'Choriogonadotropin [Units/volume] in Serum or Plasma',\n groups: {\n 'LG5747-3': 'Choriogonadotropin|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '19113-0': {\n component: 'IgE',\n display: 'IgE [Units/volume] in Serum or Plasma',\n groups: {\n 'LG5901-6': 'IgE|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '19123-9': {\n component: 'Magnesium',\n display: 'Magnesium [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG50041-9': 'Magnesium|Pt|Ser/Plas|24.305 g/mole',\n 'LG5903-2': 'Magnesium|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1920-8': {\n component: 'Aspartate aminotransferase',\n display: 'Aspartate aminotransferase [Enzymatic activity/volume] in Serum or Plasma',\n groups: {\n 'LG6033-7': 'Aspartate aminotransferase|CCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1968-7': {\n component: 'Bilirubin.glucuronidated+Bilirubin.albumin bound',\n display: 'Bilirubin.direct [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43215-9': 'Bilirubin.glucuronidated+Bilirubin.albumin bound|Pt|Ser/Plas',\n 'LG6165-7': 'Bilirubin.glucuronidated+Bilirubin.albumin bound|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1971-1': {\n component: 'Bilirubin.non-glucuronidated',\n display: 'Bilirubin.indirect [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG3235-1': 'Bilirubin.non-glucuronidated|MCnc|Pt|ANYBldSerPl',\n 'LG43430-4': 'Bilirubin.non-glucuronidated|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1975-2': {\n component: 'Bilirubin',\n display: 'Bilirubin.total [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49848-1': 'Bilirubin|Pt|Ser/Plas|584.673 g/mole',\n 'LG6199-6': 'Bilirubin|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1988-5': {\n component: 'C reactive protein',\n display: 'C reactive protein [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG48228-7': 'C reactive protein|Pt|Ser/Plas',\n 'LG52057-3': 'C reactive protein|Pt|ANYBldSerPl|',\n 'LG6212-7': 'C reactive protein|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '1989-3': {\n component: 'Calcidiol',\n display: '25-hydroxyvitamin D3 [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43465-0': 'Calcidiol|Pt|Ser/Plas|400.647 g/mole',\n 'LG51030-1': 'Calcidiol|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2028-9': {\n component: 'Carbon dioxide',\n display: 'Carbon dioxide, total [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG4454-7': 'Carbon dioxide|SCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2039-6': {\n component: 'Carcinoembryonic Ag',\n display: 'Carcinoembryonic Ag [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG44728-0': 'Carcinoembryonic Ag|Pt|Ser/Plas',\n 'LG6799-3': 'Carcinoembryonic Ag|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '20405-7': {\n component: 'Urobilinogen',\n display: 'Urobilinogen [Mass/volume] in Urine by Test strip',\n groups: {\n 'LG35156-5': 'Urobilinogen|MCnc|Urine',\n 'LG40864-7': 'Urobilinogen|Urine/Urine sed',\n 'LG47120-7': 'Urobilinogen|Pt|Urine|Test strip|592.737 g/mole',\n },\n method: 'Test strip',\n property: 'MCnc',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '20448-7': {\n component: 'Insulin',\n display: 'Insulin [Units/volume] in Serum or Plasma',\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2075-0': {\n component: 'Chloride',\n display: 'Chloride [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG6373-7': 'Chloride|SCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2085-9': {\n component: 'Cholesterol.in HDL',\n display: 'Cholesterol in HDL [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43009-6': 'Cholesterol.in HDL|Pt|Ser/Plas',\n 'LG6644-1': 'Cholesterol.in HDL|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2089-1': {\n component: 'Cholesterol.in LDL',\n display: 'Cholesterol in LDL [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43021-1': 'Cholesterol.in LDL|Pt|Ser/Plas',\n 'LG6248-1': 'Cholesterol.in LDL|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2093-3': {\n component: 'Cholesterol',\n display: 'Cholesterol [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG50009-6': 'Cholesterol|Pt|Ser/Plas|386.664 g/mole',\n 'LG6416-4': 'Cholesterol|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2132-9': {\n component: 'Cobalamins',\n display: 'Cobalamin (Vitamin B12) [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG4793-8': 'Cobalamins|MCnc|Pt|ANYBldSerPl',\n 'LG48386-3': 'Cobalamins|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '21365-2': {\n component: 'Leptin',\n display: 'Leptin [Mass/volume] in Serum or Plasma',\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2143-6': {\n component: 'Cortisol',\n display: 'Cortisol [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43168-0': 'Cortisol|Pt|Ser/Plas|362.466 g/mole',\n 'LG7018-7': 'Cortisol|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2157-6': {\n component: 'Creatine kinase',\n display: 'Creatine kinase [Enzymatic activity/volume] in Serum or Plasma',\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2160-0': {\n component: 'Creatinine',\n display: 'Creatinine [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG50024-5': 'Creatinine|Pt|Ser/Plas|113.12 g/mole',\n 'LG52058-1': 'Creatinine|Pt|ANYBldSerPl|113.12 g/mole',\n 'LG6657-3': 'Creatinine|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2161-8': {\n component: 'Creatinine',\n display: 'Creatinine [Mass/volume] in Urine',\n groups: {\n 'LG35227-4': 'Creatinine|MCnc|Urine',\n 'LG50025-2': 'Creatinine|Pt|Urine|113.12 g/mole',\n 'LG7133-4': 'Creatinine|MCnc|Pt|ANYUrine',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '21619-2': {\n component: 'APOE gene mutations',\n display:\n 'APOE gene mutations found [Identifier] in Blood or Tissue by Targeted gene mutation analysis Nominal',\n method: 'Targeted gene mutation analysis',\n property: 'Prid',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Bld/Tiss',\n time: 'Pt',\n },\n '2191-5': {\n component: 'Dehydroepiandrosterone sulfate',\n display: 'Dehydroepiandrosterone sulfate (DHEA-S) [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG45903-8': 'Dehydroepiandrosterone sulfate|Pt|Ser/Plas',\n 'LG51787-6': 'Dehydroepiandrosterone sulfate|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2243-4': {\n component: 'Estradiol',\n display: 'Estradiol (E2) [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG46249-5': 'Estradiol|Pt|Ser/Plas|272.388 g/mole',\n 'LG668-0': 'Estradiol|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2276-4': {\n component: 'Ferritin',\n display: 'Ferritin [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43688-7': 'Ferritin|Pt|Ser/Plas',\n 'LG6299-4': 'Ferritin|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2284-8': {\n component: 'Folate',\n display: 'Folate [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG46599-3': 'Folate|Pt|Ser/Plas|441.404 g/mole',\n 'LG8004-6': 'Folate|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2324-2': {\n component: 'Gamma glutamyl transferase',\n display: 'Gamma glutamyl transferase [Enzymatic activity/volume] in Serum or Plasma',\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2336-6': {\n component: 'Globulin',\n display: 'Globulin [Mass/volume] in Serum',\n groups: {\n 'LG1776-6': 'Globulin|MCnc|Pt|ANYBldSerPl',\n 'LG52056-5': 'Globulin|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '2345-7': {\n component: 'Glucose',\n display: 'Glucose [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49881-2': 'Glucose|Pt|Ser/Plas|180.156 g/mole',\n 'LG7967-5': 'Glucose|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '24108-3': {\n component: 'Cancer Ag 19-9',\n display: 'Cancer Ag 19-9 [Units/volume] in Serum or Plasma',\n groups: {\n 'LG6230-9': 'Cancer Ag 19-9|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2458-8': {\n component: 'IgA',\n display: 'IgA [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG46917-7': 'IgA|Pt|Ser/Plas',\n 'LG9788-3': 'IgA|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2465-3': {\n component: 'IgG',\n display: 'IgG [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG45120-9': 'IgG|Pt|Ser/Plas',\n 'LG9795-8': 'IgG|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2472-9': {\n component: 'IgM',\n display: 'IgM [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG48822-7': 'IgM|Pt|Ser/Plas',\n 'LG9802-2': 'IgM|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2498-4': {\n component: 'Iron',\n display: 'Iron [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG48872-2': 'Iron|Pt|Ser/Plas|55.845 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2500-7': {\n component: 'Iron binding capacity',\n display: 'Iron binding capacity [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG48875-5': 'Iron binding capacity|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2502-3': {\n component: 'Iron saturation',\n display: 'Iron saturation [Mass Fraction] in Serum or Plasma',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2571-8': {\n component: 'Triglyceride',\n display: 'Triglyceride [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG47044-9': 'Triglyceride|Pt|Ser/Plas',\n 'LG9600-0': 'Triglyceride|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '26746-8': {\n component: 'Magnesium',\n display: 'Magnesium [Mass/volume] in Red Blood Cells',\n groups: {\n 'LG50044-3': 'Magnesium|Pt|RBC|24.305 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC',\n time: 'Pt',\n },\n '2731-8': {\n component: 'Parathyrin.intact',\n display: 'Parathyrin.intact [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG47482-1': 'Parathyrin.intact|Pt|Ser/Plas',\n 'LG52635-6': 'Parathyrin.intact|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '27353-2': {\n component: 'Estimated average glucose',\n display: 'Glucose mean value [Mass/volume] in Blood Estimated from glycated hemoglobin',\n groups: {\n 'LG48562-9': 'Estimated average glucose|Pt|Bld|Estimated from glycated hemoglobin',\n },\n method: 'Estimated from glycated hemoglobin',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '2823-3': {\n component: 'Potassium',\n display: 'Potassium [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG10990-6': 'Potassium|SCnc|Pt|ANYBldSerPl',\n 'LG49936-4': 'Potassium|Pt|Ser/Plas|39.098 g/mole',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2839-9': {\n component: 'Progesterone',\n display: 'Progesterone [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11006-0': 'Progesterone|MCnc|Pt|ANYBldSerPl',\n 'LG49385-4': 'Progesterone|Pt|Ser/Plas|314.469 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2842-3': {\n component: 'Prolactin',\n display: 'Prolactin [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG6300-0': 'Prolactin|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2857-1': {\n component: 'Prostate specific Ag',\n display: 'Prostate specific Ag [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11034-2': 'Prostate specific Ag|MCnc|Pt|ANYBldSerPl',\n 'LG47752-7': 'Prostate specific Ag|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2885-2': {\n component: 'Protein',\n display: 'Protein [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG1777-4': 'Protein|MCnc|Pt|ANYBldSerPl',\n 'LG49422-5': 'Protein|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2923-1': {\n component: 'Retinol',\n display: 'Retinol [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11471-6': 'Retinol|MCnc|Pt|ANYBldSerPl',\n 'LG45808-9': 'Retinol|Pt|Ser/Plas|286.459 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '29463-7': {\n component: 'Body weight',\n display: 'Body weight',\n groups: {\n 'LG34372-9': 'Body weight|Mass|Pt|^Patient',\n },\n method: null,\n property: 'Mass',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '2951-2': {\n component: 'Sodium',\n display: 'Sodium [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG11363-5': 'Sodium|SCnc|Pt|ANYBldSerPl',\n 'LG51978-1': 'Sodium|Pt|Ser/Plas|22.99 g/mole',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2986-8': {\n component: 'Testosterone',\n display: 'Testosterone [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11398-1': 'Testosterone|MCnc|Pt|ANYBldSerPl',\n 'LG49980-2': 'Testosterone|Pt|Ser/Plas|288.431 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '2991-8': {\n component: 'Testosterone.free',\n display: 'Testosterone Free [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11447-6': 'Testosterone.free|MCnc|Pt|ANYBldSerPl',\n 'LG47914-3': 'Testosterone.free|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3013-0': {\n component: 'Thyroglobulin',\n display: 'Thyroglobulin [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49663-4': 'Thyroglobulin|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3016-3': {\n component: 'Thyrotropin',\n display: 'Thyrotropin [Units/volume] in Serum or Plasma',\n groups: {\n 'LG11757-8': 'Thyrotropin|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '30189-5': {\n component:\n '(Dactylis glomerata+Festuca elatior+Lolium perenne+Phleum pratense+Poa pratensis) Ab.IgE',\n display:\n 'Grass Allergen Mix 1 (Orchard grass+Meadow Fescue+Perennial rye grass+Timothy+Kentucky blue grass) IgE Ab [Units/volume] in Serum by Multidisk',\n method: 'Multidisk',\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '3024-7': {\n component: 'Thyroxine.free',\n display: 'Thyroxine (T4) free [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG12004-4': 'Thyroxine.free|MCnc|Pt|ANYBldSerPl',\n 'LG49672-5': 'Thyroxine.free|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3026-2': {\n component: 'Thyroxine',\n display: 'Thyroxine (T4) [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG12009-3': 'Thyroxine|MCnc|Pt|ANYBldSerPl',\n 'LG46307-1': 'Thyroxine|Pt|Ser/Plas|776.874 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '30341-2': {\n component: 'Erythrocyte',\n display: 'Erythrocyte [Sedimentation Rate] in Blood',\n method: null,\n property: 'Sedimentation Rate',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '3040-3': {\n component: 'Triacylglycerol lipase',\n display: 'Lipase [Enzymatic activity/volume] in Serum or Plasma',\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3051-0': {\n component: 'Triiodothyronine.free',\n display: 'Triiodothyronine (T3) Free [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG11488-0': 'Triiodothyronine.free|MCnc|Pt|ANYBldSerPl',\n 'LG46407-9': 'Triiodothyronine.free|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3084-1': {\n component: 'Urate',\n display: 'Urate [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49755-8': 'Urate|Pt|Ser/Plas|168.112 g/mole',\n 'LG51310-7': 'Urate|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3091-6': {\n component: 'Urea',\n display: 'Urea [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG49993-5': 'Urea|Pt|Ser/Plas|60.056 g/mole',\n 'LG6460-2': 'Urea|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '30934-4': {\n component: 'Natriuretic peptide.B',\n display: 'Natriuretic peptide B [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG12080-4': 'Natriuretic peptide.B|MCnc|Pt|ANYBldSerPl',\n 'LG44906-2': 'Natriuretic peptide.B|Pt|Ser/Plas',\n 'LG52049-0': 'Natriuretic peptide.B|Pt|ANYBldSerPl|3464.0 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '3097-3': {\n component: 'Urea nitrogen/Creatinine',\n display: 'Urea nitrogen/Creatinine [Mass Ratio] in Serum or Plasma',\n groups: {\n 'LG12083-8': 'Urea nitrogen/Creatinine|MRto|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '31017-7': {\n component: 'Tissue transglutaminase Ab.IgA',\n display: 'Tissue transglutaminase IgA Ab [Units/volume] in Serum',\n groups: {\n 'LG12238-8': 'Tissue transglutaminase Ab.IgA|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '3255-7': {\n component: 'Fibrinogen',\n display: 'Fibrinogen [Mass/volume] in Platelet poor plasma by Coagulation assay',\n groups: {\n 'LG51979-9': 'Fibrinogen|Pt|PPP|Coag',\n },\n method: 'Coag',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'PPP',\n time: 'Pt',\n },\n '32623-1': {\n component: 'Platelet',\n display: 'Platelet [Entitic mean volume] in Blood by Automated count',\n method: 'Automated count',\n property: 'EntMeanVol',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '32998-7': {\n component: 'Tissue transglutaminase Ab.IgG',\n display: 'Tissue transglutaminase IgG Ab [Units/volume] in Serum',\n groups: {\n 'LG13588-5': 'Tissue transglutaminase Ab.IgG|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '33762-6': {\n component: 'Natriuretic peptide.B prohormone N-Terminal',\n display: 'Natriuretic peptide.B prohormone N-Terminal [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG13322-9': 'Natriuretic peptide.B prohormone N-Terminal|MCnc|Pt|ANYBldSerPl',\n 'LG47358-3': 'Natriuretic peptide.B prohormone N-Terminal|Pt|Ser/Plas',\n 'LG52052-4': 'Natriuretic peptide.B prohormone N-Terminal|Pt|BldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '33863-2': {\n component: 'Cystatin C',\n display: 'Cystatin C [Mass/volume] in Serum or Plasma',\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '35177-5': {\n component: 'Fatty acids.polyunsaturated',\n display: 'Polyunsaturated fatty acids [Moles/volume] in Serum or Plasma',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '35505-7': {\n component: 'Lipoprotein.beta.subparticle',\n display: 'Lipoprotein.beta.subparticle [Type] in Serum or Plasma',\n method: null,\n property: 'Type',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '38476-8': {\n component: 'Mullerian inhibiting substance',\n display: 'Mullerian inhibiting substance [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG15084-3': 'Mullerian inhibiting substance|MCnc|Pt|ANYBldSerPl',\n 'LG49114-8': 'Mullerian inhibiting substance|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '39156-5': {\n component: 'Body mass index',\n display: 'Body mass index (BMI) [Ratio]',\n method: null,\n property: 'Ratio',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '41982-0': {\n component: 'Body fat percentage',\n display: 'Percentage of body fat Measured',\n method: 'Measured',\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '43396-1': {\n component: 'Cholesterol.non HDL',\n display: 'Cholesterol non HDL [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43747-1': 'Cholesterol.non HDL|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '43583-4': {\n component: 'Lipoprotein (little a)',\n display: 'Lipoprotein a [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG45404-7': 'Lipoprotein (little a)|Pt|Ser/Plas',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '43727-7': {\n component: 'Lipoprotein.beta.subparticle.small',\n display: 'Lipoprotein.beta.subparticle.small [Moles/volume] in Serum or Plasma',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '43729-3': {\n component: 'Lipoprotein.alpha.subparticle.large',\n display: 'Lipoprotein.alpha.subparticle.large [Moles/volume] in Serum or Plasma',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '4485-9': {\n component: 'Complement C3',\n display: 'Complement C3 [Mass/volume] in Serum or Plasma',\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '4498-2': {\n component: 'Complement C4',\n display: 'Complement C4 [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG43109-4': 'Complement C4|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '4544-3': {\n component: 'Erythrocyte/Blood',\n display: 'Hematocrit [Volume Fraction] of Blood by Automated count',\n method: 'Automated count',\n property: 'VFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '4548-4': {\n component: 'Hemoglobin A1c/Hemoglobin.total',\n display: 'Hemoglobin A1c/Hemoglobin.total in Blood',\n groups: {\n 'LG51070-7': 'Hemoglobin A1c/Hemoglobin.total|MFr|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '4679-7': {\n component: 'Reticulocytes/Erythrocytes',\n display: 'Reticulocytes/Erythrocytes in Blood',\n method: null,\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '47214-2': {\n component: 'Homeostasis model assessment',\n display: 'Homeostasis model assessment',\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '47828-9': {\n component: 'Adiponectin',\n display: 'Adiponectin [Mass/volume] in Serum or Plasma',\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '48065-7': {\n component: 'Fibrin D-dimer',\n display: 'Fibrin D-dimer FEU [Mass/volume] in Platelet poor plasma',\n groups: {\n 'LG52053-2': 'Fibrin D-dimer|Pt|ANYBldPPP',\n },\n method: 'FEU',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'PPP',\n time: 'Pt',\n },\n '48066-5': {\n component: 'Fibrin D-dimer',\n display: 'Fibrin D-dimer DDU [Mass/volume] in Platelet poor plasma',\n groups: {\n 'LG52053-2': 'Fibrin D-dimer|Pt|ANYBldPPP',\n },\n method: 'DDU',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'PPP',\n time: 'Pt',\n },\n '49563-0': {\n component: 'Troponin I.cardiac',\n display:\n 'Troponin I.cardiac [Mass/volume] in Serum or Plasma by Detection limit <= 0.01 ng/mL',\n method: 'Detection limit <= 0.01 ng/mL',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '53060-0': {\n component: 'Butyrylcarnitine (C4)',\n display: 'Butyrylcarnitine (C4) [Moles/volume] in Amniotic fluid',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Amnio fld',\n time: 'Pt',\n },\n '54434-6': {\n component: 'Lipoprotein.beta.subparticle',\n display: 'Lipoprotein.beta.subparticle [Moles/volume] in Serum or Plasma',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '5685-3': {\n component: 'Mercury',\n display: 'Mercury [Mass/volume] in Blood',\n groups: {\n 'LG23471-2': 'Mercury|MCnc|Pt|ANYBldSerPl',\n 'LG49912-5': 'Mercury|Pt|Bld|200.59 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '56997-0': {\n component: 'Urea/Creatinine',\n display: 'Urea/Creatinine [Mass Ratio] in Serum or Plasma',\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '5724-0': {\n component: 'Selenium',\n display: 'Selenium [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG23524-8': 'Selenium|MCnc|Pt|ANYBldSerPl',\n 'LG46672-8': 'Selenium|Pt|Ser/Plas|78.971 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '5763-8': {\n component: 'Zinc',\n display: 'Zinc [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG23959-6': 'Zinc|MCnc|Pt|ANYBldSerPl',\n 'LG49988-5': 'Zinc|Pt|Ser/Plas|65.38 g/mole',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '5767-9': {\n component: 'Observation',\n display: 'Appearance of Urine',\n method: null,\n property: 'Aper',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5769-5': {\n component: 'Bacteria',\n display: 'Bacteria [#/area] in Urine sediment by Microscopy high power field',\n groups: {\n 'LG40875-3': 'Bacteria|Urine/Urine sed',\n },\n method: 'Microscopy.light.HPF',\n property: 'Naric',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '5770-3': {\n component: 'Bilirubin',\n display: 'Bilirubin.total [Presence] in Urine by Test strip',\n groups: {\n 'LG35153-2': 'Bilirubin|PrThr|Urine',\n 'LG40907-4': 'Bilirubin|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'PrThr',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5778-6': {\n component: 'Observation',\n display: 'Color of Urine',\n groups: {\n 'LG36556-5': 'Observation|Color|Urine',\n },\n method: null,\n property: 'Color',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5792-7': {\n component: 'Glucose',\n display: 'Glucose [Mass/volume] in Urine by Test strip',\n groups: {\n 'LG33250-8': 'Glucose|Pt|Urine|Test strip|180.156 g/mole',\n 'LG35166-4': 'Glucose|MCnc|Urine',\n 'LG40865-4': 'Glucose|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'MCnc',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5794-3': {\n component: 'Hemoglobin',\n display: 'Hemoglobin [Presence] in Urine by Test strip',\n groups: {\n 'LG36977-3': 'Hemoglobin|PrThr|Urine',\n 'LG40952-0': 'Hemoglobin|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'PrThr',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5796-8': {\n component: 'Hyaline casts',\n display: 'Hyaline casts [#/area] in Urine sediment by Microscopy low power field',\n groups: {\n 'LG40890-2': 'Hyaline casts|Urine/Urine sed',\n },\n method: 'Microscopy.light.LPF',\n property: 'Naric',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '5797-6': {\n component: 'Ketones',\n display: 'Ketones [Mass/volume] in Urine by Test strip',\n groups: {\n 'LG36553-2': 'Ketones|MCnc|Urine',\n 'LG40908-2': 'Ketones|Urine/Urine sed',\n 'LG48911-8': 'Ketones|Pt|Urine|Test strip',\n },\n method: 'Test strip',\n property: 'MCnc',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5799-2': {\n component: 'Leukocyte esterase',\n display: 'Leukocyte esterase [Presence] in Urine by Test strip',\n groups: {\n 'LG36980-7': 'Leukocyte esterase|PrThr|Urine',\n 'LG40953-8': 'Leukocyte esterase|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'PrThr',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5802-4': {\n component: 'Nitrite',\n display: 'Nitrite [Presence] in Urine by Test strip',\n groups: {\n 'LG35986-5': 'Nitrite|PrThr|Urine',\n 'LG40866-2': 'Nitrite|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'PrThr',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5803-2': {\n component: 'pH',\n display: 'pH of Urine by Test strip',\n groups: {\n 'LG35753-9': 'pH|LsCnc|Urine',\n 'LG40956-1': 'pH|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'LsCnc',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5804-0': {\n component: 'Protein',\n display: 'Protein [Mass/volume] in Urine by Test strip',\n groups: {\n 'LG34512-0': 'Protein|MCnc|Urine',\n 'LG40870-4': 'Protein|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'MCnc',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5808-1': {\n component: 'Erythrocytes',\n display: 'Erythrocytes [#/volume] in Urine sediment by Microscopy high power field',\n groups: {\n 'LG40868-8': 'Erythrocytes|Urine/Urine sed',\n },\n method: 'Microscopy.light.HPF',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '5811-5': {\n component: 'Observation',\n display: 'Specific gravity of Urine by Test strip',\n groups: {\n 'LG35800-8': 'Observation|SpGrav|Urine',\n 'LG40859-7': 'Observation|Urine/Urine sed',\n },\n method: 'Test strip',\n property: 'SpGrav',\n scale: 'SemiQn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '5821-4': {\n component: 'Leukocytes',\n display: 'Leukocytes [#/area] in Urine sediment by Microscopy high power field',\n groups: {\n 'LG40867-0': 'Leukocytes|Urine/Urine sed',\n },\n method: 'Microscopy.light.HPF',\n property: 'Naric',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine sed',\n time: 'Pt',\n },\n '5902-2': {\n component: 'Coagulation',\n display: 'Prothrombin time (PT)',\n method: 'Coag.tissue factor induced',\n property: 'Time',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'PPP',\n time: 'Pt',\n },\n '5905-5': {\n component: 'Monocytes/leukocytes',\n display: 'Monocytes/Leukocytes in Blood by Automated count',\n method: 'Automated count',\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '62292-8': {\n component: 'Calcidiol+ercalcidiol',\n display: '25-Hydroxyvitamin D3+25-Hydroxyvitamin D2 [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG25965-1': 'Calcidiol+ercalcidiol|MCnc|Pt|ANYBldSerPl',\n 'LG42015-4': 'Calcidiol+ercalcidiol|Pt|Ser/Plas',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '630-4': {\n component: 'Bacteria',\n display: 'Bacteria identified in Urine by Culture',\n groups: {\n 'LG34664-9': 'Bacteria|Prid|Urine',\n 'LG51652-2': 'Bacteria|Prid|Sys:ANYGU',\n },\n method: 'Culture',\n property: 'Prid',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '6301-6': {\n component: 'Coagulation',\n display: 'INR in Platelet poor plasma by Coagulation assay',\n method: 'Coag.tissue factor induced.INR',\n property: 'RelTime',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'PPP',\n time: 'Pt',\n },\n '63453-5': {\n component: 'Gliadin peptide Ab.IgA',\n display: 'Gliadin peptide IgA Ab [Units/volume] in Serum by Immunoassay',\n groups: {\n 'LG24120-4': 'Gliadin peptide Ab.IgA|ACnc|Pt|ANYBldSerPl',\n },\n method: 'IA',\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '63459-2': {\n component: 'Gliadin peptide Ab.IgG',\n display: 'Gliadin peptide IgG Ab [Units/volume] in Serum by Immunoassay',\n groups: {\n 'LG24121-2': 'Gliadin peptide Ab.IgG|ACnc|Pt|ANYBldSerPl',\n },\n method: 'IA',\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '6598-7': {\n component: 'Troponin T.cardiac',\n display: 'Troponin T.cardiac [Mass/volume] in Serum or Plasma',\n groups: {\n 'LG19584-8': 'Troponin T.cardiac|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '6690-2': {\n component: 'Leukocytes',\n display: 'Leukocytes [#/volume] in Blood by Automated count',\n groups: {\n 'LG32857-1': 'Leukocytes|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '6768-6': {\n component: 'Alkaline phosphatase',\n display: 'Alkaline phosphatase [Enzymatic activity/volume] in Serum or Plasma',\n groups: {\n 'LG5665-7': 'Alkaline phosphatase|CCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'CCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '6833-8': {\n component: 'Cat dander Ab.IgE',\n display: 'Cat dander IgE Ab [Units/volume] in Serum',\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '6873-4': {\n component: 'Beta hydroxybutyrate',\n display: 'Beta hydroxybutyrate [Moles/volume] in Serum or Plasma',\n groups: {\n 'LG26613-6': 'Beta hydroxybutyrate|SCnc|Pt|ANYBldSerPl',\n 'LG43202-7': 'Beta hydroxybutyrate|Pt|Ser/Plas',\n },\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '6875-9': {\n component: 'Cancer Ag 15-3',\n display: 'Cancer Ag 15-3 [Units/volume] in Serum or Plasma',\n groups: {\n 'LG26852-0': 'Cancer Ag 15-3|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '704-7': {\n component: 'Basophils',\n display: 'Basophils [#/volume] in Blood by Automated count',\n groups: {\n 'LG32848-0': 'Basophils|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '706-2': {\n component: 'Basophils/leukocytes',\n display: 'Basophils/Leukocytes in Blood by Automated count',\n method: 'Automated count',\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '711-2': {\n component: 'Eosinophils',\n display: 'Eosinophils [#/volume] in Blood by Automated count',\n groups: {\n 'LG32849-8': 'Eosinophils|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '713-8': {\n component: 'Eosinophils/leukocytes',\n display: 'Eosinophils/Leukocytes in Blood by Automated count',\n method: 'Automated count',\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '718-7': {\n component: 'Hemoglobin',\n display: 'Hemoglobin [Mass/volume] in Blood',\n groups: {\n 'LG44868-4': 'Hemoglobin|Pt|Bld',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '731-0': {\n component: 'Lymphocytes',\n display: 'Lymphocytes [#/volume] in Blood by Automated count',\n groups: {\n 'LG32863-9': 'Lymphocytes|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '736-9': {\n component: 'Lymphocytes/leukocytes',\n display: 'Lymphocytes/Leukocytes in Blood by Automated count',\n method: 'Automated count',\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '73708-0': {\n component: 'Body fat mass',\n display: 'Body fat [Mass] Calculated',\n method: 'Calculated',\n property: 'Mass',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '73964-9': {\n component: 'Body muscle mass',\n display: 'Body muscle mass Calculated',\n method: 'Calculated',\n property: 'Mass',\n scale: 'Qn',\n status: 'ACTIVE',\n system: '^Patient',\n time: 'Pt',\n },\n '742-7': {\n component: 'Monocytes',\n display: 'Monocytes [#/volume] in Blood by Automated count',\n groups: {\n 'LG32885-2': 'Monocytes|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '751-8': {\n component: 'Neutrophils',\n display: 'Neutrophils [#/volume] in Blood by Automated count',\n groups: {\n 'LG32886-0': 'Neutrophils|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '770-8': {\n component: 'Neutrophils/leukocytes',\n display: 'Neutrophils/Leukocytes in Blood by Automated count',\n method: 'Automated count',\n property: 'NFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '77307-7': {\n component: 'Lead',\n display: 'Lead [Mass/volume] in Venous blood',\n groups: {\n 'LG140-0': 'Lead|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'BldV',\n time: 'Pt',\n },\n '777-3': {\n component: 'Platelets',\n display: 'Platelets [#/volume] in Blood by Automated count',\n groups: {\n 'LG32892-8': 'Platelets|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '785-6': {\n component: 'Hemoglobin',\n display: 'MCH [Entitic mass] by Automated count',\n method: 'Automated count',\n property: 'EntMass',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC',\n time: 'Pt',\n },\n '786-4': {\n component: 'Hemoglobin',\n display: 'MCHC [Entitic Mass/volume] in Red Blood Cells by Automated count',\n method: 'Automated count',\n property: 'EntMCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC',\n time: 'Pt',\n },\n '787-2': {\n component: 'Observation',\n display: 'MCV [Entitic mean volume] in Red Blood Cells by Automated count',\n method: 'Automated count',\n property: 'EntMeanVol',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC',\n time: 'Pt',\n },\n '788-0': {\n component: 'Erythrocyte',\n display: 'Erythrocyte [DistWidth] in Blood by Automated count',\n method: 'Automated count',\n property: 'DistWidth',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '789-8': {\n component: 'Erythrocytes',\n display: 'Erythrocytes [#/volume] in Blood by Automated count',\n groups: {\n 'LG32850-6': 'Erythrocytes|NCnc|Pt|Bld',\n },\n method: 'Automated count',\n property: 'NCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '8061-4': {\n component: 'Nuclear Ab',\n display: 'Nuclear Ab [Presence] in Serum',\n groups: {\n 'LG4652-6': 'Nuclear Ab|PrThr|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'PrThr',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '8098-6': {\n component: 'Thyroglobulin Ab',\n display: 'Thyroglobulin Ab [Units/volume] in Serum or Plasma',\n groups: {\n 'LG21864-0': 'Thyroglobulin Ab|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '8099-4': {\n component: 'Thyroperoxidase Ab',\n display: 'Thyroperoxidase Ab [Units/volume] in Serum or Plasma',\n groups: {\n 'LG359-6': 'Thyroperoxidase Ab|ACnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'ACnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '8245-3': {\n component: 'Zinc',\n display: 'Zinc [Mass/volume] in Blood',\n groups: {\n 'LG23959-6': 'Zinc|MCnc|Pt|ANYBldSerPl',\n },\n method: null,\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '8280-0': {\n component: 'Circumference.at umbilicus',\n display: 'Waist Circumference at umbilicus by Tape measure',\n method: 'Tape measure',\n property: 'Len',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Abdomen.mid',\n time: 'Pt',\n },\n '8353-5': {\n component: 'Skin fold thickness',\n display: 'Skin fold thickness Thigh',\n method: null,\n property: 'Len',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Thigh',\n time: 'Pt',\n },\n '8354-3': {\n component: 'Skin fold thickness',\n display: 'Skin fold thickness Triceps',\n method: null,\n property: 'Len',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Triceps',\n time: 'Pt',\n },\n '8355-0': {\n component: 'Skin fold thickness',\n display: 'Skin fold thickness Waist',\n method: null,\n property: 'Len',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Waist',\n time: 'Pt',\n },\n '883-9': {\n component: 'ABO group',\n display: 'ABO group [Type] in Blood',\n method: null,\n property: 'Type',\n scale: 'Nom',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90908-5': {\n component: 'Eicosapentaenoate+Docosapentaenate w3+Docosahexaenoate/Fatty acids.C14-C22 risk',\n display:\n 'Eicosapentaenoate (C20:5w3)+Docosapentaenate (C22:5w3)+Docosahexaenoate (C22:6w3)/Fatty acids.C14-C22 risk [Interpretation] in Blood Qualitative',\n method: null,\n property: 'Imp',\n scale: 'Ord',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90909-3': {\n component: 'Arachidonate/Eicosapentaenoate',\n display: 'Arachidonate (C20:4w6)/Eicosapentaenoate (C20:5w3) [Mass Ratio] in Blood',\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90910-1': {\n component: 'Fatty acids.omega 6/Fatty acids.omega 3',\n display: 'Omega 6 fatty acids (w6)/Omega 3 fatty acids (w3) [Mass Ratio] in Blood',\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90911-9': {\n component: 'Eicosapentaenoate+Docosapentaenate w3+Docosahexaenoate/Fatty acids.C14-C22',\n display:\n 'Eicosapentaenoate (C20:5w3)+Docosapentaenate (C22:5w3)+Docosahexaenoate (C22:6w3)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90912-7': {\n component: 'Eicosapentaenoate/Fatty acids.C14-C22',\n display: 'Eicosapentaenoate (C20:5w3)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90913-5': {\n component: 'Docosapentaenate w3/Fatty acids.C14-C22',\n display: 'Docosapentaenate (C22:5w3)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90914-3': {\n component: 'Docosahexaenoate/Fatty acids.C14-C22',\n display: 'Docosahexaenoate (C22:6w3)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90916-8': {\n component: 'Arachidonate/Fatty acids.C14-C22',\n display: 'Arachidonate (C20:4w6)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '90917-6': {\n component: 'Linoleate/Fatty acids.C14-C22',\n display: 'Linoleate (C18:2w6)/Fatty acids.C14-C22 in Blood',\n method: null,\n property: 'MFr',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Bld',\n time: 'Pt',\n },\n '9318-7': {\n component: 'Albumin/Creatinine',\n display: 'Albumin/Creatinine [Mass Ratio] in Urine',\n groups: {\n 'LG34557-5': 'Albumin/Creatinine|MRto|Urine',\n 'LG51020-2': 'Albumin/Creatinine|MRto|Pt|ANYUrine',\n },\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Urine',\n time: 'Pt',\n },\n '96259-7': {\n component: 'Cholesterol.in LDL',\n display:\n 'Cholesterol in LDL [Mass/volume] in Serum or Plasma by Calculated by Martin-Hopkins',\n groups: {\n 'LG51050-9': 'Cholesterol.in LDL|Pt|Ser/Plas|Calculated.Martin-Hopkins',\n 'LG6248-1': 'Cholesterol.in LDL|MCnc|Pt|ANYBldSerPl',\n },\n method: 'Calculated.Martin-Hopkins',\n property: 'MCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '96735-6': {\n component: 'Lipoprotein.beta.subparticle.medium',\n display: 'Lipoprotein.beta.subparticle.medium [Moles/volume] in Serum',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser',\n time: 'Pt',\n },\n '9830-1': {\n component: 'Cholesterol.total/Cholesterol.in HDL',\n display: 'Cholesterol.total/Cholesterol in HDL [Mass Ratio] in Serum or Plasma',\n method: null,\n property: 'MRto',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas',\n time: 'Pt',\n },\n '98979-8': {\n component: 'Glomerular filtration rate',\n display:\n 'Glomerular filtration rate [Volume Rate/Area] in Serum, Plasma or Blood by Creatinine-based formula (CKD-EPI 2021)/1.73 sq M',\n groups: {\n 'LG50986-5': 'Glomerular filtration rate|ArVRat|Pt|ANYBldSerPl',\n },\n method: 'Creatinine-based formula (CKD-EPI 2021)/1.73 sq M',\n property: 'ArVRat',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'Ser/Plas/Bld',\n time: 'Pt',\n },\n '99620-7': {\n component: 'Fatty acids.omega 3',\n display: 'Omega 3 fatty acids (w3) [Moles/volume] in RBC.lysate',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC.lysate',\n time: 'Pt',\n },\n '99621-5': {\n component: 'Fatty acids.omega 6',\n display: 'Omega 6 fatty acids (w6) [Moles/volume] in RBC.lysate',\n method: null,\n property: 'SCnc',\n scale: 'Qn',\n status: 'ACTIVE',\n system: 'RBC.lysate',\n time: 'Pt',\n },\n },\n};\n","/**\n * Os eixos e os grupos LOINC de cada código do catálogo, como o servidor\n * oficial os publica, conferidos todo mês pelo `scripts/verify-loinc.ts`.\n *\n * Os dados vêm de `loinc-snapshot.generated.ts`, cópia do\n * `scripts/loinc-snapshot.json` feita pelo gerador. Toda leitura daqui carrega\n * o código e o display juntos, e quem republicar deve levar `LOINC_SNAPSHOT._notice`.\n */\nimport { LOINC_SNAPSHOT } from './loinc-snapshot.generated';\n\n/** Um código LOINC no snapshot, com os eixos na grafia em que o LOINC os exibe. */\nexport interface LoincEntry {\n component: string | null;\n display: string;\n /** LOINC Groups (`LG…`) a que o código pertence, com o nome de cada um. */\n groups?: Record<string, string>;\n /** Único eixo opcional: a maioria dos códigos não afirma método. */\n method: string | null;\n property: string | null;\n scale: string | null;\n status: string | null;\n system: string | null;\n time: string | null;\n}\n\nexport interface LoincSnapshot {\n _checkedAt: string;\n _loincVersion: string | null;\n /** Aviso da seção 10.1 da licença do LOINC. */\n _notice: string;\n codes: Record<string, LoincEntry>;\n}\n\nexport { LOINC_SNAPSHOT };\n\n/** Os eixos de um código do catálogo, ou `undefined` se ele não está no snapshot. */\nexport function getLoincEntry(loinc: string): LoincEntry | undefined {\n return LOINC_SNAPSHOT.codes[loinc];\n}\n","/**\n * FHIR Converter\n *\n * Converts lab results to FHIR R4 DiagnosticReport and Observation resources.\n * See: https://hl7.org/fhir/diagnosticreport.html\n */\n\nimport { codeToLoinc, methodVariantOf } from './biomarkers';\nimport { type Addressable, entryFullUrl } from './bundle-urls';\nimport { BIOMARKER_CODE_SYSTEM, LOINC_SYSTEM } from './code-systems';\nimport type {\n FHIRBundle,\n FHIRDiagnosticReport,\n FHIRObservation,\n FHIRPatient,\n FHIRQuantity,\n FHIRReferenceRange,\n} from './fhir-types';\nimport { getLoincEntry } from './loinc-axes';\nimport { referenceRangeMeaning } from './reference-ranges';\nimport type { Flag, LabObservationData, LabReportData, UserProfileData } from './types';\nimport { getDefaultUnit, resolveUcum } from './units';\n\n// Re-export all types and functions\nexport * from './fhir-types';\n\n/**\n * Convert Flag to FHIR interpretation code\n */\nfunction interpretationCode(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'H'; // High\n case 'L':\n return 'L'; // Low\n default:\n return 'N'; // Normal\n }\n}\n\n/**\n * Convert Flag to FHIR interpretation display\n */\nfunction interpretationDisplay(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'High';\n case 'L':\n return 'Low';\n default:\n return 'Normal';\n }\n}\n\n/**\n * O `coding` do sexo, que vai **dentro** do CodeableConcept do `appliesTo`.\n *\n * O nome diz `CODING` e não `APPLIES_TO` de propósito: isto não é o valor do\n * campo, é uma entrada da lista de codificações dele. O embrulho acontece no\n * uso, em `{ coding: [SEX_CODING[sex]] }`.\n *\n * É o `AdministrativeGender`, e não o v3-ObservationInterpretation nem um\n * sistema nosso: um consumidor que já lê `Patient.gender` compara os dois sem\n * tabela de tradução no meio.\n */\nconst SEX_CODING = {\n female: {\n code: 'female',\n display: 'Female',\n system: 'http://hl7.org/fhir/administrative-gender',\n },\n male: { code: 'male', display: 'Male', system: 'http://hl7.org/fhir/administrative-gender' },\n} as const;\n\n/**\n * Monta as faixas de referência do `Observation`.\n *\n * Duas mudanças em relação ao que existia, e as duas são sobre não perder o que\n * o laudo imprimiu.\n *\n * **Um limite só já basta.** Antes a faixa só saía com os dois, e um laudo que\n * publica \"inferior a 190 mg/dL\" ou \"superior a 60 mL/min/1,73m²\" perdia o\n * campo inteiro. O R4 trata `low` e `high` como opcionais independentes e\n * documenta o caso de um lado só, e o importador deste mesmo pacote já lia\n * `low?.value` e `high?.value` com acesso opcional: a assimetria era só do\n * escritor. Ver PRE-430.\n *\n * **Mais de uma faixa, anotada.** Laudo com uma coluna de referência por sexo\n * passa a sair com as duas, cada uma com o seu `appliesTo`, em vez de o\n * pipeline escolher uma sem saber de quem é o exame. Ver PRE-424 e PRE-425.\n */\nconst buildReferenceRanges = (\n observation: LabObservationData,\n quantity: (value: number) => FHIRQuantity,\n): FHIRReferenceRange[] => {\n // Devolve lista, e não uma faixa: o caso sem limite nenhum vira lista vazia\n // em vez de `undefined`, e aí os dois caminhos abaixo se compõem com\n // `flatMap` sem ninguém precisar filtrar nada depois.\n const toRanges = (low?: number, high?: number, sex?: 'female' | 'male'): FHIRReferenceRange[] => {\n if (low === undefined && high === undefined) return [];\n\n return [\n {\n ...(sex === undefined ? {} : { appliesTo: [{ coding: [SEX_CODING[sex]] }] }),\n ...(high === undefined ? {} : { high: quantity(high) }),\n ...(low === undefined ? {} : { low: quantity(low) }),\n },\n ];\n };\n\n // A lista anotada tem precedência: quando ela existe, o par simples é o\n // resumo de uma das colunas e repeti-lo publicaria a mesma faixa duas vezes,\n // uma delas sem dizer a quem se aplica.\n //\n // Lista vazia cai no par simples, igual a ausente, e isso é escolha: as duas\n // dizem \"não tenho faixa anotada\", e tratá-las diferente faria um `[]` vindo\n // de um `.filter()` apagar em silêncio a faixa que o chamador também mandou\n // em `referenceMin` e `referenceMax`.\n if (observation.referenceRanges && observation.referenceRanges.length > 0) {\n return observation.referenceRanges.flatMap((r) => toRanges(r.low, r.high, r.appliesTo));\n }\n\n const meaning = observation.referenceKind && referenceRangeMeaning(observation.referenceKind);\n return toRanges(observation.referenceMin, observation.referenceMax).map((range) =>\n meaning ? { ...range, type: { coding: [meaning] } } : range,\n );\n};\n\n/**\n * Convert generic lab observation to FHIR Observation\n */\nexport function labObservationToFHIR(\n observation: LabObservationData,\n patientId: string,\n laboratoryName?: string,\n): Addressable<FHIRObservation> {\n // O código por método só sai quando é variante declarada do biomarcador. Um\n // `methodLoinc` qualquer viraria afirmação sob `http://loinc.org` que o\n // catálogo não conferiu.\n const methodLoinc =\n observation.methodLoinc && methodVariantOf(observation.biomarkerCode, observation.methodLoinc)\n ? observation.methodLoinc\n : undefined;\n const loincCode = methodLoinc ?? codeToLoinc(observation.biomarkerCode);\n // Use default unit if source unit is empty\n const sourceUnit =\n observation.unit || getDefaultUnit(observation.biomarkerCode) || observation.unit;\n // `system` + `code` só saem quando a unidade resolve em UCUM. Unidade que o\n // pacote não sabe traduzir fica só em `unit`, como texto: afirmar\n // `http://unitsofmeasure.org` sobre `x10^3/mm3` era publicar um código\n // falso, e quem consome o Bundle confiando no system trataria aquilo como\n // UCUM de verdade.\n const ucumUnit = resolveUcum(sourceUnit, observation.biomarkerCode);\n const quantity = (value: number): FHIRQuantity => ({\n ...(ucumUnit ? { code: ucumUnit, system: 'http://unitsofmeasure.org' } : {}),\n ...(sourceUnit ? { unit: sourceUnit } : {}),\n value,\n });\n const isQualitative = observation.isQualitative || typeof observation.value === 'string';\n\n // Base observation structure\n const fhirObs: Addressable<FHIRObservation> = {\n category: [\n {\n coding: [\n {\n code: 'laboratory',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/observation-category',\n },\n ],\n },\n ],\n code: {\n // Sem LOINC, o coding LOINC simplesmente não sai. Antes ia `99999-9`,\n // que não é código LOINC nenhum: publicava sob `http://loinc.org` uma\n // afirmação falsa, e quem consumisse o bundle confiando no system\n // trataria aquilo como código de verdade. Composição corporal, densidade\n // óssea e escore de cálcio não têm LOINC, e o certo é a lacuna explícita.\n coding: [\n ...(loincCode\n ? [\n {\n code: loincCode,\n // O display de um coding é o do sistema de código, e a licença\n // do LOINC (seção 10.3) pede o nome oficial junto do código. O\n // nome do laudo em português fica em `code.text` e no coding do\n // catálogo. Fora do snapshot (código que só o chamador conhece),\n // não há nome oficial para dar, e o display sai vazio em vez de\n // pôr um nome nosso sob `http://loinc.org`.\n display: getLoincEntry(loincCode)?.display,\n system: LOINC_SYSTEM,\n },\n ]\n : []),\n {\n code: observation.biomarkerCode,\n display: observation.biomarkerName,\n system: BIOMARKER_CODE_SYSTEM,\n },\n ],\n text: observation.biomarkerName,\n },\n effectiveDateTime: observation.collectionDate,\n id: `${observation.reportId}-${observation.biomarkerCode}`,\n interpretation: [\n {\n coding: [\n {\n code: interpretationCode(observation.flag),\n display: interpretationDisplay(observation.flag),\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ],\n performer: laboratoryName ? [{ display: laboratoryName }] : undefined,\n resourceType: 'Observation',\n status: 'final',\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n\n // Add value based on type (qualitative = string, quantitative = number)\n if (isQualitative) {\n fhirObs.valueString = String(observation.value);\n } else {\n fhirObs.valueQuantity = quantity(observation.value as number);\n\n // Reference range only applies to quantitative values\n const referenceRange = buildReferenceRanges(observation, quantity);\n if (referenceRange.length > 0) fhirObs.referenceRange = referenceRange;\n }\n\n return fhirObs;\n}\n\n/**\n * Convert generic lab report to FHIR DiagnosticReport\n */\nexport function labReportToFHIR(\n report: LabReportData,\n patientId: string,\n observationIds: string[],\n): Addressable<FHIRDiagnosticReport> {\n // Map processing status to FHIR status\n let status: FHIRDiagnosticReport['status'];\n switch (report.processingStatus) {\n case 'complete':\n status = 'final';\n break;\n case 'partial':\n status = 'partial';\n break;\n case 'pending_review':\n status = 'preliminary';\n break;\n default:\n status = 'final';\n }\n\n return {\n category: [\n {\n coding: [\n {\n code: 'LAB',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/v2-0074',\n },\n ],\n },\n ],\n code: {\n coding: [\n {\n code: '11502-2', // Laboratory report\n display: 'Laboratory report',\n system: 'http://loinc.org',\n },\n ],\n text: 'Laboratory Results',\n },\n conclusion:\n report.overallStatus === 'NORMAL'\n ? 'All results within normal limits'\n : 'One or more abnormal results detected',\n conclusionCode:\n report.overallStatus === 'ANORMAL'\n ? [\n {\n coding: [\n {\n code: 'A',\n display: 'Abnormal',\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ]\n : undefined,\n effectiveDateTime: report.collectionDate,\n id: report.reportId,\n issued: report.createdAt,\n performer: report.laboratoryName ? [{ display: report.laboratoryName }] : undefined,\n resourceType: 'DiagnosticReport',\n result: observationIds.map((id) => ({ reference: `Observation/${id}` })),\n status,\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n}\n\n/**\n * Convert user profile to FHIR Patient\n * NOTE: CPF is intentionally excluded for privacy (LGPD compliance)\n */\nexport function userProfileToFHIR(profile: UserProfileData): Addressable<FHIRPatient> {\n const nameParts = profile.name.split(' ');\n const given = nameParts.slice(0, -1);\n const family = nameParts[nameParts.length - 1] || '';\n\n return {\n address: profile.address\n ? [\n {\n city: profile.address.city,\n country: profile.address.country || 'BR',\n line: [\n profile.address.street && profile.address.number\n ? `${profile.address.street}, ${profile.address.number}`\n : profile.address.street,\n profile.address.complement,\n ].filter(Boolean) as string[],\n postalCode: profile.address.postalCode,\n state: profile.address.state,\n },\n ]\n : undefined,\n birthDate: profile.birthDate,\n gender: profile.gender,\n id: profile.userId,\n name: [\n {\n family,\n given: given.length > 0 ? given : undefined,\n text: profile.name,\n },\n ],\n resourceType: 'Patient',\n telecom:\n [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ].length > 0\n ? [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ]\n : undefined,\n };\n}\n\n/**\n * Convert complete lab result to FHIR Bundle\n * This is the main function for exporting lab results to FHIR R4 format\n */\nexport function labResultToFHIRBundle(\n report: LabReportData,\n observations: LabObservationData[],\n userProfile: UserProfileData,\n): FHIRBundle {\n const patientId = userProfile.userId;\n\n // Convert observations\n const fhirObservations = observations.map((obs) => {\n const resource = labObservationToFHIR(\n { ...obs, collectionDate: report.collectionDate },\n patientId,\n report.laboratoryName,\n );\n\n return { fullUrl: entryFullUrl(resource), resource };\n });\n\n // Os ids vêm dos recursos já montados, e não de uma segunda montagem da mesma\n // regra. O `DiagnosticReport.result` aponta para eles, e era aqui que a\n // referência se separava do recurso.\n const observationIds = fhirObservations.map((entry) => entry.resource.id);\n\n // Convert report\n const diagnosticReport = labReportToFHIR(report, patientId, observationIds);\n\n // Convert patient\n const fhirPatient = userProfileToFHIR(userProfile);\n\n return {\n entry: [\n { fullUrl: entryFullUrl(fhirPatient), resource: fhirPatient },\n { fullUrl: entryFullUrl(diagnosticReport), resource: diagnosticReport },\n ...fhirObservations,\n ],\n resourceType: 'Bundle',\n type: 'collection',\n };\n}\n"],"mappings":"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","names":[]}
|