@precisa-saude/fhir 0.18.0 → 0.20.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-NP4YZFUI.cjs → chunk-2KDLOCD2.cjs} +3 -3
- package/dist/{chunk-NP4YZFUI.cjs.map → chunk-2KDLOCD2.cjs.map} +1 -1
- package/dist/{chunk-7O6VUA2B.js → chunk-3KIJIRCI.js} +329 -2
- package/dist/chunk-3KIJIRCI.js.map +1 -0
- package/dist/{chunk-LPYXISLF.js → chunk-6TQ24JCA.js} +2 -2
- package/dist/{chunk-HGEQS7P7.cjs → chunk-CFKXCL2N.cjs} +4 -4
- package/dist/{chunk-HGEQS7P7.cjs.map → chunk-CFKXCL2N.cjs.map} +1 -1
- package/dist/{chunk-CBGEU6SG.cjs → chunk-ERALICUK.cjs} +60 -1
- package/dist/chunk-ERALICUK.cjs.map +1 -0
- package/dist/{chunk-ONRVND6U.cjs → chunk-NXOTXKVB.cjs} +329 -2
- package/dist/chunk-NXOTXKVB.cjs.map +1 -0
- package/dist/{chunk-HP3OETAJ.js → chunk-OZGOBYLX.js} +2 -2
- package/dist/{chunk-LR2OUVOA.js → chunk-QULBXISC.js} +60 -1
- package/dist/chunk-QULBXISC.js.map +1 -0
- package/dist/cli.js +388 -2
- package/dist/converter.cjs +3 -3
- package/dist/converter.js +2 -2
- package/dist/importer.cjs +3 -3
- package/dist/importer.js +2 -2
- package/dist/index.cjs +6 -6
- package/dist/index.js +4 -4
- package/dist/reference-ranges.cjs +2 -2
- package/dist/reference-ranges.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-7O6VUA2B.js.map +0 -1
- package/dist/chunk-CBGEU6SG.cjs.map +0 -1
- package/dist/chunk-LR2OUVOA.js.map +0 -1
- package/dist/chunk-ONRVND6U.cjs.map +0 -1
- /package/dist/{chunk-LPYXISLF.js.map → chunk-6TQ24JCA.js.map} +0 -0
- /package/dist/{chunk-HP3OETAJ.js.map → chunk-OZGOBYLX.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -2038,10 +2038,20 @@ var BIOMARKER_DEFINITIONS = [
|
|
|
2038
2038
|
},
|
|
2039
2039
|
unit: "kg"
|
|
2040
2040
|
},
|
|
2041
|
+
// Sem `loinc` de propósito. A entrada apontava para 73964-9, cujo nome
|
|
2042
|
+
// oficial é "Body muscle mass Calculated", e massa magra não é massa
|
|
2043
|
+
// muscular: em DEXA, massa magra é tudo que não é gordura nem mineral
|
|
2044
|
+
// ósseo, incluindo órgãos, água e tecido conjuntivo. Massa muscular é um
|
|
2045
|
+
// subconjunto dela.
|
|
2046
|
+
//
|
|
2047
|
+
// O campo sai em bundle FHIR, então a aproximação não ficava só aqui — um
|
|
2048
|
+
// consumidor externo leria massa muscular onde escrevemos massa magra. Não
|
|
2049
|
+
// há LOINC para massa magra (busca por "lean body mass" só devolve códigos
|
|
2050
|
+
// de urina ajustados por LBM), então o certo é não ter código, como já se
|
|
2051
|
+
// faz com FatFreeMass. Quem quer massa muscular usa MuscleMass, abaixo.
|
|
2041
2052
|
{
|
|
2042
2053
|
category: "composicao-corporal",
|
|
2043
2054
|
code: "LeanMass",
|
|
2044
|
-
loinc: "73964-9",
|
|
2045
2055
|
names: {
|
|
2046
2056
|
en: ["Lean Mass", "Lean Body Mass", "Lean Tissue Mass", "Total Lean Mass", "LBM"],
|
|
2047
2057
|
pt: ["Massa Magra", "Massa Corporal Magra", "Tecido Magro", "Massa Magra Total"]
|
|
@@ -2210,6 +2220,323 @@ var BIOMARKER_DEFINITIONS = [
|
|
|
2210
2220
|
},
|
|
2211
2221
|
unit: "kg"
|
|
2212
2222
|
},
|
|
2223
|
+
// ===========================================================================
|
|
2224
|
+
// Composição corporal por bioimpedância, adipometria e antropometria
|
|
2225
|
+
// ===========================================================================
|
|
2226
|
+
//
|
|
2227
|
+
// POLÍTICA DE `loinc` AUSENTE, e o que ela custa
|
|
2228
|
+
//
|
|
2229
|
+
// Várias entradas abaixo não têm `loinc`. Isso não é pendência esquecida: é
|
|
2230
|
+
// o resultado de procurar e não achar, e a decisão tem consequência que
|
|
2231
|
+
// vale enunciar uma vez.
|
|
2232
|
+
//
|
|
2233
|
+
// O que muda sem o código: a observação continua sendo exportada em FHIR e
|
|
2234
|
+
// continua aparecendo para o usuário, mas o `Observation.code` sai só com o
|
|
2235
|
+
// nosso código interno, sem identificador interoperável. Um consumidor
|
|
2236
|
+
// externo consegue ler o valor e a unidade, e não consegue mapear a medida
|
|
2237
|
+
// para o vocabulário dele sem acordo bilateral. Na prática: exibível
|
|
2238
|
+
// sempre, comparável entre sistemas só quando há LOINC.
|
|
2239
|
+
//
|
|
2240
|
+
// Por que ainda assim é o certo: código errado é pior que código ausente.
|
|
2241
|
+
// Ausente o consumidor sabe que precisa perguntar; errado ele integra com
|
|
2242
|
+
// confiança e erra em silêncio. Esta mesma PR corrige um caso desses, em
|
|
2243
|
+
// que `LeanMass` apontava para "Body muscle mass" e o IG publicava massa
|
|
2244
|
+
// muscular sob o rótulo de massa magra.
|
|
2245
|
+
//
|
|
2246
|
+
// Como preencher depois: quando a LOINC publicar o conceito, basta somar o
|
|
2247
|
+
// campo `loinc` — o código interno não muda, e as observações já gravadas
|
|
2248
|
+
// não precisam ser reescritas, porque a chave é o nosso código.
|
|
2249
|
+
//
|
|
2250
|
+
// Todos os códigos aqui foram conferidos na API pública da NLM (Clinical
|
|
2251
|
+
// Table Search Service), e a ausência só foi registrada depois de tentar
|
|
2252
|
+
// múltiplas formulações: "total body water" não devolve nada, "body water"
|
|
2253
|
+
// devolve os dois códigos abaixo.
|
|
2254
|
+
//
|
|
2255
|
+
// As 13 entradas sem código, e o motivo de cada uma:
|
|
2256
|
+
//
|
|
2257
|
+
// MuscleMassIndex corte publicado é sobre massa apendicular, não total
|
|
2258
|
+
// VisceralFatLevel índice de 1 a 20; 73707-2 é área, outra grandeza
|
|
2259
|
+
// ResidualMass conceito de fracionamento antropométrico, não LOINC
|
|
2260
|
+
// BasalMetabolicRate candidatos são índice ou RMR medido, ver nota local
|
|
2261
|
+
// ExtracellularWater "extracellular water" não devolve nada
|
|
2262
|
+
// IntracellularWater "intracellular water" não devolve nada
|
|
2263
|
+
// ECWToTBWRatio razão derivada, sem conceito próprio
|
|
2264
|
+
// WaistToHeightRatio "waist to height" não devolve nada
|
|
2265
|
+
// ConicityIndex índice derivado, sem conceito próprio
|
|
2266
|
+
// SkinfoldSubscapular LOINC só tem tríceps, coxa e cintura
|
|
2267
|
+
// SkinfoldSuprailiac idem
|
|
2268
|
+
// SkinfoldChest idem
|
|
2269
|
+
// SkinfoldMidaxillary idem
|
|
2270
|
+
// Bioimpedância (BIA)
|
|
2271
|
+
{
|
|
2272
|
+
category: "composicao-corporal",
|
|
2273
|
+
code: "TotalBodyWater",
|
|
2274
|
+
loinc: "101683-1",
|
|
2275
|
+
names: {
|
|
2276
|
+
en: ["Total Body Water", "Body Water", "TBW", "Total Water"],
|
|
2277
|
+
pt: ["\xC1gua Corporal Total", "\xC1gua Corporal", "ACT", "\xC1gua Total"]
|
|
2278
|
+
},
|
|
2279
|
+
unit: "L"
|
|
2280
|
+
},
|
|
2281
|
+
{
|
|
2282
|
+
category: "composicao-corporal",
|
|
2283
|
+
code: "BodyWaterPct",
|
|
2284
|
+
loinc: "101684-9",
|
|
2285
|
+
names: {
|
|
2286
|
+
en: ["Body Water Percentage", "Percentage of Body Water", "% Body Water", "Water %"],
|
|
2287
|
+
pt: ["Percentual de \xC1gua Corporal", "% \xC1gua Corporal", "\xC1gua Corporal %"]
|
|
2288
|
+
},
|
|
2289
|
+
unit: "%"
|
|
2290
|
+
},
|
|
2291
|
+
{
|
|
2292
|
+
category: "composicao-corporal",
|
|
2293
|
+
code: "MuscleMass",
|
|
2294
|
+
loinc: "73964-9",
|
|
2295
|
+
names: {
|
|
2296
|
+
en: ["Muscle Mass", "Skeletal Muscle Mass", "SMM", "Body Muscle Mass"],
|
|
2297
|
+
pt: [
|
|
2298
|
+
"Massa Muscular",
|
|
2299
|
+
"Massa Muscular Esquel\xE9tica",
|
|
2300
|
+
"MME",
|
|
2301
|
+
"Massa Muscular Corporal",
|
|
2302
|
+
"M\xFAsculo"
|
|
2303
|
+
]
|
|
2304
|
+
},
|
|
2305
|
+
unit: "kg"
|
|
2306
|
+
},
|
|
2307
|
+
// Derivado, não extraído: `MuscleMass / altura²`, calculado pelo
|
|
2308
|
+
// `calculadoras-clinicas` a partir da altura que o usuário informa no
|
|
2309
|
+
// cadastro. Mesmo ajuste que o IMC faz com o peso, e serve para a medida
|
|
2310
|
+
// ser comparável entre estaturas diferentes e ao longo do tempo.
|
|
2311
|
+
//
|
|
2312
|
+
// Sem `loinc` e sem faixa, e agora com fonte para a decisão em vez de só
|
|
2313
|
+
// cautela. O EWGSOP2 (Age and Ageing, 2019, DOI 10.1093/ageing/afy169)
|
|
2314
|
+
// separa explicitamente "total body Skeletal Muscle Mass (SMM)" de
|
|
2315
|
+
// "Appendicular Skeletal Muscle Mass (ASM)", e os cortes publicados são
|
|
2316
|
+
// sobre ASM. `MuscleMass` aqui é total, então o corte não se aplica.
|
|
2317
|
+
//
|
|
2318
|
+
// O mesmo consenso ainda diz, sobre ajustar por tamanho corporal: "The
|
|
2319
|
+
// authors make no recommendation to adjust for body size, but adjustment
|
|
2320
|
+
// can be made if data are available for a relevant normative population."
|
|
2321
|
+
// Não temos população normativa brasileira para bioimpedância, e o
|
|
2322
|
+
// consenso registra que a equação de Sergi, padrão do método, foi
|
|
2323
|
+
// derivada em europeus idosos.
|
|
2324
|
+
//
|
|
2325
|
+
// Por isso o índice existe para acompanhar a própria evolução, e não para
|
|
2326
|
+
// classificar.
|
|
2327
|
+
{
|
|
2328
|
+
category: "composicao-corporal",
|
|
2329
|
+
code: "MuscleMassIndex",
|
|
2330
|
+
names: {
|
|
2331
|
+
en: ["Muscle Mass Index", "Skeletal Muscle Mass Index", "SMI", "SMMI"],
|
|
2332
|
+
pt: ["\xCDndice de Massa Muscular", "IMM", "\xCDndice de Massa Muscular Esquel\xE9tica"]
|
|
2333
|
+
},
|
|
2334
|
+
unit: "kg/m2"
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
category: "composicao-corporal",
|
|
2338
|
+
code: "PhaseAngle",
|
|
2339
|
+
loinc: "107160-4",
|
|
2340
|
+
names: {
|
|
2341
|
+
en: ["Phase Angle", "Whole Body Phase Angle", "PhA", "AnglePhase"],
|
|
2342
|
+
pt: ["\xC2ngulo de Fase", "\xC2ngulo de Fase Corporal"]
|
|
2343
|
+
},
|
|
2344
|
+
unit: "deg"
|
|
2345
|
+
},
|
|
2346
|
+
// O nível de gordura visceral do InBody e similares é um índice
|
|
2347
|
+
// adimensional de 1 a 20, e NÃO é o mesmo que VATMass ou VATVolume, que
|
|
2348
|
+
// vêm de DEXA em massa e volume. LOINC 73707-2 é "Visceral fat [Area]", em
|
|
2349
|
+
// área, então também não serve. Fica sem código, com unidade vazia, para
|
|
2350
|
+
// não ser confundido com nenhum dos três.
|
|
2351
|
+
{
|
|
2352
|
+
category: "composicao-corporal",
|
|
2353
|
+
code: "VisceralFatLevel",
|
|
2354
|
+
names: {
|
|
2355
|
+
en: ["Visceral Fat Level", "Visceral Fat Index", "VFL"],
|
|
2356
|
+
pt: ["N\xEDvel de Gordura Visceral", "\xCDndice de Gordura Visceral", "Gordura Visceral N\xEDvel"]
|
|
2357
|
+
},
|
|
2358
|
+
unit: ""
|
|
2359
|
+
},
|
|
2360
|
+
// Compartimentos de água. Sem LOINC: busca por "extracellular water" e
|
|
2361
|
+
// "intracellular water" não devolve nada, ao contrário de "body water",
|
|
2362
|
+
// que rendeu os dois códigos usados acima.
|
|
2363
|
+
{
|
|
2364
|
+
category: "composicao-corporal",
|
|
2365
|
+
code: "ExtracellularWater",
|
|
2366
|
+
names: {
|
|
2367
|
+
en: ["Extracellular Water", "ECW"],
|
|
2368
|
+
pt: ["\xC1gua Extracelular", "AEC"]
|
|
2369
|
+
},
|
|
2370
|
+
unit: "L"
|
|
2371
|
+
},
|
|
2372
|
+
{
|
|
2373
|
+
category: "composicao-corporal",
|
|
2374
|
+
code: "IntracellularWater",
|
|
2375
|
+
names: {
|
|
2376
|
+
en: ["Intracellular Water", "ICW"],
|
|
2377
|
+
pt: ["\xC1gua Intracelular", "AIC"]
|
|
2378
|
+
},
|
|
2379
|
+
unit: "L"
|
|
2380
|
+
},
|
|
2381
|
+
// Razão entre água extracelular e total. É o marcador de retenção hídrica
|
|
2382
|
+
// e de estado inflamatório que os aparelhos de bioimpedância reportam, e
|
|
2383
|
+
// vem adimensional.
|
|
2384
|
+
{
|
|
2385
|
+
category: "composicao-corporal",
|
|
2386
|
+
code: "ECWToTBWRatio",
|
|
2387
|
+
names: {
|
|
2388
|
+
en: ["ECW/TBW", "ECW_TBW", "ECW to TBW Ratio", "Extracellular Water Ratio"],
|
|
2389
|
+
pt: ["Rela\xE7\xE3o AEC/ACT", "Raz\xE3o \xC1gua Extracelular"]
|
|
2390
|
+
},
|
|
2391
|
+
unit: ""
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
category: "composicao-corporal",
|
|
2395
|
+
code: "ResidualMass",
|
|
2396
|
+
names: {
|
|
2397
|
+
en: ["Residual Mass", "Residual Weight"],
|
|
2398
|
+
pt: ["Massa Residual", "Peso Residual"]
|
|
2399
|
+
},
|
|
2400
|
+
unit: "kg"
|
|
2401
|
+
},
|
|
2402
|
+
// Sem `loinc` até alguém decidir com a definição completa em mãos. Os
|
|
2403
|
+
// candidatos não servem como estão: 50042-1 é "Basal metabolic rate
|
|
2404
|
+
// index", um índice e não kcal/dia; 82278-3 é "Measured RMR", medido por
|
|
2405
|
+
// calorimetria indireta, enquanto o aparelho de bioimpedância *estima* a
|
|
2406
|
+
// partir da massa magra; 82286-6 "Predicted RMR" é o mais próximo, mas
|
|
2407
|
+
// ainda é RMR e não TMB. Colocar qualquer um deles repetiria o erro que
|
|
2408
|
+
// esta mesma PR corrige em LeanMass.
|
|
2409
|
+
{
|
|
2410
|
+
category: "composicao-corporal",
|
|
2411
|
+
code: "BasalMetabolicRate",
|
|
2412
|
+
names: {
|
|
2413
|
+
en: ["Basal Metabolic Rate", "BMR"],
|
|
2414
|
+
pt: ["Taxa Metab\xF3lica Basal", "TMB", "Metabolismo Basal", "Gasto Energ\xE9tico Basal"]
|
|
2415
|
+
},
|
|
2416
|
+
unit: "kcal/d"
|
|
2417
|
+
},
|
|
2418
|
+
// Antropometria
|
|
2419
|
+
{
|
|
2420
|
+
category: "composicao-corporal",
|
|
2421
|
+
code: "WaistCircumference",
|
|
2422
|
+
// 8280-0 é a medida em si. 56086-2, que parecia o óbvio pela busca, é
|
|
2423
|
+
// "Adult Waist Circumference Protocol", um protocolo PhenX e não um
|
|
2424
|
+
// resultado.
|
|
2425
|
+
loinc: "8280-0",
|
|
2426
|
+
names: {
|
|
2427
|
+
en: ["Waist Circumference", "Abdominal Circumference", "Waist"],
|
|
2428
|
+
pt: [
|
|
2429
|
+
"Circunfer\xEAncia de Cintura",
|
|
2430
|
+
"Circunfer\xEAncia Abdominal",
|
|
2431
|
+
"Per\xEDmetro Abdominal",
|
|
2432
|
+
"Cintura"
|
|
2433
|
+
]
|
|
2434
|
+
},
|
|
2435
|
+
unit: "cm"
|
|
2436
|
+
},
|
|
2437
|
+
// O EWGSOP2 usa a panturrilha como proxy de massa muscular onde não há
|
|
2438
|
+
// outro método disponível, o que a torna útil em consulta sem aparelho.
|
|
2439
|
+
{
|
|
2440
|
+
category: "composicao-corporal",
|
|
2441
|
+
code: "CalfCircumference",
|
|
2442
|
+
loinc: "107112-5",
|
|
2443
|
+
names: {
|
|
2444
|
+
en: ["Calf Circumference", "Calf Girth"],
|
|
2445
|
+
pt: ["Circunfer\xEAncia da Panturrilha", "Per\xEDmetro da Panturrilha", "Panturrilha"]
|
|
2446
|
+
},
|
|
2447
|
+
unit: "cm"
|
|
2448
|
+
},
|
|
2449
|
+
{
|
|
2450
|
+
category: "composicao-corporal",
|
|
2451
|
+
code: "WaistToHeightRatio",
|
|
2452
|
+
names: {
|
|
2453
|
+
en: ["Waist to Height Ratio", "Waist-to-Height Ratio", "WHtR"],
|
|
2454
|
+
pt: ["Raz\xE3o Cintura-Altura", "Rela\xE7\xE3o Cintura-Estatura", "RCEst"]
|
|
2455
|
+
},
|
|
2456
|
+
unit: ""
|
|
2457
|
+
},
|
|
2458
|
+
{
|
|
2459
|
+
category: "composicao-corporal",
|
|
2460
|
+
code: "ConicityIndex",
|
|
2461
|
+
names: {
|
|
2462
|
+
en: ["Conicity Index", "C Index"],
|
|
2463
|
+
pt: ["\xCDndice de Conicidade", "\xCDndice C"]
|
|
2464
|
+
},
|
|
2465
|
+
unit: ""
|
|
2466
|
+
},
|
|
2467
|
+
// Dobras cutâneas (adipometria)
|
|
2468
|
+
//
|
|
2469
|
+
// A LOINC tem apenas três sítios: tríceps, coxa e cintura. Os outros quatro
|
|
2470
|
+
// que os protocolos brasileiros medem ficam sem código, e é por ausência
|
|
2471
|
+
// confirmada, não por falta de busca. Entram individualmente porque o
|
|
2472
|
+
// protocolo de somatório varia (Pollock 3 ou 7 dobras, Faulkner, Guedes) e
|
|
2473
|
+
// guardar só a soma perderia o dado de origem.
|
|
2474
|
+
{
|
|
2475
|
+
category: "composicao-corporal",
|
|
2476
|
+
code: "SkinfoldTriceps",
|
|
2477
|
+
loinc: "8354-3",
|
|
2478
|
+
names: {
|
|
2479
|
+
en: ["Triceps Skinfold", "Tricipital Skinfold", "Skin Fold Thickness Triceps"],
|
|
2480
|
+
pt: ["Dobra Tricipital", "Dobra Cut\xE2nea Tricipital", "Tricipital", "DCT"]
|
|
2481
|
+
},
|
|
2482
|
+
unit: "mm"
|
|
2483
|
+
},
|
|
2484
|
+
{
|
|
2485
|
+
category: "composicao-corporal",
|
|
2486
|
+
code: "SkinfoldThigh",
|
|
2487
|
+
loinc: "8353-5",
|
|
2488
|
+
names: {
|
|
2489
|
+
en: ["Thigh Skinfold", "Skin Fold Thickness Thigh"],
|
|
2490
|
+
pt: ["Dobra da Coxa", "Dobra Cut\xE2nea Coxa", "Coxa"]
|
|
2491
|
+
},
|
|
2492
|
+
unit: "mm"
|
|
2493
|
+
},
|
|
2494
|
+
{
|
|
2495
|
+
category: "composicao-corporal",
|
|
2496
|
+
code: "SkinfoldAbdominal",
|
|
2497
|
+
loinc: "8355-0",
|
|
2498
|
+
names: {
|
|
2499
|
+
en: ["Abdominal Skinfold", "Waist Skinfold", "Skin Fold Thickness Waist"],
|
|
2500
|
+
pt: ["Dobra Abdominal", "Dobra Cut\xE2nea Abdominal", "Abdominal"]
|
|
2501
|
+
},
|
|
2502
|
+
unit: "mm"
|
|
2503
|
+
},
|
|
2504
|
+
{
|
|
2505
|
+
category: "composicao-corporal",
|
|
2506
|
+
code: "SkinfoldSubscapular",
|
|
2507
|
+
names: {
|
|
2508
|
+
en: ["Subscapular Skinfold"],
|
|
2509
|
+
pt: ["Dobra Subescapular", "Dobra Cut\xE2nea Subescapular", "Subescapular"]
|
|
2510
|
+
},
|
|
2511
|
+
unit: "mm"
|
|
2512
|
+
},
|
|
2513
|
+
{
|
|
2514
|
+
category: "composicao-corporal",
|
|
2515
|
+
code: "SkinfoldSuprailiac",
|
|
2516
|
+
names: {
|
|
2517
|
+
en: ["Suprailiac Skinfold", "Supra-iliac Skinfold"],
|
|
2518
|
+
pt: ["Dobra Supra-il\xEDaca", "Dobra Cut\xE2nea Supra-il\xEDaca", "Supra-il\xEDaca", "Suprailiaca"]
|
|
2519
|
+
},
|
|
2520
|
+
unit: "mm"
|
|
2521
|
+
},
|
|
2522
|
+
{
|
|
2523
|
+
category: "composicao-corporal",
|
|
2524
|
+
code: "SkinfoldChest",
|
|
2525
|
+
names: {
|
|
2526
|
+
en: ["Chest Skinfold", "Pectoral Skinfold"],
|
|
2527
|
+
pt: ["Dobra Peitoral", "Dobra Cut\xE2nea Peitoral", "Peitoral", "Dobra Tor\xE1cica"]
|
|
2528
|
+
},
|
|
2529
|
+
unit: "mm"
|
|
2530
|
+
},
|
|
2531
|
+
{
|
|
2532
|
+
category: "composicao-corporal",
|
|
2533
|
+
code: "SkinfoldMidaxillary",
|
|
2534
|
+
names: {
|
|
2535
|
+
en: ["Midaxillary Skinfold", "Mid-axillary Skinfold"],
|
|
2536
|
+
pt: ["Dobra Axilar M\xE9dia", "Dobra Cut\xE2nea Axilar M\xE9dia", "Axilar M\xE9dia"]
|
|
2537
|
+
},
|
|
2538
|
+
unit: "mm"
|
|
2539
|
+
},
|
|
2213
2540
|
// Regional Body Composition (DEXA)
|
|
2214
2541
|
// Note: No official LOINC codes exist for regional lean/fat mass measurements
|
|
2215
2542
|
// Hidden from UI for now - may be shown in future regional breakdown view
|
|
@@ -5643,6 +5970,65 @@ var biomarkerRangeDefinitions = {
|
|
|
5643
5970
|
}
|
|
5644
5971
|
]
|
|
5645
5972
|
},
|
|
5973
|
+
// Revisão sistemática de 78 estudos, catorze países, incluindo população
|
|
5974
|
+
// centro-americana: o limite médio ficou em 0,50 para homens e para
|
|
5975
|
+
// mulheres, e é o mesmo para os dois sexos, daí não haver variantes.
|
|
5976
|
+
//
|
|
5977
|
+
// Só `max`. O limite inferior não entra porque a revisão não estabelece
|
|
5978
|
+
// piso, e inventar um transformaria em alteração um valor que a fonte não
|
|
5979
|
+
// classifica.
|
|
5980
|
+
// O EWGSOP2 traz um único corte, <31 cm, e o enuncia restrito: "Calf
|
|
5981
|
+
// circumference has been shown to predict performance and survival in
|
|
5982
|
+
// older people (cut-off point <31 cm)". Por isso entra como variante por
|
|
5983
|
+
// idade, e não como padrão para todo adulto — estender o número para
|
|
5984
|
+
// gente de 30 anos seria ir além do que a fonte diz.
|
|
5985
|
+
//
|
|
5986
|
+
// O padrão fica sem `min` de propósito: não há corte publicado para
|
|
5987
|
+
// adulto jovem, e o consumidor lê a medida sem zona em vez de ler uma
|
|
5988
|
+
// zona inventada.
|
|
5989
|
+
//
|
|
5990
|
+
// Como interpretar, por faixa etária:
|
|
5991
|
+
//
|
|
5992
|
+
// 60+ a medida tem corte e classifica: abaixo de 31 cm é sinal de
|
|
5993
|
+
// alerta para perda de massa muscular.
|
|
5994
|
+
// <60 a medida é válida e comparável com ela mesma ao longo do tempo,
|
|
5995
|
+
// mas não classifica. Uma queda consistente entre exames importa
|
|
5996
|
+
// mais do que o valor absoluto num único dia, e é assim que o
|
|
5997
|
+
// conteúdo do marcador orienta o usuário.
|
|
5998
|
+
//
|
|
5999
|
+
// A ausência de zona abaixo dos 60 não é lacuna a preencher com o número
|
|
6000
|
+
// dos idosos: massa muscular tem trajetória própria por idade, e o
|
|
6001
|
+
// consenso deriva o corte justamente na faixa em que a perda vira
|
|
6002
|
+
// desfecho.
|
|
6003
|
+
//
|
|
6004
|
+
// Recência conferida em 28/08/2026. Existe consenso mais novo, o GLIS
|
|
6005
|
+
// 2024 (Age and Ageing, DOI 10.1093/ageing/afae052), primeiro global
|
|
6006
|
+
// sobre sarcopenia, com Cruz-Jentoft e Chen entre os autores — ou seja,
|
|
6007
|
+
// os líderes do EWGSOP2 e do AWGS. Ele **não** substitui este corte: é
|
|
6008
|
+
// conceitual, e o próprio texto diz que servirá "to develop an
|
|
6009
|
+
// operational definition for clinical and research settings". Enquanto a
|
|
6010
|
+
// definição operacional não sai, o EWGSOP2 segue sendo a referência de
|
|
6011
|
+
// ponto de corte.
|
|
6012
|
+
//
|
|
6013
|
+
// Nota: o consenso asiático (AWGS 2019) usa 34 cm para homens e 33 para
|
|
6014
|
+
// mulheres, em outra população e como triagem, não como corte de massa.
|
|
6015
|
+
// Os números não são intercambiáveis.
|
|
6016
|
+
CalfCircumference: {
|
|
6017
|
+
default: { unit: "cm" },
|
|
6018
|
+
direction: "higher-better",
|
|
6019
|
+
source: "ewgsop2-2019",
|
|
6020
|
+
// O corte não é específico por sexo na fonte; as duas variantes existem
|
|
6021
|
+
// porque `RangeVariant` exige o campo, e carregam o mesmo número.
|
|
6022
|
+
variants: [
|
|
6023
|
+
{ ageMin: 60, range: { min: 31, unit: "cm" }, sex: "F" },
|
|
6024
|
+
{ ageMin: 60, range: { min: 31, unit: "cm" }, sex: "M" }
|
|
6025
|
+
]
|
|
6026
|
+
},
|
|
6027
|
+
WaistToHeightRatio: {
|
|
6028
|
+
default: { max: 0.5, unit: "" },
|
|
6029
|
+
direction: "lower-better",
|
|
6030
|
+
source: "browning-ashwell-2010"
|
|
6031
|
+
},
|
|
5646
6032
|
AndroidGynoidRatio: {
|
|
5647
6033
|
default: { max: 1.2, min: 0.5, optimalMax: 1, optimalMin: 0.6, unit: "" },
|
|
5648
6034
|
direction: "lower-better",
|
|
@@ -6192,7 +6578,7 @@ async function main() {
|
|
|
6192
6578
|
strict: false
|
|
6193
6579
|
});
|
|
6194
6580
|
if (values.version) {
|
|
6195
|
-
process.stdout.write(`${"0.
|
|
6581
|
+
process.stdout.write(`${"0.20.0"}
|
|
6196
6582
|
`);
|
|
6197
6583
|
return;
|
|
6198
6584
|
}
|
package/dist/converter.cjs
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
require('./chunk-
|
|
6
|
+
var _chunk2KDLOCD2cjs = require('./chunk-2KDLOCD2.cjs');
|
|
7
|
+
require('./chunk-NXOTXKVB.cjs');
|
|
8
8
|
require('./chunk-MJ254F5K.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
exports.labObservationToFHIR =
|
|
14
|
+
exports.labObservationToFHIR = _chunk2KDLOCD2cjs.labObservationToFHIR; exports.labReportToFHIR = _chunk2KDLOCD2cjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunk2KDLOCD2cjs.labResultToFHIRBundle; exports.userProfileToFHIR = _chunk2KDLOCD2cjs.userProfileToFHIR;
|
|
15
15
|
//# sourceMappingURL=converter.cjs.map
|
package/dist/converter.js
CHANGED
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
labReportToFHIR,
|
|
4
4
|
labResultToFHIRBundle,
|
|
5
5
|
userProfileToFHIR
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-6TQ24JCA.js";
|
|
7
|
+
import "./chunk-3KIJIRCI.js";
|
|
8
8
|
import "./chunk-R4MUCMO3.js";
|
|
9
9
|
export {
|
|
10
10
|
labObservationToFHIR,
|
package/dist/importer.cjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
8
|
-
require('./chunk-
|
|
7
|
+
var _chunkCFKXCL2Ncjs = require('./chunk-CFKXCL2N.cjs');
|
|
8
|
+
require('./chunk-NXOTXKVB.cjs');
|
|
9
9
|
require('./chunk-3ILBFLVQ.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
@@ -13,5 +13,5 @@ require('./chunk-3ILBFLVQ.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
exports.MAX_FILE_SIZE =
|
|
16
|
+
exports.MAX_FILE_SIZE = _chunkCFKXCL2Ncjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkCFKXCL2Ncjs.MAX_OBSERVATIONS; exports.extractObservationsFromBundle = _chunkCFKXCL2Ncjs.extractObservationsFromBundle; exports.mapFHIRObservationToInternal = _chunkCFKXCL2Ncjs.mapFHIRObservationToInternal; exports.processImportBundle = _chunkCFKXCL2Ncjs.processImportBundle;
|
|
17
17
|
//# sourceMappingURL=importer.cjs.map
|
package/dist/importer.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
extractObservationsFromBundle,
|
|
5
5
|
mapFHIRObservationToInternal,
|
|
6
6
|
processImportBundle
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-OZGOBYLX.js";
|
|
8
|
+
import "./chunk-3KIJIRCI.js";
|
|
9
9
|
import "./chunk-N3ZCOLG2.js";
|
|
10
10
|
export {
|
|
11
11
|
MAX_FILE_SIZE,
|
package/dist/index.cjs
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunk2KDLOCD2cjs = require('./chunk-2KDLOCD2.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkCFKXCL2Ncjs = require('./chunk-CFKXCL2N.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
@@ -43,7 +43,7 @@ var _chunkHGEQS7P7cjs = require('./chunk-HGEQS7P7.cjs');
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
var
|
|
46
|
+
var _chunkNXOTXKVBcjs = require('./chunk-NXOTXKVB.cjs');
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
@@ -51,7 +51,7 @@ var _chunkONRVND6Ucjs = require('./chunk-ONRVND6U.cjs');
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
var
|
|
54
|
+
var _chunkERALICUKcjs = require('./chunk-ERALICUK.cjs');
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
|
|
@@ -228,7 +228,7 @@ function interventionToFHIRObservation(intervention, patientId) {
|
|
|
228
228
|
}
|
|
229
229
|
function interventionsToFHIRBundle(interventions, userProfile) {
|
|
230
230
|
const patientId = userProfile.userId;
|
|
231
|
-
const fhirPatient =
|
|
231
|
+
const fhirPatient = _chunk2KDLOCD2cjs.userProfileToFHIR.call(void 0, userProfile);
|
|
232
232
|
const entries = interventions.map((intervention) => {
|
|
233
233
|
const isMedication = intervention.type === "medication" || intervention.type === "supplement";
|
|
234
234
|
const resource = isMedication ? interventionToFHIRMedicationStatement(intervention, patientId) : interventionToFHIRObservation(intervention, patientId);
|
|
@@ -691,5 +691,5 @@ function cnsToFHIRIdentifier(cns) {
|
|
|
691
691
|
|
|
692
692
|
|
|
693
693
|
|
|
694
|
-
exports.AGE_BRACKETS = AGE_BRACKETS; exports.BIOMARKER_DEFAULT_UNIT = _chunkMJ254F5Kcjs.BIOMARKER_DEFAULT_UNIT; exports.BIOMARKER_DEFINITIONS =
|
|
694
|
+
exports.AGE_BRACKETS = AGE_BRACKETS; exports.BIOMARKER_DEFAULT_UNIT = _chunkMJ254F5Kcjs.BIOMARKER_DEFAULT_UNIT; exports.BIOMARKER_DEFINITIONS = _chunkNXOTXKVBcjs.BIOMARKER_DEFINITIONS; exports.BIOMARKER_UNITS = _chunkMJ254F5Kcjs.BIOMARKER_UNITS; exports.BODY_FAT_ZONES = BODY_FAT_ZONES; exports.CAC_INDICATOR_CODES = _chunkNXOTXKVBcjs.CAC_INDICATOR_CODES; exports.CATEGORY_GROUPS = CATEGORY_GROUPS; exports.CATEGORY_SCREENING_INTERVALS = CATEGORY_SCREENING_INTERVALS; exports.DEXA_CATEGORIES = _chunkNXOTXKVBcjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunkNXOTXKVBcjs.DEXA_INDICATOR_CODES; exports.MAX_FILE_SIZE = _chunkCFKXCL2Ncjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkCFKXCL2Ncjs.MAX_OBSERVATIONS; exports.T_SCORE_ZONES = T_SCORE_ZONES; exports.UNIT_TO_UCUM = _chunkMJ254F5Kcjs.UNIT_TO_UCUM; exports.ZONE_DEFS = ZONE_DEFS; exports.applyFallbackReferenceRanges = _chunkERALICUKcjs.applyFallbackReferenceRanges; exports.biomarkerRangeDefinitions = _chunkERALICUKcjs.biomarkerRangeDefinitions; exports.calculateNextScreeningDate = calculateNextScreeningDate; exports.cnsToFHIRIdentifier = cnsToFHIRIdentifier; exports.codeToLoinc = _chunkNXOTXKVBcjs.codeToLoinc; exports.convertUnit = _chunkMJ254F5Kcjs.convertUnit; exports.cpfToFHIRIdentifier = cpfToFHIRIdentifier; exports.defaultReferenceRanges = _chunkERALICUKcjs.defaultReferenceRanges; exports.extractObservationsFromBundle = _chunkCFKXCL2Ncjs.extractObservationsFromBundle; exports.filterVisibleBiomarkers = _chunkNXOTXKVBcjs.filterVisibleBiomarkers; exports.findCodeByName = _chunkNXOTXKVBcjs.findCodeByName; exports.formatCNS = formatCNS; exports.formatCPF = formatCPF; exports.generateCacFullReference = _chunkNXOTXKVBcjs.generateCacFullReference; exports.generateDexaFullReference = _chunkNXOTXKVBcjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunkNXOTXKVBcjs.generateFilteredLLMReference; exports.generateLLMReference = _chunkNXOTXKVBcjs.generateLLMReference; exports.getAllCodes = _chunkNXOTXKVBcjs.getAllCodes; exports.getAllDefinitions = _chunkNXOTXKVBcjs.getAllDefinitions; exports.getAllLoincCodes = _chunkNXOTXKVBcjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunkNXOTXKVBcjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunkNXOTXKVBcjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunkNXOTXKVBcjs.getBiomarkersForCategories; exports.getCanonicalUnit = _chunkMJ254F5Kcjs.getCanonicalUnit; exports.getCategoriesByInterval = getCategoriesByInterval; exports.getCategoryGroup = getCategoryGroup; exports.getDaysUntilScreening = getDaysUntilScreening; exports.getDefaultUnit = _chunkMJ254F5Kcjs.getDefaultUnit; exports.getDefinitionByCode = _chunkNXOTXKVBcjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunkNXOTXKVBcjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunkNXOTXKVBcjs.getDefinitionsBySex; exports.getDueCategories = getDueCategories; exports.getFallbackReferenceRange = _chunkERALICUKcjs.getFallbackReferenceRange; exports.getRangeDirection = _chunkERALICUKcjs.getRangeDirection; exports.getReferenceRange = _chunkERALICUKcjs.getReferenceRange; exports.getSIUnit = _chunkMJ254F5Kcjs.getSIUnit; exports.getScreeningInterval = getScreeningInterval; exports.getSexForCode = _chunkNXOTXKVBcjs.getSexForCode; exports.getVisibleDefinitions = _chunkNXOTXKVBcjs.getVisibleDefinitions; exports.interventionToFHIRMedicationStatement = interventionToFHIRMedicationStatement; exports.interventionToFHIRObservation = interventionToFHIRObservation; exports.interventionsToFHIRBundle = interventionsToFHIRBundle; exports.isBiomarkerVisible = _chunkNXOTXKVBcjs.isBiomarkerVisible; exports.isCacDocument = _chunkNXOTXKVBcjs.isCacDocument; exports.isDexaDocument = _chunkNXOTXKVBcjs.isDexaDocument; exports.isScreeningDue = isScreeningDue; exports.isValidCode = _chunkNXOTXKVBcjs.isValidCode; exports.isValidLoinc = _chunkNXOTXKVBcjs.isValidLoinc; exports.labObservationToFHIR = _chunk2KDLOCD2cjs.labObservationToFHIR; exports.labReportToFHIR = _chunk2KDLOCD2cjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunk2KDLOCD2cjs.labResultToFHIRBundle; exports.listMappedSubcategories = listMappedSubcategories; exports.loincToCode = _chunkNXOTXKVBcjs.loincToCode; exports.mapFHIRObservationToInternal = _chunkCFKXCL2Ncjs.mapFHIRObservationToInternal; exports.normalizeCode = _chunkNXOTXKVBcjs.normalizeCode; exports.plural = plural; exports.pluralCount = pluralCount; exports.pluralPhrase = pluralPhrase; exports.pluralPhraseCount = pluralPhraseCount; exports.processImportBundle = _chunkCFKXCL2Ncjs.processImportBundle; exports.toBiomarkerTests = _chunkNXOTXKVBcjs.toBiomarkerTests; exports.unitToUCUM = _chunkMJ254F5Kcjs.unitToUCUM; exports.userProfileToFHIR = _chunk2KDLOCD2cjs.userProfileToFHIR; exports.validateCNS = validateCNS; exports.validateCPF = validateCPF; exports.validateFHIRDiagnosticReport = _chunk3ILBFLVQcjs.validateFHIRDiagnosticReport; exports.validateFHIRImportBundle = _chunk3ILBFLVQcjs.validateFHIRImportBundle; exports.validateFHIRObservation = _chunk3ILBFLVQcjs.validateFHIRObservation; exports.validateLoincNameMatch = _chunkNXOTXKVBcjs.validateLoincNameMatch;
|
|
695
695
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
labReportToFHIR,
|
|
4
4
|
labResultToFHIRBundle,
|
|
5
5
|
userProfileToFHIR
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6TQ24JCA.js";
|
|
7
7
|
import {
|
|
8
8
|
MAX_FILE_SIZE,
|
|
9
9
|
MAX_OBSERVATIONS,
|
|
10
10
|
extractObservationsFromBundle,
|
|
11
11
|
mapFHIRObservationToInternal,
|
|
12
12
|
processImportBundle
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OZGOBYLX.js";
|
|
14
14
|
import {
|
|
15
15
|
BIOMARKER_DEFINITIONS,
|
|
16
16
|
CAC_INDICATOR_CODES,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
normalizeCode,
|
|
44
44
|
toBiomarkerTests,
|
|
45
45
|
validateLoincNameMatch
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-3KIJIRCI.js";
|
|
47
47
|
import {
|
|
48
48
|
applyFallbackReferenceRanges,
|
|
49
49
|
biomarkerRangeDefinitions,
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
getFallbackReferenceRange,
|
|
52
52
|
getRangeDirection,
|
|
53
53
|
getReferenceRange
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-QULBXISC.js";
|
|
55
55
|
import {
|
|
56
56
|
BIOMARKER_DEFAULT_UNIT,
|
|
57
57
|
BIOMARKER_UNITS,
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkERALICUKcjs = require('./chunk-ERALICUK.cjs');
|
|
9
9
|
require('./chunk-MJ254F5K.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
@@ -14,5 +14,5 @@ require('./chunk-MJ254F5K.cjs');
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
exports.applyFallbackReferenceRanges =
|
|
17
|
+
exports.applyFallbackReferenceRanges = _chunkERALICUKcjs.applyFallbackReferenceRanges; exports.biomarkerRangeDefinitions = _chunkERALICUKcjs.biomarkerRangeDefinitions; exports.defaultReferenceRanges = _chunkERALICUKcjs.defaultReferenceRanges; exports.getFallbackReferenceRange = _chunkERALICUKcjs.getFallbackReferenceRange; exports.getRangeDirection = _chunkERALICUKcjs.getRangeDirection; exports.getReferenceRange = _chunkERALICUKcjs.getReferenceRange;
|
|
18
18
|
//# sourceMappingURL=reference-ranges.cjs.map
|
package/dist/reference-ranges.js
CHANGED
package/package.json
CHANGED