目标:将医疗数据按照属性,实体,实体关系分类,用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) 查看所有结点
导出;