目标:将医疗数据按照属性,实体,实体关系分类,用python创建相关结点和关系,导入neo4j数据库,最后将图数据库导出为json格式。
一、处理数据
- 将有来医生,民福康,网易健康三个网站数据汇总,合并重叠的标题栏。
各网站标题栏如下(黄色和橙色表示标题栏有重合的部分):
|
民福康 |
网易健康 |
|
|
科室 |
科室 |
科室 |
|
疾病名称 |
疾病名称 |
疾病名称 |
|
相关症状 |
相关症状 |
症状 |
|
相关检查 |
相关检查 |
检查 |
|
治疗方法 |
治疗方法 |
治疗 |
|
发病部位 |
发病部位 |
简介 |
|
多发人群 |
多发人群 |
病因 |
|
是否遗传 |
是否遗传 |
预防 |
|
相关疾病 |
相关疾病 |
护理 |
|
相关手术 |
相关手术 |
并发症 |
|
挂号科室 |
是否属于医保 |
|
|
是否传染 |
||
|
相关药品 |
||
|
相关费用 |
新建一个excel表格,将各网站信息标题合并成为一个标题栏如下:
- 手动处理表格,将各网站医疗信息对应标题分别存入新表格,没有的标题信息都为空。
- 将excel表格导出为csv格式,得到如下csv表格样式
二、建立图型数据库
1. pycharm连接neo4j,创建csv文件对象
安装py2neo库,从中导入Graph,Node,Relationship。并且创建csv文件对象,图形数据库对象。
2. 根据事先划分好的实体,实体属性,实体关系类型,定义各类型对象名称。
其中实体类型:
|
实体类型 |
中文含义 |
对应csv列标 |
|
Department |
科室 |
0 |
|
Symptom |
相关症状 |
2 |
|
Check |
相关检查 |
3 |
|
Operation |
相关手术 |
9 |
|
Disease |
疾病 |
1 |
|
Relative_disease |
相关疾病 |
8 |
|
Drug |
相关药品 |
12 |
|
Registration_department |
挂号科室 |
10 |
实体(疾病)属性类型:
|
属性类型 |
中文含义 |
对应csv列标 |
|
Name |
疾病名称 |
1 |
|
Cure |
治疗方法 |
4 |
|
Location_disease |
发病部位 |
5 |
|
Multiple_person |
多发人群 |
6 |
|
Inherit |
是否遗传 |
7 |
|
Infect |
是否传染 |
11 |
|
Fee |
相关费用 |
13 |
|
Insurance |
是否医保 |
14 |
|
Desc |
简介 |
15 |
|
Cause |
病因 |
16 |
|
Prevent |
预防 |
17 |
|
Nurse |
护理 |
18 |
|
Complication |
并发症 |
19 |
实体关系类型:
|
实体关系类型 |
中文含义 |
|
has_symptom |
疾病显示症状 |
|
Need_check |
疾病所需检查 |
|
Relative_Operation |
疾病所需手术 |
|
Relative_Diseases |
疾病的有关疾病 |
|
recommand_drug |
疾病该吃的药品 |
|
Registrat_Department |
疾病挂号科室 |
|
Belongto_department |
疾病属于科室 |
- 对图形数据库对象创建实体,实体关系结点
按行读取csv数据且跳过处理第一行数据,创建实体对象,其中疾病实体含有多种不同属性,数字分别表示是第几列的信息。
创建实体关系型结点对象:
在图形数据库中创建实体和关系:
- 查看图形数据库,并导出为json
Cypher语句输入:match (n) return (n) 查看所有结点
导出;