{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2605-20188","title":"GraphDiffMed: Knowledge-Constrained Differential Attention with Pharmacological Graph Priors for Medication Recommendation","arxiv_id":"2605.20188","date":"2026-03-21","proceeding":null,"authors":["Krati Saxena","Tomohiro Shibata"],"abstract":"Recommending safe and effective medication combinations from electronic health records (EHRs) is a core clinical AI problem, yet it remains difficult because patient trajectories are long, noisy, and clinically heterogeneous. Existing methods typically excel at either temporal modeling across visits or pharmacological knowledge integration (e.g., drug-drug interactions, DDIs), but rarely achieve both while robustly suppressing noise. We present GraphDiffMed, a knowledge-constrained medication recommendation framework built on dual-scale Differential Attention v2. Differential attention is applied at both intra-visit and inter-visit levels to filter spurious signals within encounters and across longitudinal history, while pharmacological constraints are incorporated during learning. Experiments on MIMIC-III and ablation studies show that this design consistently improves recommendation quality and ranking over strong baselines while achieving a more favorable safety performance balance. We further find that the strongest-performing configuration uses only demographic auxiliary features under our experimental setting. Overall, GraphDiffMed demonstrates that combining noise-aware attention with pharmacological constraints yields more reliable and clinically meaningful medication recommendation. We open-source our code at https://github.com/saxenakrati09/GraphDiffMed.","url_abs":"https://arxiv.org/abs/2605.20188","url_pdf":"https://arxiv.org/pdf/2605.20188","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.20188","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.20188"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/saxenakrati09/GraphDiffMed","reach":null}],"summary":{"ran":7,"unverified":4},"by_repo_kind":{"found_in_text":{"samples":11,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"67284335dd496e60","entry":"CausalWeight","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"67284335dd496e60"}},{"code_sha256_prefix":"77a2f0191eea09fe","entry":"DiffCrossAttention_intravisit","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"77a2f0191eea09fe"}},{"code_sha256_prefix":"d8f6a1a2a70d8225","entry":"GIN","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8f6a1a2a70d8225"}},{"code_sha256_prefix":"7de52f5a0a3cadde","entry":"LearnableMaskLayer","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7de52f5a0a3cadde"}},{"code_sha256_prefix":"cbc1e928132dfbcd","entry":"SelfAttention","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cbc1e928132dfbcd"}},{"code_sha256_prefix":"0f66203962c9e5dd","entry":"hetero_effect_graph","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0f66203962c9e5dd"}},{"code_sha256_prefix":"c6a867bdc540ec2b","entry":"homo_relation_graph","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c6a867bdc540ec2b"}},{"code_sha256_prefix":"afb1d92aa3fc5b88","entry":"CausaltyReview","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"afb1d92aa3fc5b88"}},{"code_sha256_prefix":"9d3f60142b8ee979","entry":"DiffCrossAttention_intervisit","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9d3f60142b8ee979"}},{"code_sha256_prefix":"e8606ace6a79e2e6","entry":"GraphDiffMed","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e8606ace6a79e2e6"}},{"code_sha256_prefix":"6fe5cfad897a3bfd","entry":"encode_text","repo":"saxenakrati09/GraphDiffMed","repo_kind":"found_in_text","path":"src/modules/GraphDiffMed.py","file_url":"https://github.com/saxenakrati09/GraphDiffMed/blob/HEAD/src/modules/GraphDiffMed.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6fe5cfad897a3bfd"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}