摘要
随着医疗信息化的不断推进以及“互联网+医疗”模式的广泛普及,传统医院挂号流程中存在的排队时间长、资源分配不均等问题日益凸显,急需通过数字化手段加以解决。本研究设计并实现了一套基于Java、SpringBoot、Vue与UniAPP技术栈的医院预约挂号微信小程序系统,致力于借助数字化技术优化就医流程,有效提升患者的就医体验和医院的服务效率。该系统的设计背景源于当前医院挂号所面临的线下排队拥挤、号源信息不透明、跨院区预约困难等实际痛点,而微信小程序无需安装、触达率高的特性使其成为连接患者与医院的理想载体。系统旨在构建一个集预约挂号、诊前提醒、就诊导航、报告查询、医患互动等功能于一体的全流程数字化平台,让患者在就医过程中实现“少排队、少跑腿、少等待”,同时为医院提供智能化的号源管理与数据分析工具。在技术实现上,后端采用SpringBoot构建微服务架构,实现用户服务、挂号服务、医院服务等模块的开发,使用MySQL存储患者信息、号源池、就诊记录等业务数据,结合MyBatis-Plus简化数据库操作,并通过Redis缓存热门科室、医生排班等高频访问数据以提升响应速度,基于RESTful API设计接口并支持JWT token认证与权限控制。前端部分,小程序端利用UniAPP开发,通过Vue.js语法实现跨平台兼容,集成组件库优化交互体验。
实现的功能
患者、医生、管理员三中角色,均是小程序。
患者:包括登录注册,预约挂号,查看医生,缴费,编辑个人信息等。
医生:查看患者信息,开药,排班,病例,编辑个人信息等。
管理员:管理患者和医生信息,排班信息管理,编辑个人信息等。
用到的技术
后端 Java语言的SpringBoot框架、MySQL8数据库、Maven依赖管理等;
前端 小程序是Vue.js语法的UniApp框架。
注册界面代码
<template>
<view class="container">
<view class="left-bottom-sign"></view>
<view class="back-btn yticon icon-zuojiantou-up" @click="navBack"></view>
<view class="right-top-sign"></view>
<!-- 设置白色背景防止软键盘把下部绝对定位元素顶上来盖住输入框等 -->
<view class="wrapper">
<view class="left-top-sign">Rsgist</view>
<view class="welcome">
欢迎注册
</view>
<view class="input-content">
<view class="input-item">
<text class="tit">用户名</text>
<input
type="text"
v-model="user.nickName"
placeholder="请输入用户名"
maxlength="11"
/>
</view>
<view class="input-item">
<text class="tit">真实姓名</text>
<input
type="text"
v-model="user.realName"
placeholder="请输入真实姓名"
maxlength="11"
/>
</view>
<view class="input-item">
<text class="tit">密码</text>
<input
type="password"
placeholder="输入密码"
placeholder-class="input-empty"
maxlength="20"
password
v-model="pass"
/>
</view>
<view class="input-item">
<text class="tit">重复密码</text>
<input
type="text"
placeholder="重复输入密码"
placeholder-class="input-empty"
maxlength="20"
password
v-model="pass2"
/>
</view>
<!-- <view class="input-item">
<text class="tit">注册类型</text>
<view>
<label class="radio" style="margin-right: 50rpx;"><radio value="r1" :checked="user.type==1" @click="user.type=1" />消费者</label>
<label class="radio"><radio value="r2" :checked="user.type==2" @click="user.type=2" />商家</label>
</view>
</view> -->
<view class="input-item">
<text class="tit">电话</text>
<input
type="number"
placeholder="请输入电话"
placeholder-class="input-empty"
maxlength="11"
v-model="user.phone"
/>
</view>
<view class="input-item">
<text class="tit">地址</text>
<input
type="text"
placeholder="请输入地址"
placeholder-class="input-empty"
maxlength="30"
v-model="user.address"
/>
</view>
<view class="input-item">
<text class="tit">年龄</text>
<input
type="number"
placeholder="请输入年龄"
placeholder-class="input-empty"
v-model="user.age"
/>
</view
<view class="input-item">
<text class="tit">性别</text>
<radio-group @change="radioChange">
<label style="padding-right: 30rpx;" class="radio" v-for="(item, index) in items" :key="item.value"><radio :value="item.value" :checked="index === current" />{{item.name}}</label>
</radio-group>
</view>
</view>
<view style="width: 100vw;display: flex;justify-content: center;">
<button class="confirm-btn" @click="toLogin" :disabled="logining">注册</button>
</view>
</view>
</view>
</template>
演示视频
Java,uniapp医院预约挂号买药病例微信小程序