AI在线问诊平台
这是一个基于AI技术的在线问诊平台系统,包含管理后台、医生端PC网站和患者端PC网站三个子系统。系统实现了医生入驻申请、预约挂号、在线问诊、病历管理、实时通讯、AI辅助诊断等核心功能,采用前后端分离架构,适合作为医疗健康类全栈开发学习项目或计算机设计参考。
项目封面

项目说明
AI在线问诊平台
项目简介
这是一个基于AI技术的在线问诊平台系统,包含管理后台、医生端PC网站和患者端PC网站三个子系统。系统实现了医生入驻申请、预约挂号、在线问诊、病历管理、实时通讯、AI辅助诊断等核心功能,采用前后端分离架构,适合作为医疗健康类全栈开发学习项目或计算机设计参考。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 运行环境 | Node.js 10.0+ |
| Web框架 | Egg.js 2.15.1 |
| 数据库 | MySQL 5.7+ / 8.0+ |
| 数据库驱动 | egg-mysql 3.0.0 |
| 身份认证 | egg-jwt 3.1.7 |
| 实时通讯 | egg-socket.io 4.1.6 |
| 跨域处理 | egg-cors 2.2.3 |
| 文件上传 | egg-multipart 2.10.3 |
| 数据验证 | egg-validate 2.0.2 |
| AI集成 | OpenAI 4.28.4 |
| HTTP请求 | Axios 1.2.6 |
前端技术(三端通用)
| 技术 | 版本/说明 |
|---|---|
| 前端框架 | Vue 2.6.11 |
| UI组件库 | Element UI 2.15.6 |
| 路由管理 | Vue Router 3.0.7 |
| 状态管理 | Vuex 3.4.0 |
| HTTP请求 | Axios 0.24.0 |
| 图表库 | ECharts 5.3.1 |
| 富文本编辑器 | Quill 1.3.7 |
| CSS预处理器 | Less |
项目特点
- 三端分离架构:管理端、医生端、患者端独立开发部署
- AI智能辅助:集成OpenAI技术提供智能诊断建议
- 实时通讯:基于Socket.io实现医患实时在线沟通
- 完整医疗流程:涵盖医生入驻、预约挂号、在线问诊、病历管理全流程
- 多科室管理:支持多个医疗科室分类管理
- 医生审核机制:医生入驻需提交资质证书并通过审核
- 预约时间管理:支持按日期和时间段预约
- 病历电子化:完整的电子病历记录和管理
- 运营内容管理:支持医疗资讯和健康知识发布
功能模块
管理后台功能 (admin)
1. 首页仪表盘
- 数据统计概览
- 用户增长趋势
- 预约统计分析
- 科室数据展示
2. 科室管理
- 科室列表查看
- 新增/编辑/删除科室
- 科室信息维护
3. 医生管理
- 医生列表查看
- 医生资质审核
- 医生信息管理
- 医生状态管理
4. 医生申请审核
- 入驻申请列表
- 资质证书审核
- 审核通过/拒绝
- 审核记录查询
5. 患者管理
- 患者列表
- 患者信息查看
- 患者健康档案
6. 预约管理
- 预约记录列表
- 预约状态管理
- 预约统计分析
7. 病历管理
- 病历记录查看
- 病历统计分析
- 病历归档管理
8. 运营管理
- 医疗资讯发布
- 健康知识发布
- 内容审核管理
9. 系统管理
- 管理员账号管理
- 系统参数配置
- 权限管理
医生端功能 (website_docker)
1. 医生注册/登录
- 医生账号注册
- 资质证书上传
- 入驻申请提交
- 登录认证
2. 个人中心
- 个人信息管理
- 资质证书管理
- 科室信息设置
3. 预约管理
- 预约列表查看
- 预约时间设置
- 预约确认/取消
- 预约提醒消息
4. 在线问诊
- 患者问诊列表
- 实时聊天沟通
- AI辅助诊断
- 图片消息支持
5. 病历管理
- 创建电子病历
- 病历信息录入
- 病历查询
- 病历导出
6. 消息中心
- 系统消息
- 患者消息
- 消息提醒
患者端功能 (website_user)
1. 患者注册/登录
- 患者账号注册
- 手机号登录
- 个人信息完善
2. 首页
- 科室导航
- 医生推荐
- 医疗资讯
- 健康知识
3. 科室浏览
- 科室列表
- 科室详情
- 科室医生查看
4. 医生查询
- 按科室查找医生
- 医生详情查看
- 医生资质查看
5. 预约挂号
- 选择医生
- 选择预约时间
- 提交预约
- 预约确认
6. 在线问诊
- 医生在线咨询
- 实时聊天沟通
- 发送文字/图片
- AI智能问答
7. 我的预约
- 预约记录查看
- 预约状态跟踪
- 取消预约
8. 我的病历
- 病历记录查看
- 病历详情
- 病历下载
9. 个人中心
- 个人信息
- 健康档案
- 就诊管理
- 设置功能
项目结构
vue-pc-egg-ai-telemedicine/
├── admin/ # 管理后台(Vue2 + Element UI)
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面视图
│ │ │ ├── Home.vue # 主布局
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Dashboard.vue # 首页仪表盘
│ │ │ ├── Cate.vue # 科室管理
│ │ │ ├── Doctor.vue # 医生管理
│ │ │ ├── Apply.vue # 申请审核
│ │ │ ├── Patient.vue # 患者管理
│ │ │ ├── Appointment.vue # 预约管理
│ │ │ ├── Cases.vue # 病历管理
│ │ │ └── Opt.vue # 运营管理
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json
│ └── vue.config.js # Vue配置
│
├── website_docker/ # 医生端PC网站(Vue2 + Element UI)
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面视图
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Register.vue # 注册页
│ │ │ ├── Home.vue # 首页
│ │ │ ├── Profile.vue # 个人中心
│ │ │ ├── Appointment.vue # 预约管理
│ │ │ ├── Chat.vue # 在线问诊
│ │ │ ├── Cases.vue # 病历管理
│ │ │ └── Message.vue # 消息中心
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json
│ └── vue.config.js # Vue配置
│
├── website_user/ # 患者端PC网站(Vue2 + Element UI)
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面视图
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Register.vue # 注册页
│ │ │ ├── Home.vue # 首页
│ │ │ ├── Cate.vue # 科室浏览
│ │ │ ├── Doctor.vue # 医生查询
│ │ │ ├── Appointment.vue # 预约挂号
│ │ │ ├── Chat.vue # 在线问诊
│ │ │ ├── MyAppointment.vue # 我的预约
│ │ │ ├── MyCases.vue # 我的病历
│ │ │ └── Profile.vue # 个人中心
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json
│ └── vue.config.js # Vue配置
│
├── website/ # 备用前端(可选)
│
├── egg/ # 后端服务(Egg.js + MySQL)
│ ├── app/
│ │ ├── controller/ # 控制器
│ │ │ ├── admin/ # 管理端控制器
│ │ │ │ ├── user.js # 用户管理
│ │ │ │ ├── cate.js # 科室管理
│ │ │ │ ├── doctor.js # 医生管理
│ │ │ │ ├── apply.js # 申请审核
│ │ │ │ ├── patient.js # 患者管理
│ │ │ │ ├── appointment.js # 预约管理
│ │ │ │ ├── cases.js # 病历管理
│ │ │ │ └── opt.js # 运营管理
│ │ │ ├── doctor/ # 医生端控制器
│ │ │ │ ├── auth.js # 认证
│ │ │ │ ├── appointment.js # 预约管理
│ │ │ │ ├── chat.js # 在线问诊
│ │ │ │ └── cases.js # 病历管理
│ │ │ └── user/ # 患者端控制器
│ │ │ ├── auth.js # 认证
│ │ │ ├── cate.js # 科室浏览
│ │ │ ├── doctor.js # 医生查询
│ │ │ ├── appointment.js # 预约挂号
│ │ │ ├── chat.js # 在线问诊
│ │ │ └── cases.js # 病历查询
│ │ ├── io/ # Socket.io配置
│ │ │ └── controller/ # Socket控制器
│ │ ├── middleware/ # 中间件
│ │ ├── service/ # 业务逻辑层
│ │ ├── extend/ # 扩展
│ │ └── router.js # 路由配置
│ ├── config/
│ │ ├── config.default.js # 默认配置
│ │ ├── config.prod.js # 生产环境配置
│ │ └── plugin.js # 插件配置
│ ├── logs/ # 日志目录
│ ├── run/ # 运行时文件
│ ├── public/ # 静态资源
│ │ └── images/ # 上传图片存储
│ │ ├── avatar/ # 用户头像
│ │ ├── certificate/ # 医生证书
│ │ └── opt/ # 运营图片
│ ├── package.json
│ └── README.md
│
├── telemedicine.sql # 数据库SQL文件
├── AI在线问诊平台.docx # 项目文档
├── AI在线问诊平台.xmind # 项目思维导图
├── 演示-管理端.mp4 # 管理端演示视频
└── 演示-客户端+患者端.mp4 # 客户端演示视频
数据模型
用户表 (user)
{
id: int, // 用户ID
username: varchar(100), // 账户名称
avatar: varchar(100), // 头像
password: varchar(100), // 密码
role: int, // 角色 (1患者 2医生 99管理员)
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
科室表 (cate)
{
id: int, // 科室ID
title: varchar(100), // 科室名称
cover: varchar(100), // 科室封面
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
医生表 (doctor)
{
id: int, // 医生ID
user_id: int, // 账户ID
name: varchar(100), // 姓名
phone: varchar(100), // 手机号
cate_id: int, // 科室ID
desc: varchar(1000), // 个人简介
cover: varchar(1000), // 资质证书
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
医生申请表 (apply)
{
id: int, // 申请ID
name: varchar(100), // 姓名
phone: varchar(100), // 手机号
cover: varchar(1000), // 资质证书
desc: varchar(1000), // 个人简介
cate_id: int, // 科室ID
status: int, // 状态 (0审核中 1审核成功 2审核失败)
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
患者表 (patient)
{
id: int, // 患者ID
user_id: int, // 账户ID
name: varchar(100), // 姓名
phone: varchar(100), // 手机号
birdate: varchar(100), // 出生日期
sex: varchar(1), // 性别 (1男 2女)
height: varchar(100), // 身高
weight: varchar(100), // 体重
is_smoke: varchar(1), // 是否抽烟 (0否 1是)
is_drink: varchar(1), // 是否喝酒 (0否 1是)
remark: varchar(100), // 备注信息
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
预约表 (appointment)
{
id: int, // 预约ID
patient_id: int, // 患者ID
doctor_id: int, // 医生ID
cate_id: int, // 科室ID
status: int, // 状态 (1预约中 2已取消 3已完成)
date: varchar(100), // 预约日期
time_range: varchar(100), // 预约时间段
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
病历表 (cases)
{
id: int, // 病历ID
cate_id: int, // 科室ID
doctor_id: int, // 医生ID
patient_id: int, // 患者ID
remark: varchar(1000), // 病历信息
app_id: int, // 预约记录ID
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
消息表 (message)
{
id: int, // 消息ID
client: varchar(10), // 平台 (doctor医生端 user患者端)
patient_id: int, // 患者ID
doctor_id: int, // 医生ID
msgType: varchar(10), // 消息类型 (text文本 pic图片)
value: varchar(10000), // 消息内容
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
Socket连接表 (socket)
{
id: int, // 连接ID
patient_id: int, // 患者ID
doctor_id: int, // 医生ID
client: varchar(100), // 平台类型 (user/doctor)
socket_id: varchar(100), // Socket通讯ID
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
运营内容表 (opt)
{
id: int, // 内容ID
title: varchar(100), // 标题
content: varchar(10000), // 内容(富文本)
cover: varchar(100), // 封面图
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
医疗科室分类
| 科室名称 | 说明 |
|---|---|
| 骨科 | 骨骼、关节疾病诊疗 |
| 产科 | 孕产妇保健和分娩 |
| 儿科 | 儿童疾病诊疗 |
| 检验科 | 医学检验和化验 |
| 妇科 | 妇女疾病诊疗 |
| 中医科 | 中医诊疗和调理 |
| 耳科 | 耳部疾病诊疗和治疗 |
| 心理科 | 心理咨询和治疗 |
| 心血管科 | 心血管疾病诊疗 |
| 泌尿科 | 泌尿系统疾病诊疗 |
| 呼吸科 | 呼吸系统疾病诊疗 |
| 消化科 | 消化系统疾病诊疗 |
| 神经科 | 神经系统疾病诊疗 |
预约状态说明
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| 1 | 预约中 | 预约已提交,等待就诊 |
| 2 | 已取消 | 预约已取消 |
| 3 | 已完成 | 就诊已完成 |
审核状态说明
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| 0 | 审核中 | 申请已提交,等待审核 |
| 1 | 审核成功 | 审核通过,可以登录 |
| 2 | 审核失败 | 审核未通过 |
运行环境要求
后端环境
- Node.js 10.0+
- MySQL 5.7+ / 8.0+
- npm 或 yarn
前端环境
- Node.js 10.0+
- npm 或 yarn
- 现代浏览器(Chrome、Firefox、Edge等)
快速开始
1. 数据库配置
- 创建MySQL数据库
CREATE DATABASE telemedicine CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 导入数据库文件
mysql -u root -p telemedicine < telemedicine.sql
- 修改数据库配置
编辑
egg/config/config.default.js:
config.mysql = {
client: {
host: 'localhost',
port: '3306',
user: 'root',
password: 'root', // 修改为你的密码
database: 'telemedicine',
},
};
2. 启动后端服务
# 进入后端目录
cd egg
# 安装依赖
npm install
# 启动服务(开发模式)
npm run dev
后端服务默认运行在 http://localhost:7001
3. 启动管理后台
# 进入管理后台目录
cd admin
# 安装依赖
npm install
# 启动开发服务器
npm run dev
管理后台默认运行在 http://localhost:8080
4. 启动医生端
# 进入医生端目录
cd website_docker
# 安装依赖
npm install
# 启动开发服务器
npm run dev
医生端默认运行在 http://localhost:8081
5. 启动患者端
# 进入患者端目录
cd website_user
# 安装依赖
npm install
# 启动开发服务器
npm run dev
患者端默认运行在 http://localhost:8082
6. 配置API地址
修改各前端项目中的API基础地址配置文件,确保基础地址指向正确的后端服务地址。
默认账号
管理后台
- 账号:admin
- 密码:123456
医生端
- 需要先注册并提交入驻申请
- 等待管理员审核通过后登录
患者端
- 支持手机号注册登录
- 测试账号:11111111111
- 密码:111111
AI功能配置
系统集成了OpenAI技术,需要配置API密钥:
编辑 egg/config/config.default.js:
config.openai = {
apiKey: 'your-openai-api-key', // 替换为你的OpenAI API密钥
};
Socket.io配置
实时通讯功能基于Socket.io实现,配置文件位于:
egg/config/plugin.js- 插件配置egg/app/io/- Socket控制器和中间件
界面预览
项目包含演示视频文件:
演示-管理端.mp4- 管理后台完整功能演示演示-客户端+患者端.mp4- 医生端和患者端完整功能演示
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 视频问诊:集成WebRTC实现视频通话
- 电子处方:添加处方开具和管理
- 支付功能:集成在线支付
- 健康档案:完善患者健康档案管理
- 药品管理:添加药品信息和用药指导
- 体检报告:支持体检报告上传和解读
- AI诊断增强:接入更多AI诊断模型
- 移动端适配:开发移动端H5或小程序
- 数据分析:添加医疗数据分析和可视化
- 多语言支持:国际化多语言版本
注意事项
- 本项目为学习演示项目,部分数据为模拟数据
- 生产环境部署需要配置HTTPS
- 涉及医疗服务需符合相关法规要求和医疗资质
- AI功能需要有效的OpenAI API密钥
- Socket.io需要配置正确的跨域和连接参数
- 建议定期备份数据库数据
常见问题
Q: 数据库连接失败?
A: 检查MySQL服务是否启动,数据库配置是否正确
Q: Socket连接失败?
A: 检查Socket.io配置,确认端口未被占用,跨域配置正确
Q: AI功能无法使用?
A: 检查OpenAI API密钥配置是否正确,网络是否可以访问OpenAI服务
Q: 图片无法显示?
A: 检查后端服务是否启动,图片路径配置是否正确
Q: 实时聊天消息收不到?
A: 检查Socket.io连接状态,确认socket表中有对应的连接记录
Q: 医生无法登录?
A: 确认医生入驻申请已通过管理员审核(status=1)
技术支持
如遇到问题,可以:
- 查看项目文档
AI在线问诊平台.docx - 查看思维导图
AI在线问诊平台.xmind - 观看演示视频了解功能流程
许可证
本项目仅供学习交流使用,请勿用于商业用途。涉及医疗服务需遵守相关法律法规。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
社区医院儿童健康信息管理系统(java)
社区医院儿童健康信息管理系统是一个专为社区医院设计的儿童健康档案管理平台,采用前后端分离架构,提供儿童健康信息的录入、查询、统计和管理功能。

社区医院儿童健康信息管理系统
社区医院儿童健康信息管理系统是一个基于 Spring Boot 3 + Vue 3 的全栈 Web 应用,旨在为社区医院提供儿童健康信息的数字化管理解决方案。系统支持儿童档案管理、健康测评、疫苗预约、在线咨询等核心功能。

社区医疗服务可视化系统
这是一个基于SpringBoot + Vue2开发的社区医疗服务可视化管理系统,主要面向社区医疗机构提供信息化管理解决方案。系统实现了患者管理、医生管理、预约挂号、病历管理、药品管理、数据统计可视化等核心功能,界面简洁美观,功能完善,适合作为计算机设计或学习项目。

婴幼儿个性化辅食推荐系统
基于 Python Flask + SQLite 的 Web 应用,面向家长管理婴幼儿辅食与营养,并提供三类推荐算法(内容推荐、协同过滤、知识推荐)。

心理健康教育小程序
这是一个心理健康教育与自助服务的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目完整实现了情绪管理、压力应对、助眠放松、正念练习、心理测评、自助工具等核心功能,适合作为微信小程序开发学习项目或计算机设计参考。

考试焦虑测评与辅助治疗系统
这是一个完整的考试焦虑测评与辅助治疗平台,采用前后端分离架构,实现了焦虑测评问卷、测评结果分析、医生咨询、治疗建议、疾病知识等核心功能。系统支持管理员、医生、用户三种角色,适合作为Vue3全栈开发学习项目或计算机设计参考。