@precisa-saude/fhir 0.1.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 (72) hide show
  1. package/README.md +85 -0
  2. package/dist/biomarkers.cjs +67 -0
  3. package/dist/biomarkers.cjs.map +1 -0
  4. package/dist/biomarkers.d.cts +226 -0
  5. package/dist/biomarkers.d.ts +226 -0
  6. package/dist/biomarkers.js +67 -0
  7. package/dist/biomarkers.js.map +1 -0
  8. package/dist/chunk-2EVQ2ESB.cjs +2692 -0
  9. package/dist/chunk-2EVQ2ESB.cjs.map +1 -0
  10. package/dist/chunk-2X6MT5KE.cjs +1464 -0
  11. package/dist/chunk-2X6MT5KE.cjs.map +1 -0
  12. package/dist/chunk-3ILBFLVQ.cjs +63 -0
  13. package/dist/chunk-3ILBFLVQ.cjs.map +1 -0
  14. package/dist/chunk-FDOBUUGY.js +1464 -0
  15. package/dist/chunk-FDOBUUGY.js.map +1 -0
  16. package/dist/chunk-GFXKYXHW.cjs +436 -0
  17. package/dist/chunk-GFXKYXHW.cjs.map +1 -0
  18. package/dist/chunk-I6H35QXI.js +2692 -0
  19. package/dist/chunk-I6H35QXI.js.map +1 -0
  20. package/dist/chunk-N3ZCOLG2.js +63 -0
  21. package/dist/chunk-N3ZCOLG2.js.map +1 -0
  22. package/dist/chunk-O25F6G3K.cjs +153 -0
  23. package/dist/chunk-O25F6G3K.cjs.map +1 -0
  24. package/dist/chunk-S6VJHXJF.js +153 -0
  25. package/dist/chunk-S6VJHXJF.js.map +1 -0
  26. package/dist/chunk-UIDSSWBJ.js +251 -0
  27. package/dist/chunk-UIDSSWBJ.js.map +1 -0
  28. package/dist/chunk-VPMT4MRS.js +436 -0
  29. package/dist/chunk-VPMT4MRS.js.map +1 -0
  30. package/dist/chunk-Z6YE6FJ4.cjs +251 -0
  31. package/dist/chunk-Z6YE6FJ4.cjs.map +1 -0
  32. package/dist/converter-C-QpCcTL.d.ts +99 -0
  33. package/dist/converter-Dee-qjBV.d.cts +99 -0
  34. package/dist/converter.cjs +15 -0
  35. package/dist/converter.cjs.map +1 -0
  36. package/dist/converter.d.cts +2 -0
  37. package/dist/converter.d.ts +2 -0
  38. package/dist/converter.js +15 -0
  39. package/dist/converter.js.map +1 -0
  40. package/dist/fhir-types-D9hUzGrc.d.cts +129 -0
  41. package/dist/fhir-types-D9hUzGrc.d.ts +129 -0
  42. package/dist/importer.cjs +17 -0
  43. package/dist/importer.cjs.map +1 -0
  44. package/dist/importer.d.cts +60 -0
  45. package/dist/importer.d.ts +60 -0
  46. package/dist/importer.js +17 -0
  47. package/dist/importer.js.map +1 -0
  48. package/dist/index.cjs +540 -0
  49. package/dist/index.cjs.map +1 -0
  50. package/dist/index.d.cts +163 -0
  51. package/dist/index.d.ts +163 -0
  52. package/dist/index.js +540 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/reference-ranges.cjs +18 -0
  55. package/dist/reference-ranges.cjs.map +1 -0
  56. package/dist/reference-ranges.d.cts +106 -0
  57. package/dist/reference-ranges.d.ts +106 -0
  58. package/dist/reference-ranges.js +18 -0
  59. package/dist/reference-ranges.js.map +1 -0
  60. package/dist/units.cjs +19 -0
  61. package/dist/units.cjs.map +1 -0
  62. package/dist/units.d.cts +46 -0
  63. package/dist/units.d.ts +46 -0
  64. package/dist/units.js +19 -0
  65. package/dist/units.js.map +1 -0
  66. package/dist/validators.cjs +11 -0
  67. package/dist/validators.cjs.map +1 -0
  68. package/dist/validators.d.cts +23 -0
  69. package/dist/validators.d.ts +23 -0
  70. package/dist/validators.js +11 -0
  71. package/dist/validators.js.map +1 -0
  72. package/package.json +105 -0
@@ -0,0 +1,1464 @@
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
+
3
+ var _chunkGFXKYXHWcjs = require('./chunk-GFXKYXHW.cjs');
4
+
5
+ // src/reference-ranges.ts
6
+ var biomarkerRangeDefinitions = {
7
+ // =============================================================================
8
+ // LIPIDS
9
+ // =============================================================================
10
+ Albumin_Creatinine_Ratio: {
11
+ default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: "mg/g" }
12
+ },
13
+ Adiponectin: {
14
+ default: { max: 26, min: 4, optimalMax: 20, optimalMin: 8, unit: "mcg/mL" }
15
+ },
16
+ ADMA: {
17
+ default: { max: 0.7, min: 0.3, optimalMax: 0.55, optimalMin: 0.3, unit: "umol/L" }
18
+ },
19
+ AFP: {
20
+ default: { max: 10, min: 0, optimalMax: 8, optimalMin: 0, unit: "ng/mL" }
21
+ },
22
+ Albumin_Globulin_Ratio: {
23
+ default: { max: 2.5, min: 1, optimalMax: 2.2, optimalMin: 1.2, unit: "" }
24
+ },
25
+ Albumin: {
26
+ default: { max: 5, min: 3.5, optimalMax: 4.8, optimalMin: 4, unit: "g/dL" },
27
+ source: "sbpc-ml-2021"
28
+ },
29
+ AlkalinePhosphatase: {
30
+ default: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: "U/L" },
31
+ variants: [
32
+ {
33
+ ageMin: 18,
34
+ range: { max: 147, min: 44, optimalMax: 120, optimalMin: 50, unit: "U/L" },
35
+ sex: "M"
36
+ },
37
+ {
38
+ ageMin: 18,
39
+ range: { max: 104, min: 35, optimalMax: 90, optimalMin: 40, unit: "U/L" },
40
+ sex: "F"
41
+ }
42
+ ]
43
+ },
44
+ ALT: {
45
+ default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: "U/L" },
46
+ source: "sbpc-ml-2021",
47
+ variants: [
48
+ {
49
+ ageMin: 18,
50
+ range: { max: 56, min: 7, optimalMax: 35, optimalMin: 10, unit: "U/L" },
51
+ sex: "M"
52
+ },
53
+ {
54
+ ageMin: 18,
55
+ range: { max: 45, min: 7, optimalMax: 30, optimalMin: 10, unit: "U/L" },
56
+ sex: "F"
57
+ }
58
+ ]
59
+ },
60
+ AMH: {
61
+ default: { max: 10, min: 1, optimalMax: 6.9, optimalMin: 2, unit: "ng/mL" },
62
+ variants: [
63
+ {
64
+ ageMax: 24,
65
+ ageMin: 18,
66
+ range: { max: 13, min: 1.5, optimalMax: 10, optimalMin: 3, unit: "ng/mL" },
67
+ sex: "F"
68
+ },
69
+ {
70
+ ageMax: 30,
71
+ ageMin: 25,
72
+ range: { max: 10, min: 1.5, optimalMax: 8, optimalMin: 2.5, unit: "ng/mL" },
73
+ sex: "F"
74
+ },
75
+ {
76
+ ageMax: 35,
77
+ ageMin: 31,
78
+ range: { max: 8, min: 1, optimalMax: 6, optimalMin: 2, unit: "ng/mL" },
79
+ sex: "F"
80
+ },
81
+ {
82
+ ageMax: 40,
83
+ ageMin: 36,
84
+ range: { max: 6, min: 0.5, optimalMax: 4, optimalMin: 1, unit: "ng/mL" },
85
+ sex: "F"
86
+ },
87
+ {
88
+ ageMin: 41,
89
+ range: { max: 3, min: 0.1, optimalMax: 2, optimalMin: 0.5, unit: "ng/mL" },
90
+ sex: "F"
91
+ }
92
+ ]
93
+ },
94
+ Ammonia: {
95
+ default: { max: 45, min: 15, optimalMax: 40, optimalMin: 20, unit: "umol/L" }
96
+ },
97
+ AntiThyroglobulin: {
98
+ default: { max: 115, min: 0, optimalMax: 40, optimalMin: 0, unit: "IU/mL" }
99
+ },
100
+ AntiTPO: {
101
+ default: { max: 34, min: 0, optimalMax: 9, optimalMin: 0, unit: "IU/mL" }
102
+ },
103
+ // Aortic valve calcium — no standardized clinical threshold; use mild cutoff
104
+ AorticValveCalcium: {
105
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
106
+ direction: "lower-better"
107
+ },
108
+ ApoA1: {
109
+ default: { max: 200, min: 100, optimalMax: 180, optimalMin: 120, unit: "mg/dL" }
110
+ },
111
+ ApoB: {
112
+ default: { max: 90, min: 0, optimalMax: 70, optimalMin: 0, unit: "mg/dL" },
113
+ direction: "lower-better"
114
+ },
115
+ ApoCIII: {
116
+ default: { max: 10, min: 0, optimalMax: 7, optimalMin: 0, unit: "mg/dL" }
117
+ },
118
+ ApoCIII_ApoA1_Ratio: {
119
+ default: { max: 0.15, min: 0, optimalMax: 0.1, optimalMin: 0, unit: "" }
120
+ },
121
+ // =============================================================================
122
+ // THYROID
123
+ // =============================================================================
124
+ Omega6_AA: {
125
+ default: { max: 15, min: 5, optimalMax: 12, optimalMin: 7, unit: "%" }
126
+ },
127
+ AA_EPA_Ratio: {
128
+ default: { max: 15, min: 1, optimalMax: 5, optimalMin: 1.5, unit: "" },
129
+ direction: "lower-better"
130
+ },
131
+ Arsenic: {
132
+ default: { max: 35, min: 0, optimalMax: 20, optimalMin: 0, unit: "mcg/L" }
133
+ },
134
+ AST: {
135
+ default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: "U/L" },
136
+ source: "sbpc-ml-2021",
137
+ variants: [
138
+ {
139
+ ageMin: 18,
140
+ range: { max: 40, min: 10, optimalMax: 30, optimalMin: 10, unit: "U/L" },
141
+ sex: "M"
142
+ },
143
+ {
144
+ ageMin: 18,
145
+ range: { max: 32, min: 9, optimalMax: 25, optimalMin: 10, unit: "U/L" },
146
+ sex: "F"
147
+ }
148
+ ]
149
+ },
150
+ Basophils: {
151
+ default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "%" }
152
+ },
153
+ Basophils_Abs: {
154
+ default: { max: 0.1, min: 0, optimalMax: 0.05, optimalMin: 0, unit: "K/uL" }
155
+ },
156
+ // =============================================================================
157
+ // HEMATOLOGY - CBC
158
+ // =============================================================================
159
+ Bicarbonate: {
160
+ default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: "mEq/L" }
161
+ },
162
+ BilirubinDirect: {
163
+ default: { max: 0.3, min: 0, optimalMax: 0.2, optimalMin: 0, unit: "mg/dL" }
164
+ },
165
+ BilirubinIndirect: {
166
+ default: { max: 0.8, min: 0, optimalMax: 0.6, optimalMin: 0, unit: "mg/dL" }
167
+ },
168
+ BilirubinTotal: {
169
+ default: { max: 1.2, min: 0.1, optimalMax: 0.9, optimalMin: 0.2, unit: "mg/dL" }
170
+ },
171
+ BNP: {
172
+ default: { max: 100, min: 0, optimalMax: 50, optimalMin: 0, unit: "pg/mL" }
173
+ },
174
+ BUN_Creatinine_Ratio: {
175
+ default: { max: 20, min: 10, optimalMax: 18, optimalMin: 12, unit: "" }
176
+ },
177
+ CA125: {
178
+ default: { max: 35, min: 0, optimalMax: 25, optimalMin: 0, unit: "U/mL" }
179
+ },
180
+ CA199: {
181
+ default: { max: 37, min: 0, optimalMax: 30, optimalMin: 0, unit: "U/mL" }
182
+ },
183
+ // CAC: Agatston classification — 0=none, 1-99=mild, 100-399=moderate, 400+=severe
184
+ // max=99 so only moderate+ scores (≥100) flag as ANORMAL; optimalMax=0 (zero is ideal)
185
+ CAC: {
186
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
187
+ direction: "lower-better"
188
+ },
189
+ // Per-vessel scores (hidden) — no standardized thresholds, use same mild cutoff
190
+ CAC_LAD: {
191
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
192
+ direction: "lower-better"
193
+ },
194
+ CAC_LCX: {
195
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
196
+ direction: "lower-better"
197
+ },
198
+ CAC_LMA: {
199
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
200
+ direction: "lower-better"
201
+ },
202
+ CAC_Percentile: {
203
+ default: { max: 50, min: 0, optimalMax: 25, optimalMin: 0, unit: "%", warningMax: 75 },
204
+ direction: "lower-better"
205
+ },
206
+ CAC_RCA: {
207
+ default: { max: 99, min: 0, optimalMax: 0, optimalMin: 0, unit: "AU" },
208
+ direction: "lower-better"
209
+ },
210
+ Cadmium: {
211
+ default: { max: 1.2, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "mcg/L" }
212
+ },
213
+ Calcium: {
214
+ default: { max: 10.5, min: 8.5, optimalMax: 10, optimalMin: 9, unit: "mg/dL" }
215
+ },
216
+ CEA: {
217
+ default: { max: 3, min: 0, optimalMax: 2.5, optimalMin: 0, unit: "ng/mL" }
218
+ },
219
+ CK: {
220
+ default: { max: 190, min: 30, optimalMax: 170, optimalMin: 40, unit: "U/L" },
221
+ variants: [
222
+ { sex: "F", range: { max: 170, min: 30, optimalMax: 150, optimalMin: 40, unit: "U/L" } }
223
+ ]
224
+ },
225
+ Chloride: {
226
+ default: { max: 106, min: 98, optimalMax: 105, optimalMin: 100, unit: "mEq/L" }
227
+ },
228
+ Cholesterol: {
229
+ default: { max: 200, min: 0, optimalMax: 180, optimalMin: 0, unit: "mg/dL" },
230
+ source: "sbc-lipids-2017"
231
+ },
232
+ Cholesterol_HDL_Ratio: {
233
+ // Lower is better - Function Health reference: <= 3.5
234
+ default: { max: 5, min: 0, optimalMax: 3.5, optimalMin: 0, unit: "" },
235
+ direction: "lower-better",
236
+ variants: [
237
+ {
238
+ ageMin: 18,
239
+ range: { max: 5, min: 0, optimalMax: 4, optimalMin: 0, unit: "" },
240
+ sex: "M"
241
+ },
242
+ {
243
+ ageMin: 18,
244
+ range: { max: 4.5, min: 0, optimalMax: 3.5, optimalMin: 0, unit: "" },
245
+ sex: "F"
246
+ }
247
+ ]
248
+ },
249
+ CO2: {
250
+ default: { max: 29, min: 23, optimalMax: 28, optimalMin: 24, unit: "mEq/L" }
251
+ },
252
+ Copper: {
253
+ default: { max: 175, min: 70, optimalMax: 150, optimalMin: 85, unit: "mcg/dL" }
254
+ },
255
+ CoQ10: {
256
+ default: { max: 1.5, min: 0.5, optimalMax: 1.3, optimalMin: 0.7, unit: "mg/L" }
257
+ },
258
+ Cortisol: {
259
+ default: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: "mcg/dL" }
260
+ },
261
+ CortisolFree: {
262
+ default: { max: 2.5, min: 0.5, optimalMax: 2, optimalMin: 0.8, unit: "mcg/dL" }
263
+ },
264
+ CPeptide: {
265
+ default: { max: 3.9, min: 0.8, optimalMax: 3, optimalMin: 1, unit: "ng/mL" }
266
+ },
267
+ Creatinine: {
268
+ default: { max: 1.2, min: 0.6, optimalMax: 1, optimalMin: 0.7, unit: "mg/dL" },
269
+ source: "sbpc-ml-2021",
270
+ variants: [
271
+ {
272
+ ageMin: 18,
273
+ range: { max: 1.3, min: 0.7, optimalMax: 1.1, optimalMin: 0.8, unit: "mg/dL" },
274
+ sex: "M"
275
+ },
276
+ {
277
+ ageMin: 18,
278
+ range: { max: 1.1, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: "mg/dL" },
279
+ sex: "F"
280
+ }
281
+ ]
282
+ },
283
+ CRP: {
284
+ default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: "mg/L" },
285
+ direction: "lower-better"
286
+ },
287
+ CystatinC: {
288
+ default: { max: 1, min: 0.5, optimalMax: 0.9, optimalMin: 0.6, unit: "mg/L" }
289
+ },
290
+ DDimer: {
291
+ default: { max: 500, min: 0, optimalMax: 250, optimalMin: 0, unit: "ng/mL" }
292
+ },
293
+ // =============================================================================
294
+ // METABOLIC PANEL
295
+ // =============================================================================
296
+ Omega3_DHA: {
297
+ default: { max: 8, min: 2, optimalMax: 6.5, optimalMin: 3.5, unit: "%" }
298
+ },
299
+ DHEAS: {
300
+ default: { max: 500, min: 100, optimalMax: 400, optimalMin: 150, unit: "mcg/dL" },
301
+ variants: [
302
+ {
303
+ ageMax: 39,
304
+ ageMin: 18,
305
+ range: { max: 640, min: 280, optimalMax: 500, optimalMin: 300, unit: "mcg/dL" },
306
+ sex: "M"
307
+ },
308
+ {
309
+ ageMax: 59,
310
+ ageMin: 40,
311
+ range: { max: 520, min: 120, optimalMax: 400, optimalMin: 150, unit: "mcg/dL" },
312
+ sex: "M"
313
+ },
314
+ {
315
+ ageMin: 60,
316
+ range: { max: 290, min: 42, optimalMax: 220, optimalMin: 80, unit: "mcg/dL" },
317
+ sex: "M"
318
+ },
319
+ {
320
+ ageMax: 39,
321
+ ageMin: 18,
322
+ range: { max: 380, min: 65, optimalMax: 300, optimalMin: 100, unit: "mcg/dL" },
323
+ sex: "F"
324
+ },
325
+ {
326
+ ageMax: 59,
327
+ ageMin: 40,
328
+ range: { max: 240, min: 32, optimalMax: 180, optimalMin: 60, unit: "mcg/dL" },
329
+ sex: "F"
330
+ },
331
+ {
332
+ ageMin: 60,
333
+ range: { max: 140, min: 18, optimalMax: 100, optimalMin: 30, unit: "mcg/dL" },
334
+ sex: "F"
335
+ }
336
+ ]
337
+ },
338
+ Omega3_DPA: {
339
+ default: { max: 2, min: 0.3, optimalMax: 1.5, optimalMin: 0.5, unit: "%" }
340
+ },
341
+ eGFR: {
342
+ default: { max: 120, min: 90, optimalMax: 120, optimalMin: 90, unit: "mL/min/1.73m\xB2" },
343
+ variants: [
344
+ {
345
+ ageMin: 60,
346
+ range: { max: 90, min: 60, optimalMax: 90, optimalMin: 60, unit: "mL/min/1.73m\xB2" },
347
+ sex: "all"
348
+ }
349
+ ]
350
+ },
351
+ Eosinophils: {
352
+ default: { max: 5, min: 0, optimalMax: 4, optimalMin: 1, unit: "%" },
353
+ direction: "lower-better"
354
+ },
355
+ Eosinophils_Abs: {
356
+ default: { max: 0.5, min: 0, optimalMax: 0.3, optimalMin: 0, unit: "K/uL" }
357
+ },
358
+ Omega3_EPA: {
359
+ default: { max: 3.5, min: 0.5, optimalMax: 2.5, optimalMin: 1, unit: "%" }
360
+ },
361
+ EPADPADHA: {
362
+ default: { max: 10, min: 3, optimalMax: 9, optimalMin: 5, unit: "%" }
363
+ },
364
+ ESR: {
365
+ default: { max: 20, min: 0, optimalMax: 10, optimalMin: 0, unit: "mm/hr" }
366
+ },
367
+ Estradiol: {
368
+ default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: "pg/mL" },
369
+ variants: [
370
+ {
371
+ ageMin: 18,
372
+ range: { max: 40, min: 10, optimalMax: 30, optimalMin: 15, unit: "pg/mL" },
373
+ sex: "M"
374
+ },
375
+ {
376
+ ageMax: 50,
377
+ ageMin: 18,
378
+ range: { max: 400, min: 30, optimalMax: 300, optimalMin: 50, unit: "pg/mL" },
379
+ sex: "F"
380
+ },
381
+ {
382
+ ageMin: 51,
383
+ range: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: "pg/mL" },
384
+ sex: "F"
385
+ }
386
+ ]
387
+ },
388
+ F2Isoprostanes: {
389
+ default: { max: 86, min: 0, optimalMax: 60, optimalMin: 0, unit: "pg/mL" }
390
+ },
391
+ Ferritin: {
392
+ default: { max: 300, min: 20, optimalMax: 150, optimalMin: 50, unit: "ng/mL" },
393
+ source: "sbpc-ml-2021",
394
+ variants: [
395
+ {
396
+ ageMin: 18,
397
+ range: { max: 400, min: 30, optimalMax: 200, optimalMin: 50, unit: "ng/mL" },
398
+ sex: "M"
399
+ },
400
+ {
401
+ ageMax: 50,
402
+ ageMin: 18,
403
+ range: { max: 150, min: 15, optimalMax: 100, optimalMin: 30, unit: "ng/mL" },
404
+ sex: "F"
405
+ },
406
+ {
407
+ ageMin: 51,
408
+ range: { max: 300, min: 30, optimalMax: 150, optimalMin: 50, unit: "ng/mL" },
409
+ sex: "F"
410
+ }
411
+ ]
412
+ },
413
+ Fibrinogen: {
414
+ default: { max: 400, min: 200, optimalMax: 350, optimalMin: 250, unit: "mg/dL" }
415
+ },
416
+ FolicAcid: {
417
+ default: { max: 20, min: 3, optimalMax: 15, optimalMin: 5, unit: "ng/mL" }
418
+ },
419
+ // =============================================================================
420
+ // LIVER FUNCTION
421
+ // =============================================================================
422
+ FSH: {
423
+ default: { max: 12.4, min: 1.5, optimalMax: 10, optimalMin: 3, unit: "mIU/mL" },
424
+ variants: [
425
+ {
426
+ ageMin: 18,
427
+ range: { max: 12.4, min: 1.5, optimalMax: 8, optimalMin: 1.5, unit: "mIU/mL" },
428
+ sex: "M"
429
+ },
430
+ {
431
+ ageMax: 50,
432
+ ageMin: 18,
433
+ range: { max: 12.5, min: 3.5, optimalMax: 10, optimalMin: 3.5, unit: "mIU/mL" },
434
+ sex: "F"
435
+ },
436
+ {
437
+ ageMin: 51,
438
+ range: { max: 134.8, min: 25.8, optimalMax: 80, optimalMin: 25.8, unit: "mIU/mL" },
439
+ sex: "F"
440
+ }
441
+ ]
442
+ },
443
+ GGT: {
444
+ default: { max: 55, min: 0, optimalMax: 30, optimalMin: 0, unit: "U/L" },
445
+ direction: "lower-better",
446
+ source: "sbpc-ml-2021",
447
+ variants: [
448
+ {
449
+ ageMin: 18,
450
+ range: { max: 61, min: 8, optimalMax: 40, optimalMin: 10, unit: "U/L" },
451
+ sex: "M"
452
+ },
453
+ {
454
+ ageMin: 18,
455
+ range: { max: 36, min: 5, optimalMax: 25, optimalMin: 8, unit: "U/L" },
456
+ sex: "F"
457
+ }
458
+ ]
459
+ },
460
+ Ghrelin: {
461
+ default: { max: 1e3, min: 300, optimalMax: 800, optimalMin: 400, unit: "pg/mL" }
462
+ },
463
+ Globulin: {
464
+ default: { max: 3.5, min: 2, optimalMax: 3.2, optimalMin: 2.3, unit: "g/dL" }
465
+ },
466
+ Glucose: {
467
+ default: { max: 100, min: 70, optimalMax: 90, optimalMin: 70, unit: "mg/dL" },
468
+ source: "sbd-diabetes-2024"
469
+ },
470
+ GlycoMark: {
471
+ default: { max: 40, min: 10, optimalMax: 35, optimalMin: 15, unit: "mcg/mL" }
472
+ },
473
+ GrowthHormone: {
474
+ default: { max: 5, min: 0, optimalMax: 3, optimalMin: 0, unit: "ng/mL" }
475
+ },
476
+ HbA1c: {
477
+ default: { max: 5.7, min: 4, optimalMax: 5.3, optimalMin: 4.5, unit: "%" },
478
+ source: "sbd-diabetes-2024"
479
+ },
480
+ Hct: {
481
+ default: { max: 50, min: 36, optimalMax: 48, optimalMin: 40, unit: "%" },
482
+ variants: [
483
+ {
484
+ ageMin: 18,
485
+ range: { max: 54, min: 40, optimalMax: 50, optimalMin: 42, unit: "%" },
486
+ sex: "M"
487
+ },
488
+ {
489
+ ageMin: 18,
490
+ range: { max: 48, min: 36, optimalMax: 45, optimalMin: 38, unit: "%" },
491
+ sex: "F"
492
+ }
493
+ ]
494
+ },
495
+ HDL: {
496
+ default: { max: 60, min: 40, optimalMax: 60, optimalMin: 50, unit: "mg/dL" },
497
+ direction: "higher-better",
498
+ source: "sbc-lipids-2017",
499
+ variants: [
500
+ {
501
+ ageMin: 18,
502
+ range: { max: 60, min: 40, optimalMax: 60, optimalMin: 45, unit: "mg/dL" },
503
+ sex: "M"
504
+ },
505
+ {
506
+ ageMin: 18,
507
+ range: { max: 60, min: 50, optimalMax: 60, optimalMin: 55, unit: "mg/dL" },
508
+ sex: "F"
509
+ }
510
+ ]
511
+ },
512
+ HDL_Large: {
513
+ // HDL Large: higher is better
514
+ // Quest Ion Mobility reference: Male 4334-10815, Female 5038-17886 nmol/L, optimal >6729
515
+ default: { max: 17886, min: 4334, optimalMax: 17886, optimalMin: 6729, unit: "nmol/L" },
516
+ direction: "higher-better"
517
+ },
518
+ // =============================================================================
519
+ // INFLAMMATION
520
+ // =============================================================================
521
+ Hgb: {
522
+ default: { max: 17.5, min: 12, optimalMax: 16, optimalMin: 13.5, unit: "g/dL" },
523
+ variants: [
524
+ {
525
+ ageMin: 18,
526
+ range: { max: 17.5, min: 13.5, optimalMax: 16.5, optimalMin: 14, unit: "g/dL" },
527
+ sex: "M"
528
+ },
529
+ {
530
+ ageMin: 18,
531
+ range: { max: 15.5, min: 12, optimalMax: 14.5, optimalMin: 12.5, unit: "g/dL" },
532
+ sex: "F"
533
+ }
534
+ ]
535
+ },
536
+ HOMA_IR: {
537
+ default: { max: 2.5, min: 0, optimalMax: 1.5, optimalMin: 0, unit: "" },
538
+ direction: "lower-better"
539
+ },
540
+ Homocysteine: {
541
+ default: { max: 15, min: 4, optimalMax: 10, optimalMin: 5, unit: "umol/L" },
542
+ direction: "lower-better"
543
+ },
544
+ IGF1: {
545
+ default: { max: 350, min: 100, optimalMax: 300, optimalMin: 150, unit: "ng/mL" }
546
+ },
547
+ // =============================================================================
548
+ // METABOLIC
549
+ // =============================================================================
550
+ ImmatureGranulocytes: {
551
+ default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "%" }
552
+ },
553
+ Insulin: {
554
+ default: { max: 25, min: 2, optimalMax: 8, optimalMin: 3, unit: "\xB5IU/mL" }
555
+ },
556
+ Iron: {
557
+ default: { max: 170, min: 60, optimalMax: 140, optimalMin: 80, unit: "mcg/dL" },
558
+ source: "sbpc-ml-2021",
559
+ variants: [
560
+ {
561
+ ageMin: 18,
562
+ range: { max: 175, min: 65, optimalMax: 150, optimalMin: 80, unit: "mcg/dL" },
563
+ sex: "M"
564
+ },
565
+ {
566
+ ageMin: 18,
567
+ range: { max: 170, min: 50, optimalMax: 130, optimalMin: 60, unit: "mcg/dL" },
568
+ sex: "F"
569
+ }
570
+ ]
571
+ },
572
+ Lactate: {
573
+ default: { max: 2.2, min: 0.5, optimalMax: 1.8, optimalMin: 0.7, unit: "mmol/L" }
574
+ },
575
+ LDL: {
576
+ default: { max: 100, min: 0, optimalMax: 70, optimalMin: 0, unit: "mg/dL" },
577
+ direction: "lower-better",
578
+ source: "sbc-lipids-2017"
579
+ },
580
+ LDL_Medium: {
581
+ // LDL Medium (LDL Média): lower is better
582
+ // Quest Ion Mobility reference: Male 167-485, Female 121-397 nmol/L, optimal <215
583
+ default: { max: 485, min: 121, optimalMax: 215, optimalMin: 121, unit: "nmol/L" },
584
+ direction: "lower-better"
585
+ },
586
+ LDL_ParticleNumber: {
587
+ // LDL Particle Number: lower is better
588
+ // Quest Ion Mobility reference: 1016-2185 nmol/L, optimal <1138
589
+ default: { max: 2185, min: 1016, optimalMax: 1138, optimalMin: 1016, unit: "nmol/L" },
590
+ direction: "lower-better"
591
+ },
592
+ LDL_Peak_Size: {
593
+ // LDL Peak Size: higher is better (larger particles less atherogenic)
594
+ // Quest Ion Mobility reference: optimal >222.9 Å (22.29 nm)
595
+ default: { max: 250, min: 217.4, optimalMax: 250, optimalMin: 222.9, unit: "\xC5" },
596
+ direction: "higher-better"
597
+ },
598
+ // =============================================================================
599
+ // IRON STUDIES
600
+ // =============================================================================
601
+ LDL_Small: {
602
+ // LDL Small (LDL Pequena): lower is better (small dense LDL is most atherogenic)
603
+ // Quest Ion Mobility reference: Male 123-441, Female 126-382 nmol/L, optimal <142
604
+ default: { max: 441, min: 123, optimalMax: 142, optimalMin: 123, unit: "nmol/L" },
605
+ direction: "lower-better"
606
+ },
607
+ Lead: {
608
+ default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: "mcg/dL" }
609
+ },
610
+ Leptin: {
611
+ default: { max: 15, min: 2, optimalMax: 12, optimalMin: 3, unit: "ng/mL" },
612
+ direction: "lower-better",
613
+ variants: [
614
+ {
615
+ ageMin: 18,
616
+ range: { max: 10, min: 1, optimalMax: 8, optimalMin: 2, unit: "ng/mL" },
617
+ sex: "M"
618
+ },
619
+ {
620
+ ageMin: 18,
621
+ range: { max: 25, min: 4, optimalMax: 18, optimalMin: 5, unit: "ng/mL" },
622
+ sex: "F"
623
+ }
624
+ ]
625
+ },
626
+ LH: {
627
+ default: { max: 8.6, min: 1.7, optimalMax: 8, optimalMin: 2, unit: "mIU/mL" },
628
+ variants: [
629
+ {
630
+ ageMin: 18,
631
+ range: { max: 8.6, min: 1.7, optimalMax: 6, optimalMin: 1.7, unit: "mIU/mL" },
632
+ sex: "M"
633
+ },
634
+ {
635
+ ageMax: 50,
636
+ ageMin: 18,
637
+ range: { max: 12.6, min: 2.4, optimalMax: 10, optimalMin: 2.4, unit: "mIU/mL" },
638
+ sex: "F"
639
+ },
640
+ {
641
+ ageMin: 51,
642
+ range: { max: 58.5, min: 7.7, optimalMax: 40, optimalMin: 10, unit: "mIU/mL" },
643
+ sex: "F"
644
+ }
645
+ ]
646
+ },
647
+ Omega6_LA: {
648
+ default: { max: 35, min: 15, optimalMax: 28, optimalMin: 18, unit: "%" }
649
+ },
650
+ // =============================================================================
651
+ // VITAMINS
652
+ // =============================================================================
653
+ Lipoprotein_a: {
654
+ default: { max: 75, min: 0, optimalMax: 30, optimalMin: 0, unit: "nmol/L" },
655
+ direction: "lower-better"
656
+ },
657
+ Lymphocytes: {
658
+ default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: "%" }
659
+ },
660
+ Lymphocytes_Abs: {
661
+ default: { max: 4, min: 1, optimalMax: 3, optimalMin: 1.5, unit: "K/uL" }
662
+ },
663
+ Magnesium: {
664
+ default: { max: 2.2, min: 1.7, optimalMax: 2.1, optimalMin: 1.9, unit: "mg/dL" }
665
+ },
666
+ Magnesium_RBC: {
667
+ default: { max: 6.8, min: 4, optimalMax: 6, optimalMin: 4.5, unit: "mg/dL" }
668
+ },
669
+ MCH: {
670
+ default: { max: 33, min: 27, optimalMax: 32, optimalMin: 28, unit: "pg" }
671
+ },
672
+ MCHC: {
673
+ default: { max: 36, min: 32, optimalMax: 35, optimalMin: 33, unit: "g/dL" }
674
+ },
675
+ MCV: {
676
+ default: { max: 100, min: 80, optimalMax: 98, optimalMin: 82, unit: "fL" }
677
+ },
678
+ Mercury: {
679
+ default: { max: 10, min: 0, optimalMax: 5, optimalMin: 0, unit: "mcg/L" }
680
+ },
681
+ Microalbumin: {
682
+ default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: "mg/L" }
683
+ },
684
+ // =============================================================================
685
+ // HORMONES
686
+ // =============================================================================
687
+ MMA: {
688
+ default: { max: 378, min: 0, optimalMax: 270, optimalMin: 0, unit: "nmol/L" }
689
+ },
690
+ Monocytes: {
691
+ default: { max: 8, min: 2, optimalMax: 7, optimalMin: 3, unit: "%" }
692
+ },
693
+ Monocytes_Abs: {
694
+ default: { max: 0.8, min: 0.2, optimalMax: 0.7, optimalMin: 0.3, unit: "K/uL" }
695
+ },
696
+ MPV: {
697
+ default: { max: 11.5, min: 7.5, optimalMax: 10.5, optimalMin: 8, unit: "fL" }
698
+ },
699
+ Myeloperoxidase: {
700
+ default: { max: 420, min: 0, optimalMax: 300, optimalMin: 0, unit: "pmol/L" }
701
+ },
702
+ // WBC Differential (%)
703
+ Neutrophils: {
704
+ default: { max: 70, min: 40, optimalMax: 65, optimalMin: 50, unit: "%" }
705
+ },
706
+ // WBC Differential (Absolute)
707
+ Neutrophils_Abs: {
708
+ default: { max: 8, min: 1.5, optimalMax: 6, optimalMin: 2, unit: "K/uL" }
709
+ },
710
+ NonHDL_Cholesterol: {
711
+ default: { max: 130, min: 0, optimalMax: 100, optimalMin: 0, unit: "mg/dL" },
712
+ direction: "lower-better"
713
+ },
714
+ NRBC: {
715
+ default: { max: 0, min: 0, optimalMax: 0, optimalMin: 0, unit: "/100WBC" }
716
+ },
717
+ NTproBNP: {
718
+ default: { max: 125, min: 0, optimalMax: 75, optimalMin: 0, unit: "pg/mL" }
719
+ },
720
+ Oleic_Acid: {
721
+ default: { max: 25, min: 15, optimalMax: 22, optimalMin: 18, unit: "%" }
722
+ },
723
+ Omega3_Index: {
724
+ default: { max: 8, min: 4, optimalMax: 8, optimalMin: 5.5, unit: "%" }
725
+ },
726
+ Omega3_Total: {
727
+ default: { max: 12, min: 3, optimalMax: 10, optimalMin: 5.5, unit: "%" }
728
+ },
729
+ Omega6_Total: {
730
+ default: { max: 40, min: 20, optimalMax: 35, optimalMin: 25, unit: "%" }
731
+ },
732
+ Omega6_Omega3_Ratio: {
733
+ default: { max: 10, min: 1, optimalMax: 4, optimalMin: 1, unit: "" },
734
+ direction: "lower-better"
735
+ },
736
+ // =============================================================================
737
+ // TUMOR MARKERS
738
+ // =============================================================================
739
+ OmegaCheck: {
740
+ default: { max: 8, min: 4, optimalMax: 8, optimalMin: 5.5, unit: "%" }
741
+ },
742
+ Palmitic_Acid: {
743
+ default: { max: 30, min: 20, optimalMax: 27, optimalMin: 22, unit: "%" }
744
+ },
745
+ Phosphorus: {
746
+ default: { max: 4.5, min: 2.5, optimalMax: 4, optimalMin: 3, unit: "mg/dL" }
747
+ },
748
+ Platelets: {
749
+ default: { max: 400, min: 150, optimalMax: 350, optimalMin: 180, unit: "K/uL" }
750
+ },
751
+ Potassium: {
752
+ default: { max: 5, min: 3.5, optimalMax: 4.6, optimalMin: 3.8, unit: "mEq/L" }
753
+ },
754
+ // =============================================================================
755
+ // CARDIAC MARKERS
756
+ // =============================================================================
757
+ Prealbumin: {
758
+ default: { max: 38, min: 18, optimalMax: 35, optimalMin: 20, unit: "mg/dL" }
759
+ },
760
+ Progesterone: {
761
+ default: { max: 0.9, min: 0.1, optimalMax: 0.7, optimalMin: 0.2, unit: "ng/mL" }
762
+ },
763
+ Prolactin: {
764
+ default: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: "ng/mL" },
765
+ variants: [
766
+ {
767
+ ageMin: 18,
768
+ range: { max: 18, min: 2, optimalMax: 15, optimalMin: 4, unit: "ng/mL" },
769
+ sex: "M"
770
+ },
771
+ {
772
+ ageMin: 18,
773
+ range: { max: 29, min: 2, optimalMax: 23, optimalMin: 4, unit: "ng/mL" },
774
+ sex: "F"
775
+ }
776
+ ]
777
+ },
778
+ PSA: {
779
+ default: { max: 4, min: 0, optimalMax: 2.5, optimalMin: 0, unit: "ng/mL" },
780
+ variants: [
781
+ {
782
+ ageMax: 49,
783
+ ageMin: 18,
784
+ range: { max: 2.5, min: 0, optimalMax: 1.5, optimalMin: 0, unit: "ng/mL" },
785
+ sex: "M"
786
+ },
787
+ {
788
+ ageMax: 59,
789
+ ageMin: 50,
790
+ range: { max: 3.5, min: 0, optimalMax: 2.5, optimalMin: 0, unit: "ng/mL" },
791
+ sex: "M"
792
+ },
793
+ {
794
+ ageMax: 69,
795
+ ageMin: 60,
796
+ range: { max: 4.5, min: 0, optimalMax: 3, optimalMin: 0, unit: "ng/mL" },
797
+ sex: "M"
798
+ },
799
+ {
800
+ ageMin: 70,
801
+ range: { max: 6.5, min: 0, optimalMax: 4, optimalMin: 0, unit: "ng/mL" },
802
+ sex: "M"
803
+ }
804
+ ]
805
+ },
806
+ RBC: {
807
+ default: { max: 5.5, min: 4, optimalMax: 5.2, optimalMin: 4.3, unit: "M/uL" },
808
+ variants: [
809
+ {
810
+ ageMin: 18,
811
+ range: { max: 5.9, min: 4.5, optimalMax: 5.5, optimalMin: 4.7, unit: "M/uL" },
812
+ sex: "M"
813
+ },
814
+ {
815
+ ageMin: 18,
816
+ range: { max: 5.2, min: 4, optimalMax: 5, optimalMin: 4.2, unit: "M/uL" },
817
+ sex: "F"
818
+ }
819
+ ]
820
+ },
821
+ // =============================================================================
822
+ // URINALYSIS
823
+ // =============================================================================
824
+ RDW: {
825
+ default: { max: 14.5, min: 11.5, optimalMax: 14, optimalMin: 12, unit: "%" }
826
+ },
827
+ Reticulocytes: {
828
+ default: { max: 2.5, min: 0.5, optimalMax: 2, optimalMin: 0.8, unit: "%" }
829
+ },
830
+ SDMA: {
831
+ default: { max: 0.6, min: 0.3, optimalMax: 0.5, optimalMin: 0.3, unit: "umol/L" }
832
+ },
833
+ Selenium: {
834
+ default: { max: 150, min: 70, optimalMax: 125, optimalMin: 85, unit: "mcg/L" }
835
+ },
836
+ SHBG: {
837
+ default: { max: 54, min: 18, optimalMax: 50, optimalMin: 20, unit: "nmol/L" },
838
+ variants: [
839
+ {
840
+ ageMin: 18,
841
+ range: { max: 54, min: 18, optimalMax: 45, optimalMin: 20, unit: "nmol/L" },
842
+ sex: "M"
843
+ },
844
+ {
845
+ ageMin: 18,
846
+ range: { max: 122, min: 24, optimalMax: 90, optimalMin: 30, unit: "nmol/L" },
847
+ sex: "F"
848
+ }
849
+ ]
850
+ },
851
+ Sodium: {
852
+ default: { max: 145, min: 136, optimalMax: 143, optimalMin: 138, unit: "mEq/L" }
853
+ },
854
+ // =============================================================================
855
+ // KIDNEY FUNCTION
856
+ // =============================================================================
857
+ SpecificGravity_Urine: {
858
+ default: { max: 1.03, min: 1.005, optimalMax: 1.025, optimalMin: 1.01, unit: "SG" }
859
+ },
860
+ Stearic_Acid: {
861
+ default: { max: 14, min: 8, optimalMax: 12, optimalMin: 10, unit: "%" }
862
+ },
863
+ T3Free: {
864
+ default: { max: 4.2, min: 2.3, optimalMax: 3.8, optimalMin: 2.8, unit: "pg/mL" }
865
+ },
866
+ // =============================================================================
867
+ // OMEGA FATTY ACIDS
868
+ // =============================================================================
869
+ T3Reverse: {
870
+ default: { max: 27, min: 9, optimalMax: 22, optimalMin: 12, unit: "ng/dL" }
871
+ },
872
+ T4Free: {
873
+ default: { max: 1.8, min: 0.8, optimalMax: 1.5, optimalMin: 1, unit: "ng/dL" }
874
+ },
875
+ T4Total: {
876
+ default: { max: 12, min: 4.5, optimalMax: 10, optimalMin: 6, unit: "ug/dL" }
877
+ },
878
+ Testosterone: {
879
+ default: { max: 1e3, min: 300, optimalMax: 800, optimalMin: 500, unit: "ng/dL" },
880
+ variants: [
881
+ {
882
+ ageMax: 49,
883
+ ageMin: 18,
884
+ range: { max: 1e3, min: 300, optimalMax: 800, optimalMin: 500, unit: "ng/dL" },
885
+ sex: "M"
886
+ },
887
+ {
888
+ ageMin: 50,
889
+ range: { max: 800, min: 200, optimalMax: 650, optimalMin: 400, unit: "ng/dL" },
890
+ sex: "M"
891
+ },
892
+ {
893
+ ageMin: 18,
894
+ range: { max: 70, min: 15, optimalMax: 50, optimalMin: 20, unit: "ng/dL" },
895
+ sex: "F"
896
+ }
897
+ ]
898
+ },
899
+ TestosteroneBioavailable: {
900
+ default: { max: 200, min: 50, optimalMax: 150, optimalMin: 80, unit: "ng/dL" }
901
+ },
902
+ // TestosteroneFree - using direct immunoassay ranges (Quest/LabCorp standard)
903
+ // Previous values (9.3-26.5 pg/mL) were based on equilibrium dialysis method
904
+ TestosteroneFree: {
905
+ default: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: "pg/mL" },
906
+ variants: [
907
+ {
908
+ ageMax: 49,
909
+ ageMin: 18,
910
+ range: { max: 155, min: 35, optimalMax: 120, optimalMin: 50, unit: "pg/mL" },
911
+ sex: "M"
912
+ },
913
+ {
914
+ ageMin: 50,
915
+ range: { max: 130, min: 30, optimalMax: 100, optimalMin: 40, unit: "pg/mL" },
916
+ sex: "M"
917
+ },
918
+ {
919
+ ageMin: 18,
920
+ range: { max: 5, min: 0.2, optimalMax: 3, optimalMin: 0.5, unit: "pg/mL" },
921
+ sex: "F"
922
+ }
923
+ ]
924
+ },
925
+ TIBC: {
926
+ default: { max: 400, min: 250, optimalMax: 370, optimalMin: 280, unit: "mcg/dL" }
927
+ },
928
+ TotalProtein: {
929
+ default: { max: 8.3, min: 6, optimalMax: 7.8, optimalMin: 6.5, unit: "g/dL" }
930
+ },
931
+ Trans_Fat_Index: {
932
+ default: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "%" }
933
+ },
934
+ Transferrin: {
935
+ default: { max: 360, min: 200, optimalMax: 340, optimalMin: 220, unit: "mg/dL" }
936
+ },
937
+ TransferrinSaturation: {
938
+ default: { max: 50, min: 20, optimalMax: 45, optimalMin: 25, unit: "%" },
939
+ variants: [
940
+ {
941
+ ageMin: 18,
942
+ range: { max: 55, min: 20, optimalMax: 45, optimalMin: 25, unit: "%" },
943
+ sex: "M"
944
+ },
945
+ {
946
+ ageMin: 18,
947
+ range: { max: 50, min: 15, optimalMax: 40, optimalMin: 20, unit: "%" },
948
+ sex: "F"
949
+ }
950
+ ]
951
+ },
952
+ Triglycerides: {
953
+ default: { max: 150, min: 0, optimalMax: 100, optimalMin: 0, unit: "mg/dL" },
954
+ direction: "lower-better",
955
+ source: "sbc-lipids-2017"
956
+ },
957
+ TroponinI: {
958
+ default: { max: 0.04, min: 0, optimalMax: 0.02, optimalMin: 0, unit: "ng/mL" }
959
+ },
960
+ TroponinT: {
961
+ default: { max: 14, min: 0, optimalMax: 10, optimalMin: 0, unit: "ng/L" }
962
+ },
963
+ TSH: {
964
+ default: { max: 4, min: 0.4, optimalMax: 2.5, optimalMin: 1, unit: "\xB5IU/mL" },
965
+ source: "sbem-thyroid-2013",
966
+ variants: [
967
+ {
968
+ ageMin: 65,
969
+ range: { max: 6, min: 0.4, optimalMax: 4, optimalMin: 1, unit: "\xB5IU/mL" },
970
+ sex: "all"
971
+ }
972
+ ]
973
+ },
974
+ Urea: {
975
+ default: { max: 20, min: 7, optimalMax: 16, optimalMin: 10, unit: "mg/dL" }
976
+ },
977
+ UricAcid: {
978
+ default: { max: 7, min: 2.5, optimalMax: 5.5, optimalMin: 3, unit: "mg/dL" },
979
+ variants: [
980
+ {
981
+ ageMin: 18,
982
+ range: { max: 7, min: 3.4, optimalMax: 6, optimalMin: 4, unit: "mg/dL" },
983
+ sex: "M"
984
+ },
985
+ {
986
+ ageMin: 18,
987
+ range: { max: 6, min: 2.4, optimalMax: 5, optimalMin: 3, unit: "mg/dL" },
988
+ sex: "F"
989
+ }
990
+ ]
991
+ },
992
+ Urobilinogen_Urine: {
993
+ default: { max: 1, min: 0.1, optimalMax: 1, optimalMin: 0.1, unit: "mg/dL" }
994
+ },
995
+ // =============================================================================
996
+ // ADVANCED CARDIOVASCULAR
997
+ // =============================================================================
998
+ pH_Urine: {
999
+ default: { max: 8, min: 4.5, optimalMax: 7, optimalMin: 5.5, unit: "pH" }
1000
+ },
1001
+ HyalineCasts_Urine: {
1002
+ default: { max: 2, min: 0, optimalMax: 1, optimalMin: 0, unit: "/LPF" }
1003
+ },
1004
+ RBC_Urine: {
1005
+ default: { max: 3, min: 0, optimalMax: 1, optimalMin: 0, unit: "/HPF" }
1006
+ },
1007
+ SquamousEpithelial_Urine: {
1008
+ default: { max: 15, min: 0, optimalMax: 5, optimalMin: 0, unit: "/HPF" }
1009
+ },
1010
+ Leukocytes_Urine: {
1011
+ default: { max: 5, min: 0, optimalMax: 2, optimalMin: 0, unit: "/HPF" }
1012
+ },
1013
+ Folate: {
1014
+ default: { max: 20, min: 3.9, optimalMax: 17, optimalMin: 5, unit: "ng/mL" }
1015
+ },
1016
+ VitaminA: {
1017
+ default: { max: 100, min: 20, optimalMax: 80, optimalMin: 30, unit: "mcg/dL" }
1018
+ },
1019
+ // =============================================================================
1020
+ // MINERALS
1021
+ // =============================================================================
1022
+ VitaminB1: {
1023
+ default: { max: 180, min: 70, optimalMax: 150, optimalMin: 80, unit: "nmol/L" }
1024
+ },
1025
+ VitaminB12: {
1026
+ default: { max: 900, min: 200, optimalMax: 800, optimalMin: 400, unit: "pg/mL" },
1027
+ source: "sbpc-ml-2021"
1028
+ },
1029
+ VitaminB6: {
1030
+ default: { max: 50, min: 5, optimalMax: 40, optimalMin: 10, unit: "ng/mL" }
1031
+ },
1032
+ VitaminC: {
1033
+ default: { max: 2, min: 0.4, optimalMax: 1.5, optimalMin: 0.6, unit: "mg/dL" }
1034
+ },
1035
+ // =============================================================================
1036
+ // HEAVY METALS
1037
+ // =============================================================================
1038
+ VitaminD: {
1039
+ default: { max: 100, min: 30, optimalMax: 70, optimalMin: 40, unit: "ng/mL" },
1040
+ source: "sbem-thyroid-2013"
1041
+ },
1042
+ VitaminD_1_25: {
1043
+ default: { max: 72, min: 18, optimalMax: 60, optimalMin: 25, unit: "pg/mL" }
1044
+ },
1045
+ VitaminE: {
1046
+ default: { max: 17, min: 5.5, optimalMax: 14, optimalMin: 7, unit: "mg/L" }
1047
+ },
1048
+ VLDL: {
1049
+ default: { max: 40, min: 5, optimalMax: 30, optimalMin: 10, unit: "mg/dL" }
1050
+ },
1051
+ // =============================================================================
1052
+ // OTHER
1053
+ // =============================================================================
1054
+ WBC: {
1055
+ default: { max: 11, min: 4, optimalMax: 8, optimalMin: 5, unit: "K/uL" }
1056
+ },
1057
+ Zinc: {
1058
+ default: { max: 120, min: 60, optimalMax: 100, optimalMin: 70, unit: "mcg/dL" }
1059
+ },
1060
+ // =============================================================================
1061
+ // BODY COMPOSITION (DXA)
1062
+ // =============================================================================
1063
+ AndroidFatPct: {
1064
+ default: { max: 35, min: 10, optimalMax: 25, optimalMin: 15, unit: "%" },
1065
+ direction: "lower-better",
1066
+ variants: [
1067
+ {
1068
+ ageMin: 18,
1069
+ range: { max: 30, min: 10, optimalMax: 22, optimalMin: 12, unit: "%" },
1070
+ sex: "M"
1071
+ },
1072
+ {
1073
+ ageMin: 18,
1074
+ range: { max: 42, min: 15, optimalMax: 32, optimalMin: 20, unit: "%" },
1075
+ sex: "F"
1076
+ }
1077
+ ]
1078
+ },
1079
+ AndroidGynoidRatio: {
1080
+ default: { max: 1.2, min: 0.5, optimalMax: 1, optimalMin: 0.6, unit: "" },
1081
+ direction: "lower-better",
1082
+ variants: [
1083
+ {
1084
+ ageMin: 18,
1085
+ range: { max: 1.2, min: 0.6, optimalMax: 1, optimalMin: 0.7, unit: "" },
1086
+ sex: "M"
1087
+ },
1088
+ {
1089
+ ageMin: 18,
1090
+ range: { max: 1, min: 0.4, optimalMax: 0.8, optimalMin: 0.5, unit: "" },
1091
+ sex: "F"
1092
+ }
1093
+ ]
1094
+ },
1095
+ BMC: {
1096
+ default: { max: 3.5, min: 2, optimalMax: 3.2, optimalMin: 2.3, unit: "kg" },
1097
+ direction: "higher-better",
1098
+ variants: [
1099
+ {
1100
+ ageMin: 18,
1101
+ range: { max: 4, min: 2.5, optimalMax: 3.5, optimalMin: 2.8, unit: "kg" },
1102
+ sex: "M"
1103
+ },
1104
+ {
1105
+ ageMin: 18,
1106
+ range: { max: 3, min: 1.8, optimalMax: 2.7, optimalMin: 2, unit: "kg" },
1107
+ sex: "F"
1108
+ }
1109
+ ]
1110
+ },
1111
+ // BodyFatPct — Age-bracketed ranges from Gallagher et al. Am J Clin Nutr 2000;72:694-701
1112
+ // (PMID: 10966886) and ACSM Guidelines for Exercise Testing, 11th Ed (2021)
1113
+ BodyFatPct: {
1114
+ default: { max: 30, min: 10, optimalMax: 25, optimalMin: 15, unit: "%" },
1115
+ direction: "lower-better",
1116
+ variants: [
1117
+ // Men — age brackets
1118
+ {
1119
+ ageMax: 25,
1120
+ ageMin: 18,
1121
+ range: { max: 25, min: 5, optimalMax: 20, optimalMin: 10, unit: "%" },
1122
+ sex: "M"
1123
+ },
1124
+ {
1125
+ ageMax: 35,
1126
+ ageMin: 26,
1127
+ range: { max: 26, min: 5, optimalMax: 21, optimalMin: 11, unit: "%" },
1128
+ sex: "M"
1129
+ },
1130
+ {
1131
+ ageMax: 45,
1132
+ ageMin: 36,
1133
+ range: { max: 27, min: 5, optimalMax: 22, optimalMin: 12, unit: "%" },
1134
+ sex: "M"
1135
+ },
1136
+ {
1137
+ ageMax: 55,
1138
+ ageMin: 46,
1139
+ range: { max: 28, min: 5, optimalMax: 23, optimalMin: 13, unit: "%" },
1140
+ sex: "M"
1141
+ },
1142
+ {
1143
+ ageMin: 56,
1144
+ range: { max: 29, min: 5, optimalMax: 24, optimalMin: 14, unit: "%" },
1145
+ sex: "M"
1146
+ },
1147
+ // Women — age brackets
1148
+ {
1149
+ ageMax: 25,
1150
+ ageMin: 18,
1151
+ range: { max: 32, min: 13, optimalMax: 28, optimalMin: 18, unit: "%" },
1152
+ sex: "F"
1153
+ },
1154
+ {
1155
+ ageMax: 35,
1156
+ ageMin: 26,
1157
+ range: { max: 33, min: 13, optimalMax: 29, optimalMin: 18, unit: "%" },
1158
+ sex: "F"
1159
+ },
1160
+ {
1161
+ ageMax: 45,
1162
+ ageMin: 36,
1163
+ range: { max: 34, min: 13, optimalMax: 30, optimalMin: 19, unit: "%" },
1164
+ sex: "F"
1165
+ },
1166
+ {
1167
+ ageMax: 55,
1168
+ ageMin: 46,
1169
+ range: { max: 35, min: 13, optimalMax: 31, optimalMin: 20, unit: "%" },
1170
+ sex: "F"
1171
+ },
1172
+ {
1173
+ ageMin: 56,
1174
+ range: { max: 36, min: 13, optimalMax: 32, optimalMin: 20, unit: "%" },
1175
+ sex: "F"
1176
+ }
1177
+ ]
1178
+ },
1179
+ FatFreeMass: {
1180
+ default: { max: 80, min: 40, optimalMax: 70, optimalMin: 45, unit: "kg" },
1181
+ direction: "higher-better",
1182
+ variants: [
1183
+ {
1184
+ ageMin: 18,
1185
+ range: { max: 90, min: 50, optimalMax: 80, optimalMin: 55, unit: "kg" },
1186
+ sex: "M"
1187
+ },
1188
+ {
1189
+ ageMin: 18,
1190
+ range: { max: 60, min: 35, optimalMax: 52, optimalMin: 38, unit: "kg" },
1191
+ sex: "F"
1192
+ }
1193
+ ]
1194
+ },
1195
+ FatMass: {
1196
+ default: { max: 30, min: 5, optimalMax: 20, optimalMin: 8, unit: "kg" },
1197
+ direction: "lower-better",
1198
+ variants: [
1199
+ {
1200
+ ageMin: 18,
1201
+ range: { max: 25, min: 5, optimalMax: 18, optimalMin: 7, unit: "kg" },
1202
+ sex: "M"
1203
+ },
1204
+ {
1205
+ ageMin: 18,
1206
+ range: { max: 30, min: 8, optimalMax: 22, optimalMin: 10, unit: "kg" },
1207
+ sex: "F"
1208
+ }
1209
+ ]
1210
+ },
1211
+ GynoidFatPct: {
1212
+ default: { max: 45, min: 15, optimalMax: 35, optimalMin: 20, unit: "%" },
1213
+ direction: "lower-better",
1214
+ variants: [
1215
+ {
1216
+ ageMin: 18,
1217
+ range: { max: 35, min: 12, optimalMax: 28, optimalMin: 15, unit: "%" },
1218
+ sex: "M"
1219
+ },
1220
+ {
1221
+ ageMin: 18,
1222
+ range: { max: 50, min: 20, optimalMax: 40, optimalMin: 25, unit: "%" },
1223
+ sex: "F"
1224
+ }
1225
+ ]
1226
+ },
1227
+ LeanMass: {
1228
+ default: { max: 75, min: 35, optimalMax: 65, optimalMin: 40, unit: "kg" },
1229
+ direction: "higher-better",
1230
+ variants: [
1231
+ {
1232
+ ageMin: 18,
1233
+ range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: "kg" },
1234
+ sex: "M"
1235
+ },
1236
+ {
1237
+ ageMin: 18,
1238
+ range: { max: 55, min: 30, optimalMax: 48, optimalMin: 35, unit: "kg" },
1239
+ sex: "F"
1240
+ }
1241
+ ]
1242
+ },
1243
+ TotalMass: {
1244
+ default: { max: 100, min: 50, optimalMax: 85, optimalMin: 55, unit: "kg" },
1245
+ variants: [
1246
+ {
1247
+ ageMin: 18,
1248
+ range: { max: 100, min: 55, optimalMax: 90, optimalMin: 60, unit: "kg" },
1249
+ sex: "M"
1250
+ },
1251
+ {
1252
+ ageMin: 18,
1253
+ range: { max: 85, min: 45, optimalMax: 75, optimalMin: 50, unit: "kg" },
1254
+ sex: "F"
1255
+ }
1256
+ ]
1257
+ },
1258
+ VATMass: {
1259
+ default: { max: 1.5, min: 0, optimalMax: 0.8, optimalMin: 0, unit: "kg" },
1260
+ direction: "lower-better",
1261
+ variants: [
1262
+ {
1263
+ ageMin: 18,
1264
+ range: { max: 1.5, min: 0, optimalMax: 1, optimalMin: 0, unit: "kg" },
1265
+ sex: "M"
1266
+ },
1267
+ {
1268
+ ageMin: 18,
1269
+ range: { max: 1, min: 0, optimalMax: 0.5, optimalMin: 0, unit: "kg" },
1270
+ sex: "F"
1271
+ }
1272
+ ]
1273
+ },
1274
+ VATVolume: {
1275
+ default: { max: 1500, min: 0, optimalMax: 800, optimalMin: 0, unit: "cm\xB3" },
1276
+ direction: "lower-better",
1277
+ variants: [
1278
+ {
1279
+ ageMin: 18,
1280
+ range: { max: 1500, min: 0, optimalMax: 1e3, optimalMin: 0, unit: "cm\xB3" },
1281
+ sex: "M"
1282
+ },
1283
+ {
1284
+ ageMin: 18,
1285
+ range: { max: 1e3, min: 0, optimalMax: 500, optimalMin: 0, unit: "cm\xB3" },
1286
+ sex: "F"
1287
+ }
1288
+ ]
1289
+ },
1290
+ // =============================================================================
1291
+ // BONE DENSITOMETRY (DXA)
1292
+ // =============================================================================
1293
+ BMD_Total: {
1294
+ default: { max: 1.4, min: 0.9, optimalMax: 1.3, optimalMin: 1, unit: "g/cm\xB2" },
1295
+ direction: "higher-better"
1296
+ },
1297
+ TScore_Total: {
1298
+ default: { max: 4, min: -1, optimalMax: 2, optimalMin: -0.5, unit: "" },
1299
+ direction: "higher-better"
1300
+ },
1301
+ ZScore_Total: {
1302
+ default: { max: 2, min: -2, optimalMax: 1, optimalMin: -1, unit: "" },
1303
+ direction: "higher-better"
1304
+ },
1305
+ // =============================================================================
1306
+ // MISSING LAB RANGES
1307
+ // =============================================================================
1308
+ Amylase: {
1309
+ default: { max: 100, min: 28, optimalMax: 90, optimalMin: 35, unit: "U/L" }
1310
+ },
1311
+ Creatinine_Urine: {
1312
+ default: { max: 300, min: 20, optimalMax: 250, optimalMin: 40, unit: "mg/dL" },
1313
+ variants: [
1314
+ {
1315
+ ageMin: 18,
1316
+ range: { max: 300, min: 40, optimalMax: 260, optimalMin: 60, unit: "mg/dL" },
1317
+ sex: "M"
1318
+ },
1319
+ {
1320
+ ageMin: 18,
1321
+ range: { max: 220, min: 20, optimalMax: 180, optimalMin: 40, unit: "mg/dL" },
1322
+ sex: "F"
1323
+ }
1324
+ ]
1325
+ },
1326
+ IgA: {
1327
+ default: { max: 400, min: 70, optimalMax: 350, optimalMin: 100, unit: "mg/dL" }
1328
+ },
1329
+ Lipase: {
1330
+ default: { max: 60, min: 0, optimalMax: 50, optimalMin: 10, unit: "U/L" }
1331
+ },
1332
+ Microalbumin_Urine: {
1333
+ default: { max: 30, min: 0, optimalMax: 20, optimalMin: 0, unit: "mg/L" }
1334
+ },
1335
+ PSA_Free: {
1336
+ default: { max: 1.5, min: 0, optimalMax: 1, optimalMin: 0, unit: "ng/mL" }
1337
+ },
1338
+ PSA_FreeRatio: {
1339
+ default: { max: 100, min: 25, optimalMax: 100, optimalMin: 30, unit: "%" }
1340
+ },
1341
+ // BMI - WHO classification: 18.5–24.9 normal, 25–29.9 overweight, ≥30 obese
1342
+ BMI: {
1343
+ default: { max: 30, min: 18.5, optimalMax: 24.9, optimalMin: 18.5, unit: "kg/m2" }
1344
+ },
1345
+ // eAG - Estimated Average Glucose, derived from HbA1c (ADAG study)
1346
+ eAG: {
1347
+ default: { max: 154, min: 70, optimalMax: 126, optimalMin: 70, unit: "mg/dL" }
1348
+ },
1349
+ // INR - International Normalized Ratio (non-anticoagulated patients)
1350
+ INR: {
1351
+ default: { max: 1.2, min: 0.8, optimalMax: 1.1, optimalMin: 0.9, unit: "ratio" }
1352
+ },
1353
+ // Prothrombin Time
1354
+ ProthrombinTime: {
1355
+ default: { max: 13.5, min: 11, optimalMax: 13, optimalMin: 11, unit: "seconds" }
1356
+ },
1357
+ // DHT - Dihydrotestosterone (adult male reference; female values are much lower)
1358
+ DHT: {
1359
+ default: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: "ng/dL" },
1360
+ variants: [
1361
+ {
1362
+ ageMin: 18,
1363
+ range: { max: 85, min: 30, optimalMax: 85, optimalMin: 30, unit: "ng/dL" },
1364
+ sex: "M"
1365
+ },
1366
+ {
1367
+ ageMin: 18,
1368
+ range: { max: 22, min: 4, optimalMax: 22, optimalMin: 4, unit: "ng/dL" },
1369
+ sex: "F"
1370
+ }
1371
+ ]
1372
+ },
1373
+ // Total IgE - higher values suggest atopy/allergic sensitization
1374
+ IgE_Total: {
1375
+ default: { max: 100, min: 0, optimalMax: 100, optimalMin: 0, unit: "IU/mL" },
1376
+ direction: "lower-better"
1377
+ },
1378
+ // IgG - Immunoglobulin G
1379
+ IgG: {
1380
+ default: { max: 1600, min: 700, optimalMax: 1600, optimalMin: 700, unit: "mg/dL" }
1381
+ },
1382
+ // IgE E1 Cat Dander - Class 0 (≤0.35 kU/L) = negative
1383
+ IgE_E1_CatDander: {
1384
+ default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: "kU/L" },
1385
+ direction: "lower-better"
1386
+ },
1387
+ // IgE GX1 Grasses - Class 0 (≤0.35 kU/L) = negative
1388
+ IgE_GX1_Grasses: {
1389
+ default: { max: 0.35, min: 0, optimalMax: 0.35, optimalMin: 0, unit: "kU/L" },
1390
+ direction: "lower-better"
1391
+ }
1392
+ };
1393
+ var defaultReferenceRanges = Object.fromEntries(
1394
+ Object.entries(biomarkerRangeDefinitions).map(([code, def]) => [code, def.default])
1395
+ );
1396
+ function getReferenceRange(testCode, context) {
1397
+ const definition = biomarkerRangeDefinitions[testCode];
1398
+ if (!definition) return void 0;
1399
+ if (!context || !definition.variants || definition.variants.length === 0) {
1400
+ return definition.default;
1401
+ }
1402
+ const { age, biologicalSex } = context;
1403
+ for (const variant of definition.variants) {
1404
+ if (variant.sex !== "all" && variant.sex !== biologicalSex) {
1405
+ continue;
1406
+ }
1407
+ if (variant.ageMin !== void 0 && (age === void 0 || age < variant.ageMin)) {
1408
+ continue;
1409
+ }
1410
+ if (variant.ageMax !== void 0 && (age === void 0 || age > variant.ageMax)) {
1411
+ continue;
1412
+ }
1413
+ return variant.range;
1414
+ }
1415
+ return definition.default;
1416
+ }
1417
+ function getRangeDirection(testCode) {
1418
+ return _nullishCoalesce(_optionalChain([biomarkerRangeDefinitions, 'access', _ => _[testCode], 'optionalAccess', _2 => _2.direction]), () => ( "range"));
1419
+ }
1420
+ function getFallbackReferenceRange(biomarkerCode) {
1421
+ const definition = biomarkerRangeDefinitions[biomarkerCode];
1422
+ if (!definition || definition.default.min === void 0 || definition.default.max === void 0) {
1423
+ return void 0;
1424
+ }
1425
+ return {
1426
+ max: definition.default.max,
1427
+ min: definition.default.min,
1428
+ unit: definition.default.unit
1429
+ };
1430
+ }
1431
+ function applyFallbackReferenceRanges(biomarkers) {
1432
+ let fallbackCount = 0;
1433
+ for (const biomarker of biomarkers) {
1434
+ if (biomarker.referenceMin != null && biomarker.referenceMax != null) {
1435
+ continue;
1436
+ }
1437
+ const fallback = getFallbackReferenceRange(biomarker.code);
1438
+ if (fallback) {
1439
+ const canonicalUnit = _chunkGFXKYXHWcjs.getCanonicalUnit.call(void 0, biomarker.code);
1440
+ const unitsMatch = !biomarker.unit || biomarker.unit.toLowerCase() === fallback.unit.toLowerCase() || canonicalUnit && biomarker.unit.toLowerCase() === canonicalUnit.toLowerCase() || // Handle common unit variations
1441
+ biomarker.unit === "%" && fallback.unit === "%";
1442
+ if (unitsMatch) {
1443
+ if (biomarker.referenceMin == null) {
1444
+ biomarker.referenceMin = fallback.min;
1445
+ }
1446
+ if (biomarker.referenceMax == null) {
1447
+ biomarker.referenceMax = fallback.max;
1448
+ }
1449
+ fallbackCount++;
1450
+ }
1451
+ }
1452
+ }
1453
+ return fallbackCount;
1454
+ }
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+ exports.biomarkerRangeDefinitions = biomarkerRangeDefinitions; exports.defaultReferenceRanges = defaultReferenceRanges; exports.getReferenceRange = getReferenceRange; exports.getRangeDirection = getRangeDirection; exports.getFallbackReferenceRange = getFallbackReferenceRange; exports.applyFallbackReferenceRanges = applyFallbackReferenceRanges;
1464
+ //# sourceMappingURL=chunk-2X6MT5KE.cjs.map