[R5] Create patient entity, table and dto

This commit is contained in:
Mirna Gama 2024-01-06 18:04:48 -03:00 committed by Mirna Gama
parent cd9927e403
commit 2bd13a015f
3 changed files with 232 additions and 0 deletions

View File

@ -0,0 +1,33 @@
package com.mirna.hospitalmanagementapi.domain.dtos;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
/**
* Data transfer object used to transfer data that will be saved in a Patient
* entity
*
* @author Mirna Gama
* @version 1.0
*/
public record PatientDTO(
@NotBlank(message = "name cannot be blank")
String name,
@NotBlank(message = "email cannot be blank")
@Email(message = "invalid format for email")
String email,
@NotBlank(message = "cpf cannot be blank")
@Pattern(regexp = "\\d{11}", message = "invalid format for cpf")
String cpf,
@NotBlank(message = "telephone cannot be blank")
String telephone,
@NotNull(message = "address cannot be null")
@Valid
AddressDTO address) {}

View File

@ -0,0 +1,181 @@
package com.mirna.hospitalmanagementapi.domain.entities;
import com.mirna.hospitalmanagementapi.domain.dtos.PatientDTO;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
/**
*
* @author Mirna Gama
* @version 1.0
*/
@Table(name="patients")
@Entity(name="Patient")
public class Patient {
/**
* Constructor for class Patient
* @param patientDTO Data transfer object containing Patient entity information
* @see PatientDTO
*/
public Patient(PatientDTO patientDTO) {
this.active=true;
this.name=patientDTO.name();
this.email=patientDTO.email();
this.cpf=patientDTO.cpf();
this.telephone=patientDTO.telephone();
this.address = new Address(patientDTO.address());
}
public Patient(){}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank(message="name cannot be blank")
@Column(name="name")
private String name;
@NotBlank(message="email cannot be blank")
@Column(name="email")
private String email;
@NotBlank(message="cpf cannot be blank")
@Pattern(regexp = "\\d{11}", message = "invalid format for cpf")
@Column(name="cpf")
private String cpf;
@NotBlank(message="telephone cannot be blank")
@Column(name="telephone")
private String telephone;
@NotNull(message="active cannot be null")
@Column(name="_active")
private Boolean active;
@NotNull(message="address cannot be null")
@Embedded
private Address address;
/**
* Returns the doctor id.
* @return A Long representing the patient id.
*/
public Long getId() {
return id;
}
/**
* Sets the doctor id.
* @param id The patient's unique identifier.
*/
public void setId(Long id) {
this.id = id;
}
/**
* Returns the name
* @return A string representing the patient's name.
*/
public String getName() {
return name;
}
/**
* Sets the name
* @param name Must not be blank.
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the email
* @return A string representing the patient's email.
*/
public String getEmail() {
return email;
}
/**
* Sets the email
* @param email Must not be blank.
*/
public void setEmail(String email) {
this.email = email;
}
/**
* Returns the cpf
* @return A string representing the patient's cpf.
*/
public String getCrm() {
return cpf;
}
/**
* Sets the cpf
* @param cpf Must not be blank.
*/
public void setCpf(String cpf) {
this.cpf = cpf;
}
/**
* Returns the telephone
* @return A string representing the patient's telephone.
*/
public String getTelephone() {
return telephone;
}
/**
* Sets the telephone
* @param telephone Must not be blank.
*/
public void setTelephone(String telephone) {
this.telephone = telephone;
}
/**
* Returns the active
* @return A boolean value that states whether the patient is active in the system
*/
public Boolean getActive() {
return active;
}
/**
* Sets the active
* @param active Must not be null. Starts with the true value by default
*/
public void setActive(Boolean active) {
this.active = active;
}
/**
* Returns the address
* @return An object class representing the patient's address.
* @see Address
*/
public Address getAddress() {
return address;
}
/**
* Sets the address
* @param address Must not be null.
*/
public void setAddress(Address address) {
this.address = address;
}
}

View File

@ -0,0 +1,18 @@
create table patients (
id bigint not null auto_increment,
name varchar(100) not null,
email varchar(100) not null unique,
cpf varchar(11) not null unique,
telephone varchar(20) not null,
street varchar(100) not null,
neighborhood varchar(100) not null,
zip_code varchar(9) not null,
additional_details varchar(100),
house_number varchar(20),
state varchar(2) not null,
city varchar(100) not null,
_active tinyint not null,
primary key(id)
);