Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/02-技术设计/01-数据库设计.md
HaHafeng e52020409c docs: complete documentation system (250+ files)
- System architecture and design documentation
- Business module docs (ASL/AIA/PKB/RVW/DC/SSA/ST)
- ASL module complete design (quality assurance, tech selection)
- Platform layer and common capabilities docs
- Development standards and API specifications
- Deployment and operations guides
- Project management and milestone tracking
- Architecture implementation reports
- Documentation templates and guides
2025-11-16 15:43:55 +08:00

203 lines
5.2 KiB
Markdown
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.
# AI智能文献模块 - 数据库设计
> **文档版本:** v1.0
> **创建日期:** 2025-10-29
> **维护者:** AI智能文献开发团队
> **最后更新:** 2025-10-29
---
## 📋 文档说明
本文档描述AI智能文献模块的数据库设计包括数据表结构、关系设计、索引设计等。
---
## 🗄️ 核心数据表
### 1. 文献筛选项目表 (literature_screening_projects)
```sql
CREATE TABLE literature_screening_projects (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id),
project_name VARCHAR(255) NOT NULL,
protocol_id UUID, -- 研究方案ID未来关联
-- PICO标准
pico_criteria JSONB, -- PICO结构化数据
-- 筛选标准
inclusion_criteria TEXT,
exclusion_criteria TEXT,
-- 状态
status VARCHAR(50) DEFAULT 'draft', -- draft, screening, completed
-- 筛选配置
screening_config JSONB, -- 筛选配置(双模型选择等)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
### 2. 文献条目表 (literature_items)
```sql
CREATE TABLE literature_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
-- 文献基本信息
pmid VARCHAR(50),
title TEXT,
authors TEXT,
journal VARCHAR(255),
publication_year INTEGER,
doi VARCHAR(255),
abstract TEXT,
-- 文件信息
full_text_file_path VARCHAR(500),
full_text_status VARCHAR(50), -- not_required, pending, downloaded, uploaded, failed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(project_id, pmid)
);
```
### 3. 标题摘要初筛结果表 (title_abstract_screening_results)
```sql
CREATE TABLE title_abstract_screening_results (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
literature_item_id UUID NOT NULL REFERENCES literature_items(id) ON DELETE CASCADE,
-- DS模型判断
ds_p_judgment VARCHAR(10), -- ✓, ✗, ?
ds_i_judgment VARCHAR(10),
ds_c_judgment VARCHAR(10),
ds_s_judgment VARCHAR(10),
ds_conclusion VARCHAR(20), -- include, exclude
-- DS模型证据
ds_p_evidence TEXT,
ds_i_evidence TEXT,
ds_c_evidence TEXT,
ds_s_evidence TEXT,
-- Q3模型判断
q3_p_judgment VARCHAR(10),
q3_i_judgment VARCHAR(10),
q3_c_judgment VARCHAR(10),
q3_s_judgment VARCHAR(10),
q3_conclusion VARCHAR(20),
-- Q3模型证据
q3_p_evidence TEXT,
q3_i_evidence TEXT,
q3_c_evidence TEXT,
q3_s_evidence TEXT,
-- 冲突状态
conflict_status VARCHAR(20) DEFAULT 'none', -- none, conflict, resolved
-- 最终决策
final_decision VARCHAR(20), -- include, exclude, pending
final_decision_by UUID REFERENCES users(id),
final_decision_at TIMESTAMP,
exclusion_reason TEXT,
-- AI处理状态
ai_processing_status VARCHAR(50) DEFAULT 'pending', -- pending, processing, completed, failed
ai_processed_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(project_id, literature_item_id)
);
```
### 4. 筛选任务表 (screening_tasks)
```sql
CREATE TABLE screening_tasks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
project_id UUID NOT NULL REFERENCES literature_screening_projects(id) ON DELETE CASCADE,
task_type VARCHAR(50) NOT NULL, -- title_abstract, full_text
status VARCHAR(50) DEFAULT 'pending', -- pending, running, completed, failed
total_items INTEGER,
processed_items INTEGER DEFAULT 0,
success_items INTEGER DEFAULT 0,
failed_items INTEGER DEFAULT 0,
started_at TIMESTAMP,
completed_at TIMESTAMP,
error_message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
---
## 📊 数据关系图
```
literature_screening_projects (1) ──< (N) literature_items
literature_screening_projects (1) ──< (N) title_abstract_screening_results
literature_items (1) ──< (1) title_abstract_screening_results
literature_screening_projects (1) ──< (N) screening_tasks
```
---
## 🔍 索引设计
```sql
-- 文献条目表索引
CREATE INDEX idx_literature_items_project_id ON literature_items(project_id);
CREATE INDEX idx_literature_items_pmid ON literature_items(pmid);
-- 筛选结果表索引
CREATE INDEX idx_screening_results_project_id ON title_abstract_screening_results(project_id);
CREATE INDEX idx_screening_results_item_id ON title_abstract_screening_results(literature_item_id);
CREATE INDEX idx_screening_results_conflict ON title_abstract_screening_results(conflict_status);
CREATE INDEX idx_screening_results_decision ON title_abstract_screening_results(final_decision);
-- 任务表索引
CREATE INDEX idx_screening_tasks_project_id ON screening_tasks(project_id);
CREATE INDEX idx_screening_tasks_status ON screening_tasks(status);
```
---
## ⏳ 待完善内容
后续将补充:
- 全文复筛相关表结构
- 数据提取相关表结构
- 数据迁移方案
- 数据字典
---
**文档版本:** v1.0
**最后更新:** 2025-10-29