![](/img/trans.png)
[英]How do I make sure a path between two nodes runs through all the connections of an intermediate node?
[英]How do I match nodes on all matching connections?
我想返回所有与p1:Encounter具有相同ICD9DX代码的遭遇(p2)。 因此,如果p1具有3个ICD9DX代码,我想找到具有相同3个代码的p2节点。 最终,我想知道如何编写查询,以便它仅返回仅具有这三个代码的p2节点,以及如何编写查询,以便使其返回至少具有这三个代码的节点。 我尝试从已回答的其他问题中找出答案,但到目前为止仍未成功。 以下是我的最新迭代。
MATCH path=((p1:Encounter {PatientAccount: '1003149560'})-[:HasICD9Dx]-(i:ICD9DX)-[:HasICD9Dx]-(p2:Encounter))
WHERE ALL(p1 in tail(nodes(path)) WHERE ()-[:HasICD9Dx]->p1)
RETURN p2
我是Neo4j的新手,所以对逻辑的任何评论都将对您有所帮助。 我已经看过其他使用WITH处理类似主题的文章,但是我很难理解WITH子句。 也许我只需要深入阅读并阅读手册即可。
我终于想通了(看来)。 要返回至少与p1相关的代码匹配的遭遇:
MATCH (p1:Encounter {PatientAccount: '1002844934'})-[:HasICD9Dx]-(i:ICD9DX)
WITH COUNT(i) AS codes, p1
MATCH (p2:Encounter)-[:HasICD9Dx]-(i:ICD9DX)-[:HasICD9Dx]-(p1)
WITH count(i) as foundCodes, codes, p2
WHERE foundCodes = codes
MATCH (p2)-[:HasICD9Dx]-(i:ICD9DX)
WITH count(i) as totalCodes, codes, p2
RETURN p2.PatientAccount, totalCodes
要返回与p1完全相同且没有更多代码的遭遇,请执行以下操作:
MATCH (p1:Encounter {PatientAccount: '1002844934'})-[:HasICD9Dx]-(i:ICD9DX)
WITH COUNT(i) AS codes, p1
MATCH (p2:Encounter)-[:HasICD9Dx]-(i:ICD9DX)-[:HasICD9Dx]-(p1)
WITH count(i) as foundCodes, codes, p2
WHERE foundCodes = codes
MATCH (p2)-[:HasICD9Dx]-(i:ICD9DX)
WITH count(i) as totalCodes, codes, p2
WHERE totalCodes = codes
RETURN p2.PatientAccount
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.