互联网医院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 (挂号费)。这为下一篇的**"支付下单"**提供了准确的价格来源。
相关推荐
宁夏雨科网2 小时前
手机数码小程序商城自己能否独立开发
小程序·商城小程序·制作小程序·手机数码
风月歌8 小时前
2025-2026计算机毕业设计选题指导,java|springboot|ssm项目成品推荐
java·python·小程序·毕业设计·php·源码
计算机毕设指导68 小时前
基于微信小程序的旅游线路定制系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·旅游
qq_12498707538 小时前
基于Spring Boot的微信小程序的智慧商场系统的设计与实现
java·spring boot·spring·微信小程序·小程序·毕业设计·计算机毕业设计
通义灵码8 小时前
使用Qoder开发一个AI皮肤分析小程序
人工智能·小程序
说私域9 小时前
分享经济:智能名片链动2+1模式商城小程序驱动下的可持续增长引擎
大数据·人工智能·小程序
2503_928411569 小时前
12.26 小程序代码片段【添加WeaUI内容】
前端·微信小程序·小程序
壹号机长9 小时前
uniapp+vue3 接入deepseek Ai
ai·小程序·uni-app
2501_915106329 小时前
iOS开发中CPU功耗监控的实现与工具使用
android·macos·ios·小程序·uni-app·cocoa·iphone