| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- -- ============================================================
- -- 医学影像智能质控系统 - 数据库初始化脚本
- -- Database: qconline
- -- Version: 1.0.0
- -- Date: 2025-12-25
- -- ============================================================
- -- 创建数据库
- CREATE DATABASE IF NOT EXISTS `qconline` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- USE `qconline`;
- -- ============================================================
- -- 1. 系统管理模块(5张表)
- -- ============================================================
- -- 1.1 系统用户表
- DROP TABLE IF EXISTS `sys_user`;
- CREATE TABLE `sys_user` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `username` varchar(50) NOT NULL COMMENT '用户名',
- `password` varchar(255) NOT NULL COMMENT '密码(加密)',
- `realname` varchar(50) NOT NULL COMMENT '真实姓名',
- `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
- `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
- `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
- `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
- `is_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否管理员:1是 0否',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_username` (`username`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户表';
- -- 1.2 机构表
- DROP TABLE IF EXISTS `institution`;
- CREATE TABLE `institution` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `institution_code` varchar(50) NOT NULL COMMENT '机构编码',
- `institution_name` varchar(100) NOT NULL COMMENT '机构名称',
- `parent_id` varchar(32) DEFAULT '0' COMMENT '父机构ID,0表示顶级机构',
- `level` int NOT NULL DEFAULT '1' COMMENT '层级:1一级 2二级...',
- `contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
- `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
- `address` varchar(255) DEFAULT NULL COMMENT '地址',
- `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_code` (`institution_code`),
- KEY `idx_parent` (`parent_id`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='机构表';
- -- 1.3 用户机构关联表
- DROP TABLE IF EXISTS `user_institution`;
- CREATE TABLE `user_institution` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `user_id` varchar(32) NOT NULL COMMENT '用户ID',
- `institution_id` varchar(32) NOT NULL COMMENT '机构ID',
- `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认机构:1是 0否',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_user_inst` (`user_id`, `institution_id`),
- KEY `idx_user` (`user_id`),
- KEY `idx_institution` (`institution_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户机构关联表';
- -- 1.4 菜单表
- DROP TABLE IF EXISTS `menu`;
- CREATE TABLE `menu` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `menu_name` varchar(50) NOT NULL COMMENT '菜单名称',
- `menu_code` varchar(50) NOT NULL COMMENT '菜单编码',
- `parent_id` varchar(32) DEFAULT '0' COMMENT '父菜单ID,0表示顶级菜单',
- `menu_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '类型:1目录 2菜单 3按钮',
- `path` varchar(200) DEFAULT NULL COMMENT '路由路径',
- `component` varchar(200) DEFAULT NULL COMMENT '组件路径',
- `icon` varchar(50) DEFAULT NULL COMMENT '图标',
- `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序',
- `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_code` (`menu_code`),
- KEY `idx_parent` (`parent_id`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单表';
- -- 1.5 用户菜单权限表
- DROP TABLE IF EXISTS `user_menu`;
- CREATE TABLE `user_menu` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `user_id` varchar(32) NOT NULL COMMENT '用户ID',
- `menu_id` varchar(32) NOT NULL COMMENT '菜单ID',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_user_menu` (`user_id`, `menu_id`),
- KEY `idx_user` (`user_id`),
- KEY `idx_menu` (`menu_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户菜单权限表';
- -- ============================================================
- -- 2. 患者与检查模块(3张表)
- -- ============================================================
- -- 2.1 患者信息表
- DROP TABLE IF EXISTS `patient_info`;
- CREATE TABLE `patient_info` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `patient_id` varchar(50) NOT NULL COMMENT '患者ID(来自PACS)',
- `patient_name` varchar(100) NOT NULL COMMENT '患者姓名',
- `sex` varchar(10) DEFAULT NULL COMMENT '性别:男/女/未知',
- `birth_date` date DEFAULT NULL COMMENT '出生日期',
- `age` int DEFAULT NULL COMMENT '年龄',
- `institution_id` varchar(32) NOT NULL COMMENT '所属机构ID',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- KEY `idx_patient_id` (`patient_id`),
- KEY `idx_institution` (`institution_id`),
- KEY `idx_name` (`patient_name`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='患者信息表';
- -- 2.2 检查信息表
- DROP TABLE IF EXISTS `study_info`;
- CREATE TABLE `study_info` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `study_id` varchar(64) NOT NULL COMMENT '检查ID(用于阅片器调阅)',
- `study_instance_uid` varchar(128) DEFAULT NULL COMMENT '检查实例UID',
- `patient_id` varchar(50) NOT NULL COMMENT '患者ID',
- `study_date` date DEFAULT NULL COMMENT '检查日期',
- `study_time` time DEFAULT NULL COMMENT '检查时间',
- `modality` varchar(20) DEFAULT NULL COMMENT '检查方式:CT/MR/DR/CR/US等',
- `study_description` varchar(255) DEFAULT NULL COMMENT '检查描述',
- `accession_number` varchar(50) DEFAULT NULL COMMENT '检查号',
- `institution_id` varchar(32) NOT NULL COMMENT '所属机构ID',
- `dicom_file_path` varchar(500) DEFAULT NULL COMMENT 'DICOM文件路径',
- `series_count` int DEFAULT '0' COMMENT '序列数',
- `image_count` int DEFAULT '0' COMMENT '图像数',
- `body_part` varchar(50) DEFAULT NULL COMMENT '检查部位',
- `position` varchar(50) DEFAULT NULL COMMENT '体位',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_study_id` (`study_id`),
- KEY `idx_patient` (`patient_id`),
- KEY `idx_institution` (`institution_id`),
- KEY `idx_date` (`study_date`),
- KEY `idx_modality` (`modality`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='检查信息表';
- -- 2.3 报告信息表(新增)
- DROP TABLE IF EXISTS `report_info`;
- CREATE TABLE `report_info` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `report_id` varchar(64) NOT NULL COMMENT '报告ID',
- `study_id` varchar(64) NOT NULL COMMENT '检查ID(关联检查)',
- `patient_id` varchar(50) NOT NULL COMMENT '患者ID',
- `institution_id` varchar(32) NOT NULL COMMENT '所属机构ID',
- `findings` text COMMENT '影像所见',
- `diagnosis` text COMMENT '诊断结论',
- `report_doctor_id` varchar(32) DEFAULT NULL COMMENT '报告医生ID',
- `report_doctor_name` varchar(50) DEFAULT NULL COMMENT '报告医生姓名',
- `report_time` datetime DEFAULT NULL COMMENT '报告时间',
- `audit_doctor_id` varchar(32) DEFAULT NULL COMMENT '审核医生ID',
- `audit_doctor_name` varchar(50) DEFAULT NULL COMMENT '审核医生姓名',
- `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
- `report_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '报告状态:0未报告 1已报告 2已审核',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_report_id` (`report_id`),
- KEY `idx_study` (`study_id`),
- KEY `idx_patient` (`patient_id`),
- KEY `idx_institution` (`institution_id`),
- KEY `idx_report_time` (`report_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报告信息表';
- -- ============================================================
- -- 3. 质控核心模块(6张表)
- -- ============================================================
- -- 3.1 质控因子表
- DROP TABLE IF EXISTS `qc_factor`;
- CREATE TABLE `qc_factor` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `factor_code` varchar(50) NOT NULL COMMENT '因子编码',
- `factor_name` varchar(100) NOT NULL COMMENT '因子名称',
- `factor_category` tinyint(1) NOT NULL COMMENT '因子分类:1数据质控 2影像质控 3报告质控',
- `factor_type` varchar(20) NOT NULL DEFAULT 'string' COMMENT '数据类型:string/number/date/boolean',
- `description` varchar(500) DEFAULT NULL COMMENT '描述',
- `check_rule` text COMMENT '检查规则(JSON格式)',
- `data_source` varchar(50) DEFAULT NULL COMMENT '数据来源字段',
- `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_code` (`factor_code`),
- KEY `idx_category` (`factor_category`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='质控因子表';
- -- 3.2 质控标准表
- DROP TABLE IF EXISTS `qc_standard`;
- CREATE TABLE `qc_standard` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `standard_code` varchar(50) NOT NULL COMMENT '标准编码',
- `standard_name` varchar(100) NOT NULL COMMENT '标准名称',
- `standard_category` tinyint(1) NOT NULL COMMENT '标准分类:1数据质控 2影像质控 3报告质控',
- `description` varchar(500) DEFAULT NULL COMMENT '描述',
- `pass_score` int NOT NULL DEFAULT '80' COMMENT '合格分数线',
- `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1启用 0禁用',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_code` (`standard_code`),
- KEY `idx_category` (`standard_category`),
- KEY `idx_status` (`status`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='质控标准表';
- -- 3.3 质控标准因子关联表
- DROP TABLE IF EXISTS `qc_standard_factor`;
- CREATE TABLE `qc_standard_factor` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `standard_id` varchar(32) NOT NULL COMMENT '标准ID',
- `factor_id` varchar(32) NOT NULL COMMENT '因子ID',
- `weight` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT '权重(百分比)',
- `is_required` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否必检:1是 0否',
- `threshold_value` text COMMENT '阈值(JSON格式,覆盖因子默认规则)',
- `sort_order` int NOT NULL DEFAULT '0' COMMENT '排序',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_standard_factor` (`standard_id`, `factor_id`),
- KEY `idx_standard` (`standard_id`),
- KEY `idx_factor` (`factor_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='质控标准因子关联表';
- -- 3.4 质控任务表(支持多质控类型)
- DROP TABLE IF EXISTS `qc_task`;
- CREATE TABLE `qc_task` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `task_name` varchar(100) NOT NULL COMMENT '任务名称',
- `task_code` varchar(50) NOT NULL COMMENT '任务编码',
- `standard_id` varchar(32) NOT NULL COMMENT '关联质控标准ID',
- `qc_types` varchar(50) NOT NULL COMMENT '质控类型(JSON数组):[1,2,3] 1数据 2影像 3报告',
- `institution_id` varchar(32) NOT NULL COMMENT '所属机构ID',
- `data_range_type` tinyint(1) NOT NULL COMMENT '数据范围类型:1时间范围 2患者列表',
- `start_date` date DEFAULT NULL COMMENT '开始日期',
- `end_date` date DEFAULT NULL COMMENT '结束日期',
- `patient_ids` text COMMENT '患者ID列表(JSON数组)',
- `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态:0待执行 1执行中 2已完成 3失败',
- `execute_time` datetime DEFAULT NULL COMMENT '执行时间',
- `complete_time` datetime DEFAULT NULL COMMENT '完成时间',
- `total_count` int NOT NULL DEFAULT '0' COMMENT '总检查数',
- `checked_count` int NOT NULL DEFAULT '0' COMMENT '已检数量',
- `pass_count` int NOT NULL DEFAULT '0' COMMENT '合格数',
- `fail_count` int NOT NULL DEFAULT '0' COMMENT '不合格数',
- `is_preset` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否使用预制结果:1是 0否',
- `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_code` (`task_code`),
- KEY `idx_standard` (`standard_id`),
- KEY `idx_institution` (`institution_id`),
- KEY `idx_status` (`status`),
- KEY `idx_create_time` (`create_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='质控任务表';
- -- 3.5 质控结果表
- DROP TABLE IF EXISTS `qc_result`;
- CREATE TABLE `qc_result` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `task_id` varchar(32) NOT NULL COMMENT '任务ID',
- `study_id` varchar(64) NOT NULL COMMENT '检查ID',
- `patient_id` varchar(50) NOT NULL COMMENT '患者ID',
- `institution_id` varchar(32) NOT NULL COMMENT '所属机构ID',
- `qc_category` tinyint(1) NOT NULL COMMENT '质控类别:1数据质控 2影像质控 3报告质控',
- `total_score` int NOT NULL DEFAULT '100' COMMENT '总分',
- `pass_score` int NOT NULL DEFAULT '80' COMMENT '合格分',
- `actual_score` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT '实际得分',
- `is_pass` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否合格:1是 0否',
- `fail_factors` text COMMENT '不合格因子(JSON数组)',
- `check_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '质检时间',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_task` (`task_id`),
- KEY `idx_study` (`study_id`),
- KEY `idx_patient` (`patient_id`),
- KEY `idx_institution` (`institution_id`),
- KEY `idx_pass` (`is_pass`),
- KEY `idx_check_time` (`check_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='质控结果表';
- -- 3.6 预制结果配置表(系统级,用于演示)
- DROP TABLE IF EXISTS `qc_preset_config`;
- CREATE TABLE `qc_preset_config` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `config_name` varchar(100) NOT NULL DEFAULT '默认预制配置' COMMENT '配置名称',
- `total_count` int NOT NULL DEFAULT '100' COMMENT '预设总数',
- `pass_count` int NOT NULL DEFAULT '75' COMMENT '预设合格数',
- `fail_count` int NOT NULL DEFAULT '25' COMMENT '预设不合格数',
- `fail_distribution` text COMMENT '不合格因子分布(JSON)',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预制结果配置表';
- -- ============================================================
- -- 4. 系统日志表
- -- ============================================================
- -- 4.1 操作日志表
- DROP TABLE IF EXISTS `sys_log`;
- CREATE TABLE `sys_log` (
- `id` varchar(32) NOT NULL COMMENT '主键ID',
- `user_id` varchar(32) DEFAULT NULL COMMENT '用户ID',
- `username` varchar(50) DEFAULT NULL COMMENT '用户名',
- `operation` varchar(200) DEFAULT NULL COMMENT '操作内容',
- `method` varchar(200) DEFAULT NULL COMMENT '请求方法',
- `params` text COMMENT '请求参数',
- `ip` varchar(50) DEFAULT NULL COMMENT 'IP地址',
- `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_user` (`user_id`),
- KEY `idx_create_time` (`create_time`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
|