9

私は Neo4j グラフ データベースを使用して、病状や病気を保存しています。その背後にある目的は、ユーザーがシステムに入力した症状から、その人が持つ可能性のある病気を推奨することです。現在、私は次のようにさまざまな症状を保存しています。医学的症状

これは非常に基本的なグラフ構造であり、発熱、頭痛、インフルエンザによる原因の交差など、サイファー クエリを使用してパターンを照合することにより、病気を検索しています。私が達成したいのは、場所や年齢の要因などを含む複雑な構造を構築し、効率的にトラバースして最も接続されているノードを検索するためのさまざまなアルゴリズムを作成することです。このような複雑な構造をインターネットで見つけることができないので、何か提案をいただければ幸いです。質問のようなコーディングはあまりありませんが、これは単なる大学のプロジェクトであるため、いくつかの提案をお願いします。これについてはさらに進めなければなりません。

4

3 に答える 3

2

これは、複雑なクエリに答えることができる単純なモデルの 1 つです。

3 種類のノードがあります。

  1. 症状または要因- これは、症状、温度、場所、年齢、性別、または病気の原因となる可能性のある要因です。
  2. 患者またはケース- このノードには、必要なすべての症状ノードが着信ノードとして含まれ、1 つの疾患に接続されます。
  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 (フランスの医療出版社) で働く優秀な ppl が最近、そのトピックに関するグラフギストを出版したことを知っています.

于 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 に答える