繁体   English   中英

如何匹配所有匹配连接上的节点?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM