package com.gnx.telemedicine.dto.user;

import jakarta.validation.constraints.Size;

import java.time.LocalDate;
import java.util.List;

public record PatientUpdateDto(
        @Size(min = 2, max = 50, message = "Emergency contact name must be between 2 and 50 characters")
        String emergencyContactName,

        @Size(min = 10, max = 15, message = "Emergency contact phone must be between 10 and 15 characters")
        String emergencyContactPhone,

        @Size(min = 2, max = 3, message = "Blood type must be 2-3 characters")
        String bloodType,

        List<String> allergies,
        // Enterprise fields
        LocalDate dateOfBirth,
        @Size(max = 20, message = "Gender must not exceed 20 characters")
        String gender,
        @Size(max = 255, message = "Street address must not exceed 255 characters")
        String streetAddress,
        @Size(max = 100, message = "City must not exceed 100 characters")
        String city,
        @Size(max = 100, message = "State must not exceed 100 characters")
        String state,
        @Size(max = 20, message = "Zip code must not exceed 20 characters")
        String zipCode,
        @Size(max = 100, message = "Country must not exceed 100 characters")
        String country,
        @Size(max = 200, message = "Insurance provider must not exceed 200 characters")
        String insuranceProvider,
        @Size(max = 100, message = "Insurance policy number must not exceed 100 characters")
        String insurancePolicyNumber,
        @Size(max = 2000, message = "Medical history summary must not exceed 2000 characters")
        String medicalHistorySummary,
        List<String> currentMedications,
        @Size(max = 200, message = "Primary care physician name must not exceed 200 characters")
        String primaryCarePhysicianName,
        @Size(max = 20, message = "Primary care physician phone must not exceed 20 characters")
        String primaryCarePhysicianPhone,
        @Size(max = 50, message = "Preferred language must not exceed 50 characters")
        String preferredLanguage,
        @Size(max = 200, message = "Occupation must not exceed 200 characters")
        String occupation,
        @Size(max = 20, message = "Marital status must not exceed 20 characters")
        String maritalStatus
) {
}

