全部版块 我的主页
论坛 数据科学与人工智能 IT基础
38 0
2025-11-20

医生及排班管理系统开发指南

上一篇我们探讨了科室管理的功能实现,涵盖后台数据的录入与小程序端的展示。随着科室的建立,接下来的关键步骤是录入医生信息,并对医生进行合理的排班安排。本文将详细介绍如何通过自动化的时间段分配,确保号源数量的有效管理,从而支持小程序的挂号预约功能。

系统概览图

1. 数据模型设计

为了有效地管理医生的排班,我们构建了三个核心的数据表:医生信息表、排班信息表以及排班时段表。

1.1 医生信息表 (doctors)

字段名类型说明
idbigint PK医生唯一标识符
namevarchar(50)医生的名字
avatarvarchar(255)医生头像的网络地址
department_idbigint FK医生所属的科室
titlevarchar(50)医生的职位等级,如主任或副主任等
expertisevarchar(255)医生的专业特长领域
statustinyint医生当前的工作状态,1表示在职,0表示已离职
created_atdatetime记录创建的时间戳
updated_atdatetime最近一次更新的时间戳

1.2 排班信息表 (schedules)

字段名类型说明
idbigint PK排班记录的唯一标识符
doctor_idbigint FK关联医生的信息表
datedate医生出诊的具体日期
shift_typeenum班次类型,例如早晨、下午或晚上
start_timetime班次开始的具体时间点
end_timetime班次结束的具体时间点
total_slotsint该班次总的号源数量
remainingint该班次剩余可用的号源数量
feedecimal(10,2)挂号费用
statusenum排班状态,开放预约、已约满或关闭预约
created_atdatetime记录创建的时间戳
updated_atdatetime最近一次更新的时间戳

1.3 排班时段表 (schedule_slots)

字段名类型说明
idbigint PK排班时段的唯一标识符
schedule_idbigint FK关联排班信息表
start_timetime该时段开始的具体时间点
end_timetime该时段结束的具体时间点
total_slotsint该时段内的总号源数量
remainingint该时段内剩余可用的号源数量
created_atdatetime记录创建的时间戳
updated_atdatetime最近一次更新的时间戳

2. 数据模型的创建

在MySQL数据库环境中,依次创建上述提到的三张数据表。

创建数据模型1 创建数据模型2 创建数据模型3

3. 医生管理界面的搭建

完成数据模型的构建后,接下来是搭建医生管理界面,以便能够便捷地录入医生的相关信息。进入后台应用程序,通过点击创建新页面的按钮开始。

创建医生管理页面

设置页面标题,并选择左侧导航的布局方式。

选择页面布局

转到布局设计模式,点击添加同级菜单项。

添加平级菜单

从选项中选择医生管理页面。

选择医生管理页面

添加必要的布局组件。

添加布局组件

随后,加入数据表格组件。

添加数据表格组件

选择医生信息表,并确保所有使用场景都被选中。

选择医生表并配置

最后,配置相关的查询条件。

配置查询条件

4. 排班管理界面的搭建

4.1 布局设计

在医生列表中添加排班操作按钮。

添加排班按钮

选中页面元素,然后添加弹出窗口组件。

添加弹窗组件

在弹出窗口内添加表单容器,选择医生排班表。

添加表单容器

调整表单容器在PC端的列数至2。

调整表单列数

添加顶部选项卡组件,设定标签,并启用切换标签时显示不同的组件配置。

设置选项卡

将表单容器移动到第一个标签下。

移动表单容器

在第二个标签页内添加数组嵌套表单。

添加数组嵌套表单

将嵌套表单的模板更改为网页表格样式。

更改表单模板

更新列名称,使其与号段表的列相匹配。

更新列名称

4.2 号段信息的初始化

完成布局设计后,当排班信息被成功写入数据库时,需要生成相应的号段信息。为此,在代码区域添加JavaScript方法。

添加JavaScript方法

引入一个自定义变量,用于存储排班表写入的ID。

添加自定义变量

配置表单容器的提交方法,将输出参数赋值给ID变量。

配置提交方法

在变量赋值成功后,调用之前定义的方法。

调用自定义方法

在自定义方法中插入以下代码,主要目的是基于排班信息自动生成号段信息:

export default function({ event, data }) {
const id = $w.page.dataset.state.id;
const doctorId = $w.modal3.openInfo;
const startTime = Number($w.time3.value);
const endTime = Number($w.time4.value);
const totalSlots = Number($w.inputNumber4.value);
const fee = Number($w.inputNumber6.value);
const timeStep = 30 * 60 * 1000; // 30分钟的时间间隔转换成毫秒
}

总结

通过本文的介绍,您应该已经了解了如何设计和实现医生及其排班管理系统的各个组成部分。从数据模型的设计到界面的搭建,每一步都至关重要,确保了系统的高效运行和用户的良好体验。希望这些内容能为您的项目开发提供有价值的参考。

首先计算起始时间并确保其与步长对齐,然后确定需要分割的段数。如果段数小于或等于零,则返回空数组。接下来,基于总时长和段数计算每段的基础时长和额外时长。根据这些信息生成一个包含医生排班信息的对象数组。

const start = Math.floor(startMs / step) * step;
const segs = Math.ceil((endMs - start) / step);
if (segs <= 0) return [];
const base = Math.floor(total / segs);
const extra = total % segs;
const arr = Array.from({ length: segs }, (_, i) => {
  const s = start + i * step;
  const e = i === segs - 1 ? endMs : s + step;
  const cnt = base + (i < extra ? 1 : 0);
  return {doctor_id: {_id: docterid}, schedule_id: {_id: id}, start_time: s, end_time: e, total_slots: cnt, remaining: cnt, fee };
});
console.log(arr);
$w.page.dataset.state.slots = arr;
return arr;

当上述方法调用成功后,界面会自动跳转到第二个标签页。

接着,配置弹窗中的确认按钮,为其添加点击事件,以便批量插入号段数据。

最终效果展示如下:

  • 点击“医生管理”选项,可以查看医生列表。
  • 点击“排班”选项,开始输入排班的基本信息。
  • 提交后,系统将自动生成号段数据。
  • 点击“确认”按钮,完成医生的排班设置。

总结

本文详细介绍了医生管理和排班功能的实现过程。整体来说,使用低代码平台构建这些功能主要涉及创建数据模型、设计页面布局以及绑定相关事件等步骤。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群