1. 数据库表设计
1.1 椅位表 (chair_position)
CREATE TABLE chair_position (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
chair_no VARCHAR(32) NOT NULL COMMENT '椅位编号',
room_id BIGINT NOT NULL COMMENT '所属诊室ID',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0-空闲,1-使用中,2-维护中)',
chair_type TINYINT NOT NULL COMMENT '椅位类型(1-牙科椅,2-治疗床,3-手术台)',
tags VARCHAR(255) COMMENT '标签(逗号分隔)',
equipment VARCHAR(255) COMMENT '配备设备',
is_active BOOLEAN DEFAULT TRUE COMMENT '是否启用',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
remarks VARCHAR(500) COMMENT '备注',
INDEX idx_room (room_id),
INDEX idx_status (status)
) COMMENT '椅位信息表';
1.2 预约记录表 (appointment)
CREATE TABLE appointment (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
appointment_no VARCHAR(32) NOT NULL COMMENT '预约编号',
chair_id BIGINT NOT NULL COMMENT '椅位ID',
patient_id BIGINT NOT NULL COMMENT '患者ID',
doctor_id BIGINT NOT NULL COMMENT '医生ID',
start_time DATETIME NOT NULL COMMENT '开始时间',
end_time DATETIME NOT NULL COMMENT '结束时间',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0-待确认,1-已预约,2-就诊中,3-已完成,4-已取消)',
appointment_type TINYINT NOT NULL COMMENT '预约类型(1-初诊,2-复诊,3-急诊,4-检查)',
source TINYINT DEFAULT 1 COMMENT '来源(1-线上,2-电话,3-现场,4-医生推荐)',
is_urgent BOOLEAN DEFAULT FALSE COMMENT '是否急诊',
symptoms VARCHAR(500) COMMENT '症状描述',
diagnosis VARCHAR(500) COMMENT '初步诊断',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
cancel_reason VARCHAR(200) COMMENT '取消原因',
remarks VARCHAR(500) COMMENT '备注',
UNIQUE KEY uk_appointment_no (appointment_no),
INDEX idx_chair_time (chair_id, start_time, end_time),
INDEX idx_patient (patient_id),
INDEX idx_doctor (doctor_id),
INDEX idx_status (status)
) COMMENT '预约记录表';
2.业务规则
-
冲突检测规则:
-
同一椅位在同一时间段只能有一个有效预约
-
医生在同一时间段只能在一个椅位就诊
-
患者在同一时间段只能预约一个椅位
-
-
预约时间规则:
-
普通预约需提前至少2小时
-
急诊预约不受时间限制
-
最长预约时长为4小时
-
-
取消规则:
-
患者可提前1小时免费取消
-
超时取消需记录原因
-
医生可随时调整预约
-
-
超时处理:
-
预约开始后15分钟未签到自动取消
-
就诊超时30分钟自动结束并提醒
-