AutoMedinfo/database/schema.sql

124 lines
5.0 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 医学信息支持系统数据库初始化脚本
-- Database: medical_info_system
CREATE DATABASE IF NOT EXISTS medical_info_system
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;
USE medical_info_system;
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100),
role VARCHAR(20) NOT NULL COMMENT 'ADMIN, MEDICAL_SPECIALIST, REVIEWER',
enabled BOOLEAN DEFAULT TRUE,
created_at DATETIME NOT NULL,
last_login_at DATETIME,
INDEX idx_username (username),
INDEX idx_role (role)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 查询请求表
CREATE TABLE IF NOT EXISTS inquiry_requests (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
request_number VARCHAR(50) NOT NULL UNIQUE,
customer_name VARCHAR(100) NOT NULL,
customer_email VARCHAR(100),
customer_title VARCHAR(100),
inquiry_content TEXT,
keywords TEXT COMMENT '提取的关键词JSON格式',
status VARCHAR(20) NOT NULL COMMENT 'PENDING, KEYWORD_EXTRACTED, SEARCHING, SEARCH_COMPLETED, UNDER_REVIEW, DOWNLOADING, COMPLETED, REJECTED',
search_results TEXT COMMENT '检索结果JSON格式',
response_content TEXT COMMENT '回复内容',
assigned_to VARCHAR(50),
created_at DATETIME NOT NULL,
updated_at DATETIME,
completed_at DATETIME,
INDEX idx_request_number (request_number),
INDEX idx_status (status),
INDEX idx_customer_name (customer_name),
INDEX idx_assigned_to (assigned_to),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 知识库表
CREATE TABLE IF NOT EXISTS knowledge_bases (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
type VARCHAR(20) NOT NULL COMMENT 'INTERNAL, PUBLIC, EXTENDED',
description TEXT,
data_source VARCHAR(255),
priority INT COMMENT '检索优先级(数字越小优先级越高)',
enabled BOOLEAN DEFAULT TRUE,
configuration TEXT COMMENT '配置信息JSON格式',
created_at DATETIME NOT NULL,
updated_at DATETIME,
INDEX idx_type (type),
INDEX idx_enabled (enabled),
INDEX idx_priority (priority)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 文献表
CREATE TABLE IF NOT EXISTS literatures (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
inquiry_request_id BIGINT,
title VARCHAR(500) NOT NULL,
authors VARCHAR(500),
journal VARCHAR(200),
publication_date VARCHAR(50),
doi VARCHAR(100),
pmid VARCHAR(50),
abstract_text TEXT,
source_database VARCHAR(50),
source_url VARCHAR(500),
file_path VARCHAR(500),
download_status VARCHAR(20) COMMENT 'PENDING, DOWNLOADING, COMPLETED, FAILED',
selected BOOLEAN DEFAULT FALSE,
created_at DATETIME NOT NULL,
downloaded_at DATETIME,
INDEX idx_inquiry_request_id (inquiry_request_id),
INDEX idx_download_status (download_status),
INDEX idx_selected (selected),
FOREIGN KEY (inquiry_request_id) REFERENCES inquiry_requests(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 审核日志表
CREATE TABLE IF NOT EXISTS audit_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
inquiry_request_id BIGINT,
user_id BIGINT,
action VARCHAR(20) NOT NULL COMMENT 'SUBMITTED, APPROVED, REJECTED, REVISION_REQUESTED, COMPLETED',
comments TEXT,
created_at DATETIME NOT NULL,
INDEX idx_inquiry_request_id (inquiry_request_id),
INDEX idx_user_id (user_id),
INDEX idx_created_at (created_at),
FOREIGN KEY (inquiry_request_id) REFERENCES inquiry_requests(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 插入默认管理员用户 (密码: admin123, 实际使用时应该加密)
INSERT INTO users (username, password, full_name, email, role, enabled, created_at)
VALUES ('admin', '$2a$10$rK8WpQYJzxJ8Y5X5YqFvRO5K7K5K7K5K7K5K7K5K7K5K7K5K7K5K7',
'系统管理员', 'admin@ipsen.com', 'ADMIN', TRUE, NOW())
ON DUPLICATE KEY UPDATE username=username;
-- 插入示例知识库配置
INSERT INTO knowledge_bases (name, type, description, data_source, priority, enabled, created_at)
VALUES
('企业研究数据库', 'INTERNAL', '益普生内部研究数据和历史回复', 'internal_db', 1, TRUE, NOW()),
('PubMed', 'PUBLIC', '美国国家医学图书馆公开数据库', 'https://pubmed.ncbi.nlm.nih.gov', 2, TRUE, NOW()),
('EMBASE', 'PUBLIC', 'Elsevier医学文献数据库', 'https://www.embase.com', 3, TRUE, NOW()),
('中国知网', 'PUBLIC', '中国学术期刊数据库', 'https://www.cnki.net', 4, TRUE, NOW()),
('ClinicalTrials.gov', 'PUBLIC', '临床试验注册数据库', 'https://clinicaltrials.gov', 5, TRUE, NOW()),
('疾病药物关联库', 'EXTENDED', '疾病与药物关联扩展数据', 'extended_db', 6, TRUE, NOW())
ON DUPLICATE KEY UPDATE name=name;