107 lines
3.2 KiB
Java
107 lines
3.2 KiB
Java
package com.ipsen.medical.entity;
|
||
|
||
import javax.persistence.*;
|
||
import lombok.Data;
|
||
import java.time.LocalDateTime;
|
||
|
||
/**
|
||
* 临床试验实体
|
||
*/
|
||
@Data
|
||
@Entity
|
||
@Table(name = "clinical_trials",
|
||
uniqueConstraints = @UniqueConstraint(columnNames = {"inquiry_id", "nct_id"}))
|
||
public class ClinicalTrial {
|
||
|
||
@Id
|
||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||
private Long id;
|
||
|
||
@Column(name = "inquiry_id")
|
||
private Long inquiryId; // 关联的查询请求ID
|
||
|
||
@Column(name = "nct_id")
|
||
private String nctId; // NCT编号(ClinicalTrials.gov的唯一标识)
|
||
|
||
@Column(name = "study_title", columnDefinition = "TEXT")
|
||
private String studyTitle; // 研究标题
|
||
|
||
@Column(name = "brief_title")
|
||
private String briefTitle; // 简短标题
|
||
|
||
@Column(name = "official_title", columnDefinition = "TEXT")
|
||
private String officialTitle; // 官方标题
|
||
|
||
@Column(name = "overall_status")
|
||
private String overallStatus; // 研究状态
|
||
|
||
@Column(name = "start_date")
|
||
private String startDate; // 开始日期
|
||
|
||
@Column(name = "completion_date")
|
||
private String completionDate; // 完成日期
|
||
|
||
@Column(name = "study_type")
|
||
private String studyType; // 研究类型
|
||
|
||
@Column(name = "phase")
|
||
private String phase; // 研究阶段
|
||
|
||
@Column(name = "enrollment")
|
||
private Integer enrollment; // 入组人数
|
||
|
||
@Column(name = "conditions", columnDefinition = "TEXT")
|
||
private String conditions; // 适应症(JSON数组)
|
||
|
||
@Column(name = "interventions", columnDefinition = "TEXT")
|
||
private String interventions; // 干预措施(JSON数组)
|
||
|
||
@Column(name = "sponsor")
|
||
private String sponsor; // 主要研究者/机构
|
||
|
||
@Column(name = "collaborators", columnDefinition = "TEXT")
|
||
private String collaborators; // 合作者(JSON数组)
|
||
|
||
@Column(name = "locations", columnDefinition = "TEXT")
|
||
private String locations; // 研究地点(JSON数组)
|
||
|
||
@Column(name = "brief_summary", columnDefinition = "TEXT")
|
||
private String briefSummary; // 简要摘要
|
||
|
||
@Column(name = "detailed_description", columnDefinition = "TEXT")
|
||
private String detailedDescription; // 详细描述
|
||
|
||
@Column(name = "primary_outcome", columnDefinition = "TEXT")
|
||
private String primaryOutcome; // 主要终点
|
||
|
||
@Column(name = "secondary_outcome", columnDefinition = "TEXT")
|
||
private String secondaryOutcome; // 次要终点
|
||
|
||
@Column(name = "eligibility_criteria", columnDefinition = "TEXT")
|
||
private String eligibilityCriteria; // 入选标准
|
||
|
||
@Column(name = "url")
|
||
private String url; // ClinicalTrials.gov链接
|
||
|
||
@Column(name = "raw_data", columnDefinition = "LONGTEXT")
|
||
private String rawData; // 原始API返回数据(JSON格式)
|
||
|
||
@Column(name = "created_at", nullable = false)
|
||
private LocalDateTime createdAt;
|
||
|
||
@Column(name = "updated_at")
|
||
private LocalDateTime updatedAt;
|
||
|
||
@PrePersist
|
||
protected void onCreate() {
|
||
createdAt = LocalDateTime.now();
|
||
}
|
||
|
||
@PreUpdate
|
||
protected void onUpdate() {
|
||
updatedAt = LocalDateTime.now();
|
||
}
|
||
}
|
||
|
||
|