CreatePatientUseCase.java

package com.chronus.application.usecase;

import com.chronus.domain.entity.Patient;
import com.chronus.domain.exception.InvalidPatientDataException;
import com.chronus.domain.repository.PatientRepository;

/**
 * Input port for creating a patient.
 */
public class CreatePatientUseCase {
    private final PatientRepository patientRepository;

    // inyeccion de dependencias por constructor
    public CreatePatientUseCase(PatientRepository patientRepository) {
        this.patientRepository = patientRepository;
    }

    public void execute(Patient patient) {
        if (patientRepository.findById(patient.getPatientId()).isPresent()) {
            throw new InvalidPatientDataException("Patient already exists");
        }
        patientRepository.save(patient);
    }
}