package uk.nhs.careconnect.ri.database.entity.questionnaire; import org.hl7.fhir.dstu3.model.Enumerations; import uk.nhs.careconnect.ri.database.entity.BaseResource; import uk.nhs.careconnect.ri.database.entity.codeSystem.ConceptEntity; import javax.persistence.*; import java.util.Date; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "Questionnaire", indexes = { }) public class QuestionnaireEntity extends BaseResource { private static final int MAX_DESC_LENGTH = 4096; public enum QuestionnaireType { component, valueQuantity } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="QUESTIONNAIRE_ID") private Long id; @Column(name = "URL") private String url; @OneToMany(mappedBy="questionnaire", targetEntity=QuestionnaireIdentifier.class) private Set<QuestionnaireIdentifier> identifiers = new HashSet<>(); @Enumerated(EnumType.ORDINAL) @Column(name="status") private Enumerations.PublicationStatus status; @Column(name="VERSION",length = MAX_DESC_LENGTH,nullable = true) private String version; @Column(name="NAME",length = MAX_DESC_LENGTH,nullable = true) private String name; @Column(name="TITLE",length = MAX_DESC_LENGTH,nullable = true) private String title; @Temporal(TemporalType.TIMESTAMP) @Column(name = "DATETIME") private Date dateTime; @Temporal(TemporalType.TIMESTAMP) @Column(name = "APPROVAL_DATETIME") private Date approvalDateTime; @Temporal(TemporalType.TIMESTAMP) @Column(name = "LAST_REVIEW_DATETIME") private Date lastReviewDateTime; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="CODE_CONCEPT_ID",nullable = true,foreignKey= @ForeignKey(name="FK_QUESTIONNAIRE_CODE_CONCEPT_ID")) private ConceptEntity questionnaireCode; @Column(name = "SUBJECT_RESOURCE_TYPE") private String subjectType; @Column(name = "PURPOSE", length = MAX_DESC_LENGTH) private String purpose; @Column(name = "PUBLISHER") private String publisher; @Column(name = "COPYRIGHT") private String copyright; @Column(name = "DESCRIPTION", length = MAX_DESC_LENGTH) private String description; @OneToMany(mappedBy="questionnaire", targetEntity=QuestionnaireItem.class) @OrderBy(value = "itemId ASC") private Set<QuestionnaireItem> items = new HashSet<>(); public Set<QuestionnaireItem> getItems() { return items; } public void setItems(Set<QuestionnaireItem> items) { this.items = items; } public Enumerations.PublicationStatus getStatus() { return status; } public void setStatus(Enumerations.PublicationStatus status) { this.status = status; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getDateTime() { return dateTime; } public void setDateTime(Date dateTime) { this.dateTime = dateTime; } public Date getApprovalDateTime() { return approvalDateTime; } public void setApprovalDateTime(Date approvalDateTime) { this.approvalDateTime = approvalDateTime; } public Date getLastReviewDateTime() { return lastReviewDateTime; } public void setLastReviewDateTime(Date lastReviewDateTime) { this.lastReviewDateTime = lastReviewDateTime; } public ConceptEntity getQuestionnaireCode() { return questionnaireCode; } public void setQuestionnaireCode(ConceptEntity questionnaireCode) { this.questionnaireCode = questionnaireCode; } public String getSubjectType() { return subjectType; } public void setSubjectType(String subjectType) { this.subjectType = subjectType; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Set<QuestionnaireIdentifier> getIdentifiers() { if (identifiers == null) { identifiers = new HashSet<QuestionnaireIdentifier>(); } return identifiers; } public QuestionnaireEntity setIdentifiers(Set<QuestionnaireIdentifier> identifiers) { this.identifiers = identifiers; return this; } public static int getMaxDescLength() { return MAX_DESC_LENGTH; } public String getPurpose() { return purpose; } public void setPurpose(String purpose) { this.purpose = purpose; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public String getCopyright() { return copyright; } public void setCopyright(String copyright) { this.copyright = copyright; } }