Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos: registro de pacientes

Deberás crear la entidad Paciente:

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

}
crear un repository:

public interface PacienteRepository extends JpaRepository<Paciente, Long> {
}
Copia el código
Luego deberás cambiar las clases Controller y DTO:

@RestController
@RequestMapping("pacientes")
public class PacienteController {

@Autowired 
private PacienteRepository repository; 

@PostMapping 
@Transactional 
public void registrar(@RequestBody @Valid DatosRegistroPaciente datos) { 
    repository.save(new Paciente(datos)); 
} 

}

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
) {
}

Y, por último, se crear una migration

create table pacientes(
id bigint not null auto_increment,
nombre varchar(100) not null,
email varchar(100) not null unique,
documento_identidad varchar(14) not null unique,
telefono varchar(20) not null,
calle varchar(100) not null,
numero varchar(100),
complemento varchar(100),
barrio varchar(100) not null,
ciudad varchar(100) not null,
estado varchar(100) not null,
codigo_postal varchar(9) not null,

primary key(id) 

);

1 respuesta

Hola Yolima,

Parece que estás siguiendo un ejercicio para implementar el registro de pacientes en una aplicación usando Spring Boot. Tu código se ve bastante bien estructurado. Sin embargo, te voy a dar algunos consejos y ejemplos para asegurarnos de que todo esté en orden:

  1. Entidad Paciente: Ya tienes la clase Paciente bien configurada con las anotaciones de Lombok y JPA. Asegúrate de que la clase Direccion esté correctamente definida y anotada con @Embeddable para que pueda ser utilizada dentro de Paciente.

  2. Repositorio: Tu PacienteRepository extiende JpaRepository, lo cual es correcto para manejar operaciones CRUD básicas.

  3. Controlador: En el PacienteController, estás utilizando @Autowired para inyectar el repositorio, lo cual es correcto. Asegúrate de que la validación de los datos en DatosRegistroPaciente esté funcionando correctamente. Puedes probar enviando solicitudes POST con diferentes datos para verificar que las restricciones de validación se apliquen correctamente.

  4. DTO y Validaciones: En DatosRegistroPaciente, las anotaciones de validación como @NotBlank, @Email, y @Pattern son útiles para asegurar que los datos recibidos sean válidos. Verifica que el patrón de documento_identidad coincida con el formato esperado.

  5. Migración de Base de Datos: La instrucción SQL para crear la tabla pacientes parece estar bien. Asegúrate de que la base de datos esté configurada para permitir auto-incremento en el campo id y que las restricciones unique estén funcionando como esperas.

Un ejemplo práctico sería asegurarte de que tu aplicación esté conectada a una base de datos MySQL (o la que estés usando) y probar el registro de un nuevo paciente con un cliente REST como Postman. Envía una solicitud POST a la ruta /pacientes con un cuerpo JSON que contenga los datos del paciente. Aquí tienes un ejemplo de cómo podría verse:

{
    "nombre": "Juan Perez",
    "email": "juan.perez@example.com",
    "telefono": "123456789",
    "documento_identidad": "12345678",
    "direccion": {
        "calle": "Calle Falsa",
        "numero": "123",
        "complemento": "Apto 4",
        "barrio": "Centro",
        "ciudad": "Ciudad Ejemplo",
        "estado": "Estado Ejemplo",
        "codigo_postal": "12345"
    }
}

Espero que estos consejos te sean útiles y te ayuden a avanzar en tu proyecto. ¡Espero haber ayudado y buenos estudios!