基于SNOMED CT因果关系定性数据集的Cypher查询请求
Cypher查询语句:从SNOMED CT提取体征/症状与疾病/障碍的因果关系数据集
以下是适配SNOMED CT US 20230301版本、Neo4j 4.4.22的Cypher查询,用于构建你需要的因果定性数据集:
1. 提取「体征/症状 → 疾病/障碍」的因果关系(症状为因,疾病为果)
该查询利用SNOMED的Causes关系(ID:246061005),筛选活跃的体征/症状节点及其关联的疾病/障碍节点:
MATCH (symptom:Concept {active: true}) // 限定节点为体征/症状(属于SNOMED概念"Sign or symptom",ID:272379006) WHERE EXISTS { MATCH (symptom)-[:ISA*]->(:Concept {id: '272379006'}) } // 匹配症状与疾病的因果关系 MATCH (symptom)-[:RELATIONSHIP {typeId: '246061005', active: true}]->(disease:Concept) // 限定节点为疾病/障碍(属于SNOMED概念"Disease",ID:64572001) WHERE EXISTS { MATCH (disease)-[:ISA*]->(:Concept {id: '64572001'}) } // 返回核心字段 RETURN symptom.fsn AS symptom_name, symptom.id AS symptom_id, disease.fsn AS disease_name, disease.id AS disease_id, 'Causes' AS relationship_type LIMIT 100;
2. 提取「疾病/障碍 ← 体征/症状」的因果关系(症状为疾病的诱因)
若你需要的是疾病的致病原因包含体征/症状,可使用SNOMED的Has cause关系(ID:116680003):
MATCH (disease:Concept {active: true}) WHERE EXISTS { MATCH (disease)-[:ISA*]->(:Concept {id: '64572001'}) } MATCH (disease)-[:RELATIONSHIP {typeId: '116680003', active: true}]->(symptom:Concept) WHERE EXISTS { MATCH (symptom)-[:ISA*]->(:Concept {id: '272379006'}) } RETURN symptom.fsn AS cause_name, symptom.id AS cause_id, disease.fsn AS result_name, disease.id AS result_id, 'Has cause' AS relationship_type LIMIT 100;
关键说明
active: true:过滤已废弃的概念与关系,保证数据的有效性。ISA*:匹配节点在SNOMED层级中的所有父类,确保准确筛选目标概念类别。- 可根据需求替换
fsn(全指定名称)为pt(首选术语),或添加其他概念属性。 - 全量查询时移除
LIMIT子句即可,建议先通过小批量测试验证结果。
内容的提问来源于stack exchange,提问作者saarthak gupta
相关产品推荐
相关产品推荐

