Python大作业之就诊卡管理信息系统[原创]
项目地址:
- 网页链接:http://patientcard.dreamtownapi.com/
- 后端地址:http://django.dreamtownapi.com
- 前端Gitee开源地址:https://gitee.com/liuhai038/patient-card_-vue
- 后端Gitee开源地址:https://gitee.com/liuhai038/patient-card_-django
通过本次作业,自查自学新框架知识,完成此套系统。
作业要求:
(1)开卡功能。设置姓名、年龄、电话、性别等字段。(20分)
(2)挂号功能。增加就诊科室和预约就诊时间两个信息。(10分)
(3)就诊功能。增加医生建议信息。(20分)
(4)查询功能。查询看病记录。(10分)
(5)销卡功能。(10分)
(6)退出系统。(10分)
(7)将就诊信息写入csv表格或者数据库。(20分)
数据库设计:
- 设计思路:每个用户持有一张卡,一张卡对应多个就诊记录。
- 数据库表:就诊卡表(card)、就诊记录表(registration)
- 数据表关系(一对多):card 1 v N registration
- 数据表结构:
- 巧妙之处:设置deletetime字段,删除记录时并不直接delete物理删除,而是通过update这个deletetime字段,赋值为当前删除时间,即逻辑删除。这样当deletetime字段为null时,则记录存在。反之若不为null,则代表记录已经删除,可拓展作为回收站。
架构:
- 前端:使用HBuilder编辑器,采用vue框架知识开发uniapp应用。
- 后端:使用Pycharm编辑器,采用Django框架之时开发web应用。
学到的知识:
- 学习如何搭建Django项目,接口设计,路由管理,跨域配置。
- 数据库设计,使用Django model的面向数据库ORM对象编程。
- 学会如何使用分布式任务框架:function-scheduling-distributed-framework
- 学会如何将Django项目部署到服务器上:参考教程1、参考教程2
- 巩固前端vue相关知识:uviewui框架的使用,父子组件传参等
- 发现新的素材库:17素材网 和 素材解析网
遇到的问题:
- 跨域问题:由于本项目前端向后端获取敏感用户数据时,需要传递用户信息参数,为了方便,通过vue拦截请求,并设置请求header,将用户信息设置到header中,供后端获取。但是后端Django框架默认是对header是拒绝的,需要加入CORS跨域验证机制。
- 时区问题:在插入数据时,本地用时区UTC是正常的,部署到服务器上的时候是小8小时的,导致就诊时间出错。在生产环境上把UTC改成Asia/Shanghai后恢复正常。
- 分布式任务调度问题:对于第一次使用function-scheduling-distributed-framework模块,有比较多的疑点和问题,好在文档是中文的,同时自己调试和测试比较多,慢慢摸透了,一些坑也解决了。
项目逻辑:
- 用户开卡(注册)、用户登录
- 挂号 - 添加挂号记录
- 选择就诊科室
- 服务端将自动随机安排一个就诊时间,一般在5~10秒后。
- 页面开始倒计时,倒计时结束,服务端随机为该记录添加医生和医嘱,完成就诊。
- 自动刷新页面,点击就诊记录,查看就诊医生和医嘱等信息。
- 销卡[可选],即删除账号,但不完全删除,仍存在数据库,无法登录。
项目截图: