CREATE DATABASE IF NOT EXISTS nursing_home DEFAULT CHARACTER SET utf8mb4; USE nursing_home; DROP TABLE IF EXISTS payment_record; DROP TABLE IF EXISTS bill; DROP TABLE IF EXISTS feedback; DROP TABLE IF EXISTS notice; DROP TABLE IF EXISTS handover; DROP TABLE IF EXISTS health_record; DROP TABLE IF EXISTS care_record; DROP TABLE IF EXISTS schedule; DROP TABLE IF EXISTS family_elder; DROP TABLE IF EXISTS elder; DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(100) NOT NULL, name VARCHAR(50) NOT NULL, phone VARCHAR(30), role VARCHAR(20) NOT NULL, status TINYINT NOT NULL DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE elder ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, gender VARCHAR(10), id_card VARCHAR(30) NOT NULL UNIQUE, birthday DATE, room_no VARCHAR(20), check_in_date DATE, care_level VARCHAR(20), status VARCHAR(20), remark VARCHAR(200) ); CREATE TABLE family_elder ( id BIGINT PRIMARY KEY AUTO_INCREMENT, family_id BIGINT NOT NULL, elder_id BIGINT NOT NULL, relationship VARCHAR(20), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_family (family_id), INDEX idx_elder (elder_id) ); CREATE TABLE schedule ( id BIGINT PRIMARY KEY AUTO_INCREMENT, nurse_id BIGINT NOT NULL, date DATE NOT NULL, shift VARCHAR(20), task VARCHAR(200), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_nurse_date (nurse_id, date) ); CREATE TABLE care_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, elder_id BIGINT NOT NULL, nurse_id BIGINT NOT NULL, content VARCHAR(500), attachment_url VARCHAR(200), record_time DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_elder (elder_id) ); CREATE TABLE health_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, elder_id BIGINT NOT NULL, nurse_id BIGINT NOT NULL, temperature DECIMAL(4,1), bp_systolic INT, bp_diastolic INT, heart_rate INT, note VARCHAR(200), record_time DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_elder (elder_id) ); CREATE TABLE handover ( id BIGINT PRIMARY KEY AUTO_INCREMENT, nurse_id BIGINT NOT NULL, date DATE NOT NULL, content VARCHAR(500), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX idx_nurse (nurse_id) ); CREATE TABLE notice ( id BIGINT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100) NOT NULL, content VARCHAR(1000), target_role VARCHAR(20), target_user_id BIGINT, created_by BIGINT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE feedback ( id BIGINT PRIMARY KEY AUTO_INCREMENT, family_id BIGINT NOT NULL, elder_id BIGINT NOT NULL, type VARCHAR(20), content VARCHAR(500), rating INT, status VARCHAR(20), reply VARCHAR(500), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE bill ( id BIGINT PRIMARY KEY AUTO_INCREMENT, elder_id BIGINT NOT NULL, month VARCHAR(7) NOT NULL, bed_fee DECIMAL(10,2), care_fee DECIMAL(10,2), meal_fee DECIMAL(10,2), other_fee DECIMAL(10,2), total DECIMAL(10,2), status VARCHAR(20), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, paid_at DATETIME ); CREATE TABLE payment_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, bill_id BIGINT NOT NULL, family_id BIGINT NOT NULL, amount DECIMAL(10,2) NOT NULL, method VARCHAR(20), paid_at DATETIME DEFAULT CURRENT_TIMESTAMP ); INSERT INTO sys_user(username, password, name, phone, role, status) VALUES ('admin', 'admin123', 'Administrator', '13800000000', 'ADMIN', 1); INSERT INTO sys_user(username, password, name, phone, role, status) VALUES ('nurse1', 'nurse123', '护工刘敏', '13800000001', 'NURSE', 1), ('nurse2', 'nurse123', '护工张凯', '13800000002', 'NURSE', 1), ('family1', 'family123', '家属王伟', '13800000003', 'FAMILY', 1); INSERT INTO elder(name, gender, id_card, birthday, room_no, check_in_date, care_level, status, remark) VALUES ('陈国强', 'M', '110101194001010011', '1940-01-01', 'A101', '2023-01-10', '一级', '在住', '糖尿病史'), ('李秀兰', 'F', '110101194502020022', '1945-02-02', 'A102', '2023-02-15', '二级', '在住', '需要日常护理'), ('王德华', 'M', '110101195003030033', '1950-03-03', 'B201', '2023-03-20', '一级', '在住', '身体状况良好'); INSERT INTO family_elder(family_id, elder_id, relationship) VALUES (4, 1, '儿子'), (4, 2, '女儿'); INSERT INTO schedule(nurse_id, date, shift, task) VALUES (2, '2024-06-01', '早班', 'A区日常巡查'), (2, '2024-06-02', '夜班', 'A区夜间护理'), (3, '2024-06-01', '中班', 'B区护理支持'); INSERT INTO care_record(elder_id, nurse_id, content, attachment_url, record_time) VALUES (1, 2, '协助用餐与日常清洁', NULL, '2024-06-01 09:30:00'), (2, 3, '协助进行下肢活动训练', NULL, '2024-06-01 14:10:00'); INSERT INTO health_record(elder_id, nurse_id, temperature, bp_systolic, bp_diastolic, heart_rate, note, record_time) VALUES (1, 2, 36.6, 120, 80, 72, '正常', '2024-06-01 09:45:00'), (2, 3, 36.8, 130, 85, 78, '血压略高', '2024-06-01 14:20:00'); INSERT INTO handover(nurse_id, date, content) VALUES (2, '2024-06-01', 'A区平稳,晚餐后关注陈国强'), (3, '2024-06-01', 'B区训练完成,无异常情况'); INSERT INTO notice(title, content, target_role, target_user_id, created_by) VALUES ('培训通知', '本周五10点进行消防演练培训', 'NURSE', NULL, 1), ('探视时间', '探视时间更新为 14:00-17:00', 'FAMILY', NULL, 1), ('全员会议', '周一上午召开月度会议', 'ALL', NULL, 1); INSERT INTO feedback(family_id, elder_id, type, content, rating, status) VALUES (3, 1, 'SUGGESTION', '建议餐食增加蔬菜比例', 4, 'NEW'); INSERT INTO bill(elder_id, month, bed_fee, care_fee, meal_fee, other_fee, total, status) VALUES (1, '2024-05', 2000.00, 1500.00, 800.00, 0.00, 4300.00, 'UNPAID'), (2, '2024-05', 2000.00, 1800.00, 800.00, 100.00, 4700.00, 'PAID'); INSERT INTO payment_record(bill_id, family_id, amount, method, paid_at) VALUES (2, 3, 4700.00, 'ONLINE', '2024-05-28 10:00:00');