项目简介
本项目是一个预约挂号系统,包含了后台管理系统和前台用户系统,后台包括医院设置管理、数据管理、用户管理、订单管理和统计管理等功能,前台包含用户登录、就诊人管理、用户实名认证和预约挂号等功能。项目采用前后端分离的方式进行开发,前端基于Vue构建,后端采用SpringCloud微服务技术栈搭建。
核心技术
微信支付,手机微信登陆,阿里云OSS
SpringBoot:简化新Spring应用的初始搭建以及开发过程
SpringCloud:基于Spring Boot实现的云原生应用开发工具,SpringCloud使用的技术:(SpringCloudGateway、Spring Cloud Alibaba Nacos、Spring Cloud Alibaba Sentinel、SpringCloud Task和SpringCloudFeign等)
MyBatis-Plus:持久层框架
Redis:内存缓存
RabbitMQ:消息中间件
HTTPClient: Http协议客户端
Swagger2:Api接口文档工具
Nginx:负载均衡
Lombok: idea插件,简化实体类
Mysql:关系型数据库
MongoDB:面向文档的NoSQL数据库
Vue.js:web 界面的渐进式框架
Node.js: JavaScript 运行环境
Axios:Axios 是一个基于 promise 的 HTTP 库
NPM:包管理器
Babel:转码器
Webpack:打包工具
Docker :容器技术
Git:代码管理工具
接口文档
API接口文档
1. 文档介绍
1.1. 文档说明
本技术文档用来指导医院与尚医通系统的顺利对接。
1.2. 阅读对象
医院编程人员及测试人员。
1.3. 业务术语
l 医院编号
医院与尚医通合作后,尚医通合提供给医院的唯一标识ID号(hoscode)。
l 签名密钥
医院与尚医通合作后,尚医通提供给医院,用于接口调用的MD5数字签名算法的密码串(signKey)。
2. 安全控制
接口采用数据签名的方式来保证医院与尚医通系统间的身份验证、中间信息传递的完整性,以便进行电子商务安全当中非常重要的交易身份辨识、不可抵赖、防止篡改等功能。
3. 业务接口
3.1. 传参说明
1、所有参数递交的方式必须为POST,参数值编码为gb2312。如果采用拼接(如http://localhost?a=1&b=李四)的形式提交,传参时要对参数值进行url编码,尤其是汉字、网址等;采用Form表单形式提交则不需要。参数值不要带空格。
2、验签参数sign生成。
a、组成加密串。所有变量值按照参数名(不包含sign参数)升序用|连接,最后连接signKey。
b、加密。采用32位Md5小写(编码utf-8)加密。
c、例子。假设接口参数a=1,b=张三,c=13012345678,指派给商户的 签名密钥signKey=1234567890,则加密串如下:
1|张三|13012345678|1234567890。
d、MD5(32位小写)加密值核对。 Md5("123456")=e10adc3949ba59abbe56e057f20f883e
3、所有的字段都使用驼峰形式,如:agent_id改为agentId
3.2. 返回/通知结果
所有接口同步返回
4. 平台接口
4.1.上传医院
医院的基本信息与规则信息
4.1.1.提交地址
http://localhost/api/hosp/saveHospital
4.1.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
hosname | string | 50 | 是 | 医院名称 |
hostype | string | 1 | 是 | 医院类型(1:三级甲等,2:三级乙等,3:二级甲等,4:二级乙等,5:一级) |
provinceCode | string | 18 | 是 | 省code(国家统计局对应省的code) |
cityCode | string | 50 | 是 | 市code(国家统计局对应市的code) |
districtCode | string | 10 | 是 | 区code(国家统计局对应区的code) |
address | string | 20 | 是 | 详情地址 |
logoData | string | 11 | 是 | 医院logo(转换为base64字符串) |
intro | string | 是 | 医院简介 | |
route | string | 255 | 是 | 坐车路线 |
bookingRule | string | 8000 | 是 | 预约规则,json数据 |
bookingRule****例子:{"cycle": "1","releaseTime": "08:30","stopTime": "11:30","quitDay": "-1","quitTime": "15:30","rule": ["西院区预约号取号地点:西院区门诊楼一层大厅挂号窗口取号","东院区预约号取号地点:东院区老门诊楼一层大厅挂号窗口或新门诊楼各楼层挂号/收费窗口取号" ]}bookingRule说明:1、属性说明 cycle:预约周期 releaseTime:放号时间 stopTime:停挂时间 quitDay:退号截止天数(如:就诊前一天为-1,当天为0) quitTime:退号时间 rule:预约规则,以数组形式传递 | ||||
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.1.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.2.上传科室
科室信息
4.2.1.提交地址
http://localhost/api/hosp/saveDepartment
4.2.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
depcode | string | 50 | 是 | 科室编号 |
depname | string | 1 | 是 | 科室名称 |
intro | string | 18 | 是 | 科室描述 |
bigcode | string | 50 | 是 | 大科室编号 |
bigname | string | 10 | 是 | 大科室名称 |
address | string | 20 | 是 | 详情地址 |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.2.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.3.上传排班
排班信息
4.3.1.提交地址
http://localhost/api/hosp/saveSchedule
4.3.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
depcode | string | 20 | 是 | 科室编号 |
title | string | 30 | 是 | 职称 |
docname | string | 30 | 是 | 医生名称 |
skill | string | 300 | 是 | 擅长技能 |
workDate | string | 10 | 是 | 安排日期(yyyy-MM-dd) |
workTime | int | 是 | 安排时间(0:上午 1:下午) | |
reservedNumber | int | 可预约数 | ||
availableNumber | int | 剩余预约数 | ||
amount | string | 5 | 挂号费 | |
status | int | 排班状态(-1:停诊 0:停约 1:可约) | ||
hosScheduleId | string | 30 | 排班编号(医院自己的排班主键) | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.3.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.4.查询医院
医院信息
4.4.1.提交地址
http://localhost/api/hosp/hospital/show
4.4.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.4.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.5.查询科室
科室信息
4.5.1.提交地址
http://localhost/api/hosp/department/list
4.5.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
pageNum | Int | 是 | 第几页 | |
pageSize | Int | 是 | 每页个数 | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.5.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.6.查询排班
医院信息
4.6.1.提交地址
http://localhost/api/hosp/schedule/list
4.6.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
pageNum | Int | 是 | 第几页 | |
pageSize | Int | 是 | 每页个数 | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.6.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.7.删除科室
删除科室信息
4.7.1.提交地址
http://localhost/api/hosp/department/remove
4.7.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
depcode | string | 30 | 是 | 科室编号 |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.7.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
4.8.删除排班
删除排班信息
4.8.1.提交地址
http://localhost/api/hosp/schedule/remove
4.8.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
hosScheduleId | string | 30 | 排班编号(医院自己的排班主键) | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
4.8.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
5. 医院接口
5.1.预约下单
医院的基本信息与规则信息
5.1.1.提交地址
${basePath}/order/submitOrder
5.1.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
depcode | string | 20 | 是 | 科室编号 |
hosScheduleId | string | 30 | 排班编号(医院自己的排班主键) | |
reserveDate | string | 10 | 是 | 安排日期(yyyy-MM-dd) |
reserveTime | int | 是 | 安排时间(0:上午 1:下午) | |
amount | string | 5 | 挂号费 | |
name | string | 20 | 就诊人姓名 | |
sex | int | 就诊人性别 | ||
birthdate | string | 20 | 就诊人出生年月 | |
phone | string | 11 | 就诊人手机 | |
isMarry | int | 就诊人是否结婚 | ||
provinceCode | string | 50 | ||
cityCode | string | 50 | 是 | 市code(国家统计局对应市的code) |
districtCode | string | 10 | 是 | 区code(国家统计局对应区的code) |
address | string | 20 | 是 | 就诊人详情地址 |
contactsName | string | 11 | 是 | 联系人姓名 |
contactsCertificatesType | int | 否 | 联系人证件类型 | |
contactsCertificatesNo | string | 30 | 是 | 联系人证件号 |
contactsPhone | string | 11 | 是 | 联系人手机 |
isInsure | int | 是否有医保 | ||
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
5.1.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
data业务数据字段:
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hosRecordId | string | 是 | 预约记录唯一标识(医院预约记录主键) | |
number | int | 是 | 预约序号 | |
reservedNumber | int | 是 | 排班可预约数 | |
availableNumber | int | 是 | 排班剩余预约数 | |
fetchTime | string | 50 | 是 | 取号时间 |
fetchAddress | string | 200 | 是 | 取号地址 |
5.2.更新支付状态
平台支付成功,通过该接口更新医院支付状态
5.2.1.提交地址
${basePath}/order/updatePayStatus
5.2.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
hosRecordId | string | 是 | 预约记录唯一标识(医院预约记录主键) | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
5.2.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
5.3.取消预约
平台通过该接口取消预约
5.3.1.提交地址
${basePath}/order/updateCancelStatus
5.3.2.请求参数
◎ 变量定义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
hoscode | string | 30 | 是 | 给医院分配的唯一标识 |
hosRecordId | string | 是 | 预约记录唯一标识(医院预约记录主键) | |
timestamp | long | 是 | 时间戳。从1970-01-01 00:00:00算起的毫秒数 | |
sign | string | 32 | 是 | 验签参数。 |
5.3.3.同步返回
◎ 结果参数含义
字段名 | 类型 | 长度 | 必输 | 说明 |
---|---|---|---|---|
code | string | 是 | 结果编码。200:请求成功不等于200:请求失败(message:失败原因) | |
message | string | 100 | 是 | 结果描述 |
data | string | 5000 | 是 | 业务数据 |
运行项目
运行环境:redis, nacos,rabbitMQ,Mysql,Mongodb
数据初始化:sql目录下有mysql和mongodb数据初始化的脚本,其中mongodb的脚本需要运行hospital-manage项目后浏览器访问http://localhost:9998/,在里面执行导入操作
服务:
前端服务:npm install, npm run dev
yygh-site(前台用户预约端) http://localhost:3000/
hospital_admin(后台医院管理端) http://localhost:9528/
后端接口服务:
service目录下:
service_cmn 字典服务,service_hosp医院相关接口服务,service_msm短信服务,service_order订单服务,service_oss文件存储服务,service_statistics数据统计服务,service_task定时任务服务,service_user用户中心服务
service_gateway网关服务
hospital-manage医院平台服务
service_client feign代理服务