1. 项目简介
随着医院信息系统(HIS)在全国各大医院的推广和应用,会有大量和病人相关的临床数据每天在医院中记录,而这些真实的数据随着规模积累的增加,存在着对病人和医生来说潜在、有价值的信息作用也会越来越大。本项目利用数据挖掘分析某医院近几年的就诊数据,分析疾病病人年龄的平均数、众数,已婚/未婚占比,不同地区患病人数,不同职业患病人数,治愈疾病花费的钱的平均数等,根据分析得到的数据对当前疾病进行分类等功能。
此系统已进行迭代升级,升级时间(2023-10-24)
【更新版】疾病数据分析与预测系统
2. 功能组成
基于数据挖掘的疾病数据可视化分析与预测系统的主要功能包括:
1 系统首页与注册登录
2 历史就诊信息查询
3 就诊数据统计分析
3.1 患者婚姻状况与职业分布情况分析
3.2 患者住院天数分布情况分析
3.3 患者年龄分布情况分析
3.4 患者所在地区的分布情况分析
3.5 每日住院人数变化情况
3.6 每日患者缴费总金额变化情况
4 疾病未来发展趋势预测
4.1 年龄趋势分析
4.2 已婚率趋势分析
4.3 疾病住院天数趋势分析
3. 基于数据挖掘的疾病数据可视化分析与预测系统
3.1 系统首页与注册登录
3.2 历史就诊信息查询
3.3 就诊数据统计分析
对不同疾病不同年份和季度的统计分析,挖掘疾病就诊的规律信息:
def year_quarter_analysis(year, quarter, disease):
"""季度分析"""
year = int(year)
quarter = int(quarter)
df1 = df[(df['疾病名称'] == disease) & (df['年'] == year) & (df['季度'] == quarter)]
hunying_count = df1['婚姻状态'].value_counts().to_dict()
zhiye_count = df1['职业'].value_counts().to_dict()
days_count = df1['住院天数'].value_counts().to_dict()
age_count = df1['年龄'].value_counts().to_dict()
date_count = df1['日期_str'].value_counts().to_dict()
date_count = sorted(date_count.items(), key=lambda x: x[0])
day_jinge = df1[['日期_str', '总金额']].groupby('日期_str').sum().reset_index()
df1['地区'] = df1['地址'].map(lambda x: x[:2])
diqu_count = df1['地区'].value_counts()[:20].to_dict()
......
3.3.1 患者婚姻状况与职业分布情况分析
3.3.2 患者住院天数分布情况分析
3.3.3 患者年龄分布情况分析
3.3.4 患者所在地区的分布情况分析
3.3.5 每日住院人数变化情况
3.3.6 每日患者缴费总金额变化情况
3.4 疾病未来发展趋势预测
基于ARIMA 时序模型,实现对不同疾病的年龄趋势、已婚率趋势和住院天数的趋势预测:
def future_predict(disease):
......
df1 = df[df['疾病名称'] == disease]
# 平均年龄
jidu_age = df1.groupby(by='年季度').mean()['年龄'].reset_index()
# 平均住院天数
jidu_zhuyuan = df1.groupby(by='年季度').mean()['住院天数'].reset_index()
# 已婚未婚的占比
nianjidu_group = df1.groupby(by='年季度')
yihun_ratios = []
for nianjidu, tmp_df in nianjidu_group:
hun_dict = tmp_df['婚姻状态'].value_counts().to_dict()
hun_count = hun_dict['已婚'] if '已婚' in hun_dict else 0
yihun_ratio = hun_count / sum(hun_dict.values())
yihun_ratios.append(yihun_ratio)
# 未来趋势预测
predict_age = arima_model_train_eval(jidu_age['年龄'].values.tolist())
predict_day = arima_model_train_eval(jidu_zhuyuan['住院天数'].values.tolist())
predict_yihun_ratio = arima_model_train_eval(yihun_ratios)
jidu = jidu_age['年季度'].values.tolist()
jidu.append('2022年2季度')
age = jidu_age['年龄'].values.tolist()
age.append(predict_age)
day = jidu_zhuyuan['住院天数'].values.tolist()
day.append(predict_day)
yihun_ratios.append(predict_yihun_ratio)
......
3.4.1 年龄、已婚率、住院天数变化趋势预测分析
分析发现,部分疾病呈现发病年轻化趋势,值得引起重视!随着医疗水平的提高,大部分疾病住院天数呈现下降趋势:
4. 总结
本项目利用数据挖掘分析某医院近几年的就诊数据,分析疾病病人年龄的平均数、众数,已婚/未婚占比,不同地区患病人数,不同职业患病人数,治愈疾病花费的钱的平均数等,根据分析得到的数据对当前疾病进行分类等功能。