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(); } }