Spaces:
Running on Zero
Running on Zero
Codex Codex commited on
Commit ·
1c301da
1
Parent(s): 11adb6c
Expand lab knowledge graph markers and videos
Browse filesCo-authored-by: Codex <chatgpt-codex-connector[bot]@users.noreply.github.com>
- kb/cbc_knowledge_graph.json +0 -0
- kb/knowledge_base.py +155 -0
- kb/marker_videos.json +163 -107
- scripts/expand_lab_knowledge_graph.py +67 -4
- src/markers.py +31 -0
kb/cbc_knowledge_graph.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
kb/knowledge_base.py
CHANGED
|
@@ -115,6 +115,21 @@ KB: dict[str, MarkerKB] = {
|
|
| 115 |
low="A low reticulocyte count in anemia suggests the marrow is not keeping up with red-cell need.",
|
| 116 |
questions=("Is my body replacing red cells appropriately?",),
|
| 117 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
# --- Metabolic panel ---
|
| 119 |
"Glucose": MarkerKB(
|
| 120 |
high="An elevated fasting glucose can indicate prediabetes or diabetes, or simply that the sample was not fasting.",
|
|
@@ -206,6 +221,11 @@ KB: dict[str, MarkerKB] = {
|
|
| 206 |
low="A low TIBC may appear with inflammation or iron overload.",
|
| 207 |
questions=("Does TIBC fit with my ferritin and transferrin saturation?",),
|
| 208 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 209 |
"Transferrin Saturation": MarkerKB(
|
| 210 |
high="A high saturation may suggest iron overload or excess intake.",
|
| 211 |
low="A low saturation is common in iron deficiency.",
|
|
@@ -236,6 +256,11 @@ KB: dict[str, MarkerKB] = {
|
|
| 236 |
low="A low homocysteine is generally favorable.",
|
| 237 |
questions=("Should we check B12 and folate?",),
|
| 238 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 239 |
"Cystatin C": MarkerKB(
|
| 240 |
high="A high cystatin C suggests reduced kidney filtration, similar to creatinine but less muscle-dependent.",
|
| 241 |
low="A low cystatin C is usually not a concern.",
|
|
@@ -251,6 +276,21 @@ KB: dict[str, MarkerKB] = {
|
|
| 251 |
low="A low beta-2 microglobulin is not typically significant.",
|
| 252 |
questions=("Should this be interpreted with kidney function?",),
|
| 253 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 254 |
# --- Liver enzymes ---
|
| 255 |
"ALT": MarkerKB(
|
| 256 |
high="ALT is fairly liver-specific; elevations can follow fatty liver, alcohol, medications, or viral hepatitis.",
|
|
@@ -364,6 +404,16 @@ KB: dict[str, MarkerKB] = {
|
|
| 364 |
low="A negative or low Anti-TPO is expected in most people without autoimmune thyroid disease.",
|
| 365 |
questions=("Could this explain my thyroid symptoms or TSH changes?",),
|
| 366 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 367 |
# --- Vitamins / iron ---
|
| 368 |
"Vitamin D": MarkerKB(
|
| 369 |
high="A very high vitamin D is uncommon and usually from supplements.",
|
|
@@ -380,6 +430,31 @@ KB: dict[str, MarkerKB] = {
|
|
| 380 |
low="A low ferritin is the most specific sign of low iron stores and a common cause of anemia.",
|
| 381 |
questions=("Does my ferritin explain my hemoglobin and MCV?", "Should we look for a source of iron loss?"),
|
| 382 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 383 |
"HbA1c": MarkerKB(
|
| 384 |
high="A high HbA1c reflects higher average blood sugar over ~3 months and is used to screen for prediabetes and diabetes.",
|
| 385 |
low="A low HbA1c is generally not a concern.",
|
|
@@ -447,12 +522,42 @@ KB: dict[str, MarkerKB] = {
|
|
| 447 |
low="A negative rheumatoid factor does not rule out arthritis.",
|
| 448 |
questions=("Do my joints hurt or swell, especially in the morning?",),
|
| 449 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 450 |
# --- Cardiac ---
|
| 451 |
"BNP": MarkerKB(
|
| 452 |
high="A high BNP suggests the heart is under strain, as in heart failure or fluid overload.",
|
| 453 |
low="A low BNP makes significant heart failure less likely.",
|
| 454 |
questions=("Do I have shortness of breath or leg swelling?",),
|
| 455 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 456 |
"Troponin I": MarkerKB(
|
| 457 |
high="A high troponin indicates heart-muscle injury and needs urgent clinical evaluation.",
|
| 458 |
low="A low troponin is expected when there is no heart injury.",
|
|
@@ -468,6 +573,11 @@ KB: dict[str, MarkerKB] = {
|
|
| 468 |
low="A low CK-MB is expected without heart injury.",
|
| 469 |
questions=("Was this checked because of chest symptoms?",),
|
| 470 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 471 |
# --- Hormones ---
|
| 472 |
"Cortisol": MarkerKB(
|
| 473 |
high="A high cortisol may reflect stress, steroids, Cushing syndrome, or lab timing.",
|
|
@@ -519,6 +629,26 @@ KB: dict[str, MarkerKB] = {
|
|
| 519 |
low="A low ACTH may appear with steroid use or pituitary causes of low cortisol.",
|
| 520 |
questions=("Should ACTH be read with cortisol?",),
|
| 521 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 522 |
"SHBG": MarkerKB(
|
| 523 |
high="A high SHBG binds more testosterone and estrogen, lowering their free fractions.",
|
| 524 |
low="A low SHBG is linked to insulin resistance and higher free androgen activity.",
|
|
@@ -535,6 +665,31 @@ KB: dict[str, MarkerKB] = {
|
|
| 535 |
low="A low PSA is expected and does not rule out all prostate conditions.",
|
| 536 |
questions=("Could recent exercise or infection have raised PSA?", "Is repeat testing planned?"),
|
| 537 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 538 |
"Folate": MarkerKB(
|
| 539 |
high="A high folate is usually from supplements or fortified foods.",
|
| 540 |
low="A low folate can cause anemia similar to B12 deficiency and affects DNA synthesis.",
|
|
|
|
| 115 |
low="A low reticulocyte count in anemia suggests the marrow is not keeping up with red-cell need.",
|
| 116 |
questions=("Is my body replacing red cells appropriately?",),
|
| 117 |
),
|
| 118 |
+
"Haptoglobin": MarkerKB(
|
| 119 |
+
high="A high haptoglobin may rise with inflammation because it is an acute-phase protein.",
|
| 120 |
+
low="A low haptoglobin supports red-cell breakdown when interpreted with LDH, bilirubin, and reticulocytes.",
|
| 121 |
+
questions=("Does this fit with LDH, bilirubin, and reticulocyte count?",),
|
| 122 |
+
),
|
| 123 |
+
"G6PD": MarkerKB(
|
| 124 |
+
high="A high G6PD level is usually not clinically important by itself.",
|
| 125 |
+
low="A low G6PD level can predispose red cells to hemolysis after certain infections, foods, or medications.",
|
| 126 |
+
questions=("Should I avoid any oxidant medications or foods?",),
|
| 127 |
+
),
|
| 128 |
+
"Erythropoietin": MarkerKB(
|
| 129 |
+
high="A high erythropoietin may reflect the body's response to anemia or low oxygen levels.",
|
| 130 |
+
low="A low or inappropriately normal erythropoietin can contribute to anemia in kidney disease.",
|
| 131 |
+
questions=("Is this appropriate for my hemoglobin level?",),
|
| 132 |
+
),
|
| 133 |
# --- Metabolic panel ---
|
| 134 |
"Glucose": MarkerKB(
|
| 135 |
high="An elevated fasting glucose can indicate prediabetes or diabetes, or simply that the sample was not fasting.",
|
|
|
|
| 221 |
low="A low TIBC may appear with inflammation or iron overload.",
|
| 222 |
questions=("Does TIBC fit with my ferritin and transferrin saturation?",),
|
| 223 |
),
|
| 224 |
+
"Transferrin": MarkerKB(
|
| 225 |
+
high="A high transferrin often appears when the body is trying to transport more iron during iron deficiency.",
|
| 226 |
+
low="A low transferrin may appear with inflammation, liver disease, malnutrition, or iron overload.",
|
| 227 |
+
questions=("Does transferrin fit with ferritin, serum iron, and TIBC?",),
|
| 228 |
+
),
|
| 229 |
"Transferrin Saturation": MarkerKB(
|
| 230 |
high="A high saturation may suggest iron overload or excess intake.",
|
| 231 |
low="A low saturation is common in iron deficiency.",
|
|
|
|
| 256 |
low="A low homocysteine is generally favorable.",
|
| 257 |
questions=("Should we check B12 and folate?",),
|
| 258 |
),
|
| 259 |
+
"Methylmalonic Acid": MarkerKB(
|
| 260 |
+
high="A high methylmalonic acid supports functional vitamin B12 deficiency, especially when B12 is borderline.",
|
| 261 |
+
low="A low methylmalonic acid is usually not a concern.",
|
| 262 |
+
questions=("Does this clarify whether my B12 level is truly low?",),
|
| 263 |
+
),
|
| 264 |
"Cystatin C": MarkerKB(
|
| 265 |
high="A high cystatin C suggests reduced kidney filtration, similar to creatinine but less muscle-dependent.",
|
| 266 |
low="A low cystatin C is usually not a concern.",
|
|
|
|
| 276 |
low="A low beta-2 microglobulin is not typically significant.",
|
| 277 |
questions=("Should this be interpreted with kidney function?",),
|
| 278 |
),
|
| 279 |
+
"C-Peptide": MarkerKB(
|
| 280 |
+
high="A high C-peptide means the pancreas is making more insulin and may appear with insulin resistance or insulin-producing tumors.",
|
| 281 |
+
low="A low C-peptide suggests reduced natural insulin production, especially when glucose is high.",
|
| 282 |
+
questions=("Was glucose measured at the same time?",),
|
| 283 |
+
),
|
| 284 |
+
"Fructosamine": MarkerKB(
|
| 285 |
+
high="A high fructosamine suggests higher average blood sugar over the prior two to three weeks.",
|
| 286 |
+
low="A low fructosamine is usually not a concern but can be affected by low blood proteins.",
|
| 287 |
+
questions=("Is this being used because HbA1c may be unreliable for me?",),
|
| 288 |
+
),
|
| 289 |
+
"Beta-Hydroxybutyrate": MarkerKB(
|
| 290 |
+
high="A high beta-hydroxybutyrate indicates increased ketone production and can be important in diabetes or prolonged fasting.",
|
| 291 |
+
low="A low beta-hydroxybutyrate is expected when ketone production is not increased.",
|
| 292 |
+
questions=("Could this relate to diabetes, fasting, or a low-carbohydrate diet?",),
|
| 293 |
+
),
|
| 294 |
# --- Liver enzymes ---
|
| 295 |
"ALT": MarkerKB(
|
| 296 |
high="ALT is fairly liver-specific; elevations can follow fatty liver, alcohol, medications, or viral hepatitis.",
|
|
|
|
| 404 |
low="A negative or low Anti-TPO is expected in most people without autoimmune thyroid disease.",
|
| 405 |
questions=("Could this explain my thyroid symptoms or TSH changes?",),
|
| 406 |
),
|
| 407 |
+
"TSH Receptor Antibodies": MarkerKB(
|
| 408 |
+
high="A high TSH receptor antibody result supports autoimmune Graves-type thyroid stimulation in the right thyroid pattern.",
|
| 409 |
+
low="A low result makes TSH-receptor antibody activity less likely.",
|
| 410 |
+
questions=("Does this fit with my TSH, Free T4, and Free T3?",),
|
| 411 |
+
),
|
| 412 |
+
"Thyroglobulin Antibodies": MarkerKB(
|
| 413 |
+
high="A high thyroglobulin antibody result may support autoimmune thyroid disease and can interfere with thyroglobulin monitoring.",
|
| 414 |
+
low="A low result is expected when these antibodies are absent.",
|
| 415 |
+
questions=("Could this interfere with thyroglobulin interpretation?",),
|
| 416 |
+
),
|
| 417 |
# --- Vitamins / iron ---
|
| 418 |
"Vitamin D": MarkerKB(
|
| 419 |
high="A very high vitamin D is uncommon and usually from supplements.",
|
|
|
|
| 430 |
low="A low ferritin is the most specific sign of low iron stores and a common cause of anemia.",
|
| 431 |
questions=("Does my ferritin explain my hemoglobin and MCV?", "Should we look for a source of iron loss?"),
|
| 432 |
),
|
| 433 |
+
"Zinc": MarkerKB(
|
| 434 |
+
high="A high zinc level is uncommon and may reflect excess supplementation.",
|
| 435 |
+
low="A low zinc level may relate to poor intake, malabsorption, inflammation, or increased losses.",
|
| 436 |
+
questions=("Am I taking zinc or other mineral supplements?",),
|
| 437 |
+
),
|
| 438 |
+
"Copper": MarkerKB(
|
| 439 |
+
high="A high copper level can rise with inflammation, pregnancy, estrogen therapy, or copper disorders.",
|
| 440 |
+
low="A low copper level may cause anemia or nerve problems and can occur with excess zinc intake.",
|
| 441 |
+
questions=("Should copper be interpreted with ceruloplasmin and zinc?",),
|
| 442 |
+
),
|
| 443 |
+
"Ceruloplasmin": MarkerKB(
|
| 444 |
+
high="A high ceruloplasmin may rise with inflammation, pregnancy, or estrogen therapy.",
|
| 445 |
+
low="A low ceruloplasmin can appear in copper deficiency or Wilson disease workups.",
|
| 446 |
+
questions=("Does this fit with copper and liver tests?",),
|
| 447 |
+
),
|
| 448 |
+
"Selenium": MarkerKB(
|
| 449 |
+
high="A high selenium level is usually related to excess supplementation and can be toxic.",
|
| 450 |
+
low="A low selenium level may reflect poor intake, malabsorption, or severe illness.",
|
| 451 |
+
questions=("Am I taking selenium-containing supplements?",),
|
| 452 |
+
),
|
| 453 |
+
"Vitamin E": MarkerKB(
|
| 454 |
+
high="A high vitamin E level is usually supplement-related and may affect bleeding risk at high intakes.",
|
| 455 |
+
low="A low vitamin E level may occur with fat malabsorption and can affect nerves and red cells.",
|
| 456 |
+
questions=("Could fat absorption or supplements explain this?",),
|
| 457 |
+
),
|
| 458 |
"HbA1c": MarkerKB(
|
| 459 |
high="A high HbA1c reflects higher average blood sugar over ~3 months and is used to screen for prediabetes and diabetes.",
|
| 460 |
low="A low HbA1c is generally not a concern.",
|
|
|
|
| 522 |
low="A negative rheumatoid factor does not rule out arthritis.",
|
| 523 |
questions=("Do my joints hurt or swell, especially in the morning?",),
|
| 524 |
),
|
| 525 |
+
"Anti-CCP Antibodies": MarkerKB(
|
| 526 |
+
high="A high anti-CCP result is more specific for rheumatoid arthritis than rheumatoid factor in the right symptom pattern.",
|
| 527 |
+
low="A low anti-CCP result makes anti-CCP-positive rheumatoid arthritis less likely.",
|
| 528 |
+
questions=("Does this match joint symptoms or imaging?",),
|
| 529 |
+
),
|
| 530 |
+
"Immunoglobulin G": MarkerKB(
|
| 531 |
+
high="A high IgG may reflect chronic inflammation, infection, autoimmune disease, liver disease, or monoclonal protein.",
|
| 532 |
+
low="A low IgG may reflect immune deficiency, protein loss, or treatment effects.",
|
| 533 |
+
questions=("Should this be read with serum protein electrophoresis or vaccine responses?",),
|
| 534 |
+
),
|
| 535 |
+
"Immunoglobulin A": MarkerKB(
|
| 536 |
+
high="A high IgA may reflect inflammation, liver disease, mucosal immune activation, or monoclonal protein.",
|
| 537 |
+
low="A low IgA can be selective and may affect interpretation of some celiac tests.",
|
| 538 |
+
questions=("Does low IgA affect any antibody tests I had?",),
|
| 539 |
+
),
|
| 540 |
+
"Immunoglobulin M": MarkerKB(
|
| 541 |
+
high="A high IgM may appear with recent immune stimulation or some monoclonal protein disorders.",
|
| 542 |
+
low="A low IgM may reflect immune deficiency or treatment effects.",
|
| 543 |
+
questions=("Is this a persistent pattern across immunoglobulins?",),
|
| 544 |
+
),
|
| 545 |
+
"Immunoglobulin E": MarkerKB(
|
| 546 |
+
high="A high IgE is commonly associated with allergies, eczema, asthma, or parasite exposure.",
|
| 547 |
+
low="A low IgE is usually not clinically significant.",
|
| 548 |
+
questions=("Could allergy or asthma explain this?",),
|
| 549 |
+
),
|
| 550 |
# --- Cardiac ---
|
| 551 |
"BNP": MarkerKB(
|
| 552 |
high="A high BNP suggests the heart is under strain, as in heart failure or fluid overload.",
|
| 553 |
low="A low BNP makes significant heart failure less likely.",
|
| 554 |
questions=("Do I have shortness of breath or leg swelling?",),
|
| 555 |
),
|
| 556 |
+
"NT-proBNP": MarkerKB(
|
| 557 |
+
high="A high NT-proBNP suggests heart strain or heart failure, but age, kidney function, and rhythm affect interpretation.",
|
| 558 |
+
low="A low NT-proBNP makes heart failure less likely in the right clinical context.",
|
| 559 |
+
questions=("How should this be interpreted with my age and kidney function?",),
|
| 560 |
+
),
|
| 561 |
"Troponin I": MarkerKB(
|
| 562 |
high="A high troponin indicates heart-muscle injury and needs urgent clinical evaluation.",
|
| 563 |
low="A low troponin is expected when there is no heart injury.",
|
|
|
|
| 573 |
low="A low CK-MB is expected without heart injury.",
|
| 574 |
questions=("Was this checked because of chest symptoms?",),
|
| 575 |
),
|
| 576 |
+
"Myoglobin": MarkerKB(
|
| 577 |
+
high="A high myoglobin may reflect skeletal or heart muscle injury and is less specific than troponin.",
|
| 578 |
+
low="A low myoglobin is expected without recent muscle injury.",
|
| 579 |
+
questions=("Could exercise, trauma, or muscle symptoms explain this?",),
|
| 580 |
+
),
|
| 581 |
# --- Hormones ---
|
| 582 |
"Cortisol": MarkerKB(
|
| 583 |
high="A high cortisol may reflect stress, steroids, Cushing syndrome, or lab timing.",
|
|
|
|
| 629 |
low="A low ACTH may appear with steroid use or pituitary causes of low cortisol.",
|
| 630 |
questions=("Should ACTH be read with cortisol?",),
|
| 631 |
),
|
| 632 |
+
"DHEA-S": MarkerKB(
|
| 633 |
+
high="A high DHEA-S suggests increased adrenal androgen production and may appear in PCOS or adrenal disorders.",
|
| 634 |
+
low="A low DHEA-S can occur with adrenal insufficiency, aging, or steroid exposure.",
|
| 635 |
+
questions=("Does this fit with testosterone and symptoms?",),
|
| 636 |
+
),
|
| 637 |
+
"Androstenedione": MarkerKB(
|
| 638 |
+
high="A high androstenedione may reflect increased adrenal or ovarian androgen production.",
|
| 639 |
+
low="A low androstenedione is usually interpreted only in endocrine context.",
|
| 640 |
+
questions=("Should this be paired with DHEA-S and testosterone?",),
|
| 641 |
+
),
|
| 642 |
+
"Anti-Mullerian Hormone": MarkerKB(
|
| 643 |
+
high="A high AMH may appear with a high ovarian follicle count, including some PCOS patterns.",
|
| 644 |
+
low="A low AMH may suggest lower ovarian reserve for age, but it does not predict natural fertility by itself.",
|
| 645 |
+
questions=("How should this be interpreted for my age and fertility goals?",),
|
| 646 |
+
),
|
| 647 |
+
"Beta-hCG": MarkerKB(
|
| 648 |
+
high="A high beta-hCG most commonly reflects pregnancy, but it is also used in some pregnancy complications and tumor monitoring.",
|
| 649 |
+
low="A low or negative beta-hCG makes pregnancy less likely at the time tested.",
|
| 650 |
+
questions=("Should this be repeated to assess the trend?",),
|
| 651 |
+
),
|
| 652 |
"SHBG": MarkerKB(
|
| 653 |
high="A high SHBG binds more testosterone and estrogen, lowering their free fractions.",
|
| 654 |
low="A low SHBG is linked to insulin resistance and higher free androgen activity.",
|
|
|
|
| 665 |
low="A low PSA is expected and does not rule out all prostate conditions.",
|
| 666 |
questions=("Could recent exercise or infection have raised PSA?", "Is repeat testing planned?"),
|
| 667 |
),
|
| 668 |
+
"CEA": MarkerKB(
|
| 669 |
+
high="A high CEA may be followed in some cancers but can also rise with smoking, inflammation, or liver disease.",
|
| 670 |
+
low="A low CEA is expected and is most useful when compared with prior values during monitoring.",
|
| 671 |
+
questions=("Is this being used for monitoring rather than screening?",),
|
| 672 |
+
),
|
| 673 |
+
"CA-125": MarkerKB(
|
| 674 |
+
high="A high CA-125 may be followed in ovarian cancer care but can also rise with benign gynecologic or inflammatory conditions.",
|
| 675 |
+
low="A low CA-125 is expected and does not rule out disease by itself.",
|
| 676 |
+
questions=("What trend or imaging is this being compared with?",),
|
| 677 |
+
),
|
| 678 |
+
"CA 19-9": MarkerKB(
|
| 679 |
+
high="A high CA 19-9 may be followed in pancreaticobiliary cancer care but can also rise with bile duct blockage or inflammation.",
|
| 680 |
+
low="A low CA 19-9 is expected; some people do not make this marker even with disease.",
|
| 681 |
+
questions=("Is bilirubin or bile duct blockage affecting this result?",),
|
| 682 |
+
),
|
| 683 |
+
"Alpha-Fetoprotein": MarkerKB(
|
| 684 |
+
high="A high AFP may be used in liver or germ-cell tumor evaluation and can also rise in pregnancy or liver disease.",
|
| 685 |
+
low="A low AFP is expected outside pregnancy and monitoring contexts.",
|
| 686 |
+
questions=("Should this be interpreted with liver imaging or pregnancy status?",),
|
| 687 |
+
),
|
| 688 |
+
"CA 15-3": MarkerKB(
|
| 689 |
+
high="A high CA 15-3 may be used to monitor some breast cancers but is not specific enough to diagnose cancer alone.",
|
| 690 |
+
low="A low CA 15-3 is expected and is mainly useful as a trend during monitoring.",
|
| 691 |
+
questions=("Is this being compared with prior values?",),
|
| 692 |
+
),
|
| 693 |
"Folate": MarkerKB(
|
| 694 |
high="A high folate is usually from supplements or fortified foods.",
|
| 695 |
low="A low folate can cause anemia similar to B12 deficiency and affects DNA synthesis.",
|
kb/marker_videos.json
CHANGED
|
@@ -2,119 +2,175 @@
|
|
| 2 |
"schema_version": "1.0",
|
| 3 |
"description": "Curated educational YouTube links per lab marker. Closest-topic fallbacks are noted in notes.",
|
| 4 |
"videos": {
|
| 5 |
-
"
|
| 6 |
-
"
|
| 7 |
-
"
|
| 8 |
-
"
|
| 9 |
-
"
|
| 10 |
-
"mchc": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 11 |
-
"rdw_cv": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 12 |
-
"rdw_sd": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 13 |
-
"wbc": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 14 |
-
"neu_percent": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 15 |
-
"lym_percent": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 16 |
-
"mon_percent": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 17 |
-
"eos_percent": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 18 |
-
"bas_percent": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 19 |
-
"lym_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 20 |
-
"gra_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 21 |
-
"plt": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 22 |
-
"esr": "https://www.youtube.com/watch?v=MMsvv4P2eOM",
|
| 23 |
-
"mpv": "https://www.youtube.com/watch?v=JVmPu8o2ycc",
|
| 24 |
-
"neu_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 25 |
-
"mon_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 26 |
-
"eos_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 27 |
-
"bas_absolute": "https://www.youtube.com/watch?v=mzPu7q6GNQA",
|
| 28 |
-
"reticulocyte_count": "https://www.youtube.com/watch?v=MRzxsX5YG94",
|
| 29 |
-
"glucose": "https://www.youtube.com/watch?v=-B-RVybvffU",
|
| 30 |
-
"creatinine": "https://www.youtube.com/watch?v=z0LTY-im8iY",
|
| 31 |
-
"egfr": "https://www.youtube.com/watch?v=z0LTY-im8iY",
|
| 32 |
-
"bun": "https://www.youtube.com/watch?v=z0LTY-im8iY",
|
| 33 |
-
"sodium": "https://www.youtube.com/watch?v=ZQ-sQU9wNxU",
|
| 34 |
-
"potassium": "https://www.youtube.com/watch?v=ZQ-sQU9wNxU",
|
| 35 |
-
"chloride": "https://www.youtube.com/watch?v=T_pCeQkpNX8",
|
| 36 |
-
"calcium": "https://www.youtube.com/watch?v=ZQ-sQU9wNxU",
|
| 37 |
-
"albumin": "https://www.youtube.com/watch?v=JiaMJaA34Jg",
|
| 38 |
-
"total_protein": "https://www.youtube.com/watch?v=JiaMJaA34Jg",
|
| 39 |
-
"globulin": "https://www.youtube.com/watch?v=JiaMJaA34Jg",
|
| 40 |
-
"bicarbonate": "https://www.youtube.com/watch?v=-Ahjxv5FK0A",
|
| 41 |
-
"anion_gap": "https://www.youtube.com/watch?v=G2NFzqdRWcU",
|
| 42 |
-
"magnesium": "https://www.youtube.com/watch?v=ZQ-sQU9wNxU",
|
| 43 |
-
"phosphate": "https://www.youtube.com/watch?v=ZQ-sQU9wNxU",
|
| 44 |
-
"uric_acid": "https://www.youtube.com/watch?v=bznoU5bke4U",
|
| 45 |
-
"serum_iron": "https://www.youtube.com/watch?v=6RbuFyt5Wpo",
|
| 46 |
-
"tibc": "https://www.youtube.com/watch?v=6RbuFyt5Wpo",
|
| 47 |
-
"transferrin_saturation": "https://www.youtube.com/watch?v=6RbuFyt5Wpo",
|
| 48 |
-
"ldh": "https://www.youtube.com/watch?v=XpAO_0-dTAQ",
|
| 49 |
-
"osmolality": "https://www.youtube.com/watch?v=VofGdSeafTA",
|
| 50 |
"ammonia": "https://www.youtube.com/watch?v=kHB5e-4q7l8",
|
| 51 |
-
"
|
| 52 |
-
"
|
| 53 |
-
"
|
| 54 |
-
"
|
| 55 |
-
"
|
| 56 |
-
"
|
| 57 |
-
"
|
| 58 |
-
"
|
| 59 |
-
"
|
| 60 |
-
"
|
| 61 |
-
"
|
| 62 |
-
"
|
| 63 |
-
"
|
| 64 |
-
"
|
| 65 |
-
"
|
| 66 |
-
"
|
| 67 |
-
"
|
| 68 |
-
"
|
| 69 |
-
"
|
| 70 |
-
"
|
| 71 |
-
"
|
| 72 |
-
"
|
| 73 |
-
"
|
| 74 |
-
"
|
| 75 |
-
"
|
| 76 |
-
"
|
| 77 |
-
"
|
| 78 |
-
"
|
| 79 |
-
"
|
| 80 |
-
"
|
| 81 |
-
"ferritin": "https://www.youtube.com/watch?v=6RbuFyt5Wpo",
|
| 82 |
-
"folate": "https://www.youtube.com/watch?v=mYhb4470rCw",
|
| 83 |
-
"vitamin_a": "https://www.youtube.com/watch?v=3G_e0tILSmM",
|
| 84 |
-
"prothrombin_time": "https://www.youtube.com/watch?v=7sGGlvNeXkk",
|
| 85 |
-
"inr": "https://www.youtube.com/watch?v=7sGGlvNeXkk",
|
| 86 |
-
"aptt": "https://www.youtube.com/watch?v=7sGGlvNeXkk",
|
| 87 |
-
"fibrinogen": "https://www.youtube.com/watch?v=SGzp9wqeu84",
|
| 88 |
-
"d_dimer": "https://www.youtube.com/watch?v=XHbOxEMHeqc",
|
| 89 |
-
"crp": "https://www.youtube.com/watch?v=MMsvv4P2eOM",
|
| 90 |
-
"hs_crp": "https://www.youtube.com/watch?v=MMsvv4P2eOM",
|
| 91 |
-
"procalcitonin": "https://www.youtube.com/watch?v=XuGPoQWzIco",
|
| 92 |
-
"complement_c3": "https://www.youtube.com/watch?v=I_HoX_uM8EE",
|
| 93 |
-
"complement_c4": "https://www.youtube.com/watch?v=I_HoX_uM8EE",
|
| 94 |
-
"rheumatoid_factor": "https://www.youtube.com/watch?v=EB5zxdAQGzU",
|
| 95 |
-
"bnp": "https://www.youtube.com/watch?v=ypYI_lmLD7g",
|
| 96 |
-
"troponin_i": "https://www.youtube.com/watch?v=TBG9Jw3yd9I",
|
| 97 |
-
"creatine_kinase": "https://www.youtube.com/watch?v=TBG9Jw3yd9I",
|
| 98 |
-
"ck_mb": "https://www.youtube.com/watch?v=TBG9Jw3yd9I",
|
| 99 |
"cortisol": "https://www.youtube.com/watch?v=rk2b3X6CU4w",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
"insulin": "https://www.youtube.com/watch?v=w4jHtPUNg6E",
|
| 101 |
-
"
|
| 102 |
-
"
|
| 103 |
-
"
|
| 104 |
-
"
|
| 105 |
-
"
|
| 106 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
"pth": "https://www.youtube.com/watch?v=y64aXKCkHk4",
|
| 108 |
-
"
|
| 109 |
-
"
|
| 110 |
-
"
|
| 111 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
},
|
| 113 |
"notes": {
|
| 114 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
"mpv": "FBC/CBC guide covers platelets; MPV is not discussed in detail.",
|
| 116 |
-
"
|
| 117 |
-
"
|
| 118 |
-
"procalcitonin": "Sepsis lecture focuses on lactate; PCT is not the primary topic."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
}
|
| 120 |
}
|
|
|
|
| 2 |
"schema_version": "1.0",
|
| 3 |
"description": "Curated educational YouTube links per lab marker. Closest-topic fallbacks are noted in notes.",
|
| 4 |
"videos": {
|
| 5 |
+
"acth": "https://www.youtube.com/watch?v=rk2b3X6CU4w",
|
| 6 |
+
"albumin": "https://www.youtube.com/watch?v=z1LhGUAUsDg",
|
| 7 |
+
"alp": "https://www.youtube.com/watch?v=4E9KXGXUXcs",
|
| 8 |
+
"alpha_fetoprotein": "https://www.youtube.com/watch?v=CKp-TnOWDOg",
|
| 9 |
+
"alt": "https://www.youtube.com/watch?v=ZDGfAuQHA-w",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
"ammonia": "https://www.youtube.com/watch?v=kHB5e-4q7l8",
|
| 11 |
+
"amylase": "https://www.youtube.com/watch?v=gTbimcKKlKQ",
|
| 12 |
+
"androstenedione": "https://www.youtube.com/watch?v=BmIKhnE-G04",
|
| 13 |
+
"anion_gap": "https://www.youtube.com/watch?v=G2NFzqdRWcU",
|
| 14 |
+
"anti_ccp_antibodies": "https://www.youtube.com/watch?v=EB5zxdAQGzU",
|
| 15 |
+
"anti_mullerian_hormone": "https://www.youtube.com/watch?v=HiZSaDr2cBY",
|
| 16 |
+
"anti_tpo_antibodies": "https://www.youtube.com/watch?v=kg9fQ3A9IOA",
|
| 17 |
+
"apolipoprotein_a1": "https://www.youtube.com/watch?v=ckkpnuqDyLA",
|
| 18 |
+
"apolipoprotein_b": "https://www.youtube.com/watch?v=V7ywq_s7ATk",
|
| 19 |
+
"aptt": "https://www.youtube.com/watch?v=uiFicYWMZL0",
|
| 20 |
+
"ast": "https://www.youtube.com/watch?v=7_-ZtM0TieA",
|
| 21 |
+
"bas_absolute": "https://www.youtube.com/watch?v=sRIjKEkjWmU",
|
| 22 |
+
"bas_percent": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 23 |
+
"beta_2_microglobulin": "https://www.youtube.com/watch?v=i2-_4wk30po",
|
| 24 |
+
"beta_hcg": "https://www.youtube.com/watch?v=rM3FVuamrVA",
|
| 25 |
+
"beta_hydroxybutyrate": "https://www.youtube.com/watch?v=-B-RVybvffU",
|
| 26 |
+
"bicarbonate": "https://www.youtube.com/watch?v=-Ahjxv5FK0A",
|
| 27 |
+
"bnp": "https://www.youtube.com/watch?v=QEt2lvWoMxA",
|
| 28 |
+
"bun": "https://www.youtube.com/watch?v=Q7odN31HK_Y",
|
| 29 |
+
"c_peptide": "https://www.youtube.com/watch?v=JHFQljIJGzM",
|
| 30 |
+
"ca_125": "https://www.youtube.com/watch?v=3VmLWc-F3rA",
|
| 31 |
+
"ca_15_3": "https://www.youtube.com/watch?v=JeV_T32QBv8",
|
| 32 |
+
"ca_19_9": "https://www.youtube.com/watch?v=gTCxRhgnj-Q",
|
| 33 |
+
"calcium": "https://www.youtube.com/watch?v=hj-Y4eZ0dkM",
|
| 34 |
+
"cea": "https://www.youtube.com/watch?v=uJNw9v6UUjE",
|
| 35 |
+
"ceruloplasmin": "https://www.youtube.com/watch?v=42kduAhoYlw",
|
| 36 |
+
"chloride": "https://www.youtube.com/watch?v=5Fuav99clbE",
|
| 37 |
+
"ck_mb": "https://www.youtube.com/watch?v=udVccTOnmrM",
|
| 38 |
+
"complement_c3": "https://www.youtube.com/watch?v=r_f5cvxwS6w",
|
| 39 |
+
"complement_c4": "https://www.youtube.com/watch?v=r_f5cvxwS6w",
|
| 40 |
+
"copper": "https://www.youtube.com/watch?v=42kduAhoYlw",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
"cortisol": "https://www.youtube.com/watch?v=rk2b3X6CU4w",
|
| 42 |
+
"creatine_kinase": "https://www.youtube.com/watch?v=loBxjfuUVj0",
|
| 43 |
+
"creatinine": "https://www.youtube.com/watch?v=l2tf-Pxc0wU",
|
| 44 |
+
"crp": "https://www.youtube.com/watch?v=zTFDB_dk_Gk",
|
| 45 |
+
"cystatin_c": "https://www.youtube.com/watch?v=upJcuKQ9ppQ",
|
| 46 |
+
"d_dimer": "https://www.youtube.com/watch?v=uTYlwmDSFvA",
|
| 47 |
+
"dhea_s": "https://www.youtube.com/watch?v=XWn-DVX_QVE",
|
| 48 |
+
"direct_bilirubin": "https://www.youtube.com/watch?v=9RixUyMPhO0",
|
| 49 |
+
"egfr": "https://www.youtube.com/watch?v=fFn0ygOOBuI",
|
| 50 |
+
"eos_absolute": "https://www.youtube.com/watch?v=7gmKTpODT8o",
|
| 51 |
+
"eos_percent": "https://www.youtube.com/watch?v=rtnfv_2HSak",
|
| 52 |
+
"erythropoietin": "https://www.youtube.com/watch?v=wqMQjsf1YD4",
|
| 53 |
+
"esr": "https://www.youtube.com/watch?v=-ulccBGAvbY",
|
| 54 |
+
"estradiol": "https://www.youtube.com/watch?v=pOaUnf3MKs8",
|
| 55 |
+
"ferritin": "https://www.youtube.com/watch?v=aPSfIPtho08",
|
| 56 |
+
"fibrinogen": "https://www.youtube.com/watch?v=HqmRkEoUe-8",
|
| 57 |
+
"folate": "https://www.youtube.com/watch?v=dO0aUSqZ_bs",
|
| 58 |
+
"free_t3": "https://www.youtube.com/watch?v=oz8HFUqwDgw",
|
| 59 |
+
"free_t4": "https://www.youtube.com/watch?v=IHaH9mlCdVY",
|
| 60 |
+
"fructosamine": "https://www.youtube.com/watch?v=tXW-qGeTNFk",
|
| 61 |
+
"fsh": "https://www.youtube.com/watch?v=UL0PFu5fPKA",
|
| 62 |
+
"g6pd": "https://www.youtube.com/watch?v=iTh-hUU5mxE",
|
| 63 |
+
"ggt": "https://www.youtube.com/watch?v=c0uISl0fna0",
|
| 64 |
+
"globulin": "https://www.youtube.com/watch?v=EBf97p7AeZc",
|
| 65 |
+
"glucose": "https://www.youtube.com/watch?v=V4PJ7n-RDf8",
|
| 66 |
+
"gra_absolute": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 67 |
+
"haptoglobin": "https://www.youtube.com/watch?v=QR_hcSow4OI",
|
| 68 |
+
"hba1c": "https://www.youtube.com/watch?v=V4PJ7n-RDf8",
|
| 69 |
+
"hct": "https://www.youtube.com/watch?v=D5PVCKWLgXU",
|
| 70 |
+
"hdl_cholesterol": "https://www.youtube.com/watch?v=KeoZck3T824",
|
| 71 |
+
"hemoglobin": "https://www.youtube.com/watch?v=E7c4zr-FHcA",
|
| 72 |
+
"homocysteine": "https://www.youtube.com/watch?v=XbX9K1OtFFs",
|
| 73 |
+
"hs_crp": "https://www.youtube.com/watch?v=eRNFtwzyyCo",
|
| 74 |
+
"igf_1": "https://www.youtube.com/watch?v=_LKdNhF2WhI",
|
| 75 |
+
"immunoglobulin_a": "https://www.youtube.com/watch?v=pkn3qA7s-NI",
|
| 76 |
+
"immunoglobulin_e": "https://www.youtube.com/watch?v=z95-fg7bzLA",
|
| 77 |
+
"immunoglobulin_g": "https://www.youtube.com/watch?v=d_3VZ5vDiHI",
|
| 78 |
+
"immunoglobulin_m": "https://www.youtube.com/watch?v=0ztF-419fac",
|
| 79 |
+
"inr": "https://www.youtube.com/watch?v=kCz5Rde9Gp0",
|
| 80 |
"insulin": "https://www.youtube.com/watch?v=w4jHtPUNg6E",
|
| 81 |
+
"lactate": "https://www.youtube.com/watch?v=XuGPoQWzIco",
|
| 82 |
+
"ldh": "https://www.youtube.com/watch?v=cr0cnpUEYSM",
|
| 83 |
+
"ldl_cholesterol": "https://www.youtube.com/watch?v=EfdwqypYAlU",
|
| 84 |
+
"lh": "https://www.youtube.com/watch?v=JvadRkqsuvQ",
|
| 85 |
+
"lipase": "https://www.youtube.com/watch?v=gTbimcKKlKQ",
|
| 86 |
+
"lipoprotein_a": "https://www.youtube.com/watch?v=VSCtsOjQEkk",
|
| 87 |
+
"lym_absolute": "https://www.youtube.com/watch?v=RBdWjr0BNj8",
|
| 88 |
+
"lym_percent": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 89 |
+
"magnesium": "https://www.youtube.com/watch?v=AE0_1dIgVQc",
|
| 90 |
+
"mch": "https://www.youtube.com/watch?v=WiuD3wUXHgA",
|
| 91 |
+
"mchc": "https://www.youtube.com/watch?v=cZXr-91hNr8",
|
| 92 |
+
"mcv": "https://www.youtube.com/watch?v=OQoV-QpRnLk",
|
| 93 |
+
"methylmalonic_acid": "https://www.youtube.com/watch?v=ky-Mu5yVyuU",
|
| 94 |
+
"mon_absolute": "https://www.youtube.com/watch?v=se5Jy1BIJCU",
|
| 95 |
+
"mon_percent": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 96 |
+
"mpv": "https://www.youtube.com/watch?v=gvmOvYazV40",
|
| 97 |
+
"myoglobin": "https://www.youtube.com/watch?v=udVccTOnmrM",
|
| 98 |
+
"neu_absolute": "https://www.youtube.com/watch?v=Fju2R0gDTf8",
|
| 99 |
+
"neu_percent": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 100 |
+
"non_hdl_cholesterol": "https://www.youtube.com/watch?v=eoUR7J0J1cA",
|
| 101 |
+
"nt_probnp": "https://www.youtube.com/watch?v=QEt2lvWoMxA",
|
| 102 |
+
"osmolality": "https://www.youtube.com/watch?v=VofGdSeafTA",
|
| 103 |
+
"phosphate": "https://www.youtube.com/watch?v=I0-ltFTa0Sc",
|
| 104 |
+
"plt": "https://www.youtube.com/watch?v=_1ckWNEwSDA",
|
| 105 |
+
"potassium": "https://www.youtube.com/watch?v=obJk-dUbQR8",
|
| 106 |
+
"prealbumin": "https://www.youtube.com/watch?v=UP7Waa6xrCY",
|
| 107 |
+
"procalcitonin": "https://www.youtube.com/watch?v=XgvB_s-xlaQ",
|
| 108 |
+
"progesterone": "https://www.youtube.com/watch?v=A1uPKIHS4Cs",
|
| 109 |
+
"prolactin": "https://www.youtube.com/watch?v=GE85xI4WoAc",
|
| 110 |
+
"prothrombin_time": "https://www.youtube.com/watch?v=tY28cQSBy3g",
|
| 111 |
+
"psa": "https://www.youtube.com/watch?v=bTgS0DuhaUU",
|
| 112 |
"pth": "https://www.youtube.com/watch?v=y64aXKCkHk4",
|
| 113 |
+
"rbc": "https://www.youtube.com/watch?v=Ho_hsOrdBQQ",
|
| 114 |
+
"rdw_cv": "https://www.youtube.com/watch?v=fdlLgdgywlU",
|
| 115 |
+
"rdw_sd": "https://www.youtube.com/watch?v=fdlLgdgywlU",
|
| 116 |
+
"reticulocyte_count": "https://www.youtube.com/watch?v=vfw2rPn_SuM",
|
| 117 |
+
"rheumatoid_factor": "https://www.youtube.com/watch?v=EB5zxdAQGzU",
|
| 118 |
+
"selenium": "https://www.youtube.com/watch?v=BSeV79orP6I",
|
| 119 |
+
"serum_iron": "https://www.youtube.com/watch?v=KnKTgmAu0Pc",
|
| 120 |
+
"shbg": "https://www.youtube.com/watch?v=MBhQR-WzqUg",
|
| 121 |
+
"sodium": "https://www.youtube.com/watch?v=Qzct2Qmjo8c",
|
| 122 |
+
"testosterone": "https://www.youtube.com/watch?v=MBhQR-WzqUg",
|
| 123 |
+
"thyroglobulin_antibodies": "https://www.youtube.com/watch?v=q6LzDINcqDM",
|
| 124 |
+
"tibc": "https://www.youtube.com/watch?v=YczPj71BFPY",
|
| 125 |
+
"total_bilirubin": "https://www.youtube.com/watch?v=Aew1gWVLYNU",
|
| 126 |
+
"total_cholesterol": "https://www.youtube.com/watch?v=_SGyJU9BL6o",
|
| 127 |
+
"total_protein": "https://www.youtube.com/watch?v=V-yepa6wLT4",
|
| 128 |
+
"total_t3": "https://www.youtube.com/watch?v=SVth4eAKlY8",
|
| 129 |
+
"total_t4": "https://www.youtube.com/watch?v=0QrcY2IV7No",
|
| 130 |
+
"transferrin": "https://www.youtube.com/watch?v=j9mR9luWBQY",
|
| 131 |
+
"transferrin_saturation": "https://www.youtube.com/watch?v=_ziD0NbFjkM",
|
| 132 |
+
"triglycerides": "https://www.youtube.com/watch?v=rOiLRsWhwsQ",
|
| 133 |
+
"troponin_i": "https://www.youtube.com/watch?v=udVccTOnmrM",
|
| 134 |
+
"tsh": "https://www.youtube.com/watch?v=Udaqw1gtKvc",
|
| 135 |
+
"tsh_receptor_antibodies": "https://www.youtube.com/watch?v=lKIhKsljksk",
|
| 136 |
+
"uric_acid": "https://www.youtube.com/watch?v=bznoU5bke4U",
|
| 137 |
+
"vitamin_a": "https://www.youtube.com/watch?v=QcsiBH_j2MA",
|
| 138 |
+
"vitamin_b12": "https://www.youtube.com/watch?v=CUh5Flt4n1k",
|
| 139 |
+
"vitamin_d": "https://www.youtube.com/watch?v=YEnxruA-bsk",
|
| 140 |
+
"vitamin_e": "https://www.youtube.com/watch?v=QcsiBH_j2MA",
|
| 141 |
+
"wbc": "https://www.youtube.com/watch?v=VUAVvLkcN0M",
|
| 142 |
+
"zinc": "https://www.youtube.com/watch?v=BSeV79orP6I"
|
| 143 |
},
|
| 144 |
"notes": {
|
| 145 |
+
"alpha_fetoprotein": "Tumor-marker overview covers AFP with other markers.",
|
| 146 |
+
"androstenedione": "PCOS lab overview includes androgen-marker context.",
|
| 147 |
+
"anti_ccp_antibodies": "Rheumatoid arthritis overview; anti-CCP is correlated through RA evaluation.",
|
| 148 |
+
"anti_mullerian_hormone": "Fertility hormone-testing overview includes AMH and ovarian-reserve timing.",
|
| 149 |
+
"ast": "AST/ALT lab-values video covers AST directly alongside ALT.",
|
| 150 |
+
"beta_hcg": "Reproductive-cycle overview is a broad pregnancy/reproductive hormone context; beta-hCG is not the primary topic.",
|
| 151 |
+
"beta_hydroxybutyrate": "Diabetes/DKA overview covers ketone production; beta-hydroxybutyrate is not the only focus.",
|
| 152 |
+
"ca_125": "Tumor-marker overview covers CA-125 with other markers.",
|
| 153 |
+
"ca_15_3": "Direct CA 15-3 blood-test video; marker is for monitoring context rather than diagnosis.",
|
| 154 |
+
"cea": "Tumor-marker overview covers CEA with other markers.",
|
| 155 |
+
"ceruloplasmin": "Trace-mineral/copper overview; ceruloplasmin is linked to copper interpretation.",
|
| 156 |
+
"copper": "Trace-mineral lab overview covering copper among other minerals.",
|
| 157 |
+
"free_t3": "Free T3/Free T4 video focuses on free thyroid hormones together.",
|
| 158 |
+
"fructosamine": "Diabetes overview; fructosamine is a shorter-term glycemic marker and is not the primary topic.",
|
| 159 |
+
"gra_absolute": "WBC differential overview; granulocyte absolute combines neutrophils, eosinophils, and basophils.",
|
| 160 |
+
"hct": "Hemoglobin/Hematocrit lab-values video covers hematocrit directly alongside hemoglobin.",
|
| 161 |
+
"hdl_cholesterol": "HDL/LDL cholesterol video focuses on HDL in direct lipid-marker context.",
|
| 162 |
+
"immunoglobulin_m": "IgG/IgM antibody-testing video covers IgM directly alongside IgG.",
|
| 163 |
+
"mcv": "Anemia interpretation video uses MCV directly; also discusses MCH context.",
|
| 164 |
"mpv": "FBC/CBC guide covers platelets; MPV is not discussed in detail.",
|
| 165 |
+
"myoglobin": "Cardiac biomarker overview covers myoglobin with troponin and CK-MB.",
|
| 166 |
+
"nt_probnp": "Heart-failure overview; NT-proBNP is a heart-strain marker like BNP but not the primary title.",
|
| 167 |
+
"procalcitonin": "Sepsis lecture focuses on lactate; PCT is not the primary topic.",
|
| 168 |
+
"selenium": "Trace-mineral lab overview covering selenium among other minerals.",
|
| 169 |
+
"serum_iron": "Iron blood-test video covers serum iron with related iron-panel markers.",
|
| 170 |
+
"total_cholesterol": "Total cholesterol lab-values video also covers triglycerides, but total cholesterol is a primary topic.",
|
| 171 |
+
"total_t4": "T3/T4 lab-values video covers total thyroid hormones together.",
|
| 172 |
+
"tsh_receptor_antibodies": "Graves/hyperthyroidism overview; TRAb is discussed as thyroid autoimmunity context rather than as a standalone lab lecture.",
|
| 173 |
+
"vitamin_e": "Fat-soluble vitamin overview covering vitamin E with vitamins A/D/K.",
|
| 174 |
+
"zinc": "Trace-mineral lab overview covering zinc among other minerals."
|
| 175 |
}
|
| 176 |
}
|
scripts/expand_lab_knowledge_graph.py
CHANGED
|
@@ -30,6 +30,9 @@ MARKER_IDS: dict[str, str] = {
|
|
| 30 |
"Absolute Eosinophil Count": "eos_absolute",
|
| 31 |
"Absolute Basophil Count": "bas_absolute",
|
| 32 |
"Reticulocyte Count": "reticulocyte_count",
|
|
|
|
|
|
|
|
|
|
| 33 |
"Glucose": "glucose",
|
| 34 |
"Creatinine": "creatinine",
|
| 35 |
"eGFR": "egfr",
|
|
@@ -48,15 +51,20 @@ MARKER_IDS: dict[str, str] = {
|
|
| 48 |
"Uric Acid": "uric_acid",
|
| 49 |
"Serum Iron": "serum_iron",
|
| 50 |
"TIBC": "tibc",
|
|
|
|
| 51 |
"Transferrin Saturation": "transferrin_saturation",
|
| 52 |
"LDH": "ldh",
|
| 53 |
"Osmolality": "osmolality",
|
| 54 |
"Ammonia": "ammonia",
|
| 55 |
"Lactate": "lactate",
|
| 56 |
"Homocysteine": "homocysteine",
|
|
|
|
| 57 |
"Cystatin C": "cystatin_c",
|
| 58 |
"Prealbumin": "prealbumin",
|
| 59 |
"Beta-2 Microglobulin": "beta_2_microglobulin",
|
|
|
|
|
|
|
|
|
|
| 60 |
"HbA1c": "hba1c",
|
| 61 |
"ALT": "alt",
|
| 62 |
"AST": "ast",
|
|
@@ -80,9 +88,16 @@ MARKER_IDS: dict[str, str] = {
|
|
| 80 |
"Total T4": "total_t4",
|
| 81 |
"Total T3": "total_t3",
|
| 82 |
"Anti-TPO Antibodies": "anti_tpo_antibodies",
|
|
|
|
|
|
|
| 83 |
"Vitamin D": "vitamin_d",
|
| 84 |
"Vitamin B12": "vitamin_b12",
|
| 85 |
"Ferritin": "ferritin",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
"Prothrombin Time": "prothrombin_time",
|
| 87 |
"INR": "inr",
|
| 88 |
"aPTT": "aptt",
|
|
@@ -95,10 +110,17 @@ MARKER_IDS: dict[str, str] = {
|
|
| 95 |
"Complement C3": "complement_c3",
|
| 96 |
"Complement C4": "complement_c4",
|
| 97 |
"Rheumatoid Factor": "rheumatoid_factor",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
"BNP": "bnp",
|
|
|
|
| 99 |
"Troponin I": "troponin_i",
|
| 100 |
"Creatine Kinase": "creatine_kinase",
|
| 101 |
"CK-MB": "ck_mb",
|
|
|
|
| 102 |
"Cortisol": "cortisol",
|
| 103 |
"Insulin": "insulin",
|
| 104 |
"Testosterone": "testosterone",
|
|
@@ -109,15 +131,24 @@ MARKER_IDS: dict[str, str] = {
|
|
| 109 |
"Progesterone": "progesterone",
|
| 110 |
"Parathyroid Hormone": "pth",
|
| 111 |
"ACTH": "acth",
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
"SHBG": "shbg",
|
| 113 |
"IGF-1": "igf_1",
|
| 114 |
"PSA": "psa",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
"Folate": "folate",
|
| 116 |
"Vitamin A": "vitamin_a",
|
| 117 |
}
|
| 118 |
|
| 119 |
EXTRA_ALIAS_UPDATES: dict[str, list[str]] = {
|
| 120 |
-
"gra_absolute": ["
|
| 121 |
"neu_absolute": ["ANC", "Absolute Neutrophil Count", "Abs Neutrophils", "Neutrophils Absolute"],
|
| 122 |
"mon_absolute": ["AMC", "Absolute Monocyte Count", "Abs Monocytes", "Monocytes Absolute"],
|
| 123 |
"eos_absolute": ["AEC", "Absolute Eosinophil Count", "Abs Eosinophils", "Eosinophils Absolute"],
|
|
@@ -335,9 +366,9 @@ def _why_important(name: str, kb_entry: Any) -> str:
|
|
| 335 |
return f"Abnormal {name} values can be clinically meaningful and should be interpreted with symptoms, history, and related tests."
|
| 336 |
parts = []
|
| 337 |
if kb_entry.high:
|
| 338 |
-
parts.append(
|
| 339 |
if kb_entry.low:
|
| 340 |
-
parts.append(
|
| 341 |
return " ".join(parts) if parts else f"{name} helps clinicians evaluate related organ systems and disease patterns."
|
| 342 |
|
| 343 |
|
|
@@ -376,6 +407,27 @@ def _merge_aliases(test: dict[str, Any], extra: list[str]) -> None:
|
|
| 376 |
test["aliases"] = aliases
|
| 377 |
|
| 378 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 379 |
def main() -> None:
|
| 380 |
import sys
|
| 381 |
|
|
@@ -396,7 +448,7 @@ def main() -> None:
|
|
| 396 |
kb_entry = KB.get(marker.name)
|
| 397 |
if test_id in existing_by_id:
|
| 398 |
test = existing_by_id[test_id]
|
| 399 |
-
test
|
| 400 |
_merge_aliases(test, list(marker.aliases))
|
| 401 |
continue
|
| 402 |
existing_by_id[test_id] = _build_test(marker, test_id, video_url, kb_entry)
|
|
@@ -406,6 +458,17 @@ def main() -> None:
|
|
| 406 |
if legacy_id in existing_by_id:
|
| 407 |
existing_by_id[legacy_id]["video_url"] = videos.get(legacy_id, existing_by_id[legacy_id].get("video_url", ""))
|
| 408 |
_merge_aliases(existing_by_id[legacy_id], EXTRA_ALIAS_UPDATES.get(legacy_id, []))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 409 |
|
| 410 |
for test_id, extra_aliases in EXTRA_ALIAS_UPDATES.items():
|
| 411 |
if test_id in existing_by_id:
|
|
|
|
| 30 |
"Absolute Eosinophil Count": "eos_absolute",
|
| 31 |
"Absolute Basophil Count": "bas_absolute",
|
| 32 |
"Reticulocyte Count": "reticulocyte_count",
|
| 33 |
+
"Haptoglobin": "haptoglobin",
|
| 34 |
+
"G6PD": "g6pd",
|
| 35 |
+
"Erythropoietin": "erythropoietin",
|
| 36 |
"Glucose": "glucose",
|
| 37 |
"Creatinine": "creatinine",
|
| 38 |
"eGFR": "egfr",
|
|
|
|
| 51 |
"Uric Acid": "uric_acid",
|
| 52 |
"Serum Iron": "serum_iron",
|
| 53 |
"TIBC": "tibc",
|
| 54 |
+
"Transferrin": "transferrin",
|
| 55 |
"Transferrin Saturation": "transferrin_saturation",
|
| 56 |
"LDH": "ldh",
|
| 57 |
"Osmolality": "osmolality",
|
| 58 |
"Ammonia": "ammonia",
|
| 59 |
"Lactate": "lactate",
|
| 60 |
"Homocysteine": "homocysteine",
|
| 61 |
+
"Methylmalonic Acid": "methylmalonic_acid",
|
| 62 |
"Cystatin C": "cystatin_c",
|
| 63 |
"Prealbumin": "prealbumin",
|
| 64 |
"Beta-2 Microglobulin": "beta_2_microglobulin",
|
| 65 |
+
"C-Peptide": "c_peptide",
|
| 66 |
+
"Fructosamine": "fructosamine",
|
| 67 |
+
"Beta-Hydroxybutyrate": "beta_hydroxybutyrate",
|
| 68 |
"HbA1c": "hba1c",
|
| 69 |
"ALT": "alt",
|
| 70 |
"AST": "ast",
|
|
|
|
| 88 |
"Total T4": "total_t4",
|
| 89 |
"Total T3": "total_t3",
|
| 90 |
"Anti-TPO Antibodies": "anti_tpo_antibodies",
|
| 91 |
+
"TSH Receptor Antibodies": "tsh_receptor_antibodies",
|
| 92 |
+
"Thyroglobulin Antibodies": "thyroglobulin_antibodies",
|
| 93 |
"Vitamin D": "vitamin_d",
|
| 94 |
"Vitamin B12": "vitamin_b12",
|
| 95 |
"Ferritin": "ferritin",
|
| 96 |
+
"Zinc": "zinc",
|
| 97 |
+
"Copper": "copper",
|
| 98 |
+
"Ceruloplasmin": "ceruloplasmin",
|
| 99 |
+
"Selenium": "selenium",
|
| 100 |
+
"Vitamin E": "vitamin_e",
|
| 101 |
"Prothrombin Time": "prothrombin_time",
|
| 102 |
"INR": "inr",
|
| 103 |
"aPTT": "aptt",
|
|
|
|
| 110 |
"Complement C3": "complement_c3",
|
| 111 |
"Complement C4": "complement_c4",
|
| 112 |
"Rheumatoid Factor": "rheumatoid_factor",
|
| 113 |
+
"Anti-CCP Antibodies": "anti_ccp_antibodies",
|
| 114 |
+
"Immunoglobulin G": "immunoglobulin_g",
|
| 115 |
+
"Immunoglobulin A": "immunoglobulin_a",
|
| 116 |
+
"Immunoglobulin M": "immunoglobulin_m",
|
| 117 |
+
"Immunoglobulin E": "immunoglobulin_e",
|
| 118 |
"BNP": "bnp",
|
| 119 |
+
"NT-proBNP": "nt_probnp",
|
| 120 |
"Troponin I": "troponin_i",
|
| 121 |
"Creatine Kinase": "creatine_kinase",
|
| 122 |
"CK-MB": "ck_mb",
|
| 123 |
+
"Myoglobin": "myoglobin",
|
| 124 |
"Cortisol": "cortisol",
|
| 125 |
"Insulin": "insulin",
|
| 126 |
"Testosterone": "testosterone",
|
|
|
|
| 131 |
"Progesterone": "progesterone",
|
| 132 |
"Parathyroid Hormone": "pth",
|
| 133 |
"ACTH": "acth",
|
| 134 |
+
"DHEA-S": "dhea_s",
|
| 135 |
+
"Androstenedione": "androstenedione",
|
| 136 |
+
"Anti-Mullerian Hormone": "anti_mullerian_hormone",
|
| 137 |
+
"Beta-hCG": "beta_hcg",
|
| 138 |
"SHBG": "shbg",
|
| 139 |
"IGF-1": "igf_1",
|
| 140 |
"PSA": "psa",
|
| 141 |
+
"CEA": "cea",
|
| 142 |
+
"CA-125": "ca_125",
|
| 143 |
+
"CA 19-9": "ca_19_9",
|
| 144 |
+
"Alpha-Fetoprotein": "alpha_fetoprotein",
|
| 145 |
+
"CA 15-3": "ca_15_3",
|
| 146 |
"Folate": "folate",
|
| 147 |
"Vitamin A": "vitamin_a",
|
| 148 |
}
|
| 149 |
|
| 150 |
EXTRA_ALIAS_UPDATES: dict[str, list[str]] = {
|
| 151 |
+
"gra_absolute": ["Absolute Granulocyte Count", "Granulocytes Absolute", "Abs Granulocytes"],
|
| 152 |
"neu_absolute": ["ANC", "Absolute Neutrophil Count", "Abs Neutrophils", "Neutrophils Absolute"],
|
| 153 |
"mon_absolute": ["AMC", "Absolute Monocyte Count", "Abs Monocytes", "Monocytes Absolute"],
|
| 154 |
"eos_absolute": ["AEC", "Absolute Eosinophil Count", "Abs Eosinophils", "Eosinophils Absolute"],
|
|
|
|
| 366 |
return f"Abnormal {name} values can be clinically meaningful and should be interpreted with symptoms, history, and related tests."
|
| 367 |
parts = []
|
| 368 |
if kb_entry.high:
|
| 369 |
+
parts.append(kb_entry.high)
|
| 370 |
if kb_entry.low:
|
| 371 |
+
parts.append(kb_entry.low)
|
| 372 |
return " ".join(parts) if parts else f"{name} helps clinicians evaluate related organ systems and disease patterns."
|
| 373 |
|
| 374 |
|
|
|
|
| 407 |
test["aliases"] = aliases
|
| 408 |
|
| 409 |
|
| 410 |
+
def _remove_aliases(test: dict[str, Any], stale: set[str]) -> None:
|
| 411 |
+
test["aliases"] = [alias for alias in test.get("aliases", []) if alias.casefold() not in stale]
|
| 412 |
+
|
| 413 |
+
|
| 414 |
+
def _refresh_generated_fields(test: dict[str, Any], marker: Any, test_id: str, video_url: str, kb_entry: Any) -> None:
|
| 415 |
+
rebuilt = _build_test(marker, test_id, video_url, kb_entry)
|
| 416 |
+
for key in (
|
| 417 |
+
"display_name",
|
| 418 |
+
"category",
|
| 419 |
+
"unit",
|
| 420 |
+
"description",
|
| 421 |
+
"why_important",
|
| 422 |
+
"sex_significance",
|
| 423 |
+
"instructions_to_improve",
|
| 424 |
+
"statistics_per_group_age",
|
| 425 |
+
"video_url",
|
| 426 |
+
):
|
| 427 |
+
test[key] = rebuilt[key]
|
| 428 |
+
_merge_aliases(test, rebuilt["aliases"])
|
| 429 |
+
|
| 430 |
+
|
| 431 |
def main() -> None:
|
| 432 |
import sys
|
| 433 |
|
|
|
|
| 448 |
kb_entry = KB.get(marker.name)
|
| 449 |
if test_id in existing_by_id:
|
| 450 |
test = existing_by_id[test_id]
|
| 451 |
+
_refresh_generated_fields(test, marker, test_id, video_url, kb_entry)
|
| 452 |
_merge_aliases(test, list(marker.aliases))
|
| 453 |
continue
|
| 454 |
existing_by_id[test_id] = _build_test(marker, test_id, video_url, kb_entry)
|
|
|
|
| 458 |
if legacy_id in existing_by_id:
|
| 459 |
existing_by_id[legacy_id]["video_url"] = videos.get(legacy_id, existing_by_id[legacy_id].get("video_url", ""))
|
| 460 |
_merge_aliases(existing_by_id[legacy_id], EXTRA_ALIAS_UPDATES.get(legacy_id, []))
|
| 461 |
+
if legacy_id == "gra_absolute":
|
| 462 |
+
_remove_aliases(
|
| 463 |
+
existing_by_id[legacy_id],
|
| 464 |
+
{
|
| 465 |
+
"anc",
|
| 466 |
+
"anc when neutrophil-dominant",
|
| 467 |
+
"absolute neutrophil count",
|
| 468 |
+
"abs neutrophils",
|
| 469 |
+
"neutrophils absolute",
|
| 470 |
+
},
|
| 471 |
+
)
|
| 472 |
|
| 473 |
for test_id, extra_aliases in EXTRA_ALIAS_UPDATES.items():
|
| 474 |
if test_id in existing_by_id:
|
src/markers.py
CHANGED
|
@@ -69,6 +69,9 @@ MARKERS: tuple[Marker, ...] = (
|
|
| 69 |
Marker("Absolute Eosinophil Count", "10^3/uL", 0, 0.5, "CBC", "count of allergy and parasite-related white cells", ("AEC", "Eosinophils Absolute", "Abs Eosinophils")),
|
| 70 |
Marker("Absolute Basophil Count", "10^3/uL", 0, 0.2, "CBC", "count of histamine-related white cells", ("ABC", "Basophils Absolute", "Abs Basophils")),
|
| 71 |
Marker("Reticulocyte Count", "%", 0.5, 2.5, "CBC", "young red cells recently released from bone marrow", ("Retic Count", "Retics")),
|
|
|
|
|
|
|
|
|
|
| 72 |
# --- Metabolic panel ---
|
| 73 |
Marker("Glucose", "mg/dL", 70, 99, "Metabolic", "blood sugar level", ("Fasting Glucose", "GLU", "Blood Sugar", "FBS", "RBS", "Fasting Blood Sugar")),
|
| 74 |
Marker("Creatinine", "mg/dL", 0.7, 1.3, "Metabolic", "kidney-function waste product", ("Cr", "Serum Creatinine")),
|
|
@@ -88,15 +91,20 @@ MARKERS: tuple[Marker, ...] = (
|
|
| 88 |
Marker("Uric Acid", "mg/dL", 3.5, 7.2, "Metabolic", "breakdown product of purines; linked to gout", ("UA", "Urate")),
|
| 89 |
Marker("Serum Iron", "mcg/dL", 60, 170, "Metabolic", "circulating iron available for red-cell production", ("Iron", "Fe", "Iron, Serum")),
|
| 90 |
Marker("TIBC", "mcg/dL", 250, 450, "Metabolic", "blood's capacity to bind and transport iron", ("Total Iron Binding Capacity", "Iron Binding Capacity")),
|
|
|
|
| 91 |
Marker("Transferrin Saturation", "%", 20, 50, "Metabolic", "percent of iron-binding sites occupied", ("TSAT", "Iron Saturation")),
|
| 92 |
Marker("LDH", "U/L", 140, 280, "Metabolic", "enzyme released when cells are damaged", ("Lactate Dehydrogenase",)),
|
| 93 |
Marker("Osmolality", "mOsm/kg", 275, 295, "Metabolic", "concentration of particles in the blood", ("Serum Osmolality",)),
|
| 94 |
Marker("Ammonia", "mcg/dL", 15, 45, "Metabolic", "waste product processed by the liver", ("NH3", "Blood Ammonia")),
|
| 95 |
Marker("Lactate", "mmol/L", 0.5, 2.0, "Metabolic", "byproduct of anaerobic metabolism", ("Lactic Acid", "Lactate, Blood")),
|
| 96 |
Marker("Homocysteine", "umol/L", 5, 15, "Metabolic", "amino acid linked to B-vitamin status and vascular risk", ("Hcy",)),
|
|
|
|
| 97 |
Marker("Cystatin C", "mg/L", 0.53, 0.95, "Metabolic", "kidney-function marker less affected by muscle mass", ("CysC",)),
|
| 98 |
Marker("Prealbumin", "mg/dL", 20, 40, "Metabolic", "short-lived protein reflecting recent nutrition", ("Transthyretin",)),
|
| 99 |
Marker("Beta-2 Microglobulin", "mg/L", 0.7, 1.8, "Metabolic", "small protein from cell turnover; kidney and immune marker", ("B2M", "β2-Microglobulin")),
|
|
|
|
|
|
|
|
|
|
| 100 |
# --- Liver enzymes ---
|
| 101 |
Marker("ALT", "U/L", 7, 56, "Liver", "liver enzyme released when liver cells are stressed", ("Alanine Aminotransferase", "SGPT")),
|
| 102 |
Marker("AST", "U/L", 10, 40, "Liver", "enzyme from liver and muscle cells", ("Aspartate Aminotransferase", "SGOT")),
|
|
@@ -122,10 +130,17 @@ MARKERS: tuple[Marker, ...] = (
|
|
| 122 |
Marker("Total T4", "mcg/dL", 4.5, 12.0, "Thyroid", "total thyroxine including bound and free", ("T4", "Thyroxine")),
|
| 123 |
Marker("Total T3", "ng/dL", 80, 200, "Thyroid", "total triiodothyronine including bound and free", ("T3", "Triiodothyronine")),
|
| 124 |
Marker("Anti-TPO Antibodies", "IU/mL", None, 35, "Thyroid", "antibodies against thyroid peroxidase", ("TPO Antibodies", "Thyroid Peroxidase Antibodies", "Anti-TPO")),
|
|
|
|
|
|
|
| 125 |
# --- Vitamins / iron ---
|
| 126 |
Marker("Vitamin D", "ng/mL", 30, 100, "Vitamin", "vitamin for bone and immune health", ("25-OH Vitamin D", "25-Hydroxyvitamin D", "Vit D")),
|
| 127 |
Marker("Vitamin B12", "pg/mL", 200, 900, "Vitamin", "vitamin for nerves and red-cell production", ("B12", "Cobalamin")),
|
| 128 |
Marker("Ferritin", "ng/mL", 30, 400, "Vitamin", "stored-iron protein", ("FERR",)),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 129 |
Marker("HbA1c", "%", 4.0, 5.6, "Metabolic", "average blood sugar over ~3 months", ("A1c", "Hemoglobin A1c", "Glycated Hemoglobin")),
|
| 130 |
# --- Coagulation ---
|
| 131 |
Marker("Prothrombin Time", "seconds", 11, 13.5, "Coagulation", "time for the clotting cascade to form fibrin", ("PT",)),
|
|
@@ -141,11 +156,18 @@ MARKERS: tuple[Marker, ...] = (
|
|
| 141 |
Marker("Complement C3", "mg/dL", 90, 180, "Inflammation", "complement protein in immune activation", ("C3",)),
|
| 142 |
Marker("Complement C4", "mg/dL", 10, 40, "Inflammation", "complement protein in immune activation", ("C4",)),
|
| 143 |
Marker("Rheumatoid Factor", "IU/mL", None, 14, "Inflammation", "antibody sometimes seen in autoimmune arthritis", ("RF",)),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 144 |
# --- Cardiac ---
|
| 145 |
Marker("BNP", "pg/mL", None, 100, "Cardiac", "hormone released when the heart is stretched", ("B-Type Natriuretic Peptide", "Brain Natriuretic Peptide")),
|
|
|
|
| 146 |
Marker("Troponin I", "ng/mL", None, 0.04, "Cardiac", "heart-muscle protein released with injury", ("TnI", "High-Sensitivity Troponin I")),
|
| 147 |
Marker("Creatine Kinase", "U/L", 30, 200, "Cardiac", "enzyme from muscle including heart and skeletal", ("CK", "CPK", "Creatine Phosphokinase")),
|
| 148 |
Marker("CK-MB", "ng/mL", None, 5, "Cardiac", "heart-enriched fraction of creatine kinase", ("CKMB", "Creatine Kinase-MB")),
|
|
|
|
| 149 |
# --- Hormones ---
|
| 150 |
Marker("Cortisol", "mcg/dL", 6, 18, "Hormone", "stress hormone from the adrenal glands", ("AM Cortisol", "Serum Cortisol")),
|
| 151 |
Marker("Insulin", "uIU/mL", 2.6, 24.9, "Hormone", "hormone that lowers blood sugar", ("Fasting Insulin",)),
|
|
@@ -157,10 +179,19 @@ MARKERS: tuple[Marker, ...] = (
|
|
| 157 |
Marker("Progesterone", "ng/mL", 0.2, 25, "Hormone", "hormone that supports the uterine lining", ("P4",)),
|
| 158 |
Marker("Parathyroid Hormone", "pg/mL", 15, 65, "Hormone", "hormone that regulates blood calcium", ("PTH", "Intact PTH")),
|
| 159 |
Marker("ACTH", "pg/mL", 7, 63, "Hormone", "pituitary signal that drives cortisol production", ("Adrenocorticotropic Hormone",)),
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
Marker("SHBG", "nmol/L", 10, 80, "Hormone", "protein that binds sex hormones in the blood", ("Sex Hormone Binding Globulin",)),
|
| 161 |
Marker("IGF-1", "ng/mL", 115, 355, "Hormone", "growth factor reflecting growth-hormone activity", ("Insulin-Like Growth Factor 1", "Somatomedin C")),
|
| 162 |
# --- Oncology / screening ---
|
| 163 |
Marker("PSA", "ng/mL", None, 4.0, "Oncology", "prostate-specific protein used in screening", ("Prostate Specific Antigen",)),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
# --- Vitamins / iron (continued) ---
|
| 165 |
Marker("Folate", "ng/mL", 3, 20, "Vitamin", "B vitamin needed for DNA and red-cell production", ("Folic Acid", "Serum Folate")),
|
| 166 |
Marker("Vitamin A", "mcg/dL", 30, 65, "Vitamin", "fat-soluble vitamin for vision and immunity", ("Retinol",)),
|
|
|
|
| 69 |
Marker("Absolute Eosinophil Count", "10^3/uL", 0, 0.5, "CBC", "count of allergy and parasite-related white cells", ("AEC", "Eosinophils Absolute", "Abs Eosinophils")),
|
| 70 |
Marker("Absolute Basophil Count", "10^3/uL", 0, 0.2, "CBC", "count of histamine-related white cells", ("ABC", "Basophils Absolute", "Abs Basophils")),
|
| 71 |
Marker("Reticulocyte Count", "%", 0.5, 2.5, "CBC", "young red cells recently released from bone marrow", ("Retic Count", "Retics")),
|
| 72 |
+
Marker("Haptoglobin", "mg/dL", 30, 200, "CBC", "protein that binds free hemoglobin after red-cell breakdown", ("HP",)),
|
| 73 |
+
Marker("G6PD", "U/g Hb", 5.5, 20.5, "CBC", "red-cell enzyme that protects against oxidative stress", ("Glucose-6-Phosphate Dehydrogenase", "G6PDH")),
|
| 74 |
+
Marker("Erythropoietin", "mIU/mL", 4, 27, "CBC", "kidney hormone that stimulates red-cell production", ("EPO",)),
|
| 75 |
# --- Metabolic panel ---
|
| 76 |
Marker("Glucose", "mg/dL", 70, 99, "Metabolic", "blood sugar level", ("Fasting Glucose", "GLU", "Blood Sugar", "FBS", "RBS", "Fasting Blood Sugar")),
|
| 77 |
Marker("Creatinine", "mg/dL", 0.7, 1.3, "Metabolic", "kidney-function waste product", ("Cr", "Serum Creatinine")),
|
|
|
|
| 91 |
Marker("Uric Acid", "mg/dL", 3.5, 7.2, "Metabolic", "breakdown product of purines; linked to gout", ("UA", "Urate")),
|
| 92 |
Marker("Serum Iron", "mcg/dL", 60, 170, "Metabolic", "circulating iron available for red-cell production", ("Iron", "Fe", "Iron, Serum")),
|
| 93 |
Marker("TIBC", "mcg/dL", 250, 450, "Metabolic", "blood's capacity to bind and transport iron", ("Total Iron Binding Capacity", "Iron Binding Capacity")),
|
| 94 |
+
Marker("Transferrin", "mg/dL", 200, 360, "Metabolic", "main blood protein that transports iron", ("TRF",)),
|
| 95 |
Marker("Transferrin Saturation", "%", 20, 50, "Metabolic", "percent of iron-binding sites occupied", ("TSAT", "Iron Saturation")),
|
| 96 |
Marker("LDH", "U/L", 140, 280, "Metabolic", "enzyme released when cells are damaged", ("Lactate Dehydrogenase",)),
|
| 97 |
Marker("Osmolality", "mOsm/kg", 275, 295, "Metabolic", "concentration of particles in the blood", ("Serum Osmolality",)),
|
| 98 |
Marker("Ammonia", "mcg/dL", 15, 45, "Metabolic", "waste product processed by the liver", ("NH3", "Blood Ammonia")),
|
| 99 |
Marker("Lactate", "mmol/L", 0.5, 2.0, "Metabolic", "byproduct of anaerobic metabolism", ("Lactic Acid", "Lactate, Blood")),
|
| 100 |
Marker("Homocysteine", "umol/L", 5, 15, "Metabolic", "amino acid linked to B-vitamin status and vascular risk", ("Hcy",)),
|
| 101 |
+
Marker("Methylmalonic Acid", "nmol/L", None, 378, "Metabolic", "functional marker of vitamin B12 activity", ("MMA",)),
|
| 102 |
Marker("Cystatin C", "mg/L", 0.53, 0.95, "Metabolic", "kidney-function marker less affected by muscle mass", ("CysC",)),
|
| 103 |
Marker("Prealbumin", "mg/dL", 20, 40, "Metabolic", "short-lived protein reflecting recent nutrition", ("Transthyretin",)),
|
| 104 |
Marker("Beta-2 Microglobulin", "mg/L", 0.7, 1.8, "Metabolic", "small protein from cell turnover; kidney and immune marker", ("B2M", "β2-Microglobulin")),
|
| 105 |
+
Marker("C-Peptide", "ng/mL", 0.5, 2.0, "Metabolic", "pancreatic insulin production marker", ("C Peptide", "Connecting Peptide")),
|
| 106 |
+
Marker("Fructosamine", "umol/L", 205, 285, "Metabolic", "shorter-term average blood sugar marker", ("Glycated Serum Protein",)),
|
| 107 |
+
Marker("Beta-Hydroxybutyrate", "mmol/L", 0, 0.4, "Metabolic", "main blood ketone body", ("BHB", "β-Hydroxybutyrate", "3-Hydroxybutyrate")),
|
| 108 |
# --- Liver enzymes ---
|
| 109 |
Marker("ALT", "U/L", 7, 56, "Liver", "liver enzyme released when liver cells are stressed", ("Alanine Aminotransferase", "SGPT")),
|
| 110 |
Marker("AST", "U/L", 10, 40, "Liver", "enzyme from liver and muscle cells", ("Aspartate Aminotransferase", "SGOT")),
|
|
|
|
| 130 |
Marker("Total T4", "mcg/dL", 4.5, 12.0, "Thyroid", "total thyroxine including bound and free", ("T4", "Thyroxine")),
|
| 131 |
Marker("Total T3", "ng/dL", 80, 200, "Thyroid", "total triiodothyronine including bound and free", ("T3", "Triiodothyronine")),
|
| 132 |
Marker("Anti-TPO Antibodies", "IU/mL", None, 35, "Thyroid", "antibodies against thyroid peroxidase", ("TPO Antibodies", "Thyroid Peroxidase Antibodies", "Anti-TPO")),
|
| 133 |
+
Marker("TSH Receptor Antibodies", "IU/L", None, 1.75, "Thyroid", "antibodies that can stimulate or block the TSH receptor", ("TRAb", "TSH-R Ab")),
|
| 134 |
+
Marker("Thyroglobulin Antibodies", "IU/mL", None, 4, "Thyroid", "antibodies against thyroglobulin", ("TgAb", "Anti-Thyroglobulin Antibodies")),
|
| 135 |
# --- Vitamins / iron ---
|
| 136 |
Marker("Vitamin D", "ng/mL", 30, 100, "Vitamin", "vitamin for bone and immune health", ("25-OH Vitamin D", "25-Hydroxyvitamin D", "Vit D")),
|
| 137 |
Marker("Vitamin B12", "pg/mL", 200, 900, "Vitamin", "vitamin for nerves and red-cell production", ("B12", "Cobalamin")),
|
| 138 |
Marker("Ferritin", "ng/mL", 30, 400, "Vitamin", "stored-iron protein", ("FERR",)),
|
| 139 |
+
Marker("Zinc", "mcg/dL", 60, 130, "Vitamin", "trace mineral involved in immunity and wound healing", ("Zn",)),
|
| 140 |
+
Marker("Copper", "mcg/dL", 70, 140, "Vitamin", "trace mineral involved in blood, nerves, and enzymes", ("Cu",)),
|
| 141 |
+
Marker("Ceruloplasmin", "mg/dL", 20, 35, "Vitamin", "copper-carrying protein made by the liver", ("CP",)),
|
| 142 |
+
Marker("Selenium", "mcg/L", 70, 150, "Vitamin", "trace mineral used in antioxidant and thyroid-related enzymes", ("Se",)),
|
| 143 |
+
Marker("Vitamin E", "mg/L", 5.5, 17, "Vitamin", "fat-soluble antioxidant vitamin", ("Alpha-Tocopherol", "Tocopherol")),
|
| 144 |
Marker("HbA1c", "%", 4.0, 5.6, "Metabolic", "average blood sugar over ~3 months", ("A1c", "Hemoglobin A1c", "Glycated Hemoglobin")),
|
| 145 |
# --- Coagulation ---
|
| 146 |
Marker("Prothrombin Time", "seconds", 11, 13.5, "Coagulation", "time for the clotting cascade to form fibrin", ("PT",)),
|
|
|
|
| 156 |
Marker("Complement C3", "mg/dL", 90, 180, "Inflammation", "complement protein in immune activation", ("C3",)),
|
| 157 |
Marker("Complement C4", "mg/dL", 10, 40, "Inflammation", "complement protein in immune activation", ("C4",)),
|
| 158 |
Marker("Rheumatoid Factor", "IU/mL", None, 14, "Inflammation", "antibody sometimes seen in autoimmune arthritis", ("RF",)),
|
| 159 |
+
Marker("Anti-CCP Antibodies", "U/mL", None, 20, "Inflammation", "autoantibodies associated with rheumatoid arthritis", ("Anti CCP", "CCP Antibodies", "Cyclic Citrullinated Peptide Antibodies")),
|
| 160 |
+
Marker("Immunoglobulin G", "mg/dL", 700, 1600, "Inflammation", "major circulating antibody class", ("IgG",)),
|
| 161 |
+
Marker("Immunoglobulin A", "mg/dL", 70, 400, "Inflammation", "antibody class important at mucosal surfaces", ("IgA",)),
|
| 162 |
+
Marker("Immunoglobulin M", "mg/dL", 40, 230, "Inflammation", "early-response antibody class", ("IgM",)),
|
| 163 |
+
Marker("Immunoglobulin E", "IU/mL", None, 100, "Inflammation", "antibody class linked to allergy and parasite responses", ("IgE",)),
|
| 164 |
# --- Cardiac ---
|
| 165 |
Marker("BNP", "pg/mL", None, 100, "Cardiac", "hormone released when the heart is stretched", ("B-Type Natriuretic Peptide", "Brain Natriuretic Peptide")),
|
| 166 |
+
Marker("NT-proBNP", "pg/mL", None, 125, "Cardiac", "heart-stretch peptide used in heart failure assessment", ("N-terminal pro-BNP", "NT pro BNP")),
|
| 167 |
Marker("Troponin I", "ng/mL", None, 0.04, "Cardiac", "heart-muscle protein released with injury", ("TnI", "High-Sensitivity Troponin I")),
|
| 168 |
Marker("Creatine Kinase", "U/L", 30, 200, "Cardiac", "enzyme from muscle including heart and skeletal", ("CK", "CPK", "Creatine Phosphokinase")),
|
| 169 |
Marker("CK-MB", "ng/mL", None, 5, "Cardiac", "heart-enriched fraction of creatine kinase", ("CKMB", "Creatine Kinase-MB")),
|
| 170 |
+
Marker("Myoglobin", "ng/mL", 25, 72, "Cardiac", "oxygen-binding muscle protein released with muscle injury", ("Mb",)),
|
| 171 |
# --- Hormones ---
|
| 172 |
Marker("Cortisol", "mcg/dL", 6, 18, "Hormone", "stress hormone from the adrenal glands", ("AM Cortisol", "Serum Cortisol")),
|
| 173 |
Marker("Insulin", "uIU/mL", 2.6, 24.9, "Hormone", "hormone that lowers blood sugar", ("Fasting Insulin",)),
|
|
|
|
| 179 |
Marker("Progesterone", "ng/mL", 0.2, 25, "Hormone", "hormone that supports the uterine lining", ("P4",)),
|
| 180 |
Marker("Parathyroid Hormone", "pg/mL", 15, 65, "Hormone", "hormone that regulates blood calcium", ("PTH", "Intact PTH")),
|
| 181 |
Marker("ACTH", "pg/mL", 7, 63, "Hormone", "pituitary signal that drives cortisol production", ("Adrenocorticotropic Hormone",)),
|
| 182 |
+
Marker("DHEA-S", "mcg/dL", 35, 430, "Hormone", "adrenal androgen precursor", ("Dehydroepiandrosterone Sulfate", "DHEAS")),
|
| 183 |
+
Marker("Androstenedione", "ng/dL", 30, 200, "Hormone", "androgen precursor made by adrenal glands and gonads", ("A4",)),
|
| 184 |
+
Marker("Anti-Mullerian Hormone", "ng/mL", 1, 4, "Hormone", "ovarian reserve-related hormone", ("AMH", "Anti Mullerian Hormone")),
|
| 185 |
+
Marker("Beta-hCG", "mIU/mL", None, 5, "Hormone", "pregnancy-associated hormone also used in some tumor monitoring", ("β-hCG", "Human Chorionic Gonadotropin", "hCG")),
|
| 186 |
Marker("SHBG", "nmol/L", 10, 80, "Hormone", "protein that binds sex hormones in the blood", ("Sex Hormone Binding Globulin",)),
|
| 187 |
Marker("IGF-1", "ng/mL", 115, 355, "Hormone", "growth factor reflecting growth-hormone activity", ("Insulin-Like Growth Factor 1", "Somatomedin C")),
|
| 188 |
# --- Oncology / screening ---
|
| 189 |
Marker("PSA", "ng/mL", None, 4.0, "Oncology", "prostate-specific protein used in screening", ("Prostate Specific Antigen",)),
|
| 190 |
+
Marker("CEA", "ng/mL", None, 3.0, "Oncology", "tumor marker often followed in colorectal and other cancers", ("Carcinoembryonic Antigen",)),
|
| 191 |
+
Marker("CA-125", "U/mL", None, 35, "Oncology", "tumor marker often followed in ovarian and related conditions", ("Cancer Antigen 125", "CA 125")),
|
| 192 |
+
Marker("CA 19-9", "U/mL", None, 37, "Oncology", "tumor marker often followed in pancreaticobiliary conditions", ("CA19-9", "Carbohydrate Antigen 19-9")),
|
| 193 |
+
Marker("Alpha-Fetoprotein", "ng/mL", None, 10, "Oncology", "tumor marker used in liver and germ-cell tumor follow-up", ("AFP",)),
|
| 194 |
+
Marker("CA 15-3", "U/mL", None, 30, "Oncology", "tumor marker sometimes followed in breast cancer care", ("CA15-3", "Cancer Antigen 15-3")),
|
| 195 |
# --- Vitamins / iron (continued) ---
|
| 196 |
Marker("Folate", "ng/mL", 3, 20, "Vitamin", "B vitamin needed for DNA and red-cell production", ("Folic Acid", "Serum Folate")),
|
| 197 |
Marker("Vitamin A", "mcg/dL", 30, 65, "Vitamin", "fat-soluble vitamin for vision and immunity", ("Retinol",)),
|