|
|
(36 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
| |
| SBP = {name = "Systolic Blood Pressure (SBP)", system = "Cardiovascular System"},
| |
| DBP = {name = "Diastolic Blood Pressure (DBP)", system = "Cardiovascular System"},
| |
| PP = {name = "Pulse Pressure", system = "Cardiovascular System"},
| |
| MAP = {name = "Mean Arterial Pressure", system = "Cardiovascular System"},
| |
| Pulse = {name = "Pulse", system = "Cardiovascular System"},
| |
| PWV = {name = "Pulse Wave Velocity", system = "Cardiovascular System"},
| |
| HR = {name = "Heart Rate", system = "Cardiovascular System"},
| |
| IMT = {name = "Intima-Media Thickness", system = "Cardiovascular System"},
| |
| MinIMT = {name = "Minimum Intima-Media Thickness", system = "Cardiovascular System"},
| |
| EDV = {name = "End Diastolic Velocity", system = "Cardiovascular System"},
| |
| MVEAP = {name = "Mitral Valve E/A Peak", system = "Cardiovascular System"},
| |
| MVEL_MVES_MVEA = {name = "MVEL, MVES, MVEA", system = "Cardiovascular System"},
| |
| AI = {name = "Atherosclerosis Index", system = "Cardiovascular System"},
| |
| NTproBNP = {name = "NT-proBNP", system = "Cardiovascular System"},
| |
| CTnI = {name = "Cardiac Troponin I", system = "Cardiovascular System"},
| |
| CPK = {name = "Creatine Phosphokinase", system = "Cardiovascular System"},
| |
| Homocysteine = {name = "Homocysteine", system = "Cardiovascular System"},
| |
|
| |
|
| -- Respiratory System
| | local biomarkers = data.biomarkers |
| FVC = {name = "Forced Vital Capacity (FVC)", system = "Respiratory System"},
| | local rows = data.rows |
| FEV1 = {name = "Forced Expiratory Volume in 1 Second (FEV1)", system = "Respiratory System"},
| | local studies = data.studies |
| VC = {name = "Vital Capacity", system = "Respiratory System"},
| |
| MMFR = {name = "Maximal Midexpiratory Flow Rate 75/25", system = "Respiratory System"},
| |
| VO2Max = {name = "VO2 Max", system = "Respiratory System"},
| |
| CR = {name = "Chest Radiography", system = "Respiratory System"},
| |
|
| |
|
| -- Nervous System
| | function p.template(frame, name, arg) |
| MMSE = {name = "Mini-Mental State Examination (MMSE)", system = "Nervous System"},
| | return frame:expandTemplate({title = name, args = { arg }}) |
| DST = {name = "Digital Symbol Test", system = "Nervous System"},
| | end |
| NM = {name = "Numeric Memory", system = "Nervous System"},
| |
| AM = {name = "Associated Memory", system = "Nervous System"},
| |
| TM = {name = "Topological Memory", system = "Nervous System"},
| |
| STM = {name = "Short-Time Memory", system = "Nervous System"},
| |
| Concentration = {name = "Concentration", system = "Nervous System"},
| |
| IMD = {name = "Intellectuality - Mental Defect", system = "Nervous System"},
| |
| TMT = {name = "Trail Making Test", system = "Nervous System"},
| |
|
| |
|
| -- Endocrine Metabolic System
| | function p.createCrossTable(frame) |
| Glucose = {name = "Glucose", system = "Endocrine Metabolic System"},
| | for _, study in ipairs(studies) do |
| HBA1C = {name = "HBA1C", system = "Endocrine Metabolic System"},
| | local count = 0 |
| CPeptide = {name = "C-peptide", system = "Endocrine Metabolic System"},
| | for _ in pairs(study.biomarkers) do |
| Insulin = {name = "Insulin", system = "Endocrine Metabolic System"},
| | count = count + 1 |
| TG = {name = "Triglyceride", system = "Endocrine Metabolic System"},
| | end |
| TC = {name = "Total Cholesterol (TC)", system = "Endocrine Metabolic System"},
| | study.count = count |
| HDL = {name = "High-Density Lipoprotein (HDL)", system = "Endocrine Metabolic System"}, | | end |
| LDL = {name = "Low-Density Lipoprotein (LDL)", system = "Endocrine Metabolic System"},
| | |
| ApoA1B = {name = "Apolipoprotein A1 and B", system = "Endocrine Metabolic System"},
| | -- Start of the wiki table |
| TSH = {name = "Thyroid-Stimulating Hormone (TSH)", system = "Endocrine Metabolic System"},
| | local wikitable = '{| class="wikitable sortable"\n' |
| Testosterone = {name = "Testosterone", system = "Endocrine Metabolic System"},
| | local sep = '' |
| VitaminD = {name = "Vitamin D", system = "Endocrine Metabolic System"},
| |
| Calcium = {name = "Calcium", system = "Endocrine Metabolic System"},
| |
| Potassium = {name = "Potassium", system = "Endocrine Metabolic System"},
| |
| Sodium = {name = "Sodium", system = "Endocrine Metabolic System"},
| |
| InorganicPhosphorus = {name = "Inorganic Phosphorus", system = "Endocrine Metabolic System"},
| |
| Urea = {name = "Urea", system = "Endocrine Metabolic System"},
| |
| Creatinine = {name = "Creatinine", system = "Endocrine Metabolic System"}, | |
| eGFR = {name = "Estimated Glomerular Filtration Rate (eGFR)", system = "Endocrine Metabolic System"}, | |
| UricAcid = {name = "Uric Acid", system = "Endocrine Metabolic System"}, | |
| CystatinC = {name = "Cystatin C", system = "Endocrine Metabolic System"},
| |
| CreatinineClearance = {name = "Creatinine Clearance", system = "Endocrine Metabolic System"},
| |
| UrineSG = {name = "Urine Specific Gravity", system = "Endocrine Metabolic System"},
| |
| UrinepH = {name = "Urine pH", system = "Endocrine Metabolic System"},
| |
|
| |
|
| -- Digestive System | | for i, row in ipairs(rows) do |
| ALT = {name = "Alanine Aminotransferase (ALT)", system = "Digestive System"},
| | wikitable = wikitable .. sep |
| AST = {name = "Aspartate Aminotransferase (AST)", system = "Digestive System"},
| | sep = '|-\n' |
| ALP = {name = "Alkaline Phosphatase (ALP)", system = "Digestive System"},
| | wikitable = wikitable .. '! colspan="3" | ' .. row.name .. '\n' |
| TotalProtein = {name = "Total Protein", system = "Digestive System"},
| | for _, study in ipairs(studies) do |
| Albumin = {name = "Albumin", system = "Digestive System"},
| | local cellValue = study[row.key] or "" |
| AGRatio = {name = "Albumin/Globulin Ratio (A/G)", system = "Digestive System"},
| | if (row.rotate) then |
| TotalBilirubin = {name = "Total Bilirubin", system = "Digestive System"},
| | cellValue = p.template(frame, "VerticalText", cellValue) |
| DirectBilirubin = {name = "Direct Bilirubin", system = "Digestive System"},
| | else |
| Amylase = {name = "Amylase", system = "Digestive System"},
| | end |
| LDH = {name = "Lactate Dehydrogenase", system = "Digestive System"},
| | wikitable = wikitable .. '! ' .. cellValue .. '\n' |
| Alpha2Globulin = {name = "Alpha 2 Globulin", system = "Digestive System"},
| | end |
| GGT = {name = "Gamma Glutamyl Transpeptidase", system = "Digestive System"},
| | end |
| | |
| -- Hematologic System
| |
| RBC = {name = "Red Blood Cell", system = "Hematologic System"},
| |
| RDW = {name = "Red Blood Cell Volume Distribution Width", system = "Hematologic System"},
| |
| Hematocrit = {name = "Hematocrit", system = "Hematologic System"},
| |
| MCV = {name = "Mean Corpuscular Volume", system = "Hematologic System"},
| |
| MCH = {name = "Mean Corpuscular Hemoglobin", system = "Hematologic System"},
| |
| MCHC = {name = "Mean Corpuscular Hemoglobin Concentration", system = "Hematologic System"},
| |
| Hemoglobin = {name = "Hemoglobin", system = "Hematologic System"},
| |
| WBC = {name = "White Blood Cell", system = "Hematologic System"},
| |
| Granulocytes = {name = "Granulocytes", system = "Hematologic System"},
| |
| Neutrophils = {name = "Neutrophils", system = "Hematologic System"},
| |
| BasophilsEosinophils = {name = "Basophils, Eosinophils", system = "Hematologic System"},
| |
| Lymphocytes = {name = "Lymphocytes", system = "Hematologic System"},
| |
| Monocytes = {name = "Monocytes", system = "Hematologic System"},
| |
| Platelet = {name = "Platelet", system = "Hematologic System"},
| |
| MPV = {name = "Mean Platelet Volume", system = "Hematologic System"},
| |
| PDW = {name = "Platelet Distribution Width", system = "Hematologic System"},
| |
| ESR = {name = "Erythrocyte Sedimentation Rate", system = "Hematologic System"},
| |
| DdimerFibrinogen = {name = "D-dimer, Fibrinogen", system = "Hematologic System"},
| |
| Ferritin = {name = "Ferritin", system = "Hematologic System"},
| |
| Transferrin = {name = "Transferrin", system = "Hematologic System"},
| |
| | |
| -- Sensory System
| |
| VisualAcc = {name = "Visual Accommodation", system = "Sensory System"},
| |
| VisualReactTime = {name = "Visual Reaction Time", system = "Sensory System"},
| |
| VisualAcuity = {name = "Visual Acuity", system = "Sensory System"},
| |
| Hearing = {name = "Hearing", system = "Sensory System"},
| |
| Vibrotactile = {name = "Vibrotactile", system = "Sensory System"},
| |
| RetinalPhotos = {name = "Retinal Photos", system = "Sensory System"},
| |
| | |
| -- Inflammatory Index
| |
| CRP = {name = "C-Reactive Protein (CRP)", system = "Inflammatory Index"},
| |
| CMVOptDensity = {name = "Cytomegalovirus Optical Density", system = "Inflammatory Index"},
| |
| IL6 = {name = "Interleukin-6", system = "Inflammatory Index"},
| |
| Pselectin = {name = "P-selectin", system = "Inflammatory Index"},
| |
| | |
| -- Motion Index
| |
| GripStrength = {name = "Grip Strength", system = "Motion Index"},
| |
| VerticalJump = {name = "Vertical Jump", system = "Motion Index"},
| |
| TUGTest = {name = "Timed Up and Go Test", system = "Motion Index"},
| |
| ChairRiseTime = {name = "Chair Rise Time", system = "Motion Index"},
| |
| PhysicalActivityWeek = {name = "1-Week Physical Activity", system = "Motion Index"},
| |
| | |
| -- Body Morphology Index
| |
| WaistCirc = {name = "Waist Circumference (WC)", system = "Body Morphology Index"},
| |
| WaistHipRatio = {name = "Waist-to-Hip Ratio", system = "Body Morphology Index"},
| |
| WaistHeightRatio = {name = "Waist-to-Height Ratio", system = "Body Morphology Index"},
| |
| BMI = {name = "Body Mass Index (BMI)", system = "Body Morphology Index"},
| |
| Weight = {name = "Weight", system = "Body Morphology Index"},
| |
| Height = {name = "Height", system = "Body Morphology Index"},
| |
| BodyFat = {name = "Body Fat", system = "Body Morphology Index"},
| |
| LeanBodyMass = {name = "Lean Body Mass", system = "Body Morphology Index"},
| |
| SoftLeanMass = {name = "Soft Lean Mass", system = "Body Morphology Index"},
| |
| | |
| -- Genetic Index
| |
| TelomereLength = {name = "Terminal Telomere Restriction Fragment", system = "Genetic Index"}
| |
| }
| |
| | |
| local rows = {
| |
| method = "Biological Age Estimation Method",
| |
| year = "Year"
| |
| }
| |
| | |
| -- Incorporate data directly into studies identified by PMID
| |
| local studies = {
| |
| PMID12345 = {
| |
| pmid = "12345",
| |
| name = "Study1",
| |
| method = "MLR",
| |
| year = "1995",
| |
| data = {
| |
| 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 abbr, details in pairs(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[abbr] 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 |
|
| |
|