互联网医院17:架构重构——医生档案的“独立宣言”

目录

  • [1. 前言:从"大杂烩"到"精细化"](#1. 前言:从“大杂烩”到“精细化”)
  • [2. 数据库设计:医生信息表](#2. 数据库设计:医生信息表)
  • [3. 功能搭建](#3. 功能搭建)
    • [3.1 搭建表格视图](#3.1 搭建表格视图)
    • [3.2 切换视图](#3.2 切换视图)
    • [3.3 搭建列表视图](#3.3 搭建列表视图)
  • [4. 总结](#4. 总结)

1. 前言:从"大杂烩"到"精细化"

在项目初期,为了快速跑通流程,我们将医生、护士、管理员都统一放在了 t_personnel(人员表)中,通过 role 字段来区分。

但随着业务深入,我们发现这种"一表通吃"的设计越来越捉襟见肘:

  • 字段冗余:医生有"职称"、"擅长领域"、"挂号费",但管理员不需要这些,导致表里出现大量空字段。
  • 关联混乱 :之前的 t_schedule(排班)关联的是人员表,但实际上排班应该只针对医生。
  • 扩展性差:未来如果医生要加"多点执业"、"评价分数"、"科研成果",人员表会变得臃肿不堪。

本篇目标

我们将进行一次架构重构 ,将医生信息从人员表中剥离,建立独立的 医生信息表 (t_doctor)

  • t_personnel:负责存基础信息(姓名、手机号、工号、登录凭证)。
  • t_doctor:负责存医疗属性(职称、介绍、挂号费),并通过 ID 关联回人员表。

2. 数据库设计:医生信息表

这张表是医生作为"医疗资源"的核心档案。

表名t_doctor

字段名称 标识 (Key) 数据类型 必填 说明
关联人员 personnel_id 关联关系 核心外键,关联 t_personnel (1对1),用于绑定登录账号
所属科室 dept_id 关联关系 核心外键,关联 t_department,决定排班归属
医生姓名 name 文本 (String) 冗余字段,与人员表保持一致,减少连表查询次数
医生工号 doctor_no 文本 (String) 医院内部唯一工号,如:DOC2025001
临床职称 job_title 枚举 (Enum) 选项:主任医师 / 副主任医师 / 主治医师 / 住院医师
学术职称 academic_title 枚举 (Enum) 选项:教授 / 副教授 / 讲师 / 博士生导师
擅长疾病 good_at 文本 (String) 简短概括,用于列表展示,如:高血压、冠心病介入治疗
个人简介 introduction 富文本 (RichText) 详细履历、执业经历,支持HTML格式
职业格言 motto 文本 (String) 显示在头像下方的短句,增强亲和力
形象照 avatar_url 图片 (Image) 医生专业白大褂半身照 (区别于生活头像)
主页背景图 bg_image 图片 (Image) 医生个人主页顶部的Banner背景图
视频介绍 video_intro 文件 (File) 医生的自我介绍短视频地址
标准挂号费 reg_fee 数字 (Number) 单位:元,作为排班的默认价格基准
服务患者数 service_count 数字 (Number) 累计接诊人数,如:1205 (用于展示热度)
综合评分 score 数字 (Number) 满分5.0,如:4.9 (用于展示口碑)
平均等待 avg_wait_time 数字 (Number) 单位:分钟,如:15 (用于患者预期管理)
排序权重 priority 数字 (Number) 默认为0,数字越大在列表中越靠前
状态 status 枚举 (Enum) 1:出诊 (正常), 0:停诊 (隐藏), 2:暂离

3. 功能搭建

除了单调的表格视图,我们还希望有一种卡片视图来呈现数据,先搭建表格视图

3.1 搭建表格视图

以前我们都是使用的数据表格的自带模板,但是考虑到医生的信息是非常多的,弹窗操作不方便,我们这次用模板来生成。

点击创建页面的图标

选择表格与表单页,数据模型选择医生信息表,布局选择左侧导航布局

自动生成了列表、编辑和查看页面

我看有的博主总结,这一步他也叫低代码,他是生成代码减少重复写代码的数量。我认为这种不能算是低代码的范畴,你本质还是为了生成代码模板。低代码是一行都不写,全程可视化配置,只是发布那一刻才进行转写。

配置查询条件

切换到布局设计,在业务管理下添加子菜单,选择列表页面

修改页面的标题和图标

3.2 切换视图

切换视图我们用两个图标来控制,点击一个图标的时候一种视图呈现,点击另外一个图片切换到其他视图。

需要先创建一个变量来决定哪个视图呈现

然后在标题的旁边添加两个图标组件

这里用图标的样式绑定来控制一个选中的效果

bash 复制代码
$page.dataset.state.viewType === 'table' ? {color:'#1890ff'} :{color:'#000000'} 

然后给图标设置点击事件,点击的时候给变量进行赋值

在布局内容里添加一个普通容器,把数据表格移入

然后给普通容器绑定条件展示,当我们的变量等于table时显示

bash 复制代码
$w.page.dataset.state.viewType=="table"

按照同样的方法,继续添加一个普通容器,里边添加一个数据列表组件

这个我们绑定普通容器的条件展示,当变量等于card时候展示

bash 复制代码
$w.page.dataset.state.viewType=="card"

3.3 搭建列表视图

列表视图我们主要是需要把纵向排列的数据改为横向排列

修改数据列表的模板为卡片列表

调节列的数量改为4就可以


4. 总结

通过这次重构,我们将"人"与"角色"解耦了:

  1. 专业度提升t_doctor 表专门承载医疗属性,支持更复杂的业务(如未来增加"挂号费配置"、"排班规则"等)。
  2. 为支付铺路 :我们在 t_doctor 里定义了 reg_fee (挂号费)。这为下一篇的**"支付下单"**提供了准确的价格来源。
相关推荐
一枚前端小姐姐12 小时前
低代码平台表单设计系统技术分析(实战三)
前端·vue.js·低代码
一枚前端小姐姐14 小时前
低代码平台表单设计系统技术分析(实战二)
低代码·架构·前端框架
一枚前端小姐姐17 小时前
低代码平台表单设计系统架构分析(实战一)
前端·低代码·架构
麦聪聊数据2 天前
统一 Web SQL 平台如何收编企业内部的“野生数据看板”?
数据库·sql·低代码·微服务·架构
吴声子夜歌2 天前
小程序——布局示例
小程序
luffy54592 天前
微信小程序页面使用类似filter函数的wxs语法
微信小程序·小程序
Slow菜鸟2 天前
微信小程序开发(二)目录结构完全指南
微信小程序·小程序
小小王app小程序开发2 天前
海外盲盒小程序抽赏玩法分析(附跨境技术落地要点)
小程序
一叶星殇2 天前
微信小程序请求拦截器踩坑:避免重复刷新 token
微信小程序·小程序