logo

NebulaGraph

Covid Tracing 疫情防控

Schema 设计

本Demo 使用了 疫情防控数据集 ,采用 NebulaGraph 建立相关模型结构,数据导入采用 Nebula-Importer 工具。

场景描述

针对新冠病毒传播快的特点,需要快速排查经核酸检查确诊的人员的时空伴随者,即在相同时间段内跟确诊人员出现在同一个空间中的人员。针对确诊者、密接者、正常人员进行不同健康码颜色的标注,针对是否形成传播链的地区进行风险地区的标注等

操作步骤

1. 查看所有人员核酸检测结果概况

统计总的阴性、阳性人员数量,true 代表阳性,flase 代表阴性/MATCH (p:人) RETURN DISTINCT p.人.is_confirmed, COUNT(*);

01

2.新确诊一名阳性患者,更新健康信息,了解个人信息

1)随机挑选一位正常人员,更新健康信息为阳性,并查看个人信息

MATCH (p:人) WHERE p.人.is_confirmed==false RETURN p LIMIT 1;

02

2)上传确诊患者信息

UPDATE VERTEX ON 人 "p_7915" SET is_confirmed=true YIELD is_confirmed AS Infected; INSERT VERTEX 联系方式(num) VALUES "13312341234":(13312341234); INSERT EDGE 住址() VALUES "p_7915"->"a_626";

03

3)查询该患者家庭住址、联系方式等信息

MATCH p=(v:人)-[e:住址|属于]-(v2) WHERE id(v)=="p_7915" RETURN p;

04

05

3.查找其同住人、时空伴随者(场所码) 等密接

1)查找同住人(密接)

MATCH p=(v:人)-[e:同住]-(v2) WHERE id(v)=="p_7915" RETURN p;

06

07

2)查找其直接时空伴随者(密接)

MATCH p=(v:人{name:"丁兰英"})-[e:到访]->(v1:地址)<-[e1:到访]-(v2:人) WHERE e.start_time < e1.start_time AND e.end_time > e1.end_time RETURN p;

08

04

4.查找其所有的次密接

1)同住人导致的次密接数及路径

MATCH p=(v:人{name:"丁兰英"})-[e:同住]-(v1:人)-[e1:到访]->(v2:地址)<-[e2:到访]- (v3:人) WHERE e1.start_time < e2.start_time AND e1.end_time > e2.end_time RETURN COUNT(DISTINCT v3);

MATCH p=(v:人{name:"丁兰英"})-[e:同住]-(v1:人)-[e1:到访]->(v2:地址)<-[e2:到访]- (v3:人) WHERE e1.start_time < e2.start_time AND e1.end_time > e2.end_time RETURN p;

10 11 12

2)其它时空伴随导致的次密接数及路径

MATCH p=(v:人{name:"丁兰英"})-[e:到访]->(v1:地址)<-[e1:到访]-(v2:人)-[e2:到访]->(v3:地址)<-[e3:到访]-(v4:人) WHERE e.start_time < e1.start_time AND e.end_time > e1.end_time AND e2.start_time < e3.start_time AND e2.end_time > e3.end_time RETURN v2, v4, p;

13 14

5.密接管控人中陆续检测出阳性,上传更新相关数据,查询该条传播链情况

更新新增阳性人员数据

UPDATE VERTEX ON 人 "p_7748" SET is_confirmed=true YIELD is_confirmed AS Infected;

UPDATE VERTEX ON 人 "p_2700" SET is_confirmed=true YIELD is_confirmed AS Infected;

UPDATE VERTEX ON 人 "p_5040" SET is_confirmed=true YIELD is_confirmed AS Infected;

UPDATE VERTEX ON 人 "p_6260" SET is_confirmed=true YIELD is_confirmed AS Infected;

15

16

6.统计密接中阳性数,如果有则表明形成了传播,需要将应对场所标记为风险地区

1)同住人中阳性数

MATCH p=(v:人{name:"丁兰英"})-[e:同住]-(v1:人) WHERE v1.人.is_confirmed==true RETURN COUNT(v1);

2)其它时空伴随者中的阳性数

MATCH p=(v:人{name:"丁兰英"})-[e:到访]->(v1:地址)<-[e1:到访]-(v2:人) WHERE e.start_time < e1.start_time AND e.end_time > e1.end_time AND v2. 人.is_confirmed==true RETURN COUNT(v2);

3)源头阳性住址置为中风险

UPDATE VERTEX ON 地址 "a_626" SET risk_level="medium" yield risk_level AS Risk;

4)到访地置为中风险

UPDATE VERTEX ON 地址 "a_837" SET risk_level="medium" yield risk_level AS Risk;

17

18

7.查看当前中风险地区

所有地址风险地区

MATCH (v:地址) WHERE v.地址.risk_level=="medium" OR v.地址.risk_level=="high" RETURN v;

19

Demo 地址

https://explorer.nebula-graph.com.cn/explorer

根据以上步骤,即可使用 NebulaGraph 开始疫情流调场景下的关系探索,也欢迎点击查看 操作演示视频,了解更多信息~


标签
相关推荐
green iguana

新闻资讯

NebulaGraph 发布同路人「增长计划」,全生命周期助力伙伴取得商业成功
green iguana

产品实践

图数据 3D 可视化在 Explorer 中的应用
green iguana

用户案例

58 同城基于 NebulaGraph 一键部署运维架构的实践