Python全栈项目--智能远程医疗系统 一、项目简介随着互联网医院、家庭医生和慢病随访场景的发展传统线下就诊正在逐步与线上医疗服务融合。本项目实现一个轻量级的智能远程医疗系统患者可以在线建档并提交远程预约医生可以查看问诊请求、进入模拟视频诊室、更新问诊状态、填写诊断结论和电子处方。项目定位是 CSDN 教学型 Python 全栈项目重点展示从数据库建模、后端接口、前端交互到部署运行的完整流程。为了便于读者本地运行技术栈选择 FastAPI SQLite 原生 HTML/CSS/JavaScript不依赖复杂前端框架也不强制连接第三方音视频服务。系统核心能力包括患者档案管理姓名、年龄、联系方式、地址、既往病史。在线医生列表科室、职称、在线状态和擅长方向。远程预约问诊选择患者、医生、时间并提交症状描述。问诊状态流转待接诊、问诊中、已完成。远程诊室编号创建预约时自动生成模拟视频房间号。诊断与电子处方医生完成问诊后填写诊断和处方。数据看板统计患者数、医生数、预约数、待接诊数和已完成数。二、技术栈层次技术说明后端框架FastAPI提供 RESTful API 和 Swagger 文档ASGI 服务Uvicorn本地运行 FastAPI 服务数据库SQLite轻量级文件数据库便于演示ORMSQLAlchemy定义数据表、关系和查询逻辑数据校验Pydantic请求和响应结构校验前端HTML/CSS/JavaScript原生页面无需打包工具通信方式Fetch API浏览器调用后端接口三、系统架构项目采用经典前后端分离架构浏览器前端 ├── 患者建档表单 ├── 预约问诊表单 ├── 医生列表 └── 问诊状态操作 │ fetch JSON ▼ FastAPI 后端 ├── main.py接口路由 ├── schemas.py请求响应模型 ├── crud.py业务逻辑 ├── models.py数据库模型 └── database.pySQLite 连接 │ SQLAlchemy ▼ SQLite 数据库 telemedicine.db前端只负责展示和用户交互后端负责数据校验、业务状态更新和持久化。SQLite 数据库文件在后端首次启动时自动创建。四、功能模块1. 患者档案模块患者是远程问诊流程的起点。系统支持创建和查询患者档案字段包括姓名、年龄、性别、手机号、地址和既往病史。2. 医生资源模块医生数据包含姓名、科室、职称、在线状态和擅长方向。项目启动时会自动初始化 3 条医生数据方便直接测试预约流程。3. 远程预约模块患者选择在线医生并填写预约时间、症状描述后后端创建一条预约记录同时自动生成一个模拟视频诊室编号例如RM-1-2。4. 问诊状态模块预约记录的状态支持待接诊患者刚提交预约。问诊中医生点击开始问诊。已完成医生填写诊断和处方后结束问诊。5. 诊断处方模块问诊完成时医生可以录入诊断结果和电子处方。真实医疗系统还需要签名、审方、处方流转等合规能力本项目保留为教学演示。6. 数据看板模块看板接口汇总患者数、医生数、预约数、待接诊数、已完成数以及科室分布帮助管理人员快速了解平台运行状态。五、数据库/数据模型设计系统包含 3 张核心表patients 患者表字段类型说明idInteger主键nameString姓名ageInteger年龄genderString性别phoneString手机号addressString地址historyText既往病史created_atDateTime创建时间doctors 医生表字段类型说明idInteger主键nameString医生姓名departmentString科室titleString职称online_statusString在线状态expertiseText擅长方向appointments 预约问诊表字段类型说明idInteger主键patient_idInteger患者 IDdoctor_idInteger医生 IDscheduled_timeString预约时间symptomText症状描述statusString问诊状态video_roomString模拟远程诊室编号diagnosisText诊断结论prescriptionText电子处方created_atDateTime创建时间模型代码位于backend/app/models.pyclassAppointment(Base):__tablename__appointmentsidColumn(Integer,primary_keyTrue,indexTrue)patient_idColumn(Integer,ForeignKey(patients.id),nullableFalse)doctor_idColumn(Integer,ForeignKey(doctors.id),nullableFalse)scheduled_timeColumn(String(40),nullableFalse)symptomColumn(Text,nullableFalse)statusColumn(String(20),default待接诊)video_roomColumn(String(80),default)diagnosisColumn(Text,default)prescriptionColumn(Text,default)六、后端接口设计接口统一使用/api前缀方法路径说明GET/api/health健康检查GET/api/dashboard获取统计看板POST/api/patients创建患者GET/api/patients查询患者列表POST/api/doctors创建医生GET/api/doctors查询医生列表POST/api/appointments创建远程预约GET/api/appointments查询预约列表可按状态过滤PATCH/api/appointments/{id}更新问诊状态、诊断、处方预约创建接口示例POST/api/appointments{patient_id:1,doctor_id:2,scheduled_time:2026-06-05T10:30,symptom:发热、咳嗽两天希望远程问诊}后端会返回带有video_room的预约记录。七、前端页面设计前端页面位于frontend/index.html页面结构包含数据卡片、患者表单、预约表单、医生列表和问诊列表。style.css响应式布局和卡片式 UI。app.js调用后端 API处理表单提交和状态更新。页面主要区域如下顶部 Banner展示系统名称和刷新按钮。数据看板展示患者数、医生数、预约数等统计指标。患者建档录入基础健康档案。远程预约选择患者、医生和预约时间。在线医生展示科室、职称、在线状态、擅长方向。问诊列表支持开始问诊、完成问诊并填写诊断处方。八、核心代码讲解1. 数据库连接database.py使用 SQLite 文件数据库并通过SessionLocal为每个请求提供数据库会话enginecreate_engine(DATABASE_URL,connect_args{check_same_thread:False})SessionLocalsessionmaker(autocommitFalse,autoflushFalse,bindengine)Basedeclarative_base()2. FastAPI 路由main.py在启动时创建表结构并注册跨域中间件方便本地 HTML 页面直接访问接口Base.metadata.create_all(bindengine)appFastAPI(title智能远程医疗系统)app.add_middleware(CORSMiddleware,allow_origins[*],allow_methods[*],allow_headers[*])创建预约的接口非常简洁app.post(/api/appointments,response_modelschemas.Appointment)defcreate_appointment(data:schemas.AppointmentCreate,db:SessionDepends(get_db)):returncrud.create_appointment(db,data)3. 业务逻辑crud.py中的create_appointment负责生成远程诊室编号并保存预约defcreate_appointment(db:Session,data:schemas.AppointmentCreate):roomfRM-{data.patient_id}-{data.doctor_id}appointmentmodels.Appointment(**data.model_dump(),video_roomroom)db.add(appointment)db.commit()db.refresh(appointment)returnappointment4. 前端交互前端使用 Fetch API 封装统一请求方法asyncfunctionrequest(path,options{}){constresawaitfetch(${API}${path},{headers:{Content-Type:application/json},...options,});if(!res.ok)thrownewError(awaitres.text());returnres.json();}更新问诊状态时前端调用 PATCH 接口awaitrequest(/appointments/${id},{method:PATCH,body:JSON.stringify({status:问诊中})});九、部署与运行步骤1. 解压项目unzip76_fullstack_project.zipcdproject2. 启动后端cdbackend python3-mvenv .venvsource.venv/bin/activate pipinstall-rrequirements.txt uvicorn app.main:app--reload--host127.0.0.1--port8000后端启动后可以访问http://127.0.0.1:8000/docshttp://127.0.0.1:8000/api/health3. 打开前端方式一直接双击或浏览器打开frontend/index.html。方式二在项目根目录启动静态服务python3-mhttp.server8080然后访问http://127.0.0.1:8080/frontend/4. 测试流程新建一个患者档案。选择患者和医生填写症状并提交预约。在问诊列表点击“开始问诊”。点击“完成并开方”录入诊断和处方。查看统计看板是否同步更新。十、项目总结本文完成了一个可运行的 Python 全栈项目——智能远程医疗系统。项目虽然轻量但覆盖了全栈开发中的关键环节数据建模、接口设计、业务逻辑、前端页面、跨域访问、SQLite 持久化和本地部署。如果继续扩展可以加入以下功能用户登录、角色权限和 JWT 鉴权。医生排班、号源管理和预约冲突校验。WebRTC 或第三方 SDK 实现真实音视频问诊。检验报告上传、图片病历识别和 AI 辅助分诊。处方审核、电子签名和审计日志。Docker Compose 部署和 Nginx 反向代理。通过这个项目你可以快速掌握 FastAPI 全栈项目的基本组织方式并进一步拓展为更完整的互联网医疗平台。项目代码下载链接