Module:BiologicalAgeBiomarkers: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(35 intermediate revisions by the same user not shown)
Line 1: Line 1:
local p = {}
local p = {}


-- Define biomarkers with their long form and system
local data = require('Module:BiologicalAgeBiomarkers/Data')
local biomarkers = {
  -- Cardiovascular System
{key = "SBP", name = "Systolic Blood Pressure (SBP)", system = "Cardiovascular System"},
{key = "DBP", name = "Diastolic Blood Pressure (DBP)", system = "Cardiovascular System"},
{key = "PP", name = "Pulse Pressure", system = "Cardiovascular System"},
{key = "MAP", name = "Mean Arterial Pressure", system = "Cardiovascular System"},
{key = "Pulse", name = "Pulse", system = "Cardiovascular System"},
{key = "PWV", name = "Pulse Wave Velocity", system = "Cardiovascular System"},
{key = "HR", name = "Heart Rate", system = "Cardiovascular System"},
{key = "IMT", name = "Intima-Media Thickness", system = "Cardiovascular System"},
{key = "MinIMT", name = "Minimum Intima-Media Thickness", system = "Cardiovascular System"},
{key = "EDV", name = "End Diastolic Velocity", system = "Cardiovascular System"},
{key = "MVEAP", name = "Mitral Valve E/A Peak", system = "Cardiovascular System"},
{key = "MVEL_MVES_MVEA", name = "MVEL, MVES, MVEA", system = "Cardiovascular System"},
{key = "AI", name = "Atherosclerosis Index", system = "Cardiovascular System"},
{key = "NTproBNP", name = "NT-proBNP", system = "Cardiovascular System"},
{key = "CTnI", name = "Cardiac Troponin I", system = "Cardiovascular System"},
{key = "CPK", name = "Creatine Phosphokinase", system = "Cardiovascular System"},
{key = "Homocysteine", name = "Homocysteine", system = "Cardiovascular System"},


-- Respiratory System
local biomarkers = data.biomarkers
{key = "FVC", name = "Forced Vital Capacity (FVC)", system = "Respiratory System"},
local rows = data.rows
{key = "FEV1", name = "Forced Expiratory Volume in 1 Second (FEV1)", system = "Respiratory System"},
local studies = data.studies
{key = "VC", name = "Vital Capacity", system = "Respiratory System"},
{key = "MMFR", name = "Maximal Midexpiratory Flow Rate 75/25", system = "Respiratory System"},
{key = "VO2Max", name = "VO2 Max", system = "Respiratory System"},
{key = "CR", name = "Chest Radiography", system = "Respiratory System"},


-- Nervous System
function p.template(frame, name, arg)
{key = "MMSE", name = "Mini-Mental State Examination (MMSE)", system = "Nervous System"},
return frame:expandTemplate({title = name, args = { arg }})
{key = "DST", name = "Digital Symbol Test", system = "Nervous System"},
end
{key = "NM", name = "Numeric Memory", system = "Nervous System"},
 
{key = "AM", name = "Associated Memory", system = "Nervous System"},
function p.createCrossTable(frame)
{key = "TM", name = "Topological Memory", system = "Nervous System"},
    for _, study in ipairs(studies) do
{key = "STM", name = "Short-Time Memory", system = "Nervous System"},
    local count = 0
{key = "Concentration", name = "Concentration", system = "Nervous System"},
for _ in pairs(study.biomarkers) do
{key = "IMD", name = "Intellectuality - Mental Defect", system = "Nervous System"},
count = count + 1
{key = "TMT", name = "Trail Making Test", system = "Nervous System"},
end
    study.count = count
end
-- Endocrine Metabolic System
    -- Start of the wiki table
{key = "Glucose", name = "Glucose", system = "Endocrine Metabolic System"},
    local wikitable = '{| class="wikitable sortable"\n'
{key = "HBA1C", name = "HBA1C", system = "Endocrine Metabolic System"},
    local sep = ''
{key = "CPeptide", name = "C-peptide", system = "Endocrine Metabolic System"},
{key = "Insulin", name = "Insulin", system = "Endocrine Metabolic System"},
{key = "TG", name = "Triglyceride", system = "Endocrine Metabolic System"},
{key = "TC", name = "Total Cholesterol (TC)", system = "Endocrine Metabolic System"},
{key = "HDL", name = "High-Density Lipoprotein (HDL)", system = "Endocrine Metabolic System"},
{key = "LDL", name = "Low-Density Lipoprotein (LDL)", system = "Endocrine Metabolic System"},
{key = "ApoA1B", name = "Apolipoprotein A1 and B", system = "Endocrine Metabolic System"},
{key = "TSH", name = "Thyroid-Stimulating Hormone (TSH)", system = "Endocrine Metabolic System"},
{key = "Testosterone", name = "Testosterone", system = "Endocrine Metabolic System"},
{key = "VitaminD", name = "Vitamin D", system = "Endocrine Metabolic System"},
{key = "Calcium", name = "Calcium", system = "Endocrine Metabolic System"},
{key = "Potassium", name = "Potassium", system = "Endocrine Metabolic System"},
{key = "Sodium", name = "Sodium", system = "Endocrine Metabolic System"},
{key = "InorganicPhosphorus", name = "Inorganic Phosphorus", system = "Endocrine Metabolic System"},
{key = "Urea", name = "Urea", system = "Endocrine Metabolic System"},
{key = "Creatinine", name = "Creatinine", system = "Endocrine Metabolic System"},
{key = "eGFR", name = "Estimated Glomerular Filtration Rate (eGFR)", system = "Endocrine Metabolic System"},
{key = "UricAcid", name = "Uric Acid", system = "Endocrine Metabolic System"},
{key = "CystatinC", name = "Cystatin C", system = "Endocrine Metabolic System"},
{key = "CreatinineClearance", name = "Creatinine Clearance", system = "Endocrine Metabolic System"},
{key = "UrineSG", name = "Urine Specific Gravity", system = "Endocrine Metabolic System"},
{key = "UrinepH", name = "Urine pH", system = "Endocrine Metabolic System"},
-- Digestive System
{key = "ALT", name = "Alanine Aminotransferase (ALT)", system = "Digestive System"},
{key = "AST", name = "Aspartate Aminotransferase (AST)", system = "Digestive System"},
{key = "ALP", name = "Alkaline Phosphatase (ALP)", system = "Digestive System"},
{key = "TotalProtein", name = "Total Protein", system = "Digestive System"},
{key = "Albumin", name = "Albumin", system = "Digestive System"},
{key = "AGRatio", name = "Albumin/Globulin Ratio (A/G)", system = "Digestive System"},
{key = "TotalBilirubin", name = "Total Bilirubin", system = "Digestive System"},
{key = "DirectBilirubin", name = "Direct Bilirubin", system = "Digestive System"},
{key = "Amylase", name = "Amylase", system = "Digestive System"},
{key = "LDH", name = "Lactate Dehydrogenase", system = "Digestive System"},
{key = "Alpha2Globulin", name = "Alpha 2 Globulin", system = "Digestive System"},
{key = "GGT", name = "Gamma Glutamyl Transpeptidase", system = "Digestive System"},
-- Hematologic System
{key = "RBC", name = "Red Blood Cell", system = "Hematologic System"},
{key = "RDW", name = "Red Blood Cell Volume Distribution Width", system = "Hematologic System"},
{key = "Hematocrit", name = "Hematocrit", system = "Hematologic System"},
{key = "MCV", name = "Mean Corpuscular Volume", system = "Hematologic System"},
{key = "MCH", name = "Mean Corpuscular Hemoglobin", system = "Hematologic System"},
{key = "MCHC", name = "Mean Corpuscular Hemoglobin Concentration", system = "Hematologic System"},
{key = "Hemoglobin", name = "Hemoglobin", system = "Hematologic System"},
{key = "WBC", name = "White Blood Cell", system = "Hematologic System"},
{key = "Granulocytes", name = "Granulocytes", system = "Hematologic System"},
{key = "Neutrophils", name = "Neutrophils", system = "Hematologic System"},
{key = "BasophilsEosinophils", name = "Basophils, Eosinophils", system = "Hematologic System"},
{key = "Lymphocytes", name = "Lymphocytes", system = "Hematologic System"},
{key = "Monocytes", name = "Monocytes", system = "Hematologic System"},
{key = "Platelet", name = "Platelet", system = "Hematologic System"},
{key = "MPV", name = "Mean Platelet Volume", system = "Hematologic System"},
{key = "PDW", name = "Platelet Distribution Width", system = "Hematologic System"},
{key = "ESR", name = "Erythrocyte Sedimentation Rate", system = "Hematologic System"},
{key = "DdimerFibrinogen", name = "D-dimer, Fibrinogen", system = "Hematologic System"},
{key = "Ferritin", name = "Ferritin", system = "Hematologic System"},
{key = "Transferrin", name = "Transferrin", system = "Hematologic System"},
-- Sensory System
{key = "VisualAcc", name = "Visual Accommodation", system = "Sensory System"},
{key = "VisualReactTime", name = "Visual Reaction Time", system = "Sensory System"},
{key = "VisualAcuity", name = "Visual Acuity", system = "Sensory System"},
{key = "Hearing", name = "Hearing", system = "Sensory System"},
{key = "Vibrotactile", name = "Vibrotactile", system = "Sensory System"},
{key = "RetinalPhotos", name = "Retinal Photos", system = "Sensory System"},
-- Inflammatory Index
{key = "CRP", name = "C-Reactive Protein (CRP)", system = "Inflammatory Index"},
{key = "CMVOptDensity", name = "Cytomegalovirus Optical Density", system = "Inflammatory Index"},
{key = "IL6", name = "Interleukin-6", system = "Inflammatory Index"},
{key = "Pselectin", name = "P-selectin", system = "Inflammatory Index"},
-- Motion Index
{key = "GripStrength", name = "Grip Strength", system = "Motion Index"},
{key = "VerticalJump", name = "Vertical Jump", system = "Motion Index"},
{key = "TUGTest", name = "Timed Up and Go Test", system = "Motion Index"},
{key = "ChairRiseTime", name = "Chair Rise Time", system = "Motion Index"},
{key = "PhysicalActivityWeek", name = "1-Week Physical Activity", system = "Motion Index"},
-- Body Morphology Index
{key = "WaistCirc", name = "Waist Circumference (WC)", system = "Body Morphology Index"},
{key = "WaistHipRatio", name = "Waist-to-Hip Ratio", system = "Body Morphology Index"},
{key = "WaistHeightRatio", name = "Waist-to-Height Ratio", system = "Body Morphology Index"},
{key = "BMI", name = "Body Mass Index (BMI)", system = "Body Morphology Index"},
{key = "Weight", name = "Weight", system = "Body Morphology Index"},
{key = "Height", name = "Height", system = "Body Morphology Index"},
{key = "BodyFat", name = "Body Fat", system = "Body Morphology Index"},
{key = "LeanBodyMass", name = "Lean Body Mass", system = "Body Morphology Index"},
{key = "SoftLeanMass", name = "Soft Lean Mass", system = "Body Morphology Index"},
-- Genetic Index
{key = "TelomereLength", name = "Terminal Telomere Restriction Fragment", system = "Genetic Index"}
}


local rows = {
     for i, row in ipairs(rows) do
method = "Biological Age Estimation Method",
         wikitable = wikitable .. sep
year = "Year"
         sep = '|-\n'
}
         wikitable = wikitable .. '! colspan="3" | ' .. row.name .. '\n'
 
         for _, study in ipairs(studies) do
-- Incorporate data directly into studies identified by PMID
             local cellValue = study[row.key] or ""
local studies = {
             if (row.rotate) then
     PMID12345 = {
cellValue = p.template(frame, "VerticalText", cellValue)
    pmid = "12345",
else
         name = "Study1",
end
         method = "MLR",
wikitable = wikitable .. '! ' .. cellValue .. '\n'
         year = "1995",
        end
        data = {
end
            SBP = "x",
            DBP = "x",
            HDL = "x",
            LDL = "x"
         }
    },
    PMID67890 = {
        pmid = "67890",
        method = "MLR",
        year = "1995",
        data = {
             SBP = "x",
             DBP = "x",
            HDL = "x",
            LDL = "x"
        }
    },
    PMID13579 = {
        pmid = "13579",
        method = "MLR",
        year = "1995",
        data = {
            SBP = "x",
            DBP = "x",
            HDL = "x",
            LDL = "x"
        }
    }
}
 
function p.createCrossTable()
    -- Start of the wiki table
    local wikitable = '{| class="wikitable"\n!'


     -- Column headers: Biomarker and System
     -- Column headers: Biomarker and System
     wikitable = wikitable .. ' System !! Biomarker'
     wikitable = wikitable .. '|-\n'
    wikitable = wikitable .. '! System !! Biomarker !! Count '
     for _, study in pairs(studies) do
     for _, study in pairs(studies) do
         wikitable = wikitable .. ' !! ' .. study.pmid
         wikitable = wikitable .. ' !! ' .. p.template(frame, "pmid", study.pmid)
end
end
wikitable = wikitable .. '\n'
wikitable = wikitable .. '\n'
    for key, name in pairs(rows) do
        wikitable = wikitable .. '|-\n'
        wikitable = wikitable .. '| ' .. name .. ' || ' .. ''
        for _, study in pairs(studies) do
            local cellValue = study[key] or ""
wikitable = wikitable .. ' || ' .. cellValue
        end
wikitable = wikitable .. '\n'
end


     -- Generate rows for each biomarker
     -- Generate rows for each biomarker
     for i, details in ipairs(biomarkers) do
     for _, system in ipairs(biomarkers) do
        wikitable = wikitable .. '|-\n'
    for _, bm in ipairs(system.data) do
        wikitable = wikitable .. '| '  .. details.system .. ' || ' .. details.name
        wikitable = wikitable .. '|-\n'
        for _, study in pairs(studies) do
        wikitable = wikitable .. '| '  .. system.system .. ' || ' .. bm.name
            -- Retrieve data value for the current cell, using the nested structure
       
            local cellValue = study.data[details.key] or ""
        local count = 0
            wikitable = wikitable .. ' || ' .. cellValue
        for _, study in ipairs(studies) do
        end
        if study.biomarkers[bm.key] ~= nil then
wikitable = wikitable .. '\n'
    count = count + 1
        end
end
        wikitable = wikitable .. string.format(' || %d', count)
       
        for _, study in ipairs(studies) do
            -- Retrieve data value for the current cell, using the nested structure
            local cellValue = study.biomarkers[bm.key] or ""
        if cellValue == "x" then
        cellValue = 'style="background-color:gray; color: transparent;" | ' .. cellValue
        elseif cellValue ~= "" then
        cellValue = 'style="background-color:gray;" | ' .. cellValue
            end
            wikitable = wikitable .. ' || ' .. cellValue
        end
wikitable = wikitable .. '\n'
    end
     end
     end