Analyze all the past papers from 20 to 24 and tell me which are the most important topics and also tell about the mcqs number that had come from it each year

Reading File
Running Command

mkdir -p /tmp/workspace/msk_analysis && ls -la "/tmp/workspace/attachments/6b87f87a-6b12-46b6-a2a6-f128ea468786/"

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import pdfplumber, os files = { "20": "20LM MSK MODULE TEST SOLVED.pdf", "21": "21LM MSK-I MODULE TEST SOLVED.pdf", "22": "22LM MSK-I MODULE TEST SOLVED.pdf", "23": "23LM MSK-I MODULE TEST SOLVED.pdf", "24_final": "24LM MSK-I FINAL PROFF PAPER-II - SOLVED.pdf", "24_module": "24LM MSK-I MODULE TEST SOLVED.pdf", } base = "/tmp/workspace/attachments/6b87f87a-6b12-46b6-a2a6-f128ea468786/" for key, fname in files.items(): path = os.path.join(base, fname) with pdfplumber.open(path) as pdf: print(key, fname, "pages:", len(pdf.pages)) EOF

Now let me extract full text from each PDF to text files for analysis.
Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import pdfplumber, os files = { "20": "20LM MSK MODULE TEST SOLVED.pdf", "21": "21LM MSK-I MODULE TEST SOLVED.pdf", "22": "22LM MSK-I MODULE TEST SOLVED.pdf", "23": "23LM MSK-I MODULE TEST SOLVED.pdf", "24_final": "24LM MSK-I FINAL PROFF PAPER-II - SOLVED.pdf", "24_module": "24LM MSK-I MODULE TEST SOLVED.pdf", } base = "/tmp/workspace/attachments/6b87f87a-6b12-46b6-a2a6-f128ea468786/" for key, fname in files.items(): path = os.path.join(base, fname) out_text = [] with pdfplumber.open(path) as pdf: for i, page in enumerate(pdf.pages): t = page.extract_text() or "" out_text.append(f"--- PAGE {i+1} ---\n{t}") with open(f"/tmp/workspace/msk_analysis/{key}.txt", "w") as f: f.write("\n".join(out_text)) print(key, "done, chars:", sum(len(x) for x in out_text)) EOF

Let me look at the structure of each file to understand how questions/topics are organized.
Reading File
Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import re files = ["20","21","22","23","24_final","24_module"] for key in files: with open(f"{key}.txt") as f: text = f.read() # count questions using regex like Q.1: or Q1: or Q 1: qs = re.findall(r'Q\.?\s?\d+[\.:]', text) print(key, "question markers found:", len(qs)) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import re, json files = ["20","21","22","23","24_final","24_module"] def split_questions(text): # remove page markers text = re.sub(r'--- PAGE \d+ ---', '', text) # split by question number pattern at start of a question parts = re.split(r'(?=Q\.?\s?\d+[\.:])', text) qs = [p.strip() for p in parts if re.match(r'^Q\.?\s?\d+[\.:]', p.strip())] return qs data = {} for key in files: with open(f"{key}.txt") as f: text = f.read() qs = split_questions(text) data[key] = qs print(key, len(qs)) with open("questions.json","w") as f: json.dump(data, f) EOF

Good, question splitting matches counts exactly. Now let's classify each question into MSK topics using keyword matching.
Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re from collections import defaultdict, Counter with open("questions.json") as f: data = json.load(f) topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","winging of scapula","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand","hand of benediction"], "Upper Limb Nerve Injury": ["radial nerve","ulnar nerve","median nerve","axillary nerve","musculocutaneous","long thoracic","suprascapular","wrist drop","claw hand","winged scapula"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus","plantar fasciitis"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop","saphenous nerve"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","spinal nerve","cauda equina","lamina","pedicle","scoliosis","kyphosis","lordosis"], "Bone Histology & Physiology": ["osteoblast","osteoclast","osteocyte","ossification","bone remodel","wolff's law","osteoid","haversian","bone matrix","calcification","rickets","osteoporosis","osteomalacia"], "Joint Anatomy/Histology": ["synovial","cartilage","ligament","joint capsule","articular","meniscus","bursa"], "Muscle Histology & Physiology": ["sarcomere","muscle contraction","neuromuscular junction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis"], "Embryology": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","embryolog"], "Thorax/Ribs": ["rib ","ribs","sternum","intercostal","thoracic outlet","costal"], "Genetics/Connective Tissue Disorders": ["marfan","osteogenesis imperfecta","ehlers-danlos","achondroplasia","muscular dystrophy"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = 0 for kw in kws: cnt += qlow.count(kw.lower()) if cnt > 0: scores[topic] = cnt if not scores: return "Other/Unclassified" return max(scores, key=scores.get) results = {} all_topic_counts = Counter() for key, qs in data.items(): counter = Counter() for q in qs: t = classify(q) counter[t] += 1 results[key] = counter all_topic_counts.update(counter) # print table years = ["20","21","22","23","24_module","24_final"] all_topics = sorted(all_topic_counts.keys(), key=lambda x: -all_topic_counts[x]) print(f"{'Topic':40s} " + " ".join(f"{y:>10s}" for y in years) + f" {'Total':>7s}") for t in all_topics: row = [str(results[y].get(t,0)) for y in years] total = sum(results[y].get(t,0) for y in years) print(f"{t:40s} " + " ".join(f"{v:>10s}" for v in row) + f" {total:>7d}") print() for y in years: print(y, "total classified:", sum(results[y].values()), "raw q count:", len(data[y])) with open("classification_results.json","w") as f: json.dump(results, f, default=lambda x: dict(x)) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re from collections import Counter with open("questions.json") as f: data = json.load(f) topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","winging of scapula","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand","hand of benediction"], "Upper Limb Nerve Injury": ["radial nerve","ulnar nerve","median nerve","axillary nerve","musculocutaneous","long thoracic","suprascapular","wrist drop","claw hand","winged scapula"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus","plantar fasciitis"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop","saphenous nerve"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","spinal nerve","cauda equina","lamina","pedicle","scoliosis","kyphosis","lordosis"], "Bone Histology & Physiology": ["osteoblast","osteoclast","osteocyte","ossification","bone remodel","wolff's law","osteoid","haversian","bone matrix","calcification","rickets","osteoporosis","osteomalacia"], "Joint Anatomy/Histology": ["synovial","cartilage","ligament","joint capsule","articular","meniscus","bursa"], "Muscle Histology & Physiology": ["sarcomere","muscle contraction","neuromuscular junction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis"], "Embryology": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","embryolog"], "Thorax/Ribs": ["rib ","ribs","sternum","intercostal","thoracic outlet","costal"], "Genetics/Connective Tissue Disorders": ["marfan","osteogenesis imperfecta","ehlers-danlos","achondroplasia","muscular dystrophy"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = 0 for kw in kws: cnt += qlow.count(kw.lower()) if cnt > 0: scores[topic] = cnt if not scores: return "Other/Unclassified" return max(scores, key=scores.get) unclassified = [] for key, qs in data.items(): for q in qs: if classify(q) == "Other/Unclassified": unclassified.append((key, q[:200])) print(len(unclassified)) for k,q in unclassified[:40]: print("====", k) print(q) print() EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re from collections import Counter with open("questions.json") as f: data = json.load(f) topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","winging of scapula","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand","hand of benediction"], "Upper Limb Nerve Injury": ["radial nerve","ulnar nerve","median nerve","axillary nerve","musculocutaneous","long thoracic","suprascapular","wrist drop"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus","plantar fasciitis"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop","saphenous nerve"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","spinal nerve","cauda equina","lamina","pedicle","scoliosis","kyphosis","lordosis"], "Bone Histology, Growth & Physiology": ["osteoblast","osteoclast","osteocyte","ossification","bone remodel","wolff's law","osteoid","haversian","bone matrix","calcification","rickets","osteoporosis","osteomalacia","metaphysis","diaphysis","epiphys","periosteum","endosteum","growth plate"], "Joint Anatomy/Histology": ["synovial","cartilage","ligament","joint capsule","articular","bursa"], "Muscle Histology & Physiology": ["sarcomere","muscle contraction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis","smooth muscle","cardiac muscle","fusiform cells","striations","calcium for contraction","sarcoplasmic reticulum"], "Neuromuscular Pharmacology (NMJ Blockers/Acetylcholine)": ["neuromuscular blocker","neuromuscular junction","acetylcholine","cholinesterase","succinylcholine","atracurium","rocuronium","vecuronium","pancuronium","mivacurium","nicotinic","motor end plate","laudanosine"], "Gout & Anti-gout Pharmacology": ["gout","uric acid","allopurinol","colchicine","probenecid","febuxostat","sulphinpyrazone","xanthine oxidase","uricosuric"], "Embryology (Limb/Germ Layers/Teratogenesis)": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","embryolog","germ layer","neural crest","neuroectoderm","teratogen"], "Thorax/Ribs": ["rib ","ribs","sternum","intercostal","thoracic outlet","costal"], "Genetics/Connective Tissue Disorders": ["marfan","osteogenesis imperfecta","ehlers-danlos","achondroplasia","muscular dystrophy"], "Skin & Integument Histology": ["epidermis","dermis","stratum","sebaceous","basal cell carcinoma","eccrine","apocrine","keratin","melanocyte"], "Breast Histology & Pathology": ["breast","lobule","acini","acinus","alveoli","lactating","paget","mammary"], "Vitamins, Calcium & Nutrition": ["vitamin d","vitamin c","calcium absorption","scurvy","food fortification","food supplement","nutritional","bleeding of gums"], "Glandular Histology (General)": ["tubular gland","acinar gland","compound gland","simple gland","gland type"], "Ergonomics/Posture (Community Medicine)": ["desk","postural defect","back pain, stress"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = 0 for kw in kws: cnt += qlow.count(kw.lower()) if cnt > 0: scores[topic] = cnt if not scores: return "Other/Unclassified" return max(scores, key=scores.get) results = {} all_topic_counts = Counter() for key, qs in data.items(): counter = Counter() for q in qs: t = classify(q) counter[t] += 1 results[key] = counter all_topic_counts.update(counter) years = ["20","21","22","23","24_module","24_final"] all_topics = sorted(all_topic_counts.keys(), key=lambda x: -all_topic_counts[x]) print(f"{'Topic':45s} " + " ".join(f"{y:>10s}" for y in years) + f" {'Total':>7s}") for t in all_topics: row = [str(results[y].get(t,0)) for y in years] total = sum(results[y].get(t,0) for y in years) print(f"{t:45s} " + " ".join(f"{v:>10s}" for v in row) + f" {total:>7d}") print() unclassified = [] for key, qs in data.items(): for q in qs: if classify(q) == "Other/Unclassified": unclassified.append((key, q[:150])) print("Remaining unclassified:", len(unclassified)) for k,q in unclassified: print("====",k, q.replace(chr(10)," ")) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re from collections import Counter with open("questions.json") as f: data = json.load(f) topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","winging of scapula","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand","hand of benediction"], "Upper Limb Nerve Injury": ["radial nerve","ulnar nerve","median nerve","axillary nerve","musculocutaneous","long thoracic","suprascapular","wrist drop"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus","plantar fasciitis"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop","saphenous nerve"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","spinal nerve","cauda equina","lamina","pedicle","scoliosis","kyphosis","lordosis"], "Bone Histology, Growth & Physiology": ["osteoblast","osteoclast","osteocyte","ossification","bone remodel","wolff's law","osteoid","haversian","bone matrix","calcification","rickets","osteoporosis","osteomalacia","metaphysis","diaphysis","epiphys","periosteum","endosteum","growth plate"], "Bone Pathology (Osteomyelitis etc.)": ["osteomyelitis","codman","sequestrum","onion-skin","soap-bubble","sunburst","sunray","bone tumor","ewing"], "Joint Anatomy/Histology": ["synovial","cartilage","ligament","joint capsule","articular","bursa"], "Muscle Histology & Physiology": ["sarcomere","muscle contraction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis","smooth muscle","cardiac muscle","fusiform cells","striations","calcium for contraction","sarcoplasmic reticulum","isometric","isotonic","isokinetic","eccentric","concentric","muscle adaptation","mitochondria","capillary density"], "Electrophysiology (Action Potential/Ion Channels)": ["action potential","ion channel","depolarization","sodium influx","voltage-gated","repolarization"], "Neuromuscular Pharmacology (NMJ Blockers/Acetylcholine)": ["neuromuscular blocker","neuromuscular junction","acetylcholine","cholinesterase","succinylcholine","atracurium","rocuronium","vecuronium","pancuronium","mivacurium","nicotinic","motor end plate","laudanosine"], "Gout & Anti-gout Pharmacology": ["gout","uric acid","allopurinol","colchicine","probenecid","febuxostat","sulphinpyrazone","xanthine oxidase","uricosuric"], "Rheumatology Pharmacology (DMARDs)": ["dmard","adalimumab","etanercept","azathioprine","rituximab","abatacept","methotrexate","biologic"], "Embryology (Limb/Germ Layers/Teratogenesis)": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","embryolog","germ layer","neural crest","neuroectoderm","teratogen"], "Thorax/Ribs": ["rib ","ribs","sternum","intercostal","thoracic outlet","costal"], "Cranium/Skull Anatomy": ["skull","occipital bone","temporal bone","mandible","frontal bone","sphenoid bone","cranium"], "Genetics/Connective Tissue Disorders": ["marfan","osteogenesis imperfecta","ehlers-danlos","achondroplasia","muscular dystrophy"], "Connective Tissue Biochemistry (GAGs & Collagen)": ["glycosaminoglycan","hyaluronic acid","chondroitin sulfate","dermatan sulfate","keratan sulfate","heparan sulfate","iduronic acid","collagen","hydroxyproline","proline appears","glycine appears"], "Carbohydrate & Energy Metabolism": ["glycogen","glycogenolysis","glycolysis","mcardle","phosphorylase","krebs cycle","oxidative phosphorylation","beta-oxidation","atp synthesis","energy system","anaerobic","aerobic metabolism","hmp shunt"], "Nucleotide Metabolism (Purine/Pyrimidine)": ["pyrimidine","purine","carbamoyl phosphate","cps-ii","cps ii","de novo synthesis"], "Minerals & Trace Elements": ["zinc","copper","wilson's disease","magnesium","selenium","kayser-fleischer","superoxide dismutase","carbonic anhydrase","manganese"], "Skin & Integument Histology": ["epidermis","dermis","stratum","sebaceous","basal cell carcinoma","eccrine","apocrine","keratin","melanocyte"], "Breast Histology & Pathology": ["breast","lobule","acini","acinus","alveoli","lactating","paget","mammary"], "Vitamins, Calcium & Nutrition": ["vitamin d","vitamin c","calcium absorption","scurvy","food fortification","food supplement","nutritional","bleeding of gums","parathyroid hormone","calcitonin"], "Glandular Histology (General)": ["tubular gland","acinar gland","compound gland","simple gland","gland type"], "Ergonomics/Posture (Community Medicine)": ["desk","postural defect","back pain, stress"], "Research Methodology/Behavioral Science": ["literature review","control group","type a personality","type b personality","behavior theory","research method"], "General Receptor Pharmacology": ["m2 receptor","g-protein-coupled","ligand-gated ion channel","tyrosine kinase receptor"], "Thermoregulation Physiology": ["cold environment","vasoconstriction","vasodilation of blood","pale skin"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = 0 for kw in kws: cnt += qlow.count(kw.lower()) if cnt > 0: scores[topic] = cnt if not scores: return "Other/Unclassified" return max(scores, key=scores.get) results = {} all_topic_counts = Counter() qmap = {} for key, qs in data.items(): counter = Counter() qtopics = [] for q in qs: t = classify(q) counter[t] += 1 qtopics.append((q[:80].replace(chr(10)," "), t)) results[key] = counter qmap[key] = qtopics all_topic_counts.update(counter) years = ["20","21","22","23","24_module","24_final"] all_topics = sorted(all_topic_counts.keys(), key=lambda x: -all_topic_counts[x]) print(f"{'Topic':50s} " + " ".join(f"{y:>10s}" for y in years) + f" {'Total':>7s}") for t in all_topics: row = [str(results[y].get(t,0)) for y in years] total = sum(results[y].get(t,0) for y in years) print(f"{t:50s} " + " ".join(f"{v:>10s}" for v in row) + f" {total:>7d}") unclassified = sum(1 for y in years for t,tt in qmap[y] if tt=="Other/Unclassified") print("\nRemaining unclassified total:", unclassified) with open("final_results.json","w") as f: json.dump({y: dict(results[y]) for y in years}, f, indent=2) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json from collections import Counter with open("final_results.json") as f: results = json.load(f) groups = { "Upper Limb Anatomy (Shoulder/Arm/Forearm/Hand/Nerves)": ["Shoulder & Brachial Plexus","Arm & Elbow","Forearm & Wrist","Hand","Upper Limb Nerve Injury"], "Lower Limb Anatomy (Hip/Thigh/Leg/Foot/Nerves)": ["Hip & Gluteal Region","Thigh & Knee","Leg & Ankle","Foot","Lower Limb Nerve Injury"], "Muscle Physiology, Histology & NMJ Pharmacology": ["Muscle Histology & Physiology","Electrophysiology (Action Potential/Ion Channels)","Neuromuscular Pharmacology (NMJ Blockers/Acetylcholine)"], "Bone Histology, Growth & Pathology": ["Bone Histology, Growth & Physiology","Bone Pathology (Osteomyelitis etc.)"], "Embryology (Limb Development/Teratogenesis)": ["Embryology (Limb/Germ Layers/Teratogenesis)"], "Gout, Rheumatology & Anti-inflammatory Pharmacology": ["Gout & Anti-gout Pharmacology","Rheumatology Pharmacology (DMARDs)"], "Joint Anatomy & Histology": ["Joint Anatomy/Histology"], "Biochemistry (GAGs/Collagen/Metabolism/Minerals)": ["Connective Tissue Biochemistry (GAGs & Collagen)","Carbohydrate & Energy Metabolism","Nucleotide Metabolism (Purine/Pyrimidine)","Minerals & Trace Elements"], "Skin, Breast & Glandular Histology": ["Skin & Integument Histology","Breast Histology & Pathology","Glandular Histology (General)"], "Vitamins & Calcium/Nutrition": ["Vitamins, Calcium & Nutrition"], "Back & Vertebral Column": ["Back & Vertebral Column"], "Other (Thorax/Skull/Genetics/Behavioral Sci/Misc)": ["Thorax/Ribs","Cranium/Skull Anatomy","Genetics/Connective Tissue Disorders","Research Methodology/Behavioral Science","Ergonomics/Posture (Community Medicine)","General Receptor Pharmacology","Thermoregulation Physiology"], } years = ["20","21","22","23","24_module","24_final"] agg = {g: {y:0 for y in years} for g in groups} for g, subs in groups.items(): for y in years: for s in subs: agg[g][y] += results[y].get(s,0) totals = {g: sum(agg[g].values()) for g in groups} order = sorted(groups.keys(), key=lambda g: -totals[g]) print(f"{'Category':55s} " + " ".join(f"{y:>10s}" for y in years) + f" {'Total':>7s}") for g in order: row = [str(agg[g][y]) for y in years] print(f"{g:55s} " + " ".join(f"{v:>10s}" for v in row) + f" {totals[g]:>7d}") print() print("Year totals:", {y: sum(agg[g][y] for g in groups) for y in years}) EOF

This gives a clean picture. Now let me present the final comprehensive analysis.I went through all 6 papers (437 MCQs total), extracted every question, and classified each by topic. Here's the full breakdown.

Total MCQs per paper

YearPaperTotal MCQs
2020MSK Module Test90
2021MSK-I Module Test79
2022MSK-I Module Test55
2023MSK-I Module Test24
2024MSK-I Module Test102
2024MSK-I Final Prof Paper-II87

Topic-wise MCQ distribution (year by year)

Topic Category2021222324-Module24-FinalTotal
Upper Limb Anatomy (shoulder, brachial plexus, arm, elbow, forearm, wrist, hand, nerve injuries)21212362117109
Muscle Physiology, Histology & NMJ Pharmacology (contraction types, sarcomere, action potential, neuromuscular blockers, acetylcholine)142074231987
Lower Limb Anatomy (hip, gluteal region, thigh, knee, leg, ankle, foot, nerve injuries)24753211878
Biochemistry (GAGs, collagen, glycogen/energy metabolism, minerals)441311629
Embryology (limb development, germ layers, teratogenesis)66405627
Gout, Rheumatology & Anti-inflammatory Pharmacology513111223
Bone Histology, Growth & Pathology31454421
Joint Anatomy & Histology42413418
Vitamins & Calcium/Nutrition20206616
Skin, Breast & Glandular Histology44203114
Other (thorax, skull, genetics, research methodology, misc)21113412
Back & Vertebral Column1010103

Key takeaways — Most important (highest-yield) topics across all 5 years

1. Upper Limb Anatomy — the single most tested area every single year (109/437 = ~25%)
  • Shoulder & brachial plexus (rotator cuff muscles, quadrangular space, axillary/posterior circumflex vessels) is consistently the biggest subtopic (~56 MCQs total, present every year, 9-11 questions/paper).
  • Forearm & wrist (radius/ulna, anatomical snuffbox, pronation/supination) is the second-biggest upper limb subtopic (39 MCQs).
  • This region never drops below 6 MCQs in any paper — it's a guaranteed high-weightage area.
2. Muscle physiology/histology + neuromuscular pharmacology — second most important (87 MCQs)
  • Sharply increasing trend: only 14 in 2020 but jumped to 20-23 in 2021 and both 2024 papers. This is now one of the highest-yield areas in recent papers.
  • Sub-focus: contraction mechanics (isotonic/isometric), NMJ blockers (succinylcholine, atracurium, rocuronium), acetylcholine physiology.
3. Lower Limb Anatomy — third most important (78 MCQs)
  • Very heavily tested in 2020 (24 MCQs — the peak) but fell sharply in 2021-2023 (only 3-7 MCQs), then rebounded strongly in both 2024 papers (21 and 18 MCQs). Thigh/knee and leg/ankle are the dominant subtopics.
4. Notable year-specific spikes worth flagging:
  • 2021: Gout & anti-gout pharmacology exploded to 13 MCQs (vs. 1-5 in other years) — almost every antigout drug (allopurinol, colchicine, probenecid, febuxostat) was tested repeatedly that year.
  • 2024 (both papers): Biochemistry (GAGs, collagen, glycogen metabolism, minerals like zinc/copper/Wilson's disease) rose sharply — 11 and 6 MCQs respectively, far above prior years (1-4). This signals a broadening of the exam beyond pure gross anatomy into biochemistry integration.
  • 2024: Vitamins/calcium metabolism also spiked (6 MCQs in each 2024 paper vs. 0-2 before).
  • 2023 is the outlier: only 24 total MCQs (much shorter test), with unusually high relative weight on bone histology/growth (5/24) and low representation of muscle physiology — likely a shorter/partial module test rather than a full-length one.

Practical exam-prep priority ranking

  1. Upper limb anatomy (especially shoulder/brachial plexus and forearm/wrist) - highest and most consistent yield every year
  2. Muscle physiology & NMJ pharmacology - rapidly growing weightage, especially in 2024
  3. Lower limb anatomy (thigh/knee, leg/ankle) - historically huge (2020) and resurging in 2024
  4. Embryology of the limb (germ layers, teratogenic periods) - stable ~5-6 MCQs almost every year, easy consistent marks
  5. Bone histology/growth & joint histology - steady presence (3-5 MCQs/year), low-effort high-return topics
  6. Biochemistry integration (GAGs, collagen, glycogen storage, minerals) and vitamins/calcium - increasingly important in the newest (2024) papers, worth extra attention if preparing for an upcoming exam, since the trend suggests continued emphasis
  7. Gout pharmacology - watch for recurrence since it was a major 2021 focus that could resurface
If you want, I can also pull out the exact question list per topic per year (e.g., all shoulder/brachial plexus questions from 2020-2024) so you can revise from the actual repeated questions.

Can u make me prepare for all these topics i only have 2 days left

Reading File
Browsing Directory

~/msk_analysis

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re with open("questions.json") as f: data = json.load(f) # Rebuild classify function (same as before) to tag each question, then extract Q + correct answer + explanation snippet topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop"], "Muscle Physiology & Histology": ["sarcomere","muscle contraction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis","smooth muscle","cardiac muscle","isometric","isotonic","sarcoplasmic reticulum"], "NMJ Pharmacology": ["neuromuscular blocker","acetylcholine","cholinesterase","succinylcholine","atracurium","rocuronium","vecuronium","pancuronium","mivacurium","motor end plate"], "Embryology": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","germ layer","neural crest","neuroectoderm","teratogen"], "Bone Histology & Growth": ["osteoblast","osteoclast","osteocyte","ossification","wolff's law","haversian","rickets","osteoporosis","metaphysis","diaphysis","epiphys","periosteum"], "Joint Histology": ["synovial","cartilage","ligament","joint capsule","articular","bursa"], "Gout Pharmacology": ["gout","uric acid","allopurinol","colchicine","probenecid","febuxostat","xanthine oxidase"], "Biochemistry (GAG/Collagen/Metabolism/Minerals)": ["glycosaminoglycan","hyaluronic acid","chondroitin","dermatan","keratan","heparan","iduronic","collagen","hydroxyproline","glycogen","mcardle","zinc","copper","wilson's disease","magnesium","pyrimidine","purine"], "Vitamins & Calcium": ["vitamin d","vitamin c","calcium absorption","scurvy","parathyroid hormone","calcitonin"], "Skin & Breast Histology": ["epidermis","dermis","stratum","sebaceous","basal cell carcinoma","breast","lobule","acini","mammary"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","scoliosis"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = sum(qlow.count(kw.lower()) for kw in kws) if cnt>0: scores[topic]=cnt return max(scores, key=scores.get) if scores else "Other" by_topic = {} for year, qs in data.items(): for q in qs: t = classify(q) by_topic.setdefault(t, []).append((year, q)) for t, items in by_topic.items(): print(t, len(items)) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json, re with open("questions.json") as f: data = json.load(f) topics = { "Shoulder & Brachial Plexus": ["shoulder", "scapula", "clavicle", "rotator cuff", "supraspinatus","infraspinatus","subscapularis","teres minor","teres major","deltoid","axilla","axillary","brachial plexus","glenohumeral","acromion","coracoid","erb","klumpke","quadrangular space"], "Arm & Elbow": ["humerus","humeral","biceps brachii","triceps","brachialis","elbow","cubital fossa","olecranon","supracondylar"], "Forearm & Wrist": ["radius","ulna","radial","ulnar","forearm","wrist","carpal tunnel","carpal bone","pronator","supinator","colles","smith fracture","interosseous membrane"], "Hand": ["metacarpal","phalan","palm","palmar","dupuytren","snuffbox","thenar","hypothenar","claw hand","ape hand"], "Hip & Gluteal Region": ["hip joint","gluteal","pelvis","pelvic","acetabulum","femoral head","trendelenburg","piriformis"], "Thigh & Knee": ["femur","femoral shaft","quadriceps","hamstring","knee joint","patella","meniscus","cruciate","adductor canal","popliteal"], "Leg & Ankle": ["tibia","fibula","leg ","ankle","tibial","fibular","peroneal","achilles","compartment syndrome"], "Foot": ["tarsal","metatarsal","plantar","foot ","calcaneus","talus"], "Lower Limb Nerve Injury": ["sciatic nerve","femoral nerve","obturator nerve","tibial nerve","common peroneal","foot drop"], "Muscle Physiology & Histology": ["sarcomere","muscle contraction","actin","myosin","muscle fiber","muscle spindle","motor unit","tetany","rigor mortis","smooth muscle","cardiac muscle","isometric","isotonic","sarcoplasmic reticulum"], "NMJ Pharmacology": ["neuromuscular blocker","acetylcholine","cholinesterase","succinylcholine","atracurium","rocuronium","vecuronium","pancuronium","mivacurium","motor end plate"], "Embryology": ["limb bud","somite","myotome","sclerotome","dermatome","mesenchyme","germ layer","neural crest","neuroectoderm","teratogen"], "Bone Histology & Growth": ["osteoblast","osteoclast","osteocyte","ossification","wolff's law","haversian","rickets","osteoporosis","metaphysis","diaphysis","epiphys","periosteum"], "Joint Histology": ["synovial","cartilage","ligament","joint capsule","articular","bursa"], "Gout Pharmacology": ["gout","uric acid","allopurinol","colchicine","probenecid","febuxostat","xanthine oxidase"], "Biochemistry (GAG/Collagen/Metabolism/Minerals)": ["glycosaminoglycan","hyaluronic acid","chondroitin","dermatan","keratan","heparan","iduronic","collagen","hydroxyproline","glycogen","mcardle","zinc","copper","wilson's disease","magnesium","pyrimidine","purine"], "Vitamins & Calcium": ["vitamin d","vitamin c","calcium absorption","scurvy","parathyroid hormone","calcitonin"], "Skin & Breast Histology": ["epidermis","dermis","stratum","sebaceous","basal cell carcinoma","breast","lobule","acini","mammary"], "Back & Vertebral Column": ["vertebra","vertebral","spine","spinal cord","intervertebral disc","scoliosis"], } def classify(qtext): qlow = qtext.lower() scores = {} for topic, kws in topics.items(): cnt = sum(qlow.count(kw.lower()) for kw in kws) if cnt>0: scores[topic]=cnt return max(scores, key=scores.get) if scores else "Other" def parse_qa(qtext): m = re.search(r'Correct Answer:\s*(.+)', qtext) ans = m.group(1).split("Explanation")[0].strip() if m else "" stem = qtext.split("Correct Answer")[0].strip() stem = re.sub(r'\s+', ' ', stem) exp_m = re.search(r'Explanation:\s*(.+)', qtext, re.DOTALL) exp = re.sub(r'\s+', ' ', exp_m.group(1)).strip()[:220] if exp_m else "" return stem[:300], ans, exp by_topic = {} for year, qs in data.items(): for q in qs: t = classify(q) stem, ans, exp = parse_qa(q) by_topic.setdefault(t, []).append((year, stem, ans, exp)) # dedupe by answer text within topic to get unique facts, keep first occurrence out = {} for t, items in by_topic.items(): seen = set() uniq = [] for year, stem, ans, exp in items: key = ans.lower()[:60] if key in seen: continue seen.add(key) uniq.append((year, stem, ans, exp)) out[t] = uniq for t, items in out.items(): print(f"\n=== {t} ({len(items)} unique / {len(by_topic[t])} total) ===") with open("unique_facts.json","w") as f: json.dump(out, f) EOF

Running Command

cd /tmp/workspace/msk_analysis && python3 << 'EOF' import json with open("unique_facts.json") as f: out = json.load(f) order = ["Shoulder & Brachial Plexus","Arm & Elbow","Forearm & Wrist","Hand", "Muscle Physiology & Histology","NMJ Pharmacology", "Hip & Gluteal Region","Thigh & Knee","Leg & Ankle","Foot","Lower Limb Nerve Injury", "Embryology","Bone Histology & Growth","Joint Histology","Gout Pharmacology", "Biochemistry (GAG/Collagen/Metabolism/Minerals)","Vitamins & Calcium", "Skin & Breast Histology","Back & Vertebral Column","Other"] for t in order: items = out.get(t, []) print(f"\n########## {t} ##########") for year, stem, ans, exp in items: print(f"[{year}] Q: {stem[:130]} | ANS: {ans}") EOF

Running Command

mkdir -p /tmp/workspace/msk_analysis/output && cat > /tmp/workspace/msk_analysis/build_pdf.py << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib.units import cm from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_LEFT from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, ListFlowable, ListItem, PageBreak from reportlab.lib import colors styles = getSampleStyleSheet() h1 = ParagraphStyle('h1', parent=styles['Heading1'], fontSize=16, textColor=colors.HexColor("#1a4d8f"), spaceAfter=10) h2 = ParagraphStyle('h2', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor("#0f6e3f"), spaceBefore=12, spaceAfter=6) h3 = ParagraphStyle('h3', parent=styles['Heading3'], fontSize=11, textColor=colors.HexColor("#8a1f1f"), spaceBefore=8, spaceAfter=4) body = ParagraphStyle('body', parent=styles['Normal'], fontSize=9.5, leading=13) sched = ParagraphStyle('sched', parent=styles['Normal'], fontSize=10, leading=14, textColor=colors.HexColor("#1a4d8f")) doc = SimpleDocTemplate("/tmp/workspace/msk_analysis/output/MSK_2Day_Revision_Guide.pdf", pagesize=A4, leftMargin=1.6*cm, rightMargin=1.6*cm, topMargin=1.5*cm, bottomMargin=1.5*cm) story = [] def bullets(items): return ListFlowable([ListItem(Paragraph(i, body), bulletColor=colors.HexColor("#1a4d8f")) for i in items], bulletType='bullet', start='•', leftIndent=12) story.append(Paragraph("MSK-I: 2-Day High-Yield Revision Guide", h1)) story.append(Paragraph("Based on analysis of 437 MCQs from 2020-2024 past papers (Module Tests + 2024 Final Prof Paper)", body)) story.append(Spacer(1, 10)) story.append(Paragraph("DAY 1 - High Yield Core (63% of all past MCQs)", h2)) story.append(Paragraph("Morning (3-4 hrs): Upper Limb Anatomy | Afternoon (2-3 hrs): Muscle Physiology & NMJ Pharmacology | Evening (2-3 hrs): Lower Limb Anatomy", sched)) story.append(Paragraph("1. UPPER LIMB ANATOMY (avg 20 MCQs/paper - biggest topic every year)", h3)) story.append(bullets([ "<b>Shoulder abduction 0-15 deg lost, normal after passive start</b> = Supraspinatus tear (classic Q, repeated 2020-2024)", "<b>Surgical neck of humerus fracture</b> injures Axillary nerve + Posterior circumflex humeral artery (quadrangular space)", "<b>Mid-shaft humerus fracture</b> (radial groove) injures Radial nerve + Profunda brachii artery -> wrist drop, weak elbow extension", "<b>Erb's palsy</b> = upper trunk (C5-C6) injury, arm medially rotated/adducted ('waiter's tip'); <b>Klumpke's palsy</b> = lower trunk (C8-T1), claw hand", "<b>Winging of scapula</b> = Long thoracic nerve injury (serratus anterior palsy) - weak pushing/pressing", "<b>Posterior cord injury</b> = Axillary + Radial nerve together", "<b>Anatomical snuffbox floor</b> = Scaphoid bone; <b>Radial artery</b> runs through it and is at risk in snuffbox injury/scaphoid fracture", "<b>Median cubital vein venipuncture gone wrong</b> -> Brachial artery punctured (lies medial to biceps tendon in cubital fossa)", "<b>Carpal tunnel syndrome</b> = Median nerve compressed deep to flexor retinaculum -> thenar wasting, sensory loss lateral 3.5 fingers", "<b>Claw hand (4th/5th finger)</b> = Ulnar nerve injury -> lumbricals 3&4 weak", "<b>Proximal row carpal bones</b> (lateral to medial): Scaphoid, Lunate, Triquetrum, Pisiform - crush injury classic Q", "<b>Axillary artery divided into 3 parts</b> by Pectoralis minor", "<b>Breast lymphatic drainage</b>: upper lateral quadrant -> Anterior (pectoral) axillary nodes first", "<b>Glenoid labrum</b> deepens glenoid fossa, enhances shoulder stability", "<b>Thumb opposition</b> is key for power grip; <b>Dorsal interossei</b> ABduct fingers (DAB), <b>Palmar interossei</b> ADduct (PAD)", "<b>Deltoid</b> muscle = intramuscular injection site in infants is Vastus lateralis (not deltoid)", ])) story.append(Paragraph("2. MUSCLE PHYSIOLOGY, HISTOLOGY & NMJ PHARMACOLOGY (avg 15-20 MCQs/paper, rising trend)", h3)) story.append(bullets([ "<b>Excitation-contraction coupling</b>: AP -> T-tubules (conduct AP inward) -> Ca2+ released from Sarcoplasmic Reticulum via Ryanodine receptors -> Ca2+ binds Troponin C -> tropomyosin shifts -> myosin-actin cross-bridge (power stroke = myosin head tilts, pulls actin toward M-line)", "<b>A-band stays constant</b> in length during contraction; <b>I-band and H-zone shorten</b>", "<b>First energy source</b> in muscle = stored ATP, then creatine phosphate, then glycolysis/aerobic", "<b>Motor unit</b> = one motor neuron + all muscle fibers it innervates", "<b>Refractory period</b> = period cell cannot respond to a new stimulus", "<b>Myosin ATPase</b> hydrolyzes ATP to ADP+Pi (powers cross-bridge cycling); myosin head has 2 sites: actin-binding + ATPase", "<b>Smooth muscle histology</b>: single central nucleus, fusiform/spindle cells, non-striated, involuntary", "<b>Skeletal muscle</b>: multinucleated, peripheral nuclei, striated; connective tissue layers - Epimysium (whole muscle) > Perimysium (fascicle) > Endomysium (fiber)", "<b>Myasthenia gravis</b> = autoantibodies against ACh receptors (NOT enzyme deficiency) -> skeletal muscle only, fatigable weakness", "<b>Malignant hyperthermia</b> - triggered by Succinylcholine/volatile anesthetics, treated with Dantrolene", "<b>Depolarizing NMJ blocker</b> = Succinylcholine (nicotinic agonist); <b>Non-depolarizing</b> = Tubocurarine, Atracurium (breaks to laudanosine->seizures), Vecuronium, Rocuronium, Pancuronium (long-acting), Mivacurium (short-acting)", "<b>Acetylcholine</b> stored in presynaptic vesicles, broken down by Acetylcholinesterase in synaptic cleft", "<b>Endurance training</b> -> increased mitochondria number; <b>Resistance training</b> -> muscle fiber hypertrophy", "<b>Oxytocin</b> = milk ejection/let-down reflex + bonding; <b>Prolactin</b> = milk production", "<b>M2 receptor</b> (heart) and Nicotinic receptor (NMJ) = both cation channels but M2 is GPCR, Nicotinic is ligand-gated ion channel", ])) story.append(Paragraph("3. LOWER LIMB ANATOMY (huge in 2020 & 2024, avg 15-20 MCQs)", h3)) story.append(bullets([ "<b>Trendelenburg gait</b> (pelvis drops to OPPOSITE side on standing leg) = Gluteus medius/minimus weakness = Superior gluteal nerve injury", "<b>IM injection gluteal region</b> given in upper outer/lateral quadrant to avoid sciatic nerve", "<b>Sciatic nerve</b> usually exits BELOW piriformis through greater sciatic foramen; roots L4-S3; Superior gluteal nerve/vessels exit ABOVE piriformis", "<b>Difficulty rising from sitting</b> = Gluteus maximus weak = Inferior gluteal nerve", "<b>Femoral shaft fracture</b> -> damages Profunda femoris (deep femoral) artery", "<b>Popliteal fossa deepest structure</b> = Popliteal artery (VAN from superficial to deep: vein, artery, nerve - deepest is artery)", "<b>Rectus femoris</b> - only quadriceps muscle that both flexes hip AND extends knee", "<b>Popliteus</b> unlocks the knee joint to permit flexion", "<b>ACL</b> prevents anterior displacement of tibia on femur; <b>PCL</b> prevents posterior displacement of tibia (=anterior displacement of femur on tibia)", "<b>Great saphenous vein</b> - used as CABG graft; runs anterior to medial malleolus; saphenous nerve also anterior to medial malleolus", "<b>Common peroneal (fibular) nerve</b> injury = foot drop (loss of dorsiflexion); <b>Deep fibular nerve</b> = sensory loss between great & 2nd toe; <b>Tibial nerve</b> = loss of plantarflexion/toe standing", "<b>Ankle inversion injury</b> (most common) damages Anterior talofibular ligament (lateral ligament)", "<b>Achilles (tendocalcaneus)</b> = strongest tendon of body, controls plantarflexion", "<b>Medial longitudinal arch keystone</b> = Talus (head of talus); <b>Lateral longitudinal arch keystone</b> = Cuboid", "<b>Sole of foot 2nd layer</b> = Lumbricals + Quadratus plantae", ])) story.append(PageBreak()) story.append(Paragraph("DAY 2 - Consolidation + Fast-Growing 2024 Topics", h2)) story.append(Paragraph("Morning (2-3 hrs): Embryology + Bone/Joint Histology | Afternoon (2-3 hrs): Pharmacology + Biochemistry + Vitamins | Evening: Skin/Breast/Misc + Full past-paper mock (re-attempt all 6 papers rapid-fire)", sched)) story.append(Paragraph("4. EMBRYOLOGY (steady 5-6 MCQs every year - easy guaranteed marks)", h3)) story.append(bullets([ "<b>Limb bud / bones & muscles of limb</b> arise from (parietal/somatic) layer of Lateral Plate Mesoderm; <b>limb musculature</b> specifically from Myotomes of somites", "<b>Vertebrae</b> develop from Sclerotome of somite (paraxial mesoderm)", "<b>Iris/eye muscles</b> develop from Neural plate ectoderm (neuroectoderm) - NOT mesoderm (exception to rule)", "<b>Head & neck muscles</b> from Somitomeres + occipital somites (paraxial mesoderm); NOT from endoderm", "<b>Teratogen-sensitive period for limb defects</b> = 4th-8th week (embryonic period, organogenesis)", "<b>Syndactyly</b> (fused fingers) = failure of apoptosis in interdigital mesenchyme/hand plate; normally Apical Ectodermal Ridge signals apoptosis to separate digits", "<b>Amelia</b> (absent limb) traced to failure of lateral plate mesoderm outgrowth", "<b>Upper limb before rotation</b> lies ventrally with thumb side facing medially, then laterally rotates", "<b>Skull vault (calvaria)</b> = membranous ossification; <b>Skull base</b> = endochondral ossification", ])) story.append(Paragraph("5. BONE HISTOLOGY, GROWTH & PATHOLOGY", h3)) story.append(bullets([ "<b>Growth in height/length</b> occurs at Epiphyseal (growth) plate, within Metaphysis region", "<b>Osteocytes</b> sit in lacunae, connected via canaliculi; found in Compact bone (Haversian systems/osteons -> concentric lamellae)", "<b>Osteoporosis</b> = decreased bone density/mass, normal mineralization (vs Osteomalacia = defective mineralization, low Ca, high ALP)", "<b>Osteoporosis Rx</b>: Alendronate = most potent ORAL bisphosphonate; Zoledronate = most potent PARENTERAL bisphosphonate; Denosumab = RANKL inhibitor; Romosozumab = sclerostin inhibitor (used when bisphosphonates fail)", "<b>Calcitonin</b> inhibits osteoclasts (decreases bone resorption); <b>PTH</b> stimulates osteoclastic activity, increases blood Ca2+", "<b>Fracture healing sequence</b>: Hematoma/inflammation -> Soft callus -> Hard callus -> Remodeling", "<b>Osteomyelitis</b>: fever + localized bone pain/tenderness/warmth/swelling; pathognomonic sign = Sequestrum (dead bone fragment)", "<b>Rickets</b> (children) / <b>Osteomalacia</b> (adults) both from Vitamin D deficiency", ])) story.append(Paragraph("6. JOINT ANATOMY & HISTOLOGY", h3)) story.append(bullets([ "<b>Osteoarthritis</b> = mechanical wear/loss of articular cartilage (degenerative, NOT autoimmune)", "<b>Rheumatoid arthritis</b> = autoimmune chronic inflammatory synovitis (systemic)", "<b>Elastic cartilage</b> (epiglottis, ear) stained with Verhoeff's stain; contains elastin fiber bundles (gives flexibility)", "<b>Hyaline cartilage</b> = costal cartilage, articular surfaces; <b>Fibrocartilage</b> = intervertebral disc (annulus fibrosus), menisci - dense collagen, no elastic fibers", "<b>Periosteum outer fibrous layer</b> = attachment for muscles/tendons/ligaments (Sharpey's fibers); inner layer = osteogenic", ])) story.append(Paragraph("7. GOUT, RHEUMATOLOGY & RELATED PHARMACOLOGY (huge spike in 2021 - watch closely)", h3)) story.append(bullets([ "<b>Allopurinol & Febuxostat</b> = Xanthine oxidase inhibitors (decrease URIC ACID SYNTHESIS) - chronic gout prophylaxis", "<b>Probenecid & Sulphinpyrazone</b> = Uricosuric agents (increase renal excretion of uric acid)", "<b>Colchicine</b> = drug of choice for ACUTE gout attack; inhibits leukocyte migration/microtubule (tubulin) polymerization - anti-inflammatory, NOT for chronic uric acid lowering", "<b>HGPRT deficiency</b> -> Lesch-Nyhan syndrome (severe, self-mutilation) or gout in milder form; <b>Xanthine oxidase deficiency</b> -> Xanthinuria", "<b>DMARDs</b>: conventional synthetic = Azathioprine, Methotrexate; biologic = Adalimumab, Etanercept, Rituximab, Abatacept", ])) story.append(Paragraph("8. BIOCHEMISTRY: GAGs, Collagen, Metabolism & Minerals (sharply increasing in 2024)", h3)) story.append(bullets([ "<b>Iduronic acid</b> found in Dermatan sulfate and Heparin/Heparan sulfate (memorize: NOT in hyaluronic acid or keratan sulfate)", "<b>Collagen structure</b>: Glycine at every 3rd position (Gly-X-Y repeat); Prolyl/Lysyl hydroxylase hydroxylates proline/lysine (needs Vitamin C) to stabilize triple helix", "<b>Vitamin C deficiency</b> = Scurvy = defective collagen hydroxylation -> bleeding gums, poor wound healing, bruising", "<b>Collagen secreted by</b> Fibroblasts (also chondroblasts for cartilage, osteoblasts for bone)", "<b>Marfan syndrome</b> = Fibrillin-1 defect; <b>Ehlers-Danlos syndrome</b> = defect in collagen post-translational modification/structure; <b>Osteogenesis imperfecta</b> = Type I collagen defect", "<b>McArdle's disease</b> = Muscle glycogen phosphorylase deficiency (exercise intolerance, no lactate rise); <b>Von Gierke's</b> = Glucose-6-phosphatase deficiency (hepatomegaly, fasting hypoglycemia)", "<b>Glycogenolysis end product</b> in muscle = Glucose-6-phosphate (used locally, no G6Pase in muscle)", "<b>Copper+Zinc containing enzyme</b> = Superoxide dismutase (Cu/Zn-SOD)", "<b>Wilson's disease</b> = Copper accumulation (Kayser-Fleischer rings, liver/CNS disease); treated with Zinc / chelators (penicillamine)", "<b>Zinc deficiency</b> = poor wound healing, loss of taste (hypogeusia)", "<b>Magnesium</b> = drug of choice for pre-eclampsia (decreases neuromuscular irritability); hypercalcemia/hypermagnesemia inhibit renal Mg reabsorption", "<b>Pyrimidine synthesis</b>: Carbamoyl phosphate formed in CYTOPLASM by CPS-II using nitrogen from Glutamine (vs urea cycle CPS-I in mitochondria uses ammonia)", "<b>Purine de novo synthesis</b> does NOT occur in brain/RBCs (they rely on salvage pathway - HGPRT)", ])) story.append(Paragraph("9. VITAMINS, CALCIUM & BONE-MINERAL HORMONES (rising in 2024)", h3)) story.append(bullets([ "<b>Vitamin D pathway</b>: Skin (7-dehydrocholesterol) -> Liver: 25-hydroxycholecalciferol (calcidiol, STORAGE form) -> Kidney: 1,25-dihydroxycholecalciferol (calcitriol, ACTIVE form, has 3 OH groups)", "<b>Calcitriol</b> increases gut calcium absorption via calcium-binding proteins (calbindin)", "<b>PTH</b>: increases bone resorption (Ca release), increases renal Ca reabsorption, increases renal 1-alpha-hydroxylase activity (more calcitriol) -> increases gut Ca absorption indirectly", "<b>Calcitonin</b> secreted by Thyroid parafollicular C-cells; lowers blood calcium by inhibiting osteoclasts", "<b>Low Ca + High Phosphate</b> = Hypoparathyroidism (PTH deficiency)", "<b>Insulin release</b> requires Calcium influx into beta cells", ])) story.append(Paragraph("10. SKIN, BREAST & GLANDULAR HISTOLOGY", h3)) story.append(bullets([ "<b>Basal cell carcinoma</b> arises from Stratum basale (basal layer) of epidermis", "<b>Stratum corneum</b> = outermost, water-resistant/water-loss barrier layer", "<b>Stratum lucidum</b> present only in thick skin (palms & soles)", "<b>Sebaceous glands</b> = Holocrine secretion (entire cell disintegrates into secretion)", "<b>Breast (mammary gland)</b> = Compound tubulo-alveolar (tubulo-acinar) gland; lactating breast shows distended acini/alveoli with milk, thinned septa", ])) story.append(Paragraph("11. QUICK-FIRE MISC (Back, thorax, research methods - low yield but easy 1-2 marks)", h3)) story.append(bullets([ "<b>Pott's disease</b> (spinal TB) caused by Mycobacterium tuberculosis", "<b>Femoral pulse</b> palpated at Mid-inguinal point", "<b>Nicotinic receptor</b> = ligand-gated ion channel; <b>M2 receptor</b> = GPCR (on heart, slows HR)", "<b>Type A personality</b> = competitive, time-pressured, hostile (CVD risk); <b>Control group</b> = baseline for comparing experimental effect", ])) story.append(Spacer(1,10)) story.append(Paragraph("STUDY STRATEGY FOR YOUR 2 DAYS", h2)) story.append(bullets([ "<b>Day 1</b>: Focus only on the 3 biggest topics above (Upper Limb, Muscle Physiology/Pharm, Lower Limb) = ~63% of all historical MCQs. Do NOT move to Day 2 material until these are solid.", "<b>Day 2 morning/afternoon</b>: Cover remaining topics in the order listed (Embryology -> Bone/Joint -> Pharm -> Biochem -> Vitamins) - these are lower per-topic yield individually but together are still ~35% of the paper.", "<b>Day 2 evening</b>: Re-attempt all 6 attached past papers as a timed mock (or at minimum, re-read every question stem + correct answer once) - many questions REPEAT almost verbatim across years (e.g. supraspinatus abduction, gout drugs, Trendelenburg gait, snuffbox artery), so recognizing the pattern is worth more than re-deriving from first principles.", "<b>Pay special attention</b> to 2024 papers - they show clear expansion into biochemistry (GAGs, collagen, minerals) and vitamins/calcium that were minimal in 2020-2022. If your upcoming exam follows the same setters, expect similar cross-disciplinary questions.", ])) doc.build(story) print("PDF created successfully") PYEOF python3 /tmp/workspace/msk_analysis/build_pdf.py

I built you a complete 2-day, priority-ordered revision plan pulled directly from the actual repeated questions across all 6 papers (437 MCQs analyzed).

MSK 2Day Revision Guide

PDF Document · PDF

Day 1 — Core high-yield (≈63% of all past MCQs)

  1. Upper Limb Anatomy (~20 MCQs/paper, biggest topic every single year) — supraspinatus abduction tear, surgical neck humerus fracture (axillary nerve + posterior circumflex artery), radial groove fracture (wrist drop), Erb's vs Klumpke's palsy, long thoracic nerve winging, anatomical snuffbox/scaphoid, carpal tunnel, claw hand, breast lymphatics.
  2. Muscle Physiology, Histology & NMJ Pharmacology (rising sharply, 15-23/paper in 2021 & 2024) — excitation-contraction coupling, A-band/I-band changes, motor unit, myasthenia gravis, depolarizing vs non-depolarizing NMJ blockers, malignant hyperthermia/dantrolene, oxytocin/prolactin.
  3. Lower Limb Anatomy — Trendelenburg gait, sciatic nerve/piriformis relation, ACL vs PCL, popliteal fossa contents, common peroneal nerve foot drop, foot arches.

Day 2 — Consolidation + fast-growing 2024 topics

  1. Embryology (limb bud, sclerotome/myotome, teratogen window, syndactyly)
  2. Bone histology/growth & pathology (osteoporosis drugs, fracture healing, osteomyelitis)
  3. Joint anatomy/histology (OA vs RA, cartilage types)
  4. Gout & rheumatology pharmacology (huge in 2021 — allopurinol/febuxostat vs probenecid vs colchicine, HGPRT)
  5. Biochemistry — GAGs/collagen/metabolism/minerals (sharp 2024 increase — iduronic acid, collagen Gly-X-Y, McArdle's, Wilson's, Mg/Zn)
  6. Vitamins & calcium-bone hormones (vitamin D pathway, PTH, calcitonin)
  7. Skin/breast histology + quick-fire misc (Pott's disease, receptors, personality types)
The PDF has the full fact-list for each section plus a suggested hour-by-hour schedule. My key advice for your 2 days: spend Day 1 entirely on the top 3 topics since they're nearly two-thirds of all historical marks, and use Day 2 evening to rapid-fire re-read all 437 question stems + answers from the 6 papers — many questions repeat almost verbatim year to year, so pattern recognition will get you more marks per minute than deep re-derivation.

That pdf is fine but can u explain each topic one by one

Asking for Preferences

I'll go through all 11 topics one by one (deep explanation each). Given time is tight, which should I start with?

Now let me extract full text from each PDF to text files for analysis.Let me look at the structure of each file to understand how questions/topics are organized.Good, question splitting matches counts exactly. Now let's classify each question into MSK topics using keyword matching.This gives a clean picture. Now let me present the final comprehensive analysis.I went through all 6 papers (437 MCQs total), extracted every question, and classified each by topic. Here's the full breakdown.

Total MCQs per paper

YearPaperTotal MCQs
2020MSK Module Test90
2021MSK-I Module Test79
2022MSK-I Module Test55
2023MSK-I Module Test24
2024MSK-I Module Test102
2024MSK-I Final Prof Paper-II87

Topic-wise MCQ distribution (year by year)

Topic Category2021222324-Module24-FinalTotal
Upper Limb Anatomy (shoulder, brachial plexus, arm, elbow, forearm, wrist, hand, nerve injuries)21212362117109
Muscle Physiology, Histology & NMJ Pharmacology (contraction types, sarcomere, action potential, neuromuscular blockers, acetylcholine)142074231987
Lower Limb Anatomy (hip, gluteal region, thigh, knee, leg, ankle, foot, nerve injuries)24753211878
Biochemistry (GAGs, collagen, glycogen/energy metabolism, minerals)441311629
Embryology (limb development, germ layers, teratogenesis)66405627
Gout, Rheumatology & Anti-inflammatory Pharmacology513111223
Bone Histology, Growth & Pathology31454421
Joint Anatomy & Histology42413418
Vitamins & Calcium/Nutrition20206616
Skin, Breast & Glandular Histology44203114
Other (thorax, skull, genetics, research methodology, misc)21113412
Back & Vertebral Column1010103

Key takeaways — Most important (highest-yield) topics across all 5 years

1. Upper Limb Anatomy — the single most tested area every single year (109/437 = ~25%)
  • Shoulder & brachial plexus (rotator cuff muscles, quadrangular space, axillary/posterior circumflex vessels) is consistently the biggest subtopic (~56 MCQs total, present every year, 9-11 questions/paper).
  • Forearm & wrist (radius/ulna, anatomical snuffbox, pronation/supination) is the second-biggest upper limb subtopic (39 MCQs).
  • This region never drops below 6 MCQs in any paper — it's a guaranteed high-weightage area.
2. Muscle physiology/histology + neuromuscular pharmacology — second most important (87 MCQs)
  • Sharply increasing trend: only 14 in 2020 but jumped to 20-23 in 2021 and both 2024 papers. This is now one of the highest-yield areas in recent papers.
  • Sub-focus: contraction mechanics (isotonic/isometric), NMJ blockers (succinylcholine, atracurium, rocuronium), acetylcholine physiology.
3. Lower Limb Anatomy — third most important (78 MCQs)
  • Very heavily tested in 2020 (24 MCQs — the peak) but fell sharply in 2021-2023 (only 3-7 MCQs), then rebounded strongly in both 2024 papers (21 and 18 MCQs). Thigh/knee and leg/ankle are the dominant subtopics.
4. Notable year-specific spikes worth flagging:
  • 2021: Gout & anti-gout pharmacology exploded to 13 MCQs (vs. 1-5 in other years) — almost every antigout drug (allopurinol, colchicine, probenecid, febuxostat) was tested repeatedly that year.
  • 2024 (both papers): Biochemistry (GAGs, collagen, glycogen metabolism, minerals like zinc/copper/Wilson's disease) rose sharply — 11 and 6 MCQs respectively, far above prior years (1-4). This signals a broadening of the exam beyond pure gross anatomy into biochemistry integration.
  • 2024: Vitamins/calcium metabolism also spiked (6 MCQs in each 2024 paper vs. 0-2 before).
  • 2023 is the outlier: only 24 total MCQs (much shorter test), with unusually high relative weight on bone histology/growth (5/24) and low representation of muscle physiology — likely a shorter/partial module test rather than a full-length one.

Practical exam-prep priority ranking

  1. Upper limb anatomy (especially shoulder/brachial plexus and forearm/wrist) - highest and most consistent yield every year
  2. Muscle physiology & NMJ pharmacology - rapidly growing weightage, especially in 2024
  3. Lower limb anatomy (thigh/knee, leg/ankle) - historically huge (2020) and resurging in 2024
  4. Embryology of the limb (germ layers, teratogenic periods) - stable ~5-6 MCQs almost every year, easy consistent marks
  5. Bone histology/growth & joint histology - steady presence (3-5 MCQs/year), low-effort high-return topics
  6. Biochemistry integration (GAGs, collagen, glycogen storage, minerals) and vitamins/calcium - increasingly important in the newest (2024) papers, worth extra attention if preparing for an upcoming exam, since the trend suggests continued emphasis
  7. Gout pharmacology - watch for recurrence since it was a major 2021 focus that could resurface
If you want, I can also pull out the exact question list per topic per year (e.g., all shoulder/brachial plexus questions from 2020-2024) so you can revise from the actual repeated questions.I built you a complete 2-day, priority-ordered revision plan pulled directly from the actual repeated questions across all 6 papers (437 MCQs analyzed).

MSK 2Day Revision Guide

PDF Document · PDF

Day 1 — Core high-yield (≈63% of all past MCQs)

  1. Upper Limb Anatomy (~20 MCQs/paper, biggest topic every single year) — supraspinatus abduction tear, surgical neck humerus fracture (axillary nerve + posterior circumflex artery), radial groove fracture (wrist drop), Erb's vs Klumpke's palsy, long thoracic nerve winging, anatomical snuffbox/scaphoid, carpal tunnel, claw hand, breast lymphatics.
  2. Muscle Physiology, Histology & NMJ Pharmacology (rising sharply, 15-23/paper in 2021 & 2024) — excitation-contraction coupling, A-band/I-band changes, motor unit, myasthenia gravis, depolarizing vs non-depolarizing NMJ blockers, malignant hyperthermia/dantrolene, oxytocin/prolactin.
  3. Lower Limb Anatomy — Trendelenburg gait, sciatic nerve/piriformis relation, ACL vs PCL, popliteal fossa contents, common peroneal nerve foot drop, foot arches.

Day 2 — Consolidation + fast-growing 2024 topics

  1. Embryology (limb bud, sclerotome/myotome, teratogen window, syndactyly)
  2. Bone histology/growth & pathology (osteoporosis drugs, fracture healing, osteomyelitis)
  3. Joint anatomy/histology (OA vs RA, cartilage types)
  4. Gout & rheumatology pharmacology (huge in 2021 — allopurinol/febuxostat vs probenecid vs colchicine, HGPRT)
  5. Biochemistry — GAGs/collagen/metabolism/minerals (sharp 2024 increase — iduronic acid, collagen Gly-X-Y, McArdle's, Wilson's, Mg/Zn)
  6. Vitamins & calcium-bone hormones (vitamin D pathway, PTH, calcitonin)
  7. Skin/breast histology + quick-fire misc (Pott's disease, receptors, personality types)
The PDF has the full fact-list for each section plus a suggested hour-by-hour schedule. My key advice for your 2 days: spend Day 1 entirely on the top 3 topics since they're nearly two-thirds of all historical marks, and use Day 2 evening to rapid-fire re-read all 437 question stems + answers from the 6 papers — many questions repeat almost verbatim year to year, so pattern recognition will get you more marks per minute than deep re-derivation.Your credits are exhausted. You can purchase a top-up or subscribe to a plan to continue using Orris. If you're already subscribed, your daily credits will reset tomorrow.
This is a shared conversation. Sign in to Orris to start your own chat.