import jakarta.persistence.;
import lombok.;
@Getter
@EqualsAndHashCode(of = "id")
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Paciente")
@Table(name = "pacientes")
public class Paciente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
private String email;
private String documentoIdentidad;
private String telefono;
@Embedded
private Direccion direccion;
public Paciente(DatosRegistroPaciente datos) {
this.nombre = datos.nombre();
this.email = datos.email();
this.telefono = datos.telefono();
this.documentoIdentidad = datos.documento_identidad();
this.direccion = new Direccion(datos.direccion());
}
}
// Direccion.java
import jakarta.persistence.Embeddable;
import lombok.*;
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class Direccion {
private String calle;
private String numero;
private String complemento;
private String barrio;
private String ciudad;
private String estado;
private String codigoPostal;
public Direccion(DatosDireccion datos) {
this.calle = datos.calle();
this.numero = datos.numero();
this.complemento = datos.complemento();
this.barrio = datos.barrio();
this.ciudad = datos.ciudad();
this.estado = datos.estado();
this.codigoPostal = datos.codigo_postal();
}
}
// PacienteRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface PacienteRepository extends JpaRepository<Paciente, Long> {
}
// PacienteController.java
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("pacientes")
public class PacienteController {
@Autowired
private PacienteRepository repository;
@PostMapping
@Transactional
public void registrar(@RequestBody @Valid DatosRegistroPaciente datos) {
repository.save(new Paciente(datos));
}
}
// DatosRegistroPaciente.java
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;
public record DatosRegistroPaciente(
@NotBlank String nombre,
@NotBlank @Email String email,
@NotBlank String telefono,
@NotBlank @Pattern(regexp = "\d{7,9}") String documento_identidad,
@NotNull @Valid DatosDireccion direccion
) {
}
// DatosDireccion.java
import jakarta.validation.constraints.NotBlank;
public record DatosDireccion(
@NotBlank String calle,
String numero,
String complemento,
@NotBlank String barrio,
@NotBlank String ciudad,
@NotBlank String estado,
@NotBlank String codigo_postal
) {
}