@precisa-saude/fhir 0.18.0 → 0.19.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 (31) hide show
  1. package/dist/biomarkers.cjs +2 -2
  2. package/dist/biomarkers.js +1 -1
  3. package/dist/{chunk-HGEQS7P7.cjs → chunk-6HKQY6VO.cjs} +4 -4
  4. package/dist/{chunk-HGEQS7P7.cjs.map → chunk-6HKQY6VO.cjs.map} +1 -1
  5. package/dist/{chunk-HP3OETAJ.js → chunk-EXG2IU2O.js} +2 -2
  6. package/dist/{chunk-NP4YZFUI.cjs → chunk-J3QVVVVH.cjs} +3 -3
  7. package/dist/{chunk-NP4YZFUI.cjs.map → chunk-J3QVVVVH.cjs.map} +1 -1
  8. package/dist/{chunk-LPYXISLF.js → chunk-LCXTQE2B.js} +2 -2
  9. package/dist/{chunk-CBGEU6SG.cjs → chunk-MMO356YH.cjs} +13 -1
  10. package/dist/chunk-MMO356YH.cjs.map +1 -0
  11. package/dist/{chunk-7O6VUA2B.js → chunk-MTWOF55H.js} +287 -2
  12. package/dist/chunk-MTWOF55H.js.map +1 -0
  13. package/dist/{chunk-LR2OUVOA.js → chunk-XTEKGGYQ.js} +13 -1
  14. package/dist/{chunk-LR2OUVOA.js.map → chunk-XTEKGGYQ.js.map} +1 -1
  15. package/dist/{chunk-ONRVND6U.cjs → chunk-Z5VH5QGC.cjs} +287 -2
  16. package/dist/chunk-Z5VH5QGC.cjs.map +1 -0
  17. package/dist/cli.js +299 -2
  18. package/dist/converter.cjs +3 -3
  19. package/dist/converter.js +2 -2
  20. package/dist/importer.cjs +3 -3
  21. package/dist/importer.js +2 -2
  22. package/dist/index.cjs +6 -6
  23. package/dist/index.js +4 -4
  24. package/dist/reference-ranges.cjs +2 -2
  25. package/dist/reference-ranges.js +1 -1
  26. package/package.json +1 -1
  27. package/dist/chunk-7O6VUA2B.js.map +0 -1
  28. package/dist/chunk-CBGEU6SG.cjs.map +0 -1
  29. package/dist/chunk-ONRVND6U.cjs.map +0 -1
  30. /package/dist/{chunk-HP3OETAJ.js.map → chunk-EXG2IU2O.js.map} +0 -0
  31. /package/dist/{chunk-LPYXISLF.js.map → chunk-LCXTQE2B.js.map} +0 -0
@@ -1984,10 +1984,20 @@ var BIOMARKER_DEFINITIONS = [
1984
1984
  },
1985
1985
  unit: "kg"
1986
1986
  },
1987
+ // Sem `loinc` de propósito. A entrada apontava para 73964-9, cujo nome
1988
+ // oficial é "Body muscle mass Calculated", e massa magra não é massa
1989
+ // muscular: em DEXA, massa magra é tudo que não é gordura nem mineral
1990
+ // ósseo, incluindo órgãos, água e tecido conjuntivo. Massa muscular é um
1991
+ // subconjunto dela.
1992
+ //
1993
+ // O campo sai em bundle FHIR, então a aproximação não ficava só aqui — um
1994
+ // consumidor externo leria massa muscular onde escrevemos massa magra. Não
1995
+ // há LOINC para massa magra (busca por "lean body mass" só devolve códigos
1996
+ // de urina ajustados por LBM), então o certo é não ter código, como já se
1997
+ // faz com FatFreeMass. Quem quer massa muscular usa MuscleMass, abaixo.
1987
1998
  {
1988
1999
  category: "composicao-corporal",
1989
2000
  code: "LeanMass",
1990
- loinc: "73964-9",
1991
2001
  names: {
1992
2002
  en: ["Lean Mass", "Lean Body Mass", "Lean Tissue Mass", "Total Lean Mass", "LBM"],
1993
2003
  pt: ["Massa Magra", "Massa Corporal Magra", "Tecido Magro", "Massa Magra Total"]
@@ -2156,6 +2166,281 @@ var BIOMARKER_DEFINITIONS = [
2156
2166
  },
2157
2167
  unit: "kg"
2158
2168
  },
2169
+ // ===========================================================================
2170
+ // Composição corporal por bioimpedância, adipometria e antropometria
2171
+ // ===========================================================================
2172
+ //
2173
+ // POLÍTICA DE `loinc` AUSENTE, e o que ela custa
2174
+ //
2175
+ // Várias entradas abaixo não têm `loinc`. Isso não é pendência esquecida: é
2176
+ // o resultado de procurar e não achar, e a decisão tem consequência que
2177
+ // vale enunciar uma vez.
2178
+ //
2179
+ // O que muda sem o código: a observação continua sendo exportada em FHIR e
2180
+ // continua aparecendo para o usuário, mas o `Observation.code` sai só com o
2181
+ // nosso código interno, sem identificador interoperável. Um consumidor
2182
+ // externo consegue ler o valor e a unidade, e não consegue mapear a medida
2183
+ // para o vocabulário dele sem acordo bilateral. Na prática: exibível
2184
+ // sempre, comparável entre sistemas só quando há LOINC.
2185
+ //
2186
+ // Por que ainda assim é o certo: código errado é pior que código ausente.
2187
+ // Ausente o consumidor sabe que precisa perguntar; errado ele integra com
2188
+ // confiança e erra em silêncio. Esta mesma PR corrige um caso desses, em
2189
+ // que `LeanMass` apontava para "Body muscle mass" e o IG publicava massa
2190
+ // muscular sob o rótulo de massa magra.
2191
+ //
2192
+ // Como preencher depois: quando a LOINC publicar o conceito, basta somar o
2193
+ // campo `loinc` — o código interno não muda, e as observações já gravadas
2194
+ // não precisam ser reescritas, porque a chave é o nosso código.
2195
+ //
2196
+ // Todos os códigos aqui foram conferidos na API pública da NLM (Clinical
2197
+ // Table Search Service), e a ausência só foi registrada depois de tentar
2198
+ // múltiplas formulações: "total body water" não devolve nada, "body water"
2199
+ // devolve os dois códigos abaixo.
2200
+ //
2201
+ // As 12 entradas sem código, e o motivo de cada uma:
2202
+ //
2203
+ // VisceralFatLevel índice de 1 a 20; 73707-2 é área, outra grandeza
2204
+ // ResidualMass conceito de fracionamento antropométrico, não LOINC
2205
+ // BasalMetabolicRate candidatos são índice ou RMR medido, ver nota local
2206
+ // ExtracellularWater "extracellular water" não devolve nada
2207
+ // IntracellularWater "intracellular water" não devolve nada
2208
+ // ECWToTBWRatio razão derivada, sem conceito próprio
2209
+ // WaistToHeightRatio "waist to height" não devolve nada
2210
+ // ConicityIndex índice derivado, sem conceito próprio
2211
+ // SkinfoldSubscapular LOINC só tem tríceps, coxa e cintura
2212
+ // SkinfoldSuprailiac idem
2213
+ // SkinfoldChest idem
2214
+ // SkinfoldMidaxillary idem
2215
+ // Bioimpedância (BIA)
2216
+ {
2217
+ category: "composicao-corporal",
2218
+ code: "TotalBodyWater",
2219
+ loinc: "101683-1",
2220
+ names: {
2221
+ en: ["Total Body Water", "Body Water", "TBW", "Total Water"],
2222
+ pt: ["\xC1gua Corporal Total", "\xC1gua Corporal", "ACT", "\xC1gua Total"]
2223
+ },
2224
+ unit: "L"
2225
+ },
2226
+ {
2227
+ category: "composicao-corporal",
2228
+ code: "BodyWaterPct",
2229
+ loinc: "101684-9",
2230
+ names: {
2231
+ en: ["Body Water Percentage", "Percentage of Body Water", "% Body Water", "Water %"],
2232
+ pt: ["Percentual de \xC1gua Corporal", "% \xC1gua Corporal", "\xC1gua Corporal %"]
2233
+ },
2234
+ unit: "%"
2235
+ },
2236
+ {
2237
+ category: "composicao-corporal",
2238
+ code: "MuscleMass",
2239
+ loinc: "73964-9",
2240
+ names: {
2241
+ en: ["Muscle Mass", "Skeletal Muscle Mass", "SMM", "Body Muscle Mass"],
2242
+ pt: [
2243
+ "Massa Muscular",
2244
+ "Massa Muscular Esquel\xE9tica",
2245
+ "MME",
2246
+ "Massa Muscular Corporal",
2247
+ "M\xFAsculo"
2248
+ ]
2249
+ },
2250
+ unit: "kg"
2251
+ },
2252
+ {
2253
+ category: "composicao-corporal",
2254
+ code: "PhaseAngle",
2255
+ loinc: "107160-4",
2256
+ names: {
2257
+ en: ["Phase Angle", "Whole Body Phase Angle", "PhA", "AnglePhase"],
2258
+ pt: ["\xC2ngulo de Fase", "\xC2ngulo de Fase Corporal"]
2259
+ },
2260
+ unit: "deg"
2261
+ },
2262
+ // O nível de gordura visceral do InBody e similares é um índice
2263
+ // adimensional de 1 a 20, e NÃO é o mesmo que VATMass ou VATVolume, que
2264
+ // vêm de DEXA em massa e volume. LOINC 73707-2 é "Visceral fat [Area]", em
2265
+ // área, então também não serve. Fica sem código, com unidade vazia, para
2266
+ // não ser confundido com nenhum dos três.
2267
+ {
2268
+ category: "composicao-corporal",
2269
+ code: "VisceralFatLevel",
2270
+ names: {
2271
+ en: ["Visceral Fat Level", "Visceral Fat Index", "VFL"],
2272
+ pt: ["N\xEDvel de Gordura Visceral", "\xCDndice de Gordura Visceral", "Gordura Visceral N\xEDvel"]
2273
+ },
2274
+ unit: ""
2275
+ },
2276
+ // Compartimentos de água. Sem LOINC: busca por "extracellular water" e
2277
+ // "intracellular water" não devolve nada, ao contrário de "body water",
2278
+ // que rendeu os dois códigos usados acima.
2279
+ {
2280
+ category: "composicao-corporal",
2281
+ code: "ExtracellularWater",
2282
+ names: {
2283
+ en: ["Extracellular Water", "ECW"],
2284
+ pt: ["\xC1gua Extracelular", "AEC"]
2285
+ },
2286
+ unit: "L"
2287
+ },
2288
+ {
2289
+ category: "composicao-corporal",
2290
+ code: "IntracellularWater",
2291
+ names: {
2292
+ en: ["Intracellular Water", "ICW"],
2293
+ pt: ["\xC1gua Intracelular", "AIC"]
2294
+ },
2295
+ unit: "L"
2296
+ },
2297
+ // Razão entre água extracelular e total. É o marcador de retenção hídrica
2298
+ // e de estado inflamatório que os aparelhos de bioimpedância reportam, e
2299
+ // vem adimensional.
2300
+ {
2301
+ category: "composicao-corporal",
2302
+ code: "ECWToTBWRatio",
2303
+ names: {
2304
+ en: ["ECW/TBW", "ECW_TBW", "ECW to TBW Ratio", "Extracellular Water Ratio"],
2305
+ pt: ["Rela\xE7\xE3o AEC/ACT", "Raz\xE3o \xC1gua Extracelular"]
2306
+ },
2307
+ unit: ""
2308
+ },
2309
+ {
2310
+ category: "composicao-corporal",
2311
+ code: "ResidualMass",
2312
+ names: {
2313
+ en: ["Residual Mass", "Residual Weight"],
2314
+ pt: ["Massa Residual", "Peso Residual"]
2315
+ },
2316
+ unit: "kg"
2317
+ },
2318
+ // Sem `loinc` até alguém decidir com a definição completa em mãos. Os
2319
+ // candidatos não servem como estão: 50042-1 é "Basal metabolic rate
2320
+ // index", um índice e não kcal/dia; 82278-3 é "Measured RMR", medido por
2321
+ // calorimetria indireta, enquanto o aparelho de bioimpedância *estima* a
2322
+ // partir da massa magra; 82286-6 "Predicted RMR" é o mais próximo, mas
2323
+ // ainda é RMR e não TMB. Colocar qualquer um deles repetiria o erro que
2324
+ // esta mesma PR corrige em LeanMass.
2325
+ {
2326
+ category: "composicao-corporal",
2327
+ code: "BasalMetabolicRate",
2328
+ names: {
2329
+ en: ["Basal Metabolic Rate", "BMR"],
2330
+ pt: ["Taxa Metab\xF3lica Basal", "TMB", "Metabolismo Basal", "Gasto Energ\xE9tico Basal"]
2331
+ },
2332
+ unit: "kcal/d"
2333
+ },
2334
+ // Antropometria
2335
+ {
2336
+ category: "composicao-corporal",
2337
+ code: "WaistCircumference",
2338
+ // 8280-0 é a medida em si. 56086-2, que parecia o óbvio pela busca, é
2339
+ // "Adult Waist Circumference Protocol", um protocolo PhenX e não um
2340
+ // resultado.
2341
+ loinc: "8280-0",
2342
+ names: {
2343
+ en: ["Waist Circumference", "Abdominal Circumference", "Waist"],
2344
+ pt: [
2345
+ "Circunfer\xEAncia de Cintura",
2346
+ "Circunfer\xEAncia Abdominal",
2347
+ "Per\xEDmetro Abdominal",
2348
+ "Cintura"
2349
+ ]
2350
+ },
2351
+ unit: "cm"
2352
+ },
2353
+ {
2354
+ category: "composicao-corporal",
2355
+ code: "WaistToHeightRatio",
2356
+ names: {
2357
+ en: ["Waist to Height Ratio", "Waist-to-Height Ratio", "WHtR"],
2358
+ pt: ["Raz\xE3o Cintura-Altura", "Rela\xE7\xE3o Cintura-Estatura", "RCEst"]
2359
+ },
2360
+ unit: ""
2361
+ },
2362
+ {
2363
+ category: "composicao-corporal",
2364
+ code: "ConicityIndex",
2365
+ names: {
2366
+ en: ["Conicity Index", "C Index"],
2367
+ pt: ["\xCDndice de Conicidade", "\xCDndice C"]
2368
+ },
2369
+ unit: ""
2370
+ },
2371
+ // Dobras cutâneas (adipometria)
2372
+ //
2373
+ // A LOINC tem apenas três sítios: tríceps, coxa e cintura. Os outros quatro
2374
+ // que os protocolos brasileiros medem ficam sem código, e é por ausência
2375
+ // confirmada, não por falta de busca. Entram individualmente porque o
2376
+ // protocolo de somatório varia (Pollock 3 ou 7 dobras, Faulkner, Guedes) e
2377
+ // guardar só a soma perderia o dado de origem.
2378
+ {
2379
+ category: "composicao-corporal",
2380
+ code: "SkinfoldTriceps",
2381
+ loinc: "8354-3",
2382
+ names: {
2383
+ en: ["Triceps Skinfold", "Tricipital Skinfold", "Skin Fold Thickness Triceps"],
2384
+ pt: ["Dobra Tricipital", "Dobra Cut\xE2nea Tricipital", "Tricipital", "DCT"]
2385
+ },
2386
+ unit: "mm"
2387
+ },
2388
+ {
2389
+ category: "composicao-corporal",
2390
+ code: "SkinfoldThigh",
2391
+ loinc: "8353-5",
2392
+ names: {
2393
+ en: ["Thigh Skinfold", "Skin Fold Thickness Thigh"],
2394
+ pt: ["Dobra da Coxa", "Dobra Cut\xE2nea Coxa", "Coxa"]
2395
+ },
2396
+ unit: "mm"
2397
+ },
2398
+ {
2399
+ category: "composicao-corporal",
2400
+ code: "SkinfoldAbdominal",
2401
+ loinc: "8355-0",
2402
+ names: {
2403
+ en: ["Abdominal Skinfold", "Waist Skinfold", "Skin Fold Thickness Waist"],
2404
+ pt: ["Dobra Abdominal", "Dobra Cut\xE2nea Abdominal", "Abdominal"]
2405
+ },
2406
+ unit: "mm"
2407
+ },
2408
+ {
2409
+ category: "composicao-corporal",
2410
+ code: "SkinfoldSubscapular",
2411
+ names: {
2412
+ en: ["Subscapular Skinfold"],
2413
+ pt: ["Dobra Subescapular", "Dobra Cut\xE2nea Subescapular", "Subescapular"]
2414
+ },
2415
+ unit: "mm"
2416
+ },
2417
+ {
2418
+ category: "composicao-corporal",
2419
+ code: "SkinfoldSuprailiac",
2420
+ names: {
2421
+ en: ["Suprailiac Skinfold", "Supra-iliac Skinfold"],
2422
+ pt: ["Dobra Supra-il\xEDaca", "Dobra Cut\xE2nea Supra-il\xEDaca", "Supra-il\xEDaca", "Suprailiaca"]
2423
+ },
2424
+ unit: "mm"
2425
+ },
2426
+ {
2427
+ category: "composicao-corporal",
2428
+ code: "SkinfoldChest",
2429
+ names: {
2430
+ en: ["Chest Skinfold", "Pectoral Skinfold"],
2431
+ pt: ["Dobra Peitoral", "Dobra Cut\xE2nea Peitoral", "Peitoral", "Dobra Tor\xE1cica"]
2432
+ },
2433
+ unit: "mm"
2434
+ },
2435
+ {
2436
+ category: "composicao-corporal",
2437
+ code: "SkinfoldMidaxillary",
2438
+ names: {
2439
+ en: ["Midaxillary Skinfold", "Mid-axillary Skinfold"],
2440
+ pt: ["Dobra Axilar M\xE9dia", "Dobra Cut\xE2nea Axilar M\xE9dia", "Axilar M\xE9dia"]
2441
+ },
2442
+ unit: "mm"
2443
+ },
2159
2444
  // Regional Body Composition (DEXA)
2160
2445
  // Note: No official LOINC codes exist for regional lean/fat mass measurements
2161
2446
  // Hidden from UI for now - may be shown in future regional breakdown view
@@ -2918,4 +3203,4 @@ export {
2918
3203
  getBiomarkersByCategory,
2919
3204
  getBiomarkersForCategories
2920
3205
  };
2921
- //# sourceMappingURL=chunk-7O6VUA2B.js.map
3206
+ //# sourceMappingURL=chunk-MTWOF55H.js.map