292 lines
9.2 KiB
SQL
292 lines
9.2 KiB
SQL
-- 如果表不存在则创建表,如果存在则添加缺失的列
|
|
|
|
-- 检查并创建appointment表或添加缺失列
|
|
CREATE TABLE IF NOT EXISTS appointment (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
customer_id BIGINT NOT NULL,
|
|
pet_id BIGINT NOT NULL,
|
|
doctor_id BIGINT,
|
|
department VARCHAR(50),
|
|
appointment_date DATE,
|
|
time_slot VARCHAR(20), -- 添加这个缺失的列
|
|
status VARCHAR(20) DEFAULT 'PENDING',
|
|
remark TEXT,
|
|
cancel_time TIMESTAMP NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建visit表
|
|
CREATE TABLE IF NOT EXISTS visit (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
appointment_id BIGINT,
|
|
customer_id BIGINT NOT NULL,
|
|
pet_id BIGINT NOT NULL,
|
|
doctor_id BIGINT NOT NULL,
|
|
symptoms TEXT,
|
|
diagnosis TEXT,
|
|
treatment_plan TEXT,
|
|
status VARCHAR(20) DEFAULT 'PENDING',
|
|
total_amount DECIMAL(10,2),
|
|
payment_status VARCHAR(20) DEFAULT 'UNPAID',
|
|
payment_method VARCHAR(20),
|
|
payment_time TIMESTAMP NULL,
|
|
start_time TIMESTAMP,
|
|
end_time TIMESTAMP,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建prescription表
|
|
CREATE TABLE IF NOT EXISTS prescription (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
visit_id BIGINT,
|
|
doctor_id BIGINT,
|
|
customer_id BIGINT,
|
|
total_amount DECIMAL(10,2),
|
|
status VARCHAR(20) DEFAULT 'DRAFT',
|
|
remark TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建prescription_item表
|
|
CREATE TABLE IF NOT EXISTS prescription_item (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
prescription_id BIGINT NOT NULL,
|
|
drug_id BIGINT NOT NULL,
|
|
drug_name VARCHAR(100),
|
|
specification VARCHAR(100),
|
|
quantity INT NOT NULL,
|
|
usage_desc VARCHAR(200),
|
|
days INT,
|
|
unit_price DECIMAL(10,2),
|
|
subtotal DECIMAL(10,2),
|
|
dosage VARCHAR(100),
|
|
frequency VARCHAR(50),
|
|
duration VARCHAR(50),
|
|
usage_instructions TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建order_info表
|
|
CREATE TABLE IF NOT EXISTS order_info (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
visit_id BIGINT,
|
|
customer_id BIGINT NOT NULL,
|
|
amount DECIMAL(10,2),
|
|
status VARCHAR(20) DEFAULT 'UNPAID',
|
|
payment_method VARCHAR(20),
|
|
payment_time TIMESTAMP NULL,
|
|
remark TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建drug表
|
|
CREATE TABLE IF NOT EXISTS drug (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
category VARCHAR(50),
|
|
manufacturer VARCHAR(100),
|
|
specification VARCHAR(100),
|
|
unit_price DECIMAL(10,2),
|
|
stock_quantity INT DEFAULT 0,
|
|
stock INT DEFAULT 0,
|
|
alert_threshold INT,
|
|
purchase_price DECIMAL(10,2),
|
|
sale_price DECIMAL(10,2),
|
|
approval_number VARCHAR(100),
|
|
expiry_date TIMESTAMP NULL,
|
|
unit VARCHAR(20),
|
|
status INT DEFAULT 1,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建pet表
|
|
CREATE TABLE IF NOT EXISTS pet (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
owner_id BIGINT NOT NULL,
|
|
name VARCHAR(50) NOT NULL,
|
|
species VARCHAR(50),
|
|
breed VARCHAR(100),
|
|
gender VARCHAR(10), -- 修改为VARCHAR以支持MALE/FEMALE
|
|
birthday DATE, -- 添加birthday字段
|
|
age INT, -- 添加age字段
|
|
weight DOUBLE, -- 添加weight字段
|
|
photo VARCHAR(255), -- 添加photo字段
|
|
remark TEXT, -- 添加remark字段
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 为已存在的pet表添加age列
|
|
ALTER TABLE pet ADD COLUMN IF NOT EXISTS age INT AFTER birthday;
|
|
|
|
-- 检查并创建doctor表
|
|
CREATE TABLE IF NOT EXISTS doctor (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(50) NOT NULL,
|
|
department VARCHAR(50),
|
|
title VARCHAR(50),
|
|
phone VARCHAR(20),
|
|
email VARCHAR(100),
|
|
avatar VARCHAR(255),
|
|
status INT DEFAULT 1,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建user表
|
|
CREATE TABLE IF NOT EXISTS `user` (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
phone VARCHAR(20),
|
|
email VARCHAR(100),
|
|
password VARCHAR(255) NOT NULL,
|
|
role VARCHAR(20) DEFAULT 'CUSTOMER',
|
|
status INT DEFAULT 1,
|
|
avatar VARCHAR(255),
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建medical_record表
|
|
CREATE TABLE IF NOT EXISTS medical_record (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
visit_id BIGINT NOT NULL,
|
|
chief_complaint TEXT,
|
|
present_illness TEXT,
|
|
physical_examination TEXT,
|
|
examination_results TEXT,
|
|
diagnosis TEXT,
|
|
treatment_plan TEXT,
|
|
advice TEXT,
|
|
status VARCHAR(20),
|
|
record_type VARCHAR(50), -- CHECKUP体检, DIAGNOSIS诊断, TREATMENT治疗
|
|
content TEXT,
|
|
attachment_urls TEXT,
|
|
doctor_id BIGINT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建message表
|
|
CREATE TABLE IF NOT EXISTS message (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id BIGINT,
|
|
user_name VARCHAR(100),
|
|
contact VARCHAR(100),
|
|
title VARCHAR(200),
|
|
sender_id BIGINT,
|
|
receiver_id BIGINT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
type VARCHAR(20) DEFAULT 'NOTICE', -- NOTICE通知, CHAT聊天
|
|
status VARCHAR(20) DEFAULT 'UNREAD', -- UNREAD未读, READ已读
|
|
reply TEXT,
|
|
reply_time TIMESTAMP NULL,
|
|
reply_user_id BIGINT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建notice表
|
|
CREATE TABLE IF NOT EXISTS notice (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
title VARCHAR(200) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
is_top INT DEFAULT 0,
|
|
publisher_id BIGINT NOT NULL,
|
|
publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
status INT DEFAULT 1,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建report表
|
|
CREATE TABLE IF NOT EXISTS report (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
visit_id BIGINT,
|
|
pet_id BIGINT,
|
|
type VARCHAR(50),
|
|
title VARCHAR(200),
|
|
summary TEXT,
|
|
attachment_url VARCHAR(255),
|
|
doctor_id BIGINT,
|
|
report_type VARCHAR(50) DEFAULT 'DIAGNOSIS', -- REVENUE收入, CUSTOMER客户, PET宠物, DRUG药品, DIAGNOSIS检查报告
|
|
report_data JSON,
|
|
period_start DATE,
|
|
period_end DATE,
|
|
generated_by BIGINT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 为已存在的report表修改report_type默认值
|
|
ALTER TABLE report MODIFY COLUMN report_type VARCHAR(50) DEFAULT 'DIAGNOSIS';
|
|
|
|
-- 检查并创建stock_in表
|
|
CREATE TABLE IF NOT EXISTS stock_in (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
drug_id BIGINT NOT NULL,
|
|
quantity INT NOT NULL,
|
|
unit_price DECIMAL(10,2),
|
|
supplier VARCHAR(100),
|
|
operator_id BIGINT,
|
|
stock_in_time TIMESTAMP NULL,
|
|
remark TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建stock_out表
|
|
CREATE TABLE IF NOT EXISTS stock_out (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
drug_id BIGINT NOT NULL,
|
|
prescription_id BIGINT,
|
|
quantity INT NOT NULL,
|
|
unit_price DECIMAL(10,2),
|
|
purpose VARCHAR(100), -- 用途:销售、损耗等
|
|
operator_id BIGINT,
|
|
stock_out_time TIMESTAMP NULL,
|
|
remark TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|
|
|
|
-- 检查并创建vaccine_record表
|
|
CREATE TABLE IF NOT EXISTS vaccine_record (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
pet_id BIGINT NOT NULL,
|
|
type VARCHAR(20), -- VACCINE疫苗, DEWORMING驱虫
|
|
item_name VARCHAR(100),
|
|
execute_date DATE,
|
|
next_reminder_date DATE,
|
|
vaccine_name VARCHAR(100) NOT NULL,
|
|
dose_number INT,
|
|
injection_date DATE,
|
|
next_appointment_date DATE,
|
|
doctor_id BIGINT,
|
|
remark TEXT,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
deleted INT DEFAULT 0
|
|
);
|