[R5] Patient Service with save and findById methods

This commit is contained in:
Mirna Gama 2024-01-06 18:08:50 -03:00 committed by Mirna Gama
parent 39156f459d
commit c88d7de61a
2 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,63 @@
package com.mirna.hospitalmanagementapi.application.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mirna.hospitalmanagementapi.application.usecase.patient.FindPatientByIdUseCase;
import com.mirna.hospitalmanagementapi.application.usecase.patient.SavePatientUseCase;
import com.mirna.hospitalmanagementapi.domain.dtos.patient.PatientDTO;
import com.mirna.hospitalmanagementapi.domain.entities.Patient;
import com.mirna.hospitalmanagementapi.domain.services.PatientService;
import com.mirna.hospitalmanagementapi.infra.handlers.EntityNotFoundErrorHandler;
import jakarta.persistence.EntityNotFoundException;
/**
* This class is an implementation of the PatientService interface.
*
* This class provides methods to perform operations on patients
*
* @author Mirna Gama
* @version 1.0
*/
@Service
public class PatientServiceImpl implements PatientService {
@Autowired
private SavePatientUseCase savePatient;
@Autowired
private FindPatientByIdUseCase findPatientById;
/**
* Adds a new patient to the database.
*
* @param patientDTO A data transfer object containing the data for Patient
* entity.
* @return The saved patient if successful, or null if there is an error.
*/
@Override
public Patient addPatient(PatientDTO patientDTO) {
Patient patient = new Patient(patientDTO);
return this.savePatient.execute(patient);
}
/**
* Finds a stored patient by id.
*
* @param id A long representing the patient's unique identifier
* @return The corresponding patient if successful, or throws an EntityNotFoundException if it is
* non-existent.
* @throws EntityNotFoundException When patient with id provided is non-existent
*/
@Override
public Patient findPatientById(Long id) throws EntityNotFoundException {
Patient patient = this.findPatientById.execute(id);
if (patient == null) throw new EntityNotFoundException();
return patient;
}
}

View File

@ -0,0 +1,31 @@
package com.mirna.hospitalmanagementapi.domain.services;
import com.mirna.hospitalmanagementapi.domain.dtos.patient.PatientDTO;
import com.mirna.hospitalmanagementapi.domain.entities.Patient;
/**
* Patient service interface for managing patient information.
*
* @see Patient
* @author Mirna Gama
* @version 1.0
*/
public interface PatientService {
/**
* Adds a new patient to the repository.
*
* @param patientDTO A data transfer object representing a patient to add.
* @return The saved patient if successful, or null if there is an error.
*/
public Patient addPatient(PatientDTO patientDTO);
/**
* Finds a stored patient by id.
*
* @param id A long representing the patient's unique identifier
* @return The corresponding patient if successful, or null if it is non-existent.
*/
public Patient findPatientById(Long id);
}