图谱实录

医院里的一天

此 GraphGist 是为信息存储库课程中关于 Neo4J 的小组作业而创建的。它代表了医生在医院一天内进行的医疗咨询。

作者

  • Pablo Álvarez Álvarez

  • Jesus Fdez. Velasco

  • Joaquín Ceballos Gómez

grafo

医院里的一天

领域元素及其关系

医生

在特定时间接诊病人,此外还可以接受制药公司的资助。

病人

患有疾病,由医生接诊。

疾病

由特定的药物治愈。

药物

由制药公司制造,治疗疾病,此外可能与其他药物不兼容。

制药公司

制造药物,最终可能会资助某些医生的工作,金额待定。

图谱创建

查询

查询 1

列出所有名字以给定子字符串开头的医生

例如 Fe

match (n:medico) where n.nombre starts with "Fe" return n.nombre, n.apellido

查询 2

输入医生接诊的病人数量

例如名字叫 Federica 姓 SANZ SANZ 的医生

match (n:medico)-[r:ATIENDE_A]->(p:paciente) where n.nombre = "Federica" and n.apellido = "SANZ SANZ" return count(r)

查询 3

列出所有接诊病人数量达到最小值的医生

例如 5 个病人

match (n:medico)-[r:ATIENDE_A]->(p:paciente)
with n.nombre as nombre, n.apellido as apellido, count(r) as numero
where numero >= 5
return nombre, apellido, numero

查询 4

列出所有患有两种疾病的病人,这两种疾病由相互不兼容的药物治愈。列出疾病和药物。

match (p:paciente)-[:PADECE]->(e:enfermedad), (p)-[:PADECE]->(n:enfermedad),
(e)-[:CURADA_POR]->(m:medicina), (n)-[:CURADA_POR]->(k:medicina),
(m)<-[:INCOMPATIBLE_CON]->(k)
return DISTINCT p.nombre as nombre, p.apellido as apellido, e.nombre as enfermedad, m.nombre as medicina

查询 5

列出所有有感染埃博拉风险的人。最大深度级别 = 5,其中级别 0 是埃博拉病人。

当一个人接触过病人,或接触过曾接触过有风险的人时,他就处于危险之中。

MATCH (p:paciente)-[:PADECE]-(e:enfermedad)
WHERE e.nombre = 'Ebola'
WITH p AS enRiesgo
MATCH (enRiesgo)-[:ATIENDE_A*0..5]-(otro)
WHERE otro:paciente or otro:medico
RETURN DISTINCT labels(otro) AS tipo, otro.nombre AS nombre, otro.apellido AS apellido

查询 6

列出接诊病人且其疾病由资助该医生的制药公司制造的药物治愈的医生,前提是资助金额高于该制药公司的平均资助金额。

match (f:farmaceutica)-[r:FINANCIA_A]->()
with avg(r.importe) as media, f as farma
MATCH (m:medico)-[:ATIENDE_A]->(:paciente)-[:PADECE]->(:enfermedad)-[:CURADA_POR]-(:medicina)-[:FABRICADA_POR]->(farma)-[r:FINANCIA_A]->(m)
where r.importe > media
RETURN DISTINCT m.nombre as nombre, m.apellido as apellido, farma.nombre as farmaceutica, r.importe as importe, media as media

轮到你了!

对图谱进行你认为有趣的查询

© . All rights reserved.