9

我正在使用 Neo4j 图形数据库来存储医学症状和疾病。其背后的目的是根据用户输入系统的症状推荐一个人可能患有的疾病。现在我已经存储了以下各种症状。医学症状

这是一个非常基本的图形结构,我通过密码查询匹配模式,例如发烧、头痛和流感的原因相交,从中检索疾病。我想要实现的是构建一个涉及位置和年龄因素等的复杂结构,并编写各种算法以通过有效遍历来检索连接最多的节点。我无法在互联网上找到如此复杂的结构,所以任何建议都将不胜感激。尽管它不像问题那样编码太多,但请提供一些建议,因为它只是一个大学项目,我必须在这方面走得更远。

4

3 回答 3

2

这是一个可以回答复杂查询的简单模型。

有 3 种类型的节点:

  1. 症状或因素- 这可以是任何症状、温度、位置、年龄、性别或任何可能导致疾病的因素。
  2. 患者或病例- 此节点将所有必需的症状节点作为传入节点,并将连接到一种疾病。
  3. 疾病- 此节点将指示疾病。

使用患者数据构建此图后,您将拥有一个足够复杂的图表来执行以下操作:

  1. 根据当前患者的症状,可以编写一个简单的路径查询来获取最可能的疾病。这不仅会为您提供一种疾病,还会为您提供可能的疾病列表和基于过去患者记录的置信度评分。
  2. 您还可以显示有趣的统计数据,例如位置 A 和年龄 B 的所有患者通常会患上疾病 C。
  3. 这也将是所有过去患者记录的数据库。

由于它是一个大学项目,您可以先尝试一些模拟数据。这种方法应该是有效性和简单性的完美结合。

于 2014-03-14T16:09:18.863 回答
1

也许你应该重新考虑你的模型。恕我直言,您没有将症状、疾病和检查分开。

看看 Neo4J 标签

(:symptom)-[BELONGS]->(:symptomGroup)-[MAY_INDICATE]->(:illNess) (:exam)-[VERIFIES]->(:illNess)

你必须对症状进行分组

因为这是一个大学项目,也许你不是医生,所以你不应该建立一个“治愈一切”的系统。

处理未找到解决方案的情况。

我不应该这样写,但我知道出色的工作人员@Vidal(法国医学出版商)最近发表了关于该主题的图表专家。

于 2014-03-11T11:19:12.923 回答
0

要找到连接最多的节点,也就是关系最多的节点,请使用

MATCH (n)-[r]-()
RETURN n, count(r) 
ORDER by count(r) desc
LIMIT 1

以上适用于 Neo4j 2.0。请注意,这会遍历整个图表。但是,如果您的要求是这样的,则您必须做脏活。

于 2014-03-06T13:59:43.257 回答