@precisa-saude/fhir 0.31.5 → 0.32.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.
Files changed (38) hide show
  1. package/dist/biomarkers.cjs +2 -2
  2. package/dist/biomarkers.js +1 -1
  3. package/dist/{chunk-SDKLR3DT.cjs → chunk-44QMNDOI.cjs} +9 -9
  4. package/dist/{chunk-SDKLR3DT.cjs.map → chunk-44QMNDOI.cjs.map} +1 -1
  5. package/dist/{chunk-RM7KJAVA.js → chunk-4Y43MQQK.js} +5 -5
  6. package/dist/chunk-5FMR2U7P.cjs +342 -0
  7. package/dist/chunk-5FMR2U7P.cjs.map +1 -0
  8. package/dist/chunk-HQ26GOLI.js +342 -0
  9. package/dist/chunk-HQ26GOLI.js.map +1 -0
  10. package/dist/{chunk-QOXTLPQ2.cjs → chunk-MKH4Q735.cjs} +25 -4
  11. package/dist/chunk-MKH4Q735.cjs.map +1 -0
  12. package/dist/{chunk-6OG25HIE.js → chunk-MNUQ57JR.js} +2 -2
  13. package/dist/{chunk-EXOKBY6D.cjs → chunk-OTVCOSCK.cjs} +3 -3
  14. package/dist/{chunk-EXOKBY6D.cjs.map → chunk-OTVCOSCK.cjs.map} +1 -1
  15. package/dist/{chunk-PK5DQMPC.js → chunk-WDDW2WCY.js} +25 -4
  16. package/dist/chunk-WDDW2WCY.js.map +1 -0
  17. package/dist/cli.js +445 -20
  18. package/dist/converter.cjs +3 -3
  19. package/dist/converter.js +2 -2
  20. package/dist/importer.cjs +4 -4
  21. package/dist/importer.js +3 -3
  22. package/dist/index.cjs +16 -10
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +1 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +14 -8
  27. package/dist/index.js.map +1 -1
  28. package/dist/sources.cjs +9 -0
  29. package/dist/sources.cjs.map +1 -0
  30. package/dist/sources.d.cts +41 -0
  31. package/dist/sources.d.ts +41 -0
  32. package/dist/sources.js +9 -0
  33. package/dist/sources.js.map +1 -0
  34. package/package.json +11 -1
  35. package/dist/chunk-PK5DQMPC.js.map +0 -1
  36. package/dist/chunk-QOXTLPQ2.cjs.map +0 -1
  37. /package/dist/{chunk-RM7KJAVA.js.map → chunk-4Y43MQQK.js.map} +0 -0
  38. /package/dist/{chunk-6OG25HIE.js.map → chunk-MNUQ57JR.js.map} +0 -0
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- var _chunkQOXTLPQ2cjs = require('./chunk-QOXTLPQ2.cjs');
33
+ var _chunkMKH4Q735cjs = require('./chunk-MKH4Q735.cjs');
34
34
 
35
35
 
36
36
 
@@ -63,5 +63,5 @@ var _chunkQOXTLPQ2cjs = require('./chunk-QOXTLPQ2.cjs');
63
63
 
64
64
 
65
65
 
66
- exports.BIOMARKER_DEFINITIONS = _chunkQOXTLPQ2cjs.BIOMARKER_DEFINITIONS; exports.CAC_INDICATOR_CODES = _chunkQOXTLPQ2cjs.CAC_INDICATOR_CODES; exports.DEXA_CATEGORIES = _chunkQOXTLPQ2cjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunkQOXTLPQ2cjs.DEXA_INDICATOR_CODES; exports.codeToLoinc = _chunkQOXTLPQ2cjs.codeToLoinc; exports.filterVisibleBiomarkers = _chunkQOXTLPQ2cjs.filterVisibleBiomarkers; exports.findCodeByName = _chunkQOXTLPQ2cjs.findCodeByName; exports.generateCacFullReference = _chunkQOXTLPQ2cjs.generateCacFullReference; exports.generateDexaFullReference = _chunkQOXTLPQ2cjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunkQOXTLPQ2cjs.generateFilteredLLMReference; exports.generateLLMReference = _chunkQOXTLPQ2cjs.generateLLMReference; exports.getAllCodes = _chunkQOXTLPQ2cjs.getAllCodes; exports.getAllDefinitions = _chunkQOXTLPQ2cjs.getAllDefinitions; exports.getAllLoincCodes = _chunkQOXTLPQ2cjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunkQOXTLPQ2cjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunkQOXTLPQ2cjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunkQOXTLPQ2cjs.getBiomarkersForCategories; exports.getDefinitionByCode = _chunkQOXTLPQ2cjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunkQOXTLPQ2cjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunkQOXTLPQ2cjs.getDefinitionsBySex; exports.getSexForCode = _chunkQOXTLPQ2cjs.getSexForCode; exports.getVisibleDefinitions = _chunkQOXTLPQ2cjs.getVisibleDefinitions; exports.isBiomarkerVisible = _chunkQOXTLPQ2cjs.isBiomarkerVisible; exports.isCacDocument = _chunkQOXTLPQ2cjs.isCacDocument; exports.isDexaDocument = _chunkQOXTLPQ2cjs.isDexaDocument; exports.isValidCode = _chunkQOXTLPQ2cjs.isValidCode; exports.isValidLoinc = _chunkQOXTLPQ2cjs.isValidLoinc; exports.loincToCode = _chunkQOXTLPQ2cjs.loincToCode; exports.normalizeCode = _chunkQOXTLPQ2cjs.normalizeCode; exports.toBiomarkerTests = _chunkQOXTLPQ2cjs.toBiomarkerTests; exports.validateLoincNameMatch = _chunkQOXTLPQ2cjs.validateLoincNameMatch;
66
+ exports.BIOMARKER_DEFINITIONS = _chunkMKH4Q735cjs.BIOMARKER_DEFINITIONS; exports.CAC_INDICATOR_CODES = _chunkMKH4Q735cjs.CAC_INDICATOR_CODES; exports.DEXA_CATEGORIES = _chunkMKH4Q735cjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunkMKH4Q735cjs.DEXA_INDICATOR_CODES; exports.codeToLoinc = _chunkMKH4Q735cjs.codeToLoinc; exports.filterVisibleBiomarkers = _chunkMKH4Q735cjs.filterVisibleBiomarkers; exports.findCodeByName = _chunkMKH4Q735cjs.findCodeByName; exports.generateCacFullReference = _chunkMKH4Q735cjs.generateCacFullReference; exports.generateDexaFullReference = _chunkMKH4Q735cjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunkMKH4Q735cjs.generateFilteredLLMReference; exports.generateLLMReference = _chunkMKH4Q735cjs.generateLLMReference; exports.getAllCodes = _chunkMKH4Q735cjs.getAllCodes; exports.getAllDefinitions = _chunkMKH4Q735cjs.getAllDefinitions; exports.getAllLoincCodes = _chunkMKH4Q735cjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunkMKH4Q735cjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunkMKH4Q735cjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunkMKH4Q735cjs.getBiomarkersForCategories; exports.getDefinitionByCode = _chunkMKH4Q735cjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunkMKH4Q735cjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunkMKH4Q735cjs.getDefinitionsBySex; exports.getSexForCode = _chunkMKH4Q735cjs.getSexForCode; exports.getVisibleDefinitions = _chunkMKH4Q735cjs.getVisibleDefinitions; exports.isBiomarkerVisible = _chunkMKH4Q735cjs.isBiomarkerVisible; exports.isCacDocument = _chunkMKH4Q735cjs.isCacDocument; exports.isDexaDocument = _chunkMKH4Q735cjs.isDexaDocument; exports.isValidCode = _chunkMKH4Q735cjs.isValidCode; exports.isValidLoinc = _chunkMKH4Q735cjs.isValidLoinc; exports.loincToCode = _chunkMKH4Q735cjs.loincToCode; exports.normalizeCode = _chunkMKH4Q735cjs.normalizeCode; exports.toBiomarkerTests = _chunkMKH4Q735cjs.toBiomarkerTests; exports.validateLoincNameMatch = _chunkMKH4Q735cjs.validateLoincNameMatch;
67
67
  //# sourceMappingURL=biomarkers.cjs.map
@@ -30,7 +30,7 @@ import {
30
30
  normalizeCode,
31
31
  toBiomarkerTests,
32
32
  validateLoincNameMatch
33
- } from "./chunk-PK5DQMPC.js";
33
+ } from "./chunk-WDDW2WCY.js";
34
34
  export {
35
35
  BIOMARKER_DEFINITIONS,
36
36
  CAC_INDICATOR_CODES,
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
+ var _chunk3ILBFLVQcjs = require('./chunk-3ILBFLVQ.cjs');
3
4
 
4
- var _chunkOR67NJDZcjs = require('./chunk-OR67NJDZ.cjs');
5
5
 
6
6
 
7
+ var _chunkOR67NJDZcjs = require('./chunk-OR67NJDZ.cjs');
7
8
 
8
9
 
9
10
 
10
11
 
11
- var _chunkQOXTLPQ2cjs = require('./chunk-QOXTLPQ2.cjs');
12
12
 
13
13
 
14
- var _chunk3ILBFLVQcjs = require('./chunk-3ILBFLVQ.cjs');
14
+ var _chunkMKH4Q735cjs = require('./chunk-MKH4Q735.cjs');
15
15
 
16
16
  // src/importer.ts
17
17
  var MAX_OBSERVATIONS = 5e3;
@@ -33,11 +33,11 @@ function resolveBiomarkerCode(observation) {
33
33
  } else {
34
34
  reason = "No code found in observation coding";
35
35
  }
36
- const fromLoinc = loincCode ? _chunkQOXTLPQ2cjs.loincToCode.call(void 0, loincCode) : void 0;
36
+ const fromLoinc = loincCode ? _chunkMKH4Q735cjs.loincToCode.call(void 0, loincCode) : void 0;
37
37
  if (fromLoinc) return { internalCode: fromLoinc, loincCode, reason };
38
- if (declaredCode && _chunkQOXTLPQ2cjs.isValidCode.call(void 0, declaredCode)) {
39
- const canonical = _chunkQOXTLPQ2cjs.normalizeCode.call(void 0, declaredCode);
40
- return { internalCode: canonical, loincCode: _chunkQOXTLPQ2cjs.codeToLoinc.call(void 0, canonical), reason };
38
+ if (declaredCode && _chunkMKH4Q735cjs.isValidCode.call(void 0, declaredCode)) {
39
+ const canonical = _chunkMKH4Q735cjs.normalizeCode.call(void 0, declaredCode);
40
+ return { internalCode: canonical, loincCode: _chunkMKH4Q735cjs.codeToLoinc.call(void 0, canonical), reason };
41
41
  }
42
42
  return { loincCode, reason };
43
43
  }
@@ -74,7 +74,7 @@ function mapFHIRObservationToInternal(observation, index) {
74
74
  skipped: { index, loincCode, reason, resourceType: "Observation" }
75
75
  };
76
76
  }
77
- const definition = _chunkQOXTLPQ2cjs.getDefinitionByCode.call(void 0, internalCode);
77
+ const definition = _chunkMKH4Q735cjs.getDefinitionByCode.call(void 0, internalCode);
78
78
  let value;
79
79
  let unit = "";
80
80
  let isQualitative = false;
@@ -162,4 +162,4 @@ function processImportBundle(data) {
162
162
 
163
163
 
164
164
  exports.MAX_OBSERVATIONS = MAX_OBSERVATIONS; exports.MAX_FILE_SIZE = MAX_FILE_SIZE; exports.extractObservationsFromBundle = extractObservationsFromBundle; exports.mapFHIRObservationToInternal = mapFHIRObservationToInternal; exports.processImportBundle = processImportBundle;
165
- //# sourceMappingURL=chunk-SDKLR3DT.cjs.map
165
+ //# sourceMappingURL=chunk-44QMNDOI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-SDKLR3DT.cjs","../src/importer.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACgDA,IAAM,iBAAA,EAAmB,GAAA;AACzB,IAAM,cAAA,EAAgB,GAAA,EAAK,KAAA,EAAO,IAAA;AAclC,SAAS,oBAAA,CAAqB,WAAA,EAI5B;AACA,EAAA,MAAM,OAAA,mCAAS,WAAA,mBAAY,IAAA,6BAAM,QAAA,UAAU,CAAC,GAAA;AAC5C,EAAA,MAAM,UAAA,kBAAY,MAAA,qBAAO,IAAA,mBAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAA,IAAW,8BAAY,CAAA,6BAAG,MAAA;AACjE,EAAA,MAAM,aAAA,kBAAe,MAAA,qBAAO,IAAA,mBAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAA,IAAW,uCAAqB,CAAA,6BAAG,MAAA;AAE7E,EAAA,MAAM,UAAA,EAAY;AAAA,IAChB,GAAI,UAAA,EAAY,CAAC,CAAA,MAAA,EAAS,SAAS,CAAA,CAAA;AACf,IAAA;AACtB,EAAA;AAOI,EAAA;AACsB,EAAA;AACE,IAAA;AACE,EAAA;AACO,IAAA;AAC1B,IAAA;AACJ,EAAA;AACI,IAAA;AACX,EAAA;AAE8B,EAAA;AACN,EAAA;AAEQ,EAAA;AAOE,IAAA;AAIE,IAAA;AACpC,EAAA;AAE2B,EAAA;AAC7B;AAKmE;AACxC,EAAA;AACU,EAAA;AACA,EAAA;AAC5B,EAAA;AACT;AAK8C;AAIH,EAAA;AACR,EAAA;AAEA,EAAA;AACH,IAAA;AACP,IAAA;AACc,MAAA;AACjC,MAAA;AACF,IAAA;AAEmB,IAAA;AAEjB,MAAA;AACF,IAAA;AAE2B,IAAA;AACQ,MAAA;AACjC,MAAA;AACF,IAAA;AAEmD,IAAA;AACrD,EAAA;AAE+B,EAAA;AACjC;AAME;AAGiC,EAAA;AAEd,EAAA;AACV,IAAA;AACwB,MAAA;AAC/B,IAAA;AACF,EAAA;AAEmB,EAAA;AAGf,EAAA;AACO,EAAA;AACS,EAAA;AAEW,EAAA;AACK,IAAA;AACD,IAAA;AACC,EAAA;AACd,IAAA;AACJ,IAAA;AACX,EAAA;AACE,IAAA;AACI,MAAA;AACP,QAAA;AACA,QAAA;AACQ,QAAA;AACM,QAAA;AAChB,MAAA;AACF,IAAA;AACF,EAAA;AAGmC,EAAA;AACd,EAAA;AACZ,IAAA;AACI,MAAA;AACP,QAAA;AACA,QAAA;AACQ,QAAA;AACM,QAAA;AAChB,MAAA;AACF,IAAA;AACF,EAAA;AAGI,EAAA;AACA,EAAA;AACiC,EAAA;AACR,IAAA;AACA,IAAA;AAC7B,EAAA;AAEsC,EAAA;AACrB,IAAA;AAEK,IAAA;AACpB,IAAA;AAC6B,IAAA;AAC7B,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACkC,IAAA;AAClC,IAAA;AACF,EAAA;AAE+B,EAAA;AACjC;AAKqE;AAE1C,EAAA;AACQ,EAAA;AACxB,IAAA;AACG,MAAA;AACG,MAAA;AACD,MAAA;AACM,MAAA;AAClB,IAAA;AACF,EAAA;AAEe,EAAA;AAGmB,EAAA;AAGO,EAAA;AACK,EAAA;AAEb,EAAA;AAChB,IAAA;AAEc,IAAA;AACK,MAAA;AAC3B,IAAA;AACyB,MAAA;AAChC,IAAA;AACF,EAAA;AAEO,EAAA;AACI,IAAA;AACT,IAAA;AACS,IAAA;AACoB,IAAA;AAC/B,EAAA;AACF;ADnIuC;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-SDKLR3DT.cjs","sourcesContent":[null,"/**\n * FHIR Importer\n *\n * Parses FHIR R4 Bundles and extracts Observation resources with known LOINC codes,\n * mapping them to internal biomarker codes for storage as lab results.\n */\n\nimport {\n codeToLoinc,\n getDefinitionByCode,\n isValidCode,\n loincToCode,\n normalizeCode,\n} from './biomarkers';\nimport { BIOMARKER_CODE_SYSTEM, LOINC_SYSTEM } from './code-systems';\nimport type { FHIRBundle, FHIRObservation } from './fhir-types';\nimport { validateFHIRImportBundle } from './validators';\n\nexport interface ImportedObservation {\n biomarkerCode: string;\n biomarkerName: string;\n collectionDate: string;\n flag: 'H' | 'L' | '';\n isQualitative: boolean;\n /** Ausente nos biomarcadores sem LOINC publicado, como composição corporal. */\n loincCode?: string;\n referenceMax?: number;\n referenceMin?: number;\n unit: string;\n value: number | string;\n}\n\nexport interface SkippedEntry {\n index: number;\n loincCode?: string;\n reason: string;\n resourceType?: string;\n}\n\nexport interface ImportError {\n details: string;\n field: string;\n}\n\nexport interface FHIRImportResult {\n errors: ImportError[];\n imported: ImportedObservation[];\n skipped: SkippedEntry[];\n totalProcessed: number;\n}\n\n/**\n * Limites de importação.\n *\n * Uma Observation exportada ocupa cerca de 1,25KB em JSON compacto e 2,75KB\n * quando o arquivo vem indentado, medido sobre um histórico real de 998\n * Observations em 61 laudos. Nesse tamanho, 5000 Observations dão 6,0MB\n * compactos ou 13,1MB indentados, e por isso o teto de arquivo é 15MB: cobre\n * as duas formas com folga.\n *\n * Na densidade desse mesmo histórico (16 Observations por laudo), 5000\n * equivalem a cerca de 300 laudos.\n */\nconst MAX_OBSERVATIONS = 5000;\nconst MAX_FILE_SIZE = 15 * 1024 * 1024; // 15MB\n\n/**\n * Resolve o código interno do biomarcador a partir do `code.coding`.\n *\n * LOINC primeiro, que é o vocabulário que arquivos de terceiros usam. Quando\n * não resolve, cai para o coding de códigos internos, presente nos arquivos\n * exportados pela própria plataforma.\n *\n * O fallback cobre dois casos: biomarcadores sem LOINC publicado (composição\n * corporal, densidade óssea, escore de cálcio) e arquivos antigos, exportados\n * quando esses biomarcadores saíam com o placeholder `99999-9`, que não\n * resolve para nada.\n */\nfunction resolveBiomarkerCode(observation: FHIRObservation): {\n internalCode?: string;\n loincCode?: string;\n reason: string;\n} {\n const coding = observation.code?.coding ?? [];\n const loincCode = coding.find((c) => c.system === LOINC_SYSTEM)?.code;\n const declaredCode = coding.find((c) => c.system === BIOMARKER_CODE_SYSTEM)?.code;\n\n const seenCodes = [\n ...(loincCode ? [`LOINC ${loincCode}`] : []),\n ...(declaredCode ? [`biomarker code ${declaredCode}`] : []),\n ];\n\n // Três motivos distintos de descarte, que antes se confundiam num só. Sem\n // essa separação, um arquivo em SNOMED relatava \"nenhum código encontrado\",\n // sugerindo `coding` vazio quando na verdade o código existia e estava num\n // system que não tratamos. Para importação de terceiros, é a diferença entre\n // um diagnóstico acionável e um enigma.\n let reason: string;\n if (seenCodes.length > 0) {\n reason = `Unknown code: ${seenCodes.join(', ')}`;\n } else if (coding.length > 0) {\n const systems = [...new Set(coding.map((c) => c.system ?? '(sem system)'))];\n reason = `No code in a supported system (found: ${systems.join(', ')})`;\n } else {\n reason = 'No code found in observation coding';\n }\n\n const fromLoinc = loincCode ? loincToCode(loincCode) : undefined;\n if (fromLoinc) return { internalCode: fromLoinc, loincCode, reason };\n\n if (declaredCode && isValidCode(declaredCode)) {\n // `isValidCode` aceita alias, mas alias não serve como código armazenado:\n // 49 definições têm um, e tanto `codeToLoinc` quanto as faixas de\n // referência são indexadas só pelo canônico. Sem normalizar, `VLDL_Cholesterol`\n // entraria no lugar de `VLDL` e perderia o LOINC 13458-5 que ele tem.\n // Importar um Bundle é fronteira de dados, que é onde `normalizeCode` deve\n // ser aplicado.\n const canonical = normalizeCode(declaredCode);\n\n // `codeToLoinc` devolve undefined para quem não tem LOINC, que é o caso\n // esperado aqui. O campo fica de fora em vez de receber um valor inventado.\n return { internalCode: canonical, loincCode: codeToLoinc(canonical), reason };\n }\n\n return { loincCode, reason };\n}\n\n/**\n * Extract interpretation flag from Observation\n */\nfunction extractFlag(observation: FHIRObservation): 'H' | 'L' | '' {\n const code = observation.interpretation?.[0]?.coding?.[0]?.code;\n if (code === 'H' || code === 'HH') return 'H';\n if (code === 'L' || code === 'LL') return 'L';\n return '';\n}\n\n/**\n * Extract Observation resources from a FHIR Bundle\n */\nexport function extractObservationsFromBundle(bundle: FHIRBundle): {\n observations: FHIRObservation[];\n skipped: SkippedEntry[];\n} {\n const observations: FHIRObservation[] = [];\n const skipped: SkippedEntry[] = [];\n\n for (let i = 0; i < bundle.entry.length; i++) {\n const entry = bundle.entry[i]!;\n if (!entry.resource) {\n skipped.push({ index: i, reason: 'Entry has no resource' });\n continue;\n }\n\n if (entry.resource.resourceType !== 'Observation') {\n // Non-observation resources are silently skipped (Patient, DiagnosticReport, etc.)\n continue;\n }\n\n if (observations.length >= MAX_OBSERVATIONS) {\n skipped.push({ index: i, reason: `Maximum of ${MAX_OBSERVATIONS} observations exceeded` });\n continue;\n }\n\n observations.push(entry.resource as FHIRObservation);\n }\n\n return { observations, skipped };\n}\n\n/**\n * Map a FHIR Observation to internal format using LOINC→biomarker code lookup\n */\nexport function mapFHIRObservationToInternal(\n observation: FHIRObservation,\n index: number,\n): { observation: ImportedObservation } | { skipped: SkippedEntry } {\n const { internalCode, loincCode, reason } = resolveBiomarkerCode(observation);\n\n if (!internalCode) {\n return {\n skipped: { index, loincCode, reason, resourceType: 'Observation' },\n };\n }\n\n const definition = getDefinitionByCode(internalCode);\n\n // Extract value\n let value: number | string;\n let unit = '';\n let isQualitative = false;\n\n if (observation.valueQuantity?.value !== undefined) {\n value = observation.valueQuantity.value;\n unit = observation.valueQuantity.unit || observation.valueQuantity.code || '';\n } else if (observation.valueString) {\n value = observation.valueString;\n isQualitative = true;\n } else {\n return {\n skipped: {\n index,\n loincCode,\n reason: 'Observation has no value (valueQuantity or valueString)',\n resourceType: 'Observation',\n },\n };\n }\n\n // Extract collection date (effectiveDateTime or effectivePeriod.start)\n const collectionDate = observation.effectiveDateTime || observation.effectivePeriod?.start || '';\n if (!collectionDate) {\n return {\n skipped: {\n index,\n loincCode,\n reason: 'Observation has no effectiveDateTime or effectivePeriod.start',\n resourceType: 'Observation',\n },\n };\n }\n\n // Extract reference ranges\n let referenceMin: number | undefined;\n let referenceMax: number | undefined;\n if (observation.referenceRange?.[0]) {\n referenceMin = observation.referenceRange[0].low?.value;\n referenceMax = observation.referenceRange[0].high?.value;\n }\n\n const imported: ImportedObservation = {\n biomarkerCode: internalCode,\n biomarkerName:\n definition?.names.pt[0] || definition?.names.en[0] || observation.code.text || internalCode,\n collectionDate,\n flag: extractFlag(observation),\n isQualitative,\n loincCode,\n referenceMax,\n referenceMin,\n unit: unit || definition?.unit || '',\n value,\n };\n\n return { observation: imported };\n}\n\n/**\n * Process a complete FHIR Bundle for import\n */\nexport function processImportBundle(data: unknown): FHIRImportResult {\n // Structural validation\n const validationErrors = validateFHIRImportBundle(data);\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors,\n imported: [],\n skipped: [],\n totalProcessed: 0,\n };\n }\n\n const bundle = data as FHIRBundle;\n\n // Extract observations\n const { observations, skipped } = extractObservationsFromBundle(bundle);\n\n // Map each observation to internal format\n const imported: ImportedObservation[] = [];\n const allSkipped: SkippedEntry[] = [...skipped];\n\n for (let i = 0; i < observations.length; i++) {\n const result = mapFHIRObservationToInternal(observations[i]!, i);\n\n if ('observation' in result) {\n imported.push(result.observation);\n } else {\n allSkipped.push(result.skipped);\n }\n }\n\n return {\n errors: [],\n imported,\n skipped: allSkipped,\n totalProcessed: observations.length,\n };\n}\n\nexport { MAX_FILE_SIZE, MAX_OBSERVATIONS };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-44QMNDOI.cjs","../src/importer.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACgDA,IAAM,iBAAA,EAAmB,GAAA;AACzB,IAAM,cAAA,EAAgB,GAAA,EAAK,KAAA,EAAO,IAAA;AAclC,SAAS,oBAAA,CAAqB,WAAA,EAI5B;AACA,EAAA,MAAM,OAAA,mCAAS,WAAA,mBAAY,IAAA,6BAAM,QAAA,UAAU,CAAC,GAAA;AAC5C,EAAA,MAAM,UAAA,kBAAY,MAAA,qBAAO,IAAA,mBAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAA,IAAW,8BAAY,CAAA,6BAAG,MAAA;AACjE,EAAA,MAAM,aAAA,kBAAe,MAAA,qBAAO,IAAA,mBAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,OAAA,IAAW,uCAAqB,CAAA,6BAAG,MAAA;AAE7E,EAAA,MAAM,UAAA,EAAY;AAAA,IAChB,GAAI,UAAA,EAAY,CAAC,CAAA,MAAA,EAAS,SAAS,CAAA,CAAA;AACf,IAAA;AACtB,EAAA;AAOI,EAAA;AACsB,EAAA;AACE,IAAA;AACE,EAAA;AACO,IAAA;AAC1B,IAAA;AACJ,EAAA;AACI,IAAA;AACX,EAAA;AAE8B,EAAA;AACN,EAAA;AAEQ,EAAA;AAOE,IAAA;AAIE,IAAA;AACpC,EAAA;AAE2B,EAAA;AAC7B;AAKmE;AACxC,EAAA;AACU,EAAA;AACA,EAAA;AAC5B,EAAA;AACT;AAK8C;AAIH,EAAA;AACR,EAAA;AAEA,EAAA;AACH,IAAA;AACP,IAAA;AACc,MAAA;AACjC,MAAA;AACF,IAAA;AAEmB,IAAA;AAEjB,MAAA;AACF,IAAA;AAE2B,IAAA;AACQ,MAAA;AACjC,MAAA;AACF,IAAA;AAEmD,IAAA;AACrD,EAAA;AAE+B,EAAA;AACjC;AAME;AAGiC,EAAA;AAEd,EAAA;AACV,IAAA;AACwB,MAAA;AAC/B,IAAA;AACF,EAAA;AAEmB,EAAA;AAGf,EAAA;AACO,EAAA;AACS,EAAA;AAEW,EAAA;AACK,IAAA;AACD,IAAA;AACC,EAAA;AACd,IAAA;AACJ,IAAA;AACX,EAAA;AACE,IAAA;AACI,MAAA;AACP,QAAA;AACA,QAAA;AACQ,QAAA;AACM,QAAA;AAChB,MAAA;AACF,IAAA;AACF,EAAA;AAGmC,EAAA;AACd,EAAA;AACZ,IAAA;AACI,MAAA;AACP,QAAA;AACA,QAAA;AACQ,QAAA;AACM,QAAA;AAChB,MAAA;AACF,IAAA;AACF,EAAA;AAGI,EAAA;AACA,EAAA;AACiC,EAAA;AACR,IAAA;AACA,IAAA;AAC7B,EAAA;AAEsC,EAAA;AACrB,IAAA;AAEK,IAAA;AACpB,IAAA;AAC6B,IAAA;AAC7B,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACkC,IAAA;AAClC,IAAA;AACF,EAAA;AAE+B,EAAA;AACjC;AAKqE;AAE1C,EAAA;AACQ,EAAA;AACxB,IAAA;AACG,MAAA;AACG,MAAA;AACD,MAAA;AACM,MAAA;AAClB,IAAA;AACF,EAAA;AAEe,EAAA;AAGmB,EAAA;AAGO,EAAA;AACK,EAAA;AAEb,EAAA;AAChB,IAAA;AAEc,IAAA;AACK,MAAA;AAC3B,IAAA;AACyB,MAAA;AAChC,IAAA;AACF,EAAA;AAEO,EAAA;AACI,IAAA;AACT,IAAA;AACS,IAAA;AACoB,IAAA;AAC/B,EAAA;AACF;ADnIuC;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-44QMNDOI.cjs","sourcesContent":[null,"/**\n * FHIR Importer\n *\n * Parses FHIR R4 Bundles and extracts Observation resources with known LOINC codes,\n * mapping them to internal biomarker codes for storage as lab results.\n */\n\nimport {\n codeToLoinc,\n getDefinitionByCode,\n isValidCode,\n loincToCode,\n normalizeCode,\n} from './biomarkers';\nimport { BIOMARKER_CODE_SYSTEM, LOINC_SYSTEM } from './code-systems';\nimport type { FHIRBundle, FHIRObservation } from './fhir-types';\nimport { validateFHIRImportBundle } from './validators';\n\nexport interface ImportedObservation {\n biomarkerCode: string;\n biomarkerName: string;\n collectionDate: string;\n flag: 'H' | 'L' | '';\n isQualitative: boolean;\n /** Ausente nos biomarcadores sem LOINC publicado, como composição corporal. */\n loincCode?: string;\n referenceMax?: number;\n referenceMin?: number;\n unit: string;\n value: number | string;\n}\n\nexport interface SkippedEntry {\n index: number;\n loincCode?: string;\n reason: string;\n resourceType?: string;\n}\n\nexport interface ImportError {\n details: string;\n field: string;\n}\n\nexport interface FHIRImportResult {\n errors: ImportError[];\n imported: ImportedObservation[];\n skipped: SkippedEntry[];\n totalProcessed: number;\n}\n\n/**\n * Limites de importação.\n *\n * Uma Observation exportada ocupa cerca de 1,25KB em JSON compacto e 2,75KB\n * quando o arquivo vem indentado, medido sobre um histórico real de 998\n * Observations em 61 laudos. Nesse tamanho, 5000 Observations dão 6,0MB\n * compactos ou 13,1MB indentados, e por isso o teto de arquivo é 15MB: cobre\n * as duas formas com folga.\n *\n * Na densidade desse mesmo histórico (16 Observations por laudo), 5000\n * equivalem a cerca de 300 laudos.\n */\nconst MAX_OBSERVATIONS = 5000;\nconst MAX_FILE_SIZE = 15 * 1024 * 1024; // 15MB\n\n/**\n * Resolve o código interno do biomarcador a partir do `code.coding`.\n *\n * LOINC primeiro, que é o vocabulário que arquivos de terceiros usam. Quando\n * não resolve, cai para o coding de códigos internos, presente nos arquivos\n * exportados pela própria plataforma.\n *\n * O fallback cobre dois casos: biomarcadores sem LOINC publicado (composição\n * corporal, densidade óssea, escore de cálcio) e arquivos antigos, exportados\n * quando esses biomarcadores saíam com o placeholder `99999-9`, que não\n * resolve para nada.\n */\nfunction resolveBiomarkerCode(observation: FHIRObservation): {\n internalCode?: string;\n loincCode?: string;\n reason: string;\n} {\n const coding = observation.code?.coding ?? [];\n const loincCode = coding.find((c) => c.system === LOINC_SYSTEM)?.code;\n const declaredCode = coding.find((c) => c.system === BIOMARKER_CODE_SYSTEM)?.code;\n\n const seenCodes = [\n ...(loincCode ? [`LOINC ${loincCode}`] : []),\n ...(declaredCode ? [`biomarker code ${declaredCode}`] : []),\n ];\n\n // Três motivos distintos de descarte, que antes se confundiam num só. Sem\n // essa separação, um arquivo em SNOMED relatava \"nenhum código encontrado\",\n // sugerindo `coding` vazio quando na verdade o código existia e estava num\n // system que não tratamos. Para importação de terceiros, é a diferença entre\n // um diagnóstico acionável e um enigma.\n let reason: string;\n if (seenCodes.length > 0) {\n reason = `Unknown code: ${seenCodes.join(', ')}`;\n } else if (coding.length > 0) {\n const systems = [...new Set(coding.map((c) => c.system ?? '(sem system)'))];\n reason = `No code in a supported system (found: ${systems.join(', ')})`;\n } else {\n reason = 'No code found in observation coding';\n }\n\n const fromLoinc = loincCode ? loincToCode(loincCode) : undefined;\n if (fromLoinc) return { internalCode: fromLoinc, loincCode, reason };\n\n if (declaredCode && isValidCode(declaredCode)) {\n // `isValidCode` aceita alias, mas alias não serve como código armazenado:\n // 49 definições têm um, e tanto `codeToLoinc` quanto as faixas de\n // referência são indexadas só pelo canônico. Sem normalizar, `VLDL_Cholesterol`\n // entraria no lugar de `VLDL` e perderia o LOINC 13458-5 que ele tem.\n // Importar um Bundle é fronteira de dados, que é onde `normalizeCode` deve\n // ser aplicado.\n const canonical = normalizeCode(declaredCode);\n\n // `codeToLoinc` devolve undefined para quem não tem LOINC, que é o caso\n // esperado aqui. O campo fica de fora em vez de receber um valor inventado.\n return { internalCode: canonical, loincCode: codeToLoinc(canonical), reason };\n }\n\n return { loincCode, reason };\n}\n\n/**\n * Extract interpretation flag from Observation\n */\nfunction extractFlag(observation: FHIRObservation): 'H' | 'L' | '' {\n const code = observation.interpretation?.[0]?.coding?.[0]?.code;\n if (code === 'H' || code === 'HH') return 'H';\n if (code === 'L' || code === 'LL') return 'L';\n return '';\n}\n\n/**\n * Extract Observation resources from a FHIR Bundle\n */\nexport function extractObservationsFromBundle(bundle: FHIRBundle): {\n observations: FHIRObservation[];\n skipped: SkippedEntry[];\n} {\n const observations: FHIRObservation[] = [];\n const skipped: SkippedEntry[] = [];\n\n for (let i = 0; i < bundle.entry.length; i++) {\n const entry = bundle.entry[i]!;\n if (!entry.resource) {\n skipped.push({ index: i, reason: 'Entry has no resource' });\n continue;\n }\n\n if (entry.resource.resourceType !== 'Observation') {\n // Non-observation resources are silently skipped (Patient, DiagnosticReport, etc.)\n continue;\n }\n\n if (observations.length >= MAX_OBSERVATIONS) {\n skipped.push({ index: i, reason: `Maximum of ${MAX_OBSERVATIONS} observations exceeded` });\n continue;\n }\n\n observations.push(entry.resource as FHIRObservation);\n }\n\n return { observations, skipped };\n}\n\n/**\n * Map a FHIR Observation to internal format using LOINC→biomarker code lookup\n */\nexport function mapFHIRObservationToInternal(\n observation: FHIRObservation,\n index: number,\n): { observation: ImportedObservation } | { skipped: SkippedEntry } {\n const { internalCode, loincCode, reason } = resolveBiomarkerCode(observation);\n\n if (!internalCode) {\n return {\n skipped: { index, loincCode, reason, resourceType: 'Observation' },\n };\n }\n\n const definition = getDefinitionByCode(internalCode);\n\n // Extract value\n let value: number | string;\n let unit = '';\n let isQualitative = false;\n\n if (observation.valueQuantity?.value !== undefined) {\n value = observation.valueQuantity.value;\n unit = observation.valueQuantity.unit || observation.valueQuantity.code || '';\n } else if (observation.valueString) {\n value = observation.valueString;\n isQualitative = true;\n } else {\n return {\n skipped: {\n index,\n loincCode,\n reason: 'Observation has no value (valueQuantity or valueString)',\n resourceType: 'Observation',\n },\n };\n }\n\n // Extract collection date (effectiveDateTime or effectivePeriod.start)\n const collectionDate = observation.effectiveDateTime || observation.effectivePeriod?.start || '';\n if (!collectionDate) {\n return {\n skipped: {\n index,\n loincCode,\n reason: 'Observation has no effectiveDateTime or effectivePeriod.start',\n resourceType: 'Observation',\n },\n };\n }\n\n // Extract reference ranges\n let referenceMin: number | undefined;\n let referenceMax: number | undefined;\n if (observation.referenceRange?.[0]) {\n referenceMin = observation.referenceRange[0].low?.value;\n referenceMax = observation.referenceRange[0].high?.value;\n }\n\n const imported: ImportedObservation = {\n biomarkerCode: internalCode,\n biomarkerName:\n definition?.names.pt[0] || definition?.names.en[0] || observation.code.text || internalCode,\n collectionDate,\n flag: extractFlag(observation),\n isQualitative,\n loincCode,\n referenceMax,\n referenceMin,\n unit: unit || definition?.unit || '',\n value,\n };\n\n return { observation: imported };\n}\n\n/**\n * Process a complete FHIR Bundle for import\n */\nexport function processImportBundle(data: unknown): FHIRImportResult {\n // Structural validation\n const validationErrors = validateFHIRImportBundle(data);\n if (validationErrors.length > 0) {\n return {\n errors: validationErrors,\n imported: [],\n skipped: [],\n totalProcessed: 0,\n };\n }\n\n const bundle = data as FHIRBundle;\n\n // Extract observations\n const { observations, skipped } = extractObservationsFromBundle(bundle);\n\n // Map each observation to internal format\n const imported: ImportedObservation[] = [];\n const allSkipped: SkippedEntry[] = [...skipped];\n\n for (let i = 0; i < observations.length; i++) {\n const result = mapFHIRObservationToInternal(observations[i]!, i);\n\n if ('observation' in result) {\n imported.push(result.observation);\n } else {\n allSkipped.push(result.skipped);\n }\n }\n\n return {\n errors: [],\n imported,\n skipped: allSkipped,\n totalProcessed: observations.length,\n };\n}\n\nexport { MAX_FILE_SIZE, MAX_OBSERVATIONS };\n"]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ validateFHIRImportBundle
3
+ } from "./chunk-N3ZCOLG2.js";
1
4
  import {
2
5
  BIOMARKER_CODE_SYSTEM,
3
6
  LOINC_SYSTEM
@@ -8,10 +11,7 @@ import {
8
11
  isValidCode,
9
12
  loincToCode,
10
13
  normalizeCode
11
- } from "./chunk-PK5DQMPC.js";
12
- import {
13
- validateFHIRImportBundle
14
- } from "./chunk-N3ZCOLG2.js";
14
+ } from "./chunk-WDDW2WCY.js";
15
15
 
16
16
  // src/importer.ts
17
17
  var MAX_OBSERVATIONS = 5e3;
@@ -162,4 +162,4 @@ export {
162
162
  mapFHIRObservationToInternal,
163
163
  processImportBundle
164
164
  };
165
- //# sourceMappingURL=chunk-RM7KJAVA.js.map
165
+ //# sourceMappingURL=chunk-4Y43MQQK.js.map
@@ -0,0 +1,342 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/sources.ts
2
+ var SOURCE_REGISTRY = {
3
+ // ---------------------------------------------------------------------------
4
+ // Fontes internacionais — Cardiovascular
5
+ // ---------------------------------------------------------------------------
6
+ "agatston-1990": {
7
+ abnt: "AGATSTON, A. S. et al. Quantification of coronary artery calcium using ultrafast computed tomography. Journal of the American College of Cardiology, v. 15, n. 4, p. 827-832, 1990.",
8
+ doi: "10.1016/0735-1097(90)90282-T",
9
+ key: "agatston-1990",
10
+ url: "https://pubmed.ncbi.nlm.nih.gov/2407762/"
11
+ },
12
+ "browning-ashwell-2010": {
13
+ abnt: "BROWNING, L. M.; HSIEH, S. D.; ASHWELL, M. A systematic review of waist-to-height ratio as a screening tool for the prediction of cardiovascular disease and diabetes: 0,5 could be a suitable global boundary value. Nutrition Research Reviews, v. 23, n. 2, p. 247-269, 2010.",
14
+ doi: "10.1017/S0954422410000144",
15
+ key: "browning-ashwell-2010",
16
+ url: "https://pubmed.ncbi.nlm.nih.gov/20819243/"
17
+ },
18
+ "castelli-ratio-1992": {
19
+ abnt: "CASTELLI, W. P. et al. Lipids and risk of coronary heart disease: the Framingham Study. Annals of Epidemiology, v. 2, n. 1-2, p. 23-28, 1992.",
20
+ doi: "10.1016/1047-2797(92)90033-M",
21
+ key: "castelli-ratio-1992",
22
+ url: "https://pubmed.ncbi.nlm.nih.gov/1342260/"
23
+ },
24
+ "caulfield-ionmobility-2008": {
25
+ abnt: "CAULFIELD, M. P. et al. Direct determination of lipoprotein particle sizes and concentrations by ion mobility analysis. Clinical Chemistry, v. 54, n. 8, p. 1307-1316, 2008.",
26
+ doi: "10.1373/clinchem.2007.100586",
27
+ key: "caulfield-ionmobility-2008",
28
+ url: "https://pubmed.ncbi.nlm.nih.gov/18515257/"
29
+ },
30
+ "contois-apoa1-1996": {
31
+ abnt: "CONTOIS, J. H. et al. Reference intervals for plasma apolipoprotein A-1 determined with a standardized commercial immunoturbidimetric assay: results from the Framingham Offspring Study. Clinical Chemistry, v. 42, n. 4, p. 507-514, 1996.",
32
+ doi: "10.1093/clinchem/42.4.507",
33
+ key: "contois-apoa1-1996",
34
+ url: "https://pubmed.ncbi.nlm.nih.gov/8605666/"
35
+ },
36
+ "ewgsop2-2019": {
37
+ abnt: "CRUZ-JENTOFT, A. J. et al. Sarcopenia: revised European consensus on definition and diagnosis. Age and Ageing, v. 48, n. 1, p. 16-31, 2019.",
38
+ doi: "10.1093/ageing/afy169",
39
+ key: "ewgsop2-2019",
40
+ url: "https://pubmed.ncbi.nlm.nih.gov/30312372/"
41
+ },
42
+ "ferreira-vitd-2017": {
43
+ abnt: "FERREIRA, C. E. S. et al. Posicionamento oficial da Sociedade Brasileira de Patologia Cl\xEDnica/Medicina Laboratorial e da Sociedade Brasileira de Endocrinologia e Metabologia sobre intervalos de refer\xEAncia da vitamina D [25(OH)D]. Archives of Endocrinology and Metabolism, v. 61, n. 6, p. 527-542, 2017.",
44
+ doi: "10.1590/2359-3997000000310",
45
+ key: "ferreira-vitd-2017",
46
+ url: "https://pubmed.ncbi.nlm.nih.gov/29412389/"
47
+ },
48
+ "friedewald-1972": {
49
+ abnt: "FRIEDEWALD, W. T.; LEVY, R. I.; FREDRICKSON, D. S. Estimation of the concentration of low-density lipoprotein cholesterol in plasma, without use of the preparative ultracentrifuge. Clinical Chemistry, v. 18, n. 6, p. 499-502, 1972.",
50
+ doi: "10.1093/clinchem/18.6.499",
51
+ key: "friedewald-1972",
52
+ url: "https://pubmed.ncbi.nlm.nih.gov/4337382/"
53
+ },
54
+ "gallagher-bodyfat-2000": {
55
+ abnt: "GALLAGHER, D. et al. Healthy percentage body fat ranges: an approach for developing guidelines based on body mass index. American Journal of Clinical Nutrition, v. 72, n. 3, p. 694-701, 2000.",
56
+ key: "gallagher-bodyfat-2000",
57
+ url: "https://pubmed.ncbi.nlm.nih.gov/10966886/"
58
+ },
59
+ "ge-corescan": {
60
+ abnt: "GE HEALTHCARE. enCORE Software CoreScan: Visceral Adipose Tissue (VAT) assessment. Madison: GE Medical Systems Lunar, [s. d.]. (Documenta\xE7\xE3o do fabricante do DEXA Lunar Prodigy; classifica\xE7\xE3o Healthy 0\u201352 in\xB3, Increased Risk 52,15\u2013112,10 in\xB3, At Risk 112,10+ in\xB3, equivalente a 0\u2013852 cm\xB3, 854\u20131.837 cm\xB3, 1.837+ cm\xB3.)",
61
+ key: "ge-corescan",
62
+ url: "https://www.gehealthcare.com/products/bone-and-metabolic-health/encore"
63
+ },
64
+ "geloneze-brams-2009": {
65
+ abnt: "GELONEZE, B. et al. HOMA1-IR and HOMA2-IR indexes in identifying insulin resistance and metabolic syndrome \u2014 Brazilian Metabolic Syndrome Study (BRAMS). Arquivos Brasileiros de Endocrinologia & Metabologia, v. 53, n. 2, p. 281-287, 2009.",
66
+ doi: "10.1590/S0004-27302009000200020",
67
+ key: "geloneze-brams-2009",
68
+ url: "https://pubmed.ncbi.nlm.nih.gov/19466221/"
69
+ },
70
+ "george-ck-2016": {
71
+ abnt: "GEORGE, M. D.; MCGILL, N. K.; BAKER, J. F. Creatine kinase in the U.S. population: impact of demographics, comorbidities, and body composition on the normal range. Medicine, v. 95, n. 33, e4344, 2016.",
72
+ doi: "10.1097/MD.0000000000004344",
73
+ key: "george-ck-2016",
74
+ url: "https://pubmed.ncbi.nlm.nih.gov/27537560/"
75
+ },
76
+ "giannitsis-hstnt-2010": {
77
+ abnt: "GIANNITSIS, E. et al. Analytical validation of a high-sensitivity cardiac troponin T assay. Clinical Chemistry, v. 56, n. 2, p. 254-261, 2010.",
78
+ doi: "10.1373/clinchem.2009.132654",
79
+ key: "giannitsis-hstnt-2010",
80
+ url: "https://pubmed.ncbi.nlm.nih.gov/19959623/"
81
+ },
82
+ "glis-2024": {
83
+ abnt: "KIRK, B. et al. The conceptual definition of sarcopenia: Delphi consensus from the Global Leadership Initiative in Sarcopenia (GLIS). Age and Ageing, v. 53, n. 3, afae052, 2024.",
84
+ doi: "10.1093/ageing/afae052",
85
+ key: "glis-2024",
86
+ url: "https://pubmed.ncbi.nlm.nih.gov/38520141/"
87
+ },
88
+ // ---------------------------------------------------------------------------
89
+ // Fontes internacionais — Ácidos graxos ômega
90
+ // ---------------------------------------------------------------------------
91
+ "harris-omega3-2004": {
92
+ abnt: "HARRIS, W. S.; VON SCHACKY, C. The Omega-3 Index: a new risk factor for death from coronary heart disease? Preventive Medicine, v. 39, n. 1, p. 212-220, 2004.",
93
+ doi: "10.1016/j.ypmed.2004.02.030",
94
+ key: "harris-omega3-2004",
95
+ url: "https://pubmed.ncbi.nlm.nih.gov/15208005/"
96
+ },
97
+ // ---------------------------------------------------------------------------
98
+ // Referência laboratorial geral
99
+ // ---------------------------------------------------------------------------
100
+ "kalaria-ck-ri-2026": {
101
+ abnt: "KALARIA, T. et al. Age, sex and ethnicity changes in creatine kinase and sex- and ethnicity-specific reference intervals of creatine kinase. Clinical Medicine, v. 26, n. 4, p. 100596, 2026.",
102
+ doi: "10.1016/j.clinme.2026.100596",
103
+ key: "kalaria-ck-ri-2026",
104
+ url: "https://pubmed.ncbi.nlm.nih.gov/42142664/"
105
+ },
106
+ // ---------------------------------------------------------------------------
107
+ // Fontes internacionais — Nefrologia
108
+ // ---------------------------------------------------------------------------
109
+ "kdigo-ckd-2024": {
110
+ abnt: "KIDNEY DISEASE: IMPROVING GLOBAL OUTCOMES (KDIGO) CKD Work Group. KDIGO 2024 Clinical Practice Guideline for the Evaluation and Management of Chronic Kidney Disease. Kidney International, v. 105, n. 4S, p. S117-S314, 2024.",
111
+ doi: "10.1016/j.kint.2023.10.018",
112
+ key: "kdigo-ckd-2024",
113
+ url: "https://pubmed.ncbi.nlm.nih.gov/38490803/"
114
+ },
115
+ "keller-tni-2013": {
116
+ abnt: "KELLER, T. et al. Defining a reference population to determine the 99th percentile of a contemporary sensitive cardiac troponin I assay. International Journal of Cardiology, v. 167, n. 4, p. 1423-1429, 2013.",
117
+ doi: "10.1016/j.ijcard.2012.04.063",
118
+ key: "keller-tni-2013",
119
+ url: "https://pubmed.ncbi.nlm.nih.gov/22560907/"
120
+ },
121
+ "kelly-dxa-2009": {
122
+ abnt: "KELLY, T. L. et al. Dual energy X-ray absorptiometry body composition reference values from NHANES. PLoS One, v. 4, n. 9, e7038, 2009.",
123
+ doi: "10.1371/journal.pone.0007038",
124
+ key: "kelly-dxa-2009",
125
+ url: "https://pubmed.ncbi.nlm.nih.gov/19753111/"
126
+ },
127
+ "khetarpal-apociii-2016": {
128
+ abnt: "KHETARPAL, S. A. et al. Why is apolipoprotein CIII emerging as a novel therapeutic target to reduce the burden of cardiovascular disease? Current Atherosclerosis Reports, v. 18, n. 10, p. 59, 2016.",
129
+ key: "khetarpal-apociii-2016",
130
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC5018018/"
131
+ },
132
+ "klee-bhb-2020": {
133
+ abnt: "KLEE, P. et al. Test validation, method comparison and reference range for the measurement of \u03B2-hydroxybutyrate in peripheral blood samples. Practical Laboratory Medicine, v. 18, e00146, 2020.",
134
+ doi: "10.1016/j.plabm.2019.e00146",
135
+ key: "klee-bhb-2020",
136
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC6999181/"
137
+ },
138
+ "maisel-bnp-2002": {
139
+ abnt: "MAISEL, A. S. et al. Rapid measurement of B-type natriuretic peptide in the emergency diagnosis of heart failure. New England Journal of Medicine, v. 347, n. 3, p. 161-167, 2002.",
140
+ doi: "10.1056/NEJMoa020233",
141
+ key: "maisel-bnp-2002",
142
+ url: "https://pubmed.ncbi.nlm.nih.gov/12124404/"
143
+ },
144
+ "meuwese-mpo-2007": {
145
+ abnt: "MEUWESE, M. C. et al. Serum myeloperoxidase levels are associated with the future risk of coronary artery disease in apparently healthy individuals: the EPIC-Norfolk Prospective Population Study. Journal of the American College of Cardiology, v. 50, n. 2, p. 159-165, 2007.",
146
+ doi: "10.1016/j.jacc.2007.03.033",
147
+ key: "meuwese-mpo-2007",
148
+ url: "https://pubmed.ncbi.nlm.nih.gov/17616301/"
149
+ },
150
+ // ---------------------------------------------------------------------------
151
+ // Fontes internacionais — Marcadores metabólicos e inflamatórios
152
+ // ---------------------------------------------------------------------------
153
+ "nemeth-adma-2017": {
154
+ abnt: "NEMETH, B. et al. The issue of plasma asymmetric dimethylarginine reference range: a systematic review and meta-analysis. PLoS One, v. 12, n. 5, e0177493, 2017.",
155
+ doi: "10.1371/journal.pone.0177493",
156
+ key: "nemeth-adma-2017",
157
+ url: "https://pubmed.ncbi.nlm.nih.gov/28494019/"
158
+ },
159
+ // ---------------------------------------------------------------------------
160
+ // Fontes brasileiras — Metais pesados (NR-7)
161
+ // ---------------------------------------------------------------------------
162
+ "nr7-pcmso-2020": {
163
+ abnt: "BRASIL. Minist\xE9rio do Trabalho e Emprego. NR-7 \u2014 PCMSO, Quadro 1: Indicadores biol\xF3gicos. Portaria n. 6.734, de 9 de mar\xE7o de 2020. Di\xE1rio Oficial da Uni\xE3o, Bras\xEDlia, 13 mar. 2020.",
164
+ key: "nr7-pcmso-2020",
165
+ url: "https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/inspecao-do-trabalho/seguranca-e-saude-no-trabalho/sst-portarias/2022/portaria-no-567-de-10-de-marco-de-2022-alteracoes-na-nr-7.pdf"
166
+ },
167
+ "ofenheimer-vat-2020": {
168
+ abnt: "OFENHEIMER, A. et al. Reference values of body composition parameters and visceral adipose tissue (VAT) by DXA in adults aged 18-81 years: results from the LEAD cohort. European Journal of Clinical Nutrition, v. 74, p. 1181-1191, 2020.",
169
+ doi: "10.1038/s41430-020-0596-5",
170
+ key: "ofenheimer-vat-2020",
171
+ url: "https://pubmed.ncbi.nlm.nih.gov/32123345/"
172
+ },
173
+ "pns-bioquimica-2019": {
174
+ abnt: "SZWARCWALD, C. L. et al. Valores de refer\xEAncia para exames laboratoriais de colesterol, hemoglobina glicosilada e creatinina da popula\xE7\xE3o adulta brasileira. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190002.supl.2, 2019.",
175
+ doi: "10.1590/1980-549720190002.supl.2",
176
+ key: "pns-bioquimica-2019",
177
+ url: "https://pubmed.ncbi.nlm.nih.gov/31596373/"
178
+ },
179
+ // ---------------------------------------------------------------------------
180
+ // Pesquisa Nacional de Saúde (PNS) — Intervalos de referência brasileiros
181
+ // ---------------------------------------------------------------------------
182
+ "pns-hemograma-2019": {
183
+ abnt: "ROSENFELD, L. G. et al. Valores de refer\xEAncia para exames laboratoriais de hemograma da popula\xE7\xE3o adulta brasileira: Pesquisa Nacional de Sa\xFAde. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190003.supl.2, 2019.",
184
+ doi: "10.1590/1980-549720190003.supl.2",
185
+ key: "pns-hemograma-2019",
186
+ url: "https://pubmed.ncbi.nlm.nih.gov/31596374/"
187
+ },
188
+ "pns-renal-2019": {
189
+ abnt: "MALTA, D. C. et al. Evaluation of renal function in the Brazilian adult population, according to laboratory criteria from the National Health Survey. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190010.supl.2, 2019.",
190
+ doi: "10.1590/1980-549720190010.supl.2",
191
+ key: "pns-renal-2019",
192
+ url: "https://pubmed.ncbi.nlm.nih.gov/31596381/"
193
+ },
194
+ "rumberger-cac-1999": {
195
+ abnt: "RUMBERGER, J. A. et al. Electron beam computed tomographic coronary calcium scanning: a review and guidelines for use in asymptomatic persons. Mayo Clinic Proceedings, v. 74, n. 3, p. 243-252, 1999.",
196
+ doi: "10.4065/74.3.243",
197
+ key: "rumberger-cac-1999",
198
+ url: "https://pubmed.ncbi.nlm.nih.gov/10089993/"
199
+ },
200
+ "sbc-ic-2018": {
201
+ abnt: "ROHDE, L. E. P. et al. Diretriz Brasileira de Insufici\xEAncia Card\xEDaca Cr\xF4nica e Aguda. Arquivos Brasileiros de Cardiologia, S\xE3o Paulo, v. 111, n. 3, p. 436-539, set. 2018.",
202
+ doi: "10.5935/abc.20180190",
203
+ key: "sbc-ic-2018",
204
+ url: "https://pubmed.ncbi.nlm.nih.gov/30379264/"
205
+ },
206
+ // ---------------------------------------------------------------------------
207
+ // Sociedade Brasileira de Cardiologia
208
+ // ---------------------------------------------------------------------------
209
+ "sbc-lipids-2017": {
210
+ abnt: "FALUDI, A. A. et al. Atualiza\xE7\xE3o da Diretriz Brasileira de Dislipidemias e Preven\xE7\xE3o da Aterosclerose \u2013 2017. Arquivos Brasileiros de Cardiologia, S\xE3o Paulo, v. 109, n. 2, supl. 1, p. 1-76, ago. 2017.",
211
+ doi: "10.5935/abc.20170121",
212
+ key: "sbc-lipids-2017",
213
+ url: "https://www.scielo.br/j/abc/a/whBsCyzTDzGYJcsBY7YVkWn/?lang=pt"
214
+ },
215
+ "sbc-lipids-2025": {
216
+ abnt: "RACHED, F. H. et al. Diretriz Brasileira de Dislipidemias e Preven\xE7\xE3o da Aterosclerose \u2013 2025. Arquivos Brasileiros de Cardiologia, S\xE3o Paulo, v. 122, n. 9, e20250640, out. 2025.",
217
+ doi: "10.36660/abc.20250640",
218
+ key: "sbc-lipids-2025",
219
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC12674852/"
220
+ },
221
+ // ---------------------------------------------------------------------------
222
+ // Sociedade Brasileira de Diabetes
223
+ // ---------------------------------------------------------------------------
224
+ "sbd-diabetes-2024": {
225
+ // Chave mantida como 'sbd-diabetes-2024' para compatibilidade com
226
+ // consumidores publicados; a diretriz correspondente é o documento vivo
227
+ // de diretriz.diabetes.org.br, cuja edição citada quando este registro foi
228
+ // atualizado é "Edição 2025". Semelhante ao caso de sbpc-ml-2021 abaixo.
229
+ abnt: "SOCIEDADE BRASILEIRA DE DIABETES (SBD). Diretriz da Sociedade Brasileira de Diabetes \u2014 Edi\xE7\xE3o 2025. S\xE3o Paulo: SBD, 2025.",
230
+ doi: "10.29327/5660187",
231
+ isbn: "978-65-272-1932-3",
232
+ key: "sbd-diabetes-2024",
233
+ url: "https://diretriz.diabetes.org.br"
234
+ },
235
+ // ---------------------------------------------------------------------------
236
+ // Sociedade Brasileira de Endocrinologia e Metabologia
237
+ // ---------------------------------------------------------------------------
238
+ "sbem-thyroid-2013": {
239
+ abnt: "SGARBI, J. A. et al. Consenso brasileiro para a abordagem cl\xEDnica e tratamento do hipotireoidismo subcl\xEDnico em adultos. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 57, n. 3, p. 166-183, 2013.",
240
+ doi: "10.1590/S0004-27302013000300003",
241
+ key: "sbem-thyroid-2013",
242
+ url: "https://pubmed.ncbi.nlm.nih.gov/23681263/"
243
+ },
244
+ "sbem-vitamind-2014": {
245
+ abnt: "MAEDA, S. S. et al. Recomenda\xE7\xF5es da Sociedade Brasileira de Endocrinologia e Metabologia (SBEM) para o diagn\xF3stico e tratamento da hipovitaminose D. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 58, n. 5, p. 411-433, 2014.",
246
+ doi: "10.1590/0004-2730000003388",
247
+ key: "sbem-vitamind-2014",
248
+ url: "https://pubmed.ncbi.nlm.nih.gov/25166032/"
249
+ },
250
+ // ---------------------------------------------------------------------------
251
+ // Sociedade Brasileira de Patologia Clínica / Medicina Laboratorial
252
+ // ---------------------------------------------------------------------------
253
+ "sbpc-ml-2021": {
254
+ // Chave mantida como 'sbpc-ml-2021' para compatibilidade com consumidores;
255
+ // a edição autoritativa é de 2020 (verificada na Biblioteca Digital SBPC/ML
256
+ // em 2026-04-18). Ano na citação ABNT reflete a edição real.
257
+ abnt: "SOCIEDADE BRASILEIRA DE PATOLOGIA CL\xCDNICA/MEDICINA LABORATORIAL (SBPC/ML). Recomenda\xE7\xF5es da Sociedade Brasileira de Patologia Cl\xEDnica/Medicina Laboratorial (SBPC/ML): Boas Pr\xE1ticas em Laborat\xF3rio Cl\xEDnico. S\xE3o Paulo: SBPC/ML, 2020.",
258
+ key: "sbpc-ml-2021",
259
+ url: "https://bibliotecasbpc.org.br/index.php?P=4&C=0.2.443"
260
+ },
261
+ "schumann-ifcc-ldh-2002": {
262
+ abnt: "SCHUMANN, G.; KLAUKE, R. New IFCC reference procedures for the determination of catalytic activity concentrations of five enzymes in serum: preliminary upper reference limits obtained in hospitalized subjects. Clinica Chimica Acta, v. 327, n. 1-2, p. 69-79, 2003.",
263
+ doi: "10.1016/S0009-8981(02)00341-8",
264
+ key: "schumann-ifcc-ldh-2002",
265
+ url: "https://pubmed.ncbi.nlm.nih.gov/12482620/"
266
+ },
267
+ "schwedhelm-sdma-2011": {
268
+ abnt: "SCHWEDHELM, E. et al. Plasma symmetric dimethylarginine reference limits from the Framingham Offspring Cohort. Clinical Chemistry and Laboratory Medicine, v. 49, n. 11, p. 1907-1910, 2011.",
269
+ doi: "10.1515/CCLM.2011.679",
270
+ key: "schwedhelm-sdma-2011",
271
+ url: "https://pubmed.ncbi.nlm.nih.gov/21864208/"
272
+ },
273
+ "selhub-homocysteine-1999": {
274
+ abnt: "SELHUB, J. et al. Serum total homocysteine concentrations in the third National Health and Nutrition Examination Survey (1991-1994): population reference ranges and contribution of vitamin status to high serum concentrations. Annals of Internal Medicine, v. 131, n. 5, p. 331-339, 1999.",
275
+ doi: "10.7326/0003-4819-131-5-199909070-00003",
276
+ key: "selhub-homocysteine-1999",
277
+ url: "https://pubmed.ncbi.nlm.nih.gov/10475885/"
278
+ },
279
+ "simopoulos-omega-ratio-2002": {
280
+ abnt: "SIMOPOULOS, A. P. The importance of the ratio of omega-6/omega-3 essential fatty acids. Biomedicine & Pharmacotherapy, v. 56, n. 8, p. 365-379, 2002.",
281
+ doi: "10.1016/S0753-3322(02)00253-6",
282
+ key: "simopoulos-omega-ratio-2002",
283
+ url: "https://pubmed.ncbi.nlm.nih.gov/12442909/"
284
+ },
285
+ // ---------------------------------------------------------------------------
286
+ // Fontes internacionais — Marcadores tumorais
287
+ // ---------------------------------------------------------------------------
288
+ "sturgeon-nacb-2008": {
289
+ abnt: "STURGEON, C. M. et al. National Academy of Clinical Biochemistry Laboratory Medicine Practice Guidelines for use of tumor markers in testicular, prostate, colorectal, breast, and ovarian cancers. Clinical Chemistry, v. 54, n. 12, p. e11-e79, 2008.",
290
+ doi: "10.1373/clinchem.2008.105601",
291
+ key: "sturgeon-nacb-2008",
292
+ url: "https://pubmed.ncbi.nlm.nih.gov/19042984/"
293
+ },
294
+ "tietz-7ed-2015": {
295
+ abnt: "BURTIS, C. A.; BRUNS, D. E. Tietz Fundamentals of Clinical Chemistry and Molecular Diagnostics. 7. ed. St. Louis: Elsevier Saunders, 2015.",
296
+ isbn: "978-1-4557-4165-6",
297
+ key: "tietz-7ed-2015"
298
+ },
299
+ "torrissen-omega3-dbs-2025": {
300
+ abnt: "TORRISSEN, M. et al. Global variations in omega-3 fatty acid status and omega-6:omega-3 ratios: insights from > 500,000 whole-blood dried blood spot samples. Lipids in Health and Disease, v. 24, n. 1, p. 260, 2025.",
301
+ doi: "10.1186/s12944-025-02676-6",
302
+ key: "torrissen-omega3-dbs-2025",
303
+ url: "https://pubmed.ncbi.nlm.nih.gov/40783537/"
304
+ },
305
+ // ---------------------------------------------------------------------------
306
+ // Fontes internacionais — Coagulação
307
+ // ---------------------------------------------------------------------------
308
+ "wells-ddimer-2003": {
309
+ abnt: "WELLS, P. S. et al. Evaluation of D-dimer in the diagnosis of suspected deep-vein thrombosis. New England Journal of Medicine, v. 349, p. 1227-1235, 2003.",
310
+ doi: "10.1056/NEJMoa023153",
311
+ key: "wells-ddimer-2003",
312
+ url: "https://pubmed.ncbi.nlm.nih.gov/14507948/"
313
+ },
314
+ // ---------------------------------------------------------------------------
315
+ // Fontes internacionais — OMS
316
+ // ---------------------------------------------------------------------------
317
+ "who-iron-2020": {
318
+ abnt: "WORLD HEALTH ORGANIZATION. WHO guideline on use of ferritin concentrations to assess iron status in individuals and populations. Geneva: WHO, 2020.",
319
+ isbn: "978-92-4-000012-4",
320
+ key: "who-iron-2020",
321
+ url: "https://www.who.int/publications/i/item/9789240000124"
322
+ },
323
+ "who-obesity-2000": {
324
+ abnt: "WORLD HEALTH ORGANIZATION. Obesity: preventing and managing the global epidemic. WHO Technical Report Series, n. 894. Geneva: WHO, 2000.",
325
+ isbn: "92-4-120894-5",
326
+ key: "who-obesity-2000"
327
+ },
328
+ "who-osteoporosis-1994": {
329
+ abnt: "WHO STUDY GROUP. Assessment of fracture risk and its application to screening for postmenopausal osteoporosis. WHO Technical Report Series, n. 843. Geneva: WHO, 1994.",
330
+ key: "who-osteoporosis-1994",
331
+ url: "https://pubmed.ncbi.nlm.nih.gov/7941614/"
332
+ }
333
+ };
334
+ function extractSourceKey(source) {
335
+ return _nullishCoalesce(source.split(":")[0], () => ( source));
336
+ }
337
+
338
+
339
+
340
+
341
+ exports.SOURCE_REGISTRY = SOURCE_REGISTRY; exports.extractSourceKey = extractSourceKey;
342
+ //# sourceMappingURL=chunk-5FMR2U7P.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-5FMR2U7P.cjs","../src/sources.ts"],"names":[],"mappings":"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","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-5FMR2U7P.cjs","sourcesContent":[null,"/**\n * Registro de fontes bibliográficas para faixas de referência de biomarcadores.\n *\n * Exportado na API pública desde a 0.32: o campo `source` de cada faixa é uma\n * chave, e sem o registro ao lado ela não resolve para lugar nenhum. Quem\n * consome via `@precisa-saude/fhir/sources` ou pelo `fhir-bio source`.\n *\n * Todas as citações seguem o formato ABNT (NBR 6023).\n */\n\n/**\n * Referência bibliográfica completa para uma fonte de faixas de referência.\n */\nexport interface SourceReference {\n /** Citação completa em formato ABNT (NBR 6023) */\n abnt: string;\n /** DOI, quando disponível */\n doi?: string;\n /** ISBN, quando aplicável */\n isbn?: string;\n /** Chave curta usada no campo `source` de BiomarkerRangeDefinition */\n key: string;\n /** URL de acesso */\n url?: string;\n}\n\n/**\n * Registro central de todas as fontes bibliográficas utilizadas nas faixas de referência.\n *\n * Cada chave corresponde ao valor usado no campo `source` de `BiomarkerRangeDefinition`\n * (sem o sufixo de localização, ex: `'sbc-lipids-2017'` sem `':p15'`).\n */\nexport const SOURCE_REGISTRY: Record<string, SourceReference> = {\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Cardiovascular\n // ---------------------------------------------------------------------------\n 'agatston-1990': {\n abnt: 'AGATSTON, A. S. et al. Quantification of coronary artery calcium using ultrafast computed tomography. Journal of the American College of Cardiology, v. 15, n. 4, p. 827-832, 1990.',\n doi: '10.1016/0735-1097(90)90282-T',\n key: 'agatston-1990',\n url: 'https://pubmed.ncbi.nlm.nih.gov/2407762/',\n },\n\n 'browning-ashwell-2010': {\n abnt: 'BROWNING, L. M.; HSIEH, S. D.; ASHWELL, M. A systematic review of waist-to-height ratio as a screening tool for the prediction of cardiovascular disease and diabetes: 0,5 could be a suitable global boundary value. Nutrition Research Reviews, v. 23, n. 2, p. 247-269, 2010.',\n doi: '10.1017/S0954422410000144',\n key: 'browning-ashwell-2010',\n url: 'https://pubmed.ncbi.nlm.nih.gov/20819243/',\n },\n\n 'castelli-ratio-1992': {\n abnt: 'CASTELLI, W. P. et al. Lipids and risk of coronary heart disease: the Framingham Study. Annals of Epidemiology, v. 2, n. 1-2, p. 23-28, 1992.',\n doi: '10.1016/1047-2797(92)90033-M',\n key: 'castelli-ratio-1992',\n url: 'https://pubmed.ncbi.nlm.nih.gov/1342260/',\n },\n\n 'caulfield-ionmobility-2008': {\n abnt: 'CAULFIELD, M. P. et al. Direct determination of lipoprotein particle sizes and concentrations by ion mobility analysis. Clinical Chemistry, v. 54, n. 8, p. 1307-1316, 2008.',\n doi: '10.1373/clinchem.2007.100586',\n key: 'caulfield-ionmobility-2008',\n url: 'https://pubmed.ncbi.nlm.nih.gov/18515257/',\n },\n\n 'contois-apoa1-1996': {\n abnt: 'CONTOIS, J. H. et al. Reference intervals for plasma apolipoprotein A-1 determined with a standardized commercial immunoturbidimetric assay: results from the Framingham Offspring Study. Clinical Chemistry, v. 42, n. 4, p. 507-514, 1996.',\n doi: '10.1093/clinchem/42.4.507',\n key: 'contois-apoa1-1996',\n url: 'https://pubmed.ncbi.nlm.nih.gov/8605666/',\n },\n\n 'ewgsop2-2019': {\n abnt: 'CRUZ-JENTOFT, A. J. et al. Sarcopenia: revised European consensus on definition and diagnosis. Age and Ageing, v. 48, n. 1, p. 16-31, 2019.',\n doi: '10.1093/ageing/afy169',\n key: 'ewgsop2-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/30312372/',\n },\n\n 'ferreira-vitd-2017': {\n abnt: 'FERREIRA, C. E. S. et al. Posicionamento oficial da Sociedade Brasileira de Patologia Clínica/Medicina Laboratorial e da Sociedade Brasileira de Endocrinologia e Metabologia sobre intervalos de referência da vitamina D [25(OH)D]. Archives of Endocrinology and Metabolism, v. 61, n. 6, p. 527-542, 2017.',\n doi: '10.1590/2359-3997000000310',\n key: 'ferreira-vitd-2017',\n url: 'https://pubmed.ncbi.nlm.nih.gov/29412389/',\n },\n\n 'friedewald-1972': {\n abnt: 'FRIEDEWALD, W. T.; LEVY, R. I.; FREDRICKSON, D. S. Estimation of the concentration of low-density lipoprotein cholesterol in plasma, without use of the preparative ultracentrifuge. Clinical Chemistry, v. 18, n. 6, p. 499-502, 1972.',\n doi: '10.1093/clinchem/18.6.499',\n key: 'friedewald-1972',\n url: 'https://pubmed.ncbi.nlm.nih.gov/4337382/',\n },\n\n 'gallagher-bodyfat-2000': {\n abnt: 'GALLAGHER, D. et al. Healthy percentage body fat ranges: an approach for developing guidelines based on body mass index. American Journal of Clinical Nutrition, v. 72, n. 3, p. 694-701, 2000.',\n key: 'gallagher-bodyfat-2000',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10966886/',\n },\n\n 'ge-corescan': {\n abnt: 'GE HEALTHCARE. enCORE Software CoreScan: Visceral Adipose Tissue (VAT) assessment. Madison: GE Medical Systems Lunar, [s. d.]. (Documentação do fabricante do DEXA Lunar Prodigy; classificação Healthy 0–52 in³, Increased Risk 52,15–112,10 in³, At Risk 112,10+ in³, equivalente a 0–852 cm³, 854–1.837 cm³, 1.837+ cm³.)',\n key: 'ge-corescan',\n url: 'https://www.gehealthcare.com/products/bone-and-metabolic-health/encore',\n },\n\n 'geloneze-brams-2009': {\n abnt: 'GELONEZE, B. et al. HOMA1-IR and HOMA2-IR indexes in identifying insulin resistance and metabolic syndrome — Brazilian Metabolic Syndrome Study (BRAMS). Arquivos Brasileiros de Endocrinologia & Metabologia, v. 53, n. 2, p. 281-287, 2009.',\n doi: '10.1590/S0004-27302009000200020',\n key: 'geloneze-brams-2009',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19466221/',\n },\n\n 'george-ck-2016': {\n abnt: 'GEORGE, M. D.; MCGILL, N. K.; BAKER, J. F. Creatine kinase in the U.S. population: impact of demographics, comorbidities, and body composition on the normal range. Medicine, v. 95, n. 33, e4344, 2016.',\n doi: '10.1097/MD.0000000000004344',\n key: 'george-ck-2016',\n url: 'https://pubmed.ncbi.nlm.nih.gov/27537560/',\n },\n\n 'giannitsis-hstnt-2010': {\n abnt: 'GIANNITSIS, E. et al. Analytical validation of a high-sensitivity cardiac troponin T assay. Clinical Chemistry, v. 56, n. 2, p. 254-261, 2010.',\n doi: '10.1373/clinchem.2009.132654',\n key: 'giannitsis-hstnt-2010',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19959623/',\n },\n\n 'glis-2024': {\n abnt: 'KIRK, B. et al. The conceptual definition of sarcopenia: Delphi consensus from the Global Leadership Initiative in Sarcopenia (GLIS). Age and Ageing, v. 53, n. 3, afae052, 2024.',\n doi: '10.1093/ageing/afae052',\n key: 'glis-2024',\n url: 'https://pubmed.ncbi.nlm.nih.gov/38520141/',\n },\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Ácidos graxos ômega\n // ---------------------------------------------------------------------------\n 'harris-omega3-2004': {\n abnt: 'HARRIS, W. S.; VON SCHACKY, C. The Omega-3 Index: a new risk factor for death from coronary heart disease? Preventive Medicine, v. 39, n. 1, p. 212-220, 2004.',\n doi: '10.1016/j.ypmed.2004.02.030',\n key: 'harris-omega3-2004',\n url: 'https://pubmed.ncbi.nlm.nih.gov/15208005/',\n },\n\n // ---------------------------------------------------------------------------\n // Referência laboratorial geral\n // ---------------------------------------------------------------------------\n 'kalaria-ck-ri-2026': {\n abnt: 'KALARIA, T. et al. Age, sex and ethnicity changes in creatine kinase and sex- and ethnicity-specific reference intervals of creatine kinase. Clinical Medicine, v. 26, n. 4, p. 100596, 2026.',\n doi: '10.1016/j.clinme.2026.100596',\n key: 'kalaria-ck-ri-2026',\n url: 'https://pubmed.ncbi.nlm.nih.gov/42142664/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Nefrologia\n // ---------------------------------------------------------------------------\n 'kdigo-ckd-2024': {\n abnt: 'KIDNEY DISEASE: IMPROVING GLOBAL OUTCOMES (KDIGO) CKD Work Group. KDIGO 2024 Clinical Practice Guideline for the Evaluation and Management of Chronic Kidney Disease. Kidney International, v. 105, n. 4S, p. S117-S314, 2024.',\n doi: '10.1016/j.kint.2023.10.018',\n key: 'kdigo-ckd-2024',\n url: 'https://pubmed.ncbi.nlm.nih.gov/38490803/',\n },\n\n 'keller-tni-2013': {\n abnt: 'KELLER, T. et al. Defining a reference population to determine the 99th percentile of a contemporary sensitive cardiac troponin I assay. International Journal of Cardiology, v. 167, n. 4, p. 1423-1429, 2013.',\n doi: '10.1016/j.ijcard.2012.04.063',\n key: 'keller-tni-2013',\n url: 'https://pubmed.ncbi.nlm.nih.gov/22560907/',\n },\n\n 'kelly-dxa-2009': {\n abnt: 'KELLY, T. L. et al. Dual energy X-ray absorptiometry body composition reference values from NHANES. PLoS One, v. 4, n. 9, e7038, 2009.',\n doi: '10.1371/journal.pone.0007038',\n key: 'kelly-dxa-2009',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19753111/',\n },\n\n 'khetarpal-apociii-2016': {\n abnt: 'KHETARPAL, S. A. et al. Why is apolipoprotein CIII emerging as a novel therapeutic target to reduce the burden of cardiovascular disease? Current Atherosclerosis Reports, v. 18, n. 10, p. 59, 2016.',\n key: 'khetarpal-apociii-2016',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC5018018/',\n },\n\n 'klee-bhb-2020': {\n abnt: 'KLEE, P. et al. Test validation, method comparison and reference range for the measurement of β-hydroxybutyrate in peripheral blood samples. Practical Laboratory Medicine, v. 18, e00146, 2020.',\n doi: '10.1016/j.plabm.2019.e00146',\n key: 'klee-bhb-2020',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC6999181/',\n },\n\n 'maisel-bnp-2002': {\n abnt: 'MAISEL, A. S. et al. Rapid measurement of B-type natriuretic peptide in the emergency diagnosis of heart failure. New England Journal of Medicine, v. 347, n. 3, p. 161-167, 2002.',\n doi: '10.1056/NEJMoa020233',\n key: 'maisel-bnp-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12124404/',\n },\n\n 'meuwese-mpo-2007': {\n abnt: 'MEUWESE, M. C. et al. Serum myeloperoxidase levels are associated with the future risk of coronary artery disease in apparently healthy individuals: the EPIC-Norfolk Prospective Population Study. Journal of the American College of Cardiology, v. 50, n. 2, p. 159-165, 2007.',\n doi: '10.1016/j.jacc.2007.03.033',\n key: 'meuwese-mpo-2007',\n url: 'https://pubmed.ncbi.nlm.nih.gov/17616301/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Marcadores metabólicos e inflamatórios\n // ---------------------------------------------------------------------------\n 'nemeth-adma-2017': {\n abnt: 'NEMETH, B. et al. The issue of plasma asymmetric dimethylarginine reference range: a systematic review and meta-analysis. PLoS One, v. 12, n. 5, e0177493, 2017.',\n doi: '10.1371/journal.pone.0177493',\n key: 'nemeth-adma-2017',\n url: 'https://pubmed.ncbi.nlm.nih.gov/28494019/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes brasileiras — Metais pesados (NR-7)\n // ---------------------------------------------------------------------------\n 'nr7-pcmso-2020': {\n abnt: 'BRASIL. Ministério do Trabalho e Emprego. NR-7 — PCMSO, Quadro 1: Indicadores biológicos. Portaria n. 6.734, de 9 de março de 2020. Diário Oficial da União, Brasília, 13 mar. 2020.',\n key: 'nr7-pcmso-2020',\n url: 'https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/inspecao-do-trabalho/seguranca-e-saude-no-trabalho/sst-portarias/2022/portaria-no-567-de-10-de-marco-de-2022-alteracoes-na-nr-7.pdf',\n },\n\n 'ofenheimer-vat-2020': {\n abnt: 'OFENHEIMER, A. et al. Reference values of body composition parameters and visceral adipose tissue (VAT) by DXA in adults aged 18-81 years: results from the LEAD cohort. European Journal of Clinical Nutrition, v. 74, p. 1181-1191, 2020.',\n doi: '10.1038/s41430-020-0596-5',\n key: 'ofenheimer-vat-2020',\n url: 'https://pubmed.ncbi.nlm.nih.gov/32123345/',\n },\n\n 'pns-bioquimica-2019': {\n abnt: 'SZWARCWALD, C. L. et al. Valores de referência para exames laboratoriais de colesterol, hemoglobina glicosilada e creatinina da população adulta brasileira. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190002.supl.2, 2019.',\n doi: '10.1590/1980-549720190002.supl.2',\n key: 'pns-bioquimica-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596373/',\n },\n\n // ---------------------------------------------------------------------------\n // Pesquisa Nacional de Saúde (PNS) — Intervalos de referência brasileiros\n // ---------------------------------------------------------------------------\n 'pns-hemograma-2019': {\n abnt: 'ROSENFELD, L. G. et al. Valores de referência para exames laboratoriais de hemograma da população adulta brasileira: Pesquisa Nacional de Saúde. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190003.supl.2, 2019.',\n doi: '10.1590/1980-549720190003.supl.2',\n key: 'pns-hemograma-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596374/',\n },\n\n 'pns-renal-2019': {\n abnt: 'MALTA, D. C. et al. Evaluation of renal function in the Brazilian adult population, according to laboratory criteria from the National Health Survey. Revista Brasileira de Epidemiologia, v. 22, supl. 2, e190010.supl.2, 2019.',\n doi: '10.1590/1980-549720190010.supl.2',\n key: 'pns-renal-2019',\n url: 'https://pubmed.ncbi.nlm.nih.gov/31596381/',\n },\n\n 'rumberger-cac-1999': {\n abnt: 'RUMBERGER, J. A. et al. Electron beam computed tomographic coronary calcium scanning: a review and guidelines for use in asymptomatic persons. Mayo Clinic Proceedings, v. 74, n. 3, p. 243-252, 1999.',\n doi: '10.4065/74.3.243',\n key: 'rumberger-cac-1999',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10089993/',\n },\n\n 'sbc-ic-2018': {\n abnt: 'ROHDE, L. E. P. et al. Diretriz Brasileira de Insuficiência Cardíaca Crônica e Aguda. Arquivos Brasileiros de Cardiologia, São Paulo, v. 111, n. 3, p. 436-539, set. 2018.',\n doi: '10.5935/abc.20180190',\n key: 'sbc-ic-2018',\n url: 'https://pubmed.ncbi.nlm.nih.gov/30379264/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Cardiologia\n // ---------------------------------------------------------------------------\n 'sbc-lipids-2017': {\n abnt: 'FALUDI, A. A. et al. Atualização da Diretriz Brasileira de Dislipidemias e Prevenção da Aterosclerose – 2017. Arquivos Brasileiros de Cardiologia, São Paulo, v. 109, n. 2, supl. 1, p. 1-76, ago. 2017.',\n doi: '10.5935/abc.20170121',\n key: 'sbc-lipids-2017',\n url: 'https://www.scielo.br/j/abc/a/whBsCyzTDzGYJcsBY7YVkWn/?lang=pt',\n },\n\n 'sbc-lipids-2025': {\n abnt: 'RACHED, F. H. et al. Diretriz Brasileira de Dislipidemias e Prevenção da Aterosclerose – 2025. Arquivos Brasileiros de Cardiologia, São Paulo, v. 122, n. 9, e20250640, out. 2025.',\n doi: '10.36660/abc.20250640',\n key: 'sbc-lipids-2025',\n url: 'https://pmc.ncbi.nlm.nih.gov/articles/PMC12674852/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Diabetes\n // ---------------------------------------------------------------------------\n 'sbd-diabetes-2024': {\n // Chave mantida como 'sbd-diabetes-2024' para compatibilidade com\n // consumidores publicados; a diretriz correspondente é o documento vivo\n // de diretriz.diabetes.org.br, cuja edição citada quando este registro foi\n // atualizado é \"Edição 2025\". Semelhante ao caso de sbpc-ml-2021 abaixo.\n abnt: 'SOCIEDADE BRASILEIRA DE DIABETES (SBD). Diretriz da Sociedade Brasileira de Diabetes — Edição 2025. São Paulo: SBD, 2025.',\n doi: '10.29327/5660187',\n isbn: '978-65-272-1932-3',\n key: 'sbd-diabetes-2024',\n url: 'https://diretriz.diabetes.org.br',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Endocrinologia e Metabologia\n // ---------------------------------------------------------------------------\n 'sbem-thyroid-2013': {\n abnt: 'SGARBI, J. A. et al. Consenso brasileiro para a abordagem clínica e tratamento do hipotireoidismo subclínico em adultos. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 57, n. 3, p. 166-183, 2013.',\n doi: '10.1590/S0004-27302013000300003',\n key: 'sbem-thyroid-2013',\n url: 'https://pubmed.ncbi.nlm.nih.gov/23681263/',\n },\n 'sbem-vitamind-2014': {\n abnt: 'MAEDA, S. S. et al. Recomendações da Sociedade Brasileira de Endocrinologia e Metabologia (SBEM) para o diagnóstico e tratamento da hipovitaminose D. Arquivos Brasileiros de Endocrinologia & Metabologia, v. 58, n. 5, p. 411-433, 2014.',\n doi: '10.1590/0004-2730000003388',\n key: 'sbem-vitamind-2014',\n url: 'https://pubmed.ncbi.nlm.nih.gov/25166032/',\n },\n\n // ---------------------------------------------------------------------------\n // Sociedade Brasileira de Patologia Clínica / Medicina Laboratorial\n // ---------------------------------------------------------------------------\n 'sbpc-ml-2021': {\n // Chave mantida como 'sbpc-ml-2021' para compatibilidade com consumidores;\n // a edição autoritativa é de 2020 (verificada na Biblioteca Digital SBPC/ML\n // em 2026-04-18). Ano na citação ABNT reflete a edição real.\n abnt: 'SOCIEDADE BRASILEIRA DE PATOLOGIA CLÍNICA/MEDICINA LABORATORIAL (SBPC/ML). Recomendações da Sociedade Brasileira de Patologia Clínica/Medicina Laboratorial (SBPC/ML): Boas Práticas em Laboratório Clínico. São Paulo: SBPC/ML, 2020.',\n key: 'sbpc-ml-2021',\n url: 'https://bibliotecasbpc.org.br/index.php?P=4&C=0.2.443',\n },\n\n 'schumann-ifcc-ldh-2002': {\n abnt: 'SCHUMANN, G.; KLAUKE, R. New IFCC reference procedures for the determination of catalytic activity concentrations of five enzymes in serum: preliminary upper reference limits obtained in hospitalized subjects. Clinica Chimica Acta, v. 327, n. 1-2, p. 69-79, 2003.',\n doi: '10.1016/S0009-8981(02)00341-8',\n key: 'schumann-ifcc-ldh-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12482620/',\n },\n\n 'schwedhelm-sdma-2011': {\n abnt: 'SCHWEDHELM, E. et al. Plasma symmetric dimethylarginine reference limits from the Framingham Offspring Cohort. Clinical Chemistry and Laboratory Medicine, v. 49, n. 11, p. 1907-1910, 2011.',\n doi: '10.1515/CCLM.2011.679',\n key: 'schwedhelm-sdma-2011',\n url: 'https://pubmed.ncbi.nlm.nih.gov/21864208/',\n },\n\n 'selhub-homocysteine-1999': {\n abnt: 'SELHUB, J. et al. Serum total homocysteine concentrations in the third National Health and Nutrition Examination Survey (1991-1994): population reference ranges and contribution of vitamin status to high serum concentrations. Annals of Internal Medicine, v. 131, n. 5, p. 331-339, 1999.',\n doi: '10.7326/0003-4819-131-5-199909070-00003',\n key: 'selhub-homocysteine-1999',\n url: 'https://pubmed.ncbi.nlm.nih.gov/10475885/',\n },\n\n 'simopoulos-omega-ratio-2002': {\n abnt: 'SIMOPOULOS, A. P. The importance of the ratio of omega-6/omega-3 essential fatty acids. Biomedicine & Pharmacotherapy, v. 56, n. 8, p. 365-379, 2002.',\n doi: '10.1016/S0753-3322(02)00253-6',\n key: 'simopoulos-omega-ratio-2002',\n url: 'https://pubmed.ncbi.nlm.nih.gov/12442909/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Marcadores tumorais\n // ---------------------------------------------------------------------------\n 'sturgeon-nacb-2008': {\n abnt: 'STURGEON, C. M. et al. National Academy of Clinical Biochemistry Laboratory Medicine Practice Guidelines for use of tumor markers in testicular, prostate, colorectal, breast, and ovarian cancers. Clinical Chemistry, v. 54, n. 12, p. e11-e79, 2008.',\n doi: '10.1373/clinchem.2008.105601',\n key: 'sturgeon-nacb-2008',\n url: 'https://pubmed.ncbi.nlm.nih.gov/19042984/',\n },\n\n 'tietz-7ed-2015': {\n abnt: 'BURTIS, C. A.; BRUNS, D. E. Tietz Fundamentals of Clinical Chemistry and Molecular Diagnostics. 7. ed. St. Louis: Elsevier Saunders, 2015.',\n isbn: '978-1-4557-4165-6',\n key: 'tietz-7ed-2015',\n },\n\n 'torrissen-omega3-dbs-2025': {\n abnt: 'TORRISSEN, M. et al. Global variations in omega-3 fatty acid status and omega-6:omega-3 ratios: insights from > 500,000 whole-blood dried blood spot samples. Lipids in Health and Disease, v. 24, n. 1, p. 260, 2025.',\n doi: '10.1186/s12944-025-02676-6',\n key: 'torrissen-omega3-dbs-2025',\n url: 'https://pubmed.ncbi.nlm.nih.gov/40783537/',\n },\n // ---------------------------------------------------------------------------\n // Fontes internacionais — Coagulação\n // ---------------------------------------------------------------------------\n 'wells-ddimer-2003': {\n abnt: 'WELLS, P. S. et al. Evaluation of D-dimer in the diagnosis of suspected deep-vein thrombosis. New England Journal of Medicine, v. 349, p. 1227-1235, 2003.',\n doi: '10.1056/NEJMoa023153',\n key: 'wells-ddimer-2003',\n url: 'https://pubmed.ncbi.nlm.nih.gov/14507948/',\n },\n\n // ---------------------------------------------------------------------------\n // Fontes internacionais — OMS\n // ---------------------------------------------------------------------------\n 'who-iron-2020': {\n abnt: 'WORLD HEALTH ORGANIZATION. WHO guideline on use of ferritin concentrations to assess iron status in individuals and populations. Geneva: WHO, 2020.',\n isbn: '978-92-4-000012-4',\n key: 'who-iron-2020',\n url: 'https://www.who.int/publications/i/item/9789240000124',\n },\n\n 'who-obesity-2000': {\n abnt: 'WORLD HEALTH ORGANIZATION. Obesity: preventing and managing the global epidemic. WHO Technical Report Series, n. 894. Geneva: WHO, 2000.',\n isbn: '92-4-120894-5',\n key: 'who-obesity-2000',\n },\n\n 'who-osteoporosis-1994': {\n abnt: 'WHO STUDY GROUP. Assessment of fracture risk and its application to screening for postmenopausal osteoporosis. WHO Technical Report Series, n. 843. Geneva: WHO, 1994.',\n key: 'who-osteoporosis-1994',\n url: 'https://pubmed.ncbi.nlm.nih.gov/7941614/',\n },\n};\n\n/**\n * Extrai a chave de fonte de um valor `source` que pode conter localizador.\n *\n * @example\n * extractSourceKey('sbc-lipids-2017:p15') // 'sbc-lipids-2017'\n * extractSourceKey('sbpc-ml-2021') // 'sbpc-ml-2021'\n */\nexport function extractSourceKey(source: string): string {\n return source.split(':')[0] ?? source;\n}\n"]}