Patient.java

package com.chronus.domain.entity;

import com.chronus.domain.valueobject.Email;
import com.chronus.domain.valueobject.FullName;
import com.chronus.domain.valueobject.PatientId;
import com.chronus.domain.valueobject.PhoneNumber;

// entidad de dominio que representa a un paciente que recibe citas de atención médica
public class Patient {
    private final PatientId patientId;
    private FullName fullName;
    private Email email;
    private PhoneNumber phoneNumber;

    // constructor para crear un paciente con los detalles de contacto requeridos
    // para las notificaciones
    public Patient(String patientId, String fullName, String email, String phoneNumber) {
        this.patientId = new PatientId(patientId);
        this.fullName = new FullName(fullName);
        this.email = new Email(email);
        this.phoneNumber = new PhoneNumber(phoneNumber);
    }

    // metodo con semantica de negocio par aactualizar la informacion del paciente
    public void updateInformation(String fullName, String email, String phoneNumber) {
        this.fullName = new FullName(fullName);
        this.email = new Email(email);
        this.phoneNumber = new PhoneNumber(phoneNumber);
    }

    // getters para obtener los detalles del paciente
    public String getPatientId() {
        return patientId.value();
    }

    public String getFullName() {
        return fullName.value();
    }

    public Email getEmail() {
        return email;
    }

    public PhoneNumber getPhoneNumber() {
        return phoneNumber;
    }
}