注意:该项目只展示部分功能
1 开发环境
发语言:python 采用技术:Spark、Hadoop、Django、Vue、Echarts等技术框架 数据库:MySQL 开发环境:PyCharm
2 系统设计
当前急诊医疗面临患者流量激增、病情复杂多样、医疗资源紧张等挑战,传统管理模式难以实时响应动态需求。基于Spark大数据处理框架,整合Hadoop分布式存储、Python数据分析、Vue前端交互与ECharts可视化技术,构建了覆盖9216例急诊患者全周期行为的分析系统。系统通过采集患者年龄、性别、种族、等待时间、满意度、转诊科室等多维度数据,实现对急诊科工作负荷、就诊时间模式、科室资源需求、患者风险评估等关键指标的实时监测与深度挖掘,为精细化运营管理提供数据支撑。
医院急诊患者数据大屏可视化:集成急诊科工作负荷、患者年龄性别分布、就诊时间模式、等待时间分布等核心指标,实时呈现全局运行态势。 患者特征分析:涵盖年龄、性别、种族分布统计,并深度关联合并症情况,分析不同年龄段健康风险差异。 急诊行为分析:聚焦转诊科室流向、等待时间分段统计、就诊时段规律,揭示患者就医路径与系统响应效率。 患者满意度分析:量化满意度评分分布,关联等待时长、转诊科室、年龄组别及入院状态,定位服务体验关键影响因素。 医疗资源利用分析:评估各科室接诊压力与资源需求,结合时段流量预测,为动态调配医护力量提供依据。 多维度综合分析:构建患者聚类模型识别行为模式,建立风险评估体系划分风险等级,挖掘就诊模式关联规则,支持交叉维度洞察。
3 系统展示
3.1 大屏页面
3.3 分析页面
3.4 基础页面
4 更多推荐
计算机专业毕业设计新风向,2026年大数据 + AI前沿60个毕设选题全解析,涵盖Hadoop、Spark、机器学习、AI等类型 计算机专业毕业设计选题深度剖析,掌握这些技巧,让你的选题轻松通过,文章附35个优质选题助你顺利通过开题! 【避坑必看】26届计算机毕业设计选题雷区大全,这些毕设题目千万别选!选题雷区深度解析 紧跟风口!2026计算机毕设新赛道:精选三大热门领域下的创新选题, 拒绝平庸!毕设技术亮点+功能创新,双管齐下 纯分享!2026届计算机毕业设计选题全攻略(选题+技术栈+创新点+避坑),这80个题目覆盖所有方向,计算机毕设选题大全收藏 计算机专业毕业设计选题深度剖析,掌握这些技巧,让你的选题轻松通过,文章附35个优质选题助你顺利通过开题!
5 部分功能代码
# 从MySQL加载原始数据(总数据量9216条)
jdbc_url = "jdbc:mysql://localhost:3306/emergency_db"
connection_properties = {
"user": "admin",
"password": "your_password",
"driver": "com.mysql.cj.jdbc.Driver"
}
df = spark.read.jdbc(
url=jdbc_url,
table="emergency_patients",
properties=connection_properties
).select(
"patient_id", "gender", "age", "ethnicity",
"referral_department", "waiting_time", "satisfaction_score",
"visit_hour", "has_comorbidity", "is_admitted"
)
# 1. 等待时间分布计算(核心指标:短/中/长等待患者数量)
wait_time_stats = df.withColumn(
"wait_category",
F.when(F.col("waiting_time") <= 20, "短等待")
.when(F.col("waiting_time") <= 40, "中等等待")
.otherwise("长等待")
).groupBy("wait_category").agg(
F.count("*").alias("patient_count"),
F.avg("satisfaction_score").alias("avg_satisfaction")
).orderBy(F.col("patient_count").desc())
# 2. 年龄段与转诊科室交叉分析(用于热力图展示)
age_department_cross = df.withColumn(
"age_group",
F.when(F.col("age") <= 12, "儿童")
.when(F.col("age") <= 18, "青少年")
.when(F.col("age") <= 35, "青年")
.when(F.col("age") <= 60, "中年")
.otherwise("老年")
).groupBy("age_group", "referral_department").agg(
F.count("*").alias("patient_count"),
F.avg("waiting_time").alias("avg_wait_time"),
F.avg("satisfaction_score").alias("avg_satisfaction")
).orderBy("age_group", "referral_department")
# 3. 时间段工作负荷分析(24小时接诊量统计)
hourly_workload = df.groupBy("visit_hour").agg(
F.count("*").alias("patient_volume"),
F.avg("waiting_time").alias("avg_waiting_time"),
F.avg("satisfaction_score").alias("avg_satisfaction")
).orderBy("visit_hour")
# 4. 满意度关联因素计算(等待时间、是否入院、年龄段影响)
satisfaction_analysis = df.withColumn(
"age_group",
F.when(F.col("age") <= 12, "儿童")
.when(F.col("age") <= 18, "青少年")
.when(F.col("age") <= 35, "青年")
.when(F.col("age") <= 60, "中年")
.otherwise("老年")
).groupBy("age_group", "is_admitted").agg(
F.count("*").alias("count"),
F.avg("waiting_time").alias("avg_wait"),
F.avg("satisfaction_score").alias("avg_satisfaction"),
F.stddev("satisfaction_score").alias("satisfaction_std")
)
# 5. 高风险患者识别(等待时间>40分钟且满意度<4分)
high_risk_patients = df.filter(
(F.col("waiting_time") > 40) & (F.col("satisfaction_score") < 4)
).withColumn(
"risk_reason",
F.concat(F.lit("长等待-"), F.col("waiting_time"), F.lit("分钟,低满意度-"), F.col("satisfaction_score"), F.lit("分"))
).select(
"patient_id", "age", "referral_department", "waiting_time", "satisfaction_score", "risk_reason"
)
# 6. 科室资源需求压力指数计算(结合患者数量与等待时间)
department_pressure = df.groupBy("referral_department").agg(
F.count("*").alias("total_patients"),
F.avg("waiting_time").alias("avg_wait_time"),
F.max("waiting_time").alias("max_wait_time"),
(F.count("*") * F.avg("waiting_time") / 1000).alias("pressure_index") # 压力指数 = 患者数×平均等待时间/1000
).orderBy(F.col("pressure_index").desc())
源码项目、定制开发、文档报告、PPT、代码答疑 希望和大家多多交流